diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-09 12:46:27 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-09 12:46:27 +0000 |
commit | 5e797030173bec0d4f9575a8930c8445e82dae60 (patch) | |
tree | 95d004c63d3883e1949ae823996d9c6caeea7d2a /gcc/ada/exp_util.adb | |
parent | fb3e33e4de2f3d0632c30d29fdc417f25360c671 (diff) | |
download | gcc-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.adb | 12 |
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, |