mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
4e50d0475a
Just as as llvm IR supports explicitly specifying numeric value ids for instructions, and emits them by default in textual output, now do the same for blocks. This is a slightly incompatible change in the textual IR format. Previously, llvm would parse numeric labels as string names. E.g. define void @f() { br label %"55" 55: ret void } defined a label *named* "55", even without needing to be quoted, while the reference required quoting. Now, if you intend a block label which looks like a value number to be a name, you must quote it in the definition too (e.g. `"55":`). Previously, llvm would print nameless blocks only as a comment, and would omit it if there was no predecessor. This could cause confusion for readers of the IR, just as unnamed instructions did prior to the addition of "%5 = " syntax, back in 2008 (PR2480). Now, it will always print a label for an unnamed block, with the exception of the entry block. (IMO it may be better to print it for the entry-block as well. However, that requires updating many more tests.) Thus, the following is supported, and is the canonical printing: define i32 @f(i32, i32) { %3 = add i32 %0, %1 br label %4 4: ret i32 %3 } New test cases covering this behavior are added, and other tests updated as required. Differential Revision: https://reviews.llvm.org/D58548 llvm-svn: 356789 |
||
---|---|---|
.. | ||
20100809_bb_not_in_domtree.ll | ||
bad_node_traversal.ll | ||
block_sort.ll | ||
cond_loop.ll | ||
condition_complicated_2.ll | ||
condition_complicated.ll | ||
condition_forward_edge.ll | ||
condition_same_exit.ll | ||
condition_simple.ll | ||
exit_in_condition.ll | ||
infinite_loop_2.ll | ||
infinite_loop_3.ll | ||
infinite_loop_4.ll | ||
infinite_loop_5_a.ll | ||
infinite_loop_5_b.ll | ||
infinite_loop_5_c.ll | ||
infinite_loop.ll | ||
loop_with_condition.ll | ||
loops_1.ll | ||
loops_2.ll | ||
mix_1.ll | ||
multiple_exiting_edge.ll | ||
nested_loops.ll | ||
next.ll | ||
outgoing_edge_1.ll | ||
outgoing_edge.ll | ||
paper.ll | ||
two_loops_same_header.ll | ||
unreachable_bb.ll |