diff options
author | Ed Schonberg <schonberg@adacore.com> | 2008-08-05 10:17:02 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2008-08-05 10:17:02 +0200 |
commit | 864f786316a358dd59e5ba30c128a3e8bb479942 (patch) | |
tree | 8c92330f2a89cee6944ab3774f564f21052acea5 /gcc | |
parent | c1db334ed53827be855c6e573bde2af301bcf596 (diff) | |
download | gcc-864f786316a358dd59e5ba30c128a3e8bb479942.zip gcc-864f786316a358dd59e5ba30c128a3e8bb479942.tar.gz gcc-864f786316a358dd59e5ba30c128a3e8bb479942.tar.bz2 |
exp_strm.adb (Build_Record_Or_Elementary_Input_Function): For access discriminants...
2008-08-05 Ed Schonberg <schonberg@adacore.com>
* exp_strm.adb (Build_Record_Or_Elementary_Input_Function): For access
discriminants, indicate that the corresponding object declaration has
no initialization, to prevent spurious warnings when the access type is
null-excluding.
From-SVN: r138671
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/exp_strm.adb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ada/exp_strm.adb b/gcc/ada/exp_strm.adb index 2ffa26a..9c4befb 100644 --- a/gcc/ada/exp_strm.adb +++ b/gcc/ada/exp_strm.adb @@ -1113,12 +1113,22 @@ package body Exp_Strm is while Present (Discr) loop Cn := New_External_Name ('C', J); - Append_To (Decls, + Decl := Make_Object_Declaration (Loc, Defining_Identifier => Make_Defining_Identifier (Loc, Cn), Object_Definition => - New_Occurrence_Of (Etype (Discr), Loc))); + New_Occurrence_Of (Etype (Discr), Loc)); + + -- If the this is an access discriminant, do not perform default + -- initialization. The discriminant is about to get its value + -- from Read, and if the type is null excluding we do not want + -- spurious warnings on an initial null. + + if Is_Access_Type (Etype (Discr)) then + Set_No_Initialization (Decl); + end if; + Append_To (Decls, Decl); Append_To (Decls, Make_Attribute_Reference (Loc, Prefix => New_Occurrence_Of (Etype (Discr), Loc), |