aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/trans.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2021-01-19 10:43:15 +0100
committerEric Botcazou <ebotcazou@adacore.com>2021-01-19 10:44:54 +0100
commit665e80ca5ec84ccf77d5e18d7ca802d38d5e270d (patch)
tree1b16621065583df14c4160942a05462015c904ba /gcc/ada/gcc-interface/trans.c
parent9ee33d7c33fa757d7011addfa6bdd0ccb6212181 (diff)
downloadgcc-665e80ca5ec84ccf77d5e18d7ca802d38d5e270d.zip
gcc-665e80ca5ec84ccf77d5e18d7ca802d38d5e270d.tar.gz
gcc-665e80ca5ec84ccf77d5e18d7ca802d38d5e270d.tar.bz2
Fix PR ada/98740
It's a long-standing GENERIC tree sharing issue. gcc/ada/ChangeLog: PR ada/98740 * gcc-interface/trans.c (add_decl_expr): Always mark TYPE_ADA_SIZE.
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r--gcc/ada/gcc-interface/trans.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 4ab26d3..6402c73 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -8479,15 +8479,16 @@ add_decl_expr (tree gnu_decl, Node_Id gnat_node)
MARK_VISITED (DECL_SIZE_UNIT (gnu_decl));
MARK_VISITED (DECL_INITIAL (gnu_decl));
}
- /* In any case, we have to deal with our own TYPE_ADA_SIZE field. */
- else if (TREE_CODE (gnu_decl) == TYPE_DECL
- && RECORD_OR_UNION_TYPE_P (type)
- && !TYPE_FAT_POINTER_P (type))
- MARK_VISITED (TYPE_ADA_SIZE (type));
}
else
add_stmt_with_node (gnu_stmt, gnat_node);
+ /* Mark our TYPE_ADA_SIZE field now since it will not be gimplified. */
+ if (TREE_CODE (gnu_decl) == TYPE_DECL
+ && RECORD_OR_UNION_TYPE_P (type)
+ && !TYPE_FAT_POINTER_P (type))
+ MARK_VISITED (TYPE_ADA_SIZE (type));
+
/* If this is a variable and an initializer is attached to it, it must be
valid for the context. Similar to init_const in create_var_decl. */
if (TREE_CODE (gnu_decl) == VAR_DECL