aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineScheduler.cpp
diff options
context:
space:
mode:
authorNick Kledzik <kledzik@apple.com>2014-10-14 01:51:42 +0000
committerNick Kledzik <kledzik@apple.com>2014-10-14 01:51:42 +0000
commit4121bce3f6bcedbcc987c2aa34df3461cb201930 (patch)
tree201b4f28d5c1af5a17b22b159e4a03eadf0f16a0 /llvm/lib/CodeGen/MachineScheduler.cpp
parentffc9f1de340dcd49f872303c17a93aa69bf92fbc (diff)
downloadllvm-4121bce3f6bcedbcc987c2aa34df3461cb201930.zip
llvm-4121bce3f6bcedbcc987c2aa34df3461cb201930.tar.gz
llvm-4121bce3f6bcedbcc987c2aa34df3461cb201930.tar.bz2
[mach-o] Add Pass to create are shim Atoms for ARM interworking.
Arm code has two instruction encodings "thumb" and "arm". When branching from one code encoding to another, you need to use an instruction that switches the instruction mode. Usually the transition only happens at call sites, and the linker can transform a BL instruction in BLX (or vice versa). But if the compiler did a tail call optimization and a function ends with a branch (not branch and link), there is no pc-rel BX instruction. The ShimPass looks for pc-rel B instructions that will need to switch mode. For those cases it synthesizes a shim which does the transition, then modifies the original atom with the B instruction to target to the shim atom. llvm-svn: 219655
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
0 files changed, 0 insertions, 0 deletions