mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-31 17:04:28 +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:
parent
e6ed6ecfb0
commit
8c1604e7d6
@ -56,6 +56,15 @@ static bool InlineCallIfPossible(CallSite CS, CallGraph &CG,
|
||||
Function *Callee = CS.getCalledFunction();
|
||||
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
|
||||
// function body now.
|
||||
if (Callee->use_empty() && Callee->hasInternalLinkage() &&
|
||||
|
Loading…
Reference in New Issue
Block a user