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?