]> granicus.if.org Git - clang/commit
Forward ns_consumed delegate arguments with a move.
authorJohn McCall <rjmccall@apple.com>
Fri, 18 Nov 2016 01:08:24 +0000 (01:08 +0000)
committerJohn McCall <rjmccall@apple.com>
Fri, 18 Nov 2016 01:08:24 +0000 (01:08 +0000)
commit5d6757effbe5d878b81a4ba67dc2bf4e83d46ba7
treea006ad158af0251748320710b194b69773915b9c
parentb42f77fee6c8bd4daf9086001b2259317c0dfb8e
Forward ns_consumed delegate arguments with a move.

StartFunction enters a release cleanup for ns_consumed arguments in
ARC, so we need to balance that somehow.  We could teach StartFunction
that it's emitting a delegating function, so that the cleanup is
unnecessary, but that would be invasive and somewhat fraught.  We could
balance the consumed argument with an extra retain, but clearing the
original variable should be easier to optimize and avoid some extra work
at -O0.  And there shouldn't be any difference as long as nothing else
uses the argument, which should always be true for the places we emit
delegate arguments.

Fixes PR 27887.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@287291 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGCall.cpp
test/CodeGenObjCXX/arc-attrs.mm