aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-11-21 12:35:55 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2011-11-21 12:35:55 +0100
commita4901c083549b9173a1cb3e55741ef0dfc3a8472 (patch)
tree59878b2aee8b9ef9f117c9edec77057d4c951fc7
parent4bf201ed2f9a1c163a02eae24a99440d2790e192 (diff)
downloadgcc-a4901c083549b9173a1cb3e55741ef0dfc3a8472.zip
gcc-a4901c083549b9173a1cb3e55741ef0dfc3a8472.tar.gz
gcc-a4901c083549b9173a1cb3e55741ef0dfc3a8472.tar.bz2
sem_ch6.adb (Is_Public_Subprogram_For): New procedure
2011-11-21 Robert Dewar <dewar@adacore.com> * sem_ch6.adb (Is_Public_Subprogram_For): New procedure (Process_PPCs): Invariants only apply to public subprograms. 2011-11-21 Robert Dewar <dewar@adacore.com> * sem_util.adb, sem_util.ads, sem_attr.adb, restrict.adb, restrict.ads: Fix for No_Implicit_Aliasing in the renames case. 2011-11-21 Robert Dewar <dewar@adacore.com> * a-finali.ads: Use pragma Pure_12 for this unit * aspects.adb: Add aspect Pure_12 * aspects.ads: Add aspect Pure_12 * opt.ads: Add note on Pure_12 * par-prag.adb: Add dummy entry for Pure_12 * sem_prag.adb: Implement Pure_12 pragma * snames.ads-tmpl: Add Entry for Pure_12 2011-11-21 Sergey Rybin <rybin@adacore.com frybin> * vms_data.ads: Add qualifiers for new gnatpp options '--call_threshold' and '--par_threshold". * gnat_ugn.texi: Add description for new gnatpp options '--call_threshold' and '--par_threshold". 2011-11-21 Robert Dewar <dewar@adacore.com> * lib.ads: Minor reformatting. 2011-11-21 Robert Dewar <dewar@adacore.com> * lib-load.ads: Add comment. From-SVN: r181563
-rw-r--r--gcc/ada/ChangeLog35
-rw-r--r--gcc/ada/a-finali.ads6
-rwxr-xr-xgcc/ada/aspects.adb1
-rwxr-xr-xgcc/ada/aspects.ads3
-rw-r--r--gcc/ada/gnat_ugn.texi13
-rw-r--r--gcc/ada/lib-load.ads3
-rw-r--r--gcc/ada/lib.ads4
-rw-r--r--gcc/ada/opt.ads2
-rw-r--r--gcc/ada/par-prag.adb1
-rw-r--r--gcc/ada/restrict.adb72
-rw-r--r--gcc/ada/restrict.ads7
-rw-r--r--gcc/ada/sem_attr.adb11
-rw-r--r--gcc/ada/sem_ch6.adb70
-rw-r--r--gcc/ada/sem_prag.adb42
-rw-r--r--gcc/ada/sem_util.adb4
-rw-r--r--gcc/ada/sem_util.ads8
-rw-r--r--gcc/ada/snames.ads-tmpl2
-rw-r--r--gcc/ada/vms_data.ads18
18 files changed, 274 insertions, 28 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 5092d57..a9c682b 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,38 @@
+2011-11-21 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch6.adb (Is_Public_Subprogram_For): New procedure
+ (Process_PPCs): Invariants only apply to public subprograms.
+
+2011-11-21 Robert Dewar <dewar@adacore.com>
+
+ * sem_util.adb, sem_util.ads, sem_attr.adb, restrict.adb,
+ restrict.ads: Fix for No_Implicit_Aliasing in the renames case.
+
+2011-11-21 Robert Dewar <dewar@adacore.com>
+
+ * a-finali.ads: Use pragma Pure_12 for this unit
+ * aspects.adb: Add aspect Pure_12
+ * aspects.ads: Add aspect Pure_12
+ * opt.ads: Add note on Pure_12
+ * par-prag.adb: Add dummy entry for Pure_12
+ * sem_prag.adb: Implement Pure_12 pragma
+ * snames.ads-tmpl: Add Entry for Pure_12
+
+2011-11-21 Sergey Rybin <rybin@adacore.com frybin>
+
+ * vms_data.ads: Add qualifiers for new gnatpp options
+ '--call_threshold' and '--par_threshold".
+ * gnat_ugn.texi: Add description for new gnatpp options
+ '--call_threshold' and '--par_threshold".
+
+2011-11-21 Robert Dewar <dewar@adacore.com>
+
+ * lib.ads: Minor reformatting.
+
+2011-11-21 Robert Dewar <dewar@adacore.com>
+
+ * lib-load.ads: Add comment.
+
2011-11-21 Gary Dismukes <dismukes@adacore.com>
* sem_elab.adb: Minor reformatting
diff --git a/gcc/ada/a-finali.ads b/gcc/ada/a-finali.ads
index d5cada2..b53fd2a 100644
--- a/gcc/ada/a-finali.ads
+++ b/gcc/ada/a-finali.ads
@@ -34,14 +34,16 @@
------------------------------------------------------------------------------
pragma Warnings (Off);
--- System.Finalization_Root does not have category Remote_Types, but we
--- allow it anyway.
with System.Finalization_Root;
pragma Warnings (On);
package Ada.Finalization is
+ pragma Pure_12;
+ -- Ada.Finalization is declared pure in Ada 2012 (AI05-0212)
+
pragma Preelaborate;
pragma Remote_Types;
+ -- The above apply in versions of Ada before Ada 2012
type Controlled is abstract tagged private;
pragma Preelaborable_Initialization (Controlled);
diff --git a/gcc/ada/aspects.adb b/gcc/ada/aspects.adb
index 9b70773..d25ba15 100755
--- a/gcc/ada/aspects.adb
+++ b/gcc/ada/aspects.adb
@@ -255,6 +255,7 @@ package body Aspects is
Aspect_Preelaborate_05 => Aspect_Preelaborate_05,
Aspect_Pure => Aspect_Pure,
Aspect_Pure_05 => Aspect_Pure_05,
+ Aspect_Pure_12 => Aspect_Pure_12,
Aspect_Remote_Call_Interface => Aspect_Remote_Call_Interface,
Aspect_Remote_Types => Aspect_Remote_Types,
Aspect_Shared_Passive => Aspect_Shared_Passive,
diff --git a/gcc/ada/aspects.ads b/gcc/ada/aspects.ads
index 582a71e..c1dbe72 100755
--- a/gcc/ada/aspects.ads
+++ b/gcc/ada/aspects.ads
@@ -96,6 +96,7 @@ package Aspects is
Aspect_Preelaborate_05, -- GNAT
Aspect_Pure,
Aspect_Pure_05, -- GNAT
+ Aspect_Pure_12, -- GNAT
Aspect_Remote_Call_Interface,
Aspect_Remote_Types,
Aspect_Shared_Passive,
@@ -154,6 +155,7 @@ package Aspects is
Aspect_Compiler_Unit => True,
Aspect_Preelaborate_05 => True,
Aspect_Pure_05 => True,
+ Aspect_Pure_12 => True,
Aspect_Universal_Data => True,
Aspect_Ada_2005 => True,
Aspect_Ada_2012 => True,
@@ -324,6 +326,7 @@ package Aspects is
Aspect_Priority => Name_Priority,
Aspect_Pure => Name_Pure,
Aspect_Pure_05 => Name_Pure_05,
+ Aspect_Pure_12 => Name_Pure_12,
Aspect_Pure_Function => Name_Pure_Function,
Aspect_Read => Name_Read,
Aspect_Remote_Call_Interface => Name_Remote_Call_Interface,
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index b30136d..f9ad16f 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -13364,6 +13364,19 @@ and variants if there are @var{nnn} or more (the default
value is 10).
If @var{nnn} is 0, an additional indentation level is
used for @b{case} alternatives and variants regardless of their number.
+
+@item ^--call_threshold=@var{nnn}^/MAX_ACT=@var{nnn}^
+@cindex @option{^--call_threshold^/MAX_ACT^} (@command{gnatpp})
+If the number of parameter associations is greater than @var{nnn} and if at
+least one association uses named notation, start each association from
+a new line. If @var{nnn} is 0, no check for the number of associations
+is made, this is the default.
+
+@item ^--par_threshold=@var{nnn}^/MAX_PAR=@var{nnn}^
+@cindex @option{^--par_threshold^/MAX_PAR^} (@command{gnatpp})
+If the number of parameter specifications is greater than @var{nnn}
+(or equal to @var{nnn} in case of a function), start each specification from
+a new line. The default for @var{nnn} is 3.
@end table
@node Setting the Source Search Path
diff --git a/gcc/ada/lib-load.ads b/gcc/ada/lib-load.ads
index d2856aa..a029d37 100644
--- a/gcc/ada/lib-load.ads
+++ b/gcc/ada/lib-load.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2011, 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- --
@@ -155,6 +155,7 @@ package Lib.Load is
--
-- PMES indicates the required setting of Parsing_Main_Extended_Unit during
-- loading of the unit. This flag is saved and restored over the call.
+ -- Note: PMES is false for the subunit case, which seems wrong???
procedure Change_Main_Unit_To_Spec;
-- This procedure is called if the main unit file contains a No_Body pragma
diff --git a/gcc/ada/lib.ads b/gcc/ada/lib.ads
index 76810c2..2b3f906 100644
--- a/gcc/ada/lib.ads
+++ b/gcc/ada/lib.ads
@@ -518,7 +518,7 @@ package Lib is
-- its subunits (considered recursively). Units for which this enquiry
-- returns True are those for which code will be generated. Nodes from
-- instantiations are included in the extended main unit for this call.
- -- If the main unit is itself a subunit, then the extended main unit
+ -- If the main unit is itself a subunit, then the extended main code unit
-- includes its parent unit, and the parent unit spec if it is separate.
function In_Extended_Main_Code_Unit (Loc : Source_Ptr) return Boolean;
@@ -533,7 +533,7 @@ package Lib is
-- returns True are those for which code will be generated. This differs
-- from In_Extended_Main_Code_Unit only in that instantiations are not
-- included for the purposes of this call. If the main unit is itself
- -- a subunit, then the extended main unit includes its parent unit,
+ -- a subunit, then the extended main source unit includes its parent unit,
-- and the parent unit spec if it is separate.
function In_Extended_Main_Source_Unit (Loc : Source_Ptr) return Boolean;
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index e6a4281..def16bb 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -140,7 +140,7 @@ package Opt is
-- or internal units, so it reflects the Ada version explicitly set
-- using configuration pragmas or compiler switches (or if neither
-- appears, it remains set to Ada_Version_Default). This is used in
- -- the rare cases (notably for pragmas Preelaborate_05 and Pure_05)
+ -- the rare cases (notably for pragmas Preelaborate_05 and Pure_05/12)
-- where in the run-time we want the explicit version set.
Ada_Version_Runtime : Ada_Version_Type := Ada_2012;
diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb
index 224b992..1a12675 100644
--- a/gcc/ada/par-prag.adb
+++ b/gcc/ada/par-prag.adb
@@ -1216,6 +1216,7 @@ begin
Pragma_Psect_Object |
Pragma_Pure |
Pragma_Pure_05 |
+ Pragma_Pure_12 |
Pragma_Pure_Function |
Pragma_Queuing_Policy |
Pragma_Relative_Deadline |
diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb
index 813568d..399547c 100644
--- a/gcc/ada/restrict.adb
+++ b/gcc/ada/restrict.adb
@@ -183,6 +183,78 @@ package body Restrict is
end if;
end Check_SPARK_Restriction;
+ --------------------------------
+ -- Check_No_Implicit_Aliasing --
+ --------------------------------
+
+ procedure Check_No_Implicit_Aliasing (Obj : Node_Id) is
+ E : Entity_Id;
+
+ begin
+ -- If restriction not active, nothing to check
+
+ if not Restriction_Active (No_Implicit_Aliasing) then
+ return;
+ end if;
+
+ -- If we have an entity name, check entity
+
+ if Is_Entity_Name (Obj) then
+ E := Entity (Obj);
+
+ -- Restriction applies to entities that are objects
+
+ if Is_Object (E) then
+ if Is_Aliased (E) then
+ return;
+
+ elsif Present (Renamed_Object (E)) then
+ Check_No_Implicit_Aliasing (Renamed_Object (E));
+ return;
+ end if;
+
+ -- If we don't have an object, then it's OK
+
+ else
+ return;
+ end if;
+
+ -- For selected component, check selector
+
+ elsif Nkind (Obj) = N_Selected_Component then
+ Check_No_Implicit_Aliasing (Selector_Name (Obj));
+ return;
+
+ -- Indexed component is OK if aliased components
+
+ elsif Nkind (Obj) = N_Indexed_Component then
+ if Has_Aliased_Components (Etype (Prefix (Obj)))
+ or else
+ (Is_Access_Type (Etype (Prefix (Obj)))
+ and then Has_Aliased_Components
+ (Designated_Type (Etype (Prefix (Obj)))))
+ then
+ return;
+ end if;
+
+ -- For type conversion, check converted expression
+
+ elsif Nkind_In (Obj, N_Unchecked_Type_Conversion, N_Type_Conversion) then
+ Check_No_Implicit_Aliasing (Expression (Obj));
+ return;
+
+ -- Explicit dereference is always OK
+
+ elsif Nkind (Obj) = N_Explicit_Dereference then
+ return;
+ end if;
+
+ -- If we fall through, then we have an aliased view that does not meet
+ -- the rules for being explicitly aliased, so issue restriction msg.
+
+ Check_Restriction (No_Implicit_Aliasing, Obj);
+ end Check_No_Implicit_Aliasing;
+
-----------------------------------------
-- Check_Implicit_Dynamic_Code_Allowed --
-----------------------------------------
diff --git a/gcc/ada/restrict.ads b/gcc/ada/restrict.ads
index 1087502..681a2c1 100644
--- a/gcc/ada/restrict.ads
+++ b/gcc/ada/restrict.ads
@@ -279,6 +279,13 @@ package Restrict is
-- Same as Check_SPARK_Restriction except there is a continuation message
-- Msg2 following the initial message Msg1.
+ procedure Check_No_Implicit_Aliasing (Obj : Node_Id);
+ -- Obj is a node for which Is_Aliased_View is True, which is being used in
+ -- a context (e.g. 'Access) where no implicit aliasing is allowed if the
+ -- restriction No_Implicit_Aliasing is set. This procedure checks for the
+ -- case where the restriction is active and Obj does not meet the required
+ -- rules for avoiding implicit aliases, and issues a restriction message.
+
procedure Check_Implicit_Dynamic_Code_Allowed (N : Node_Id);
-- Tests to see if dynamic code generation (dynamically generated
-- trampolines, in particular) is allowed by the current restrictions
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index ae7edbf..393a5e1 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -841,13 +841,8 @@ package body Sem_Attr is
and then not In_Instance
and then not In_Inlined_Body
then
- if Restriction_Check_Required (No_Implicit_Aliasing) then
- Error_Attr_P
- ("prefix of % attribute must be explicitly aliased");
- else
- Error_Attr_P
- ("prefix of % attribute must be aliased");
- end if;
+ Error_Attr_P ("prefix of % attribute must be aliased");
+ Check_No_Implicit_Aliasing (P);
end if;
end Analyze_Access_Attribute;
@@ -2245,6 +2240,8 @@ package body Sem_Attr is
if Restriction_Check_Required (No_Implicit_Aliasing) then
if not Is_Aliased_View (P) then
Check_Restriction (No_Implicit_Aliasing, P);
+ else
+ Check_No_Implicit_Aliasing (P);
end if;
end if;
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index a9f84d3..56c1074 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -8536,19 +8536,19 @@ package body Sem_Ch6 is
and then In_Private_Part (Current_Scope)
then
Priv_Decls :=
- Private_Declarations (
- Specification (Unit_Declaration_Node (Current_Scope)));
+ Private_Declarations
+ (Specification (Unit_Declaration_Node (Current_Scope)));
return In_Package_Body (Current_Scope)
or else
(Is_List_Member (Decl)
- and then List_Containing (Decl) = Priv_Decls)
+ and then List_Containing (Decl) = Priv_Decls)
or else (Nkind (Parent (Decl)) = N_Package_Specification
- and then not
- Is_Compilation_Unit
- (Defining_Entity (Parent (Decl)))
- and then List_Containing (Parent (Parent (Decl)))
- = Priv_Decls);
+ and then not
+ Is_Compilation_Unit
+ (Defining_Entity (Parent (Decl)))
+ and then List_Containing (Parent (Parent (Decl))) =
+ Priv_Decls);
else
return False;
end if;
@@ -9562,6 +9562,15 @@ package body Sem_Ch6 is
-- or IN OUT parameters of the subprogram, or (for a function) if the
-- return value has an invariant.
+ function Is_Public_Subprogram_For (T : Entity_Id) return Boolean;
+ -- T is the entity for a private type for which invariants are defined.
+ -- This function returns True if the procedure corresponding to the
+ -- value of Designator is a public procedure from the point of view of
+ -- this type (i.e. its spec is in the visible part of the package that
+ -- contains the declaration of the private type). A True value means
+ -- that an invariant check is required (for an IN OUT parameter, or
+ -- the returned value of a function.
+
--------------
-- Grab_PPC --
--------------
@@ -9689,6 +9698,45 @@ package body Sem_Ch6 is
return False;
end Invariants_Or_Predicates_Present;
+ ------------------------------
+ -- Is_Public_Subprogram_For --
+ ------------------------------
+
+ -- The type T is a private type, its declaration is therefore in
+ -- the list of public declarations of some package. The test for a
+ -- public subprogram is that its declaration is in this same list
+ -- of declarations for the same package (note that all the public
+ -- declarations are in one list, and all the private declarations
+ -- in another, so this deals with the public/private distinction).
+
+ function Is_Public_Subprogram_For (T : Entity_Id) return Boolean is
+ DD : constant Node_Id := Unit_Declaration_Node (Designator);
+ -- The subprogram declaration for the subprogram in question
+
+ TL : constant List_Id :=
+ Visible_Declarations
+ (Specification (Unit_Declaration_Node (Scope (T))));
+ -- The list of declarations containing the private declaration of
+ -- the type. We know it is a private type, so we know its scope is
+ -- the package in question, and we know it must be in the visible
+ -- declarations of this package.
+
+ begin
+ -- If the subprogram declaration is not a list member, it must be
+ -- an Init_Proc, in which case we want to consider it to be a
+ -- public subprogram, since we do get initializations to deal with.
+
+ if not Is_List_Member (DD) then
+ return True;
+
+ -- Otherwise we test whether the subprogram is declared in the
+ -- visible declarations of the package containing the type.
+
+ else
+ return TL = List_Containing (DD);
+ end if;
+ end Is_Public_Subprogram_For;
+
-- Start of processing for Process_PPCs
begin
@@ -9985,10 +10033,13 @@ package body Sem_Ch6 is
Parameter_Type => New_Occurrence_Of (Ftyp, Loc),
Defining_Identifier => Rent));
- -- Add invariant call if returning type with invariants
+ -- Add invariant call if returning type with invariants and
+ -- this is a public function, i.e. a function declared in the
+ -- visible part of the package defining the private type.
if Has_Invariants (Etype (Rent))
and then Present (Invariant_Procedure (Etype (Rent)))
+ and then Is_Public_Subprogram_For (Etype (Rent))
then
Append_To (Plist,
Make_Invariant_Call (New_Occurrence_Of (Rent, Loc)));
@@ -10017,6 +10068,7 @@ package body Sem_Ch6 is
if Has_Invariants (Ftype)
and then Present (Invariant_Procedure (Ftype))
+ and then Is_Public_Subprogram_For (Ftype)
then
Append_To (Plist,
Make_Invariant_Call
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 397c733..148c6de 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -12647,6 +12647,47 @@ package body Sem_Prag is
end if;
end Pure_05;
+ -------------
+ -- Pure_12 --
+ -------------
+
+ -- pragma Pure_12 [(library_unit_NAME)];
+
+ -- This pragma is useable only in GNAT_Mode, where it is used like
+ -- pragma Pure but it is only effective in Ada 2012 mode (otherwise
+ -- it is ignored). It may be used after a pragma Preelaborate, in
+ -- which case it overrides the effect of the pragma Preelaborate.
+ -- This is used to implement AI05-0212 which recategorizes some
+ -- run-time packages in Ada 2012 mode.
+
+ when Pragma_Pure_12 => Pure_12 : declare
+ Ent : Entity_Id;
+
+ begin
+ GNAT_Pragma;
+ Check_Valid_Library_Unit_Pragma;
+
+ if not GNAT_Mode then
+ Error_Pragma ("pragma% only available in GNAT mode");
+ end if;
+
+ if Nkind (N) = N_Null_Statement then
+ return;
+ end if;
+
+ -- This is one of the few cases where we need to test the value of
+ -- Ada_Version_Explicit rather than Ada_Version (which is always
+ -- set to Ada_2012 in a predefined unit), we need to know the
+ -- explicit version set to know if this pragma is active.
+
+ if Ada_Version_Explicit >= Ada_2012 then
+ Ent := Find_Lib_Unit_Name;
+ Set_Is_Preelaborated (Ent, False);
+ Set_Is_Pure (Ent);
+ Set_Suppress_Elaboration_Warnings (Ent);
+ end if;
+ end Pure_12;
+
-------------------
-- Pure_Function --
-------------------
@@ -14959,6 +15000,7 @@ package body Sem_Prag is
Pragma_Psect_Object => -1,
Pragma_Pure => -1,
Pragma_Pure_05 => -1,
+ Pragma_Pure_12 => -1,
Pragma_Pure_Function => -1,
Pragma_Queuing_Policy => -1,
Pragma_Ravenscar => -1,
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 1764da9..e1c2b1a 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -6583,10 +6583,6 @@ package body Sem_Util is
if Is_Entity_Name (Obj) then
E := Entity (Obj);
- if Is_Object (E) and then not Is_Aliased (E) then
- Check_Restriction (No_Implicit_Aliasing, Obj);
- end if;
-
return
(Is_Object (E)
and then
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index c7f610d..0d7253b 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -775,8 +775,12 @@ package Sem_Util is
function Is_Aliased_View (Obj : Node_Id) return Boolean;
-- Determine if Obj is an aliased view, i.e. the name of an object to which
- -- 'Access or 'Unchecked_Access can apply. Note that the implementation
- -- takes the No_Implicit_Aiasing restriction into account.
+ -- 'Access or 'Unchecked_Access can apply. Note that this routine uses the
+ -- rules of the language, it does not take into account the restriction
+ -- No_Implicit_Aliasing, so it can return True if the restriction is active
+ -- and Obj violates the restriction. The caller is responsible for calling
+ -- Restrict.Check_No_Implicit_Aliasing if True is returned, but there is a
+ -- requirement for obeying the restriction in the call context.
function Is_Ancestor_Package
(E1 : Entity_Id;
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index 3ed2a66..d15892a 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -524,6 +524,7 @@ package Snames is
Name_Psect_Object : constant Name_Id := N + $; -- VMS
Name_Pure : constant Name_Id := N + $;
Name_Pure_05 : constant Name_Id := N + $; -- GNAT
+ Name_Pure_12 : constant Name_Id := N + $; -- GNAT
Name_Pure_Function : constant Name_Id := N + $; -- GNAT
Name_Relative_Deadline : constant Name_Id := N + $; -- Ada 05
Name_Remote_Call_Interface : constant Name_Id := N + $;
@@ -1672,6 +1673,7 @@ package Snames is
Pragma_Psect_Object,
Pragma_Pure,
Pragma_Pure_05,
+ Pragma_Pure_12,
Pragma_Pure_Function,
Pragma_Relative_Deadline,
Pragma_Remote_Call_Interface,
diff --git a/gcc/ada/vms_data.ads b/gcc/ada/vms_data.ads
index bfda0a7..5aecd23 100644
--- a/gcc/ada/vms_data.ads
+++ b/gcc/ada/vms_data.ads
@@ -6200,6 +6200,14 @@ package VMS_Data is
--
-- Set the maximum line length, nnn from 32 ..256. The default is 79.
+ S_Pretty_Maxact : aliased constant S := "/MAX_ACT=#" &
+ "--call_threshold=#";
+ -- /MAX_ACT=nnn
+ --
+ -- If the number of parameter associations is greater than nnn and if at
+ -- least one association uses named notation, start each association from
+ -- a new line
+
S_Pretty_Maxind : aliased constant S := "/MAX_INDENT=#" &
"-T#";
-- /MAX_INDENT=nnn
@@ -6209,6 +6217,14 @@ package VMS_Data is
-- If nnn is zero, an additional indentation level is used for any
-- number of case alternatives and variants.
+ S_Pretty_Maxpar : aliased constant S := "/MAX_PAR=#" &
+ "--par_threshold=#";
+ -- /MAX_PAR=nnn
+ --
+ -- If the number of parameter specifications is greater than nnn (or equal
+ -- to nnn in case of a function), start each specification from a new line.
+ -- The default value is 3.
+
S_Pretty_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" &
"DEFAULT " &
"-vP0 " &
@@ -6401,7 +6417,9 @@ package VMS_Data is
S_Pretty_Indent 'Access,
S_Pretty_Keyword 'Access,
S_Pretty_Maxlen 'Access,
+ S_Pretty_Maxact 'Access,
S_Pretty_Maxind 'Access,
+ S_Pretty_Maxpar 'Access,
S_Pretty_Mess 'Access,
S_Pretty_Names 'Access,
S_Pretty_No_Labels 'Access,