* parameter regvar fixes

This commit is contained in:
peter 2004-10-10 21:08:55 +00:00
parent d6bffaf5c6
commit 4f7667488b
4 changed files with 37 additions and 8 deletions

View File

@ -1239,7 +1239,16 @@ implementation
LOC_REFERENCE :
begin
reference_reset_base(href,paraloc.reference.index,paraloc.reference.offset);
cg.a_load_ref_reg(list,paraloc.size,paraloc.size,href,reg);
case getregtype(reg) of
R_INTREGISTER :
cg.a_load_ref_reg(list,paraloc.size,paraloc.size,href,reg);
R_FPUREGISTER :
cg.a_loadfpu_ref_reg(list,paraloc.size,href,reg);
R_MMREGISTER :
cg.a_loadmm_ref_reg(list,paraloc.size,paraloc.size,href,reg,mms_movescalar);
else
internalerror(2004101012);
end;
end;
else
internalerror(2002081302);
@ -2207,7 +2216,10 @@ implementation
end.
{
$Log$
Revision 1.224 2004-10-10 20:51:46 peter
Revision 1.225 2004-10-10 21:08:55 peter
* parameter regvar fixes
Revision 1.224 2004/10/10 20:51:46 peter
* fixed sparc compile
* fixed float regvar loading

View File

@ -136,9 +136,12 @@ implementation
if pd.deftype=procdef then
akttokenpos:=tprocdef(pd).fileinfo;
{ Generate result variable accessing function result }
{ Generate result variable accessing function result, it
can't be put in a register since it must be accessable
from the framepointer }
vs:=tvarsym.create('$parentfp',vs_var,voidpointertype);
include(vs.varoptions,vo_is_parentfp);
vs.varregable:=vr_none;
pd.parast.insert(vs);
pd.insertpara(vs.vartype,vs,nil,true);
@ -2260,7 +2263,10 @@ const
end.
{
$Log$
Revision 1.191 2004-10-08 17:09:43 peter
Revision 1.192 2004-10-10 21:08:55 peter
* parameter regvar fixes
Revision 1.191 2004/10/08 17:09:43 peter
* tvarsym.varregable added, split vo_regable from varoptions
Revision 1.190 2004/08/29 11:28:41 peter

View File

@ -1281,7 +1281,11 @@ implementation
function tstoreddef.is_fpuregable : boolean;
begin
is_fpuregable:=(deftype=floatdef);
{$ifdef x86}
result:=false;
{$else x86}
result:=(deftype=floatdef);
{$endif x86}
end;
@ -6200,7 +6204,10 @@ implementation
end.
{
$Log$
Revision 1.257 2004-10-04 21:23:15 florian
Revision 1.258 2004-10-10 21:08:55 peter
* parameter regvar fixes
Revision 1.257 2004/10/04 21:23:15 florian
* rtti alignment fixed
Revision 1.256 2004/09/21 23:36:51 hajny

View File

@ -1511,7 +1511,8 @@ implementation
if (vo_is_self in varoptions) then
begin
case loc of
LOC_REGISTER:
LOC_REGISTER,
LOC_CREGISTER:
regidx:=findreg_by_number(localloc.register);
LOC_REFERENCE: ;
else
@ -2222,7 +2223,10 @@ implementation
end.
{
$Log$
Revision 1.182 2004-10-10 20:22:53 peter
Revision 1.183 2004-10-10 21:08:55 peter
* parameter regvar fixes
Revision 1.182 2004/10/10 20:22:53 peter
* symtable allocation rewritten
* loading of parameters to local temps/regs cleanup
* regvar support for parameters