فهرست منبع

* reverted r42463, the internalerrors were caused by a bug in the LLVM typed
constant builder

git-svn-id: trunk@42478 -

Jonas Maebe 6 سال پیش
والد
کامیت
83611b83cc
2فایلهای تغییر یافته به همراه5 افزوده شده و 10 حذف شده
  1. 3 10
      compiler/ncgrtti.pas
  2. 2 0
      compiler/symconst.pas

+ 3 - 10
compiler/ncgrtti.pas

@@ -1886,23 +1886,16 @@ implementation
 
       tbltcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_make_dead_strippable,tcalo_apply_constalign]);
 
-      { can't use reuse a name, because the size depends on the number and kinds of of parameters each attribute has }
       tbltcb.begin_anonymous_record(
-        '',
+        internaltypeprefixName[itp_rtti_attr_list]+tostr(count),
         defaultpacking,min(reqalign,SizeOf(PInt)),
         targetinfos[target_info.system]^.alignment.recordalignmin);
       tbltcb.emit_ord_const(count,u16inttype);
       for i:=0 to count-1 do
         begin
+          tbltcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_attr_entry],defaultpacking,min(reqalign,SizeOf(PInt)),
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           attr:=trtti_attribute(attr_list.rtti_attributes[i]);
-          { only the length of an entry with no parameters is constant, so only reuse a recorddef for
-            those entries }
-          if length(attr.paras)=0 then
-            tbltcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_attr_entry],defaultpacking,min(reqalign,SizeOf(PInt)),
-              targetinfos[target_info.system]^.alignment.recordalignmin)
-          else
-            tbltcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-              targetinfos[target_info.system]^.alignment.recordalignmin);
 
           write_rtti_reference(tbltcb,ttypesym(attr.typesym).typedef,fullrtti);
 

+ 2 - 0
compiler/symconst.pas

@@ -732,6 +732,7 @@ type
     itp_rtti_common_data,
     itp_rtti_prop,
     itp_rtti_ansistr,
+    itp_rtti_attr_list,
     itp_rtti_attr_entry,
     itp_rtti_ord_outer,
     itp_rtti_ord_middle,
@@ -884,6 +885,7 @@ inherited_objectoptions : tobjectoptions = [oo_has_virtual,oo_has_private,oo_has
        '$rtti_common_data$',
        '$rtti_prop$',
        '$rtti_ansistr$',
+       '$rtti_attr_list$',
        '$rtti_attr_entry$',
        '$rtti_ord_outer$',
        '$rtti_ord_middle$',