summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/X86/X86FastISel.cpp6
-rw-r--r--llvm/test/CodeGen/X86/fast-isel-call-bool.ll3
-rw-r--r--llvm/test/CodeGen/X86/large-code-model-isel.ll13
3 files changed, 17 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp
index 4af856c5622..d4459eec8ba 100644
--- a/llvm/lib/Target/X86/X86FastISel.cpp
+++ b/llvm/lib/Target/X86/X86FastISel.cpp
@@ -2709,15 +2709,15 @@ bool X86FastISel::fastLowerCall(CallLoweringInfo &CLI) {
ResultReg =
fastEmit_ri(VT, VT, ISD::AND, ResultReg, hasTrivialKill(PrevVal), 1);
-
- if (!ResultReg)
- return false;
} else {
if (!isTypeLegal(Val->getType(), VT))
return false;
ResultReg = getRegForValue(Val);
}
+ if (!ResultReg)
+ return false;
+
ArgRegs.push_back(ResultReg);
OutVTs.push_back(VT);
}
diff --git a/llvm/test/CodeGen/X86/fast-isel-call-bool.ll b/llvm/test/CodeGen/X86/fast-isel-call-bool.ll
index 44db38c5ea9..876b02275c6 100644
--- a/llvm/test/CodeGen/X86/fast-isel-call-bool.ll
+++ b/llvm/test/CodeGen/X86/fast-isel-call-bool.ll
@@ -1,8 +1,7 @@
-; RUN: llc < %s -fast-isel -mcpu=core2 -O1 | FileCheck %s
+; RUN: llc < %s -fast-isel -mcpu=core2 -march=x86-64 -O1 | FileCheck %s
; See PR21557
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-darwin14.0.0"
declare i64 @bar(i1)
diff --git a/llvm/test/CodeGen/X86/large-code-model-isel.ll b/llvm/test/CodeGen/X86/large-code-model-isel.ll
new file mode 100644
index 00000000000..3c283d93494
--- /dev/null
+++ b/llvm/test/CodeGen/X86/large-code-model-isel.ll
@@ -0,0 +1,13 @@
+; RUN: llc < %s -code-model=large -mcpu=core2 -march=x86-64 -O0 | FileCheck %s
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
+@.str10 = external unnamed_addr constant [2 x i8], align 1
+
+define void @foo() {
+; CHECK-LABEL: foo:
+entry:
+; CHECK: callq
+ %call = call i64* undef(i64* undef, i8* getelementptr inbounds ([2 x i8]* @.str10, i32 0, i32 0))
+ ret void
+}
OpenPOWER on IntegriCloud