Jeroen Ketema
29dd56f83f
C++: Make formatting of switch statement examples more uniform
2026-04-28 16:36:54 +02:00
Jeroen Ketema
0bc23c3af1
C++: Match example with text
2026-04-28 16:33:17 +02:00
Jeroen Ketema
f634b328ee
C++: Fix join-order problem in getNextSwitchCase
...
Before on `neovim`:
```
[2026-04-28 14:54:20] Evaluated non-recursive predicate Stmt::SwitchCase.getNextSwitchCase/0#dispred#2d3cb6d3@ac8178o2 in 68ms (size: 20848).
Evaluated relational algebra for predicate Stmt::SwitchCase.getNextSwitchCase/0#dispred#2d3cb6d3@ac8178o2 with tuple counts:
21888 ~0% {2} r1 = SCAN switch_case OUTPUT In.2, In.0
21888 ~0% {4} | JOIN WITH #switch_caseMerge_21#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.0, _, Rhs.1
21888 ~4% {3} | REWRITE WITH Tmp.2 := 1, Out.2 := (In.3 - Tmp.2) KEEPING 3
24091916 ~0% {3} | JOIN WITH switch_case ON FIRST 1 OUTPUT Lhs.2, Rhs.2, Lhs.1
20848 ~2% {2} | JOIN WITH #switch_caseMerge_12#join_rhs ON FIRST 2 OUTPUT Lhs.1, Lhs.2
return r1
```
After:
```
[2026-04-28 15:30:53] Evaluated non-recursive predicate Stmt::SwitchCase.getNextSwitchCase/0#dispred#2d3cb6d3@bf9801oj in 0ms (size: 20848).
Evaluated relational algebra for predicate Stmt::SwitchCase.getNextSwitchCase/0#dispred#2d3cb6d3@bf9801oj with tuple counts:
21888 ~0% {4} r1 = SCAN switch_case OUTPUT In.0, _, In.2, In.1
21888 ~1% {3} | REWRITE WITH Tmp.1 := 1, Out.1 := (In.3 + Tmp.1) KEEPING 3
20848 ~2% {2} | JOIN WITH switch_case ON FIRST 2 OUTPUT Lhs.2, Rhs.2
return r1
```
2026-04-28 15:44:53 +02:00
Jeroen Ketema
fa8c1d6226
C++: Add a getSwitchCase predicate to SwitchStmt
2026-04-28 15:44:12 +02:00
Jeroen Ketema
ae89b2ee79
Merge pull request #21747 from jketema/join-order
...
Fix two `QualifiedName` join orders
2026-04-24 08:05:24 +02:00
Mathias Vorreiter Pedersen
14efb4502b
C++: Fix join in getVariable.
2026-04-23 12:10:09 +01:00
Jeroen Ketema
076b020dc4
Fix two QualifiedName join orders
...
Before on `StanfordLegion__legion` with `cpp/throwing-pointer`:
```
Pipeline standard for QualifiedName::Namespace.getQualifiedName/0#cbc0648a@7ff329j5 was evaluated in 2 iterations totaling 0ms (delta sizes total: 70).
162061 ~0% {2} r1 = JOIN `QualifiedName::Namespace.getQualifiedName/0#cbc0648a#prev_delta` WITH namespacembrs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
70 ~2% {4} | JOIN WITH namespaces ON FIRST 1 OUTPUT Lhs.0, _, Lhs.1, Rhs.1
70 ~0% {2} | REWRITE WITH Tmp.1 := "::", Out.1 := (In.2 ++ Tmp.1 ++ In.3) KEEPING 2
70 ~0% {2} | AND NOT `QualifiedName::Namespace.getQualifiedName/0#cbc0648a#prev`(FIRST 2)
return r1
Pipeline standard for QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1@cfd47189 was evaluated in 2 iterations totaling 3ms (delta sizes total: 85).
12 ~0% {2} r1 = JOIN `QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1#prev_delta` WITH _#namespace_inlineMerge_#namespacembrsMerge#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
162417 ~0% {2} r2 = JOIN `QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1#prev_delta` WITH namespacembrs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
73 ~1% {4} | JOIN WITH namespaces ON FIRST 1 OUTPUT Lhs.0, _, Lhs.1, Rhs.1
73 ~0% {2} | REWRITE WITH Tmp.1 := "::", Out.1 := (In.2 ++ Tmp.1 ++ In.3) KEEPING 2
85 ~0% {2} r3 = r1 UNION r2
85 ~0% {2} | AND NOT `QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1#prev`(FIRST 2)
return r3
```
After:
```
Pipeline standard for QualifiedName::Namespace.getQualifiedName/0#cbc0648a@91677d3f was evaluated in 2 iterations totaling 0ms (delta sizes total: 70).
70 ~0% {4} r1 = JOIN `QualifiedName::Namespace.getQualifiedName/0#cbc0648a#prev_delta` WITH _#namespacembrsMerge_1#antijoin_rhs_#namespacembrsMerge_10#join_rhs_#namespacesMerge#join_rhs ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1, Rhs.2
70 ~0% {2} | REWRITE WITH Tmp.1 := "::", Out.1 := (In.2 ++ Tmp.1 ++ In.3) KEEPING 2
70 ~0% {2} | AND NOT `QualifiedName::Namespace.getQualifiedName/0#cbc0648a#prev`(FIRST 2)
return r1
Pipeline standard for QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1@3bbc99mb was evaluated in 2 iterations totaling 0ms (delta sizes total: 85).
12 ~0% {2} r1 = JOIN `QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1#prev_delta` WITH _#namespace_inlineMerge_#namespacembrsMerge_1#antijoin_rhs__#namespacembrsMerge_#namespacembrsMerge___#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
73 ~0% {4} r2 = JOIN `QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1#prev_delta` WITH _#namespacembrsMerge_1#antijoin_rhs_#namespacesMerge__#namespacembrsMerge_#namespacembrsMerge_10#joi__#join_rhs ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1, Rhs.2
73 ~1% {2} | REWRITE WITH Tmp.1 := "::", Out.1 := (In.2 ++ Tmp.1 ++ In.3) KEEPING 2
85 ~0% {2} r3 = r1 UNION r2
85 ~0% {2} | AND NOT `QualifiedName::Namespace.getAQualifierForMembers/0#132b16e1#prev`(FIRST 2)
return r3
```
2026-04-23 10:37:12 +02:00
Jeroen Ketema
12868e5140
C++: Remove deprecated code added more than a year ago
2026-04-14 13:03:10 +02:00
Owen Mansel-Chan
7458674470
Merge pull request #21584 from owen-mc/shared/update-mad-comments
...
Shared: update code comments explaining models-as-data format to include barriers and barrier guards
2026-04-14 09:30:28 +01:00
Jeroen Ketema
26715fc95c
C++: Rename rst to convSpec
2026-04-14 08:03:51 +02:00
Jeroen Ketema
19c4b2ff8f
C++: Use getConvSpecString instead of getConvSpecOffset and substring
2026-04-13 15:44:41 +02:00
Jeroen Ketema
b19c648965
C++: Add heuristic for GNU autoconf config files
2026-04-07 10:43:15 +02:00
Mathias Vorreiter Pedersen
43d002e6b5
Merge pull request #21619 from MathiasVP/more-http-remote-flow-sources
...
C++: Add flow sources from Windows' `http.h`
2026-03-31 15:44:39 +01:00
Mathias Vorreiter Pedersen
16a7e39e95
C++: Fix pointer indirection. Currently, this does not have any effect because of a conflation bug in taint-tracking.
2026-03-31 15:26:15 +01:00
Jeroen Ketema
17ab87d1fc
Merge pull request #21618 from jketema/meson-silence
...
C++: Add heuristics for meson configuration files
2026-03-31 15:24:22 +02:00
Mathias Vorreiter Pedersen
dc8dc61196
C++: Fix type name.
2026-03-31 13:54:30 +01:00
Mathias Vorreiter Pedersen
102221d0aa
C++: Add lots of taint inheriting content related to '_HTTP_REQUEST'.
2026-03-31 11:30:39 +01:00
Jeroen Ketema
5122f7cf92
C++: Add heuristics for meson configuration files
2026-03-31 11:02:26 +02: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
Owen Mansel-Chan
a7fdc4b543
Replace acceptingvalue with acceptingValue
2026-03-27 22:15:45 +00:00
Owen Mansel-Chan
a8b52acaa9
Merge pull request #21585 from github/copilot/convert-models-to-yml
...
C++: Convert remaining CSV models to .model.yml and remove CSV model infrastructure
2026-03-27 20:48:34 +00:00
Owen Mansel-Chan
b3285c6ae2
Make description of acceptingvalue column clearer
2026-03-27 11:35:22 +00:00
Owen Mansel-Chan
886a16bfad
C++: Add provenance column
2026-03-27 09:47:34 +00:00
Owen Mansel-Chan
e680d49c93
Shared: document extensible relations rather than CSV
2026-03-27 09:47:32 +00:00
Owen Mansel-Chan
61b13d5702
C++: Add provenance to MaD format explanation
2026-03-27 09:47:26 +00:00
Owen Mansel-Chan
10fddc7b96
Add barriers and barrier guards to MaD format explanations
2026-03-27 09:47:24 +00: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
Owen Mansel-Chan
21ecf230ce
Small tweaks
2026-03-26 16:39:10 +00:00
copilot-swe-agent[bot]
d69bcca687
Remove CSV model infrastructure from ExternalFlow.qll
...
Remove SourceModelCsv, SinkModelCsv, SummaryModelCsv classes,
single-argument CSV predicates, CSV parsing in MadInput, and
CSV-specific validation checks. Simplify MadInput to only contain
the namespace separator. Convert test models to .ext.yml format.
Agent-Logs-Url: https://github.com/github/codeql/sessions/89ff81fe-5585-446d-99e2-6fe6966495c5
Co-authored-by: owen-mc <62447351+owen-mc@users.noreply.github.com >
2026-03-26 15:07:39 +00:00
Owen Mansel-Chan
6769f08f93
Remove blank line at end of file
2026-03-26 14:10:15 +00:00
copilot-swe-agent[bot]
a6377145ac
Convert C++ CSV models from QL files to .model.yml data extensions
...
Migrate ZeroMQ models from ZMQ.qll and getc-family source models
from Gets.qll into new .model.yml files in the ext/ directory.
Agent-Logs-Url: https://github.com/github/codeql/sessions/da8f5e5b-35f7-47a4-afa0-750616e3df5b
Co-authored-by: owen-mc <62447351+owen-mc@users.noreply.github.com >
2026-03-26 12:38:19 +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
Jeroen Ketema
5aabd90eff
C++: Add direct and default initialization subclasses for ConstructorFieldInit
2026-03-24 15:32:58 +01:00
Taus
2e76f3471a
C++: Fix bad join in callsVariadicFormatter
...
On `wireshark` this reduces the intermediate tuple count from roughly 88
million tuples to roughly 3000 (with the new helper predicate
materialising ~300 tuples).
2026-03-23 23:17:22 +00: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
d4fef1c68e
Merge branch 'main' into jeongsoolee09/add-getIndirectionIndex
2026-03-20 10:01:05 -07:00