From d4fd3465b63ef4d5e4c7d0d894dc6d69e7f54103 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 7 Aug 2007 22:43:55 +0000 Subject: [PATCH] re PR rtl-optimization/32776 (ICE RTL check: expected code 'reg', have 'concatn' in rhs_regno, at rtl.h:972) PR rtl-optimization/32776 * lower-subreg.c (resolve_clobber): Call resolve_reg_notes. (resolve_use): Likewise. (decompose_multiword_subregs): Remove "changed" local variable. From-SVN: r127282 --- gcc/ChangeLog | 7 +++++++ gcc/lower-subreg.c | 22 +++++++--------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 498460c58c35..374c15009aaa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-08-07 Ian Lance Taylor + + PR rtl-optimization/32776 + * lower-subreg.c (resolve_clobber): Call resolve_reg_notes. + (resolve_use): Likewise. + (decompose_multiword_subregs): Remove "changed" local variable. + 2007-08-07 Carlos O'Donell * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes. diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 288566d87b53..c61a8b7759e9 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -936,6 +936,8 @@ resolve_clobber (rtx pat, rtx insn) emit_insn_after (x, insn); } + resolve_reg_notes (insn); + return true; } @@ -950,6 +952,9 @@ resolve_use (rtx pat, rtx insn) delete_insn (insn); return true; } + + resolve_reg_notes (insn); + return false; } @@ -1251,25 +1256,17 @@ decompose_multiword_subregs (void) FOR_BB_INSNS (bb, insn) { rtx next, pat; - bool changed; if (!INSN_P (insn)) continue; next = NEXT_INSN (insn); - changed = false; pat = PATTERN (insn); if (GET_CODE (pat) == CLOBBER) - { - if (resolve_clobber (pat, insn)) - changed = true; - } + resolve_clobber (pat, insn); else if (GET_CODE (pat) == USE) - { - if (resolve_use (pat, insn)) - changed = true; - } + resolve_use (pat, insn); else { rtx set; @@ -1302,8 +1299,6 @@ decompose_multiword_subregs (void) insn = resolve_simple_move (set, insn); if (insn != orig_insn) { - changed = true; - remove_retval_note (insn); recog_memoized (insn); @@ -1320,7 +1315,6 @@ decompose_multiword_subregs (void) decomposed_shift = resolve_shift_zext (insn); if (decomposed_shift != NULL_RTX) { - changed = true; insn = decomposed_shift; recog_memoized (insn); extract_insn (insn); @@ -1349,8 +1343,6 @@ decompose_multiword_subregs (void) gcc_assert (i); remove_retval_note (insn); - - changed = true; } } }