Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/plugin/diagnostic-test-expressions-1.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
17 | 17 |
18 extern void __emit_expression_range (int dummy, ...); | 18 extern void __emit_expression_range (int dummy, ...); |
19 | 19 |
20 int global; | 20 int global; |
21 | 21 |
22 void test_global (void) | |
23 { | |
24 __emit_expression_range (0, global); /* { dg-warning "range" } */ | |
25 /* { dg-begin-multiline-output "" } | |
26 __emit_expression_range (0, global); | |
27 ^~~~~~ | |
28 { dg-end-multiline-output "" } */ | |
29 } | |
30 | |
31 void test_param (int param) | |
32 { | |
33 __emit_expression_range (0, param); /* { dg-warning "range" } */ | |
34 /* { dg-begin-multiline-output "" } | |
35 __emit_expression_range (0, param); | |
36 ^~~~~ | |
37 { dg-end-multiline-output "" } */ | |
38 } | |
39 | |
40 void test_local (void) | |
41 { | |
42 int local = 5; | |
43 | |
44 __emit_expression_range (0, local); /* { dg-warning "range" } */ | |
45 /* { dg-begin-multiline-output "" } | |
46 __emit_expression_range (0, local); | |
47 ^~~~~ | |
48 { dg-end-multiline-output "" } */ | |
49 } | |
50 | |
51 void test_integer_constants (void) | |
52 { | |
53 __emit_expression_range (0, 1234); /* { dg-warning "range" } */ | |
54 /* { dg-begin-multiline-output "" } | |
55 __emit_expression_range (0, 1234); | |
56 ^~~~ | |
57 { dg-end-multiline-output "" } */ | |
58 | |
59 /* Ensure that zero works. */ | |
60 | |
61 __emit_expression_range (0, 0); /* { dg-warning "range" } */ | |
62 /* { dg-begin-multiline-output "" } | |
63 __emit_expression_range (0, 0); | |
64 ^ | |
65 { dg-end-multiline-output "" } */ | |
66 } | |
67 | |
68 void test_character_constants (void) | |
69 { | |
70 __emit_expression_range (0, 'a'); /* { dg-warning "range" } */ | |
71 /* { dg-begin-multiline-output "" } | |
72 __emit_expression_range (0, 'a'); | |
73 ^~~ | |
74 { dg-end-multiline-output "" } */ | |
75 } | |
76 | |
77 void test_floating_constants (void) | |
78 { | |
79 __emit_expression_range (0, 98.6); /* { dg-warning "range" } */ | |
80 /* { dg-begin-multiline-output "" } | |
81 __emit_expression_range (0, 98.6); | |
82 ^~~~ | |
83 { dg-end-multiline-output "" } */ | |
84 | |
85 __emit_expression_range (0, .6); /* { dg-warning "range" } */ | |
86 /* { dg-begin-multiline-output "" } | |
87 __emit_expression_range (0, .6); | |
88 ^~ | |
89 { dg-end-multiline-output "" } */ | |
90 | |
91 __emit_expression_range (0, 98.); /* { dg-warning "range" } */ | |
92 /* { dg-begin-multiline-output "" } | |
93 __emit_expression_range (0, 98.); | |
94 ^~~ | |
95 { dg-end-multiline-output "" } */ | |
96 | |
97 __emit_expression_range (0, 6.022140857e23 ); /* { dg-warning "range" } */ | |
98 /* { dg-begin-multiline-output "" } | |
99 __emit_expression_range (0, 6.022140857e23 ); | |
100 ^~~~~~~~~~~~~~ | |
101 { dg-end-multiline-output "" } */ | |
102 | |
103 __emit_expression_range (0, 98.6f ); /* { dg-warning "range" } */ | |
104 /* { dg-begin-multiline-output "" } | |
105 __emit_expression_range (0, 98.6f ); | |
106 ^~~~~ | |
107 { dg-end-multiline-output "" } */ | |
108 | |
109 __emit_expression_range (0, 6.022140857e23l ); /* { dg-warning "range" } */ | |
110 /* { dg-begin-multiline-output "" } | |
111 __emit_expression_range (0, 6.022140857e23l ); | |
112 ^~~~~~~~~~~~~~~ | |
113 { dg-end-multiline-output "" } */ | |
114 } | |
115 | |
116 enum test_enum { | |
117 TEST_ENUM_VALUE | |
118 }; | |
119 | |
120 void test_enumeration_constant (void) | |
121 { | |
122 __emit_expression_range (0, TEST_ENUM_VALUE ); /* { dg-warning "range" } */ | |
123 /* { dg-begin-multiline-output "" } | |
124 __emit_expression_range (0, TEST_ENUM_VALUE ); | |
125 ^~~~~~~~~~~~~~~ | |
126 { dg-end-multiline-output "" } */ | |
127 } | |
128 | |
22 void test_parentheses (int a, int b) | 129 void test_parentheses (int a, int b) |
23 { | 130 { |
24 __emit_expression_range (0, (a + b) ); /* { dg-warning "range" } */ | 131 __emit_expression_range (0, (a + b) ); /* { dg-warning "range" } */ |
25 /* { dg-begin-multiline-output "" } | 132 /* { dg-begin-multiline-output "" } |
26 __emit_expression_range (0, (a + b) ); | 133 __emit_expression_range (0, (a + b) ); |
64 struct test_struct | 171 struct test_struct |
65 { | 172 { |
66 int field; | 173 int field; |
67 }; | 174 }; |
68 | 175 |
69 int test_structure_references (struct test_struct *ptr) | 176 void test_structure_references (struct test_struct *ptr) |
70 { | 177 { |
71 struct test_struct local; | 178 struct test_struct local; |
72 local.field = 42; | 179 local.field = 42; |
73 | 180 |
74 __emit_expression_range (0, local.field ); /* { dg-warning "range" } */ | 181 __emit_expression_range (0, local.field ); /* { dg-warning "range" } */ |
82 __emit_expression_range (0, ptr->field ); | 189 __emit_expression_range (0, ptr->field ); |
83 ~~~~~^~~~~ | 190 ~~~~~^~~~~ |
84 { dg-end-multiline-output "" } */ | 191 { dg-end-multiline-output "" } */ |
85 } | 192 } |
86 | 193 |
87 int test_postfix_incdec (int i) | 194 void test_postfix_incdec (int i) |
88 { | 195 { |
89 __emit_expression_range (0, i++ ); /* { dg-warning "range" } */ | 196 __emit_expression_range (0, i++ ); /* { dg-warning "range" } */ |
90 /* { dg-begin-multiline-output "" } | 197 /* { dg-begin-multiline-output "" } |
91 __emit_expression_range (0, i++ ); | 198 __emit_expression_range (0, i++ ); |
92 ~^~ | 199 ~^~ |
99 { dg-end-multiline-output "" } */ | 206 { dg-end-multiline-output "" } */ |
100 } | 207 } |
101 | 208 |
102 /* Unary operators. ****************************************************/ | 209 /* Unary operators. ****************************************************/ |
103 | 210 |
104 int test_sizeof (int i) | 211 void test_sizeof (int i) |
105 { | 212 { |
106 __emit_expression_range (0, sizeof(int) + i); /* { dg-warning "range" } */ | 213 __emit_expression_range (0, sizeof i ); /* { dg-warning "range" } */ |
107 /* { dg-begin-multiline-output "" } | 214 /* { dg-begin-multiline-output "" } |
108 __emit_expression_range (0, sizeof(int) + i); | 215 __emit_expression_range (0, sizeof i ); |
109 ~~~~~~~~~~~~^~~ | 216 ^~~~~~~~ |
110 { dg-end-multiline-output "" } */ | 217 { dg-end-multiline-output "" } */ |
111 | 218 |
112 __emit_expression_range (0, i + sizeof(int)); /* { dg-warning "range" } */ | 219 __emit_expression_range (0, sizeof (char) ); /* { dg-warning "range" } */ |
113 /* { dg-begin-multiline-output "" } | 220 /* { dg-begin-multiline-output "" } |
114 __emit_expression_range (0, i + sizeof(int)); | 221 __emit_expression_range (0, sizeof (char) ); |
115 ~~^~~~~~~~~~~~~ | 222 ^~~~~~~~~~~~~ |
116 { dg-end-multiline-output "" } */ | 223 { dg-end-multiline-output "" } */ |
117 | 224 } |
118 __emit_expression_range (0, sizeof i + i); /* { dg-warning "range" } */ | 225 |
119 /* { dg-begin-multiline-output "" } | 226 void test_alignof (int i) |
120 __emit_expression_range (0, sizeof i + i); | 227 { |
121 ~~~~~~~~~^~~ | 228 __emit_expression_range (0, alignof(int)); /* { dg-warning "range" } */ |
122 { dg-end-multiline-output "" } */ | 229 /* { dg-begin-multiline-output "" } |
123 | 230 __emit_expression_range (0, alignof(int)); |
124 __emit_expression_range (0, i + sizeof i); /* { dg-warning "range" } */ | 231 ^~~~~~~~~~~~ |
125 /* { dg-begin-multiline-output "" } | 232 { dg-end-multiline-output "" } */ |
126 __emit_expression_range (0, i + sizeof i); | 233 |
127 ~~^~~~~~~~~~ | 234 __emit_expression_range (0, __alignof__(int)); /* { dg-warning "range" } */ |
128 { dg-end-multiline-output "" } */ | 235 /* { dg-begin-multiline-output "" } |
129 } | 236 __emit_expression_range (0, __alignof__(int)); |
130 | 237 ^~~~~~~~~~~~~~~~ |
131 int test_alignof (int i) | 238 { dg-end-multiline-output "" } */ |
132 { | 239 __emit_expression_range (0, __alignof__ i); /* { dg-warning "range" } */ |
133 __emit_expression_range (0, alignof(int) + i); /* { dg-warning "range" } */ | 240 /* { dg-begin-multiline-output "" } |
134 /* { dg-begin-multiline-output "" } | 241 __emit_expression_range (0, __alignof__ i); |
135 __emit_expression_range (0, alignof(int) + i); | 242 ^~~~~~~~~~~~~ |
136 ~~~~~~~~~~~~~^~~ | 243 { dg-end-multiline-output "" } */ |
137 { dg-end-multiline-output "" } */ | 244 } |
138 | 245 |
139 __emit_expression_range (0, i + alignof(int)); /* { dg-warning "range" } */ | 246 void test_prefix_incdec (int i) |
140 /* { dg-begin-multiline-output "" } | |
141 __emit_expression_range (0, i + alignof(int)); | |
142 ~~^~~~~~~~~~~~~~ | |
143 { dg-end-multiline-output "" } */ | |
144 | |
145 __emit_expression_range (0, __alignof__(int) + i); /* { dg-warning "range" } */ | |
146 /* { dg-begin-multiline-output "" } | |
147 __emit_expression_range (0, __alignof__(int) + i); | |
148 ~~~~~~~~~~~~~~~~~^~~ | |
149 { dg-end-multiline-output "" } */ | |
150 | |
151 __emit_expression_range (0, i + __alignof__(int)); /* { dg-warning "range" } */ | |
152 /* { dg-begin-multiline-output "" } | |
153 __emit_expression_range (0, i + __alignof__(int)); | |
154 ~~^~~~~~~~~~~~~~~~~~ | |
155 { dg-end-multiline-output "" } */ | |
156 | |
157 __emit_expression_range (0, __alignof__ i + i); /* { dg-warning "range" } */ | |
158 /* { dg-begin-multiline-output "" } | |
159 __emit_expression_range (0, __alignof__ i + i); | |
160 ~~~~~~~~~~~~~~^~~ | |
161 { dg-end-multiline-output "" } */ | |
162 | |
163 __emit_expression_range (0, i + __alignof__ i); /* { dg-warning "range" } */ | |
164 /* { dg-begin-multiline-output "" } | |
165 __emit_expression_range (0, i + __alignof__ i); | |
166 ~~^~~~~~~~~~~~~~~ | |
167 { dg-end-multiline-output "" } */ | |
168 } | |
169 | |
170 int test_prefix_incdec (int i) | |
171 { | 247 { |
172 __emit_expression_range (0, ++i ); /* { dg-warning "range" } */ | 248 __emit_expression_range (0, ++i ); /* { dg-warning "range" } */ |
173 /* { dg-begin-multiline-output "" } | 249 /* { dg-begin-multiline-output "" } |
174 __emit_expression_range (0, ++i ); | 250 __emit_expression_range (0, ++i ); |
175 ^~~ | 251 ^~~ |
198 __emit_expression_range (0, *ptr ); | 274 __emit_expression_range (0, *ptr ); |
199 ^~~~ | 275 ^~~~ |
200 { dg-end-multiline-output "" } */ | 276 { dg-end-multiline-output "" } */ |
201 } | 277 } |
202 | 278 |
279 void test_unary_plus (int i) | |
280 { | |
281 __emit_expression_range (0, +i ); /* { dg-warning "range" } */ | |
282 /* { dg-begin-multiline-output "" } | |
283 __emit_expression_range (0, +i ); | |
284 ^~ | |
285 { dg-end-multiline-output "" } */ | |
286 } | |
287 | |
203 void test_unary_minus (int i) | 288 void test_unary_minus (int i) |
204 { | 289 { |
205 __emit_expression_range (0, -i ); /* { dg-warning "range" } */ | 290 __emit_expression_range (0, -i ); /* { dg-warning "range" } */ |
206 /* { dg-begin-multiline-output "" } | 291 /* { dg-begin-multiline-output "" } |
207 __emit_expression_range (0, -i ); | 292 __emit_expression_range (0, -i ); |
469 { dg-end-multiline-output "" } */ | 554 { dg-end-multiline-output "" } */ |
470 } | 555 } |
471 | 556 |
472 /* Literals. **************************************************/ | 557 /* Literals. **************************************************/ |
473 | 558 |
474 /* We can't test the ranges of literals directly, since the underlying | 559 void test_string_literals () |
475 tree nodes don't retain a location. However, we can test that they | 560 { |
476 have ranges during parsing by building compound expressions using | 561 __emit_expression_range (0, "0123456789"); /* { dg-warning "range" } */ |
477 them, and verifying the ranges of the compound expressions. */ | 562 /* { dg-begin-multiline-output "" } |
478 | 563 __emit_expression_range (0, "0123456789"); |
479 void test_string_literals (int i) | |
480 { | |
481 __emit_expression_range (0, "foo"[i] ); /* { dg-warning "range" } */ | |
482 /* { dg-begin-multiline-output "" } | |
483 __emit_expression_range (0, "foo"[i] ); | |
484 ~~~~~~~^ | |
485 { dg-end-multiline-output "" } */ | |
486 | |
487 __emit_expression_range (0, &"foo" "bar" ); /* { dg-warning "range" } */ | |
488 /* { dg-begin-multiline-output "" } | |
489 __emit_expression_range (0, &"foo" "bar" ); | |
490 ^~~~~~~~~~~~ | 564 ^~~~~~~~~~~~ |
491 { dg-end-multiline-output "" } */ | 565 { dg-end-multiline-output "" } */ |
566 | |
567 __emit_expression_range (0, "foo" "bar" ); /* { dg-warning "range" } */ | |
568 /* { dg-begin-multiline-output "" } | |
569 __emit_expression_range (0, "foo" "bar" ); | |
570 ^~~~~~~~~~~ | |
571 { dg-end-multiline-output "" } */ | |
492 } | 572 } |
493 | 573 |
494 void test_numeric_literals (int i) | 574 void test_numeric_literals (int i) |
495 { | 575 { |
496 __emit_expression_range (0, 42 + i ); /* { dg-warning "range" } */ | 576 __emit_expression_range (0, 42 ); /* { dg-warning "range" } */ |
497 /* { dg-begin-multiline-output "" } | 577 /* { dg-begin-multiline-output "" } |
498 __emit_expression_range (0, 42 + i ); | 578 __emit_expression_range (0, 42 ); |
499 ~~~^~~ | 579 ^~ |
500 { dg-end-multiline-output "" } */ | |
501 | |
502 __emit_expression_range (0, i + 42 ); /* { dg-warning "range" } */ | |
503 /* { dg-begin-multiline-output "" } | |
504 __emit_expression_range (0, i + 42 ); | |
505 ~~^~~~ | |
506 { dg-end-multiline-output "" } */ | 580 { dg-end-multiline-output "" } */ |
507 | 581 |
508 /* Verify locations of negative literals (via folding of | 582 /* Verify locations of negative literals (via folding of |
509 unary negation). */ | 583 unary negation). */ |
510 | 584 |
511 __emit_expression_range (0, -42 + i ); /* { dg-warning "range" } */ | 585 __emit_expression_range (0, -42 ); /* { dg-warning "range" } */ |
512 /* { dg-begin-multiline-output "" } | 586 /* { dg-begin-multiline-output "" } |
513 __emit_expression_range (0, -42 + i ); | 587 __emit_expression_range (0, -42 ); |
514 ~~~~^~~ | 588 ^~~ |
515 { dg-end-multiline-output "" } */ | |
516 | |
517 __emit_expression_range (0, i + -42 ); /* { dg-warning "range" } */ | |
518 /* { dg-begin-multiline-output "" } | |
519 __emit_expression_range (0, i + -42 ); | |
520 ~~^~~~~ | |
521 { dg-end-multiline-output "" } */ | 589 { dg-end-multiline-output "" } */ |
522 | 590 |
523 __emit_expression_range (0, i ? 0 : -1 ); /* { dg-warning "range" } */ | 591 __emit_expression_range (0, i ? 0 : -1 ); /* { dg-warning "range" } */ |
524 /* { dg-begin-multiline-output "" } | 592 /* { dg-begin-multiline-output "" } |
525 __emit_expression_range (0, i ? 0 : -1 ); | 593 __emit_expression_range (0, i ? 0 : -1 ); |
636 | 704 |
637 struct s { int i; float f; }; | 705 struct s { int i; float f; }; |
638 | 706 |
639 void test_builtin_offsetof (int i) | 707 void test_builtin_offsetof (int i) |
640 { | 708 { |
641 __emit_expression_range (0, i + __builtin_offsetof (struct s, f) ); /* { dg-warning "range" } */ | 709 __emit_expression_range (0, __builtin_offsetof (struct s, f) ); /* { dg-warning "range" } */ |
642 /* { dg-begin-multiline-output "" } | 710 /* { dg-begin-multiline-output "" } |
643 __emit_expression_range (0, i + __builtin_offsetof (struct s, f) ); | 711 __emit_expression_range (0, __builtin_offsetof (struct s, f) ); |
644 ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 712 ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ |
645 { dg-end-multiline-output "" } */ | |
646 | |
647 __emit_expression_range (0, __builtin_offsetof (struct s, f) + i ); /* { dg-warning "range" } */ | |
648 /* { dg-begin-multiline-output "" } | |
649 __emit_expression_range (0, __builtin_offsetof (struct s, f) + i ); | |
650 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ | |
651 { dg-end-multiline-output "" } */ | 713 { dg-end-multiline-output "" } */ |
652 } | 714 } |
653 | 715 |
654 /* Examples of non-trivial expressions. ****************************/ | 716 /* Examples of non-trivial expressions. ****************************/ |
655 | 717 |
854 class type_info { public: int foo; }; | 916 class type_info { public: int foo; }; |
855 } | 917 } |
856 | 918 |
857 void test_typeid (int i) | 919 void test_typeid (int i) |
858 { | 920 { |
859 __emit_expression_range (0, &typeid(i)); /* { dg-warning "range" } */ | 921 __emit_expression_range (0, typeid(i)); /* { dg-warning "range" } */ |
860 /* { dg-begin-multiline-output "" } | 922 /* { dg-begin-multiline-output "" } |
861 __emit_expression_range (0, &typeid(i)); | 923 __emit_expression_range (0, typeid(i)); |
862 ^~~~~~~~~~ | 924 ^~~~~~~~~ |
863 { dg-end-multiline-output "" } */ | 925 { dg-end-multiline-output "" } */ |
864 | 926 |
865 __emit_expression_range (0, &typeid(int)); /* { dg-warning "range" } */ | 927 __emit_expression_range (0, typeid(int)); /* { dg-warning "range" } */ |
866 /* { dg-begin-multiline-output "" } | 928 /* { dg-begin-multiline-output "" } |
867 __emit_expression_range (0, &typeid(int)); | 929 __emit_expression_range (0, typeid(int)); |
868 ^~~~~~~~~~~~ | 930 ^~~~~~~~~~~ |
869 { dg-end-multiline-output "" } */ | 931 { dg-end-multiline-output "" } */ |
870 | 932 |
871 __emit_expression_range (0, &typeid(i * 2)); /* { dg-warning "range" } */ | 933 __emit_expression_range (0, typeid(i * 2)); /* { dg-warning "range" } */ |
872 /* { dg-begin-multiline-output "" } | 934 /* { dg-begin-multiline-output "" } |
873 __emit_expression_range (0, &typeid(i * 2)); | 935 __emit_expression_range (0, typeid(i * 2)); |
874 ^~~~~~~~~~~~~~ | 936 ^~~~~~~~~~~~~ |
875 { dg-end-multiline-output "" } */ | |
876 | |
877 __emit_expression_range (0, typeid(int).foo); /* { dg-warning "range" } */ | |
878 /* { dg-begin-multiline-output "" } | |
879 __emit_expression_range (0, typeid(int).foo); | |
880 ~~~~~~~~~~~~^~~ | |
881 { dg-end-multiline-output "" } */ | 937 { dg-end-multiline-output "" } */ |
882 } | 938 } |
883 | 939 |
884 /* Various tests of locations involving macros. */ | 940 /* Various tests of locations involving macros. */ |
885 | 941 |