+ complex results for assembler functions, fixes bug0155

This commit is contained in:
florian 1999-02-09 15:45:46 +00:00
parent 2d2cfabb3f
commit b73b83a01b
2 changed files with 17 additions and 6 deletions

View File

@ -559,7 +559,8 @@ implementation
else
begin
exprasmlist^.concat(new(pai386,op_csymbol_reg(A_MOV,S_L,
newcsymbol(pobjectdef(p^.methodpointer^.resulttype)^.vmt_mangledname,0),R_ESI)));
newcsymbol(pobjectdef(
p^.methodpointer^.resulttype)^.vmt_mangledname,0),R_ESI)));
maybe_concat_external(pobjectdef(p^.methodpointer^.resulttype)^.owner,
pobjectdef(p^.methodpointer^.resulttype)^.vmt_mangledname);
end;
@ -1299,7 +1300,10 @@ implementation
end.
{
$Log$
Revision 1.65 1999-02-08 11:29:04 pierre
Revision 1.66 1999-02-09 15:45:46 florian
+ complex results for assembler functions, fixes bug0155
Revision 1.65 1999/02/08 11:29:04 pierre
* fix for bug0214
several problems where combined
search_class_member did not set srsymtable

View File

@ -1221,16 +1221,20 @@ unit pstatmnt;
usedinproc:=usedinproc or ($800 shr word(R_D0))
{$endif}
end
{
else if not is_fpu(procinfo.retdef) then
{ should we allow assembler functions of big elements ? }
should we allow assembler functions of big elements ?
YES (FK)!!
Message(parser_e_asm_incomp_with_function_return);
end;
}
end;
{ set the framepointer to esp for assembler functions }
{ but only if the are no local variables }
{ added no parameter also (PM) }
if ((aktprocsym^.definition^.options and poassembler)<>0) and
(aktprocsym^.definition^.localst^.datasize=0) and
(aktprocsym^.definition^.parast^.datasize=0) then
(aktprocsym^.definition^.parast^.datasize=0) and
not(ret_in_param(aktprocsym^.definition^.retdef)) then
begin
{$ifdef i386}
procinfo.framepointer:=R_ESP;
@ -1255,7 +1259,10 @@ unit pstatmnt;
end.
{
$Log$
Revision 1.62 1999-01-27 13:06:57 pierre
Revision 1.63 1999-02-09 15:45:47 florian
+ complex results for assembler functions, fixes bug0155
Revision 1.62 1999/01/27 13:06:57 pierre
* memory leak in case optimization fixed
Revision 1.61 1999/01/25 22:49:09 peter