blob: cc38af06a79b7b40add3495520349a68c1b871de [file] [log] [blame]
-- { 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" } }