/// 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);
}
void dump() const;
+
+private:
+ void DeleteNodeIfDead(SDNode *N, void *NodeSet);
};
}
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;
+ }
+ }
+ }
};
GlobalAddressSDNode(const GlobalValue *GA, MVT::ValueType VT)
: SDNode(ISD::GlobalAddress, VT) {
TheGlobal = const_cast<GlobalValue*>(GA);
-
}
public: