Interpreter cleanups:

Get rid of support for DebugMode (make it always off).
Mung some comments.
Get rid of interpreter's PROFILE_STRUCTURE_FIELDS and PerformExitStuff
 which have been disabled forever.
Get rid of -abort-on-exception (make it always on).
Get rid of user interaction stuff (debug mode innards).
Simplify Interpreter's callMainFunction().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8344 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/ExecutionEngine/Interpreter/Execution.cpp b/lib/ExecutionEngine/Interpreter/Execution.cpp
index 84486c2..79c404a 100644
--- a/lib/ExecutionEngine/Interpreter/Execution.cpp
+++ b/lib/ExecutionEngine/Interpreter/Execution.cpp
@@ -31,10 +31,6 @@
 
   cl::opt<bool>
   ArrayChecksEnabled("array-checks", cl::desc("Enable array bound checks"));
-
-  cl::opt<bool>
-  AbortOnExceptions("abort-on-exception",
-                    cl::desc("Halt execution on a machine exception"));
 }
 
 // Create a TargetData structure to handle memory addressing and size/alignment
@@ -42,14 +38,6 @@
 //
 CachedWriter CW;     // Object to accelerate printing of LLVM
 
-#ifdef PROFILE_STRUCTURE_FIELDS
-static cl::opt<bool>
-ProfileStructureFields("profilestructfields", 
-                       cl::desc("Profile Structure Field Accesses"));
-#include <map>
-static std::map<const StructType *, std::vector<unsigned> > FieldAccessCounts;
-#endif
-
 sigjmp_buf SignalRecoverBuffer;
 static bool InInstruction = false;
 
@@ -520,54 +508,6 @@
 //                     Terminator Instruction Implementations
 //===----------------------------------------------------------------------===//
 
-// PerformExitStuff - Print out counters and profiling information if
-// applicable...
-void Interpreter::PerformExitStuff() {
-#ifdef PROFILE_STRUCTURE_FIELDS
-  // Print out structure field accounting information...
-  if (!FieldAccessCounts.empty()) {
-    CW << "Profile Field Access Counts:\n";
-    std::map<const StructType *, std::vector<unsigned> >::iterator 
-      I = FieldAccessCounts.begin(), E = FieldAccessCounts.end();
-    for (; I != E; ++I) {
-      std::vector<unsigned> &OfC = I->second;
-      CW << "  '" << (Value*)I->first << "'\t- Sum=";
-      
-      unsigned Sum = 0;
-      for (unsigned i = 0; i < OfC.size(); ++i)
-        Sum += OfC[i];
-      CW << Sum << " - ";
-      
-      for (unsigned i = 0; i < OfC.size(); ++i) {
-        if (i) CW << ", ";
-        CW << OfC[i];
-      }
-      CW << "\n";
-    }
-    CW << "\n";
-
-    CW << "Profile Field Access Percentages:\n";
-    std::cout.precision(3);
-    for (I = FieldAccessCounts.begin(); I != E; ++I) {
-      std::vector<unsigned> &OfC = I->second;
-      unsigned Sum = 0;
-      for (unsigned i = 0; i < OfC.size(); ++i)
-        Sum += OfC[i];
-      
-      CW << "  '" << (Value*)I->first << "'\t- ";
-      for (unsigned i = 0; i < OfC.size(); ++i) {
-        if (i) CW << ", ";
-        CW << double(OfC[i])/Sum;
-      }
-      CW << "\n";
-    }
-    CW << "\n";
-
-    FieldAccessCounts.clear();
-  }
-#endif
-}
-
 void Interpreter::exitCalled(GenericValue GV) {
   if (!QuietMode) {
     std::cout << "Program returned ";
@@ -756,15 +696,6 @@
       assert(CPU->getType() == Type::UByteTy);
       unsigned Index = CPU->getValue();
       
-#ifdef PROFILE_STRUCTURE_FIELDS
-      if (ProfileStructureFields) {
-        // Do accounting for this field...
-        std::vector<unsigned> &OfC = FieldAccessCounts[STy];
-        if (OfC.size() == 0) OfC.resize(STy->getElementTypes().size());
-        OfC[Index]++;
-      }
-#endif
-      
       Total += SLO->MemberOffsets[Index];
       Ty = STy->getElementTypes()[Index];
     } else if (const SequentialType *ST = cast<SequentialType>(Ty)) {
@@ -1107,16 +1038,8 @@
   //
   if (int SigNo = sigsetjmp(SignalRecoverBuffer, 1)) {
     --SF.CurInst;   // Back up to erroring instruction
-    if (SigNo != SIGINT) {
-      std::cout << "EXCEPTION OCCURRED [" << strsignal(SigNo) << "]:\n";
-      printStackTrace();
-      // If -abort-on-exception was specified, terminate LLI instead of trying
-      // to debug it.
-      //
-      if (AbortOnExceptions) exit(1);
-    } else if (SigNo == SIGINT) {
-      std::cout << "CTRL-C Detected, execution halted.\n";
-    }
+    std::cout << "EXCEPTION OCCURRED [" << strsignal(SigNo) << "]\n";
+    exit(1);
     InInstruction = false;
     return true;
   }