Displaying 2 results from an estimated 2 matches for "branch_to_reg".
2011 Nov 29
0
[LLVMdev] Problem using a label to a basic block
...e link register with the address of the new basic block
-- and generating a 'CALL_R' which in the end results in a 'branch to register'
(but, for llvm, it is treated as a call)
So:
__BB_2:
...
call_to_reg Rx
...
results in:
__BB_2:
...
load_immediate R15, __BB_3
branch_to_reg Rx
__BB_3:
...
where __BB_2 falls through to __BB__3
This works when the optimization level is low.
At higher optimization levels I am observing the following :
load_immediate R15, __BB_3
branch_to_reg Rx
__BB_3:
branch_to __BB_22
is converted into
load_immediate R15, "__BB_-...
2011 Nov 30
2
[LLVMdev] Problem using a label to a MachineBasicBlock
...EmitEOL();
}
---
When I disable the assertion, I observe the following:
The different labels for the machine basic blocks are emitted, but the two new
basic blocks that were created, also have a common extra label '_tmp0'
---
.text
.globl _foo
_foo:
....
load_immediate R15, __BB0_1
branch_to_reg R1
_tmp0:
_BB0_1:
...
load_immediate R15, __BB0_2:
branch_to_reg R2
_tmp0: // *** duplicate unnecessary label, _tmp0 is not used
_BB0_2
...
---
Any idea how this can be resolved in a clean way ?
Thanks,
Jeroen Dobbelaere