aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/decl.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2017-09-07 15:33:29 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2017-09-07 15:33:29 +0000
commitfac519741f39f1741dbf5c88dfc2a8b8e90d0007 (patch)
tree5b406f0517e9f528b557ea48e3f11ff7e6c5d398 /gcc/ada/gcc-interface/decl.c
parent9cb22eea2143fb4e15bc7fc7950758041e4e35ac (diff)
downloadgcc-fac519741f39f1741dbf5c88dfc2a8b8e90d0007.zip
gcc-fac519741f39f1741dbf5c88dfc2a8b8e90d0007.tar.gz
gcc-fac519741f39f1741dbf5c88dfc2a8b8e90d0007.tar.bz2
re PR ada/82127 (gnat.dg/specs/constructor.ads FAILs)
PR ada/82127 * gcc-interface/decl.c (copy_and_substitute_in_layout): Put the fields in order of increasing position in more cases. From-SVN: r251846
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r--gcc/ada/gcc-interface/decl.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 8514d9a..baa9259 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -9530,12 +9530,10 @@ copy_and_substitute_in_layout (Entity_Id gnat_new_type,
save_gnu_tree (gnat_field, gnu_field, false);
}
- /* If there is a variant list, a selected variant and the fields all have a
+ /* If there is no variant list or a selected variant and the fields all have
constant position, put them in order of increasing position to match that
- of constant CONSTRUCTORs. Likewise if there is no variant list but a REP
- part, since the latter has been flattened in the process. */
- if ((gnu_variant_list.exists () ? selected_variant : gnu_rep_part != NULL)
- && all_constant_pos)
+ of constant CONSTRUCTORs. */
+ if ((!gnu_variant_list.exists () || selected_variant) && all_constant_pos)
{
const int len = list_length (gnu_field_list);
tree *field_arr = XALLOCAVEC (tree, len), t = gnu_field_list;