diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-04 18:50:33 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-04 18:50:33 +0000 |
commit | 0a5994cb1e3bf6bb7976eac196a83db7040f0758 (patch) | |
tree | c105977260b390c93121633263e9152456397edf /gcc/ada/exp_ch4.adb | |
parent | 38aea1aa1a509f3b37e8b571973e5a8a06db358e (diff) | |
download | gcc-0a5994cb1e3bf6bb7976eac196a83db7040f0758.tar.gz |
2008-08-04 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_N_In): Suppress range warnings in instances
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138649 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_ch4.adb')
-rw-r--r-- | gcc/ada/exp_ch4.adb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 6b395ac6898..d0b60f313f7 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; |