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;