-- { dg-do compile } -- { dg-options "-O -gnatVT -fdump-tree-optimized" } -- Check that we perform the expected validity checks for -- hardbool-annotated types, even when checking of tests is disabled. package body Hardbool is function T return Boolean is (Boolean (X) and then Boolean (Y)); procedure P1 is begin X := HBool1 (not Y); end P1; procedure P2 is begin X := HBool1 (if Y then HBool2'(False) else HBool2'(True)); end P2; procedure P3 is begin X := (if Y then HBool1'(False) else HBool1'(True)); end P3; procedure Q1 is begin Y := HBool2 (not X); end Q1; procedure Q2 is begin Y := HBool2 (if X then HBool1'(False) else HBool1'(True)); end Q2; procedure Q3 is begin Y := (if X then HBool2'(False) else HBool2'(True)); end Q3; end Hardbool; -- One for each type's _rep_to_pos function. -- { dg-final { scan-tree-dump-times "gnat_rcheck_CE_Invalid_Data ..hardbool.ads" 2 "optimized" } } -- One check for each variable used in T, one use in each P* and in each Q*. -- { dg-final { scan-tree-dump-times "gnat_rcheck_CE_Invalid_Data ..hardbool.adb" 8 "optimized" } }