Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / ada / acats / tests / c5 / c52102d.ada
blobfd4e413504fe722e8878a7377655eab0b5085daf
1 -- C52102D.ADA
3 -- Grant of Unlimited Rights
4 --
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7 -- unlimited rights in the software and documentation contained herein.
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
9 -- this public release, the Government intends to confer upon all
10 -- recipients unlimited rights equal to those held by the Government.
11 -- These rights include rights to use, duplicate, release or disclose the
12 -- released technical data and computer software in whole or in part, in
13 -- any manner and for any purpose whatsoever, and to have or permit others
14 -- to do so.
16 -- DISCLAIMER
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
24 --*
25 -- CHECK THAT THE ASSIGNMENT OF OVERLAPPING SOURCE AND TARGET VARIABLES
26 -- (INCLUDING ARRAYS AND SLICES IN VARIOUS COMBINATIONS) SATISFIES
27 -- THE SEMANTICS OF "COPY" ASSIGNMENT WHEN INITIAL ASSIGNMENT VALUES
28 -- REQUIRE RUN-TIME EVALUATION. (THIS TEST IS IN TWO PARTS,
29 -- COVERING RESPECTIVELY STATIC AND DYNAMIC BOUNDS.)
31 -- PART 2: DYNAMIC BOUNDS
34 -- RM 02/27/80
35 -- SPS 2/18/83
36 -- JBG 3/15/84
37 -- JBG 6/9/84
38 -- BHS 6/26/84
40 WITH REPORT;
41 PROCEDURE C52102D IS
43 USE REPORT;
44 IDENT_INT_0 : INTEGER := IDENT_INT(0);
45 IDENT_INT_1 : INTEGER := IDENT_INT (1);
46 IDENT_INT_2 : INTEGER := IDENT_INT (2);
47 IDENT_INT_3 : INTEGER := IDENT_INT (3);
48 IDENT_INT_4 : INTEGER := IDENT_INT (4);
49 IDENT_INT_5 : INTEGER := IDENT_INT (5);
50 IDENT_INT_6 : INTEGER := IDENT_INT (6);
51 IDENT_INT_8 : INTEGER := IDENT_INT (8);
52 IDENT_INT_9 : INTEGER := IDENT_INT (9);
54 FUNCTION ID_I (X : INTEGER) RETURN INTEGER RENAMES IDENT_INT;
55 FUNCTION ID_B (X : BOOLEAN) RETURN BOOLEAN RENAMES IDENT_BOOL;
57 BEGIN
60 TEST( "C52102D" , "CHECK THAT THE ASSIGNMENT OF OVERLAPPING " &
61 "SOURCE AND TARGET VARIABLES (INCLUDING " &
62 "ARRAYS AND SLICES IN VARIOUS COMBINATIONS) " &
63 "SATISFIES THE SEMANTICS OF ""COPY"" " &
64 "ASSIGNMENT WHEN INITIAL ASSIGNMENT VALUES " &
65 "ARE DYNAMIC (PART 2: DYNAMIC BOUNDS)" );
67 -------------------------------------------------------------------
68 -------------------- ARRAYS OF INTEGERS -------------------------
70 DECLARE
71 A : ARRAY( 1..IDENT_INT_4 ) OF INTEGER;
73 BEGIN
74 A := ( ID_I(11), ID_I(12), ID_I(13), ID_I(14) );
75 A := ( 1 , A(IDENT_INT_1) , A(IDENT_INT_2) ,
76 A(IDENT_INT_1) );
77 IF A /= ( 1 , 11 , 12 , 11 ) THEN
78 FAILED( "WRONG VALUES - I1" );
79 END IF;
81 A := ( ID_I(11), ID_I(12), ID_I(13), ID_I(14) );
82 A := ( A(IDENT_INT_4) , A(IDENT_INT_3) ,
83 A(IDENT_INT_4) , 1 );
84 IF A /= ( 14 , 13 , 14 , 1 ) THEN
85 FAILED( "WRONG VALUES - I2" );
86 END IF;
88 END;
91 DECLARE
92 A : ARRAY( -4..IDENT_INT_4 ) OF INTEGER;
94 BEGIN
95 A := ( -ID_I(4), -ID_I(3), -ID_I(2), -ID_I(1),
96 ID_I(100), ID_I(1), ID_I(2), ID_I(3), ID_I(4));
97 A(-4..IDENT_INT_0) := A(IDENT_INT_0..4);
98 IF A /= ( 100 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 )
99 THEN
100 FAILED( "WRONG VALUES - I3" );
101 END IF;
103 A := ( -ID_I(4), -ID_I(3), -ID_I(2), -ID_I(1),
104 ID_I(100), ID_I(1), ID_I(2), ID_I(3), ID_I(4));
105 A(IDENT_INT_0..4) := A(-4..IDENT_INT_0);
106 IF A /= ( -4 , -3 , -2 , -1 , -4 , -3 , -2 , -1 , 100 )
107 THEN
108 FAILED( "WRONG VALUES - I4" );
109 END IF;
111 END;
114 DECLARE
115 TYPE INT_ARR IS ARRAY (INTEGER RANGE <>) OF INTEGER;
116 A : INT_ARR (1..10);
118 BEGIN
119 A := ( ID_I(1), ID_I(2), ID_I(3), ID_I(4), ID_I(5),
120 ID_I(6), ID_I(7), ID_I(8), ID_I(9), ID_I(10));
121 A := 0 & A(IDENT_INT_1..IDENT_INT_2) &
122 A(IDENT_INT_1..IDENT_INT_2) &
123 A(IDENT_INT_1..IDENT_INT_5);
124 IF A /= ( 0 , 1 , 2 , 1 , 2 , 1 , 2 , 3 , 4 , 5 )
125 THEN
126 FAILED( "WRONG VALUES - I5" );
127 END IF;
129 A := ( ID_I(1), ID_I(2), ID_I(3), ID_I(4), ID_I(5),
130 ID_I(6), ID_I(7), ID_I(8), ID_I(9), ID_I(10));
131 A := A(IDENT_INT_6..IDENT_INT_9) &
132 A(IDENT_INT_8..IDENT_INT_9) &
133 A(IDENT_INT_8..IDENT_INT_9) & 0 & 0;
134 IF A /= ( 6 , 7 , 8 , 9 , 8 , 9 , 8 , 9 , 0 , 0 )
135 THEN
136 FAILED( "WRONG VALUES - I6" );
137 END IF;
139 END;
142 -------------------------------------------------------------------
143 -------------------- ARRAYS OF BOOLEANS -------------------------
145 DECLARE
146 A : ARRAY( 1..4 ) OF BOOLEAN;
148 BEGIN
149 A := (ID_B(FALSE), ID_B(TRUE), ID_B(TRUE), ID_B(FALSE));
150 A := ( TRUE , A(IDENT_INT_1) , A(IDENT_INT_2) ,
151 A(IDENT_INT_1) );
152 IF A /= ( TRUE ,FALSE , TRUE , FALSE )
153 THEN
154 FAILED( "WRONG VALUES - B1" );
155 END IF;
157 A := (ID_B(FALSE), ID_B(TRUE), ID_B(TRUE), ID_B(FALSE));
158 A := ( A(IDENT_INT_4) , A(IDENT_INT_3) ,
159 A(IDENT_INT_4) , TRUE );
160 IF A /= ( FALSE , TRUE , FALSE, TRUE )
161 THEN
162 FAILED( "WRONG VALUES - B2" );
163 END IF;
165 END;
168 DECLARE
169 A : ARRAY( -IDENT_INT_4..4 ) OF BOOLEAN;
171 BEGIN
172 A := (ID_B(FALSE), ID_B(FALSE), ID_B(FALSE), ID_B(FALSE),
173 ID_B(FALSE), ID_B(TRUE), ID_B(TRUE),
174 ID_B(TRUE), ID_B(TRUE));
175 A(-IDENT_INT_4..IDENT_INT_0) := A(IDENT_INT_0..4);
176 IF A /= (FALSE, TRUE, TRUE, TRUE, TRUE,TRUE, TRUE, TRUE,TRUE)
177 THEN
178 FAILED( "WRONG VALUES - B3" );
179 END IF;
181 A := (ID_B(FALSE), ID_B(FALSE), ID_B(FALSE), ID_B(FALSE),
182 ID_B(TRUE), ID_B(TRUE), ID_B(TRUE),
183 ID_B(TRUE), ID_B(TRUE));
184 A(IDENT_INT_0..4) := A(-4..IDENT_INT_0);
185 IF A /= (FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE)
186 THEN
187 FAILED( "WRONG VALUES - B4" );
188 END IF;
190 END;
193 DECLARE
194 TYPE B_ARR IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
195 A : B_ARR (1..10);
197 BEGIN
198 A := (ID_B(TRUE), ID_B(FALSE), ID_B(TRUE), ID_B(FALSE),
199 ID_B(TRUE), ID_B(FALSE), ID_B(TRUE),
200 ID_B(FALSE), ID_B(TRUE), ID_B(FALSE));
201 A := FALSE & A(IDENT_INT_1..IDENT_INT_2) &
202 A(IDENT_INT_1..IDENT_INT_2) &
203 A(IDENT_INT_1..IDENT_INT_5);
204 IF A/=(FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE)
205 THEN
206 FAILED( "WRONG VALUES - B5" );
207 END IF;
209 A := (ID_B(TRUE), ID_B(FALSE), ID_B(TRUE), ID_B(FALSE),
210 ID_B(TRUE), ID_B(FALSE), ID_B(TRUE),
211 ID_B(FALSE), ID_B(TRUE), ID_B(FALSE));
212 A := A(IDENT_INT_6..IDENT_INT_9) &
213 A(IDENT_INT_8..IDENT_INT_9) &
214 A(IDENT_INT_8..IDENT_INT_9) & FALSE & TRUE;
215 IF A/=(FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE)
216 THEN
217 FAILED( "WRONG VALUES - B6" );
218 END IF;
220 END;
223 -------------------------------------------------------------------
224 -------------------- CHARACTER STRINGS --------------------------
226 DECLARE
227 A : STRING( 1..4 );
229 BEGIN
230 IF EQUAL (3,3) THEN
231 A := "ARGH";
232 END IF;
233 A := ( 'Q' , A(IDENT_INT_1) , A(IDENT_INT_2) ,
234 A(IDENT_INT_1) );
235 IF A /= "QARA" THEN
236 FAILED( "WRONG VALUES - C1" );
237 END IF;
239 IF EQUAL (3,3) THEN
240 A := "ARGH";
241 END IF;
242 A := ( A(IDENT_INT_4) , A(IDENT_INT_3) ,
243 A(IDENT_INT_4) , 'X' );
244 IF A /= "HGHX" THEN
245 FAILED( "WRONG VALUES - C2" );
246 END IF;
248 END;
251 DECLARE
252 A : STRING( IDENT_INT(96)..104 );
254 BEGIN
255 IF EQUAL (3,3) THEN
256 A := "APHRODITE";
257 END IF;
258 A(IDENT_INT(96)..IDENT_INT(100)) := A(IDENT_INT(100)..
259 IDENT_INT(104));
260 IF A /= "ODITEDITE" THEN
261 FAILED( "WRONG VALUES - C3" );
262 END IF;
264 IF EQUAL (3,3) THEN
265 A := "APHRODITE";
266 END IF;
267 A(IDENT_INT(100)..IDENT_INT(104)) := A(IDENT_INT(96)..
268 IDENT_INT(100)) ;
269 IF A /= "APHRAPHRO" THEN
270 FAILED( "WRONG VALUES - C4" );
271 END IF;
273 END;
276 DECLARE
277 TYPE CH_ARR IS ARRAY (INTEGER RANGE <>) OF CHARACTER;
278 A : CH_ARR (IDENT_INT_1..9);
280 BEGIN
281 IF EQUAL (3,3) THEN
282 A := "CAMBRIDGE";
283 END IF;
284 A := 'S' & A(IDENT_INT_1..IDENT_INT_2) &
285 A(IDENT_INT_1..IDENT_INT_2) &
286 A(IDENT_INT_1..IDENT_INT_4);
287 IF A /= "SCACACAMB" THEN
288 FAILED( "WRONG VALUES - C5" );
289 END IF;
291 IF EQUAL (3,3) THEN
292 A := "CAMBRIDGE";
293 END IF;
294 A := A(IDENT_INT_8..IDENT_INT_8) &
295 A(IDENT_INT_6..IDENT_INT_8) &
296 A(IDENT_INT_6..IDENT_INT_8) & "EA";
297 IF A /= "GIDGIDGEA" THEN
298 FAILED( "WRONG VALUES - C6" );
299 END IF;
301 END;
304 RESULT;
307 END C52102D;