From: Eric Botcazou Date: Tue, 9 Oct 2018 15:06:21 +0000 (+0000) Subject: [Ada] Fix strange warning when using Ada.Iterator_Interface X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=865234bf36f1bf8274c3e970f32a8bfb16e96771;p=gcc.git [Ada] Fix strange warning when using Ada.Iterator_Interface The back-end was recently changed to issue more -Wuninitialized warnings on Out parameters and this has caught a case related to Ada.Iterator_Interface.: This patchlet simply kills this uninteresting warning. 2018-10-09 Eric Botcazou gcc/ada/ * exp_disp.adb (Make_Disp_Asynchronous_Select_Spec): Set Warnings_Off on the B out parameter. gcc/testsuite/ * gnat.dg/warn17.adb: New testcase. From-SVN: r264977 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 072e19a8b11..a547602240d 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2018-10-09 Eric Botcazou + + * exp_disp.adb (Make_Disp_Asynchronous_Select_Spec): Set + Warnings_Off on the B out parameter. + 2018-10-09 Eric Botcazou * einfo.ads: Small comment fix. diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb index 2169b67419a..79c08978071 100644 --- a/gcc/ada/exp_disp.adb +++ b/gcc/ada/exp_disp.adb @@ -2487,9 +2487,10 @@ package body Exp_Disp is (Typ : Entity_Id) return Node_Id is Loc : constant Source_Ptr := Sloc (Typ); - Def_Id : constant Node_Id := + Def_Id : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uDisp_Asynchronous_Select); + B_Id : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uB); Params : constant List_Id := New_List; begin @@ -2501,6 +2502,9 @@ package body Exp_Disp is -- B : out Dummy_Communication_Block; -- Communication block dummy -- F : out Boolean; -- Status flag + -- The B parameter may be left uninitialized + Set_Warnings_Off (B_Id); + Append_List_To (Params, New_List ( Make_Parameter_Specification (Loc, @@ -2518,7 +2522,7 @@ package body Exp_Disp is Parameter_Type => New_Occurrence_Of (RTE (RE_Address), Loc)), Make_Parameter_Specification (Loc, - Defining_Identifier => Make_Defining_Identifier (Loc, Name_uB), + Defining_Identifier => B_Id, Parameter_Type => New_Occurrence_Of (RTE (RE_Dummy_Communication_Block), Loc), Out_Present => True), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 87368c7301d..8196ce74c5c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-10-09 Eric Botcazou + + * gnat.dg/warn17.adb: New testcase. + 2018-10-09 Eric Botcazou * gnat.dg/inline14.adb, gnat.dg/inline14_pkg.adb, diff --git a/gcc/testsuite/gnat.dg/warn17.adb b/gcc/testsuite/gnat.dg/warn17.adb new file mode 100644 index 00000000000..6d48e5416a5 --- /dev/null +++ b/gcc/testsuite/gnat.dg/warn17.adb @@ -0,0 +1,22 @@ +-- { dg-do compile } +-- { dg-options "-Wall" } + +with Ada.Iterator_Interfaces; + +procedure Warn17 is + + type Cursor is null record; + + function Has_Element (Position : Cursor) return Boolean; + + function Has_Element (Position : Cursor) return Boolean is (True); + + package My_Iterator is + new Ada.Iterator_Interfaces (Cursor, Has_Element); + + type Iterator is abstract new My_Iterator.Forward_Iterator with null record; + + pragma Unreferenced (Iterator); +begin + null; +end Warn17;