diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-02-11 15:19:44 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-02-11 15:19:44 +0100 |
commit | b63f974ef230d8b6fa8258ca6cd6a5be684e0a8c (patch) | |
tree | eaa4c4e4f6ea27fc6fee597fa095e7e690f9e904 | |
parent | 84b44e0fe402a8cb253695e2d09b6a0051c52f19 (diff) | |
download | gcc-b63f974ef230d8b6fa8258ca6cd6a5be684e0a8c.zip gcc-b63f974ef230d8b6fa8258ca6cd6a5be684e0a8c.tar.gz gcc-b63f974ef230d8b6fa8258ca6cd6a5be684e0a8c.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr47684.c | 20 | ||||
-rw-r--r-- | gcc/tree-predcom.c | 4 |
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9e8c392..e4ca2b6 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 c5bf3eb..10e3be7 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 0000000..475aa15 --- /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 f744d44..2dbd07d 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 |