diff options
| author | Akira Hatanaka <ahatanaka@apple.com> | 2019-03-21 20:16:09 +0000 |
|---|---|---|
| committer | Akira Hatanaka <ahatanaka@apple.com> | 2019-03-21 20:16:09 +0000 |
| commit | b576c77a9ead5cd523e48b49fc5e536800718912 (patch) | |
| tree | 5e55c3ba38b9daec136d0960d8b18e220a226dd4 /llvm/lib/Transforms/ObjCARC | |
| parent | 3205dbb3f1f96e77e106f964dcf1b5f69fba4ecc (diff) | |
| download | bcm5719-llvm-b576c77a9ead5cd523e48b49fc5e536800718912.tar.gz bcm5719-llvm-b576c77a9ead5cd523e48b49fc5e536800718912.zip | |
Don't add a tail keyword to calls to ObjC runtime functions if the calls
are annotated with notail.
r356705 annotated calls to objc_retainAutoreleasedReturnValue with
notail on x86-64. This commit teaches ARC optimizer to check the notail
marker on the call before turning it into a tail call.
rdar://problem/38675807
llvm-svn: 356707
Diffstat (limited to 'llvm/lib/Transforms/ObjCARC')
| -rw-r--r-- | llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp index 9572674f758..34de66f05fb 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp @@ -848,7 +848,7 @@ void ObjCARCOpt::OptimizeIndividualCalls(Function &F) { // For functions which can never be passed stack arguments, add // a tail keyword. - if (IsAlwaysTail(Class)) { + if (IsAlwaysTail(Class) && !cast<CallInst>(Inst)->isNoTailCall()) { Changed = true; LLVM_DEBUG( dbgs() << "Adding tail keyword to function since it can never be " |

