I suspect this is a straight forward problem so I thought I'd ask.
I'm developing a new backend. I recently updated from the LLVM
repository and now my output assembly is branching to labels/blocks that
have been removed. It had been working fine two weeks ago. What looks
suspicious is the following message:
TryTailMergeBlocks: BB#1, BB#3, BB#4
Looking for common tails of at least 3 instructions
*** Tail-duplicating BB#1
*** Tail-duplicating BB#3
because the missing labels are .LBB0_1 and .LBB0_3. both of branches to
those labels were unconditional branches. The conditional branch labels
are fine. Anyone have any idea what I may have done wrong?
.file "/tmp/20000112-1.bc"
.text
.globl main
.align 4
.type main, at function
main: # @main
# BB#0: # %entry
addi %r1, %r1, -32
st %r31, %r1,28
st %r12, %r1,24
addi %r12, %r0, 0
st %r12, %r1,20
addi %r2, %r0, 1
call special_format
oris r0,r0,0
subc r0, %r2, %r12
beq .LBB0_2
oris r0,r0,0
b .LBB0_1
oris r0,r0,0
# BB#1: # %if.then
call abort
oris r0,r0,0
.LBB0_2: # %if.end
addi %r12, %r0, 0
addi %r2, %r12, 0
call special_format
oris r0,r0,0
subc r0, %r2, %r12
bne .LBB0_4
oris r0,r0,0
b .LBB0_3
oris r0,r0,0
# BB#3: # %if.then3
call abort
oris r0,r0,0
.LBB0_4: # %if.end4
addi %r2, %r0, 0
call exit
oris r0,r0,0
.Ltmp0:
.size main, .Ltmp0-main