diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2014-11-20 10:56:01 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2014-11-20 11:56:01 +0100 |
commit | 4a0a5d5fc14e61fb73c1440a5a5bf2bee0b7ced8 (patch) | |
tree | 2c28691e5427d101ea955d85c361e573716d9394 | |
parent | 58b81ab059d8963e7b867bf67424714d88f1da94 (diff) | |
download | gcc-4a0a5d5fc14e61fb73c1440a5a5bf2bee0b7ced8.zip gcc-4a0a5d5fc14e61fb73c1440a5a5bf2bee0b7ced8.tar.gz gcc-4a0a5d5fc14e61fb73c1440a5a5bf2bee0b7ced8.tar.bz2 |
sem_ch3.adb (Analyze_Object_Declaration): Swap a couple of tests in a condition so Following_Address_Clause is invoked...
2014-11-20 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch3.adb (Analyze_Object_Declaration): Swap a couple of
tests in a condition so Following_Address_Clause is invoked
only if need be.
* exp_util.ads (Following_Address_Clause): Add small note.
From-SVN: r217834
-rw-r--r-- | gcc/ada/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ada/exp_util.ads | 4 | ||||
-rw-r--r-- | gcc/ada/sem_ch3.adb | 7 |
3 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e12e368..d2746e1 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2014-11-20 Eric Botcazou <ebotcazou@adacore.com> + + * sem_ch3.adb (Analyze_Object_Declaration): Swap a couple of + tests in a condition so Following_Address_Clause is invoked + only if need be. + * exp_util.ads (Following_Address_Clause): Add small note. + 2014-11-20 Pascal Obry <obry@adacore.com> * adaint.c (remove_handle): New local routine without a lock. diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads index c0edb4b..671b13a 100644 --- a/gcc/ada/exp_util.ads +++ b/gcc/ada/exp_util.ads @@ -507,6 +507,10 @@ package Exp_Util is -- current declarative part to look for an address clause for the object -- being declared, and returns the clause if one is found, returns -- Empty otherwise. + -- + -- Note: this function can be costly and must be invoked with special care. + -- Possibly we could introduce a flag at parse time indicating the presence + -- of an address clause to speed this up??? procedure Force_Evaluation (Exp : Node_Id; diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index db348d7..28b4471 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -3648,8 +3648,13 @@ package body Sem_Ch3 is if Comes_From_Source (N) and then Expander_Active - and then Present (Following_Address_Clause (N)) and then Nkind (E) = N_Aggregate + + -- Note the importance of doing this the following test after the + -- N_Aggregate test to avoid inefficiencies from too many calls to + -- the function Following_Address_Clause which can be expensive. + + and then Present (Following_Address_Clause (N)) then Set_Etype (E, T); |