aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorJavier Miranda <miranda@adacore.com>2019-07-09 07:54:19 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-07-09 07:54:19 +0000
commit5da544339b2b3b3d00d3dd5b91c06d2d09a386b2 (patch)
tree36f448a457bcf9b1d7ea86364fc4e3743f7c5b83 /gcc/ada
parentff606db0166573fee17f6d81895f7d882fd15169 (diff)
downloadgcc-5da544339b2b3b3d00d3dd5b91c06d2d09a386b2.zip
gcc-5da544339b2b3b3d00d3dd5b91c06d2d09a386b2.tar.gz
gcc-5da544339b2b3b3d00d3dd5b91c06d2d09a386b2.tar.bz2
[Ada] Missing runtime range checks with -gnatVa
Under validity checking mode the compiler may silently skip generating code to perform runtime range checks. 2019-07-09 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_util.adb (Remove_Side_Effects): Preserve the Do_Range_Check flag. gcc/testsuite/ * gnat.dg/range_check3.adb, gnat.dg/range_check3_pkg.adb, gnat.dg/range_check3_pkg.ads: New testcase. From-SVN: r273278
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/exp_util.adb4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 17c27abc..e5aba8b 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2019-07-09 Javier Miranda <miranda@adacore.com>
+
+ * exp_util.adb (Remove_Side_Effects): Preserve the
+ Do_Range_Check flag.
+
2019-07-09 Yannick Moy <moy@adacore.com>
* sinfo.ads: Refine comment for Do_Range_Check.
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 6f73ec3..77809bc 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -11693,6 +11693,10 @@ package body Exp_Util is
Set_Assignment_OK (Res, Assignment_OK (Exp));
+ -- Preserve the Do_Range_Check flag in all copies.
+
+ Set_Do_Range_Check (Res, Do_Range_Check (Exp));
+
-- Finally rewrite the original expression and we are done
Rewrite (Exp, Res);