- for (i = get_irn_n_outs(irg_frame) - 1; i >= 0; --i) {
- ir_node *succ = get_irn_out(irg_frame, i);
- ir_address_taken_state state;
+ for (j = get_irn_n_outs(irg_frame) - 1; j >= 0; --j) {
+ ir_node *succ = get_irn_out(irg_frame, j);
+ ir_entity *entity;
+ unsigned flags;
+
+ if (!is_Sel(succ))
+ continue;
+
+ entity = get_Sel_entity(succ);
+ flags = get_entity_usage(entity);
+ flags |= determine_entity_usage(succ, entity);
+ set_entity_usage(entity, (ir_entity_usage) flags);
+ }
+
+ /* check inner functions accessing outer frame */
+ static_link_arg = 0;
+ for (i = 0, n = get_class_n_members(ft); i < n; ++i) {
+ ir_entity *ent = get_class_member(ft, i);
+ ir_graph *inner_irg;
+ ir_node *args;
+
+ if (! is_method_entity(ent))
+ continue;
+
+ inner_irg = get_entity_irg(ent);
+ if (inner_irg == NULL)
+ continue;
+
+ assure_irg_outs(inner_irg);
+ args = get_irg_args(inner_irg);
+ for (j = get_irn_n_outs(args) - 1; j >= 0; --j) {
+ ir_node *arg = get_irn_out(args, j);