Tom Hvitved
9b699618a8
Data flow: Improve performance of flowFwdStore()
2020-02-09 19:34:04 +01:00
Robert Marsh
3266a89023
C++: document DynamicAllocationInstruction
2020-02-07 16:56:57 -08:00
Robert Marsh
7f69cdfb56
C++: Dynamic allocations in IR alias analysis
2020-02-07 16:37:36 -08:00
Robert Marsh
05c8610bbc
C++: tests for alias analysis of malloc
2020-02-07 16:35:58 -08:00
Robert Marsh
68097116b0
C++:autoformat
2020-02-07 15:51:23 -08:00
Robert Marsh
d1d19a7446
Merge branch 'master' into rdmarsh/cpp/ir-flow-through-outparams
...
Update test expectations
2020-02-07 12:24:05 -08:00
Agustin Gianni
033eeab41e
cpp: Adds a member predicate to get a FunctionAccess from a Function
...
- Adds a member predicate to get a FunctionAccess from a Function
- Adds QLDoc to getACallToThisFunction.
2020-02-07 16:45:14 +01:00
Tom Hvitved
f30a42ce26
Data flow: Fix bad join-order in TPathNodeSink
...
Avoids a Cartesian product on nodes:
```
[2020-02-07 11:01:22] (432s) Tuple counts for dom#DataFlowImpl::TPathNodeSink#ff:
0 ~0% {2} r1 = JOIN DataFlowImpl::Configuration::isSource_dispred#ff AS L WITH DataFlowImpl::Configuration::isSink_dispred#ff AS R ON FIRST 2 OUTPUT R.<1>, R.<0>
101611 ~0% {2} r2 = SCAN DataFlowImpl::PathNodeMid#class#ffffff AS I OUTPUT I.<5>, I.<0>
3534537047 ~3% {3} r3 = JOIN r2 WITH DataFlowImpl::Configuration::isSink_dispred#ff AS R ON FIRST 1 OUTPUT r2.<1>, R.<1>, R.<0>
251 ~41% {3} r4 = JOIN r3 WITH project#DataFlowImpl::pathStep#fffff AS R ON FIRST 2 OUTPUT R.<2>, r3.<2>, r3.<1>
251 ~50% {2} r5 = JOIN r4 WITH DataFlowImpl::TNil#ff_1#join_rhs AS R ON FIRST 1 OUTPUT r4.<2>, r4.<1>
251 ~50% {2} r6 = r1 \/ r5
323 ~67% {3} r7 = JOIN r6 WITH DataFlowImpl::flow#ff AS R ON FIRST 1 OUTPUT r6.<1>, r6.<0>, R.<1>
288 ~58% {3} r8 = SELECT r7 ON r7.<2> >= r7.<0>
251 ~53% {3} r9 = SELECT r8 ON r8.<2> <= r8.<0>
251 ~50% {2} r10 = SCAN r9 OUTPUT r9.<1>, r9.<0>
```
2020-02-07 12:08:31 +01:00
Jonas Jensen
19286bd82a
Merge pull request #2765 from MathiasVP/ir-gvn-ast-wrapper-fixup
...
C++: Make AST GVN a wrapper for IR-based GVN
2020-02-07 08:49:15 +01:00
Robert Marsh
dac4f0fac0
Merge pull request #2763 from jbj/ir-VariableNode
...
C++: DefaultTaintTracking perf fix for globals
2020-02-06 18:54:14 -05:00
Robert Marsh
2d3a742b7f
C++: autoformat and accept test changes
2020-02-06 13:41:00 -08:00
Robert Marsh
692207472a
Merge branch 'master' into rdmarsh/cpp/ir-flow-through-outparams
2020-02-06 11:42:30 -08:00
Tom Hvitved
b3af3ad12f
Data flow: Fix bad join order in getReturnPosition()
...
Joining on the enclosing callable before the kind is crucial, as witnessed by this pipeline:
```
[2020-02-06 17:58:21] (1086s) Starting to evaluate predicate DataFlowImplCommon::getReturnPosition#ff/2@83c546
[2020-02-06 18:53:16] (4382s) Tuple counts for DataFlowImplCommon::getReturnPosition#ff:
385478 ~1% {3} r1 = SCAN DataFlowImplCommon::Cached::TReturnPosition0#fff@staged_ext AS I OUTPUT I.<2>, I.<0>, I.<1>
385478 ~2% {3} r2 = JOIN r1 WITH DataFlowImplCommon::Cached::TReturnPosition0#fff_2#join_rhs AS R ON FIRST 1 OUTPUT r1.<2>, r1.<1>, r1.<0>
58638116860 ~0% {3} r3 = JOIN r2 WITH DataFlowImplCommon::ReturnNodeExt::getKind_dispred#ff_10#join_rhs AS R ON FIRST 1 OUTPUT R.<1>, r2.<1>, r2.<2>
914049 ~0% {2} r4 = JOIN r3 WITH DataFlowImplCommon::returnNodeGetEnclosingCallable#ff AS R ON FIRST 2 OUTPUT r3.<0>, r3.<2>
return r4
```
2020-02-06 19:06:40 +01:00
Mathias Vorreiter Pedersen
538c2b205d
C++: Accept output
2020-02-06 18:44:08 +01:00
Mathias Vorreiter Pedersen
f02513e376
C++: Exclude UnknownLocation results from getLocation if there is a location that's known
2020-02-06 15:53:22 +01:00
Mathias Vorreiter Pedersen
23ca363b87
C++: Formatting
2020-02-06 15:53:22 +01:00
Mathias Vorreiter Pedersen
98969e3bf9
C++: Accepted ir_gvn output after toString change
2020-02-06 15:53:22 +01:00
Mathias Vorreiter Pedersen
0d181a7101
C++: Add tests and accept output
2020-02-06 15:48:08 +01:00
Mathias Vorreiter Pedersen
69e085dda7
C++: Add getDebugString predicate and use it in ValueNumberPropertyProvider
2020-02-06 15:43:57 +01:00
Mathias Vorreiter Pedersen
ef89e3bdb5
C++: Added charpred to ensure that only instructions that have a source representation have a GVN
2020-02-06 15:43:57 +01:00
Mathias Vorreiter Pedersen
63f1d3ded7
C++: Replace rank[1] with min
2020-02-06 15:43:57 +01:00
Mathias Vorreiter Pedersen
2303dac0b7
C++: Implemented getKind to new GVN class and added predicates for obtaining expressions from a GVN
2020-02-06 15:43:57 +01:00
Robert Marsh
2f91778e7e
C++: add IR-based wrapper for value numbering
2020-02-06 15:35:20 +01:00
Robert Marsh
ffaaed0550
C++: separate IR ValueNumber newtype and interface
2020-02-06 15:35:20 +01:00
Jonas Jensen
4997aa7428
Merge pull request #2772 from MathiasVP/more-gvn-loads
...
C++: Better value numbering support for loading fields in IR
2020-02-06 14:15:27 +01:00
Jonas Jensen
2e883ab4b2
Merge pull request #2760 from geoffw0/defaulttainttest3
...
C++: Emulate old security library's use of predictable more accurately.
2020-02-06 13:47:27 +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
Mathias Vorreiter Pedersen
aaa6233a99
C++/C#: Sync identical files
2020-02-06 11:24:07 +01:00
Mathias Vorreiter Pedersen
527181bb6f
C++: Rename CongruentCopyInstructionTotal to LoadTotalOverlapInstruction and extend LoadInstruction instead of CopyInstruction
2020-02-06 11:23:42 +01:00
Geoffrey White
2dfeafac30
C++: Interaction with another PR.
2020-02-06 10:21:55 +00:00
Geoffrey White
851c1134f3
C++: Add 'strlen' back.
2020-02-06 10:17:37 +00:00
Geoffrey White
860d0aa42f
C++: Remove single argument functions.
2020-02-06 10:17:37 +00:00
Geoffrey White
539d6716f5
C++: Remove commented entries.
2020-02-06 10:17:37 +00:00
Geoffrey White
d54d7e8410
C++: Post-merge fix.
2020-02-06 10:17:37 +00:00
Geoffrey White
2fddb09a30
C++: New autoformat.
2020-02-06 10:17:37 +00:00
Geoffrey White
95c77ca3c6
C++: Update comment.
2020-02-06 10:17:37 +00:00
Geoffrey White
9c05ffeb3a
C++: Emulate old security library's use of predictable more accurately.
2020-02-06 10:17:37 +00:00
Mathias Vorreiter Pedersen
f4bbdee6c2
Merge pull request #2745 from Cornelius-Riemenschneider/cpp-range-analysis
...
C++: Fix bug in range analysis.
2020-02-06 10:10:06 +01:00
Mathias Vorreiter Pedersen
ba395cf11a
C++: Update test annotations and accept output
2020-02-06 09:26:33 +01:00
Mathias Vorreiter Pedersen
cfcf087d3c
C++: Add comment explaining buggy value number
2020-02-06 09:26:33 +01:00
Mathias Vorreiter Pedersen
4f2775012a
C++/C#: Sync identical files
2020-02-06 09:26:33 +01:00
Mathias Vorreiter Pedersen
5e5bd92cba
C++: Accept output
2020-02-06 09:26:33 +01:00
Mathias Vorreiter Pedersen
54f0b4a099
C++: Add more support for load instructions
2020-02-06 09:21:42 +01:00
Mathias Vorreiter Pedersen
687dcb7ad1
C++: Add testcase demonstrating unexpectly different value numbers
2020-02-06 09:21:42 +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
Jonas Jensen
c0417ac161
Merge pull request #2740 from dbartol/dbartol/InitializeNonLocal
...
C++: Prevent `AliasedVirtualVariable` from overlapping string literals
2020-02-06 08:28:01 +01:00
Dave Bartolomeo
e06f468b59
C++: Fix test expectations after EDG update
2020-02-05 14:34:29 -07: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
Dave Bartolomeo
c53f80175f
Merge pull request #2750 from Cornelius-Riemenschneider/cpp-range-analysis-casts
...
C++: Support implicit casts better in range analysis
2020-02-05 13:59:09 -07:00