59 lines · c
1// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -verify %s2 3void qualifiers(void) {4 asm("");5 asm volatile("");6 asm inline("");7 asm goto("" ::::foo);8foo:;9}10 11void unknown_qualifiers(void) {12 asm noodle(""); // expected-error {{expected 'volatile', 'inline', 'goto', or '('}}13 asm goto noodle("" ::::foo); // expected-error {{expected 'volatile', 'inline', 'goto', or '('}}14 asm volatile noodle inline(""); // expected-error {{expected 'volatile', 'inline', 'goto', or '('}}15foo:;16}17 18void underscores(void) {19 __asm__("");20 __asm__ __volatile__("");21 __asm__ __inline__("");22 // Note: goto is not supported with underscore prefix+suffix.23 __asm__ goto("" ::::foo);24foo:;25}26 27void permutations(void) {28 asm goto inline volatile("" ::::foo);29 asm goto inline("");30 asm goto volatile inline("" ::::foo);31 asm goto volatile("");32 asm inline goto volatile("" ::::foo);33 asm inline goto("" ::::foo);34 asm inline volatile goto("" ::::foo);35 asm inline volatile("");36 asm volatile goto("" ::::foo);37 asm volatile inline goto("" ::::foo);38 asm volatile inline("");39foo:;40}41 42void duplicates(void) {43 asm volatile volatile(""); // expected-error {{duplicate asm qualifier 'volatile'}}44 __asm__ __volatile__ __volatile__(""); // expected-error {{duplicate asm qualifier 'volatile'}}45 asm inline inline(""); // expected-error {{duplicate asm qualifier 'inline'}}46 __asm__ __inline__ __inline__(""); // expected-error {{duplicate asm qualifier 'inline'}}47 asm goto goto("" ::::foo); // expected-error {{duplicate asm qualifier 'goto'}}48 __asm__ goto goto("" ::::foo); // expected-error {{duplicate asm qualifier 'goto'}}49foo:;50}51 52// globals53asm ("");54asm volatile (""); // expected-error {{meaningless 'volatile' on asm outside function}}55asm inline (""); // expected-error {{meaningless 'inline' on asm outside function}}56asm goto (""::::noodle); // expected-error {{meaningless 'goto' on asm outside function}}57// expected-error@-1 {{expected ')'}}58// expected-note@-2 {{to match this '('}}59