From 8ff579277644d0dd2fffbdf05db60d2d8c795647 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 23 May 2003 14:27:35 +0000 Subject: [PATCH] * remove some unit dependencies * current_procinfo changes to store more info --- compiler/aasmbase.pas | 26 ++++++++++++++++---------- compiler/cgbase.pas | 23 +++++++++++++++-------- compiler/cgobj.pas | 8 ++++++-- compiler/fmodule.pas | 18 +++++++++++++++++- compiler/nbas.pas | 8 ++++++-- compiler/ncal.pas | 7 ++++++- compiler/ncgadd.pas | 9 ++++++--- compiler/ncgcal.pas | 17 +++++++++-------- compiler/ncgcnv.pas | 10 +++++++--- compiler/ncgflw.pas | 8 ++++++-- compiler/ncginl.pas | 8 ++++++-- compiler/ncgld.pas | 10 +++++++--- compiler/ncgmat.pas | 8 ++++++-- compiler/ncgutil.pas | 24 ++++++++++-------------- compiler/nld.pas | 13 ++++++++----- compiler/nobj.pas | 10 +++++++--- compiler/pdecobj.pas | 14 +++++--------- compiler/regvars.pas | 8 ++++++-- compiler/symtable.pas | 8 +++++++- 19 files changed, 156 insertions(+), 81 deletions(-) diff --git a/compiler/aasmbase.pas b/compiler/aasmbase.pas index c5a60849f2..36bedecd66 100644 --- a/compiler/aasmbase.pas +++ b/compiler/aasmbase.pas @@ -87,7 +87,7 @@ interface is_addr : boolean; labelnr : longint; constructor create(nr:longint); - constructor createdata(nr:longint); + constructor createdata(const modulename:string;nr:longint); constructor createaddr(nr:longint); function getname:string;override; end; @@ -178,7 +178,8 @@ interface nextaltnr : longint; nextlabelnr : longint; public - name : string[80]; + name, + realname : string[80]; symbolsearch : tdictionary; { contains ALL assembler symbols } usedasmsymbollist : tsinglelist; { ppu } @@ -227,7 +228,7 @@ implementation {$else} strings, {$endif} - fmodule,verbose; + verbose; const symbolsgrow = 100; @@ -253,7 +254,6 @@ implementation procedure tasmsymbol.reset; begin -{ WriteLn(ClassName,' InstanceSize :',InstanceSize);} { reset section info } section:=sec_none; address:=0; @@ -317,12 +317,12 @@ implementation end; - constructor tasmlabel.createdata(nr:longint); + constructor tasmlabel.createdata(const modulename:string;nr:longint); begin; labelnr:=nr; if (cs_create_smart in aktmoduleswitches) or target_asm.labelprefix_only_inside_procedure then - inherited create('_$'+current_module.modulename^+'$_L'+tostr(labelnr),AB_GLOBAL,AT_DATA) + inherited create('_$'+modulename+'$_L'+tostr(labelnr),AB_GLOBAL,AT_DATA) else inherited create(target_asm.labelprefix+tostr(labelnr),AB_LOCAL,AT_DATA); is_set:=false; @@ -337,6 +337,7 @@ implementation is_addr := true; end; + function tasmlabel.getname:string; begin getname:=inherited getname; @@ -657,7 +658,8 @@ implementation constructor TAsmLibraryData.create(const n:string); begin inherited create; - name:=n; + realname:=n; + name:=upper(n); { symbols } symbolsearch:=tdictionary.create; symbolsearch.usehash; @@ -861,7 +863,7 @@ implementation if is_addr then hp:=tasmlabel.createaddr(nr) else if is_data then - hp:=tasmlabel.createdata(nr) + hp:=tasmlabel.createdata(name,nr) else hp:=tasmlabel.create(nr); symbolsearch.insert(hp); @@ -879,7 +881,7 @@ implementation procedure TAsmLibraryData.getdatalabel(var l : tasmlabel); begin - l:=tasmlabel.createdata(nextlabelnr); + l:=tasmlabel.createdata(name,nextlabelnr); inc(nextlabelnr); symbolsearch.insert(l); end; @@ -903,7 +905,11 @@ implementation end. { $Log$ - Revision 1.14 2003-04-06 21:11:23 olle + Revision 1.15 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.14 2003/04/06 21:11:23 olle * changed newasmsymbol to newasmsymboldata for data symbols Revision 1.13 2003/01/30 21:46:20 peter diff --git a/compiler/cgbase.pas b/compiler/cgbase.pas index 25111342c3..11d0b3673d 100644 --- a/compiler/cgbase.pas +++ b/compiler/cgbase.pas @@ -32,7 +32,7 @@ unit cgbase; { common } cclasses, { global } - globals,verbose, + globtype,globals,verbose, { symtable } symconst,symtype,symdef,symsym, { aasm } @@ -44,8 +44,6 @@ unit cgbase; tprocinfoflag=( {# procedure uses asm } pi_uses_asm, - {# procedure is exported by an unit } - pi_is_global, {# procedure does a call } pi_do_call, {# procedure has a try statement = no register optimization } @@ -61,11 +59,19 @@ unit cgbase; {# This object gives information on the current routine being compiled. } - tprocinfo = class + tprocinfo = class(tlinkedlistitem) { pointer to parent in nested procedures } parent : tprocinfo; {# the definition of the routine itself } procdef : tprocdef; + { file location of begin of procedure } + entrypos : tfileposinfo; + { file location of end of procedure } + exitpos : tfileposinfo; + { local switches at begin of procedure } + entryswitches : tlocalswitches; + { local switches at end of procedure } + exitswitches : tlocalswitches; {# offset from frame pointer to get parent frame pointer reference (used in nested routines only) On the PowerPC, this is used to store the offset where the @@ -185,9 +191,6 @@ unit cgbase; { also an exit label, only used we need to clear only the stack } aktexit2label : tasmlabel; - {# only used in constructor for fail keyword or if getmem fails } - quickexitlabel : tasmlabel; - {# true, if there was an error while code generation occurs } codegenerror : boolean; @@ -579,7 +582,11 @@ implementation end. { $Log$ - Revision 1.50 2003-05-16 20:54:12 jonas + Revision 1.51 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.50 2003/05/16 20:54:12 jonas - undid previous commit, it wasn't necessary Revision 1.49 2003/05/16 20:00:39 jonas diff --git a/compiler/cgobj.pas b/compiler/cgobj.pas index 202eee47ac..e32dfdb7f0 100644 --- a/compiler/cgobj.pas +++ b/compiler/cgobj.pas @@ -39,7 +39,7 @@ unit cgobj; uses cclasses,aasmbase,aasmtai,aasmcpu,symtable, - cpubase,cpuinfo,cpupara, + cpubase,cpuinfo, cginfo, symconst,symbase,symtype,symdef,node {$ifdef delphi} @@ -1697,7 +1697,11 @@ finalization end. { $Log$ - Revision 1.98 2003-05-15 18:58:53 peter + Revision 1.99 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.98 2003/05/15 18:58:53 peter * removed selfpointer_offset, vmtpointer_offset * tvarsym.adjusted_address * address in localsymtable is now in the real direction diff --git a/compiler/fmodule.pas b/compiler/fmodule.pas index 08c38619db..b2e9f5a86d 100644 --- a/compiler/fmodule.pas +++ b/compiler/fmodule.pas @@ -131,6 +131,7 @@ interface procedure flagdependent(callermodule:tmodule); function addusedunit(hp:tmodule;inuses:boolean):tused_unit; procedure numberunits; + procedure setmodulename(const s:string); end; tused_unit = class(tlinkedlistitem) @@ -636,10 +637,25 @@ uses end; + procedure tmodule.setmodulename(const s:string); + begin + stringdispose(modulename); + stringdispose(realmodulename); + modulename:=stringdup(upper(s)); + realmodulename:=stringdup(s); + { also update asmlibrary names } + librarydata.name:=modulename^; + librarydata.realname:=realmodulename^; + end; + end. { $Log$ - Revision 1.33 2003-04-27 11:21:32 peter + Revision 1.34 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.33 2003/04/27 11:21:32 peter * aktprocdef renamed to current_procdef * procinfo renamed to current_procinfo * procinfo will now be stored in current_module so it can be diff --git a/compiler/nbas.pas b/compiler/nbas.pas index 267a4f3b5c..c80056a69d 100644 --- a/compiler/nbas.pas +++ b/compiler/nbas.pas @@ -550,13 +550,13 @@ implementation begin result:=nil; resulttype:=voidtype; + include(current_procinfo.flags,pi_uses_asm); end; function tasmnode.pass_1 : tnode; begin result:=nil; expectloc:=LOC_VOID; - include(current_procinfo.flags,pi_uses_asm); end; @@ -800,7 +800,11 @@ begin end. { $Log$ - Revision 1.51 2003-05-17 13:30:08 jonas + Revision 1.52 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.51 2003/05/17 13:30:08 jonas * changed tt_persistant to tt_persistent :) * tempcreatenode now doesn't accept a boolean anymore for persistent temps, but a ttemptype, so you can also create ansistring temps etc diff --git a/compiler/ncal.pas b/compiler/ncal.pas index 415fd5bebe..82c9e91830 100644 --- a/compiler/ncal.pas +++ b/compiler/ncal.pas @@ -1927,6 +1927,7 @@ type when there is only one proc definition, else the loadnode will give a strange error } if not(assigned(left)) and + not(nf_inherited in flags) and (m_tp_procvar in aktmodeswitches) and (symtableprocentry.procdef_count=1) then begin @@ -2725,7 +2726,11 @@ begin end. { $Log$ - Revision 1.157 2003-05-17 14:05:58 jonas + Revision 1.158 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.157 2003/05/17 14:05:58 jonas * fixed callparatemp for ansi/widestring and interfacecoms Revision 1.156 2003/05/17 13:30:08 jonas diff --git a/compiler/ncgadd.pas b/compiler/ncgadd.pas index 7f0603e7be..1a2101239a 100644 --- a/compiler/ncgadd.pas +++ b/compiler/ncgadd.pas @@ -65,8 +65,7 @@ interface symconst,symdef,paramgr, aasmbase,aasmtai,aasmcpu,defutil,htypechk, cgbase,cpuinfo,pass_1,pass_2,regvars, - cpupara, - ncon,nset,ncgutil,tgobj,rgobj,rgcpu,cgobj, + ncon,nset,ncgutil,tgobj,rgobj,cgobj, {$ifdef cpu64bit} cg64f64 {$else cpu64bit} @@ -822,7 +821,11 @@ begin end. { $Log$ - Revision 1.9 2003-04-30 22:15:59 florian + Revision 1.10 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.9 2003/04/30 22:15:59 florian * some 64 bit adaptions in ncgadd * x86-64 now uses ncgadd * tparamanager.ret_in_acc doesn't return true anymore for a void-def diff --git a/compiler/ncgcal.pas b/compiler/ncgcal.pas index 83f0f7e35a..5df2919b1b 100644 --- a/compiler/ncgcal.pas +++ b/compiler/ncgcal.pas @@ -80,7 +80,7 @@ implementation gdb, {$endif GDB} cginfo,cgbase,pass_2, - cpuinfo,cpupi,aasmbase,aasmtai,aasmcpu, + cpuinfo,aasmbase,aasmtai,aasmcpu, nbas,nmem,nld,ncnv, {$ifdef x86} cga, @@ -90,7 +90,7 @@ implementation {$else cpu64bit} cg64f32, {$endif cpu64bit} - ncgutil,cgobj,tgobj,regvars,rgobj,rgcpu,cgcpu; + ncgutil,cgobj,tgobj,regvars,rgobj,rgcpu; var @@ -953,7 +953,7 @@ implementation oldinlining_procedure, nostackframe,make_global : boolean; inlineentrycode,inlineexitcode : TAAsmoutput; - oldexitlabel,oldexit2label,oldquickexitlabel:tasmlabel; + oldexitlabel,oldexit2label:tasmlabel; oldregstate: pointer; localsref : treference; {$ifdef GDB} @@ -991,7 +991,6 @@ implementation oldinlining_procedure:=inlining_procedure; oldexitlabel:=aktexitlabel; oldexit2label:=aktexit2label; - oldquickexitlabel:=quickexitlabel; oldprocdef:=current_procdef; oldprocinfo:=current_procinfo; objectlibrary.getlabel(aktexitlabel); @@ -1063,8 +1062,7 @@ implementation inlineentrycode:=TAAsmoutput.Create; inlineexitcode:=TAAsmoutput.Create; ps:=para_size; - make_global:=false; { to avoid warning } - genentrycode(inlineentrycode,make_global,0,ps,nostackframe,true); + genentrycode(inlineentrycode,0,ps,nostackframe,true); if po_assembler in current_procdef.procoptions then inlineentrycode.insert(Tai_marker.Create(asmblockstart)); exprasmList.concatlist(inlineentrycode); @@ -1108,7 +1106,6 @@ implementation current_procdef:=oldprocdef; aktexitlabel:=oldexitlabel; aktexit2label:=oldexit2label; - quickexitlabel:=oldquickexitlabel; inlining_procedure:=oldinlining_procedure; { reallocate the registers used for the current procedure's regvars, } @@ -1128,7 +1125,11 @@ begin end. { $Log$ - Revision 1.67 2003-05-17 13:30:08 jonas + Revision 1.68 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.67 2003/05/17 13:30:08 jonas * changed tt_persistant to tt_persistent :) * tempcreatenode now doesn't accept a boolean anymore for persistent temps, but a ttemptype, so you can also create ansistring temps etc diff --git a/compiler/ncgcnv.pas b/compiler/ncgcnv.pas index 3098a3761e..dc4c651185 100644 --- a/compiler/ncgcnv.pas +++ b/compiler/ncgcnv.pas @@ -64,10 +64,10 @@ interface cutils,verbose,globtype, aasmbase,aasmtai,aasmcpu,symconst,symdef,paramgr, ncon,ncal, - cpubase,cpuinfo,cpupara,systems, + cpubase,cpuinfo,systems, pass_2, cginfo,cgbase, - cgobj,cgcpu, + cgobj, ncgutil, tgobj,rgobj ; @@ -511,7 +511,11 @@ end. { $Log$ - Revision 1.39 2003-04-22 23:50:22 peter + Revision 1.40 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.39 2003/04/22 23:50:22 peter * firstpass uses expectloc * checks if there are differences between the expectloc and location.loc from secondpass in EXTDEBUG diff --git a/compiler/ncgflw.pas b/compiler/ncgflw.pas index b967704dd0..3afa39acd9 100644 --- a/compiler/ncgflw.pas +++ b/compiler/ncgflw.pas @@ -91,7 +91,7 @@ implementation nld,ncon, ncgutil, tgobj,rgobj,paramgr, - regvars,cgobj,cgcpu + regvars,cgobj {$ifndef cpu64bit} ,cg64f32 {$endif cpu64bit} @@ -1554,7 +1554,11 @@ begin end. { $Log$ - Revision 1.62 2003-05-17 13:30:08 jonas + Revision 1.63 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.62 2003/05/17 13:30:08 jonas * changed tt_persistant to tt_persistent :) * tempcreatenode now doesn't accept a boolean anymore for persistent temps, but a ttemptype, so you can also create ansistring temps etc diff --git a/compiler/ncginl.pas b/compiler/ncginl.pas index 149e12d3a2..acc8453f61 100644 --- a/compiler/ncginl.pas +++ b/compiler/ncginl.pas @@ -59,7 +59,7 @@ implementation cginfo,cgbase,pass_1,pass_2, cpuinfo,cpubase,paramgr, nbas,ncon,ncal,ncnv,nld, - tgobj,ncgutil,cgobj,rgobj,rgcpu + tgobj,ncgutil,cgobj,rgobj {$ifndef cpu64bit} ,cg64f32 {$endif cpu64bit} @@ -682,7 +682,11 @@ end. { $Log$ - Revision 1.30 2003-05-09 17:47:02 peter + Revision 1.31 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.30 2003/05/09 17:47:02 peter * self moved to hidden parameter * removed hdisposen,hnewn,selfn diff --git a/compiler/ncgld.pas b/compiler/ncgld.pas index 6147a17115..7692384945 100644 --- a/compiler/ncgld.pas +++ b/compiler/ncgld.pas @@ -53,8 +53,8 @@ implementation ncnv,ncon,nmem, aasmbase,aasmtai,aasmcpu,regvars, cginfo,cgbase,pass_2, - cpubase,cpuinfo,cpupara, - tgobj,ncgutil,cgobj,rgobj,rgcpu; + cpubase,cpuinfo, + tgobj,ncgutil,cgobj,rgobj; {***************************************************************************** SecondLoad @@ -915,7 +915,11 @@ begin end. { $Log$ - Revision 1.59 2003-05-15 18:58:53 peter + Revision 1.60 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.59 2003/05/15 18:58:53 peter * removed selfpointer_offset, vmtpointer_offset * tvarsym.adjusted_address * address in localsymtable is now in the real direction diff --git a/compiler/ncgmat.pas b/compiler/ncgmat.pas index f089a85c4a..c04c20c351 100644 --- a/compiler/ncgmat.pas +++ b/compiler/ncgmat.pas @@ -103,7 +103,7 @@ implementation pass_1,pass_2, ncon, cpuinfo, - tgobj,ncgutil,cgobj,rgobj,rgcpu,paramgr,cg64f32; + tgobj,ncgutil,cgobj,rgobj,paramgr,cg64f32; {***************************************************************************** TCGUNARYMINUSNODE @@ -467,7 +467,11 @@ begin end. { $Log$ - Revision 1.9 2003-04-23 20:16:04 peter + Revision 1.10 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.9 2003/04/23 20:16:04 peter + added currency support based on int64 + is_64bit for use in cg units instead of is_64bitint * removed cgmessage from n386add, replace with internalerrors diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas index 165fe10070..b27ad7d933 100644 --- a/compiler/ncgutil.pas +++ b/compiler/ncgutil.pas @@ -29,7 +29,7 @@ interface uses node,cpuinfo, globtype, - cpubase,cpupara, + cpubase, aasmbase,aasmtai,aasmcpu, cginfo,symbase,symdef,symtype, {$ifndef cpu64bit} @@ -63,7 +63,6 @@ interface const locpara : tparalocation); procedure genentrycode(list : TAAsmoutput; - make_global:boolean; stackframe:longint; var parasize:longint; var nostackframe:boolean; @@ -107,7 +106,7 @@ implementation gdb, {$endif GDB} ncon, - tgobj,cgobj,cgcpu; + tgobj,cgobj; const @@ -1308,7 +1307,6 @@ implementation procedure genentrycode(list : TAAsmoutput; - make_global:boolean; stackframe:longint; var parasize:longint; var nostackframe:boolean; @@ -1532,17 +1530,10 @@ implementation else stackalloclist.concat(Tai_align.Create(aktalignment.procalign)); - if (cs_profile in aktmoduleswitches) or - (current_procdef.owner.symtabletype=globalsymtable) or - (assigned(current_procdef._class) and - (current_procdef._class.owner.symtabletype=globalsymtable)) then - make_global:=true; - {$ifdef GDB} if (cs_debuginfo in aktmoduleswitches) then begin - if make_global or - (pi_is_global in current_procinfo.flags) then + if (po_public in current_procdef.procoptions) then tprocsym(current_procdef.procsym).is_global:=true; current_procdef.concatstabto(stackalloclist); tprocsym(current_procdef.procsym).isstabwritten:=true; @@ -1558,7 +1549,8 @@ implementation target_info.use_function_relative_addresses then stackalloclist.concat(Tai_stab_function_name.Create(strpnew(hs))); {$endif GDB} - if make_global then + if (cs_profile in aktmoduleswitches) or + (po_public in current_procdef.procoptions) then stackalloclist.concat(Tai_symbol.Createname_global(hs,0)) else stackalloclist.concat(Tai_symbol.Createname(hs,0)); @@ -1835,7 +1827,11 @@ implementation end. { $Log$ - Revision 1.104 2003-05-15 18:58:53 peter + Revision 1.105 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.104 2003/05/15 18:58:53 peter * removed selfpointer_offset, vmtpointer_offset * tvarsym.adjusted_address * address in localsymtable is now in the real direction diff --git a/compiler/nld.pas b/compiler/nld.pas index d4a410784b..b506ac0f42 100644 --- a/compiler/nld.pas +++ b/compiler/nld.pas @@ -386,6 +386,7 @@ implementation end; varsym : begin + inc(tvarsym(symtableentry).refs); { if it's refered by absolute then it's used } if nf_absolute in flags then tvarsym(symtableentry).varstate:=vs_used @@ -497,10 +498,8 @@ implementation else Tvarsym(symtableentry).trigger_notifications(vn_onread); { count variable references } - if rg.t_times<1 then - inc(tvarsym(symtableentry).refs) - else - inc(tvarsym(symtableentry).refs,rg.t_times); + if rg.t_times>1 then + inc(tvarsym(symtableentry).refs,rg.t_times-1); end; typedconstsym : ; @@ -1215,7 +1214,11 @@ begin end. { $Log$ - Revision 1.93 2003-05-11 21:37:03 peter + Revision 1.94 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.93 2003/05/11 21:37:03 peter * moved implicit exception frame from ncgutil to psub * constructor/destructor helpers moved from cobj/ncgutil to psub diff --git a/compiler/nobj.pas b/compiler/nobj.pas index 64ec4e6f11..f5dc25d370 100644 --- a/compiler/nobj.pas +++ b/compiler/nobj.pas @@ -674,8 +674,8 @@ implementation if (procdefcoll^.data.proccalloption<>pd.proccalloption) or (procdefcoll^.data.proctypeoption<>pd.proctypeoption) or ((procdefcoll^.data.procoptions- - [po_abstractmethod,po_overridingmethod,po_assembler,po_overload])<> - (pd.procoptions-[po_abstractmethod,po_overridingmethod,po_assembler,po_overload])) then + [po_abstractmethod,po_overridingmethod,po_assembler,po_overload,po_public])<> + (pd.procoptions-[po_abstractmethod,po_overridingmethod,po_assembler,po_overload,po_public])) then MessagePos1(pd.fileinfo,parser_e_header_dont_match_forward,pd.fullprocname(false)); { error, if the return types aren't equal } @@ -1333,7 +1333,11 @@ initialization end. { $Log$ - Revision 1.42 2003-04-25 20:59:33 peter + Revision 1.43 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.42 2003/04/25 20:59:33 peter * removed funcretn,funcretsym, function result is now in varsym and aliases for result and function name are added using absolutesym * vs_hidden parameter for funcret passed in parameter diff --git a/compiler/pdecobj.pas b/compiler/pdecobj.pas index b0539eca78..4ecd3f803d 100644 --- a/compiler/pdecobj.pas +++ b/compiler/pdecobj.pas @@ -573,7 +573,6 @@ implementation pcrd : tclassrefdef; tt : ttype; old_object_option : tsymoptions; - old_current_procinfo : tprocinfo; oldparse_only : boolean; storetypecanbeforward : boolean; @@ -948,10 +947,6 @@ implementation testcurobject:=1; curobjectname:=Upper(n); - { temp procinfo } - old_current_procinfo:=current_procinfo; - current_procinfo:=cprocinfo.create(nil); - { short class declaration ? } if (classtype<>odt_class) or (token<>_SEMICOLON) then begin @@ -1135,9 +1130,6 @@ implementation { restore old state } symtablestack:=symtablestack.next; aktobjectdef:=nil; - {Restore procinfo} - current_procinfo.free; - current_procinfo:=old_current_procinfo; current_object_option:=old_object_option; object_dec:=aktclass; @@ -1146,7 +1138,11 @@ implementation end. { $Log$ - Revision 1.65 2003-05-09 17:47:02 peter + Revision 1.66 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.65 2003/05/09 17:47:02 peter * self moved to hidden parameter * removed hdisposen,hnewn,selfn diff --git a/compiler/regvars.pas b/compiler/regvars.pas index 837e0b11f5..411fd130f7 100644 --- a/compiler/regvars.pas +++ b/compiler/regvars.pas @@ -51,7 +51,7 @@ implementation globtype,systems,comphook, cutils,cclasses,verbose,globals, symconst,symbase,symtype,symdef,paramgr,defutil, - cgbase,cgobj,cgcpu,rgcpu; + cgbase,cgobj,rgcpu; procedure searchregvars(p : tnamedindexitem;arg:pointer); @@ -561,7 +561,11 @@ end. { $Log$ - Revision 1.50 2003-05-16 14:33:31 peter + Revision 1.51 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.50 2003/05/16 14:33:31 peter * regvar fixes Revision 1.49 2003/05/15 18:58:53 peter diff --git a/compiler/symtable.pas b/compiler/symtable.pas index 8a76e18561..25e07e5b50 100644 --- a/compiler/symtable.pas +++ b/compiler/symtable.pas @@ -764,7 +764,9 @@ implementation not(is_funcret_sym(tsym(p))) and ( (tsym(p).typ<>procsym) or +{$ifdef GDB} not (tprocsym(p).is_global) or +{$endif GDB} { all program functions are declared global but unused should still be signaled PM } ((tsym(p).owner.symtabletype=staticsymtable) and @@ -2419,7 +2421,11 @@ implementation end. { $Log$ - Revision 1.101 2003-05-16 14:32:58 peter + Revision 1.102 2003-05-23 14:27:35 peter + * remove some unit dependencies + * current_procinfo changes to store more info + + Revision 1.101 2003/05/16 14:32:58 peter * fix dup check for hiding the result varsym in localst, the result sym was already in the localst when adding the locals