Convert some ObjC msgSends to runtime calls.
authorPete Cooper <peter_cooper@apple.com>
Wed, 16 Mar 2016 00:33:21 +0000 (00:33 +0000)
committerPete Cooper <peter_cooper@apple.com>
Wed, 16 Mar 2016 00:33:21 +0000 (00:33 +0000)
commitbe6c750a8ed11b3c165593c761137901d7730117
treea0ea90b3311f0bb247ca2ae0eb92dfeea4cf2600
parentf7cb16f7de3f12674e50f3bccdc6842103560b9b
Convert some ObjC msgSends to runtime calls.

It is faster to directly call the ObjC runtime for methods such as retain/release instead of sending a message to those functions.

This patch adds support for converting messages to retain/release/alloc/autorelease to their equivalent runtime calls.

Tests included for the positive case of applying this transformation, negative tests that we ensure we only convert "alloc" to objc_alloc, not "alloc2", and also a driver test to ensure we enable this only for supported runtime versions.

Reviewed by John McCall.

Differential Revision: http://reviews.llvm.org/D14737

llvm-svn: 263607
clang/include/clang/Basic/ObjCRuntime.h
clang/include/clang/Driver/Options.td
clang/include/clang/Frontend/CodeGenOptions.def
clang/lib/CodeGen/CGObjC.cpp
clang/lib/CodeGen/CodeGenFunction.h
clang/lib/CodeGen/CodeGenModule.h
clang/lib/Driver/Tools.cpp
clang/lib/Frontend/CompilerInvocation.cpp
clang/test/CodeGenObjC/convert-messages-to-runtime-calls.m [new file with mode: 0644]
clang/test/Driver/objc-convert-messages-to-runtime-calls.m [new file with mode: 0644]