diff mbox series

[Ada] Small tweak to gnat_to_gnu_param

Message ID 46737659.kCPisLmLJ1@polaris
State New
Headers show
Series [Ada] Small tweak to gnat_to_gnu_param | expand

Commit Message

Eric Botcazou May 8, 2020, 2:46 p.m. UTC
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.

Tested on x86-64/Linux, applied on the mainline.


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.
diff mbox series

Patch

diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 80dfc55b601..3cd9d521503 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -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.