Commit Graph

3528 Commits

Author SHA1 Message Date
Geoffrey White
f0e6730eba Update cpp/ql/src/semmle/code/cpp/Union.qll
Co-Authored-By: Jonas Jensen <jbj@knef.dk>
2019-08-08 17:11:05 +01:00
Geoffrey White
a1cf7b50a9 Update cpp/ql/src/semmle/code/cpp/Struct.qll
Co-Authored-By: Jonas Jensen <jbj@knef.dk>
2019-08-08 17:10:52 +01:00
Geoffrey White
7086004f8a Update cpp/ql/src/semmle/code/cpp/Union.qll
Co-Authored-By: Jonas Jensen <jbj@knef.dk>
2019-08-08 17:06:44 +01:00
Geoffrey White
b3bcc33bce Update cpp/ql/src/semmle/code/cpp/Struct.qll
Co-Authored-By: Jonas Jensen <jbj@knef.dk>
2019-08-08 17:06:17 +01:00
Geoffrey White
be25338e44 CPP: QLDoc Function.qll. 2019-08-08 15:02:55 +01:00
Jonas Jensen
2c6dbacd2b C++: Tidy up DataFlowUtil.qll 2019-08-08 14:05:03 +02:00
Jonas Jensen
0a13d7a337 C++: PartialDefNode -> PartialDefinitionNode 2019-08-08 14:05:03 +02:00
Jonas Jensen
98d6f3cada C++: Unify partial def and def-by-ref
This removes a lot of flow steps, but it all seems to be flow that was
present twice: both exiting a `PartialDefNode` and a
`DefinitionByReferenceNode`. All `DefinitionByReferenceNode`s are now
`PartialDefNode`s.
2019-08-08 14:05:03 +02:00
Jonas Jensen
5370e7d693 C++: Remove TThisVar
There's no need to model `this` as a variable because it's never
reassigned.
2019-08-08 14:05:03 +02:00
Jonas Jensen
861964337c C++: Undo autoformat of FlowVar.qll
The formatting changes were good, but were tangled in with other
changes, making it hard to review this file.
2019-08-08 14:05:03 +02:00
Pavel Avgustinov
835e495e7c Remove unused args 2019-08-08 14:05:03 +02:00
Pavel Avgustinov
dccc0f4db1 Add handling of post-constructor-call nodes 2019-08-08 14:05:03 +02:00
Pavel Avgustinov
9e6c240ee2 Override getFunction on PostUpdateNodes 2019-08-08 14:05:03 +02:00
Pavel Avgustinov
abcaeded23 Only split BBs for var-defining partial-defs 2019-08-08 14:05:03 +02:00
Pavel Avgustinov
46e6b587bc Exclude partial defs from ordinary SSA handling 2019-08-08 14:05:03 +02:00
Pavel Avgustinov
5fbe982084 Add missing getType override 2019-08-08 14:05:03 +02:00
Pavel Avgustinov
1b9a2d3d87 Reduce partial definition flow edge redundancy 2019-08-08 14:05:02 +02:00
Pavel Avgustinov
bb8eb235e0 Handle constructor call qualifiers 2019-08-08 14:05:02 +02:00
Pavel Avgustinov
66164eb06f Propagate data flow through NewExprs 2019-08-08 14:05:02 +02:00
Pavel Avgustinov
623652247d Introduce partial-definition nodes 2019-08-08 14:05:02 +02:00
Pavel Avgustinov
15b56d93bd No implicit instances for constructor call 2019-08-08 14:05:02 +02:00
Pavel Avgustinov
04454ef184 Begin extending dataflow node model for field flow (and other stuff) 2019-08-08 14:05:02 +02:00
Jonas Jensen
3b2ef44195 Merge pull request #1710 from geoffw0/oddsandends
CPP: Delete invalid URL
2019-08-07 15:02:37 +02:00
Geoffrey White
d1093cae2e CPP: Delete invalid URL and strange comment. 2019-08-07 09:25:36 +01:00
yh-semmle
033879f5a6 Merge pull request #1639 from aschackmull/java/in-out-barriers
Java/C++/C# DataFlow: Add support for in/out barriers on sources and sinks.
2019-08-07 01:07:19 -04:00
Jonas Jensen
077f372f98 Merge pull request #1570 from geoffw0/qldoceg
CPP: Add syntax examples to QLDoc in Class.qll.
2019-08-06 21:17:45 +02:00
zlaski-semmle
3ad0bcf3de Merge pull request #1701 from Semmle/geoffw0-patch-1
CPP: QLDoc tidy up Declaration.qll
2019-08-06 11:53:20 -07:00
Geoffrey White
33d38ac090 CPP: QLDoc Enum.qll. 2019-08-06 15:38:10 +01:00
Geoffrey White
5d4fba4446 CPP: QLDoc examples in Struct.qll and Union.qll. 2019-08-06 15:36:38 +01:00
Nick Rolfe
257daddf3b Merge pull request #1702 from mgrettondann/cpp-add-thread_local-support-external
C++: add thread_local support
2019-08-06 14:51:27 +01:00
Jonas Jensen
b4b940ae50 C++ IR: Remove unused predicate 2019-08-06 14:50:59 +02:00
Jonas Jensen
aab6c072c7 C++ IR: Remove fields from InstructionTag
Like array indexes were seemingly not needed in instruction tags, the
same appears to apply to fields.
2019-08-06 14:50:59 +02:00
Jonas Jensen
d378da33e8 C++ IR: Fix performance of large array value init
There were two problems here.

