tb613.pp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. {$mode objfpc}
  2. {$PIC+}
  3. {
  4. Test for proper initialization of GOT register.
  5. }
  6. const
  7. BufSize = 128*1024;
  8. var
  9. gvar: longint;
  10. procedure check(c, e: longint);
  11. begin
  12. if c <> e then begin
  13. writeln('ERROR. Result: ', c, ' Expected: ', e);
  14. Halt(1);
  15. end;
  16. end;
  17. function test101(p1, p2: longint): longint;
  18. begin
  19. result:=gvar+p1+p2;
  20. end;
  21. function test102(p1, p2: longint): longint;
  22. var
  23. Buffer: array[0..BufSize] of byte;
  24. begin
  25. Buffer[0]:=0;
  26. result:=gvar+p1+p2+Buffer[0];
  27. end;
  28. function test103(p1, p2: longint): longint;
  29. var
  30. a, j: longint;
  31. begin
  32. a:=0;
  33. for j:=1 to 1 do begin
  34. a:=a + j;
  35. a:=a - j;
  36. end;
  37. result:=gvar+p1+p2+a;
  38. end;
  39. function test111(p1, p2: longint): longint;
  40. var
  41. i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15: longint;
  42. a, j: longint;
  43. begin
  44. 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;
  45. a:=0;
  46. for j:=1 to 1 do begin
  47. a:=a + (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
  48. a:=a - (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
  49. end;
  50. result:=gvar+p1+p2+a;
  51. end;
  52. function test112(p1, p2: longint): longint;
  53. var
  54. i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15: longint;
  55. a, j: longint;
  56. Buffer: array[0..BufSize] of byte;
  57. begin
  58. 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;
  59. a:=0;
  60. Buffer[0]:=0;
  61. for j:=1 to 1 do begin
  62. a:=a + (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
  63. a:=a - (i1+i2+i3+i4+i5+i6+i7+i8+i9+i10+i11+i12+i13+i14+i15);
  64. a:=a + Buffer[0];
  65. end;
  66. result:=gvar+p1+p2+a;
  67. end;
  68. begin
  69. gvar:=100;
  70. check(test101(10, 20), 130);
  71. check(test102(20, 30), 150);
  72. check(test103(30, 40), 170);
  73. check(test111(110, 20), 230);
  74. check(test112(120, 30), 250);
  75. end.