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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [gnu90-const-expr-1.c] - Blame information for rev 708

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

Line No. Rev Author Line
1 689 jeremybenn
/* Test for constant expressions: GNU extensions.  */
2
/* Origin: Joseph Myers <joseph@codesourcery.com> */
3
/* { dg-do compile } */
4
/* { dg-options "-std=gnu90 -pedantic-errors" } */
5
 
6
int n;
7
 
8
void
9
f (void)
10
{
11
  int i = 0;
12
  int a[n]; /* { dg-error "ISO C90 forbids variable length array" } */
13
  enum e1 {
14
    /* Integer constant expressions may not contain statement
15
       expressions (not a permitted operand).  */
16
    E1 = (1 ? 0 : ({ 0; })), /* { dg-error "constant expression" } */
17
    /* { dg-error "ISO C forbids braced-groups" "ISO" { target *-*-* } 16 } */
18
    /* Real and imaginary parts act like other arithmetic
19
       operators.  */
20
    E2 = __real__ (1 ? 0 : i++), /* { dg-error "constant expression" } */
21
    E3 = __real__ 0,
22
    E4 = __imag__ (1 ? 0 : i++), /* { dg-error "constant" } */
23
    E5 = __imag__ 0,
24
    /* __alignof__ always constant.  */
25
    E6 = __alignof__ (int[n]), /* { dg-error "ISO C90 forbids variable length array" } */
26
    E7 = __alignof__ (a), /* { dg-error "__alignof__ \\(expression\\)" } */
27
    /* __extension__ ignored for constant expression purposes.  */
28
    E8 = __extension__ (1 ? 0 : i++), /* { dg-error "constant expression" } */
29
    E9 = __extension__ 0,
30
    /* Conditional expressions with omitted arguments act like the
31
       standard type.  */
32
    E10 = (1 ? : i++), /* { dg-error "constant expression" } */
33
    /* { dg-error "ISO C forbids omitting" "ISO" { target *-*-* } 32 } */
34
    E11 = (1 ? : 0) /* { dg-error "ISO C forbids omitting" } */
35
  };
36
  enum e2 {
37
    /* Complex integer constants may be cast directly to integer
38
       types, but not after further arithmetic on them.  */
39
    F1 = (int) (_Complex int) 2i, /* { dg-error "constant expression" } */
40
    /* { dg-error "complex" "complex" { target *-*-* } 39 } */
41
    /* { dg-error "imaginary" "imaginary" { target *-*-* } 39 } */
42
    F2 = (int) +2i, /* { dg-error "constant expression" } */
43
    /* { dg-error "imaginary" "ISO" { target *-*-* } 42 } */
44
    F3 = (int) (1 + 2i), /* { dg-error "constant expression" } */
45
    /* { dg-error "imaginary" "ISO" { target *-*-* } 44 } */
46
    F4 = (int) 2i /* { dg-error "imaginary" } */
47
  };
48
  static double dr = __real__ (1.0 + 2.0i);
49
  /* { dg-error "imaginary" "ISO" { target *-*-* } 48 } */
50
  static double di = __imag__ (1.0 + 2.0i);
51
  /* { dg-error "imaginary" "ISO" { target *-*-* } 50 } */
52
  /* Statement expressions allowed in unevaluated subexpressions in
53
     initializers in gnu99 but not gnu89.  */
54
  static int j = (1 ? 0 : ({ 0; })); /* { dg-error "constant expression" } */
55
  /* { dg-error "braced" "ISO" { target *-*-* } 54 } */
56
}

powered by: WebSVN 2.1.0

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