blob: b95e08bcca10d766e872432868b943c59d94593e [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Anders Carlssoneecf8472007-11-21 23:27:34 +00002
3void f1() {
Chandler Carruth102e1b62010-07-22 07:11:21 +00004 // PR7673: Some versions of GCC support an empty clobbers section.
5 asm ("ret" : : :);
Anders Carlssoneecf8472007-11-21 23:27:34 +00006}
Anders Carlsson8bd36fc2008-02-09 19:57:29 +00007
8void f2() {
9 asm("foo" : "=r" (a)); // expected-error {{use of undeclared identifier 'a'}}
10 asm("foo" : : "r" (b)); // expected-error {{use of undeclared identifier 'b'}}
Richard Smith4cf4a5e2013-03-28 01:55:44 +000011
12 asm const (""); // expected-warning {{ignored const qualifier on asm}}
13 asm volatile ("");
14 asm restrict (""); // expected-warning {{ignored restrict qualifier on asm}}
15 // FIXME: Once GCC supports _Atomic, check whether it allows this.
16 asm _Atomic (""); // expected-warning {{ignored _Atomic qualifier on asm}}
Anders Carlsson8bd36fc2008-02-09 19:57:29 +000017}
Chris Lattneraec3a1e2008-05-27 23:32:43 +000018
19
20// rdar://5952468
21__asm ; // expected-error {{expected '(' after 'asm'}}
22
Ted Kremenek7f422282011-12-02 00:35:46 +000023// <rdar://problem/10465079> - Don't crash on wide string literals in 'asm'.
24int foo asm (L"bar"); // expected-error {{cannot use wide string literal in 'asm'}}
25