mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 11:29:24 +02:00
- m68k: removed garbage (tab characters, commented out code, unused variables, debug output and alike). Functionality unchanged.
git-svn-id: trunk@28070 -
This commit is contained in:
parent
f7dd4f640a
commit
3ffa32a660
@ -19,8 +19,6 @@
|
||||
|
||||
****************************************************************************
|
||||
}
|
||||
{ Generates the argument location information for 680x0.
|
||||
}
|
||||
unit cpupara;
|
||||
|
||||
{$i fpcdefs.inc}
|
||||
@ -113,65 +111,6 @@ unit cpupara;
|
||||
end;
|
||||
end;
|
||||
|
||||
function getparaloc(p : tdef) : tcgloc;
|
||||
|
||||
begin
|
||||
result:=LOC_REFERENCE;
|
||||
(* Later, the LOC_REFERENCE is in most cases changed into LOC_REGISTER
|
||||
if push_addr_param for the def is true
|
||||
case p.typ of
|
||||
orddef:
|
||||
result:=LOC_REGISTER;
|
||||
floatdef:
|
||||
result:=LOC_FPUREGISTER;
|
||||
enumdef:
|
||||
result:=LOC_REGISTER;
|
||||
pointerdef:
|
||||
result:=LOC_REGISTER;
|
||||
formaldef:
|
||||
result:=LOC_REGISTER;
|
||||
classrefdef:
|
||||
result:=LOC_REGISTER;
|
||||
recorddef:
|
||||
if (target_info.abi<>abi_powerpc_aix) then
|
||||
result:=LOC_REFERENCE
|
||||
else
|
||||
result:=LOC_REGISTER;
|
||||
objectdef:
|
||||
if is_object(p) then
|
||||
result:=LOC_REFERENCE
|
||||
else
|
||||
result:=LOC_REGISTER;
|
||||
stringdef:
|
||||
if is_shortstring(p) or is_longstring(p) then
|
||||
result:=LOC_REFERENCE
|
||||
else
|
||||
result:=LOC_REGISTER;
|
||||
procvardef:
|
||||
if (po_methodpointer in tprocvardef(p).procoptions) then
|
||||
result:=LOC_REFERENCE
|
||||
else
|
||||
result:=LOC_REGISTER;
|
||||
filedef:
|
||||
result:=LOC_REGISTER;
|
||||
arraydef:
|
||||
result:=LOC_REFERENCE;
|
||||
setdef:
|
||||
if is_smallset(p) then
|
||||
result:=LOC_REGISTER
|
||||
else
|
||||
result:=LOC_REFERENCE;
|
||||
variantdef:
|
||||
result:=LOC_REFERENCE;
|
||||
{ avoid problems with errornous definitions }
|
||||
errordef:
|
||||
result:=LOC_REGISTER;
|
||||
else
|
||||
internalerror(2002071001);
|
||||
end;
|
||||
*)
|
||||
end;
|
||||
|
||||
|
||||
{ TODO: copied from ppc cg, needs work}
|
||||
function tm68kparamanager.push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;
|
||||
@ -296,29 +235,21 @@ unit cpupara;
|
||||
hp : tparavarsym;
|
||||
paracgsize : tcgsize;
|
||||
paralen : aint;
|
||||
parasize : longint;
|
||||
paradef : tdef;
|
||||
paradef : tdef;
|
||||
i : longint;
|
||||
loc : tcgloc;
|
||||
nextintreg,
|
||||
nextfloatreg : tsuperregister;
|
||||
stack_offset : longint;
|
||||
stack_offset : longint;
|
||||
firstparaloc : boolean;
|
||||
|
||||
begin
|
||||
result:=0;
|
||||
nextintreg:=curintreg;
|
||||
nextfloatreg:=curfloatreg;
|
||||
stack_offset:=cur_stack_offset;
|
||||
|
||||
parasize:=0;
|
||||
stack_offset:=cur_stack_offset;
|
||||
|
||||
for i:=0 to paras.count-1 do
|
||||
begin
|
||||
hp:=tparavarsym(paras[i]);
|
||||
paradef:=hp.vardef;
|
||||
paradef:=hp.vardef;
|
||||
|
||||
{ syscall for AmigaOS can have already a paraloc set }
|
||||
{ syscall for AmigaOS can have already a paraloc set }
|
||||
if (vo_has_explicit_paraloc in hp.varoptions) then
|
||||
begin
|
||||
if not(vo_is_syscall_lib in hp.varoptions) then
|
||||
@ -331,13 +262,10 @@ unit cpupara;
|
||||
if (p.proccalloption in cstylearrayofconst) and
|
||||
is_array_of_const(paradef) then
|
||||
begin
|
||||
{$ifdef DEBUG_CHARLIE}
|
||||
writeln('loc register');
|
||||
{$endif DEBUG_CHARLIE}
|
||||
paraloc:=hp.paraloc[side].add_location;
|
||||
{ hack: the paraloc must be valid, but is not actually used }
|
||||
paraloc^.loc:=LOC_REGISTER;
|
||||
paraloc^.register:=NR_D0;
|
||||
paraloc^.register:=NR_D0;
|
||||
paraloc^.size:=OS_ADDR;
|
||||
paraloc^.def:=voidpointertype;
|
||||
break;
|
||||
@ -345,11 +273,7 @@ unit cpupara;
|
||||
|
||||
if push_addr_param(hp.varspez,paradef,p.proccalloption) then
|
||||
begin
|
||||
{$ifdef DEBUG_CHARLIE}
|
||||
writeln('loc register');
|
||||
{$endif DEBUG_CHARLIE}
|
||||
paradef:=getpointerdef(paradef);
|
||||
loc:=LOC_REGISTER;
|
||||
paracgsize := OS_ADDR;
|
||||
paralen := tcgsize2size[OS_ADDR];
|
||||
end
|
||||
@ -360,7 +284,6 @@ unit cpupara;
|
||||
else
|
||||
paralen:=tcgsize2size[def_cgsize(paradef)];
|
||||
|
||||
loc:=getparaloc(paradef);
|
||||
paracgsize:=def_cgsize(paradef);
|
||||
{ for things like formaldef }
|
||||
if (paracgsize=OS_NO) then
|
||||
@ -388,90 +311,30 @@ unit cpupara;
|
||||
while (paralen > 0) do
|
||||
begin
|
||||
paraloc:=hp.paraloc[side].add_location;
|
||||
(*
|
||||
by default, the m68k doesn't know any register parameters (FK)
|
||||
if (loc = LOC_REGISTER) and
|
||||
(nextintreg <= RS_D2) then
|
||||
begin
|
||||
//writeln('loc register');
|
||||
paraloc^.loc := loc;
|
||||
{ make sure we don't lose whether or not the type is signed }
|
||||
if (paradef.typ <> orddef) then
|
||||
paracgsize := int_cgsize(paralen);
|
||||
if (paracgsize in [OS_NO,OS_64,OS_S64]) then
|
||||
paraloc^.size := OS_INT
|
||||
else
|
||||
paraloc^.size := paracgsize;
|
||||
paraloc^.register:=newreg(R_INTREGISTER,nextintreg,R_SUBNONE);
|
||||
inc(nextintreg);
|
||||
dec(paralen,tcgsize2size[paraloc^.size]);
|
||||
end
|
||||
else if (loc = LOC_FPUREGISTER) and
|
||||
(nextfloatreg <= RS_FP2) then
|
||||
begin
|
||||
// writeln('loc fpuregister');
|
||||
paraloc^.loc:=loc;
|
||||
paraloc^.size := paracgsize;
|
||||
paraloc^.register:=newreg(R_FPUREGISTER,nextfloatreg,R_SUBWHOLE);
|
||||
inc(nextfloatreg);
|
||||
dec(paralen,tcgsize2size[paraloc^.size]);
|
||||
end
|
||||
else { LOC_REFERENCE }
|
||||
*)
|
||||
begin
|
||||
{$ifdef DEBUG_CHARLIE}
|
||||
writeln('loc reference');
|
||||
{$endif DEBUG_CHARLIE}
|
||||
paraloc^.loc:=LOC_REFERENCE;
|
||||
paraloc^.def:=get_paraloc_def(paradef,paralen,firstparaloc);
|
||||
if paradef.typ<>orddef then
|
||||
paracgsize:=int_cgsize(paralen);
|
||||
if paracgsize=OS_NO then
|
||||
paraloc^.size:=OS_INT
|
||||
else
|
||||
paraloc^.size:=paracgsize;
|
||||
if (side = callerside) then
|
||||
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
||||
else
|
||||
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
||||
paraloc^.reference.offset:=stack_offset;
|
||||
inc(stack_offset,align(paralen,4));
|
||||
paralen := 0;
|
||||
end;
|
||||
|
||||
paraloc^.loc:=LOC_REFERENCE;
|
||||
paraloc^.def:=get_paraloc_def(paradef,paralen,firstparaloc);
|
||||
if paradef.typ<>orddef then
|
||||
paracgsize:=int_cgsize(paralen);
|
||||
if paracgsize=OS_NO then
|
||||
paraloc^.size:=OS_INT
|
||||
else
|
||||
paraloc^.size:=paracgsize;
|
||||
if (side = callerside) then
|
||||
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
||||
else
|
||||
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
||||
paraloc^.reference.offset:=stack_offset;
|
||||
inc(stack_offset,align(paralen,4));
|
||||
paralen := 0;
|
||||
|
||||
firstparaloc:=false;
|
||||
end;
|
||||
end;
|
||||
result:=stack_offset;
|
||||
// writeln('stack offset:',stack_offset);
|
||||
end;
|
||||
|
||||
|
||||
{
|
||||
|
||||
if push_addr_param(hp.varspez,paradef,p.proccalloption) then
|
||||
paracgsize:=OS_ADDR
|
||||
else
|
||||
begin
|
||||
paracgsize:=def_cgsize(paradef);
|
||||
if paracgsize=OS_NO then
|
||||
paracgsize:=OS_ADDR;
|
||||
end;
|
||||
hp.paraloc[side].size:=paracgsize;
|
||||
hp.paraloc[side].Alignment:=std_param_align;
|
||||
paraloc:=hp.paraloc[side].add_location;
|
||||
paraloc^.size:=paracgsize;
|
||||
paraloc^.loc:=LOC_REFERENCE;
|
||||
if side=callerside then
|
||||
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
||||
else
|
||||
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
||||
paraloc^.reference.offset:=target_info.first_parm_offset+parasize;
|
||||
end;
|
||||
create_funcretloc_info(p,side);
|
||||
result:=parasize;
|
||||
end;
|
||||
}
|
||||
|
||||
function tm68kparamanager.parse_loc_string_to_register(var locreg: tregister; const s : string): boolean;
|
||||
begin
|
||||
locreg:=std_regnum_search(lowercase(s));
|
||||
@ -516,10 +379,7 @@ unit cpupara;
|
||||
|
||||
|
||||
procedure tm68kparamanager.createtempparaloc(list: TAsmList;calloption : tproccalloption;parasym : tparavarsym;can_use_final_stack_loc : boolean;var cgpara:TCGPara);
|
||||
var
|
||||
paraloc : pcgparalocation;
|
||||
begin
|
||||
paraloc:=parasym.paraloc[callerside].location;
|
||||
{ Never a need for temps when value is pushed (calls inside parameters
|
||||
will simply allocate even more stack space for their parameters) }
|
||||
if not(use_fixed_stack) then
|
||||
|
Loading…
Reference in New Issue
Block a user