CodeQL library for C/C++
codeql/cpp-all 2.0.2-dev (changelog, source)
Search

Module SSAConstruction

Import path

import semmle.code.cpp.ir.implementation.aliased_ssa.internal.SSAConstruction

Imports

Predicates

canReuseSsaForMemoryResult
isLastInstructionForUninitializedGroups

Holds if instruction is the last instruction in the chain of UninitializedGroup instructions in func. The chain of instructions may be empty in which case instruction satisfies isFirstInstructionBeforeUninitializedGroup(instruction, func)

Modules

DebugSsa

Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the DebugSsa module, which is then imported by PrintSSA.

DefUse

Module containing the predicates that connect uses to their reaching definition. The reaching definitions are computed separately for each unique use MemoryLocation. An instruction is treated as a definition of a use location if the defined location overlaps the use location in any way. Thus, a single instruction may serve as a definition for multiple use locations, since a single definition location may overlap many use locations.

Ssa

Provides the portion of the parameterized IR interface that is used to construct the SSA stages of the IR. The raw stage of the IR does not expose these predicates. These predicates are all just aliases for predicates defined in the Cached module. This ensures that all of SSA construction will be evaluated in the same stage.