[llvm-commits] [llvm] r46680 - in /llvm/trunk/lib/CodeGen/SelectionDAG: LegalizeTypes.cpp LegalizeTypes.h

Chris Lattner sabre at nondot.org
Sat Feb 2 23:13:32 PST 2008


Author: lattner
Date: Sun Feb  3 01:13:32 2008
New Revision: 46680

URL: http://llvm.org/viewvc/llvm-project?rev=46680&view=rev
Log:
handle the case where a node can become ready to process
multiple times due to a RAUW.

Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp?rev=46680&r1=46679&r2=46680&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp Sun Feb  3 01:13:32 2008
@@ -234,7 +234,8 @@
       // Node updates can mean pretty much anything.  It is possible that an
       // operand was set to something already processed (f.e.) in which case
       // this node could become ready.  Recompoute its flags.
-      DTL.ReanalyzeNodeFlags(N);
+      if (N->getNodeId() != DAGTypeLegalizer::ReadyToProcess)
+        DTL.ReanalyzeNodeFlags(N);
     }
   };
 }

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h?rev=46680&r1=46679&r2=46680&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h Sun Feb  3 01:13:32 2008
@@ -40,7 +40,7 @@
 class VISIBILITY_HIDDEN DAGTypeLegalizer {
   TargetLowering &TLI;
   SelectionDAG &DAG;
-  
+public:
   // NodeIDFlags - This pass uses the NodeID on the SDNodes to hold information
   // about the state of the node.  The enum has all the values.
   enum NodeIDFlags {
@@ -57,7 +57,7 @@
     
     // 1+ - This is a node which has this many unlegalized operands.
   };
-  
+private:
   enum LegalizeAction {
     Legal,      // The target natively supports this type.
     Promote,    // This type should be executed in a larger type.





More information about the llvm-commits mailing list