autoupgrade memcpy/memmove/memset with signed counts.

CVS: ----------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26654 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-03-09 18:42:10 +00:00
parent ddc877ccae
commit a758b8250d

View File

@ -84,10 +84,18 @@ static Function *getUpgradedIntrinsic(Function *F) {
case 'm':
if (Name == "llvm.memcpy" || Name == "llvm.memset" ||
Name == "llvm.memmove") {
if (F->getFunctionType()->getParamType(2) == Type::UIntTy)
return M->getOrInsertFunction(Name+".i32", F->getFunctionType());
if (F->getFunctionType()->getParamType(2) == Type::ULongTy)
return M->getOrInsertFunction(Name+".i64", F->getFunctionType());
if (F->getFunctionType()->getParamType(2) == Type::UIntTy ||
F->getFunctionType()->getParamType(2) == Type::IntTy)
return M->getOrInsertFunction(Name+".i32", Type::VoidTy,
PointerType::get(Type::SByteTy),
F->getFunctionType()->getParamType(1),
Type::UIntTy, Type::UIntTy, NULL);
if (F->getFunctionType()->getParamType(2) == Type::ULongTy ||
F->getFunctionType()->getParamType(2) == Type::LongTy)
return M->getOrInsertFunction(Name+".i64", Type::VoidTy,
PointerType::get(Type::SByteTy),
F->getFunctionType()->getParamType(1),
Type::ULongTy, Type::UIntTy, NULL);
}
break;
case 's':