diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2007-12-05 09:25:38 +0000 |
---|---|---|
committer | Samuel Tardieu <sam@gcc.gnu.org> | 2007-12-05 09:25:38 +0000 |
commit | 07c7262ec307bd36b24943cc6014d0c0f060089e (patch) | |
tree | d8aede381d3ef7cb9560140d4e2558221b1ddcc4 /gcc | |
parent | c3220d4c93a0773d72acb404845cadc19dda4233 (diff) | |
download | gcc-07c7262ec307bd36b24943cc6014d0c0f060089e.zip gcc-07c7262ec307bd36b24943cc6014d0c0f060089e.tar.gz gcc-07c7262ec307bd36b24943cc6014d0c0f060089e.tar.bz2 |
re PR ada/21489 (Wrong code generated for legal program, RM 6.4.1(13), 9.5.1(3), 9.5.3(8))
gcc/ada/
PR ada/21489
* exp_ch9.adb (Build_Simple_Entry_Call): Initialize OUT access type
parameters of an entry call.
gcc/testsuite/
PR ada/21489
* gnat.dg/rm_6_4_1_13.adb: New test.
From-SVN: r130617
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/exp_ch9.adb | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 |
3 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 54f3d5c..0fcdaad 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2007-12-05 Samuel Tardieu <sam@rfc1149.net> + + PR ada/21489 + * exp_ch9.adb (Build_Simple_Entry_Call): Initialize OUT access type + parameters of an entry call. + 2007-12-03 Robert Dewar <dewar@adacore.com> Samuel Tardieu <sam@rfc1149.net> diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index 87fbc12..78b1155 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -3024,8 +3024,12 @@ package body Exp_Ch9 is -- We have to make an assignment statement separate for the -- case of limited type. We cannot assign it unless the -- Assignment_OK flag is set first. + -- An out formal of an access type must also be initialized + -- from the actual, as stated in RM 6.4.1 (13). - if Ekind (Formal) /= E_Out_Parameter then + if Ekind (Formal) /= E_Out_Parameter + or else Is_Access_Type (Etype (Formal)) + then N_Var := New_Reference_To (Defining_Identifier (N_Node), Loc); Set_Assignment_OK (N_Var); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f903d83..a58e365 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-12-05 Samuel Tardieu <sam@rfc1149.net> + + PR ada/21489 + * gnat.dg/rm_6_4_1_13.adb: New test. + 2007-12-04 Jakub Jelinek <jakub@redhat.com> PR middle-end/34134 |