/* PR c/65345 */ | |
/* { dg-do run } */ | |
/* { dg-require-effective-target sync_int_long } */ | |
/* { dg-options "" } */ | |
#define CHECK(X) if (!(X)) __builtin_abort () | |
_Atomic int i = 5; | |
_Atomic int j = 2; | |
void | |
fn1 (int a[i = 0]) | |
{ | |
} | |
void | |
fn2 (int a[i += 2]) | |
{ | |
} | |
void | |
fn3 (int a[++i]) | |
{ | |
} | |
void | |
fn4 (int a[++i]) | |
{ | |
} | |
void | |
fn5 (int a[++i][j = 10]) | |
{ | |
} | |
void | |
fn6 (int a[i = 7][j--]) | |
{ | |
} | |
int | |
main () | |
{ | |
int a[10]; | |
int aa[10][10]; | |
fn1 (a); | |
CHECK (i == 0); | |
fn2 (a); | |
CHECK (i == 2); | |
fn3 (a); | |
CHECK (i == 3); | |
fn4 (a); | |
CHECK (i == 4); | |
fn5 (aa); | |
CHECK (i == 5); | |
CHECK (j == 10); | |
fn6 (aa); | |
CHECK (i == 7); | |
CHECK (j == 9); | |
} |