[Bug c/65345] ICE with _Generic selection on _Atomic int
mpolacek at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 9 16:55:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65345
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
FWIW, my testcase was
/* PR c/65345 */
/* { dg-do compile } */
/* { dg-options "" } */
_Atomic int i = 3;
int g1 = sizeof (i + 1) + sizeof (-i);
int g2 = __builtin_constant_p (i + 1);
int g3 = 0 && i;
int g4 = 0 || i; /* { dg-error "initializer element is not constant" } */
int g5 = i; /* { dg-error "initializer element is not constant" } */
int g6[i]; /* { dg-error "variably modified" } */
int g7 = (i ? 1 : 2); /* { dg-error "initializer element is not constant" } */
int g8 = _Alignof (-i);
_Atomic long g10 = i; /* { dg-error "initializer element is not constant" } */
_Static_assert (_Generic (i, int: 1, default: 0) == 1, "");
_Static_assert (_Generic (i + 1, int: 1, default: 0) == 1, "");
void
foo (void)
{
static int q1 = sizeof (i + 1) + sizeof (-i);
static int q2 = __builtin_constant_p (i + 1);
static int q3 = 0 && i;
static int q4 = 0 || i; /* { dg-error "initializer element is not constant" }
*/
static int q5 = i; /* { dg-error "initializer element is not constant" } */
static int q6[i]; /* { dg-error "storage size" } */
static int q7 = (i ? 1 : 2); /* { dg-error "initializer element is not
constant" } */
static int q8 = _Alignof (-i);
}
More information about the Gcc-bugs
mailing list