From: Michael Beck Date: Thu, 3 Mar 2011 20:39:27 +0000 (+0100) Subject: Iterate over all segment types when detecting static allocated objects in rta. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=63c3d0ec75a683d72bd00f830ea00f3cb0e76443;p=libfirm Iterate over all segment types when detecting static allocated objects in rta. --- diff --git a/ir/ana/rta.c b/ir/ana/rta.c index dafef1d79..ea0ae3fb6 100644 --- a/ir/ana/rta.c +++ b/ir/ana/rta.c @@ -263,9 +263,8 @@ static size_t stats(void) */ static void init_tables(void) { - ir_type *tp; - size_t i, n; - ir_graph *irg; + ir_graph *irg; + ir_segment_t segment; _live_classes = XMALLOC(pset_new_t); pset_new_init(_live_classes); @@ -278,24 +277,18 @@ static void init_tables(void) pset_new_insert(_live_graphs, irg); } - /* Find static allocated classes */ - tp = get_glob_type(); - n = get_class_n_members(tp); - for (i = 0; i < n; ++i) { - ir_type *member_type = get_entity_type(get_class_member(tp, i)); - if (is_Class_type(member_type)) - pset_new_insert(_live_classes, member_type); - } + /* Find static allocated classes in all segments */ + for (segment = IR_SEGMENT_FIRST; segment <= IR_SEGMENT_LAST; ++segment) { + ir_type *tp = get_segment_type(segment); + size_t n = get_compound_n_members(tp); + size_t i; - tp = get_tls_type(); - n = get_class_n_members(tp); - for (i = 0; i < n; ++i) { - ir_type *member_type = get_entity_type(get_class_member(tp, i)); - if (is_Class_type(member_type)) - pset_new_insert(_live_classes, member_type); + for (i = 0; i < n; ++i) { + ir_type *member_type = get_entity_type(get_compound_member(tp, i)); + if (is_Class_type(member_type)) + pset_new_insert(_live_classes, member_type); + } } - - /** @FIXME: add constructors/destructors */ } /*