From 1430ef134d36888b99d2e6fedd2b025882593538 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 6 May 2005 06:46:58 +0000 Subject: [PATCH] preserve the tail marker git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21734 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/ExprTypeConvert.cpp | 2 ++ lib/Transforms/IPO/ArgumentPromotion.cpp | 2 ++ lib/Transforms/IPO/DeadArgumentElimination.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp index f43390da836..a022461d333 100644 --- a/lib/Transforms/ExprTypeConvert.cpp +++ b/lib/Transforms/ExprTypeConvert.cpp @@ -523,6 +523,8 @@ Value *llvm::ConvertExpressionToType(Value *V, const Type *Ty, Res = new CallInst(Constant::getNullValue(NewPTy), std::vector(I->op_begin()+1, I->op_end()), Name); + if (cast(I)->isTailCall()) + cast(Res)->setTailCall(); VMC.ExprMap[I] = Res; Res->setOperand(0, ConvertExpressionToType(I->getOperand(0),NewPTy,VMC,TD)); break; diff --git a/lib/Transforms/IPO/ArgumentPromotion.cpp b/lib/Transforms/IPO/ArgumentPromotion.cpp index 028fda9aebe..fd5a5d0215f 100644 --- a/lib/Transforms/IPO/ArgumentPromotion.cpp +++ b/lib/Transforms/IPO/ArgumentPromotion.cpp @@ -443,6 +443,8 @@ Function *ArgPromotion::DoPromotion(Function *F, Args, "", Call); } else { New = new CallInst(NF, Args, "", Call); + if (cast(Call)->isTailCall()) + cast(New)->setTailCall(); } Args.clear(); diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp index 3a2a5f08a84..2dbc5c3169a 100644 --- a/lib/Transforms/IPO/DeadArgumentElimination.cpp +++ b/lib/Transforms/IPO/DeadArgumentElimination.cpp @@ -430,6 +430,8 @@ void DAE::RemoveDeadArgumentsFromFunction(Function *F) { Args, "", Call); } else { New = new CallInst(NF, Args, "", Call); + if (cast(Call)->isTailCall()) + cast(New)->setTailCall(); } Args.clear(); -- 2.34.1