57 lines
1.1 KiB
Ada
57 lines
1.1 KiB
Ada
-- { dg-do run }
|
|
|
|
procedure Pack19 is
|
|
|
|
subtype Always_False is Boolean range False .. False;
|
|
|
|
type Rec1 is record
|
|
B1 : Boolean;
|
|
B2 : Boolean;
|
|
B3 : Boolean;
|
|
B4 : Boolean;
|
|
B5 : Boolean;
|
|
B6 : Boolean;
|
|
B7 : Always_False;
|
|
B8 : Boolean;
|
|
end record;
|
|
pragma Pack (Rec1);
|
|
|
|
subtype Always_True is Boolean range True .. True;
|
|
|
|
type Rec2 is record
|
|
B1 : Boolean;
|
|
B2 : Boolean;
|
|
B3 : Boolean;
|
|
B4 : Boolean;
|
|
B5 : Boolean;
|
|
B6 : Boolean;
|
|
B7 : Always_True;
|
|
B8 : Boolean;
|
|
end record;
|
|
pragma Pack (Rec2);
|
|
|
|
R1 : Rec1 := (True, True, True, True, True, True, False, False);
|
|
R2 : Rec2 := (False, False, False, False, False, False, True, True);
|
|
|
|
begin
|
|
R1.B8 := True;
|
|
if R1.B7 /= False then
|
|
raise Program_Error;
|
|
end if;
|
|
|
|
R1.B7 := False;
|
|
if R1.B7 /= False then
|
|
raise Program_Error;
|
|
end if;
|
|
|
|
R2.B8 := False;
|
|
if R2.B7 /= True then
|
|
raise Program_Error;
|
|
end if;
|
|
|
|
R2.B7 := True;
|
|
if R2.B7 /= True then
|
|
raise Program_Error;
|
|
end if;
|
|
end;
|