From 280a6e607d8eb7401749a92db624a82de47da777 Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Fri, 25 Apr 2008 16:53:59 +0000 Subject: Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989 r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50265 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/PruneEH.cpp | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) (limited to 'lib/Transforms/IPO/PruneEH.cpp') diff --git a/lib/Transforms/IPO/PruneEH.cpp b/lib/Transforms/IPO/PruneEH.cpp index 1b9aefc582..0181605256 100644 --- a/lib/Transforms/IPO/PruneEH.cpp +++ b/lib/Transforms/IPO/PruneEH.cpp @@ -31,7 +31,6 @@ using namespace llvm; STATISTIC(NumRemoved, "Number of invokes removed"); STATISTIC(NumUnreach, "Number of noreturn calls optimized"); -STATISTIC(NumBBUnwind, "Number of unwind dest removed from blocks"); namespace { struct VISIBILITY_HIDDEN PruneEH : public CallGraphSCCPass { @@ -152,8 +151,6 @@ bool PruneEH::runOnSCC(const std::vector &SCC) { bool PruneEH::SimplifyFunction(Function *F) { bool MadeChange = false; for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) { - bool couldUnwind = false; - if (InvokeInst *II = dyn_cast(BB->getTerminator())) if (II->doesNotThrow()) { SmallVector Args(II->op_begin()+3, II->op_end()); @@ -183,12 +180,10 @@ bool PruneEH::SimplifyFunction(Function *F) { ++NumRemoved; MadeChange = true; - } else { - couldUnwind = true; } for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ) - if (CallInst *CI = dyn_cast(I++)) { + if (CallInst *CI = dyn_cast(I++)) if (CI->doesNotReturn() && !isa(I)) { // This call calls a function that cannot return. Insert an // unreachable instruction after it and simplify the code. Do this @@ -204,19 +199,9 @@ bool PruneEH::SimplifyFunction(Function *F) { MadeChange = true; ++NumUnreach; break; - } else if (!CI->doesNotThrow()) { - couldUnwind = true; } - } - - // Strip 'unwindTo' off of BBs that have no calls/invokes without nounwind. - if (!couldUnwind && BB->getUnwindDest()) { - MadeChange = true; - ++NumBBUnwind; - BB->getUnwindDest()->removePredecessor(BB, false, true); - BB->setUnwindDest(NULL); - } } + return MadeChange; } -- cgit v1.2.3