diff options
author | Andrew Jenner <andrew@codesourcery.com> | 2012-07-26 20:51:24 +0000 |
---|---|---|
committer | Sandra Loosemore <sandra@gcc.gnu.org> | 2012-07-26 16:51:24 -0400 |
commit | 27ec0502c807dd79b1e6782806ac2d95bd084a6a (patch) | |
tree | 23ce5234684b58ad1898974a03acd1eb8d8d4723 /gcc/testsuite | |
parent | 18a8e9ef96b23d33036c8f78baa3e4ad19a64825 (diff) | |
download | gcc-27ec0502c807dd79b1e6782806ac2d95bd084a6a.zip gcc-27ec0502c807dd79b1e6782806ac2d95bd084a6a.tar.gz gcc-27ec0502c807dd79b1e6782806ac2d95bd084a6a.tar.bz2 |
cse.c (find_comparison_args): Check for cycles of any length.
2012-07-26 Andrew Jenner <andrew@codesourcery.com>
Sandra Loosemore <sandra@codesourcery.com>
gcc/
* cse.c (find_comparison_args): Check for cycles of any length.
gcc/testsuite/
* gcc.c-torture/compile/pr50380.c: Add code to cause cycle of length 2.
Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com>
From-SVN: r189896
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr50380.c | 16 |
2 files changed, 18 insertions, 3 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 805698a..0773f04 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-07-26 Andrew Jenner <andrew@codesourcery.com> + Sandra Loosemore <sandra@codesourcery.com> + + * gcc.c-torture/compile/pr50380.c: Add code to cause cycle of length 2. + 2012-07-26 Tobias Burnus <burnus@net-b.de> * gfortran.dg/contiguous_1.f90: Update dg-error. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr50380.c b/gcc/testsuite/gcc.c-torture/compile/pr50380.c index ffd0442..3f03cbb 100644 --- a/gcc/testsuite/gcc.c-torture/compile/pr50380.c +++ b/gcc/testsuite/gcc.c-torture/compile/pr50380.c @@ -1,12 +1,22 @@ -/* This test used to get stuck in an infinite loop in find_comparison_args - when compiling for MIPS at -O2. */ - __attribute__ ((__noreturn__)) extern void fail (void); char x; +/* This used to get stuck in an infinite loop in find_comparison_args + when compiling this function for MIPS at -O2. */ + void foo (const unsigned char y) { ((void) (__builtin_expect((!! y == y), 1) ? 0 : (fail (), 0))); x = ! y; } + +/* This used to similarly get stuck when compiling for PowerPC at -O2. */ + +int foo2 (int arg) +{ + if (arg != !arg) + fail (); + if (arg) + fail (); +} |