From d5785e7634e1269fdb5c710c93d9bc05d5c6130f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 4 Feb 2012 13:47:55 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/lower-subreg.c | 6 ++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr52113.c | 11 +++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr52113.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cbb76e43548..0dba808591a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-02-04 Jakub Jelinek + + PR rtl-optimization/52113 + * lower-subreg.c (decompose_multiword_subregs): Call recog_memoized + even for decomposable shift/zext insns. + 2012-02-03 Jakub Jelinek Zdenek Dvorak diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 779cc5f40de..89f3044b7fe 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 Ian Lance Taylor @@ -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 0c209962133..1565b8771e6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-02-04 Jakub Jelinek + + PR rtl-optimization/52113 + * gcc.target/avr/pr52113.c: New test. + 2012-02-03 Jakub Jelinek 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 00000000000..61de64ff3a3 --- /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; +} -- 2.30.2