An instruction representing the choice of one of multiple input values based on control flow.
PhiInstruction is inserted at the beginning of a block whenever two different definitions of
the same variable reach that block. The
PhiInstruction will have one operand corresponding to
each control flow predecessor of the block, with that operand representing the version of the
variable that flows from that predecessor. The result value of the
PhiInstruction will be
a copy of whichever operand corresponds to the actual predecessor that entered the block at
Gets the kind of memory access performed by this instruction’s result. Holds only for instructions with a memory result.
Gets all direct predecessors of this instruction.
Gets the AST that caused this instruction to be generated.
Gets all direct successors of this instruction.
Gets all direct uses of the result of this instruction.
Gets all of this instruction’s operands.
Gets the basic block that contains this instruction.
Gets the zero-based index of this instruction within its block. This is used by debugging and printing code only.
Gets a string showing the result, opcode, and operands of the instruction, equivalent to what would be printed by PrintIR.ql. For example:
Gets the function that contains this instruction.
Gets the FunctionIR object that contains the IR for this instruction.
Gets a string describing the immediate value of this instruction, if any.
Gets the location of the source code for this instruction.
Gets the opcode that specifies the operation performed by this instruction.
Gets a string describing the operands of this instruction, suitable for display in IR dumps.
Gets a string describing the operation of this instruction. This includes the opcode and the immediate value, if any. For example:
Gets a predecessor of this instruction such that the predecessor reaches this instruction along the control flow edge specified by
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.
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.
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.
Gets the type of the result produced by this instruction. If the instruction does not produce a result, its result type will be
Gets the successor of this instruction along the control flow edge specified by
Gets the unconverted
Gets a string identifier for this function that is unique among all instructions in the same function.
Holds if this instruction produces a memory result.
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
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