Quellcode durchsuchen

* set vo_explicit_paraloc flag

peter vor 20 Jahren
Ursprung
Commit
78c2af7b3c
7 geänderte Dateien mit 82 neuen und 79 gelöschten Zeilen
  1. 6 3
      compiler/ncal.pas
  2. 5 3
      compiler/ncnv.pas
  3. 14 25
      compiler/pdecsub.pas
  4. 15 12
      compiler/pdecvar.pas
  5. 6 3
      compiler/pstatmnt.pas
  6. 10 7
      compiler/psystem.pas
  7. 26 26
      compiler/symsym.pas

+ 6 - 3
compiler/ncal.pas

@@ -990,7 +990,7 @@ type
            for i:=0 to varargsparas.count-1 do
            for i:=0 to varargsparas.count-1 do
              begin
              begin
                hp:=tparavarsym(varargsparas[i]);
                hp:=tparavarsym(varargsparas[i]);
-               hpn:=tparavarsym.create(hp.realname,hp.paranr,hp.varspez,hp.vartype);
+               hpn:=tparavarsym.create(hp.realname,hp.paranr,hp.varspez,hp.vartype,[]);
                n.varargsparas.add(hpn);
                n.varargsparas.add(hpn);
              end;
              end;
          end
          end
@@ -1410,7 +1410,7 @@ type
               begin
               begin
                 if cpf_varargs_para in pt.callparaflags then
                 if cpf_varargs_para in pt.callparaflags then
                   begin
                   begin
-                    varargspara:=tparavarsym.create('va'+tostr(i),i,vs_value,pt.resulttype);
+                    varargspara:=tparavarsym.create('va'+tostr(i),i,vs_value,pt.resulttype,[]);
                     dec(i);
                     dec(i);
                     { varargspara is left-right, use insert
                     { varargspara is left-right, use insert
                       instead of concat }
                       instead of concat }
@@ -2432,7 +2432,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.268  2004-12-05 12:28:11  peter
+  Revision 1.269  2004-12-07 16:11:52  peter
+    * set vo_explicit_paraloc flag
+
+  Revision 1.268  2004/12/05 12:28:11  peter
     * procvar handling for tp procvar mode fixed
     * procvar handling for tp procvar mode fixed
     * proc to procvar moved from addrnode to typeconvnode
     * proc to procvar moved from addrnode to typeconvnode
     * inlininginfo is now allocated only for inline routines that
     * inlininginfo is now allocated only for inline routines that

+ 5 - 3
compiler/ncnv.pas

@@ -1090,8 +1090,7 @@ implementation
           exit;
           exit;
         with tparavarsym(p) do
         with tparavarsym(p) do
           begin
           begin
-            vs:=tparavarsym.create(realname,paranr,varspez,vartype);
-            vs.varoptions:=varoptions;
+            vs:=tparavarsym.create(realname,paranr,varspez,vartype,varoptions);
             vs.defaultconstsym:=defaultconstsym;
             vs.defaultconstsym:=defaultconstsym;
             newparast.insert(vs);
             newparast.insert(vs);
           end;
           end;
@@ -2498,7 +2497,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.166  2004-12-05 12:28:11  peter
+  Revision 1.167  2004-12-07 16:11:52  peter
+    * set vo_explicit_paraloc flag
+
+  Revision 1.166  2004/12/05 12:28:11  peter
     * procvar handling for tp procvar mode fixed
     * procvar handling for tp procvar mode fixed
     * proc to procvar moved from addrnode to typeconvnode
     * proc to procvar moved from addrnode to typeconvnode
     * inlininginfo is now allocated only for inline routines that
     * inlininginfo is now allocated only for inline routines that

+ 14 - 25
compiler/pdecsub.pas

@@ -105,9 +105,7 @@ implementation
            else
            else
              paranr:=paranr_result;
              paranr:=paranr_result;
            { Generate result variable accessing function result }
            { Generate result variable accessing function result }
