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:
parent
9b26c96e33
commit
94eefd2ef7
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user