When running check-gnat with -flto you'll stumble upon a load of +===========================GNAT BUG DETECTED==============================+ | 7.0.0 20161013 (experimental) [trunk revision 221942] (x86_64-pc-linux-gnu) GCC error:| | in self_referential_size, at stor-layout.c:187 | which is /* We shouldn't have true variables here. */ gcc_assert (TREE_READONLY (ref)); that's likely because of 2016-07-11 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/trans.c (add_decl_expr): Minor tweak. * gcc-interface/utils.c (create_var_decl): For an external variable, also clear TREE_READONLY in LTO mode if the initializer is not a valid constant and set DECL_READONLY_ONCE_ELAB instead. possibly all flag_generate_lto uses in ada/gcc-frontend are "bogus".
Egad. Will revert the create_var_decl hunk, thanks for the heads up.
Author: ebotcazou Date: Fri Oct 14 10:28:27 2016 New Revision: 241154 URL: https://gcc.gnu.org/viewcvs?rev=241154&root=gcc&view=rev Log: PR ada/77968 * gcc-interface/utils.c (create_var_decl): Do not clear TREE_READONLY in LTO mode for an external variable. (can_materialize_object_renaming_p): Move up. Added: trunk/gcc/testsuite/gnat.dg/lto18.adb trunk/gcc/testsuite/gnat.dg/lto18.ads trunk/gcc/testsuite/gnat.dg/lto18_pkg.ads trunk/gcc/testsuite/gnat.dg/lto19.adb trunk/gcc/testsuite/gnat.dg/lto19_pkg1.adb trunk/gcc/testsuite/gnat.dg/lto19_pkg1.ads trunk/gcc/testsuite/gnat.dg/lto19_pkg2.adb trunk/gcc/testsuite/gnat.dg/lto19_pkg2.ads trunk/gcc/testsuite/gnat.dg/lto20.adb trunk/gcc/testsuite/gnat.dg/lto20_pkg.adb trunk/gcc/testsuite/gnat.dg/lto20_pkg.ads Modified: trunk/gcc/ada/ChangeLog trunk/gcc/ada/gcc-interface/utils.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gnat.dg/lto15.adb trunk/gcc/testsuite/gnat.dg/lto16.adb trunk/gcc/testsuite/gnat.dg/lto17.adb
Thanks for the heads-up.