*/
static void analyse_irg_entity_usage(ir_graph *irg) {
ir_type *ft = get_irg_frame_type(irg);
- ir_node *irg_frame, *args, *arg;
+ ir_node *irg_frame;
int i, j, k, static_link_arg;
/* set initial state to not_taken, as this is the "smallest" state */
static_link_arg = 0;
for (i = get_class_n_members(ft) - 1; i >= 0; --i) {
ir_entity *ent = get_class_member(ft, i);
+ ir_graph *inner_irg;
+ ir_node *args;
- if (is_method_entity(ent)) {
- ir_graph *inner_irg = get_entity_irg(ent);
- ir_node *args;
+ if (! is_method_entity(ent))
+ continue;
+ if (get_entity_peculiarity(ent) == peculiarity_description)
+ 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);
+ inner_irg = get_entity_irg(ent);
+ 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);
- if (get_Proj_proj(arg) == static_link_arg) {
- for (k = get_irn_n_outs(arg) - 1; k >= 0; --k) {
- ir_node *succ = get_irn_out(arg, k);
+ if (get_Proj_proj(arg) == static_link_arg) {
+ for (k = get_irn_n_outs(arg) - 1; k >= 0; --k) {
+ ir_node *succ = get_irn_out(arg, k);
- if (is_Sel(succ)) {
- ir_entity *entity = get_Sel_entity(succ);
+ if (is_Sel(succ)) {
+ ir_entity *entity = get_Sel_entity(succ);
- if (get_entity_owner(entity) == ft) {
- /* found an access to the outer frame */
- ir_entity_usage flags;
+ if (get_entity_owner(entity) == ft) {
+ /* found an access to the outer frame */
+ ir_entity_usage flags;
- flags = get_entity_usage(entity);
- flags |= determine_entity_usage(succ, entity);
- set_entity_usage(entity, flags);
- }
+ flags = get_entity_usage(entity);
+ flags |= determine_entity_usage(succ, entity);
+ set_entity_usage(entity, flags);
}
}
}
if (! is_method_entity(ent))
continue;
+ if (get_entity_peculiarity(ent) == peculiarity_description)
+ continue;
/*
* FIXME: find the number of the static link parameter
for (i = get_class_n_members(frame_tp) - 1; i >= 0; --i) {
ir_entity *ent = get_class_member(frame_tp, i);
- if (is_method_entity(ent)) {
+ if (is_method_entity(ent) && get_entity_peculiarity(ent) != peculiarity_description) {
ir_graph *irg = get_entity_irg(ent);
irg_walk_graph(irg, NULL, lower_outer_frame_sels, env);