re PR rtl-optimization/32776 (ICE RTL check: expected code 'reg', have 'concatn'...
authorIan Lance Taylor <iant@google.com>
Tue, 7 Aug 2007 22:43:55 +0000 (22:43 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 7 Aug 2007 22:43:55 +0000 (22:43 +0000)
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
gcc/lower-subreg.c

index 498460c..374c150 100644 (file)
@@ -1,3 +1,10 @@
+2007-08-07  Ian Lance Taylor  <iant@google.com>
+
+       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  <carlos@codesourcery.com>
 
        * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
index 288566d..c61a8b7 100644 (file)
@@ -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;
                    }
                }
            }