111
|
1 // P0001R1 - C++17 removal of register keyword
|
|
2 // { dg-do compile }
|
|
3
|
|
4 #if defined(__i386__) || defined(__x86_64__)
|
|
5 #define REG1 "ebx"
|
|
6 #define REG2 "edi"
|
|
7 #endif
|
|
8
|
|
9 #ifdef REG1
|
|
10 register int a __asm (REG1); // { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
|
|
11 #endif
|
|
12 register int b; // { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
|
145
|
13 register int c (); // { dg-error "1:storage class 'register' invalid for function" }
|
111
|
14 int foo (register int d) // { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
|
|
15 {
|
|
16 return d;
|
|
17 }
|
|
18 int bar ()
|
|
19 {
|
|
20 #ifdef REG2
|
|
21 register int e __asm (REG2); // { dg-bogus "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
|
|
22 #else
|
|
23 int e;
|
|
24 #endif
|
|
25 register int f; // { dg-error "ISO C\\+\\+17 does not allow 'register' storage class specifier" "" { target c++17 } }
|
|
26 e = 6;
|
|
27 f = 7;
|
|
28 return e + f;
|
|
29 }
|