aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/layout.adb
diff options
context:
space:
mode:
authorGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-22 17:43:43 -0300
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-22 17:43:43 -0300
commita926878ddbd5a98b272c22171ce58663fc04c3e0 (patch)
tree86af256e5d9a9c06263c00adc90e5fe348008c43 /gcc/ada/layout.adb
parent542730f087133690b47e036dfd43eb0db8a650ce (diff)
parent07cbaed8ba7d1b6e4ab3a9f44175502a4e1ecdb1 (diff)
downloadgcc-devel/autopar_devel.zip
gcc-devel/autopar_devel.tar.gz
gcc-devel/autopar_devel.tar.bz2
Merge branch 'autopar_rebase2' into autopar_develdevel/autopar_devel
Quickly commit changes in the rebase branch.
Diffstat (limited to 'gcc/ada/layout.adb')
-rw-r--r--gcc/ada/layout.adb18
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ada/layout.adb b/gcc/ada/layout.adb
index ce2fe30..73812f6 100644
--- a/gcc/ada/layout.adb
+++ b/gcc/ada/layout.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2019, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2020, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -467,6 +467,22 @@ package body Layout is
end if;
end;
end if;
+
+ -- For non-packed arrays set the alignment of the array to the
+ -- alignment of the component type if it is unknown. Skip this
+ -- in atomic/VFA case since a larger alignment may be needed.
+
+ if Is_Array_Type (E)
+ and then not Is_Packed (E)
+ and then Unknown_Alignment (E)
+ and then Known_Alignment (Component_Type (E))
+ and then Known_Static_Component_Size (E)
+ and then Known_Static_Esize (Component_Type (E))
+ and then Component_Size (E) = Esize (Component_Type (E))
+ and then not Is_Atomic_Or_VFA (E)
+ then
+ Set_Alignment (E, Alignment (Component_Type (E)));
+ end if;
end if;
-- Even if the backend performs the layout, we still do a little in