a
Thu Mar 25 14:04:54 EST 1999 Andrew MacLeod <amacleod@cygnus.com>
* rtl.texi (RTX_FRAME_RELATED_P): Add documentation.
* rtl.h (struct rtx_def): Update comment for frame_related field.
(set_unique_reg_note): Declare prototype.
* dwarf2out.c (dwarf2out_frame_debug_expr): Split out from
'dwarf2out_frame_debug' to handle only expressions, and process
component parts of a PARALLEL expression.
(dwarf2out_frame_debug): Process insns only, and call
new function 'dwarf2out_frame_debug_expr' for patterns.
* emit-rtl.c (set_unique_reg_note): New function to add a reg note,
but if there is an existingone, deletes it first.
* expmed.c (expand_mult, expand_divmod): Use set_unique_reg_note.
* optabs.c (add_equal_note, expand_binop): Use set_unique_reg_note.
(emit_no_conflict_block, emit_libcall_block): Use set_unique_reg_note.
(expand_fix): Use set_unique_reg_note.
From-SVN: r25978
{
last_linenum = -1;
}
+
+/* Place a note of KIND on insn INSN with DATUM as the datum. If a
+ note of this type already exists, remove it first. */
+
+void
+set_unique_reg_note (insn, kind, datum)
+ rtx insn;
+ enum reg_note kind;
+ rtx datum;
+{
+ rtx note = find_reg_note (insn, kind, NULL_RTX);
+
+ /* First remove the note if there already is one. */
+ if (note)
+ remove_note (insn, note);
+
+ REG_NOTES (insn) = gen_rtx_EXPR_LIST (kind, datum, REG_NOTES (insn));
+}
\f
/* Return an indication of which type of insn should have X as a body.
The value is CODE_LABEL, INSN, CALL_INSN or JUMP_INSN. */