Jeroen Ketema
7862922e5c
C++: Remove deprecated code
2026-05-26 17:54:51 +02: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
Idriss Riouak
48a03e2a04
Apply suggestions from code review
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-11 14:25:53 +01:00
idrissrio
a92d97744f
C/C++ overlay: address review comment
2026-03-11 14:25:52 +01:00
idrissrio
ef6c1a9968
C/C++ overlay: fix failing header_dependency test
2026-03-11 14:25:50 +01:00
idrissrio
72142b51f7
C/C++ overlay: switch to updated discard strategy
2026-03-11 14:25:49 +01:00
idrissrio
c3f0967e9b
C/C++ overlay: discard single location elements
2026-02-17 10:50:24 +01:00
idrissrio
e26c199426
C/C++ overlay: use files table instead of overlayChangedFiles for overlay discard
2026-02-05 12:43:01 +01:00
Ian Lynagh
46a5035543
Merge pull request #21200 from github/igfoo/rename-holdsInBase-to-isBase
...
C++: Rename `holdsInBase` to `isBase`
2026-01-27 13:50:04 +00:00
Ian Lynagh
5e536fb121
C++: Rename holdsInBase to isBase
...
Makes it consistent with isOverlay.
2026-01-21 18:13:58 +00:00
Ian Lynagh
7bd62087a4
C++ overlay: Simplify QL
...
Remove redundant variable names.
2026-01-21 18:06:43 +00:00
idrissrio
84bbe71522
C/C++ overlay: Discard xml entities
2025-12-11 15:41:35 +01:00
idrissrio
3f372d2658
C/C++ overlay: Add overlay support for discarding macro invocations
2025-12-11 12:09:04 +01:00
idrissrio
1286ca6683
C/C++ overlay: Add overlay support for discarding namespaces
2025-12-11 12:09:02 +01:00
idrissrio
c34456e3a0
C/C++ overlay: Add overlay support for discarding user types
2025-12-11 12:09:01 +01:00
idrissrio
4702e208b7
C/C++ overlay: Add overlay support for discarding functions
2025-12-11 12:09:00 +01:00
idrissrio
4ad25e4d92
C/C++ overlay: Address review comments
2025-11-28 14:16:10 +01:00
idrissrio
eac06ddd8f
C/C++ overlay: Address review comments
...
Split the discard predicate into two: one for single-location elements and one for multi-location elements.
2025-11-28 11:31:16 +01:00
idrissrio
3d69286382
C/C++ overlay: Address review comments
2025-11-27 09:22:33 +01:00
idrissrio
6c09325838
C/C++ Overlay: Preserve entities that have at least one location in an unchanged file
...
Previously, an entity would be discarded if it had any location in a changed
file. This caused issues for entities with multiple declaration entries, such
as extern variables declared in one file and defined in another.
For example, given:
// a.c (changed) // b.c (unchanged)
extern int x; int x;
The variable `x` should be preserved because it has a location in the
unchanged file b.c, even though it also has a location in the changed file a.c.
2025-11-27 09:22:31 +01:00
idrissrio
39136f3827
C/C++ overlay: Add basic Overlay.qll file
2025-11-27 09:22:29 +01:00
Jeroen Ketema
537feddf06
C++: Introduce usertypes for structs and unions
2025-01-15 11:38:01 +01:00
Jeroen Ketema
b7d1da8741
C++: Introduce a new base class for template parameters
...
This will enable us to support non-type template parameters, which we
currently do not support, and error template parameters, which might
become relevant in the `build-mode: none` context.
2024-12-17 20:25:41 +01:00
Jeroen Ketema
168f7f5d34
C++: Add support for C++ requires expressions
2024-10-15 13:44:17 +02:00
Jeroen Ketema
a79754b696
C++: Resolve functions using complete mangled names
2024-02-01 16:12:53 +01:00
Jeroen Ketema
972d86c0a0
C++: Add column to mangled_name table with completeness information
2024-02-01 16:12:53 +01:00
Mathias Vorreiter Pedersen
fe2c806c2d
C++: Undo some of the reverting.
2024-01-12 09:35:50 +00:00
Mathias Vorreiter Pedersen
84d08b0417
Revert "Merge pull request #12125 from jketema/unique-function"
...
This reverts commit 9c039c4a08 , reversing
changes made to ecd2003c14 .
2024-01-12 09:29:17 +00:00
Jeroen Ketema
f7da6f56f3
C++: Ensure that only one Function exists for every function
2023-12-21 16:33:22 +01:00
Jeroen Ketema
64004926bc
C++: Use a more declarative predicate name
2023-10-26 12:07:19 +02:00
Jeroen Ketema
903f376620
C++: Define an extractor version table and use in IR generation
2023-10-26 12:07:19 +02:00
Jeroen Ketema
a9d95a9418
C++: Remove pragma[noinline] from ResolveGlobalVariable.ql
2022-07-22 17:59:27 +02:00
Jeroen Ketema
82c9b8b494
C++: Ensure only one Variable exists for every global variable
...
Depending on the extraction order, before this change there might be multiple
`GlobalVariable`s per declared global variable. See the tests in
`cpp/ql/test/library-tests/variables/global`. This change ensures that only one
of those `GlobalVariable`s is visible to the user if we can locate a unique
definition. If not, the old situation persists.
Note that an exception needs to be made for templated variables. Here, the
definition refers to the non-instantiated template, while a declaration that
is not a definition refers to an instantiation. In case the instantiation refers
to a template parameter, the mangled names of the template and the instantiation
will be identical. This happens for example in the following case:
```
template <typename T>
T x = T(42); // Uninstantiated templated variable
template <typename T>
class C {
T y = x<T>; // Instantiation using a template parameter
};
```
Since the uninstantiated template and the instantiation are two different
entities, we do not unify them as described above.
2022-06-28 15:32:43 +02:00
Jeroen Ketema
b3ac7bda35
C++: Remove redundant parentheses
2022-06-23 07:25:53 +02:00
Jeroen Ketema
9cfd1a84b6
C++: Remove out-of-date comment, as we use mangled names in ResolveClass.qll
2022-06-23 07:24:04 +02:00
Erik Krogh Kristensen
e75448ebb0
remove redundant inline casts
2021-10-28 16:35:53 +02:00
Erik Krogh Kristensen
fe891746bf
C++: fix implicit this
2021-10-15 14:59:48 +01:00
Andrew Eisenberg
2c5dd2dfa3
Packaging: Refactor the cpp libraries
...
This PR separates the core cpp packs into `codeql/cpp-queries` and
`codeql/cpp-all`.
There are very few lines of code changed. Almost all changes are moving
files around.
2021-08-17 11:22:36 -07:00