Commit Graph

1556 Commits

Author SHA1 Message Date
Mathias Vorreiter Pedersen
f5113b1932 C++: Fix internal SCC edges and accept test changes. 2026-05-19 15:39:32 +01:00
Mathias Vorreiter Pedersen
c6ce13a012 C++: Simplify recursion in 'PhiCycle::isCertain' and do not restrict the definition to be a 'PhiNode'. 2026-05-19 15:27:23 +01:00
Mathias Vorreiter Pedersen
d93de54397 C++: Consistent use of 'this.getIndirection()' in 'toString'. 2026-05-19 12:16:37 +01:00
Mathias Vorreiter Pedersen
25c4d9d09b Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-13 13:27:04 +01:00
Mathias Vorreiter Pedersen
f40d42c575 C++: Perform an SCC reduction to simulate greatest fixed-point semantics. 2026-05-13 13:14:20 +01:00
Mathias Vorreiter Pedersen
8585bb616d C++: Some writes are always certain regardless of the address. 2026-05-13 13:14:13 +01:00
Mathias Vorreiter Pedersen
fc80a2472d C++: Slightly refactor certainty computation with a newtype. 2026-05-13 13:09:12 +01:00
Mathias Vorreiter Pedersen
6d5d57acca C++: Add missing overrides. 2026-05-13 13:09:10 +01:00
Mathias Vorreiter Pedersen
b753e7d228 C++: Make 'toString' on 'Ssa::Definition' more clear. 2026-05-13 13:09:01 +01:00
Mathias Vorreiter Pedersen
14efb4502b C++: Fix join in getVariable. 2026-04-23 12:10:09 +01:00
Mathias Vorreiter Pedersen
5db069eb56 C++: Fix more consistency errors. 2026-03-30 12:08:08 +01:00
Mathias Vorreiter Pedersen
599b7a6653 C++: Handle fields in 'getThisType'. 2026-03-30 11:00:40 +01:00
Mathias Vorreiter Pedersen
9cb8edb41a C++: Change 'Function' to 'Declaration' in a few places to handle enclosing callables being fields. 2026-03-30 11:00:38 +01:00
Mathias Vorreiter Pedersen
eb35fa0d5e C++: Unify 'isSourceParameterOf' for this parameters with the implementation for positional parameters. 2026-03-30 11:00:37 +01:00
Jeroen Ketema
8349bd50ba Merge pull request #21391 from jketema/jketema/nsdmi
C++: Handle field initialization via NSDMI in IR generation
2026-03-30 11:35:06 +02:00
Mathias Vorreiter Pedersen
56153d583e C++: Switch to doublyBoundedFastTC when computing virtual dispatch edges and inline pairCand to avoid a giant tuple explosion. 2026-03-26 17:31:18 +00:00
Jeroen Ketema
ef780c15fb C++: NSDMI fixes
* Do not generate IR for field initializers from uninstantiated templates.
* Add forgotten case to `TranslatedDeclarationEntry`
2026-03-25 16:34:02 +01:00
Jeroen Ketema
dad517ff5e C++: Fix typo 2026-03-24 16:16:14 +01:00
Jeroen Ketema
49c5cc05ac Update cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-24 16:09:33 +01:00
Jeroen Ketema
b554d7dd16 C++: Fix QL-for-QL warnings 2026-03-24 15:33:35 +01:00
Jeroen Ketema
22eda4ef0a C++: Add call side effects for default field initializations to the IR 2026-03-24 15:33:32 +01:00
Jeroen Ketema
e986d8922a C++: Call functions for NSDMI initialization
Currently missing: side-effect information for the functions
2026-03-24 15:33:30 +01:00
Jeroen Ketema
b91a52a050 C++: Allow getInstructionFunction to yield a declaration 2026-03-24 15:33:29 +01:00
Jeroen Ketema
09f930f4e8 C++: Generate initialization function for each NSDMI 2026-03-24 15:33:25 +01:00
Jeroen Ketema
07603a835a C++: Rename CallOrAllocationExpr to something more generic 2026-03-24 15:33:20 +01:00
Mathias Vorreiter Pedersen
b5723bd75d Merge branch 'main' into more-public-dataflow-apis 2026-03-23 13:43:01 +00:00
Mathias Vorreiter Pedersen
1363c54a9f C++: Add 'asIndirectInstruction' as a public predicate. 2026-03-23 13:28:33 +00:00
Mathias Vorreiter Pedersen
09caeca7e9 C++: Move parameter indirection nodes into the public API. 2026-03-23 13:27:20 +00:00
Jeongsoo Lee
356905ba36 Merge branch 'jeongsoolee09/add-getIndirectionIndex' of github.com:github/codeql into jeongsoolee09/add-getIndirectionIndex 2026-03-19 15:51:37 -07:00
Jeongsoo Lee
dc291ffad7 Address code review 2026-03-19 15:51:00 -07:00
Jeongsoo Lee
d191d09c55 Apply suggestions from code review
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2026-03-19 15:48:47 -07:00
Jeongsoo Lee
3f9ad14473 Factor out common code into an abstract private class 2026-03-16 14:11:34 -07:00
Jeongsoo Lee
d3066af2e2 Create IndirectUninitializedNode and add a bridge from it to LocalVariable
This way the changes do not alter the meaning of `UninitializedNode`.
In the meantime, the code still provides a specialized `Node` type
`IndirectUninitializedNode` to access the nodes behind levels of
indirection.
2026-03-13 11:39:57 -07:00
Jeongsoo Lee
8c03136c25 Revert "Expose the indirection index"
This reverts commit 6c792e69b3.
2026-03-13 10:11:40 -07:00
Jeongsoo Lee
6c792e69b3 Expose the indirection index 2026-03-11 13:53:24 -07:00
Mathias Vorreiter Pedersen
db33dadb8e C++: Add QLDoc. Also actually implement 'uninitializedNode' since there's no reason not to do so. 2026-02-27 17:36:57 +00:00
Mathias Vorreiter Pedersen
1139059d77 C++: Fix imports. 2026-02-27 17:12:00 +00:00
Mathias Vorreiter Pedersen
92f26027e1 C++: Remove outdated comment. 2026-02-27 16:32:04 +00:00
Mathias Vorreiter Pedersen
85875c2879 C++: Remove unnecessary recursion through Node.toString. 2026-02-27 16:32:01 +00:00
Mathias Vorreiter Pedersen
5d75b255a8 C++: Remove IR re-evaluation. 2026-02-27 16:31:56 +00:00
Mathias Vorreiter Pedersen
26e8701ae3 C++: Fix a few qualifiers. 2026-02-27 16:22:51 +00:00
Mathias Vorreiter Pedersen
cdb41588a9 C++: Fix some imports. 2026-02-27 16:22:49 +00:00
Mathias Vorreiter Pedersen
1eccb8ea93 C++: Add a cache module to taint-tracking and ensure they happen in the same stage as the dataflow stage. 2026-02-27 16:22:47 +00:00
Mathias Vorreiter Pedersen
66611323e2 C++: No need to keep this in its own module now. 2026-02-27 16:22:44 +00:00
Mathias Vorreiter Pedersen
d804fc5168 C++: Remove the 'ExprFlowCached' module. Instead we have a single cached module. 2026-02-27 16:22:42 +00:00
Mathias Vorreiter Pedersen
f223c957ba C++: Cache 'toString' and 'getLocation'. 2026-02-27 16:22:39 +00:00
Mathias Vorreiter Pedersen
86bd0c0dc3 C++: Move a bunch of newtypes and predicates into a cached module. 2026-02-27 16:22:36 +00:00
Mathias Vorreiter Pedersen
6e0c5615fe C++: Move a bunch non-public dataflow node subtypes. 2026-02-27 16:22:33 +00:00
Mathias Vorreiter Pedersen
edde4149aa C++: Move 'Node' into the public module. 2026-02-27 16:22:29 +00:00
Mathias Vorreiter Pedersen
87478d016a C++: Move 'FieldAddress' and 'conversionFlow'. 2026-02-27 16:22:26 +00:00