Clear HandleMap and ReplaceMap after instruction selection. Or it may cause
authorEvan Cheng <evan.cheng@apple.com>
Wed, 24 May 2006 20:46:25 +0000 (20:46 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 24 May 2006 20:46:25 +0000 (20:46 +0000)
non-deterministic behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28454 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelDAGToDAG.cpp
lib/Target/Alpha/AlphaISelDAGToDAG.cpp
lib/Target/IA64/IA64ISelDAGToDAG.cpp
lib/Target/PowerPC/PPCISelDAGToDAG.cpp
lib/Target/Sparc/SparcISelDAGToDAG.cpp
lib/Target/X86/X86ISelDAGToDAG.cpp

index 7cf7dd37a4ac1f791f1ae9ba4864bab466835b28..b3ee0d17e3d6e7039c70090588473067e67de610 100644 (file)
@@ -161,6 +161,8 @@ void ARMDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
 
   DAG.setRoot(SelectRoot(DAG.getRoot()));
   CodeGenMap.clear();
+  HandleMap.clear();
+  ReplaceMap.clear();
   DAG.RemoveDeadNodes();
 
   ScheduleAndEmitDAG(DAG);
index 772da03ac48e5601c74b5fe80ff63a57df041e16..8126c33b383bfde3cab9452ecd4538257ab89ab4 100644 (file)
@@ -155,6 +155,8 @@ void AlphaDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
   CodeGenMap.clear();
+  HandleMap.clear();
+  ReplaceMap.clear();
   DAG.RemoveDeadNodes();
   
   // Emit machine code to BB. 
index e6ed9f9fa61b19bd1fdf1e83a348c2731d01ea91..6ac8ad68c0ed5f63c49513d9d58a33a3ebe5a65d 100644 (file)
@@ -148,6 +148,8 @@ void IA64DAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
   CodeGenMap.clear();
+  HandleMap.clear();
+  ReplaceMap.clear();
   DAG.RemoveDeadNodes();
   
   // Emit machine code to BB. 
index c164020ecaab3f3331509cccbd694b2580233ec1..9e22f1145b70369c570e7081bcd970e6c60f9ef0 100644 (file)
@@ -206,6 +206,8 @@ void PPCDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
   CodeGenMap.clear();
+  HandleMap.clear();
+  ReplaceMap.clear();
   DAG.RemoveDeadNodes();
   
   // Emit machine code to BB.
index 25f6e234a2f3f6b686e97ef05928332a6ffb4a52..19df27e27adcd3895fb37c1cf907d4ad27f5738c 100644 (file)
@@ -996,6 +996,8 @@ void SparcDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
   CodeGenMap.clear();
+  HandleMap.clear();
+  ReplaceMap.clear();
   DAG.RemoveDeadNodes();
   
   // Emit machine code to BB. 
index b53748ab75def5d49c070640c78ff0fc54555b27..af28f830db262c769bccc55334aa6d8950916602 100644 (file)
@@ -186,6 +186,8 @@ void X86DAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   DEBUG(std::cerr << "===== Instruction selection ends:\n");
 #endif
   CodeGenMap.clear();
+  HandleMap.clear();
+  ReplaceMap.clear();
   DAG.RemoveDeadNodes();
 
   // Emit machine code to BB.