function.h (struct rtl_data): Remove struct and accessor macros.
authorAndrew MacLeod <amacleod@redhat.com>
Wed, 17 Jun 2015 18:53:03 +0000 (18:53 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Wed, 17 Jun 2015 18:53:03 +0000 (18:53 +0000)
2015-06-17  Andrew MacLeod  <amacleod@redhat.com>

* function.h (struct rtl_data): Remove struct and accessor macros.
* emit-rtl.h (struct rtl_data): Relocate to here.
* Makefile.in (GTFILES): Add emit-rtl.h.
* df-core.c: Include emit-rtl.h.
* genattrtab.c: Likewise.
* genconditions.c: Likewise.
* genpreds.c: Likewise.
* genrecog.c: Likewise.
* regcprop.c: Likewise.
* resource.c: Likewise.
* sched-rgn.c: Likewise.
* config/aarch64/cortex-a57-fma-steering.c: Likewise.
* config/i386/winnt.c: Likewise.

From-SVN: r224573

14 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/config/aarch64/cortex-a57-fma-steering.c
gcc/config/i386/winnt.c
gcc/df-core.c
gcc/emit-rtl.h
gcc/function.h
gcc/genattrtab.c
gcc/genconditions.c
gcc/genpreds.c
gcc/genrecog.c
gcc/regcprop.c
gcc/resource.c
gcc/sched-rgn.c

index 919a6216ee0747e00f6cff786c2ceb21e7707728..bddcd0f5606e4e6da1668e65361e28c50fa1769f 100644 (file)
@@ -1,3 +1,19 @@
+2015-06-17  Andrew MacLeod  <amacleod@redhat.com>
+
+       * function.h (struct rtl_data): Remove struct and accessor macros.
+       * emit-rtl.h (struct rtl_data): Relocate to here.
+       * Makefile.in (GTFILES): Add emit-rtl.h.
+       * df-core.c: Include emit-rtl.h.
+       * genattrtab.c: Likewise.
+       * genconditions.c: Likewise.
+       * genpreds.c: Likewise.
+       * genrecog.c: Likewise.
+       * regcprop.c: Likewise.
+       * resource.c: Likewise.
+       * sched-rgn.c: Likewise.
+       * config/aarch64/cortex-a57-fma-steering.c: Likewise.
+       * config/i386/winnt.c: Likewise.
+
 2015-06-17  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/66429
index 3d149389a5efa063a6f76bc24c7f3cec7bb34c86..5742694b05055c5b1f2bb45618aa1b1555546c05 100644 (file)
@@ -2321,7 +2321,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
   $(srcdir)/dwarf2cfi.c \
   $(srcdir)/dwarf2out.c \
   $(srcdir)/tree-vect-generic.c \
-  $(srcdir)/dojump.c \
+  $(srcdir)/dojump.c $(srcdir)/emit-rtl.h \
   $(srcdir)/emit-rtl.c $(srcdir)/except.h $(srcdir)/explow.c $(srcdir)/expr.c \
   $(srcdir)/expr.h \
   $(srcdir)/function.c $(srcdir)/except.c \
index 12d44f7b6b98cfbbeecf533dfbbd5e24d782a762..648a88c70d4103ca2ea8ba81e0734737a0d0b9ca 100644 (file)
@@ -38,6 +38,7 @@
 #include "df.h"
 #include "target.h"
 #include "rtl.h"
+#include "emit-rtl.h"
 #include "context.h"
 #include "tree-pass.h"
 #include "regrename.h"
index 1fd90f51c1cf87cd91da01f35cb3e38a5bb1789f..39249879b62f5e68a38b2622d6526dc14bee0be8 100644 (file)
@@ -40,6 +40,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "except.h"
 #include "predict.h"
 #include "function.h"
+#include "emit-rtl.h"
 #include "dominance.h"
 #include "cfg.h"
 #include "cfgrtl.h"
index e2fd9d21588bd9b3a3b3d5007d1f09d518578dbb..68d18497133b6d7173d67f2e05b02113dd69bc7f 100644 (file)
@@ -398,6 +398,7 @@ are write-only operations.
 #include "tree-pass.h"
 #include "params.h"
 #include "cfgloop.h"
+#include "emit-rtl.h"
 
 static void *df_get_bb_info (struct dataflow *, unsigned int);
 static void df_set_bb_info (struct dataflow *, unsigned int, void *);
index 7dce7ebef11809ddd7e310d4abd3ecce2e6db78b..cccb1acbdcb6515bfc44d0bd8053c436499b364f 100644 (file)
@@ -20,6 +20,264 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_EMIT_RTL_H
 #define GCC_EMIT_RTL_H
 
+struct temp_slot;
+typedef struct temp_slot *temp_slot_p;
+
+/* Datastructures maintained for currently processed function in RTL form.  */
+struct GTY(()) rtl_data {
+  struct expr_status expr;
+  struct emit_status emit;
+  struct varasm_status varasm;
+  struct incoming_args args;
+  struct function_subsections subsections;
+  struct rtl_eh eh;
+
+  /* For function.c  */
+
+  /* # of bytes of outgoing arguments.  If ACCUMULATE_OUTGOING_ARGS is
+     defined, the needed space is pushed by the prologue.  */
+  int outgoing_args_size;
+
+  /* If nonzero, an RTL expression for the location at which the current
+     function returns its result.  If the current function returns its
+     result in a register, current_function_return_rtx will always be
+     the hard register containing the result.  */
+  rtx return_rtx;
+  /* If nonxero, an RTL expression for the lcoation at which the current
+     function returns bounds for its result.  */
+  rtx return_bnd;
+
+  /* Vector of initial-value pairs.  Each pair consists of a pseudo
+     register of approprite mode that stores the initial value a hard
+     register REGNO, and that hard register itself.  */
+  /* ??? This could be a VEC but there is currently no way to define an
+        opaque VEC type.  */
+  struct initial_value_struct *hard_reg_initial_vals;
+
+  /* A variable living at the top of the frame that holds a known value.
+     Used for detecting stack clobbers.  */
+  tree stack_protect_guard;
+
+  /* List (chain of INSN_LIST) of labels heading the current handlers for
+     nonlocal gotos.  */
+  rtx_insn_list *x_nonlocal_goto_handler_labels;
+
+  /* Label that will go on function epilogue.
+     Jumping to this label serves as a "return" instruction
+     on machines which require execution of the epilogue on all returns.  */
+  rtx_code_label *x_return_label;
+
+  /* Label that will go on the end of function epilogue.
+     Jumping to this label serves as a "naked return" instruction
+     on machines which require execution of the epilogue on all returns.  */
+  rtx_code_label *x_naked_return_label;
+
+  /* List (chain of EXPR_LISTs) of all stack slots in this function.
+     Made for the sake of unshare_all_rtl.  */
+  rtx_expr_list *x_stack_slot_list;
+
+  /* List of empty areas in the stack frame.  */
+  struct frame_space *frame_space_list;
+
+  /* Place after which to insert the tail_recursion_label if we need one.  */
+  rtx_note *x_stack_check_probe_note;
+
+  /* Location at which to save the argument pointer if it will need to be
+     referenced.  There are two cases where this is done: if nonlocal gotos
+     exist, or if vars stored at an offset from the argument pointer will be
+     needed by inner routines.  */
+  rtx x_arg_pointer_save_area;
+
+  /* Dynamic Realign Argument Pointer used for realigning stack.  */
+  rtx drap_reg;
+
+  /* Offset to end of allocated area of stack frame.
+     If stack grows down, this is the address of the last stack slot allocated.
+     If stack grows up, this is the address for the next slot.  */
+  HOST_WIDE_INT x_frame_offset;
+
+  /* Insn after which register parms and SAVE_EXPRs are born, if nonopt.  */
+  rtx_insn *x_parm_birth_insn;
+
+  /* List of all used temporaries allocated, by level.  */
+  vec<temp_slot_p, va_gc> *x_used_temp_slots;
+
+  /* List of available temp slots.  */
+  struct temp_slot *x_avail_temp_slots;
+
+  /* Current nesting level for temporaries.  */
+  int x_temp_slot_level;
+
+  /* The largest alignment needed on the stack, including requirement
+     for outgoing stack alignment.  */
+  unsigned int stack_alignment_needed;
+
+  /* Preferred alignment of the end of stack frame, which is preferred
+     to call other functions.  */
+  unsigned int preferred_stack_boundary;
+
+  /* The minimum alignment of parameter stack.  */
+  unsigned int parm_stack_boundary;
+
+  /* The largest alignment of slot allocated on the stack.  */
+  unsigned int max_used_stack_slot_alignment;
+
+  /* The stack alignment estimated before reload, with consideration of
+     following factors:
+     1. Alignment of local stack variables (max_used_stack_slot_alignment)
+     2. Alignment requirement to call other functions
+        (preferred_stack_boundary)
+     3. Alignment of non-local stack variables but might be spilled in
+        local stack.  */
+  unsigned int stack_alignment_estimated;
+
+  /* For reorg.  */
+
+  /* Nonzero if function being compiled called builtin_return_addr or
+     builtin_frame_address with nonzero count.  */
+  bool accesses_prior_frames;
+
+  /* Nonzero if the function calls __builtin_eh_return.  */
+  bool calls_eh_return;
+
+  /* Nonzero if function saves all registers, e.g. if it has a nonlocal
+     label that can reach the exit block via non-exceptional paths. */
+  bool saves_all_registers;
+
+  /* Nonzero if function being compiled has nonlocal gotos to parent
+     function.  */
+  bool has_nonlocal_goto;
+
+  /* Nonzero if function being compiled has an asm statement.  */
+  bool has_asm_statement;
+
+  /* This bit is used by the exception handling logic.  It is set if all
+     calls (if any) are sibling calls.  Such functions do not have to
+     have EH tables generated, as they cannot throw.  A call to such a
+     function, however, should be treated as throwing if any of its callees
+     can throw.  */
+  bool all_throwers_are_sibcalls;
+
+  /* Nonzero if stack limit checking should be enabled in the current
+     function.  */
+  bool limit_stack;
+
+  /* Nonzero if profiling code should be generated.  */
+  bool profile;
+
+  /* Nonzero if the current function uses the constant pool.  */
+  bool uses_const_pool;
+
+  /* Nonzero if the current function uses pic_offset_table_rtx.  */
+  bool uses_pic_offset_table;
+
+  /* Nonzero if the current function needs an lsda for exception handling.  */
+  bool uses_eh_lsda;
+
+  /* Set when the tail call has been produced.  */
+  bool tail_call_emit;
+
+  /* Nonzero if code to initialize arg_pointer_save_area has been emitted.  */
+  bool arg_pointer_save_area_init;
+
+  /* Nonzero if current function must be given a frame pointer.
+     Set in reload1.c or lra-eliminations.c if anything is allocated
+     on the stack there.  */
+  bool frame_pointer_needed;
+
+  /* When set, expand should optimize for speed.  */
+  bool maybe_hot_insn_p;
+
+  /* Nonzero if function stack realignment is needed.  This flag may be
+     set twice: before and after reload.  It is set before reload wrt
+     stack alignment estimation before reload.  It will be changed after
+     reload if by then criteria of stack realignment is different.
+     The value set after reload is the accurate one and is finalized.  */
+  bool stack_realign_needed;
+
+  /* Nonzero if function stack realignment is tried.  This flag is set
+     only once before reload.  It affects register elimination.  This
+     is used to generate DWARF debug info for stack variables.  */
+  bool stack_realign_tried;
+
+  /* Nonzero if function being compiled needs dynamic realigned
+     argument pointer (drap) if stack needs realigning.  */
+  bool need_drap;
+
+  /* Nonzero if function stack realignment estimation is done, namely
+     stack_realign_needed flag has been set before reload wrt estimated
+     stack alignment info.  */
+  bool stack_realign_processed;
+
+  /* Nonzero if function stack realignment has been finalized, namely
+     stack_realign_needed flag has been set and finalized after reload.  */
+  bool stack_realign_finalized;
+
+  /* True if dbr_schedule has already been called for this function.  */
+  bool dbr_scheduled_p;
+
+  /* True if current function can not throw.  Unlike
+     TREE_NOTHROW (current_function_decl) it is set even for overwritable
+     function where currently compiled version of it is nothrow.  */
+  bool nothrow;
+
+  /* True if we performed shrink-wrapping for the current function.  */
+  bool shrink_wrapped;
+
+  /* Nonzero if function being compiled doesn't modify the stack pointer
+     (ignoring the prologue and epilogue).  This is only valid after
+     pass_stack_ptr_mod has run.  */
+  bool sp_is_unchanging;
+
+  /* Nonzero if function being compiled doesn't contain any calls
+     (ignoring the prologue and epilogue).  This is set prior to
+     local register allocation and is valid for the remaining
+     compiler passes.  */
+  bool is_leaf;
+
+  /* Nonzero if the function being compiled is a leaf function which only
+     uses leaf registers.  This is valid after reload (specifically after
+     sched2) and is useful only if the port defines LEAF_REGISTERS.  */
+  bool uses_only_leaf_regs;
+
+  /* Nonzero if the function being compiled has undergone hot/cold partitioning
+     (under flag_reorder_blocks_and_partition) and has at least one cold
+     block.  */
+  bool has_bb_partition;
+
+  /* Nonzero if the function being compiled has completed the bb reordering
+     pass.  */
+  bool bb_reorder_complete;
+
+  /* Like regs_ever_live, but 1 if a reg is set or clobbered from an
+     asm.  Unlike regs_ever_live, elements of this array corresponding
+     to eliminable regs (like the frame pointer) are set if an asm
+     sets them.  */
+  HARD_REG_SET asm_clobbers;
+};
+
+#define return_label (crtl->x_return_label)
+#define naked_return_label (crtl->x_naked_return_label)
+#define stack_slot_list (crtl->x_stack_slot_list)
+#define parm_birth_insn (crtl->x_parm_birth_insn)
+#define frame_offset (crtl->x_frame_offset)
+#define stack_check_probe_note (crtl->x_stack_check_probe_note)
+#define arg_pointer_save_area (crtl->x_arg_pointer_save_area)
+#define used_temp_slots (crtl->x_used_temp_slots)
+#define avail_temp_slots (crtl->x_avail_temp_slots)
+#define temp_slot_level (crtl->x_temp_slot_level)
+#define nonlocal_goto_handler_labels (crtl->x_nonlocal_goto_handler_labels)
+#define frame_pointer_needed (crtl->frame_pointer_needed)
+#define stack_realign_fp (crtl->stack_realign_needed && !crtl->need_drap)
+#define stack_realign_drap (crtl->stack_realign_needed && crtl->need_drap)
+
+extern GTY(()) struct rtl_data x_rtl;
+
+/* Accessor to RTL datastructures.  We keep them statically allocated now since
+   we never keep multiple functions.  For threaded compiler we might however
+   want to do differently.  */
+#define crtl (&x_rtl)
+
 /* Return whether two MEM_ATTRs are equal.  */
 bool mem_attrs_eq_p (const struct mem_attrs *, const struct mem_attrs *);
 
index 81d76bf55e83ae252322672b15735be1eee4968a..54fea4b2c680e4d2e3bec0eb13f4ecc0d67f599f 100644 (file)
@@ -153,8 +153,6 @@ struct GTY(()) rtl_eh {
 #define stack_pointer_delta (crtl->expr.x_stack_pointer_delta)
 
 struct gimple_df;
-struct temp_slot;
-typedef struct temp_slot *temp_slot_p;
 struct call_site_record_d;
 struct dw_fde_node;
 
@@ -223,261 +221,6 @@ struct GTY(()) frame_space
   HOST_WIDE_INT length;
 };
 
-/* Datastructures maintained for currently processed function in RTL form.  */
-struct GTY(()) rtl_data {
-  struct expr_status expr;
-  struct emit_status emit;
-  struct varasm_status varasm;
-  struct incoming_args args;
-  struct function_subsections subsections;
-  struct rtl_eh eh;
-
-  /* For function.c  */
-
-  /* # of bytes of outgoing arguments.  If ACCUMULATE_OUTGOING_ARGS is
-     defined, the needed space is pushed by the prologue.  */
-  int outgoing_args_size;
-
-  /* If nonzero, an RTL expression for the location at which the current
-     function returns its result.  If the current function returns its
-     result in a register, current_function_return_rtx will always be
-     the hard register containing the result.  */
-  rtx return_rtx;
-  /* If nonxero, an RTL expression for the lcoation at which the current
-     function returns bounds for its result.  */
-  rtx return_bnd;
-
-  /* Vector of initial-value pairs.  Each pair consists of a pseudo
-     register of approprite mode that stores the initial value a hard
-     register REGNO, and that hard register itself.  */
-  /* ??? This could be a VEC but there is currently no way to define an
-        opaque VEC type.  */
-  struct initial_value_struct *hard_reg_initial_vals;
-
-  /* A variable living at the top of the frame that holds a known value.
-     Used for detecting stack clobbers.  */
-  tree stack_protect_guard;
-
-  /* List (chain of INSN_LIST) of labels heading the current handlers for
-     nonlocal gotos.  */
-  rtx_insn_list *x_nonlocal_goto_handler_labels;
-
-  /* Label that will go on function epilogue.
-     Jumping to this label serves as a "return" instruction
-     on machines which require execution of the epilogue on all returns.  */
-  rtx_code_label *x_return_label;
-
-  /* Label that will go on the end of function epilogue.
-     Jumping to this label serves as a "naked return" instruction
-     on machines which require execution of the epilogue on all returns.  */
-  rtx_code_label *x_naked_return_label;
-
-  /* List (chain of EXPR_LISTs) of all stack slots in this function.
-     Made for the sake of unshare_all_rtl.  */
-  rtx_expr_list *x_stack_slot_list;
-
-  /* List of empty areas in the stack frame.  */
-  struct frame_space *frame_space_list;
-
-  /* Place after which to insert the tail_recursion_label if we need one.  */
-  rtx_note *x_stack_check_probe_note;
-
-  /* Location at which to save the argument pointer if it will need to be
-     referenced.  There are two cases where this is done: if nonlocal gotos
-     exist, or if vars stored at an offset from the argument pointer will be
-     needed by inner routines.  */
-  rtx x_arg_pointer_save_area;
-
-  /* Dynamic Realign Argument Pointer used for realigning stack.  */
-  rtx drap_reg;
-
-  /* Offset to end of allocated area of stack frame.
-     If stack grows down, this is the address of the last stack slot allocated.
-     If stack grows up, this is the address for the next slot.  */
-  HOST_WIDE_INT x_frame_offset;
-
-  /* Insn after which register parms and SAVE_EXPRs are born, if nonopt.  */
-  rtx_insn *x_parm_birth_insn;
-
-  /* List of all used temporaries allocated, by level.  */
-  vec<temp_slot_p, va_gc> *x_used_temp_slots;
-
-  /* List of available temp slots.  */
-  struct temp_slot *x_avail_temp_slots;
-
-  /* Current nesting level for temporaries.  */
-  int x_temp_slot_level;
-
-  /* The largest alignment needed on the stack, including requirement
-     for outgoing stack alignment.  */
-  unsigned int stack_alignment_needed;
-
-  /* Preferred alignment of the end of stack frame, which is preferred
-     to call other functions.  */
-  unsigned int preferred_stack_boundary;
-
-  /* The minimum alignment of parameter stack.  */
-  unsigned int parm_stack_boundary;
-
-  /* The largest alignment of slot allocated on the stack.  */
-  unsigned int max_used_stack_slot_alignment;
-
-  /* The stack alignment estimated before reload, with consideration of
-     following factors:
-     1. Alignment of local stack variables (max_used_stack_slot_alignment)
-     2. Alignment requirement to call other functions
-        (preferred_stack_boundary)
-     3. Alignment of non-local stack variables but might be spilled in
-        local stack.  */
-  unsigned int stack_alignment_estimated;
-
-  /* For reorg.  */
-
-  /* Nonzero if function being compiled called builtin_return_addr or
-     builtin_frame_address with nonzero count.  */
-  bool accesses_prior_frames;
-
-  /* Nonzero if the function calls __builtin_eh_return.  */
-  bool calls_eh_return;
-
-  /* Nonzero if function saves all registers, e.g. if it has a nonlocal
-     label that can reach the exit block via non-exceptional paths. */
-  bool saves_all_registers;
-
-  /* Nonzero if function being compiled has nonlocal gotos to parent
-     function.  */
-  bool has_nonlocal_goto;
-
-  /* Nonzero if function being compiled has an asm statement.  */
-  bool has_asm_statement;
-
-  /* This bit is used by the exception handling logic.  It is set if all
-     calls (if any) are sibling calls.  Such functions do not have to
-     have EH tables generated, as they cannot throw.  A call to such a
-     function, however, should be treated as throwing if any of its callees
-     can throw.  */
-  bool all_throwers_are_sibcalls;
-
-  /* Nonzero if stack limit checking should be enabled in the current
-     function.  */
-  bool limit_stack;
-
-  /* Nonzero if profiling code should be generated.  */
-  bool profile;
-
-  /* Nonzero if the current function uses the constant pool.  */
-  bool uses_const_pool;
-
-  /* Nonzero if the current function uses pic_offset_table_rtx.  */
-  bool uses_pic_offset_table;
-
-  /* Nonzero if the current function needs an lsda for exception handling.  */
-  bool uses_eh_lsda;
-
-  /* Set when the tail call has been produced.  */
-  bool tail_call_emit;
-
-  /* Nonzero if code to initialize arg_pointer_save_area has been emitted.  */
-  bool arg_pointer_save_area_init;
-
-  /* Nonzero if current function must be given a frame pointer.
-     Set in reload1.c or lra-eliminations.c if anything is allocated
-     on the stack there.  */
-  bool frame_pointer_needed;
-
-  /* When set, expand should optimize for speed.  */
-  bool maybe_hot_insn_p;
-
-  /* Nonzero if function stack realignment is needed.  This flag may be
-     set twice: before and after reload.  It is set before reload wrt
-     stack alignment estimation before reload.  It will be changed after
-     reload if by then criteria of stack realignment is different.
-     The value set after reload is the accurate one and is finalized.  */
-  bool stack_realign_needed;
-
-  /* Nonzero if function stack realignment is tried.  This flag is set
-     only once before reload.  It affects register elimination.  This
-     is used to generate DWARF debug info for stack variables.  */
-  bool stack_realign_tried;
-
-  /* Nonzero if function being compiled needs dynamic realigned
-     argument pointer (drap) if stack needs realigning.  */
-  bool need_drap;
-
-  /* Nonzero if function stack realignment estimation is done, namely
-     stack_realign_needed flag has been set before reload wrt estimated
-     stack alignment info.  */
-  bool stack_realign_processed;
-
-  /* Nonzero if function stack realignment has been finalized, namely
-     stack_realign_needed flag has been set and finalized after reload.  */
-  bool stack_realign_finalized;
-
-  /* True if dbr_schedule has already been called for this function.  */
-  bool dbr_scheduled_p;
-
-  /* True if current function can not throw.  Unlike
-     TREE_NOTHROW (current_function_decl) it is set even for overwritable
-     function where currently compiled version of it is nothrow.  */
-  bool nothrow;
-
-  /* True if we performed shrink-wrapping for the current function.  */
-  bool shrink_wrapped;
-
-  /* Nonzero if function being compiled doesn't modify the stack pointer
-     (ignoring the prologue and epilogue).  This is only valid after
-     pass_stack_ptr_mod has run.  */
-  bool sp_is_unchanging;
-
-  /* Nonzero if function being compiled doesn't contain any calls
-     (ignoring the prologue and epilogue).  This is set prior to
-     local register allocation and is valid for the remaining
-     compiler passes.  */
-  bool is_leaf;
-
-  /* Nonzero if the function being compiled is a leaf function which only
-     uses leaf registers.  This is valid after reload (specifically after
-     sched2) and is useful only if the port defines LEAF_REGISTERS.  */
-  bool uses_only_leaf_regs;
-
-  /* Nonzero if the function being compiled has undergone hot/cold partitioning
-     (under flag_reorder_blocks_and_partition) and has at least one cold
-     block.  */
-  bool has_bb_partition;
-
-  /* Nonzero if the function being compiled has completed the bb reordering
-     pass.  */
-  bool bb_reorder_complete;
-
-  /* Like regs_ever_live, but 1 if a reg is set or clobbered from an
-     asm.  Unlike regs_ever_live, elements of this array corresponding
-     to eliminable regs (like the frame pointer) are set if an asm
-     sets them.  */
-  HARD_REG_SET asm_clobbers;
-};
-
-#define return_label (crtl->x_return_label)
-#define naked_return_label (crtl->x_naked_return_label)
-#define stack_slot_list (crtl->x_stack_slot_list)
-#define parm_birth_insn (crtl->x_parm_birth_insn)
-#define frame_offset (crtl->x_frame_offset)
-#define stack_check_probe_note (crtl->x_stack_check_probe_note)
-#define arg_pointer_save_area (crtl->x_arg_pointer_save_area)
-#define used_temp_slots (crtl->x_used_temp_slots)
-#define avail_temp_slots (crtl->x_avail_temp_slots)
-#define temp_slot_level (crtl->x_temp_slot_level)
-#define nonlocal_goto_handler_labels (crtl->x_nonlocal_goto_handler_labels)
-#define frame_pointer_needed (crtl->frame_pointer_needed)
-#define stack_realign_fp (crtl->stack_realign_needed && !crtl->need_drap)
-#define stack_realign_drap (crtl->stack_realign_needed && crtl->need_drap)
-
-extern GTY(()) struct rtl_data x_rtl;
-
-/* Accessor to RTL datastructures.  We keep them statically allocated now since
-   we never keep multiple functions.  For threaded compiler we might however
-   want to do differently.  */
-#define crtl (&x_rtl)
-
 struct GTY(()) stack_usage
 {
   /* # of bytes of static stack space allocated by the function.  */
@@ -905,12 +648,8 @@ extern void expand_function_start (tree);
 extern void expand_dummy_function_end (void);
 
 extern void thread_prologue_and_epilogue_insns (void);
-
-#ifdef RTX_CODE
 extern void diddle_return_value (void (*)(rtx, void*), void*);
 extern void clobber_return_register (void);
-#endif
-
 extern void do_warn_unused_parameter (tree);
 extern void expand_function_end (void);
 extern rtx get_arg_pointer_save_area (void);
index 2beb7eea19e8a3d6f68d19fa38e474db704a017f..2ec02c366eb619e957a791e9fda1968dd89ee79d 100644 (file)
@@ -5127,6 +5127,7 @@ write_header (FILE *outf)
   fprintf (outf, "#include \"toplev.h\"\n");
   fprintf (outf, "#include \"flags.h\"\n");
   fprintf (outf, "#include \"function.h\"\n");
+  fprintf (outf, "#include \"emit-rtl.h\"\n");
   fprintf (outf, "#include \"predict.h\"\n");
   fprintf (outf, "\n");
   fprintf (outf, "#define operands recog_data.operand\n\n");
index c1925fe2440fbb073fee6cbe48289f6997dd9cd5..89d273898a69163ace2eb02ce4156e45e46e4528 100644 (file)
@@ -73,6 +73,7 @@ write_header (void)
 #include \"tm_p.h\"\n\
 #include \"hard-reg-set.h\"\n\
 #include \"function.h\"\n\
+#include \"emit-rtl.h\"\n\
 \n\
 /* Fake - insn-config.h doesn't exist yet.  */\n\
 #define MAX_RECOG_OPERANDS 10\n\
index 4f1efb54e9f91d73212c732998031a0b5f7a3e66..9a4c6a61539f7849122c2f1d449fd8456a6e886f 100644 (file)
@@ -1558,6 +1558,7 @@ write_insn_preds_c (void)
 #include \"diagnostic-core.h\"\n\
 #include \"reload.h\"\n\
 #include \"regs.h\"\n\
+#include \"emit-rtl.h\"\n\
 #include \"tm-constrs.h\"\n");
 
   FOR_ALL_PREDICATES (p)
index d8432283915aba9eddb8713301c288ecdf473bd5..d62ba9f114a38c2e52a90a7b6c07177cdb6bbdde 100644 (file)
@@ -4191,6 +4191,7 @@ write_header (void)
 #include \"hard-reg-set.h\"\n\
 #include \"input.h\"\n\
 #include \"function.h\"\n\
+#include \"emit-rtl.h\"\n\
 #include \"insn-config.h\"\n\
 #include \"recog.h\"\n\
 #include \"output.h\"\n\
index 5326838b92a508c28b6784efe6d7822ae4bc8452..cca495e0952d5b0eb7463bd7ead998d12dcc9942 100644 (file)
@@ -40,6 +40,7 @@
 #include "tree-pass.h"
 #include "df.h"
 #include "rtl-iter.h"
+#include "emit-rtl.h"
 
 /* The following code does forward propagation of hard register copies.
    The object is to eliminate as many dependencies as possible, so that
index 1f2f6b8e4f6ab24f4ef3774c7c63178b5bf4927d..37b53a2daa3aa460d97853b71ed8871ad2288bae 100644 (file)
@@ -38,6 +38,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-attr.h"
 #include "params.h"
 #include "df.h"
+#include "emit-rtl.h"
 
 /* This structure is used to record liveness information at the targets or
    fallthrough insns of branches.  We will most likely need the information
index b3ece760f698e0101541d64cf98ecae4788180e7..ccdde706ea7866434c35d36deb0f4915e358d28f 100644 (file)
@@ -70,6 +70,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "tree-pass.h"
 #include "dbgcnt.h"
+#include "emit-rtl.h"
 
 #ifdef INSN_SCHEDULING