add alignment to enable store merging in strict-alignment targets
[official-gcc.git] / gcc / testsuite / g++.dg / asm-qual-2.C
blob52968bdfd17e9321ea2b582135ee26e5c6301d37
1 // Test that qualifiers on asm are allowed in any order.
2 // { dg-do compile }
3 // { dg-options "-std=c++98" }
5 void
6 f ()
8   asm volatile goto ("" :::: lab);
9   asm volatile inline ("" :::);
10   asm inline volatile ("" :::);
11   asm inline goto ("" :::: lab);
12   asm goto volatile ("" :::: lab);
13   asm goto inline ("" :::: lab);
15   asm volatile inline goto ("" :::: lab);
16   asm volatile goto inline ("" :::: lab);
17   asm inline volatile goto ("" :::: lab);
18   asm inline goto volatile ("" :::: lab);
19   asm goto volatile inline ("" :::: lab);
20   asm goto inline volatile ("" :::: lab);
22   /* Duplicates are not allowed.  */
23   asm goto volatile volatile ("" :::: lab);  /* { dg-error "" } */
24   asm volatile goto volatile ("" :::: lab);  /* { dg-error "" } */
25   asm volatile volatile goto ("" :::: lab);  /* { dg-error "" } */
26   asm goto goto volatile ("" :::: lab);  /* { dg-error "" } */
27   asm goto volatile goto ("" :::: lab);  /* { dg-error "" } */
28   asm volatile goto goto ("" :::: lab);  /* { dg-error "" } */
30   asm inline volatile volatile ("" :::);  /* { dg-error "" } */
31   asm volatile inline volatile ("" :::);  /* { dg-error "" } */
32   asm volatile volatile inline ("" :::);  /* { dg-error "" } */
33   asm inline inline volatile ("" :::);  /* { dg-error "" } */
34   asm inline volatile inline ("" :::);  /* { dg-error "" } */
35   asm volatile inline inline ("" :::);  /* { dg-error "" } */
37   asm goto inline inline ("" :::: lab);  /* { dg-error "" } */
38   asm inline goto inline ("" :::: lab);  /* { dg-error "" } */
39   asm inline inline goto ("" :::: lab);  /* { dg-error "" } */
40   asm goto goto inline ("" :::: lab);  /* { dg-error "" } */
41   asm goto inline goto ("" :::: lab);  /* { dg-error "" } */
42   asm inline goto goto ("" :::: lab);  /* { dg-error "" } */
44 lab:
45   ;