class PHINode

Declaration

class PHINode : public Instruction { /* full declaration omitted */ };

Declared at: llvm/include/llvm/IR/Instructions.h:2552

Inherits from: Instruction

Member Variables

Inherited from Value:

protected SubclassOptionalData
protected NumUserOperands
protected IsUsedByMD
protected HasName
protected HasHungOffUses
protected HasDescriptor
public static MaxAlignmentExponent = 29
public static MaximumAlignment = 1U << MaxAlignmentExponent

Method Overview

Inherited from Instruction:

Inherited from User:

Inherited from Value:

Methods

static llvm::PHINode* Create(
    llvm::Type* Ty,
    unsigned int NumReservedValues,
    const llvm::Twine& NameStr = "",
    llvm::Instruction* InsertBefore = nullptr)

Description

Constructors - NumReservedValues is a hint for the number of incoming edges that this phi node will have (use 0 if you really have no idea).

Declared at: llvm/include/llvm/IR/Instructions.h:2592

Parameters

llvm::Type* Ty
unsigned int NumReservedValues
const llvm::Twine& NameStr = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::PHINode* Create(
    llvm::Type* Ty,
    unsigned int NumReservedValues,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/Instructions.h:2598

Parameters

llvm::Type* Ty
unsigned int NumReservedValues
const llvm::Twine& NameStr
llvm::BasicBlock* InsertAtEnd

void addIncoming(llvm::Value* V,
                 llvm::BasicBlock* BB)

Description

Add an incoming value to the end of the PHI list

Declared at: llvm/include/llvm/IR/Instructions.h:2704

Parameters

llvm::Value* V
llvm::BasicBlock* BB

void allocHungoffUses(unsigned int N)

Declared at: llvm/include/llvm/IR/Instructions.h:2585

Parameters

unsigned int N

llvm::PHINode::block_iterator block_begin()

Declared at: llvm/include/llvm/IR/Instructions.h:2612

llvm::PHINode::const_block_iterator block_begin()
    const

Declared at: llvm/include/llvm/IR/Instructions.h:2618

llvm::PHINode::block_iterator block_end()

Declared at: llvm/include/llvm/IR/Instructions.h:2624

llvm::PHINode::const_block_iterator block_end()
    const

Declared at: llvm/include/llvm/IR/Instructions.h:2628

iterator_range<llvm::PHINode::block_iterator>
blocks()

Declared at: llvm/include/llvm/IR/Instructions.h:2632

iterator_range<
    llvm::PHINode::const_block_iterator>
blocks() const

Declared at: llvm/include/llvm/IR/Instructions.h:2636

static bool classof(const llvm::Value* V)

Declared at: llvm/include/llvm/IR/Instructions.h:2771

Parameters

const llvm::Value* V

static bool classof(const llvm::Instruction* I)

Description

Methods for support type inquiry through isa, cast, and dyn_cast:

Declared at: llvm/include/llvm/IR/Instructions.h:2768

Parameters

const llvm::Instruction* I

llvm::PHINode* cloneImpl() const

Declared at: llvm/include/llvm/IR/Instructions.h:2580

int getBasicBlockIndex(
    const llvm::BasicBlock* BB) const

Description

Return the first index of the specified basic block in the value list for this PHI. Returns -1 if no instance.

Declared at: llvm/include/llvm/IR/Instructions.h:2732

Parameters

const llvm::BasicBlock* BB

llvm::BasicBlock* getIncomingBlock(
    Value::const_user_iterator I) const

Description

Return incoming basic block corresponding to value use iterator.

Declared at: llvm/include/llvm/IR/Instructions.h:2685

Parameters

Value::const_user_iterator I

llvm::BasicBlock* getIncomingBlock(
    const llvm::Use& U) const

Description

Return incoming basic block corresponding to an operand of the PHI.

Declared at: llvm/include/llvm/IR/Instructions.h:2677

Parameters

const llvm::Use& U

llvm::BasicBlock* getIncomingBlock(
    unsigned int i) const

Description

Return incoming basic block number @p i.

Declared at: llvm/include/llvm/IR/Instructions.h:2670

Parameters

unsigned int i

llvm::Value* getIncomingValue(
    unsigned int i) const

Description

Return incoming value number x

Declared at: llvm/include/llvm/IR/Instructions.h:2650

Parameters

unsigned int i

llvm::Value* getIncomingValueForBlock(
    const llvm::BasicBlock* BB) const

Declared at: llvm/include/llvm/IR/Instructions.h:2739

Parameters

const llvm::BasicBlock* BB

static unsigned int getIncomingValueNumForOperand(
    unsigned int i)

Declared at: llvm/include/llvm/IR/Instructions.h:2664

Parameters

unsigned int i

unsigned int getNumIncomingValues() const

Description

Return the number of incoming edges

Declared at: llvm/include/llvm/IR/Instructions.h:2646

static unsigned int getOperandNumForIncomingValue(
    unsigned int i)

Declared at: llvm/include/llvm/IR/Instructions.h:2660

Parameters

unsigned int i

bool hasConstantOrUndefValue() const

Description

Whether the specified PHI node always merges together the same value, assuming undefs are equal to a unique non-undef value.

Declared at: llvm/include/llvm/IR/Instructions.h:2765

llvm::Value* hasConstantValue() const

Description

If the specified PHI node always merges together the same value, return the value, otherwise return null.

Declared at: llvm/include/llvm/IR/Instructions.h:2760

llvm::User::const_op_range incoming_values() const

Declared at: llvm/include/llvm/IR/Instructions.h:2642

llvm::User::op_range incoming_values()

Declared at: llvm/include/llvm/IR/Instructions.h:2640

llvm::Value* removeIncomingValue(
    unsigned int Idx,
    bool DeletePHIIfEmpty = true)

Description

Remove an incoming value. This is useful if a predecessor basic block is deleted. The value removed is returned. If the last incoming value for a PHI node is removed (and DeletePHIIfEmpty is true), the PHI node is destroyed and any uses of it are replaced with dummy values. The only time there should be zero incoming values to a PHI node is when the block is dead, so this strategy is sound.

Declared at: llvm/include/llvm/IR/Instructions.h:2721

Parameters

unsigned int Idx
bool DeletePHIIfEmpty = true

llvm::Value* removeIncomingValue(
    const llvm::BasicBlock* BB,
    bool DeletePHIIfEmpty = true)

Declared at: llvm/include/llvm/IR/Instructions.h:2723

Parameters

const llvm::BasicBlock* BB
bool DeletePHIIfEmpty = true

void replaceIncomingBlockWith(
    const llvm::BasicBlock* Old,
    llvm::BasicBlock* New)

Description

Replace every incoming basic block \p Old to basic block \p New.

Declared at: llvm/include/llvm/IR/Instructions.h:2695

Parameters

const llvm::BasicBlock* Old
llvm::BasicBlock* New

void setIncomingBlock(unsigned int i,
                      llvm::BasicBlock* BB)

Declared at: llvm/include/llvm/IR/Instructions.h:2689

Parameters

unsigned int i
llvm::BasicBlock* BB

void setIncomingValue(unsigned int i,
                      llvm::Value* V)

Declared at: llvm/include/llvm/IR/Instructions.h:2653

Parameters

unsigned int i
llvm::Value* V

void setIncomingValueForBlock(
    const llvm::BasicBlock* BB,
    llvm::Value* V)

Description

Set every incoming value(s) for block \p BB to \p V.

Declared at: llvm/include/llvm/IR/Instructions.h:2746

Parameters

const llvm::BasicBlock* BB
llvm::Value* V