mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-28 23:04:20 +02:00
* Xtensa: fix passing of floating point parameters
git-svn-id: trunk@44541 -
This commit is contained in:
parent
66cbee5e31
commit
c1c201f93c
@ -223,7 +223,7 @@ unit cpupara;
|
|||||||
exit;
|
exit;
|
||||||
|
|
||||||
paraloc:=result.add_location;
|
paraloc:=result.add_location;
|
||||||
if retcgsize in [OS_64,OS_S64] then
|
if retcgsize in [OS_64,OS_S64,OS_F64] then
|
||||||
begin
|
begin
|
||||||
{ low 32bits }
|
{ low 32bits }
|
||||||
paraloc^.loc:=LOC_REGISTER;
|
paraloc^.loc:=LOC_REGISTER;
|
||||||
@ -275,7 +275,7 @@ unit cpupara;
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
paraloc^.register:=newreg(R_INTREGISTER,RS_FUNCTION_RETURN_REG,cgsize2subreg(R_INTREGISTER,retcgsize));
|
paraloc^.register:=newreg(R_INTREGISTER,RS_FUNCTION_RETURN_REG,cgsize2subreg(R_INTREGISTER,retcgsize));
|
||||||
paraloc^.size:=retcgsize;
|
paraloc^.size:=OS_32;
|
||||||
paraloc^.def:=result.def;
|
paraloc^.def:=result.def;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -424,30 +424,10 @@ unit cpupara;
|
|||||||
inc(nextintreg);
|
inc(nextintreg);
|
||||||
dec(paralen,tcgsize2size[paraloc^.size]);
|
dec(paralen,tcgsize2size[paraloc^.size]);
|
||||||
end
|
end
|
||||||
else if (loc = LOC_FPUREGISTER) and
|
|
||||||
(nextintreg <= maxintreg) then
|
|
||||||
begin
|
|
||||||
paraloc^.loc:=loc;
|
|
||||||
paraloc^.size := paracgsize;
|
|
||||||
paraloc^.def := paradef;
|
|
||||||
paraloc^.register:=newreg(R_FPUREGISTER,nextintreg,R_SUBWHOLE);
|
|
||||||
inc(nextintreg);
|
|
||||||
dec(paralen,tcgsize2size[paraloc^.size]);
|
|
||||||
end
|
|
||||||
else { LOC_REFERENCE }
|
else { LOC_REFERENCE }
|
||||||
begin
|
begin
|
||||||
paraloc^.loc:=LOC_REFERENCE;
|
paraloc^.loc:=LOC_REFERENCE;
|
||||||
case loc of
|
case loc of
|
||||||
LOC_FPUREGISTER:
|
|
||||||
begin
|
|
||||||
paraloc^.size:=int_float_cgsize(paralen);
|
|
||||||
case paraloc^.size of
|
|
||||||
OS_F32: paraloc^.def:=s32floattype;
|
|
||||||
OS_F64: paraloc^.def:=s64floattype;
|
|
||||||
else
|
|
||||||
internalerror(2020031406);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
LOC_REGISTER,
|
LOC_REGISTER,
|
||||||
LOC_REFERENCE:
|
LOC_REFERENCE:
|
||||||
begin
|
begin
|
||||||
@ -496,7 +476,7 @@ unit cpupara;
|
|||||||
var
|
var
|
||||||
cur_stack_offset: aword;
|
cur_stack_offset: aword;
|
||||||
parasize, l: longint;
|
parasize, l: longint;
|
||||||
curintreg, firstfloatreg: tsuperregister;
|
curintreg: tsuperregister;
|
||||||
i : integer;
|
i : integer;
|
||||||
hp: tparavarsym;
|
hp: tparavarsym;
|
||||||
paraloc: pcgparalocation;
|
paraloc: pcgparalocation;
|
||||||
|
Loading…
Reference in New Issue
Block a user