瀏覽代碼

- 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 年之前
父節點
當前提交
d8903ce6b3

+ 8 - 10
compiler/aasmcnst.pas

@@ -393,7 +393,7 @@ type
         maxcrecordalign: specify maximum C record alignment (no equivalent in
           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;
 
      { add a placeholder element at the current position that later can be
@@ -1399,7 +1399,7 @@ implementation
        result.ofs:=0;
        { pack the data, so that we don't add unnecessary null bytes after the
          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);
        { encoding }
        emit_tai(tai_const.create_16bit(encoding),u16inttype);
@@ -1611,7 +1611,7 @@ implementation
        if (typ<>st_widestring) or
           not winlike then
          begin
-           result:=crecorddef.create_global_internal('$'+name,1,1,1);
+           result:=crecorddef.create_global_internal('$'+name,1,1);
            { encoding }
            result.add_field_by_def('',u16inttype);
            { element size }
@@ -1637,8 +1637,7 @@ implementation
        else
          begin
            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 }
            result.add_field_by_def('',s32inttype);
            streledef:=cwidechartype;
@@ -1689,8 +1688,7 @@ implementation
            result.lab:=startlab;
            datatcb.begin_anonymous_record('$'+get_dynstring_rec_name(st_widestring,true,strlength),
              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);
            { can we optimise by placing the string constant label at the
              required offset? }
@@ -1749,7 +1747,7 @@ implementation
        result.ofs:=0;
        { pack the data, so that we don't add unnecessary null bytes after the
          constant string }
-       begin_anonymous_record('',1,sizeof(TConstPtrUInt),1,1);
+       begin_anonymous_record('',1,sizeof(TConstPtrUInt),1);
        dynarray_symofs:=get_dynarray_symofs;
        { what to do if ptrsinttype <> sizesinttype??? }
        emit_tai(tai_const.create_sizeint(-1),ptrsinttype);
@@ -1928,7 +1926,7 @@ implementation
      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
        anonrecorddef: trecorddef;
        typesym: ttypesym;
@@ -1949,7 +1947,7 @@ implementation
              end;
          end;
        { 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;
        { generic aggregate housekeeping }
        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.begin_anonymous_record(internaltypeprefixName[itp_emptyrec],
           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(
           tcb.get_final_asmlist_vectorized_dead_strip(
             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
       two int64's on x86-64. This function is used to create (and reuse)
       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
       two integer int64 for an arbitrary record split over two individual int64
@@ -862,7 +862,7 @@ implementation
       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
         i: longint;
         res: PHashSetItem;
@@ -920,7 +920,7 @@ implementation
         if not assigned(res^.Data) then
           begin
             res^.Data:=crecorddef.create_global_internal(typename,packrecords,
-              recordalignmin,maxcrecordalign);
+              recordalignmin);
             for i:=low(fieldtypes) to high(fieldtypes) do
               trecorddef(res^.Data).add_field_by_def('F'+tostr(i),fieldtypes[i]);
           end;
@@ -1023,8 +1023,7 @@ implementation
           retloc:=retloc^.next;
         until not assigned(retloc);
         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);
       end;
 

+ 1 - 2
compiler/llvm/llvmpi.pas

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

+ 2 - 3
compiler/llvm/nllvmtcon.pas

@@ -385,13 +385,12 @@ implementation
             arraydef:
               { in an array, all elements come right after each other ->
                 replace with a packed record }
-              newdef:=crecorddef.create_global_internal('',1,1,1);
+              newdef:=crecorddef.create_global_internal('',1,1);
             recorddef,
             objectdef:
               newdef:=crecorddef.create_global_internal('',
                 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
               internalerror(2015122401);
           end;

+ 1 - 2
compiler/llvm/nllvmutil.pas

@@ -177,8 +177,7 @@ implementation
           fields[1]:=pd.getcopyas(procvardef,pc_address_only,'');
           fields[2]:=voidpointertype;
           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);
           tcb:=ctai_typedconstbuilder.create([tcalo_new_section]);
           tllvmtai_typedconstbuilder(tcb).appendingdef:=true;

+ 2 - 2
compiler/ncal.pas

@@ -486,13 +486,13 @@ implementation
           end;
 
         { 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 }
         params:=ctempcreatenode.create(vardispatchparadef,0,tt_persistent,false);
         addstatement(statements,params);
 
         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 }
         begin

+ 42 - 84
compiler/ncgrtti.pas

@@ -205,8 +205,7 @@ implementation
         para : tparavarsym;
       begin
         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;
         rtticount:=0;
@@ -241,8 +240,7 @@ implementation
                       def.init_paraloc_info(callerside);
 
                       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_callconv(tcb,def);
@@ -256,8 +254,7 @@ implementation
                           para:=tparavarsym(def.paras[k]);
 
                           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
                             write_rtti_reference(tcb,tarraydef(para.vardef).elementdef,fullrtti)
@@ -297,8 +294,7 @@ implementation
         { TTypeInfo, always packed and doesn't need alignment }
         tcb.begin_anonymous_record(
           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
           InternalError(201012211);
         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.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);
             for i:=low(locs) to high(locs) do
               begin
                 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].regsub,u8inttype);
                 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);
 
             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);
 
             entrydef:=get_recorddef(itp_init_mop_offset_entry,[voidcodepointertype,sizeuinttype],defaultpacking);
