mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-01 17:39:31 +02:00
* fixed some crashes and a rte 201
This commit is contained in:
parent
f931650b24
commit
938f46f246
@ -1426,9 +1426,10 @@ const
|
||||
else if ref2.offset <> 0 Then
|
||||
if ref2.base <> R_NO then
|
||||
a_op_const_reg_reg(list,OP_ADD,OS_32,ref2.offset,ref2.base,r)
|
||||
{ FixRef makes sure that "(ref.index <> R_NO) and (ref.offset <> 0)" never}
|
||||
{ occurs, so now only ref.offset has to be loaded }
|
||||
else a_load_const_reg(list,OS_32,ref2.offset,r)
|
||||
{ FixRef makes sure that "(ref.index <> R_NO) and (ref.offset <> 0)" never}
|
||||
{ occurs, so now only ref.offset has to be loaded }
|
||||
else
|
||||
a_load_const_reg(list,OS_32,ref2.offset,r)
|
||||
else if ref.index <> R_NO Then
|
||||
list.concat(taicpu.op_reg_reg_reg(A_ADD,r,ref2.base,ref2.index))
|
||||
else if (ref2.base <> R_NO) and
|
||||
@ -1681,7 +1682,8 @@ const
|
||||
function tcgppc.get_rlwi_const(a: aword; var l1, l2: longint): boolean;
|
||||
|
||||
var
|
||||
temp, testbit: longint;
|
||||
temp : longint;
|
||||
testbit : aword;
|
||||
compare: boolean;
|
||||
|
||||
begin
|
||||
@ -1933,7 +1935,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.66 2002-11-28 10:55:16 olle
|
||||
Revision 1.67 2002-12-15 19:22:01 florian
|
||||
* fixed some crashes and a rte 201
|
||||
|
||||
Revision 1.66 2002/11/28 10:55:16 olle
|
||||
* macos: changing code gen for references to globals
|
||||
|
||||
Revision 1.65 2002/11/07 15:50:23 jonas
|
||||
|
@ -129,6 +129,24 @@ unit cpupara;
|
||||
loc : tloc;
|
||||
is_64bit: boolean;
|
||||
|
||||
procedure assignintreg;
|
||||
|
||||
begin
|
||||
if nextintreg<=R_10 then
|
||||
begin
|
||||
hp.paraloc.loc:=LOC_REGISTER;
|
||||
hp.paraloc.register:=nextintreg;
|
||||
inc(nextintreg);
|
||||
end
|
||||
else
|
||||
begin
|
||||
hp.paraloc.loc:=LOC_REFERENCE;
|
||||
hp.paraloc.reference.index:=stack_pointer_reg;
|
||||
hp.paraloc.reference.offset:=stack_offset;
|
||||
inc(stack_offset,4);
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
nextintreg:=R_3;
|
||||
nextfloatreg:=R_F1;
|
||||
@ -217,21 +235,7 @@ unit cpupara;
|
||||
begin
|
||||
hp.paraloc.size:=OS_ADDR;
|
||||
if push_addr_param(hp.paratype.def,p.proccalloption) or (hp.paratyp in [vs_var,vs_out]) then
|
||||
begin
|
||||
if nextintreg<=R_10 then
|
||||
begin
|
||||
hp.paraloc.loc:=LOC_REGISTER;
|
||||
hp.paraloc.register:=nextintreg;
|
||||
inc(nextintreg);
|
||||
end
|
||||
else
|
||||
begin
|
||||
hp.paraloc.loc:=LOC_REFERENCE;
|
||||
hp.paraloc.reference.index:=stack_pointer_reg;
|
||||
hp.paraloc.reference.offset:=stack_offset;
|
||||
inc(stack_offset,4);
|
||||
end;
|
||||
end
|
||||
assignintreg
|
||||
else
|
||||
begin
|
||||
hp.paraloc.loc:=LOC_REFERENCE;
|
||||
@ -295,7 +299,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.17 2002-11-25 17:43:27 peter
|
||||
Revision 1.18 2002-12-15 19:22:01 florian
|
||||
* fixed some crashes and a rte 201
|
||||
|
||||
Revision 1.17 2002/11/25 17:43:27 peter
|
||||
* splitted defbase in defutil,symutil,defcmp
|
||||
* merged isconvertable and is_equal into compare_defs(_ext)
|
||||
* made operator search faster by walking the list only once
|
||||
|
@ -66,7 +66,7 @@ unit cpupi;
|
||||
procedure tppcprocinfo.after_header;
|
||||
begin
|
||||
procdef.parast.address_fixup:=0;
|
||||
if procdef.localst.symtablelevel>1 then
|
||||
if assigned(procdef.localst) and (procdef.localst.symtablelevel>1) then
|
||||
begin
|
||||
procinfo.framepointer_offset:=procdef.parast.address_fixup;
|
||||
inc(procdef.parast.address_fixup,4);
|
||||
@ -82,7 +82,8 @@ unit cpupi;
|
||||
inc(procdef.parast.address_fixup,4);
|
||||
end;
|
||||
{ this value is necessary for nested procedures }
|
||||
procdef.localst.address_fixup:=align(procdef.parast.address_fixup+procdef.parast.datasize,16);
|
||||
if assigned(procdef.localst) then
|
||||
procdef.localst.address_fixup:=align(procdef.parast.address_fixup+procdef.parast.datasize,16);
|
||||
if assigned(aktprocdef.funcretsym) and
|
||||
not(paramanager.ret_in_param(procdef.rettype.def,procdef.proccalloption)) then
|
||||
procinfo.return_offset:=tg.direction*tfuncretsym(aktprocdef.funcretsym).address+procdef.localst.address_fixup;
|
||||
@ -123,7 +124,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2002-11-18 17:32:01 peter
|
||||
Revision 1.6 2002-12-15 19:22:01 florian
|
||||
* fixed some crashes and a rte 201
|
||||
|
||||
Revision 1.5 2002/11/18 17:32:01 peter
|
||||
* pass proccalloption to ret_in_xxx and push_xxx functions
|
||||
|
||||
Revision 1.4 2002/09/10 20:30:42 florian
|
||||
|
Loading…
Reference in New Issue
Block a user