Class Instruction::Instruction

Represents a single operation in the IR.

Direct supertypes

Known direct subtypes

Fields

Predicates

getAPredecessor

Gets all direct predecessors of this instruction.

getAST

Gets the AST that caused this instruction to be generated.

getASuccessor

Gets all direct successors of this instruction.

getAUse

Gets all direct uses of the result of this instruction.

getAnOperand

Gets all of this instruction’s operands.

getBlock

Gets the basic block that contains this instruction.

getConvertedResultExpression

Gets the Expr whose result is computed by this instruction, if any.

getDisplayIndexInBlock

Gets the zero-based index of this instruction within its block. This is used by debugging and printing code only.

getDumpString

Gets a string showing the result, opcode, and operands of the instruction, equivalent to what would be printed by PrintIR.ql. For example:

getFunction

Gets the function that contains this instruction.

getFunctionIR

Gets the FunctionIR object that contains the IR for this instruction.

getImmediateString

Gets a string describing the immediate value of this instruction, if any.

getLocation

Gets the location of the source code for this instruction.

getOpcode

Gets the opcode that specifies the operation performed by this instruction.

getOperandsString

Gets a string describing the operands of this instruction, suitable for display in IR dumps.

getOperationString

Gets a string describing the operation of this instruction. This includes the opcode and the immediate value, if any. For example:

getPredecessor

Gets a predecessor of this instruction such that the predecessor reaches this instruction along the control flow edge specified by kind.

getResultId

Gets a human-readable string that uniquely identifies this instruction within the function. This string is used to refer to this instruction when printing IR dumps.

getResultMemoryAccess

Gets the kind of memory access performed by this instruction’s result. Holds only for instructions with a memory result.

getResultSize

Gets the size of the result produced by this instruction, in bytes. If the result does not have a known constant size, this predicate does not hold.

getResultString

Gets a string describing the result of this instruction, suitable for display in IR dumps. This consists of the result ID plus the type of the result.

getResultType

Gets the type of the result produced by this instruction. If the instruction does not produce a result, its result type will be VoidType.

getSuccessor

Gets the successor of this instruction along the control flow edge specified by kind.

getTag
getUnconvertedResultExpression

Gets the unconverted Expr whose result is computed by this instruction, if any.

getUniqueId

Gets a string identifier for this function that is unique among all instructions in the same function.

hasMemoryResult

Holds if this instruction produces a memory result.

isGLValue

Holds if the result produced by this instruction is a glvalue. If this holds, the result of the instruction represents the address of a location, and the type of the location is given by getResultType(). If this does not hold, the result of the instruction represents a value whose type is given by getResultType().

isResultModeled

Holds if the result of this instruction is precisely modeled in SSA. Always holds for a register result. For a memory result, a modeled result is connected to its actual uses. An unmodeled result is connected to the UnmodeledUse instruction.

toString

Charpred