[llvm-commits] [llvm] r73256 - /llvm/trunk/lib/CodeGen/LazyLiveness.cpp

Owen Anderson resistor at mac.com
Fri Jun 12 14:41:29 PDT 2009


Author: resistor
Date: Fri Jun 12 16:41:29 2009
New Revision: 73256

URL: http://llvm.org/viewvc/llvm-project?rev=73256&view=rev
Log:
Now with less iterator invalidation, and other forms of crashing!

Modified:
    llvm/trunk/lib/CodeGen/LazyLiveness.cpp

Modified: llvm/trunk/lib/CodeGen/LazyLiveness.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LazyLiveness.cpp?rev=73256&r1=73255&r2=73256&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/LazyLiveness.cpp (original)
+++ llvm/trunk/lib/CodeGen/LazyLiveness.cpp Fri Jun 12 16:41:29 2009
@@ -22,6 +22,7 @@
 using namespace llvm;
 
 char LazyLiveness::ID = 0;
+static RegisterPass<LazyLiveness> X("lazy-liveness", "Lazy Liveness Analysis");
 
 void LazyLiveness::computeBackedgeChain(MachineFunction& mf, 
                                         MachineBasicBlock* MBB) {
@@ -65,7 +66,7 @@
   // Step 0: Compute preorder numbering for all MBBs.
   unsigned num = 0;
   for (df_iterator<MachineBasicBlock*> DI = df_begin(&*mf.begin());
-       DI != df_end(&*mf.end()); ++DI) {
+       DI != df_end(&*mf.begin()); ++DI) {
     preorder[*DI] = num++;
     rev_preorder.push_back(*DI);
   }
@@ -103,8 +104,10 @@
     if (!backedge_target.test(preorder[*POI]))
       for (MachineBasicBlock::succ_iterator SI = (*POI)->succ_begin();
            SI != (*POI)->succ_end(); ++SI)
-        if (!backedges.count(std::make_pair(*POI, *SI)) && tv.count(*SI))
-          tv[*POI]= tv[*SI];
+        if (!backedges.count(std::make_pair(*POI, *SI)) && tv.count(*SI)) {
+          SparseBitVector<128>& PBV = tv[*POI];
+          PBV = tv[*SI];
+        }
   
   for (po_iterator<MachineBasicBlock*> POI = po_begin(&*mf.begin()),
        POE = po_end(&*mf.begin()); POI != POE; ++POI)





More information about the llvm-commits mailing list