1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

ConstantInt::get only works for arguments < 128.

SimplifyLibCalls probably has to be audited to make sure it does not make
this mistake elsewhere.  Also, if this code knows that the type will be
unsigned, obviously one arm of this is dead.

Reid, can you take a look into this further?

llvm-svn: 22566
This commit is contained in:
Chris Lattner 2005-08-01 16:52:50 +00:00
parent 019104459d
commit 8e9bc37bda

View File

@ -962,8 +962,12 @@ struct StrLenOptimization : public LibCallOptimization
return false;
// strlen("xyz") -> 3 (for example)
ci->replaceAllUsesWith(
ConstantInt::get(SLC.getTargetData()->getIntPtrType(),len));
const Type *Ty = SLC.getTargetData()->getIntPtrType();
if (Ty->isSigned())
ci->replaceAllUsesWith(ConstantSInt::get(Ty, len));
else
ci->replaceAllUsesWith(ConstantUInt::get(Ty, len));
ci->eraseFromParent();
return true;
}