/* Register Transfer Language (RTL) definitions for GNU C-Compiler
Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GCC.
(*({ rtx _rtx = (RTX); int _n = (N); \
enum rtx_code _code = GET_CODE (_rtx); \
if (_n < 0 || _n >= GET_RTX_LENGTH (_code)) \
- rtl_check_failed_bounds (_rtx, _n, __FILE__, __LINE__, __FUNCTION__); \
+ rtl_check_failed_bounds (_rtx, _n, __FILE__, __LINE__, \
+ __FUNCTION__); \
if (GET_RTX_FORMAT(_code)[_n] != C1) \
- rtl_check_failed_type1(_rtx, _n, C1, __FILE__, __LINE__, __FUNCTION__); \
+ rtl_check_failed_type1 (_rtx, _n, C1, __FILE__, __LINE__, \
+ __FUNCTION__); \
&_rtx->fld[_n]; }))
#define RTL_CHECK2(RTX, N, C1, C2) __extension__ \
(*({ rtx _rtx = (RTX); int _n = (N); \
enum rtx_code _code = GET_CODE (_rtx); \
if (_n < 0 || _n >= GET_RTX_LENGTH (_code)) \
- rtl_check_failed_bounds (_rtx, _n, __FILE__, __LINE__, __FUNCTION__); \
+ rtl_check_failed_bounds (_rtx, _n, __FILE__, __LINE__, \
+ __FUNCTION__); \
if (GET_RTX_FORMAT(_code)[_n] != C1 \
&& GET_RTX_FORMAT(_code)[_n] != C2) \
rtl_check_failed_type2 (_rtx, _n, C1, C2, __FILE__, __LINE__, \
#define RTL_CHECKC1(RTX, N, C) __extension__ \
(*({ rtx _rtx = (RTX); int _n = (N); \
- if (GET_CODE (_rtx) != C) \
- rtl_check_failed_code1 (_rtx, C, __FILE__, __LINE__, __FUNCTION__); \
+ if (GET_CODE (_rtx) != (C)) \
+ rtl_check_failed_code1 (_rtx, (C), __FILE__, __LINE__, \
+ __FUNCTION__); \
&_rtx->fld[_n]; }))
#define RTL_CHECKC2(RTX, N, C1, C2) __extension__ \
(*({ rtx _rtx = (RTX); int _n = (N); \
enum rtx_code _code = GET_CODE (_rtx); \
- if (_code != C1 && _code != C2) \
- rtl_check_failed_code2(_rtx, C1, C2, __FILE__, __LINE__, __FUNCTION__); \
+ if (_code != (C1) && _code != (C2)) \
+ rtl_check_failed_code2 (_rtx, (C1), (C2), __FILE__, __LINE__, \
+ __FUNCTION__); \
&_rtx->fld[_n]; }))
#define RTVEC_ELT(RTVEC, I) __extension__ \
#endif
-#define XWINT(RTX, N) (RTL_CHECK1(RTX, N, 'w').rtwint)
-#define XINT(RTX, N) (RTL_CHECK2(RTX, N, 'i', 'n').rtint)
-#define XSTR(RTX, N) (RTL_CHECK2(RTX, N, 's', 'S').rtstr)
-#define XEXP(RTX, N) (RTL_CHECK2(RTX, N, 'e', 'u').rtx)
-#define XVEC(RTX, N) (RTL_CHECK2(RTX, N, 'E', 'V').rtvec)
-#define XMODE(RTX, N) (RTL_CHECK1(RTX, N, 'M').rttype)
-#define XBITMAP(RTX, N) (RTL_CHECK1(RTX, N, 'b').rtbit)
-#define XTREE(RTX, N) (RTL_CHECK1(RTX, N, 't').rttree)
-#define XBBDEF(RTX, N) (RTL_CHECK1(RTX, N, 'B').bb)
-#define XTMPL(RTX, N) (RTL_CHECK1(RTX, N, 'T').rtstr)
+#define XWINT(RTX, N) (RTL_CHECK1 (RTX, N, 'w').rtwint)
+#define XINT(RTX, N) (RTL_CHECK2 (RTX, N, 'i', 'n').rtint)
+#define XSTR(RTX, N) (RTL_CHECK2 (RTX, N, 's', 'S').rtstr)
+#define XEXP(RTX, N) (RTL_CHECK2 (RTX, N, 'e', 'u').rtx)
+#define XVEC(RTX, N) (RTL_CHECK2 (RTX, N, 'E', 'V').rtvec)
+#define XMODE(RTX, N) (RTL_CHECK1 (RTX, N, 'M').rttype)
+#define XBITMAP(RTX, N) (RTL_CHECK1 (RTX, N, 'b').rtbit)
+#define XTREE(RTX, N) (RTL_CHECK1 (RTX, N, 't').rttree)
+#define XBBDEF(RTX, N) (RTL_CHECK1 (RTX, N, 'B').bb)
+#define XTMPL(RTX, N) (RTL_CHECK1 (RTX, N, 'T').rtstr)
#define XVECEXP(RTX, N, M) RTVEC_ELT (XVEC (RTX, N), M)
#define XVECLEN(RTX, N) GET_NUM_ELEM (XVEC (RTX, N))
/* These are like XWINT, etc. except that they expect a '0' field instead
of the normal type code. */
-#define X0WINT(RTX, N) (RTL_CHECK1(RTX, N, '0').rtwint)
-#define X0INT(RTX, N) (RTL_CHECK1(RTX, N, '0').rtint)
-#define X0UINT(RTX, N) (RTL_CHECK1(RTX, N, '0').rtuint)
-#define X0STR(RTX, N) (RTL_CHECK1(RTX, N, '0').rtstr)
-#define X0EXP(RTX, N) (RTL_CHECK1(RTX, N, '0').rtx)
-#define X0VEC(RTX, N) (RTL_CHECK1(RTX, N, '0').rtvec)
-#define X0MODE(RTX, N) (RTL_CHECK1(RTX, N, '0').rttype)
-#define X0BITMAP(RTX, N) (RTL_CHECK1(RTX, N, '0').rtbit)
-#define X0TREE(RTX, N) (RTL_CHECK1(RTX, N, '0').rttree)
-#define X0BBDEF(RTX, N) (RTL_CHECK1(RTX, N, '0').bb)
-#define X0ADVFLAGS(RTX, N) (RTL_CHECK1(RTX, N, '0').rt_addr_diff_vec_flags)
-#define X0CSELIB(RTX, N) (RTL_CHECK1(RTX, N, '0').rt_cselib)
-#define X0MEMATTR(RTX, N) (RTL_CHECK1(RTX, N, '0').rtmem)
-
-#define XCWINT(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rtwint)
-#define XCINT(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rtint)
-#define XCUINT(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rtuint)
-#define XCSTR(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rtstr)
-#define XCEXP(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rtx)
-#define XCVEC(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rtvec)
-#define XCMODE(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rttype)
-#define XCBITMAP(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rtbit)
-#define XCTREE(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rttree)
-#define XCBBDEF(RTX, N, C) (RTL_CHECKC1(RTX, N, C).bb)
-#define XCADVFLAGS(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rt_addr_diff_vec_flags)
-#define XCCSELIB(RTX, N, C) (RTL_CHECKC1(RTX, N, C).rt_cselib)
+#define X0WINT(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtwint)
+#define X0INT(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtint)
+#define X0UINT(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtuint)
+#define X0STR(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtstr)
+#define X0EXP(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtx)
+#define X0VEC(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtvec)
+#define X0MODE(RTX, N) (RTL_CHECK1 (RTX, N, '0').rttype)
+#define X0BITMAP(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtbit)
+#define X0TREE(RTX, N) (RTL_CHECK1 (RTX, N, '0').rttree)
+#define X0BBDEF(RTX, N) (RTL_CHECK1 (RTX, N, '0').bb)
+#define X0ADVFLAGS(RTX, N) (RTL_CHECK1 (RTX, N, '0').rt_addr_diff_vec_flags)
+#define X0CSELIB(RTX, N) (RTL_CHECK1 (RTX, N, '0').rt_cselib)
+#define X0MEMATTR(RTX, N) (RTL_CHECK1 (RTX, N, '0').rtmem)
+
+#define XCWINT(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rtwint)
+#define XCINT(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rtint)
+#define XCUINT(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rtuint)
+#define XCSTR(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rtstr)
+#define XCEXP(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rtx)
+#define XCVEC(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rtvec)
+#define XCMODE(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rttype)
+#define XCBITMAP(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rtbit)
+#define XCTREE(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rttree)
+#define XCBBDEF(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).bb)
+#define XCADVFLAGS(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rt_addr_diff_vec_flags)
+#define XCCSELIB(RTX, N, C) (RTL_CHECKC1 (RTX, N, C).rt_cselib)
#define XCVECEXP(RTX, N, M, C) RTVEC_ELT (XCVEC (RTX, N, C), M)
#define XCVECLEN(RTX, N, C) GET_NUM_ELEM (XCVEC (RTX, N, C))
-#define XC2EXP(RTX, N, C1, C2) (RTL_CHECKC2(RTX, N, C1, C2).rtx)
+#define XC2EXP(RTX, N, C1, C2) (RTL_CHECKC2 (RTX, N, C1, C2).rtx)
\f
/* ACCESS MACROS for particular fields of insns. */
/* Holds a unique number for each insn.
These are not necessarily sequentially increasing. */
-#define INSN_UID(INSN) XINT(INSN, 0)
+#define INSN_UID(INSN) XINT (INSN, 0)
/* Chain insns together in sequence. */
-#define PREV_INSN(INSN) XEXP(INSN, 1)
-#define NEXT_INSN(INSN) XEXP(INSN, 2)
+#define PREV_INSN(INSN) XEXP (INSN, 1)
+#define NEXT_INSN(INSN) XEXP (INSN, 2)
/* The body of an insn. */
-#define PATTERN(INSN) XEXP(INSN, 3)
+#define PATTERN(INSN) XEXP (INSN, 3)
/* Code number of instruction, from when it was recognized.
-1 means this instruction has not been recognized yet. */
-#define INSN_CODE(INSN) XINT(INSN, 4)
+#define INSN_CODE(INSN) XINT (INSN, 4)
/* Set up in flow.c; empty before then.
Holds a chain of INSN_LIST rtx's whose first operands point at
/* Define macros to extract and insert the reg-note kind in an EXPR_LIST. */
#define REG_NOTE_KIND(LINK) ((enum reg_note) GET_MODE (LINK))
-#define PUT_REG_NOTE_KIND(LINK,KIND) PUT_MODE(LINK, (enum machine_mode) (KIND))
+#define PUT_REG_NOTE_KIND(LINK, KIND) \
+ PUT_MODE (LINK, (enum machine_mode) (KIND))
/* Names for REG_NOTE's in EXPR_LIST insn's. */
/* The label-number of a code-label. The assembler label
is made from `L' and the label-number printed in decimal.
Label numbers are unique in a compilation. */
-#define CODE_LABEL_NUMBER(INSN) XINT(INSN, 5)
+#define CODE_LABEL_NUMBER(INSN) XINT (INSN, 5)
#define LINE_NUMBER NOTE
The NOTE_INSN_RANGE_{START,END} and NOTE_INSN_LIVE notes record their
information as an rtx in the field. */
-#define NOTE_SOURCE_FILE(INSN) XCSTR(INSN, 3, NOTE)
-#define NOTE_BLOCK(INSN) XCTREE(INSN, 3, NOTE)
-#define NOTE_EH_HANDLER(INSN) XCINT(INSN, 3, NOTE)
-#define NOTE_RANGE_INFO(INSN) XCEXP(INSN, 3, NOTE)
-#define NOTE_LIVE_INFO(INSN) XCEXP(INSN, 3, NOTE)
-#define NOTE_BASIC_BLOCK(INSN) XCBBDEF(INSN, 3, NOTE)
-#define NOTE_EXPECTED_VALUE(INSN) XCEXP(INSN, 3, NOTE)
+#define NOTE_SOURCE_FILE(INSN) XCSTR (INSN, 3, NOTE)
+#define NOTE_BLOCK(INSN) XCTREE (INSN, 3, NOTE)
+#define NOTE_EH_HANDLER(INSN) XCINT (INSN, 3, NOTE)
+#define NOTE_RANGE_INFO(INSN) XCEXP (INSN, 3, NOTE)
+#define NOTE_LIVE_INFO(INSN) XCEXP (INSN, 3, NOTE)
+#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 3, NOTE)
+#define NOTE_EXPECTED_VALUE(INSN) XCEXP (INSN, 3, NOTE)
/* In a NOTE that is a line number, this is the line number.
Other kinds of NOTEs are identified by negative numbers here. */
-#define NOTE_LINE_NUMBER(INSN) XCINT(INSN, 4, NOTE)
+#define NOTE_LINE_NUMBER(INSN) XCINT (INSN, 4, NOTE)
/* Nonzero if INSN is a note marking the beginning of a basic block. */
#define NOTE_INSN_BASIC_BLOCK_P(INSN) \
/* The name of a label, in case it corresponds to an explicit label
in the input source code. */
-#define LABEL_NAME(RTX) XCSTR(RTX, 6, CODE_LABEL)
+#define LABEL_NAME(RTX) XCSTR (RTX, 6, CODE_LABEL)
/* In jump.c, each label contains a count of the number
of LABEL_REFs that point at it, so unused labels can be deleted. */
-#define LABEL_NUSES(RTX) XCINT(RTX, 3, CODE_LABEL)
+#define LABEL_NUSES(RTX) XCINT (RTX, 3, CODE_LABEL)
/* Associate a name with a CODE_LABEL. */
-#define LABEL_ALTERNATE_NAME(RTX) XCSTR(RTX, 7, CODE_LABEL)
+#define LABEL_ALTERNATE_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL)
/* The original regno this ADDRESSOF was built for. */
-#define ADDRESSOF_REGNO(RTX) XCUINT(RTX, 1, ADDRESSOF)
+#define ADDRESSOF_REGNO(RTX) XCUINT (RTX, 1, ADDRESSOF)
/* The variable in the register we took the address of. */
-#define ADDRESSOF_DECL(RTX) XCTREE(RTX, 2, ADDRESSOF)
+#define ADDRESSOF_DECL(RTX) XCTREE (RTX, 2, ADDRESSOF)
/* In jump.c, each JUMP_INSN can point to a label that it can jump to,
so that if the JUMP_INSN is deleted, the label's LABEL_NUSES can
be decremented and possibly the label can be deleted. */
-#define JUMP_LABEL(INSN) XCEXP(INSN, 7, JUMP_INSN)
+#define JUMP_LABEL(INSN) XCEXP (INSN, 7, JUMP_INSN)
/* Once basic blocks are found in flow.c,
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. */
-#define LABEL_REFS(LABEL) XCEXP(LABEL, 4, CODE_LABEL)
+#define LABEL_REFS(LABEL) XCEXP (LABEL, 4, CODE_LABEL)
\f
/* This is the field in the LABEL_REF through which the circular chain
of references to a particular label is linked.
This chain is set up in flow.c. */
-#define LABEL_NEXTREF(REF) XCEXP(REF, 1, LABEL_REF)
+#define LABEL_NEXTREF(REF) XCEXP (REF, 1, LABEL_REF)
/* Once basic blocks are found in flow.c,
Each LABEL_REF points to its containing instruction with this field. */
-#define CONTAINING_INSN(RTX) XCEXP(RTX, 2, LABEL_REF)
+#define CONTAINING_INSN(RTX) XCEXP (RTX, 2, LABEL_REF)
/* For a REG rtx, REGNO extracts the register number. ORIGINAL_REGNO holds
the number the register originally had; for a pseudo register turned into
a hard reg this will hold the old pseudo register number. */
-#define REGNO(RTX) XCUINT(RTX, 0, REG)
-#define ORIGINAL_REGNO(RTX) X0UINT(RTX, 1)
+#define REGNO(RTX) XCUINT (RTX, 0, REG)
+#define ORIGINAL_REGNO(RTX) X0UINT (RTX, 1)
/* For a REG rtx, REG_FUNCTION_VALUE_P is nonzero if the reg
is the current function's return value. */
#define HARD_REGISTER_P(REG) (HARD_REGISTER_NUM_P (REGNO (REG)))
/* 1 if the given register number REG_NO corresponds to a hard register. */
-#define HARD_REGISTER_NUM_P(REG_NO) (REG_NO < FIRST_PSEUDO_REGISTER)
+#define HARD_REGISTER_NUM_P(REG_NO) ((REG_NO) < FIRST_PSEUDO_REGISTER)
/* For a CONST_INT rtx, INTVAL extracts the integer. */
/* For a SUBREG rtx, SUBREG_REG extracts the value we want a subreg of.
SUBREG_BYTE extracts the byte-number. */
-#define SUBREG_REG(RTX) XCEXP(RTX, 0, SUBREG)
-#define SUBREG_BYTE(RTX) XCUINT(RTX, 1, SUBREG)
+#define SUBREG_REG(RTX) XCEXP (RTX, 0, SUBREG)
+#define SUBREG_BYTE(RTX) XCUINT (RTX, 1, SUBREG)
/* in rtlanal.c */
extern unsigned int subreg_lsb PARAMS ((rtx));
/* Access various components of an ASM_OPERANDS rtx. */
-#define ASM_OPERANDS_TEMPLATE(RTX) XCSTR ((RTX), 0, ASM_OPERANDS)
-#define ASM_OPERANDS_OUTPUT_CONSTRAINT(RTX) XCSTR ((RTX), 1, ASM_OPERANDS)
-#define ASM_OPERANDS_OUTPUT_IDX(RTX) XCINT ((RTX), 2, ASM_OPERANDS)
-#define ASM_OPERANDS_INPUT_VEC(RTX) XCVEC ((RTX), 3, ASM_OPERANDS)
-#define ASM_OPERANDS_INPUT_CONSTRAINT_VEC(RTX) XCVEC ((RTX), 4, ASM_OPERANDS)
-#define ASM_OPERANDS_INPUT(RTX, N) XCVECEXP ((RTX), 3, (N), ASM_OPERANDS)
-#define ASM_OPERANDS_INPUT_LENGTH(RTX) XCVECLEN ((RTX), 3, ASM_OPERANDS)
+#define ASM_OPERANDS_TEMPLATE(RTX) XCSTR (RTX, 0, ASM_OPERANDS)
+#define ASM_OPERANDS_OUTPUT_CONSTRAINT(RTX) XCSTR (RTX, 1, ASM_OPERANDS)
+#define ASM_OPERANDS_OUTPUT_IDX(RTX) XCINT (RTX, 2, ASM_OPERANDS)
+#define ASM_OPERANDS_INPUT_VEC(RTX) XCVEC (RTX, 3, ASM_OPERANDS)
+#define ASM_OPERANDS_INPUT_CONSTRAINT_VEC(RTX) XCVEC (RTX, 4, ASM_OPERANDS)
+#define ASM_OPERANDS_INPUT(RTX, N) XCVECEXP (RTX, 3, N, ASM_OPERANDS)
+#define ASM_OPERANDS_INPUT_LENGTH(RTX) XCVECLEN (RTX, 3, ASM_OPERANDS)
#define ASM_OPERANDS_INPUT_CONSTRAINT_EXP(RTX, N) \
- XCVECEXP ((RTX), 4, (N), ASM_OPERANDS)
+ XCVECEXP (RTX, 4, N, ASM_OPERANDS)
#define ASM_OPERANDS_INPUT_CONSTRAINT(RTX, N) \
- XSTR (XCVECEXP ((RTX), 4, (N), ASM_OPERANDS), 0)
+ XSTR (XCVECEXP (RTX, 4, N, ASM_OPERANDS), 0)
#define ASM_OPERANDS_INPUT_MODE(RTX, N) \
- GET_MODE (XCVECEXP ((RTX), 4, (N), ASM_OPERANDS))
-#define ASM_OPERANDS_SOURCE_FILE(RTX) XCSTR ((RTX), 5, ASM_OPERANDS)
-#define ASM_OPERANDS_SOURCE_LINE(RTX) XCINT ((RTX), 6, ASM_OPERANDS)
+ GET_MODE (XCVECEXP (RTX, 4, N, ASM_OPERANDS))
+#define ASM_OPERANDS_SOURCE_FILE(RTX) XCSTR (RTX, 5, ASM_OPERANDS)
+#define ASM_OPERANDS_SOURCE_LINE(RTX) XCINT (RTX, 6, ASM_OPERANDS)
/* For a MEM RTX, 1 if we should keep the alias set for this mem
unchanged when we access a component. Set to 1, or example, when we
RTX. Otherwise, vice versa. Use this macro only when you are
*sure* that you know that the MEM is in a structure, or is a
scalar. VAL is evaluated only once. */
-#define MEM_SET_IN_STRUCT_P(RTX, VAL) do { \
+#define MEM_SET_IN_STRUCT_P(RTX, VAL) \
+do { \
if (VAL) \
{ \
MEM_IN_STRUCT_P (RTX) = 1; \
#define SET_IS_RETURN_P(RTX) ((RTX)->jump)
/* For a TRAP_IF rtx, TRAP_CONDITION is an expression. */
-#define TRAP_CONDITION(RTX) XCEXP(RTX, 0, TRAP_IF)
-#define TRAP_CODE(RTX) XCEXP(RTX, 1, TRAP_IF)
+#define TRAP_CONDITION(RTX) XCEXP (RTX, 0, TRAP_IF)
+#define TRAP_CODE(RTX) XCEXP (RTX, 1, TRAP_IF)
/* For a COND_EXEC rtx, COND_EXEC_TEST is the condition to base
conditionally executing the code on, COND_EXEC_CODE is the code
to execute if the condition is true. */
-#define COND_EXEC_TEST(RTX) XCEXP(RTX, 0, COND_EXEC)
-#define COND_EXEC_CODE(RTX) XCEXP(RTX, 1, COND_EXEC)
+#define COND_EXEC_TEST(RTX) XCEXP (RTX, 0, COND_EXEC)
+#define COND_EXEC_CODE(RTX) XCEXP (RTX, 1, COND_EXEC)
/* 1 in a SYMBOL_REF if it addresses this function's constants pool. */
#define CONSTANT_POOL_ADDRESS_P(RTX) ((RTX)->unchanging)
/* Don't continue this line--convex cc version 4.1 would lose. */
#if (defined (HAVE_PRE_INCREMENT) || defined (HAVE_PRE_DECREMENT) || defined (HAVE_POST_INCREMENT) || defined (HAVE_POST_DECREMENT))
-#define FIND_REG_INC_NOTE(insn, reg) \
- (reg != NULL_RTX && REG_P ((rtx) (reg)) \
- ? find_regno_note ((insn), REG_INC, REGNO ((rtx) (reg))) \
- : find_reg_note ((insn), REG_INC, (reg)))
+#define FIND_REG_INC_NOTE(INSN, REG) \
+ ((REG) != NULL_RTX && REG_P ((REG)) \
+ ? find_regno_note ((INSN), REG_INC, REGNO (REG)) \
+ : find_reg_note ((INSN), REG_INC, (REG)))
#else
-#define FIND_REG_INC_NOTE(insn, reg) 0
+#define FIND_REG_INC_NOTE(INSN, REG) 0
#endif
/* Indicate whether the machine has any sort of auto increment addressing.
/* Determine if the insn is a PHI node. */
#define PHI_NODE_P(X) \
- (X && GET_CODE (X) == INSN \
+ ((X) && GET_CODE (X) == INSN \
&& GET_CODE (PATTERN (X)) == SET \
&& GET_CODE (SET_SRC (PATTERN (X))) == PHI)
\f
/* In expmed.c */
extern int ceil_log2 PARAMS ((unsigned HOST_WIDE_INT));
-#define plus_constant(X,C) plus_constant_wide (X, (HOST_WIDE_INT) (C))
+#define plus_constant(X, C) plus_constant_wide ((X), (HOST_WIDE_INT) (C))
/* In builtins.c */
extern rtx expand_builtin_expect_jump PARAMS ((tree, rtx, rtx));