| -- { dg-do run } |
| -- { dg-options "-O2 -gnatp" } |
| |
| procedure Opt95 is |
| |
| function Foo (J : Integer) return Integer; |
| pragma Pure_Function (Foo); |
| pragma Machine_Attribute (Foo, "noipa"); |
| |
| function Foo (J : Integer) return Integer is |
| begin |
| if J /= 0 then |
| raise Constraint_Error; |
| end if; |
| return 0; |
| end; |
| |
| function Bar (A : access Integer; N : Integer) return Integer; |
| pragma Machine_Attribute (Bar, "noipa"); |
| |
| function Bar (A : access Integer; N : Integer) return Integer is |
| Ret : Integer := 0; |
| Ret2 : Integer := 0; |
| begin |
| if N /= 0 then |
| Ret2 := Foo (N); |
| Ret := A.all; |
| end if; |
| Ret := Ret + A.all; |
| return Ret + Ret2; |
| end; |
| |
| V : Integer; |
| pragma Volatile (V); |
| |
| begin |
| V := Bar (null, 1); |
| exception |
| when Constraint_Error => null; |
| end; |