Mathias Vorreiter Pedersen
8f0519fcd1
Merge branch 'main' into use-shared-ssa-in-ir-dataflow
2021-10-22 11:46:44 +01:00
Mathias Vorreiter Pedersen
5f098a5b90
C++: Fix join-order issue.
2021-10-22 11:42:35 +01:00
Mathias Vorreiter Pedersen
08ac352bb4
C++: Autoformat.
2021-10-22 11:42:35 +01:00
Mathias Vorreiter Pedersen
80000cd890
C++: Fix join orders in 'DataFlowDispatch.qll'
2021-10-22 11:42:35 +01:00
Mathias Vorreiter Pedersen
589842b252
C++: Add annoying case in SSA.qll related to 'NewExpr' and accept test changes.
2021-10-22 11:42:35 +01:00
Mathias Vorreiter Pedersen
98ef06c6ec
C++: Accept test changes.
2021-10-22 11:42:35 +01:00
Mathias Vorreiter Pedersen
c3a5a4fc36
C++: Add a special dataflow step from InitializeIndirection instructions.
2021-10-22 11:42:35 +01:00
Mathias Vorreiter Pedersen
f8265ea095
C++: Remove the taintflow edges that gives performance problems.
2021-10-22 11:42:34 +01:00
Mathias Vorreiter Pedersen
870d80ba43
C++: Since we now no longer have flow from exact memory operands to LoadInstructions, we no longer have flow from PhiInstructions to LoadInstructions. We could allow flow in this particular case, but we might as well use the shared SSA library's phi edges.
2021-10-22 11:42:34 +01:00
Mathias Vorreiter Pedersen
c5e51fd3de
C++: Throw away most of the usage of IR-computed def-use information. Instead, we rely on the shared SSA library's use-use edges.
2021-10-22 11:42:34 +01:00
Mathias Vorreiter Pedersen
07db62d90b
C++: Rewrite the PartialDefinitionNode classes to match the new StoreNodes.
2021-10-22 11:42:34 +01:00
Mathias Vorreiter Pedersen
090675fe04
C++: Similarly to the previous commit, we throw away the old memory-edges based way of doing read steps. Instead, we use the shared SSA library to transfer flow into a new ReadNode IPA branch, perform the necessary read steps, and then use the shared SSA library to transfer flow out of the ReadNode again.
2021-10-22 11:42:34 +01:00
Mathias Vorreiter Pedersen
34a209bc8a
C++: Throw away the old way of doing store steps using memory edges. Instead, we introduce a StoreNode IPA branch that does store steps and instead use the shared SSA library to transfer flow into these nodes before a store step, and out of them following a sequence of store steps.
2021-10-22 11:42:34 +01:00
Mathias Vorreiter Pedersen
c29fd61e6f
C++: Add shared SSA library and instantiate it with the IR.
2021-10-22 11:42:34 +01:00
Mathias Vorreiter Pedersen
9e14aefa65
C++/C#: Sync identical IR files·
2021-10-22 11:42:33 +01:00
Mathias Vorreiter Pedersen
b9c6785b1f
C++: Add 'getReturnAddress' and 'getReturnAddressOperand' predicates to 'ReturnValueInstruction'.
2021-10-22 11:42:27 +01:00
Mathias Vorreiter Pedersen
7feab27bf4
Merge pull request #6926 from geoffw0/setliterals2
...
C++: Use set literals (more).
2021-10-20 14:58:06 +01:00
Geoffrey White
da412178ce
C++: Use set literals (more).
2021-10-20 14:18:27 +01:00
Tom Hvitved
0bf5238f39
Update QL doc for allowParameterReturnInSelf
2021-10-20 12:08:58 +02:00
Tom Hvitved
dd138b0429
Address review comments
2021-10-20 12:08:58 +02:00
Tom Hvitved
a1511e13d8
Data flow: Sync files
2021-10-20 12:08:57 +02:00
Jonas Jensen
7015be7cad
Merge pull request #6916 from geoffw0/fixnotbound
...
C++: Fix unbound variables in PrivateCleartextWrite.qll.
2021-10-19 16:46:42 +02:00
Geoffrey White
38257a58f0
C++: Fix unbound variables in PrivateCleartextWrite.qll.
2021-10-19 15:01:32 +01:00
Geoffrey White
3f3c79f48f
Merge pull request #6884 from geoffw0/setliterals
...
Replace or chains with set literals.
2021-10-18 16:46:55 +01:00
Anders Schack-Mulligen
b67032d1cc
Merge pull request #6891 from erik-krogh/fix-java-this
...
add explicit this qualifier on all of java
2021-10-18 17:13:37 +02:00
Tom Hvitved
a10bde5795
Merge pull request #6872 from hvitved/dataflow/path-into-callable0-join
...
Data flow: Performance tweaks
2021-10-18 16:25:10 +02:00
Tom Hvitved
e6954292aa
Address review comments
2021-10-18 14:09:44 +02:00
Anders Schack-Mulligen
91ea064980
Sync
2021-10-18 14:04:50 +02:00
Jonas Jensen
493a37ba5e
Merge pull request #6903 from MathiasVP/remove-implicit-this-for-cpp
...
C++: Remove uses of implicit `this`
2021-10-18 13:41:30 +02:00
Mathias Vorreiter Pedersen
ea67ca22a9
C++: Undo changes to shared dataflow files.
2021-10-18 09:00:00 +01:00
Geoffrey White
f38dade578
C++: Disable the two null termination queries enabled by 6794.
2021-10-15 17:39:12 +01:00
Erik Krogh Kristensen
fe891746bf
C++: fix implicit this
2021-10-15 14:59:48 +01:00
Geoffrey White
8f30b8b586
Autoformat.
2021-10-14 16:00:23 +01:00
Anders Schack-Mulligen
f6a517c998
Merge pull request #6882 from MathiasVP/fix-unnecessary-exists
...
C++/Python: Remove unnecessary `exists`
2021-10-14 16:44:05 +02:00
Geoffrey White
f08d2ee759
Merge branch 'main' into setliterals
2021-10-14 14:39:39 +01:00
Anders Schack-Mulligen
8b6baa250c
Merge pull request #6878 from aschackmull/remove-singleton-setliteral
...
C++/C#/Java/JavaScript/Python: Remove singleton set literals.
2021-10-14 14:53:05 +02:00
Mathias Vorreiter Pedersen
69ed7c543f
C++: Remove unnecessary 'exists'.
2021-10-14 11:59:59 +01:00
Tom Hvitved
f5420333e2
Sync shared files
2021-10-14 11:49:02 +02:00
Anders Schack-Mulligen
57cb300759
C++/C#/Java/JavaScript/Python: Remove singleton set literals.
2021-10-14 11:34:22 +02:00
Mathias Vorreiter Pedersen
a2371370ff
Merge pull request #6865 from MathiasVP/fix-if-none
...
C++/C#/JS/Python: Replace 'if p() then q() else none()' with a conjunction
2021-10-13 19:47:55 +01:00
Tom Hvitved
c14dcfbfe4
Data flow: Sync
2021-10-13 20:13:28 +02:00
Andrew Eisenberg
878203f1d0
Merge pull request #6862 from github/aeisenberg/tutorial
...
Move tutorial directly into each qlpack
2021-10-13 09:29:37 -07:00
Andrew Eisenberg
0d1632a5d2
Move tutorial directly into each qlpack
...
Previously, the tutorial was injected during build time. This is much
simpler.
2021-10-13 08:37:04 -07:00
Geoffrey White
2e61ae244a
C++: Set literals.
2021-10-13 16:12:36 +01:00
Philip Ginsbach
a204b7f3e7
Merge pull request #6866 from github/ginsbach/MoreInstanceofExtensions
...
more instanceof extensions
2021-10-13 14:21:50 +01:00
Mathias Vorreiter Pedersen
6ece3c2b46
Merge pull request #6870 from jbj/cp-fixes
...
C++: Fix potential Cartesian products
2021-10-13 14:15:33 +01:00
Jonas Jensen
e80c1ad91f
C++: Fix resource-not-released-in-destructor CP
...
By moving a disjunct outside the scope of an `exists(Function f`
variable it doens't use, the code becomes clearer and can be optimized
better.
The CP in the QL code did not lead to a CP at evaluation time since the
optimizer was smart enough to compensate for it:
376161 ~37597630% {0} r1 = SCAN functions OUTPUT {}
1 ~0% {0} r2 = STREAM DEDUP r1
Before this change, the largest tuple count in `leakedInSameMethod` on
bitcoin/bitcoin was 2M. Now it's 400k.
2021-10-13 14:24:26 +02:00
Jonas Jensen
955344e175
C++: Inline a predicate that contains CPs
...
The `overflows` predicate had quite severe Cartesian products. We didn't
see them in practice because magic saved us, but we can't rely on magic
in the future, so it seems better to inline this predicate.
Tuple counts and speed look good both before and after.
2021-10-13 14:11:47 +02:00
Mathias Vorreiter Pedersen
ba981c525b
C++: Replace 'if p() then q() else none()' with a conjunction.
2021-10-13 12:11:42 +01:00
Philip Ginsbach
4a0aac8505
SuppressionScope non-extending subtype of SuppressionComment
2021-10-13 11:40:32 +01:00