diff options
author | Sandra Loosemore <sandra@codesourcery.com> | 2011-12-19 15:29:21 -0500 |
---|---|---|
committer | Sandra Loosemore <sandra@gcc.gnu.org> | 2011-12-19 15:29:21 -0500 |
commit | 8f1ad6b6bfd9102bf5e240191f3df95498188410 (patch) | |
tree | 2981ef68a72b8b5e256d21f7915180b8f476157f /gcc/cse.c | |
parent | 1e815d32216f4c35208830b02c933895b1c2e9e2 (diff) | |
download | gcc-8f1ad6b6bfd9102bf5e240191f3df95498188410.zip gcc-8f1ad6b6bfd9102bf5e240191f3df95498188410.tar.gz gcc-8f1ad6b6bfd9102bf5e240191f3df95498188410.tar.bz2 |
re PR rtl-optimization/50380 ([4.6 only] cc1 hangs eating 100% CPU)
2011-12-19 Sandra Loosemore <sandra@codesourcery.com>
Tom de Vries <tom@codesourcery.com>
PR rtl-opt/50380
gcc/
* cse.c (find_comparison_args): Detect fixed point and
bail early.
gcc/testsuite/
* gcc.c-torture/compile/pr50380.c: New testcase.
Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r182498
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -3055,6 +3055,12 @@ find_comparison_args (enum rtx_code code, rtx *parg1, rtx *parg2, if (! exp_equiv_p (p->exp, p->exp, 1, false)) continue; + /* If it's the same comparison we're already looking at, skip it. */ + if (COMPARISON_P (p->exp) + && XEXP (p->exp, 0) == arg1 + && XEXP (p->exp, 1) == arg2) + continue; + if (GET_CODE (p->exp) == COMPARE /* Another possibility is that this machine has a compare insn that includes the comparison code. In that case, ARG1 would |