OSDN Git Service

* stor-layout.c (layout_decl): Unshare size expressions copied
[pf3gnuchains/gcc-fork.git] / gcc / function.h
index 64c02d0..1c32c9f 100644 (file)
@@ -40,7 +40,6 @@ struct sequence_stack GTY(())
   /* First and last insns in the chain of the saved sequence.  */
   rtx first;
   rtx last;
-  tree sequence_rtl_expr;
   struct sequence_stack *next;
 };
 
@@ -66,16 +65,11 @@ struct emit_status GTY(())
   /* The ends of the doubly-linked chain of rtl for the current function.
      Both are reset to null at the start of rtl generation for the function.
 
-     start_sequence saves both of these on `sequence_stack' along with
-     `sequence_rtl_expr' and then starts a new, nested sequence of insns.  */
+     start_sequence saves both of these on `sequence_stack' and then starts
+     a new, nested sequence of insns.  */
   rtx x_first_insn;
   rtx x_last_insn;
 
-  /* RTL_EXPR within which the current sequence will be placed.  Use to
-     prevent reuse of any temporaries within the sequence until after the
-     RTL_EXPR is emitted.  */
-  tree sequence_rtl_expr;
-
   /* Stack of pending (incomplete) sequences saved by `start_sequence'.
      Each element describes one pending sequence.
      The main insn-chain is saved in the last element of the chain,
@@ -103,16 +97,12 @@ struct emit_status GTY(())
     regno_pointer_align;
 
   /* Indexed by pseudo register number, gives the rtx for that pseudo.
-     Allocated in parallel with regno_pointer_align.
-
-     Note MEM expressions can appear in this array due to the actions
-     of put_var_into_stack.  */
+     Allocated in parallel with regno_pointer_align.  */
   rtx * GTY ((length ("%h.x_reg_rtx_no"))) x_regno_reg_rtx;
 };
 
 /* For backward compatibility... eventually these should all go away.  */
 #define reg_rtx_no (cfun->emit->x_reg_rtx_no)
-#define seq_rtl_expr (cfun->emit->sequence_rtl_expr)
 #define regno_reg_rtx (cfun->emit->x_regno_reg_rtx)
 #define seq_stack (cfun->emit->sequence_stack)
 
@@ -157,9 +147,6 @@ struct expr_status GTY(())
 
   /* List of labels that must never be deleted.  */
   rtx x_forced_labels;
-
-  /* Postincrements that still need to be expanded.  */
-  rtx x_pending_chain;
 };
 
 #define pending_stack_adjust (cfun->expr->x_pending_stack_adjust)
@@ -167,7 +154,6 @@ struct expr_status GTY(())
 #define saveregs_value (cfun->expr->x_saveregs_value)
 #define apply_args_value (cfun->expr->x_apply_args_value)
 #define forced_labels (cfun->expr->x_forced_labels)
-#define pending_chain (cfun->expr->x_pending_chain)
 #define stack_pointer_delta (cfun->expr->x_stack_pointer_delta)
 
 /* This structure can save all the important global and static variables
@@ -176,7 +162,6 @@ struct expr_status GTY(())
 struct function GTY(())
 {
   struct eh_status *eh;
-  struct stmt_status *stmt;
   struct expr_status *expr;
   struct emit_status *emit;
   struct varasm_status *varasm;
@@ -187,6 +172,7 @@ struct function GTY(())
      inlining */
   tree saved_tree;
   tree saved_args;
+  tree saved_static_chain_decl;
 
   /* For function.c.  */
 
@@ -250,17 +236,10 @@ struct function GTY(())
      on machines which require execution of the epilogue on all returns.  */
   rtx x_naked_return_label;
 
-  /* List (chain of EXPR_LISTs) of pseudo-regs of SAVE_EXPRs.
-     So we can mark them all live at the end of the function, if nonopt.  */
-  rtx x_save_expr_regs;
-
   /* List (chain of EXPR_LISTs) of all stack slots in this function.
      Made for the sake of unshare_all_rtl.  */
   rtx x_stack_slot_list;
 
-  /* Chain of all RTL_EXPRs that have insns in them.  */
-  tree x_rtl_expr_chain;
-
   /* Place after which to insert the tail_recursion_label if we need one.  */
   rtx x_tail_recursion_reentry;
 
@@ -275,7 +254,7 @@ struct function GTY(())
      If stack grows up, this is the address for the next slot.  */
   HOST_WIDE_INT x_frame_offset;
 
-  /* A VAR_DECL that should contain the static chain for this function.
+  /* A PARM_DECL that should contain the static chain for this function.
      It will be initialized at the beginning of the function.  */
   tree static_chain_decl;
 
@@ -287,16 +266,6 @@ struct function GTY(())
   /* Insn after which register parms and SAVE_EXPRs are born, if nonopt.  */
   rtx x_parm_birth_insn;
 
