1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-23 21:13:02 +02:00
llvm-mirror/lib/Transforms
Evgeniy Stepanov f4b13bac03 CFI-icall on Thumb
Replace @progbits in the section directive with %progbits, because "@" starts a comment on arm/thumb.
Use b.w branch instruction.
Use .thumb_function and .thumb_set for proper arm/thumb interwork. This way jumptable entry addresses on thumb have bit 0 set (correctly). This does not affect CFI check math, because the address of the jumptable start also has that bit set.

This does not work on thumbv5, because it does not support b.w, and the linker would not insert a veneer (trampoline?) to extend the range of b.n. We may need to do full-range plt-style jumptables on thumbv54, which are 12 bytes per entry. Another option is "push lr; bl; pop pc" (4 bytes) but that needs unwinding instructions, etc.

Differential Revision: https://reviews.llvm.org/D27499

llvm-svn: 289008
2016-12-08 00:32:26 +00:00
..
Coroutines Fix spelling mistakes in Transforms comments. NFC. 2016-11-20 13:19:49 +00:00
Hello
InstCombine [InstCombine] change select type to eliminate bitcasts 2016-12-03 15:25:16 +00:00
Instrumentation [sanitizer-coverage] use IRB.SetCurrentDebugLocation after IRB.SetInsertPoint 2016-12-03 01:43:30 +00:00
IPO CFI-icall on Thumb 2016-12-08 00:32:26 +00:00
ObjCARC [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
Scalar [BDCE] Skip metadata while replacing uses. 2016-12-07 21:47:32 +00:00
Utils [InlineFunction] Refactor code in function `fixupLineNumbers' as suggested by David in D27462. NFC 2016-12-07 12:01:45 +00:00
Vectorize [LV] Scalarize operands of predicated instructions 2016-12-07 15:03:32 +00:00
CMakeLists.txt
LLVMBuild.txt