---------------------------------
function Duplicate_Subexpr_No_Checks
- (Exp : Node_Id;
- Name_Req : Boolean := False;
- Renaming_Req : Boolean := False;
- Related_Id : Entity_Id := Empty;
- Is_Low_Bound : Boolean := False;
- Is_High_Bound : Boolean := False) return Node_Id
+ (Exp : Node_Id;
+ Name_Req : Boolean := False;
+ Renaming_Req : Boolean := False) return Node_Id
is
New_Exp : Node_Id;
begin
Remove_Side_Effects
- (Exp => Exp,
- Name_Req => Name_Req,
- Renaming_Req => Renaming_Req,
- Related_Id => Related_Id,
- Is_Low_Bound => Is_Low_Bound,
- Is_High_Bound => Is_High_Bound);
+ (Exp => Exp,
+ Name_Req => Name_Req,
+ Renaming_Req => Renaming_Req);
New_Exp := New_Copy_Tree (Exp);
Remove_Checks (New_Exp);
-- following functions allow this behavior to be modified.
function Duplicate_Subexpr_No_Checks
- (Exp : Node_Id;
- Name_Req : Boolean := False;
- Renaming_Req : Boolean := False;
- Related_Id : Entity_Id := Empty;
- Is_Low_Bound : Boolean := False;
- Is_High_Bound : Boolean := False) return Node_Id;
+ (Exp : Node_Id;
+ Name_Req : Boolean := False;
+ Renaming_Req : Boolean := False) return Node_Id;
-- Identical in effect to Duplicate_Subexpr, except that Remove_Checks is
-- called on the result, so that the duplicated expression does not include
-- checks. This is appropriate for use when Exp, the original expression is
-- unconditionally elaborated before the duplicated expression, so that
-- there is no need to repeat any checks.
- --
- -- Related_Id denotes the entity of the context where Expr appears. Flags
- -- Is_Low_Bound and Is_High_Bound specify whether the expression to check
- -- is the low or the high bound of a range. These three optional arguments
- -- signal Remove_Side_Effects to create an external symbol of the form
- -- Chars (Related_Id)_FIRST/_LAST. For suggested use of these parameters
- -- see the warning in the body of Sem_Ch3.Process_Range_Expr_In_Decl.
function Duplicate_Subexpr_Move_Checks
(Exp : Node_Id;