checks.adb (Expr_Known_Valid): If floating-point validity checks are enabled...

2004-10-26  Ed Schonberg  <schonberg@gnat.com>

	* checks.adb (Expr_Known_Valid): If floating-point validity checks are
	enabled, check the result of unary and binary operations when the
	expression is the right-hand side of an assignment.

From-SVN: r89645
This commit is contained in:
Ed Schonberg 2004-10-27 14:29:32 +02:00 committed by Arnaud Charlet
parent 59705c38c6
commit 28e4d64e1b

View File

@ -3792,13 +3792,26 @@ package body Checks is
-- The result of any function call or operator is always considered
-- valid, since we assume the necessary checks are done by the call.
-- For operators on floating-point operations, we must also check
-- when the operation is the right-hand side of an assignment, or
-- is an actual in a call.
elsif Nkind (Expr) in N_Binary_Op
or else
Nkind (Expr) in N_Unary_Op
or else
Nkind (Expr) = N_Function_Call
elsif
Nkind (Expr) in N_Binary_Op or else Nkind (Expr) in N_Unary_Op
then
if Is_Floating_Point_Type (Typ)
and then Validity_Check_Floating_Point
and then
(Nkind (Parent (Expr)) = N_Assignment_Statement
or else Nkind (Parent (Expr)) = N_Function_Call
or else Nkind (Parent (Expr)) = N_Parameter_Association)
then
return False;
else
return True;
end if;
elsif Nkind (Expr) = N_Function_Call then
return True;
-- For all other cases, we do not know the expression is valid