From d15774b6318e7d7b1781eed30a1e3703bc450b98 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 27 Aug 2013 11:24:52 +0200 Subject: [PATCH] re PR rtl-optimization/57860 (wrong code for bitwise ops with long long literal on x86_64-linux (32-bit mode)) PR rtl-optimization/57860 PR rtl-optimization/57861 PR rtl-optimization/57875 PR rtl-optimization/57876 PR rtl-optimization/57877 * gcc.c-torture/execute/pr57860.c: New test. * gcc.c-torture/execute/pr57861.c: New test. * gcc.c-torture/execute/pr57875.c: New test. * gcc.c-torture/execute/pr57876.c: New test. * gcc.c-torture/execute/pr57877.c: New test. From-SVN: r202018 --- gcc/testsuite/ChangeLog | 13 ++++++++ gcc/testsuite/gcc.c-torture/execute/pr57860.c | 25 ++++++++++++++ gcc/testsuite/gcc.c-torture/execute/pr57861.c | 33 +++++++++++++++++++ gcc/testsuite/gcc.c-torture/execute/pr57875.c | 21 ++++++++++++ gcc/testsuite/gcc.c-torture/execute/pr57876.c | 27 +++++++++++++++ gcc/testsuite/gcc.c-torture/execute/pr57877.c | 28 ++++++++++++++++ 6 files changed, 147 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr57860.c create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr57861.c create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr57875.c create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr57876.c create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr57877.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1d1e2742c69..5310441f854 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2013-08-27 Jakub Jelinek + + PR rtl-optimization/57860 + PR rtl-optimization/57861 + PR rtl-optimization/57875 + PR rtl-optimization/57876 + PR rtl-optimization/57877 + * gcc.c-torture/execute/pr57860.c: New test. + * gcc.c-torture/execute/pr57861.c: New test. + * gcc.c-torture/execute/pr57875.c: New test. + * gcc.c-torture/execute/pr57876.c: New test. + * gcc.c-torture/execute/pr57877.c: New test. + 2013-08-26 Thomas Koenig PR fortran/58146 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr57860.c b/gcc/testsuite/gcc.c-torture/execute/pr57860.c new file mode 100644 index 00000000000..6cef63e7077 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr57860.c @@ -0,0 +1,25 @@ +/* PR rtl-optimization/57860 */ + +extern void abort (void); +int a, *b = &a, c, d, e, *f = &e, g, *h = &d, k[1] = { 1 }; + +int +foo (int p) +{ + for (;; g++) + { + for (; c; c--); + *f = *h = p > ((0x1FFFFFFFFLL ^ a) & *b); + if (k[g]) + return 0; + } +} + +int +main () +{ + foo (1); + if (d != 1) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr57861.c b/gcc/testsuite/gcc.c-torture/execute/pr57861.c new file mode 100644 index 00000000000..138eb617e5b --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr57861.c @@ -0,0 +1,33 @@ +/* PR rtl-optimization/57861 */ + +extern void abort (void); +short a = 1, f; +int b, c, d, *g = &b, h, i, j; +unsigned int e; + +static int +foo (char p) +{ + int k; + for (c = 0; c < 2; c++) + { + i = (j = 0) || p; + k = i * p; + if (e < k) + { + short *l = &f; + a = d && h; + *l = 0; + } + } + return 0; +} + +int +main () +{ + *g = foo (a); + if (a != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr57875.c b/gcc/testsuite/gcc.c-torture/execute/pr57875.c new file mode 100644 index 00000000000..c3ae51b441f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr57875.c @@ -0,0 +1,21 @@ +/* PR rtl-optimization/57875 */ + +extern void abort (void); +int a[1], b, c, d, f, i; +char e[1]; + +int +main () +{ + for (; i < 1; i++) + if (!d) + { + if (!c) + f = 2; + e[0] &= f ^= 0; + } + b = a[e[0] >> 1 & 1]; + if (b != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr57876.c b/gcc/testsuite/gcc.c-torture/execute/pr57876.c new file mode 100644 index 00000000000..bcf69127286 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr57876.c @@ -0,0 +1,27 @@ +/* PR rtl-optimization/57876 */ + +extern void abort (void); +int a, b = 1, c, *d = &c, f, *g, h, j; +static int e; + +int +main () +{ + int i; + for (i = 0; i < 2; i++) + { + long long k = b; + int l; + for (f = 0; f < 8; f++) + { + int *m = &e; + j = *d; + h = a * j - 1; + *m = (h == 0) < k; + g = &l; + } + } + if (e != 1) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr57877.c b/gcc/testsuite/gcc.c-torture/execute/pr57877.c new file mode 100644 index 00000000000..2d6ce447a31 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr57877.c @@ -0,0 +1,28 @@ +/* PR rtl-optimization/57877 */ + +extern void abort (void); +int a, b, *c = &b, e, f = 6, g, h; +short d; + +static unsigned char +foo (unsigned long long p1, int *p2) +{ + for (; g <= 0; g++) + { + short *i = &d; + int *j = &e; + h = *c; + *i = h; + *j = (*i == *p2) < p1; + } + return 0; +} + +int +main () +{ + foo (f, &a); + if (e != 1) + abort (); + return 0; +} -- 2.30.2