From 2f793f652e50bf526c237bb359fc5cf8beba3195 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 5 Feb 2026 12:36:09 +0100 Subject: [PATCH] C/C++: reduce predicate scope --- .../ir/implementation/raw/internal/TranslatedElement.qll | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 7828f5a3674..960c8ff52fe 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -62,10 +62,16 @@ private predicate ignoreConstantValue(Operation op) { op instanceof BitwiseXorExpr } -/** Holds if `expr` contains an address-of expression that EDG may have constant-folded. */ +/** + * Holds if `expr` contains an address-of expression that EDG may have constant-folded. + * We don't recurse into `sizeof` or `alignof` since they don't evaluate their operands, + * so any address-of inside them doesn't affect actual execution. + */ private predicate containsAddressOf(Expr expr) { expr instanceof AddressOfExpr or + not expr instanceof SizeofOperator and + not expr instanceof AlignofOperator and containsAddressOf(expr.getAChild()) }