summaryrefslogtreecommitdiff
path: root/tests/webtbs/tw8283.pp
blob: b1a59605667921588c4aa26355dcf5c88f3f7699 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{ %opt=-O2 }

type
  Int96 = packed record
    case Integer of
      0:
        (
          {$IFDEF ENDIAN_LITTLE}
          Lo32 : DWord;
          case Integer of
            0:
              (
                Mid32 : DWord;
                Hi32 : LongInt;
              );
            1:
              ( Hi64: Int64; );
          {$ELSE ENDIAN_LITTLE}
          Hi32 : LongInt;
          case Integer of
            0:
              (
                Mid32 : DWord;
                Lo32 : DWord;
              );
            1:
              ( Lo64: QWord; );
          {$ENDIF ENDIAN_LITTLE}
        );
      1:
        (
          {$IFDEF ENDIAN_LITTLE}
          Lo64 : QWord;
          {$ELSE ENDIAN_LITTLE}
          Hi64 : Int64;
          {$ENDIF ENDIAN_LITTLE}
        );
  end;

function f: int96;
begin
end;

operator := (const Right: QWord) Result : Int96; inline;
var
  c: int96;
begin
  c := f;
  Result.Lo64 := Right;
  Result.Hi32 := 0;
end;

procedure Test;
var
  a : Int96;
begin
  a := 500000000000000;
  if (a.lo64 <> 500000000000000) then
    halt(1);
end;

begin
  test
end.