aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-04-26 01:12:18 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-04-26 01:12:18 +0000
commitd15d29e7c8290ff27457d5244360f894d806b083 (patch)
treedb8b65921bed6997138b77c2bfe57d772587934c /lib/Transforms/ObjCARC/ObjCARCOpts.cpp
parente1f079064ad73454e25bb2154f6d450230c3c2b9 (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.cpp38
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();
}
/// @}