aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-02-04 13:47:55 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2012-02-04 13:47:55 +0100
commitd5785e7634e1269fdb5c710c93d9bc05d5c6130f (patch)
treefdf91c32578f466bf97867597162a96cd39c97f5
parent03548f7bec06104dfc3a68a6f9cbeafa44de8ece (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/lower-subreg.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr52113.c11
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;
+}