Small tweak to gnat_to_gnu_param
authorEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 8 May 2020 14:36:53 +0000 (16:36 +0200)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 8 May 2020 15:24:15 +0000 (17:24 +0200)
We mark the type of In parameters in Ada with the const qualifier, but
it is stripped by free_lang_data_in_type so do not do it in LTO mode.

* gcc-interface/decl.c (gnat_to_gnu_param): Do not make a variant
of the type in LTO mode.

gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c

index eacc976e14b0456f414fb6bc3e4c1d15945c2afd..329234f4e7fd805e3bdb3f2a66b63476fab43fe0 100644 (file)
@@ -1,3 +1,8 @@
+2020-05-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_param): Do not make a variant of
+       the type in LTO mode.
+
 2020-05-04  Mikael Pettersson  <mikpelinux@gmail.com>
 
        PR bootstrap/94918
index 80dfc55b601c554ebf15ded5d7a5049153dfbe98..3cd9d5215031faa57d6953b6474b50682ed731b7 100644 (file)
@@ -5327,9 +5327,12 @@ gnat_to_gnu_param (Entity_Id gnat_param, tree gnu_param_type, bool first,
     }
 
   /* If this is a read-only parameter, make a variant of the type that is
-     read-only.  ??? However, if this is a self-referential type, the type
+     read-only, except in LTO mode because free_lang_data_in_type would
+     undo it.  ??? However, if this is a self-referential type, the type
      can be very complex, so skip it for now.  */
-  if (ro_param && !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_param_type)))
+  if (ro_param
+      && !flag_generate_lto
+      && !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_param_type)))
     gnu_param_type = change_qualified_type (gnu_param_type, TYPE_QUAL_CONST);
 
   /* For foreign conventions, pass arrays as pointers to the element type.