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