OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [vla-4.c] - Rev 801

Go to most recent revision | Compare with Previous | Blame | View Log

/* { dg-do run } */
/* { dg-options "-std=c99 -pedantic-errors" } */
/* PR c/18740 */
 
static int i;
 
int foo(int n)
{
  int (*t)[n];
  i = 0;
  int j = 0;
  char b[1][n+3];			/* Variable length array.  */
  int d[3][n];				/* Variable length array.  */
  sizeof (b[i++ + sizeof(j++)]);	/* Outer sizeof is evaluated for vla, but not the inner one.  */
  if (i != 1 || j != 0)
    return 1;
  __typeof__(b[i++]) c1;		/* typeof is evauluated when given a vm */
  if (i != 2)
    return 1;
  __typeof__(t + (i++,0)) c2;		/* typeof is evauluated when given a vm */
  if (i != 3)
    return 1;
  __typeof__(i + (i++,0)) c3;		/* typeof is not evauluated when not given a vm */
  if (i != 3)
    return 1;
  sizeof (d[i++]);			/* sizeof is evaluated for vla.  */
  if (i != 4)
    return 1;
  __alignof__(__typeof__(t + (i++,0)));	/* typeof is not evauluated when given a vm inside alignof*/
  if (i != 4)
    return 1;
  sizeof(__typeof__(t + (i++,0)));	/* typeof is not evauluated when given a vm inside sizeof*/
  if (i != 4)
    return 1;
  return 0;
}
 
int foo6(int a, int b[a][a], int (*c)[sizeof(*b)]) {
  return sizeof (*c);
}
 
int main() {
  int b[10][10];
  int (*c)[sizeof(int)*10];
  if (foo6(10, b, c) != 10*sizeof(int)*sizeof(int))
    return 1;
  return foo(10);
}
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.