Don't try to create a mask when we don't need one. Fixes a crash.
[oota-llvm.git] / lib / Analysis / IntervalPartition.cpp
index e3396916caef9c7a1fbf048c8087e31fa7ec69b3..cb8a85da552a39d93ab9ca777e75cc113f923def 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
@@ -17,17 +17,18 @@ using namespace llvm;
 
 char IntervalPartition::ID = 0;
 static RegisterPass<IntervalPartition>
-X("intervals", "Interval Partition Construction", true);
+X("intervals", "Interval Partition Construction", true, true);
 
 //===----------------------------------------------------------------------===//
 // IntervalPartition Implementation
 //===----------------------------------------------------------------------===//
 
-// destroy - Reset state back to before function was analyzed
-void IntervalPartition::destroy() {
+// releaseMemory - Reset state back to before function was analyzed
+void IntervalPartition::releaseMemory() {
   for (unsigned i = 0, e = Intervals.size(); i != e; ++i)
     delete Intervals[i];
   IntervalMap.clear();
+  Intervals.clear();
   RootInterval = 0;
 }
 
@@ -90,9 +91,8 @@ bool IntervalPartition::runOnFunction(Function &F) {
 // distinguish it from a copy constructor.  Always pass in false for now.
 //
 IntervalPartition::IntervalPartition(IntervalPartition &IP, bool)
-  : FunctionPass((intptr_t) &ID) {
-  Interval *FunctionStart = IP.getRootInterval();
-  assert(FunctionStart && "Cannot operate on empty IntervalPartitions!");
+  : FunctionPass(&ID) {
+  assert(IP.getRootInterval() && "Cannot operate on empty IntervalPartitions!");
 
   // Pass false to intervals_begin because we take ownership of it's memory
   interval_part_interval_iterator I = intervals_begin(IP, false);