| -- { dg-do compile } |
| -- { dg-options "-gnata -gnateS" } |
| |
| procedure SCOs1 with SPARK_Mode => On is |
| |
| LEN_IN_BITS : constant := 20; |
| |
| M_SIZE_BYTES : constant := 2 ** LEN_IN_BITS; |
| ET_BYTES : constant := (M_SIZE_BYTES - 4); |
| |
| type T_BYTES is new Integer range 0 .. ET_BYTES with Size => 32; |
| subtype TYPE5_SCALAR is T_BYTES |
| with Dynamic_Predicate => TYPE5_SCALAR mod 4 = 0; |
| |
| type E_16_BYTES is new Integer; |
| subtype RD_BYTES is E_16_BYTES |
| with Dynamic_Predicate => RD_BYTES mod 4 = 0; |
| |
| function "-" (left : TYPE5_SCALAR; right : RD_BYTES) return TYPE5_SCALAR |
| is ( left - TYPE5_SCALAR(right) ) |
| with Pre => TYPE5_SCALAR(right) <= left and then |
| left - TYPE5_SCALAR(right) <= T_BYTES'Last, Inline_Always; |
| |
| begin |
| null; |
| end SCOs1; |