JUMP_LABEL(X) is not always an insn, but often is. Add a variant that
adds a checked cast.
gcc/
* rtl.h (JUMP_LABEL_AS_INSN): New.
---
gcc/rtl.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 1f1caaf..7a8e592 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1681,6 +1681,11 @@ enum label_kind
be set to simple_return_rtx, a SIMPLE_RETURN. */
#define JUMP_LABEL(INSN) XCEXP (INSN, 7, JUMP_INSN)
+inline rtx_insn *JUMP_LABEL_AS_INSN (rtx_insn *insn)
+{
+ return as_a_nullable <rtx_insn *> (JUMP_LABEL (insn));
+}
+
/* Once basic blocks are found, each CODE_LABEL starts a chain that
goes through all the LABEL_REFs that jump to that label. The chain
eventually winds up at the CODE_LABEL: it is circular. */
--
1.8.5.3