87 lines
3.1 KiB
C
87 lines
3.1 KiB
C
/* Test for uses of incomplete enum variables: should be allowed just
|
|
when incomplete structs are allowed. PR 32295. */
|
|
/* Origin: Joseph Myers <joseph@codesourcery.com> */
|
|
/* { dg-do compile } */
|
|
/* { dg-options "" } */
|
|
|
|
extern enum e ve;
|
|
extern struct s vs;
|
|
void *p;
|
|
|
|
int
|
|
f0 (int i)
|
|
{
|
|
ve; /* { dg-error "incomplete" } */
|
|
vs; /* { dg-error "incomplete" } */
|
|
(void) ve;
|
|
(void) vs;
|
|
(void) (i ? ve : ve); /* { dg-error "incomplete" } */
|
|
(void) (i ? vs : vs); /* { dg-error "incomplete" } */
|
|
(void) (ve = ve); /* { dg-error "incomplete" } */
|
|
(void) (vs = vs); /* { dg-error "incomplete" } */
|
|
(void) ve, (void) ve;
|
|
(void) vs, (void) vs;
|
|
p = &ve;
|
|
p = &vs;
|
|
(void) sizeof (ve); /* { dg-error "incomplete" } */
|
|
(void) sizeof (vs); /* { dg-error "incomplete" } */
|
|
typeof (ve) *pe;
|
|
typeof (vs) *ps;
|
|
/* ??? alignof should probably not be accepted here. */
|
|
(void) __alignof (ve);
|
|
(void) __alignof (vs);
|
|
(void) (ve + i); /* { dg-error "incomplete" } */
|
|
(void) (i * ve); /* { dg-error "incomplete" } */
|
|
(void) (i / ve); /* { dg-error "incomplete" } */
|
|
(void) (ve - i); /* { dg-error "incomplete" } */
|
|
(void) (ve << i); /* { dg-error "incomplete" } */
|
|
(void) (i >> ve); /* { dg-error "incomplete" } */
|
|
(void) (ve < i); /* { dg-error "incomplete" } */
|
|
(void) (ve <= i); /* { dg-error "incomplete" } */
|
|
(void) (i > ve); /* { dg-error "incomplete" } */
|
|
(void) (i >= ve); /* { dg-error "incomplete" } */
|
|
(void) (ve == i); /* { dg-error "incomplete" } */
|
|
(void) (i != ve); /* { dg-error "incomplete" } */
|
|
(void) (ve & i); /* { dg-error "incomplete" } */
|
|
(void) (ve ^ i); /* { dg-error "incomplete" } */
|
|
(void) (i | ve); /* { dg-error "incomplete" } */
|
|
(void) (i && ve); /* { dg-error "incomplete" } */
|
|
(void) (ve || i); /* { dg-error "incomplete" } */
|
|
(void) -ve; /* { dg-error "incomplete" } */
|
|
(void) +ve; /* { dg-error "incomplete" } */
|
|
(void) ~ve; /* { dg-error "incomplete" } */
|
|
(void) !ve; /* { dg-error "incomplete" } */
|
|
(void) --ve; /* { dg-error "incomplete" } */
|
|
(void) ++ve; /* { dg-error "incomplete" } */
|
|
(void) ve--; /* { dg-error "incomplete" } */
|
|
(void) ve++; /* { dg-error "incomplete" } */
|
|
i = ve; /* { dg-error "incomplete" } */
|
|
i *= ve; /* { dg-error "incomplete" } */
|
|
i /= ve; /* { dg-error "incomplete" } */
|
|
i %= ve; /* { dg-error "incomplete" } */
|
|
i += ve; /* { dg-error "incomplete" } */
|
|
i -= ve; /* { dg-error "incomplete" } */
|
|
i <<= ve; /* { dg-error "incomplete" } */
|
|
i >>= ve; /* { dg-error "incomplete" } */
|
|
i &= ve; /* { dg-error "incomplete" } */
|
|
i ^= ve; /* { dg-error "incomplete" } */
|
|
i |= ve; /* { dg-error "incomplete" } */
|
|
(void) (ve ? 1 : 1); /* { dg-error "incomplete" } */
|
|
(void) (int) ve; /* { dg-error "incomplete" } */
|
|
f0 (ve); /* { dg-error "incomplete" } */
|
|
if (ve) /* { dg-error "incomplete" } */
|
|
;
|
|
do
|
|
;
|
|
while (ve); /* { dg-error "incomplete" } */
|
|
while (ve) /* { dg-error "incomplete" } */
|
|
;
|
|
_Bool b = ve; /* { dg-error "incomplete" } */
|
|
float f = ve; /* { dg-error "incomplete" } */
|
|
switch (ve) /* { dg-error "incomplete" } */
|
|
;
|
|
for (; ve;) /* { dg-error "incomplete" } */
|
|
;
|
|
return ve; /* { dg-error "incomplete" } */
|
|
}
|