better: */
if (n != current_ir_graph->end_block) {
on = optimize_in_place(nn);
- if (nn != on) exchange(nn, on);
- nn = on; /* For cse ... */
+ if ((nn != on)) {
+ if (get_irn_op(on) == op_Bad)
+ /* if on is Bad it is the old Bad node. */
+ on = get_new_node(on);
+ exchange(nn, on);
+ nn = on; /* For cse ... */
+ }
}
} else if (get_irn_opcode(n) == iro_Phi) {
/* Don't copy node if corresponding predecessor in block is Bad.
could be Id chains?? */
assert(is_cfop(pred) || is_fragile_op(pred));
pred = get_nodes_Block(pred);
- assert(get_irn_opcode(pred) == iro_Block);
-
- /* recursion */
- irg_block_walk_2(pred, pre, post, env);
+ if(get_irn_opcode(pred) == iro_Block) {
+ /* recursion */
+ irg_block_walk_2(pred, pre, post, env);
+ }
+ else {
+ assert(get_irn_opcode(pred) == iro_Bad);
+ }
}
if(post)
mode_c->name = id_from_str ("c", 1);
mode_c->fsigned = 1;
mode_c->ffloat = 0;
- mode_c->ld_align = 0;
+ mode_c->ld_align = 1;
mode_c->size = 1;
mode_c->min = tarval_from_long (mode_l, 0xffffff80);
mode_c->max = tarval_from_long (mode_l, 0x0000007f);
mode_C->name = id_from_str ("C", 1);
mode_C->fsigned = 0;
mode_C->ffloat = 0;
- mode_C->ld_align = 0;
+ mode_C->ld_align = 1;
mode_C->size = 1;
mode_C->min = tarval_from_long (mode_L, 0x00000000);
mode_C->max = tarval_from_long (mode_L, 0x000000ff);
mode_h->name = id_from_str ("h", 1);
mode_h->fsigned = 1;
mode_h->ffloat = 0;
- mode_h->ld_align = 1;
- mode_h->size = 4;
+ mode_h->ld_align = 2;
+ mode_h->size = 2;
mode_h->min = tarval_from_long (mode_l, 0xffff8000);
mode_h->max = tarval_from_long (mode_l, 0x00007fff);
mode_h->null = tarval_from_long (mode_h, 0);
mode_H->name = id_from_str ("H", 1);
mode_H->fsigned = 0;
mode_H->ffloat = 0;
- mode_H->ld_align = 1;
- mode_H->size = 4;
+ mode_H->ld_align = 2;
+ mode_H->size = 2;
mode_H->min = tarval_from_long (mode_L, 0x00000000);
mode_H->max = tarval_from_long (mode_L, 0x0000ffff);
mode_H->null = tarval_from_long (mode_H, 0);
mode_i->name = id_from_str ("i", 1);
mode_i->fsigned = 1;
mode_i->ffloat = 0;
- mode_i->ld_align = 2;
+ mode_i->ld_align = 4;
mode_i->size = 4;
mode_i->min = tarval_from_long (mode_l, 0x80000000);
mode_i->max = tarval_from_long (mode_l, 0x7fffffff);
mode_I->name = id_from_str ("I", 1);
mode_I->fsigned = 0;
mode_I->ffloat = 0;
- mode_I->ld_align = 2;
+ mode_I->ld_align = 4;
mode_I->size = 4;
mode_I->min = tarval_from_long (mode_L, 0x00000000);
mode_I->max = tarval_from_long (mode_L, 0xffffffff);
mode_l->name = id_from_str ("l", 1);
mode_l->fsigned = 1;
mode_l->ffloat = 0;
- mode_l->ld_align = 2;
+ mode_l->ld_align = 4;
mode_l->size = 4;
mode_l->min = tarval_from_long (mode_l, 0x80000000);
mode_l->max = tarval_from_long (mode_l, 0x7fffffff);
mode_L->name = id_from_str ("L", 1);
mode_L->fsigned = 0;
mode_L->ffloat = 0;
- mode_L->ld_align = 2;
+ mode_L->ld_align = 4;
mode_L->size = 4;
mode_L->min = tarval_from_long (mode_L, 0x00000000);
mode_L->max = tarval_from_long (mode_L, 0xffffffff);
mode_p->name = id_from_str ("p", 1);
mode_p->fsigned = 0;
mode_p->ffloat = 0;
- mode_p->ld_align = 2;
+ mode_p->ld_align = 4;
mode_p->size = 4;
mode_p->min = tarval_from_long (mode_L, 0x00000000);
mode_p->max = tarval_from_long (mode_L, 0xffffffff);