From b49a622fe99f354c880c870e3a426078a232586a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 1 May 2010 17:19:38 +0000 Subject: [PATCH] revert r102831. We already delete dead readonly calls in other places, killing a valid transformation is not the right answer. llvm-svn: 102850 --- llvm/lib/Transforms/IPO/Inliner.cpp | 9 +-------- llvm/test/Transforms/Inline/delete-call.ll | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/llvm/lib/Transforms/IPO/Inliner.cpp b/llvm/lib/Transforms/IPO/Inliner.cpp index 875c4fd70384..b785bb0a9390 100644 --- a/llvm/lib/Transforms/IPO/Inliner.cpp +++ b/llvm/lib/Transforms/IPO/Inliner.cpp @@ -33,8 +33,7 @@ using namespace llvm; STATISTIC(NumInlined, "Number of functions inlined"); -// FIXME: Uncomment once call deletion xform is made safe -// STATISTIC(NumCallsDeleted, "Number of call sites deleted, not inlined"); +STATISTIC(NumCallsDeleted, "Number of call sites deleted, not inlined"); STATISTIC(NumDeleted, "Number of functions deleted because all callers found"); STATISTIC(NumMergedAllocas, "Number of allocas merged together"); @@ -383,9 +382,6 @@ bool Inliner::runOnSCC(CallGraphSCC &SCC) { Function *Caller = CS.getCaller(); Function *Callee = CS.getCalledFunction(); - // FIXME: This transformation is not legal unless we can prove - // that the callee always terminates. -#if 0 // If this call site is dead and it is to a readonly function, we should // just delete the call instead of trying to inline it, regardless of // size. This happens because IPSCCP propagates the result out of the @@ -400,7 +396,6 @@ bool Inliner::runOnSCC(CallGraphSCC &SCC) { // Update the cached cost info with the missing call growCachedCostInfo(Caller, NULL); } else { -#endif // We can only inline direct calls to non-declarations. if (Callee == 0 || Callee->isDeclaration()) continue; @@ -442,9 +437,7 @@ bool Inliner::runOnSCC(CallGraphSCC &SCC) { // Update the cached cost info with the inlined call. growCachedCostInfo(Caller, Callee); -#if 0 } -#endif // If we inlined or deleted the last possible call site to the function, // delete the function body now. diff --git a/llvm/test/Transforms/Inline/delete-call.ll b/llvm/test/Transforms/Inline/delete-call.ll index 7775aa383fc9..3505608b8283 100644 --- a/llvm/test/Transforms/Inline/delete-call.ll +++ b/llvm/test/Transforms/Inline/delete-call.ll @@ -1,6 +1,6 @@ ; RUN: opt %s -S -inline -functionattrs -stats |& grep {Number of call sites deleted, not inlined} ; RUN: opt %s -S -inline -stats |& grep {Number of functions inlined} -; XFAIL: * + target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32" target triple = "i386-apple-darwin9.8"