Simon Friis Vindum
e9f2a8b017
C++: Extend nested ternary test with two more terms in the addition
2025-01-13 13:54:05 +01:00
Simon Friis Vindum
847f3f1fc2
C++: Add test for nested ternary expressions of literals
2025-01-13 12:08:50 +01:00
Anders Fugmann
d7afd86a27
C++: Add test case exposing problem with overflows for upperBound predicate
2021-09-24 11:44:05 +02:00
Anders Fugmann
6c44b0e6e7
C++: Add test case where a guarded block has two predecessors which are both in the dominance domain of the guard
2021-09-09 13:18:49 +02:00
Anders Fugmann
c110508b4e
C++: Add tests to expose potential improvements available to SimpleRangeAnalysis
2021-09-02 21:20:33 +02:00
Mathias Vorreiter Pedersen
39d9395bc3
C++: Fix off-by-one in range analysis for 'RemExpr'.
2021-07-16 16:35:19 +02:00
Mathias Vorreiter Pedersen
81aa115838
C++: Fix range analysis bug for 'RemExpr'.
2021-07-16 16:28:08 +02:00
Mathias Vorreiter Pedersen
dc2eea59a3
C++: Add buggy testcase with 'RemExpr'.
2021-07-16 16:27:09 +02:00
Jonas Jensen
0459248b9f
Merge remote-tracking branch 'upstream/main' into SimpleRangeAnalysis-guard-overflow
2020-10-12 14:32:29 +02:00
Jonas Jensen
bbeea452e1
C++: Add test with widening of binary Expr
2020-10-12 11:08:41 +02:00
Jonas Jensen
1d9acbfca9
C++: Demonstrate overflowing guard bounds
2020-10-06 15:31:34 +02:00
Jonas Jensen
ad11f76ec6
C++: Always normalize bounds after a computation
...
This stops some cases of `-0.0` from propagating through the range
analysis, fixing a false positive on arvidn/libtorrent.
There seems to be no need for a corresponding change in the caller of
`getDefLowerBoundsImpl` since that predicate only contains computations
that cannot introduce negative zero.
2020-09-11 11:59:00 +02:00
Jonas Jensen
911dec6f86
C++: SimpleRangeAnalysis (bool)x and !x support
2020-09-08 16:59:35 +02:00
Jonas Jensen
1b6da062cf
C++: RangeAnalysis tests for bool conversions
2020-09-08 16:58:35 +02:00
Jonas Jensen
fbe42fb64c
C++: Support != constant in range analysis
2020-09-04 09:20:23 +02:00
Jonas Jensen
d061b09fe0
C++: Test showing no support for != and !
2020-09-04 09:02:42 +02:00
Jonas Jensen
023f2e97c1
C++: Really accept test results this time
2020-08-28 16:50:23 +02:00
Jonas Jensen
b1c0e6f626
Merge remote-tracking branch 'upstream/main' into SimpleRangeAnalysis-mul-constant
2020-08-20 08:20:31 +02:00
Jonas Jensen
21d16d13fc
Merge remote-tracking branch 'upstream/main' into SimpleRangeAnalysis-AssignMulExpr
2020-08-19 14:50:40 +02:00
Jonas Jensen
83884c0dc5
Merge pull request #4089 from jbj/jbj/printFloat-precise
...
C++: Accept float.toString changes in tests
2020-08-19 12:58:27 +02:00
Jonas Jensen
b316644ac2
C++: SimpleRangeAnalysis for *= by constant
2020-08-18 15:07:20 +02:00
Jonas Jensen
b6b72729f6
C++: SimpleRangeAnalysis for MulExpr by constant
2020-08-18 11:37:59 +02:00
Jonas Jensen
e03fe81ce7
C++: Accept float.toString changes in tests
2020-08-17 15:07:00 +02:00
Jonas Jensen
fe72b559d3
C++: Range analysis for unsigned AssignMulExpr
...
This is essentially a copy-paste job of `AssignAddExpr`, together with
the math from the `UnsignedMulExpr` support.
2020-08-14 14:19:54 +02:00
Jonas Jensen
f90d779122
C++: Fix SimpleRangeAnalysis for AssignOperation
...
The range analysis wasn't producing useful bounds for `AssignOperation`s
(`+=`, `-=`) unless their RHS involved a variable. This is because a
shortcut was made in the `analyzableDef` predicate, which used to
specify that an analyzable definition was one for which we'd specified
the dependencies. But we can't distinguish between having _no
dependencies_ and having _no specification of the dependencies_.
The fix is to be more explicit about which definitions are analyzable.
To avoid too much repetition I'm still calling out to `analyzableExpr`
in the new code.
2020-08-14 14:15:58 +02:00
Jonas Jensen
93d8d8eb1d
C++: Demonstrate range analysis MulExpr bugs
...
Unless these issues can be reproduced in far less contrived code, I
don't think they will cause problems in practice.
2020-08-12 12:10:23 +02:00
Jonas Jensen
1ee96a4b4f
C++: SimpleRangeAnalysis: unsigned multiplication
2020-08-12 10:03:04 +02:00
Jonas Jensen
2ea25b9d90
C++: Precise printing of integer bounds
...
The pretty-printing of a QL `float` didn't include enough digits to tell
whether a large number had accurate bounds. The `toString` value of a
float appears to be more precise.
2020-08-11 16:48:01 +02:00
Mathias Vorreiter Pedersen
834ad92453
C++: Add test cases for unsigned multiplication and fix missing return value in existing tests
2020-07-14 16:57:47 +02:00
Geoffrey White
574a1d8501
Merge pull request #1037 from kevinbackhouse/RangeAnalysisAssignAddOverflow
...
Better overflow detection for AssignAdd/AssignSub
2019-05-29 09:54:06 +01:00
Geoffrey White
d2f386ccb7
CPP: Effect of changes on tests.
2019-05-01 15:56:44 +01:00
Geoffrey White
19e6b238b7
CPP: Add test cases.
2019-05-01 15:43:06 +01:00
Jonas Jensen
ad61b4f55e
C++: Add test to demonstrate use-after-cast bugs
2019-03-27 10:48:34 +01:00
Robert Marsh
a06a20dbab
C++: move SimpleRangeAnalysis tests
2019-01-08 09:34:23 -08:00