From 865234bf36f1bf8274c3e970f32a8bfb16e96771 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Tue, 9 Oct 2018 15:06:21 +0000 Subject: [PATCH] [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 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/exp_disp.adb | 8 ++++++-- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gnat.dg/warn17.adb | 22 ++++++++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gnat.dg/warn17.adb diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 072e19a..a5476022 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,10 @@ 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. 2018-10-09 Eric Botcazou diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb index 2169b67..79c0897 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 87368c7..8196ce7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 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, gnat.dg/inline14_pkg.ads: New testcase. diff --git a/gcc/testsuite/gnat.dg/warn17.adb b/gcc/testsuite/gnat.dg/warn17.adb new file mode 100644 index 0000000..6d48e54 --- /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; -- 2.7.4