2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / cpp1z / register2.C
blob5d7c9f63c3087723c3e02699ed4407c56be5f506
1 // P0001R1 - C++17 removal of register keyword
2 // { dg-do compile }
3 // { dg-options "-Wno-register" }
5 #if defined(__i386__) || defined(__x86_64__)
6 #define REG1 "ebx"
7 #define REG2 "edi"
8 #endif
10 #ifdef REG1
11 register int a __asm (REG1);    // { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
12 #endif
13 register int b;                 // { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
14 register int c ();              // { dg-error "storage class 'register' invalid for function" }
15 int foo (register int d)        // { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
17   return d;
19 int bar ()
21 #ifdef REG2
22   register int e __asm (REG2);  // { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
23 #else
24   int e;
25 #endif
26   register int f;               // { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
27   e = 6;
28   f = 7;
29   return e + f;