On 31/08/2022 09:29, Jakub Jelinek wrote:
On Tue, Aug 30, 2022 at 06:54:49PM +0200, Rainer Orth wrote:
--- a/gcc/omp-simd-clone.cc
+++ b/gcc/omp-simd-clone.cc
@@ -504,7 +504,10 @@ simd_clone_adjust_return_type (struct cgraph_node *node)
veclen = node->simdclone->vecsize_int;
else
veclen = node->simdclone->vecsize_float;
- veclen = exact_div (veclen, GET_MODE_BITSIZE (SCALAR_TYPE_MODE (t)));
+ if (known_eq (veclen, 0))
+ veclen = node->simdclone->simdlen;
+ else
+ veclen = exact_div (veclen, GET_MODE_BITSIZE (SCALAR_TYPE_MODE (t)));
if (multiple_p (veclen, node->simdclone->simdlen))
veclen = node->simdclone->simdlen;
if (POINTER_TYPE_P (t))
this broke bootstrap on (at least) i386-pc-solaris2.11 and
sparc-sun-solaris2.11:
In file included from /vol/gcc/src/hg/master/local/gcc/coretypes.h:475,
from /vol/gcc/src/hg/master/local/gcc/omp-simd-clone.cc:23:
/vol/gcc/src/hg/master/local/gcc/poly-int.h: In instantiation of 'typename if_nonpoly<Cb,
bool>::type maybe_ne(const poly_int_pod<N, C>&, const Cb&) [with unsigned int N = 1; Ca
= long long unsigned int; Cb = int; typename if_nonpoly<Cb, bool>::type = bool]':
/vol/gcc/src/hg/master/local/gcc/omp-simd-clone.cc:507:7: required from here
/vol/gcc/src/hg/master/local/gcc/poly-int.h:1295:22: error: comparison of
integer expressions of different signedness: 'const long long unsigned int' and
'const int' [-Werror=sign-compare]
1295 | return a.coeffs[0] != b;
| ~~~~~~~~~~~~^~~~
Changing the three instances of 0 to 0U seems to fix this.
It broke bootstrap for me on x86_64-linux and i686-linux too.
I've bootstrapped/regtested the following patch on both overnight
and committed to unbreak bootstrap for others.
Apologies everyone. :-(
I did a full build and test on x86_64, but not a bootstrap, and
apparently it was fine with my not-so-new compiler.
Andrew