rtl.h: (HARD_FRAME_POINTER_REGNUM): New macro.
authorDoug Evans <dje@gnu.org>
Fri, 24 Sep 1993 19:36:23 +0000 (19:36 +0000)
committerDoug Evans <dje@gnu.org>
Fri, 24 Sep 1993 19:36:23 +0000 (19:36 +0000)
* rtl.h: (HARD_FRAME_POINTER_REGNUM): New macro.
(hard_frame_pointer_rtx): New variable

From-SVN: r5449

gcc/rtl.h

index c65afba9f73e040526ce1d4f50ff10cf80af303a..fa91347b000a12ea7551e25e427ff58417ebe750 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -826,6 +826,7 @@ extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];
    go through these unique rtx objects.  */
 extern rtx stack_pointer_rtx;
 extern rtx frame_pointer_rtx;
+extern rtx hard_frame_pointer_rtx;
 extern rtx arg_pointer_rtx;
 extern rtx pic_offset_table_rtx;
 extern rtx struct_value_rtx;
@@ -833,6 +834,16 @@ extern rtx struct_value_incoming_rtx;
 extern rtx static_chain_rtx;
 extern rtx static_chain_incoming_rtx;
 
+/* If HARD_FRAME_POINTER_REGNUM is defined, then a special dummy reg
+   is used to represent the frame pointer.  This is because the
+   hard frame pointer and the automatic variables are separated by an amount
+   that cannot be determined until after register allocation.  We can assume
+   that in this case ELIMINABLE_REGS will be defined, one action of which
+   will be to eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM. */
+#ifndef HARD_FRAME_POINTER_REGNUM
+#define HARD_FRAME_POINTER_REGNUM FRAME_POINTER_REGNUM
+#endif
+
 /* Virtual registers are used during RTL generation to refer to locations into
    the stack frame when the actual location isn't known until RTL generation
    is complete.  The routine instantiate_virtual_regs replaces these with