Add a new SelectionDAG::RemoveDeadNodes method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19344 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-01-07 21:08:55 +00:00
parent 39931a3dba
commit d1fc96499b
2 changed files with 20 additions and 1 deletions

View File

@ -93,6 +93,12 @@ public:
/// the graph.
void Legalize(TargetLowering &TLI);
/// RemoveDeadNodes - This method deletes all unreachable nodes in the
/// SelectionDAG, including nodes (like loads) that have uses of their token
/// chain but no other uses and no side effect. If a node is passed in as an
/// argument, it is used as the seed for node deletion.
void RemoveDeadNodes(SDNode *N = 0);
SDOperand getConstant(uint64_t Val, MVT::ValueType VT);
SDOperand getConstantFP(double Val, MVT::ValueType VT);
SDOperand getGlobalAddress(const GlobalValue *GV, MVT::ValueType VT);
@ -150,6 +156,9 @@ public:
}
void dump() const;
private:
void DeleteNodeIfDead(SDNode *N, void *NodeSet);
};
}

View File

@ -409,6 +409,17 @@ protected:
void setValueTypes(std::vector<MVT::ValueType> &VTs) {
std::swap(Values, VTs);
}
void removeUser(SDNode *User) {
// Remove this user from the operand's use list.
for (unsigned i = Uses.size(); ; --i) {
assert(i != 0 && "Didn't find user!");
if (Uses[i-1] == User) {
Uses.erase(Uses.begin()+i-1);
break;
}
}
}
};
@ -498,7 +509,6 @@ protected:
GlobalAddressSDNode(const GlobalValue *GA, MVT::ValueType VT)
: SDNode(ISD::GlobalAddress, VT) {
TheGlobal = const_cast<GlobalValue*>(GA);
}
public: