exp_ch4.adb (Expand_N_In): Suppress range warnings in instances

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_In): Suppress range warnings in instances

From-SVN: r138649
This commit is contained in:
Robert Dewar 2008-08-04 20:50:33 +02:00 committed by Arnaud Charlet
parent 9b26c96e33
commit 94eefd2ef7

View File

@ -3873,6 +3873,12 @@ package body Exp_Ch4 is
and then Compile_Time_Known_Value (Hi)
and then Expr_Value (Type_High_Bound (Ltyp)) = Expr_Value (Hi)
and then Expr_Value (Type_Low_Bound (Ltyp)) = Expr_Value (Lo)
-- Kill warnings in instances, since they may be cases where we
-- have a test in the generic that makes sense with some types
-- and not with other types.
and then not In_Instance
then
Substitute_Valid_Check;
return;
@ -3886,7 +3892,7 @@ package body Exp_Ch4 is
-- legality checks, because we are constant-folding beyond RM 4.9.
if Lcheck = LT or else Ucheck = GT then
if Warn1 then
if Warn1 and then not In_Instance then
Error_Msg_N ("?range test optimized away", N);
Error_Msg_N ("\?value is known to be out of range", N);
end if;
@ -3902,7 +3908,7 @@ package body Exp_Ch4 is
-- since we know we are in range.
elsif Lcheck in Compare_GE and then Ucheck in Compare_LE then
if Warn1 then
if Warn1 and then not In_Instance then
Error_Msg_N ("?range test optimized away", N);
Error_Msg_N ("\?value is known to be in range", N);
end if;
@ -3919,7 +3925,7 @@ package body Exp_Ch4 is
-- a comparison against the upper bound.
elsif Lcheck in Compare_GE then
if Warn2 then
if Warn2 and then not In_Instance then
Error_Msg_N ("?lower bound test optimized away", Lo);
Error_Msg_N ("\?value is known to be in range", Lo);
end if;
@ -3937,7 +3943,7 @@ package body Exp_Ch4 is
-- a comparison against the lower bound.
elsif Ucheck in Compare_LE then
if Warn2 then
if Warn2 and then not In_Instance then
Error_Msg_N ("?upper bound test optimized away", Hi);
Error_Msg_N ("\?value is known to be in range", Hi);
end if;