summaryrefslogtreecommitdiff
path: root/test/FrontendC/2010-05-18-asmsched.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/FrontendC/2010-05-18-asmsched.c')
-rw-r--r--test/FrontendC/2010-05-18-asmsched.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/FrontendC/2010-05-18-asmsched.c b/test/FrontendC/2010-05-18-asmsched.c
new file mode 100644
index 000000000000..34abbe3e5c5c
--- /dev/null
+++ b/test/FrontendC/2010-05-18-asmsched.c
@@ -0,0 +1,17 @@
+// RUN: %llvmgcc %s -c -O3 -m64 -emit-llvm -o - | llc -march=x86-64 -mtriple=x86_64-apple-darwin | FileCheck %s
+// r9 used to be clobbered before its value was moved to r10. 7993104.
+
+void foo(int x, int y) {
+// CHECK: bar
+// CHECK: movq %r9, %r10
+// CHECK: movq %rdi, %r9
+// CHECK: bar
+ register int lr9 asm("r9") = x;
+ register int lr10 asm("r10") = y;
+ int foo;
+ asm volatile("bar" : "=r"(lr9) : "r"(lr9), "r"(lr10));
+ foo = lr9;
+ lr9 = x;
+ lr10 = foo;
+ asm volatile("bar" : "=r"(lr9) : "r"(lr9), "r"(lr10));
+} \ No newline at end of file