aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2005-07-04 15:27:32 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2005-07-04 15:27:32 +0200
commit3b641023b36ac88164d64851ee5e45fc365937cc (patch)
tree101f3dee509d9d4f866608dbae64b745e938791a
parentd9e0a58787285a0753791dd83a5d831bbbc92117 (diff)
downloadgcc-3b641023b36ac88164d64851ee5e45fc365937cc.zip
gcc-3b641023b36ac88164d64851ee5e45fc365937cc.tar.gz
gcc-3b641023b36ac88164d64851ee5e45fc365937cc.tar.bz2
exp_attr.adb (Mod): Evaluate condition expression with checks off, to prevent spurious warnings.
2005-07-04 Ed Schonberg <schonberg@adacore.com> * exp_attr.adb (Mod): Evaluate condition expression with checks off, to prevent spurious warnings. From-SVN: r101577
-rw-r--r--gcc/ada/exp_attr.adb8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index e80a15d..0c43d59 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -2372,7 +2372,7 @@ package body Exp_Attr is
Right_Opnd => Make_Integer_Literal (Loc, Modv))));
-- Here we know that the modulus is larger than type'Last of the
- -- integer type. There are three possible cases to consider:
+ -- integer type. There are two cases to consider:
-- a) The integer value is non-negative. In this case, it is
-- returned as the result (since it is less than the modulus).
@@ -2393,6 +2393,10 @@ package body Exp_Attr is
-- Furthermore, (-value - 1) can be expressed as -(value + 1)
-- which we can compute using the integer base type.
+ -- Once this is done we analyze the conditional expression without
+ -- range checks, because we know everything is in range, and we
+ -- want to prevent spurious warnings on either branch.
+
else
Rewrite (N,
Make_Conditional_Expression (Loc,
@@ -2420,7 +2424,7 @@ package body Exp_Attr is
end if;
- Analyze_And_Resolve (N, Btyp);
+ Analyze_And_Resolve (N, Btyp, All_Checks);
end Mod_Case;
-----------