Class PhiInputOperand

An operand of a PhiInstruction.

Import path

import semmle.code.cpp.ir.implementation.raw.Operand

Direct supertypes

Indirect supertypes

Fields

Predicates

getAnyDef

Gets the Instruction whose result is the value of the operand. Unlike getDef, this also has a result when isDefinitionInexact holds, which means that the resulting instruction may only partially or potentially be the value of this operand.

getDefinitionOverlap

Gets the overlap relationship between the operand’s definition and its use.

getDumpLabel

Gets a prefix to use when dumping the operand in an operand list.

getDumpSortOrder

Get the order in which the operand should be sorted in the operand list.

getMemoryAccess

Gets the kind of memory access performed by the operand.

getPredecessorBlock

Gets the predecessor block from which this value comes.

getUse

Gets the Instruction that consumes this operand.

toString

Inherited predicates

getAddressOperand

Returns the operand that holds the memory address from which the current operand loads its value, if any. For example, in r3 = Load r1, m2, the result of getAddressOperand() for m2 is r1.

from MemoryOperand
getDef

Gets the Instruction whose result is the value of the operand. Unlike getAnyDef, this also has no result when isDefinitionInexact holds, which means that the resulting instruction must always be exactly the be the value of this operand.

from Operand
getDefinitionInstruction

DEPRECATED: use getAnyDef or getDef. The exact replacement for this predicate is getAnyDef, but most uses of this predicate should probably be replaced with getDef.

from Operand
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
getEnclosingIRFunctionfrom 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
getLocationfrom Operand
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
getUseInstruction

DEPRECATED: renamed to getUse.

from Operand
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 getType(). If this does not hold, the value of the operand represents a value whose type is given by getType().

from Operand

Charpred