checks.adb (Get_E_First_Or_Last): When the expression being retrieved is an N_Raise_Constraint_Error node...
2005-03-08 Thomas Quinot <quinot@adacore.com> * checks.adb (Get_E_First_Or_Last): When the expression being retrieved is an N_Raise_Constraint_Error node, create a new copy of it without going through a call to Duplicate_Subexpr. From-SVN: r96491
This commit is contained in:
parent
2ca2bc8b83
commit
3a8b9f38bf
|
@ -5777,6 +5777,16 @@ package body Checks is
|
|||
elsif Nkind (Bound) = N_Integer_Literal then
|
||||
return Make_Integer_Literal (Loc, Intval (Bound));
|
||||
|
||||
-- Case of a bound that has been rewritten to an
|
||||
-- N_Raise_Constraint_Error node because it is an out-of-range
|
||||
-- value. We may not call Duplicate_Subexpr on this node because
|
||||
-- an N_Raise_Constraint_Error is not side effect free, and we may
|
||||
-- not assume that we are in the proper context to remove side
|
||||
-- effects on it at the point of reference.
|
||||
|
||||
elsif Nkind (Bound) = N_Raise_Constraint_Error then
|
||||
return New_Copy_Tree (Bound);
|
||||
|
||||
else
|
||||
return Duplicate_Subexpr_No_Checks (Bound);
|
||||
end if;
|
||||
|
|
Loading…
Reference in New Issue