Jonas Jensen
4ddf12119d
C++: Don't suppress consistency checks for calls
...
See https://github.com/github/codeql/pull/3162#discussion_r400849713 .
2020-05-01 11:04:42 +02:00
Jonas Jensen
f696594d35
Merge pull request #3295 from MathiasVP/field-flow-single-struct
...
C++: Add PostUpdateNode for updates to structs with no chi instructions
2020-04-23 10:02:10 +02:00
Dave Bartolomeo
4b44afef90
C++: Accept syntax-zoo test output
2020-04-21 09:42:24 -04:00
Mathias Vorreiter Pedersen
8be1bfe8d0
C++: Add comments and accept expected dataflow sanity failures
2020-04-20 14:13:12 +02:00
Robert Marsh
146bfca2ad
Merge pull request #3254 from dbartol/dbartol/ImplicitReturnValue2
...
C++: Treat implicit end of body of non`-void` function as `Unreached`
2020-04-14 12:18:50 -07:00
Dave Bartolomeo
812087968f
C++: Fix test output
...
Mostly noise, but a couple of the missing operand errors are actual fixes.
2020-04-14 14:17:20 -04:00
Dave Bartolomeo
83cd78c6cf
C++: Fix test output
2020-04-14 10:54:00 -04:00
Jonas Jensen
0743c42807
Merge remote-tracking branch 'upstream/master' into dataflow-indirect-args
...
Accepted test results that were in semantic merge conflict between
these branches. The changed results are due to a bug that that's part of
https://github.com/github/codeql-c-analysis-team/issues/35 .
2020-04-06 19:26:08 +02:00
Mathias Vorreiter Pedersen
97061716f9
C++: Accept test output
2020-03-31 17:10:33 +02:00
Mathias Vorreiter Pedersen
b6f93746bf
C++: Accept test output
2020-03-31 16:00:56 +02:00
Jonas Jensen
531ef64c5d
C++: Fix other copies of the argHasPostUpdate test
2020-03-30 17:45:53 +02:00
Tom Hvitved
9fa9c10361
Merge pull request #2921 from aschackmull/dataflow/consistency-checks
...
Java: Add data-flow consistency checks.
2020-03-30 12:47:41 +02:00
Jonas Jensen
2b2667aef7
Merge remote-tracking branch 'upstream/master' into detect-conflated-memory
...
Conflicts:
cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRSanity.qll
cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRSanity.qll
cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRSanity.qll
cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected
cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity_unsound.expected
cpp/ql/test/library-tests/ir/ir/raw_sanity.expected
cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected
cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity_unsound.expected
cpp/ql/test/library-tests/ir/ssa/aliased_ssa_sanity.expected
cpp/ql/test/library-tests/ir/ssa/aliased_ssa_sanity_unsound.expected
cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_sanity.expected
cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_sanity_unsound.expected
cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected
cpp/ql/test/library-tests/syntax-zoo/raw_sanity.expected
cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_sanity.expected
csharp/ql/src/semmle/code/csharp/ir/implementation/raw/IRSanity.qll
csharp/ql/src/semmle/code/csharp/ir/implementation/unaliased_ssa/IRSanity.qll
csharp/ql/test/library-tests/ir/ir/raw_ir_sanity.expected
csharp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected
2020-03-25 11:55:39 +01:00
Dave Bartolomeo
c5ac357bfc
C++/C#: Fix bad overlap sanity failures
...
`Instruction.getDefinitionOverlap()` depends on `SSAConstruction::getMemoryOperandDefinition()`, which in turn depends on `SSAConstruction::hasMemoryOperandDefinition()`. When the definition in question came from a `Chi` instruction, `hasMemoryOperandDefinition()` incorrectly bound `overlap` to the overlap relationship between the original (non-`Chi`) instruction and the use. The fix is to make use of the `actualDefLocation` parameter to `getDefinitionOrChiInstruction()`, which specifies the location for the result of the `Chi` in that case.
2020-03-23 14:57:41 -04:00
Jonas Jensen
f6f9afe462
C++: Implement Instruction.isResultConflated
...
This predicate replaces `isChiForAllAliasedMemory`, which was always
intended to be temporary. A test is added to `IRSanity.qll` to verify
that the new predicate corresponds exactly with (a fixed version of) the
old one.
The implementation of the new predicate,
`Cached::hasConflatedMemoryResult` in `SSAConstruction.qll`, is faster
to compute than the old `isChiForAllAliasedMemory` because it uses
information that's readily available during SSA construction.
2020-03-20 17:57:18 +01:00
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
Anders Schack-Mulligen
85d6b7c2ed
C++: Add tests.
2020-03-11 10:49:21 +01:00
Jonas Jensen
0cd3eb7b7e
C++: Accept test changes
...
Some IR inconsistencies are "fixed" because we no longer translate
constant initializers of static locals.
2020-03-06 20:20:47 +01:00
Mathias Vorreiter Pedersen
af364e66fc
C++/C#: Move sanity check inside InstructionSanity module and accept tests
2020-02-23 20:53:49 +01:00
Jonas Jensen
f0f752844e
Merge remote-tracking branch 'upstream/master' into dbartol/Indirections
...
Conflicts:
cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll
csharp/ql/src/semmle/code/csharp/ir/implementation/unaliased_ssa/internal/AliasAnalysis.qll
2020-01-30 10:26:44 +01:00
Anders Schack-Mulligen
96e4a57edd
C++: Autoformat.
2020-01-29 13:11:50 +01:00
Dave Bartolomeo
dda32359fa
C++: Accept IR dump test results changes due to new alias analysis
2020-01-28 10:58:05 -07:00
Dave Bartolomeo
3b3502060b
Merge remote-tracking branch 'upstream/master' into dbartol/NoEscape
2020-01-27 13:29:18 -07:00
Jonas Jensen
fb6ad5274f
C++: Accept test changes
2020-01-24 22:28:20 +01:00
Jonas Jensen
66914e52c6
C++: accept test changes
2020-01-22 14:08:05 +01:00
Robert Marsh
34593701b2
Merge branch 'master' into rdmarsh/cpp/ir-callee-side-effects
2019-11-20 10:03:32 -08:00
Ian Lynagh
4442fd8407
C++: Accept changes to syntax-zoo tests
2019-11-15 14:42:36 +00:00
Robert Marsh
facbd32062
Merge branch 'master' into rdmarsh/cpp/ir-callee-side-effects
2019-11-14 11:09:13 -08:00
Robert Marsh
2fb1d4d1b1
C++: fix IR return block successors
2019-11-14 10:29:48 -08:00
Robert Marsh
2582b69e17
Merge branch 'master' of github.com:Semmle/ql into rdmarsh/cpp/ir-constructor-side-effects
2019-11-07 15:46:08 -08:00
Robert Marsh
e93dcdb16c
Merge branch 'master' into rdmarsh/cpp/ir-constructor-side-effects
2019-11-07 15:19:46 -08:00
Dave Bartolomeo
f808dcefab
Merge pull request #2277 from ian-semmle/cfg_diffs
...
C++: Remove tests for CFG differences
2019-11-07 12:41:40 -07:00
Dave Bartolomeo
64480c2ace
Merge pull request #1999 from jbj/ir-copy-unloaded-result
...
C++: Make sure there's a Instruction for each Expr
2019-11-07 12:31:54 -07:00
Ian Lynagh
b5af4e5acd
C++: Remove tests for CFG differences
...
Now that we have switched over, they are no longer interesting.
2019-11-07 16:32:18 +00:00
Matthew Gretton-Dann
c0884e9a88
C++: Update expected results.
2019-11-07 14:08:25 +00:00
Jonas Jensen
76a3db9eed
Merge remote-tracking branch 'upstream/master' into ir-copy-unloaded-result
2019-11-06 15:21:22 +01:00
Robert Marsh
31f25c8cfc
C++: primary instrs for constructor side effects
2019-10-31 11:43:47 -07:00
Robert Marsh
86b5e97f76
Merge branch 'master' of github.com:Semmle/ql into rdmarsh/cpp/ir-constructor-side-effects
2019-10-31 11:34:22 -07:00
Robert Marsh
9477bd5698
Merge branch 'master' of github.com:Semmle/ql into rdmarsh/cpp/ir-buffer-read-call-se
2019-10-31 11:00:01 -07:00
Robert Marsh
8076156cb1
Merge branch 'master' into rdmarsh/cpp/ir-callee-side-effects
2019-10-28 16:50:34 -07:00
Robert Marsh
120fa6c330
C++: alias fixes for ReturnIndirection
2019-10-28 15:09:35 -07:00
Dave Bartolomeo
cc5a689293
C++/C#: Fix up after merge from master
2019-10-25 14:11:34 -07:00
Jonas Jensen
22de0efc58
Merge pull request #2008 from dave-bartolomeo/dave/IRType2
...
C++: Implement language-neutral IR type system
2019-10-25 09:42:23 +02:00
Jonas Jensen
7a6ec83572
C++: No CopyValue for immediately discarded exprs
...
Expressions like the `e` in `e;` or `e, e2`, whose result is immediately
discarded, should not get a synthetic `CopyValue`. This removes a lot of
redundancy from the IR.
To prevent these expressions from being confused with the expressions
from which they get their result, the predicate
`getInstructionConvertedResultExpression` now suppresses results for
expressions that don't produce their own result. This should fix the
mapping between expressions and IR data-flow nodes.
2019-10-23 11:56:30 +02:00
Jonas Jensen
cbbe9b4718
Merge remote-tracking branch 'upstream/master' into ir-copy-unloaded-result
...
Fixed conflicts by accepting new qltest output.
Conflicts:
cpp/ql/test/library-tests/ir/ir/raw_ir.expected
cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected
cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir.expected
cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected
cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_sanity.expected
2019-10-23 08:46:39 +02:00
Dave Bartolomeo
7241c1aae6
C++/C#: More sanity checks for IRType
2019-10-21 14:22:46 -07:00
Dave Bartolomeo
71a6b5dffe
C++/C#: Fix some duplicate IRType problems, and add a sanity test
2019-10-21 10:46:30 -07:00
Robert Marsh
8905159de7
C++: add InitializeIndirection for pointer params
2019-10-18 11:06:09 -07:00
Robert Marsh
e57fef093b
C++: accept syntax-zoo changes
2019-10-18 10:08:53 -07:00
Robert Marsh
30d7238921
C++: fix missing getPrimaryInstruction
2019-10-16 17:05:37 -07:00