Jonas Jensen
9babb4366b
Merge remote-tracking branch 'upstream/master' into mergeback-20181130
2018-11-30 10:13:33 +01:00
Dave Bartolomeo
40864f9ebb
C++: Fix GVN test expectation
2018-11-28 14:07:23 -08:00
semmle-qlci
d31c9950f9
Merge pull request #566 from ian-semmle/defuse_test
...
Approved by dave-bartolomeo
2018-11-28 20:48:14 +00:00
Ian Lynagh
6cb6b1c07d
C++: Tweak the defuse test
...
It looks like this is what it was originally intended to do.
2018-11-28 17:11:17 +00:00
Dave Bartolomeo
7e6e6f00c1
C++: Fix IR for designated array initializers
2018-11-27 14:57:23 -08:00
Dave Bartolomeo
0a20f9ffbf
C++: Print field names and element indices for aggregate literals in PrintAST
2018-11-27 13:26:18 -08:00
Dave Bartolomeo
90b79eb5f3
C++: Accept GVN test expectations with Chi nodes
2018-11-27 12:56:23 -08:00
Dave Bartolomeo
2b9afe95e8
C++: Accept test output after rebase
2018-11-26 12:08:19 -08:00
Robert Marsh
799eb06eea
C++: add AliasedDefinition for aliased SSA
2018-11-26 12:08:19 -08:00
Robert Marsh
3ee033d96e
C++: IR sanity fixes for Chi nodes
2018-11-26 12:08:19 -08:00
Robert Marsh
b401cd97f2
C++: use UnmodeledDefinition in UnmodeledUse
2018-11-26 12:08:19 -08:00
Robert Marsh
927f935e62
C++: hook ChiInstructions into the operand graph
2018-11-26 12:08:19 -08:00
Robert Marsh
a33b59103a
C++: insert Chi nodes in the IR successor relation
...
This commit adds Chi nodes to the successor relation and accounts for
them in the CFG, but does not add them to the SSA data graph. Chi nodes
are inserted for partial writes to any VirtualVariable, regardless of
whether the partial write reaches any uses.
2018-11-26 12:08:18 -08:00
Dave Bartolomeo
1fb36ff7e7
C++: Add conservative side effects for function calls
2018-11-26 12:08:18 -08:00
Aditya Sharad
c20b688a3f
Merge master into next.
2018-11-23 16:36:31 +00:00
Geoffrey White
0a27022dd4
Merge pull request #523 from jbj/placement-new-never-freed
...
C++: Detect non-allocating placement new in cpp/memory-never-freed
2018-11-23 09:40:11 +00:00
Jonas Jensen
da26b4f856
C++: Accept test changes for IR
...
This test was failing due to a semantic merge conflict between #509 ,
which added `UninitializedInstruction`, and #517 , which added new test
code that would get `UninitializedInstruction`s in it after merging with #509 .
2018-11-22 13:52:33 +01:00
Jonas Jensen
75873bb4a6
C++: Detect non-allocating placement new
...
This adds a `NewOrNewArrayExpr.getPlacementPointer` predicate and uses
it in `Alloc.qll` to detect when a `new`-expression is not an
allocation.
User-defined replacements for `operator new` may not be allocations
either, but the code continues to assume that they are. It's possible
that we want to change this assumption in the future or leave it up to
individual queries to decide on which side to err. It's hard to
statically tell whether `operator new` has been overloaded in a
particular file because it can be overloaded by a definition that is not
in scope but is only linked together with that file.
2018-11-22 11:31:19 +01:00
Jonas Jensen
e062851709
Merge pull request #517 from dave-bartolomeo/dave/IRFilter
...
C++: Don't generate IR for functions with bad ASTs
2018-11-22 10:02:18 +01:00
Dave Bartolomeo
97fd7b46cc
C++: Add tests for filtering bad ASTs
2018-11-21 16:39:08 -08:00
ian-semmle
366934f884
Merge pull request #350 from geoffw0/cpp-205-detail
...
CPP: Add detail to the CPP-205 test
2018-11-21 13:30:53 +00:00
Dave Bartolomeo
3715215b3f
C++: Add IR support for ConditionalDeclExpr
...
Also fixes several places in the library that weren't handling `ConditionalDeclExpr` correctly.
2018-11-21 00:14:44 -08:00
Dave Bartolomeo
07f9fe6ee4
C++: Add Uninitialized instruction for list-initialized variables
...
This commit inserts an `Uninitialized` instruction to "initialize" a local variable when that variable is initialized with an initializer list. This ensures that there is always a definition of the whole variable before any read or write to part of that variable.
This change appears in a different form in @rdmarsh2's Chi node PR, but I needed to refactor the initialization code anyway to handle ConditionDeclExpr.
2018-11-20 16:12:44 -08:00
Geoffrey White
342164ff71
CPP: Clean up / normalize some test code.
2018-11-20 09:50:59 +00:00
Aditya Sharad
f0715b09e1
Merge master into next.
2018-11-14 10:06:27 +00:00
Jonas Jensen
cd874f7982
Merge pull request #454 from geoffw0/move-tests
...
CPP: Move the tests from library-tests/queries
2018-11-13 10:19:56 +01:00
Geoffrey White
1d464ae35d
CPP: Merge the ExprHasNoEffect tests.
2018-11-12 16:26:50 +00:00
Geoffrey White
1417929cdf
CPP: Merge the Todo/FixmeComments tests.
2018-11-12 16:26:50 +00:00
Geoffrey White
03cad6c084
CPP: Move the AV Rule 97 test.
2018-11-12 16:07:03 +00:00
Geoffrey White
2d665e51d0
CPP: Move the BitwiseSignCheck.ql test.
2018-11-12 16:07:03 +00:00
Jonas Jensen
0cb09b113f
Merge pull request #251 from rdmarsh2/rdmarsh/cpp/sign-analysis
...
C++: Sign analysis library
2018-11-12 15:23:18 +01:00
Jonas Jensen
1500237009
Merge remote-tracking branch 'upstream/master' into mergeback-20181112
2018-11-12 13:24:27 +01:00
Jonas Jensen
0caf0f1f15
Merge pull request #430 from geoffw0/exprtemplate
...
CPP: Exclude template code from ExprHasNoEffect.ql
2018-11-12 09:27:36 +01:00
Aditya Sharad
761e5efd60
Merge master into next.
...
JavaScript semantic conflicts fixed by referring to the `LegacyLanguage` enum.
C++ conflicts fixed by accepting Qltest output.
2018-11-09 18:49:35 +00:00
Robert Marsh
d9495da225
C++: fix test
2018-11-09 10:15:28 -08:00
Geoffrey White
09782d145e
CPP: Annotate expr_has_no_effect test.
2018-11-09 17:23:59 +00:00
Geoffrey White
3f0e28aea9
CPP: Fix additional expr_has_no_effect test.
2018-11-09 17:23:59 +00:00
Robert Marsh
4fdc992cd9
C++: IRGuards uses Operand; fix CP in SignAnalysis
2018-11-08 14:43:51 -08:00
Robert Marsh
0d9e2098f2
C++: test for bounded bounds in sign analysis
2018-11-08 11:38:34 -08:00
Robert Marsh
1d7e802157
C++: move sign analysis to new Operand type
2018-11-07 16:07:37 -08:00
Dave Bartolomeo
5bf88f0f0a
C++: Fix mixed tabs and spaces in non-test code
2018-11-07 11:32:17 -08:00
Jonas Jensen
9ee4d3b187
Merge pull request #378 from nickrolfe/uuidof0
...
C++: handle __uuidof(0)
2018-11-07 12:53:44 +01:00
Jonas Jensen
6f2fd05480
Merge pull request #354 from geoffw0/return-exception
...
CPP: Remove successor edges after calls to non-returning functions
2018-11-07 09:24:41 +01:00
Robert Marsh
9d2d381e68
C++: test fixes for sign analysis
2018-11-06 12:02:39 -08:00
Robert Marsh
554fea46c7
C++: Sign analysis for casts and unsigned integers
2018-11-06 12:02:38 -08:00
Robert Marsh
d1ae939c9c
C++: use guards and operands in sign analysis
2018-11-06 12:02:38 -08:00
Robert Marsh
a3c6b8e575
C++: port sign analysis library from Java
2018-11-06 12:02:38 -08:00
Geoffrey White
ee4cfe8eb7
CPP: Update expected output for changes elsewhere.
2018-11-06 17:58:33 +00:00
Geoffrey White
e6e0d69b7d
CPP: Re-apply effect of discover_walk.
2018-11-06 17:53:18 +00:00
Geoffrey White
301c133bef
CPP: More descriptive.
2018-11-06 17:53:18 +00:00