| /* Test C2x auto. Valid code, execution tests. Based on auto-type-1.c. */ |
| /* { dg-do run } */ |
| /* { dg-options "-std=c2x -pedantic-errors" } */ |
| /* { dg-require-effective-target alloca } */ |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| auto i = 1; |
| extern int i; |
| auto c = (char) 1; |
| extern char c; |
| static auto u = 10U; |
| extern unsigned int u; |
| const auto ll = 1LL; |
| extern const long long ll; |
| |
| int |
| main (void) |
| { |
| if (i != 1 || c != 1 || u != 10U) |
| abort (); |
| auto ai = i; |
| int *aip = &ai; |
| if (ai != 1) |
| abort (); |
| auto p = (int (*) [++i]) 0; |
| if (i != 2) |
| abort (); |
| if (sizeof (*p) != 2 * sizeof (int)) |
| abort (); |
| int vla[u][u]; |
| int (*vp)[u] = &vla[0]; |
| auto vpp = ++vp; |
| if (vp != &vla[1]) |
| abort (); |
| exit (0); |
| } |