Commit 6306c300 by David Malcolm Committed by David Malcolm

Replace PREV_INSN et al macros with functions

gcc/
2014-08-19  David Malcolm  <dmalcolm@redhat.com>

	* rtl.h (PREV_INSN): Convert to an inline function.  Strengthen
	the return type from rtx to rtx_insn *,  which will enable various
	conversions in followup patches.  For now this is is done by a
	checked cast.
	(NEXT_INSN): Likewise.
	(SET_PREV_INSN): Convert to an inline function.  This is intended
	for use as an lvalue, and so returns an rtx& to allow in-place
	modification.
	(SET_NEXT_INSN): Likewise.

From-SVN: r214152
parent c77935ee
2014-08-19 David Malcolm <dmalcolm@redhat.com>
* rtl.h (PREV_INSN): Convert to an inline function. Strengthen
the return type from rtx to rtx_insn *, which will enable various
conversions in followup patches. For now this is is done by a
checked cast.
(NEXT_INSN): Likewise.
(SET_PREV_INSN): Convert to an inline function. This is intended
for use as an lvalue, and so returns an rtx& to allow in-place
modification.
(SET_NEXT_INSN): Likewise.
2014-07-08 Mark Wielaard <mjw@redhat.com> 2014-07-08 Mark Wielaard <mjw@redhat.com>
PR debug/59051 PR debug/59051
......
...@@ -972,15 +972,33 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *, ...@@ -972,15 +972,33 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
(RTL_INSN_CHAIN_FLAG_CHECK ("INSN_UID", (INSN))->u2.insn_uid) (RTL_INSN_CHAIN_FLAG_CHECK ("INSN_UID", (INSN))->u2.insn_uid)
/* Chain insns together in sequence. */ /* Chain insns together in sequence. */
/* For now these are split in two: an rvalue form: /* For now these are split in two: an rvalue form:
PREV_INSN/NEXT_INSN PREV_INSN/NEXT_INSN
and an lvalue form: and an lvalue form:
SET_NEXT_INSN/SET_PREV_INSN. */ SET_NEXT_INSN/SET_PREV_INSN. */
#define PREV_INSN(INSN) XEXP ((const_rtx)(INSN), 0) inline rtx_insn *PREV_INSN (const_rtx insn)
#define SET_PREV_INSN(INSN) XEXP (INSN, 0) {
#define NEXT_INSN(INSN) XEXP ((const_rtx)(INSN), 1) rtx prev = XEXP (insn, 0);
#define SET_NEXT_INSN(INSN) XEXP (INSN, 1) return safe_as_a <rtx_insn *> (prev);
}
inline rtx& SET_PREV_INSN (rtx insn)
{
return XEXP (insn, 0);
}
inline rtx_insn *NEXT_INSN (const_rtx insn)
{
rtx next = XEXP (insn, 1);
return safe_as_a <rtx_insn *> (next);
}
inline rtx& SET_NEXT_INSN (rtx insn)
{
return XEXP (insn, 1);
}
#define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 2) #define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 2)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment