소스 검색

* clean llvm def symbols when resetting the defs

git-svn-id: branches/llvm@12051 -
Jonas Maebe 17 년 전
부모
커밋
f9d7e18d1b
1개의 변경된 파일17개의 추가작업 그리고 1개의 파일을 삭제
  1. 17 1
      compiler/symdef.pas

+ 17 - 1
compiler/symdef.pas

@@ -298,6 +298,7 @@ interface
 {$ifdef support_llvm}
           property llvm_class_struct_name_sym: tasmsymbol read get_llvm_class_struct_name_sym;
           property llvm_vmt_name_sym: tasmsymbol read get_llvm_vmt_name_sym;
+          procedure reset; override;
 {$endif support_llvm}
        end;
 
@@ -986,7 +987,7 @@ implementation
       begin
         if assigned(typesym) and
            (owner.symtabletype in [staticsymtable,globalsymtable]) then
-          result:=make_mangledname('llvm$$$',owner,typesym.name)
+          result:=make_mangledname('llvm$$$',owner,typesym.name+'_DEF'+tostr(DefId))
         else
           result:=make_mangledname('llvm$$$',findunitsymtable(owner),'DEF'+tostr(DefId));
         result:='%'+result;
@@ -996,6 +997,10 @@ implementation
 
     procedure Tstoreddef.reset;
       begin
+{$ifdef support_llvm}
+        fllvm_name_sym:=nil;
+        fllvm_pointer_name_sym:=nil;
+{$endif support_llvm}
       end;
 
 
@@ -4187,6 +4192,17 @@ implementation
           (assigned(childof) and childof.implements_any_interfaces);
       end;
 
+
+{$ifdef support_llvm}
+    procedure tobjectdef.reset;
+      begin
+        fllvm_class_struct_name_sym:=nil;
+        fllvm_vmt_name_sym:=nil;
+        inherited reset;
+      end;
+{$endif support_llvm}
+
+
     function tobjectdef.size : aint;
       begin
         if objecttype in [odt_class,odt_interfacecom,odt_interfacecorba,odt_dispinterface] then