From: Jakub Jelinek Date: Fri, 25 Nov 2016 19:24:22 +0000 (+0100) Subject: re PR rtl-optimization/78438 (incorrect comparison optimization) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8382457c0f7cbb4b0b5b7e700f15c47b2d6d8d6c;p=gcc.git re PR rtl-optimization/78438 (incorrect comparison optimization) PR rtl-optimization/78438 PR rtl-optimization/78477 * gcc.c-torture/execute/pr78438.c: New test. * gcc.c-torture/execute/pr78477.c: New test. From-SVN: r242883 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1dd7380d883..7df63712251 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2016-11-25 Jakub Jelinek + PR rtl-optimization/78438 + PR rtl-optimization/78477 + * gcc.c-torture/execute/pr78438.c: New test. + * gcc.c-torture/execute/pr78477.c: New test. + PR rtl-optimization/78526 * gcc.dg/pr78526.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/execute/pr78438.c b/gcc/testsuite/gcc.c-torture/execute/pr78438.c new file mode 100644 index 00000000000..3383c322ab4 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr78438.c @@ -0,0 +1,22 @@ +/* PR target/78438 */ + +char a = 0; +int b = 197412621; + +__attribute__ ((noinline, noclone)) +void foo () +{ + a = 0 > (short) (b >> 11); +} + +int +main () +{ + asm volatile ("" : : : "memory"); + if (__CHAR_BIT__ != 8 || sizeof (short) != 2 || sizeof (int) < 4) + return 0; + foo (); + if (a != 0) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr78477.c b/gcc/testsuite/gcc.c-torture/execute/pr78477.c new file mode 100644 index 00000000000..62e894ee190 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr78477.c @@ -0,0 +1,27 @@ +/* PR rtl-optimization/78477 */ + +unsigned a; +unsigned short b; + +unsigned +foo (unsigned x) +{ + b = x; + a >>= (b & 1); + b = 1 | (b << 5); + b >>= 15; + x = (unsigned char) b > ((2 - (unsigned char) b) & 1); + b = 0; + return x; +} + +int +main () +{ + if (__CHAR_BIT__ != 8 || sizeof (short) != 2 || sizeof (int) < 4) + return 0; + unsigned x = foo (12345); + if (x != 0) + __builtin_abort (); + return 0; +}