aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-03-30 12:00:20 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2022-05-17 08:25:50 +0000
commit33400df641d834ca3fd3f2c964ed92759f128ffa (patch)
tree14e5905daaa447e42c06a1a8ee38a566b3544ff7
parentde0665fc7f195e12ede10abb6a98b10011e70807 (diff)
downloadgcc-33400df641d834ca3fd3f2c964ed92759f128ffa.zip
gcc-33400df641d834ca3fd3f2c964ed92759f128ffa.tar.gz
gcc-33400df641d834ca3fd3f2c964ed92759f128ffa.tar.bz2
[Ada] Restore defensive guard in checks for volatile actuals
When flagging names of volatile objects occurring in actual parameters it is safer to guard against identifiers without entity. This is redundant (because earlier in the resolution of actual parameters we already guard against actuals with Any_Type), but perhaps such identifiers will become allowed in constructs like: Subprogram_Call (Actual => (declare X : Boolean := ... with Annotate (GNATprove, ...))); ^^^^^^^^^ which include an identifier that does not denote any entity. Code cleanup related to handling of volatile components; behaviour is unaffected. gcc/ada/ * sem_res.adb (Flag_Effectively_Volatile_Objects): Restore redundant guard.
-rw-r--r--gcc/ada/sem_res.adb3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 12735da..33f445d 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -3873,7 +3873,8 @@ package body Sem_Res is
-- selector_name in selected_component or as a choice in
-- component_association.
- if Is_Object (Id)
+ if Present (Id)
+ and then Is_Object (Id)
and then Ekind (Id) not in E_Component | E_Discriminant
and then Is_Effectively_Volatile_For_Reading (Id)
and then