summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSa Liu <saliu@de.ibm.com>2007-08-12 18:08:43 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2007-08-12 18:08:43 +0000
commit1c7f7c66f8910224dcc3caf27b72dcda8d2db34d (patch)
treeca64e1194693fa8489d361d0365367d08ffbd579
parent5920daabcee046cd9d77d089635eaa77065e5035 (diff)
downloadgcc-1c7f7c66f8910224dcc3caf27b72dcda8d2db34d.tar.gz
emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note and with REG_RETVAL note after split.
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/emit-rtl.c14
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5434dc96578..671afbf639f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index f1b1990eeac..e9e651f23ce 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -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;
}