diff options
-rw-r--r-- | gcc/ada/sem_ch9.adb | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb index 5dee216..e43e3ae 100644 --- a/gcc/ada/sem_ch9.adb +++ b/gcc/ada/sem_ch9.adb @@ -474,6 +474,12 @@ package body Sem_Ch9 is begin -- Prohibit references to non-constant entities -- outside the protected subprogram scope. + -- + -- References to variables in System.Scalar_Values + -- generated because of pragma Initialize_Scalars are + -- allowed, because once those variables are + -- initialized by the binder-generated code, they + -- behave like constants. if Is_Assignable (Id) and then not @@ -482,6 +488,9 @@ package body Sem_Ch9 is Scope_Within_Or_Same (Scope (Id), Protected_Body_Subprogram (Sub_Id)) + and then not + (Is_RTU (Scope (Id), System_Scalar_Values) + and then not Comes_From_Source (N)) then if Lock_Free_Given then Error_Msg_NE |