| -- { dg-do compile } |
| -- { dg-options "-O2" } |
| |
| procedure Boolean_Subtype1 is |
| |
| subtype Component_T is Boolean; |
| |
| function Condition return Boolean is |
| begin |
| return True; |
| end; |
| |
| V : Integer := 0; |
| |
| function Component_Value return Integer is |
| begin |
| V := V + 1; |
| return V; |
| end; |
| |
| Most_Significant : Component_T := False; |
| Least_Significant : Component_T := True; |
| |
| begin |
| |
| if Condition then |
| Most_Significant := True; |
| end if; |
| |
| if Condition then |
| Least_Significant := Component_T'Val (Component_Value); |
| end if; |
| |
| if Least_Significant < Most_Significant then |
| Least_Significant := Most_Significant; |
| end if; |
| |
| if Least_Significant /= True then |
| raise Program_Error; |
| end if; |
| |
| end; |