Don't emit a redundant BitCastInst if the value to be defined in the

preheader is already an instruction.

llvm-svn: 74031
This commit is contained in:
Dan Gohman 2009-06-24 00:28:59 +00:00
parent 446169df49
commit 1eb6954545

View File

@ -1642,7 +1642,8 @@ void LoopStrengthReduce::StrengthReduceStridedIVUsers(const SCEV* const &Stride,
// the preheader, instead of being forward substituted into the uses. We
// do this by forcing a BitCast (noop cast) to be inserted into the
// preheader in this case.
if (!fitsInAddressMode(Base, getAccessType(Inst), TLI, false)) {
if (!fitsInAddressMode(Base, getAccessType(Inst), TLI, false) &&
!isa<Instruction>(BaseV)) {
// We want this constant emitted into the preheader! This is just
// using cast as a copy so BitCast (no-op cast) is appropriate
BaseV = new BitCastInst(BaseV, BaseV->getType(), "preheaderinsert",