@@ -865,8 +858,7 @@ implementation
 
       begin
         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);
         for i:=0 to st.SymList.Count-1 do
           begin
@@ -886,8 +878,7 @@ implementation
                 tcb.begin_anonymous_record(
                   propdefname,
                   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
                   proctypesinfo:=$40
                 else
@@ -950,8 +941,7 @@ implementation
                 tcb.begin_anonymous_record(
                   internaltypeprefixName[itp_rtti_ansistr],
                   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);
                 tcb.emit_ord_const(def.encoding,u16inttype);
                 tcb.end_anonymous_record;
@@ -997,13 +987,11 @@ implementation
             and o2s arrays for llvm (otherwise we have to write out the entire
             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,
-            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);
           tcb.next_field_name:='typ_union_rec';
           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
             1 :
               tcb.emit_ord_const(otUByte,u8inttype);
@@ -1021,16 +1009,14 @@ implementation
             We need to adhere to this, otherwise things will break. }
           tcb.next_field_name:='min_max_rec';
           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.max,s32inttype);
           tcb.next_field_name:='basetype_array_rec';
           { all strings must appear right after each other -> from now on
             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,
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           { write base type }
           write_rtti_reference(tcb,def.basedef,rt);
           for i:=0 to def.symtable.SymList.Count-1 do
@@ -1101,15 +1087,13 @@ implementation
             tcb.begin_anonymous_record(
               internaltypeprefixName[itp_rtti_ord_outer]+elesize,
               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);
             tcb.emit_ord_const(byte(trans[def.ordtype]),u8inttype);
             tcb.begin_anonymous_record(
               internaltypeprefixName[itp_rtti_ord_inner]+elesize,
               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.}
             case deftrans of
               otUQWord:
@@ -1166,8 +1150,7 @@ implementation
                 tcb.begin_anonymous_record(
                   internaltypeprefixName[itp_1byte],
                   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);
                 tcb.emit_ord_const(ftCurr,u8inttype);
                 tcb.end_anonymous_record;
@@ -1188,8 +1171,7 @@ implementation
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_1byte],
              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);
            tcb.emit_ord_const(translate[def.floattype],u8inttype);
            tcb.end_anonymous_record;
@@ -1202,14 +1184,12 @@ implementation
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_rtti_set_outer],
              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);
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_rtti_set_middle],
              defaultpacking,reqalign,
-             targetinfos[target_info.system]^.alignment.recordalignmin,
-             targetinfos[target_info.system]^.alignment.maxCrecordalign);
+             targetinfos[target_info.system]^.alignment.recordalignmin);
            case def.size of
              1:
                tcb.emit_ord_const(otUByte,u8inttype);
@@ -1223,8 +1203,7 @@ implementation
            tcb.begin_anonymous_record(
              internaltypeprefixName[itp_rtti_set_inner],
              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);
            write_rtti_reference(tcb,def.elementdef,rt);
            tcb.end_anonymous_record;
@@ -1264,8 +1243,7 @@ implementation
                tcb.begin_anonymous_record(
                  internaltypeprefixName[itp_rtti_normal_array]+tostr(dimcount),
                  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);
                { total size = elecount * elesize of the first arraydef }
                tcb.emit_tai(Tai_const.Create_sizeint(def.elecount*def.elesize),sizeuinttype);
@@ -1296,8 +1274,7 @@ implementation
                tcb.begin_anonymous_record(
                  internaltypeprefixName[itp_rtti_dyn_array],
                  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);
                { size of elements }
                tcb.emit_tai(Tai_const.Create_sizeint(def.elesize),sizeuinttype);
