PR middle-end/77357 - strlen of constant strings not folded
[official-gcc.git] / gcc / testsuite / gcc.dg / dfp / pragma-float-const-decimal64-8.c
bloba54c9008b9f2de2f7287c83a0a9a57180700c0d9
1 /* { dg-do compile } */
2 /* { dg-options "-Wall" } */
4 /* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
5 C99 6.4.4.2a (New).
7 Pragma STDC FLOAT_CONST_DECIMAL64 "shall occur either outside external
8 declarations or preceding all explicit declarations and statements
9 inside a compound statement." */
11 #pragma STDC FLOAT_CONST_DECIMAL64 OFF
13 #define MAX 200
15 #pragma STDC FLOAT_CONST_DECIMAL64 ON
17 double a;
19 #pragma STDC FLOAT_CONST_DECIMAL64 OFF
21 struct S1 {
22 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
23 int i;
24 int j;
27 struct S2 {
28 int i;
29 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
30 int j;
33 struct S3 {
34 int i;
35 int j;
36 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
39 enum E1 {
40 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
41 one,
42 two
45 enum E2 {
46 red,
47 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
48 blue
51 enum E3 {
52 cat,
53 dog
54 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
57 double
58 #pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-error "#pragma" } */
61 double
62 f1 (void)
64 #pragma STDC FLOAT_CONST_DECIMAL64 ON
65 return a;
68 double
69 f2 (void)
71 double b;
72 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
73 b = 0.5;
74 return a + b;
77 #pragma STDC FLOAT_CONST_DECIMAL64 OFF
79 double
80 f3 (void)
82 typedef double b32;
83 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
84 b32 b = 0.5;
85 return b;
88 double
89 f4 (int i)
91 top:
92 #pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "invalid location" } */
93 if (i == 0)
94 return a;
95 a *= 2.;
96 i = 0;
97 goto top;
100 double
101 f5 (int i)
103 a = a * i;
104 #pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "invalid location" } */
105 return a * 2.;
108 double
109 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
110 f6 (void)
112 return a;
115 double
117 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
118 (void) /* { dg-error "before" } */
120 return a;
123 double
124 f8 (void)
127 #pragma STDC FLOAT_CONST_DECIMAL64 OFF
129 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
130 return a;
133 extern void foo9 (void *);
135 double
136 f9 (void)
138 __label__ here;
139 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
140 foo9 (&&here);
141 here:
142 return a;
145 double
146 f10 (void)
148 void foo10 (void) /* { dg-warning "defined but not used" } */
150 a = 1.0;
152 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
153 return a;
156 double
157 f11 (void)
159 __extension__
160 struct A {
161 struct { char a; };
162 char b;
164 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
165 return a;
168 double
169 f12 (void)
171 __extension__ ({ a = 0.5; });
172 #pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
173 return a;