[Ada] Assertion_Policy for class-wide precondition
authorBob Duff <duff@adacore.com>
Tue, 17 Jul 2018 08:09:30 +0000 (08:09 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 17 Jul 2018 08:09:30 +0000 (08:09 +0000)
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  <duff@adacore.com>

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
gcc/ada/exp_disp.adb

index fd02931bf5cacc5e929a2bf7b7fc48303b35aa98..a07673088cd8ecc4af40d9bd20ac06732e6201cb 100644 (file)
@@ -1,3 +1,8 @@
+2018-07-17  Bob Duff  <duff@adacore.com>
+
+       * exp_disp.adb (Build_Class_Wide_Check): Return early if the
+       precondition is supposed to be ignored.
+
 2018-07-17  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_ch6.adb (Check_Untagged_Equality): Extend check to operations
index dbccfedebe29c8bc0842629f6d178d0e19b9b062..b0228154bc26b212187b6f7d25d2176562810541 100644 (file)
@@ -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;