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:
parent
019104459d
commit
8e9bc37bda
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user