forked from OSchip/llvm-project
Make it simplier to dump DAGs while in DAGCombiner. Remove a nasty optimization.
llvm-svn: 31009
This commit is contained in:
parent
2d7d14262a
commit
e7d2c24a7d
|
@ -49,7 +49,7 @@ namespace {
|
|||
|
||||
static cl::opt<bool>
|
||||
CombinerAA("combiner-alias-analysis", cl::Hidden,
|
||||
cl::desc("Turn on alias analysis turning testing"));
|
||||
cl::desc("Turn on alias analysis during testing"));
|
||||
|
||||
//------------------------------ DAGCombiner ---------------------------------//
|
||||
|
||||
|
@ -388,6 +388,9 @@ void DAGCombiner::Run(bool RunningAfterLegalize) {
|
|||
// changes of the root.
|
||||
HandleSDNode Dummy(DAG.getRoot());
|
||||
|
||||
// The root of the dag may dangle to deleted nodes until the dag combiner is
|
||||
// done. Set it to null to avoid confusion.
|
||||
DAG.setRoot(SDOperand());
|
||||
|
||||
/// DagCombineInfo - Expose the DAG combiner to the target combiner impls.
|
||||
TargetLowering::DAGCombinerInfo
|
||||
|
@ -2759,13 +2762,6 @@ SDOperand DAGCombiner::visitSTORE(SDNode *N) {
|
|||
}
|
||||
|
||||
if (CombinerAA) {
|
||||
// If the store ptr is a frame index and the frame index has a use of one
|
||||
// and this is a return block, then the store is redundant.
|
||||
if (Ptr.hasOneUse() && isa<FrameIndexSDNode>(Ptr) &&
|
||||
DAG.getRoot().getOpcode() == ISD::RET) {
|
||||
return Chain;
|
||||
}
|
||||
|
||||
// Walk up chain skipping non-aliasing memory nodes.
|
||||
SDOperand BetterChain = FindBetterChain(N, Chain);
|
||||
|
||||
|
|
|
@ -2684,7 +2684,7 @@ void SelectionDAG::dump() const {
|
|||
DumpNodes(Nodes[i], 2, this);
|
||||
}
|
||||
|
||||
DumpNodes(getRoot().Val, 2, this);
|
||||
if (getRoot().Val) DumpNodes(getRoot().Val, 2, this);
|
||||
|
||||
std::cerr << "\n\n";
|
||||
}
|
||||
|
|
|
@ -61,7 +61,8 @@ namespace llvm {
|
|||
static void addCustomGraphFeatures(SelectionDAG *G,
|
||||
GraphWriter<SelectionDAG*> &GW) {
|
||||
GW.emitSimpleNode(0, "plaintext=circle", "GraphRoot");
|
||||
GW.emitEdge(0, -1, G->getRoot().Val, -1, "");
|
||||
if (G->getRoot().Val)
|
||||
GW.emitEdge(0, -1, G->getRoot().Val, -1, "");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue