diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll index 7f7a62acda3..c65570c5999 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll @@ -220,9 +220,12 @@ class VariableMemoryLocation extends TVariableMemoryLocation, AllocationMemoryLo /** * Holds if this memory location covers the entire variable. */ - final predicate coversEntireVariable() { - startBitOffset = 0 and - endBitOffset = var.getIRType().getByteSize() * 8 + final predicate coversEntireVariable() { varIRTypeHasBitRange(startBitOffset, endBitOffset) } + + pragma[noinline] + private predicate varIRTypeHasBitRange(int start, int end) { + start = 0 and + end = var.getIRType().getByteSize() * 8 } }