pa.md (integer_indexed_store splitters): Use mem_shadd_operand.
[gcc.git] / gcc / ada / aspects.ads
index 84567f3bcc03caf6822f5652527e2a4e60c2cdfa..41fa96100dc80ce4f4be719279e69b729831b91c 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 2010-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 2010-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -86,15 +86,19 @@ package Aspects is
       Aspect_Convention,
       Aspect_CPU,
       Aspect_Default_Component_Value,
+      Aspect_Default_Initial_Condition,     -- GNAT
       Aspect_Default_Iterator,
+      Aspect_Default_Storage_Pool,
       Aspect_Default_Value,
       Aspect_Depends,                       -- GNAT
       Aspect_Dimension,                     -- GNAT
       Aspect_Dimension_System,              -- GNAT
       Aspect_Dispatching_Domain,
       Aspect_Dynamic_Predicate,
+      Aspect_Extensions_Visible,            -- GNAT
       Aspect_External_Name,
       Aspect_External_Tag,
+      Aspect_Ghost,                         -- GNAT
       Aspect_Global,                        -- GNAT
       Aspect_Implicit_Dereference,
       Aspect_Initial_Condition,             -- GNAT
@@ -108,6 +112,7 @@ package Aspects is
       Aspect_Linker_Section,                -- GNAT
       Aspect_Machine_Radix,
       Aspect_Object_Size,                   -- GNAT
+      Aspect_Obsolescent,                   -- GNAT
       Aspect_Output,
       Aspect_Part_Of,                       -- GNAT
       Aspect_Post,
@@ -135,6 +140,7 @@ package Aspects is
       Aspect_Synchronization,
       Aspect_Test_Case,                     -- GNAT
       Aspect_Type_Invariant,
+      Aspect_Unimplemented,                 -- GNAT
       Aspect_Unsuppress,
       Aspect_Value_Size,                    -- GNAT
       Aspect_Variable_Indexing,
@@ -176,7 +182,9 @@ package Aspects is
       Aspect_Inline,
       Aspect_Inline_Always,                 -- GNAT
       Aspect_Interrupt_Handler,
+      Aspect_Lock_Free,                     -- GNAT
       Aspect_No_Return,
+      Aspect_No_Tagged_Streams,             -- GNAT
       Aspect_Pack,
       Aspect_Persistent_BSS,                -- GNAT
       Aspect_Preelaborable_Initialization,
@@ -185,6 +193,7 @@ package Aspects is
       Aspect_Shared,                        -- GNAT (equivalent to Atomic)
       Aspect_Simple_Storage_Pool_Type,      -- GNAT
       Aspect_Suppress_Debug_Info,           -- GNAT
+      Aspect_Suppress_Initialization,       -- GNAT
       Aspect_Thread_Local_Storage,          -- GNAT
       Aspect_Unchecked_Union,
       Aspect_Universal_Aliasing,            -- GNAT
@@ -193,11 +202,7 @@ package Aspects is
       Aspect_Unreferenced_Objects,          -- GNAT
       Aspect_Volatile,
       Aspect_Volatile_Components,
-
-      --  Aspects that have a static boolean value but don't correspond to
-      --  pragmas with a single argument that it is the entity in question.
-
-      Aspect_Lock_Free);                    -- GNAT
+      Aspect_Volatile_Full_Access);         -- GNAT
 
    subtype Aspect_Id_Exclude_No_Aspect is
      Aspect_Id range Aspect_Id'Succ (No_Aspect) .. Aspect_Id'Last;
@@ -230,7 +235,9 @@ package Aspects is
       Aspect_Dimension_System         => True,
       Aspect_Effective_Reads          => True,
       Aspect_Effective_Writes         => True,
+      Aspect_Extensions_Visible       => True,
       Aspect_Favor_Top_Level          => True,
+      Aspect_Ghost                    => True,
       Aspect_Global                   => True,
       Aspect_Inline_Always            => True,
       Aspect_Invariant                => True,
@@ -245,6 +252,7 @@ package Aspects is
       Aspect_Simple_Storage_Pool      => True,
       Aspect_Simple_Storage_Pool_Type => True,
       Aspect_Suppress_Debug_Info      => True,
+      Aspect_Suppress_Initialization  => True,
       Aspect_Thread_Local_Storage     => True,
       Aspect_Test_Case                => True,
       Aspect_Universal_Aliasing       => True,
@@ -296,76 +304,82 @@ package Aspects is
    --  The following array indicates what argument type is required
 
    Aspect_Argument : constant array (Aspect_Id) of Aspect_Expression :=
-     (No_Aspect                      => Optional_Expression,
-      Aspect_Abstract_State          => Expression,
-      Aspect_Address                 => Expression,
-      Aspect_Alignment               => Expression,
-      Aspect_Annotate                => Expression,
-      Aspect_Attach_Handler          => Expression,
-      Aspect_Bit_Order               => Expression,
-      Aspect_Component_Size          => Expression,
-      Aspect_Constant_Indexing       => Name,
-      Aspect_Contract_Cases          => Expression,
-      Aspect_Convention              => Name,
-      Aspect_CPU                     => Expression,
-      Aspect_Default_Component_Value => Expression,
-      Aspect_Default_Iterator        => Name,
-      Aspect_Default_Value           => Expression,
-      Aspect_Depends                 => Expression,
-      Aspect_Dimension               => Expression,
-      Aspect_Dimension_System        => Expression,
-      Aspect_Dispatching_Domain      => Expression,
-      Aspect_Dynamic_Predicate       => Expression,
-      Aspect_External_Name           => Expression,
-      Aspect_External_Tag            => Expression,
-      Aspect_Global                  => Expression,
-      Aspect_Implicit_Dereference    => Name,
-      Aspect_Initial_Condition       => Expression,
-      Aspect_Initializes             => Expression,
-      Aspect_Input                   => Name,
-      Aspect_Interrupt_Priority      => Expression,
-      Aspect_Invariant               => Expression,
-      Aspect_Iterable                => Expression,
-      Aspect_Iterator_Element        => Name,
-      Aspect_Link_Name               => Expression,
-      Aspect_Linker_Section          => Expression,
-      Aspect_Machine_Radix           => Expression,
-      Aspect_Object_Size             => Expression,
-      Aspect_Output                  => Name,
-      Aspect_Part_Of                 => Expression,
-      Aspect_Post                    => Expression,
-      Aspect_Postcondition           => Expression,
-      Aspect_Pre                     => Expression,
-      Aspect_Precondition            => Expression,
-      Aspect_Predicate               => Expression,
-      Aspect_Priority                => Expression,
-      Aspect_Read                    => Name,
-      Aspect_Refined_Depends         => Expression,
-      Aspect_Refined_Global          => Expression,
-      Aspect_Refined_Post            => Expression,
-      Aspect_Refined_State           => Expression,
-      Aspect_Relative_Deadline       => Expression,
-      Aspect_Scalar_Storage_Order    => Expression,
-      Aspect_Simple_Storage_Pool     => Name,
-      Aspect_Size                    => Expression,
-      Aspect_Small                   => Expression,
-      Aspect_SPARK_Mode              => Optional_Name,
-      Aspect_Static_Predicate        => Expression,
-      Aspect_Storage_Pool            => Name,
-      Aspect_Storage_Size            => Expression,
-      Aspect_Stream_Size             => Expression,
-      Aspect_Suppress                => Name,
-      Aspect_Synchronization         => Name,
-      Aspect_Test_Case               => Expression,
-      Aspect_Type_Invariant          => Expression,
-      Aspect_Unsuppress              => Name,
-      Aspect_Value_Size              => Expression,
-      Aspect_Variable_Indexing       => Name,
-      Aspect_Warnings                => Name,
-      Aspect_Write                   => Name,
-
-      Boolean_Aspects                => Optional_Expression,
-      Library_Unit_Aspects           => Optional_Expression);
+     (No_Aspect                        => Optional_Expression,
+      Aspect_Abstract_State            => Expression,
+      Aspect_Address                   => Expression,
+      Aspect_Alignment                 => Expression,
+      Aspect_Annotate                  => Expression,
+      Aspect_Attach_Handler            => Expression,
+      Aspect_Bit_Order                 => Expression,
+      Aspect_Component_Size            => Expression,
+      Aspect_Constant_Indexing         => Name,
+      Aspect_Contract_Cases            => Expression,
+      Aspect_Convention                => Name,
+      Aspect_CPU                       => Expression,
+      Aspect_Default_Component_Value   => Expression,
+      Aspect_Default_Initial_Condition => Optional_Expression,
+      Aspect_Default_Iterator          => Name,
+      Aspect_Default_Storage_Pool      => Expression,
+      Aspect_Default_Value             => Expression,
+      Aspect_Depends                   => Expression,
+      Aspect_Dimension                 => Expression,
+      Aspect_Dimension_System          => Expression,
+      Aspect_Dispatching_Domain        => Expression,
+      Aspect_Dynamic_Predicate         => Expression,
+      Aspect_Extensions_Visible        => Optional_Expression,
+      Aspect_External_Name             => Expression,
+      Aspect_External_Tag              => Expression,
+      Aspect_Ghost                     => Optional_Expression,
+      Aspect_Global                    => Expression,
+      Aspect_Implicit_Dereference      => Name,
+      Aspect_Initial_Condition         => Expression,
+      Aspect_Initializes               => Expression,
+      Aspect_Input                     => Name,
+      Aspect_Interrupt_Priority        => Expression,
+      Aspect_Invariant                 => Expression,
+      Aspect_Iterable                  => Expression,
+      Aspect_Iterator_Element          => Name,
+      Aspect_Link_Name                 => Expression,
+      Aspect_Linker_Section            => Expression,
+      Aspect_Machine_Radix             => Expression,
+      Aspect_Object_Size               => Expression,
+      Aspect_Obsolescent               => Optional_Expression,
+      Aspect_Output                    => Name,
+      Aspect_Part_Of                   => Expression,
+      Aspect_Post                      => Expression,
+      Aspect_Postcondition             => Expression,
+      Aspect_Pre                       => Expression,
+      Aspect_Precondition              => Expression,
+      Aspect_Predicate                 => Expression,
+      Aspect_Priority                  => Expression,
+      Aspect_Read                      => Name,
+      Aspect_Refined_Depends           => Expression,
+      Aspect_Refined_Global            => Expression,
+      Aspect_Refined_Post              => Expression,
+      Aspect_Refined_State             => Expression,
+      Aspect_Relative_Deadline         => Expression,
+      Aspect_Scalar_Storage_Order      => Expression,
+      Aspect_Simple_Storage_Pool       => Name,
+      Aspect_Size                      => Expression,
+      Aspect_Small                     => Expression,
+      Aspect_SPARK_Mode                => Optional_Name,
+      Aspect_Static_Predicate          => Expression,
+      Aspect_Storage_Pool              => Name,
+      Aspect_Storage_Size              => Expression,
+      Aspect_Stream_Size               => Expression,
+      Aspect_Suppress                  => Name,
+      Aspect_Synchronization           => Name,
+      Aspect_Test_Case                 => Expression,
+      Aspect_Type_Invariant            => Expression,
+      Aspect_Unimplemented             => Optional_Expression,
+      Aspect_Unsuppress                => Name,
+      Aspect_Value_Size                => Expression,
+      Aspect_Variable_Indexing         => Name,
+      Aspect_Warnings                  => Name,
+      Aspect_Write                     => Name,
+
+      Boolean_Aspects                  => Optional_Expression,
+      Library_Unit_Aspects             => Optional_Expression);
 
    -----------------------------------------
    -- Table Linking Names and Aspect_Id's --
