aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_res.adb34
1 files changed, 20 insertions, 14 deletions
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index d2819e4..fc89a31 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -3748,24 +3748,30 @@ package body Sem_Res is
Id : Entity_Id;
begin
- -- Do not consider nested function calls because they have already
- -- been processed during their own resolution.
+ case Nkind (N) is
+ -- Do not consider nested function calls because they have
+ -- already been processed during their own resolution.
- if Nkind (N) = N_Function_Call then
- return Skip;
+ when N_Function_Call =>
+ return Skip;
- elsif Is_Entity_Name (N) and then Present (Entity (N)) then
- Id := Entity (N);
+ when N_Identifier | N_Expanded_Name =>
+ Id := Entity (N);
+
+ if Present (Id)
+ and then Is_Object (Id)
+ and then Is_Effectively_Volatile_For_Reading (Id)
+ then
+ Error_Msg_N
+ ("volatile object cannot appear in this context"
+ & " (SPARK RM 7.1.3(10))", N);
+ end if;
- if Is_Object (Id)
- and then Is_Effectively_Volatile_For_Reading (Id)
- then
- Error_Msg_N
- ("volatile object cannot appear in this context (SPARK "
- & "RM 7.1.3(10))", N);
return Skip;
- end if;
- end if;
+
+ when others =>
+ null;
+ end case;
return OK;
end Flag_Object;