aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-30 23:42:18 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-30 23:42:18 +0000
commit098c7ac7c8bbc519a4ef4ab242140be459f0dae2 (patch)
tree747d05e38c7fa736ae08d6d82d29840b44d3f312 /test/CodeGen
parent2a7b41ba4d3eb3c6003f6768dc20b28d83eac265 (diff)
downloadexternal_llvm-098c7ac7c8bbc519a4ef4ab242140be459f0dae2.zip
external_llvm-098c7ac7c8bbc519a4ef4ab242140be459f0dae2.tar.gz
external_llvm-098c7ac7c8bbc519a4ef4ab242140be459f0dae2.tar.bz2
Fix a problem with fast-isel return values introduced in r134018.
We would put the return value from long double functions in the wrong register. This fixes gcc.c-torture/execute/conversion.c git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134205 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r--test/CodeGen/X86/fp-stack-O0.ll24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/CodeGen/X86/fp-stack-O0.ll b/test/CodeGen/X86/fp-stack-O0.ll
new file mode 100644
index 0000000..b9cb5d7
--- /dev/null
+++ b/test/CodeGen/X86/fp-stack-O0.ll
@@ -0,0 +1,24 @@
+; RUN: llc < %s -O0 | FileCheck %s
+target triple = "x86_64-apple-macosx"
+
+declare x86_fp80 @x1(i32) nounwind
+declare i32 @x2(x86_fp80, x86_fp80) nounwind
+
+; Keep track of the return value.
+; CHECK: test1
+; CHECK: x1
+; Pass arguments on the stack.
+; CHECK-NEXT: movq %rsp, [[RCX:%r..]]
+; Copy constant-pool value.
+; CHECK-NEXT: fldt LCPI
+; CHECK-NEXT: fstpt 16([[RCX]])
+; Copy x1 return value.
+; CHECK-NEXT: fstpt ([[RCX]])
+; CHECK-NEXT: x2
+define i32 @test1() nounwind uwtable ssp {
+entry:
+ %call = call x86_fp80 (...)* bitcast (x86_fp80 (i32)* @x1 to x86_fp80 (...)*)(i32 -1)
+ %call1 = call i32 @x2(x86_fp80 %call, x86_fp80 0xK401EFFFFFFFF00000000)
+ ret i32 %call1
+}
+