<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Thanks.  Unfortunately that's one of the ways we figured it out :(.<div class=""><br class=""></div><div class="">The status quo, before this commit, was an ABI difference between Objective-C++ (-fobjc-arc) and C++/Objective-C++ (-fno-objc-arc), which is... really bad.  But rare enough I guess it took a couple of years to find.</div><div class=""><br class=""></div><div class="">I suspect/hope the break from this commit will be even more rare in practice, since it's somewhat odd to vend Objective-C++ APIs.  Usually the (Objective-)C++ parts are implementation details beneath a pure Objective-C API, and if you recompile one TU you'll recompile the rest.<br class=""><div class=""><br class=""></div><div class="">Since you brought up the ABI difference... there's still at least one lurking: C++98/C++03 vs. C++11 are ABI-incompatible for things like std::cv_status.  I'm not sure how (or whether we should bother) to fix that; it's a little strange that we expose strong enums to pre-C++11 at all.</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 31, 2017, at 13:37, Eric Fiselier <<a href="mailto:eric@efcs.ca" class="">eric@efcs.ca</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">This will be ABI breaking for Objective-C++ users. I'm not objecting to fixing the bogus configuration, but I just wanted to point it out.<div class=""><br class=""></div><div class="">/Eric</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Mar 31, 2017 at 11:39 AM, Duncan P. N. Exon Smith via cfe-commits <span dir="ltr" class=""><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dexonsmith<br class="">
Date: Fri Mar 31 12:39:56 2017<br class="">
New Revision: 299236<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=299236&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project?rev=299236&view=rev</a><br class="">
Log:<br class="">
Use strong enums independently of -fobjc-arc<br class="">
<br class="">
r145698 introduced _LIBCPP_HAS_NO_STRONG_ENUMS by copy-pasting the<br class="">
__has_feature check from objc_arc_weak/_LIBCPP_HAS_<wbr class="">OBJC_ARC_WEAK, and<br class="">
accidentally started defining _LIBCPP_HAS_NO_STRONG_ENUMS whenever<br class="">
__has_feature(objc_arc_weak).  This is totally bogus, and means that<br class="">
Libc++ thinks Objective-C++ compilations with -fobjc-arc don't have<br class="">
strong enums.<br class="">
<br class="">
Delete the accidental line.<br class="">
<br class="">
I thought about adding a test, but it would be entirely duplicative of<br class="">
the patch (if has-feature strong enums, check that has-no-strong-enums<br class="">
is not defined).<br class="">
<br class="">
Modified:<br class="">
    libcxx/trunk/include/__config<br class="">
<br class="">
Modified: libcxx/trunk/include/__config<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=299236&r1=299235&r2=299236&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/libcxx/trunk/include/_<wbr class="">_config?rev=299236&r1=299235&<wbr class="">r2=299236&view=diff</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- libcxx/trunk/include/__config (original)<br class="">
+++ libcxx/trunk/include/__config Fri Mar 31 12:39:56 2017<br class="">
@@ -348,7 +348,6 @@ typedef __char32_t char32_t;<br class="">
<br class="">
 #if __has_feature(objc_arc_weak)<br class="">
 #define _LIBCPP_HAS_OBJC_ARC_WEAK<br class="">
-#define _LIBCPP_HAS_NO_STRONG_ENUMS<br class="">
 #endif<br class="">
<br class="">
 #if !(__has_feature(cxx_constexpr)<wbr class="">)<br class="">
<br class="">
<br class="">
______________________________<wbr class="">_________________<br class="">
cfe-commits mailing list<br class="">
<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/cfe-commits</a><br class="">
</blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></div></body></html>