1. The inline predicates `isInitialized` and `isValueInitialized` on
   `ArrayAggregateLiteral` caused their callers to materialize every
   `int` that was a valid index into the array. This was slow on huge
   value-initialized arrays.
2. The `isInitialized` predicate was used in the `TInstructionTag` IPA
   type, creating a numbered tuple for each integer in it. This seemed
   to be entirely unnecessary since the `TranslatedElement`s using those
   tags were already indexed appropriately.
2019-08-06 14:50:57 +02:00
Geoffrey White
73736675ce CPP: Bits and bobs. 2019-08-06 13:32:04 +01:00
Geoffrey White
ab823f45fc CPP: class, struct or union where appropriate. 2019-08-06 13:32:04 +01:00
Geoffrey White
8d22eb87f0 CPP: Improvements to qldoc. 2019-08-06 13:29:42 +01:00
Geoffrey White
4dd1267d6d CPP: Bracket consistency. 2019-08-06 13:29:42 +01:00
Geoffrey White
cf1869cfaa CPP: Indentation. 2019-08-06 13:29:42 +01:00
Geoffrey White
0029a33ee6 CPP: Deprecate Interface and remove the test. 2019-08-06 13:29:42 +01:00
Geoffrey White
49f6ac7358 CPP: Clean up Class, ClassDerivation and ClassTemplateSpecialization QLDoc. 2019-08-06 13:29:42 +01:00
Geoffrey White
2b408490a1 CPP: Implement simple changes. 2019-08-06 13:29:42 +01:00
Geoffrey White
99880bc4ea CPP: Add syntax examples for Class.qll. 2019-08-06 13:29:42 +01:00
Matthew Gretton-Dann
90cfde53b3 C++: Add thread_local support - typo fix 2019-08-06 12:09:43 +01:00
Matthew Gretton-Dann
0e50a143af C++: Improve ReturnStackAllocatedMemory query
Update the ReturnStackAllocatedMmeory query to not give a false positive
for thread_local variables.
2019-08-06 11:22:32 +01:00
Matthew Gretton-Dann
a733625646 C++: Add Variable.isThreadLocal() 2019-08-06 11:22:26 +01:00
Geoffrey White
de9b936d76 QLDoc tidy up Declaration.qll
Mostly just adding backticks in QLDoc comments.  I'm trying out the edit-in-github workflow @jbj showed me, which seems like it will be a quicker way to do minor changes like these.
2019-08-06 10:54:20 +01:00
Anders Schack-Mulligen
a80cb262fc Java/C++/C#: Elaborate qldoc. 2019-08-05 16:28:25 +02:00
Anders Schack-Mulligen
9ebb83497d Java/C++/C#: Fix small mistake. 2019-08-05 15:34:12 +02:00
Anders Schack-Mulligen
2dc83c539c Java/C++/C#: Sync dataflow. 2019-08-05 12:07:32 +02:00
Dave Bartolomeo
6370391dbd C++: Add sanity test for definitions that don't dominate their uses. 2019-08-01 15:01:42 -07:00