Don't forget about casting the result of an upgraded call to an intrinsic

in the case where it needs to cast back to a signed type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25447 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2006-01-19 07:00:29 +00:00
parent 0fc0ab7148
commit e559184d70

View File

@ -141,7 +141,7 @@ Function* llvm::UpgradeIntrinsicFunction(Function* F) {
return 0;
}
CallInst* llvm::UpgradeIntrinsicCall(CallInst *CI) {
Instruction* llvm::UpgradeIntrinsicCall(CallInst *CI) {
Function *F = CI->getCalledFunction();
if (const Type* Ty = get_type(F)) {
Function* newF = UpgradeIntrinsicFunction(F);
@ -154,6 +154,9 @@ CallInst* llvm::UpgradeIntrinsicCall(CallInst *CI) {
const Type* newTy = Ty->getUnsignedVersion();
newCI->setOperand(1,new CastInst(newCI->getOperand(1), newTy,
"autoupgrade_cast", newCI));
CastInst* final = new CastInst(newCI, Ty, "autoupgrade_uncast",newCI);
newCI->moveBefore(final);
return final;
}
return newCI;
}