Temporarily disable tail calls on ARM to work around some linker problems.
authorBob Wilson <bob.wilson@apple.com>
Fri, 13 Aug 2010 22:43:33 +0000 (22:43 +0000)
committerBob Wilson <bob.wilson@apple.com>
Fri, 13 Aug 2010 22:43:33 +0000 (22:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111050 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/2010-06-21-nondarwin-tc.ll
test/CodeGen/ARM/call-tc.ll
test/CodeGen/Thumb2/thumb2-call-tc.ll
test/CodeGen/Thumb2/thumb2-ifcvt1-tc.ll

index 073528abe8dc05bbf3ab5db7d310fa22b7d5a2ec..5a03a07dccac1b72d4d39d111ea2c7d3e1e1579f 100644 (file)
@@ -51,6 +51,12 @@ using namespace llvm;
 
 STATISTIC(NumTailCalls, "Number of tail calls");
 
+// This option should go away when tail calls fully work.
+static cl::opt<bool>
+EnableARMTailCalls("arm-tail-calls", cl::Hidden,
+  cl::desc("Generate tail calls (TEMPORARY OPTION)."),
+  cl::init(false));
+
 // This option should go away when Machine LICM is smart enough to hoist a 
 // reg-to-reg VDUP.
 static cl::opt<bool>
@@ -1117,6 +1123,9 @@ ARMTargetLowering::LowerCall(SDValue Chain, SDValue Callee,
   MachineFunction &MF = DAG.getMachineFunction();
   bool IsStructRet    = (Outs.empty()) ? false : Outs[0].Flags.isSRet();
   bool IsSibCall = false;
+  // Temporarily disable tail calls so things don't break.
+  if (!EnableARMTailCalls)
+    isTailCall = false;
   if (isTailCall) {
     // Check if it's really possible to do a tail call.
     isTailCall = IsEligibleForTailCallOptimization(Callee, CallConv,
index 7650d883d7b1c51eef62701b579948bb81e8f11a..ac8e80904edaee9903d97cd3041e7dedb393823e 100755 (executable)
@@ -1,5 +1,6 @@
 ; RUN: llc < %s -march=arm -mtriple=armv4t-unknown-linux-gnueabi  | FileCheck %s
 ; PR 7433
+; XFAIL: *
 
 %0 = type { i8*, i8* }
 %1 = type { i8*, i8*, i8* }
index f1269d5bd2be660871b5836537ade2486fb418a4..db5afe3f56cb8741e7fdd9f0729247109fc8a7ba 100644 (file)
@@ -2,6 +2,7 @@
 ; RUN: llc < %s -march=arm -mtriple=arm-apple-darwin -mattr=+v5t | FileCheck %s -check-prefix=CHECKV5
 ; RUN: llc < %s -march=arm -mtriple=arm-linux-gnueabi\
 ; RUN:   -relocation-model=pic | FileCheck %s -check-prefix=CHECKELF
+; XFAIL: *
 
 @t = weak global i32 ()* null           ; <i32 ()**> [#uses=1]
 
index 24502b0338c25d9127dd54d9a1a4830853c9e7e3..2e4da1b289b55f2b572052504600bccc4f95deb0 100644 (file)
@@ -1,5 +1,6 @@
 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mattr=+thumb2 | FileCheck %s -check-prefix=DARWIN
 ; RUN: llc < %s -mtriple=thumbv7-linux -mattr=+thumb2 | FileCheck %s -check-prefix=LINUX
+; XFAIL: *
 
 @t = weak global i32 ()* null           ; <i32 ()**> [#uses=1]
 
index c024415477189ec6b8592755be357d190570cafb..5315535db0456914611d50f2e10b6aa58aeef4ce 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin | FileCheck %s
+; XFAIL: *
 
 define i32 @t1(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
 ; CHECK: t1: