summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-07-05 18:48:30 +0000
committerJordan Rose <jordan_rose@apple.com>2012-07-05 18:48:30 +0000
commit2783b6c0e54fbe5b9257a0c807ad56d97c8070ba (patch)
treebe08d11b5e9470a9223bfa56a421a6dd7d7426e6
parent5da9dcb27528e788fae20c9b3911c7be0af8000e (diff)
downloadbcm5719-llvm-2783b6c0e54fbe5b9257a0c807ad56d97c8070ba.tar.gz
bcm5719-llvm-2783b6c0e54fbe5b9257a0c807ad56d97c8070ba.zip
Release notes for r158230 "Disallow using ObjC literals in direct comparisons"
This may turn out to be a controversial change, due to string literals being uniqued at link time, but Apple's docs only say "The compiler makes such object constants unique on a per-module basis..."[1] without actually saying what a "module" is. (It's not a clang module.) Furthermore, this uniqueness guarantee often can't be guaranteed once the string has been passed through framework code. If this does turn out very controversial, we could downgrade this to a DefaultError warning for strings, and leave it as a true Error for other kinds of literals. (<rdar://problem/11300873>) [1]: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html llvm-svn: 159766
-rw-r--r--clang/docs/ReleaseNotes.html16
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/docs/ReleaseNotes.html b/clang/docs/ReleaseNotes.html
index b820e8dc3fd..6c38c712e70 100644
--- a/clang/docs/ReleaseNotes.html
+++ b/clang/docs/ReleaseNotes.html
@@ -218,7 +218,21 @@ model can be used.
<h3 id="objcchanges">Objective-C Language Changes in Clang</h3>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
-<p>...</p>
+<ul>
+ <li>
+ <p>It is now an error to compare against the addresses of Objective-C
+ literals. This is usually a simple mistake (using <code>==</code> instead
+ of <code>-isEqual:</code>), and the result depends on the implementation
+ of the various literals, none of which are guaranteed to be uniqued or
+ always newly-allocated.</p>
+ <p>In the past, we allowed comparisons against literal strings
+ (<code>@"..."</code>), since they are currently uniqued across
+ translation units at link time. This is an implementation detail and
+ should not be relied upon. If you are using such code, please use global
+ string constants instead (<code>NSString * const MyConst = @"..."</code>)
+ or use <code>-isEqual:</code>.</p>
+ </li>
+</ul>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<h3 id="apichanges">Internal API Changes</h3>
OpenPOWER on IntegriCloud