From 951f02d188c6233ff7e08ceb54590e27f07cf1f1 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 25 Apr 2020 19:35:28 +0000 Subject: [PATCH] * correctly set register size git-svn-id: trunk@45076 - --- compiler/x86/aoptx86.pas | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler/x86/aoptx86.pas b/compiler/x86/aoptx86.pas index 569aa86c23..e76697282f 100644 --- a/compiler/x86/aoptx86.pas +++ b/compiler/x86/aoptx86.pas @@ -5232,7 +5232,13 @@ unit aoptx86; if not(RegUsedAfterInstruction(taicpu(p).oper[1]^.reg,hp1,TmpUsedRegs)) then begin DebugMsg(SPeepholeOptimization + 'MovxMov2Movx',p); - taicpu(p).loadreg(1,taicpu(hp1).oper[1]^.reg); +{$ifdef x86_64} + if (taicpu(p).opsize in [S_BL,S_WL]) and + (taicpu(hp1).opsize=S_Q) then + taicpu(p).loadreg(1,newreg(R_INTREGISTER,getsupreg(taicpu(hp1).oper[1]^.reg),R_SUBD)) + else +{$endif x86_64} + taicpu(p).loadreg(1,taicpu(hp1).oper[1]^.reg); asml.remove(hp1); hp1.Free; end;