aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r--gcc/rtl.h26
1 files changed, 22 insertions, 4 deletions
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 93bce91..c9a3cb3 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -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)
/* Chain insns together in sequence. */
+
/* For now these are split in two: an rvalue form:
PREV_INSN/NEXT_INSN
and an lvalue form:
SET_NEXT_INSN/SET_PREV_INSN. */
-#define PREV_INSN(INSN) XEXP ((const_rtx)(INSN), 0)
-#define SET_PREV_INSN(INSN) XEXP (INSN, 0)
-#define NEXT_INSN(INSN) XEXP ((const_rtx)(INSN), 1)
-#define SET_NEXT_INSN(INSN) XEXP (INSN, 1)
+inline rtx_insn *PREV_INSN (const_rtx insn)
+{
+ rtx prev = XEXP (insn, 0);
+ 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)