> Am 26.10.2025 um 17:51 schrieb Gerald Pfeifer <[email protected]>:
>
> (I was attempted to push this via our obvious role, and IIRC Richi
> pre-approved such changes a few years ago. At the same time I'm
> wondering why nobody else picked this up earlier?)
>
> We currently issue a good deal of warnings of the following kind:
>
> In file included from /scratch/tmp/gerald/GCC-HEAD/gcc/coretypes.h:500:
> .../GCC-HEAD/gcc/poly-int.h:378:1: warning: 'poly_int' defined as a
> struct template here but previously declared as a class template; this
> is valid, but may result in linker errors under the Microsoft C++ ABI
> [-Wmismatched-tags]
> 378 | struct poly_int
> | ^
> .../GCC-HEAD/gcc/poly-int.h:32:38: note: did you mean struct here?
> 32 | template<unsigned int N, typename T> class poly_int;
> | ^~~~~
> | struct
>
> A `grep "'poly_int' defined as a struct template" | cut -d: -f1 | uniq -c`
> shows 749 issue for a typical bootstrap.
>
> Addressing this brings down the bootstrap log by 8.5% - from 80454 lines
> down to 73613.
Ok
Richard
> Gerald
>
> ---
> gcc/poly-int.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/poly-int.h b/gcc/poly-int.h
> index 77f78752e74..d99f63b671f 100644
> --- a/gcc/poly-int.h
> +++ b/gcc/poly-int.h
> @@ -374,7 +374,7 @@ template<> struct poly_int_fullness<true> { using type =
> poly_int_full; };
> /* A class containing polynomial integers. The polynomial has N coefficients
> of type C, and N - 1 indeterminates. */
> template<unsigned int N, typename C>
> -struct poly_int
> +class poly_int
> {
> public:
> poly_int () = default;
> --
> 2.51.1