[CodeGen] Emit a CoreFoundation link guard when @available is used
authorAlex Lorenz <arphaman@gmail.com>
Thu, 23 Mar 2017 11:14:27 +0000 (11:14 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Thu, 23 Mar 2017 11:14:27 +0000 (11:14 +0000)
commita8fbef44fe2347942e2eb76e5b9144d74b5bdc7e
tree9bcd3977f509cd765829e2709c130b00fc8994fb
parent5ffe4e14f1e3476776663840af9b551caf6466c3
[CodeGen] Emit a CoreFoundation link guard when @available is used

After r297760, __isOSVersionAtLeast in compiler-rt loads the CoreFoundation
symbols at runtime. This means that `@available` will always fail when used in a
binary without a linked CoreFoundation.

This commit forces Clang to emit a reference to a CoreFoundation symbol when
`@available` is used to ensure that linking will fail when CoreFoundation isn't
linked with the build product.

rdar://31039592

Differential Revision: https://reviews.llvm.org/D30977

llvm-svn: 298588
clang/lib/CodeGen/CGObjC.cpp
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/CodeGenModule.h
clang/test/CodeGenObjC/availability-cf-link-guard.m [new file with mode: 0644]