Class NonPhiMemoryOperand
A memory operand other than the operand of a Phi
instruction.
Import path
import semmle.code.cpp.ir.IR
Direct supertypes
Indirect supertypes
Known direct subtypes
Fields
Inherited fields
Predicates
getAnyDef | Gets the |
getDefinitionOverlap | Gets the overlap relationship between the operand’s definition and its use. |
getUsedInterval | Holds if the operand totally overlaps with its definition and consumes the bit range |
toString | Gets a textual representation of this element. |
Inherited predicates
getAddressOperand | Returns the operand that holds the memory address from which the current operand loads its value, if any. For example, in | from MemoryOperand |
getDef | Gets the | from Operand |
getDumpId | Gets a string that uniquely identifies this operand on its use instruction. | from NonPhiOperand |
getDumpLabel | Gets a prefix to use when dumping the operand in an operand list. | from NonPhiOperand |
getDumpSortOrder | Get the order in which the operand should be sorted in the operand list. | from NonPhiOperand |
getDumpString | Gets a string describing this operand, suitable for display in IR dumps. This consists of the result ID of the instruction consumed by the operand, plus a label identifying the operand kind. | from Operand |
getEnclosingIRFunction | Gets the function that contains this operand. | from Operand |
getIRType | Gets the language-neutral type of the value consumed by this operand. This is usually the same as the result type of the definition instruction consumed by this operand. For register operands, this is always the case. For some memory operands, the operand type may be different from the definition type, such as in the case of a partial read or a read from a pointer that has been cast to a different type. | from Operand |
getLanguageType | Gets the type of the value consumed by this operand. This is usually the same as the result type of the definition instruction consumed by this operand. For register operands, this is always the case. For some memory operands, the operand type may be different from the definition type, such as in the case of a partial read or a read from a pointer that has been cast to a different type. | from Operand |
getLocation | Gets the location of the source code for this operand. By default this is where the operand is used, but some subclasses may override this using | from Operand |
getMemoryAccess | Gets the kind of memory access performed by the operand. | from MemoryOperand |
getOperandTag | Gets the | from NonPhiOperand |
getSize | Gets the size of the value consumed by this operand, in bytes. If the operand does not have a known constant size, this predicate does not hold. | from Operand |
getType | Gets the type of the value consumed by this operand. This is usually the same as the result type of the definition instruction consumed by this operand. For register operands, this is always the case. For some memory operands, the operand type may be different from the definition type, such as in the case of a partial read or a read from a pointer that has been cast to a different type. | from Operand |
getUse | Gets the | from NonPhiOperand |
hasMayReadMemoryAccess | Holds if the memory access performed by this operand will not always read from every bit in the memory location. This is most commonly used for memory accesses that may or may not actually occur depending on runtime state (for example, the write side effect of an output parameter that is not written to on all paths), or for accesses where the memory location is a conservative estimate of the memory that might actually be accessed at runtime (for example, the global side effects of a function call). | from MemoryOperand |
isDefinitionInexact | Holds if the result of the definition instruction does not exactly overlap this use. | from Operand |
isGLValue | Holds if the value consumed by this operand is a glvalue. If this holds, the value of the operand represents the address of a location, and the type of the location is given by | from Operand |