Anders Carlsson | 7ff6057 | 2009-01-11 21:23:27 +0000 | [diff] [blame] | 1 | // RUN: clang -emit-llvm %s -o %t -arch=i386 |
| 2 | void t1(int len) |
Anders Carlsson | c180e8e | 2009-01-11 19:46:50 +0000 | [diff] [blame] | 3 | { |
Anders Carlsson | 7ff6057 | 2009-01-11 21:23:27 +0000 | [diff] [blame] | 4 | __asm__ volatile("" : "=&r"(len), "+&r"(len)); |
Anders Carlsson | c180e8e | 2009-01-11 19:46:50 +0000 | [diff] [blame] | 5 | } |
Anders Carlsson | 7ff6057 | 2009-01-11 21:23:27 +0000 | [diff] [blame] | 6 | |
| 7 | void t2(unsigned long long t) |
| 8 | { |
| 9 | __asm__ volatile("" : "+m"(t)); |
| 10 | } |
| 11 | |
| 12 | void t3(unsigned char *src, unsigned long long temp) |
| 13 | { |
| 14 | __asm__ volatile("" : "+m"(temp), "+r"(src)); |
| 15 | } |
| 16 | |
Anders Carlsson | fc12cfe | 2009-01-12 02:22:13 +0000 | [diff] [blame] | 17 | void t4() |
| 18 | { |
| 19 | unsigned long long a; |
| 20 | struct reg { unsigned long long a, b; } b; |
| 21 | |
| 22 | __asm__ volatile ("":: "m"(a), "m"(b)); |
| 23 | } |
Anders Carlsson | 7ff6057 | 2009-01-11 21:23:27 +0000 | [diff] [blame] | 24 | |
Anders Carlsson | dd3a4fe | 2009-01-27 20:38:24 +0000 | [diff] [blame] | 25 | // PR3417 |
| 26 | void t5(int i) |
| 27 | { |
| 28 | asm("nop" : "=r"(i) : "0"(t5)); |
| 29 | } |