* renamed t<cpuname>procinfo to tcpuprocinfo for all targets, so we can

inherit from it for LLVM without a thousand ifdefs

git-svn-id: trunk@35141 -
This commit is contained in:
Jonas Maebe 2016-12-16 22:41:21 +00:00
parent e35f83ba94
commit 880d438704
24 changed files with 144 additions and 144 deletions

View File

@ -30,7 +30,7 @@ interface
psub;
type
taarch64procinfo=class(tcgprocinfo)
tcpuprocinfo=class(tcgprocinfo)
constructor create(aparent: tprocinfo); override;
procedure set_first_temp_offset; override;
end;
@ -41,7 +41,7 @@ implementation
tgobj,
cpubase;
constructor taarch64procinfo.create(aparent: tprocinfo);
constructor tcpuprocinfo.create(aparent: tprocinfo);
begin
inherited;
{ use the stack pointer as framepointer, because
@ -56,7 +56,7 @@ implementation
framepointer:=NR_STACK_POINTER_REG;
end;
procedure taarch64procinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
begin
{ leave room for allocated parameters }
tg.setfirsttemp(align(maxpushedparasize,16));
@ -64,5 +64,5 @@ implementation
begin
cprocinfo:=taarch64procinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -1898,7 +1898,7 @@ unit cgcpu;
{ call instruction does not put anything on the stack }
registerarea:=0;
tarmprocinfo(current_procinfo).stackpaddingreg:=High(TSuperRegister);
tcpuprocinfo(current_procinfo).stackpaddingreg:=High(TSuperRegister);
lastfloatreg:=RS_NO;
if not(nostackframe) then
begin
@ -1971,7 +1971,7 @@ unit cgcpu;
begin
regs:=regs+[r];
inc(registerarea,4);
tarmprocinfo(current_procinfo).stackpaddingreg:=r;
tcpuprocinfo(current_procinfo).stackpaddingreg:=r;
break;
end;
list.concat(setoppostfix(taicpu.op_ref_regset(A_STM,ref,R_INTREGISTER,R_SUBWHOLE,regs),PF_FD));
@ -2041,10 +2041,10 @@ unit cgcpu;
localsize:=align(localsize+stackmisalignment,current_settings.alignment.localalignmax)-stackmisalignment;
if stack_parameters and (pi_estimatestacksize in current_procinfo.flags) then
begin
if localsize>tarmprocinfo(current_procinfo).stackframesize then
if localsize>tcpuprocinfo(current_procinfo).stackframesize then
internalerror(2014030901)
else
localsize:=tarmprocinfo(current_procinfo).stackframesize-registerarea;
localsize:=tcpuprocinfo(current_procinfo).stackframesize-registerarea;
end;
if is_shifter_const(localsize,shift) then
begin
@ -2071,24 +2071,24 @@ unit cgcpu;
(firstfloatreg<>RS_NO) then
begin
reference_reset(ref,4,[]);
if (tg.direction*tarmprocinfo(current_procinfo).floatregstart>=1023) or
if (tg.direction*tcpuprocinfo(current_procinfo).floatregstart>=1023) or
(current_settings.fputype in [fpu_vfpv2,fpu_vfpv3,fpu_vfpv4,fpu_vfpv3_d16]) then
begin
if not is_shifter_const(tarmprocinfo(current_procinfo).floatregstart,shift) then
if not is_shifter_const(tcpuprocinfo(current_procinfo).floatregstart,shift) then
begin
a_reg_alloc(list,NR_R12);
a_load_const_reg(list,OS_ADDR,-tarmprocinfo(current_procinfo).floatregstart,NR_R12);
a_load_const_reg(list,OS_ADDR,-tcpuprocinfo(current_procinfo).floatregstart,NR_R12);
list.concat(taicpu.op_reg_reg_reg(A_SUB,NR_R12,current_procinfo.framepointer,NR_R12));
a_reg_dealloc(list,NR_R12);
end
else
list.concat(taicpu.op_reg_reg_const(A_SUB,NR_R12,current_procinfo.framepointer,-tarmprocinfo(current_procinfo).floatregstart));
list.concat(taicpu.op_reg_reg_const(A_SUB,NR_R12,current_procinfo.framepointer,-tcpuprocinfo(current_procinfo).floatregstart));
ref.base:=NR_R12;
end
else
begin
ref.base:=current_procinfo.framepointer;
ref.offset:=tarmprocinfo(current_procinfo).floatregstart;
ref.offset:=tcpuprocinfo(current_procinfo).floatregstart;
end;
case current_settings.fputype of
@ -2178,24 +2178,24 @@ unit cgcpu;
(mmregs<>[]) then
begin
reference_reset(ref,4,[]);
if (tg.direction*tarmprocinfo(current_procinfo).floatregstart>=1023) or
if (tg.direction*tcpuprocinfo(current_procinfo).floatregstart>=1023) or
(current_settings.fputype in [fpu_vfpv2,fpu_vfpv3,fpu_vfpv4,fpu_vfpv3_d16]) then
begin
if not is_shifter_const(tarmprocinfo(current_procinfo).floatregstart,shift) then
if not is_shifter_const(tcpuprocinfo(current_procinfo).floatregstart,shift) then
begin
a_reg_alloc(list,NR_R12);
a_load_const_reg(list,OS_ADDR,-tarmprocinfo(current_procinfo).floatregstart,NR_R12);
a_load_const_reg(list,OS_ADDR,-tcpuprocinfo(current_procinfo).floatregstart,NR_R12);
list.concat(taicpu.op_reg_reg_reg(A_SUB,NR_R12,current_procinfo.framepointer,NR_R12));
a_reg_dealloc(list,NR_R12);
end
else
list.concat(taicpu.op_reg_reg_const(A_SUB,NR_R12,current_procinfo.framepointer,-tarmprocinfo(current_procinfo).floatregstart));
list.concat(taicpu.op_reg_reg_const(A_SUB,NR_R12,current_procinfo.framepointer,-tcpuprocinfo(current_procinfo).floatregstart));
ref.base:=NR_R12;
end
else
begin
ref.base:=current_procinfo.framepointer;
ref.offset:=tarmprocinfo(current_procinfo).floatregstart;
ref.offset:=tcpuprocinfo(current_procinfo).floatregstart;
end;
case current_settings.fputype of
fpu_fpa,
@ -2265,7 +2265,7 @@ unit cgcpu;
{ reapply the stack padding reg, in case there was one, see the complimentary
comment in g_proc_entry() (KB) }
paddingreg:=tarmprocinfo(current_procinfo).stackpaddingreg;
paddingreg:=tcpuprocinfo(current_procinfo).stackpaddingreg;
if paddingreg < RS_R4 then
if paddingreg in regs then
internalerror(201306190)
@ -2285,7 +2285,7 @@ unit cgcpu;
(po_assembler in current_procinfo.procdef.procoptions))) then
begin
if pi_estimatestacksize in current_procinfo.flags then
LocalSize:=tarmprocinfo(current_procinfo).stackframesize-registerarea
LocalSize:=tcpuprocinfo(current_procinfo).stackframesize-registerarea
else
localsize:=align(localsize+stackmisalignment,current_settings.alignment.localalignmax)-stackmisalignment;
@ -3631,14 +3631,14 @@ unit cgcpu;
if yes, the previously estimated stacksize must be used }
if stack_parameters then
begin
if localsize>tarmprocinfo(current_procinfo).stackframesize then
if localsize>tcpuprocinfo(current_procinfo).stackframesize then
begin
writeln(localsize);
writeln(tarmprocinfo(current_procinfo).stackframesize);
writeln(tcpuprocinfo(current_procinfo).stackframesize);
internalerror(2013040601);
end
else
localsize:=tarmprocinfo(current_procinfo).stackframesize-registerarea;
localsize:=tcpuprocinfo(current_procinfo).stackframesize-registerarea;
end
else
localsize:=align(localsize+stackmisalignment,current_settings.alignment.localalignmax)-stackmisalignment;
@ -3702,7 +3702,7 @@ unit cgcpu;
LocalSize:=current_procinfo.calc_stackframe_size;
if stack_parameters then
localsize:=tarmprocinfo(current_procinfo).stackframesize-registerarea
localsize:=tcpuprocinfo(current_procinfo).stackframesize-registerarea
else
localsize:=align(localsize+stackmisalignment,current_settings.alignment.localalignmax)-stackmisalignment;
@ -4851,16 +4851,16 @@ unit cgcpu;
if firstfloatreg<>RS_NO then
begin
reference_reset(ref,4,[]);
if tg.direction*tarmprocinfo(current_procinfo).floatregstart>=1023 then
if tg.direction*tcpuprocinfo(current_procinfo).floatregstart>=1023 then
begin
a_load_const_reg(list,OS_ADDR,-tarmprocinfo(current_procinfo).floatregstart,NR_R12);
a_load_const_reg(list,OS_ADDR,-tcpuprocinfo(current_procinfo).floatregstart,NR_R12);
list.concat(taicpu.op_reg_reg_reg(A_SUB,NR_R12,current_procinfo.framepointer,NR_R12));
ref.base:=NR_R12;
end
else
begin
ref.base:=current_procinfo.framepointer;
ref.offset:=tarmprocinfo(current_procinfo).floatregstart;
ref.offset:=tcpuprocinfo(current_procinfo).floatregstart;
end;
list.concat(taicpu.op_reg_const_ref(A_SFM,newreg(R_FPUREGISTER,firstfloatreg,R_SUBWHOLE),
lastfloatreg-firstfloatreg+1,ref));
@ -4901,16 +4901,16 @@ unit cgcpu;
if firstfloatreg<>RS_NO then
begin
reference_reset(ref,4,[]);
if tg.direction*tarmprocinfo(current_procinfo).floatregstart>=1023 then
if tg.direction*tcpuprocinfo(current_procinfo).floatregstart>=1023 then
begin
a_load_const_reg(list,OS_ADDR,-tarmprocinfo(current_procinfo).floatregstart,NR_R12);
a_load_const_reg(list,OS_ADDR,-tcpuprocinfo(current_procinfo).floatregstart,NR_R12);
list.concat(taicpu.op_reg_reg_reg(A_SUB,NR_R12,current_procinfo.framepointer,NR_R12));
ref.base:=NR_R12;
end
else
begin
ref.base:=current_procinfo.framepointer;
ref.offset:=tarmprocinfo(current_procinfo).floatregstart;
ref.offset:=tcpuprocinfo(current_procinfo).floatregstart;
end;
list.concat(taicpu.op_reg_const_ref(A_LFM,newreg(R_FPUREGISTER,firstfloatreg,R_SUBWHOLE),
lastfloatreg-firstfloatreg+1,ref));

