aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_warn.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2017-09-06 13:52:28 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2017-09-06 13:52:28 +0200
commit7ec25b2bf17ebafa1ce9a7066e5e52b9eb7e68d2 (patch)
tree54b3897bca2b75985a9cc0bce9004d96c83d1e91 /gcc/ada/sem_warn.adb
parent527b7b195744f1cf687ebca87d748edf7840970e (diff)
downloadgcc-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.adb14
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