Browse Source

- removed maxcrecordalign parameter/field from recordsymtables, as this value
cannot be modified in the settings (so we can directly use the one from
current_settings)

git-svn-id: trunk@42447 -

Jonas Maebe 6 years ago
parent
commit
d8903ce6b3

+ 8 - 10
compiler/aasmcnst.pas

@@ -393,7 +393,7 @@ type
         maxcrecordalign: specify maximum C record alignment (no equivalent in
         maxcrecordalign: specify maximum C record alignment (no equivalent in
           source code)
           source code)
      }
      }
-     function begin_anonymous_record(const optionalname: string; packrecords, recordalign, recordalignmin, maxcrecordalign: shortint): trecorddef; virtual;
+     function begin_anonymous_record(const optionalname: string; packrecords, recordalign, recordalignmin: shortint): trecorddef; virtual;
      function end_anonymous_record: trecorddef; virtual;
      function end_anonymous_record: trecorddef; virtual;
 
 
      { add a placeholder element at the current position that later can be
      { add a placeholder element at the current position that later can be
@@ -1399,7 +1399,7 @@ implementation
        result.ofs:=0;
        result.ofs:=0;
        { pack the data, so that we don't add unnecessary null bytes after the
        { pack the data, so that we don't add unnecessary null bytes after the
          constant string }
          constant string }
-       begin_anonymous_record('$'+get_dynstring_rec_name(stringtype,false,len),1,sizeof(TConstPtrUInt),1,1);
+       begin_anonymous_record('$'+get_dynstring_rec_name(stringtype,false,len),1,sizeof(TConstPtrUInt),1);
        string_symofs:=get_string_symofs(stringtype,false);
        string_symofs:=get_string_symofs(stringtype,false);
        { encoding }
        { encoding }
        emit_tai(tai_const.create_16bit(encoding),u16inttype);
        emit_tai(tai_const.create_16bit(encoding),u16inttype);
@@ -1611,7 +1611,7 @@ implementation
        if (typ<>st_widestring) or
        if (typ<>st_widestring) or
           not winlike then
           not winlike then
          begin
          begin
-           result:=crecorddef.create_global_internal('$'+name,1,1,1);
+           result:=crecorddef.create_global_internal('$'+name,1,1);
            { encoding }
            { encoding }
            result.add_field_by_def('',u16inttype);
            result.add_field_by_def('',u16inttype);
            { element size }
            { element size }
@@ -1637,8 +1637,7 @@ implementation
        else
        else
          begin
          begin
            result:=crecorddef.create_global_internal('$'+name,4,
            result:=crecorddef.create_global_internal('$'+name,4,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
            { length in bytes }
            { length in bytes }
            result.add_field_by_def('',s32inttype);
            result.add_field_by_def('',s32inttype);
            streledef:=cwidechartype;
            streledef:=cwidechartype;
@@ -1689,8 +1688,7 @@ implementation
            result.lab:=startlab;
            result.lab:=startlab;
            datatcb.begin_anonymous_record('$'+get_dynstring_rec_name(st_widestring,true,strlength),
            datatcb.begin_anonymous_record('$'+get_dynstring_rec_name(st_widestring,true,strlength),
              4,4,
              4,4,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
            datatcb.emit_tai(Tai_const.Create_32bit(strlength*cwidechartype.size),s32inttype);
            datatcb.emit_tai(Tai_const.Create_32bit(strlength*cwidechartype.size),s32inttype);
            { can we optimise by placing the string constant label at the
            { can we optimise by placing the string constant label at the
              required offset? }
              required offset? }
@@ -1749,7 +1747,7 @@ implementation
        result.ofs:=0;
        result.ofs:=0;
        { pack the data, so that we don't add unnecessary null bytes after the
        { pack the data, so that we don't add unnecessary null bytes after the
          constant string }
          constant string }
-       begin_anonymous_record('',1,sizeof(TConstPtrUInt),1,1);
+       begin_anonymous_record('',1,sizeof(TConstPtrUInt),1);
        dynarray_symofs:=get_dynarray_symofs;
        dynarray_symofs:=get_dynarray_symofs;
        { what to do if ptrsinttype <> sizesinttype??? }
        { what to do if ptrsinttype <> sizesinttype??? }
        emit_tai(tai_const.create_sizeint(-1),ptrsinttype);
        emit_tai(tai_const.create_sizeint(-1),ptrsinttype);
@@ -1928,7 +1926,7 @@ implementation
      end;
      end;
 
 
 
 
-   function ttai_typedconstbuilder.begin_anonymous_record(const optionalname: string; packrecords, recordalign, recordalignmin, maxcrecordalign: shortint): trecorddef;
+   function ttai_typedconstbuilder.begin_anonymous_record(const optionalname: string; packrecords, recordalign, recordalignmin: shortint): trecorddef;
      var
      var
        anonrecorddef: trecorddef;
        anonrecorddef: trecorddef;
        typesym: ttypesym;
        typesym: ttypesym;
@@ -1949,7 +1947,7 @@ implementation
              end;
              end;
          end;
          end;
        { create skeleton def }
        { create skeleton def }
-       anonrecorddef:=crecorddef.create_global_internal(optionalname,packrecords,recordalignmin,maxcrecordalign);
+       anonrecorddef:=crecorddef.create_global_internal(optionalname,packrecords,recordalignmin);
        trecordsymtable(anonrecorddef.symtable).recordalignment:=recordalign;
        trecordsymtable(anonrecorddef.symtable).recordalignment:=recordalign;
        { generic aggregate housekeeping }
        { generic aggregate housekeeping }
        begin_aggregate_internal(anonrecorddef,true);
        begin_aggregate_internal(anonrecorddef,true);

+ 1 - 2
compiler/cresstr.pas

@@ -197,8 +197,7 @@ uses
         tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_vectorized_dead_strip_end,tcalo_data_force_indirect,tcalo_is_public_asm]);
         tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_vectorized_dead_strip_end,tcalo_data_force_indirect,tcalo_is_public_asm]);
         tcb.begin_anonymous_record(internaltypeprefixName[itp_emptyrec],
         tcb.begin_anonymous_record(internaltypeprefixName[itp_emptyrec],
           default_settings.packrecords,sizeof(pint),
           default_settings.packrecords,sizeof(pint),
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         current_asmdata.AsmLists[al_resourcestrings].concatList(
         current_asmdata.AsmLists[al_resourcestrings].concatList(
           tcb.get_final_asmlist_vectorized_dead_strip(
           tcb.get_final_asmlist_vectorized_dead_strip(
             tcb.end_anonymous_record,'RESSTR','',current_module.localsymtable,sizeof(pint)
             tcb.end_anonymous_record,'RESSTR','',current_module.localsymtable,sizeof(pint)

+ 4 - 5
compiler/llvm/llvmdef.pas

@@ -68,7 +68,7 @@ interface
       record consisting of 4 longints must be returned as a record consisting of
       record consisting of 4 longints must be returned as a record consisting of
       two int64's on x86-64. This function is used to create (and reuse)
       two int64's on x86-64. This function is used to create (and reuse)
       temporary recorddefs for such purposes.}
       temporary recorddefs for such purposes.}
-    function llvmgettemprecorddef(const fieldtypes: array of tdef; packrecords, recordalignmin, maxcrecordalign: shortint): trecorddef;
+    function llvmgettemprecorddef(const fieldtypes: array of tdef; packrecords, recordalignmin: shortint): trecorddef;
 
 
     { get the llvm type corresponding to a parameter, e.g. a record containing
     { get the llvm type corresponding to a parameter, e.g. a record containing
       two integer int64 for an arbitrary record split over two individual int64
       two integer int64 for an arbitrary record split over two individual int64
@@ -862,7 +862,7 @@ implementation
       end;
       end;
 
 
 
 
-    function llvmgettemprecorddef(const fieldtypes: array of tdef; packrecords, recordalignmin, maxcrecordalign: shortint): trecorddef;
+    function llvmgettemprecorddef(const fieldtypes: array of tdef; packrecords, recordalignmin: shortint): trecorddef;
       var
       var
         i: longint;
         i: longint;
         res: PHashSetItem;
         res: PHashSetItem;
@@ -920,7 +920,7 @@ implementation
         if not assigned(res^.Data) then
         if not assigned(res^.Data) then
           begin
           begin
             res^.Data:=crecorddef.create_global_internal(typename,packrecords,
             res^.Data:=crecorddef.create_global_internal(typename,packrecords,
-              recordalignmin,maxcrecordalign);
+              recordalignmin);
             for i:=low(fieldtypes) to high(fieldtypes) do
             for i:=low(fieldtypes) to high(fieldtypes) do
               trecorddef(res^.Data).add_field_by_def('F'+tostr(i),fieldtypes[i]);
               trecorddef(res^.Data).add_field_by_def('F'+tostr(i),fieldtypes[i]);
           end;
           end;
@@ -1023,8 +1023,7 @@ implementation
           retloc:=retloc^.next;
           retloc:=retloc^.next;
         until not assigned(retloc);
         until not assigned(retloc);
         result:=llvmgettemprecorddef(slice(retdeflist,i),C_alignment,
         result:=llvmgettemprecorddef(slice(retdeflist,i),C_alignment,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         include(result.defoptions,df_llvm_no_struct_packing);
         include(result.defoptions,df_llvm_no_struct_packing);
       end;
       end;
 
 

+ 1 - 2
compiler/llvm/llvmpi.pas

@@ -148,8 +148,7 @@ implementation
             exactly two fields in this struct) }
             exactly two fields in this struct) }
           landingpaddef:=llvmgettemprecorddef([voidpointertype,u32inttype],
           landingpaddef:=llvmgettemprecorddef([voidpointertype,u32inttype],
             1,
             1,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           reg:=hlcg.getregisterfordef(list,landingpaddef);
           reg:=hlcg.getregisterfordef(list,landingpaddef);
           landingpad:=taillvm.landingpad(reg,landingpaddef,{clause}nil);
           landingpad:=taillvm.landingpad(reg,landingpaddef,{clause}nil);
           list.concat(landingpad);
           list.concat(landingpad);

+ 2 - 3
compiler/llvm/nllvmtcon.pas

@@ -385,13 +385,12 @@ implementation
             arraydef:
             arraydef:
               { in an array, all elements come right after each other ->
               { in an array, all elements come right after each other ->
                 replace with a packed record }
                 replace with a packed record }
-              newdef:=crecorddef.create_global_internal('',1,1,1);
+              newdef:=crecorddef.create_global_internal('',1,1);
             recorddef,
             recorddef,
             objectdef:
             objectdef:
               newdef:=crecorddef.create_global_internal('',
               newdef:=crecorddef.create_global_internal('',
                 tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignment,
                 tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignment,
-                tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignmin,
-                tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).maxCrecordalign);
+                tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignmin);
             else
             else
               internalerror(2015122401);
               internalerror(2015122401);
           end;
           end;

+ 1 - 2
compiler/llvm/nllvmutil.pas

@@ -177,8 +177,7 @@ implementation
           fields[1]:=pd.getcopyas(procvardef,pc_address_only,'');
           fields[1]:=pd.getcopyas(procvardef,pc_address_only,'');
           fields[2]:=voidpointertype;
           fields[2]:=voidpointertype;
           itemdef:=llvmgettemprecorddef(fields,C_alignment,
           itemdef:=llvmgettemprecorddef(fields,C_alignment,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           include(itemdef.defoptions,df_llvm_no_struct_packing);
           include(itemdef.defoptions,df_llvm_no_struct_packing);
           tcb:=ctai_typedconstbuilder.create([tcalo_new_section]);
           tcb:=ctai_typedconstbuilder.create([tcalo_new_section]);
           tllvmtai_typedconstbuilder(tcb).appendingdef:=true;
           tllvmtai_typedconstbuilder(tcb).appendingdef:=true;

+ 2 - 2
compiler/ncal.pas

@@ -486,13 +486,13 @@ implementation
           end;
           end;
 
 
         { create a temp to store parameter values }
         { create a temp to store parameter values }
-        vardispatchparadef:=crecorddef.create_global_internal('',voidpointertype.size,voidpointertype.size,current_settings.alignment.maxCrecordalign);
+        vardispatchparadef:=crecorddef.create_global_internal('',voidpointertype.size,voidpointertype.size);
         { the size will be set once the vardistpatchparadef record has been completed }
         { the size will be set once the vardistpatchparadef record has been completed }
         params:=ctempcreatenode.create(vardispatchparadef,0,tt_persistent,false);
         params:=ctempcreatenode.create(vardispatchparadef,0,tt_persistent,false);
         addstatement(statements,params);
         addstatement(statements,params);
 
 
         tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
         tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
-        tcb.begin_anonymous_record('',1,sizeof(pint),1,1);
+        tcb.begin_anonymous_record('',1,sizeof(pint),1);
 
 
         if not variantdispatch then  { generate a tdispdesc record }
         if not variantdispatch then  { generate a tdispdesc record }
         begin
         begin

+ 42 - 84
compiler/ncgrtti.pas

@@ -205,8 +205,7 @@ implementation
         para : tparavarsym;
         para : tparavarsym;
       begin
       begin
         tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
         tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
         totalcount:=0;
         totalcount:=0;
         rtticount:=0;
         rtticount:=0;
@@ -241,8 +240,7 @@ implementation
                       def.init_paraloc_info(callerside);
                       def.init_paraloc_info(callerside);
 
 
                       tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
                       tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-                        targetinfos[target_info.system]^.alignment.recordalignmin,
-                        targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                        targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
                       write_rtti_reference(tcb,def.returndef,fullrtti);
                       write_rtti_reference(tcb,def.returndef,fullrtti);
                       write_callconv(tcb,def);
                       write_callconv(tcb,def);
@@ -256,8 +254,7 @@ implementation
                           para:=tparavarsym(def.paras[k]);
                           para:=tparavarsym(def.paras[k]);
 
 
                           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
                           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-                            targetinfos[target_info.system]^.alignment.recordalignmin,
-                            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                            targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
                           if is_open_array(para.vardef) or is_array_of_const(para.vardef) then
                           if is_open_array(para.vardef) or is_array_of_const(para.vardef) then
                             write_rtti_reference(tcb,tarraydef(para.vardef).elementdef,fullrtti)
                             write_rtti_reference(tcb,tarraydef(para.vardef).elementdef,fullrtti)
@@ -297,8 +294,7 @@ implementation
         { TTypeInfo, always packed and doesn't need alignment }
         { TTypeInfo, always packed and doesn't need alignment }
         tcb.begin_anonymous_record(
         tcb.begin_anonymous_record(
           internaltypeprefixName[itp_rtti_header]+tostr(length(name)),1,1,
           internaltypeprefixName[itp_rtti_header]+tostr(length(name)),1,1,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         if def.typ=arraydef then
         if def.typ=arraydef then
           InternalError(201012211);
           InternalError(201012211);
         tcb.emit_tai(Tai_const.Create_8bit(typekind),u8inttype);
         tcb.emit_tai(Tai_const.Create_8bit(typekind),u8inttype);
@@ -400,14 +396,12 @@ implementation
             loctcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_make_dead_strippable,tcalo_apply_constalign]);
             loctcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_make_dead_strippable,tcalo_apply_constalign]);
 
 
             loctcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
             loctcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
             loctcb.emit_ord_const(length(locs),u8inttype);
             loctcb.emit_ord_const(length(locs),u8inttype);
             for i:=low(locs) to high(locs) do
             for i:=low(locs) to high(locs) do
               begin
               begin
                 loctcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
                 loctcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-                  targetinfos[target_info.system]^.alignment.recordalignmin,
-                  targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                  targetinfos[target_info.system]^.alignment.recordalignmin);
                 loctcb.emit_ord_const(locs[i].loctype,u8inttype);
                 loctcb.emit_ord_const(locs[i].loctype,u8inttype);
                 loctcb.emit_ord_const(locs[i].regsub,u8inttype);
                 loctcb.emit_ord_const(locs[i].regsub,u8inttype);
                 loctcb.emit_ord_const(locs[i].regindex,u16inttype);
                 loctcb.emit_ord_const(locs[i].regindex,u16inttype);
@@ -519,8 +513,7 @@ implementation
             tcb.start_internal_data_builder(current_asmdata.AsmLists[al_rtti],sec_rodata,'',datatcb,tbllbl);
             tcb.start_internal_data_builder(current_asmdata.AsmLists[al_rtti],sec_rodata,'',datatcb,tbllbl);
 
 
             datatcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
             datatcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
             datatcb.emit_ord_const(list.count,u32inttype);
             datatcb.emit_ord_const(list.count,u32inttype);
 
 
             entrydef:=get_recorddef(itp_init_mop_offset_entry,[voidcodepointertype,sizeuinttype],defaultpacking);
             entrydef:=get_recorddef(itp_init_mop_offset_entry,[voidcodepointertype,sizeuinttype],defaultpacking);
@@ -865,8 +858,7 @@ implementation
 
 
       begin
       begin
         tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
         tcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         tcb.emit_ord_const(published_properties_count(st),u16inttype);
         tcb.emit_ord_const(published_properties_count(st),u16inttype);
         for i:=0 to st.SymList.Count-1 do
         for i:=0 to st.SymList.Count-1 do
           begin
           begin
@@ -886,8 +878,7 @@ implementation
                 tcb.begin_anonymous_record(
                 tcb.begin_anonymous_record(
                   propdefname,
                   propdefname,
                   1,min(reqalign,SizeOf(PInt)),
                   1,min(reqalign,SizeOf(PInt)),
-                  targetinfos[target_info.system]^.alignment.recordalignmin,
-                  targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                  targetinfos[target_info.system]^.alignment.recordalignmin);
                 if ppo_indexed in tpropertysym(sym).propoptions then
                 if ppo_indexed in tpropertysym(sym).propoptions then
                   proctypesinfo:=$40
                   proctypesinfo:=$40
                 else
                 else
@@ -950,8 +941,7 @@ implementation
                 tcb.begin_anonymous_record(
                 tcb.begin_anonymous_record(
                   internaltypeprefixName[itp_rtti_ansistr],
                   internaltypeprefixName[itp_rtti_ansistr],
                   defaultpacking,reqalign,
                   defaultpacking,reqalign,
-                  targetinfos[target_info.system]^.alignment.recordalignmin,
-                  targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                  targetinfos[target_info.system]^.alignment.recordalignmin);
                 write_common_rtti_data(tcb,def,rt);
                 write_common_rtti_data(tcb,def,rt);
                 tcb.emit_ord_const(def.encoding,u16inttype);
                 tcb.emit_ord_const(def.encoding,u16inttype);
                 tcb.end_anonymous_record;
                 tcb.end_anonymous_record;
@@ -997,13 +987,11 @@ implementation
             and o2s arrays for llvm (otherwise we have to write out the entire
             and o2s arrays for llvm (otherwise we have to write out the entire
             type definition every time we access an element from this record) }
             type definition every time we access an element from this record) }
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_size_start_rec]+def.unique_id_str,defaultpacking,reqalign,
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_size_start_rec]+def.unique_id_str,defaultpacking,reqalign,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           write_common_rtti_data(tcb,def,rt);
           write_common_rtti_data(tcb,def,rt);
           tcb.next_field_name:='typ_union_rec';
           tcb.next_field_name:='typ_union_rec';
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_size_start_rec2]+def.unique_id_str,defaultpacking,reqalign,
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_size_start_rec2]+def.unique_id_str,defaultpacking,reqalign,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           case longint(def.size) of
           case longint(def.size) of
             1 :
             1 :
               tcb.emit_ord_const(otUByte,u8inttype);
               tcb.emit_ord_const(otUByte,u8inttype);
@@ -1021,16 +1009,14 @@ implementation
             We need to adhere to this, otherwise things will break. }
             We need to adhere to this, otherwise things will break. }
           tcb.next_field_name:='min_max_rec';
           tcb.next_field_name:='min_max_rec';
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_min_max_rec]+def.unique_id_str,defaultpacking,reqalign,
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_min_max_rec]+def.unique_id_str,defaultpacking,reqalign,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           tcb.emit_ord_const(def.min,s32inttype);
           tcb.emit_ord_const(def.min,s32inttype);
           tcb.emit_ord_const(def.max,s32inttype);
           tcb.emit_ord_const(def.max,s32inttype);
           tcb.next_field_name:='basetype_array_rec';
           tcb.next_field_name:='basetype_array_rec';
           { all strings must appear right after each other -> from now on
           { all strings must appear right after each other -> from now on
             packrecords 1 (but the start must still be aligned) }
             packrecords 1 (but the start must still be aligned) }
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_basetype_array_rec]+def.unique_id_str,1,reqalign,
           tcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_enum_basetype_array_rec]+def.unique_id_str,1,reqalign,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           { write base type }
           { write base type }
           write_rtti_reference(tcb,def.basedef,rt);
           write_rtti_reference(tcb,def.basedef,rt);
           for i:=0 to def.symtable.SymList.Count-1 do
           for i:=0 to def.symtable.SymList.Count-1 do
