From 4f72368529b3afdfbc709ad5e8822835463b56c4 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Tue, 15 Jul 2008 14:42:31 +0000 Subject: [PATCH] Allow deadargelim to change return types even though now values were dead. This again canonicalizes {i32} into i32 and {} into void. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53610 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/DeadArgumentElimination.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp index c6d6fec7b87..5f1920b0618 100644 --- a/lib/Transforms/IPO/DeadArgumentElimination.cpp +++ b/lib/Transforms/IPO/DeadArgumentElimination.cpp @@ -601,8 +601,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) { const Type *RetTy = FTy->getReturnType(); const Type *NRetTy = NULL; unsigned RetCount = NumRetVals(F); - // Explicitly track if anything changed, for debugging. - bool Changed = false; // -1 means unused, other numbers are the new index SmallVector NewRetIdxs(RetCount, -1); std::vector RetTypes; @@ -621,7 +619,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) { ++NumRetValsEliminated; DOUT << "DAE - Removing return value " << i << " from " << F->getNameStart() << "\n"; - Changed = true; } } else @@ -633,9 +630,8 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) { DOUT << "DAE - Removing return value from " << F->getNameStart() << "\n"; ++NumRetValsEliminated; - Changed = true; } - if (RetTypes.size() > 1 || (STy && STy->getNumElements()==RetTypes.size())) + if (RetTypes.size() > 1) // More than one return type? Return a struct with them. Also, if we used // to return a struct and didn't change the number of return values, // return a struct again. This prevents changing {something} into @@ -688,7 +684,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) { ++NumArgumentsEliminated; DOUT << "DAE - Removing argument " << i << " (" << I->getNameStart() << ") from " << F->getNameStart() << "\n"; - Changed = true; } } @@ -714,11 +709,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) { if (NFTy == FTy) return false; - // The function type is only allowed to be different if we actually left out - // an argument or return value. - assert(Changed && "Function type changed while no arguments or return values" - "were removed!"); - // Create the new function body and insert it into the module... Function *NF = Function::Create(NFTy, F->getLinkage()); NF->copyAttributesFrom(F);