diff options
| author | Akira Hatanaka <ahatanaka@apple.com> | 2017-04-11 22:01:33 +0000 |
|---|---|---|
| committer | Akira Hatanaka <ahatanaka@apple.com> | 2017-04-11 22:01:33 +0000 |
| commit | ad51539597c585bf049dda826deca6bef9caf3a4 (patch) | |
| tree | 8a25241b6e6eb6dca87134856ba51d542304c469 /clang/lib | |
| parent | caf24d2b6c8c51d103a4bde06a6ab81a4b2866fb (diff) | |
| download | bcm5719-llvm-ad51539597c585bf049dda826deca6bef9caf3a4.tar.gz bcm5719-llvm-ad51539597c585bf049dda826deca6bef9caf3a4.zip | |
[Sema][ObjC] Check whether a variable has a definition, rather than
checking its storage class, when determining whether casting a C pointer
to an ObjC pointer is allowed.
This change allows casting variables whose declarations are directly
contained in a linkage specification to an ObjC pointer type. Those
variables are treated as if they contain the extern specifier for the
purpose of determining whether they are definitions or not.
rdar://problem/29249853
Differential Revision: https://reviews.llvm.org/D31673
llvm-svn: 299992
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index c883f2e2fe7..9cc443ed4fd 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -3355,7 +3355,7 @@ namespace { if (isAnyRetainable(TargetClass) && isAnyRetainable(SourceClass) && var && - var->getStorageClass() == SC_Extern && + !var->hasDefinition(Context) && var->getType().isConstQualified()) { // In system headers, they can also be assumed to be immune to retains. |

