view gcc/testsuite/gnat.dg/scalar_mode_agg_compare.adb @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +0900
parents 04ced10e8804
children
line wrap: on
line source

-- { 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;