|
@@ -65,7 +65,6 @@ implementation
|
|
procedure tcgloadnode.pass_2;
|
|
procedure tcgloadnode.pass_2;
|
|
var
|
|
var
|
|
hregister : tregister;
|
|
hregister : tregister;
|
|
- supreg:Tsuperregister;
|
|
|
|
symtabletype : tsymtabletype;
|
|
symtabletype : tsymtabletype;
|
|
href : treference;
|
|
href : treference;
|
|
newsize : tcgsize;
|
|
newsize : tcgsize;
|
|
@@ -190,32 +189,26 @@ implementation
|
|
{ normal variable }
|
|
{ normal variable }
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- {$warning fixme regvars}
|
|
|
|
{ in case it is a register variable: }
|
|
{ in case it is a register variable: }
|
|
-{ if tvarsym(symtableentry).localloc.loc=LOC_REGISTER then
|
|
|
|
|
|
+ if tvarsym(symtableentry).localloc.loc in [LOC_REGISTER,LOC_FPUREGISTER] then
|
|
begin
|
|
begin
|
|
case getregtype(tvarsym(symtableentry).localloc.register) of
|
|
case getregtype(tvarsym(symtableentry).localloc.register) of
|
|
R_FPUREGISTER :
|
|
R_FPUREGISTER :
|
|
begin
|
|
begin
|
|
- location_reset(location,LOC_CFPUREGISTER,def_cgsize(resulttype.def));
|
|
|
|
- location.register:=tvarsym(symtableentry).localloc.register;
|
|
|
|
|
|
+ location_reset(location,LOC_CFPUREGISTER,def_cgsize(resulttype.def));
|
|
|
|
+ location.register:=tvarsym(symtableentry).localloc.register;
|
|
end;
|
|
end;
|
|
R_INTREGISTER :
|
|
R_INTREGISTER :
|
|
begin
|
|
begin
|
|
- supreg:=getsupreg(Tvarsym(symtableentry).localloc.register);
|
|
|
|
- if (supreg in general_superregisters) and
|
|
|
|
- not (supreg in rg.regvar_loaded_int) then
|
|
|
|
- load_regvar(exprasmlist,tvarsym(symtableentry));
|
|
|
|
location_reset(location,LOC_CREGISTER,def_cgsize(resulttype.def));
|
|
location_reset(location,LOC_CREGISTER,def_cgsize(resulttype.def));
|
|
location.register:=tvarsym(symtableentry).localloc.register;
|
|
location.register:=tvarsym(symtableentry).localloc.register;
|
|
- exclude(rg.unusedregsint,supreg);
|
|
|
|
hregister := location.register;
|
|
hregister := location.register;
|
|
end;
|
|
end;
|
|
else
|
|
else
|
|
internalerror(200301172);
|
|
internalerror(200301172);
|
|
end;
|
|
end;
|
|
end
|
|
end
|
|
- else}
|
|
|
|
|
|
+ else
|
|
begin
|
|
begin
|
|
case symtabletype of
|
|
case symtabletype of
|
|
localsymtable,
|
|
localsymtable,
|
|
@@ -906,7 +899,10 @@ begin
|
|
end.
|
|
end.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.107 2004-02-05 01:24:08 florian
|
|
|
|
|
|
+ Revision 1.108 2004-02-08 17:45:53 jonas
|
|
|
|
+ * fixed regvars
|
|
|
|
+
|
|
|
|
+ Revision 1.107 2004/02/05 01:24:08 florian
|
|
* several fixes to compile x86-64 system
|
|
* several fixes to compile x86-64 system
|
|
|
|
|
|
Revision 1.106 2004/02/03 22:32:54 peter
|
|
Revision 1.106 2004/02/03 22:32:54 peter
|