diff options
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/sem_eval.adb | 13 |
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; |