2
0
Эх сурвалжийг харах

+ llvmdatalayout field for tsysteminfo that contains the encoded data layout
as used by llvm for most targets (taken from clang, adapted in some cases
where we use a custom stack alignment)

git-svn-id: branches/hlcgllvm@26032 -

Jonas Maebe 11 жил өмнө
parent
commit
9573160c1a

+ 6 - 0
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

+ 6 - 0
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

+ 3 - 1
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

+ 2 - 0
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

+ 4 - 2
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';
           );
 
 

+ 2 - 1
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

+ 18 - 1
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

+ 6 - 3
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

+ 1 - 0
compiler/systems/i_emx.pas

@@ -100,6 +100,7 @@ unit i_emx;
             stacksize    : 256*1024;
             stackalign   : 4;
             abi          : abi_default;
+            llvmdatalayout : 'todo';
           );
 
 

+ 2 - 1
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

+ 1 - 0
compiler/systems/i_go32v2.pas

@@ -89,6 +89,7 @@ unit i_go32v2;
             stacksize    : 262144;
             stackalign   : 4;
             abi          : abi_default;
+            llvmdatalayout : 'todo';
           );
 
   implementation

+ 3 - 1
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

+ 2 - 0
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';
           );
 
 

+ 28 - 13
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

+ 1 - 0
compiler/systems/i_macos.pas

@@ -88,6 +88,7 @@ unit i_macos;
             stacksize    : 262144;
             stackalign   : 16;
             abi : abi_powerpc_aix;
+            llvmdatalayout : 'todo';
           );
 
   implementation

+ 1 - 0
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

+ 1 - 0
compiler/systems/i_msdos.pas

@@ -90,6 +90,7 @@ unit i_msdos;
             stacksize    : 4096;
             stackalign   : 2;
             abi          : abi_default;
+            llvmdatalayout : 'todo';
           );
 
   implementation

+ 1 - 0
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

+ 2 - 1
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

+ 2 - 1
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

+ 2 - 1
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

+ 1 - 0
compiler/systems/i_os2.pas

@@ -100,6 +100,7 @@ unit i_os2;
             stacksize    : 256*1024;
             stackalign   : 4;
             abi          : abi_default;
+            llvmdatalayout : 'todo';
           );
 
 

+ 2 - 0
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 =

+ 5 - 1
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

+ 2 - 0
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';
           );
 
 

+ 1 - 0
compiler/systems/i_watcom.pas

@@ -89,6 +89,7 @@ unit i_watcom;
             stacksize    : 16384;
             stackalign   : 4;
             abi          : abi_default;
+            llvmdatalayout : 'todo';
           );
 
   implementation

+ 1 - 0
compiler/systems/i_wdosx.pas

@@ -89,6 +89,7 @@ unit i_wdosx;
             stacksize    : 32*1024*1024;
             stackalign   : 4;
             abi          : abi_default;
+            llvmdatalayout : 'todo';
           );
 
   implementation

+ 1 - 0
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

+ 4 - 0
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';
           );