summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/test/tcint64.pp
blob: dca991d4398ae29c168f5b35d4d2f63836888af7 (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
{ The results of the following constants
  differ on 1.0 and 1.1 compiler
  as constants are evaluated as 32bit integers in 1.1
  and as 64bit integers in 1.1
  But in all cases int64(-1) should give -1 and not $ffffffff PM }
{$R-}
const
   u1 : qword = $ffffffff;
   i1 : int64 = $ffffffff;
   u2 : qword = -1;
   i2 : int64 = -1;
var
  l : longint;
begin
  l:=-1;
  Writeln(' qword($ffffffff) = ',u1);
  Writeln(' int64($ffffffff) = ',i1);
  Writeln(' qword(-1) = ',u2);
  Writeln(' int64(-1) = ',i2);
  if i2<>-1 then
    begin
      Writeln('"const i2 : int64 = -1;" code');
      Writeln('generates a wrong int64 constant');
      RunError(1);
    end;

  if u2<>qword(int64(l)) then
    begin
      Writeln('"const u2 : qword = -1;" code');
      Writeln('generates a wrong int64 constant');
      RunError(1);
    end;

  if qword(l)<>u2 then
    begin
      writeln('qword(longint) sign extension generates wrong code');
      halt(1);
    end;
end.