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;
/* 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.
+ /* 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. */
+ 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;
};
#define return_label (crtl->x_return_label)
/* Points to the FUNCTION_DECL of this function. */
tree decl;
- /* Function containing this function, if any. */
- struct function *outer;
-
/* 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;
/* Last statement uid. */
int last_stmt_uid;
+ /* Line number of the start of the function for debugging purposes. */
+ location_t function_start_locus;
+
/* Line number of the end of the function. */
location_t function_end_locus;
unsigned int dont_save_pending_sizes_p : 1;
unsigned int after_inlining : 1;
+ unsigned int always_inline_functions_inlined : 1;
/* Fields below this point are not set for abstract functions; see
allocate_struct_function. */
push_cfun or set_cfun. */
#define cfun (cfun + 0)
-/* Pointer to chain of `struct function' for containing functions. */
-extern GTY(()) struct function *outer_function_chain;
-
/* Nonzero if we've already converted virtual regs to hard regs. */
extern int virtuals_instantiated;
#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,
- return the `struct function' for it. */
-struct function *find_function_data (tree);
-
/* Identify BLOCKs referenced by more than one NOTE_INSN_BLOCK_{BEG,END},
and create duplicate blocks. */
extern void reorder_blocks (void);