diff options
| author | Arnold Schwaighofer <aschwaighofer@apple.com> | 2017-11-27 19:03:40 +0000 | 
|---|---|---|
| committer | Arnold Schwaighofer <aschwaighofer@apple.com> | 2017-11-27 19:03:40 +0000 | 
| commit | d9e710984d169280e613b229974ceea22f7132fc (patch) | |
| tree | 1e3ea47d5a11501c04d9b151917cfa81db943d2d /llvm/lib | |
| parent | 14d7aac15dafa4e2622dd9ba284044977d40363f (diff) | |
| download | bcm5719-llvm-d9e710984d169280e613b229974ceea22f7132fc.tar.gz bcm5719-llvm-d9e710984d169280e613b229974ceea22f7132fc.zip | |
Inliner: Don't mark notail calls with the 'tail' attribute
enum TailCallKind { TCK_None = 0, TCK_Tail = 1, TCK_MustTail = 2,
                    TCK_NoTail = 3 };
TCK_NoTail is greater than TCK_Tail so taking the min does not do the
correct thing.
rdar://35639547
llvm-svn: 319075
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/Utils/InlineFunction.cpp | 3 | 
1 files changed, 2 insertions, 1 deletions
| diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index 23a72e86e50..15a8bf22922 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -1850,7 +1850,8 @@ bool llvm::InlineFunction(CallSite CS, InlineFunctionInfo &IFI,          //    f ->          g -> musttail f  ==>  f ->          f          //    f ->          g ->     tail f  ==>  f ->          f          CallInst::TailCallKind ChildTCK = CI->getTailCallKind(); -        ChildTCK = std::min(CallSiteTailKind, ChildTCK); +        if (ChildTCK != CallInst::TCK_NoTail) +          ChildTCK = std::min(CallSiteTailKind, ChildTCK);          CI->setTailCallKind(ChildTCK);          InlinedMustTailCalls |= CI->isMustTailCall(); | 

