aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/c23-imaginary-constants-3.c
blob: ee003b2c105390edaeb86b8d2921328123fa1a01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/* Test that imaginary constants are diagnosed in C23 mode: -pedantic.  */
/* { dg-do run } */
/* { dg-options "-std=c23 -pedantic" } */
/* { dg-add-options float32 } */
/* { dg-add-options float64 } */
/* { dg-add-options float32x } */
/* { dg-require-effective-target float32 } */
/* { dg-require-effective-target float32x } */
/* { dg-require-effective-target float64 } */

_Complex _Float32 a = 1.if32;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float32 b = 2.F32j;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float32 c = 3.f32i;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float32 d = 4.JF32;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float64 e = 1.if64;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float64 f = 2.F64j;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float64 g = 3.f64i;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float64 h = 4.JF64;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float32x i = 1.if32x;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float32x j = 2.F32xj;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float32x k = 3.f32xI;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
_Complex _Float32x l = 4.JF32x;	/* { dg-warning "imaginary constants are a C2Y feature or GCC extension" } */
__extension__ _Complex _Float32 m = 1.if32;
__extension__ _Complex _Float32 n = 2.F32j;
__extension__ _Complex _Float32 o = 3.f32i;
__extension__ _Complex _Float32 p = 4.JF32;
__extension__ _Complex _Float64 q = 1.if64;
__extension__ _Complex _Float64 r = 2.F64j;
__extension__ _Complex _Float64 s = 3.f64i;
__extension__ _Complex _Float64 t = 4.JF64;
__extension__ _Complex _Float32x u = 1.if32x;
__extension__ _Complex _Float32x v = 2.F32xj;
__extension__ _Complex _Float32x w = 3.f32xI;
__extension__ _Complex _Float32x x = 4.JF32x;

int
main ()
{
  if (a * a != -1.f32
      || b * b != -4.f32
      || c * c != -9.f32
      || d * d != -16.f32
      || e * e != -1.f64
      || f * f != -4.f64
      || g * g != -9.f64
      || h * h != -16.f64
      || i * i != -1.f32x
      || j * j != -4.f32x
      || k * k != -9.f32x
      || l * l != -16.f32x
      || m * m != -1.f32
      || n * n != -4.f32
      || o * o != -9.f32
      || p * p != -16.f32
      || q * q != -1.f64
      || r * r != -4.f64
      || s * s != -9.f64
      || t * t != -16.f64
      || u * u != -1.f32x
      || v * v != -4.f32x
      || w * w != -9.f32x
      || x * x != -16.f32x)
    __builtin_abort ();
}