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
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
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
0caf0f1f15
Merge pull request #430 from geoffw0/exprtemplate
...
CPP: Exclude template code from ExprHasNoEffect.ql
2018-11-12 09:27:36 +01: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
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
a3dfa3140c
CPP: Make Handlers always begin a BasicBlock.
2018-11-01 15:27:43 +00:00
Jonas Jensen
ea601b2dc0
Merge pull request #352 from dave-bartolomeo/dave/Operands
...
C++: Operands as IPA types
2018-11-01 10:12:38 +01:00
Geoffrey White
1092cb97e5
CPP: Have reachability flow to the Handler as well as the CAtchBlock of an exception.
2018-10-30 14:27:22 +00:00
Geoffrey White
6427e9658b
CPP: Remove successor edges from non-returning functions from the control flow graph.
2018-10-30 14:25:32 +00:00
Geoffrey White
f2ba627291
CPP: Extend the c++_exceptions test.
2018-10-30 14:11:48 +00:00
Ian Lynagh
09959cbbfc
C++: Simplify a test's query
...
This test predated Function.getFullSignature()
2018-10-26 15:08:18 +01:00
Dave Bartolomeo
f278f4fa47
C++: Operands as IPA types
...
@rdmarsh2 has been working on various queries and libraries on top of the IR, and has pointed out that having to always refer to an operand of an instruction by the pair of (instruction, operandTag) makes using the IR a bit clunky. This PR adds a new `Operand` IPA type that represents an operand of an instruction. `OperandTag` still exists, but is now an internal type used only in the IR implementation.
2018-10-23 14:58:44 -07:00
Aditya Sharad
0882eb7bb3
Merge rc/1.18 into master.
2018-10-01 12:08:16 +01:00
Dave Bartolomeo
37091953dc
C++: Fix test expectations after rebase
2018-09-30 08:25:42 -07:00
Jonas Jensen
16004facd9
Merge pull request #197 from rdmarsh2/rdmarsh/cpp/ir-guards
...
IR-based guards library
2018-09-28 21:14:08 +02:00
Robert Marsh
93732d8b5a
C++: Combine IR guard tests into one ql file
...
This is motivated by test performance; IR compilation happens separately
for each test and takes a bit over a minute, so combining these 8 tests
saves about 10 minutes of test running.
2018-09-27 13:53:02 -07:00
Robert Marsh
b6cc6a3b23
C++: Fix BinaryLogicalOperators always being guards
2018-09-27 13:09:15 -07:00
Robert Marsh
f323fa1df8
C++: test changes from previous commit
...
The IR for the conversion to bool results in a comparison where the left
hand side is not the result of any expression in the AST, so they can't
be usefully converted back to the AST
2018-09-27 13:06:57 -07:00
Ian Lynagh
fd91374b2f
C++: Update test output
2018-09-26 18:22:20 +01:00
Dave Bartolomeo
1f36f5552f
Normalize all text files to LF
...
Use `* text=auto eol=lf`
2018-09-23 16:24:31 -07:00
Dave Bartolomeo
aa267c8302
C++: Force LF for .c,.cpp,.h,.hpp
2018-09-23 16:23:52 -07:00
Jonas Jensen
e2a17e9740
Merge remote-tracking branch 'upstream/rc/1.18' into mergeback-20180921_104253
2018-09-21 10:45:54 +02:00
Robert Marsh
cc97cf9297
C++: add isReachableFromFunctionEntry
2018-09-20 10:06:19 -07:00
Robert Marsh
755e21d355
C++: improve conversion handling in IRGuards.qll
2018-09-20 10:06:18 -07:00
Robert Marsh
ad8f30d2f7
C++: accept test output and add IR guards tests
2018-09-20 10:06:17 -07:00
Robert Marsh
d7e630b3c6
C++: Add IR-based port of Guards library
...
For ease of reviewing, I've checked in the .expected files from the
AST-based guards library. The next commit accepts output for these tests
and adds tests that use getAST rather than the translation layer.
2018-09-20 10:06:16 -07:00
Robert Marsh
69962bd06c
Merge pull request #203 from dave-bartolomeo/dave/GVN
...
C++: Initial attempt at IR-based value numbering
2018-09-20 10:00:45 -07:00
Dave Bartolomeo
5a25602c28
C++: Move GVN out of "internal" directory
2018-09-20 08:21:15 -07:00
Dave Bartolomeo
27cee9bd80
C++: Handle inheritance conversions in IR GVN
2018-09-20 08:00:38 -07:00
Dave Bartolomeo
43f0289f0f
C++: Remove Phi instructions from previous IR generations
...
It turns out that when building aliased SSA IR, we were still keeping around the Phi instructions from unaliased SSA IR. These leftover instructions didn't show up in dumps because they were not assigned to a block. However, when dumping additional instruction properties, they would show up as a top-level node in the dump, without a label.
2018-09-18 11:28:09 -07:00
Jonas Jensen
86fe0ce42e
Merge pull request #107 from rdmarsh2/rdmarsh/cpp/HashCons
...
C++: HashCons library
2018-09-18 11:45:26 +02:00