From: Piotr Trojanek Date: Wed, 10 Mar 2021 09:38:57 +0000 (+0100) Subject: [Ada] Fix handling of generic types in check for overlapping actuals X-Git-Tag: basepoints/gcc-13~6729 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=679124db5bc81cca40d33543916cd82981601f06;p=thirdparty%2Fgcc.git [Ada] Fix handling of generic types in check for overlapping actuals gcc/ada/ * sem_warn.adb (Warn_On_Overlapping_Actuals): Ignore formal of generic types, but keep examining other parameters. --- diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index 1e62d478022b..6db6d2ccfbed 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -3741,17 +3741,20 @@ package body Sem_Warn is Form1 := First_Formal (Subp); Act1 := First_Actual (N); while Present (Form1) and then Present (Act1) loop - if Is_Generic_Type (Etype (Act1)) then - return; - end if; Form2 := Next_Formal (Form1); Act2 := Next_Actual (Act1); while Present (Form2) and then Present (Act2) loop - if Refer_Same_Object (Act1, Act2) then - if Is_Generic_Type (Etype (Act2)) then - return; - end if; + + -- Ignore formals of generic types; they will be examined when + -- instantiated. + + if Is_Generic_Type (Etype (Form1)) + or else Is_Generic_Type (Etype (Form2)) + then + null; + + elsif Refer_Same_Object (Act1, Act2) then -- Case 1: two writable elementary parameters that overlap