* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include "lowering.h"
#include "irop_t.h"
#include "trouts.h"
#include "irvrfy.h"
#include "pmap.h"
-#include "xmalloc.h"
+#include "array_t.h"
#include "iropt_dbg.h"
/** Walker environment. */
for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
irg = get_irp_irg(i);
- if (part_block_used)
+ if (part_block_used) {
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK | IR_RESOURCE_PHI_LIST);
collect_phiprojs(irg);
+ }
wenv.nr_of_intrinsics = 0;
irg_walk_graph(irg, NULL, call_mapper, &wenv);
+ if (part_block_used)
+ ir_free_resources(irg, IR_RESOURCE_IRN_LINK | IR_RESOURCE_PHI_LIST);
+
if (wenv.nr_of_intrinsics > 0) {
/* Changes detected: we might have added/removed nodes. */
set_irg_outs_inconsistent(irg);
set_Tuple_pred(node, i, new_r_Bad(irg));
if (rt->mem_proj_nr >= 0)
set_Tuple_pred(node, rt->mem_proj_nr, new_r_Proj(irg, bl, call, mode_M, pn_Call_M_regular));
- if (get_irn_op(mem) != op_NoMem) {
+ if (!is_NoMem(mem)) {
/* Exceptions can only be handled with real memory */
if (rt->regular_proj_nr >= 0)
set_Tuple_pred(node, rt->regular_proj_nr, new_r_Proj(irg, bl, call, mode_X, pn_Call_X_regular));