[fast-isel] The X86FastISel::FastLowerArguments function doesn't properly handle
authorChad Rosier <mcrosier@apple.com>
Thu, 14 Mar 2013 21:25:04 +0000 (21:25 +0000)
committerChad Rosier <mcrosier@apple.com>
Thu, 14 Mar 2013 21:25:04 +0000 (21:25 +0000)
the win64 calling convention.
rdar://13423768

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177113 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86FastISel.cpp
test/CodeGen/X86/fast-isel-args-fail.ll

index b5c327006583bf117a632b4a6173fef6c4d6795f..85155f55e0ffda6db249dab0e2956daa39d41832 100644 (file)
@@ -1526,6 +1526,9 @@ bool X86FastISel::FastLowerArguments() {
   if (!FuncInfo.CanLowerReturn)
     return false;
 
   if (!FuncInfo.CanLowerReturn)
     return false;
 
+  if (Subtarget->isTargetWindows())
+    return false;
+
   const Function *F = FuncInfo.Fn;
   if (F->isVarArg())
     return false;
   const Function *F = FuncInfo.Fn;
   if (F->isVarArg())
     return false;
index 4995baa3e5a0222837d2d105e9d5b39eb5d2b81b..45a2b384de411f069c5fa9902d73234b2a85297d 100644 (file)
@@ -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-apple-darwin10
+; RUN: llc < %s -fast-isel -verify-machineinstrs -mtriple=x86_64-pc-win32 | FileCheck %s 
 ; Requires: Asserts
 
 ; Previously, this would cause an assert.
 ; Requires: Asserts
 
 ; Previously, this would cause an assert.
@@ -8,3 +9,12 @@ entry:
   %add1 = add nsw i31 %add, %c
   ret i31 %add1
 }
   %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
+}