* Author: Michael Beck
* Created:
* CVS-ID: $Id$
- * Copyright: (c) 1998-2004 Universität Karlsruhe
+ * Copyright: (c) 1998-2004 Universit�t Karlsruhe
* Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
*/
#include "irnode_t.h"
ptr = get_Call_ptr(call);
if (get_irn_op(ptr) == op_SymConst && get_SymConst_kind(ptr) == symconst_addr_ent) {
-
ent = get_SymConst_entity(ptr);
- if ((get_entity_additional_properties(ent) & irg_const_function) == 0)
+ if ((get_entity_additional_properties(ent) & mtp_property_const) == 0)
return;
++ctx->n_calls_removed_SymConst;
}
return;
for (i = 0; i < n_callees; ++i) {
ent = get_Call_callee(call, i);
- if ((get_entity_additional_properties(ent) & irg_const_function) == 0)
- return;
+ if (ent == unknown_entity) {
+ /* we don't know which entity is called here */
+ return;
+ }
+ if ((get_entity_additional_properties(ent) & mtp_property_const) == 0)
+ return;
}
++ctx->n_calls_removed_Sel;
}
change = 0;
- if (get_irg_additional_properties(irg) & irg_const_function) {
+ if (get_irg_additional_properties(irg) & mtp_property_const) {
/* already marked as a const function */
++num_pure;
}
if (mode_M != get_irn_mode(mem))
continue;
- change = mem != gforce_runet_irg_initial_mem(irg);
+ change = mem != get_irg_initial_mem(irg);
if (change)
break;
}
if (! change) {
/* no memory changes found, it's a const function */
- set_irg_additional_property(irg, irg_const_function);
+ set_irg_additional_property(irg, mtp_property_const);
++num_pure;
}
}
ir_graph *irg = get_irp_irg(i);
/* no need to do this on const functions */
- if ((get_irg_additional_properties(irg) & irg_const_function) == 0) {
+ if ((get_irg_additional_properties(irg) & mtp_property_const) == 0) {
ctx.changed = 0;
irg_walk_graph(irg, NULL, rem_mem_from_const_fkt_calls, &ctx);
}
}
}
-
-/**
- * Walker: Walks over all graphs and evaluates calls with
- * constant arguments.
- * Currently used only for non-virtual calls.
- */
-static void eval_calls(ir_node *call, void *env)
-{
- ir_node *ptr, *param;
- entity *ent;
- ir_graph *irg;
- int i;
-
- if (get_irn_op(call) != op_Call)
- return;
-
- ptr = get_Call_ptr(call);
-
- if (get_irn_op(ptr) != op_SymConst)
- return;
-
- if (get_SymConst_kind(ptr) != symconst_addr_ent)
- return;
-
- ent = get_SymConst_entity(ptr);
- irg = get_entity_irg(ent);
-
- if (! irg)
- return;
-
- /* ok, we found the called graph here, check for const args */
- for (i = get_Call_n_params(call) - 1; i >= 0; --i) {
- param = get_Call_param(call, i);
-
- if (is_irn_constlike(param)) {
- /* Found one: add to statistics */
-
- ir_printf("%+F called with const %+F at position %d\n", ent, param, i);
- }
- }
-}