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
|
@ -5775,7 +5775,17 @@ package body Checks is
|
||||||
return Get_Discriminal (E, Bound);
|
return Get_Discriminal (E, Bound);
|
||||||
|
|
||||||
elsif Nkind (Bound) = N_Integer_Literal then
|
elsif Nkind (Bound) = N_Integer_Literal then
|
||||||
return Make_Integer_Literal (Loc, Intval (Bound));
|
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
|
else
|
||||||
return Duplicate_Subexpr_No_Checks (Bound);
|
return Duplicate_Subexpr_No_Checks (Bound);
|
||||||
|
|
Loading…
Reference in New Issue