1-- { dg-do compile } 2-- { dg-options "-O2" } 3 4procedure Boolean_Subtype1 is 5 6 subtype Component_T is Boolean; 7 8 function Condition return Boolean is 9 begin 10 return True; 11 end; 12 13 V : Integer := 0; 14 15 function Component_Value return Integer is 16 begin 17 V := V + 1; 18 return V; 19 end; 20 21 Most_Significant : Component_T := False; 22 Least_Significant : Component_T := True; 23 24begin 25 26 if Condition then 27 Most_Significant := True; 28 end if; 29 30 if Condition then 31 Least_Significant := Component_T'Val (Component_Value); 32 end if; 33 34 if Least_Significant < Most_Significant then 35 Least_Significant := Most_Significant; 36 end if; 37 38 if Least_Significant /= True then 39 raise Program_Error; 40 end if; 41 42end; 43