mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-02 07:32:52 +00:00
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:
parent
0fc0ab7148
commit
e559184d70
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user