From f336bea195ff224faa3598f2bdfec7de48ddd622 Mon Sep 17 00:00:00 2001 From: Dale Johannesen Date: Tue, 18 May 2010 19:03:51 +0000 Subject: [PATCH] Testcase for llvm-gcc checkin 104042. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104043 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/FrontendC/2010-05-18-asmsched.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test/FrontendC/2010-05-18-asmsched.c diff --git a/test/FrontendC/2010-05-18-asmsched.c b/test/FrontendC/2010-05-18-asmsched.c new file mode 100644 index 00000000000..101f494a38c --- /dev/null +++ b/test/FrontendC/2010-05-18-asmsched.c @@ -0,0 +1,19 @@ +// RUN: %llvmgcc %s -c -O3 -m64 -emit-llvm -o - | llc -march=x86-64 -mtriple=x86_64-apple-darwin | FileCheck %s +// XFAIL: * +// XTARGET: x86,i386,i686 +// 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