From 6cc430c19a9c94835d31f171065f32f5b1863183 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 1 Oct 2018 09:39:28 +0000 Subject: [PATCH] c-ada-spec.c (get_underlying_decl): Get to the main type variant. * c-ada-spec.c (get_underlying_decl): Get to the main type variant. (dump_ada_node): Add const keyword. From-SVN: r264738 --- gcc/c-family/ChangeLog | 5 +++++ gcc/c-family/c-ada-spec.c | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 3b3b9872475..015ca8a2fb9 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2018-10-01 Eric Botcazou + + * c-ada-spec.c (get_underlying_decl): Get to the main type variant. + (dump_ada_node): Add const keyword. + 2018-09-25 Martin Liska * c-common.c (c_common_truthvalue_conversion): diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index eae741ed6b5..2e1b91e30c3 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -1020,13 +1020,18 @@ get_underlying_decl (tree type) if (DECL_P (type)) return type; - /* type is a typedef. */ - if (TYPE_P (type) && TYPE_NAME (type) && DECL_P (TYPE_NAME (type))) - return TYPE_NAME (type); + if (TYPE_P (type)) + { + type = TYPE_MAIN_VARIANT (type); + + /* type is a typedef. */ + if (TYPE_NAME (type) && DECL_P (TYPE_NAME (type))) + return TYPE_NAME (type); - /* TYPE_STUB_DECL has been set for type. */ - if (TYPE_P (type) && TYPE_STUB_DECL (type)) - return TYPE_STUB_DECL (type); + /* TYPE_STUB_DECL has been set for type. */ + if (TYPE_STUB_DECL (type)) + return TYPE_STUB_DECL (type); + } return NULL_TREE; } @@ -2143,8 +2148,8 @@ dump_ada_node (pretty_printer *buffer, tree node, tree type, int spc, } else { + const unsigned int quals = TYPE_QUALS (TREE_TYPE (node)); bool is_access = false; - unsigned int quals = TYPE_QUALS (TREE_TYPE (node)); if (VOID_TYPE_P (TREE_TYPE (node))) { -- 2.30.2