From e1132f8fe1228745e6e42f1302523974ebf429c3 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 28 May 2007 19:12:12 +0000 Subject: [PATCH] * check register type to not mixup sse registers git-svn-id: trunk@7505 - --- compiler/i386/csopt386.pas | 3 ++- compiler/i386/daopt386.pas | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/i386/csopt386.pas b/compiler/i386/csopt386.pas index 1be4e079f6..bafc4417ff 100644 --- a/compiler/i386/csopt386.pas +++ b/compiler/i386/csopt386.pas @@ -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 diff --git a/compiler/i386/daopt386.pas b/compiler/i386/daopt386.pas index ce2baf7ba5..6f180d96f4 100644 --- a/compiler/i386/daopt386.pas +++ b/compiler/i386/daopt386.pas @@ -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