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)

Reply via email to