On Tue, 31 Jan 2023, Richard Biener wrote: > On Tue, 31 Jan 2023, Xianmiao Qu wrote: > > > In the architecture where sign defaults to unsigned, the 'f' will be zero > > extended to int type in the expression 'd = ~(f & ~2880764155)', then the > > 'd' will become -1 wich cause the case to fail. > > So it's ok for the architectures where sign defaults to signed like x86, > > but failed for the architectures where sign defaults to unsigned like arm > > and csky. Change char to signed char to avoid this problem. > > Whoops - thanks for fixing! > > OK.
I've pushed the fix. Richard. > Richard. > > > gcc/testsuite: > > * gcc.dg/torture/pr108574-3.c (b, f): Change type from char to > > signed char. > > --- > > gcc/testsuite/gcc.dg/torture/pr108574-3.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/gcc/testsuite/gcc.dg/torture/pr108574-3.c > > b/gcc/testsuite/gcc.dg/torture/pr108574-3.c > > index 3c9146e31ac..b4d5dae9f80 100644 > > --- a/gcc/testsuite/gcc.dg/torture/pr108574-3.c > > +++ b/gcc/testsuite/gcc.dg/torture/pr108574-3.c > > @@ -1,7 +1,7 @@ > > /* { dg-do run } */ > > > > int a = 3557301289, d; > > -char b, f; > > +signed char b, f; > > unsigned short c = 241; > > short e, g; > > static void h() { > > > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman; HRB 36809 (AG Nuernberg)