emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note and with REG_RETVAL...
authorSa Liu <saliu@de.ibm.com>
Sun, 12 Aug 2007 18:08:43 +0000 (18:08 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Sun, 12 Aug 2007 18:08:43 +0000 (18:08 +0000)
2007-08-12  Sa Liu  <saliu@de.ibm.com>

       * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
       and with REG_RETVAL note after split.

From-SVN: r127376

gcc/ChangeLog
gcc/emit-rtl.c

index 5434dc96578de85fa7bb5897eeb1deaf34dd7bb7..671afbf639fefa57c09696397e6e5493adcb312b 100644 (file)
@@ -1,3 +1,8 @@
+2007-08-12  Sa Liu  <saliu@de.ibm.com>
+
+       * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
+       and with REG_RETVAL note after split.
+
 2007-08-11  David Daney  <ddaney@avtrex.com>
 
        * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
index f1b1990eeacabb04fc356a622f84f64d626ebb59..e9e651f23ceeba3fb364ea6f72cda3eb77818e1c 100644 (file)
@@ -3134,7 +3134,7 @@ try_split (rtx pat, rtx trial, int last)
   rtx before = PREV_INSN (trial);
   rtx after = NEXT_INSN (trial);
   int has_barrier = 0;
-  rtx tem;
+  rtx tem, note_retval;
   rtx note, seq;
   int probability;
   rtx insn_last, insn;
@@ -3270,6 +3270,18 @@ try_split (rtx pat, rtx trial, int last)
          break;
 #endif
 
+       case REG_LIBCALL:
+         /* Relink the insns with REG_LIBCALL note and with REG_RETVAL note 
+            after split.  */
+         REG_NOTES (insn_last) 
+           = gen_rtx_EXPR_LIST (REG_LIBCALL,
+                                XEXP (note, 0),
+                                REG_NOTES (insn_last)); 
+
+         note_retval = find_reg_note (XEXP (note, 0), REG_RETVAL, NULL);
+         XEXP (note_retval, 0) = insn_last;
+         break;
+
        default:
          break;
        }