-           vs:=tparavarsym.create('$result',paranr,vs_var,pd.rettype);
-           include(vs.varoptions,vo_is_funcret);
-           include(vs.varoptions,vo_is_hidden_para);
+           vs:=tparavarsym.create('$result',paranr,vs_var,pd.rettype,[vo_is_funcret,vo_is_hidden_para]);
            pd.parast.insert(vs);
            pd.parast.insert(vs);
            { Store the this symbol as funcretsym for procedures }
            { Store the this symbol as funcretsym for procedures }
            if pd.deftype=procdef then
            if pd.deftype=procdef then
@@ -132,9 +130,7 @@ implementation
             { Generate result variable accessing function result, it
             { Generate result variable accessing function result, it
               can't be put in a register since it must be accessable
               can't be put in a register since it must be accessable
               from the framepointer }
               from the framepointer }
-            vs:=tparavarsym.create('$parentfp',paranr_parentfp,vs_var,voidpointertype);
-            include(vs.varoptions,vo_is_parentfp);
-            include(vs.varoptions,vo_is_hidden_para);
+            vs:=tparavarsym.create('$parentfp',paranr_parentfp,vs_var,voidpointertype,[vo_is_parentfp,vo_is_hidden_para]);
             vs.varregable:=vr_none;
             vs.varregable:=vr_none;
             pd.parast.insert(vs);
             pd.parast.insert(vs);
 
 
@@ -155,9 +151,7 @@ implementation
           begin
           begin
             { Generate self variable }
             { Generate self variable }
             tt:=voidpointertype;
             tt:=voidpointertype;
-            vs:=tparavarsym.create('$self',paranr_self,vs_value,tt);
-            include(vs.varoptions,vo_is_self);
-            include(vs.varoptions,vo_is_hidden_para);
+            vs:=tparavarsym.create('$self',paranr_self,vs_value,tt,[vo_is_self,vo_is_hidden_para]);
             pd.parast.insert(vs);
             pd.parast.insert(vs);
           end
           end
         else
         else
@@ -175,9 +169,7 @@ implementation
                    { can't use classrefdef as type because inheriting
                    { can't use classrefdef as type because inheriting
                      will then always file because of a type mismatch }
                      will then always file because of a type mismatch }
                    tt:=voidpointertype;
                    tt:=voidpointertype;
-                   vs:=tparavarsym.create('$vmt',paranr_vmt,vs_value,tt);
-                   include(vs.varoptions,vo_is_vmt);
-                   include(vs.varoptions,vo_is_hidden_para);
+                   vs:=tparavarsym.create('$vmt',paranr_vmt,vs_value,tt,[vo_is_vmt,vo_is_hidden_para]);
                    pd.parast.insert(vs);
                    pd.parast.insert(vs);
                  end;
                  end;
 
 
@@ -197,9 +189,7 @@ implementation
                       vsp:=vs_var;
                       vsp:=vs_var;
                     tt.setdef(tprocdef(pd)._class);
                     tt.setdef(tprocdef(pd)._class);
                   end;
                   end;
-                vs:=tparavarsym.create('$self',paranr_self,vsp,tt);
-                include(vs.varoptions,vo_is_self);
-                include(vs.varoptions,vo_is_hidden_para);
+                vs:=tparavarsym.create('$self',paranr_self,vsp,tt,[vo_is_self,vo_is_hidden_para]);
                 pd.parast.insert(vs);
                 pd.parast.insert(vs);
 
 
                 akttokenpos:=storepos;
                 akttokenpos:=storepos;
@@ -230,8 +220,7 @@ implementation
              when it is returning in a register }
              when it is returning in a register }
            if not paramanager.ret_in_param(pd.rettype.def,pd.proccalloption) then
            if not paramanager.ret_in_param(pd.rettype.def,pd.proccalloption) then
             begin
             begin
-              vs:=tlocalvarsym.create('$result',vs_value,pd.rettype);
-              include(vs.varoptions,vo_is_funcret);
+              vs:=tlocalvarsym.create('$result',vs_value,pd.rettype,[vo_is_funcret]);
               pd.localst.insert(vs);
               pd.localst.insert(vs);
               pd.funcretsym:=vs;
               pd.funcretsym:=vs;
             end;
             end;
