mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-20 09:29:34 +01:00
* parameter regvar fixes
This commit is contained in:
parent
d6bffaf5c6
commit
4f7667488b
@ -1239,7 +1239,16 @@ implementation
|
|||||||
LOC_REFERENCE :
|
LOC_REFERENCE :
|
||||||
begin
|
begin
|
||||||
reference_reset_base(href,paraloc.reference.index,paraloc.reference.offset);
|
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;
|
end;
|
||||||
else
|
else
|
||||||
internalerror(2002081302);
|
internalerror(2002081302);
|
||||||
@ -2207,7 +2216,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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 sparc compile
|
||||||
* fixed float regvar loading
|
* fixed float regvar loading
|
||||||
|
|
||||||
|
|||||||
@ -136,9 +136,12 @@ implementation
|
|||||||
if pd.deftype=procdef then
|
if pd.deftype=procdef then
|
||||||
akttokenpos:=tprocdef(pd).fileinfo;
|
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);
|
vs:=tvarsym.create('$parentfp',vs_var,voidpointertype);
|
||||||
include(vs.varoptions,vo_is_parentfp);
|
include(vs.varoptions,vo_is_parentfp);
|
||||||
|
vs.varregable:=vr_none;
|
||||||
pd.parast.insert(vs);
|
pd.parast.insert(vs);
|
||||||
pd.insertpara(vs.vartype,vs,nil,true);
|
pd.insertpara(vs.vartype,vs,nil,true);
|
||||||
|
|
||||||
@ -2260,7 +2263,10 @@ const
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* tvarsym.varregable added, split vo_regable from varoptions
|
||||||
|
|
||||||
Revision 1.190 2004/08/29 11:28:41 peter
|
Revision 1.190 2004/08/29 11:28:41 peter
|
||||||
|
|||||||
@ -1281,7 +1281,11 @@ implementation
|
|||||||
|
|
||||||
function tstoreddef.is_fpuregable : boolean;
|
function tstoreddef.is_fpuregable : boolean;
|
||||||
begin
|
begin
|
||||||
is_fpuregable:=(deftype=floatdef);
|
{$ifdef x86}
|
||||||
|
result:=false;
|
||||||
|
{$else x86}
|
||||||
|
result:=(deftype=floatdef);
|
||||||
|
{$endif x86}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -6200,7 +6204,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* rtti alignment fixed
|
||||||
|
|
||||||
Revision 1.256 2004/09/21 23:36:51 hajny
|
Revision 1.256 2004/09/21 23:36:51 hajny
|
||||||
|
|||||||
@ -1511,7 +1511,8 @@ implementation
|
|||||||
if (vo_is_self in varoptions) then
|
if (vo_is_self in varoptions) then
|
||||||
begin
|
begin
|
||||||
case loc of
|
case loc of
|
||||||
LOC_REGISTER:
|
LOC_REGISTER,
|
||||||
|
LOC_CREGISTER:
|
||||||
regidx:=findreg_by_number(localloc.register);
|
regidx:=findreg_by_number(localloc.register);
|
||||||
LOC_REFERENCE: ;
|
LOC_REFERENCE: ;
|
||||||
else
|
else
|
||||||
@ -2222,7 +2223,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* symtable allocation rewritten
|
||||||
* loading of parameters to local temps/regs cleanup
|
* loading of parameters to local temps/regs cleanup
|
||||||
* regvar support for parameters
|
* regvar support for parameters
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user