#include "pdeq.h"
#include "irtools.h"
#include "raw_bitset.h"
+#include "error.h"
#include "be.h"
#include "beabi.h"
curr_sp = adjust_free(env, irn, curr_sp);
break;
default:
+ panic("invalid call");
break;
}
}
obstack_free(&env->obst, nodes);
/* Keep the last stack state in the block by tying it to Keep node */
- nodes[0] = curr_sp;
- keep = be_new_Keep(env->isa->sp->reg_class, get_irn_irg(bl), bl, 1, nodes);
- pmap_insert(env->keep_map, bl, keep);
+ if(curr_sp != env->init_sp) {
+ nodes[0] = curr_sp;
+ keep = be_new_Keep(env->isa->sp->reg_class, get_irn_irg(bl),
+ bl, 1, nodes);
+ pmap_insert(env->keep_map, bl, keep);
+ }
}
set_irn_link(bl, curr_sp);
*/
stack = be_abi_reg_map_get(env->regs, isa->sp);
if (keep) {
- ir_node *bad = new_r_Bad(env->birg->irg);
stack = get_irn_n(keep, 0);
- set_nodes_block(keep, bad);
- set_irn_n(keep, 0, bad);
- // exchange(keep, new_r_Bad(env->birg->irg));
+ be_kill_node(keep);
+ remove_End_keepalive(get_irg_end(env->birg->irg), keep);
}
/* Insert results for Return into the register map. */