summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorZhou Sheng <zhousheng00@gmail.com>2012-12-01 10:54:28 +0000
committerZhou Sheng <zhousheng00@gmail.com>2012-12-01 10:54:28 +0000
commitefcdb2944bb81519c839feef3a83feed35552393 (patch)
treedce4929e5a4caca07d28610f0fcbd23d70b11e6a /lib
parent702aa2ee19132593b552d211c985aa540787c197 (diff)
downloadllvm-efcdb2944bb81519c839feef3a83feed35552393.tar.gz
llvm-efcdb2944bb81519c839feef3a83feed35552393.tar.bz2
llvm-efcdb2944bb81519c839feef3a83feed35552393.tar.xz
Revert previous check in r168581, r169079 as they are still in code review status.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169083 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Transforms/IPO/GlobalOpt.cpp26
-rw-r--r--lib/VMCore/PassManager.cpp12
2 files changed, 4 insertions, 34 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index 54b97fabdc..591278fa62 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -36,7 +36,6 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/STLExtras.h"
#include <algorithm>
@@ -2399,8 +2398,7 @@ static bool isSimpleEnoughPointerToCommit(Constant *C) {
/// initializer. This returns 'Init' modified to reflect 'Val' stored into it.
/// At this point, the GEP operands of Addr [0, OpNo) have been stepped into.
static Constant *EvaluateStoreInto(Constant *Init, Constant *Val,
- ConstantExpr *Addr, unsigned OpNo,
- SetVector<Constant*>& Obsolete) {
+ ConstantExpr *Addr, unsigned OpNo) {
// Base case of the recursion.
if (OpNo == Addr->getNumOperands()) {
assert(Val->getType() == Init->getType() && "Type mismatch!");
@@ -2417,9 +2415,7 @@ static Constant *EvaluateStoreInto(Constant *Init, Constant *Val,
ConstantInt *CU = cast<ConstantInt>(Addr->getOperand(OpNo));
unsigned Idx = CU->getZExtValue();
assert(Idx < STy->getNumElements() && "Struct index out of range!");
- if (Elts[Idx]->getType()->isAggregateType())
- Obsolete.insert(Elts[Idx]);
- Elts[Idx] = EvaluateStoreInto(Elts[Idx], Val, Addr, OpNo+1, Obsolete);
+ Elts[Idx] = EvaluateStoreInto(Elts[Idx], Val, Addr, OpNo+1);
// Return the modified struct.
return ConstantStruct::get(STy, Elts);
@@ -2439,11 +2435,8 @@ static Constant *EvaluateStoreInto(Constant *Init, Constant *Val,
Elts.push_back(Init->getAggregateElement(i));
assert(CI->getZExtValue() < NumElts);
- Constant *OrigElem = Elts[CI->getZExtValue()];
- if (OrigElem->getType()->isAggregateType())
- Obsolete.insert(OrigElem);
Elts[CI->getZExtValue()] =
- EvaluateStoreInto(OrigElem, Val, Addr, OpNo+1, Obsolete);
+ EvaluateStoreInto(Elts[CI->getZExtValue()], Val, Addr, OpNo+1);
if (Init->getType()->isArrayTy())
return ConstantArray::get(cast<ArrayType>(InitTy), Elts);
@@ -2459,20 +2452,9 @@ static void CommitValueTo(Constant *Val, Constant *Addr) {
return;
}
- // Collect obsolete constants created in previous CommitValueTo() invoke.
- SetVector<Constant*> Obsolete;
ConstantExpr *CE = cast<ConstantExpr>(Addr);
GlobalVariable *GV = cast<GlobalVariable>(CE->getOperand(0));
- Constant *OrigInit = GV->getInitializer();
- if (OrigInit->getType()->isAggregateType())
- Obsolete.insert(OrigInit);
- Constant *Init = EvaluateStoreInto(OrigInit, Val, CE, 2, Obsolete);
- GV->setInitializer(Init);
-
- for (unsigned i = 0; i < Obsolete.size(); ++i) {
- if (Obsolete[i]->use_empty())
- Obsolete[i]->destroyConstant();
- }
+ GV->setInitializer(EvaluateStoreInto(GV->getInitializer(), Val, CE, 2));
}
namespace {
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp
index 77e7913c83..9c84f1a412 100644
--- a/lib/VMCore/PassManager.cpp
+++ b/lib/VMCore/PassManager.cpp
@@ -1640,18 +1640,6 @@ void MPPassManager::addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) {
OnTheFlyManagers[P] = FPP;
}
-
- // If RequiredPass is an analysis pass and it is available then do not
- // generate the analysis again. Stale analysis info should not be
- // available at this point.
- const PassInfo *PI =
- PassRegistry::getPassRegistry()->getPassInfo(RequiredPass->getPassID());
- if (PI && PI->isAnalysis() &&
- FPP->getTopLevelManager()->findAnalysisPass(RequiredPass->getPassID())) {
- delete RequiredPass;
- return;
- }
-
FPP->add(RequiredPass);
// Register P as the last user of RequiredPass.