From: Jim Laskey Date: Tue, 17 Oct 2006 19:33:52 +0000 (+0000) Subject: Make it simplier to dump DAGs while in DAGCombiner. Remove a nasty optimization. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=26f7fa7bba94eb18bf0e43586dd2b596cb58ca80;p=oota-llvm.git Make it simplier to dump DAGs while in DAGCombiner. Remove a nasty optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31009 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 474ae281f91..997820dd64b 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -49,7 +49,7 @@ namespace { static cl::opt 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(Ptr) && - DAG.getRoot().getOpcode() == ISD::RET) { - return Chain; - } - // Walk up chain skipping non-aliasing memory nodes. SDOperand BetterChain = FindBetterChain(N, Chain); diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 5a0f5b1e99f..9faf703b01f 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -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"; } diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp index 486f054ad02..53e7595f8a5 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp @@ -61,7 +61,8 @@ namespace llvm { static void addCustomGraphFeatures(SelectionDAG *G, GraphWriter &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, ""); } }; }