@@ -1322,8 +1299,7 @@ implementation
           tcb.begin_anonymous_record(
             internaltypeprefixName[itp_rtti_ref],
             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_rtti_reference(tcb,def.pointeddef,rt);
           tcb.end_anonymous_record;
@@ -1335,8 +1311,7 @@ implementation
           tcb.begin_anonymous_record(
             internaltypeprefixName[itp_rtti_ref],
             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_rtti_reference(tcb,def.pointeddef,rt);
           tcb.end_anonymous_record;
@@ -1360,8 +1335,7 @@ implementation
             tcb.begin_anonymous_record(
               rttilab.Name,
               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" }
@@ -1394,8 +1368,7 @@ implementation
              only be aligned to 4 even on 64 bit target (while the rtti code
              in typinfo expects alignments to sizeof(pointer)) }
            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);
 
@@ -1451,8 +1424,7 @@ implementation
                tcb.begin_anonymous_record(
                  internaltypeprefixName[itp_rtti_proc_param]+tostr(length(parasym.realname)),
                  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_param_flag(tcb,parasym);
                { write param type }
@@ -1476,8 +1448,7 @@ implementation
                { write method id and name }
                write_header(tcb,def,tkMethod);
                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);
 
@@ -1520,8 +1491,7 @@ implementation
             begin
               write_header(tcb,def,tkProcvar);
               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);
 
@@ -1632,8 +1602,7 @@ implementation
             collect_propnamelist(propnamelist,def);
 
             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_rtti_reference(tcb,def.childof,fullrtti);
@@ -1659,8 +1628,7 @@ implementation
             tcb.emit_shortstring_const(current_module.realmodulename^);
 
             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 }
             if def.objecttype=odt_interfacecorba then
@@ -1704,8 +1672,7 @@ implementation
            tcb.emit_shortstring_const(def.objrealname^);
 
            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);
 
@@ -1798,8 +1765,7 @@ implementation
             argtcb:=ctai_typedconstbuilder.create([tcalo_is_lab,tcalo_make_dead_strippable,tcalo_apply_constalign]);
 
             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;
             for i:=0 to High(attr.paras) do
@@ -1860,14 +1826,12 @@ implementation
       tbltcb.begin_anonymous_record(
         internaltypeprefixName[itp_rtti_attr_list]+tostr(count),
         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);
       for i:=0 to count-1 do
         begin
           tbltcb.begin_anonymous_record(internaltypeprefixName[itp_rtti_attr_entry],defaultpacking,min(reqalign,SizeOf(PInt)),
-            targetinfos[target_info.system]^.alignment.recordalignmin,
-            targetinfos[target_info.system]^.alignment.maxCrecordalign);
+            targetinfos[target_info.system]^.alignment.recordalignmin);
           attr:=trtti_attribute(attr_list.rtti_attributes[i]);
 
           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]);
           { use TConstPtrUInt packrecords to ensure good alignment }
           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 }
           tcb.emit_tai(Tai_const.create_32bit(longint(mode)),u32inttype);
           { align }
           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
             begin
               o:=tenumsym(syms[0]).value;  {Start with min value.}
@@ -2013,8 +1975,7 @@ implementation
             begin
               tcb.emit_ord_const(sym_count,u32inttype);
               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
                 begin
                   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]);
           { begin of Tstring_to_ord }
           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);
           { begin of "data" array in Tstring_to_ord }
           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
             begin
               tcb.emit_ord_const(tenumsym(syms[i]).value,s32inttype);
@@ -2249,8 +2208,7 @@ implementation
         tcb.begin_anonymous_record(
           internaltypeprefixName[itp_rttidef]+tstoreddef(def).rtti_mangledname(rt),
           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);
         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);
             datatcb.begin_anonymous_record('$fpc_intern_classtable_'+tostr(classtablelist.Count-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);
             for i:=0 to classtablelist.Count-1 do
               begin
@@ -649,8 +648,7 @@ implementation
               plus there would be very little chance that it could actually be
               reused }
             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_sym(classtable),cpointerdef.getreusable(classtabledef));
             for i:=0 to _class.symtable.SymList.Count-1 do
@@ -672,8 +670,7 @@ implementation
                       end;
                     }
                     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);
                     classindex:=classtablelist.IndexOf(tfieldvarsym(sym).vardef);
                     if classindex=-1 then
