llvm-6502/lib
Jonathan Roelofs 3d47855394 Fix thumbv4t indirect calls
So there are a couple of issues with indirect calls on thumbv4t. First, the most
'obvious' instruction, 'blx' isn't available until v5t. And secondly, the
next-most-obvious sequence: 'mov lr, pc; bx rN' doesn't DTRT in thumb code
because the saved off pc has its thumb bit cleared, so when the callee returns
we end up in ARM mode.... yuck.

The solution is to 'bl' to a nearby landing pad with a 'bx rN' in it.

We could cut down on code size by sharing the landing pads between call sites
that are close enough, but for the moment let's do correctness first and look at
performance later.


Patch by: Iain Sandoe

http://reviews.llvm.org/D6519


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223380 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-04 19:34:50 +00:00
..
Analysis Revert "r223364 - Revert r223347 which has caused crashes on bootstrap bots." 2014-12-04 17:45:19 +00:00
AsmParser
Bitcode Ask the module for its the identified types. 2014-12-03 07:18:23 +00:00
CodeGen Use DomTree in MachineSink to sink over diamonds. 2014-12-04 10:36:42 +00:00
DebugInfo
ExecutionEngine
IR Fix a typo: use of cast where dyn_cast was intended 2014-12-04 17:27:58 +00:00
IRReader
LineEditor
Linker Split the set of identified struct types into opaque and non-opaque ones. 2014-12-03 22:36:37 +00:00
LTO
MC clang-formatted ranged loops and assignment, NFC. 2014-12-04 08:30:39 +00:00
Object Add mach-o LC_RPATH support to llvm-objdump 2014-12-04 07:37:02 +00:00
Option
ProfileData
Support Remove dead code. NFC. 2014-12-04 16:59:36 +00:00
TableGen
Target Fix thumbv4t indirect calls 2014-12-04 19:34:50 +00:00
Transforms [InstCombine] Minor optimization for bswap with binary ops 2014-12-04 09:44:01 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile