Ver Fonte

* Use RestoreUnitsSyms to avoid wrong hints about unused units
* Avoid hints about unsused units if thet have a init or finalize code

pierre há 25 anos atrás
pai
commit
d6b3b9a9cd
1 ficheiros alterados com 33 adições e 7 exclusões
  1. 33 7
      compiler/pmodules.pas

+ 33 - 7
compiler/pmodules.pas

@@ -616,6 +616,7 @@ unit pmodules;
     procedure loaddefaultunits;
       var
         hp : pmodule;
+        unitsym : punitsym;
       begin
       { are we compiling the system unit? }
         if (cs_compilesystem in aktmoduleswitches) then
@@ -633,7 +634,9 @@ unit pmodules;
         symtablestack:=systemunit;
         { add to the used units }
         current_module^.used_units.concat(new(pused_unit,init(hp,true)));
-        refsymtable^.insert(new(punitsym,init('SYSTEM',systemunit)));
+        unitsym:=new(punitsym,init('SYSTEM',systemunit));
+        inc(unitsym^.refs);
+        refsymtable^.insert(unitsym);
         { read default constant definitions }
         make_ref:=false;
         readconstdefs;
@@ -655,7 +658,9 @@ unit pmodules;
            symtablestack:=hp^.globalsymtable;
            { add to the used units }
            current_module^.used_units.concat(new(pused_unit,init(hp,true)));
-           refsymtable^.insert(new(punitsym,init('OBJPAS',hp^.globalsymtable)));
+           unitsym:=new(punitsym,init('OBJPAS',hp^.globalsymtable));
+           inc(unitsym^.refs);
+           refsymtable^.insert(unitsym);
          end;
       { Profile unit? Needed for go32v2 only }
         if (cs_profile in aktmoduleswitches) and (target_info.target=target_i386_go32v2) then
@@ -665,7 +670,9 @@ unit pmodules;
            symtablestack:=hp^.globalsymtable;
            { add to the used units }
            current_module^.used_units.concat(new(pused_unit,init(hp,true)));
-           refsymtable^.insert(new(punitsym,init('PROFILE',hp^.globalsymtable)));
+           unitsym:=new(punitsym,init('PROFILE',hp^.globalsymtable));
+           inc(unitsym^.refs);
+           refsymtable^.insert(unitsym);
          end;
       { Units only required for main module }
         if not(current_module^.is_unit) then
@@ -678,7 +685,9 @@ unit pmodules;
               symtablestack:=hp^.globalsymtable;
               { add to the used units }
               current_module^.used_units.concat(new(pused_unit,init(hp,true)));
-              refsymtable^.insert(new(punitsym,init('HEAPTRC',hp^.globalsymtable)));
+              unitsym:=new(punitsym,init('HEAPTRC',hp^.globalsymtable));
+              inc(unitsym^.refs);
+              refsymtable^.insert(unitsym);
             end;
            { Lineinfo unit }
            if (cs_gdb_lineinfo in aktglobalswitches) then
@@ -688,7 +697,9 @@ unit pmodules;
               symtablestack:=hp^.globalsymtable;
               { add to the used units }
               current_module^.used_units.concat(new(pused_unit,init(hp,true)));
-              refsymtable^.insert(new(punitsym,init('LINEINFO',hp^.globalsymtable)));
+              unitsym:=new(punitsym,init('LINEINFO',hp^.globalsymtable));
+              inc(unitsym^.refs);
+              refsymtable^.insert(unitsym);
             end;
          end;
       { save default symtablestack }
@@ -704,6 +715,7 @@ unit pmodules;
          hp2 : pmodule;
          hp3 : psymtable;
          oldprocsym:Pprocsym;
+         unitsym : punitsym;
       begin
          oldprocsym:=aktprocsym;
          consume(_USES);
@@ -734,7 +746,12 @@ unit pmodules;
               pused_unit(current_module^.used_units.last)^.in_uses:=true;
               if current_module^.compiled then
                 exit;
-              refsymtable^.insert(new(punitsym,init(s,hp2^.globalsymtable)));
+              unitsym:=new(punitsym,init(s,hp2^.globalsymtable));
+              { never claim about unused unit if
+                there is init or finalize code  PM }
+              if (hp2^.flags and (uf_init or uf_finalize))<>0 then
+                inc(unitsym^.refs);
+              refsymtable^.insert(unitsym);
             end
            else
             Message1(sym_e_duplicate_id,s);
@@ -1074,6 +1091,7 @@ unit pmodules;
                         { this unit symtable is obsolete }
                         { dispose(unitst,done);
                         disposed as localsymtable !! }
+                        RestoreUnitSyms;
                         exit;
                      end;
                    unitst^.symtabletype:=globalsymtable;
@@ -1150,6 +1168,7 @@ unit pmodules;
 
          if current_module^.compiled then
            begin
+              RestoreUnitSyms;
               exit;
            end;
 
@@ -1387,6 +1406,9 @@ unit pmodules;
               current_module^.localsymtable:=nil;
            end;
 
+
+         RestoreUnitSyms;
+
          if is_assembler_generated then
           begin
           { finish asmlist by adding segment starts }
@@ -1678,7 +1700,11 @@ unit pmodules;
 end.
 {
   $Log$
-  Revision 1.191  2000-04-27 11:35:03  pierre
+  Revision 1.192  2000-05-03 14:39:51  pierre
+    * Use RestoreUnitsSyms to avoid wrong hints about unused units
+    * Avoid hints about unsused units if thet have a init or finalize code
+
+  Revision 1.191  2000/04/27 11:35:03  pierre
    * power to ** operator fixed
 
   Revision 1.190  2000/04/26 08:54:18  pierre