summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2013-03-14 21:25:04 +0000
committerChad Rosier <mcrosier@apple.com>2013-03-14 21:25:04 +0000
commit4b54f594b43b15f0fc0ecdc32c7517ced7649633 (patch)
treef8c26ffdbd3fb3ecf34ea8960789e06e57c91776 /llvm
parent4e67cba8a65bba60e60f48083269917b39b4e3de (diff)
downloadbcm5719-llvm-4b54f594b43b15f0fc0ecdc32c7517ced7649633.tar.gz
bcm5719-llvm-4b54f594b43b15f0fc0ecdc32c7517ced7649633.zip
[fast-isel] The X86FastISel::FastLowerArguments function doesn't properly handle
the win64 calling convention. rdar://13423768 llvm-svn: 177113
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/X86/X86FastISel.cpp3
-rw-r--r--llvm/test/CodeGen/X86/fast-isel-args-fail.ll10
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp
index b5c32700658..85155f55e0f 100644
--- a/llvm/lib/Target/X86/X86FastISel.cpp
+++ b/llvm/lib/Target/X86/X86FastISel.cpp
@@ -1526,6 +1526,9 @@ bool X86FastISel::FastLowerArguments() {
if (!FuncInfo.CanLowerReturn)
return false;
+ if (Subtarget->isTargetWindows())
+ return false;
+
const Function *F = FuncInfo.Fn;
if (F->isVarArg())
return false;
diff --git a/llvm/test/CodeGen/X86/fast-isel-args-fail.ll b/llvm/test/CodeGen/X86/fast-isel-args-fail.ll
index 4995baa3e5a..45a2b384de4 100644
--- a/llvm/test/CodeGen/X86/fast-isel-args-fail.ll
+++ b/llvm/test/CodeGen/X86/fast-isel-args-fail.ll
@@ -1,4 +1,5 @@
; RUN: llc < %s -fast-isel -verify-machineinstrs -mtriple=x86_64-apple-darwin10
+; RUN: llc < %s -fast-isel -verify-machineinstrs -mtriple=x86_64-pc-win32 | FileCheck %s
; Requires: Asserts
; Previously, this would cause an assert.
@@ -8,3 +9,12 @@ entry:
%add1 = add nsw i31 %add, %c
ret i31 %add1
}
+
+; We don't handle the Windows CC, yet.
+define i32 @foo(i32* %p) {
+entry:
+; CHECK: foo
+; CHECK: movl (%rcx), %eax
+ %0 = load i32* %p, align 4
+ ret i32 %0
+}
OpenPOWER on IntegriCloud