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