* gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK
[official-gcc.git] / gcc / testsuite / gnat.dg / specs / vfa2.ads
blob8ca9687a39e366e1ff3dd4a95e68d1976405779e
1 -- { dg-do compile }
2 -- { dg-options "-O" }
4 package VFA2 is
6 type Bit is mod 2**1
7 with Size => 1;
8 type UInt2 is mod 2**2
9 with Size => 2;
10 type UInt22 is mod 2**22
11 with Size => 22;
13 type MODE_ENUM is
15 Function_0_Default,
16 Function_1,
17 Function_2,
18 Function_3,
19 Function_4,
20 Function_5,
21 Function_6,
22 Function_7)
23 with Size => 3;
25 type EPD_ENUM is
27 Disable_Pull_Down,
28 Enable_Pull_Down)
29 with Size => 1;
31 type EPUN_ENUM is
33 Enable_Pull_Up,
34 Disable_Pull_Up)
35 with Size => 1;
37 type EHS_ENUM is
39 Slow_Low_Noise_With,
40 Fast_Medium_Noise_W)
41 with Size => 1;
43 type EZI_ENUM is
45 Disable_Input_Buffer,
46 Enable_Input_Buffer)
47 with Size => 1;
49 type ZIF_ENUM is
51 Enable_Input_Glitch,
52 Disable_Input_Glitch)
53 with Size => 1;
55 type EHD_ENUM is
57 Normal_Drive_4_Ma_D,
58 Medium_Drive_8_Ma_D,
59 High_Drive_14_Ma_Dr,
60 Ultra_High_Drive_20)
61 with Size => 2;
63 type Pin_Type is (Normal_Drive, High_Drive, High_Speed);
65 type SFS_Register(Pin : Pin_Type := Normal_Drive) is record
66 MODE : MODE_ENUM;
67 EPD : EPD_ENUM;
68 EPUN : EPUN_ENUM;
69 EZI : EZI_ENUM;
70 ZIF : ZIF_ENUM;
71 RESERVED : UInt22;
73 case Pin is
74 when Normal_Drive =>
76 ND_EHS_RESERVED : Bit;
77 ND_EHD_RESERVED : UInt2;
79 when High_Drive =>
81 EHD : EHD_ENUM;
82 HD_EHS_RESERVED : Bit;
84 when High_Speed =>
85 EHS : EHS_ENUM;
86 HS_EHD_RESERVED : UInt2;
88 end case;
89 end record
90 with Unchecked_Union, Size => 32, Volatile_Full_Access;
92 for SFS_Register use record
93 MODE at 0 range 0 .. 2;
94 EPD at 0 range 3 .. 3;
95 EPUN at 0 range 4 .. 4;
96 ND_EHS_RESERVED at 0 range 5 .. 5;
97 HD_EHS_RESERVED at 0 range 5 .. 5;
98 EHS at 0 range 5 .. 5;
99 EZI at 0 range 6 .. 6;
100 ZIF at 0 range 7 .. 7;
101 ND_EHD_RESERVED at 0 range 8 .. 9;
102 EHD at 0 range 8 .. 9;
103 HS_EHD_RESERVED at 0 range 8 .. 9;
104 RESERVED at 0 range 10 .. 31;
105 end record;
107 type Normal_Drive_Pins is array (Integer range <>)
108 of SFS_Register(Normal_Drive) with Volatile;
110 end VFA2;