An explicit SSA definition that writes an indirect value to a pointer.
For example in:
int x = 42; // (1)
int* p = &x; // (2)
There are three ExplicitDefinition:
- A
DirectExplicitDefinitionat (1) which writes42to the SSA variable corresponding tox. - A
DirectExplicitDefinitionat (2) which writes&xto the SSA variable corresponding top. - A
IndirectExplicitDefinitionat (2) which writes*&x(i.e.,x) to the SSA variable corresponding to*p.
Import path
import semmle.code.cpp.ir.dataflow.internal.SsaImplDirect supertypes
Indirect supertypes
Inherited fields
Inherited predicates
| definesAt | Holds if this SSA definition defines | from Definition |
| getAUse | Gets an | from Definition |
| getAnIndirectUse | Gets an | from Definition |
| getAnUltimateDefinition | Gets a definition that ultimately defines this SSA definition and is not itself a phi node. | from Definition |
| getAssignedInstruction | Gets the | from ExplicitDefinition |
| getBasicBlock | Gets the basic block to which this SSA definition belongs. | from Definition |
| getFunction | Gets the enclosing declaration of this definition. | from Definition |
| getIndirection | Gets the indirection of this definition. | from Definition |
| getIndirectionIndex | Gets the indirection index of this definition. | from Definition |
| getLocation | Gets the location of this SSA definition. | from Definition |
| getSourceVariable | Gets the source variable underlying this SSA definition. | from Definition |
| getUnderlyingType | Gets the underlying type of the variable being defined by this definition. | from Definition |
| getUnspecifiedType | Gets the unspecified type of the variable being defined by this definition. | from Definition |
| getValue | INTERNAL: Do not use. | from Definition |
| isCertain | Holds if this definition is guaranteed to totally overwrite the buffer being written to. | from Definition |
| isIndirectParameterDefinition | Holds if this definition defines the | from Definition |
| isIndirectThisDefinition | Holds if this definition defines the implicit | from Definition |
| isLiveAtEndOfBlock | Holds if this SSA definition is live at the end of basic block | from Definition |
| isParameterDefinition | Holds if this definition defines the parameter | from Definition |
| isThisDefinition | Holds if this definition defines the implicit | from Definition |
| toString | Gets a textual representation of this SSA definition. | from Definition |