diff options
author | Alex Lorenz <arphaman@gmail.com> | 2017-03-23 11:14:27 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2017-03-23 11:14:27 +0000 |
commit | a8fbef44fe2347942e2eb76e5b9144d74b5bdc7e (patch) | |
tree | 9bcd3977f509cd765829e2709c130b00fc8994fb /clang/lib/CodeGen/CodeGenModule.h | |
parent | 5ffe4e14f1e3476776663840af9b551caf6466c3 (diff) | |
download | llvm-a8fbef44fe2347942e2eb76e5b9144d74b5bdc7e.zip llvm-a8fbef44fe2347942e2eb76e5b9144d74b5bdc7e.tar.gz llvm-a8fbef44fe2347942e2eb76e5b9144d74b5bdc7e.tar.bz2 |
[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
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h index 1d59230..5c9dd96 100644 --- a/clang/lib/CodeGen/CodeGenModule.h +++ b/clang/lib/CodeGen/CodeGenModule.h @@ -1286,6 +1286,10 @@ private: /// Emit any vtables which we deferred and still have a use for. void EmitDeferredVTables(); + /// Emit a dummy function that reference a CoreFoundation symbol when + /// @available is used on Darwin. + void emitAtAvailableLinkGuard(); + /// Emit the llvm.used and llvm.compiler.used metadata. void emitLLVMUsed(); |