diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-09-06 13:52:28 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-09-06 13:52:28 +0200 |
commit | 7ec25b2bf17ebafa1ce9a7066e5e52b9eb7e68d2 (patch) | |
tree | 54b3897bca2b75985a9cc0bce9004d96c83d1e91 /gcc/ada/sem_warn.adb | |
parent | 527b7b195744f1cf687ebca87d748edf7840970e (diff) | |
download | gcc-7ec25b2bf17ebafa1ce9a7066e5e52b9eb7e68d2.zip gcc-7ec25b2bf17ebafa1ce9a7066e5e52b9eb7e68d2.tar.gz gcc-7ec25b2bf17ebafa1ce9a7066e5e52b9eb7e68d2.tar.bz2 |
[multiple changes]
2017-09-06 Hristian Kirtchev <kirtchev@adacore.com>
* a-comlin.adb, exp_aggr.adb, exp_ch6.adb, frontend.adb, gnatbind.adb,
sem_ch3.adb, sem_util.adb: Minor reformatting.
2017-09-06 Yannick Moy <moy@adacore.com>
* freeze.adb (Check_Inherited_Conditions): Rewriting
of inherited preconditions and postconditions should only occur
in GNATprove mode, that is, when GNATprove_Mode is True, not to
be confused with SPARK_Mode being On.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_warn.adb (Check_References): Take into
account possibility of attribute reference as original node.
2017-09-06 Yannick Moy <moy@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference): Protect against invalid
use of attribute.
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* inline.adb (Split_Unconstrained_Function): Also set Is_Inlined
on the procedure created to encapsulate the body.
* sem_ch7.adb: Add with clause for GNAT.HTable.
(Entity_Table_Size): New constant.
(Entity_Hash): New function.
(Subprogram_Table): New instantiation of GNAT.Htable.Simple_HTable.
(Is_Subprogram_Ref): Rename into...
(Scan_Subprogram_Ref): ...this. Record references to subprograms in
the table instead of bailing out on them. Scan the value of constants
if it is not known at compile time.
(Contains_Subprograms_Refs): Rename into...
(Scan_Subprogram_Refs): ...this.
(Has_Referencer): Scan the body of all inlined subprograms. Reset the
Is_Public flag on subprograms if they are not actually referenced.
(Hide_Public_Entities): Beef up comment on the algorithm.
Reset the table of subprograms on entry.
From-SVN: r251781
Diffstat (limited to 'gcc/ada/sem_warn.adb')
-rw-r--r-- | gcc/ada/sem_warn.adb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index fd31316..ecc47e4 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -1382,16 +1382,22 @@ package body Sem_Warn is -- deal with case where original unset reference has been -- rewritten during expansion. - -- In some cases, the original node may be a type conversion - -- or qualification, and in this case we want the object - -- entity inside. + -- In some cases, the original node may be a type + -- conversion, a qualification or an attribute reference and + -- in this case we want the object entity inside. Same for + -- an expression with actions. UR := Original_Node (UR); while Nkind (UR) = N_Type_Conversion or else Nkind (UR) = N_Qualified_Expression or else Nkind (UR) = N_Expression_With_Actions + or else Nkind (UR) = N_Attribute_Reference loop - UR := Expression (UR); + if Nkind (UR) = N_Attribute_Reference then + UR := Prefix (UR); + else + UR := Expression (UR); + end if; end loop; -- Don't issue warning if appearing inside Initial_Condition |