missing blocks

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,@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

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:

Just quick though: have you implemented the branch-related hooks of
your backend properly?
E.g. AnalyzeBranch and around?

It turns out I hadn't overridden AsmPrinter::isBlockOnlyReachableByFallthrough() to handle delay slots. I'm not sure why it worked previously.