diff options
| author | Chad Rosier <mcrosier@apple.com> | 2013-03-14 21:25:04 +0000 |
|---|---|---|
| committer | Chad Rosier <mcrosier@apple.com> | 2013-03-14 21:25:04 +0000 |
| commit | 4b54f594b43b15f0fc0ecdc32c7517ced7649633 (patch) | |
| tree | f8c26ffdbd3fb3ecf34ea8960789e06e57c91776 /llvm | |
| parent | 4e67cba8a65bba60e60f48083269917b39b4e3de (diff) | |
| download | bcm5719-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.cpp | 3 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/fast-isel-args-fail.ll | 10 |
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 +} |

