* check register type to not mixup sse registers

git-svn-id: trunk@7505 -
This commit is contained in:
peter 2007-05-28 19:12:12 +00:00
parent a8062fafe7
commit e1132f8fe1
2 changed files with 4 additions and 1 deletions

View File

@ -85,7 +85,8 @@ begin
if p.oper[1]^.typ = top_ref then
for regCounter := RS_EAX to RS_EDI do
begin
if p.oper[0]^.typ<>top_reg then
if (p.oper[0]^.typ<>top_reg) or
(getregtype(p.oper[0]^.reg) <> R_INTREGISTER) then
break;
if writeToMemDestroysContents(getsupreg(p.oper[0]^.reg),p.oper[1]^.ref^,
regCounter,topsize2tcgsize[p.opsize],c[regCounter],dummy) then

View File

@ -1901,6 +1901,7 @@ begin
case op.typ of
top_reg:
writeDestroysContents :=
(getregtype(op.reg) = R_INTREGISTER) and
writeToRegDestroysContents(getsupreg(op.reg),supreg,c);
top_ref:
writeDestroysContents :=
@ -2097,6 +2098,7 @@ begin
labeltable^[tai_label(p).labsym.labelnr-lolab].taiobj := p;
{$ifdef i386}
ait_regalloc:
if (getregtype(tai_regalloc(p).reg) = R_INTREGISTER) then
begin
supreg:=getsupreg(tai_regalloc(p).reg);
case tai_regalloc(p).ratype of