From: Steve Baird Date: Sat, 8 Oct 2022 00:20:31 +0000 (-0700) Subject: ada: Static intrinsic functions are a core language extension. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7e1fe87899932e2c265fd0a13b2ac552b0865e0f;p=platform%2Fupstream%2Fgcc.git ada: Static intrinsic functions are a core language extension. GNAT-defined Ada extensions are divided into two categories: those that are enabled by either -gnatX or -gnatX0 and those which require -gnatX0. Move static intrinsic functions from the second category into the first. gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: Add the standard '... "On" enables this extension.' sentence to the description of static intrinsic functions. * sem_ch13.adb (Analyze_Aspect_Spec): In the call to Error_Msg_GNAT_Extension for a Static aspect specification for an intrinsic function, specify Is_Core_Extension => True. * sem_eval.adb (Eval_Intrinsic_Call): Test Core_Extensions_Allowed instead of testing All_Extensions_Allowed. * gnat_rm.texi: Regenerate. --- diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst index 100d79e..7e5fb70 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst @@ -2200,6 +2200,8 @@ are identified below. functions and the compiler will evaluate some of these intrinsic statically, in particular the ``Shift_Left`` and ``Shift_Right`` intrinsics. + An Extensions_Allowed pragma argument of "On" enables this extension. + * ``[]`` aggregates This new aggregate syntax for arrays and containers is provided under -gnatX diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 6fcaca7..fbd8bb8 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -3639,6 +3639,8 @@ The Ada 202x @code{Static} aspect can be specified on Intrinsic imported functions and the compiler will evaluate some of these intrinsic statically, in particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. +An Extensions_Allowed pragma argument of “On” enables this extension. + @item @code{[]} aggregates diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 6f4d33b..2eb1a69 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -2408,7 +2408,8 @@ package body Sem_Ch13 is elsif Is_Imported_Intrinsic then Error_Msg_GNAT_Extension - ("aspect % on intrinsic function", Sloc (Aspect)); + ("aspect % on intrinsic function", Sloc (Aspect), + Is_Core_Extension => True); else Error_Msg_N diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb index 6339cfe..195f27e 100644 --- a/gcc/ada/sem_eval.adb +++ b/gcc/ada/sem_eval.adb @@ -2856,10 +2856,11 @@ package body Sem_Eval is return; end if; - -- Intrinsic calls as part of a static function is a language extension. + -- Intrinsic calls as part of a static function is a (core) + -- language extension. if Checking_Potentially_Static_Expression - and then not All_Extensions_Allowed + and then not Core_Extensions_Allowed then return; end if;