On Fri, Feb 19, 2016 at 11:08:48AM +0000, Bernd Edlinger wrote: > On 19.02.2016 11:56, Jakub Jelinek wrote: > > > > On Fri, Feb 19, 2016 at 10:50:34AM +0000, Bernd Edlinger wrote: > > > While I think that we should probably not define __GNUC_GNU_INLINE__ at > > > all for C++, > > > because it is meaningless, I am warned that this could break (already > > > broken) header files. > > > > It is not meaningless. The various headers need to know if it is safe to > > use the gnu_inline attribute in C++. > > > > In any case, the desirable state is that e.g. the -E -dD output should be > > identical if you explicitly request the default -std= version vs. if it is > > set implicitly. We should verify it is the case even for C. > > > > Jakub > > I absolutely agree with you. > The correct solution is probably doing this: > > --- gcc/cp/cfns.h.jj 2016-01-04 15:30:50.000000000 +0100 > +++ gcc/cp/cfns.h 2016-02-19 12:00:15.730375049 +0100 > @@ -124,9 +124,6 @@ > > #ifdef __GNUC__ > __inline > -#ifdef __GNUC_STDC_INLINE__ > -__attribute__ ((__gnu_inline__)) > -#endif > #endif > const char * > libc_name_p (register const char *str, register unsigned int len)
This is of course wrong. cfns.h is a generated header, so you shouldn't patch it. If it is regenerated with a newer gperf (I have 3.0.4 installed), you get there: @@ -124,7 +124,7 @@ hash (register const char *str, register #ifdef __GNUC__ __inline -#ifdef __GNUC_STDC_INLINE__ +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif Jakub