Dave Bartolomeo
9922958bf1
C++: Fix failed tests
...
Added a new `StaticLocalVariable` class, which made several other pieces of the original change a bit cleaner.
Fixed test failures due to a mistake in the original `CFG.qll` change.
Added a test case for static local variables with constructors.
Removed the `Uninitialized` instruction from the initialization of a static local, because all objects with static storage duration are zero-initialized at startup.
Fixed expectations for `SignAnalysis.ql` to reflect that a bad result is now fixed.
2020-03-13 06:46:07 -04:00
Jonas Jensen
cc38abd228
C++: Ignore constant static initializers
2020-03-06 15:05:28 +01:00
Mathias Vorreiter Pedersen
19e1d82708
Merge pull request #2686 from jbj/ir-crement-load
...
C++: Move the LoadInstruction from `++` to `e` in `e++`.
2020-02-06 11:53:55 +01:00
Jonas Jensen
91927c9039
Merge remote-tracking branch 'upstream/master' into ir-crement-load
...
Conflicts:
cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected
cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir_unsound.expected
cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir.expected
cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir_unsound.expected
2020-02-06 08:37:09 +01:00
Cornelius Riemenschneider
7f7cc7bece
Include test output for the fixed test.
2020-02-05 22:33:26 +01:00
Cornelius Riemenschneider
c941348fea
Fix test so it actually shows up in the test output.
2020-02-05 22:29:44 +01:00
Robert Marsh
eafd7b6045
C++: accept test output
2020-02-03 15:27:34 -08:00
Cornelius Riemenschneider
36479d3fd6
Support to keep bounds derived on implicit integer casts.
2020-02-03 17:33:06 +01:00
Cornelius Riemenschneider
cf8efbb5a0
Add testcase.
2020-02-03 17:23:24 +01:00
Jonas Jensen
4a77f2b53c
Merge remote-tracking branch 'upstream/master' into ir-crement-load
...
Update test output to fix semantic merge conflict.
2020-01-29 15:56:05 +01:00
Jonas Jensen
9a45c5570d
C++: Move Load from AssignmentOperation to its LHS
...
This is analogous to what was done for `CrementOperation`.
2020-01-24 09:09:31 +01:00
Jonas Jensen
c5950d2c9d
C++: IR: Result of x in x++ is now the Load
...
Previously, the `Load` would be associated with the `CrementOperation`
rather than its operand, which gave surprising results when mapping
taint sinks back to `Expr`.
The changes in `raw_ir.expected` are to add `Copy` operations on the
`x++` in code like `y = x++`. This is now needed because the result that
`x++` would otherwise have (the Load) no longer belongs to the `++`
expression. Copies are inserted to ensure that all expressions are
associated with an `Instruction` result.
The changes in `*aliased_ssa_ir.expected` appear to be just wobble.
2020-01-24 09:02:50 +01:00
Jonas Jensen
66914e52c6
C++: accept test changes
2020-01-22 14:08:05 +01:00
Robert Marsh
e209ed961a
Merge branch 'master' into rdmarsh/cpp/ir-callee-side-effects
2019-12-17 15:11:02 -08:00
Jonas Jensen
95a333d28c
C++: Use StackVariable in SSA libraries
...
This means we'll no longer get SSA definitions for thread-local
local-scope variables.
2019-11-19 11:30:59 +01:00
Robert Marsh
180a3c9f26
C++: accept test changes
2019-11-15 11:01:18 -08:00
Jonas Jensen
76a3db9eed
Merge remote-tracking branch 'upstream/master' into ir-copy-unloaded-result
2019-11-06 15:21:22 +01:00
Jonas Jensen
b6038f3caa
C++: Remove best-bound logic from test
...
This logic, in an improved form, is now part of the library itself.
2019-10-29 11:54:32 +01:00
Jonas Jensen
311963906b
C++: Only give the best delta in range analysis
...
This mirrors Java's 6b85fe087a .
2019-10-29 11:49:49 +01:00
Jonas Jensen
11da4a5328
C++: Accept test results for GVN and sign analysis
2019-10-24 15:17:16 +02:00
Jonas Jensen
b75bf06649
C++: Accept test changes in other IR tests
2019-09-24 13:00:21 +02:00
Jonas Jensen
4ef5c9af62
C++: Autoformat everything
...
Some files that will change in #1736 have been spared.
./build -j4 target/jars/qlformat
find ql/cpp/ql -name "*.ql" -print0 | xargs -0 target/jars/qlformat --input
find ql/cpp/ql -name "*.qll" -print0 | xargs -0 target/jars/qlformat --input
(cd ql && git checkout 'cpp/ql/src/semmle/code/cpp/ir/implementation/**/*SSA*.qll')
buildutils-internal/scripts/pr-checks/sync-identical-files.py --latest
2019-09-09 11:25:53 +02:00
Robert Marsh
4371d02a1f
C++: accept SignAnalysis.expected
2019-05-31 13:35:05 -07: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
170691b467
CPP: Comment as suggested.
2019-05-24 16:16:45 +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
Geoffrey White
5101a5bc3d
Merge pull request #1056 from jbj/SimpleRangeAnalysis-use-after-cast
...
C++: Fix use-after-cast bug in SimpleRangeAnalysis
2019-04-10 11:04:20 +01:00
Robert Marsh
fd7512c447
C++: accept test change in SignAnalysis
2019-04-08 14:10:37 -04:00
Robert Marsh
46f93ff322
C++: update test expectations
2019-04-04 10:55:27 -07:00
Jonas Jensen
b827e7a1ea
C++: Fix use-after-cast bug in SimpleRangeAnalysis
...
Like everywhere else in the range analysis, operands to comparison
operators must be considered in their fully-converted form.
2019-03-27 10:48:34 +01:00
Jonas Jensen
ad61b4f55e
C++: Add test to demonstrate use-after-cast bugs
2019-03-27 10:48:34 +01:00
Dave Bartolomeo
f5121d71bc
C++: Fix range analysis for new API
2019-02-12 09:38:11 -08:00
Robert Marsh
9decbd9c9f
C++: new irreducible CFG test for range analysis
2019-01-25 13:12:40 -08:00
Jonas Jensen
6d09a9b324
C++: Enable range analysis for irreducible CFGs
...
This adds one new test result (`i >= 0` on line 130).
2019-01-25 09:31:07 +01:00
Robert Marsh
c455db9e59
C++: update test expectations
2019-01-10 11:24:13 -08:00
Robert Marsh
0040a2d123
C++: respond to further PR comments
2019-01-08 09:34:28 -08:00
Robert Marsh
8c9c316e1b
C++: performance and termination fixes
2019-01-08 09:34:27 -08:00
Robert Marsh
567eee1114
C++: allow phi nodes to self-bound
2019-01-08 09:34:27 -08:00
Robert Marsh
b2cd9a29f2
C++: add test for false comparisons
2019-01-08 09:34:26 -08:00
Robert Marsh
2f8ca8802b
C++: switch to using ValueNumbers as bounds
...
This reduces the number of bounds computed, and will simplify use of the
library. The resulting locations in the tests may be slightly strange,
because the example `Instruction` for a `ValueNumber` is the first
appearing in the IR, regardless of source order, and may not be the most
closely related `Instruction` to the bounded value. I think that's worth
doing for the performance and usability benefits.
2019-01-08 09:34:26 -08:00
Robert Marsh
89148a9ec7
C++: respond to further PR comments
2019-01-08 09:34:26 -08:00
Robert Marsh
ae4ffd9166
C++: respond to PR comments, add some TODOs
2019-01-08 09:34:25 -08:00
Robert Marsh
fe32aea31f
C++: fix/add comments
2019-01-08 09:34:25 -08:00
Robert Marsh
ed68f9150a
C++: Initial implementation of new range analysis
2019-01-08 09:34:23 -08:00
Robert Marsh
a06a20dbab
C++: move SimpleRangeAnalysis tests
2019-01-08 09:34:23 -08:00
Ian Lynagh
98e8858dc6
C++: Accept test changes
2019-01-03 21:09:49 +00:00
Robert Marsh
59c0e5d39e
C++: update test expectations
2018-12-11 15:07:09 -08:00
Robert Marsh
d9495da225
C++: fix test
2018-11-09 10:15:28 -08:00
Robert Marsh
4fdc992cd9
C++: IRGuards uses Operand; fix CP in SignAnalysis
2018-11-08 14:43:51 -08:00