-- { dg-do run } -- { dg-options "-O2 -gnatws" } procedure Discr45 is function Ident_Int (I : Integer) return Integer is begin return I; end; procedure Proc (Signal : Boolean) is subtype Index is Integer range 1..10; type My_Arr is array (Index range <>) OF Integer; type Rec (D3 : Integer := Ident_Int(1)) is record case D3 is when -5..10 => C1 : My_Arr(D3..Ident_Int(11)); when Others => C2 : Integer := Ident_Int(5); end case; end record; X : Rec; function Value return Rec; pragma No_Inline (Value); function Value return Rec is begin return X; end; begin if X /= Value then raise Constraint_Error; elsif Signal then raise Program_Error; end if; end; begin Proc (True); end;