diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2019-02-08 11:37:40 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2019-02-08 11:37:40 +0000 |
commit | 14cc7b26a9c3596bbe0d13fafa1917d89aa6f7e4 (patch) | |
tree | d0eab903042d61eeb3fc2bfedd12d5463929e88e /gcc/ada/gcc-interface/trans.c | |
parent | 694b3bb3c33643ce697019db6d6eeeede4def168 (diff) | |
download | gcc-14cc7b26a9c3596bbe0d13fafa1917d89aa6f7e4.zip gcc-14cc7b26a9c3596bbe0d13fafa1917d89aa6f7e4.tar.gz gcc-14cc7b26a9c3596bbe0d13fafa1917d89aa6f7e4.tar.bz2 |
trans.c (gnat_to_gnu): Minor tweak.
* gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
* gcc-interface/utils.c (convert): Do not pad when doing an unchecked
conversion here. Use TREE_CONSTANT throughout the function.
(unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
destination is a more aligned array type or a larger aggregate type,
but not between original and packable versions of a type.
From-SVN: r268679
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 71b626b..155cb4b 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -7230,13 +7230,10 @@ gnat_to_gnu (Node_Id gnat_node) { tree gnu_aggr_type; - /* ??? It is wrong to evaluate the type now, but there doesn't - seem to be any other practical way of doing it. */ - + /* Check that this aggregate has not slipped through the cracks. */ gcc_assert (!Expansion_Delayed (gnat_node)); - gnu_aggr_type = gnu_result_type - = get_unpadded_type (Etype (gnat_node)); + gnu_result_type = get_unpadded_type (Etype (gnat_node)); if (TREE_CODE (gnu_result_type) == RECORD_TYPE && TYPE_CONTAINS_TEMPLATE_P (gnu_result_type)) @@ -7244,6 +7241,8 @@ gnat_to_gnu (Node_Id gnat_node) = TREE_TYPE (DECL_CHAIN (TYPE_FIELDS (gnu_result_type))); else if (TREE_CODE (gnu_result_type) == VECTOR_TYPE) gnu_aggr_type = TYPE_REPRESENTATIVE_ARRAY (gnu_result_type); + else + gnu_aggr_type = gnu_result_type; if (Null_Record_Present (gnat_node)) gnu_result = gnat_build_constructor (gnu_aggr_type, NULL); |