@@ -231,8 +231,8 @@ int test_unary(int a) {
231231 int b = +a;
232232 range (b); // $ range=<=11 range=>=3
233233 int c = -a;
234- range (c);
235- range (b+c); // $ range=<=10 range="<=+ ...:a-1" range=">=- ...+1"
234+ range (c); // $ range=<=-3 range=>=-11
235+ range (b+c); // $ range=<=10 range="<=+ ...:a-1" range=">=- ...+1" range=>=-10
236236 total += b+c;
237237 range (total);
238238 }
@@ -241,8 +241,8 @@ int test_unary(int a) {
241241 int b = +a;
242242 range (b); // $ range=<=11 range=>=0
243243 int c = -a;
244- range (c);
245- range (b+c); // $ range=<=11 range="<=+ ...:a+0" range=">=- ...+0"
244+ range (c); // $ range=<=0 range=>=-11
245+ range (b+c); // $ range=<=11 range="<=+ ...:a+0" range=">=- ...+0" range=>=-11
246246 total += b+c;
247247 range (total);
248248 }
@@ -251,7 +251,7 @@ int test_unary(int a) {
251251 int b = +a;
252252 range (b); // $ range=<=11 range=>=-7
253253 int c = -a;
254- range (c);
254+ range (c); // $ range=<=7 range=>=-11
255255 range (b+c);
256256 total += b+c;
257257 range (total);
@@ -261,7 +261,7 @@ int test_unary(int a) {
261261 int b = +a;
262262 range (b); // $ range=<=1 range=>=-7
263263 int c = -a;
264- range (c);
264+ range (c); // $ range=<=7 range=>=-1
265265 range (b+c);
266266 total += b+c;
267267 range (total);
@@ -271,8 +271,8 @@ int test_unary(int a) {
271271 int b = +a;
272272 range (b); // $ range=<=0 range=>=-7
273273 int c = -a;
274- range (c);
275- range (b+c); // $ range="<=- ...+0" range=">=+ ...:a+0" range=>=-7
274+ range (c); // $ range=<=7 range=>=0
275+ range (b+c); // $ range="<=- ...+0" range=">=+ ...:a+0" range=>=-7 range=<=7
276276 total += b+c;
277277 range (total);
278278 }
@@ -281,8 +281,8 @@ int test_unary(int a) {
281281 int b = +a;
282282 range (b); // $ range=<=-2 range=>=-7
283283 int c = -a;
284- range (c);
285- range (b+c); // $ range="<=- ...-1" range=">=+ ...:a+1" range=>=-6
284+ range (c); // $ range=<=7 range=>=2
285+ range (b+c); // $ range="<=- ...-1" range=">=+ ...:a+1" range=>=-6 range=<=6
286286 total += b+c;
287287 range (total);
288288 }
@@ -552,7 +552,7 @@ int test16(int x) {
552552 range (x); // $ range=<=-1 range=>=0
553553 return 1 ;
554554 }
555- range (d); // $ range===3
555+ range (d); // $ range=<=0 range=>=3 // Unreachable code
556556 range (x); // $ range=<=-1 range=>=0
557557 }
558558 range (x); // $ range=>=0
@@ -997,3 +997,15 @@ void test_overflow() {
997997 range (x + y); // $ range===-2147483393
998998 }
999999}
1000+
1001+ void test_negate_unsigned (unsigned u) {
1002+ if (10 < u && u < 20 ) {
1003+ range<unsigned >(-u); // underflows
1004+ }
1005+ }
1006+
1007+ void test_negate_signed (int s) {
1008+ if (10 < s && s < 20 ) {
1009+ range<int >(-s); // $ range=<=-11 range=>=-19
1010+ }
1011+ }
0 commit comments