@@ -392,9 +406,11 @@ package Aspects is
       Aspect_Contract_Cases               => Name_Contract_Cases,
       Aspect_Convention                   => Name_Convention,
       Aspect_CPU                          => Name_CPU,
+      Aspect_Default_Component_Value      => Name_Default_Component_Value,
+      Aspect_Default_Initial_Condition    => Name_Default_Initial_Condition,
       Aspect_Default_Iterator             => Name_Default_Iterator,
+      Aspect_Default_Storage_Pool         => Name_Default_Storage_Pool,
       Aspect_Default_Value                => Name_Default_Value,
-      Aspect_Default_Component_Value      => Name_Default_Component_Value,
       Aspect_Depends                      => Name_Depends,
       Aspect_Dimension                    => Name_Dimension,
       Aspect_Dimension_System             => Name_Dimension_System,
@@ -404,10 +420,12 @@ package Aspects is
       Aspect_Effective_Reads              => Name_Effective_Reads,
       Aspect_Effective_Writes             => Name_Effective_Writes,
       Aspect_Elaborate_Body               => Name_Elaborate_Body,
+      Aspect_Export                       => Name_Export,
+      Aspect_Extensions_Visible           => Name_Extensions_Visible,
       Aspect_External_Name                => Name_External_Name,
       Aspect_External_Tag                 => Name_External_Tag,
-      Aspect_Export                       => Name_Export,
       Aspect_Favor_Top_Level              => Name_Favor_Top_Level,
+      Aspect_Ghost                        => Name_Ghost,
       Aspect_Global                       => Name_Global,
       Aspect_Implicit_Dereference         => Name_Implicit_Dereference,
       Aspect_Import                       => Name_Import,
@@ -429,7 +447,9 @@ package Aspects is
       Aspect_Machine_Radix                => Name_Machine_Radix,
       Aspect_No_Elaboration_Code_All      => Name_No_Elaboration_Code_All,
       Aspect_No_Return                    => Name_No_Return,
+      Aspect_No_Tagged_Streams            => Name_No_Tagged_Streams,
       Aspect_Object_Size                  => Name_Object_Size,
+      Aspect_Obsolescent                  => Name_Obsolescent,
       Aspect_Output                       => Name_Output,
       Aspect_Pack                         => Name_Pack,
       Aspect_Part_Of                      => Name_Part_Of,
@@ -467,11 +487,13 @@ package Aspects is
       Aspect_Stream_Size                  => Name_Stream_Size,
       Aspect_Suppress                     => Name_Suppress,
       Aspect_Suppress_Debug_Info          => Name_Suppress_Debug_Info,
