- entity *ent = get_irg_entity (graph);
-
- /* delete the ir_graph data */
- remove_irp_irg (graph);
- /* remove reference to the graph */
- set_entity_irg (ent, NULL);
- /* find the implementation (graph) from *some* superclass: */
- graph = get_implementing_graph (ent);
-
- if (TRUE || (NULL == graph)) { /* always pretend to be 'abstract'; let the others figure this out */
- /* nothing to inherit! pretend we're abstract */
- force_description (ent, ent);
- } else {
- /* pretend that we inherit the implementation (graph) from some superclass: */
- set_entity_peculiarity (ent, peculiarity_inherited);
-
- exchange (get_atomic_ent_value (ent),
- get_atomic_ent_value (get_irg_ent(graph)));
+ ir_type *tp;
+ int i, n;
+
+ _live_classes = eset_create ();
+ _live_graphs = eset_create ();
+
+ if (get_irp_main_irg ()) {
+ eset_insert (_live_graphs, get_irp_main_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))
+ eset_insert(_live_classes, member_type);
+ }
+
+ tp = get_tls_type();
+ n = get_struct_n_members(tp);
+ for (i = 0; i < n; ++i) {
+ ir_type *member_type = get_entity_type(get_struct_member(tp, i));
+ if (is_Class_type(member_type))
+ eset_insert(_live_classes, member_type);