diff options
Diffstat (limited to 'lib/Analysis/IPA')
-rw-r--r-- | lib/Analysis/IPA/Andersens.cpp | 18 | ||||
-rw-r--r-- | lib/Analysis/IPA/GlobalsModRef.cpp | 8 |
2 files changed, 12 insertions, 14 deletions
diff --git a/lib/Analysis/IPA/Andersens.cpp b/lib/Analysis/IPA/Andersens.cpp index dd94b38..73aa231 100644 --- a/lib/Analysis/IPA/Andersens.cpp +++ b/lib/Analysis/IPA/Andersens.cpp @@ -529,11 +529,10 @@ Andersens::Node *Andersens::getNodeForConstantPointer(Constant *C) { switch (CE->getOpcode()) { case Instruction::GetElementPtr: return getNodeForConstantPointer(CE->getOperand(0)); - case Instruction::Cast: - if (isa<PointerType>(CE->getOperand(0)->getType())) - return getNodeForConstantPointer(CE->getOperand(0)); - else - return &GraphNodes[UniversalSet]; + case Instruction::IntToPtr: + return &GraphNodes[UniversalSet]; + case Instruction::BitCast: + return getNodeForConstantPointer(CE->getOperand(0)); default: std::cerr << "Constant Expr not yet handled: " << *CE << "\n"; assert(0); @@ -557,11 +556,10 @@ Andersens::Node *Andersens::getNodeForConstantPointerTarget(Constant *C) { switch (CE->getOpcode()) { case Instruction::GetElementPtr: return getNodeForConstantPointerTarget(CE->getOperand(0)); - case Instruction::Cast: - if (isa<PointerType>(CE->getOperand(0)->getType())) - return getNodeForConstantPointerTarget(CE->getOperand(0)); - else - return &GraphNodes[UniversalSet]; + case Instruction::IntToPtr: + return &GraphNodes[UniversalSet]; + case Instruction::BitCast: + return getNodeForConstantPointerTarget(CE->getOperand(0)); default: std::cerr << "Constant Expr not yet handled: " << *CE << "\n"; assert(0); diff --git a/lib/Analysis/IPA/GlobalsModRef.cpp b/lib/Analysis/IPA/GlobalsModRef.cpp index d4dc18d..59cf66f 100644 --- a/lib/Analysis/IPA/GlobalsModRef.cpp +++ b/lib/Analysis/IPA/GlobalsModRef.cpp @@ -167,10 +167,10 @@ static Value *getUnderlyingObject(Value *V) { // Traverse through different addressing mechanisms. if (Instruction *I = dyn_cast<Instruction>(V)) { - if (isa<CastInst>(I) || isa<GetElementPtrInst>(I)) + if (isa<BitCastInst>(I) || isa<GetElementPtrInst>(I)) return getUnderlyingObject(I->getOperand(0)); } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(V)) { - if (CE->getOpcode() == Instruction::Cast || + if (CE->getOpcode() == Instruction::BitCast || CE->getOpcode() == Instruction::GetElementPtr) return getUnderlyingObject(CE->getOperand(0)); } @@ -252,8 +252,8 @@ bool GlobalsModRef::AnalyzeUsesOfPointer(Value *V, for (unsigned i = 3, e = II->getNumOperands(); i != e; ++i) if (II->getOperand(i) == V) return true; } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(*UI)) { - if (CE->getOpcode() == Instruction::GetElementPtr || - CE->getOpcode() == Instruction::Cast) { + if (CE->getOpcode() == Instruction::GetElementPtr || + CE->getOpcode() == Instruction::BitCast) { if (AnalyzeUsesOfPointer(CE, Readers, Writers)) return true; } else { |