From b63f974ef230d8b6fa8258ca6cd6a5be684e0a8c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek <jakub@redhat.com> Date: Fri, 11 Feb 2011 15:19:44 +0100 Subject: [PATCH] re PR target/47665 (ICE in trunc_int_for_mode) PR target/47665 * combine.c (make_compound_operation): Only change shifts into multiplication for SCALAR_INT_MODE_P. * gcc.target/i386/pr47665.c: New test. From-SVN: r170050 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr47684.c | 20 ++++++++++++++++++++ gcc/tree-predcom.c | 4 +++- 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr47684.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9e8c392b3400..e4ca2b6803ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-02-11 Jakub Jelinek <jakub@redhat.com> + + PR target/47665 + * combine.c (make_compound_operation): Only change shifts into + multiplication for SCALAR_INT_MODE_P. + 2011-02-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR testsuite/47400 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c5bf3eb787d9..10e3be701c91 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-02-11 Jakub Jelinek <jakub@redhat.com> + + PR target/47665 + * gcc.target/i386/pr47665.c: New test. + 2011-02-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR target/47629 diff --git a/gcc/testsuite/gcc.dg/pr47684.c b/gcc/testsuite/gcc.dg/pr47684.c new file mode 100644 index 000000000000..475aa1549b81 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr47684.c @@ -0,0 +1,20 @@ +/* PR debug/47684 */ +/* { dg-do compile } */ +/* { dg-options "-O3 -fcompare-debug" } */ + +int in[8][4]; +int out[4]; + +void +foo (void) +{ + int sum = 1; + int i, j, k; + for (k = 0; k < 4; k++) + { + for (j = 0; j < 4; j++) + for (i = 0; i < 4; i++) + sum *= in[i + k][j]; + out[k] = sum; + } +} diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index f744d4487809..2dbd07d135af 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -1,5 +1,5 @@ /* Predictive commoning. - Copyright (C) 2005, 2007, 2008, 2009, 2010 + Copyright (C) 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -1668,6 +1668,8 @@ single_nonlooparound_use (tree name) return NULL; } + else if (is_gimple_debug (stmt)) + continue; else if (ret != NULL) return NULL; else -- GitLab