+2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Selected_Component>: Try
+ again to translate the prefix after the field if it is incomplete.
+
2017-09-06 Bob Duff <duff@adacore.com>
* exp_util.adb (Is_Displace_Call): Make sure it works for indirect
{
tree gnu_field = gnat_to_gnu_field_decl (gnat_field);
+ /* If the prefix has incomplete type, try again to translate it.
+ The idea is that the translation of the field just above may
+ have completed it through gnat_to_gnu_entity, in case it is
+ the dereference of an access to Taft Amendment type used in
+ the instantiation of a generic body from an external unit. */
+ if (!COMPLETE_TYPE_P (TREE_TYPE (gnu_prefix)))
+ {
+ gnu_prefix = gnat_to_gnu (gnat_prefix);
+ gnu_prefix = maybe_implicit_deref (gnu_prefix);
+ }
+
gnu_result
= build_component_ref (gnu_prefix, gnu_field,
(Nkind (Parent (gnat_node))