@@ -728,8 +725,7 @@ implementation
       begin
         tcb.start_internal_data_builder(current_asmdata.AsmLists[al_const],sec_rodata,'',datatcb,fintfvtablelabels[intfindex]);
         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
           begin
             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);
         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);
         interfaceentrydef:=search_system_type('TINTERFACEENTRY').typedef;
         interfaceentrytypedef:=search_system_type('TINTERFACEENTRYTYPE').typedef;

+ 6 - 12
compiler/ngenutil.pas

@@ -1082,8 +1082,7 @@ implementation
     begin
       unitinits:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       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 }
       unitinits.emit_ord_const(entries.count,aluuinttype);
@@ -1167,8 +1166,7 @@ implementation
       count:=0;
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       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);
 
@@ -1244,8 +1242,7 @@ implementation
          exit;
        tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
        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
          current_module.globalsymtable.SymList.ForEachCall(@AddToThreadvarList,tcb);
        current_module.localsymtable.SymList.ForEachCall(@AddToThreadvarList,tcb);
@@ -1279,8 +1276,7 @@ implementation
     begin
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       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 }
       countplaceholder:=tcb.emit_placeholder(sizesinttype);
@@ -1334,8 +1330,7 @@ implementation
       s:=make_mangledname(prefix,current_module.localsymtable,'');
       tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
       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
         { optimize away unused local/static symbols }
         if (item.sym.refs>0) or (item.sym.owner.symtabletype=globalsymtable) then
@@ -1399,8 +1394,7 @@ implementation
       count:=0;
       hp:=tmodule(loaded_units.first);
       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);
       while assigned(hp) do
         begin

+ 1 - 2
compiler/nobj.pas

@@ -833,8 +833,7 @@ implementation
         vmtdef:=crecorddef.create_global_internal(
           vmtdefname,
           0,
-          target_info.alignment.recordalignmin,
-          target_info.alignment.maxCrecordalign);
+          target_info.alignment.recordalignmin);
 {$ifdef llvm}
         { 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

+ 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.begin_anonymous_record(internaltypeprefixName[itp_objc_method_list]+tostr(mcnt),
       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
       { 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.begin_anonymous_record(internaltypeprefixName[itp_objc_proto_list]+tostr(protolist.Count),
       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 }
     current_asmdata.getlabel(protolistsym, alt_data);
@@ -526,8 +524,7 @@ begin
   tcb.begin_anonymous_record(
     internaltypeprefixName[itp_objc_cat_methods]+tostr(items.count),
     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
     begin
       { 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(
           internaltypeprefixName[itb_objc_fr_protocol_ext],
           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 }
         tcb.emit_ord_const(16,u32inttype);
         { optional instance methods }
@@ -757,8 +753,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_protocol(list:TAsmList; protocol: tob
     tcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_fr_protocol],
       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 }
     ConcatSymOrNil(tcb,protoext,voidpointertype);
@@ -828,8 +823,7 @@ procedure tobjcrttiwriter_fragile.gen_objc_category_sections(list:TAsmList; objc
     tcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_fr_category],
       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_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.begin_anonymous_record(internaltypeprefixName[itb_objc_fr_meta_class],
       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_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.begin_anonymous_record(internaltypeprefixName[itb_objc_fr_class],
       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 }
     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.begin_anonymous_record('',
           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) }
         tcb.emit_tai(tai_const.Create_nil_dataptr,voidpointertype);
         { ??? (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.begin_anonymous_record('',
       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) }
     tcb.emit_ord_const(7,ptruinttype);
     { 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(
       internaltypeprefixName[itb_objc_nf_ivars]+tostr(vcnt),
       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 }
     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.begin_anonymous_record(internaltypeprefixName[itb_objc_nf_category],
       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_emit_asmsym(catstrsym,catstrdef);
     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(
       internaltypeprefixName[itb_objc_nf_class_ro_part],
       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(start,u32inttype);
@@ -1717,15 +1704,13 @@ procedure tobjcrttiwriter_nonfragile.gen_objc_classes_sections(list:TAsmList; ob
     classdef:=isatcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_nf_class],
       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]);
     metadef:=metatcb.begin_anonymous_record(
       internaltypeprefixName[itb_objc_nf_meta_class],
       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);
     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);
               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.isunion:=true;
 

+ 1 - 1
compiler/pgenutil.pas

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

+ 1 - 1
compiler/pparautl.pas

@@ -1088,7 +1088,7 @@ implementation
           accessed from within nested routines (start with extra dollar to prevent
           the JVM from thinking this is a nested class in the unit) }
         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);
   {$ifdef jvm}
         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
           begin
             { 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);
             pvmttype:=cpointerdef.create(vmttype);
             { can't use addtype for pvmt because the rtti of the pointed
@@ -608,13 +608,13 @@ implementation
             addtype('$vtblarray',vmtarraytype);
           end;
         { 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('$self',vs_value,voidpointertype,[],true));
         methodpointertype:=crecorddef.create('',hrecst);
         addtype('$methodpointer',methodpointertype);
         { 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('$parentfp',vs_value,parentfpvoidpointertype,[],true));
         nestedprocpointertype:=crecorddef.create('',hrecst);

+ 2 - 2
compiler/ptype.pas

@@ -988,7 +988,7 @@ implementation
          if (n<>'') or
             not(target_info.system in systems_jvm) then
            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
                nil in case of an empty name }
              current_structdef:=crecorddef.create(n,recst);
@@ -998,7 +998,7 @@ implementation
              { for the JVM target records always need a name, because they are
                represented by a class }
              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);
            end;
          result:=current_structdef;

+ 9 - 12
compiler/symdef.pas

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

+ 12 - 14
compiler/symtable.pas

@@ -108,10 +108,9 @@ interface
           recordalignment,       { alignment desired when inserting this record }
           fieldalignment,        { alignment current alignment used when fields are inserted }
           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) }
