* no_fast_exit if procedure contains implicit termination code

This commit is contained in:
pierre 1999-12-09 23:18:04 +00:00
parent eaf3767d85
commit dcaad61969
6 changed files with 39 additions and 7 deletions

View File

@ -88,6 +88,9 @@ implementation
{ true, if the procedure should be exported (only OS/2) }
exported : boolean;
{ true, if we can not use fast exit code }
no_fast_exit : boolean;
{ code for the current procedure }
aktproccode,aktentrycode,
aktexitcode,aktlocaldata : paasmoutput;
@ -288,6 +291,8 @@ implementation
framepointer:=R_NO;
globalsymbol:=false;
exported:=false;
no_fast_exit:=false;
aktentrycode:=new(paasmoutput,init);
aktexitcode:=new(paasmoutput,init);
aktproccode:=new(paasmoutput,init);
@ -400,7 +405,10 @@ end.
{
$Log$
Revision 1.51 1999-12-01 12:42:32 peter
Revision 1.52 1999-12-09 23:18:04 pierre
* no_fast_exit if procedure contains implicit termination code
Revision 1.51 1999/12/01 12:42:32 peter
* fixed bug 698
* removed some notes about unused vars

View File

@ -759,6 +759,8 @@ implementation
p^.right:=gentypeconvnode(p^.right,cansistringdef);
if not(is_ansistring(ld)) then
p^.left:=gentypeconvnode(p^.left,cansistringdef);
{ we use ansistrings so no fast exit here }
procinfo^.no_fast_exit:=true;
p^.resulttype:=cansistringdef;
{ this is only for add, the comparisaion is handled later }
p^.location.loc:=LOC_REGISTER;
@ -1188,7 +1190,10 @@ implementation
end.
{
$Log$
Revision 1.59 1999-12-01 12:42:33 peter
Revision 1.60 1999-12-09 23:18:04 pierre
* no_fast_exit if procedure contains implicit termination code
Revision 1.59 1999/12/01 12:42:33 peter
* fixed bug 698
* removed some notes about unused vars

View File

@ -1113,6 +1113,8 @@ implementation
p^.location.loc:=LOC_MEM;
{ this is wrong we still need one register PM
p^.registers32:=0; }
{ we use ansistrings so no fast exit here }
procinfo^.no_fast_exit:=true;
p^.registers32:=1;
end;
end
@ -1221,7 +1223,10 @@ implementation
end.
{
$Log$
Revision 1.74 1999-11-30 10:40:57 peter
Revision 1.75 1999-12-09 23:18:04 pierre
* no_fast_exit if procedure contains implicit termination code
Revision 1.74 1999/11/30 10:40:57 peter
+ ttype, tsymlist
Revision 1.73 1999/11/18 15:34:49 pierre

View File

@ -285,6 +285,9 @@ implementation
end;
{ for simplicity lets first keep all ansistrings
as LOC_MEM, could also become LOC_REGISTER }
if pstringdef(p^.resulttype)^.string_typ in [st_ansistring,st_widestring] then
{ we may use ansistrings so no fast exit here }
procinfo^.no_fast_exit:=true;
p^.location.loc:=LOC_MEM;
end;
@ -961,7 +964,10 @@ implementation
end.
{
$Log$
Revision 1.54 1999-11-30 10:40:57 peter
Revision 1.55 1999-12-09 23:18:04 pierre
* no_fast_exit if procedure contains implicit termination code
Revision 1.54 1999/11/30 10:40:57 peter
+ ttype, tsymlist
Revision 1.53 1999/11/18 15:34:49 pierre

View File

@ -344,7 +344,7 @@ implementation
{ Check the 2 types }
p^.left:=gentypeconvnode(p^.left,p^.resulttype);
firstpass(p^.left);
if ret_in_param(p^.resulttype) then
if ret_in_param(p^.resulttype) or procinfo^.no_fast_exit then
begin
pt:=genzeronode(funcretn);
pt^.rettype.setdef(p^.resulttype);
@ -517,7 +517,10 @@ implementation
end.
{
$Log$
Revision 1.28 1999-12-02 17:27:56 peter
Revision 1.29 1999-12-09 23:18:05 pierre
* no_fast_exit if procedure contains implicit termination code
Revision 1.28 1999/12/02 17:27:56 peter
* give error when for counter is in other lexlevel
Revision 1.27 1999/11/30 10:40:58 peter

View File

@ -98,6 +98,8 @@ implementation
if pconstsym(p^.symtableentry)^.consttyp=constresourcestring then
begin
p^.resulttype:=cansistringdef;
{ we use ansistrings so no fast exit here }
procinfo^.no_fast_exit:=true;
p^.location.loc:=LOC_MEM;
end
else
@ -472,7 +474,10 @@ implementation
end.
{
$Log$
Revision 1.53 1999-12-02 17:28:53 peter
Revision 1.54 1999-12-09 23:18:05 pierre
* no_fast_exit if procedure contains implicit termination code
Revision 1.53 1999/12/02 17:28:53 peter
* fixed procvar -> pointer for array of const
Revision 1.52 1999/11/30 10:40:58 peter