aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Dewar <dewar@adacore.com>2008-08-04 20:50:33 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2008-08-04 20:50:33 +0200
commit94eefd2ef77020f87a7787c294b6b01c3e67450a (patch)
treec105977260b390c93121633263e9152456397edf
parent9b26c96e339b9e546ffe5ac2a114af397bf4cd17 (diff)
downloadgcc-94eefd2ef77020f87a7787c294b6b01c3e67450a.zip
gcc-94eefd2ef77020f87a7787c294b6b01c3e67450a.tar.gz
gcc-94eefd2ef77020f87a7787c294b6b01c3e67450a.tar.bz2
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
-rw-r--r--gcc/ada/exp_ch4.adb14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 6b395ac..d0b60f3 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -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;