Sorting is now handled by both linearscan and iterative scan so live
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Thu, 22 Jul 2004 15:18:10 +0000 (15:18 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Thu, 22 Jul 2004 15:18:10 +0000 (15:18 +0000)
intervals need not be sorted anymore. Removing this redundant step
improves LiveIntervals running time by 5% on 176.gcc.

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

lib/CodeGen/LiveIntervalAnalysis.cpp

index 2ef1ccae6d7575f112d0eadb4355f485134a9a5a..35bbf081cb0936a8ef4d3a151f4b4ba4a6ca2e6a 100644 (file)
@@ -159,7 +159,6 @@ bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
         }
     }
 
-    intervals_.sort();
     DEBUG(std::cerr << "********** INTERVALS **********\n");
     DEBUG(std::copy(intervals_.begin(), intervals_.end(),
                     std::ostream_iterator<LiveInterval>(std::cerr, "\n")));
@@ -263,15 +262,6 @@ std::vector<LiveInterval*> LiveIntervals::addIntervalsForSpills(
         }
     }
 
-    // FIXME: This method MUST return intervals in sorted order.  If a 
-    // particular machine instruction both uses and defines the vreg being
-    // spilled (e.g.,  vr = vr + 1) and if the def is processed before the
-    // use, the list ends up not sorted.
-    //
-    // The proper way to fix this is to process all uses of the vreg before we 
-    // process any defs.  However, this would require refactoring the above 
-    // blob of code, which I'm not feeling up to right now.
-    std::sort(added.begin(), added.end(), less_ptr<LiveInterval>());
     return added;
 }