[llvm] r180590 - Revert "[objc-arc] Added ImpreciseAutoreleaseSet to track autorelease calls that were once autoreleaseRV instructions."

Michael Gottesman mgottesman at apple.com
Thu Apr 25 18:12:18 PDT 2013


Author: mgottesman
Date: Thu Apr 25 20:12:18 2013
New Revision: 180590

URL: http://llvm.org/viewvc/llvm-project?rev=180590&view=rev
Log:
Revert "[objc-arc] Added ImpreciseAutoreleaseSet to track autorelease calls that were once autoreleaseRV instructions."

This reverts commit r180222.

I think this might tie in with a different problem which will require a
different approach potentially. I am reverting this in the case I need to go
down that second path.

My apologies for the noise. = /.

Modified:
    llvm/trunk/lib/Transforms/ObjCARC/ObjCARCOpts.cpp

Modified: llvm/trunk/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/ObjCARC/ObjCARCOpts.cpp?rev=180590&r1=180589&r2=180590&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/ObjCARC/ObjCARCOpts.cpp (original)
+++ llvm/trunk/lib/Transforms/ObjCARC/ObjCARCOpts.cpp Thu Apr 25 20:12:18 2013
@@ -30,7 +30,6 @@
 #include "ObjCARCAliasAnalysis.h"
 #include "ProvenanceAnalysis.h"
 #include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/DenseSet.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/SmallPtrSet.h"
 #include "llvm/ADT/Statistic.h"
@@ -986,13 +985,6 @@ namespace {
     /// A flag indicating whether this optimization pass should run.
     bool Run;
 
-    /// This set contains references to objc_autorelease calls that at one point
-    /// in time were objc_autoreleaseRV calls. Thus we can disambiguate
-    /// in between objc_autorelease that were inserted from the frontend (which
-    /// we must be very conservative with) and those as a result of strength
-    /// reducing objc_autoreleaseRV calls (which are more flexible).
-    DenseSet<Instruction *> ImpreciseAutoreleaseSet;
-
     /// Declarations for ObjC runtime functions, for use in creating calls to
     /// them. These are initialized lazily to avoid cluttering up the Module
     /// with unused declarations.
@@ -1042,27 +1034,6 @@ namespace {
 
     bool IsRetainBlockOptimizable(const Instruction *Inst);
 
-    /// Erase an instruction.
-    ///
-    /// This is included separately from the EraseInstruction in ObjCARC.h
-    /// (which this uses internally) in order to make sure that state is cleaned
-    /// up. Currently this just means attempting to remove said instruction from
-    /// ImpreciseAutoreleaseSet if it is an autorelease instruction. This will
-    /// prevent bugs of the sort where we erase an instruction and forget to
-    /// remove any associated state.
-    ///
-    /// TODO: Maybe remove this, the ImpreciseAutoreleaseSet, the
-    /// MetadataKind/Callee variables into a separate class.
-    void EraseInstruction(Instruction *Inst) {
-      // If Inst is an autorelease instruction, erase it from
-      // ImpreciseAutoreleaseSet if it is contained there in.
-      if (GetBasicInstructionClass(Inst) == IC_Autorelease) {
-        ImpreciseAutoreleaseSet.erase(Inst);
-      }
-      // Invoke the normal EraseInstruction.
-      llvm::objcarc::EraseInstruction(Inst);
-    }
-
     void OptimizeRetainCall(Function &F, Instruction *Retain);
     bool OptimizeRetainRVCall(Function &F, Instruction *RetainRV);
     void OptimizeAutoreleaseRVCall(Function &F, Instruction *AutoreleaseRV,
@@ -1388,12 +1359,6 @@ ObjCARCOpt::OptimizeAutoreleaseRVCall(Fu
   AutoreleaseRVCI->setTailCall(false); // Never tail call objc_autorelease.
   Class = IC_Autorelease;
 
-  // Stash the given instruction in the ImpreciseAutoreleaseSet so we can check
-  // later on that this instruction was an autoreleaseRV instruction that was
-  // converted to an autorelease instead of an autorelease inserted by the
-  // frontend (which we can not touch).
-  ImpreciseAutoreleaseSet.insert(AutoreleaseRVCI);
-
   DEBUG(dbgs() << "New: " << *AutoreleaseRV << "\n");
 
 }
@@ -3129,14 +3094,11 @@ bool ObjCARCOpt::runOnFunction(Function
 
   DEBUG(dbgs() << "\n");
 
-  ImpreciseAutoreleaseSet.clear();
-
   return Changed;
 }
 
 void ObjCARCOpt::releaseMemory() {
   PA.clear();
-  ImpreciseAutoreleaseSet.clear();
 }
 
 /// @}





More information about the llvm-commits mailing list