aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2008-08-05 10:17:02 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2008-08-05 10:17:02 +0200
commit864f786316a358dd59e5ba30c128a3e8bb479942 (patch)
tree8c92330f2a89cee6944ab3774f564f21052acea5 /gcc
parentc1db334ed53827be855c6e573bde2af301bcf596 (diff)
downloadgcc-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.adb14
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),