* several packed array and varset related ies on sparc fixed

git-svn-id: trunk@6899 -
This commit is contained in:
florian 2007-03-17 09:16:48 +00:00
parent d7752d3c69
commit 53b2b1e882
2 changed files with 11 additions and 7 deletions

View File

@ -232,11 +232,11 @@ interface
procedure tcgaddnode.second_opsmallset; procedure tcgaddnode.second_opsmallset;
begin begin
{ when a setdef is passed, it has to be a smallset } { when a setdef is passed, it has to be a smallset }
if ((left.resultdef.typ=setdef) and if is_varset(left.resultdef) or
(tsetdef(left.resultdef).settype<>smallset)) or is_normalset(left.resultdef) or
((right.resultdef.typ=setdef) and is_varset(right.resultdef) or
(tsetdef(right.resultdef).settype<>smallset)) then is_normalset(right.resultdef) then
internalerror(200203301); internalerror(200203302);
if nodetype in [equaln,unequaln,gtn,gten,lten,ltn] then if nodetype in [equaln,unequaln,gtn,gten,lten,ltn] then
second_cmpsmallset second_cmpsmallset
@ -769,7 +769,8 @@ interface
begin begin
{Normalsets are already handled in pass1 if mmx {Normalsets are already handled in pass1 if mmx
should not be used.} should not be used.}
if (tsetdef(left.resultdef).settype<>smallset) then if is_varset(tsetdef(left.resultdef)) or
is_normalset(tsetdef(left.resultdef)) then
begin begin
{$ifdef SUPPORT_MMX} {$ifdef SUPPORT_MMX}
{$ifdef i386} {$ifdef i386}

View File

@ -308,7 +308,10 @@ implementation
location_copy(location,left.location); location_copy(location,left.location);
inverse_flags(location.resflags); inverse_flags(location.resflags);
end; end;
LOC_REGISTER, LOC_CREGISTER, LOC_REFERENCE, LOC_CREFERENCE : LOC_REGISTER, LOC_CREGISTER,
LOC_REFERENCE, LOC_CREFERENCE,
LOC_SUBSETREG, LOC_CSUBSETREG,
LOC_SUBSETREF, LOC_CSUBSETREF:
begin begin
location_force_reg(current_asmdata.CurrAsmList,left.location,def_cgsize(left.resultdef),true); location_force_reg(current_asmdata.CurrAsmList,left.location,def_cgsize(left.resultdef),true);
current_asmdata.CurrAsmList.concat(taicpu.op_reg_const_reg(A_SUBcc,left.location.register,0,NR_G0)); current_asmdata.CurrAsmList.concat(taicpu.op_reg_const_reg(A_SUBcc,left.location.register,0,NR_G0));