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. 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)