| -- { dg-do run } |
| -- { dg-options "-O" } |
| |
| with Opt67_Pkg; use Opt67_Pkg; |
| |
| procedure Opt67 is |
| |
| function Predef_Stream_Attr_Spec |
| (Loc : Source_Ptr; |
| Tag_Typ : Entity_Id; |
| Name : TSS_Name_Type) return Node_Id is |
| begin |
| return Predef (Loc, Make_TSS_Name (Tag_Typ, Name), Tag_Typ); |
| end; |
| |
| Stream_Op_TSS_Names : |
| constant array (Integer range <>) of TSS_Name_Type := |
| (TSS_Stream_Read, |
| TSS_Stream_Write, |
| TSS_Stream_Input, |
| TSS_Stream_Output); |
| |
| Tag_Typ : constant Entity_Id := Entity_Id(Init); |
| Res : constant Natural := Init; |
| Loc : constant Source_Ptr := Source_Ptr(Init); |
| |
| begin |
| for Op in Stream_Op_TSS_Names'Range loop |
| if Stream_Operation_OK (Tag_Typ, Stream_Op_TSS_Names (Op)) then |
| Append_To (Res, |
| Predef_Stream_Attr_Spec (Loc, Tag_Typ, |
| Stream_Op_TSS_Names (Op))); |
| end if; |
| end loop; |
| end; |