Displaying 2 results from an estimated 2 matches for "lbb0_33".
Did you mean:
lbb0_3
2013 Sep 18
2
[LLVMdev] How basic block layout is determined during scheduling?
Hi, guys,
I compiled a subroutine with -O2, and llvm backend produced codes like:
##################################################################
LBB0_32:
...
R31 = -1
R20 = R31 * R20;
....
bnz R2, LBB0_34
LBB0_31:
...
b LBB0_34
LBB0_33: # weird basic block?
R20 = R5
LBB0_34:
....
##################################################################
Wrong answer is produced when executing bove codes. LBB0_33 is not used as
destination basic block for any branch instruction, so its a dead basic
block. Origina...
2013 Sep 18
0
[LLVMdev] How basic block layout is determined during scheduling?
...bnz R2, LBB0_34
>
> I do not have any clue what happens when compiling with -O2.
> Can someone make a suggestion?
Is the "bnz" instruction marked "isBarrier" in your TableGen files? If
so, that would mean LLVM considers fallthrough impossible and decides
it can move LBB0_33 around at will. It's still very odd that it thinks
it can put it directly before LBB0_34 though.
It would be interesting to see the blocks before and after the "Basic
block placement" pass. Running llc with -print-after-all and/or -debug
might well shed some light on what's happe...