diff options
author | Steve Baird <baird@adacore.com> | 2022-10-07 17:20:31 -0700 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2022-11-04 14:47:30 +0100 |
commit | 7e1fe87899932e2c265fd0a13b2ac552b0865e0f (patch) | |
tree | 7b815b99c755d9f297217beaf5f84bfca1f6b92e | |
parent | 1207432c21a213cfac2b9499bd59367d410befe3 (diff) | |
download | gcc-7e1fe87899932e2c265fd0a13b2ac552b0865e0f.tar.gz |
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.
-rw-r--r-- | gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst | 2 | ||||
-rw-r--r-- | gcc/ada/gnat_rm.texi | 2 | ||||
-rw-r--r-- | gcc/ada/sem_ch13.adb | 3 | ||||
-rw-r--r-- | gcc/ada/sem_eval.adb | 5 |
4 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst index 100d79e69b1..7e5fb700691 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 6fcaca76571..fbd8bb8d6b2 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 6f4d33b6d55..2eb1a69e764 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 6339cfe3b04..195f27e14d6 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; |