1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-23 21:13:02 +02:00
llvm-mirror/lib/Transforms/IPO
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
..
AlwaysInliner.cpp
ArgumentPromotion.cpp IR: Change PointerType to derive from Type rather than SequentialType. 2016-12-02 03:05:41 +00:00
BarrierNoopPass.cpp
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
ConstantMerge.cpp
CrossDSOCFI.cpp
DeadArgumentElimination.cpp Replace some callers of setTailCall with setTailCallKind 2016-11-25 22:35:09 +00:00
ElimAvailExtern.cpp
ExtractGV.cpp
ForceFunctionAttrs.cpp
FunctionAttrs.cpp Fix 80-column violations. NFC. 2016-11-07 16:28:04 +00:00
FunctionImport.cpp [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +00:00
GlobalDCE.cpp GlobalDCE: Restore a statement accidentally removed in r285048. 2016-10-25 02:57:27 +00:00
GlobalOpt.cpp IR: Move NumElements field from {Array,Vector}Type to SequentialType. 2016-12-02 03:20:58 +00:00
GlobalSplit.cpp [GlobalSplit] Port to the new pass manager. 2016-11-21 00:28:23 +00:00
InferFunctionAttrs.cpp
Inliner.cpp Fix spelling mistakes in Transforms comments. NFC. 2016-11-20 13:19:49 +00:00
InlineSimple.cpp
Internalize.cpp
IPConstantPropagation.cpp
IPO.cpp Introduce GlobalSplit pass. 2016-11-16 23:40:26 +00:00
LLVMBuild.txt
LoopExtractor.cpp
LowerTypeTests.cpp CFI-icall on Thumb 2016-12-08 00:32:26 +00:00
MergeFunctions.cpp Make the FunctionComparator of the MergeFunctions pass a stand-alone utility. 2016-11-11 21:15:13 +00:00
PartialInlining.cpp
PassManagerBuilder.cpp Introduce GlobalSplit pass. 2016-11-16 23:40:26 +00:00
PruneEH.cpp [PruneEH] Be correct in the face IPO 2016-10-03 19:35:30 +00:00
SampleProfile.cpp Use CallSite to simplify code 2016-11-29 19:42:27 +00:00
StripDeadPrototypes.cpp
StripSymbols.cpp
WholeProgramDevirt.cpp