On 10/06/2015 05:00 AM, Eric Botcazou wrote:
This is the Ada front-end (in fact mostly gigi) part.ada/ * freeze.adb (Check_Component_Storage_Order): Skip a record component if it has Complex_Representation. (Freeze_Record_Type): If the type has Complex_Representation, skip the regular treatment of Scalar_Storage_Order attribute and instead issue a warning if it is present. * gcc-interface/gigi.h (set_reverse_storage_order_on_pad_type): Declare. * gcc-interface/decl.c (gnat_to_gnu_entity) <discrete_type>: Set the storage order on the enclosing record for a packed array type. <E_Array_Type>: Set the storage order. <E_Array_Subtype>: Likewise. <E_Record_Type>: Likewise. <E_Record_Subtype>: Likewise. (gnat_to_gnu_component_type): Set the reverse storage order on a padded type built for a non-bit-packed array. (gnat_to_gnu_field): Likewise. (components_to_record): Deal with TYPE_REVERSE_STORAGE_ORDER. * gcc-interface/utils.c (make_packable_type): Likewise. (pad_type_hasher::equal): Likewise. (gnat_types_compatible_p): Likewise. (unchecked_convert): Likewise. (set_reverse_storage_order_on_pad_type): New public function. * gcc-interface/trans.c (Attribute_to_gnu): Adjust call to get_inner_reference. * gcc-interface/utils2.c (build_unary_op): Likewise. (gnat_build_constructor): Deal with TYPE_REVERSE_STORAGE_ORDER. (gnat_rewrite_reference): Propagate REF_REVERSE_STORAGE_ORDER.
FWIW, I consider all the bits referenced above as self-approvable. jeff
