OSDN Git Service

ada:
[pf3gnuchains/gcc-fork.git] / gcc / ada / aspects.ads
index ee992a6..dfca9b1 100755 (executable)
@@ -50,9 +50,11 @@ package Aspects is
       Aspect_Bit_Order,
       Aspect_Component_Size,
       Aspect_Constant_Indexing,
+      Aspect_CPU,
       Aspect_Default_Component_Value,
       Aspect_Default_Iterator,
       Aspect_Default_Value,
+      Aspect_Dispatching_Domain,
       Aspect_Dynamic_Predicate,
       Aspect_External_Tag,
       Aspect_Implicit_Dereference,
@@ -142,6 +144,31 @@ package Aspects is
                         Aspect_Post          => True,
                         others               => False);
 
+   --  The following array identifies all implementation defined aspects
+
+   Impl_Defined_Aspects : constant array (Aspect_Id) of Boolean :=
+                            (Aspect_Object_Size          => True,
+                             Aspect_Predicate            => True,
+                             Aspect_Test_Case            => True,
+                             Aspect_Value_Size           => True,
+                             Aspect_Compiler_Unit        => True,
+                             Aspect_Preelaborate_05      => True,
+                             Aspect_Pure_05              => True,
+                             Aspect_Universal_Data       => True,
+                             Aspect_Ada_2005             => True,
+                             Aspect_Ada_2012             => True,
+                             Aspect_Favor_Top_Level      => True,
+                             Aspect_Inline_Always        => True,
+                             Aspect_Persistent_BSS       => True,
+                             Aspect_Pure_Function        => True,
+                             Aspect_Shared               => True,
+                             Aspect_Suppress_Debug_Info  => True,
+                             Aspect_Universal_Aliasing   => True,
+                             Aspect_Unmodified           => True,
+                             Aspect_Unreferenced         => True,
+                             Aspect_Unreferenced_Objects => True,
+                             others                      => False);
+
    --  The following array indicates aspects for which multiple occurrences of
    --  the same aspect attached to the same declaration are allowed.
 
@@ -187,9 +214,11 @@ package Aspects is
                         Aspect_Bit_Order               => Expression,
                         Aspect_Component_Size          => Expression,
                         Aspect_Constant_Indexing       => Name,
+                        Aspect_CPU                     => Expression,
                         Aspect_Default_Component_Value => Expression,
                         Aspect_Default_Iterator        => Name,
                         Aspect_Default_Value           => Expression,
+                        Aspect_Dispatching_Domain      => Expression,
                         Aspect_Dynamic_Predicate       => Expression,
                         Aspect_External_Tag            => Expression,
                         Aspect_Implicit_Dereference    => Name,
@@ -246,10 +275,12 @@ package Aspects is
      Aspect_Compiler_Unit                => Name_Compiler_Unit,
      Aspect_Component_Size               => Name_Component_Size,
      Aspect_Constant_Indexing            => Name_Constant_Indexing,
+     Aspect_CPU                          => Name_CPU,
      Aspect_Default_Iterator             => Name_Default_Iterator,
      Aspect_Default_Value                => Name_Default_Value,
      Aspect_Default_Component_Value      => Name_Default_Component_Value,
      Aspect_Discard_Names                => Name_Discard_Names,
+     Aspect_Dispatching_Domain           => Name_Dispatching_Domain,
      Aspect_Dynamic_Predicate            => Name_Dynamic_Predicate,
      Aspect_Elaborate_Body               => Name_Elaborate_Body,
      Aspect_External_Tag                 => Name_External_Tag,
@@ -359,6 +390,9 @@ package Aspects is
    --  node that has its Has_Aspects flag set True on entry, or with L being an
    --  empty list or No_List.
 
+   function Find_Aspect (Ent : Entity_Id; A : Aspect_Id) return Node_Id;
+   --  Find value of a given aspect from aspect list of entity
+
    procedure Move_Aspects (From : Node_Id; To : Node_Id);
    --  Moves aspects from 'From' node to 'To' node. Has_Aspects (To) must be
    --  False on entry. If Has_Aspects (From) is False, the call has no effect.