-PHINode::PHINode(const Type *Ty, const string &name)
- : Instruction(Ty, Instruction::PHINode, name) {
-}
-
-PHINode::PHINode(const PHINode &PN)
- : Instruction(PN.getType(), Instruction::PHINode) {
-
- for (unsigned i = 0; i < PN.IncomingValues.size(); i++)
- IncomingValues.push_back(Use(PN.IncomingValues[i], this));
-}
-
-void PHINode::dropAllReferences() {
- IncomingValues.clear();
-}
-
-bool PHINode::setOperand(unsigned i, Value *Val) {
- assert(Val && "PHI node must only reference nonnull definitions!");
- if (i >= IncomingValues.size()) return false;
-
- IncomingValues[i] = Val;
- return true;
-}
-
-void PHINode::addIncoming(Value *D) {
- IncomingValues.push_back(Use(D, this));
+PHINode::PHINode(const PHINode &PN)
+ : Instruction(PN.getType(), Instruction::PHI) {
+ Operands.reserve(PN.Operands.size());
+ for (unsigned i = 0; i < PN.Operands.size(); i+=2) {
+ Operands.push_back(Use(PN.Operands[i], this));
+ Operands.push_back(Use(PN.Operands[i+1], this));
+ }