// See through pointer-to-pointer bitcasts
TranslatePointerBitCasts(pointerOperand);
- if (deadPointers.count(pointerOperand)){
+ if (isa<AllocaInst>(pointerOperand) &&
+ deadPointers.count(cast<AllocaInst>(pointerOperand))) {
// Remove it!
MD.removeInstruction(S);
for (std::vector<Instruction*>::iterator I = dead.begin(), E = dead.end();
I != E; ++I)
- deadPointers.erase(*I);
+ if (AllocaInst *AI = dyn_cast<AllocaInst>(*I))
+ deadPointers.erase(AI);
continue;
}
for (std::vector<Instruction*>::iterator I = undead.begin(), E = undead.end();
I != E; ++I)
- deadPointers.erase(*I);
+ if (AllocaInst *AI = dyn_cast<AllocaInst>(*I))
+ deadPointers.erase(AI);
return MadeChange;
}