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