[PATCHv3 1/6] ldbl-128ibm-compat: workaround GCC 9 C++ PR90731
Tulio Magno Quites Machado Filho
tuliom@ascii.art.br
Wed Apr 29 21:21:15 GMT 2020
"Paul E. Murphy via Libc-alpha" <libc-alpha@sourceware.org> writes:
> GCC 9 has a bug (PR90731) whereby __typeof does not correctly copy
> exception specifiers[1]. Surprisingly, this can be quieted by declaring
> "#pragma system_header", or if the headers are installed in a system
> directory.
>
> Work around this by using the pragma for any gcc version between
> 9.0 and 9.2 to ensure tests continue to compile.
>
> [1] Example error from g++ 9.2.1:
>
> In file included from ../include/sys/cdefs.h:3,
> from ../include/features.h:465,
> from ../bits/libc-header-start.h:33,
> from ../math/math.h:27,
> from ../include/math.h:7,
> from test-math-isinff.cc:21:
> ../libio/bits/stdio-ldbl.h:25:20: error: declaration of ‘int sprintf(char*, const char*, ...)’ has a different exception specifier
> 25 | __LDBL_REDIR_DECL (sprintf)
> | ^~~~~~~
> ../misc/sys/cdefs.h:461:26: note: in definition of macro ‘__LDBL_REDIR_DECL’
> 461 | extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128"));
> | ^~~~
> In file included from ../include/stdio.h:5,
> from test-math-isinff.cc:22:
> ../libio/stdio.h:334:12: note: from previous declaration ‘int sprintf(char*, const char*, ...) throw ()’
> 334 | extern int sprintf (char *__restrict __s,
> | ^~~~~~~
Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
--
Tulio Magno
More information about the Libc-alpha
mailing list