-  /* 1 + last pseudo register number possibly used for loading a copy
-     of a parameter of this function.  */
-  unsigned int x_max_parm_reg;
-
-  /* Vector indexed by REGNO, containing location on stack in which
-     to put the parm which is nominally in pseudo register REGNO,
-     if we discover that that parm must go in the stack.  The highest
-     element in this vector is one less than MAX_PARM_REG, above.  */
-  rtx * GTY ((length ("%h.x_max_parm_reg"))) x_parm_reg_stack_loc;
-
   /* List of all used temporaries allocated, by level.  */
   struct varray_head_tag * GTY((param_is (struct temp_slot))) x_used_temp_slots;
 
@@ -306,15 +275,6 @@ struct function GTY(())
   /* Current nesting level for temporaries.  */
   int x_temp_slot_level;
 
-  /* Current nesting level for variables in a block.  */
-  int x_var_temp_slot_level;
-
-  /* When temporaries are created by TARGET_EXPRs, they are created at
-     this level of temp_slot_level, so that they can remain allocated
-     until no longer needed.  CLEANUP_POINT_EXPRs define the lifetime
-     of TARGET_EXPRs.  */
-  int x_target_temp_slot_level;
-
   /* This slot is initialized as 0 and is added to
      during the nested function.  */
   struct var_refs_queue *fixup_var_refs_queue;
@@ -335,9 +295,9 @@ struct function GTY(())
   /* tm.h can use this to store whatever it likes.  */
   struct machine_function * GTY ((maybe_undef)) machine;
   /* The largest alignment of slot allocated on the stack.  */
-  int stack_alignment_needed;
+  unsigned int stack_alignment_needed;
   /* Preferred alignment of the end of stack frame.  */
-  int preferred_stack_boundary;
+  unsigned int preferred_stack_boundary;
   /* Set when the call to function itself has been emit.  */
   bool recursive_call_emit;
   /* Set when the tail call has been produced.  */
@@ -397,9 +357,6 @@ struct function GTY(())
   /* Nonzero if function being compiled can call setjmp.  */
   unsigned int calls_setjmp : 1;
 
-  /* Nonzero if function being compiled can call longjmp.  */
-  unsigned int calls_longjmp : 1;
-
   /* Nonzero if function being compiled can call alloca,
      either as a subroutine or builtin.  */
   unsigned int calls_alloca : 1;
@@ -489,7 +446,6 @@ extern int trampolines_created;
 #define current_function_returns_pointer (cfun->returns_pointer)
 #define current_function_calls_setjmp (cfun->calls_setjmp)
 #define current_function_calls_alloca (cfun->calls_alloca)
-#define current_function_calls_longjmp (cfun->calls_longjmp)
 #define current_function_calls_eh_return (cfun->calls_eh_return)
 #define current_function_has_computed_jump (cfun->has_computed_jump)
 #define current_function_contains_functions (cfun->contains_functions)
@@ -512,22 +468,16 @@ extern int trampolines_created;
 #define current_function_has_nonlocal_label (cfun->has_nonlocal_label)
 #define current_function_has_nonlocal_goto (cfun->has_nonlocal_goto)
 
-#define max_parm_reg (cfun->x_max_parm_reg)
-#define parm_reg_stack_loc (cfun->x_parm_reg_stack_loc)
 #define return_label (cfun->x_return_label)
 #define naked_return_label (cfun->x_naked_return_label)
-#define save_expr_regs (cfun->x_save_expr_regs)
 #define stack_slot_list (cfun->x_stack_slot_list)
 #define parm_birth_insn (cfun->x_parm_birth_insn)
 #define frame_offset (cfun->x_frame_offset)
 #define tail_recursion_reentry (cfun->x_tail_recursion_reentry)
 #define arg_pointer_save_area (cfun->x_arg_pointer_save_area)
-#define rtl_expr_chain (cfun->x_rtl_expr_chain)
 #define used_temp_slots (cfun->x_used_temp_slots)
 #define avail_temp_slots (cfun->x_avail_temp_slots)
 #define temp_slot_level (cfun->x_temp_slot_level)
-#define target_temp_slot_level (cfun->x_target_temp_slot_level)
-#define var_temp_slot_level (cfun->x_var_temp_slot_level)
 #define nonlocal_labels (cfun->x_nonlocal_labels)
 #define nonlocal_goto_handler_labels (cfun->x_nonlocal_goto_handler_labels)
 
@@ -562,7 +512,6 @@ extern HOST_WIDE_INT get_func_frame_size (struct function *);
 extern struct machine_function * (*init_machine_status) (void);
 
 /* Save and restore status information for a nested function.  */
-extern void restore_emit_status (struct function *);
 extern void free_after_parsing (struct function *);
 extern void free_after_compilation (struct function *);
 
@@ -587,4 +536,9 @@ extern void init_function_once (void);
 
 extern void do_warn_unused_parameter (tree);
 
+extern bool pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode,
+                              tree, bool);
+extern bool reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode,
+                                    tree, bool);
+
 #endif  /* GCC_FUNCTION_H */