| -- { dg-do run } | |
| -- { dg-options "-O" } | |
| procedure Loop_Optimization24 is | |
| procedure Callback is | |
| begin | |
| raise Constraint_Error; | |
| end; | |
| type Thread_Name_Ptr is access constant String; | |
| type Callback_Ptr is access procedure; | |
| type Callback_Information is record | |
| Name : Thread_Name_Ptr; | |
| Proc : Callback_Ptr; | |
| end record; | |
| type Callback_List is array (Positive range <>) of Callback_Information; | |
| Cbs : Callback_List | |
| := (1 => (Proc => Callback'access, name => new String'("Callback")), | |
| 2 => (Proc => Callback'access, name => new String'("Callback"))); | |
| begin | |
| for Index in Cbs'Range loop | |
| begin | |
| if Cbs(Index).proc /= null then | |
| Cbs(Index).proc.all; | |
| end if; | |
| exception | |
| when Constraint_Error => null; | |
| end; | |
| end loop; | |
| end; |