https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82515

--- Comment #1 from Yibiao Yang <yangyibiao at nju dot edu.cn> ---
While using clang to compile this code, the output is also 1. This, at a
certain extent, indicates that the problem was caused by the
arm-linux-gnueabic-gcc compiler. 

$ clang -w -static test.c; ./a.out
1



Here is the GIMPLE representation by gcc-x86.

$ gcc -static -fdump-tree-gimple test.c; cat test.c.004t.gimple
main ()
{
  _Bool D.2287;
  int D.2288;
  int t;

  t = -83685192;
  D.2287 = t < 0;
  D.2288 = (int) D.2287;
  printf ("%X\n", D.2288);
}



Here is the GIMPLE representation by gcc-arm. We can found that t was converted
to long unsigned int in arm-linux-gnueabi-gcc. 

$ arm-linux-gnueabi-gcc -static -fdump-tree-gimple test.c; cat
test.c.004t.gimple
main ()
{
  long unsigned int t.0;
  _Bool D.4677;
  int D.4678;
  int t;

  t = -83685192;
  t.0 = (long unsigned int) t;
  D.4677 = t.0 > 4294967291;
  D.4678 = (int) D.4677;
  printf ("%X\n", D.4678);
}



Note that this issue was found by Yibiao Yang and shqking.

Reply via email to