summaryrefslogtreecommitdiff
path: root/gcc/ada/trans.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-22 18:51:24 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-22 18:51:24 +0000
commitbc97b18f58bcfb95ae1f0bd395b95b55efec1c05 (patch)
tree0cb8336d9cec3f258c1db3f86494f5469b7908b8 /gcc/ada/trans.c
parentdcce4b90c2469031bd32e8f050a33ec07b7e8f9d (diff)
downloadgcc-bc97b18f58bcfb95ae1f0bd395b95b55efec1c05.tar.gz
2004-12-22 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* trans.c (mark_visited): Set TYPE_SIZES_GIMPLIFIED. 2004-12-22 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> * tree.h (TYPE_SIZES_GIMPLIFIED): New. * function.c (gimplify_parm_type): Don't gimplify type if already done. * gimplify.c (gimplify_decl_expr): Likewise. (gimplify_type_sizes): Set TYPE_SIZES_GIMPLIFIED. Examine nested array types. 2004-12-22 Richard Henderson <rth@redhat.com> * gimplify.c (eval_save_expr): Remove. (gimplify_one_sizepos): Unshare expr before gimplifying. * stor-layout.c (variable_size): Revert 2004-12-19 change. (layout_decl): Revert 2004-12-18 change. (layout_type): Revert 2004-12-21 change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92495 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/trans.c')
-rw-r--r--gcc/ada/trans.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c
index e3d5f47e023..0db17093811 100644
--- a/gcc/ada/trans.c
+++ b/gcc/ada/trans.c
@@ -4283,9 +4283,10 @@ add_decl_expr (tree gnu_decl, Entity_Id gnat_entity)
}
}
-/* Utility function to mark nodes with TREE_VISITED. Called from walk_tree.
- We use this to indicate all variable sizes and positions in global types
- may not be shared by any subprogram. */
+/* Utility function to mark nodes with TREE_VISITED and types as having their
+ sized gimplified. Called from walk_tree. We use this to indicate all
+ variable sizes and positions in global types may not be shared by any
+ subprogram. */
static tree
mark_visited (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
@@ -4298,6 +4299,9 @@ mark_visited (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
else if (!TYPE_IS_DUMMY_P (*tp))
TREE_VISITED (*tp) = 1;
+ if (TYPE_P (*tp))
+ TYPE_SIZES_GIMPLIFIED (*tp) = 1;
+
return NULL_TREE;
}