Recent improvements in the handling of discriminants and discriminant
checks made an assert failure appear on complex code.
It appears that the assertions in einfo.adb (Discriminant_Constraint) is
too strict.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

        * einfo.adb (Discriminant_Constraint): Refine assertion.
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -1120,7 +1120,9 @@ package body Einfo is
 
    function Discriminant_Constraint (Id : E) return L is
    begin
-      pragma Assert (Is_Composite_Type (Id) and then Has_Discriminants (Id));
+      pragma Assert
+        (Is_Composite_Type (Id)
+          and then (Has_Discriminants (Id) or else Is_Constrained (Id)));
       return Elist21 (Id);
    end Discriminant_Constraint;
 


Reply via email to