Commit Graph

1881 Commits

Author SHA1 Message Date
Calum Grant
dcff87fb2e Merge pull request #3366 from hvitved/csharp/dataflow/arrays
C#: Precise data-flow for collections
2020-07-14 17:12:29 +01:00
Mathias Vorreiter Pedersen
002f930dba C#: Sync identical files 2020-07-09 15:54:42 +02:00
Anders Schack-Mulligen
67db1df00c C++/C#/JavaScript/Python: Port Location qldoc update. 2020-07-07 11:39:27 +02:00
semmle-qlci
04a0d47ab9 Merge pull request #3870 from hvitved/csharp/cfg/cond-out-param
Approved by calumgrant
2020-07-02 18:48:05 +01:00
Tom Hvitved
527a099a26 C#: Fix CFG for conditional method calls with out parameters 2020-07-02 13:12:53 +02:00
Tom Hvitved
090205d9e9 C#: Add CFG test for conditional call to method with out parameter 2020-07-02 13:09:40 +02:00
Tom Hvitved
d01904d404 Merge pull request #3846 from hvitved/csharp/autobuilder-refactor
C#: Factor C++ parts out of autobuilder
2020-07-02 12:02:04 +02:00
Jonas Jensen
62a656de0f Merge pull request #3860 from dbartol/codeql-c-analysis-team/40/2
C++: QLDoc cleanup
2020-07-02 08:32:44 +02:00
Tom Hvitved
398a95c65f C#: Remove unused field 2020-07-01 20:06:46 +02:00
Tom Hvitved
498ee9b5f5 C#: Factor C++ parts out of autobuilder 2020-07-01 20:06:46 +02:00
Dave Bartolomeo
f0215d1748 C++: Fix typo 2020-07-01 11:57:56 -04:00
Dave Bartolomeo
566d7fad63 C++: Autoformat some more 2020-07-01 10:14:35 -04:00
Tom Hvitved
9e3a6e8d5e Merge remote-tracking branch 'upstream/master' into csharp/dataflow/arrays 2020-07-01 14:50:26 +02:00
Anders Schack-Mulligen
7d057598d8 Merge pull request #3857 from jbj/flowthrough-bigstep-perf
C++: Remove big-step relation in flow-through code
2020-07-01 14:23:23 +02:00
Anders Schack-Mulligen
38b73ff684 Merge pull request #3854 from hvitved/dataflow/node-type-interface
Data flow: Replace `getErasedRepr()` and `Node::getTypeBound()` with `getNodeType()`
2020-07-01 11:37:19 +02:00
semmle-qlci
ef109d91ed Merge pull request #3842 from hvitved/csharp/dataflow/remove-viable-impl
Approved by aschackmull
2020-07-01 08:14:57 +01:00
Tom Hvitved
ed2077b2f4 Merge pull request #3841 from gavinl/master
QHELP: Encryption using ECB.qhelp grammar
2020-07-01 08:45:35 +02:00
Dave Bartolomeo
10bbd566d4 C++: Autoformat 2020-07-01 02:28:53 -04:00
Dave Bartolomeo
6592f8c1bb C++: QLDoc cleanup
This PR just fixes a few bits of PR feedback from my previous QLDoc PR.
2020-06-30 17:33:52 -04:00
Jonas Jensen
cff0f48d34 C++: Work around join-order issue in flow-through
In this non-linear recursion, a `#prev` relation was joined earlier than
the `#prev_delta` relation. As a result, each iteration of the predicate
processes every tuple from previous iterations.

