mirror of
https://github.com/danog/ir.git
synced 2024-11-27 04:45:38 +01:00
Fix incorrect type usage
This commit is contained in:
parent
f841fb6c34
commit
0a93d2e41b
@ -2870,11 +2870,13 @@ static void ir_emit_load_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
|
||||
IR_ASSERT(def_reg != IR_REG_NONE);
|
||||
if (op2_reg != IR_REG_NONE && (op2_reg & IR_REG_SPILL_LOAD)) {
|
||||
op2_reg &= ~IR_REG_SPILL_LOAD;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
if (op2_reg == IR_REG_NONE) {
|
||||
op2_reg = def_reg;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
ir_emit_load_mem_int(ctx, type, def_reg, op2_reg, 0);
|
||||
if (ctx->regs[def][0] & IR_REG_SPILL_STORE) {
|
||||
@ -2909,7 +2911,8 @@ static void ir_emit_store_int(ir_ctx *ctx, ir_reg ref, ir_insn *insn)
|
||||
IR_ASSERT(op2_reg != IR_REG_NONE && op3_reg != IR_REG_NONE);
|
||||
if (op2_reg & IR_REG_SPILL_LOAD) {
|
||||
op2_reg &= ~IR_REG_SPILL_LOAD;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
if ((op3_reg & IR_REG_SPILL_LOAD) || IR_IS_CONST_REF(insn->op3)) {
|
||||
op3_reg &= ~IR_REG_SPILL_LOAD;
|
||||
@ -2927,7 +2930,8 @@ static void ir_emit_store_fp(ir_ctx *ctx, ir_ref ref, ir_insn *insn)
|
||||
IR_ASSERT(op2_reg != IR_REG_NONE && op3_reg != IR_REG_NONE);
|
||||
if (op2_reg & IR_REG_SPILL_LOAD) {
|
||||
op2_reg &= ~IR_REG_SPILL_LOAD;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
if ((op3_reg & IR_REG_SPILL_LOAD) || IR_IS_CONST_REF(insn->op3)) {
|
||||
op3_reg &= ~IR_REG_SPILL_LOAD;
|
||||
|
15
ir_x86.dasc
15
ir_x86.dasc
@ -4259,11 +4259,13 @@ static void ir_emit_load_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
|
||||
IR_ASSERT(def_reg != IR_REG_NONE);
|
||||
if (op2_reg != IR_REG_NONE && (op2_reg & IR_REG_SPILL_LOAD)) {
|
||||
op2_reg &= ~IR_REG_SPILL_LOAD;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
if (op2_reg == IR_REG_NONE) {
|
||||
op2_reg = def_reg;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
ir_emit_load_mem_int(ctx, type, def_reg, op2_reg, 0);
|
||||
if (ctx->regs[def][0] & IR_REG_SPILL_STORE) {
|
||||
@ -4280,7 +4282,8 @@ static void ir_emit_load_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
|
||||
IR_ASSERT(def_reg != IR_REG_NONE && op2_reg != IR_REG_NONE);
|
||||
if (op2_reg != IR_REG_NONE && (op2_reg & IR_REG_SPILL_LOAD)) {
|
||||
op2_reg &= ~IR_REG_SPILL_LOAD;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
ir_emit_load_mem_fp(ctx, type, def_reg, op2_reg, 0);
|
||||
if (ctx->regs[def][0] & IR_REG_SPILL_STORE) {
|
||||
@ -4300,7 +4303,8 @@ static void ir_emit_store_int(ir_ctx *ctx, ir_reg ref, ir_insn *insn)
|
||||
IR_ASSERT(op2_reg != IR_REG_NONE);
|
||||
if (op2_reg != IR_REG_NONE && (op2_reg & IR_REG_SPILL_LOAD)) {
|
||||
op2_reg &= ~IR_REG_SPILL_LOAD;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
if (IR_IS_CONST_REF(insn->op3) && IR_IS_32BIT(type, val_insn->val)) {
|
||||
| ASM_MEM_IMM_OP mov, type, [Ra(op2_reg)], val_insn->val.i32
|
||||
@ -4323,7 +4327,8 @@ static void ir_emit_store_fp(ir_ctx *ctx, ir_ref ref, ir_insn *insn)
|
||||
IR_ASSERT(op2_reg != IR_REG_NONE && op2_reg != IR_REG_NONE);
|
||||
if (op2_reg & IR_REG_SPILL_LOAD) {
|
||||
op2_reg &= ~IR_REG_SPILL_LOAD;
|
||||
ir_emit_load(ctx, type, op2_reg, insn->op2);
|
||||
IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
|
||||
ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
|
||||
}
|
||||
if ((op3_reg & IR_REG_SPILL_LOAD) || IR_IS_CONST_REF(insn->op3)) {
|
||||
op3_reg &= ~IR_REG_SPILL_LOAD;
|
||||
|
Loading…
Reference in New Issue
Block a user