mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-07 20:39:20 +02:00
+ live_start and live_end_properties
git-svn-id: trunk@22109 -
This commit is contained in:
parent
c2d067940a
commit
f9dd5bf5e6
@ -128,7 +128,7 @@ unit rgobj;
|
|||||||
by cpu-specific implementations.
|
by cpu-specific implementations.
|
||||||
|
|
||||||
--------------------------------------------------------------------}
|
--------------------------------------------------------------------}
|
||||||
trgobj=class
|
trgobj=class
|
||||||
preserved_by_proc : tcpuregisterset;
|
preserved_by_proc : tcpuregisterset;
|
||||||
used_in_proc : tcpuregisterset;
|
used_in_proc : tcpuregisterset;
|
||||||
|
|
||||||
@ -244,8 +244,14 @@ unit rgobj;
|
|||||||
procedure assign_colours;
|
procedure assign_colours;
|
||||||
procedure clear_interferences(u:Tsuperregister);
|
procedure clear_interferences(u:Tsuperregister);
|
||||||
procedure set_live_range_direction(dir: TRADirection);
|
procedure set_live_range_direction(dir: TRADirection);
|
||||||
|
procedure set_live_start(reg : tsuperregister;t : tai);
|
||||||
|
function get_live_start(reg : tsuperregister) : tai;
|
||||||
|
procedure set_live_end(reg : tsuperregister;t : tai);
|
||||||
|
function get_live_end(reg : tsuperregister) : tai;
|
||||||
public
|
public
|
||||||
property live_range_direction: TRADirection read int_live_range_direction write set_live_range_direction;
|
property live_range_direction: TRADirection read int_live_range_direction write set_live_range_direction;
|
||||||
|
property live_start[reg : tsuperregister]: tai read get_live_start write set_live_start;
|
||||||
|
property live_end[reg : tsuperregister]: tai read get_live_end write set_live_end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
@ -715,6 +721,30 @@ unit rgobj;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure trgobj.set_live_start(reg: tsuperregister; t: tai);
|
||||||
|
begin
|
||||||
|
reginfo[reg].live_start:=t;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function trgobj.get_live_start(reg: tsuperregister): tai;
|
||||||
|
begin
|
||||||
|
result:=reginfo[reg].live_start;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure trgobj.set_live_end(reg: tsuperregister; t: tai);
|
||||||
|
begin
|
||||||
|
reginfo[reg].live_end:=t;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function trgobj.get_live_end(reg: tsuperregister): tai;
|
||||||
|
begin
|
||||||
|
result:=reginfo[reg].live_end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure trgobj.add_reg_instruction(instr:Tai;r:tregister;aweight:longint);
|
procedure trgobj.add_reg_instruction(instr:Tai;r:tregister;aweight:longint);
|
||||||
var
|
var
|
||||||
supreg : tsuperregister;
|
supreg : tsuperregister;
|
||||||
@ -1630,7 +1660,6 @@ unit rgobj;
|
|||||||
so:pshifterop;
|
so:pshifterop;
|
||||||
{$endif arm}
|
{$endif arm}
|
||||||
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{ Leave when no imaginary registers are used }
|
{ Leave when no imaginary registers are used }
|
||||||
if maxreg<=first_imaginary then
|
if maxreg<=first_imaginary then
|
||||||
|
Loading…
Reference in New Issue
Block a user