#include "debug.h"
#include "error.h"
#include "typerep.h"
+#include "irpass.h"
/** The debug handle. */
DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
/**
* Post-walker: check for global entity address
*/
-static void check_global_address(const ir_node *irn, void *env) {
+static void check_global_address(ir_node *irn, void *env) {
ir_node *tls = env;
ir_entity *ent;
ir_entity_usage flags;
res = clone_type_method(tp, prefix);
pmap_insert(mtp_map, tp, res);
- DB((dbgcall, LEVEL_2, "cloned type %+F into %+F\n", tp, res));
return res;
} /* clone_type_and_cache */
ctp = clone_type_and_cache(ctp);
set_method_additional_property(ctp, mtp_property_private);
set_Call_type(call, ctp);
- DB((dbgcall, LEVEL_1, "changed call to private method %+F\n", ent));
+ DB((dbgcall, LEVEL_1, "changed call to private method %+F using cloned type %+F\n", ent, ctp));
}
}
}
if ((get_method_additional_properties(mtp) & mtp_property_private) == 0) {
/* need a new type */
mtp = clone_type_and_cache(mtp);
- set_entity_type(ent, mtp);
set_method_additional_property(mtp, mtp_property_private);
+ set_entity_type(ent, mtp);
+ DB((dbgcall, LEVEL_2, "changed entity type of %+F to %+F\n", ent, mtp));
changed = 1;
}
}
pmap_destroy(mtp_map);
} /* mark_private_methods */
+
+/* create a pass for mark_private_methods() */
+ir_prog_pass_t *mark_private_methods_pass(const char *name) {
+ return def_prog_pass(name ? name : "mark_private_methods", mark_private_methods);
+} /* mark_private_methods_pass */