[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / U_coresyn.hs
1
2
3 module U_coresyn where
4 import UgenUtil
5 import Util
6
7 import U_list
8 import U_literal
9 import U_ttype
10 data U_coresyn = U_cobinder U_unkId U_ttype | U_colit U_literal | U_colocal U_coresyn | U_cononrec U_coresyn U_coresyn | U_corec U_list | U_corec_pair U_coresyn U_coresyn | U_covar U_coresyn | U_coliteral U_literal | U_cocon U_coresyn U_list U_list | U_coprim U_coresyn U_list U_list | U_colam U_list U_coresyn | U_cotylam U_list U_coresyn | U_coapp U_coresyn U_list | U_cotyapp U_coresyn U_ttype | U_cocase U_coresyn U_coresyn | U_colet U_coresyn U_coresyn | U_coscc U_coresyn U_coresyn | U_coalg_alts U_list U_coresyn | U_coalg_alt U_coresyn U_list U_coresyn | U_coprim_alts U_list U_coresyn | U_coprim_alt U_literal U_coresyn | U_conodeflt | U_cobinddeflt U_coresyn U_coresyn | U_co_primop U_stringId | U_co_ccall U_stringId U_long U_list U_ttype | U_co_casm U_literal U_long U_list U_ttype | U_co_preludedictscc U_coresyn | U_co_alldictscc U_hstring U_hstring U_coresyn | U_co_usercc U_hstring U_hstring U_hstring U_coresyn U_coresyn | U_co_autocc U_coresyn U_hstring U_hstring U_coresyn U_coresyn | U_co_dictcc U_coresyn U_hstring U_hstring U_coresyn U_coresyn | U_co_scc_noncaf | U_co_scc_caf | U_co_scc_nondupd | U_co_scc_dupd | U_co_id U_stringId | U_co_orig_id U_stringId U_stringId | U_co_sdselid U_unkId U_unkId | U_co_classopid U_unkId U_unkId | U_co_defmid U_unkId U_unkId | U_co_dfunid U_unkId U_ttype | U_co_constmid U_unkId U_unkId U_ttype | U_co_specid U_coresyn U_list | U_co_wrkrid U_coresyn 
11
12 rdU_coresyn :: _Addr -> UgnM U_coresyn
13 rdU_coresyn t
14   = ioToUgnM (_ccall_ tcoresyn t) `thenUgn` \ tag@(I# _) ->
15     if tag == ``cobinder'' then
16         ioToUgnM (_ccall_ gcobinder_v t) `thenUgn` \ x_gcobinder_v ->
17         rdU_unkId x_gcobinder_v `thenUgn` \ y_gcobinder_v ->
18         ioToUgnM (_ccall_ gcobinder_ty t) `thenUgn` \ x_gcobinder_ty ->
19         rdU_ttype x_gcobinder_ty `thenUgn` \ y_gcobinder_ty ->
20         returnUgn (U_cobinder y_gcobinder_v y_gcobinder_ty)
21     else if tag == ``colit'' then
22         ioToUgnM (_ccall_ gcolit t) `thenUgn` \ x_gcolit ->
23         rdU_literal x_gcolit `thenUgn` \ y_gcolit ->
24         returnUgn (U_colit y_gcolit)
25     else if tag == ``colocal'' then
26         ioToUgnM (_ccall_ gcolocal_v t) `thenUgn` \ x_gcolocal_v ->
27         rdU_coresyn x_gcolocal_v `thenUgn` \ y_gcolocal_v ->
28         returnUgn (U_colocal y_gcolocal_v)
29     else if tag == ``cononrec'' then
30         ioToUgnM (_ccall_ gcononrec_b t) `thenUgn` \ x_gcononrec_b ->
31         rdU_coresyn x_gcononrec_b `thenUgn` \ y_gcononrec_b ->
32         ioToUgnM (_ccall_ gcononrec_rhs t) `thenUgn` \ x_gcononrec_rhs ->
33         rdU_coresyn x_gcononrec_rhs `thenUgn` \ y_gcononrec_rhs ->
34         returnUgn (U_cononrec y_gcononrec_b y_gcononrec_rhs)
35     else if tag == ``corec'' then
36         ioToUgnM (_ccall_ gcorec t) `thenUgn` \ x_gcorec ->
37         rdU_list x_gcorec `thenUgn` \ y_gcorec ->
38         returnUgn (U_corec y_gcorec)
39     else if tag == ``corec_pair'' then
40         ioToUgnM (_ccall_ gcorec_b t) `thenUgn` \ x_gcorec_b ->
41         rdU_coresyn x_gcorec_b `thenUgn` \ y_gcorec_b ->
42         ioToUgnM (_ccall_ gcorec_rhs t) `thenUgn` \ x_gcorec_rhs ->
43         rdU_coresyn x_gcorec_rhs `thenUgn` \ y_gcorec_rhs ->
44         returnUgn (U_corec_pair y_gcorec_b y_gcorec_rhs)
45     else if tag == ``covar'' then
46         ioToUgnM (_ccall_ gcovar t) `thenUgn` \ x_gcovar ->
47         rdU_coresyn x_gcovar `thenUgn` \ y_gcovar ->
48         returnUgn (U_covar y_gcovar)
49     else if tag == ``coliteral'' then
50         ioToUgnM (_ccall_ gcoliteral t) `thenUgn` \ x_gcoliteral ->
51         rdU_literal x_gcoliteral `thenUgn` \ y_gcoliteral ->
52         returnUgn (U_coliteral y_gcoliteral)
53     else if tag == ``cocon'' then
54         ioToUgnM (_ccall_ gcocon_con t) `thenUgn` \ x_gcocon_con ->
55         rdU_coresyn x_gcocon_con `thenUgn` \ y_gcocon_con ->
56         ioToUgnM (_ccall_ gcocon_tys t) `thenUgn` \ x_gcocon_tys ->
57         rdU_list x_gcocon_tys `thenUgn` \ y_gcocon_tys ->
58         ioToUgnM (_ccall_ gcocon_args t) `thenUgn` \ x_gcocon_args ->
59         rdU_list x_gcocon_args `thenUgn` \ y_gcocon_args ->
60         returnUgn (U_cocon y_gcocon_con y_gcocon_tys y_gcocon_args)
61     else if tag == ``coprim'' then
62         ioToUgnM (_ccall_ gcoprim_op t) `thenUgn` \ x_gcoprim_op ->
63         rdU_coresyn x_gcoprim_op `thenUgn` \ y_gcoprim_op ->
64         ioToUgnM (_ccall_ gcoprim_tys t) `thenUgn` \ x_gcoprim_tys ->
65         rdU_list x_gcoprim_tys `thenUgn` \ y_gcoprim_tys ->
66         ioToUgnM (_ccall_ gcoprim_args t) `thenUgn` \ x_gcoprim_args ->
67         rdU_list x_gcoprim_args `thenUgn` \ y_gcoprim_args ->
68         returnUgn (U_coprim y_gcoprim_op y_gcoprim_tys y_gcoprim_args)
69     else if tag == ``colam'' then
70         ioToUgnM (_ccall_ gcolam_vars t) `thenUgn` \ x_gcolam_vars ->
71         rdU_list x_gcolam_vars `thenUgn` \ y_gcolam_vars ->
72         ioToUgnM (_ccall_ gcolam_body t) `thenUgn` \ x_gcolam_body ->
73         rdU_coresyn x_gcolam_body `thenUgn` \ y_gcolam_body ->
74         returnUgn (U_colam y_gcolam_vars y_gcolam_body)
75     else if tag == ``cotylam'' then
76         ioToUgnM (_ccall_ gcotylam_tvs t) `thenUgn` \ x_gcotylam_tvs ->
77         rdU_list x_gcotylam_tvs `thenUgn` \ y_gcotylam_tvs ->
78         ioToUgnM (_ccall_ gcotylam_body t) `thenUgn` \ x_gcotylam_body ->
79         rdU_coresyn x_gcotylam_body `thenUgn` \ y_gcotylam_body ->
80         returnUgn (U_cotylam y_gcotylam_tvs y_gcotylam_body)
81     else if tag == ``coapp'' then
82         ioToUgnM (_ccall_ gcoapp_fun t) `thenUgn` \ x_gcoapp_fun ->
83         rdU_coresyn x_gcoapp_fun `thenUgn` \ y_gcoapp_fun ->
84         ioToUgnM (_ccall_ gcoapp_args t) `thenUgn` \ x_gcoapp_args ->
85         rdU_list x_gcoapp_args `thenUgn` \ y_gcoapp_args ->
86         returnUgn (U_coapp y_gcoapp_fun y_gcoapp_args)
87     else if tag == ``cotyapp'' then
88         ioToUgnM (_ccall_ gcotyapp_e t) `thenUgn` \ x_gcotyapp_e ->
89         rdU_coresyn x_gcotyapp_e `thenUgn` \ y_gcotyapp_e ->
90         ioToUgnM (_ccall_ gcotyapp_t t) `thenUgn` \ x_gcotyapp_t ->
91         rdU_ttype x_gcotyapp_t `thenUgn` \ y_gcotyapp_t ->
92         returnUgn (U_cotyapp y_gcotyapp_e y_gcotyapp_t)
93     else if tag == ``cocase'' then
94         ioToUgnM (_ccall_ gcocase_s t) `thenUgn` \ x_gcocase_s ->
95         rdU_coresyn x_gcocase_s `thenUgn` \ y_gcocase_s ->
96         ioToUgnM (_ccall_ gcocase_alts t) `thenUgn` \ x_gcocase_alts ->
97         rdU_coresyn x_gcocase_alts `thenUgn` \ y_gcocase_alts ->
98         returnUgn (U_cocase y_gcocase_s y_gcocase_alts)
99     else if tag == ``colet'' then
100         ioToUgnM (_ccall_ gcolet_bind t) `thenUgn` \ x_gcolet_bind ->
101         rdU_coresyn x_gcolet_bind `thenUgn` \ y_gcolet_bind ->
102         ioToUgnM (_ccall_ gcolet_body t) `thenUgn` \ x_gcolet_body ->
103         rdU_coresyn x_gcolet_body `thenUgn` \ y_gcolet_body ->
104         returnUgn (U_colet y_gcolet_bind y_gcolet_body)
105     else if tag == ``coscc'' then
106         ioToUgnM (_ccall_ gcoscc_scc t) `thenUgn` \ x_gcoscc_scc ->
107         rdU_coresyn x_gcoscc_scc `thenUgn` \ y_gcoscc_scc ->
108         ioToUgnM (_ccall_ gcoscc_body t) `thenUgn` \ x_gcoscc_body ->
109         rdU_coresyn x_gcoscc_body `thenUgn` \ y_gcoscc_body ->
110         returnUgn (U_coscc y_gcoscc_scc y_gcoscc_body)
111     else if tag == ``coalg_alts'' then
112         ioToUgnM (_ccall_ gcoalg_alts t) `thenUgn` \ x_gcoalg_alts ->
113         rdU_list x_gcoalg_alts `thenUgn` \ y_gcoalg_alts ->
114         ioToUgnM (_ccall_ gcoalg_deflt t) `thenUgn` \ x_gcoalg_deflt ->
115         rdU_coresyn x_gcoalg_deflt `thenUgn` \ y_gcoalg_deflt ->
116         returnUgn (U_coalg_alts y_gcoalg_alts y_gcoalg_deflt)
117     else if tag == ``coalg_alt'' then
118         ioToUgnM (_ccall_ gcoalg_con t) `thenUgn` \ x_gcoalg_con ->
119         rdU_coresyn x_gcoalg_con `thenUgn` \ y_gcoalg_con ->
120         ioToUgnM (_ccall_ gcoalg_bs t) `thenUgn` \ x_gcoalg_bs ->
121         rdU_list x_gcoalg_bs `thenUgn` \ y_gcoalg_bs ->
122         ioToUgnM (_ccall_ gcoalg_rhs t) `thenUgn` \ x_gcoalg_rhs ->
123         rdU_coresyn x_gcoalg_rhs `thenUgn` \ y_gcoalg_rhs ->
124         returnUgn (U_coalg_alt y_gcoalg_con y_gcoalg_bs y_gcoalg_rhs)
125     else if tag == ``coprim_alts'' then
126         ioToUgnM (_ccall_ gcoprim_alts t) `thenUgn` \ x_gcoprim_alts ->
127         rdU_list x_gcoprim_alts `thenUgn` \ y_gcoprim_alts ->
128         ioToUgnM (_ccall_ gcoprim_deflt t) `thenUgn` \ x_gcoprim_deflt ->
129         rdU_coresyn x_gcoprim_deflt `thenUgn` \ y_gcoprim_deflt ->
130         returnUgn (U_coprim_alts y_gcoprim_alts y_gcoprim_deflt)
131     else if tag == ``coprim_alt'' then
132         ioToUgnM (_ccall_ gcoprim_lit t) `thenUgn` \ x_gcoprim_lit ->
133         rdU_literal x_gcoprim_lit `thenUgn` \ y_gcoprim_lit ->
134         ioToUgnM (_ccall_ gcoprim_rhs t) `thenUgn` \ x_gcoprim_rhs ->
135         rdU_coresyn x_gcoprim_rhs `thenUgn` \ y_gcoprim_rhs ->
136         returnUgn (U_coprim_alt y_gcoprim_lit y_gcoprim_rhs)
137     else if tag == ``conodeflt'' then
138         returnUgn (U_conodeflt )
139     else if tag == ``cobinddeflt'' then
140         ioToUgnM (_ccall_ gcobinddeflt_v t) `thenUgn` \ x_gcobinddeflt_v ->
141         rdU_coresyn x_gcobinddeflt_v `thenUgn` \ y_gcobinddeflt_v ->
142         ioToUgnM (_ccall_ gcobinddeflt_rhs t) `thenUgn` \ x_gcobinddeflt_rhs ->
143         rdU_coresyn x_gcobinddeflt_rhs `thenUgn` \ y_gcobinddeflt_rhs ->
144         returnUgn (U_cobinddeflt y_gcobinddeflt_v y_gcobinddeflt_rhs)
145     else if tag == ``co_primop'' then
146         ioToUgnM (_ccall_ gco_primop t) `thenUgn` \ x_gco_primop ->
147         rdU_stringId x_gco_primop `thenUgn` \ y_gco_primop ->
148         returnUgn (U_co_primop y_gco_primop)
149     else if tag == ``co_ccall'' then
150         ioToUgnM (_ccall_ gco_ccall t) `thenUgn` \ x_gco_ccall ->
151         rdU_stringId x_gco_ccall `thenUgn` \ y_gco_ccall ->
152         ioToUgnM (_ccall_ gco_ccall_may_gc t) `thenUgn` \ x_gco_ccall_may_gc ->
153         rdU_long x_gco_ccall_may_gc `thenUgn` \ y_gco_ccall_may_gc ->
154         ioToUgnM (_ccall_ gco_ccall_arg_tys t) `thenUgn` \ x_gco_ccall_arg_tys ->
155         rdU_list x_gco_ccall_arg_tys `thenUgn` \ y_gco_ccall_arg_tys ->
156         ioToUgnM (_ccall_ gco_ccall_res_ty t) `thenUgn` \ x_gco_ccall_res_ty ->
157         rdU_ttype x_gco_ccall_res_ty `thenUgn` \ y_gco_ccall_res_ty ->
158         returnUgn (U_co_ccall y_gco_ccall y_gco_ccall_may_gc y_gco_ccall_arg_tys y_gco_ccall_res_ty)
159     else if tag == ``co_casm'' then
160         ioToUgnM (_ccall_ gco_casm t) `thenUgn` \ x_gco_casm ->
161         rdU_literal x_gco_casm `thenUgn` \ y_gco_casm ->
162         ioToUgnM (_ccall_ gco_casm_may_gc t) `thenUgn` \ x_gco_casm_may_gc ->
163         rdU_long x_gco_casm_may_gc `thenUgn` \ y_gco_casm_may_gc ->
164         ioToUgnM (_ccall_ gco_casm_arg_tys t) `thenUgn` \ x_gco_casm_arg_tys ->
165         rdU_list x_gco_casm_arg_tys `thenUgn` \ y_gco_casm_arg_tys ->
166         ioToUgnM (_ccall_ gco_casm_res_ty t) `thenUgn` \ x_gco_casm_res_ty ->
167         rdU_ttype x_gco_casm_res_ty `thenUgn` \ y_gco_casm_res_ty ->
168         returnUgn (U_co_casm y_gco_casm y_gco_casm_may_gc y_gco_casm_arg_tys y_gco_casm_res_ty)
169     else if tag == ``co_preludedictscc'' then
170         ioToUgnM (_ccall_ gco_preludedictscc_dupd t) `thenUgn` \ x_gco_preludedictscc_dupd ->
171         rdU_coresyn x_gco_preludedictscc_dupd `thenUgn` \ y_gco_preludedictscc_dupd ->
172         returnUgn (U_co_preludedictscc y_gco_preludedictscc_dupd)
173     else if tag == ``co_alldictscc'' then
174         ioToUgnM (_ccall_ gco_alldictscc_m t) `thenUgn` \ x_gco_alldictscc_m ->
175         rdU_hstring x_gco_alldictscc_m `thenUgn` \ y_gco_alldictscc_m ->
176         ioToUgnM (_ccall_ gco_alldictscc_g t) `thenUgn` \ x_gco_alldictscc_g ->
177         rdU_hstring x_gco_alldictscc_g `thenUgn` \ y_gco_alldictscc_g ->
178         ioToUgnM (_ccall_ gco_alldictscc_dupd t) `thenUgn` \ x_gco_alldictscc_dupd ->
179         rdU_coresyn x_gco_alldictscc_dupd `thenUgn` \ y_gco_alldictscc_dupd ->
180         returnUgn (U_co_alldictscc y_gco_alldictscc_m y_gco_alldictscc_g y_gco_alldictscc_dupd)
181     else if tag == ``co_usercc'' then
182         ioToUgnM (_ccall_ gco_usercc_n t) `thenUgn` \ x_gco_usercc_n ->
183         rdU_hstring x_gco_usercc_n `thenUgn` \ y_gco_usercc_n ->
184         ioToUgnM (_ccall_ gco_usercc_m t) `thenUgn` \ x_gco_usercc_m ->
185         rdU_hstring x_gco_usercc_m `thenUgn` \ y_gco_usercc_m ->
186         ioToUgnM (_ccall_ gco_usercc_g t) `thenUgn` \ x_gco_usercc_g ->
187         rdU_hstring x_gco_usercc_g `thenUgn` \ y_gco_usercc_g ->
188         ioToUgnM (_ccall_ gco_usercc_dupd t) `thenUgn` \ x_gco_usercc_dupd ->
189         rdU_coresyn x_gco_usercc_dupd `thenUgn` \ y_gco_usercc_dupd ->
190         ioToUgnM (_ccall_ gco_usercc_cafd t) `thenUgn` \ x_gco_usercc_cafd ->
191         rdU_coresyn x_gco_usercc_cafd `thenUgn` \ y_gco_usercc_cafd ->
192         returnUgn (U_co_usercc y_gco_usercc_n y_gco_usercc_m y_gco_usercc_g y_gco_usercc_dupd y_gco_usercc_cafd)
193     else if tag == ``co_autocc'' then
194         ioToUgnM (_ccall_ gco_autocc_i t) `thenUgn` \ x_gco_autocc_i ->
195         rdU_coresyn x_gco_autocc_i `thenUgn` \ y_gco_autocc_i ->
196         ioToUgnM (_ccall_ gco_autocc_m t) `thenUgn` \ x_gco_autocc_m ->
197         rdU_hstring x_gco_autocc_m `thenUgn` \ y_gco_autocc_m ->
198         ioToUgnM (_ccall_ gco_autocc_g t) `thenUgn` \ x_gco_autocc_g ->
199         rdU_hstring x_gco_autocc_g `thenUgn` \ y_gco_autocc_g ->
200         ioToUgnM (_ccall_ gco_autocc_dupd t) `thenUgn` \ x_gco_autocc_dupd ->
201         rdU_coresyn x_gco_autocc_dupd `thenUgn` \ y_gco_autocc_dupd ->
202         ioToUgnM (_ccall_ gco_autocc_cafd t) `thenUgn` \ x_gco_autocc_cafd ->
203         rdU_coresyn x_gco_autocc_cafd `thenUgn` \ y_gco_autocc_cafd ->
204         returnUgn (U_co_autocc y_gco_autocc_i y_gco_autocc_m y_gco_autocc_g y_gco_autocc_dupd y_gco_autocc_cafd)
205     else if tag == ``co_dictcc'' then
206         ioToUgnM (_ccall_ gco_dictcc_i t) `thenUgn` \ x_gco_dictcc_i ->
207         rdU_coresyn x_gco_dictcc_i `thenUgn` \ y_gco_dictcc_i ->
208         ioToUgnM (_ccall_ gco_dictcc_m t) `thenUgn` \ x_gco_dictcc_m ->
209         rdU_hstring x_gco_dictcc_m `thenUgn` \ y_gco_dictcc_m ->
210         ioToUgnM (_ccall_ gco_dictcc_g t) `thenUgn` \ x_gco_dictcc_g ->
211         rdU_hstring x_gco_dictcc_g `thenUgn` \ y_gco_dictcc_g ->
212         ioToUgnM (_ccall_ gco_dictcc_dupd t) `thenUgn` \ x_gco_dictcc_dupd ->
213         rdU_coresyn x_gco_dictcc_dupd `thenUgn` \ y_gco_dictcc_dupd ->
214         ioToUgnM (_ccall_ gco_dictcc_cafd t) `thenUgn` \ x_gco_dictcc_cafd ->
215         rdU_coresyn x_gco_dictcc_cafd `thenUgn` \ y_gco_dictcc_cafd ->
216         returnUgn (U_co_dictcc y_gco_dictcc_i y_gco_dictcc_m y_gco_dictcc_g y_gco_dictcc_dupd y_gco_dictcc_cafd)
217     else if tag == ``co_scc_noncaf'' then
218         returnUgn (U_co_scc_noncaf )
219     else if tag == ``co_scc_caf'' then
220         returnUgn (U_co_scc_caf )
221     else if tag == ``co_scc_nondupd'' then
222         returnUgn (U_co_scc_nondupd )
223     else if tag == ``co_scc_dupd'' then
224         returnUgn (U_co_scc_dupd )
225     else if tag == ``co_id'' then
226         ioToUgnM (_ccall_ gco_id t) `thenUgn` \ x_gco_id ->
227         rdU_stringId x_gco_id `thenUgn` \ y_gco_id ->
228         returnUgn (U_co_id y_gco_id)
229     else if tag == ``co_orig_id'' then
230         ioToUgnM (_ccall_ gco_orig_id_m t) `thenUgn` \ x_gco_orig_id_m ->
231         rdU_stringId x_gco_orig_id_m `thenUgn` \ y_gco_orig_id_m ->
232         ioToUgnM (_ccall_ gco_orig_id_n t) `thenUgn` \ x_gco_orig_id_n ->
233         rdU_stringId x_gco_orig_id_n `thenUgn` \ y_gco_orig_id_n ->
234         returnUgn (U_co_orig_id y_gco_orig_id_m y_gco_orig_id_n)
235     else if tag == ``co_sdselid'' then
236         ioToUgnM (_ccall_ gco_sdselid_c t) `thenUgn` \ x_gco_sdselid_c ->
237         rdU_unkId x_gco_sdselid_c `thenUgn` \ y_gco_sdselid_c ->
238         ioToUgnM (_ccall_ gco_sdselid_sc t) `thenUgn` \ x_gco_sdselid_sc ->
239         rdU_unkId x_gco_sdselid_sc `thenUgn` \ y_gco_sdselid_sc ->
240         returnUgn (U_co_sdselid y_gco_sdselid_c y_gco_sdselid_sc)
241     else if tag == ``co_classopid'' then
242         ioToUgnM (_ccall_ gco_classopid_c t) `thenUgn` \ x_gco_classopid_c ->
243         rdU_unkId x_gco_classopid_c `thenUgn` \ y_gco_classopid_c ->
244         ioToUgnM (_ccall_ gco_classopid_o t) `thenUgn` \ x_gco_classopid_o ->
245         rdU_unkId x_gco_classopid_o `thenUgn` \ y_gco_classopid_o ->
246         returnUgn (U_co_classopid y_gco_classopid_c y_gco_classopid_o)
247     else if tag == ``co_defmid'' then
248         ioToUgnM (_ccall_ gco_defmid_c t) `thenUgn` \ x_gco_defmid_c ->
249         rdU_unkId x_gco_defmid_c `thenUgn` \ y_gco_defmid_c ->
250         ioToUgnM (_ccall_ gco_defmid_op t) `thenUgn` \ x_gco_defmid_op ->
251         rdU_unkId x_gco_defmid_op `thenUgn` \ y_gco_defmid_op ->
252         returnUgn (U_co_defmid y_gco_defmid_c y_gco_defmid_op)
253     else if tag == ``co_dfunid'' then
254         ioToUgnM (_ccall_ gco_dfunid_c t) `thenUgn` \ x_gco_dfunid_c ->
255         rdU_unkId x_gco_dfunid_c `thenUgn` \ y_gco_dfunid_c ->
256         ioToUgnM (_ccall_ gco_dfunid_ty t) `thenUgn` \ x_gco_dfunid_ty ->
257         rdU_ttype x_gco_dfunid_ty `thenUgn` \ y_gco_dfunid_ty ->
258         returnUgn (U_co_dfunid y_gco_dfunid_c y_gco_dfunid_ty)
259     else if tag == ``co_constmid'' then
260         ioToUgnM (_ccall_ gco_constmid_c t) `thenUgn` \ x_gco_constmid_c ->
261         rdU_unkId x_gco_constmid_c `thenUgn` \ y_gco_constmid_c ->
262         ioToUgnM (_ccall_ gco_constmid_op t) `thenUgn` \ x_gco_constmid_op ->
263         rdU_unkId x_gco_constmid_op `thenUgn` \ y_gco_constmid_op ->
264         ioToUgnM (_ccall_ gco_constmid_ty t) `thenUgn` \ x_gco_constmid_ty ->
265         rdU_ttype x_gco_constmid_ty `thenUgn` \ y_gco_constmid_ty ->
266         returnUgn (U_co_constmid y_gco_constmid_c y_gco_constmid_op y_gco_constmid_ty)
267     else if tag == ``co_specid'' then
268         ioToUgnM (_ccall_ gco_specid_un t) `thenUgn` \ x_gco_specid_un ->
269         rdU_coresyn x_gco_specid_un `thenUgn` \ y_gco_specid_un ->
270         ioToUgnM (_ccall_ gco_specid_tys t) `thenUgn` \ x_gco_specid_tys ->
271         rdU_list x_gco_specid_tys `thenUgn` \ y_gco_specid_tys ->
272         returnUgn (U_co_specid y_gco_specid_un y_gco_specid_tys)
273     else if tag == ``co_wrkrid'' then
274         ioToUgnM (_ccall_ gco_wrkrid_un t) `thenUgn` \ x_gco_wrkrid_un ->
275         rdU_coresyn x_gco_wrkrid_un `thenUgn` \ y_gco_wrkrid_un ->
276         returnUgn (U_co_wrkrid y_gco_wrkrid_un)
277     else
278         error ("rdU_coresyn: bad tag selection:"++show tag++"\n")