Get rid of the abort in PhyRegAlloc::finishSavingState().

Make an explicit call to it from runOnFunction() if we know we're supposed to
write into the global. This is lame (esp. the const_cast), but it solves
the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12291 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
index 1428fc6..1524331 100644
--- a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
+++ b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
@@ -1232,9 +1232,9 @@
 /// state; this one is cumbersome and does not work well with the JIT.
 ///
 void PhyRegAlloc::finishSavingState (Module &M) {
-  std::cerr << "---- Saving reg. alloc state; SaveStateToModule = "
-            << SaveStateToModule << " ----\n";
-  abort ();
+  if (DEBUG_RA)
+    std::cerr << "---- Saving reg. alloc state; SaveStateToModule = "
+              << SaveStateToModule << " ----\n";
 
   // If saving state into the module, just copy new elements to the
   // correct global.
@@ -1379,9 +1379,10 @@
   // Save register allocation state for this function in a Constant.
   if (SaveRegAllocState) {
     saveState();
-    if (DEBUG_RA) { // Check our work.
+    if (DEBUG_RA) // Check our work.
       verifySavedState ();
-    }
+    if (!SaveStateToModule)
+      finishSavingState (const_cast<Module&> (*Fn->getParent ()));
   }
 
   // Now update the machine code with register names and add any additional