aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-04-21 07:00:44 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-04-21 07:00:44 +0000
commitac53d5f2542c1f667448d87b6640531caf3fa234 (patch)
tree40c4fb7f5a4df2ce0fc89746f672c6af1875c17f /gcc/ada/gcc-interface/utils.c
parent59356222e01ceec1b1bdd27e02a27bd8a4f3ec3d (diff)
downloadgcc-ac53d5f2542c1f667448d87b6640531caf3fa234.zip
gcc-ac53d5f2542c1f667448d87b6640531caf3fa234.tar.gz
gcc-ac53d5f2542c1f667448d87b6640531caf3fa234.tar.bz2
utils.c (create_type_decl): Do not pass declarations of dummy fat pointer types to the debug back-end.
* gcc-interface/utils.c (create_type_decl): Do not pass declarations of dummy fat pointer types to the debug back-end. From-SVN: r146467
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r--gcc/ada/gcc-interface/utils.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 55e474c..8802827 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -1244,15 +1244,19 @@ create_type_decl (tree type_name, tree type, struct attrib *attr_list,
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;