-          constructor create(const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+          constructor create(const n:string;usealign,recordminalign:shortint);
           destructor destroy;override;
           procedure ppuload(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 }
           { for classes (like for Delphi .NET before) only for Delphi NEXTGEN  }
           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 includemanagementoperator(mop:tmanagementoperator);
        end;
 
        tObjectSymtable = class(tabstractrecordsymtable)
        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;
        end;
 
@@ -1170,7 +1169,7 @@ implementation
       end;
 {$endif llvm}
 
-    constructor tabstractrecordsymtable.create(const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+    constructor tabstractrecordsymtable.create(const n:string;usealign,recordminalign:shortint);
       begin
         inherited create(n);
         _datasize:=0;
@@ -1178,7 +1177,6 @@ implementation
         recordalignment:=1;
         usefieldalignment:=usealign;
         recordalignmin:=recordminalign;
-        maxCrecordalign:=recordmaxCalign;
         padalignment:=1;
         { recordalign C_alignment means C record packing, that starts
           with an alignment of 1 }
@@ -1310,7 +1308,7 @@ implementation
       begin
         case usefieldalignment of
           C_alignment:
-            varalignrecord:=used_align(varalign,recordalignmin,maxCrecordalign);
+            varalignrecord:=used_align(varalign,recordalignmin,current_settings.alignment.maxCrecordalign);
           mac68k_alignment:
             varalignrecord:=2;
           else
@@ -1788,7 +1786,7 @@ implementation
                 Message1(sym_w_wrong_C_pack,vardef.typename);
               if varalign=0 then
                 varalign:=l;
-              if (globalfieldalignment<maxCrecordalign) then
+              if (globalfieldalignment<current_settings.alignment.maxCrecordalign) then
                 begin
                   if (varalign>16) and (globalfieldalignment<32) then
                     globalfieldalignment:=32
@@ -1804,7 +1802,7 @@ implementation
                   else if (varalign>1) and (globalfieldalignment<2) then
                     globalfieldalignment:=2;
                 end;
-              globalfieldalignment:=min(globalfieldalignment,maxCrecordalign);
+              globalfieldalignment:=min(globalfieldalignment,current_settings.alignment.maxCrecordalign);
             end;
           mac68k_alignment:
             begin
@@ -1836,9 +1834,9 @@ implementation
                               TRecordSymtable
 ****************************************************************************}
 
-    constructor trecordsymtable.create(const n:string;usealign,recordminalign,recordmaxCalign:shortint);
+    constructor trecordsymtable.create(const n:string;usealign,recordminalign:shortint);
       begin
-        inherited create(n,usealign,recordminalign,recordmaxCalign);
+        inherited create(n,usealign,recordminalign);
         symtabletype:=recordsymtable;
       end;
 
@@ -1963,9 +1961,9 @@ implementation
                               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
-        inherited create(n,usealign,recordminalign,recordmaxCalign);
+        inherited create(n,usealign,recordminalign);
         symtabletype:=ObjectSymtable;
         defowner:=adefowner;
       end;