blob: ff373464282b6918ca2833deceb6518a5a943d5d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-- { dg-do run }
procedure Scalar_Mode_Agg_Compare is
type Point is record
Mapped : Boolean;
Tag : String (1 .. 2); -- HImode
end record;
pragma Pack (Point); -- Tag possibly at bitpos 1
function My_Point return Point is
begin
return (Mapped => True, Tag => "XX");
end;
A, B : Point := My_Point;
begin
-- The comparison below should find the two Tag fields equal and not
-- attempt to take their address, which might not be byte aligned.
if A.Tag /= B.Tag then
raise Program_Error;
end if;
end;
|