* gcc-interface/decl.c (gnat_to_gnu_field): Do not enforce strict
[official-gcc.git] / gcc / testsuite / gnat.dg / specs / clause_on_volatile.ads
blobf4c0b985b54f8da3331a8bc4f730544a225c70a5
1 -- { dg-do compile }
3 package Clause_On_Volatile is
5 type U8 is mod 2 ** 8;
7 type Word is record
8 A, B : U8;
9 end record;
10 For Word'Alignment use 4;
12 type Vword is new Word;
13 For Vword'Alignment use 4;
14 pragma Volatile (Vword);
16 type Aword is new Word;
17 For Aword'Alignment use 4;
18 pragma Atomic (Aword);
20 type R1 is record
21 W : Word;
22 end record;
23 for R1 use record
24 W at 0 range 0 .. 15; -- OK
25 end record;
27 type A1 is record
28 AW : Aword;
29 end record;
30 For A1'Alignment use 4;
31 for A1 use record
32 AW at 0 range 0 .. 15; -- { dg-error "must be \[0-9\]*" }
33 end record;
35 type A2 is record
36 B : U8;
37 AW : Aword;
38 end record;
39 For A2'Alignment use 4;
40 for A2 use record
41 B at 0 range 0 .. 7;
42 AW at 1 range 0 .. 31; -- { dg-error "must be multiple" }
43 end record;
45 type A3 is record
46 B : U8;
47 AW : Aword;
48 end record;
49 For A3'Alignment use 4;
50 for A3 use record
51 B at 0 range 0 .. 7;
52 AW at 1 range 0 .. 15; -- { dg-error "must be (multiple||\[0-9\]*)" }
53 end record;
55 type V1 is record
56 VW : Vword;
57 end record;
58 For V1'Alignment use 4;
59 for V1 use record
60 VW at 0 range 0 .. 15;
61 end record;
63 type V2 is record
64 B : U8;
65 VW : Vword;
66 end record;
67 For V2'Alignment use 4;
68 for V2 use record
69 B at 0 range 0 .. 7;
70 VW at 1 range 0 .. 31;
71 end record;
73 type V3 is record
74 B : U8;
75 VW : Vword;
76 end record;
77 For V3'Alignment use 4;
78 for V3 use record
79 B at 0 range 0 .. 7;
80 VW at 1 range 0 .. 15;
81 end record;
83 end Clause_On_Volatile;