For Thumb indirect branches, use "mov pc, reg" which does not switch
authorBob Wilson <bob.wilson@apple.com>
Tue, 3 Nov 2009 06:29:56 +0000 (06:29 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 3 Nov 2009 06:29:56 +0000 (06:29 +0000)
between ARM/Thumb modes and does not require the low bit of the target
address to be set for Thumb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85874 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrThumb.td

index 2a391992874dd646aea60f1f7519c005380b419e..d353334ce534b5bc0dbe7406a8289fb3dd99449d 100644 (file)
@@ -182,7 +182,7 @@ let isReturn = 1, isTerminator = 1, isBarrier = 1 in {
 
 // Indirect branches
 let isBranch = 1, isTerminator = 1, isBarrier = 1, isIndirectBranch = 1 in {
-  def tBRIND : TI<(outs), (ins GPR:$dst), IIC_Br, "bx\t$dst",
+  def tBRIND : TI<(outs), (ins GPR:$dst), IIC_Br, "mov\tpc, $dst",
                   [(brind GPR:$dst)]>;
 }