diff options
author | Xianmiao Qu <cooper.qu@linux.alibaba.com> | 2023-01-31 09:49:06 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-01-31 09:50:40 +0100 |
commit | 78d6489f736963a8a07c494294c72662c49e8e63 (patch) | |
tree | ba67a0229188169d4340292f3bb72039ef22917b | |
parent | 603a6fbcaac1e80aa90d1d26318c881a53473066 (diff) | |
download | gcc-78d6489f736963a8a07c494294c72662c49e8e63.zip gcc-78d6489f736963a8a07c494294c72662c49e8e63.tar.gz gcc-78d6489f736963a8a07c494294c72662c49e8e63.tar.bz2 |
testsuite/108604 - gcc.dg/torture/pr108574-3.c hangs on unsigned char archs
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.
PR testsuite/108604
gcc/testsuite:
* gcc.dg/torture/pr108574-3.c (b, f): Change type from char to
signed char.
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr108574-3.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr108574-3.c b/gcc/testsuite/gcc.dg/torture/pr108574-3.c index 3c9146e..b4d5dae 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() { |