@@ -285,9 +274,7 @@ implementation
            { needs high parameter ? }
            { needs high parameter ? }
            if paramanager.push_high_param(varspez,vartype.def,pd.proccalloption) then
            if paramanager.push_high_param(varspez,vartype.def,pd.proccalloption) then
              begin
              begin
-               hvs:=tparavarsym.create('$high'+name,paranr+1,vs_const,sinttype);
-               include(hvs.varoptions,vo_is_high_para);
-               include(hvs.varoptions,vo_is_hidden_para);
+               hvs:=tparavarsym.create('$high'+name,paranr+1,vs_const,sinttype,[vo_is_high_para,vo_is_hidden_para]);
                owner.insert(hvs);
                owner.insert(hvs);
              end
              end
            else
            else
@@ -451,7 +438,7 @@ implementation
           sc.reset;
           sc.reset;
           repeat
           repeat
             inc(paranr);
             inc(paranr);
-            vs:=tparavarsym.create(orgpattern,paranr*10,varspez,generrortype);
+            vs:=tparavarsym.create(orgpattern,paranr*10,varspez,generrortype,[]);
             currparast.insert(vs);
             currparast.insert(vs);
             if assigned(vs.owner) then
             if assigned(vs.owner) then
              sc.insert(vs)
              sc.insert(vs)
@@ -586,6 +573,7 @@ implementation
                      if (paranr>1) and not(explicit_paraloc) then
                      if (paranr>1) and not(explicit_paraloc) then
                        Message(parser_e_paraloc_all_paras);
                        Message(parser_e_paraloc_all_paras);
                      explicit_paraloc:=true;
                      explicit_paraloc:=true;
+                     include(vs.varoptions,vo_has_explicit_paraloc);
                      if not(paramanager.parseparaloc(vs,upper(locationstr))) then
                      if not(paramanager.parseparaloc(vs,upper(locationstr))) then
                        message(parser_e_illegal_explicit_paraloc);
                        message(parser_e_illegal_explicit_paraloc);
                    end
                    end
@@ -1228,9 +1216,7 @@ begin
              ) then
              ) then
             begin
             begin
               tprocdef(pd).libsym:=sym;
               tprocdef(pd).libsym:=sym;
-              vs:=tparavarsym.create('$syscalllib',paranr_syscall,vs_value,tabstractvarsym(sym).vartype);
-              include(vs.varoptions,vo_is_syscall_lib);
-              include(vs.varoptions,vo_is_hidden_para);
+              vs:=tparavarsym.create('$syscalllib',paranr_syscall,vs_value,tabstractvarsym(sym).vartype,[vo_is_syscall_lib,vo_is_hidden_para,vo_has_explicit_paraloc]);
               paramanager.parseparaloc(vs,'A6');
               paramanager.parseparaloc(vs,'A6');
               pd.parast.insert(vs);
               pd.parast.insert(vs);
             end
             end
@@ -2358,7 +2344,10 @@ const
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.217  2004-12-05 12:28:11  peter
+  Revision 1.218  2004-12-07 16:11:52  peter
+    * set vo_explicit_paraloc flag
+
+  Revision 1.217  2004/12/05 12:28:11  peter
     * procvar handling for tp procvar mode fixed
     * procvar handling for tp procvar mode fixed
     * proc to procvar moved from addrnode to typeconvnode
     * proc to procvar moved from addrnode to typeconvnode
     * inlininginfo is now allocated only for inline routines that
     * inlininginfo is now allocated only for inline routines that

+ 15 - 12
compiler/pdecvar.pas

@@ -278,7 +278,7 @@ implementation
                 sc.reset;
                 sc.reset;
                 repeat
                 repeat
                   inc(paranr);
                   inc(paranr);
-                  hreadparavs:=tparavarsym.create(orgpattern,10*paranr,varspez,generrortype);
+                  hreadparavs:=tparavarsym.create(orgpattern,10*paranr,varspez,generrortype,[]);
                   readprocdef.parast.insert(hreadparavs);
                   readprocdef.parast.insert(hreadparavs);
                   sc.insert(hreadparavs);
                   sc.insert(hreadparavs);
                   consume(_ID);
                   consume(_ID);
