Files
codeql/cpp/ql/test/library-tests/ir/escape/escape.ql
Jonas Jensen 4ef5c9af62 C++: Autoformat everything
Some files that will change in #1736 have been spared.

    ./build -j4 target/jars/qlformat
    find ql/cpp/ql -name "*.ql"  -print0 | xargs -0 target/jars/qlformat --input
    find ql/cpp/ql -name "*.qll" -print0 | xargs -0 target/jars/qlformat --input
    (cd ql && git checkout 'cpp/ql/src/semmle/code/cpp/ir/implementation/**/*SSA*.qll')
    buildutils-internal/scripts/pr-checks/sync-identical-files.py --latest
2019-09-09 11:25:53 +02:00

24 lines
601 B
Plaintext

import default
import semmle.code.cpp.ir.implementation.unaliased_ssa.internal.AliasAnalysis
import semmle.code.cpp.ir.implementation.raw.IR
predicate shouldEscape(IRAutomaticUserVariable var) {
exists(string name |
name = var.getVariable().getName() and
name.matches("no_%") and
not name.matches("no_ssa_%")
)
}
from IRAutomaticUserVariable var
where
exists(IRFunction irFunc |
irFunc = var.getEnclosingIRFunction() and
(
shouldEscape(var) and variableAddressEscapes(var)
or
not shouldEscape(var) and not variableAddressEscapes(var)
)
)
select var