mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-04 18:50:37 +02:00
* avr stackframe generation improved
git-svn-id: branches/avr@17048 -
This commit is contained in:
parent
9234486a42
commit
e95bf26148
@ -33,7 +33,6 @@ unit cpupi;
|
||||
|
||||
type
|
||||
tavrprocinfo = class(tcgprocinfo)
|
||||
floatregstart : aint;
|
||||
// procedure handle_body_start;override;
|
||||
// procedure after_pass1;override;
|
||||
procedure set_first_temp_offset;override;
|
||||
@ -54,26 +53,14 @@ unit cpupi;
|
||||
|
||||
procedure tavrprocinfo.set_first_temp_offset;
|
||||
begin
|
||||
{ We allocate enough space to save all registers because we can't determine
|
||||
the necessary space because the used registers aren't known before
|
||||
secondpass is run. Even worse, patching
|
||||
the local offsets after generating the code could cause trouble because
|
||||
"shifter" constants could change to non-"shifter" constants. This
|
||||
is especially a problem when taking the address of a local. For now,
|
||||
this extra memory should hurt less than generating all local contants with offsets
|
||||
>256 as non shifter constants }
|
||||
if tg.direction = -1 then
|
||||
tg.setfirsttemp(-12-28)
|
||||
tg.setfirsttemp(0)
|
||||
else
|
||||
tg.setfirsttemp(maxpushedparasize);
|
||||
end;
|
||||
|
||||
|
||||
function tavrprocinfo.calc_stackframe_size:longint;
|
||||
var
|
||||
firstfloatreg,lastfloatreg,
|
||||
r : byte;
|
||||
floatsavesize : aword;
|
||||
begin
|
||||
maxpushedparasize:=align(maxpushedparasize,max(current_settings.alignment.localalignmin,4));
|
||||
end;
|
||||
@ -82,3 +69,4 @@ unit cpupi;
|
||||
begin
|
||||
cprocinfo:=tavrprocinfo;
|
||||
end.
|
||||
|
||||
|
@ -161,7 +161,7 @@ implementation
|
||||
tempfreelist:=nil;
|
||||
templist:=nil;
|
||||
{ we could create a new child class for this but I don't if it is worth the effort (FK) }
|
||||
{$if defined(powerpc) or defined(powerpc64)}
|
||||
{$if defined(powerpc) or defined(powerpc64) or defined(avr)}
|
||||
direction:=1;
|
||||
{$else}
|
||||
direction:=-1;
|
||||
|
Loading…
Reference in New Issue
Block a user