From e559184d7025523d3ac520ada1726a7d19dd29f1 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Thu, 19 Jan 2006 07:00:29 +0000 Subject: [PATCH] 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 --- lib/VMCore/AutoUpgrade.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/VMCore/AutoUpgrade.cpp b/lib/VMCore/AutoUpgrade.cpp index 8107d8a7244..26a9947d306 100644 --- a/lib/VMCore/AutoUpgrade.cpp +++ b/lib/VMCore/AutoUpgrade.cpp @@ -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; }