Skip to content

Commit 0c8e06b

Browse files
committed
C++: Tests for -0.0 in range analysis
1 parent d60b7c7 commit 0c8e06b

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,7 @@
5050
| PointlessComparison.cpp:43:6:43:29 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327.5. |
5151
| PointlessComparison.cpp:44:6:44:28 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327.5. |
5252
| RegressionTests.cpp:57:7:57:22 | ... <= ... | Comparison is always true because * ... <= 4294967295. |
53+
| RegressionTests.cpp:89:7:89:14 | ... == ... | Comparison is always false because val <= -0. |
54+
| RegressionTests.cpp:107:7:107:14 | ... == ... | Comparison is always false because val <= -0. |
55+
| RegressionTests.cpp:116:7:116:14 | ... == ... | Comparison is always false because val <= -0. |
5356
| Templates.cpp:9:10:9:24 | ... <= ... | Comparison is always true because local <= 32767. |

cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/RegressionTests.cpp

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,40 @@ int containsIfDef(int x) {
7979
#endif
8080

8181
return result >= 0;
82-
}
82+
}
83+
84+
void negativeZero1(int val) {
85+
if (val >= 0)
86+
{
87+
val = -val;
88+
}
89+
if (val == 0) // GOOD [FALSE POSITIVE]
90+
;
91+
}
92+
93+
void negativeZero2(int val) {
94+
if (val >= 0)
95+
{
96+
val = 0 - val;
97+
}
98+
if (val == 0) // GOOD
99+
;
100+
}
101+
102+
void negativeZero3(int val) {
103+
if (val >= 0)
104+
{
105+
val *= -1;
106+
}
107+
if (val == 0) // GOOD [FALSE POSITIVE]
108+
;
109+
}
110+
111+
void negativeZero4(int val) {
112+
if (val >= 0)
113+
{
114+
val = val * -1;
115+
}
116+
if (val == 0) // GOOD [FALSE POSITIVE]
117+
;
118+
}

0 commit comments

Comments
 (0)