mirror of
https://github.com/danog/ir.git
synced 2025-01-22 05:31:32 +01:00
Avoid useless move
This commit is contained in:
parent
eacb9c1528
commit
63f21925b3
@ -4319,9 +4319,14 @@ static int ir_emit_dessa_move(ir_ctx *ctx, uint8_t type, ir_ref from, ir_ref to)
|
||||
ir_emit_load(ctx, type, from_reg, from);
|
||||
}
|
||||
if (to_reg != IR_REG_NONE && (to_reg & IR_REG_SPILL_STORE)) {
|
||||
if (from_reg != IR_REG_NONE) {
|
||||
/* store directly into spill slot (valid only when to_reg register is not reused) */
|
||||
to_reg = IR_REG_NONE;
|
||||
} else {
|
||||
to_reg &= ~IR_REG_SPILL_STORE;
|
||||
spill_store = 1;
|
||||
}
|
||||
}
|
||||
if (from_reg != IR_REG_NONE && to_reg != IR_REG_NONE) {
|
||||
if (from_reg != to_reg) {
|
||||
ir_emit_mov(ctx, type, to_reg, from_reg);
|
||||
@ -4347,13 +4352,13 @@ static int ir_emit_dessa_move(ir_ctx *ctx, uint8_t type, ir_ref from, ir_ref to)
|
||||
ir_emit_load(ctx, type, from_reg, from);
|
||||
}
|
||||
if (to_reg != IR_REG_NONE && (to_reg & IR_REG_SPILL_STORE)) {
|
||||
#if 1
|
||||
if (from_reg != IR_REG_NONE) {
|
||||
/* store directly into spill slot (valid only when to_reg register is not reused) */
|
||||
to_reg = IR_REG_NONE;
|
||||
#else
|
||||
} else {
|
||||
to_reg &= ~IR_REG_SPILL_STORE;
|
||||
spill_store = 1;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (from_reg != IR_REG_NONE && to_reg != IR_REG_NONE) {
|
||||
if (from_reg != to_reg) {
|
||||
|
11
ir_x86.dasc
11
ir_x86.dasc
@ -6736,9 +6736,14 @@ static int ir_emit_dessa_move(ir_ctx *ctx, uint8_t type, ir_ref from, ir_ref to)
|
||||
ir_emit_load(ctx, type, from_reg, from);
|
||||
}
|
||||
if (to_reg != IR_REG_NONE && (to_reg & IR_REG_SPILL_STORE)) {
|
||||
if (from_reg != IR_REG_NONE) {
|
||||
/* store directly into spill slot (valid only when to_reg register is not reused) */
|
||||
to_reg = IR_REG_NONE;
|
||||
} else {
|
||||
to_reg &= ~IR_REG_SPILL_STORE;
|
||||
spill_store = 1;
|
||||
}
|
||||
}
|
||||
if (from_reg != IR_REG_NONE && to_reg != IR_REG_NONE) {
|
||||
if (from_reg != to_reg) {
|
||||
ir_emit_mov(ctx, type, to_reg, from_reg);
|
||||
@ -6769,13 +6774,13 @@ static int ir_emit_dessa_move(ir_ctx *ctx, uint8_t type, ir_ref from, ir_ref to)
|
||||
ir_emit_load(ctx, type, from_reg, from);
|
||||
}
|
||||
if (to_reg != IR_REG_NONE && (to_reg & IR_REG_SPILL_STORE)) {
|
||||
#if 1
|
||||
if (from_reg != IR_REG_NONE) {
|
||||
/* store directly into spill slot (valid only when to_reg register is not reused) */
|
||||
to_reg = IR_REG_NONE;
|
||||
#else
|
||||
} else {
|
||||
to_reg &= ~IR_REG_SPILL_STORE;
|
||||
spill_store = 1;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (from_reg != IR_REG_NONE && to_reg != IR_REG_NONE) {
|
||||
if (from_reg != to_reg) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user