- Copyright (C) 1987, 1993 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1993, 1994, 1995 Free Software Foundation, Inc.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+/* Indexed by N; says whether a pseudo register N was ever used
+ within a SUBREG that changes the size of the reg. Some machines prohibit
+ such objects to be in certain (usually floating-point) registers. */
+
+extern char *reg_changes_size;
+
/* Get the number of consecutive words required to hold pseudo-reg N. */
#define PSEUDO_REGNO_SIZE(N) \
/* Get the number of consecutive words required to hold pseudo-reg N. */
#define PSEUDO_REGNO_SIZE(N) \
+/* For each hard register, the widest mode object that it can contain.
+ This will be a MODE_INT mode if the register can hold integers. Otherwise
+ it will be a MODE_FLOAT or a MODE_CC mode, whichever is valid for the
+ register. */
+
+extern enum machine_mode reg_raw_mode[FIRST_PSEUDO_REGISTER];
+
/* Vector indexed by regno; gives uid of first insn using that reg.
This is computed by reg_scan for use by cse and loop.
It is sometimes adjusted for subsequent changes during loop,
/* Vector indexed by regno; gives uid of first insn using that reg.
This is computed by reg_scan for use by cse and loop.
It is sometimes adjusted for subsequent changes during loop,
+/* Similar, but includes insns that mention the reg in their notes. */
+
+extern int *regno_last_note_uid;
+
+/* This is reset to LAST_VIRTUAL_REGISTER + 1 at the start of each function.
+ After rtl generation, it is 1 plus the largest register number used. */
+
+extern int reg_rtx_no;
+
/* Vector indexed by regno; contains 1 for a register is considered a pointer.
Reloading, etc. will use a pointer register rather than a non-pointer
as the base register in an address, when there is a choice of two regs. */
extern char *regno_pointer_flag;
#define REGNO_POINTER_FLAG(REGNO) regno_pointer_flag[REGNO]
/* Vector indexed by regno; contains 1 for a register is considered a pointer.
Reloading, etc. will use a pointer register rather than a non-pointer
as the base register in an address, when there is a choice of two regs. */
extern char *regno_pointer_flag;
#define REGNO_POINTER_FLAG(REGNO) regno_pointer_flag[REGNO]
/* List made of EXPR_LIST rtx's which gives pairs of pseudo registers
that have to go in the same hard reg. */
/* List made of EXPR_LIST rtx's which gives pairs of pseudo registers
that have to go in the same hard reg. */
+/* On most machines a register class is likely to be spilled if it
+ only has one register. */
+#ifndef CLASS_LIKELY_SPILLED_P
+#define CLASS_LIKELY_SPILLED_P(CLASS) (reg_class_size[(int) (CLASS)] == 1)
+#endif
+