diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2017-09-07 15:33:29 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2017-09-07 15:33:29 +0000 |
commit | fac519741f39f1741dbf5c88dfc2a8b8e90d0007 (patch) | |
tree | 5b406f0517e9f528b557ea48e3f11ff7e6c5d398 /gcc/ada/gcc-interface/decl.c | |
parent | 9cb22eea2143fb4e15bc7fc7950758041e4e35ac (diff) | |
download | gcc-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.c | 8 |
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; |