diff --git a/compiler/options.pas b/compiler/options.pas index e5b79664a3..608d6dcd1e 100644 --- a/compiler/options.pas +++ b/compiler/options.pas @@ -3381,6 +3381,12 @@ if (target_info.abi = abi_eabihf) then def_system_macro('CPUTHUMB'); if not option.FPUSetExplicitly then init_settings.fputype:=fpu_soft; +{$if defined(FPC_ARMEL) or defined(FPC_ARMHF)} + target_info.llvmdatalayout:='e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:32-n32-S64'; +{$else FPC_ARMAL or FPC_ARMHF} + if target_info.endian=endian_little then + target_info.llvmdatalayout:='e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32'; +{$endif FPC_ARMAL or FPC_ARMHF} end; if (init_settings.instructionset=is_thumb) and (CPUARM_HAS_THUMB2 in cpu_capabilities[init_settings.cputype]) then diff --git a/compiler/systems.pas b/compiler/systems.pas index cd1e2c21d7..1e17fd1bb5 100644 --- a/compiler/systems.pas +++ b/compiler/systems.pas @@ -201,6 +201,12 @@ interface { stack alignment } stackalign : byte; abi : tabi; + { llvm -- varies wildly in length and is empty for many targets -> + ansistring instead of shortstring; tsysteminfo records aren't + copied very often anyway. These strings come from the file + lib/Basic/Targets.cpp in the clang (cfe 3.3) source tree, sometimes + adapted to match our (custom) stack alignment requirements } + llvmdatalayout: ansistring; end; tabiinfo = record diff --git a/compiler/systems/i_aix.pas b/compiler/systems/i_aix.pas index 8b0bf0e3f9..6fba4b1095 100644 --- a/compiler/systems/i_aix.pas +++ b/compiler/systems/i_aix.pas @@ -90,6 +90,7 @@ unit i_aix; stacksize : 32*1024*1024; stackalign : 16; abi : abi_powerpc_aix; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32'; ); system_powerpc64_aix_info : tsysteminfo = @@ -152,7 +153,8 @@ unit i_aix; first_parm_offset : 8; stacksize : 10*1024*1024; stackalign : 16; - abi : abi_powerpc_aix + abi : abi_powerpc_aix; + llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64'; ); implementation diff --git a/compiler/systems/i_amiga.pas b/compiler/systems/i_amiga.pas index f8ab7d6296..359d0f9056 100644 --- a/compiler/systems/i_amiga.pas +++ b/compiler/systems/i_amiga.pas @@ -89,6 +89,7 @@ unit i_amiga; stacksize : 262144; stackalign : 2; abi : abi_default; + llvmdatalayout : 'todo'; ); system_powerpc_amiga_info : tsysteminfo = @@ -151,6 +152,7 @@ unit i_amiga; stacksize : 262144; stackalign : 16; abi : abi_powerpc_sysv; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32'; ); implementation diff --git a/compiler/systems/i_android.pas b/compiler/systems/i_android.pas index ce13495d19..b8043157dd 100644 --- a/compiler/systems/i_android.pas +++ b/compiler/systems/i_android.pas @@ -90,7 +90,8 @@ unit i_android; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 8; - abi : abi_eabi + abi : abi_eabi; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64'; ); system_i386_android_info : tsysteminfo = @@ -155,7 +156,8 @@ unit i_android; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 16; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128'; ); diff --git a/compiler/systems/i_beos.pas b/compiler/systems/i_beos.pas index 6cca8cbb9c..d292d18489 100644 --- a/compiler/systems/i_beos.pas +++ b/compiler/systems/i_beos.pas @@ -99,7 +99,8 @@ unit i_beos; } stacksize : 16 * 1024 * 1024; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); implementation diff --git a/compiler/systems/i_bsd.pas b/compiler/systems/i_bsd.pas index 90264afcf0..05b9d807b8 100644 --- a/compiler/systems/i_bsd.pas +++ b/compiler/systems/i_bsd.pas @@ -119,6 +119,8 @@ unit i_bsd; stacksize : 262144; stackalign : 4; abi : abi_default; + { note: default LLVM stack alignment is 16 bytes for this target } + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); @@ -185,6 +187,7 @@ unit i_bsd; stacksize : 256*1024; stackalign : 16; abi : abi_default; + llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128'; ); @@ -248,6 +251,7 @@ unit i_bsd; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); system_i386_openbsd_info : tsysteminfo = @@ -310,6 +314,8 @@ unit i_bsd; stacksize : 262144; stackalign : 4; abi : abi_default; + { note: default LLVM stack alignment is 16 bytes for this target } + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); system_x86_64_openbsd_info : tsysteminfo = @@ -375,6 +381,7 @@ unit i_bsd; stacksize : 256*1024; stackalign : 16; abi : abi_default; + llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128'; ); system_m68k_netbsd_info : tsysteminfo = @@ -437,6 +444,7 @@ unit i_bsd; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); system_powerpc_netbsd_info : tsysteminfo = @@ -500,6 +508,7 @@ unit i_bsd; stackalign : 16; { abi_powerpc_sysv doesn't work yet } abi : abi_powerpc_aix; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32'; ); system_x86_64_netbsd_info : tsysteminfo = @@ -565,6 +574,7 @@ unit i_bsd; stacksize : 256*1024; stackalign : 16; abi : abi_default; + llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128'; ); system_powerpc_darwin_info : tsysteminfo = @@ -627,6 +637,7 @@ unit i_bsd; stacksize : 262144; stackalign : 16; abi : abi_powerpc_aix; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v128:128:128-n32'; ); @@ -691,6 +702,7 @@ unit i_bsd; stacksize : 262144; stackalign : 16; abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128'; ); @@ -755,6 +767,7 @@ unit i_bsd; stacksize : 262144; stackalign : 16; abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128'; ); @@ -819,6 +832,7 @@ unit i_bsd; stacksize : 262144; stackalign : 16; abi : abi_powerpc_aix; + llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64'; ); @@ -883,6 +897,7 @@ unit i_bsd; stacksize : 262144; stackalign : 16; abi : abi_default; + llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128'; ); @@ -945,7 +960,9 @@ unit i_bsd; first_parm_offset : 8; stacksize : 262144; stackalign : 4; - abi : abi_default + abi : abi_default; + { note: default LLVM stack alignment is 8 bytes for this target } + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32'; ); implementation diff --git a/compiler/systems/i_embed.pas b/compiler/systems/i_embed.pas index b39eaa3e80..2af9b79639 100644 --- a/compiler/systems/i_embed.pas +++ b/compiler/systems/i_embed.pas @@ -88,7 +88,8 @@ unit i_embed; first_parm_offset : 8; stacksize : 262144; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32'; ); system_avr_embedded_info : tsysteminfo = @@ -151,7 +152,8 @@ unit i_embed; first_parm_offset : 0; stacksize : 1024; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'todo'; ); system_i386_embedded_info : tsysteminfo = @@ -214,7 +216,8 @@ unit i_embed; first_parm_offset : 8; stacksize : 4096; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); implementation diff --git a/compiler/systems/i_emx.pas b/compiler/systems/i_emx.pas index f3934ec92a..cc5e8b00d0 100644 --- a/compiler/systems/i_emx.pas +++ b/compiler/systems/i_emx.pas @@ -100,6 +100,7 @@ unit i_emx; stacksize : 256*1024; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); diff --git a/compiler/systems/i_gba.pas b/compiler/systems/i_gba.pas index f689d52ead..1e20da1cf0 100644 --- a/compiler/systems/i_gba.pas +++ b/compiler/systems/i_gba.pas @@ -89,7 +89,8 @@ unit i_gba; first_parm_offset : 8; stacksize : 16384; stackalign : 8; - abi : abi_eabi + abi : abi_eabi; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_go32v2.pas b/compiler/systems/i_go32v2.pas index a25e0d6bac..6d5415ee45 100644 --- a/compiler/systems/i_go32v2.pas +++ b/compiler/systems/i_go32v2.pas @@ -89,6 +89,7 @@ unit i_go32v2; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_haiku.pas b/compiler/systems/i_haiku.pas index 044a7bf118..9c7a082e54 100644 --- a/compiler/systems/i_haiku.pas +++ b/compiler/systems/i_haiku.pas @@ -100,7 +100,9 @@ unit i_haiku; } stacksize : 16 * 1024 * 1024; stackalign : 4; - abi : abi_default + abi : abi_default; + { note: default LLVM stack alignment is 16 bytes for this target } + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); implementation diff --git a/compiler/systems/i_jvm.pas b/compiler/systems/i_jvm.pas index 4d902942d9..3e8727b7e4 100644 --- a/compiler/systems/i_jvm.pas +++ b/compiler/systems/i_jvm.pas @@ -107,6 +107,7 @@ unit i_jvm; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); @@ -172,6 +173,7 @@ unit i_jvm; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); diff --git a/compiler/systems/i_linux.pas b/compiler/systems/i_linux.pas index 5316dd9236..502d05c755 100644 --- a/compiler/systems/i_linux.pas +++ b/compiler/systems/i_linux.pas @@ -94,7 +94,9 @@ unit i_linux; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 4; - abi : abi_default + abi : abi_default; + { note: default LLVM stack alignment is 16 bytes for this target } + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); system_x86_6432_linux_info : tsysteminfo = @@ -158,7 +160,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 16; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'todo'; ); system_m68k_linux_info : tsysteminfo = @@ -222,7 +225,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 32*1024*1024; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'todo'; ); system_powerpc_linux_info : tsysteminfo = @@ -287,6 +291,7 @@ unit i_linux; stacksize : 32*1024*1024; stackalign : 16; abi : abi_powerpc_sysv; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32'; ); system_powerpc64_linux_info : tsysteminfo = @@ -349,7 +354,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 10*1024*1024; stackalign : 16; - abi : abi_powerpc_sysv + abi : abi_powerpc_sysv; + llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64'; ); system_alpha_linux_info : tsysteminfo = @@ -412,7 +418,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 32*1024*1024; stackalign : 8; { ??? } - abi : abi_default + abi : abi_default; + llvmdatalayout : 'todo'; ); system_x86_64_linux_info : tsysteminfo = @@ -476,7 +483,8 @@ unit i_linux; first_parm_offset : 16; stacksize : 8*1024*1024; stackalign : 16; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128'; ); system_sparc_linux_info : tsysteminfo = @@ -542,7 +550,8 @@ unit i_linux; first_parm_offset : 92; stacksize : 8*1024*1024; stackalign : 8; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64'; ); {$ifdef FPC_ARMHF} @@ -608,7 +617,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 8; - abi : abi_eabihf + abi : abi_eabihf; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64'; ); {$else FPC_ARMHF} {$ifdef FPC_ARMEL} @@ -674,7 +684,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 8; - abi : abi_eabi + abi : abi_eabi; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64'; ); {$else FPC_ARMEL} {$ifdef FPC_ARMEB} @@ -740,7 +751,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout: 'todo'; ); {$else FPC_ARMEB} system_arm_linux_info : tsysteminfo = @@ -804,7 +816,8 @@ unit i_linux; first_parm_offset : 8; stacksize : 8*1024*1024; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout: 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32'; ); {$endif FPC_ARMEB} {$endif FPC_ARMEL} @@ -872,7 +885,8 @@ unit i_linux; first_parm_offset : 0; stacksize : 32*1024*1024; stackalign : 8; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64'; ); system_mipsel_linux_info : tsysteminfo = @@ -937,7 +951,8 @@ unit i_linux; first_parm_offset : 0; stacksize : 32*1024*1024; stackalign : 8; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64'; ); implementation diff --git a/compiler/systems/i_macos.pas b/compiler/systems/i_macos.pas index 68f3d8bf20..3577ea9185 100644 --- a/compiler/systems/i_macos.pas +++ b/compiler/systems/i_macos.pas @@ -88,6 +88,7 @@ unit i_macos; stacksize : 262144; stackalign : 16; abi : abi_powerpc_aix; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_morph.pas b/compiler/systems/i_morph.pas index 50226f4f8e..9a34c1fe9b 100644 --- a/compiler/systems/i_morph.pas +++ b/compiler/systems/i_morph.pas @@ -89,6 +89,7 @@ unit i_morph; stacksize : 262144; stackalign : 16; abi : abi_powerpc_sysv; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32'; ); implementation diff --git a/compiler/systems/i_msdos.pas b/compiler/systems/i_msdos.pas index 2a558403ab..3334e132ef 100644 --- a/compiler/systems/i_msdos.pas +++ b/compiler/systems/i_msdos.pas @@ -90,6 +90,7 @@ unit i_msdos; stacksize : 4096; stackalign : 2; abi : abi_default; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_nativent.pas b/compiler/systems/i_nativent.pas index 325257efb9..9e6f0a65ed 100644 --- a/compiler/systems/i_nativent.pas +++ b/compiler/systems/i_nativent.pas @@ -94,6 +94,7 @@ unit i_nativent; stacksize : 16*1024*1024; stackalign : 4; abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); implementation diff --git a/compiler/systems/i_nds.pas b/compiler/systems/i_nds.pas index 40cc697f90..bfdf0c9550 100644 --- a/compiler/systems/i_nds.pas +++ b/compiler/systems/i_nds.pas @@ -89,7 +89,8 @@ unit i_nds; first_parm_offset : 8; stacksize : $3CFF; //15615? or 16384?; stackalign : 8; - abi : abi_eabi + abi : abi_eabi; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64'; ); implementation diff --git a/compiler/systems/i_nwl.pas b/compiler/systems/i_nwl.pas index 00eb2dbb88..24da5a0fb1 100644 --- a/compiler/systems/i_nwl.pas +++ b/compiler/systems/i_nwl.pas @@ -88,7 +88,8 @@ unit i_nwl; first_parm_offset : 8; stacksize : 16384; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_nwm.pas b/compiler/systems/i_nwm.pas index d58386456c..e0fa1750d2 100644 --- a/compiler/systems/i_nwm.pas +++ b/compiler/systems/i_nwm.pas @@ -88,7 +88,8 @@ unit i_nwm; first_parm_offset : 8; stacksize : 16384; stackalign : 4; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_os2.pas b/compiler/systems/i_os2.pas index f00658ed30..15b499f97c 100644 --- a/compiler/systems/i_os2.pas +++ b/compiler/systems/i_os2.pas @@ -100,6 +100,7 @@ unit i_os2; stacksize : 256*1024; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); diff --git a/compiler/systems/i_palmos.pas b/compiler/systems/i_palmos.pas index 8db2c627b9..23bfa018ef 100644 --- a/compiler/systems/i_palmos.pas +++ b/compiler/systems/i_palmos.pas @@ -89,6 +89,7 @@ unit i_palmos; stacksize : 8192; stackalign : 2; abi : abi_default; + llvmdatalayout : 'todo'; ); res_m68k_palmos_info : tresinfo = @@ -162,6 +163,7 @@ unit i_palmos; stacksize : 8192; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); res_arm_palmos_info : tresinfo = diff --git a/compiler/systems/i_sunos.pas b/compiler/systems/i_sunos.pas index 0ac86bf457..58d6566176 100644 --- a/compiler/systems/i_sunos.pas +++ b/compiler/systems/i_sunos.pas @@ -91,6 +91,8 @@ unit i_sunos; stacksize : 262144; stackalign : 4; abi : abi_default; + { note: default LLVM stack alignment is 16 bytes for this target } + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); @@ -157,7 +159,8 @@ unit i_sunos; first_parm_offset : 16; stacksize : 8*1024*1024; stackalign : 16; - abi : abi_default + abi : abi_default; + llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128'; ); @@ -225,6 +228,7 @@ unit i_sunos; stacksize : 262144; stackalign : 8; abi : abi_default; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64'; ); implementation diff --git a/compiler/systems/i_symbian.pas b/compiler/systems/i_symbian.pas index ef89e495dd..cb98b1d5e7 100644 --- a/compiler/systems/i_symbian.pas +++ b/compiler/systems/i_symbian.pas @@ -91,6 +91,7 @@ unit i_symbian; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); system_arm_symbian_info : tsysteminfo = @@ -154,6 +155,7 @@ unit i_symbian; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); diff --git a/compiler/systems/i_watcom.pas b/compiler/systems/i_watcom.pas index fa159839cd..30c0977dc4 100644 --- a/compiler/systems/i_watcom.pas +++ b/compiler/systems/i_watcom.pas @@ -89,6 +89,7 @@ unit i_watcom; stacksize : 16384; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_wdosx.pas b/compiler/systems/i_wdosx.pas index b412fbe9be..77081db6f8 100644 --- a/compiler/systems/i_wdosx.pas +++ b/compiler/systems/i_wdosx.pas @@ -89,6 +89,7 @@ unit i_wdosx; stacksize : 32*1024*1024; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); implementation diff --git a/compiler/systems/i_wii.pas b/compiler/systems/i_wii.pas index 0fc8c67036..f11adb90f1 100644 --- a/compiler/systems/i_wii.pas +++ b/compiler/systems/i_wii.pas @@ -89,6 +89,7 @@ unit i_wii; stacksize : 131072; // 128 kb stackalign : 16; abi : abi_powerpc_sysv; + llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32'; ); implementation diff --git a/compiler/systems/i_win.pas b/compiler/systems/i_win.pas index b20350435c..944466c9f7 100644 --- a/compiler/systems/i_win.pas +++ b/compiler/systems/i_win.pas @@ -94,6 +94,7 @@ unit i_win; stacksize : 16*1024*1024; stackalign : 4; abi : abi_default; + llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32'; ); system_x64_win64_info : tsysteminfo = @@ -161,6 +162,7 @@ unit i_win; stacksize : 16*1024*1024; stackalign : 16; abi : abi_default; + llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128'; ); system_arm_wince_info : tsysteminfo = @@ -226,6 +228,7 @@ unit i_win; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; ); system_i386_wince_info : tsysteminfo = @@ -291,6 +294,7 @@ unit i_win; stacksize : 262144; stackalign : 4; abi : abi_default; + llvmdatalayout : 'todo'; );