aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gnat.dg/scalar_mode_agg_compare.adb
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;