[Ada] Avoid spurious errors on dimensionality checking in GNATprove
authorYannick Moy <moy@adacore.com>
Thu, 11 Jul 2019 08:03:24 +0000 (08:03 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Thu, 11 Jul 2019 08:03:24 +0000 (08:03 +0000)
In the special GNATprove mode of the frontend, automatic inlining is
performed, which may lead to spurious errors on dimensionality checking.
Avoid performing this checking on inlined code, which has already been
checked for dimensionality errors.

There is no impact on compilation.

2019-07-11  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Call): Do not perform dimensionality
checking on inlined bodies.

From-SVN: r273405

gcc/ada/ChangeLog
gcc/ada/sem_res.adb

index a5273a8644dd18cf7b2851dd7e221fe317223d12..59f20c489e5f2162f6a6d94326fca1a442dd2bfc 100644 (file)
@@ -1,3 +1,8 @@
+2019-07-11  Yannick Moy  <moy@adacore.com>
+
+       * sem_res.adb (Resolve_Call): Do not perform dimensionality
+       checking on inlined bodies.
+
 2019-07-11  Yannick Moy  <moy@adacore.com>
 
        * debug.adb: Flip meaning of debug switch -gnatdF.
index 730f17304d6f7a34aef7888ffa097085268915e0..4ca74f8543c54d65596679f288e094e0c6d9cab3 100644 (file)
@@ -6949,7 +6949,9 @@ package body Sem_Res is
       --  Check the dimensions of the actuals in the call. For function calls,
       --  propagate the dimensions from the returned type to N.
 
-      Analyze_Dimension_Call (N, Nam);
+      if not In_Inlined_Body then
+         Analyze_Dimension_Call (N, Nam);
+      end if;
 
       --  All done, evaluate call and deal with elaboration issues