Overlapping actuals of elementary types are illegal since Ada 2012; all
other overlapping actuals are now reported as warnings regardless of the
Ada version (because they are equally suspicious).

We even had a comment:

  "Overlap is only illegal in Ada 2012 in the case of elementary
  types (passed by copy). For other types we always have a warning in
  all versions."

but it was not really implemented until now.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

        * sem_warn.adb (Warn_On_Overlapping_Actuals): Cleanup conditions
        related to Ada_Version.
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -3725,11 +3725,6 @@ package body Sem_Warn is
    --  Start of processing for Warn_On_Overlapping_Actuals
 
    begin
-
-      if Ada_Version < Ada_2012 and then not Warn_On_Overlap then
-         return;
-      end if;
-
       --  Exclude calls rewritten as enumeration literals
 
       if Nkind (N) not in N_Subprogram_Call | N_Entry_Call_Statement then
@@ -3823,14 +3818,13 @@ package body Sem_Warn is
                   then
                      null;
 
-                  --  Under Ada 2012 we only report warnings on overlapping
-                  --  arrays and record types if switch is set.
+                  --  We only report warnings on overlapping arrays and record
+                  --  types if switch is set.
 
-                  elsif Ada_Version >= Ada_2012
+                  elsif not Warn_On_Overlap
                     and then not (Is_Elementary_Type (Etype (Form1))
                                     and then
                                   Is_Elementary_Type (Etype (Form2)))
-                    and then not Warn_On_Overlap
                   then
                      null;
 
@@ -3844,7 +3838,7 @@ package body Sem_Warn is
 
                        Ada_Version < Ada_2012
 
-                       --  Overlap is only illegal in Ada 2012 in the case of
+                       --  Overlap is only illegal since Ada 2012 and only for
                        --  elementary types (passed by copy). For other types
                        --  we always have a warning in all versions. This is
                        --  clarified by AI12-0216.


Reply via email to