@@ -309,7 +309,7 @@ implementation
                   begin
                   begin
                     hreadparavs.vartype:=tt;
                     hreadparavs.vartype:=tt;
                     { also update the writeprocdef }
                     { also update the writeprocdef }
-                    hparavs:=tparavarsym.create(hreadparavs.realname,hreadparavs.paranr,vs_value,tt);
+                    hparavs:=tparavarsym.create(hreadparavs.realname,hreadparavs.paranr,vs_value,tt,[]);
                     writeprocdef.parast.insert(hparavs);
                     writeprocdef.parast.insert(hparavs);
                     hreadparavs:=tparavarsym(hreadparavs.listnext);
                     hreadparavs:=tparavarsym(hreadparavs.listnext);
                   end;
                   end;
@@ -357,9 +357,9 @@ implementation
                    include(p.propoptions,ppo_indexed);
                    include(p.propoptions,ppo_indexed);
                    { concat a longint to the para templates }
                    { concat a longint to the para templates }
                    inc(paranr);
                    inc(paranr);
-                   hparavs:=tparavarsym.create('$index',10*paranr,vs_value,p.indextype);
+                   hparavs:=tparavarsym.create('$index',10*paranr,vs_value,p.indextype,[]);
                    readprocdef.parast.insert(hparavs);
                    readprocdef.parast.insert(hparavs);
-                   hparavs:=tparavarsym.create('$index',10*paranr,vs_value,p.indextype);
+                   hparavs:=tparavarsym.create('$index',10*paranr,vs_value,p.indextype,[]);
                    writeprocdef.parast.insert(hparavs);
                    writeprocdef.parast.insert(hparavs);
                    pt.free;
                    pt.free;
                 end;
                 end;
@@ -438,7 +438,7 @@ implementation
                        of the of the property }
                        of the of the property }
                      writeprocdef.rettype:=voidtype;
                      writeprocdef.rettype:=voidtype;
                      inc(paranr);
                      inc(paranr);
-                     hparavs:=tparavarsym.create('$value',10*paranr,vs_value,p.proptype);
+                     hparavs:=tparavarsym.create('$value',10*paranr,vs_value,p.proptype,[]);
                      writeprocdef.parast.insert(hparavs);
                      writeprocdef.parast.insert(hparavs);
                      { Insert hidden parameters }
                      { Insert hidden parameters }
                      handle_calling_convention(writeprocdef);
                      handle_calling_convention(writeprocdef);
@@ -611,7 +611,7 @@ implementation
                 if (symtablestack.symtabletype=objectsymtable) and
                 if (symtablestack.symtabletype=objectsymtable) and
                    (sp_static in current_object_option) then
                    (sp_static in current_object_option) then
                   begin
                   begin
-                     hstaticvs:=tglobalvarsym.create('$'+lower(symtablestack.name^)+'_'+vs.name,vs_value,tt);
+                     hstaticvs:=tglobalvarsym.create('$'+lower(symtablestack.name^)+'_'+vs.name,vs_value,tt,[]);
                      symtablestack.defowner.owner.insert(hstaticvs);
                      symtablestack.defowner.owner.insert(hstaticvs);
                      insertbssdata(hstaticvs);
                      insertbssdata(hstaticvs);
                   end
                   end
@@ -725,13 +725,13 @@ implementation
              repeat
              repeat
                case symtablestack.symtabletype of
                case symtablestack.symtabletype of
                  localsymtable :
                  localsymtable :
-                   vs:=tlocalvarsym.create(orgpattern,vs_value,generrortype);
+                   vs:=tlocalvarsym.create(orgpattern,vs_value,generrortype,[]);
                  staticsymtable,
                  staticsymtable,
                  globalsymtable :
                  globalsymtable :
-                   vs:=tglobalvarsym.create(orgpattern,vs_value,generrortype);
+                   vs:=tglobalvarsym.create(orgpattern,vs_value,generrortype,[]);
                  recordsymtable,
                  recordsymtable,
                  objectsymtable :
                  objectsymtable :
