|
@@ -0,0 +1,85 @@
|
|
|
+{$mode objfpc}
|
|
|
+{$PIC+}
|
|
|
+
|
|
|
+{
|
|
|
+ Test for proper initialization of GOT register.
|
|
|
+}
|
|
|
+
|
|
|
+const
|
|
|
+ BufSize = 128*1024;
|
|
|
+
|
|
|
+var
|
|
|
+ gvar: longint;
|
|
|
+
|
|
|
+procedure check(c, e: longint);
|
|
|
+begin
|
|
|
+ if c <> e then begin
|
|
|
+ writeln('ERROR. Result: ', c, ' Expected: ', e);
|
|
|
+ Halt(1);
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+function test101(p1, p2: longint): longint;
|
|
|
+begin
|
|
|
+ result:=gvar+p1+p2;
|
|
|
+end;
|
|
|
+
|
|
|
+function test102(p1, p2: longint): longint;
|
|
|
+var
|
|
|
+ Buffer: array[0..BufSize] of byte;
|
|
|
+begin
|
|
|
+ Buffer[0]:=0;
|
|
|
+ result:=gvar+p1+p2+Buffer[0];
|
|
|
+end;
|
|
|
+
|
|
|
+function test103(p1, p2: longint): longint;
|
|
|
+var
|
|
|
+ a, j: longint;
|
|
|
+begin
|
|
|
+ a:=0;
|
|
|
+ for j:=1 to 1 do begin
|
|
|
+ a:=a + j;
|
|
|
+ a:=a - j;
|
|
|
+ end;
|
|
|
+ result:=gvar+p1+p2+a;
|
|
|
+end;
|
|
|
+
|
|
|
+function test111(p1, p2: longint): longint;
|
|
|
+var
|
|
|
+ i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15: longint;
|
|
|
+ a, j: longint;
|
|
|
+begin
|
|
|
+ i1:=1;i2:=2;i3:=3;i4:=4;i5:=5;i6:=6;i7:=7;i8:=8;i9:=9;i10:=10;i11:=11;i12:=12;i13:=13;i14:=14;i15:=15;
|
|
|
+ a:=0;
|
|
|
+ for j:=1 to 1 do begin
|
|
|
+ a:=a + (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
|
|
|
+ a:=a - (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
|
|
|
+ end;
|
|
|
+ result:=gvar+p1+p2+a;
|
|
|
+end;
|
|
|
+
|
|
|
+function test112(p1, p2: longint): longint;
|
|
|
+var
|
|
|
+ i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15: longint;
|
|
|
+ a, j: longint;
|
|
|
+ Buffer: array[0..BufSize] of byte;
|
|
|
+begin
|
|
|
+ i1:=1;i2:=2;i3:=3;i4:=4;i5:=5;i6:=6;i7:=7;i8:=8;i9:=9;i10:=10;i11:=11;i12:=12;i13:=13;i14:=14;i15:=15;
|
|
|
+ a:=0;
|
|
|
+ Buffer[0]:=0;
|
|
|
+ for j:=1 to 1 do begin
|
|
|
+ a:=a + (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
|
|
|
+ a:=a - (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
|
|
|
+ a:=a + Buffer[0];
|
|
|
+ end;
|
|
|
+ result:=gvar+p1+p2+a;
|
|
|
+end;
|
|
|
+
|
|
|
+begin
|
|
|
+ gvar:=100;
|
|
|
+ check(test101(10, 20), 130);
|
|
|
+ check(test102(20, 30), 150);
|
|
|
+ check(test103(30, 40), 170);
|
|
|
+ check(test111(110, 20), 230);
|
|
|
+ check(test112(120, 30), 250);
|
|
|
+end.
|