mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 01:24:30 +00:00
If the function being inlined has a higher stack protection level than the
inlining function, then increase the stack protection level on the inlining function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59757 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -56,6 +56,15 @@ static bool InlineCallIfPossible(CallSite CS, CallGraph &CG,
|
|||||||
Function *Callee = CS.getCalledFunction();
|
Function *Callee = CS.getCalledFunction();
|
||||||
if (!InlineFunction(CS, &CG, &TD)) return false;
|
if (!InlineFunction(CS, &CG, &TD)) return false;
|
||||||
|
|
||||||
|
// If the inlined function had a higher stack protection level than the
|
||||||
|
// calling function, then bump up the caller's stack protection level.
|
||||||
|
Function *Caller = CS.getCaller();
|
||||||
|
if (Callee->hasFnAttr(Attribute::StackProtectReq))
|
||||||
|
Caller->addFnAttr(Attribute::StackProtectReq);
|
||||||
|
else if (Callee->hasFnAttr(Attribute::StackProtect) &&
|
||||||
|
!Caller->hasFnAttr(Attribute::StackProtectReq))
|
||||||
|
Caller->addFnAttr(Attribute::StackProtect);
|
||||||
|
|
||||||
// If we inlined the last possible call site to the function, delete the
|
// If we inlined the last possible call site to the function, delete the
|
||||||
// function body now.
|
// function body now.
|
||||||
if (Callee->use_empty() && Callee->hasInternalLinkage() &&
|
if (Callee->use_empty() && Callee->hasInternalLinkage() &&
|
||||||
|
Reference in New Issue
Block a user