[Ada] Ada2020: AI12-0279 more dispatching points with aspect Yield
authorJavier Miranda <miranda@adacore.com>
Fri, 17 Apr 2020 18:41:58 +0000 (14:41 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 17 Jun 2020 08:14:20 +0000 (04:14 -0400)
commit8afbdb8a64c8f269bdda336ee8150d86b42beb04
tree39cbd1e15a04c203b7122b5c6d7717e3f09b2b55
parent67b2ed8e563ac254e6a7952cb7bff1d0f2d0a89a
[Ada] Ada2020: AI12-0279 more dispatching points with aspect Yield

2020-06-17  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* aspects.ads (type Aspect_Id): Add Aspect_Yield as a Boolean
aspect, and update the Is_Representation_Aspect, Aspect_Names,
and Aspect_Delay arrays.
* einfo.ads, einfo.adb (Has_Yield_Aspect, Yield_Aspect): New
subprograms.
* exp_ch6.adb (Add_Return, Expand_Non_Function_Return,
Expand_Simple_Function_Return): Add calls to Yield.
* exp_ch9.adb (Build_Accept_Body, Expand_N_Accept_Statement):
Add calls to Yield.
* rtsfind.ads (RE_Yield): Adding support to generate calls to
the runtime service Ada.Dispatching.Yield
* sem_ch13.adb (Analyze_Aspect_Yield): New subprogram.
* sem_ch3.adb (Derive_Subprogram): Inherit attribute
Has_Yield_Aspect.
* sem_ch8.adb (Analyze_Subprogram_Renaming): Check consistency
of Has_Yield in the actual subprogram of a generic
instantiation.
* sem_disp.adb (Check_Dispatching_Operation): Check that if the
Yield aspect is specified for a dispatching subprogram that
inherits the aspect, the specified value shall be confirming.
* sem_prag.adb (Analyze_Pragma [Pragma_Implemented]): Check that
the implementation kind By_Protected_Procedure cannot be applied
to a procedure that has aspect Yield.
gcc/ada/aspects.ads
gcc/ada/einfo.adb
gcc/ada/einfo.ads
gcc/ada/exp_ch6.adb
gcc/ada/exp_ch9.adb
gcc/ada/rtsfind.ads
gcc/ada/sem_ch13.adb
gcc/ada/sem_ch3.adb
gcc/ada/sem_ch8.adb
gcc/ada/sem_disp.adb
gcc/ada/sem_prag.adb