]> granicus.if.org Git - llvm/commit
Fix ARMv4 support
authorJoerg Sonnenberger <joerg@bec.de>
Mon, 28 Aug 2017 20:20:47 +0000 (20:20 +0000)
committerJoerg Sonnenberger <joerg@bec.de>
Mon, 28 Aug 2017 20:20:47 +0000 (20:20 +0000)
commiteb8f624e3defe842e8c828ee1110d83a572636d7
tree73a97684a51b4d84d72ca696aafe7e6544e06fe2
parent1047945a59e76585fd988c4ded218a91c0793010
Fix ARMv4 support

ARMv4 doesn't support the "BX" instruction, which has been introduced
with ARMv4t. Adjust the call lowering and tail call implementation
accordingly.

Further changes are necessary to ensure that presence of the v4t feature
is correctly set. Most importantly, the "generic" CPU for thumb-*
triples should include ARMv4t, since thumb mode without thumb support
would naturally be pointless.

Add a couple of asserts to ensure thumb instructions are not emitted
without CPU support.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311921 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
lib/Target/ARM/ARMAsmPrinter.cpp
lib/Target/ARM/ARMCallLowering.cpp
lib/Target/ARM/ARMExpandPseudoInsts.cpp
lib/Target/ARM/ARMFastISel.cpp
lib/Target/ARM/ARMFrameLowering.cpp
lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/ARMLoadStoreOptimizer.cpp
lib/Target/ARM/ARMSubtarget.h
lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll
test/CodeGen/ARM/armv4.ll
test/CodeGen/ARM/debug-segmented-stacks.ll
test/CodeGen/ARM/segmented-stacks-dynamic.ll
test/CodeGen/ARM/segmented-stacks.ll