summaryrefslogtreecommitdiff
path: root/gcc/ada/exp_util.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-09 12:46:27 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-09 12:46:27 +0000
commit5e797030173bec0d4f9575a8930c8445e82dae60 (patch)
tree95d004c63d3883e1949ae823996d9c6caeea7d2a /gcc/ada/exp_util.adb
parentfb3e33e4de2f3d0632c30d29fdc417f25360c671 (diff)
downloadgcc-5e797030173bec0d4f9575a8930c8445e82dae60.tar.gz
2010-09-09 Robert Dewar <dewar@adacore.com>
* sem_attr.adb: Minor reformatting. 2010-09-09 Thomas Quinot <quinot@adacore.com> * socket.c (__gnat_socket_ioctl): On Darwin, the req parameter is an unsigned long, not an int. 2010-09-09 Vincent Celier <celier@adacore.com> * make.adb, mlib-prj.adb, prj.adb, prj-nmsc.adb, mlib-tgt.adb, prj-conf.adb, prj-env.adb: Use Display_Name instead of Name whenever we are not checking for equality of path or file names. 2010-09-09 Ed Schonberg <schonberg@adacore.com> * exp_util.adb (Remove_Side_Effects): If the expression is a packed array reference, reset the Analyzed flag so that it is properly expanded when the resulting object declaration is analyzed. 2010-09-09 Vincent Celier <celier@adacore.com> * sinput-p.adb (Source_File_Is_Subunit): Return False if X is No_Source_File. 2010-09-09 Ramon Fernandez <fernandez@adacore.com> * sysdep.c: The wrSbc8548 BSP in MILS doesn't know anything about the VX_SPE_TASK option, so disable it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164084 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_util.adb')
-rw-r--r--gcc/ada/exp_util.adb12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index c4408526912..6c14b02e40f 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -4777,6 +4777,18 @@ package body Exp_Util is
Set_Etype (Def_Id, Exp_Type);
Res := New_Reference_To (Def_Id, Loc);
+ -- If the expression is a packed reference, it must be reanalyzed
+ -- and expanded, depending on context. This is the case for actuals
+ -- where a constraint check may capture the actual before expansion
+ -- of the call is complete.
+
+ if Nkind (Exp) = N_Indexed_Component
+ and then Is_Packed (Etype (Prefix (Exp)))
+ then
+ Set_Analyzed (Exp, False);
+ Set_Analyzed (Prefix (Exp), False);
+ end if;
+
E :=
Make_Object_Declaration (Loc,
Defining_Identifier => Def_Id,