-                   vs:=tfieldvarsym.create(orgpattern,vs_value,generrortype);
+                   vs:=tfieldvarsym.create(orgpattern,vs_value,generrortype,[]);
                  else
                  else
                    internalerror(200411064);
                    internalerror(200411064);
                end;
                end;
@@ -1206,7 +1206,7 @@ implementation
                   symtablestack:=symtablestack.next;
                   symtablestack:=symtablestack.next;
                   read_type(casetype,'',true);
                   read_type(casetype,'',true);
                   symtablestack:=oldsymtablestack;
                   symtablestack:=oldsymtablestack;
-                  fieldvs:=tfieldvarsym.create(sorg,vs_value,casetype);
+                  fieldvs:=tfieldvarsym.create(sorg,vs_value,casetype,[]);
                   tabstractrecordsymtable(symtablestack).insertfield(fieldvs,true);
                   tabstractrecordsymtable(symtablestack).insertfield(fieldvs,true);
                 end;
                 end;
               if not(is_ordinal(casetype.def))
               if not(is_ordinal(casetype.def))
@@ -1265,7 +1265,7 @@ implementation
               unionsymtable.fieldalignment:=maxalignment;
               unionsymtable.fieldalignment:=maxalignment;
               uniontype.def:=uniondef;
               uniontype.def:=uniondef;
               uniontype.sym:=nil;
               uniontype.sym:=nil;
-              UnionSym:=tfieldvarsym.create('$case',vs_value,uniontype);
+              UnionSym:=tfieldvarsym.create('$case',vs_value,uniontype,[]);
               symtablestack:=symtablestack.next;
               symtablestack:=symtablestack.next;
               unionsymtable.addalignmentpadding;
               unionsymtable.addalignmentpadding;
 {$ifdef powerpc}
 {$ifdef powerpc}
@@ -1306,7 +1306,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.86  2004-11-29 18:50:15  peter
+  Revision 1.87  2004-12-07 16:11:52  peter
+    * set vo_explicit_paraloc flag
+
+  Revision 1.86  2004/11/29 18:50:15  peter
     * os2 fixes for import
     * os2 fixes for import
     * asmsymtype support for intel reader
     * asmsymtype support for intel reader
 
 

+ 6 - 3
compiler/pstatmnt.pas

@@ -696,11 +696,11 @@ implementation
                                   is_class(ttypesym(srsym).restype.def) then
                                   is_class(ttypesym(srsym).restype.def) then
                                  begin
                                  begin
                                     ot:=ttypesym(srsym).restype;
                                     ot:=ttypesym(srsym).restype;
-                                    sym:=tlocalvarsym.create(objrealname,vs_value,ot);
+                                    sym:=tlocalvarsym.create(objrealname,vs_value,ot,[]);
                                  end
                                  end
                                else
                                else
                                  begin
                                  begin
-                                    sym:=tlocalvarsym.create(objrealname,vs_value,generrortype);
+                                    sym:=tlocalvarsym.create(objrealname,vs_value,generrortype,[]);
                                     if (srsym.typ=typesym) then
                                     if (srsym.typ=typesym) then
                                       Message1(type_e_class_type_expected,ttypesym(srsym).restype.def.typename)
                                       Message1(type_e_class_type_expected,ttypesym(srsym).restype.def.typename)
                                     else
                                     else
@@ -1147,7 +1147,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.147  2004-12-05 12:28:11  peter
+  Revision 1.148  2004-12-07 16:11:52  peter
+    * set vo_explicit_paraloc flag
+
+  Revision 1.147  2004/12/05 12:28:11  peter
     * procvar handling for tp procvar mode fixed
     * procvar handling for tp procvar mode fixed
     * proc to procvar moved from addrnode to typeconvnode
     * proc to procvar moved from addrnode to typeconvnode
     * inlininginfo is now allocated only for inline routines that
     * inlininginfo is now allocated only for inline routines that

+ 10 - 7
compiler/psystem.pas

