[Ada] Do not instantiate generic bodies outside of main unit in GNATprove
authorYannick Moy <moy@adacore.com>
Thu, 10 Sep 2020 15:25:35 +0000 (17:25 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 26 Oct 2020 08:59:01 +0000 (04:59 -0400)
gcc/ada/

* sem_ch12.adb (Needs_Body_Instantiated): In GNATprove mode, do
not instantiate bodies outside of the main unit.

gcc/ada/sem_ch12.adb

index 06b3bec3b5c5d6442ba585d3e0c12d64b6951bdf..6937153c537f00edbfaf3085c8a4a57d568416e4 100644 (file)
@@ -4070,6 +4070,16 @@ package body Sem_Ch12 is
             return True;
          end if;
 
+         --  In GNATprove mode, never instantiate bodies outside of the main
+         --  unit, as it does not use frontend/backend inlining in the way that
+         --  GNAT does, so does not benefit from such instantiations. On the
+         --  contrary, such instantiations may bring artificial constraints,
+         --  as for example such bodies may require preprocessing.
+
+         if GNATprove_Mode then
+            return False;
+         end if;
+
          --  If not, then again no need to instantiate bodies in generic units
 
          if Is_Generic_Unit (Cunit_Entity (Get_Code_Unit (N))) then