mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-23 00:20:25 +00:00
Add support for disabling llvm.lifetime intrinsics in the AlwaysInliner. These
are optimization hints, but at -O0 we're not optimizing. This becomes a problem when the alwaysinline attribute is abused. rdar://10921594 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151429 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -48,11 +48,12 @@ HintThreshold("inlinehint-threshold", cl::Hidden, cl::init(325),
|
||||
const int OptSizeThreshold = 75;
|
||||
|
||||
Inliner::Inliner(char &ID)
|
||||
: CallGraphSCCPass(ID), InlineThreshold(InlineLimit) {}
|
||||
: CallGraphSCCPass(ID), InlineThreshold(InlineLimit), InsertLifetime(true) {}
|
||||
|
||||
Inliner::Inliner(char &ID, int Threshold)
|
||||
Inliner::Inliner(char &ID, int Threshold, bool InsertLifetime)
|
||||
: CallGraphSCCPass(ID), InlineThreshold(InlineLimit.getNumOccurrences() > 0 ?
|
||||
InlineLimit : Threshold) {}
|
||||
InlineLimit : Threshold),
|
||||
InsertLifetime(InsertLifetime) {}
|
||||
|
||||
/// getAnalysisUsage - For this class, we declare that we require and preserve
|
||||
/// the call graph. If the derived class implements this method, it should
|
||||
@@ -75,13 +76,13 @@ InlinedArrayAllocasTy;
|
||||
/// any new allocas to the set if not possible.
|
||||
static bool InlineCallIfPossible(CallSite CS, InlineFunctionInfo &IFI,
|
||||
InlinedArrayAllocasTy &InlinedArrayAllocas,
|
||||
int InlineHistory) {
|
||||
int InlineHistory, bool InsertLifetime) {
|
||||
Function *Callee = CS.getCalledFunction();
|
||||
Function *Caller = CS.getCaller();
|
||||
|
||||
// Try to inline the function. Get the list of static allocas that were
|
||||
// inlined.
|
||||
if (!InlineFunction(CS, IFI))
|
||||
if (!InlineFunction(CS, IFI, InsertLifetime))
|
||||
return false;
|
||||
|
||||
// If the inlined function had a higher stack protection level than the
|
||||
@@ -439,7 +440,7 @@ bool Inliner::runOnSCC(CallGraphSCC &SCC) {
|
||||
|
||||
// Attempt to inline the function.
|
||||
if (!InlineCallIfPossible(CS, InlineInfo, InlinedArrayAllocas,
|
||||
InlineHistoryID))
|
||||
InlineHistoryID, InsertLifetime))
|
||||
continue;
|
||||
++NumInlined;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user