OSDN Git Service

* configure.ac: Correct makeinfo version check.
[pf3gnuchains/gcc-fork.git] / gcc / function.h
index bc3378b..27bde1c 100644 (file)
@@ -6,7 +6,7 @@ This file is part of GCC.
 
 GCC is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
+Software Foundation; either version 3, or (at your option) any later
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,23 +15,15 @@ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.
 
 You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING.  If not, write to the Free
-Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA.  */
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
 
 #ifndef GCC_FUNCTION_H
 #define GCC_FUNCTION_H
+
 #include "tree.h"
 #include "hashtab.h"
 
-struct var_refs_queue GTY(())
-{
-  rtx modified;
-  enum machine_mode promoted_mode;
-  int unsignedp;
-  struct var_refs_queue *next;
-};
-
 /* 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,
@@ -44,14 +36,6 @@ struct sequence_stack GTY(())
   rtx last;
   struct sequence_stack *next;
 };
-
-/* Stack of single obstacks.  */
-
-struct simple_obstack_stack
-{
-  struct obstack *obstack;
-  struct simple_obstack_stack *next;
-};
 \f
 struct emit_status GTY(())
 {
@@ -293,10 +277,6 @@ struct function GTY(())
   /* List of available temp slots.  */
   struct temp_slot *x_avail_temp_slots;
 
-  /* This slot is initialized as 0 and is added to
-     during the nested function.  */
-  struct var_refs_queue *fixup_var_refs_queue;
-
   /* Current nesting level for temporaries.  */
   int x_temp_slot_level;
 
@@ -375,6 +355,7 @@ struct function GTY(())
      function.  */
   unsigned int va_list_fpr_size : 8;
 
+
   /* How commonly executed the function is.  Initialized during branch
      probabilities pass.  */
   ENUM_BITFIELD (function_frequency) function_frequency : 2;
@@ -387,9 +368,6 @@ struct function GTY(())
      return the address of where it has put a structure value.  */
   unsigned int returns_pcc_struct : 1;
 
-  /* Nonzero if the current function returns a pointer type.  */
-  unsigned int returns_pointer : 1;
-
   /* Nonzero if function being compiled can call setjmp.  */
   unsigned int calls_setjmp : 1;
 
@@ -404,16 +382,21 @@ struct function GTY(())
   /* Nonzero if the function calls __builtin_eh_return.  */
   unsigned int calls_eh_return : 1;
 
+
   /* Nonzero if function being compiled receives nonlocal gotos
      from nested functions.  */
   unsigned int has_nonlocal_label : 1;
 
-  /* Nonzero if function calls builtin_unwind_init.  */
-  unsigned int calls_unwind_init : 1;
-  
+  /* Nonzero if function saves all registers, e.g. if it has a nonlocal
+     label that can reach the exit block via non-exceptional paths. */
+  unsigned int saves_all_registers : 1;
+
   /* Nonzero if function being compiled has nonlocal gotos to parent
      function.  */
   unsigned int has_nonlocal_goto : 1;
+  
+  /* Nonzero if function being compiled has an asm statement.  */
+  unsigned int has_asm_statement : 1;
 
   /* Nonzero if the current function is a thunk, i.e., a lightweight
      function implemented by the output_mi_thunk hook) that just
@@ -435,6 +418,7 @@ struct function GTY(())
      function.  */
   unsigned int limit_stack : 1;
 
+
   /* Nonzero if current function uses stdarg.h or equivalent.  */
   unsigned int stdarg : 1;
 
@@ -464,13 +448,14 @@ struct function GTY(())
   /* Set when the call to function itself has been emit.  */
   unsigned int recursive_call_emit : 1;
 
+
   /* Set when the tail call has been produced.  */
   unsigned int tail_call_emit : 1;
 
   /* FIXME tuples: This bit is temporarily here to mark when a
      function has been gimplified, so we can make sure we're not
      creating non GIMPLE tuples after gimplification.  */
-  unsigned gimplified : 1;
+  unsigned int gimplified : 1;
 };
 
 /* If va_list_[gf]pr_size is set to this, it means we don't know how
@@ -490,11 +475,15 @@ extern int virtuals_instantiated;
 /* Nonzero if at least one trampoline has been created.  */
 extern int trampolines_created;
 
+/* cfun shouldn't be set directly; use one of these functions instead.  */
+extern void set_cfun (struct function *new_cfun);
+extern void push_cfun (struct function *new_cfun);
+extern void pop_cfun (void);
+
 /* For backward compatibility... eventually these should all go away.  */
 #define current_function_pops_args (cfun->pops_args)
 #define current_function_returns_struct (cfun->returns_struct)
 #define current_function_returns_pcc_struct (cfun->returns_pcc_struct)
-#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_accesses_prior_frames (cfun->accesses_prior_frames)
@@ -515,8 +504,9 @@ extern int trampolines_created;
 #define current_function_uses_const_pool (cfun->uses_const_pool)
 #define current_function_epilogue_delay_list (cfun->epilogue_delay_list)
 #define current_function_has_nonlocal_label (cfun->has_nonlocal_label)
-#define current_function_calls_unwind_init (cfun->calls_unwind_init)
+#define current_function_saves_all_registers (cfun->saves_all_registers)
 #define current_function_has_nonlocal_goto (cfun->has_nonlocal_goto)
+#define current_function_has_asm_statement (cfun->has_asm_statement)
 
 #define return_label (cfun->x_return_label)
 #define naked_return_label (cfun->x_naked_return_label)
@@ -531,6 +521,8 @@ extern int trampolines_created;
 #define nonlocal_goto_handler_labels (cfun->x_nonlocal_goto_handler_labels)
 #define rtl_df (cfun->df)
 #define current_loops (cfun->x_current_loops)
+#define dom_computed (cfun->cfg->x_dom_computed)
+#define n_bbs_in_dom_tree (cfun->cfg->x_n_bbs_in_dom_tree)
 #define VALUE_HISTOGRAMS(fun) (fun)->value_histograms
 
 /* Given a function decl for a containing function,