1-- { dg-do run } 2-- { dg-options "-O" } 3 4with Opt67_Pkg; use Opt67_Pkg; 5 6procedure Opt67 is 7 8 function Predef_Stream_Attr_Spec 9 (Loc : Source_Ptr; 10 Tag_Typ : Entity_Id; 11 Name : TSS_Name_Type) return Node_Id is 12 begin 13 return Predef (Loc, Make_TSS_Name (Tag_Typ, Name), Tag_Typ); 14 end; 15 16 Stream_Op_TSS_Names : 17 constant array (Integer range <>) of TSS_Name_Type := 18 (TSS_Stream_Read, 19 TSS_Stream_Write, 20 TSS_Stream_Input, 21 TSS_Stream_Output); 22 23 Tag_Typ : constant Entity_Id := Entity_Id(Init); 24 Res : constant Natural := Init; 25 Loc : constant Source_Ptr := Source_Ptr(Init); 26 27begin 28 for Op in Stream_Op_TSS_Names'Range loop 29 if Stream_Operation_OK (Tag_Typ, Stream_Op_TSS_Names (Op)) then 30 Append_To (Res, 31 Predef_Stream_Attr_Spec (Loc, Tag_Typ, 32 Stream_Op_TSS_Names (Op))); 33 end if; 34 end loop; 35end; 36