#include "irnode_t.h"
#include "irtools.h"
#include "irgmod.h"
-#include "array.h"
+#include "array_t.h"
#include "xmalloc.h"
/**
if (get_entity_visibility(callee) == visibility_external_allocated)
return;
+ /* we cannot clone calls to weak functions */
+ if (get_entity_additional_properties(callee) & mtp_property_weak)
+ return;
+
process_call(call, callee, hmap);
}
}
} else {
/* First we set the block our copy if it is not a block.*/
set_nodes_block(irn_copy, get_irn_link(get_nodes_block(irn)));
- if (get_irn_op(irn) == op_End) {
+ if (is_End(irn)) {
/* Handle the keep-alives. This must be done separately, because
the End node was NOT copied */
for (i = 0; i < get_End_n_keepalives(irn); ++i)
* We rely on the fact the only one arg exists, so do
* a cheap CSE in this case.
*/
- set_irn_out(irg_args, i, arg);
+ set_irn_out(irg_args, i, arg, 0);
exchange(proj, arg);
} else
arg = proj;
/* we know, that a SymConst is here */
ptr = get_Call_ptr(call);
- assert(get_irn_op(ptr) == op_SymConst);
+ assert(is_SymConst(ptr));
callee = get_SymConst_entity(ptr);
if (callee != entry->q.ent) {