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

constant builder

git-svn-id: trunk@42478 -
This commit is contained in:
Jonas Maebe 2019-07-21 11:07:02 +00:00
parent e7fbebfef5
commit 83611b83cc
2 changed files with 5 additions and 10 deletions

View File

@ -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);

View File

@ -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$',