Changes in directory llvm/lib/CodeGen/SelectionDAG:
DAGCombiner.cpp updated: 1.148 -> 1.149 --- Log message: Fix a really subtle and obnoxious memory bug that caused issues with an llvm-gcc4 boostrap. Whenever a node is deleted by the dag combiner, it *must* be returned by the visit function, or the dag combiner will not know that the node has been processed (and will, e.g., send it to the target dag combine xforms). --- Diffs of the changes: (+11 -11) DAGCombiner.cpp | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp diff -u llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.148 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.149 --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.148 Thu Apr 20 03:56:16 2006 +++ llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Thu Apr 20 18:55:59 2006 @@ -1080,7 +1080,7 @@ // zero_extend, to avoid duplicating things. This will later cause this // AND to be folded. CombineTo(N0.Val, Zext); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } } // fold (and (setcc x), (setcc y)) -> (setcc (and x, y)) @@ -1157,7 +1157,7 @@ EVT); AddToWorkList(N); CombineTo(N0.Val, ExtLoad, ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } } // fold (zext_inreg (sextload x)) -> (zextload x) iff load has one use @@ -1172,7 +1172,7 @@ EVT); AddToWorkList(N); CombineTo(N0.Val, ExtLoad, ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } } @@ -1212,7 +1212,7 @@ N0.getOperand(2), EVT); AddToWorkList(N); CombineTo(N0.Val, Load, Load.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } } @@ -1797,7 +1797,7 @@ CombineTo(N, ExtLoad); CombineTo(N0.Val, DAG.getNode(ISD::TRUNCATE, N0.getValueType(), ExtLoad), ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } // fold (sext (sextload x)) -> (sext (truncate (sextload x))) @@ -1810,7 +1810,7 @@ CombineTo(N, ExtLoad); CombineTo(N0.Val, DAG.getNode(ISD::TRUNCATE, N0.getValueType(), ExtLoad), ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } return SDOperand(); @@ -1840,7 +1840,7 @@ CombineTo(N, ExtLoad); CombineTo(N0.Val, DAG.getNode(ISD::TRUNCATE, N0.getValueType(), ExtLoad), ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } // fold (zext (zextload x)) -> (zext (truncate (zextload x))) @@ -1853,7 +1853,7 @@ CombineTo(N, ExtLoad); CombineTo(N0.Val, DAG.getNode(ISD::TRUNCATE, N0.getValueType(), ExtLoad), ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } return SDOperand(); } @@ -1915,7 +1915,7 @@ EVT); CombineTo(N, ExtLoad); CombineTo(N0.Val, ExtLoad, ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } // fold (sext_inreg (zextload x)) -> (sextload x) iff load has one use if (N0.getOpcode() == ISD::ZEXTLOAD && N0.hasOneUse() && @@ -1926,7 +1926,7 @@ EVT); CombineTo(N, ExtLoad); CombineTo(N0.Val, ExtLoad, ExtLoad.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } return SDOperand(); } @@ -1975,7 +1975,7 @@ SDOperand Load = DAG.getLoad(VT, N0.getOperand(0), NewPtr,N0.getOperand(2)); AddToWorkList(N); CombineTo(N0.Val, Load, Load.getValue(1)); - return SDOperand(); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } return SDOperand(); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits