-- { dg-do compile } with System; procedure Volatile_Aggregate is function GetArrayUpperBound return Integer is begin return 2; end GetArrayUpperBound; some_value : Integer := GetArrayUpperBound; type Gp_Element_Type is record Element : Integer; end record; type some_type is array (1 .. some_value) of Gp_Element_Type; type Aligned_Some_Type is record Value : aliased some_type; end record; for Aligned_Some_Type'Alignment use 8; an_aligned_type : aligned_Some_Type; my_address : system.address; pragma Volatile (an_aligned_type); begin my_address := an_aligned_type.value(1)'address; end;