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.