Thanks. Unfortunately that's one of the ways we figured it out :(. 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.
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. 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. > On Mar 31, 2017, at 13:37, Eric Fiselier <e...@efcs.ca> wrote: > > 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. > > /Eric > > On Fri, Mar 31, 2017 at 11:39 AM, Duncan P. N. Exon Smith via cfe-commits > <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>> wrote: > Author: dexonsmith > Date: Fri Mar 31 12:39:56 2017 > New Revision: 299236 > > URL: http://llvm.org/viewvc/llvm-project?rev=299236&view=rev > <http://llvm.org/viewvc/llvm-project?rev=299236&view=rev> > Log: > Use strong enums independently of -fobjc-arc > > r145698 introduced _LIBCPP_HAS_NO_STRONG_ENUMS by copy-pasting the > __has_feature check from objc_arc_weak/_LIBCPP_HAS_OBJC_ARC_WEAK, and > accidentally started defining _LIBCPP_HAS_NO_STRONG_ENUMS whenever > __has_feature(objc_arc_weak). This is totally bogus, and means that > Libc++ thinks Objective-C++ compilations with -fobjc-arc don't have > strong enums. > > Delete the accidental line. > > I thought about adding a test, but it would be entirely duplicative of > the patch (if has-feature strong enums, check that has-no-strong-enums > is not defined). > > Modified: > libcxx/trunk/include/__config > > Modified: libcxx/trunk/include/__config > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=299236&r1=299235&r2=299236&view=diff > > <http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=299236&r1=299235&r2=299236&view=diff> > ============================================================================== > --- libcxx/trunk/include/__config (original) > +++ libcxx/trunk/include/__config Fri Mar 31 12:39:56 2017 > @@ -348,7 +348,6 @@ typedef __char32_t char32_t; > > #if __has_feature(objc_arc_weak) > #define _LIBCPP_HAS_OBJC_ARC_WEAK > -#define _LIBCPP_HAS_NO_STRONG_ENUMS > #endif > > #if !(__has_feature(cxx_constexpr)) > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits