This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Ada] Fix debug info for pointer to unconstrained array
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 21 Apr 2009 09:07:49 +0200
- Subject: [Ada] Fix debug info for pointer to unconstrained array
The compiler was generating debug info for incomplete (dummy in gigi parlance)
types, what it is not supposed to do. A small oversight.
Tested on i586-suse-linux, applied on the mainline.
2009-04-21 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (create_type_decl): Do not pass declarations
of dummy fat pointer types to the debug back-end.
--
Eric Botcazou
Index: gcc-interface/utils.c
===================================================================
--- gcc-interface/utils.c (revision 146452)
+++ gcc-interface/utils.c (working copy)
@@ -1244,15 +1244,19 @@ create_type_decl (tree type_name, tree t
TYPE_STUB_DECL (type) = type_decl;
/* Pass the type declaration to the debug back-end unless this is an
- UNCONSTRAINED_ARRAY_TYPE that the back-end does not support, an
- ENUMERAL_TYPE or RECORD_TYPE which are handled separately, or a
- type for which debugging information was not requested. */
+ UNCONSTRAINED_ARRAY_TYPE that the back-end does not support, or a
+ type for which debugging information was not requested, or else an
+ ENUMERAL_TYPE or RECORD_TYPE (except for fat pointers) which are
+ handled separately. And do not pass dummy types either. */
if (code == UNCONSTRAINED_ARRAY_TYPE || !debug_info_p)
DECL_IGNORED_P (type_decl) = 1;
else if (code != ENUMERAL_TYPE
&& (code != RECORD_TYPE || TYPE_IS_FAT_POINTER_P (type))
&& !((code == POINTER_TYPE || code == REFERENCE_TYPE)
- && TYPE_IS_DUMMY_P (TREE_TYPE (type))))
+ && TYPE_IS_DUMMY_P (TREE_TYPE (type)))
+ && !(code == RECORD_TYPE
+ && TYPE_IS_DUMMY_P
+ (TREE_TYPE (TREE_TYPE (TYPE_FIELDS (type))))))
rest_of_type_decl_compilation (type_decl);
return type_decl;