treg4.pp 661 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. {$inline on}
  2. {$mode objfpc}
  3. type
  4. tr = record
  5. case byte of
  6. 1: (l: longint);
  7. 2: (b1,b2,b3,b4: byte);
  8. end;
  9. function f: tr; inline;
  10. begin
  11. f.l := 5;
  12. f.b3 := 6;
  13. end;
  14. procedure t(const r1: tr);
  15. begin
  16. if (r1.b3 <> 6) or
  17. ((r1.l and 255) <> 5) then
  18. halt(1);
  19. end;
  20. procedure t2(out r: tr); inline;
  21. begin
  22. r.l := 7;
  23. r.b2 := 31;
  24. end;
  25. procedure t3(out r: tr); inline;
  26. begin
  27. r.l := 88;
  28. r.b2 := 9;
  29. end;
  30. procedure t4(out r: tr);
  31. begin
  32. t3(r);
  33. end;
  34. var
  35. r: tr;
  36. begin
  37. t(f);
  38. t2(r);
  39. if ((r.l and 255) <> 7) or
  40. (r.b2 <> 31) then
  41. halt(1);
  42. t4(r);
  43. if ((r.l and 255) <> 88) or
  44. (r.b2 <> 9) then
  45. halt(1);
  46. end.