forked from OSchip/llvm-project
Inliner: Don't remove calls to readnone+nounwind (but not always_inline) functions in the AlwaysInliner
llvm-svn: 305245
This commit is contained in:
parent
f45e6462ca
commit
ae8c4af4ac
|
@ -523,6 +523,16 @@ inlineCallsImpl(CallGraphSCC &SCC, CallGraph &CG,
|
|||
if (!Callee || Callee->isDeclaration())
|
||||
continue;
|
||||
|
||||
// FIXME for new PM: because of the old PM we currently generate ORE and
|
||||
// in turn BFI on demand. With the new PM, the ORE dependency should
|
||||
// just become a regular analysis dependency.
|
||||
OptimizationRemarkEmitter ORE(Caller);
|
||||
|
||||
// If the policy determines that we should inline this function,
|
||||
// delete the call instead.
|
||||
if (!shouldInline(CS, GetInlineCost, ORE))
|
||||
continue;
|
||||
|
||||
// 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
|
||||
|
@ -548,15 +558,6 @@ inlineCallsImpl(CallGraphSCC &SCC, CallGraph &CG,
|
|||
// Get DebugLoc to report. CS will be invalid after Inliner.
|
||||
DebugLoc DLoc = CS.getInstruction()->getDebugLoc();
|
||||
BasicBlock *Block = CS.getParent();
|
||||
// FIXME for new PM: because of the old PM we currently generate ORE and
|
||||
// in turn BFI on demand. With the new PM, the ORE dependency should
|
||||
// just become a regular analysis dependency.
|
||||
OptimizationRemarkEmitter ORE(Caller);
|
||||
|
||||
// If the policy determines that we should inline this function,
|
||||
// try to do so.
|
||||
if (!shouldInline(CS, GetInlineCost, ORE))
|
||||
continue;
|
||||
|
||||
// Attempt to inline the function.
|
||||
using namespace ore;
|
||||
|
|
|
@ -305,3 +305,14 @@ entry:
|
|||
ret void
|
||||
; CHECK: ret void
|
||||
}
|
||||
|
||||
define void @inner14() readnone nounwind {
|
||||
; CHECK: define void @inner14
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @outer14() {
|
||||
; CHECK: call void @inner14
|
||||
call void @inner14()
|
||||
ret void
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue