Jonas Jensen
875daae84b
Merge pull request #3151 from dbartol/dbartol/floats
...
C++: Better support for complex numbers in IR and AST
2020-04-20 16:27:20 +02:00
Mathias Vorreiter Pedersen
8be1bfe8d0
C++: Add comments and accept expected dataflow sanity failures
2020-04-20 14:13:12 +02:00
Mathias Vorreiter Pedersen
7ba4526f50
C++: Add noinline to StdString constructor
2020-04-20 13:36:41 +02:00
Mathias Vorreiter Pedersen
e0cd595d54
C++: Reduce intermediate tuple counts
2020-04-20 11:46:10 +02:00
Mathias Vorreiter Pedersen
a6e619ce5b
C++: Add field flow through single-field structs and accept tests
2020-04-20 08:52:46 +02:00
Mathias Vorreiter Pedersen
6fca23bc8b
C++: Demonstrate lack of flow through single-field structs
2020-04-20 08:50:31 +02:00
Dave Bartolomeo
8041b74f1c
C++: Fix formatting
2020-04-18 09:56:38 -04:00
Dave Bartolomeo
de5abdb29a
C++/C#: Add missing QLDoc
2020-04-18 09:55:35 -04:00
Robert Marsh
9008084b74
Merge pull request #3272 from dbartol/dbartol/DumpFixes
...
C++: A couple of fixes for IR dumps
2020-04-17 11:49:52 -07:00
Geoffrey White
a7c22db989
C++: Autoformat.
2020-04-17 18:50:41 +01:00
Geoffrey White
de751b0b75
C++: Correct UnsignedBitwiseAndExpr.
2020-04-17 17:10:59 +01:00
Geoffrey White
01d3257d72
C++: Add test cases involving casts.
2020-04-17 17:01:58 +01:00
Mathias Vorreiter Pedersen
ba0429cf01
Merge branch 'master' into ir-flow-fields
2020-04-17 13:57:12 +02:00
Tom Hvitved
1b6e978a62
Data flow: Sync files
2020-04-17 13:49:06 +02:00
Mathias Vorreiter Pedersen
8c03423f3e
C++: Accept test output
2020-04-17 12:03:16 +02:00
Jonas Jensen
c970e8a52e
Merge remote-tracking branch 'upstream/rc/1.24' into mergeback-2020-04-17
2020-04-17 10:42:27 +02:00
Dave Bartolomeo
c705797a2d
C++: IR construction for _Imaginary types
...
Includes a fairly exhaustive test case for arithmetic operations involving `_Complex` and/or `_Imaginary` types. Thanks to these new tests, I discovered that the extractor treats certain arithmetic operations on `_Imaginary` types as separate expression kinds, so I added support for those kinds in IR construction.
2020-04-16 11:58:09 -04:00
Mathias Vorreiter Pedersen
62e2ffe623
C++: Make PartialDefinitionNode private and add/update comments based on review comments
2020-04-16 17:19:12 +02:00
Dave Bartolomeo
3dd3b5304e
Merge remote-tracking branch 'upstream/master' into dbartol/floats
2020-04-16 08:44:41 -04:00
Geoffrey White
24d7446976
C++: Basic model of '&' and '>>' in SimpleRangeAnalysis.
2020-04-16 11:17:29 +01:00
Geoffrey White
2acbdecfdb
C++: Add test cases.
2020-04-16 11:11:58 +01:00
Robert Marsh
d0e047186a
C++: add remote flow models for fread and gets
2020-04-15 18:01:04 -07:00
Robert Marsh
a006bd3117
C++: add model-based RemoteFlowSource
2020-04-15 17:46:00 -07:00
Dave Bartolomeo
2264ec714f
C++: Better type preservation in getVariableType()
...
`getVariableType()` is used to compute the actual semantic type of a variable from its declared type. That's where we handle pointer and function decay for parameters, and it's also where we handle arrays of unknown bound initialized with an initializer of known bound.
Previously, even if neither of the above situations applied, the type that we returned was the `getUnspecifiedType()` of the variable. This meant that, for example, `const char* p` would be treated as `char *`. This is inconsistent with how we handle types elsewhere in IR construction, where we preserve typedefs and cv-qualifiers when creating the `CppType` of an `IRVariable`, `Instruction`, or `Operand`.
The only visible effect this fix has is to fix the inferred result type for `Phi` instructions for variables affect by this change in `getVariableType()` behavior. Previously, we would see the variable accessed as both `const char*` and as `char*`, so we'd fall back to the canonical pointer type, which is `decltype(nullptr)`. Now, we see the same type for all accesses to the variable, so we use that type as the type of the SSA memory location and as the result type of the `Phi` instruction.
2020-04-15 18:41:24 -04:00
Dave Bartolomeo
90dc14c56e
C++/C#: Fix phantom Chi definitions in PrintSSA
...
When `PrintSSA.qll` is imported, IR dumps will be annotated with the alias analysis information used during SSA construction. When printing this information, we incorrectly treated instructions at offset -1, which should only be `Phi` instructions, as `Chi` instructions for the instruction at offset 0. This produced phantom annotations, but did not affect the correctness of the actual IR.
2020-04-15 18:24:11 -04:00
Mathias Vorreiter Pedersen
86ba03bea8
Merge pull request #3256 from Semmle/rdmarsh/cpp/add-qldoc-1
...
C++: Add QLdoc to some AST methods (Class.qll-Diagnostics.qll)
2020-04-15 21:46:36 +02:00
Jonas Jensen
aa8f30cd83
Merge pull request #3268 from MathiasVP/ql-doc-negativitiy
...
C++: Add QLDoc to public predicates in Negativity.qll
2020-04-15 15:12:07 +02:00
Mathias Vorreiter Pedersen
3d0ac53266
Apply suggestions from code review
...
Co-Authored-By: Jonas Jensen <jbj@github.com >
2020-04-15 14:01:49 +02:00
Geoffrey White
b8acd702d6
C++: Rename the test for consistency.
2020-04-15 12:49:07 +01:00
Mathias Vorreiter Pedersen
f02feac33a
C++: Add flow from #3220
2020-04-15 11:34:19 +02:00
Geoffrey White
2aa64db40e
Merge remote-tracking branch 'upstream/rc/1.24' into alloc-size2
2020-04-15 10:09:54 +01:00
Mathias Vorreiter Pedersen
209e084820
Merge branch 'master' into ir-flow-fields
2020-04-15 10:51:45 +02:00
Mathias Vorreiter Pedersen
a2fbe9e9da
C++: Add QLDoc to public predicates in Negativity
2020-04-15 08:18:03 +02:00
Jonas Jensen
b603a3da64
Merge pull request #3259 from MathiasVP/ql-doc-fileclosed-loopbounds-memoryfreed
...
C++: QLDoc for FileClosed, LoopBounds and MemoryFreed
2020-04-15 08:08:04 +02:00
Jonas Jensen
6eac35c753
Merge pull request #3264 from Semmle/merge-rc/1.24
...
Merge rc/1.24 into master.
2020-04-15 07:56:58 +02:00
Jonas Jensen
ae11e7b72c
Merge pull request #3265 from Semmle/rdmarsh/cpp/deprecate-isDefined
...
C++: deprecate Declaration::isDefined()
2020-04-15 07:53:19 +02:00
Chris Gavin
4e981d8e70
Merge rc/1.24 into master.
2020-04-14 21:30:29 +01: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
279467654e
C++: Make test functions return void
2020-04-14 14:17:56 -04: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
Robert Marsh
b5c0a0f77d
C++: remove all uses of Declaration::isDefined
2020-04-14 10:54:06 -07:00
Robert Marsh
5ee60762fe
C++: deprecate Declaration::isDefined()
2020-04-14 10:49:52 -07:00
Robert Marsh
7f5b3de665
C++: autoformat
2020-04-14 10:36:53 -07:00
Mathias Vorreiter Pedersen
092145d571
Update cpp/ql/src/Critical/FileClosed.qll
...
Co-Authored-By: Jonas Jensen <jbj@github.com >
2020-04-14 18:38:33 +02:00
Dave Bartolomeo
125a09ce6e
C++: Fix IR generation of return of void expression
2020-04-14 11:40:33 -04:00
Dave Bartolomeo
83cd78c6cf
C++: Fix test output
2020-04-14 10:54:00 -04:00
Felicity Chapman
c570ebe5bd
Merge branch 'rc/1.24' into update-references
2020-04-14 14:10:26 +01:00
Mathias Vorreiter Pedersen
419b511ddb
C++: Format
2020-04-14 11:39:44 +02:00
Mathias Vorreiter Pedersen
d8dcbe3cbd
C++: QLDoc for FileClosed, LoopBounds and MemoryFreed
2020-04-14 10:21:11 +02:00
Robert Marsh
10824f9612
C++: add method qldoc in Class.qll
2020-04-13 15:49:37 -07:00