[Ada] Simplify iteration over formal parameters for aliasing error
authorPiotr Trojanek <trojanek@adacore.com>
Fri, 13 Mar 2020 14:43:54 +0000 (15:43 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 11 Jun 2020 09:53:34 +0000 (05:53 -0400)
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_warn.adb (Warn_On_Overlapping_Actuals): Add label to the
outer loop and use it in the exit statement.

gcc/ada/sem_warn.adb

index a3195a19369de07d064b4194c6daba78a933e1c5..ca019ef9d318ab327863a1e49e3ffa4f6aeecf23 100644 (file)
@@ -1835,7 +1835,7 @@ package body Sem_Warn is
          elsif Nkind (Pref) = N_Explicit_Dereference then
             return True;
 
-            --  If prefix is itself a component reference or slice check prefix
+         --  If prefix is itself a component reference or slice check prefix
 
          elsif Nkind (Pref) = N_Slice
            or else Nkind (Pref) = N_Indexed_Component
@@ -3707,7 +3707,7 @@ package body Sem_Warn is
 
       Warn_Only := True;
       Form1 := First_Formal (Subp);
-      while Present (Form1) loop
+      Set_Warn_Only : while Present (Form1) loop
          Form2 := Next_Formal (Form1);
          while Present (Form2) loop
             if Is_Elementary_Type (Etype (Form1))
@@ -3716,14 +3716,14 @@ package body Sem_Warn is
               and then Ekind (Form2) /= E_In_Parameter
             then
                Warn_Only := False;
-               exit;
+               exit Set_Warn_Only;
             end if;
 
             Next_Formal (Form2);
          end loop;
 
          Next_Formal (Form1);
-      end loop;
+      end loop Set_Warn_Only;
 
       --  Exclude calls rewritten as enumeration literals