[Ada] Spurious warning on uninitialized entity during code generation
This patch suppresses a spurious warning coming from the GCC backend, on an aggregate that cannot be built in place and for which a temporary variable must be created. If the type of the aggregate is a packed boolean array, the generated code may appear to use an uninitialized value for a component of the array, when in fact the code simply sets a single bit of that array. 2018-10-09 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_aggr.adb (Expand_Array_Aggregate): If it is not possible to build in place an aggregate with component associations, set the Warnings_Off flag on the generated temporary, to prevent spurious warnings from the backend when compiling with the -Wuninitialized gcc flag. gcc/testsuite/ * gnat.dg/warn18.adb: New testcase. From-SVN: r264960
This commit is contained in:
parent
33b43b0d8c
commit
0ffbef9f35
@ -1,3 +1,11 @@
|
||||
2018-10-09 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* exp_aggr.adb (Expand_Array_Aggregate): If it is not possible
|
||||
to build in place an aggregate with component associations, set
|
||||
the Warnings_Off flag on the generated temporary, to prevent
|
||||
spurious warnings from the backend when compiling with the
|
||||
-Wuninitialized gcc flag.
|
||||
|
||||
2018-09-30 Alexandre Oliva <oliva@adacore.com>
|
||||
|
||||
* gcc-interface/lang-specs.h (default_compilers): When given
|
||||
|
@ -6354,6 +6354,7 @@ package body Exp_Aggr is
|
||||
Defining_Identifier => Tmp,
|
||||
Object_Definition => New_Occurrence_Of (Typ, Loc));
|
||||
Set_No_Initialization (Tmp_Decl, True);
|
||||
Set_Warnings_Off (Tmp);
|
||||
|
||||
-- If we are within a loop, the temporary will be pushed on the
|
||||
-- stack at each iteration. If the aggregate is the expression
|
||||
|
@ -1,3 +1,7 @@
|
||||
2018-10-09 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* gnat.dg/warn18.adb: New testcase.
|
||||
|
||||
2018-10-09 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* c-c++-common/asan/pr64820.c: Add line number to scanned
|
||||
|
13
gcc/testsuite/gnat.dg/warn18.adb
Normal file
13
gcc/testsuite/gnat.dg/warn18.adb
Normal file
@ -0,0 +1,13 @@
|
||||
-- { dg-do compile }
|
||||
-- { dg-options "-Wuninitialized" }
|
||||
|
||||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
|
||||
procedure Warn18 is
|
||||
type Set is array (Natural range <>) of Boolean;
|
||||
pragma Pack (Set);
|
||||
|
||||
O : constant Set (0 .. 255) := (28 => True, others => False);
|
||||
begin
|
||||
Put_Line (O (1)'Img);
|
||||
end Warn18;
|
Loading…
Reference in New Issue
Block a user