@@ -1101,15 +1087,13 @@ implementation
             tcb.begin_anonymous_record(
             tcb.begin_anonymous_record(
               internaltypeprefixName[itp_rtti_ord_outer]+elesize,
               internaltypeprefixName[itp_rtti_ord_outer]+elesize,
               defaultpacking,reqalign,
               defaultpacking,reqalign,
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
             write_common_rtti_data(tcb,def,rt);
             write_common_rtti_data(tcb,def,rt);
             tcb.emit_ord_const(byte(trans[def.ordtype]),u8inttype);
             tcb.emit_ord_const(byte(trans[def.ordtype]),u8inttype);
             tcb.begin_anonymous_record(
             tcb.begin_anonymous_record(
               internaltypeprefixName[itp_rtti_ord_inner]+elesize,
               internaltypeprefixName[itp_rtti_ord_inner]+elesize,
               defaultpacking,reqalign,
               defaultpacking,reqalign,
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
             {Convert to longint to smuggle values in high(longint)+1..high(cardinal) into asmlist.}
             {Convert to longint to smuggle values in high(longint)+1..high(cardinal) into asmlist.}
             case deftrans of
             case deftrans of
               otUQWord:
               otUQWord:
@@ -1166,8 +1150,7 @@ implementation
                 tcb.begin_anonymous_record(
                 tcb.begin_anonymous_record(
                   internaltypeprefixName[itp_1byte],
                   internaltypeprefixName[itp_1byte],
                   defaultpacking,reqalign,
                   defaultpacking,reqalign,
-                  targetinfos[target_info.system]^.alignment.recordalignmin,
-                  targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                  targetinfos[target_info.system]^.alignment.recordalignmin);
                 write_common_rtti_data(tcb,def,rt);
                 write_common_rtti_data(tcb,def,rt);
                 tcb.emit_ord_const(ftCurr,u8inttype);
                 tcb.emit_ord_const(ftCurr,u8inttype);
                 tcb.end_anonymous_record;
                 tcb.end_anonymous_record;
@@ -1188,8 +1171,7 @@ implementation
            tcb.begin_anonymous_record(
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_1byte],
              internaltypeprefixName[itp_1byte],
              defaultpacking,reqalign,
              defaultpacking,reqalign,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
            write_common_rtti_data(tcb,def,rt);
            write_common_rtti_data(tcb,def,rt);
            tcb.emit_ord_const(translate[def.floattype],u8inttype);
            tcb.emit_ord_const(translate[def.floattype],u8inttype);
            tcb.end_anonymous_record;
            tcb.end_anonymous_record;
@@ -1202,14 +1184,12 @@ implementation
            tcb.begin_anonymous_record(
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_rtti_set_outer],
              internaltypeprefixName[itp_rtti_set_outer],
              defaultpacking,reqalign,
              defaultpacking,reqalign,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
            write_common_rtti_data(tcb,def,rt);
            write_common_rtti_data(tcb,def,rt);
            tcb.begin_anonymous_record(
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_rtti_set_middle],
              internaltypeprefixName[itp_rtti_set_middle],
              defaultpacking,reqalign,
              defaultpacking,reqalign,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
            case def.size of
            case def.size of
              1:
              1:
                tcb.emit_ord_const(otUByte,u8inttype);
                tcb.emit_ord_const(otUByte,u8inttype);
@@ -1223,8 +1203,7 @@ implementation
            tcb.begin_anonymous_record(
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_rtti_set_inner],
              internaltypeprefixName[itp_rtti_set_inner],
              defaultpacking,reqalign,
              defaultpacking,reqalign,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
            tcb.emit_ord_const(def.size,sizesinttype);
            tcb.emit_ord_const(def.size,sizesinttype);
            write_rtti_reference(tcb,def.elementdef,rt);
            write_rtti_reference(tcb,def.elementdef,rt);
            tcb.end_anonymous_record;
            tcb.end_anonymous_record;
@@ -1264,8 +1243,7 @@ implementation
                tcb.begin_anonymous_record(
                tcb.begin_anonymous_record(
                  internaltypeprefixName[itp_rtti_normal_array]+tostr(dimcount),
                  internaltypeprefixName[itp_rtti_normal_array]+tostr(dimcount),
                  defaultpacking,reqalign,
                  defaultpacking,reqalign,
-                 targetinfos[target_info.system]^.alignment.recordalignmin,
-                 targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                 targetinfos[target_info.system]^.alignment.recordalignmin);
                write_common_rtti_data(tcb,def,rt);
                write_common_rtti_data(tcb,def,rt);
                { total size = elecount * elesize of the first arraydef }
                { total size = elecount * elesize of the first arraydef }
                tcb.emit_tai(Tai_const.Create_sizeint(def.elecount*def.elesize),sizeuinttype);
                tcb.emit_tai(Tai_const.Create_sizeint(def.elecount*def.elesize),sizeuinttype);
@@ -1296,8 +1274,7 @@ implementation
                tcb.begin_anonymous_record(
                tcb.begin_anonymous_record(
                  internaltypeprefixName[itp_rtti_dyn_array],
                  internaltypeprefixName[itp_rtti_dyn_array],
                  defaultpacking,reqalign,
                  defaultpacking,reqalign,
-                 targetinfos[target_info.system]^.alignment.recordalignmin,
-                 targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                 targetinfos[target_info.system]^.alignment.recordalignmin);
                write_common_rtti_data(tcb,def,rt);
                write_common_rtti_data(tcb,def,rt);
                { size of elements }
                { size of elements }
                tcb.emit_tai(Tai_const.Create_sizeint(def.elesize),sizeuinttype);
                tcb.emit_tai(Tai_const.Create_sizeint(def.elesize),sizeuinttype);
@@ -1322,8 +1299,7 @@ implementation
           tcb.begin_anonymous_record(
           tcb.begin_anonymous_record(
             internaltypeprefixName[itp_rtti_ref],
             internaltypeprefixName[itp_rtti_ref],
             defaultpacking,reqalign,
             defaultpacking,reqalign,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           write_common_rtti_data(tcb,def,rt);
           write_common_rtti_data(tcb,def,rt);
           write_rtti_reference(tcb,def.pointeddef,rt);
           write_rtti_reference(tcb,def.pointeddef,rt);
           tcb.end_anonymous_record;
           tcb.end_anonymous_record;
@@ -1335,8 +1311,7 @@ implementation
           tcb.begin_anonymous_record(
           tcb.begin_anonymous_record(
             internaltypeprefixName[itp_rtti_ref],
             internaltypeprefixName[itp_rtti_ref],
             defaultpacking,reqalign,
             defaultpacking,reqalign,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           write_common_rtti_data(tcb,def,rt);
           write_common_rtti_data(tcb,def,rt);
           write_rtti_reference(tcb,def.pointeddef,rt);
           write_rtti_reference(tcb,def.pointeddef,rt);
           tcb.end_anonymous_record;
           tcb.end_anonymous_record;
@@ -1360,8 +1335,7 @@ implementation
             tcb.begin_anonymous_record(
             tcb.begin_anonymous_record(
               rttilab.Name,
               rttilab.Name,
               defaultpacking,reqalign,
               defaultpacking,reqalign,
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign
+              targetinfos[target_info.system]^.alignment.recordalignmin
             );
             );
 
 
             { use "succ" to omit first enum item "mop_none" }
             { use "succ" to omit first enum item "mop_none" }
@@ -1394,8 +1368,7 @@ implementation
              only be aligned to 4 even on 64 bit target (while the rtti code
              only be aligned to 4 even on 64 bit target (while the rtti code
              in typinfo expects alignments to sizeof(pointer)) }
              in typinfo expects alignments to sizeof(pointer)) }
            tcb.begin_anonymous_record('',defaultpacking,reqalign,
            tcb.begin_anonymous_record('',defaultpacking,reqalign,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
            write_common_rtti_data(tcb,def,rt);
            write_common_rtti_data(tcb,def,rt);
 
 
@@ -1451,8 +1424,7 @@ implementation
                tcb.begin_anonymous_record(
                tcb.begin_anonymous_record(
                  internaltypeprefixName[itp_rtti_proc_param]+tostr(length(parasym.realname)),
                  internaltypeprefixName[itp_rtti_proc_param]+tostr(length(parasym.realname)),
                  defaultpacking,min(reqalign,SizeOf(PInt)),
                  defaultpacking,min(reqalign,SizeOf(PInt)),
-                 targetinfos[target_info.system]^.alignment.recordalignmin,
-                 targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                 targetinfos[target_info.system]^.alignment.recordalignmin);
                { write flags for current parameter }
                { write flags for current parameter }
                write_param_flag(tcb,parasym);
                write_param_flag(tcb,parasym);
                { write param type }
                { write param type }
@@ -1476,8 +1448,7 @@ implementation
                { write method id and name }
                { write method id and name }
                write_header(tcb,def,tkMethod);
                write_header(tcb,def,tkMethod);
                tcb.begin_anonymous_record('',defaultpacking,reqalign,
                tcb.begin_anonymous_record('',defaultpacking,reqalign,
-                 targetinfos[target_info.system]^.alignment.recordalignmin,
-                 targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                 targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
                write_common_rtti_data(tcb,def,rt);
                write_common_rtti_data(tcb,def,rt);
 
 
@@ -1520,8 +1491,7 @@ implementation
             begin
             begin
               write_header(tcb,def,tkProcvar);
               write_header(tcb,def,tkProcvar);
               tcb.begin_anonymous_record('',defaultpacking,reqalign,
               tcb.begin_anonymous_record('',defaultpacking,reqalign,
-                targetinfos[target_info.system]^.alignment.recordalignmin,
-                targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
               write_common_rtti_data(tcb,def,rt);
               write_common_rtti_data(tcb,def,rt);
 
 
@@ -1632,8 +1602,7 @@ implementation
             collect_propnamelist(propnamelist,def);
             collect_propnamelist(propnamelist,def);
 
 
             tcb.begin_anonymous_record('',defaultpacking,reqalign,
             tcb.begin_anonymous_record('',defaultpacking,reqalign,
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
             { write parent typeinfo }
             { write parent typeinfo }
             write_rtti_reference(tcb,def.childof,fullrtti);
             write_rtti_reference(tcb,def.childof,fullrtti);
@@ -1659,8 +1628,7 @@ implementation
             tcb.emit_shortstring_const(current_module.realmodulename^);
             tcb.emit_shortstring_const(current_module.realmodulename^);
 
 
             tcb.begin_anonymous_record('',defaultpacking,reqalign,
             tcb.begin_anonymous_record('',defaultpacking,reqalign,
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
             { write iidstr }
             { write iidstr }
             if def.objecttype=odt_interfacecorba then
             if def.objecttype=odt_interfacecorba then
@@ -1704,8 +1672,7 @@ implementation
            tcb.emit_shortstring_const(def.objrealname^);
            tcb.emit_shortstring_const(def.objrealname^);
 
 
            tcb.begin_anonymous_record('',defaultpacking,reqalign,
            tcb.begin_anonymous_record('',defaultpacking,reqalign,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
            write_common_rtti_data(tcb,def,rt);
            write_common_rtti_data(tcb,def,rt);
 
 
@@ -1798,8 +1765,7 @@ implementation
             argtcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_make_dead_strippable,tcalo_apply_constalign]);
             argtcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_make_dead_strippable,tcalo_apply_constalign]);
 
 
             argtcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
             argtcb.begin_anonymous_record('',defaultpacking,min(reqalign,SizeOf(PInt)),
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
             arglen:=0;
             arglen:=0;
             for i:=0 to High(attr.paras) do
             for i:=0 to High(attr.paras) do
@@ -1860,14 +1826,12 @@ implementation
       tbltcb.begin_anonymous_record(
       tbltcb.begin_anonymous_record(
         internaltypeprefixName[itp_rtti_attr_list]+tostr(count),
         internaltypeprefixName[itp_rtti_attr_list]+tostr(count),
         defaultpacking,min(reqalign,SizeOf(PInt)),
         defaultpacking,min(reqalign,SizeOf(PInt)),
-        targetinfos[target_info.system]^.alignment.recordalignmin,
-        targetinfos[target_info.system]^.alignment.maxCrecordalign);
+        targetinfos[target_info.system]^.alignment.recordalignmin);
       tbltcb.emit_ord_const(count,u16inttype);
       tbltcb.emit_ord_const(count,u16inttype);
       for i:=0 to count-1 do
       for i:=0 to count-1 do
         begin
         begin
           tbltcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_attr_entry],defaultpacking,min(reqalign,SizeOf(PInt)),
           tbltcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_attr_entry],defaultpacking,min(reqalign,SizeOf(PInt)),
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           attr:=trtti_attribute(attr_list.rtti_attributes[i]);
           attr:=trtti_attribute(attr_list.rtti_attributes[i]);
 
 
           write_rtti_reference(tbltcb,ttypesym(attr.typesym).typedef,fullrtti);
           write_rtti_reference(tbltcb,ttypesym(attr.typesym).typedef,fullrtti);
@@ -1979,14 +1943,12 @@ implementation
           tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_data_force_indirect]);
           tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_data_force_indirect]);
           { use TConstPtrUInt packrecords to ensure good alignment }
           { use TConstPtrUInt packrecords to ensure good alignment }
           tcb.begin_anonymous_record('',defaultpacking,reqalign,
           tcb.begin_anonymous_record('',defaultpacking,reqalign,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           { now emit the data: first the mode }
           { now emit the data: first the mode }
           tcb.emit_tai(Tai_const.create_32bit(longint(mode)),u32inttype);
           tcb.emit_tai(Tai_const.create_32bit(longint(mode)),u32inttype);
           { align }
           { align }
           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           if mode=lookup then
           if mode=lookup then
             begin
             begin
               o:=tenumsym(syms[0]).value;  {Start with min value.}
               o:=tenumsym(syms[0]).value;  {Start with min value.}
@@ -2013,8 +1975,7 @@ implementation
             begin
             begin
               tcb.emit_ord_const(sym_count,u32inttype);
               tcb.emit_ord_const(sym_count,u32inttype);
               tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
               tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
-                targetinfos[target_info.system]^.alignment.recordalignmin,
-                targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                targetinfos[target_info.system]^.alignment.recordalignmin);
               for i:=0 to sym_count-1 do
               for i:=0 to sym_count-1 do
                 begin
                 begin
                   tcb.emit_ord_const(tenumsym(syms[i]).value,s32inttype);
                   tcb.emit_ord_const(tenumsym(syms[i]).value,s32inttype);
@@ -2058,13 +2019,11 @@ implementation
           tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_data_force_indirect]);
           tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_data_force_indirect]);
           { begin of Tstring_to_ord }
           { begin of Tstring_to_ord }
           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           tcb.emit_ord_const(syms.count,s32inttype);
           tcb.emit_ord_const(syms.count,s32inttype);
           { begin of "data" array in Tstring_to_ord }
           { begin of "data" array in Tstring_to_ord }
           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
           tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(PInt)),
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           for i:=0 to syms.count-1 do
           for i:=0 to syms.count-1 do
             begin
             begin
               tcb.emit_ord_const(tenumsym(syms[i]).value,s32inttype);
               tcb.emit_ord_const(tenumsym(syms[i]).value,s32inttype);
@@ -2249,8 +2208,7 @@ implementation
         tcb.begin_anonymous_record(
         tcb.begin_anonymous_record(
           internaltypeprefixName[itp_rttidef]+tstoreddef(def).rtti_mangledname(rt),
           internaltypeprefixName[itp_rttidef]+tstoreddef(def).rtti_mangledname(rt),
           defaultpacking,reqalign,
           defaultpacking,reqalign,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign
+          targetinfos[target_info.system]^.alignment.recordalignmin
         );
         );
         write_rtti_data(tcb,def,rt);
         write_rtti_data(tcb,def,rt);
         rttidef:=tcb.end_anonymous_record;
         rttidef:=tcb.end_anonymous_record;

+ 5 - 10
compiler/ncgvmt.pas

@@ -614,8 +614,7 @@ implementation
             tcb.start_internal_data_builder(current_asmdata.AsmLists[al_const],sec_rodata,_class.vmt_mangledname,datatcb,classtable);
             tcb.start_internal_data_builder(current_asmdata.AsmLists[al_const],sec_rodata,_class.vmt_mangledname,datatcb,classtable);
             datatcb.begin_anonymous_record('$fpc_intern_classtable_'+tostr(classtablelist.Count-1),
             datatcb.begin_anonymous_record('$fpc_intern_classtable_'+tostr(classtablelist.Count-1),
               packrecords,1,
               packrecords,1,
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
             datatcb.emit_tai(Tai_const.Create_16bit(classtablelist.count),u16inttype);
             datatcb.emit_tai(Tai_const.Create_16bit(classtablelist.count),u16inttype);
             for i:=0 to classtablelist.Count-1 do
             for i:=0 to classtablelist.Count-1 do
               begin
               begin
@@ -649,8 +648,7 @@ implementation
               plus there would be very little chance that it could actually be
               plus there would be very little chance that it could actually be
               reused }
               reused }
             datatcb.begin_anonymous_record('',packrecords,1,
             datatcb.begin_anonymous_record('',packrecords,1,
-              targetinfos[target_info.system]^.alignment.recordalignmin,
-              targetinfos[target_info.system]^.alignment.maxCrecordalign);
+              targetinfos[target_info.system]^.alignment.recordalignmin);
             datatcb.emit_tai(Tai_const.Create_16bit(fieldcount),u16inttype);
             datatcb.emit_tai(Tai_const.Create_16bit(fieldcount),u16inttype);
             datatcb.emit_tai(Tai_const.Create_sym(classtable),cpointerdef.getreusable(classtabledef));
             datatcb.emit_tai(Tai_const.Create_sym(classtable),cpointerdef.getreusable(classtabledef));
             for i:=0 to _class.symtable.SymList.Count-1 do
             for i:=0 to _class.symtable.SymList.Count-1 do
@@ -672,8 +670,7 @@ implementation
                       end;
                       end;
                     }
                     }
                     datatcb.begin_anonymous_record('$fpc_intern_fieldinfo_'+tostr(length(tfieldvarsym(sym).realname)),packrecords,1,
                     datatcb.begin_anonymous_record('$fpc_intern_fieldinfo_'+tostr(length(tfieldvarsym(sym).realname)),packrecords,1,
-                      targetinfos[target_info.system]^.alignment.recordalignmin,
-                      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+                      targetinfos[target_info.system]^.alignment.recordalignmin);
                     datatcb.emit_tai(Tai_const.Create_sizeint(tfieldvarsym(sym).fieldoffset),sizeuinttype);
                     datatcb.emit_tai(Tai_const.Create_sizeint(tfieldvarsym(sym).fieldoffset),sizeuinttype);
                     classindex:=classtablelist.IndexOf(tfieldvarsym(sym).vardef);
                     classindex:=classtablelist.IndexOf(tfieldvarsym(sym).vardef);
                     if classindex=-1 then
                     if classindex=-1 then
@@ -728,8 +725,7 @@ implementation
       begin
       begin
         tcb.start_internal_data_builder(current_asmdata.AsmLists[al_const],sec_rodata,'',datatcb,fintfvtablelabels[intfindex]);
         tcb.start_internal_data_builder(current_asmdata.AsmLists[al_const],sec_rodata,'',datatcb,fintfvtablelabels[intfindex]);
         datatcb.begin_anonymous_record('',0,1,
         datatcb.begin_anonymous_record('',0,1,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         if assigned(AImplIntf.procdefs) then
         if assigned(AImplIntf.procdefs) then
           begin
           begin
             for i:=0 to AImplIntf.procdefs.count-1 do
             for i:=0 to AImplIntf.procdefs.count-1 do
@@ -847,8 +843,7 @@ implementation
 
 
         tcb.start_internal_data_builder(current_asmdata.AsmLists[al_const],sec_rodata,_class.vmt_mangledname,datatcb,lab);
         tcb.start_internal_data_builder(current_asmdata.AsmLists[al_const],sec_rodata,_class.vmt_mangledname,datatcb,lab);
         datatcb.begin_anonymous_record('',default_settings.packrecords,1,
         datatcb.begin_anonymous_record('',default_settings.packrecords,1,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         datatcb.emit_tai(Tai_const.Create_sizeint(_class.ImplementedInterfaces.count),sizeuinttype);
         datatcb.emit_tai(Tai_const.Create_sizeint(_class.ImplementedInterfaces.count),sizeuinttype);
         interfaceentrydef:=search_system_type('TINTERFACEENTRY').typedef;
         interfaceentrydef:=search_system_type('TINTERFACEENTRY').typedef;
         interfaceentrytypedef:=search_system_type('TINTERFACEENTRYTYPE').typedef;
         interfaceentrytypedef:=search_system_type('TINTERFACEENTRYTYPE').typedef;

+ 6 - 12
compiler/ngenutil.pas

@@ -1082,8 +1082,7 @@ implementation
     begin
     begin
       unitinits:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       unitinits:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       unitinits.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
       unitinits.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
-        targetinfos[target_info.system]^.alignment.recordalignmin,
-        targetinfos[target_info.system]^.alignment.maxCrecordalign);
+        targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
       { tablecount }
       { tablecount }
       unitinits.emit_ord_const(entries.count,aluuinttype);
       unitinits.emit_ord_const(entries.count,aluuinttype);
@@ -1167,8 +1166,7 @@ implementation
       count:=0;
       count:=0;
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       tcb.begin_anonymous_record('',1,sizeof(pint),
       tcb.begin_anonymous_record('',1,sizeof(pint),
-        targetinfos[target_info.system]^.alignment.recordalignmin,
-        targetinfos[target_info.system]^.alignment.maxCrecordalign
+        targetinfos[target_info.system]^.alignment.recordalignmin
       );
       );
       placeholder:=tcb.emit_placeholder(u32inttype);
       placeholder:=tcb.emit_placeholder(u32inttype);
 
 
@@ -1244,8 +1242,7 @@ implementation
          exit;
          exit;
        tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
        tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
        tabledef:=tcb.begin_anonymous_record('',1,sizeof(pint),
        tabledef:=tcb.begin_anonymous_record('',1,sizeof(pint),
-         targetinfos[target_info.system]^.alignment.recordalignmin,
-         targetinfos[target_info.system]^.alignment.maxCrecordalign);
+         targetinfos[target_info.system]^.alignment.recordalignmin);
        if assigned(current_module.globalsymtable) then
        if assigned(current_module.globalsymtable) then
          current_module.globalsymtable.SymList.ForEachCall(@AddToThreadvarList,tcb);
          current_module.globalsymtable.SymList.ForEachCall(@AddToThreadvarList,tcb);
        current_module.localsymtable.SymList.ForEachCall(@AddToThreadvarList,tcb);
        current_module.localsymtable.SymList.ForEachCall(@AddToThreadvarList,tcb);
@@ -1279,8 +1276,7 @@ implementation
     begin
     begin
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       tcb.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
       tcb.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
-        targetinfos[target_info.system]^.alignment.recordalignmin,
-        targetinfos[target_info.system]^.alignment.maxCrecordalign
+        targetinfos[target_info.system]^.alignment.recordalignmin
       );
       );
       { placeholder for the count }
       { placeholder for the count }
       countplaceholder:=tcb.emit_placeholder(sizesinttype);
       countplaceholder:=tcb.emit_placeholder(sizesinttype);
@@ -1334,8 +1330,7 @@ implementation
       s:=make_mangledname(prefix,current_module.localsymtable,'');
       s:=make_mangledname(prefix,current_module.localsymtable,'');
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       tcb.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
       tcb.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
-        targetinfos[target_info.system]^.alignment.recordalignmin,
-        targetinfos[target_info.system]^.alignment.maxCrecordalign  );
+        targetinfos[target_info.system]^.alignment.recordalignmin);
       repeat
       repeat
         { optimize away unused local/static symbols }
         { optimize away unused local/static symbols }
         if (item.sym.refs>0) or (item.sym.owner.symtabletype=globalsymtable) then
         if (item.sym.refs>0) or (item.sym.owner.symtabletype=globalsymtable) then
@@ -1399,8 +1394,7 @@ implementation
       count:=0;
       count:=0;
       hp:=tmodule(loaded_units.first);
       hp:=tmodule(loaded_units.first);
       tcb.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
       tcb.begin_anonymous_record('',default_settings.packrecords,sizeof(pint),
-        targetinfos[target_info.system]^.alignment.recordalignmin,
-        targetinfos[target_info.system]^.alignment.maxCrecordalign);
+        targetinfos[target_info.system]^.alignment.recordalignmin);
       countplaceholder:=tcb.emit_placeholder(sizesinttype);
       countplaceholder:=tcb.emit_placeholder(sizesinttype);
       while assigned(hp) do
       while assigned(hp) do
         begin
         begin

+ 1 - 2
compiler/nobj.pas

@@ -833,8 +833,7 @@ implementation
         vmtdef:=crecorddef.create_global_internal(
         vmtdef:=crecorddef.create_global_internal(
           vmtdefname,
           vmtdefname,
           0,
           0,
-          target_info.alignment.recordalignmin,
-          target_info.alignment.maxCrecordalign);
+          target_info.alignment.recordalignmin);
 {$ifdef llvm}
 {$ifdef llvm}
         { in case of a class declared in the implementation section of unit
         { in case of a class declared in the implementation section of unit
           whose method is called from an inline routine -- LLVM needs to be able
           whose method is called from an inline routine -- LLVM needs to be able

+ 15 - 30
compiler/objcgutl.pas

@@ -330,8 +330,7 @@ procedure tobjcrttiwriter.gen_objc_methods(list: tasmlist; objccls: tobjectdef;
     tcb:=ctai_typedconstbuilder.create(SectFlags[target_info.system in systems_objc_nfabi]);
     tcb:=ctai_typedconstbuilder.create(SectFlags[target_info.system in systems_objc_nfabi]);
     tcb.begin_anonymous_record(internaltypeprefixName[itp_objc_method_list]+tostr(mcnt),
     tcb.begin_anonymous_record(internaltypeprefixName[itp_objc_method_list]+tostr(mcnt),
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     if (abi=oa_fragile) then
     if (abi=oa_fragile) then
       { not used, always zero }
       { not used, always zero }
@@ -470,8 +469,7 @@ procedure tobjcrttiwriter.gen_objc_protocol_list(list: tasmlist; protolist: tfpo
     tcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_new_section]);
     tcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_new_section]);
     tcb.begin_anonymous_record(internaltypeprefixName[itp_objc_proto_list]+tostr(protolist.Count),
     tcb.begin_anonymous_record(internaltypeprefixName[itp_objc_proto_list]+tostr(protolist.Count),
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     { protocol lists are stored in .objc_cat_cls_meth section }
     { protocol lists are stored in .objc_cat_cls_meth section }
     current_asmdata.getlabel(protolistsym, alt_data);
     current_asmdata.getlabel(protolistsym, alt_data);
@@ -526,8 +524,7 @@ begin
   tcb.begin_anonymous_record(
   tcb.begin_anonymous_record(
     internaltypeprefixName[itp_objc_cat_methods]+tostr(items.count),
     internaltypeprefixName[itp_objc_cat_methods]+tostr(items.count),
     C_alignment,1,
     C_alignment,1,
-    targetinfos[target_info.system]^.alignment.recordalignmin,
-    targetinfos[target_info.system]^.alignment.maxCrecordalign);
+    targetinfos[target_info.system]^.alignment.recordalignmin);
   if (abi=oa_nonfragile) then
   if (abi=oa_nonfragile) then
     begin
     begin
       { size of each entry -- always 32 bit value }
       { size of each entry -- always 32 bit value }
@@ -709,8 +706,7 @@ function tobjcrttiwriter_fragile.gen_objc_protocol_ext(list: TAsmList; optinstsy
         tcb.begin_anonymous_record(
         tcb.begin_anonymous_record(
           internaltypeprefixName[itb_objc_fr_protocol_ext],
           internaltypeprefixName[itb_objc_fr_protocol_ext],
           C_alignment,1,
           C_alignment,1,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         { size of this structure }
         { size of this structure }
         tcb.emit_ord_const(16,u32inttype);
         tcb.emit_ord_const(16,u32inttype);
         { optional instance methods }
         { optional instance methods }
@@ -757,8 +753,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_protocol(list:TAsmList; protocol: tob
     tcb.begin_anonymous_record(
     tcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_fr_protocol],
       internaltypeprefixName[itb_objc_fr_protocol],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     { protocol's isa - points to information about optional methods/properties }
     { protocol's isa - points to information about optional methods/properties }
     ConcatSymOrNil(tcb,protoext,voidpointertype);
     ConcatSymOrNil(tcb,protoext,voidpointertype);
@@ -828,8 +823,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_category_sections(list:TAsmList; objc
     tcb.begin_anonymous_record(
     tcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_fr_category],
       internaltypeprefixName[itb_objc_fr_category],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     tcb.queue_init(voidpointertype);
     tcb.queue_init(voidpointertype);
     tcb.queue_emit_asmsym(catstrsym,catstrdef);
     tcb.queue_emit_asmsym(catstrsym,catstrdef);
@@ -945,8 +939,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_classes_sections(list:TAsmList; objcl
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
     tcb.begin_anonymous_record(internaltypeprefixName[itb_objc_fr_meta_class],
     tcb.begin_anonymous_record(internaltypeprefixName[itb_objc_fr_meta_class],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     tcb.queue_init(voidpointertype);
     tcb.queue_init(voidpointertype);
     tcb.queue_emit_asmsym(metaisaStrSym,metaisaStrDef);
     tcb.queue_emit_asmsym(metaisaStrSym,metaisaStrDef);
@@ -1001,8 +994,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_classes_sections(list:TAsmList; objcl
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
     tcb.begin_anonymous_record(internaltypeprefixName[itb_objc_fr_class],
     tcb.begin_anonymous_record(internaltypeprefixName[itb_objc_fr_class],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     { for class declaration: the isa points to the meta-class declaration }
     { for class declaration: the isa points to the meta-class declaration }
     tcb.emit_tai(Tai_const.Create_sym(metasym),cpointerdef.getreusable(metaDef));
     tcb.emit_tai(Tai_const.Create_sym(metasym),cpointerdef.getreusable(metaDef));
@@ -1070,8 +1062,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_info_sections(list: tasmlist);
         tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
         tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
         tcb.begin_anonymous_record('',
         tcb.begin_anonymous_record('',
           C_alignment,1,
           C_alignment,1,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         { ??? (always 0 in Clang) }
         { ??? (always 0 in Clang) }
         tcb.emit_tai(tai_const.Create_nil_dataptr,voidpointertype);
         tcb.emit_tai(tai_const.Create_nil_dataptr,voidpointertype);
         { ??? (From Clang: always 0, pointer to some selector) }
         { ??? (From Clang: always 0, pointer to some selector) }
@@ -1102,8 +1093,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_info_sections(list: tasmlist);
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section,tcalo_no_dead_strip]);
     tcb.begin_anonymous_record('',
     tcb.begin_anonymous_record('',
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
     { version number = 7 (always, both for gcc and clang) }
     { version number = 7 (always, both for gcc and clang) }
     tcb.emit_ord_const(7,ptruinttype);
     tcb.emit_ord_const(7,ptruinttype);
     { sizeof(objc_module): 4 pointer-size entities }
     { sizeof(objc_module): 4 pointer-size entities }
@@ -1267,8 +1257,7 @@ procedure tobjcrttiwriter_nonfragile.gen_objc_ivars(list: tasmlist; objccls: tob
     tcb.begin_anonymous_record(
     tcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_nf_ivars]+tostr(vcnt),
       internaltypeprefixName[itb_objc_nf_ivars]+tostr(vcnt),
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     { size of each entry -- always 32 bit value }
     { size of each entry -- always 32 bit value }
     ivtype:=search_named_unit_globaltype('OBJC','OBJC_IVAR',true).typedef;
     ivtype:=search_named_unit_globaltype('OBJC','OBJC_IVAR',true).typedef;
@@ -1436,8 +1425,7 @@ procedure tobjcrttiwriter_nonfragile.gen_objc_category_sections(list:TAsmList; o
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section]);
     tcb:=ctai_typedconstbuilder.create([tcalo_new_section]);
     tcb.begin_anonymous_record(internaltypeprefixName[itb_objc_nf_category],
     tcb.begin_anonymous_record(internaltypeprefixName[itb_objc_nf_category],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
     tcb.queue_init(voidpointertype);
     tcb.queue_init(voidpointertype);
     tcb.queue_emit_asmsym(catstrsym,catstrdef);
     tcb.queue_emit_asmsym(catstrsym,catstrdef);
     tcb.emit_tai(Tai_const.Create_sym(clssym),voidpointertype);
     tcb.emit_tai(Tai_const.Create_sym(clssym),voidpointertype);
@@ -1642,8 +1630,7 @@ procedure tobjcrttiwriter_nonfragile.gen_objc_class_ro_part(list: tasmlist; objc
     tcb.begin_anonymous_record(
     tcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_nf_class_ro_part],
       internaltypeprefixName[itb_objc_nf_class_ro_part],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     tcb.emit_ord_const(flags,u32inttype);
     tcb.emit_ord_const(flags,u32inttype);
     tcb.emit_ord_const(start,u32inttype);
     tcb.emit_ord_const(start,u32inttype);
@@ -1717,15 +1704,13 @@ procedure tobjcrttiwriter_nonfragile.gen_objc_classes_sections(list:TAsmList; ob
     classdef:=isatcb.begin_anonymous_record(
     classdef:=isatcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_nf_class],
       internaltypeprefixName[itb_objc_nf_class],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     metatcb:=ctai_typedconstbuilder.create([tcalo_new_section]);
     metatcb:=ctai_typedconstbuilder.create([tcalo_new_section]);
     metadef:=metatcb.begin_anonymous_record(
     metadef:=metatcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_nf_meta_class],
       internaltypeprefixName[itb_objc_nf_meta_class],
       C_alignment,1,
       C_alignment,1,
-      targetinfos[target_info.system]^.alignment.recordalignmin,
-      targetinfos[target_info.system]^.alignment.maxCrecordalign);
+      targetinfos[target_info.system]^.alignment.recordalignmin);
 
 
     clssym:=current_asmdata.DefineAsmSymbol(objclss.rtti_mangledname(objcclassrtti),vis,AT_DATA,classdef);
     clssym:=current_asmdata.DefineAsmSymbol(objclss.rtti_mangledname(objcclassrtti),vis,AT_DATA,classdef);
     metasym:=current_asmdata.DefineAsmSymbol(objclss.rtti_mangledname(objcmetartti),vis,AT_DATA,metadef);
     metasym:=current_asmdata.DefineAsmSymbol(objclss.rtti_mangledname(objcmetartti),vis,AT_DATA,metadef);

+ 1 - 1
compiler/pdecvar.pas

@@ -1900,7 +1900,7 @@ implementation
                 Message(type_e_ordinal_expr_expected);
                 Message(type_e_ordinal_expr_expected);
               consume(_OF);
               consume(_OF);
 
 
-              UnionSymtable:=trecordsymtable.create('',current_settings.packrecords,current_settings.alignment.recordalignmin,current_settings.alignment.maxCrecordalign);
+              UnionSymtable:=trecordsymtable.create('',current_settings.packrecords,current_settings.alignment.recordalignmin);
               UnionDef:=crecorddef.create('',unionsymtable);
               UnionDef:=crecorddef.create('',unionsymtable);
               uniondef.isunion:=true;
               uniondef.isunion:=true;
 
 

+ 1 - 1
compiler/pgenutil.pas

@@ -1266,7 +1266,7 @@ uses
                         Message(parser_e_illegal_expression)
                         Message(parser_e_illegal_expression)
                       else
                       else
                         begin
                         begin
-                          srsymtable:=trecordsymtable.create(defname,0,1,1);
+                          srsymtable:=trecordsymtable.create(defname,0,1);
                           basedef:=crecorddef.create(defname,srsymtable);
                           basedef:=crecorddef.create(defname,srsymtable);
                           include(constraintdata.flags,gcf_record);
                           include(constraintdata.flags,gcf_record);
                           allowconstructor:=false;
                           allowconstructor:=false;

+ 1 - 1
compiler/pparautl.pas

@@ -1088,7 +1088,7 @@ implementation
           accessed from within nested routines (start with extra dollar to prevent
           accessed from within nested routines (start with extra dollar to prevent
           the JVM from thinking this is a nested class in the unit) }
           the JVM from thinking this is a nested class in the unit) }
         nestedvarsst:=trecordsymtable.create('$'+current_module.realmodulename^+'$$_fpc_nestedvars$'+pd.unique_id_str,
         nestedvarsst:=trecordsymtable.create('$'+current_module.realmodulename^+'$$_fpc_nestedvars$'+pd.unique_id_str,
-          current_settings.alignment.localalignmax,current_settings.alignment.localalignmin,current_settings.alignment.maxCrecordalign);
+          current_settings.alignment.localalignmax,current_settings.alignment.localalignmin);
         nestedvarsdef:=crecorddef.create(nestedvarsst.name^,nestedvarsst);
         nestedvarsdef:=crecorddef.create(nestedvarsst.name^,nestedvarsst);
   {$ifdef jvm}
   {$ifdef jvm}
         maybe_guarantee_record_typesym(nestedvarsdef,nestedvarsdef.owner);
         maybe_guarantee_record_typesym(nestedvarsdef,nestedvarsdef.owner);

+ 3 - 3
compiler/psystem.pas

@@ -583,7 +583,7 @@ implementation
         if not(target_info.system in systems_managed_vm) then
         if not(target_info.system in systems_managed_vm) then
           begin
           begin
             { Add a type for virtual method tables }
             { Add a type for virtual method tables }
-            hrecst:=trecordsymtable.create('',current_settings.packrecords,current_settings.alignment.recordalignmin,current_settings.alignment.maxCrecordalign);
+            hrecst:=trecordsymtable.create('',current_settings.packrecords,current_settings.alignment.recordalignmin);
             vmttype:=crecorddef.create('',hrecst);
             vmttype:=crecorddef.create('',hrecst);
             pvmttype:=cpointerdef.create(vmttype);
             pvmttype:=cpointerdef.create(vmttype);
             { can't use addtype for pvmt because the rtti of the pointed
             { can't use addtype for pvmt because the rtti of the pointed
@@ -608,13 +608,13 @@ implementation
             addtype('$vtblarray',vmtarraytype);
             addtype('$vtblarray',vmtarraytype);
           end;
           end;
         { Add a type for methodpointers }
         { Add a type for methodpointers }
-        hrecst:=trecordsymtable.create('',1,current_settings.alignment.recordalignmin,current_settings.alignment.maxCrecordalign);
+        hrecst:=trecordsymtable.create('',1,current_settings.alignment.recordalignmin);
         addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[],true));
         addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[],true));
         addfield(hrecst,cfieldvarsym.create('$self',vs_value,voidpointertype,[],true));
         addfield(hrecst,cfieldvarsym.create('$self',vs_value,voidpointertype,[],true));
         methodpointertype:=crecorddef.create('',hrecst);
         methodpointertype:=crecorddef.create('',hrecst);
         addtype('$methodpointer',methodpointertype);
         addtype('$methodpointer',methodpointertype);
         { Add a type for nested proc pointers }
         { Add a type for nested proc pointers }
-        hrecst:=trecordsymtable.create('',1,current_settings.alignment.recordalignmin,current_settings.alignment.maxCrecordalign);
+        hrecst:=trecordsymtable.create('',1,current_settings.alignment.recordalignmin);
         addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[],true));
         addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[],true));
         addfield(hrecst,cfieldvarsym.create('$parentfp',vs_value,parentfpvoidpointertype,[],true));
         addfield(hrecst,cfieldvarsym.create('$parentfp',vs_value,parentfpvoidpointertype,[],true));
         nestedprocpointertype:=crecorddef.create('',hrecst);
         nestedprocpointertype:=crecorddef.create('',hrecst);

+ 2 - 2
compiler/ptype.pas

@@ -988,7 +988,7 @@ implementation
          if (n<>'') or
          if (n<>'') or
             not(target_info.system in systems_jvm) then
             not(target_info.system in systems_jvm) then
            begin
            begin
-             recst:=trecordsymtable.create(n,current_settings.packrecords,current_settings.alignment.recordalignmin,current_settings.alignment.maxCrecordalign);
+             recst:=trecordsymtable.create(n,current_settings.packrecords,current_settings.alignment.recordalignmin);
              { can't use recst.realname^ instead of n, because recst.realname is
              { can't use recst.realname^ instead of n, because recst.realname is
                nil in case of an empty name }
                nil in case of an empty name }
              current_structdef:=crecorddef.create(n,recst);
              current_structdef:=crecorddef.create(n,recst);
@@ -998,7 +998,7 @@ implementation
              { for the JVM target records always need a name, because they are
              { for the JVM target records always need a name, because they are
                represented by a class }
                represented by a class }
              recst:=trecordsymtable.create(current_module.realmodulename^+'__fpc_intern_recname_'+tostr(current_module.deflist.count),
              recst:=trecordsymtable.create(current_module.realmodulename^+'__fpc_intern_recname_'+tostr(current_module.deflist.count),
-               current_settings.packrecords,current_settings.alignment.recordalignmin,current_settings.alignment.maxCrecordalign);
+               current_settings.packrecords,current_settings.alignment.recordalignmin);
              current_structdef:=crecorddef.create(recst.name^,recst);
              current_structdef:=crecorddef.create(recst.name^,recst);
            end;
            end;
          result:=current_structdef;
          result:=current_structdef;

+ 9 - 12
compiler/symdef.pas

@@ -374,7 +374,7 @@ interface
           variantrecdesc : pvariantrecdesc;
           variantrecdesc : pvariantrecdesc;
           isunion       : boolean;
           isunion       : boolean;
           constructor create(const n:string; p:TSymtable);virtual;
           constructor create(const n:string; p:TSymtable);virtual;
-          constructor create_global_internal(n: string; packrecords, recordalignmin, maxCrecordalign: shortint); virtual;
+          constructor create_global_internal(n: string; packrecords, recordalignmin: shortint); virtual;
           function add_field_by_def(const optionalname: TIDString; def: tdef): tsym;
           function add_field_by_def(const optionalname: TIDString; def: tdef): tsym;
           procedure add_fields_from_deflist(fieldtypes: tfplist);
           procedure add_fields_from_deflist(fieldtypes: tfplist);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
@@ -1387,8 +1387,7 @@ implementation
         { set recordalinmin to sizeof(pint), so the second field gets put at
         { set recordalinmin to sizeof(pint), so the second field gets put at
           offset = sizeof(pint) as expected }
           offset = sizeof(pint) as expected }
         result:=crecorddef.create_global_internal(
         result:=crecorddef.create_global_internal(
-          name,sizeof(pint),sizeof(pint),
-          init_settings.alignment.maxCrecordalign);
+          name,sizeof(pint),sizeof(pint));
 {$ifdef cpu16bitaddr}
 {$ifdef cpu16bitaddr}
         index_field:=result.add_field_by_def('',u16inttype);
         index_field:=result.add_field_by_def('',u16inttype);
 {$else cpu16bitaddr}
 {$else cpu16bitaddr}
@@ -1424,8 +1423,7 @@ implementation
         for i:=low(fields) to high(fields) do
         for i:=low(fields) to high(fields) do
           fieldlist.add(fields[i]);
           fieldlist.add(fields[i]);
         result:=crecorddef.create_global_internal(internaltypeprefixName[prefix],packrecords,
         result:=crecorddef.create_global_internal(internaltypeprefixName[prefix],packrecords,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         result.add_fields_from_deflist(fieldlist);
         result.add_fields_from_deflist(fieldlist);
         fieldlist.free;
         fieldlist.free;
       end;
       end;
@@ -1456,8 +1454,7 @@ implementation
             exit;
             exit;
           end;
           end;
         recdef:=crecorddef.create_global_internal(name,packrecords,
         recdef:=crecorddef.create_global_internal(name,packrecords,
-          targetinfos[target_info.system]^.alignment.recordalignmin,
-          targetinfos[target_info.system]^.alignment.maxCrecordalign);
+          targetinfos[target_info.system]^.alignment.recordalignmin);
         fields:=tfplist.create;
         fields:=tfplist.create;
         fields.add(countdef);
         fields.add(countdef);
         if count>0 then
         if count>0 then
@@ -4783,7 +4780,7 @@ implementation
       end;
       end;
 
 
 
 
-    constructor trecorddef.create_global_internal(n: string; packrecords, recordalignmin, maxCrecordalign: shortint);
+    constructor trecorddef.create_global_internal(n: string; packrecords, recordalignmin: shortint);
       var
       var
         oldsymtablestack: tsymtablestack;
         oldsymtablestack: tsymtablestack;
         ts: ttypesym;
         ts: ttypesym;
@@ -4798,7 +4795,7 @@ implementation
           that can have side-effects (e.g., it removes helpers) }
           that can have side-effects (e.g., it removes helpers) }
         symtablestack:=nil;
         symtablestack:=nil;
 
 
-        symtable:=trecordsymtable.create(n,packrecords,recordalignmin,maxCrecordalign);
+        symtable:=trecordsymtable.create(n,packrecords,recordalignmin);
         symtable.defowner:=self;
         symtable.defowner:=self;
         isunion:=false;
         isunion:=false;
         inherited create(n,recorddef,true);
         inherited create(n,recorddef,true);
@@ -4892,7 +4889,7 @@ implementation
            end
            end
          else
          else
            begin
            begin
-             symtable:=trecordsymtable.create(objrealname^,0,0,0);
+             symtable:=trecordsymtable.create(objrealname^,0,0);
              trecordsymtable(symtable).fieldalignment:=shortint(ppufile.getbyte);
              trecordsymtable(symtable).fieldalignment:=shortint(ppufile.getbyte);
              trecordsymtable(symtable).recordalignment:=shortint(ppufile.getbyte);
              trecordsymtable(symtable).recordalignment:=shortint(ppufile.getbyte);
              trecordsymtable(symtable).padalignment:=shortint(ppufile.getbyte);
              trecordsymtable(symtable).padalignment:=shortint(ppufile.getbyte);
@@ -7082,7 +7079,7 @@ implementation
         if objecttype=odt_helper then
         if objecttype=odt_helper then
           owner.includeoption(sto_has_helper);
           owner.includeoption(sto_has_helper);
         symtable:=tObjectSymtable.create(self,n,current_settings.packrecords,
         symtable:=tObjectSymtable.create(self,n,current_settings.packrecords,
-          current_settings.alignment.recordalignmin,current_settings.alignment.maxCrecordalign);
+          current_settings.alignment.recordalignmin);
         { create space for vmt !! }
         { create space for vmt !! }
         vmtentries:=TFPList.Create;
         vmtentries:=TFPList.Create;
         set_parent(c);
         set_parent(c);
@@ -7112,7 +7109,7 @@ implementation
          { only used for external Objective-C classes/protocols }
          { only used for external Objective-C classes/protocols }
          if (objextname^='') then
          if (objextname^='') then
            stringdispose(objextname);
            stringdispose(objextname);
-         symtable:=tObjectSymtable.create(self,objrealname^,0,0,0);
+         symtable:=tObjectSymtable.create(self,objrealname^,0,0);
          tObjectSymtable(symtable).datasize:=ppufile.getasizeint;
          tObjectSymtable(symtable).datasize:=ppufile.getasizeint;
          tObjectSymtable(symtable).paddingsize:=ppufile.getword;
          tObjectSymtable(symtable).paddingsize:=ppufile.getword;
          tObjectSymtable(symtable).fieldalignment:=shortint(ppufile.getbyte);
          tObjectSymtable(symtable).fieldalignment:=shortint(ppufile.getbyte);

+ 12 - 14
compiler/symtable.pas

@@ -108,10 +108,9 @@ interface
           recordalignment,       { alignment desired when inserting this record }
           recordalignment,       { alignment desired when inserting this record }
           fieldalignment,        { alignment current alignment used when fields are inserted }
           fieldalignment,        { alignment current alignment used when fields are inserted }
           padalignment : shortint;   { size to a multiple of which the symtable has to be rounded up }
           padalignment : shortint;   { size to a multiple of which the symtable has to be rounded up }
-          recordalignmin,            { local equivalents of global settings, so that records can }
-          maxCrecordalign: shortint; { be created with custom settings internally }
+          recordalignmin: shortint; { local equivalentsof global settings, so that records can be created with custom settings internally }
           has_fields_with_mop : tmanagementoperators; { whether any of the fields has the need for a management operator (or one of the field's fields) }
           has_fields_with_mop : tmanagementoperators; { whether any of the fields has the need for a management operator (or one of the field's fields) }
-          constructor create(const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+          constructor create(const n:string;usealign,recordminalign:shortint);
           destructor destroy;override;
           destructor destroy;override;
           procedure ppuload(ppufile:tcompilerppufile);override;
           procedure ppuload(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
@@ -161,14 +160,14 @@ interface
           { object/classes. In XE5 and newer is possible to use class operator }
           { object/classes. In XE5 and newer is possible to use class operator }
           { for classes (like for Delphi .NET before) only for Delphi NEXTGEN  }
           { for classes (like for Delphi .NET before) only for Delphi NEXTGEN  }
           managementoperators : tmanagementoperators;
           managementoperators : tmanagementoperators;
-          constructor create(const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+          constructor create(const n:string;usealign,recordminalign:shortint);
           procedure insertunionst(unionst : trecordsymtable;offset : asizeint);
           procedure insertunionst(unionst : trecordsymtable;offset : asizeint);
           procedure includemanagementoperator(mop:tmanagementoperator);
           procedure includemanagementoperator(mop:tmanagementoperator);
        end;
        end;
 
 
        tObjectSymtable = class(tabstractrecordsymtable)
        tObjectSymtable = class(tabstractrecordsymtable)
        public
        public
-          constructor create(adefowner:tdef;const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+          constructor create(adefowner:tdef;const n:string;usealign,recordminalign:shortint);
           function  checkduplicate(var hashedid:THashedIDString;sym:TSymEntry):boolean;override;
           function  checkduplicate(var hashedid:THashedIDString;sym:TSymEntry):boolean;override;
        end;
        end;
 
 
@@ -1170,7 +1169,7 @@ implementation
       end;
       end;
 {$endif llvm}
 {$endif llvm}
 
 
-    constructor tabstractrecordsymtable.create(const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+    constructor tabstractrecordsymtable.create(const n:string;usealign,recordminalign:shortint);
       begin
       begin
         inherited create(n);
         inherited create(n);
         _datasize:=0;
         _datasize:=0;
@@ -1178,7 +1177,6 @@ implementation
         recordalignment:=1;
         recordalignment:=1;
         usefieldalignment:=usealign;
         usefieldalignment:=usealign;
         recordalignmin:=recordminalign;
         recordalignmin:=recordminalign;
-        maxCrecordalign:=recordmaxCalign;
         padalignment:=1;
         padalignment:=1;
         { recordalign C_alignment means C record packing, that starts
         { recordalign C_alignment means C record packing, that starts
           with an alignment of 1 }
           with an alignment of 1 }
@@ -1310,7 +1308,7 @@ implementation
       begin
       begin
         case usefieldalignment of
         case usefieldalignment of
           C_alignment:
           C_alignment:
-            varalignrecord:=used_align(varalign,recordalignmin,maxCrecordalign);
+            varalignrecord:=used_align(varalign,recordalignmin,current_settings.alignment.maxCrecordalign);
           mac68k_alignment:
           mac68k_alignment:
             varalignrecord:=2;
             varalignrecord:=2;
           else
           else
@@ -1788,7 +1786,7 @@ implementation
                 Message1(sym_w_wrong_C_pack,vardef.typename);
                 Message1(sym_w_wrong_C_pack,vardef.typename);
               if varalign=0 then
               if varalign=0 then
                 varalign:=l;
                 varalign:=l;
-              if (globalfieldalignment<maxCrecordalign) then
+              if (globalfieldalignment<current_settings.alignment.maxCrecordalign) then
                 begin
                 begin
                   if (varalign>16) and (globalfieldalignment<32) then
                   if (varalign>16) and (globalfieldalignment<32) then
                     globalfieldalignment:=32
                     globalfieldalignment:=32
@@ -1804,7 +1802,7 @@ implementation
                   else if (varalign>1) and (globalfieldalignment<2) then
                   else if (varalign>1) and (globalfieldalignment<2) then
                     globalfieldalignment:=2;
                     globalfieldalignment:=2;
                 end;
                 end;
-              globalfieldalignment:=min(globalfieldalignment,maxCrecordalign);
+              globalfieldalignment:=min(globalfieldalignment,current_settings.alignment.maxCrecordalign);
             end;
             end;
           mac68k_alignment:
           mac68k_alignment:
             begin
             begin
@@ -1836,9 +1834,9 @@ implementation
                               TRecordSymtable
                               TRecordSymtable
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor trecordsymtable.create(const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+    constructor trecordsymtable.create(const n:string;usealign,recordminalign:shortint);
       begin
       begin
-        inherited create(n,usealign,recordminalign,recordmaxCalign);
+        inherited create(n,usealign,recordminalign);
         symtabletype:=recordsymtable;
         symtabletype:=recordsymtable;
       end;
       end;
 
 
@@ -1963,9 +1961,9 @@ implementation
                               TObjectSymtable
                               TObjectSymtable
 ****************************************************************************}
 ****************************************************************************}
 
 
-    constructor tObjectSymtable.create(adefowner:tdef;const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+    constructor tObjectSymtable.create(adefowner:tdef;const n:string;usealign,recordminalign:shortint);
       begin
       begin
-        inherited create(n,usealign,recordminalign,recordmaxCalign);
+        inherited create(n,usealign,recordminalign);
         symtabletype:=ObjectSymtable;
         symtabletype:=ObjectSymtable;
         defowner:=adefowner;
         defowner:=adefowner;
       end;
       end;