Use cast<> instead of dyn_cast<> for things that are known to be

Instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73002 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jay Foad 2009-06-06 17:49:35 +00:00
parent 86fbf2fe4c
commit 0906b1bf09
4 changed files with 16 additions and 23 deletions

View File

@ -932,8 +932,7 @@ static bool ValueIsOnlyUsedLocallyOrStoredToOneGlobal(Instruction *V,
GlobalVariable *GV,
SmallPtrSet<PHINode*, 8> &PHIs) {
for (Value::use_iterator UI = V->use_begin(), E = V->use_end(); UI != E;++UI){
Instruction *Inst = dyn_cast<Instruction>(*UI);
if (Inst == 0) return false;
Instruction *Inst = cast<Instruction>(*UI);
if (isa<LoadInst>(Inst) || isa<CmpInst>(Inst)) {
continue; // Fine, ignore.

View File

@ -241,15 +241,11 @@ bool IPCP::PropagateConstantReturn(Function &F) {
for (Value::use_iterator I = Call->use_begin(), E = Call->use_end();
I != E;) {
Instruction *Ins = dyn_cast<Instruction>(*I);
Instruction *Ins = cast<Instruction>(*I);
// Increment now, so we can remove the use
++I;
// Not an instruction? Ignore
if (!Ins)
continue;
// Find the index of the retval to replace with
int index = -1;
if (ExtractValueInst *EV = dyn_cast<ExtractValueInst>(Ins))

View File

@ -1525,12 +1525,12 @@ namespace {
Instruction *I2 = dyn_cast<Instruction>(R);
if (I2 && below(I2)) {
std::vector<Instruction *> ToNotify;
for (Value::use_iterator UI = R->use_begin(), UE = R->use_end();
for (Value::use_iterator UI = I2->use_begin(), UE = I2->use_end();
UI != UE;) {
Use &TheUse = UI.getUse();
++UI;
if (Instruction *I = dyn_cast<Instruction>(TheUse.getUser()))
ToNotify.push_back(I);
Instruction *I = cast<Instruction>(TheUse.getUser());
ToNotify.push_back(I);
}
DOUT << "Simply removing " << *I2
@ -1658,10 +1658,9 @@ namespace {
++UI;
Value *V = TheUse.getUser();
if (!V->use_empty()) {
if (Instruction *Inst = dyn_cast<Instruction>(V)) {
if (aboveOrBelow(Inst))
opsToDef(Inst);
}
Instruction *Inst = cast<Instruction>(V);
if (aboveOrBelow(Inst))
opsToDef(Inst);
}
}
}
@ -2262,10 +2261,9 @@ namespace {
UE = O.LHS->use_end(); UI != UE;) {
Use &TheUse = UI.getUse();
++UI;
if (Instruction *I = dyn_cast<Instruction>(TheUse.getUser())) {
if (aboveOrBelow(I))
opsToDef(I);
}
Instruction *I = cast<Instruction>(TheUse.getUser());
if (aboveOrBelow(I))
opsToDef(I);
}
}
if (Instruction *I2 = dyn_cast<Instruction>(O.RHS)) {
@ -2277,10 +2275,9 @@ namespace {
UE = O.RHS->use_end(); UI != UE;) {
Use &TheUse = UI.getUse();
++UI;
if (Instruction *I = dyn_cast<Instruction>(TheUse.getUser())) {
if (aboveOrBelow(I))
opsToDef(I);
}
Instruction *I = cast<Instruction>(TheUse.getUser());
if (aboveOrBelow(I))
opsToDef(I);
}
}
}

View File

@ -1228,7 +1228,8 @@ void SROA::CleanupAllocaUsers(AllocationInst *AI) {
User *U = *UI++;
if (GetElementPtrInst *GEPI = dyn_cast<GetElementPtrInst>(U))
CleanupGEP(GEPI);
else if (Instruction *I = dyn_cast<Instruction>(U)) {
else {
Instruction *I = cast<Instruction>(U);
SmallVector<DbgInfoIntrinsic *, 2> DbgInUses;
if (!isa<StoreInst>(I) && OnlyUsedByDbgInfoIntrinsics(I, &DbgInUses)) {
// Safe to remove debug info uses.