forked from OSchip/llvm-project
bug 122:
- Minimize redundant isa<GlobalValue> usage - Correct isa<Constant> for GlobalValue subclass llvm-svn: 14946
This commit is contained in:
parent
5f6815980b
commit
9e855c6832
|
@ -243,7 +243,7 @@ namespace {
|
||||||
|
|
||||||
void BuildRankMap(Function &F);
|
void BuildRankMap(Function &F);
|
||||||
unsigned getRank(Value *V) const {
|
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);
|
std::map<Value*, unsigned>::const_iterator I = RankMap.find(V);
|
||||||
if (I != RankMap.end()) return I->second;
|
if (I != RankMap.end()) return I->second;
|
||||||
return 0; // Must be some other global thing
|
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());
|
ValueInfo &PredicateVI = NewRI.getValueInfo(BI->getCondition());
|
||||||
if (PredicateVI.getReplacement() &&
|
if (PredicateVI.getReplacement() &&
|
||||||
isa<Constant>(PredicateVI.getReplacement())) {
|
isa<Constant>(PredicateVI.getReplacement()) &&
|
||||||
|
!isa<GlobalValue>(PredicateVI.getReplacement())) {
|
||||||
ConstantBool *CB = cast<ConstantBool>(PredicateVI.getReplacement());
|
ConstantBool *CB = cast<ConstantBool>(PredicateVI.getReplacement());
|
||||||
|
|
||||||
// Forward to the successor that corresponds to the branch we will take.
|
// Forward to the successor that corresponds to the branch we will take.
|
||||||
|
|
|
@ -140,7 +140,8 @@ bool LowerGC::doInitialization(Module &M) {
|
||||||
/// not have the specified type, insert a cast.
|
/// not have the specified type, insert a cast.
|
||||||
static void Coerce(Instruction *I, unsigned OpNum, Type *Ty) {
|
static void Coerce(Instruction *I, unsigned OpNum, Type *Ty) {
|
||||||
if (I->getOperand(OpNum)->getType() != 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));
|
I->setOperand(OpNum, ConstantExpr::getCast(C, Ty));
|
||||||
else {
|
else {
|
||||||
CastInst *C = new CastInst(I->getOperand(OpNum), Ty, "", I);
|
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[2] = ConstantUInt::get(Type::UIntTy, i);
|
||||||
Par[3] = One;
|
Par[3] = One;
|
||||||
Value *MetaDataPtr = new GetElementPtrInst(AI, Par, "MetaDataPtr", IP);
|
Value *MetaDataPtr = new GetElementPtrInst(AI, Par, "MetaDataPtr", IP);
|
||||||
assert(isa<Constant>(GCRoots[i]->getOperand(2)) ||
|
assert(isa<Constant>(GCRoots[i]->getOperand(2)) && "Must be a constant");
|
||||||
isa<GlobalValue>(GCRoots[i]->getOperand(2)));
|
|
||||||
new StoreInst(GCRoots[i]->getOperand(2), MetaDataPtr, IP);
|
new StoreInst(GCRoots[i]->getOperand(2), MetaDataPtr, IP);
|
||||||
|
|
||||||
// Initialize the root pointer to null on entry to the function.
|
// Initialize the root pointer to null on entry to the function.
|
||||||
|
|
Loading…
Reference in New Issue