]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gm2/extensions/run/pass/card64p.mod
Merge modula-2 front end onto gcc.
[thirdparty/gcc.git] / gcc / testsuite / gm2 / extensions / run / pass / card64p.mod
1 MODULE card64p ;
2
3
4 FROM libc IMPORT exit, write ;
5 FROM ASCII IMPORT nul, nl ;
6 FROM SYSTEM IMPORT ADR,
7 INTEGER8, INTEGER16, INTEGER32, INTEGER64,
8 CARDINAL8, CARDINAL16, CARDINAL32, CARDINAL64,
9 BYTE, WORD16, WORD32, WORD64 ;
10 FROM M2RTS IMPORT Length ;
11 FROM NumberIO IMPORT CardToStr ;
12
13
14 PROCEDURE Assert (c: BOOLEAN; line: CARDINAL; column: CARDINAL;
15 message: ARRAY OF CHAR) ;
16 VAR
17 r: INTEGER ;
18 a: ARRAY [0..10] OF CHAR ;
19 BEGIN
20 IF NOT c
21 THEN
22 r := write(2, ADR(__FILE__), Length(__FILE__)) ;
23 r := write(2, ADR(": "), Length(":")) ;
24 CardToStr(line, 0, a) ;
25 r := write(2, ADR(a), Length(a)) ;
26 r := write(2, ADR(": "), Length(":")) ;
27 CardToStr(column, 0, a) ;
28 r := write(2, ADR(a), Length(a)) ;
29 r := write(2, ADR(": "), Length(":")) ;
30 r := write(2, ADR(message), Length(message)) ;
31 a[0] := nl ;
32 a[1] := nul ;
33 r := write(2, ADR(a), Length(a)) ;
34 e := 1
35 END
36 END Assert ;
37
38 VAR
39 e : INTEGER ;
40 z: (zero, one, two) ;
41
42 c8 : CARDINAL8 ;
43 w8 : BYTE ;
44 i8 : INTEGER8 ;
45
46 c16: CARDINAL16 ;
47 i16: INTEGER16 ;
48 w16: WORD16 ;
49
50 c32: CARDINAL32 ;
51 i32: INTEGER32 ;
52 w32: WORD32 ;
53
54 c64: CARDINAL64 ;
55 i64: INTEGER64 ;
56 w64: WORD64 ;
57 i, j: CARDINAL64;
58 BEGIN
59 e := 0 ;
60
61 i := 0 ;
62 INC(i) ;
63 Assert(i=1, __LINE__, __COLUMN__, "INC failed to generate value of 1") ;
64 i8 := i ;
65 Assert(i8=1, __LINE__, __COLUMN__, "assignment failed to propagate via INTEGER8") ;
66 c8 := i ;
67 Assert(c8=1, __LINE__, __COLUMN__, "assignment failed to propagate via CARDINAL8") ;
68
69 i16 := i ;
70 Assert(i16=1, __LINE__, __COLUMN__, "assignment failed to propagate via INTEGER16") ;
71 c16 := i ;
72 Assert(c16=1, __LINE__, __COLUMN__, "assignment failed to propagate via CARDINAL16") ;
73
74 i32 := i ;
75 Assert(i32=1, __LINE__, __COLUMN__, "assignment failed to propagate via INTEGER32") ;
76 c32 := i ;
77 Assert(c32=1, __LINE__, __COLUMN__, "assignment failed to propagate via CARDINAL32") ;
78
79 i64 := i ;
80 Assert(i64=1, __LINE__, __COLUMN__, "assignment failed to propagate via INTEGER64") ;
81 c64 := i ;
82 Assert(c64=1, __LINE__, __COLUMN__, "assignment failed to propagate via CARDINAL64") ;
83
84 DEC(i) ;
85 Assert(i=0, __LINE__, __COLUMN__, "DEC failed to generate value of 0") ;
86 j := 1 ;
87 INC(i, j) ;
88 Assert(i=1, __LINE__, __COLUMN__, "INC failed to generate value of 1") ;
89 DEC(i, j) ;
90 Assert(i=0, __LINE__, __COLUMN__, "DEC failed to generate value of 0") ;
91 INC(i, one) ;
92 Assert(i=1, __LINE__, __COLUMN__, "INC failed to generate value of 1") ;
93 DEC(i, one) ;
94 Assert(i=0, __LINE__, __COLUMN__, "DEC failed to generate value of 0") ;
95 i := MAX(CARDINAL64) ;
96 j := i ;
97 DEC(i) ;
98 Assert(i=j-1, __LINE__, __COLUMN__, "DEC failed to generate value of MAX(dataType)-1") ;
99 DEC(i, 1) ;
100 Assert(i=j-2, __LINE__, __COLUMN__, "DEC failed to generate value of MAX(dataType)-2") ;
101
102 i64 := 0 ;
103 j := 1 ;
104 DEC(i64) ;
105 Assert(i64=-1, __LINE__, __COLUMN__, "DEC failed to generate value of -1") ;
106 DEC(i64, j) ;
107 Assert(i64=-2, __LINE__, __COLUMN__, "DEC failed to generate value of -2") ;
108 INC(i64) ;
109 Assert(i64=-1, __LINE__, __COLUMN__, "DEC failed to generate value of -1") ;
110 INC(i64, j) ;
111 Assert(i64=0, __LINE__, __COLUMN__, "DEC failed to generate value of 0") ;
112 i := MIN(CARDINAL64) ;
113 j := i ;
114 INC(i) ;
115 Assert(i=j+1, __LINE__, __COLUMN__, "DEC failed to generate value of MIN(dataType)+1") ;
116 INC(i, 1) ;
117 Assert(i=j+2, __LINE__, __COLUMN__, "DEC failed to generate value of MIN(dataType)+2") ;
118 exit(e) ;
119 END card64p.