On Thu, Mar 7, 2013 at 12:40 PM, David Blaikie <[email protected]> wrote:
> On Thu, Mar 7, 2013 at 12:31 PM, Albert Wong (王重傑) <[email protected]> > wrote: > > My understanding was that static data members needed to be defined, even > if > > they are integral types that are initialized with a constant expression > with > > an exception being made if they are not "odr-used." (See > > [class.static.data]p3) > > > > I don't 100% understand odr-used but I think __regex_word's usage in a > > non-const expression at line 1205 means this it needs to be defined and > not > > just declared. > > In C++98 this is probably true (were you compiling in C++98 mode?). In > C++11 I don't believe this is true. > > "A variable whose name appears as a potentially-evaluated expression > is odr-used unless it is an > object that satisfies the requirements for appearing in a constant > expression (5.19) and the lvalue-to-rvalue > conversion (4.1) is immediately applied" > > (what this basically means, as I understand it, is: so long as you > don't need the "object" (eg: you don't take its address/want to point > to it at any time) just the value, you don't need to provide > definitions for constants) > Sounds sensible. Then I'm guessing gcc must be doing something silly. I was indeed building --std=c++11. > As for making a test for this...it'd probably be difficult to write one > that > > was guaranteed to fail. In the specific failure that prompted this, the > > MIPS g++ somehow ended up with an unresolved symbol. Oddly enough, the > ARM > > and x86 variants of the same compiler version didn't do this. > > Do you have a MIPS bot or could contribute one? Some way to avoid > regressing things like this would be helpful for yourself & the > community. > Sadly, no. I'm only 20% on the project to make libcxx work on Android (normally a Chrome dev) so I don't really have much knowledge about their builders, etc. Also, until libcxx actually works on the Android toolchain, I doubt if such a bot would ever stay green. -Albert > > > > -Albert > > > > > > > > On Thu, Mar 7, 2013 at 11:56 AM, Howard Hinnant <[email protected]> > wrote: > >> > >> I don't have one. In order for me to detect this I would have to take > the > >> address of __regex_word, and to the best I've been able to tell, on > Apple > >> platforms libc++ never does this. However Albert Wong reported errors > on > >> MIPS Android which this addition fixed. I did run the regex tests on > OS X > >> before and after this addition and they all passed. I view this > addition as > >> benign on Apple platforms, and happy to help out on MIPS Android. > >> > >> Howard > >> > >> On Mar 7, 2013, at 2:47 PM, David Blaikie <[email protected]> wrote: > >> > >> > Is there a test case to go with this? > >> > > >> > On Thu, Mar 7, 2013 at 11:38 AM, Howard Hinnant <[email protected]> > >> > wrote: > >> >> Author: hhinnant > >> >> Date: Thu Mar 7 13:38:08 2013 > >> >> New Revision: 176640 > >> >> > >> >> URL: http://llvm.org/viewvc/llvm-project?rev=176640&view=rev > >> >> Log: > >> >> Albert Wong: definition for regex_traits<_CharT>::__regex_word. > >> >> > >> >> Modified: > >> >> libcxx/trunk/include/regex > >> >> > >> >> Modified: libcxx/trunk/include/regex > >> >> URL: > >> >> > http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/regex?rev=176640&r1=176639&r2=176640&view=diff > >> >> > >> >> > ============================================================================== > >> >> --- libcxx/trunk/include/regex (original) > >> >> +++ libcxx/trunk/include/regex Thu Mar 7 13:38:08 2013 > >> >> @@ -1009,6 +1009,10 @@ private: > >> >> }; > >> >> > >> >> template <class _CharT> > >> >> +const typename regex_traits<_CharT>::char_class_type > >> >> +regex_traits<_CharT>::__regex_word; > >> >> + > >> >> +template <class _CharT> > >> >> regex_traits<_CharT>::regex_traits() > >> >> { > >> >> __init(); > >> >> > >> >> > >> >> _______________________________________________ > >> >> cfe-commits mailing list > >> >> [email protected] > >> >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > >> > > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
