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
> 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? -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University
On 10/4/10 10:24 AM, Anton Korobeynikov wrote:>> 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.
Seemingly Similar Threads
- [LLVMdev] missing blocks
- [LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?
- [LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?
- [LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?
- [LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?