Browse Source

llvm metadata: counter per unit rather than globally

Results in less high numbers, and reproducible results when partially
rebuilding
Jonas Maebe 3 years ago
parent
commit
816ab7ffcc
2 changed files with 12 additions and 6 deletions
  1. 7 1
      compiler/llvm/aasmllvm.pas
  2. 5 5
      compiler/llvm/aasmllvmmetadata.pas

+ 7 - 1
compiler/llvm/aasmllvm.pas

@@ -27,7 +27,7 @@ interface
 
 
     uses
     uses
       globtype,verbose,cclasses,
       globtype,verbose,cclasses,
-      aasmbase,aasmtai,aasmdata,aasmsym,aasmcnst,
+      aasmbase,aasmtai,aasmdata,aasmdef,aasmsym,aasmcnst,
       cpubase,cgbase,cgutils,
       cpubase,cgbase,cgutils,
       symtype,symdef,symsym,
       symtype,symdef,symsym,
       llvmbase;
       llvmbase;
@@ -227,6 +227,10 @@ interface
     end;
     end;
 
 
 
 
+    TLLVMAsmData = class(TAsmDataDef)
+     fnextmetaid: cardinal;
+    end;
+
 implementation
 implementation
 
 
 uses
 uses
@@ -1258,4 +1262,6 @@ uses
         loadparas(1,paras);
         loadparas(1,paras);
       end;
       end;
 
 
+begin
+  casmdata:=TLLVMAsmData;
 end.
 end.

+ 5 - 5
compiler/llvm/aasmllvmmetadata.pas

@@ -76,8 +76,7 @@ interface
 
 
     (* !0 = !{ type1 value1, ... } *)
     (* !0 = !{ type1 value1, ... } *)
     tai_llvmunnamedmetadatanode = class(tai_llvmbasemetadatanode)
     tai_llvmunnamedmetadatanode = class(tai_llvmbasemetadatanode)
-     strict private class var
-      snextid: cardinal;
+     strict private
       class function getnextid: cardinal;
       class function getnextid: cardinal;
      strict protected
      strict protected
       fnameval: cardinal;
       fnameval: cardinal;
@@ -194,7 +193,8 @@ implementation
     verbose,globals,cutils,
     verbose,globals,cutils,
     fmodule,
     fmodule,
     symdef,
     symdef,
-    dbgdwarfconst;
+    dbgdwarfconst,
+    aasmdata,aasmllvm;
 
 
   function llvm_getmetadatareftypedconst(metadata: tai_llvmbasemetadatanode): tai_simpletypedconst;
   function llvm_getmetadatareftypedconst(metadata: tai_llvmbasemetadatanode): tai_simpletypedconst;
     begin
     begin
@@ -232,8 +232,8 @@ implementation
 
 
   class function tai_llvmunnamedmetadatanode.getnextid: cardinal;
   class function tai_llvmunnamedmetadatanode.getnextid: cardinal;
     begin
     begin
-      result:=snextid;
-      inc(snextid);
+      result:=tllvmasmdata(current_asmdata).fnextmetaid;
+      inc(tllvmasmdata(current_asmdata).fnextmetaid);
     end;
     end;