annotate gcc/testsuite/gnat.dg/blkextract_from_reg.adb @ 138:fc828634a951

merge
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 08 Nov 2018 14:17:14 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 -- { dg-do run }
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 with System, Ada.Unchecked_Conversion; use System;
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 procedure BLKextract_From_Reg is
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 type Byte is range 0 .. +255;
kono
parents:
diff changeset
8 for Byte'size use 8;
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 type RGB is array (1 .. 3) of Byte;
kono
parents:
diff changeset
11 for RGB'Size use 24;
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 type RAW_Packet is range 0 .. 2 ** 32 - 1;
kono
parents:
diff changeset
14 for RAW_Packet'Size use 32;
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 type Composite_Packet is record
kono
parents:
diff changeset
17 Values : RGB;
kono
parents:
diff changeset
18 Pad : Byte;
kono
parents:
diff changeset
19 end record;
kono
parents:
diff changeset
20 for Composite_Packet use record
kono
parents:
diff changeset
21 Values at 0 range 0 .. 23;
kono
parents:
diff changeset
22 Pad at 3 range 0 .. 7;
kono
parents:
diff changeset
23 end record;
kono
parents:
diff changeset
24 for Composite_Packet'Size use 32;
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 function To_Composite_Packet is
kono
parents:
diff changeset
27 new Ada.Unchecked_Conversion (RAW_Packet, Composite_Packet);
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 function Blob return RGB is
kono
parents:
diff changeset
30 RAW_Blob : RAW_Packet := 16#01020304#;
kono
parents:
diff changeset
31 begin
kono
parents:
diff changeset
32 return To_Composite_Packet (RAW_Blob).Values;
kono
parents:
diff changeset
33 end;
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 Blob_Color : RGB := Blob;
kono
parents:
diff changeset
36 Expected_Color : RGB;
kono
parents:
diff changeset
37 begin
kono
parents:
diff changeset
38 if System.Default_Bit_Order = High_Order_First then
kono
parents:
diff changeset
39 Expected_Color := (1 => 1, 2 => 2, 3 => 3);
kono
parents:
diff changeset
40 else
kono
parents:
diff changeset
41 Expected_Color := (1 => 4, 2 => 3, 3 => 2);
kono
parents:
diff changeset
42 end if;
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 for I in Blob_Color'Range loop
kono
parents:
diff changeset
45 if Blob_Color (I) /= Expected_Color (I) then
kono
parents:
diff changeset
46 raise Program_Error;
kono
parents:
diff changeset
47 end if;
kono
parents:
diff changeset
48 end loop;
kono
parents:
diff changeset
49 end;