rtl-tests.cc and simplify-rtx.cc used partial specialisation to try to restrict the NUM_POLY_INT_COEFFS>1 tests without resorting to preprocessor tests. That now triggers an error in some configurations, since the NUM_POLY_INT_COEFFS>1 tests used the global poly_int64, whose definition does not depend on the template parameter.
This patch uses local types that do depend on the template parameter. Tested using profiledbootstrap and bootstrap4 on x86_64-linux-gnu, both of which failed for me for unrelated reasons later. But Sergei confirms in the PR that the patch does fix the bug. Pushed as obvious. Richard gcc/ PR bootstrap/111642 * rtl-tests.cc (const_poly_int_tests<N>::run): Use a local poly_int64 typedef. * simplify-rtx.cc (simplify_const_poly_int_tests<N>::run): Likewise. --- gcc/rtl-tests.cc | 1 + gcc/simplify-rtx.cc | 1 + 2 files changed, 2 insertions(+) diff --git a/gcc/rtl-tests.cc b/gcc/rtl-tests.cc index ae8669419b6..96656c54a48 100644 --- a/gcc/rtl-tests.cc +++ b/gcc/rtl-tests.cc @@ -246,6 +246,7 @@ template<unsigned int N> void const_poly_int_tests<N>::run () { + using poly_int64 = poly_int<N, HOST_WIDE_INT>; rtx x1 = gen_int_mode (poly_int64 (1, 1), QImode); rtx x255 = gen_int_mode (poly_int64 (1, 255), QImode); diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc index 170406aa28b..bd9443dbcc2 100644 --- a/gcc/simplify-rtx.cc +++ b/gcc/simplify-rtx.cc @@ -8689,6 +8689,7 @@ template<unsigned int N> void simplify_const_poly_int_tests<N>::run () { + using poly_int64 = poly_int<N, HOST_WIDE_INT>; rtx x1 = gen_int_mode (poly_int64 (1, 1), QImode); rtx x2 = gen_int_mode (poly_int64 (-80, 127), QImode); rtx x3 = gen_int_mode (poly_int64 (-79, -128), QImode); -- 2.25.1