void NodeValue::replaceAllUsesOfWith(NodeValue v) { if (v.getNode()) { assert(getType() == v.getType() && "Replacing value with the wrong type"); } auto &users = node_->getUsers(); llvm::SmallVector<NodeUse, 4> usersVec(users.begin(), users.end()); for (auto &U : usersVec) { NodeValue *site = U.get(); assert(site->getNode() == node_ && "Invalid user"); if (site->getResNo() == getResNo()) { site->setOperand(v.getNode(), v.getResNo()); } } }