mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 04:29:29 +02:00
* no_fast_exit if procedure contains implicit termination code
This commit is contained in:
parent
eaf3767d85
commit
dcaad61969
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user