OSDN Git Service

Remove capability for polymorphic destruction from LexicalScope
authorEric Christopher <echristo@gmail.com>
Wed, 20 Nov 2013 00:54:28 +0000 (00:54 +0000)
committerEric Christopher <echristo@gmail.com>
Wed, 20 Nov 2013 00:54:28 +0000 (00:54 +0000)
and LexicalScopes, we're not using it.

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

include/llvm/CodeGen/LexicalScopes.h
lib/CodeGen/LexicalScopes.cpp
lib/CodeGen/LiveDebugVariables.cpp

index 25f903c..af1f847 100644 (file)
@@ -45,13 +45,14 @@ typedef std::pair<const MachineInstr *, const MachineInstr *> InsnRange;
 class LexicalScopes {
 public:
   LexicalScopes() : MF(NULL), CurrentFnLexicalScope(NULL) {}
-  virtual ~LexicalScopes();
+  ~LexicalScopes();
 
-  /// initialize - Scan machine function and constuct lexical scope nest.
-  virtual void initialize(const MachineFunction &);
+  /// initialize - Scan machine function and constuct lexical scope nest, resets
+  /// the instance if necessary.
+  void initialize(const MachineFunction &);
 
   /// releaseMemory - release memory.
-  virtual void releaseMemory();
+  void reset();
 
   /// empty - Return true if there is any lexical scope information available.
   bool empty() { return CurrentFnLexicalScope == NULL; }
@@ -156,7 +157,6 @@ private:
 /// LexicalScope - This class is used to track scope information.
 ///
 class LexicalScope {
-  virtual void anchor();
 
 public:
   LexicalScope(LexicalScope *P, const MDNode *D, const MDNode *I, bool A)
@@ -166,8 +166,6 @@ public:
       Parent->addChild(this);
   }
 
-  virtual ~LexicalScope() {}
-
   // Accessors.
   LexicalScope *getParent() const { return Parent; }
   const MDNode *getDesc() const { return Desc; }
index 006db6c..e581458 100644 (file)
 #include "llvm/Support/FormattedStream.h"
 using namespace llvm;
 
-LexicalScopes::~LexicalScopes() { releaseMemory(); }
+/// ~LexicalScopes - final cleanup after ourselves.
+LexicalScopes::~LexicalScopes() { reset(); }
 
-/// releaseMemory - release memory.
-void LexicalScopes::releaseMemory() {
+/// reset - Reset the instance so that it's prepared for another function.
+void LexicalScopes::reset() {
   MF = NULL;
   CurrentFnLexicalScope = NULL;
   DeleteContainerSeconds(LexicalScopeMap);
@@ -39,7 +40,7 @@ void LexicalScopes::releaseMemory() {
 
 /// initialize - Scan machine function and constuct lexical scope nest.
 void LexicalScopes::initialize(const MachineFunction &Fn) {
-  releaseMemory();
+  reset();
   MF = &Fn;
   SmallVector<InsnRange, 4> MIRanges;
   DenseMap<const MachineInstr *, LexicalScope *> MI2ScopeMap;
@@ -311,8 +312,6 @@ bool LexicalScopes::dominates(DebugLoc DL, MachineBasicBlock *MBB) {
   return Result;
 }
 
-void LexicalScope::anchor() {}
-
 /// dump - Print data structures.
 void LexicalScope::dump(unsigned Indent) const {
 #ifndef NDEBUG
index 9ada1b4..52b7ee0 100644 (file)
@@ -704,7 +704,6 @@ bool LDVImpl::runOnMachineFunction(MachineFunction &mf) {
   bool Changed = collectDebugValues(mf);
   computeIntervals();
   DEBUG(print(dbgs()));
-  LS.releaseMemory();
   ModifiedMF = Changed;
   return Changed;
 }