summaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-09-17 22:18:59 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-09-17 22:18:59 +0000
commite6fd097efca2e3f76d3fe51c55cd124998b7fd42 (patch)
tree746da641a670a45baec442090a6d5de50aee6389 /gcc/function.h
parentba7166773bd7a4d1e0da5bad0a61c20fac3bef78 (diff)
downloadgcc-e6fd097efca2e3f76d3fe51c55cd124998b7fd42.tar.gz
functiion.h (struct function): Add x_whole_function_mode_p.
* functiion.h (struct function): Add x_whole_function_mode_p. (retrofit_block): Declare. * function.c (retrofit_block): New function. (identify_blocks): Add assertions. Allow an incomplete set of block notes if we're still generating code for the function. * integrate.c: Include loop.h. (expand_inline_function): Call find_loop_tree_blocks to map block notes to blocks when in whole-function mode. Use retrofit_block to insert new BLOCKs for the inlined function, rather than insert_block. * stmt.c (expand_fixup): Likewise. Don't use pushlevel/polevel. * Makefile.in (integrate.o): Depend on loop.h. From-SVN: r29487
Diffstat (limited to 'gcc/function.h')
-rw-r--r--gcc/function.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/function.h b/gcc/function.h
index 0d70b7d6aed..80053d20c30 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -293,6 +293,12 @@ struct function
/* Number of function calls seen so far in current function. */
int x_function_call_count;
+ /* 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
+ commences. */
+ int x_whole_function_mode_p;
+
/* List (chain of TREE_LIST) of LABEL_DECLs for all nonlocal labels
(labels to which there can be nonlocal gotos from nested functions)
in this function. */
@@ -521,6 +527,8 @@ extern struct function *outer_function_chain;
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 PROTO((tree, rtx));
+/* Insert a new BLOCK at an appropriate place in the block tree. */
+extern void retrofit_block PROTO((tree, rtx));
/* Return size needed for stack frame based on slots so far allocated.
This size counts from zero. It is not rounded to STACK_BOUNDARY;