-- { dg-do compile } -- { dg-options "-gnata" } procedure Predicate11 is type T_BYTES is new Integer range 0 .. 2**15 - 1 with Size => 32; subtype TYPE5_SCALAR is T_BYTES with Dynamic_Predicate => TYPE5_SCALAR mod 4 = 0; subtype Cond is Integer with dynamic_predicate => (if cond < 5 then false else True); Thing1 : Type5_Scalar := 7; -- { dg-warning "check will fail at run time" } function OK (C :Type5_scalar) return Boolean is (True); Thing2 : Type5_Scalar; Thing3 : Cond; begin if not OK (7) then raise Program_Error; end if; -- { dg-warning "check will fail at run time" } Thing2 := 8; Thing3 := 1; -- { dg-warning "check will fail at run time" } end;