diff options
author | Ian Lance Taylor <iant@google.com> | 2007-08-07 22:43:55 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2007-08-07 22:43:55 +0000 |
commit | d4fd3465b63ef4d5e4c7d0d894dc6d69e7f54103 (patch) | |
tree | 35317e8ce965742d89bd2dfc7ea0f9271e85e464 /gcc/lower-subreg.c | |
parent | 9c94a88187cc8e42175d4357872eb53874350b18 (diff) | |
download | gcc-d4fd3465b63ef4d5e4c7d0d894dc6d69e7f54103.tar.gz |
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
Diffstat (limited to 'gcc/lower-subreg.c')
-rw-r--r-- | gcc/lower-subreg.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 288566d87b5..c61a8b7759e 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; } } } |