Commit 2dbad62d by Eric Botcazou Committed by Eric Botcazou

c-ada-spec.c (get_underlying_decl): Do not look through typedefs.

	* c-ada-spec.c (get_underlying_decl): Do not look through typedefs.
	(dump_forward_type): Do not generate a declaration for function types.
	(dump_nested_type) <ARRAY_TYPE>: Do not generate a nested declaration
	of the component type if it is declared in another file.

From-SVN: r278129
parent 46927ade
2019-11-13 Eric Botcazou <ebotcazou@adacore.com>
* c-ada-spec.c (get_underlying_decl): Do not look through typedefs.
(dump_forward_type): Do not generate a declaration for function types.
(dump_nested_type) <ARRAY_TYPE>: Do not generate a nested declaration
of the component type if it is declared in another file.
2019-11-12 Martin Liska <mliska@suse.cz> 2019-11-12 Martin Liska <mliska@suse.cz>
* c-opts.c (c_common_post_options): * c-opts.c (c_common_post_options):
......
...@@ -1025,7 +1025,9 @@ get_underlying_decl (tree type) ...@@ -1025,7 +1025,9 @@ get_underlying_decl (tree type)
if (TYPE_P (type)) if (TYPE_P (type))
{ {
type = TYPE_MAIN_VARIANT (type); /* Strip qualifiers but do not look through typedefs. */
if (TYPE_QUALS_NO_ADDR_SPACE (type))
type = TYPE_MAIN_VARIANT (type);
/* type is a typedef. */ /* type is a typedef. */
if (TYPE_NAME (type) && DECL_P (TYPE_NAME (type))) if (TYPE_NAME (type) && DECL_P (TYPE_NAME (type)))
...@@ -2454,6 +2456,9 @@ dump_forward_type (pretty_printer *buffer, tree type, tree t, int spc) ...@@ -2454,6 +2456,9 @@ dump_forward_type (pretty_printer *buffer, tree type, tree t, int spc)
if (DECL_SOURCE_FILE (decl) != DECL_SOURCE_FILE (t)) if (DECL_SOURCE_FILE (decl) != DECL_SOURCE_FILE (t))
return; return;
if (TREE_CODE (type) == FUNCTION_TYPE)
return;
/* Generate an incomplete type declaration. */ /* Generate an incomplete type declaration. */
pp_string (buffer, "type "); pp_string (buffer, "type ");
dump_ada_node (buffer, decl, NULL_TREE, spc, false, true); dump_ada_node (buffer, decl, NULL_TREE, spc, false, true);
...@@ -2522,7 +2527,10 @@ dump_nested_type (pretty_printer *buffer, tree field, tree t, tree parent, ...@@ -2522,7 +2527,10 @@ dump_nested_type (pretty_printer *buffer, tree field, tree t, tree parent,
while (TREE_CODE (tmp) == ARRAY_TYPE) while (TREE_CODE (tmp) == ARRAY_TYPE)
tmp = TREE_TYPE (tmp); tmp = TREE_TYPE (tmp);
decl = get_underlying_decl (tmp); decl = get_underlying_decl (tmp);
if (decl && !DECL_NAME (decl) && !TREE_VISITED (decl)) if (decl
&& !DECL_NAME (decl)
&& DECL_SOURCE_FILE (decl) == DECL_SOURCE_FILE (t)
&& !TREE_VISITED (decl))
{ {
/* Generate full declaration. */ /* Generate full declaration. */
dump_nested_type (buffer, decl, t, parent, spc); dump_nested_type (buffer, decl, t, parent, spc);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment