diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-02-04 13:47:55 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-02-04 13:47:55 +0100 |
commit | d5785e7634e1269fdb5c710c93d9bc05d5c6130f (patch) | |
tree | fdf91c32578f466bf97867597162a96cd39c97f5 | |
parent | 03548f7bec06104dfc3a68a6f9cbeafa44de8ece (diff) | |
download | gcc-d5785e7634e1269fdb5c710c93d9bc05d5c6130f.zip gcc-d5785e7634e1269fdb5c710c93d9bc05d5c6130f.tar.gz gcc-d5785e7634e1269fdb5c710c93d9bc05d5c6130f.tar.bz2 |
re PR rtl-optimization/52113 ([lower-subreg.c] ICE: in extract_insn, at recog.c:2123)
PR rtl-optimization/52113
* lower-subreg.c (decompose_multiword_subregs): Call recog_memoized
even for decomposable shift/zext insns.
* gcc.target/avr/pr52113.c: New test.
From-SVN: r183894
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lower-subreg.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr52113.c | 11 |
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cbb76e4..0dba808 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-02-04 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/52113 + * lower-subreg.c (decompose_multiword_subregs): Call recog_memoized + even for decomposable shift/zext insns. + 2012-02-03 Jakub Jelinek <jakub@redhat.com> Zdenek Dvorak <ook@ucw.cz> diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 779cc5f..89f3044 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -1,5 +1,6 @@ /* Decompose multiword subregs. - Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 + Free Software Foundation, Inc. Contributed by Richard Henderson <rth@redhat.com> Ian Lance Taylor <iant@google.com> @@ -1135,10 +1136,11 @@ decompose_multiword_subregs (void) || GET_CODE (PATTERN (insn)) == USE) continue; + recog_memoized (insn); + if (find_decomposable_shift_zext (insn)) continue; - recog_memoized (insn); extract_insn (insn); set = simple_move (insn); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0c20996..1565b87 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-02-04 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/52113 + * gcc.target/avr/pr52113.c: New test. + 2012-02-03 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/52092 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr52113.c b/gcc/testsuite/gcc.c-torture/compile/pr52113.c new file mode 100644 index 0000000..61de64f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr52113.c @@ -0,0 +1,11 @@ +/* PR rtl-optimization/52113 */ + +unsigned long v1; +unsigned char v2; + +void +foo (void) +{ + if (v1 > (v2 * 1000L)) + v1 = 0; +} |