]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/33029 (libgcc2.c:1890: internal compiler error: in local_cprop_pass...
authorSteven Bosscher <steven@gcc.gnu.org>
Wed, 5 Sep 2007 05:31:37 +0000 (05:31 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Wed, 5 Sep 2007 05:31:37 +0000 (05:31 +0000)
PR middle-end/33029
* lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
note, remove the associated REG_RETVAL note.

From-SVN: r128119

gcc/ChangeLog
gcc/lower-subreg.c

index c390cb5afd93a9daea2a4776ead9c8c7c1d6aa10..6df72e816afddd982f3fbab4f29a48d1feac413e 100644 (file)
@@ -1,3 +1,9 @@
+2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
+
+       PR middle-end/33029
+       * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
+       note, remove the associated REG_RETVAL note.
+
 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 
        * config.gcc (powerpc*-*-*): Install
        PR tree-optimization/19590
        * tree-vrp.c (adjust_range_with_scev): Set the range when the result
        of scev is a constant.
-       * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
 
 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
 
index 4354640a701538a68f96567f707d00d665e61e41..696ec61e58d5203a0e2946c37e26ba833dff1b2d 100644 (file)
@@ -897,7 +897,7 @@ resolve_simple_move (rtx set, rtx insn)
 static bool
 resolve_clobber (rtx pat, rtx insn)
 {
-  rtx reg;
+  rtx reg, note;
   enum machine_mode orig_mode;
   unsigned int words, i;
   int ret;
@@ -909,8 +909,10 @@ resolve_clobber (rtx pat, rtx insn)
   /* If this clobber has a REG_LIBCALL note, then it is the initial
      clobber added by emit_no_conflict_block.  We were able to
      decompose the register, so we no longer need the clobber.  */
-  if (find_reg_note (insn, REG_LIBCALL, NULL_RTX) != NULL_RTX)
+  note = find_reg_note (insn, REG_LIBCALL, NULL_RTX);
+  if (note != NULL_RTX)
     {
+      remove_retval_note (XEXP (note, 0));
       delete_insn (insn);
       return true;
     }