| Alp Toker | 75e2253 | 2013-12-08 21:12:27 +0000 | [diff] [blame] | 1 | // REQUIRES: x86-registered-target | 
| Chad Rosier | 10280a5 | 2013-01-22 21:39:58 +0000 | [diff] [blame] | 2 | // RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks | 
| Eli Friedman | a4b02c3 | 2011-09-30 01:13:51 +0000 | [diff] [blame] | 3 | |
| 4 | #define M __asm int 0x2c | ||||
| 5 | #define M2 int | ||||
| 6 | |||||
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 7 | void t1(void) { M } | 
| 8 | void t2(void) { __asm int 0x2c } | ||||
| 9 | void t3(void) { __asm M2 0x2c } | ||||
| 10 | void t4(void) { __asm mov eax, fs:[0x10] } | ||||
| Eli Friedman | a4b02c3 | 2011-09-30 01:13:51 +0000 | [diff] [blame] | 11 | void t5() { | 
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 12 | __asm { | 
| Eli Friedman | a4b02c3 | 2011-09-30 01:13:51 +0000 | [diff] [blame] | 13 | int 0x2c ; } asm comments are fun! }{ | 
| 14 | } | ||||
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 15 | __asm {} | 
| Eli Friedman | a4b02c3 | 2011-09-30 01:13:51 +0000 | [diff] [blame] | 16 | } | 
| 17 | int t6() { | ||||
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 18 | __asm int 3 ; } comments for single-line asm | 
| 19 | __asm {} | ||||
| Eli Friedman | a4b02c3 | 2011-09-30 01:13:51 +0000 | [diff] [blame] | 20 | |
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 21 | __asm int 4 | 
| Eli Friedman | a4b02c3 | 2011-09-30 01:13:51 +0000 | [diff] [blame] | 22 | return 10; | 
| 23 | } | ||||
| Chad Rosier | 175ea24 | 2012-08-24 21:42:51 +0000 | [diff] [blame] | 24 | void t7() { | 
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 25 | __asm { | 
| Chad Rosier | 0764e0b | 2012-06-12 19:03:42 +0000 | [diff] [blame] | 26 | push ebx | 
| 27 | mov ebx, 0x07 | ||||
| 28 | pop ebx | ||||
| 29 | } | ||||
| 30 | } | ||||
| Chad Rosier | 075608e | 2012-06-12 20:30:26 +0000 | [diff] [blame] | 31 | void t8() { | 
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 32 | __asm nop __asm nop __asm nop | 
| Chad Rosier | 075608e | 2012-06-12 20:30:26 +0000 | [diff] [blame] | 33 | } | 
| 34 | void t9() { | ||||
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 35 | __asm nop __asm nop ; __asm nop | 
| Chad Rosier | 075608e | 2012-06-12 20:30:26 +0000 | [diff] [blame] | 36 | } | 
| Ehsan Akhgari | 0f89fac | 2014-07-06 05:26:54 +0000 | [diff] [blame] | 37 | void t10() { | 
| 38 | __asm { | ||||
| 39 | mov eax, 0 | ||||
| 40 | __asm { | ||||
| 41 | mov eax, 1 | ||||
| 42 | { | ||||
| 43 | mov eax, 2 | ||||
| 44 | } | ||||
| 45 | } | ||||
| 46 | } | ||||
| 47 | } | ||||
| Ehsan Akhgari | 833ed94 | 2014-07-15 02:21:41 +0000 | [diff] [blame] | 48 | void t11() { | 
| 49 | do { __asm mov eax, 0 __asm { __asm mov edx, 1 } } while(0); | ||||
| 50 | } | ||||
| Ehsan Akhgari | 3109758 | 2014-09-22 02:21:54 +0000 | [diff] [blame] | 51 | void t12() { | 
| 52 | __asm jmp label // expected-error {{use of undeclared label 'label'}} | ||||
| 53 | } | ||||
| Chad Rosier | 0764e0b | 2012-06-12 19:03:42 +0000 | [diff] [blame] | 54 | int t_fail() { // expected-note {{to match this}} | 
| Chad Rosier | 33a6e11 | 2013-01-22 18:18:22 +0000 | [diff] [blame] | 55 | __asm | 
| Ehsan Akhgari | 2f93b44 | 2014-07-25 02:27:14 +0000 | [diff] [blame] | 56 | __asm { // expected-error 2 {{expected}} expected-note {{to match this}} |