From de9528f0291faf10d65dd7b00f7101005c2ee38a Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sat, 2 Apr 2011 09:20:38 +0000 Subject: utils.c (update_pointer_to): Finalize named pointer types. * gcc-interface/utils.c (update_pointer_to): Finalize named pointer types. From-SVN: r171887 --- gcc/ada/gcc-interface/utils.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gcc/ada/gcc-interface/utils.c') diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index bd6badd..dc74374 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -3559,7 +3559,12 @@ update_pointer_to (tree old_type, tree new_type) for (; ptr; ptr = TYPE_NEXT_PTR_TO (ptr)) for (t = TYPE_MAIN_VARIANT (ptr); t; t = TYPE_NEXT_VARIANT (t)) TREE_TYPE (t) = new_type; - TYPE_POINTER_TO (old_type) = NULL_TREE; + + /* If we have adjusted named types, finalize them. This is necessary + since we had forced a DWARF typedef for them in gnat_pushdecl. */ + for (ptr = TYPE_POINTER_TO (old_type); ptr; ptr = TYPE_NEXT_PTR_TO (ptr)) + if (TYPE_NAME (ptr) && TREE_CODE (TYPE_NAME (ptr)) == TYPE_DECL) + rest_of_type_decl_compilation (TYPE_NAME (ptr)); /* Chain REF and its variants at the end. */ new_ref = TYPE_REFERENCE_TO (new_type); @@ -3576,6 +3581,8 @@ update_pointer_to (tree old_type, tree new_type) for (; ref; ref = TYPE_NEXT_REF_TO (ref)) for (t = TYPE_MAIN_VARIANT (ref); t; t = TYPE_NEXT_VARIANT (t)) TREE_TYPE (t) = new_type; + + TYPE_POINTER_TO (old_type) = NULL_TREE; TYPE_REFERENCE_TO (old_type) = NULL_TREE; } -- cgit v1.1