@@ -216,12 +216,12 @@ implementation
         hrecst:=trecordsymtable.create(aktpackrecords);
         hrecst:=trecordsymtable.create(aktpackrecords);
         vmttype.setdef(trecorddef.create(hrecst));
         vmttype.setdef(trecorddef.create(hrecst));
         pvmttype.setdef(tpointerdef.create(vmttype));
         pvmttype.setdef(tpointerdef.create(vmttype));
-        hrecst.insertfield(tfieldvarsym.create('$parent',vs_value,pvmttype),true);
-        hrecst.insertfield(tfieldvarsym.create('$length',vs_value,s32inttype),true);
-        hrecst.insertfield(tfieldvarsym.create('$mlength',vs_value,s32inttype),true);
+        hrecst.insertfield(tfieldvarsym.create('$parent',vs_value,pvmttype,[]),true);
+        hrecst.insertfield(tfieldvarsym.create('$length',vs_value,s32inttype,[]),true);
+        hrecst.insertfield(tfieldvarsym.create('$mlength',vs_value,s32inttype,[]),true);
         vmtarraytype.setdef(tarraydef.create(0,1,s32inttype));
         vmtarraytype.setdef(tarraydef.create(0,1,s32inttype));
         tarraydef(vmtarraytype.def).setelementtype(voidpointertype);
         tarraydef(vmtarraytype.def).setelementtype(voidpointertype);
-        hrecst.insertfield(tfieldvarsym.create('$__pfn',vs_value,vmtarraytype),true);
+        hrecst.insertfield(tfieldvarsym.create('$__pfn',vs_value,vmtarraytype,[]),true);
         addtype('$__vtbl_ptr_type',vmttype);
         addtype('$__vtbl_ptr_type',vmttype);
         addtype('$pvmt',pvmttype);
         addtype('$pvmt',pvmttype);
         vmtarraytype.setdef(tarraydef.create(0,1,s32inttype));
         vmtarraytype.setdef(tarraydef.create(0,1,s32inttype));
@@ -229,8 +229,8 @@ implementation
         addtype('$vtblarray',vmtarraytype);
         addtype('$vtblarray',vmtarraytype);
         { Add a type for methodpointers }
         { Add a type for methodpointers }
         hrecst:=trecordsymtable.create(1);
         hrecst:=trecordsymtable.create(1);
-        hrecst.insertfield(tfieldvarsym.create('$proc',vs_value,voidpointertype),true);
-        hrecst.insertfield(tfieldvarsym.create('$self',vs_value,voidpointertype),true);
+        hrecst.insertfield(tfieldvarsym.create('$proc',vs_value,voidpointertype,[]),true);
+        hrecst.insertfield(tfieldvarsym.create('$self',vs_value,voidpointertype,[]),true);
         methodpointertype.setdef(trecorddef.create(hrecst));
         methodpointertype.setdef(trecorddef.create(hrecst));
         addtype('$methodpointer',methodpointertype);
         addtype('$methodpointer',methodpointertype);
       { Add functions that require compiler magic }
       { Add functions that require compiler magic }
@@ -537,7 +537,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.74  2004-12-07 13:52:54  michael
+  Revision 1.75  2004-12-07 16:11:52  peter
+    * set vo_explicit_paraloc flag
+
+  Revision 1.74  2004/12/07 13:52:54  michael
     * Convert array of widechar to pwidechar instead of pchar
     * Convert array of widechar to pwidechar instead of pchar
 
 
   Revision 1.73  2004/11/08 22:09:59  peter
   Revision 1.73  2004/11/08 22:09:59  peter

+ 26 - 26
compiler/symsym.pas

@@ -148,7 +148,7 @@ interface
           varregable    : tvarregable;
           varregable    : tvarregable;
           varstate      : tvarstate;
           varstate      : tvarstate;
           notifications : Tlinkedlist;
           notifications : Tlinkedlist;
-          constructor create(const n : string;vsp:tvarspez;const tt : ttype);
+          constructor create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
           destructor  destroy;override;
           destructor  destroy;override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
@@ -167,11 +167,9 @@ interface
           property vartype: ttype read _vartype write setvartype;
           property vartype: ttype read _vartype write setvartype;
       end;
       end;
 
 
-      tvarsymclass = class of tabstractvarsym;
-
       tfieldvarsym = class(tabstractvarsym)
       tfieldvarsym = class(tabstractvarsym)
           fieldoffset   : aint;   { offset in record/object }
           fieldoffset   : aint;   { offset in record/object }
-          constructor create(const n : string;vsp:tvarspez;const tt : ttype);
+          constructor create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
 {$ifdef GDB}
 {$ifdef GDB}
@@ -183,7 +181,7 @@ interface
           defaultconstsym : tsym;
           defaultconstsym : tsym;
           defaultconstsymderef : tderef;
           defaultconstsymderef : tderef;
           localloc      : TLocation; { register/reference for local var }
           localloc      : TLocation; { register/reference for local var }
-          constructor create(const n : string;vsp:tvarspez;const tt : ttype);
+          constructor create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure buildderef;override;
           procedure buildderef;override;
@@ -191,7 +189,7 @@ interface
       end;
       end;
 
 
       tlocalvarsym = class(tabstractnormalvarsym)
       tlocalvarsym = class(tabstractnormalvarsym)
-          constructor create(const n : string;vsp:tvarspez;const tt : ttype);
+          constructor create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
 {$ifdef GDB}
 {$ifdef GDB}
@@ -205,7 +203,7 @@ interface
 {$ifdef EXTDEBUG}
 {$ifdef EXTDEBUG}
           eqval         : tequaltype;
           eqval         : tequaltype;
 {$endif EXTDEBUG}
 {$endif EXTDEBUG}
