100 lines
1.2 KiB
C
100 lines
1.2 KiB
C
/* Test for VLA size evaluation; see PR 35198. */
|
|
/* Origin: Joseph Myers <joseph@codesourcery.com> */
|
|
/* { dg-do run } */
|
|
/* { dg-options "-std=c99" } */
|
|
|
|
extern void exit (int);
|
|
extern void abort (void);
|
|
|
|
int i;
|
|
void *p;
|
|
|
|
void
|
|
f1 (void *x, int j)
|
|
{
|
|
p = (int (*)[++i])x;
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f1c (void *x, int j)
|
|
{
|
|
p = (int (*)[++i]){x};
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f2 (void *x, int j)
|
|
{
|
|
x = (void *)(int (*)[++i])p;
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f2c (void *x, int j)
|
|
{
|
|
x = (void *)(int (*)[++i]){p};
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f3 (void *x, int j)
|
|
{
|
|
(void)(int (*)[++i])p;
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f3c (void *x, int j)
|
|
{
|
|
(void)(int (*)[++i]){p};
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f4 (void *x, int j)
|
|
{
|
|
(int (*)[++i])p;
|
|
(int (*)[++i])p;
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f4c (void *x, int j)
|
|
{
|
|
(int (*)[++i]){p};
|
|
(int (*)[++i]){p};
|
|
if (i != j)
|
|
abort ();
|
|
}
|
|
|
|
void
|
|
f5c (void *x, int j, int k)
|
|
{
|
|
(++i, f3c (x, j), (int (*)[++i]){p});
|
|
if (i != k)
|
|
abort ();
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
f1 (p, 1);
|
|
f2 (p, 2);
|
|
f3 (p, 3);
|
|
f4 (p, 5);
|
|
f1c (p, 6);
|
|
f2c (p, 7);
|
|
f3c (p, 8);
|
|
f4c (p, 10);
|
|
f5c (p, 12, 13);
|
|
exit (0);
|
|
}
|