aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2012-03-07 20:13:41 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2012-03-07 20:13:41 +0000
commit12fc7dea655f07d4be1e5cbf9ddb570e9966d965 (patch)
tree5e3917cbdedfca5ae8e14134aac16acddcd91ae5
parent50741117df35bb9ef6bd36718f12b2b20607f059 (diff)
downloadgcc-12fc7dea655f07d4be1e5cbf9ddb570e9966d965.zip
gcc-12fc7dea655f07d4be1e5cbf9ddb570e9966d965.tar.gz
gcc-12fc7dea655f07d4be1e5cbf9ddb570e9966d965.tar.bz2
decl.c (gnat_to_gnu_entity): Do not set flags on the DECL node built for a type which has a non-trivial...
* gcc-interface/decl.c (gnat_to_gnu_entity): Do not set flags on the DECL node built for a type which has a non-trivial equivalent type. From-SVN: r185076
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/decl.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 636d6cc..74b72c8 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2012-03-07 Eric Botcazou <ebotcazou@adacore.com>
+ * gcc-interface/decl.c (gnat_to_gnu_entity): Do not set flags on the
+ DECL node built for a type which has a non-trivial equivalent type.
+
+2012-03-07 Eric Botcazou <ebotcazou@adacore.com>
+
* gcc-interface/gigi.h (rest_of_type_decl_compilation): Delete.
* gcc-interface/decl.c (defer_finalize_level): Likewise.
(defer_finalize_list): Likewise.
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 0172789..34183ba 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -5061,9 +5061,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
}
/* If we really have a ..._DECL node, set a couple of flags on it. But we
- cannot do so if we are reusing the ..._DECL node made for an alias or a
- renamed object as the predicates don't apply to it but to GNAT_ENTITY. */
+ cannot do so if we are reusing the ..._DECL node made for an equivalent
+ type or an alias or a renamed object as the predicates don't apply to it
+ but to GNAT_ENTITY. */
if (DECL_P (gnu_decl)
+ && !(is_type && gnat_equiv_type != gnat_entity)
&& !Present (Alias (gnat_entity))
&& !(Present (Renamed_Object (gnat_entity)) && saved))
{