From db38c41b4b5529cb491116f090b1894ff6f9e9ae Mon Sep 17 00:00:00 2001 From: Bob Duff Date: Tue, 17 Jul 2018 08:09:30 +0000 Subject: [PATCH] [Ada] Assertion_Policy for class-wide precondition This patch fixes the compiler to that class-wide preconditions on primitive operations of interfaces are not checked at run time when the Assertion_Policy indicates that they should be ignored. This is required by the RM. 2018-07-17 Bob Duff gcc/ada/ * exp_disp.adb (Build_Class_Wide_Check): Return early if the precondition is supposed to be ignored. From-SVN: r262789 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/exp_disp.adb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index fd02931bf5c..a07673088cd 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2018-07-17 Bob Duff + + * exp_disp.adb (Build_Class_Wide_Check): Return early if the + precondition is supposed to be ignored. + 2018-07-17 Ed Schonberg * sem_ch6.adb (Check_Untagged_Equality): Extend check to operations diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb index dbccfedebe2..b0228154bc2 100644 --- a/gcc/ada/exp_disp.adb +++ b/gcc/ada/exp_disp.adb @@ -809,7 +809,7 @@ package body Exp_Disp is Prec := Next_Pragma (Prec); end loop; - if No (Prec) then + if No (Prec) or else Is_Ignored (Prec) then return; end if; -- 2.30.2