if Is_Writable_Actual then
-- Skip checking the error in non-elementary types since
- -- RM 6.4.1(6.15/3) is restricted to elementary types, but
+ -- RM 6.4.1(6.16/3) is restricted to elementary types, but
-- store this actual in Writable_Actuals_List since it is
-- needed to perform checks on other constructs that have
-- arbitrary order of evaluation (for example, aggregates).
-- call C2 (not including the construct C itself), there is no other
-- name anywhere within a direct constituent of the construct C other
-- than the one containing C2, that is known to refer to the same
- -- object (RM 6.4.1(6.17/3)).
+ -- object (RM 6.4.1(6.18/3)).
case Nkind (N) is
when N_Range =>
-- For an array aggregate, a discrete_choice_list that has
-- a nonstatic range is considered as two or more separate
- -- occurrences of the expression (RM 6.4.1(6.20/3)).
+ -- occurrences of the expression (RM 6.4.1(6.21/3)).
elsif Is_Array_Type (Etype (N))
and then Nkind (N) = N_Aggregate
-- For renamings, return False if the prefix of any dereference within
-- the renamed object_name is a variable, or any expression within the
-- renamed object_name contains references to variables or calls on
- -- nonstatic functions; otherwise return True (RM 6.4.1(6.10/3))
+ -- nonstatic functions; otherwise return True (RM 6.4.1(6.11/3))
------------------------
-- Is_Object_Renaming --
function Denotes_Same_Object (A1, A2 : Node_Id) return Boolean;
-- Detect suspicious overlapping between actuals in a call, when both are
- -- writable (RM 2012 6.4.1(6.4/3)).
+ -- writable (RM 2012 6.4.1(6.5/3)).
function Denotes_Same_Prefix (A1, A2 : Node_Id) return Boolean;
-- Functions to detect suspicious overlapping between actuals in a call,
-- known to refer to the same object as the other name; or one of the
-- two names statically denotes a renaming declaration whose renamed
-- object_name is known to refer to the same object as the other name
- -- (RM 6.4.1(6.11/3))
+ -- (RM 6.4.1(6.12/3))
-----------------------------
-- Explicitly_By_Reference --
-- of an elementary type, then the call is legal only if for each name
-- N that is passed as a parameter of mode in out or out to the call C,
-- there is no other name among the other parameters of mode in out or
- -- out to C that is known to denote the same object (RM 6.4.1(6.15/3))
+ -- out to C that is known to denote the same object (RM 6.4.1(6.16/3))
-- This has been clarified in AI12-0216 to indicate that the illegality
-- only occurs if both formals are of an elementary type, because of the
-- nondeterminism on the write-back of the corresponding actuals.