diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 8fa7ab7..6d9a86d 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
 2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
 
+	* gcc-interface/trans.c (Identifier_to_gnu): Also accept incomplete
+	types not coming from a limited context.
+
+2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+
 	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Skip subprograms on
 	the inlined list that are not public.
 	* gcc-interface/utils.c (create_subprog_decl): Clear TREE_PUBLIC if
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 117ce26..4c80053 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -1044,7 +1044,7 @@ Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
 		  && (Etype (gnat_node)
 		      == Packed_Array_Impl_Type (gnat_temp_type)))
 	      || (Is_Class_Wide_Type (Etype (gnat_node)))
-	      || (IN (Ekind (gnat_temp_type), Private_Kind)
+	      || (IN (Ekind (gnat_temp_type), Incomplete_Or_Private_Kind)
 		  && Present (Full_View (gnat_temp_type))
 		  && ((Etype (gnat_node) == Full_View (gnat_temp_type))
 		      || (Is_Packed (Full_View (gnat_temp_type))