summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/ObjCARC
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@apple.com>2019-03-21 20:16:09 +0000
committerAkira Hatanaka <ahatanaka@apple.com>2019-03-21 20:16:09 +0000
commitb576c77a9ead5cd523e48b49fc5e536800718912 (patch)
tree5e55c3ba38b9daec136d0960d8b18e220a226dd4 /llvm/lib/Transforms/ObjCARC
parent3205dbb3f1f96e77e106f964dcf1b5f69fba4ecc (diff)
downloadbcm5719-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.cpp2
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 "
OpenPOWER on IntegriCloud