diff options
author | Michael Gottesman <mgottesman@apple.com> | 2013-04-26 01:12:18 +0000 |
---|---|---|
committer | Michael Gottesman <mgottesman@apple.com> | 2013-04-26 01:12:18 +0000 |
commit | d15d29e7c8290ff27457d5244360f894d806b083 (patch) | |
tree | db8b65921bed6997138b77c2bfe57d772587934c /lib/Transforms/ObjCARC/ObjCARCOpts.cpp | |
parent | e1f079064ad73454e25bb2154f6d450230c3c2b9 (diff) |
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. = /.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180590 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/ObjCARC/ObjCARCOpts.cpp')
-rw-r--r-- | lib/Transforms/ObjCARC/ObjCARCOpts.cpp | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/lib/Transforms/ObjCARC/ObjCARCOpts.cpp b/lib/Transforms/ObjCARC/ObjCARCOpts.cpp index 8e4da2f796..e6c5928375 100644 --- a/lib/Transforms/ObjCARC/ObjCARCOpts.cpp +++ b/lib/Transforms/ObjCARC/ObjCARCOpts.cpp @@ -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(Function &F, Instruction *AutoreleaseRV, 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 &F) { DEBUG(dbgs() << "\n"); - ImpreciseAutoreleaseSet.clear(); - return Changed; } void ObjCARCOpt::releaseMemory() { PA.clear(); - ImpreciseAutoreleaseSet.clear(); } /// @} |