From 5aaf863d560f9d6dc88fc511a27bbab06ed96a23 Mon Sep 17 00:00:00 2001 From: nickysn Date: Wed, 6 May 2020 21:24:19 +0000 Subject: [PATCH] * only call cg64.a_XXX_loc for LOC_(C)REFERENCE and LOC_(C)REGISTER locations in tcginlinenode.second_AndOrXorShiftRot_assign git-svn-id: trunk@45301 - --- compiler/ncginl.pas | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/ncginl.pas b/compiler/ncginl.pas index 2664f48454..c05fbac376 100644 --- a/compiler/ncginl.pas +++ b/compiler/ncginl.pas @@ -579,7 +579,8 @@ implementation else maskvalue:=maskvalue and 31; {$if not defined(cpu64bitalu) and not defined(cpuhighleveltarget)} - if def_cgsize(tcallparanode(left).right.resultdef) in [OS_64,OS_S64] then + if (def_cgsize(tcallparanode(left).right.resultdef) in [OS_64,OS_S64]) and + (tcallparanode(tcallparanode(left).right).left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE,LOC_REGISTER,LOC_CREGISTER]) then cg64.a_op64_const_loc(current_asmdata.CurrAsmList,andorxorop[inlinenumber],def_cgsize(tcallparanode(left).right.resultdef),maskvalue.svalue,tcallparanode(tcallparanode(left).right).left.location) else {$endif not cpu64bitalu and not cpuhighleveltarget} @@ -594,7 +595,8 @@ implementation else begin {$if not defined(cpu64bitalu) and not defined(cpuhighleveltarget)} - if def_cgsize(tcallparanode(left).right.resultdef) in [OS_64,OS_S64] then + if (def_cgsize(tcallparanode(left).right.resultdef) in [OS_64,OS_S64]) and + (tcallparanode(tcallparanode(left).right).left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE,LOC_REGISTER,LOC_CREGISTER]) then cg64.a_op64_reg_loc(current_asmdata.CurrAsmList,andorxorop[inlinenumber],def_cgsize(tcallparanode(left).right.resultdef), joinreg64(hregister,hregisterhi),tcallparanode(tcallparanode(left).right).left.location) else