-          constructor create(const n : string;nr:word;vsp:tvarspez;const tt : ttype);
+          constructor create(const n : string;nr:word;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
           destructor destroy;override;
           destructor destroy;override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
@@ -218,7 +216,7 @@ interface
       private
       private
           _mangledname : pstring;
           _mangledname : pstring;
       public
       public
-          constructor create(const n : string;vsp:tvarspez;const tt : ttype);
+          constructor create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
           constructor create_dll(const n : string;vsp:tvarspez;const tt : ttype);
           constructor create_dll(const n : string;vsp:tvarspez;const tt : ttype);
           constructor create_C(const n,mangled : string;vsp:tvarspez;const tt : ttype);
           constructor create_C(const n,mangled : string;vsp:tvarspez;const tt : ttype);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
@@ -1255,13 +1253,13 @@ implementation
                             TABSTRACTVARSYM
                             TABSTRACTVARSYM
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor tabstractvarsym.create(const n : string;vsp:tvarspez;const tt : ttype);
+    constructor tabstractvarsym.create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
       begin
       begin
          inherited create(n);
          inherited create(n);
          vartype:=tt;
          vartype:=tt;
          varspez:=vsp;
          varspez:=vsp;
          varstate:=vs_declared;
          varstate:=vs_declared;
-         varoptions:=[];
+         varoptions:=vopts;
       end;
       end;
 
 
 
 
@@ -1416,9 +1414,9 @@ implementation
                                TFIELDVARSYM
                                TFIELDVARSYM
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor tfieldvarsym.create(const n : string;vsp:tvarspez;const tt : ttype);
+    constructor tfieldvarsym.create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
       begin
       begin
-         inherited create(n,vsp,tt);
+         inherited create(n,vsp,tt,vopts);
          typ:=fieldvarsym;
          typ:=fieldvarsym;
          fieldoffset:=0;
          fieldoffset:=0;
       end;
       end;
@@ -1467,9 +1465,9 @@ implementation
                         TABSTRACTNORMALVARSYM
                         TABSTRACTNORMALVARSYM
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor tabstractnormalvarsym.create(const n : string;vsp:tvarspez;const tt : ttype);
+    constructor tabstractnormalvarsym.create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
       begin
       begin
-         inherited create(n,vsp,tt);
+         inherited create(n,vsp,tt,vopts);
          fillchar(localloc,sizeof(localloc),0);
          fillchar(localloc,sizeof(localloc),0);
          defaultconstsym:=nil;
          defaultconstsym:=nil;
       end;
       end;
@@ -1508,9 +1506,9 @@ implementation
                              TGLOBALVARSYM
                              TGLOBALVARSYM
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor tglobalvarsym.create(const n : string;vsp:tvarspez;const tt : ttype);
+    constructor tglobalvarsym.create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
       begin
       begin
-         inherited create(n,vsp,tt);
+         inherited create(n,vsp,tt,vopts);
          typ:=globalvarsym;
          typ:=globalvarsym;
          _mangledname:=nil;
          _mangledname:=nil;
       end;
       end;
@@ -1518,14 +1516,13 @@ implementation
 
 
     constructor tglobalvarsym.create_dll(const n : string;vsp:tvarspez;const tt : ttype);
     constructor tglobalvarsym.create_dll(const n : string;vsp:tvarspez;const tt : ttype);
       begin
       begin
-         tglobalvarsym(self).create(n,vsp,tt);
-         include(varoptions,vo_is_dll_var);
+         tglobalvarsym(self).create(n,vsp,tt,[vo_is_dll_var]);
       end;
       end;
 
 
 
 
     constructor tglobalvarsym.create_C(const n,mangled : string;vsp:tvarspez;const tt : ttype);
     constructor tglobalvarsym.create_C(const n,mangled : string;vsp:tvarspez;const tt : ttype);
       begin
       begin
-         tglobalvarsym(self).create(n,vsp,tt);
+         tglobalvarsym(self).create(n,vsp,tt,[]);
          set_mangledname(mangled);
          set_mangledname(mangled);
       end;
       end;
 
 
@@ -1640,9 +1637,9 @@ implementation
                                TLOCALVARSYM
                                TLOCALVARSYM
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor tlocalvarsym.create(const n : string;vsp:tvarspez;const tt : ttype);
+    constructor tlocalvarsym.create(const n : string;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
       begin
       begin
-         inherited create(n,vsp,tt);
+         inherited create(n,vsp,tt,vopts);
          typ:=localvarsym;
          typ:=localvarsym;
       end;
       end;
 
 
@@ -1701,9 +1698,9 @@ implementation
                               TPARAVARSYM
                               TPARAVARSYM
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor tparavarsym.create(const n : string;nr:word;vsp:tvarspez;const tt : ttype);
+    constructor tparavarsym.create(const n : string;nr:word;vsp:tvarspez;const tt : ttype;vopts:tvaroptions);
       begin
       begin
-         inherited create(n,vsp,tt);
+         inherited create(n,vsp,tt,vopts);
          typ:=paravarsym;
          typ:=paravarsym;
          paranr:=nr;
          paranr:=nr;
          paraloc[calleeside].init;
          paraloc[calleeside].init;
@@ -1838,7 +1835,7 @@ implementation
 
 
     constructor tabsolutevarsym.create(const n : string;const tt : ttype);
     constructor tabsolutevarsym.create(const n : string;const tt : ttype);
       begin
       begin
-        inherited create(n,vs_value,tt);
+        inherited create(n,vs_value,tt,[]);
         typ:=absolutevarsym;
         typ:=absolutevarsym;
         ref:=nil;
         ref:=nil;
       end;
       end;
@@ -1846,7 +1843,7 @@ implementation
 
 
     constructor tabsolutevarsym.create_ref(const n : string;const tt : ttype;_ref:tsymlist);
     constructor tabsolutevarsym.create_ref(const n : string;const tt : ttype;_ref:tsymlist);
       begin
       begin
-        inherited create(n,vs_value,tt);
+        inherited create(n,vs_value,tt,[]);
         typ:=absolutevarsym;
         typ:=absolutevarsym;
         ref:=_ref;
         ref:=_ref;
       end;
       end;
@@ -2557,7 +2554,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.195  2004-11-29 20:50:37  peter
+  Revision 1.196  2004-12-07 16:11:52  peter
+    * set vo_explicit_paraloc flag
+
+  Revision 1.195  2004/11/29 20:50:37  peter
     * uninited results
     * uninited results
 
 
   Revision 1.194  2004/11/17 22:21:35  peter
   Revision 1.194  2004/11/17 22:21:35  peter