summaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2004-04-12 21:25:55 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2004-04-12 21:25:55 +0000
commitab7083b087473d1769d3b41c7788bc9b13bd871c (patch)
treefc6c6b14412060a9d6d90d3f45c768a4648b7f4b /gcc/tree.h
parent26b2607c247c694960db8c54ca04f12aceb131e3 (diff)
downloadgcc-ab7083b087473d1769d3b41c7788bc9b13bd871c.tar.gz
* c-decl.c (finish_decl): Make a decl_stmt for a variable-sized
TYPE_DECL. * c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL. * stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN. * stor-layout.c (variable_size): Don't check for MINUS_EXPR. Use skip_simple_arithmetic to find SAVE_EXPR. (force_type_save_exprs, force_type_save_exprs_1): New functions. * tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE): Properly chain multiple pointers. (copy_tree_r): Copy a TYPE_DECL. * tree.c (variably_modified_type_p): Add some missing tests and make some other minor changes. * tree.h (force_type_save_exprs): New declaration. * gcc.c-torture/execute/20040411-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80629 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 34e6f45f4f2..12dec421f67 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -2768,6 +2768,11 @@ extern tree substitute_placeholder_in_expr (tree, tree);
extern tree variable_size (tree);
+/* Given a type T, force elaboration of any SAVE_EXPRs used in the definition
+ of that type. */
+
+extern void force_type_save_exprs (tree);
+
/* stabilize_reference (EXP) returns a reference equivalent to EXP
but it can be used multiple times
and only evaluate the subexpressions once. */