diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-12-12 13:43:34 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-12-12 13:43:34 +0100 |
commit | ef53f36f968942ed111f962ca8ec479f9ed1f0e3 (patch) | |
tree | 1a9494e2a90a2af3ce4105c775243f2dd464d302 | |
parent | 69aef6dcdcebd6f4494d9ca6e3ff7fdfa38ec602 (diff) | |
download | gcc-ef53f36f968942ed111f962ca8ec479f9ed1f0e3.zip gcc-ef53f36f968942ed111f962ca8ec479f9ed1f0e3.tar.gz gcc-ef53f36f968942ed111f962ca8ec479f9ed1f0e3.tar.bz2 |
re PR rtl-optimization/64255 (failures with -O2 optimization on i >= 0 ? (unsigned long) i : - (unsigned long) i)
PR rtl-optimization/64255
* gcc.c-torture/execute/pr64255.c: New test.
PR rtl-optimization/64260
* gcc.c-torture/execute/pr64260.c: New test.
From-SVN: r218665
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr64255.c | 28 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr64260.c | 25 |
3 files changed, 61 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fc4869f..e4eb34b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-12-12 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/64255 + * gcc.c-torture/execute/pr64255.c: New test. + + PR rtl-optimization/64260 + * gcc.c-torture/execute/pr64260.c: New test. + 2014-12-12 Zhenqiang Chen <zhenqiang.chen@arm.com> * gcc.dg/pr64007.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/execute/pr64255.c b/gcc/testsuite/gcc.c-torture/execute/pr64255.c new file mode 100644 index 0000000..447638a --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr64255.c @@ -0,0 +1,28 @@ +/* PR rtl-optimization/64255 */ + +__attribute__((noinline, noclone)) void +bar (long i, unsigned long j) +{ + if (i != 1 || j != 1) + __builtin_abort (); +} + +__attribute__((noinline, noclone)) void +foo (long i) +{ + unsigned long j; + + if (!i) + return; + j = i >= 0 ? (unsigned long) i : - (unsigned long) i; + if ((i >= 0 ? (unsigned long) i : - (unsigned long) i) != j) + __builtin_abort (); + bar (i, j); +} + +int +main () +{ + foo (1); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr64260.c b/gcc/testsuite/gcc.c-torture/execute/pr64260.c new file mode 100644 index 0000000..e6cd6c2 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr64260.c @@ -0,0 +1,25 @@ +/* PR rtl-optimization/64260 */ + +int a = 1, b; + +void +foo (char p) +{ + int t = 0; + for (; b < 1; b++) + { + int *s = &a; + if (--t) + *s &= p; + *s &= 1; + } +} + +int +main () +{ + foo (0); + if (a != 0) + __builtin_abort (); + return 0; +} |