View File

@ -302,7 +302,7 @@ unit cpubase;
{ Stack pointer register }
NR_STACK_POINTER_REG = NR_R13;
RS_STACK_POINTER_REG = RS_R13;
{ Frame pointer register (initialized in tarmprocinfo.init_framepointer) }
{ Frame pointer register (initialized in tcpuprocinfo.init_framepointer) }
RS_FRAME_POINTER_REG: tsuperregister = RS_NO;
NR_FRAME_POINTER_REG: tregister = NR_NO;
{ Register for addressing absolute data in a position independant way,

View File

@ -33,7 +33,7 @@ unit cpupi;
aasmdata;
type
tarmprocinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
{ for arm thumb, we need to know the stackframe size before
starting procedure compilation, so this contains the stack frame size, the compiler
should assume
@ -64,7 +64,7 @@ unit cpupi;
defutil,
aasmcpu;
procedure tarmprocinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
var
localsize : aint;
i : longint;
@ -140,7 +140,7 @@ unit cpupi;
end;
function tarmprocinfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
var
firstfloatreg,lastfloatreg,
r : byte;
@ -240,7 +240,7 @@ unit cpupi;
end;
procedure tarmprocinfo.init_framepointer;
procedure tcpuprocinfo.init_framepointer;
begin
if (target_info.system in systems_darwin) or GenerateThumbCode then
begin
@ -255,14 +255,14 @@ unit cpupi;
end;
procedure tarmprocinfo.generate_parameter_info;
procedure tcpuprocinfo.generate_parameter_info;
begin
tcpuprocdef(procdef).total_stackframe_size:=stackframesize;
inherited generate_parameter_info;
end;
procedure tarmprocinfo.allocate_got_register(list: TAsmList);
procedure tcpuprocinfo.allocate_got_register(list: TAsmList);
begin
{ darwin doesn't use a got }
if tf_pic_uses_got in target_info.flags then
@ -270,12 +270,12 @@ unit cpupi;
end;
procedure tarmprocinfo.postprocess_code;
procedure tcpuprocinfo.postprocess_code;
begin
{ because of the limited constant size of the arm, all data access is done pc relative }
finalizearmcode(aktproccode,aktlocaldata);
end;
begin
cprocinfo:=tarmprocinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -32,7 +32,7 @@ unit cpupi;
procinfo,cpuinfo,psub;
type
tavrprocinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
// procedure handle_body_start;override;
// procedure after_pass1;override;
procedure set_first_temp_offset;override;
@ -53,7 +53,7 @@ unit cpupi;
cgobj,
aasmcpu;
procedure tavrprocinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
begin
if tg.direction = -1 then
tg.setfirsttemp(-1)
@ -64,7 +64,7 @@ unit cpupi;
end;
function tavrprocinfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
begin
if tg.lasttemp=2 then
{ correct that lasttemp is 2 in case of an empty stack due to the post-decrement pushing and an additional correction
@ -76,7 +76,7 @@ unit cpupi;
end;
procedure tavrprocinfo.postprocess_code;
procedure tcpuprocinfo.postprocess_code;
begin
{ because of the limited branch distance of cond. branches, they must be replaced
sometimes by normal jmps and an inverse branch }
@ -84,6 +84,6 @@ unit cpupi;
end;
begin
cprocinfo:=tavrprocinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -31,7 +31,7 @@ unit cpupi;
psub,procinfo,aasmdata;
type
ti386procinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
constructor create(aparent:tprocinfo);override;
procedure set_first_temp_offset;override;
function calc_stackframe_size:longint;override;
@ -50,14 +50,14 @@ unit cpupi;
cgutils,
symconst;
constructor ti386procinfo.create(aparent:tprocinfo);
constructor tcpuprocinfo.create(aparent:tprocinfo);
begin
inherited create(aparent);
got:=NR_EBX;
end;
procedure ti386procinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
begin
if paramanager.use_fixed_stack then
begin
@ -72,7 +72,7 @@ unit cpupi;
end;
function ti386procinfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
begin
{ align to 4 bytes at least
otherwise all those subl $2,%esp are meaningless PM }
@ -85,7 +85,7 @@ unit cpupi;
end;
procedure ti386procinfo.generate_parameter_info;
procedure tcpuprocinfo.generate_parameter_info;
begin
inherited generate_parameter_info;
{ Para_stack_size is only used to determine how many bytes to remove }
@ -95,7 +95,7 @@ unit cpupi;
para_stack_size := 0;
end;
procedure ti386procinfo.allocate_got_register(list: tasmlist);
procedure tcpuprocinfo.allocate_got_register(list: tasmlist);
begin
if (cs_create_pic in current_settings.moduleswitches) then
begin
@ -104,5 +104,5 @@ unit cpupi;
end;
begin
cprocinfo:=ti386procinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -31,7 +31,7 @@ unit cpupi;
psub,procinfo,aasmdata;
type
ti8086procinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
private
procedure insert_8087_fwaits(list : TAsmList);
public
@ -54,14 +54,14 @@ unit cpupi;
cgutils,
symconst;
constructor ti8086procinfo.create(aparent:tprocinfo);
constructor tcpuprocinfo.create(aparent:tprocinfo);
begin
inherited create(aparent);
got:=NR_EBX;
end;
procedure ti8086procinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
begin
if paramanager.use_fixed_stack then
begin
@ -76,7 +76,7 @@ unit cpupi;
end;
function ti8086procinfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
begin
{ ???:
align to 4 bytes at least
@ -90,7 +90,7 @@ unit cpupi;
end;
procedure ti8086procinfo.generate_parameter_info;
procedure tcpuprocinfo.generate_parameter_info;
begin
inherited generate_parameter_info;
{ Para_stack_size is only used to determine how many bytes to remove }
@ -101,7 +101,7 @@ unit cpupi;
end;
procedure ti8086procinfo.insert_8087_fwaits(list : TAsmList);
procedure tcpuprocinfo.insert_8087_fwaits(list : TAsmList);
var
curtai: tai;
begin
@ -117,7 +117,7 @@ unit cpupi;
end;
procedure ti8086procinfo.postprocess_code;
procedure tcpuprocinfo.postprocess_code;
begin
{ nickysn note: I don't know if the 187 requires FWAIT before
every instruction like the 8087, so I'm including it just in case }
@ -126,5 +126,5 @@ unit cpupi;
end;
begin
cprocinfo:=ti8086procinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -32,9 +32,9 @@ interface
type
{ TSparcProcInfo }
{ tcpuprocinfo }
TJVMProcInfo=class(tcgprocinfo)
tcpuprocinfo=class(tcgprocinfo)
public
procedure set_first_temp_offset;override;
end;
@ -45,7 +45,7 @@ implementation
systems,globals,
tgobj,paramgr,symconst;
procedure TJVMProcInfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
begin
{
Stackframe layout:
@ -61,5 +61,5 @@ implementation
begin
cprocinfo:=TJVMProcInfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -268,7 +268,7 @@ unit cpubase;
NR_STACK_POINTER_REG = NR_SP;
RS_STACK_POINTER_REG = RS_SP;
{# Frame pointer register }
{ Frame pointer register (initialized in tm68kprocinfo.init_framepointer) }
{ Frame pointer register (initialized in tcpuprocinfo.init_framepointer) }
RS_FRAME_POINTER_REG: tsuperregister = RS_NO;
NR_FRAME_POINTER_REG: tregister = NR_NO;

View File

@ -31,7 +31,7 @@ unit cpupi;
psub;
type
tm68kprocinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
procedure init_framepointer;override;
end;
@ -42,9 +42,9 @@ unit cpupi;
cpubase,
systems;
{ tm68kprocinfo }
{ tcpuprocinfo }
procedure tm68kprocinfo.init_framepointer;
procedure tcpuprocinfo.init_framepointer;
begin
{ ToDo : what about system_m68k_embedded? }
if target_info.system in [system_m68k_linux,system_m68k_netbsd,system_m68k_openbsd] then
@ -60,5 +60,5 @@ unit cpupi;
end;
begin
cprocinfo:=tm68kprocinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -372,9 +372,9 @@ begin
{ Restore GP if in PIC mode }
if (cs_create_pic in current_settings.moduleswitches) then
begin
if TMIPSProcinfo(current_procinfo).save_gp_ref.offset=0 then
if tcpuprocinfo(current_procinfo).save_gp_ref.offset=0 then
InternalError(2013071001);
list.concat(taicpu.op_reg_ref(A_LW,NR_GP,TMIPSProcinfo(current_procinfo).save_gp_ref));
list.concat(taicpu.op_reg_ref(A_LW,NR_GP,tcpuprocinfo(current_procinfo).save_gp_ref));
end;
end;
@ -417,9 +417,9 @@ begin
{ Restore GP if in PIC mode }
if (cs_create_pic in current_settings.moduleswitches) then
begin
if TMIPSProcinfo(current_procinfo).save_gp_ref.offset=0 then
if tcpuprocinfo(current_procinfo).save_gp_ref.offset=0 then
InternalError(2013071002);
list.concat(taicpu.op_reg_ref(A_LW,NR_GP,TMIPSProcinfo(current_procinfo).save_gp_ref));
list.concat(taicpu.op_reg_ref(A_LW,NR_GP,tcpuprocinfo(current_procinfo).save_gp_ref));
end;
end;
@ -1279,7 +1279,7 @@ begin
href.base:=NR_STACK_POINTER_REG;
fmask:=0;
nextoffset:=TMIPSProcInfo(current_procinfo).floatregstart;
nextoffset:=tcpuprocinfo(current_procinfo).floatregstart;
lastfpuoffset:=LocalSize;
for reg := RS_F0 to RS_F31 do { to check: what if F30 is double? }
begin
@ -1301,7 +1301,7 @@ begin
end;
mask:=0;
nextoffset:=TMIPSProcInfo(current_procinfo).intregstart;
nextoffset:=tcpuprocinfo(current_procinfo).intregstart;
saveregs:=rg[R_INTREGISTER].used_in_proc-paramanager.get_volatile_registers_int(pocall_stdcall);
if (current_procinfo.flags*[pi_do_call,pi_is_assembler]<>[]) then
include(saveregs,RS_R31);
@ -1374,10 +1374,10 @@ begin
if (cs_create_pic in current_settings.moduleswitches) and
(pi_needs_got in current_procinfo.flags) then
begin
largeoffs:=(TMIPSProcinfo(current_procinfo).save_gp_ref.offset>simm16hi);
largeoffs:=(tcpuprocinfo(current_procinfo).save_gp_ref.offset>simm16hi);
if largeoffs then
list.concat(Taicpu.op_none(A_P_SET_MACRO));
list.concat(Taicpu.op_const(A_P_CPRESTORE,TMIPSProcinfo(current_procinfo).save_gp_ref.offset));
list.concat(Taicpu.op_const(A_P_CPRESTORE,tcpuprocinfo(current_procinfo).save_gp_ref.offset));
if largeoffs then
list.concat(Taicpu.op_none(A_P_SET_NOMACRO));
end;
@ -1385,7 +1385,7 @@ begin
href.base:=NR_STACK_POINTER_REG;
for i:=0 to MIPS_MAX_REGISTERS_USED_IN_CALL-1 do
if TMIPSProcInfo(current_procinfo).register_used[i] then
if tcpuprocinfo(current_procinfo).register_used[i] then
begin
reg:=parasupregs[i];
href.offset:=i*sizeof(aint)+LocalSize;
@ -1417,12 +1417,12 @@ begin
end
else
begin
if TMIPSProcinfo(current_procinfo).save_gp_ref.offset<>0 then
tg.ungettemp(list,TMIPSProcinfo(current_procinfo).save_gp_ref);
if tcpuprocinfo(current_procinfo).save_gp_ref.offset<>0 then
tg.ungettemp(list,tcpuprocinfo(current_procinfo).save_gp_ref);
reference_reset(href,0,[]);
href.base:=NR_STACK_POINTER_REG;
nextoffset:=TMIPSProcInfo(current_procinfo).floatregstart;
nextoffset:=tcpuprocinfo(current_procinfo).floatregstart;
for reg := RS_F0 to RS_F31 do
begin
if reg in (rg[R_FPUREGISTER].used_in_proc-paramanager.get_volatile_registers_fpu(pocall_stdcall)) then
@ -1433,7 +1433,7 @@ begin
end;
end;
nextoffset:=TMIPSProcInfo(current_procinfo).intregstart;
nextoffset:=tcpuprocinfo(current_procinfo).intregstart;
saveregs:=rg[R_INTREGISTER].used_in_proc-paramanager.get_volatile_registers_int(pocall_stdcall);
if (current_procinfo.flags*[pi_do_call,pi_is_assembler]<>[]) then
include(saveregs,RS_R31);
@ -1520,7 +1520,7 @@ begin
if len > high(longint) then
internalerror(2002072704);
{ A call (to FPC_MOVE) requires the outgoing parameter area to be properly
allocated on stack. This can only be done before tmipsprocinfo.set_first_temp_offset,
allocated on stack. This can only be done before tcpuprocinfo.set_first_temp_offset,
i.e. before secondpass. Other internal procedures request correct stack frame
by setting pi_do_call during firstpass, but for this particular one it is impossible.
Therefore, if the current procedure is a leaf one, we have to leave it that way. }

View File

@ -434,7 +434,7 @@ implementation
if reg_and_stack then
begin
for j:=intparareg to mips_nb_used_registers-1 do
tmipsprocinfo(current_procinfo).register_used[j]:=true;
tcpuprocinfo(current_procinfo).register_used[j]:=true;
{ all registers used now }
intparareg:=mips_nb_used_registers;
end;

View File

@ -33,9 +33,9 @@ interface
type
{ TMIPSProcInfo }
{ tcpuprocinfo }
TMIPSProcInfo=class(tcgprocinfo)
tcpuprocinfo=class(tcgprocinfo)
intregstart,
floatregstart : aint;
intregssave,
@ -63,7 +63,7 @@ implementation
cpubase,cgbase,cgobj,
tgobj,paramgr,symconst,symcpu,aasmcpu;
constructor TMIPSProcInfo.create(aparent: tprocinfo);
constructor tcpuprocinfo.create(aparent: tprocinfo);
begin
inherited create(aparent);
if (cs_generate_stackframes in current_settings.localswitches) or
@ -85,7 +85,7 @@ implementation
end;
procedure TMIPSProcInfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
begin
{ MIPS stack frame is always "optimized" }
framepointer:=NR_STACK_POINTER_REG;
@ -120,7 +120,7 @@ implementation
end;
procedure TMIPSProcInfo.allocate_got_register(list:tasmlist);
procedure tcpuprocinfo.allocate_got_register(list:tasmlist);
begin
if (cs_create_pic in current_settings.moduleswitches) then
begin
@ -133,7 +133,7 @@ implementation
end;
function TMIPSProcInfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
begin
result:=maxpushedparasize;
floatregstart:=result;
@ -147,11 +147,11 @@ implementation
tcpuprocdef(procdef).total_local_size:=result;
end
else if computed_local_size <> result then
Comment(V_Error,'TMIPSProcInfo.calc_stackframe_size result changed');
Comment(V_Error,'tcpuprocinfo.calc_stackframe_size result changed');
end;
procedure TMIPSProcInfo.postprocess_code;
procedure tcpuprocinfo.postprocess_code;
begin
fixup_jmps(aktproccode);
end;
@ -166,5 +166,5 @@ implementation
end;
begin
cprocinfo:=TMIPSProcInfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -826,12 +826,12 @@ const
end;
*)
firstregfpu := tppcprocinfo(current_procinfo).get_first_save_fpu_reg;
firstregint := tppcprocinfo(current_procinfo).get_first_save_int_reg;
firstregfpu := tcpuprocinfo(current_procinfo).get_first_save_fpu_reg;
firstregint := tcpuprocinfo(current_procinfo).get_first_save_int_reg;
usesgpr := firstregint <> 32;
usesfpr := firstregfpu <> 32;
if tppcprocinfo(current_procinfo).needs_frame_pointer then
if tcpuprocinfo(current_procinfo).needs_frame_pointer then
list.concat(taicpu.op_reg_reg(A_MR,NR_OLD_STACK_POINTER_REG,NR_STACK_POINTER_REG));
end;
@ -872,11 +872,11 @@ const
{ done in ncgutil because it may only be released after the parameters }
{ have been moved to their final resting place }
{ if (tppcprocinfo(current_procinfo).needs_frame_pointer) then }
{ if (tcpuprocinfo(current_procinfo).needs_frame_pointer) then }
{ a_reg_dealloc(list,NR_R12); }
if (not nostackframe) and
tppcprocinfo(current_procinfo).needstackframe and
tcpuprocinfo(current_procinfo).needstackframe and
(localsize <> 0) then
begin
if (localsize <= high(smallint)) then
@ -937,20 +937,20 @@ const
usesgpr:=false;
if not (po_assembler in current_procinfo.procdef.procoptions) then
begin
firstregfpu := tppcprocinfo(current_procinfo).get_first_save_fpu_reg;
firstregint := tppcprocinfo(current_procinfo).get_first_save_int_reg;
firstregfpu := tcpuprocinfo(current_procinfo).get_first_save_fpu_reg;
firstregint := tcpuprocinfo(current_procinfo).get_first_save_int_reg;
usesgpr := firstregint <> 32;
usesfpr := firstregfpu <> 32;
end;
localsize:= tppcprocinfo(current_procinfo).calc_stackframe_size;
localsize:= tcpuprocinfo(current_procinfo).calc_stackframe_size;
{ adjust r1 }
{ (register allocator is no longer valid at this time and an add of 0 }
{ is translated into a move, which is then registered with the register }
{ allocator, causing a crash }
if (not nostackframe) and
tppcprocinfo(current_procinfo).needstackframe and
tcpuprocinfo(current_procinfo).needstackframe and
(localsize <> 0) then
a_op_const_reg(list,OP_ADD,OS_ADDR,localsize,NR_R1);
@ -1279,7 +1279,7 @@ const
localsize:= align(localsize + macosLinkageAreaSize + registerSaveAreaSize, 16);
inc(localsize,tg.lasttemp);
localsize:=align(localsize,16);
//tppcprocinfo(current_procinfo).localsize:=localsize;
//tcpuprocinfo(current_procinfo).localsize:=localsize;
if (localsize <> 0) then
begin

View File

@ -584,7 +584,7 @@ unit cpupara;
{ create_paraloc_info_intern might be also called when being outside of
code generation so current_procinfo might be not set }
if assigned(current_procinfo) then
tppcprocinfo(current_procinfo).needs_frame_pointer := true;
tcpuprocinfo(current_procinfo).needs_frame_pointer := true;
end;
if not((target_info.system in systems_aix) and

View File

@ -33,7 +33,7 @@ unit cpupi;
procinfo,cpuinfo,psub;
type
tppcprocinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
needstackframe: boolean;
{ offset where the frame pointer from the outer procedure is stored. }
@ -66,7 +66,7 @@ unit cpupi;
verbose,
aasmcpu;
constructor tppcprocinfo.create(aparent:tprocinfo);
constructor tcpuprocinfo.create(aparent:tprocinfo);
begin
inherited create(aparent);
@ -76,7 +76,7 @@ unit cpupi;
end;
procedure tppcprocinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
var
ofs : aword;
begin
@ -106,7 +106,7 @@ unit cpupi;
(*
procedure tppcprocinfo.after_pass1;
procedure tcpuprocinfo.after_pass1;
begin
if not(po_assembler in procdef.procoptions) then
begin
@ -128,13 +128,13 @@ unit cpupi;
*)
function tppcprocinfo.uses_stack_temps: boolean;
function tcpuprocinfo.uses_stack_temps: boolean;
begin
result := tg.firsttemp <> tg.lasttemp;
end;
function tppcprocinfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
var
low_nonvol_fpu_reg, regcounter: tsuperregister;
begin
@ -194,7 +194,7 @@ unit cpupi;
end;
procedure tppcprocinfo.allocate_got_register(list: TAsmList);
procedure tcpuprocinfo.allocate_got_register(list: TAsmList);
begin
if (target_info.system = system_powerpc_darwin) and
(cs_create_pic in current_settings.moduleswitches) then
@ -204,13 +204,13 @@ unit cpupi;
end;
procedure tppcprocinfo.postprocess_code;
procedure tcpuprocinfo.postprocess_code;
begin
fixup_jmps(aktproccode);
end;
begin
cprocinfo:=tppcprocinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -1214,7 +1214,7 @@ begin
calcFirstUsedGPR(firstreggpr, gprcount);
{ calculate real stack frame size }
localsize := tppcprocinfo(current_procinfo).calc_stackframe_size(
localsize := tcpuprocinfo(current_procinfo).calc_stackframe_size(
gprcount, fprcount);
{ determine whether we need to save the link register }
@ -1235,12 +1235,12 @@ begin
save_standard_registers;
{ save old stack frame pointer }
if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
if (tcpuprocinfo(current_procinfo).needs_frame_pointer) then
list.concat(taicpu.op_reg_reg(A_MR, NR_OLD_STACK_POINTER_REG, NR_STACK_POINTER_REG));
{ create stack frame }
if (not nostackframe) and (localsize > 0) and
tppcprocinfo(current_procinfo).needstackframe then begin
tcpuprocinfo(current_procinfo).needstackframe then begin
if (localsize <= high(smallint)) then begin
reference_reset_base(href, NR_STACK_POINTER_REG, -localsize, 8, []);
a_load_store(list, A_STDU, NR_STACK_POINTER_REG, href);
@ -1375,13 +1375,13 @@ begin
([cs_lineinfo, cs_debuginfo] * current_settings.moduleswitches <> []));
{ calculate stack frame }
localsize := tppcprocinfo(current_procinfo).calc_stackframe_size(
localsize := tcpuprocinfo(current_procinfo).calc_stackframe_size(
gprcount, fprcount);
{ CR register not supported }
{ restore stack pointer }
if (not nostackframe) and (localsize > 0) and
tppcprocinfo(current_procinfo).needstackframe then begin
tcpuprocinfo(current_procinfo).needstackframe then begin
if (localsize <= high(smallint)) then begin
list.concat(taicpu.op_reg_reg_const(A_ADDI, NR_STACK_POINTER_REG, NR_STACK_POINTER_REG, localsize));
end else begin

View File

@ -714,7 +714,7 @@ implemented
{ create_paraloc_info_intern might be also called when being outside of
code generation so current_procinfo might be not set }
if assigned(current_procinfo) then
tppcprocinfo(current_procinfo).needs_frame_pointer := true;
tcpuprocinfo(current_procinfo).needs_frame_pointer := true;
end;
paraloc^.reference.offset := stack_offset;

View File

@ -32,7 +32,7 @@ uses
procinfo, cpuinfo, psub;
type
tppcprocinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
needstackframe: boolean;
{ offset where the frame pointer from the outer procedure is stored. }
@ -60,7 +60,7 @@ uses
verbose,
aasmcpu;
constructor tppcprocinfo.create(aparent: tprocinfo);
constructor tcpuprocinfo.create(aparent: tprocinfo);
begin
inherited create(aparent);
@ -68,7 +68,7 @@ begin
needs_frame_pointer := false;
end;
procedure tppcprocinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
var
ofs,
lasize,
@ -107,12 +107,12 @@ begin
end;
end;
function tppcprocinfo.calc_stackframe_size: longint;
function tcpuprocinfo.calc_stackframe_size: longint;
begin
result := calc_stackframe_size(18, 18);
end;
function tppcprocinfo.calc_stackframe_size(numgpr, numfpr : longint) : longint;
function tcpuprocinfo.calc_stackframe_size(numgpr, numfpr : longint) : longint;
begin
{ more or less copied from cgcpu.pas/g_stackframe_entry }
if not (po_assembler in procdef.procoptions) then begin
@ -133,7 +133,7 @@ begin
end;
procedure tppcprocinfo.allocate_got_register(list: TAsmList);
procedure tcpuprocinfo.allocate_got_register(list: TAsmList);
begin
if (target_info.system = system_powerpc64_darwin) and
(cs_create_pic in current_settings.moduleswitches) then
@ -143,13 +143,13 @@ procedure tppcprocinfo.allocate_got_register(list: TAsmList);
end;
procedure tppcprocinfo.postprocess_code;
procedure tcpuprocinfo.postprocess_code;
begin
fixup_jmps(aktproccode);
end;
begin
cprocinfo := tppcprocinfo;
cprocinfo := tcpuprocinfo;
end.

View File

@ -248,11 +248,11 @@ implementation
{ get the register that contains the stack pointer before the procedure
entry, which is used to access the parameters in their original
callee-side location }
if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
if (tcpuprocinfo(current_procinfo).needs_frame_pointer) then
getcpuregister(list,NR_OLD_STACK_POINTER_REG);
inherited;
{ free it again }
if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
if (tcpuprocinfo(current_procinfo).needs_frame_pointer) then
ungetcpuregister(list,NR_OLD_STACK_POINTER_REG);
end;

View File

@ -31,7 +31,7 @@ interface
psub;
type
TSparcProcInfo=class(tcgprocinfo)
tcpuprocinfo=class(tcgprocinfo)
public
constructor create(aparent:tprocinfo);override;
function calc_stackframe_size:longint;override;
@ -44,7 +44,7 @@ implementation
cpubase,cgbase,
tgobj,paramgr,symconst;
constructor tsparcprocinfo.create(aparent:tprocinfo);
constructor tcpuprocinfo.create(aparent:tprocinfo);
begin
inherited create(aparent);
maxpushedparasize:=0;
@ -52,7 +52,7 @@ implementation
end;
function TSparcProcInfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
begin
{
Stackframe layout:
@ -77,5 +77,5 @@ implementation
begin
cprocinfo:=TSparcProcInfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -411,7 +411,7 @@ unit cgcpu;
list.concat(Taicpu.Op_none(A_RET,S_NO));
if (pi_has_unwind_info in current_procinfo.flags) then
begin
tx86_64procinfo(current_procinfo).dump_scopes(list);
tcpuprocinfo(current_procinfo).dump_scopes(list);
list.concat(cai_seh_directive.create(ash_endproc));
end;
end;

View File

@ -31,7 +31,7 @@ interface
psub,procinfo,aasmbase,aasmdata;
type
tx86_64procinfo = class(tcgprocinfo)
tcpuprocinfo = class(tcgprocinfo)
private
scopes: TAsmList;
scopecount: longint;
@ -63,7 +63,7 @@ implementation
SCOPE_CATCHALL=1;
SCOPE_IMPLICIT=2;
procedure tx86_64procinfo.set_first_temp_offset;
procedure tcpuprocinfo.set_first_temp_offset;
begin
if target_info.system=system_x86_64_win64 then
begin
@ -83,7 +83,7 @@ implementation
end;
procedure tx86_64procinfo.generate_parameter_info;
procedure tcpuprocinfo.generate_parameter_info;
begin
inherited generate_parameter_info;
if target_info.system=system_x86_64_win64 then
@ -91,7 +91,7 @@ implementation
end;
function tx86_64procinfo.calc_stackframe_size:longint;
function tcpuprocinfo.calc_stackframe_size:longint;
begin
maxpushedparasize:=align(maxpushedparasize,max(current_settings.alignment.localalignmin,16));
{ Note 1: when tg.direction>0, tg.lasttemp is already offset by maxpushedparasize
@ -105,7 +105,7 @@ implementation
result:=Align(tg.direction*tg.lasttemp+maxpushedparasize,8);
end;
procedure tx86_64procinfo.add_finally_scope(startlabel,endlabel,handler:TAsmSymbol;implicit:Boolean);
procedure tcpuprocinfo.add_finally_scope(startlabel,endlabel,handler:TAsmSymbol;implicit:Boolean);
begin
unwindflags:=unwindflags or 2;
if implicit then { also needs catch functionality }
@ -123,7 +123,7 @@ implementation
scopes.concat(tai_const.create_rva_sym(handler));
end;
procedure tx86_64procinfo.add_except_scope(trylabel,exceptlabel,endlabel,filter:TAsmSymbol);
procedure tcpuprocinfo.add_except_scope(trylabel,exceptlabel,endlabel,filter:TAsmSymbol);
begin
unwindflags:=unwindflags or 3;
inc(scopecount);
@ -139,7 +139,7 @@ implementation
scopes.concat(tai_const.create_rva_sym(endlabel));
end;
procedure tx86_64procinfo.dump_scopes(list: TAsmList);
procedure tcpuprocinfo.dump_scopes(list: TAsmList);
var
hdir: tai_seh_directive;
begin
@ -156,12 +156,12 @@ implementation
new_section(list,sec_code,lower(procdef.mangledname),0);
end;
destructor tx86_64procinfo.destroy;
destructor tcpuprocinfo.destroy;
begin
scopes.free;
inherited destroy;
end;
begin
cprocinfo:=tx86_64procinfo;
cprocinfo:=tcpuprocinfo;
end.

View File

@ -341,7 +341,7 @@ procedure tx64tryfinallynode.pass_generate_code;
cg.a_label(current_asmdata.CurrAsmList,endfinallylabel);
{ generate the scope record in .xdata }
tx86_64procinfo(current_procinfo).add_finally_scope(trylabel,endtrylabel,
tcpuprocinfo(current_procinfo).add_finally_scope(trylabel,endtrylabel,
current_asmdata.RefAsmSymbol(finalizepi.procdef.mangledname,AT_FUNCTION),catch_frame);
if implicitframe then
@ -515,7 +515,7 @@ procedure tx64tryexceptnode.pass_generate_code;
emit_nop;
cg.a_label(current_asmdata.CurrAsmList,endexceptlabel);
tx86_64procinfo(current_procinfo).add_except_scope(trylabel,exceptlabel,endexceptlabel,filterlabel);
tcpuprocinfo(current_procinfo).add_except_scope(trylabel,exceptlabel,endexceptlabel,filterlabel);
errorexit:
{ restore all saved labels }