diff options
| author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-21 07:00:44 +0000 |
|---|---|---|
| committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-21 07:00:44 +0000 |
| commit | e7b92021fb5f38fc0dfdea14a41bcefe44b74768 (patch) | |
| tree | 40c4fb7f5a4df2ce0fc89746f672c6af1875c17f | |
| parent | 4b4ce97c31943051e069ad9d76f567925d4538c5 (diff) | |
| download | ppe42-gcc-e7b92021fb5f38fc0dfdea14a41bcefe44b74768.tar.gz ppe42-gcc-e7b92021fb5f38fc0dfdea14a41bcefe44b74768.zip | |
* gcc-interface/utils.c (create_type_decl): Do not pass declarations
of dummy fat pointer types to the debug back-end.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146467 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/ada/gcc-interface/utils.c | 12 |
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index d94432f80b1..0e48f7848b1 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +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. + 2009-04-20 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/decl.c (gnat_to_gnu_entity): Rewrite Esize calculation. diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index 55e474c9829..8802827cf09 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; |

