1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 
4 #include "nimbase.h"
5 #include <string.h>
6 #undef LANGUAGE_C
7 #undef MIPSEB
8 #undef MIPSEL
9 #undef PPC
10 #undef R3000
11 #undef R4000
12 #undef i386
13 #undef linux
14 #undef mips
15 #undef near
16 #undef far
17 #undef powerpc
18 #undef unix
19 #define nimfr_(x, y)
20 #define nimln_(x, y)
21 typedef struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw;
22 typedef struct tyObject_TType__facALICuu8zUj0hjvbTLFg tyObject_TType__facALICuu8zUj0hjvbTLFg;
23 typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
24 typedef struct NimStringDesc NimStringDesc;
25 typedef struct TGenericSeq TGenericSeq;
26 typedef struct tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ;
27 typedef struct tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA;
28 typedef struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ;
29 typedef struct tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w;
30 typedef struct RootObj RootObj;
31 typedef struct TNimType TNimType;
32 typedef struct TNimNode TNimNode;
33 typedef struct tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g;
34 typedef struct tySequence__9aZVGG5Gtti9cC9bqRpXCtA3A tySequence__9aZVGG5Gtti9cC9bqRpXCtA3A;
35 typedef struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA;
36 typedef struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
37 typedef struct tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA;
38 typedef struct tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA;
39 typedef struct tySequence__Bre9bNyuQOg1EJKitjSzn8w tySequence__Bre9bNyuQOg1EJKitjSzn8w;
40 typedef struct tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA;
41 struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
42 NU16 line;
43 NI16 col;
44 NI32 fileIndex;
45 };
46 typedef NU32 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg;
47 typedef NU8 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw;
48 struct TGenericSeq {
49 NI len;
50 NI reserved;
51 };
52 struct NimStringDesc {
53   TGenericSeq Sup;
54 NIM_CHAR data[SEQ_DECL_SIZE];
55 };
56 struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw {
57 tyObject_TType__facALICuu8zUj0hjvbTLFg* typ;
58 tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
59 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg flags;
60 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind;
61 union{
62 struct {NI64 intVal;
63 } _kind_1;
64 struct {NF floatVal;
65 } _kind_2;
66 struct {NimStringDesc* strVal;
67 } _kind_3;
68 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* sym;
69 } _kind_4;
70 struct {tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* ident;
71 } _kind_5;
72 struct {tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
73 } _kind_6;
74 };
75 };
76 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
77 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
78 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
79 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
80 struct TNimType {
81 NI size;
82 NI align;
83 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
84 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
85 TNimType* base;
86 TNimNode* node;
87 void* finalizer;
88 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
89 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
90 };
91 struct RootObj {
92 TNimType* m_type;
93 };
94 struct tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g {
95 NI32 module;
96 NI32 item;
97 };
98 struct tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w {
99   RootObj Sup;
100 tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g itemId;
101 };
102 typedef NU8 tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
103 typedef NU8 tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA;
104 typedef NU64 tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
105 typedef NU8 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg;
106 typedef NU8 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw;
107 typedef NU16 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA;
108 struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA {
109 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg k;
110 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw storage;
111 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA flags;
112 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* lode;
113 tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* r;
114 };
115 struct tyObject_TType__facALICuu8zUj0hjvbTLFg {
116   tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w Sup;
117 tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind;
118 tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA callConv;
119 tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw flags;
120 tySequence__9aZVGG5Gtti9cC9bqRpXCtA3A* sons;
121 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
122 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* owner;
123 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* sym;
124 NI64 size;
125 NI16 align;
126 NI16 paddingAtEnd;
127 NI16 lockLevel;
128 tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
129 tyObject_TType__facALICuu8zUj0hjvbTLFg* typeInst;
130 tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g uniqueId;
131 };
132 typedef NU8 tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
133 typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__NbBRo5rVxVVQby3QsoZkZQ) (tyObject_TType__facALICuu8zUj0hjvbTLFg* t);
134 typedef NI tyArray__emiAJ8okywrJw7ZHLzlXbQ[34];
135 struct tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA {
136 NI elems;
137 NI counter;
138 NI max;
139 tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA* head;
140 tySequence__Bre9bNyuQOg1EJKitjSzn8w* data;
141 tyArray__emiAJ8okywrJw7ZHLzlXbQ a;
142 };
143 typedef NU8 tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg;
144 typedef NU8 tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw;
145 typedef NU8 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
146 typedef NU16 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg;
147 typedef NU64 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
148 typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
149 struct tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ {
150   tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w Sup;
151 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw kind;
152 union{
153 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* gcUnsafetyReason;
154 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* transformedBody;
155 } _kind_1;
156 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* guard;
157 NI bitsize;
158 NI alignment;
159 } _kind_2;
160 };
161 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg magic;
162 tyObject_TType__facALICuu8zUj0hjvbTLFg* typ;
163 tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* name;
164 tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
165 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* owner;
166 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw flags;
167 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ast;
168 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
169 NI position;
170 NI offset;
171 tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
172 tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA* annex;
173 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* constraint;
174 };
175 struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ {
176   TGenericSeq Sup;
177   tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
178 };
179 struct tySequence__9aZVGG5Gtti9cC9bqRpXCtA3A {
180   TGenericSeq Sup;
181   tyObject_TType__facALICuu8zUj0hjvbTLFg* data[SEQ_DECL_SIZE];
182 };
183 struct tySequence__Bre9bNyuQOg1EJKitjSzn8w {
184   TGenericSeq Sup;
185   tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA* data[SEQ_DECL_SIZE];
186 };
187 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsTyRef__types_648)(tyObject_TType__facALICuu8zUj0hjvbTLFg* typ);
188 static N_INLINE(NI, len__ast_3198)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
189 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, checkIsolate__isolation95check_112)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
190 static N_INLINE(NIM_BOOL, isCompileTimeOnly__types_3519)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t);
191 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canAlias__isolation95check_99)(tyObject_TType__facALICuu8zUj0hjvbTLFg* arg, tyObject_TType__facALICuu8zUj0hjvbTLFg* ret);
192 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isValueOnlyType__isolation95check_89)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t);
193 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, searchTypeFor__types_470)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t, tyProc__NbBRo5rVxVVQby3QsoZkZQ predicate);
194 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, wrap__isolation95check_92)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t);
195 static N_INLINE(void, nimZeroMem)(void* p, NI size);
196 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
197 static N_INLINE(void, initIntSet__pureZcollectionsZintsets_238)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* Result);
198 N_LIB_PRIVATE N_NIMCALL(void, initPackedSet__pureZcollectionsZintsets_16)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* Result);
199 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canAlias__isolation95check_5)(tyObject_TType__facALICuu8zUj0hjvbTLFg* arg, tyObject_TType__facALICuu8zUj0hjvbTLFg* ret, tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* marker);
200 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl__astalgo_402)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* s, NI key);
201 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, compareTypes__types_2659)(tyObject_TType__facALICuu8zUj0hjvbTLFg* x, tyObject_TType__facALICuu8zUj0hjvbTLFg* y, tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg cmp, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags);
202 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isFinal__types_750)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t);
203 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canAliasN__isolation95check_9)(tyObject_TType__facALICuu8zUj0hjvbTLFg* arg, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* marker);
204 N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, lastSon__ast_4832)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
205 static N_INLINE(NI, len__ast_4002)(tyObject_TType__facALICuu8zUj0hjvbTLFg* n);
206 N_LIB_PRIVATE N_NIMCALL(tyObject_TType__facALICuu8zUj0hjvbTLFg*, lastSon__ast_3743)(tyObject_TType__facALICuu8zUj0hjvbTLFg* n);
207 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsVariable__isolation95check_104)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
208 static N_INLINE(NI, safeLen__ast_3191)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_INLINE(NI,len__ast_3198)209 static N_INLINE(NI, len__ast_3198)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
210 	NI result;
211 	NI T1_;
212 	result = (NI)0;
213 	T1_ = ((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0);
214 	result = T1_;
215 	return result;
216 }
N_INLINE(NIM_BOOL,isCompileTimeOnly__types_3519)217 static N_INLINE(NIM_BOOL, isCompileTimeOnly__types_3519)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t) {
218 	NIM_BOOL result;
219 	result = (NIM_BOOL)0;
220 	result = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60));
221 	return result;
222 }
N_NIMCALL(NIM_BOOL,wrap__isolation95check_92)223 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, wrap__isolation95check_92)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t) {
224 	NIM_BOOL result;
225 	result = (NIM_BOOL)0;
226 	result = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47));
227 	return result;
228 }
N_NIMCALL(NIM_BOOL,isValueOnlyType__isolation95check_89)229 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isValueOnlyType__isolation95check_89)(tyObject_TType__facALICuu8zUj0hjvbTLFg* t) {
230 	NIM_BOOL result;
231 	NIM_BOOL T1_;
232 	result = (NIM_BOOL)0;
233 	T1_ = (NIM_BOOL)0;
234 	T1_ = searchTypeFor__types_470(t, wrap__isolation95check_92);
235 	result = !(T1_);
236 	return result;
237 }
N_INLINE(void,nimSetMem__systemZmemory_7)238 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
239 	void* T1_;
240 	T1_ = (void*)0;
241 	T1_ = memset(a, v, ((size_t) (size)));
242 }
N_INLINE(void,nimZeroMem)243 static N_INLINE(void, nimZeroMem)(void* p, NI size) {
244 	nimSetMem__systemZmemory_7(p, ((int) 0), size);
245 }
N_INLINE(void,initIntSet__pureZcollectionsZintsets_238)246 static N_INLINE(void, initIntSet__pureZcollectionsZintsets_238)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* Result) {
247 	initPackedSet__pureZcollectionsZintsets_16(Result);
248 }
N_NIMCALL(NIM_BOOL,canAliasN__isolation95check_9)249 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canAliasN__isolation95check_9)(tyObject_TType__facALICuu8zUj0hjvbTLFg* arg, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* marker) {
250 	NIM_BOOL result;
251 {	result = (NIM_BOOL)0;
252 	switch ((*n).kind) {
253 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138):
254 	{
255 		{
256 			NI i;
257 			NI colontmp_;
258 			NI i_2;
259 			i = (NI)0;
260 			colontmp_ = (NI)0;
261 			colontmp_ = len__ast_3198(n);
262 			i_2 = ((NI) 0);
263 			{
264 				while (1) {
265 					if (!(i_2 < colontmp_)) goto LA4;
266 					i = i_2;
267 					result = canAliasN__isolation95check_9(arg, (*n)._kind_6.sons->data[i], marker);
268 					{
269 						if (!result) goto LA7_;
270 						goto BeforeRet_;
271 					}
272 					LA7_: ;
273 					i_2 += ((NI) 1);
274 				} LA4: ;
275 			}
276 		}
277 	}
278 	break;
279 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
280 	{
281 		result = canAliasN__isolation95check_9(arg, (*n)._kind_6.sons->data[((NI) 0)], marker);
282 		{
283 			if (!result) goto LA12_;
284 			goto BeforeRet_;
285 		}
286 		LA12_: ;
287 		{
288 			NI i_3;
289 			NI colontmp__2;
290 			NI i_4;
291 			i_3 = (NI)0;
292 			colontmp__2 = (NI)0;
293 			colontmp__2 = len__ast_3198(n);
294 			i_4 = ((NI) 1);
295 			{
296 				while (1) {
297 					if (!(i_4 < colontmp__2)) goto LA16;
298 					i_3 = i_4;
299 					switch ((*(*n)._kind_6.sons->data[i_3]).kind) {
300 					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 85):
301 					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
302 					{
303 						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T18_;
304 						T18_ = NIM_NIL;
305 						T18_ = lastSon__ast_4832((*n)._kind_6.sons->data[i_3]);
306 						result = canAliasN__isolation95check_9(arg, T18_, marker);
307 						{
308 							if (!result) goto LA21_;
309 							goto BeforeRet_;
310 						}
311 						LA21_: ;
312 					}
313 					break;
314 					default:
315 					{
316 					}
317 					break;
318 					}
319 					i_4 += ((NI) 1);
320 				} LA16: ;
321 			}
322 		}
323 	}
324 	break;
325 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
326 	{
327 		result = canAlias__isolation95check_5(arg, (*(*n)._kind_4.sym).typ, marker);
328 	}
329 	break;
330 	default:
331 	{
332 	}
333 	break;
334 	}
335 	}BeforeRet_: ;
336 	return result;
337 }
N_INLINE(NI,len__ast_4002)338 static N_INLINE(NI, len__ast_4002)(tyObject_TType__facALICuu8zUj0hjvbTLFg* n) {
339 	NI result;
340 	NI T1_;
341 	result = (NI)0;
342 	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
343 	result = T1_;
344 	return result;
345 }
N_NIMCALL(NIM_BOOL,canAlias__isolation95check_5)346 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canAlias__isolation95check_5)(tyObject_TType__facALICuu8zUj0hjvbTLFg* arg, tyObject_TType__facALICuu8zUj0hjvbTLFg* ret, tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* marker) {
347 	NIM_BOOL result;
348 {	result = (NIM_BOOL)0;
349 	{
350 		tyObject_TType__facALICuu8zUj0hjvbTLFg* xX60gensym7_;
351 		NIM_BOOL T3_;
352 		xX60gensym7_ = ret;
353 		T3_ = (NIM_BOOL)0;
354 		T3_ = containsOrIncl__astalgo_402(marker, (NI)((NI)((NU32)(((NI) ((*xX60gensym7_).Sup.itemId.module))) << (NU32)(((NI) 20))) + ((NI) ((*xX60gensym7_).Sup.itemId.item))));
355 		if (!T3_) goto LA4_;
356 		result = NIM_FALSE;
357 		goto BeforeRet_;
358 	}
359 	LA4_: ;
360 	{
361 		if (!((*ret).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*ret).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 26))) goto LA8_;
362 		result = NIM_FALSE;
363 		goto BeforeRet_;
364 	}
365 	LA8_: ;
366 	{
367 		NIM_BOOL T12_;
368 		T12_ = (NIM_BOOL)0;
369 		T12_ = compareTypes__types_2659(arg, ret, ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 1), 0);
370 		if (!T12_) goto LA13_;
371 		result = NIM_TRUE;
372 		goto BeforeRet_;
373 	}
374 	LA13_: ;
375 	switch ((*ret).kind) {
376 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
377 	{
378 		{
379 			NIM_BOOL T18_;
380 			T18_ = (NIM_BOOL)0;
381 			T18_ = isFinal__types_750(ret);
382 			if (!T18_) goto LA19_;
383 			result = canAliasN__isolation95check_9(arg, (*ret).n, marker);
384 			{
385 				NIM_BOOL T23_;
386 				NIM_BOOL T24_;
387 				NI T26_;
388 				T23_ = (NIM_BOOL)0;
389 				T24_ = (NIM_BOOL)0;
390 				T24_ = !(result);
391 				if (!(T24_)) goto LA25_;
392 				T26_ = (NI)0;
393 				T26_ = len__ast_4002(ret);
394 				T24_ = (((NI) 0) < T26_);
395 				LA25_: ;
396 				T23_ = T24_;
397 				if (!(T23_)) goto LA27_;
398 				T23_ = !(((*ret).sons->data[((NI) 0)] == ((tyObject_TType__facALICuu8zUj0hjvbTLFg*) NIM_NIL)));
399 				LA27_: ;
400 				if (!T23_) goto LA28_;
401 				result = canAlias__isolation95check_5(arg, (*ret).sons->data[((NI) 0)], marker);
402 			}
403 			LA28_: ;
404 		}
405 		goto LA16_;
406 		LA19_: ;
407 		{
408 			result = NIM_TRUE;
409 		}
410 		LA16_: ;
411 	}
412 	break;
413 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
414 	{
415 		{
416 			NI i;
417 			NI colontmp_;
418 			NI i_2;
419 			i = (NI)0;
420 			colontmp_ = (NI)0;
421 			colontmp_ = len__ast_4002(ret);
422 			i_2 = ((NI) 0);
423 			{
424 				while (1) {
425 					if (!(i_2 < colontmp_)) goto LA34;
426 					i = i_2;
427 					result = canAlias__isolation95check_5(arg, (*ret).sons->data[i], marker);
428 					{
429 						if (!result) goto LA37_;
430 						goto LA32;
431 					}
432 					LA37_: ;
433 					i_2 += ((NI) 1);
434 				} LA34: ;
435 			}
436 		} LA32: ;
437 	}
438 	break;
439 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
440 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
441 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
442 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
443 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
444 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
445 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
446 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
447 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 45):
448 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
449 	{
450 		tyObject_TType__facALICuu8zUj0hjvbTLFg* T40_;
451 		T40_ = NIM_NIL;
452 		T40_ = lastSon__ast_3743(ret);
453 		result = canAlias__isolation95check_5(arg, T40_, marker);
454 	}
455 	break;
456 	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
457 	{
458 		result = ((*ret).callConv == ((tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA) 9));
459 	}
460 	break;
461 	default:
462 	{
463 		result = NIM_FALSE;
464 	}
465 	break;
466 	}
467 	}BeforeRet_: ;
468 	return result;
469 }
N_NIMCALL(NIM_BOOL,canAlias__isolation95check_99)470 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canAlias__isolation95check_99)(tyObject_TType__facALICuu8zUj0hjvbTLFg* arg, tyObject_TType__facALICuu8zUj0hjvbTLFg* ret) {
471 	NIM_BOOL result;
472 	result = (NIM_BOOL)0;
473 	{
474 		NIM_BOOL T3_;
475 		T3_ = (NIM_BOOL)0;
476 		T3_ = isValueOnlyType__isolation95check_89(arg);
477 		if (!T3_) goto LA4_;
478 		result = NIM_FALSE;
479 	}
480 	goto LA1_;
481 	LA4_: ;
482 	{
483 		tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA marker;
484 		nimZeroMem((void*)(&marker), sizeof(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA));
485 		initIntSet__pureZcollectionsZintsets_238((&marker));
486 		result = canAlias__isolation95check_5(arg, ret, (&marker));
487 	}
488 	LA1_: ;
489 	return result;
490 }
N_INLINE(NI,safeLen__ast_3191)491 static N_INLINE(NI, safeLen__ast_3191)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
492 	NI result;
493 	result = (NI)0;
494 	{
495 		if (!((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA3_;
496 		result = ((NI) 0);
497 	}
498 	goto LA1_;
499 	LA3_: ;
500 	{
501 		result = len__ast_3198(n);
502 	}
503 	LA1_: ;
504 	return result;
505 }
N_NIMCALL(NIM_BOOL,containsVariable__isolation95check_104)506 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsVariable__isolation95check_104)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
507 	NIM_BOOL result;
508 {	result = (NIM_BOOL)0;
509 	switch ((*n).kind) {
510 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
511 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
512 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 52):
513 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 84):
514 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 90):
515 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 98):
516 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 101) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 102):
517 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 116):
518 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 118):
519 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 121) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 123):
520 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 125):
521 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 132):
522 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 158) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 159):
523 	{
524 		result = NIM_FALSE;
525 	}
526 	break;
527 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
528 	{
529 		result = ((2101032 &((NU32)1<<((NU)((*(*n)._kind_4.sym).kind)&31U)))!=0);
530 	}
531 	break;
532 	default:
533 	{
534 		{
535 			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ch;
536 			ch = NIM_NIL;
537 			{
538 				NI i;
539 				NI colontmp_;
540 				NI i_2;
541 				i = (NI)0;
542 				colontmp_ = (NI)0;
543 				colontmp_ = safeLen__ast_3191(n);
544 				i_2 = ((NI) 0);
545 				{
546 					while (1) {
547 						if (!(i_2 < colontmp_)) goto LA7;
548 						i = i_2;
549 						ch = (*n)._kind_6.sons->data[i];
550 						{
551 							NIM_BOOL T10_;
552 							T10_ = (NIM_BOOL)0;
553 							T10_ = containsVariable__isolation95check_104(ch);
554 							if (!T10_) goto LA11_;
555 							result = NIM_TRUE;
556 							goto BeforeRet_;
557 						}
558 						LA11_: ;
559 						i_2 += ((NI) 1);
560 					} LA7: ;
561 				}
562 			}
563 		}
564 		result = NIM_FALSE;
565 	}
566 	break;
567 	}
568 	}BeforeRet_: ;
569 	return result;
570 }
N_NIMCALL(NIM_BOOL,checkIsolate__isolation95check_112)571 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, checkIsolate__isolation95check_112)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
572 	NIM_BOOL result;
573 {	result = (NIM_BOOL)0;
574 	{
575 		NIM_BOOL T3_;
576 		T3_ = (NIM_BOOL)0;
577 		T3_ = containsTyRef__types_648((*n).typ);
578 		if (!T3_) goto LA4_;
579 		switch ((*n).kind) {
580 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
581 		{
582 			result = NIM_TRUE;
583 		}
584 		break;
585 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 26) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 32):
586 		{
587 			{
588 				if (!!((((*(*(*n)._kind_6.sons->data[((NI) 0)]).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 1))&63U)))!=0))) goto LA10_;
589 				result = NIM_FALSE;
590 				goto BeforeRet_;
591 			}
592 			LA10_: ;
593 			{
594 				NI i;
595 				NI colontmp_;
596 				NI i_2;
597 				i = (NI)0;
598 				colontmp_ = (NI)0;
599 				colontmp_ = len__ast_3198(n);
600 				i_2 = ((NI) 1);
601 				{
602 					while (1) {
603 						if (!(i_2 < colontmp_)) goto LA14;
604 						i = i_2;
605 						{
606 							NIM_BOOL T17_;
607 							T17_ = (NIM_BOOL)0;
608 							T17_ = checkIsolate__isolation95check_112((*n)._kind_6.sons->data[i]);
609 							if (!T17_) goto LA18_;
610 						}
611 						goto LA15_;
612 						LA18_: ;
613 						{
614 							tyObject_TType__facALICuu8zUj0hjvbTLFg* argType;
615 							argType = (*(*n)._kind_6.sons->data[i]).typ;
616 							{
617 								NIM_BOOL T23_;
618 								NIM_BOOL T24_;
619 								NIM_BOOL T26_;
620 								T23_ = (NIM_BOOL)0;
621 								T24_ = (NIM_BOOL)0;
622 								T24_ = !((argType == ((tyObject_TType__facALICuu8zUj0hjvbTLFg*) NIM_NIL)));
623 								if (!(T24_)) goto LA25_;
624 								T26_ = (NIM_BOOL)0;
625 								T26_ = isCompileTimeOnly__types_3519(argType);
626 								T24_ = !(T26_);
627 								LA25_: ;
628 								T23_ = T24_;
629 								if (!(T23_)) goto LA27_;
630 								T23_ = containsTyRef__types_648(argType);
631 								LA27_: ;
632 								if (!T23_) goto LA28_;
633 								{
634 									NIM_BOOL T32_;
635 									T32_ = (NIM_BOOL)0;
636 									T32_ = canAlias__isolation95check_99(argType, (*n).typ);
637 									if (T32_) goto LA33_;
638 									T32_ = containsVariable__isolation95check_104((*n)._kind_6.sons->data[i]);
639 									LA33_: ;
640 									if (!T32_) goto LA34_;
641 									result = NIM_FALSE;
642 									goto BeforeRet_;
643 								}
644 								LA34_: ;
645 							}
646 							LA28_: ;
647 						}
648 						LA15_: ;
649 						i_2 += ((NI) 1);
650 					} LA14: ;
651 				}
652 			}
653 			result = NIM_TRUE;
654 		}
655 		break;
656 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 92):
657 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 48):
658 		{
659 			{
660 				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* it;
661 				it = NIM_NIL;
662 				{
663 					NI i_3;
664 					NI colontmp__2;
665 					NI i_4;
666 					i_3 = (NI)0;
667 					colontmp__2 = (NI)0;
668 					colontmp__2 = safeLen__ast_3191(n);
669 					i_4 = ((NI) 0);
670 					{
671 						while (1) {
672 							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T41_;
673 							if (!(i_4 < colontmp__2)) goto LA40;
674 							i_3 = i_4;
675 							it = (*n)._kind_6.sons->data[i_3];
676 							T41_ = NIM_NIL;
677 							T41_ = lastSon__ast_4832(it);
678 							result = checkIsolate__isolation95check_112(T41_);
679 							{
680 								if (!!(result)) goto LA44_;
681 								goto LA37;
682 							}
683 							LA44_: ;
684 							i_4 += ((NI) 1);
685 						} LA40: ;
686 					}
687 				}
688 			} LA37: ;
689 		}
690 		break;
691 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 97):
692 		{
693 			{
694 				NI i_5;
695 				NI colontmp__3;
696 				NI i_6;
697 				i_5 = (NI)0;
698 				colontmp__3 = (NI)0;
699 				colontmp__3 = len__ast_3198(n);
700 				i_6 = ((NI) 1);
701 				{
702 					while (1) {
703 						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T50_;
704 						if (!(i_6 < colontmp__3)) goto LA49;
705 						i_5 = i_6;
706 						T50_ = NIM_NIL;
707 						T50_ = lastSon__ast_4832((*n)._kind_6.sons->data[i_5]);
708 						result = checkIsolate__isolation95check_112(T50_);
709 						{
710 							if (!!(result)) goto LA53_;
711 							goto LA47;
712 						}
713 						LA53_: ;
714 						i_6 += ((NI) 1);
715 					} LA49: ;
716 				}
717 			} LA47: ;
718 		}
719 		break;
720 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 38):
721 		{
722 			result = NIM_TRUE;
723 			{
724 				NI i_7;
725 				NI colontmp__4;
726 				NI i_8;
727 				i_7 = (NI)0;
728 				colontmp__4 = (NI)0;
729 				colontmp__4 = len__ast_3198(n);
730 				i_8 = ((NI) 1);
731 				{
732 					while (1) {
733 						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T59_;
734 						if (!(i_8 < colontmp__4)) goto LA58;
735 						i_7 = i_8;
736 						T59_ = NIM_NIL;
737 						T59_ = lastSon__ast_4832((*n)._kind_6.sons->data[i_7]);
738 						result = checkIsolate__isolation95check_112(T59_);
739 						{
740 							if (!!(result)) goto LA62_;
741 							goto LA56;
742 						}
743 						LA62_: ;
744 						i_8 += ((NI) 1);
745 					} LA58: ;
746 				}
747 			} LA56: ;
748 		}
749 		break;
750 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 41):
751 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 160):
752 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 37):
753 		{
754 			{
755 				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* it_2;
756 				it_2 = NIM_NIL;
757 				{
758 					NI i_9;
759 					NI colontmp__5;
760 					NI i_10;
761 					i_9 = (NI)0;
762 					colontmp__5 = (NI)0;
763 					colontmp__5 = safeLen__ast_3191(n);
764 					i_10 = ((NI) 0);
765 					{
766 						while (1) {
767 							if (!(i_10 < colontmp__5)) goto LA68;
768 							i_9 = i_10;
769 							it_2 = (*n)._kind_6.sons->data[i_9];
770 							result = checkIsolate__isolation95check_112(it_2);
771 							{
772 								if (!!(result)) goto LA71_;
773 								goto LA65;
774 							}
775 							LA71_: ;
776 							i_10 += ((NI) 1);
777 						} LA68: ;
778 					}
779 				}
780 			} LA65: ;
781 		}
782 		break;
783 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 58):
784 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 59):
785 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 61):
786 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 60):
787 		{
788 			result = checkIsolate__isolation95check_112((*n)._kind_6.sons->data[((NI) 1)]);
789 		}
790 		break;
791 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 67):
792 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 66):
793 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 45):
794 		{
795 			result = checkIsolate__isolation95check_112((*n)._kind_6.sons->data[((NI) 0)]);
796 		}
797 		break;
798 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 115):
799 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 126):
800 		{
801 			{
802 				NI T78_;
803 				NI T81_;
804 				T78_ = (NI)0;
805 				T78_ = len__ast_3198(n);
806 				if (!(((NI) 0) < T78_)) goto LA79_;
807 				T81_ = (NI)0;
808 				T81_ = len__ast_3198(n);
809 				result = checkIsolate__isolation95check_112((*n)._kind_6.sons->data[(NI)(T81_ - ((NI) 1))]);
810 			}
811 			goto LA76_;
812 			LA79_: ;
813 			{
814 				result = NIM_FALSE;
815 			}
816 			LA76_: ;
817 		}
818 		break;
819 		default:
820 		{
821 			result = NIM_FALSE;
822 		}
823 		break;
824 		}
825 	}
826 	goto LA1_;
827 	LA4_: ;
828 	{
829 		result = NIM_TRUE;
830 	}
831 	LA1_: ;
832 	}BeforeRet_: ;
833 	return result;
834 }
835