OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / function.h
index 5783c22..08d438a 100644 (file)
@@ -1,5 +1,6 @@
 /* Structure for saving state for a nested function.
-   Copyright (C) 1989, 92-99, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -94,7 +95,7 @@ struct emit_status
   /* Line number and source file of the last line-number NOTE emitted.
      This is used to avoid generating duplicates.  */
   int x_last_linenum;
-  char *x_last_filename;
+  const char *x_last_filename;
 
   /* A vector indexed by pseudo reg number.  The allocated length
      of this vector is regno_pointer_flag_length.  Since this
@@ -107,7 +108,7 @@ struct emit_status
   /* Indexed by pseudo register number, if nonzero gives the known alignment
      for that pseudo (if regno_pointer_flag is set).
      Allocated in parallel with regno_pointer_flag.  */
-  char *regno_pointer_align;
+  unsigned char *regno_pointer_align;
 
   /* Indexed by pseudo register number, gives the rtx for that pseudo.
      Allocated in parallel with regno_pointer_flag.  */
@@ -146,6 +147,12 @@ struct expr_status
      NO_DEFER_POP and OK_DEFER_POP.  */
   int x_inhibit_defer_pop;
 
+  /* If PREFERRED_STACK_BOUNDARY and PUSH_ROUNDING are defined, the stack
+     boundary can be momentairly unaligned while pushing the arguments.
+     Record the delta since last aligned boundary here in order to get
+     stack alignment in the nested function calls working right.  */
+  int x_stack_pointer_delta;
+
   /* Nonzero means __builtin_saveregs has already been done in this function.
      The value is the pseudoreg containing the value __builtin_saveregs
      returned.  */
@@ -167,6 +174,7 @@ struct expr_status
 #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
    describing the status of the current function.  */
@@ -297,7 +305,7 @@ struct function
 
   /* Nonzero if this function is being processed in function-at-a-time
      mode.  In other words, if all tree structure for this function,
-     including the BLOCK tree is created, before RTL generation
+     including the BLOCK tree, is created before RTL generation
      commences.  */
   int x_whole_function_mode_p;
 
@@ -393,7 +401,7 @@ struct function
 
   /* 1 + last pseudo register number possibly used for loading a copy
      of a parameter of this function. */
-  int x_max_parm_reg;
+  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,
@@ -542,10 +550,15 @@ struct function *find_function_data PARAMS ((tree));
 /* Pointer to chain of `struct function' for containing functions.  */
 extern struct function *outer_function_chain;
 
-/* Put all this function's BLOCK nodes into a vector and return it.
-   Also store in each NOTE for the beginning or end of a block
-   the index of that block in the vector.  */
-extern void identify_blocks PARAMS ((tree, rtx));
+/* Set NOTE_BLOCK for each block note in the current function.  */
+extern void identify_blocks PARAMS ((void));
+
+/* Identify BLOCKs referenced by more than one NOTE_INSN_BLOCK_{BEG,END},
+   and create duplicate blocks.  */
+extern void reorder_blocks PARAMS ((void));
+
+/* Set BLOCK_NUMBER for all the blocks in FN.  */
+extern void number_blocks PARAMS ((tree));
 
 /* Return size needed for stack frame based on slots so far allocated.
    This size counts from zero.  It is not rounded to STACK_BOUNDARY;