summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2>2006-03-10 08:52:05 +0000
committerpeter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2>2006-03-10 08:52:05 +0000
commit986483ac4cbbde478bb899bebacf366501f94049 (patch)
treeea7eaf05ae56be5e515c4268b92ea0346b3f5029
parent663476a7f92f3b5cb0553a98830a3592eb2a70c7 (diff)
downloadfpc-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.pas12
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