]> granicus.if.org Git - clang/commit
Relax the conversion rules for Objective-C GC qualifiers a
authorDouglas Gregor <dgregor@apple.com>
Sun, 8 May 2011 06:09:53 +0000 (06:09 +0000)
committerDouglas Gregor <dgregor@apple.com>
Sun, 8 May 2011 06:09:53 +0000 (06:09 +0000)
commit377e1bd6853118c5b1718503569e5179c40f09b7
treeabbcca71144e8efd045c06f825c1cd4509e5cf8c
parentda55074866ca2fe7f718c5d3334648d6e340fb15
Relax the conversion rules for Objective-C GC qualifiers a
bit by allowing __weak and __strong to be added/dropped as part of
implicit conversions (qualification conversions in C++). A little
history: GCC lets one add/remove/change GC qualifiers just about
anywhere, implicitly. Clang did roughly the same before, but we
recently normalized the semantics of qualifiers across the board to
get a semantics that we could reason about (yay). Unfortunately, this
tightened the screws a bit too much for GC qualifiers, where it's
common to add/remove these qualifiers at will.

Overall, we're still in better shape than we were before: we don't
permit directly changing the GC qualifier (e.g., __weak -> __strong),
so type safety is improved. More importantly, we're internally
consistent in our handling of qualifiers, and the logic that allows
adding/removing GC qualifiers (but not adding/removing address
spaces!) only touches two obvious places.

Fixes <rdar://problem/9402499>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131065 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Type.h
lib/Sema/SemaOverload.cpp
test/SemaObjC/gc-attributes.m [new file with mode: 0644]
test/SemaObjCXX/gc-attributes.mm [new file with mode: 0644]
test/SemaObjCXX/overload-gc.mm