Make sure that an upgraded index is also inserted into the VIndices

otherwise it gets ignored.

This fixes test/CodeGen/X86/2006-05-11-InstrSched.ll

Thanks to Evan Cheng for noticing this.

llvm-svn: 33546
This commit is contained in:
Reid Spencer 2007-01-26 20:29:52 +00:00
parent 41210fb2dc
commit 62b741dc4c
1 changed files with 3 additions and 1 deletions

View File

@ -1169,13 +1169,15 @@ const Type* upgradeGEPIndices(const Type* PTy,
// all indices for SequentialType elements. We must retain the same
// semantic (zext) for unsigned types.
if (const IntegerType *Ity = dyn_cast<IntegerType>(Index->getType()))
if (Ity->getBitWidth() < 64 && (*Indices)[i].S == Unsigned)
if (Ity->getBitWidth() < 64 && (*Indices)[i].S == Unsigned) {
if (CIndices)
Index = ConstantExpr::getCast(Instruction::ZExt,
cast<Constant>(Index), Type::Int64Ty);
else
Index = CastInst::create(Instruction::ZExt, Index, Type::Int64Ty,
makeNameUnique("gep_upgrade"), CurBB);
VIndices[i] = Index;
}
}
// Add to the CIndices list, if requested.
if (CIndices)