aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@adacore.com>2018-07-17 08:12:51 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-07-17 08:12:51 +0000
commit5b4f211d2a7f41f147413d0b756ffe56aec78230 (patch)
tree827468c1fc9b2610c598f1b2eb5f3fbaf086adae /gcc/ada
parented1707422002fb2efaa18f6abb790b0b10255c30 (diff)
downloadgcc-5b4f211d2a7f41f147413d0b756ffe56aec78230.zip
gcc-5b4f211d2a7f41f147413d0b756ffe56aec78230.tar.gz
gcc-5b4f211d2a7f41f147413d0b756ffe56aec78230.tar.bz2
[Ada] Preserve original CE reason in more cases
2018-07-17 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_eval.adb (Rewrite_In_Raise_CE): Keep the original reason in more cases. From-SVN: r262802
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/sem_eval.adb13
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 38db4d6..21b7bb8 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2018-07-17 Arnaud Charlet <charlet@adacore.com>
+ * sem_eval.adb (Rewrite_In_Raise_CE): Keep the original reason in more
+ cases.
+
+2018-07-17 Arnaud Charlet <charlet@adacore.com>
+
* checks.adb (Apply_Division_Check): Add provision for floating-point
checks.
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index 2bdf73d..51094cd 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -5707,9 +5707,16 @@ package body Sem_Eval is
-- Else build an explicit N_Raise_CE
else
- Rewrite (N,
- Make_Raise_Constraint_Error (Sloc (Exp),
- Reason => CE_Range_Check_Failed));
+ if Nkind (Exp) = N_Raise_Constraint_Error then
+ Rewrite (N,
+ Make_Raise_Constraint_Error (Sloc (Exp),
+ Reason => Reason (Exp)));
+ else
+ Rewrite (N,
+ Make_Raise_Constraint_Error (Sloc (Exp),
+ Reason => CE_Range_Check_Failed));
+ end if;
+
Set_Raises_Constraint_Error (N);
Set_Etype (N, Typ);
end if;