+      Aspect_Suppress_Initialization      => Name_Suppress_Initialization,
       Aspect_Thread_Local_Storage         => Name_Thread_Local_Storage,
       Aspect_Synchronization              => Name_Synchronization,
       Aspect_Test_Case                    => Name_Test_Case,
       Aspect_Type_Invariant               => Name_Type_Invariant,
       Aspect_Unchecked_Union              => Name_Unchecked_Union,
+      Aspect_Unimplemented                => Name_Unimplemented,
       Aspect_Universal_Aliasing           => Name_Universal_Aliasing,
       Aspect_Universal_Data               => Name_Universal_Data,
       Aspect_Unmodified                   => Name_Unmodified,
@@ -482,6 +504,7 @@ package Aspects is
       Aspect_Variable_Indexing            => Name_Variable_Indexing,
       Aspect_Volatile                     => Name_Volatile,
       Aspect_Volatile_Components          => Name_Volatile_Components,
+      Aspect_Volatile_Full_Access         => Name_Volatile_Full_Access,
       Aspect_Warnings                     => Name_Warnings,
       Aspect_Write                        => Name_Write);
 
@@ -605,15 +628,16 @@ package Aspects is
       Aspect_Constant_Indexing            => Always_Delay,
       Aspect_CPU                          => Always_Delay,
       Aspect_Default_Iterator             => Always_Delay,
+      Aspect_Default_Storage_Pool         => Always_Delay,
       Aspect_Default_Value                => Always_Delay,
       Aspect_Default_Component_Value      => Always_Delay,
       Aspect_Discard_Names                => Always_Delay,
       Aspect_Dispatching_Domain           => Always_Delay,
       Aspect_Dynamic_Predicate            => Always_Delay,
       Aspect_Elaborate_Body               => Always_Delay,
+      Aspect_Export                       => Always_Delay,
       Aspect_External_Name                => Always_Delay,
       Aspect_External_Tag                 => Always_Delay,
-      Aspect_Export                       => Always_Delay,
       Aspect_Favor_Top_Level              => Always_Delay,
       Aspect_Implicit_Dereference         => Always_Delay,
       Aspect_Import                       => Always_Delay,
@@ -657,6 +681,7 @@ package Aspects is
       Aspect_Stream_Size                  => Always_Delay,
       Aspect_Suppress                     => Always_Delay,
       Aspect_Suppress_Debug_Info          => Always_Delay,
+      Aspect_Suppress_Initialization      => Always_Delay,
       Aspect_Thread_Local_Storage         => Always_Delay,
       Aspect_Type_Invariant               => Always_Delay,
       Aspect_Unchecked_Union              => Always_Delay,
@@ -675,15 +700,20 @@ package Aspects is
       Aspect_Async_Writers                => Never_Delay,
       Aspect_Contract_Cases               => Never_Delay,
       Aspect_Convention                   => Never_Delay,
+      Aspect_Default_Initial_Condition    => Never_Delay,
       Aspect_Depends                      => Never_Delay,
       Aspect_Dimension                    => Never_Delay,
       Aspect_Dimension_System             => Never_Delay,
       Aspect_Effective_Reads              => Never_Delay,
       Aspect_Effective_Writes             => Never_Delay,
+      Aspect_Extensions_Visible           => Never_Delay,
+      Aspect_Ghost                        => Never_Delay,
       Aspect_Global                       => Never_Delay,
       Aspect_Initial_Condition            => Never_Delay,
       Aspect_Initializes                  => Never_Delay,
       Aspect_No_Elaboration_Code_All      => Never_Delay,
+      Aspect_No_Tagged_Streams            => Never_Delay,
+      Aspect_Obsolescent                  => Never_Delay,
       Aspect_Part_Of                      => Never_Delay,
       Aspect_Refined_Depends              => Never_Delay,
       Aspect_Refined_Global               => Never_Delay,
@@ -692,6 +722,7 @@ package Aspects is
       Aspect_SPARK_Mode                   => Never_Delay,
       Aspect_Synchronization              => Never_Delay,
       Aspect_Test_Case                    => Never_Delay,
+      Aspect_Unimplemented                => Never_Delay,
       Aspect_Warnings                     => Never_Delay,
 
       Aspect_Alignment                    => Rep_Aspect,
@@ -708,7 +739,8 @@ package Aspects is
       Aspect_Storage_Size                 => Rep_Aspect,
       Aspect_Value_Size                   => Rep_Aspect,
       Aspect_Volatile                     => Rep_Aspect,
-      Aspect_Volatile_Components          => Rep_Aspect);
+      Aspect_Volatile_Components          => Rep_Aspect,
+      Aspect_Volatile_Full_Access         => Rep_Aspect);
 
    ------------------------------------------------
    -- Handling of Aspect Specifications on Stubs --