| -- { dg-do run } |
| with Interfaces; use Interfaces; |
| procedure Exp0_Eval is |
| |
| F_Count : Natural := 0; |
| |
| function F return Integer is |
| begin |
| F_Count := F_Count + 1; |
| return 1; |
| end F; |
| |
| function F return Unsigned_32 is |
| begin |
| F_Count := F_Count + 1; |
| return 1; |
| end F; |
| |
| R : constant Integer := |
| F ** 0 + |
| F * 0 + |
| 0 * F + |
| Integer (Unsigned_32'(F) mod 1) + |
| Integer (Unsigned_32'(F) rem 1); |
| pragma Warnings (Off, R); |
| begin |
| if F_Count /= 5 then |
| raise Program_Error |
| with "incorrect numbers of calls to F:" & F_Count'Img; |
| end if; |
| end Exp0_Eval; |