diff options
Diffstat (limited to 'compiler/jvm/hlcgcpu.pas')
-rw-r--r-- | compiler/jvm/hlcgcpu.pas | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/compiler/jvm/hlcgcpu.pas b/compiler/jvm/hlcgcpu.pas index 844a0a1632..43ba820671 100644 --- a/compiler/jvm/hlcgcpu.pas +++ b/compiler/jvm/hlcgcpu.pas @@ -559,8 +559,6 @@ implementation begin maybepreparedivu32(list,op,size,trunc32); case op of - OP_NEG,OP_NOT: - ; OP_SHL,OP_SHR,OP_SAR: if not is_64bitint(size) then a_load_reg_stack(list,size,reg) @@ -590,8 +588,6 @@ implementation internalerror(2010121102); maybepreparedivu32(list,op,size,trunc32); case op of - OP_NEG,OP_NOT: - ; OP_SHL,OP_SHR,OP_SAR: begin if not is_64bitint(size) then @@ -1157,14 +1153,16 @@ implementation procedure thlcgjvm.a_op_ref_reg(list: TAsmList; Op: TOpCG; size: tdef; const ref: TReference; reg: TRegister); begin - a_load_reg_stack(list,size,reg); + if not(op in [OP_NOT,OP_NEG]) then + a_load_reg_stack(list,size,reg); a_op_ref_stack(list,op,size,ref); a_load_stack_reg(list,size,reg); end; procedure thlcgjvm.a_op_reg_reg_reg(list: TAsmList; op: TOpCg; size: tdef; src1, src2, dst: tregister); begin - a_load_reg_stack(list,size,src2); + if not(op in [OP_NOT,OP_NEG]) then + a_load_reg_stack(list,size,src2); a_op_reg_stack(list,op,size,src1); a_load_stack_reg(list,size,dst); end; |