This patch extends static functions and allow them on Intrinsic imported
subprograms in addition to expression functions, under -gnatX.  We also
implement compile time evaluation of Shift_Left/Right operators as a
first set of useful static-compatible intrinsics.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

        * inline.adb, inline.ads
        (Inline_Static_Expression_Function_Call): Renamed
        Inline_Static_Function_Call.
        * sem_ch13.adb (Analyze_Aspect_Static): Allow static intrinsic
        imported functions under -gnatX.
        * sem_util.ads, sem_util.adb (Is_Static_Expression_Function):
        Renamed Is_Static_Function.
        (Is_Static_Expression_Function_Call): Renamed
        Is_Static_Function_Call.
        * sem_ch6.adb, sem_elab.adb, sem_res.adb: Update calls to
        Is_Static_Function*.
        * sem_eval.adb (Fold_Dummy, Eval_Intrinsic_Call, Fold_Shift):
        New.
        (Eval_Call): Add support for intrinsic calls, code refactoring.
        (Eval_Entity_Name): Code refactoring.
        (Eval_Logical_Op): Update comment.
        (Eval_Shift): Call Fold_Shift. Update comments.
        * par-prag.adb (Par [Pragma_Extensions_Allowed]): Set
        Ada_Version to Ada_Version_Type'Last to handle
        Extensions_Allowed (On) consistently.
        * opt.ads (Extensions_Allowed): Update documentation.
        * sem_attr.adb: Update comment.
        * doc/gnat_rm/implementation_defined_pragmas.rst: Update
        documentation of Extensions_Allowed.
        * gnat_rm.texi: Regenerate.

Attachment: patch.diff.gz
Description: application/gzip

Reply via email to