llvm::BasicBlock *bb1 = llvm::BasicBlock::Create(...); llvm::BasicBlock *bb2 = llvm::BasicBlock::Create(...); llvm::BasicBlock *bb3 = llvm::BasicBlock::Create(...); llvm::PHINode *phi = llvm::PHINode::Create(llvm::Type::getInt32Ty(...), 3); phi->addIncoming(llvm::ConstantInt::get(...), bb1); phi->addIncoming(llvm::ConstantInt::get(...), bb2); phi->addIncoming(llvm::ConstantInt::get(...), bb3); bb3->getInstList().push_back(phi);
#includeIn this example, we get the PHINode from the terminator instruction of a basic block. We then add two incoming values to the PHINode, one from "pred1" and one from "pred2". This code also uses the LLVM library.using namespace llvm; // ... BasicBlock *BB = ...; PHINode *PN = BB->getTerminator(); Value *V1 = ...; Value *V2 = ...; PN->addIncoming(V1, pred1); PN->addIncoming(V2, pred2);