Browse Source

* Add stack checking to test

git-svn-id: trunk@17878 -
pierre 14 years ago
parent
commit
547b6bbecb
1 changed files with 402 additions and 21 deletions
  1. 402 21
      tests/test/cg/tcalext6.pp

+ 402 - 21
tests/test/cg/tcalext6.pp

@@ -1,7 +1,7 @@
-{ Tests passing of different records by value to C methods. 
+{ Tests passing of different records by value to C methods.
  One type of these records has one field which is a simple array of bytes,
  One type of these records has one field which is a simple array of bytes,
  the other consists of a few fields of atomic size.
  the other consists of a few fields of atomic size.
- 
+
  Note that it does not only test a single field of these records, but all
  Note that it does not only test a single field of these records, but all
  by comparing the sum of the field values with the sum returned by the
  by comparing the sum of the field values with the sum returned by the
  C function.
  C function.
@@ -19,6 +19,14 @@ program calext6;
 {$linklib gcc}
 {$linklib gcc}
 {$endif}
 {$endif}
 
 
+{$ifdef VER2_4}
+uses
+  ctypes;
+
+type
+  cextended = clongdouble;
+{$endif VER2_4}
+
 type
 type
   int8_t = shortint;
   int8_t = shortint;
   pint8_t = ^int8_t;
   pint8_t = ^int8_t;
@@ -28,6 +36,70 @@ type
 
 
 var
 var
   success : boolean;
   success : boolean;
+{$ifdef x86_64}
+  {$define UseStackCheck}
+  {$asmmode att}
+  {$define USE_ASM}
+{$endif x86_64}
+{$ifdef i386}
+  {$define UseStackCheck}
+  {$asmmode att}
+  {$define USE_ASM}
+{$endif i386}
+{$ifdef HAS_GETFRAME}
+  {$define UseStackCheck}
+{$endif HAS_GETFRAME}
+
+{$ifdef UseStackCheck}
+var
+  stackval : pointer;
+
+procedure SetStack;
+var
+  newval : pointer;
+begin
+{$ifdef USE_ASM}
+  asm
+{$ifdef i386}
+    movl %esp,newval
+{$endif i386}
+{$ifdef x86_64}
+    movl %rsp,newval
+{$endif x86_64}
+  end;
+{$endif USE_ASM}
+{$ifdef HAS_GETFRAME}
+  newval:=GetFrame;
+{$endif HAS_GETFRAME}
+  stackval:=newval;
+end;
+
+procedure CheckStack;
+var
+  newval : pointer;
+begin
+{$ifdef USE_ASM}
+  asm
+{$ifdef i386}
+    movl %esp, newval
+{$endif i386}
+{$ifdef x86_64}
+    movl %rsp,newval
+{$endif x86_64}
+  end;
+{$endif USE_ASM}
+{$ifdef HAS_GETFRAME}
+  newval:=GetFrame;
+{$endif HAS_GETFRAME}
+  if newval<>stackval then
+    begin
+      Writeln('Stack value changed: 0x',
+        hexstr(ptruint(stackval),2*sizeof(ptruint)),
+        ' to 0x',hexstr(ptruint(newval),2*sizeof(ptruint)));
+      Stackval:=newval;
+    end;
+end;
+{$endif UseStackCheck}
 
 
 {$packrecords c}
 {$packrecords c}
 
 
@@ -60,7 +132,7 @@ type
     v2 : single;
     v2 : single;
     v3 : single;
     v3 : single;
   end;
   end;
-  
+
   struct7 = record
   struct7 = record
     v1 : single;
     v1 : single;
     v2 : int32_t;
     v2 : int32_t;
@@ -105,8 +177,8 @@ type
     v2 : int32_t;
     v2 : int32_t;
     v3 : int16_t;
     v3 : int16_t;
   end;
   end;
-  
-  struct15 = record 
+
+  struct15 = record
     v1 : double;
     v1 : double;
     v2 : int32_t;
     v2 : int32_t;
     v3 : single;
     v3 : single;
@@ -330,7 +402,7 @@ var
   s16, s16a: struct16;
   s16, s16a: struct16;
   s17, s17a: struct17;
   s17, s17a: struct17;
   s31, s31a: struct31;
   s31, s31a: struct31;
-  
+
   ss: single;
   ss: single;
 
 
 begin
 begin
@@ -340,51 +412,51 @@ begin
   s1.v:=2.0;
   s1.v:=2.0;
 
 
   s2.v:=3.0;
   s2.v:=3.0;
-  
+
   s3.v1:=4.5;
   s3.v1:=4.5;
   s3.v2:=5.125;
   s3.v2:=5.125;
-  
+
   s4.v1:=6.175;
   s4.v1:=6.175;
   s4.v2:=7.5;
   s4.v2:=7.5;
-  
+
   s5.v1:=8.075;
   s5.v1:=8.075;
   s5.v2:=9.000125;
   s5.v2:=9.000125;
-  
+
   s6.v1:=10.25;
   s6.v1:=10.25;
   s6.v2:=11.5;
   s6.v2:=11.5;
   s6.v3:=12.125;
   s6.v3:=12.125;
-  
+
   s7.v1:=13.5;
   s7.v1:=13.5;
   s7.v2:=14;
   s7.v2:=14;
   s7.v3:=15.0625;
   s7.v3:=15.0625;
-  
+
   s8.d:=16.000575;
   s8.d:=16.000575;
-  
+
   s9.v1:=$123456789012345;
   s9.v1:=$123456789012345;
   s9.v2:=17.0;
   s9.v2:=17.0;
-  
+
   s10.v1:=$234567890123456;
   s10.v1:=$234567890123456;
   s10.v2:=-12399;
   s10.v2:=-12399;
   s10.v3:=18.0;
   s10.v3:=18.0;
-  
+
   s11.v1:=$345678901234567;
   s11.v1:=$345678901234567;
   s11.v2:=19.0;
   s11.v2:=19.0;
-  
+
   s12.v1:=$456789012345678;
   s12.v1:=$456789012345678;
   s12.v2:=20.0;
   s12.v2:=20.0;
   s12.v3:=21.0;
   s12.v3:=21.0;
-  
+
   s13.v1:=22.0;
   s13.v1:=22.0;
   s13.v2:=$567890123456789;
   s13.v2:=$567890123456789;
-  
+
   s14.v1:=23.0;
   s14.v1:=23.0;
   s14.v2:=$19283774;
   s14.v2:=$19283774;
   s14.v3:=12356;
   s14.v3:=12356;
-  
+
   s15.v1:=24.0;
   s15.v1:=24.0;
   s15.v2:=$28195647;
   s15.v2:=$28195647;
   s15.v3:=25.0;
   s15.v3:=25.0;
-  
+
   s16.v1:=26.5;
   s16.v1:=26.5;
   s16.v2:=27.75;
   s16.v2:=27.75;
   s16.v3:=28.25;
   s16.v3:=28.25;
@@ -392,121 +464,430 @@ begin
 
 
   s17.v1:=31.25;
   s17.v1:=31.25;
   s17.v2:=32.125;
   s17.v2:=32.125;
-  
+
   s31.v1:=32.625;
   s31.v1:=32.625;
   s31.v2:=33.5;
   s31.v2:=33.5;
 
 
+{$ifdef UseStackCheck}
+  SetStack;
+{$endif UseStackCheck}
   verify(pass1(s1,1), check1(s1), 1);
   verify(pass1(s1,1), check1(s1), 1);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass2(s2,2), check2(s2), 2);
   verify(pass2(s2,2), check2(s2), 2);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass3(s3,3), check3(s3), 3);
   verify(pass3(s3,3), check3(s3), 3);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass4(s4,4), check4(s4), 4);
   verify(pass4(s4,4), check4(s4), 4);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass5(s5,5), check5(s5), 5);
   verify(pass5(s5,5), check5(s5), 5);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass6(s6,6), check6(s6), 6);
   verify(pass6(s6,6), check6(s6), 6);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass7(s7,7), check7(s7), 7);
   verify(pass7(s7,7), check7(s7), 7);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass8(s8,8), check8(s8), 8);
   verify(pass8(s8,8), check8(s8), 8);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass9(s9,9), check9(s9), 9);
   verify(pass9(s9,9), check9(s9), 9);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass10(s10,10), check10(s10), 10);
   verify(pass10(s10,10), check10(s10), 10);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass11(s11,11), check11(s11), 11);
   verify(pass11(s11,11), check11(s11), 11);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass12(s12,12), check12(s12), 12);
   verify(pass12(s12,12), check12(s12), 12);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass13(s13,13), check13(s13), 13);
   verify(pass13(s13,13), check13(s13), 13);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass14(s14,14), check14(s14), 14);
   verify(pass14(s14,14), check14(s14), 14);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass15(s15,15), check15(s15), 15);
   verify(pass15(s15,15), check15(s15), 15);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass16(s16,16), check16(s16), 16);
   verify(pass16(s16,16), check16(s16), 16);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass17(s17,17), check17(s17), 17);
   verify(pass17(s17,17), check17(s17), 17);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
   verify(pass31(s31,31,ss), check31(s31), 31);
   verify(pass31(s31,31,ss), check31(s31), 31);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(ss,s31.v2,32);
   verify(ss,s31.v2,32);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$endif}
 {$endif}
 
 
   verify(check1(pass1a(1,s1)), check1(s1), 41);
   verify(check1(pass1a(1,s1)), check1(s1), 41);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check2(pass2a(2,s2)), check2(s2), 42);
   verify(check2(pass2a(2,s2)), check2(s2), 42);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check3(pass3a(3,s3)), check3(s3), 43);
   verify(check3(pass3a(3,s3)), check3(s3), 43);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check4(pass4a(4,s4)), check4(s4), 44);
   verify(check4(pass4a(4,s4)), check4(s4), 44);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check5(pass5a(5,s5)), check5(s5), 45);
   verify(check5(pass5a(5,s5)), check5(s5), 45);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check6(pass6a(6,s6)), check6(s6), 46);
   verify(check6(pass6a(6,s6)), check6(s6), 46);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check7(pass7a(7,s7)), check7(s7), 47);
   verify(check7(pass7a(7,s7)), check7(s7), 47);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check8(pass8a(8,s8)), check8(s8), 48);
   verify(check8(pass8a(8,s8)), check8(s8), 48);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check9(pass9a(9,s9)), check9(s9), 49);
   verify(check9(pass9a(9,s9)), check9(s9), 49);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check10(pass10a(10,s10)), check10(s10), 50);
   verify(check10(pass10a(10,s10)), check10(s10), 50);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check11(pass11a(11,s11)), check11(s11), 51);
   verify(check11(pass11a(11,s11)), check11(s11), 51);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check12(pass12a(12,s12)), check12(s12), 52);
   verify(check12(pass12a(12,s12)), check12(s12), 52);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check13(pass13a(13,s13)), check13(s13), 53);
   verify(check13(pass13a(13,s13)), check13(s13), 53);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check14(pass14a(14,s14)), check14(s14), 54);
   verify(check14(pass14a(14,s14)), check14(s14), 54);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check15(pass15a(15,s15)), check15(s15), 55);
   verify(check15(pass15a(15,s15)), check15(s15), 55);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check16(pass16a(16,s16)), check16(s16), 56);
   verify(check16(pass16a(16,s16)), check16(s16), 56);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check17(pass17a(17,s17)), check17(s17), 57);
   verify(check17(pass17a(17,s17)), check17(s17), 57);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
   verify(check31(pass31a(31,s31)), check31(s31), 71);
   verify(check31(pass31a(31,s31)), check31(s31), 71);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$endif}
 {$endif}
 
 
   verify(pass1a(1,s1).v, s1.v, 81);
   verify(pass1a(1,s1).v, s1.v, 81);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass2a(2,s2).v, s2.v, 82);
   verify(pass2a(2,s2).v, s2.v, 82);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass3a(3,s3).v1, s3.v1, 83);
   verify(pass3a(3,s3).v1, s3.v1, 83);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass3a(3,s3).v2, s3.v2, 103);
   verify(pass3a(3,s3).v2, s3.v2, 103);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass4a(4,s4).v1, s4.v1, 84);
   verify(pass4a(4,s4).v1, s4.v1, 84);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass5a(5,s5).v1, s5.v1, 85);
   verify(pass5a(5,s5).v1, s5.v1, 85);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass6a(6,s6).v1, s6.v1, 86);
   verify(pass6a(6,s6).v1, s6.v1, 86);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass7a(7,s7).v1, s7.v1, 87);
   verify(pass7a(7,s7).v1, s7.v1, 87);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass7a(7,s7).v2, s7.v2, 107);
   verify(pass7a(7,s7).v2, s7.v2, 107);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass8a(8,s8).d, s8.d, 88);
   verify(pass8a(8,s8).d, s8.d, 88);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass9a(9,s9).v1, s9.v1, 89);
   verify(pass9a(9,s9).v1, s9.v1, 89);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass10a(10,s10).v1, s10.v1, 90);
   verify(pass10a(10,s10).v1, s10.v1, 90);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass10a(10,s10).v2, s10.v2, 90);
   verify(pass10a(10,s10).v2, s10.v2, 90);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass11a(11,s11).v1, s11.v1, 91);
   verify(pass11a(11,s11).v1, s11.v1, 91);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass12a(12,s12).v1, s12.v1, 92);
   verify(pass12a(12,s12).v1, s12.v1, 92);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass13a(13,s13).v1, s13.v1, 93);
   verify(pass13a(13,s13).v1, s13.v1, 93);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass14a(14,s14).v1, s14.v1, 94);
   verify(pass14a(14,s14).v1, s14.v1, 94);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass15a(15,s15).v1, s15.v1, 95);
   verify(pass15a(15,s15).v1, s15.v1, 95);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass16a(16,s16).v1, s16.v1, 96);
   verify(pass16a(16,s16).v1, s16.v1, 96);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(pass17a(17,s17).v1, s17.v1, 97);
   verify(pass17a(17,s17).v1, s17.v1, 97);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
   verify(pass31a(31,s31).v1, s31.v1, 101);
   verify(pass31a(31,s31).v1, s31.v1, 101);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$endif}
 {$endif}
 
 
   s1a:=pass1a(1,s1);
   s1a:=pass1a(1,s1);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check1(s1a), check1(s1), 111);
   verify(check1(s1a), check1(s1), 111);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s2a:=pass2a(2,s2);
   s2a:=pass2a(2,s2);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check2(s2a), check2(s2), 112);
   verify(check2(s2a), check2(s2), 112);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s3a:=pass3a(3,s3);
   s3a:=pass3a(3,s3);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check3(s3a), check3(s3), 113);
   verify(check3(s3a), check3(s3), 113);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s3a:=pass3a(3,s3);
   s3a:=pass3a(3,s3);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check3(s3a), check3(s3), 114);
   verify(check3(s3a), check3(s3), 114);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s4a:=pass4a(4,s4);
   s4a:=pass4a(4,s4);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check4(s4a), check4(s4), 115);
   verify(check4(s4a), check4(s4), 115);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s5a:=pass5a(5,s5);
   s5a:=pass5a(5,s5);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check5(s5a), check5(s5), 116);
   verify(check5(s5a), check5(s5), 116);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s6a:=pass6a(6,s6);
   s6a:=pass6a(6,s6);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check6(s6a), check6(s6), 117);
   verify(check6(s6a), check6(s6), 117);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s7a:=pass7a(7,s7);
   s7a:=pass7a(7,s7);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check7(s7a), check7(s7), 118);
   verify(check7(s7a), check7(s7), 118);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s7a:=pass7a(7,s7);
   s7a:=pass7a(7,s7);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check7(s7a), check7(s7), 119);
   verify(check7(s7a), check7(s7), 119);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s8a:=pass8a(8,s8);
   s8a:=pass8a(8,s8);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check8(s8a), check8(s8), 120);
   verify(check8(s8a), check8(s8), 120);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s9a:=pass9a(9,s9);
   s9a:=pass9a(9,s9);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check9(s9a), check9(s9), 121);
   verify(check9(s9a), check9(s9), 121);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s10a:=pass10a(10,s10);
   s10a:=pass10a(10,s10);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check10(s10a), check10(s10), 122);
   verify(check10(s10a), check10(s10), 122);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s10a:=pass10a(10,s10);
   s10a:=pass10a(10,s10);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check10(s10a), check10(s10), 123);
   verify(check10(s10a), check10(s10), 123);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s11a:=pass11a(11,s11);
   s11a:=pass11a(11,s11);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check11(s11a), check11(s11), 124);
   verify(check11(s11a), check11(s11), 124);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s12a:=pass12a(12,s12);
   s12a:=pass12a(12,s12);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check12(s12a), check12(s12), 125);
   verify(check12(s12a), check12(s12), 125);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s13a:=pass13a(13,s13);
   s13a:=pass13a(13,s13);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check13(s13a), check13(s13), 126);
   verify(check13(s13a), check13(s13), 126);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s14a:=pass14a(14,s14);
   s14a:=pass14a(14,s14);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check14(s14a), check14(s14), 127);
   verify(check14(s14a), check14(s14), 127);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s15a:=pass15a(15,s15);
   s15a:=pass15a(15,s15);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check15(s15a), check15(s15), 128);
   verify(check15(s15a), check15(s15), 128);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s16a:=pass16a(16,s16);
   s16a:=pass16a(16,s16);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check16(s16a), check16(s16), 129);
   verify(check16(s16a), check16(s16), 129);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   s17a:=pass17a(17,s17);
   s17a:=pass17a(17,s17);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check17(s17a), check17(s17), 130);
   verify(check17(s17a), check17(s17), 130);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
 {$ifdef FPC_HAS_TYPE_EXTENDED}
   s31a:=pass31a(31,s31);
   s31a:=pass31a(31,s31);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(check31(s31a), check31(s31), 131);
   verify(check31(s31a), check31(s31), 131);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
   verify(s31.v2,s31a.v2,132);
   verify(s31.v2,s31a.v2,132);
+{$ifdef UseStackCheck}
+  CheckStack;
+{$endif UseStackCheck}
 {$endif}
 {$endif}
 
 
 {$endif ndef nofloat}
 {$endif ndef nofloat}