[llvm-commits] [llvm] r132042 - in /llvm/trunk: lib/Target/ARM/ARMAsmPrinter.cpp test/CodeGen/ARM/call-tc.ll

Cameron Zwarich zwarich at apple.com
Tue May 24 21:45:27 PDT 2011


Author: zwarich
Date: Tue May 24 23:45:27 2011
New Revision: 132042

URL: http://llvm.org/viewvc/llvm-project?rev=132042&view=rev
Log:
Make tTAILJMPr/tTAILJMPrND emit a tBX without a preceding MOV of PC to LR. This
fixes <rdar://problem/9495913>

Modified:
    llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
    llvm/trunk/test/CodeGen/ARM/call-tc.ll

Modified: llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp?rev=132042&r1=132041&r2=132042&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Tue May 24 23:45:27 2011
@@ -1875,7 +1875,7 @@
   case ARM::TAILJMPr:
   case ARM::tTAILJMPr: {
     unsigned newOpc = (Opc == ARM::TAILJMPr || Opc == ARM::TAILJMPrND)
-      ? ARM::BX : ARM::tBX_CALL;
+      ? ARM::BX : ARM::tBX;
     MCInst TmpInst;
     TmpInst.setOpcode(newOpc);
     TmpInst.addOperand(MCOperand::CreateReg(MI->getOperand(0).getReg()));

Modified: llvm/trunk/test/CodeGen/ARM/call-tc.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/call-tc.ll?rev=132042&r1=132041&r2=132042&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM/call-tc.ll (original)
+++ llvm/trunk/test/CodeGen/ARM/call-tc.ll Tue May 24 23:45:27 2011
@@ -16,6 +16,10 @@
 define void @t2() {
 ; CHECKV6: t2:
 ; CHECKV6: bx r0 @ TAILCALL
+; CHECKT2D: t2:
+; CHECKT2D: ldr
+; CHECKT2D-NEXT: ldr
+; CHECKT2D-NEXT: bx r0 @ TAILCALL
         %tmp = load i32 ()** @t         ; <i32 ()*> [#uses=1]
         %tmp.upgrd.2 = tail call i32 %tmp( )            ; <i32> [#uses=0]
         ret void





More information about the llvm-commits mailing list