[Bug libstdc++/85672] [9 Regression] error: redefinition of 'constexpr long double std::abs(long double)'
glisse at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon May 7 13:03:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85672
--- Comment #7 from Marc Glisse <glisse at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #5)
> > - -Wsystem-headers -Wundef will warn
>
> That's the status quo. It would take a ton of effort to avoid -Wundef
> warnings in libstdc++ and that's not something I'm going to work on.
I was only listing it as a way to introduce the next point, you can forget it.
> > - it still leaves a weird situation where _GLIBCXX_USE_FLOAT128 may be 1, 0
> > or undefined, instead of just 2 choices.
>
> Ah yes, good point. So we could either change include/Makefile.am to #undef
> it instead of setting it to 0, or do:
>
> --- a/libstdc++-v3/include/bits/c++config
> +++ b/libstdc++-v3/include/bits/c++config
> @@ -611,7 +611,10 @@ namespace std
>
> /* Define if __float128 is supported on this host. */
> #define _GLIBCXX_USE_FLOAT128
> -#if !defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)
> +#if _GLIBCXX_USE_FLOAT128 == 0
> +#undef _GLIBCXX_USE_FLOAT128
> +#endif
> +#elif !defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)
> #undef _GLIBCXX_USE_FLOAT128
> #endif
>
>
> I think I'd prefer to change include/Makefile.am
>
> Then no changes to <bits/std_abs.h> and <type_traits> would be needed.
Yes, or maybe don't generate #define _GLIBCXX_USE_FLOAT128 0 but instead /*
#undef _GLIBCXX_USE_FLOAT128 */ as we used to do and as the rest of the
c++config.h file does. Actually, I am not sure why r259813 needed to change so
many things...
More information about the Gcc-bugs
mailing list