aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-07-18 00:29:57 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-07-18 00:29:57 +0000
commit48dc46a5122ab3c957733f77231a6d7c8e9405c9 (patch)
tree612633b5dbb66ff6e18d9aa0fc4c1671a8f4800a
parent0c4a0418d3f73ec373977b28e06920b5046f2727 (diff)
bug 122:
- Minimize redundant isa<GlobalValue> usage - Correct isa<Constant> for GlobalValue subclass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14946 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/CorrelatedExprs.cpp5
-rw-r--r--lib/Transforms/Scalar/LowerGC.cpp6
2 files changed, 6 insertions, 5 deletions
diff --git a/lib/Transforms/Scalar/CorrelatedExprs.cpp b/lib/Transforms/Scalar/CorrelatedExprs.cpp
index aeeade40cc..9738879e28 100644
--- a/lib/Transforms/Scalar/CorrelatedExprs.cpp
+++ b/lib/Transforms/Scalar/CorrelatedExprs.cpp
@@ -243,7 +243,7 @@ namespace {
void BuildRankMap(Function &F);
unsigned getRank(Value *V) const {
- if (isa<Constant>(V) || isa<GlobalValue>(V)) return 0;
+ if (isa<Constant>(V)) return 0;
std::map<Value*, unsigned>::const_iterator I = RankMap.find(V);
if (I != RankMap.end()) return I->second;
return 0; // Must be some other global thing
@@ -476,7 +476,8 @@ bool CEE::ForwardCorrelatedEdgeDestination(TerminatorInst *TI, unsigned SuccNo,
ValueInfo &PredicateVI = NewRI.getValueInfo(BI->getCondition());
if (PredicateVI.getReplacement() &&
- isa<Constant>(PredicateVI.getReplacement())) {
+ isa<Constant>(PredicateVI.getReplacement()) &&
+ !isa<GlobalValue>(PredicateVI.getReplacement())) {
ConstantBool *CB = cast<ConstantBool>(PredicateVI.getReplacement());
// Forward to the successor that corresponds to the branch we will take.
diff --git a/lib/Transforms/Scalar/LowerGC.cpp b/lib/Transforms/Scalar/LowerGC.cpp
index 98ff0428f6..ce67d0e7a1 100644
--- a/lib/Transforms/Scalar/LowerGC.cpp
+++ b/lib/Transforms/Scalar/LowerGC.cpp
@@ -140,7 +140,8 @@ bool LowerGC::doInitialization(Module &M) {
/// not have the specified type, insert a cast.
static void Coerce(Instruction *I, unsigned OpNum, Type *Ty) {
if (I->getOperand(OpNum)->getType() != Ty) {
- if (Constant *C = dyn_cast<Constant>(I->getOperand(OpNum)))
+ Constant *C = dyn_cast<Constant>(I->getOperand(OpNum));
+ if (C && !isa<GlobalValue>(I->getOperand(OpNum)))
I->setOperand(OpNum, ConstantExpr::getCast(C, Ty));
else {
CastInst *C = new CastInst(I->getOperand(OpNum), Ty, "", I);
@@ -252,8 +253,7 @@ bool LowerGC::runOnFunction(Function &F) {
Par[2] = ConstantUInt::get(Type::UIntTy, i);
Par[3] = One;
Value *MetaDataPtr = new GetElementPtrInst(AI, Par, "MetaDataPtr", IP);
- assert(isa<Constant>(GCRoots[i]->getOperand(2)) ||
- isa<GlobalValue>(GCRoots[i]->getOperand(2)));
+ assert(isa<Constant>(GCRoots[i]->getOperand(2)) && "Must be a constant");
new StoreInst(GCRoots[i]->getOperand(2), MetaDataPtr, IP);
// Initialize the root pointer to null on entry to the function.