diff options
author | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2006-03-10 08:52:05 +0000 |
---|---|---|
committer | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2006-03-10 08:52:05 +0000 |
commit | 986483ac4cbbde478bb899bebacf366501f94049 (patch) | |
tree | ea7eaf05ae56be5e515c4268b92ea0346b3f5029 | |
parent | 663476a7f92f3b5cb0553a98830a3592eb2a70c7 (diff) | |
download | fpc-986483ac4cbbde478bb899bebacf366501f94049.tar.gz |
* don't initialize/finalize external variables
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/linker@2825 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | compiler/ncgutil.pas | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas index 66efee1380..3212471876 100644 --- a/compiler/ncgutil.pas +++ b/compiler/ncgutil.pas @@ -893,6 +893,7 @@ implementation begin if (tsym(p).typ in [globalvarsym,localvarsym]) and (tabstractvarsym(p).refs>0) and + not(vo_is_external in tabstractvarsym(p).varoptions) and not(is_class(tabstractvarsym(p).vartype.def)) and tabstractvarsym(p).vartype.def.needs_inittable then begin @@ -928,6 +929,7 @@ implementation begin if (tsym(p).typ=localvarsym) and (tlocalvarsym(p).refs>0) and + not(vo_is_external in tlocalvarsym(p).varoptions) and not(vo_is_funcret in tlocalvarsym(p).varoptions) and not(is_class(tlocalvarsym(p).vartype.def)) and tlocalvarsym(p).vartype.def.needs_inittable then @@ -975,6 +977,7 @@ implementation begin if (tglobalvarsym(p).refs>0) and not(vo_is_funcret in tglobalvarsym(p).varoptions) and + not(vo_is_external in tglobalvarsym(p).varoptions) and not(is_class(tglobalvarsym(p).vartype.def)) and tglobalvarsym(p).vartype.def.needs_inittable then finalize_sym(taasmoutput(arg),tsym(p)); @@ -1958,7 +1961,8 @@ implementation procedure insertbssdata(sym : tglobalvarsym); var - l,varalign : longint; + l : aint; + varalign : shortint; storefilepos : tfileposinfo; list : Taasmoutput; sectype : TAsmSectiontype; @@ -1986,7 +1990,7 @@ implementation list:=asmlist[al_globals]; sectype:=sec_bss; end; - varalign:=var_align(l); + varalign:=var_align(size_2_align(l)); maybe_new_object_file(list); new_section(list,sectype,lower(sym.mangledname),varalign); if (sym.owner.symtabletype=globalsymtable) or @@ -2174,7 +2178,7 @@ implementation foreachnodestatic(n,@do_get_used_regvars,@rv); end; -{ +(* See comments at declaration of pusedregvarscommon function do_get_used_regvars_common(var n: tnode; arg: pointer): foreachnoderesult; @@ -2212,7 +2216,7 @@ implementation rv.myregvars.mmregvars.clear; foreachnodestatic(n,@do_get_used_regvars_common,@rv); end; -} +*) procedure gen_sync_regvars(list:TAAsmoutput; var rv: tusedregvars); var |