mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 09:47:52 +02:00
* fixed problem with cpu interferences
This commit is contained in:
parent
1b78804998
commit
5062c04096
@ -150,7 +150,7 @@ unit cgcpu;
|
||||
begin
|
||||
inherited init_register_allocators;
|
||||
{ currently, we save R14 always, so we can use it }
|
||||
rg[R_INTREGISTER]:=trgcpu.create(R_INTREGISTER,R_SUBWHOLE,
|
||||
rg[R_INTREGISTER]:=trgintcpu.create(R_INTREGISTER,R_SUBWHOLE,
|
||||
[RS_R0,RS_R1,RS_R2,RS_R3,RS_R4,RS_R5,RS_R6,RS_R7,RS_R8,
|
||||
RS_R9,RS_R10,RS_R12,RS_R14],first_int_imreg,[]);
|
||||
rg[R_FPUREGISTER]:=trgcpu.create(R_FPUREGISTER,R_SUBNONE,
|
||||
@ -1324,7 +1324,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.53 2004-06-20 08:55:31 florian
|
||||
Revision 1.54 2004-07-03 19:29:14 florian
|
||||
* fixed problem with cpu interferences
|
||||
|
||||
Revision 1.53 2004/06/20 08:55:31 florian
|
||||
* logs truncated
|
||||
|
||||
Revision 1.52 2004/06/16 20:07:10 florian
|
||||
|
@ -36,7 +36,6 @@ unit rgcpu;
|
||||
|
||||
type
|
||||
trgcpu = class(trgobj)
|
||||
procedure add_cpu_interferences(p : tai);override;
|
||||
procedure do_spill_read(list : taasmoutput;instr : taicpu;pos: tai; regidx: word;
|
||||
const spilltemplist:Tspill_temp_list;const regs : tspillregsinfo);override;
|
||||
procedure do_spill_written(list : taasmoutput;instr : taicpu;pos: tai; regidx: word;
|
||||
@ -45,6 +44,10 @@ unit rgcpu;
|
||||
const spilltemplist:Tspill_temp_list;const regs : tspillregsinfo);override;
|
||||
end;
|
||||
|
||||
trgintcpu = class(trgcpu)
|
||||
procedure add_cpu_interferences(p : tai);override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
@ -53,16 +56,6 @@ unit rgcpu;
|
||||
procinfo;
|
||||
|
||||
|
||||
procedure trgcpu.add_cpu_interferences(p : tai);
|
||||
begin
|
||||
if p.typ=ait_instruction then
|
||||
begin
|
||||
if (taicpu(p).opcode=A_MUL) then
|
||||
add_edge(getsupreg(taicpu(p).oper[0]^.reg),getsupreg(taicpu(p).oper[1]^.reg));
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure trgcpu.do_spill_read(list : taasmoutput;instr : taicpu;pos: tai; regidx: word;
|
||||
const spilltemplist:Tspill_temp_list;const regs : tspillregsinfo);
|
||||
var
|
||||
@ -223,11 +216,25 @@ unit rgcpu;
|
||||
inherited do_spill_readwritten(list,instr,pos,regidx,spilltemplist,regs);
|
||||
end;
|
||||
|
||||
|
||||
procedure trgintcpu.add_cpu_interferences(p : tai);
|
||||
begin
|
||||
if p.typ=ait_instruction then
|
||||
begin
|
||||
if (taicpu(p).opcode=A_MUL) then
|
||||
add_edge(getsupreg(taicpu(p).oper[0]^.reg),getsupreg(taicpu(p).oper[1]^.reg));
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.12 2004-06-20 08:55:31 florian
|
||||
Revision 1.13 2004-07-03 19:29:14 florian
|
||||
* fixed problem with cpu interferences
|
||||
|
||||
Revision 1.12 2004/06/20 08:55:31 florian
|
||||
* logs truncated
|
||||
|
||||
Revision 1.11 2004/06/16 20:07:10 florian
|
||||
|
Loading…
Reference in New Issue
Block a user