diff options
-rw-r--r-- | compiler/x86/rgx86.pas | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/x86/rgx86.pas b/compiler/x86/rgx86.pas index e0b556bfd2..9a77ac8345 100644 --- a/compiler/x86/rgx86.pas +++ b/compiler/x86/rgx86.pas @@ -124,7 +124,7 @@ implementation 1 : begin if (oper[0]^.typ=top_reg) and - (getregtype(oper[n+0]^.reg)=regtype) then + (getregtype(oper[0]^.reg)=regtype) then begin if get_alias(getsupreg(oper[0]^.reg))<>orgreg then internalerror(200410101); @@ -143,7 +143,10 @@ implementation if ops=3 then n:=1; if (oper[n+0]^.typ=top_reg) and - (oper[n+1]^.typ=top_reg) then + (oper[n+1]^.typ=top_reg) and + ((getregtype(oper[n+0]^.reg)<>regtype) or + (getregtype(oper[n+1]^.reg)<>regtype) or + (get_alias(getsupreg(oper[n+0]^.reg))<>get_alias(getsupreg(oper[n+1]^.reg)))) then begin if (getregtype(oper[n+0]^.reg)=regtype) and (get_alias(getsupreg(oper[n+0]^.reg))=orgreg) then |