This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] Allow new restriction pragmas in package System


This update allows the use of the following restrictions pragmas
in package System:

  No_Specification_Of_Aspect
  No_Use_Of_Attribute
  No_Use_Of_Pragma

Given a system.ads file containing the lines:

pragma Restrictions (No_Use_Of_Pragma => Attach_Handler);
pragma Restrictions (No_Specification_Of_Aspect => Size);
pragma Restrictions (No_Use_Of_Attribute => Alignment);

The following test compiles as shown (using -gnatj55)

     1. package ATHandT is
     2.    protected X is
     3.       procedure handler;
     4.       pragma Attach_Handler (Handler, 0);
                     |
        >>> violation of restriction "No_Use_Of_Pragma
            => Attach_Handler" in package System

     5.    end X;
     6.    M : Integer with Size => 32;
                            |
        >>> violation of restriction
            "No_Specification_Of_Aspect => Size" at
            system.ads:3

     7.    N : Integer;
     8.    for N'Alignment use 4;
           |
        >>> violation of restriction
            "No_Use_Of_Attribute => alignment" at
            system.ads:4

     9. end ATHandT;

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

2015-05-26  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb (Gnat1drv): Provide new arguments for
	Get_Target_Parameters.
	* restrict.adb (Set_Restriction_No_Specification_Of_Aspect):
	new procedure.
	(Set_Restriction_No_Use_Of_Attribute): new procedure.
	* restrict.ads (Set_Restriction_No_Specification_Of_Aspect):
	new procedure.
	(Set_Restriction_No_Use_Of_Attribute): new procedure.
	* s-rident.ads (Integer_Parameter_Restrictions): New subtype.
	* targparm.adb (Get_Target_Parameters): Allow new restriction
	pragmas No_Specification_Of_Aspect No_Use_Of_Attribute
	No_Use_Of_Pragma.
	* targparm.ads: New parameters for Get_Target_Parameters.
	* tbuild.adb (Set_NOD): New name for Set_RND.
	(Set_NSA): New procedure.
	(Set_NUA): New procedure.
	(Set_NUP): New procedure.
	* tbuild.ads (Make_SC): Minor reformatting.
	(Set_NOD): New name for Set_RND.
	(Set_NSA, Set_NUA, Set_NUP): New procedure.

Attachment: difs
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]