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