/* Register Transfer Language (RTL) definitions for GNU C-Compiler
- Copyright (C) 1987, 91-95, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1987, 91-96, 1997 Free Software Foundation, Inc.
This file is part of GNU CC.
In a REG, nonzero means this reg refers to the return value
of the current function. */
unsigned integrated : 1;
+ /* Nonzero if this rtx is related to the call frame, either changing how
+ we compute the frame address or saving and restoring registers in
+ the prologue and epilogue. */
+ unsigned frame_related : 1;
/* The first element of the operands of this rtx.
The number of operands and their types are controlled
by the `code' field, according to rtl.def. */
#define RTX_INTEGRATED_P(RTX) ((RTX)->integrated)
#define RTX_UNCHANGING_P(RTX) ((RTX)->unchanging)
+#define RTX_FRAME_RELATED_P(RTX) ((RTX)->frame_related)
/* RTL vector. These appear inside RTX's when there is a need
for a variable number of things. The principle use is inside
not needed past this insn). If REG is set in this insn, the REG_DEAD
note may, but need not, be omitted.
REG_INC means that the REG is autoincremented or autodecremented.
- REG_EQUIV describes the insn as a whole; it says that the
- insn sets a register to a constant value or to be equivalent to
- a memory address. If the
- register is spilled to the stack then the constant value
- should be substituted for it. The contents of the REG_EQUIV
+ REG_EQUIV describes the insn as a whole; it says that the insn
+ sets a register to a constant value or to be equivalent to a memory
+ address. If the register is spilled to the stack then the constant
+ value should be substituted for it. The contents of the REG_EQUIV
is the constant value or memory address, which may be different
- from the source of the SET although it has the same value.
+ from the source of the SET although it has the same value. A
+ REG_EQUIV note may also appear on an insn which copies a register
+ parameter to a pseudo-register, if there is a memory address which
+ could be used to hold that pseudo-register throughout the function.
REG_EQUAL is like REG_EQUIV except that the destination
is only momentarily equal to the specified rtx. Therefore, it
cannot be used for substitution; but it can be used for cse.
i.e. the point just after all of the parms have been moved into
their homes, etc. */
#define NOTE_INSN_FUNCTION_BEG -13
+/* These note where exception handling regions begin and end. */
+#define NOTE_INSN_EH_REGION_BEG -14
+#define NOTE_INSN_EH_REGION_END -15
#if 0 /* These are not used, and I don't know what they were for. --rms. */
extern rtx copy_most_rtx PROTO((rtx, rtx));
extern rtx replace_rtx PROTO((rtx, rtx, rtx));
extern rtvec gen_rtvec_v PROTO((int, rtx *));
+extern rtvec gen_rtvec_vv PROTO((int, rtunion *));
extern rtx gen_reg_rtx PROTO((enum machine_mode));
extern rtx gen_label_rtx PROTO((void));
extern rtx gen_inline_header_rtx PROTO((rtx, rtx, int, int, int, int,