-- { dg-do run } -- { dg-options "-gnatp -fstrict-volatile-bitfields" } procedure Misaligned_Volatile is type Byte is mod 2**8; type Block is record B : Boolean; V : Byte; end record; pragma Volatile (Block); pragma Pack (Block); for Block'Alignment use 1; type Pair is array (1 .. 2) of Block; P : Pair; begin for K in P'Range loop P(K).V := 237; end loop; for K in P'Range loop if P(K).V /= 237 then raise Program_error; end if; end loop; end;