summaryrefslogtreecommitdiffstats
path: root/gcc/gengtype.c
diff options
context:
space:
mode:
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2005-03-13 18:09:55 +0000
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2005-03-13 18:09:55 +0000
commit1bb42c87b63905031e7cf9e0af434627f882b8f8 (patch)
treee850ce1ca545eaad896454198fdeff35370ff00f /gcc/gengtype.c
parent42bdde4b89a9232370e8091cf85021d476c2c1ec (diff)
downloadppe42-gcc-1bb42c87b63905031e7cf9e0af434627f882b8f8.tar.gz
ppe42-gcc-1bb42c87b63905031e7cf9e0af434627f882b8f8.zip
* ggc-zone.c: Rewritten.
* alloc-pool.c (dump_alloc_pool_statistics): Don't print statistics if there are none. * configure.ac: Define GGC_ZONE for --with-gc=zone. * config.in: Regenerated. * configure: Regenerated. * gentype.c (write_types_process_field, write_func_for_structure): Pass new argument to gt_pch_note_object. * ggc-common.c (struct ptr_data): Add TYPE. (gt_pch_note_object): Take TYPE argument and save it. (call_count): Update call to ggc_pch_count_object. (call_alloc): Update call to ggc_pch_alloc_object. (gt_pch_save): Call ggc_pch_prepare_write after paddng the PCH file. * ggc-none.c (rtl_zone, garbage_zone, ggc_alloc_zone_stat): Delete. * ggc-page.c (rtl_zone, tree_zone, garbage_zone) (ggc_alloc_zone_stat): Delete. (ggc_pch_count_object, ggc_pch_alloc_object): Add TYPE argument. * ggc.h (gt_pch_note_object, ggc_pch_count_object) (ggc_pch_alloc_object): Update prototypes. (garbage_zone): Delete. (tree_zone, rtl_zone, ggc_alloc_zone_stat, ggc_alloc_zone): Move to GGC_ZONE conditional. Update. Change tree_zone and rtl_zone into pointers. (tree_id_zone): New variable. (ggc_alloc_cleared_zone): Remove unused. (ggc_alloc_zone): Define. (ggc_alloc_rtvec, ggc_alloc_tree): Update to use ggc_alloc_zone. * rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Use ggc_alloc_zone_stat. * stringpool.c (gt_pch_n_S): Update call to gt_pch_note_object. * tree.c (copy_node_stat, make_tree_binfo_stat, make_tree_vec_stat) (tree_cons_stat, build1_stat): Update call to ggc_alloc_zone_stat. (make_node_stat): Likewise. Use tree_id_zone. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96381 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gengtype.c')
-rw-r--r--gcc/gengtype.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index e3de8225949..0ff0c116e62 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -1928,6 +1928,21 @@ write_types_process_field (type_p f, const struct walk_type_data *d)
}
else
oprintf (d->of, ", gt_%sa_%s", wtd->param_prefix, d->prev_val[0]);
+
+ if (f->u.p->kind == TYPE_PARAM_STRUCT
+ && f->u.p->u.s.line.file != NULL)
+ {
+ oprintf (d->of, ", gt_e_");
+ output_mangled_typename (d->of, f);
+ }
+ else if (UNION_OR_STRUCT_P (f)
+ && f->u.p->u.s.line.file != NULL)
+ {
+ oprintf (d->of, ", gt_ggc_e_");
+ output_mangled_typename (d->of, f);
+ }
+ else
+ oprintf (d->of, ", gt_types_enum_last");
}
oprintf (d->of, ");\n");
if (d->reorder_fn && wtd->reorder_note_routine)
@@ -2035,6 +2050,21 @@ write_func_for_structure (type_p orig_s, type_p s, type_p *param,
{
oprintf (d.of, ", x, gt_%s_", wtd->param_prefix);
output_mangled_typename (d.of, orig_s);
+
+ if (orig_s->u.p->kind == TYPE_PARAM_STRUCT
+ && orig_s->u.p->u.s.line.file != NULL)
+ {
+ oprintf (d.of, ", gt_e_");
+ output_mangled_typename (d.of, orig_s);
+ }
+ else if (UNION_OR_STRUCT_P (orig_s)
+ && orig_s->u.s.line.file != NULL)
+ {
+ oprintf (d.of, ", gt_ggc_e_");
+ output_mangled_typename (d.of, orig_s);
+ }
+ else
+ oprintf (d.of, ", gt_types_enum_last");
}
oprintf (d.of, "))\n");
}
@@ -2045,6 +2075,21 @@ write_func_for_structure (type_p orig_s, type_p s, type_p *param,
{
oprintf (d.of, ", xlimit, gt_%s_", wtd->param_prefix);
output_mangled_typename (d.of, orig_s);
+
+ if (orig_s->u.p->kind == TYPE_PARAM_STRUCT
+ && orig_s->u.p->u.s.line.file != NULL)
+ {
+ oprintf (d.of, ", gt_e_");
+ output_mangled_typename (d.of, orig_s);
+ }
+ else if (UNION_OR_STRUCT_P (orig_s)
+ && orig_s->u.s.line.file != NULL)
+ {
+ oprintf (d.of, ", gt_ggc_e_");
+ output_mangled_typename (d.of, orig_s);
+ }
+ else
+ oprintf (d.of, ", gt_types_enum_last");
}
oprintf (d.of, "))\n");
oprintf (d.of, " xlimit = (");
@@ -2070,6 +2115,21 @@ write_func_for_structure (type_p orig_s, type_p s, type_p *param,
{
oprintf (d.of, ", xprev, gt_%s_", wtd->param_prefix);
output_mangled_typename (d.of, orig_s);
+
+ if (orig_s->u.p->kind == TYPE_PARAM_STRUCT
+ && orig_s->u.p->u.s.line.file != NULL)
+ {
+ oprintf (d.of, ", gt_e_");
+ output_mangled_typename (d.of, orig_s);
+ }
+ else if (UNION_OR_STRUCT_P (orig_s)
+ && orig_s->u.s.line.file != NULL)
+ {
+ oprintf (d.of, ", gt_ggc_e_");
+ output_mangled_typename (d.of, orig_s);
+ }
+ else
+ oprintf (d.of, ", gt_types_enum_last");
}
oprintf (d.of, ");\n");
oprintf (d.of, " }\n");
OpenPOWER on IntegriCloud