This quadratic behavior caused severe slowdowns on oneapi-src/oneDNN.
2020-06-30 21:12:57 +02:00
Jonas Jensen
17beb2d867 C++: Remove big-step relation in flow-through code
This relation was originally introduced to improve performance but may
no longer be necessary. The `localFlowStepPlus` predicate had an
explosion of tuples on oneapi-src/oneDNN for C++.
2020-06-30 21:06:45 +02:00
Tom Hvitved
1fa58bd82d Data flow: Sync files 2020-06-30 17:37:16 +02:00
Tom Hvitved
6bcb8a3a5b C#: Replace getErasedRepr() and getTypeBound() with getNodeType() 2020-06-30 17:37:16 +02:00
Jonas Jensen
63de58c557 Merge pull request #3819 from dbartol/codeql-c-analysis-team/40/2
C++: More IR QLDoc (including `Opcode.qll`)
2020-06-30 17:09:15 +02:00
Jonas Jensen
47bb007b9a C++: Autoformat fixups 2020-06-30 09:56:39 +02:00
Tom Hvitved
3efe1a9d10 C#: Remove unused viableImpl predicate 2020-06-30 08:31:30 +02:00
Tom Hvitved
b57cfc965a Merge pull request #3804 from aschackmull/dataflow/dispatch-refactor
Dataflow: Refactor dispatch with call context.
2020-06-30 08:28:27 +02:00
Gavin Lang
7a023a65b0 Grammatical issues in Encryption using ECB.qhelp 2020-06-30 15:33:05 +10:00
Dave Bartolomeo
42657dbe3f C++: Miscellaneous IR QLDoc 2020-06-29 14:30:12 -04:00
Dave Bartolomeo
1fa38474e9 C++: Autoformat 2020-06-29 14:09:53 -04:00
Dave Bartolomeo
c52653270e C++: QLDoc for IRConfiguration.qll 2020-06-29 12:43:51 -04:00
Dave Bartolomeo
87f0b0ef97 C++: QLDoc for EdgeKind.qll 2020-06-29 12:43:50 -04:00
Dave Bartolomeo
440ea6a069 C++: QLDoc for PrintIR.qll 2020-06-29 12:43:50 -04:00
Dave Bartolomeo
2043d9c7c4 C++: QLDoc for Operand.qll 2020-06-29 12:43:50 -04:00
Dave Bartolomeo
ead2a143e0 C++: QLDoc for IRVariable
Moved a couple of predicates that were only needed by IR construction into `TranslatedElement.qll`
2020-06-29 12:43:50 -04:00
Dave Bartolomeo
98348a9353 C++: QLDoc for IR.qll 2020-06-29 12:43:50 -04:00
Dave Bartolomeo
88f89b3334 C++: QLDoc for IRFunction.qll 2020-06-29 12:43:49 -04:00
Dave Bartolomeo
d0af9f5808 C++: QLDoc all of IRBlock.qll 2020-06-29 12:43:49 -04:00
Dave Bartolomeo
77bf564136 C++: Finish Instruction.qll QLDoc 2020-06-29 12:43:49 -04:00
Dave Bartolomeo
6de3d5bc3d C++: Change opcode QLDocs to refer to instruction QLDocs
As discussed in today's C++ analysis team meeting. `Opcode` is rarely used directly, so we'll just refer to the documentation for the corresponding `Instruction` class.

I've preserved the script in case we want to do a bulk change of all of the `Opcode` comments, but I don't expect it will be needed if we just add a new `Opcode` or two.
2020-06-29 12:41:36 -04:00
Anders Schack-Mulligen
0bd81eb4b8 Dataflow: Fix reference to viableCallable. 2020-06-29 16:22:58 +02:00
Dave Bartolomeo
4dcdd8a0ee C++: Add last remaining QLDoc to Opcode.qll 2020-06-26 17:25:30 -04:00
Dave Bartolomeo
bdf121f3b8 C++: Update opcode QLDoc script to handle abstract base classes
This auto-generates even more QLDoc for `Opcode.qll`
2020-06-26 16:04:33 -04:00
Dave Bartolomeo
281985b845 C++: Sync Opcode.qll QLDoc with Instruction.qll QLDoc
For every concrete `Opcode`, there is a corresponding `Instruction` class. Rather than duplicate all of the QLDoc by hand, I wrote a quick Python script to copy the QLDoc from `Instruction.qll` to `Opcode.qll`. I don't expect that we will need to do this often, so I'm not hooking it up to a PR check or anything like that, but I did commit the script itself in case we need it again.
2020-06-26 11:42:32 -04:00
Dave Bartolomeo
023e1dc0a2 Instruction and opcode cleanup
- Renamed `DynamicCastToVoid` to the more descriptive `CompleteObjectAddress`
- Split verbose description from summary in a few Instruction QLDoc comments.
- Added `Instruction` classes for the few remaining `Opcode`s that didn't have one.
- Removed a use of "e.g."
2020-06-26 11:39:10 -04:00
Dave Bartolomeo
f48948c604 C++: Opcode cleanup
- Remove unused `MemoryAccessOpcode`
- Make `OpcodeWithCondition` private
- Add QLDoc for `Opcode` module
2020-06-26 09:04:37 -04:00
Mathias Vorreiter Pedersen
beb66299e9 Merge pull request #3796 from dbartol/codeql-c-analysis-team/40/2
C++: QLDoc for all of `Instruction.qll`
2020-06-26 14:04:48 +02:00
Tom Hvitved
795c5784b0 C#: Precise data flow for collections 2020-06-26 13:40:05 +02:00
Tom Hvitved
6efbd5f9d1 C#: Add data-flow test for List.Clear() 2020-06-26 11:44:08 +02:00
Jonas Jensen
9d8052a434 Merge pull request #3813 from MathiasVP/is-argument-for-parameter-join-order
C++: Improve join order for AliasAnalysis::isArgumentForParameter
2020-06-26 11:34:33 +02:00