csources_v2/c_code/3_17/@moptimizer.nim.c
2022-12-16 10:54:01 +08:00

1642 lines
55 KiB
C

/* Generated by Nim Compiler v1.9.0 */
#define NIM_INTBITS 64
#define NIM_EmulateOverflowChecks
#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q;
typedef struct tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag;
typedef struct tySequence__xxu3GgaFAGO6lOns9aHaeLQ tySequence__xxu3GgaFAGO6lOns9aHaeLQ;
typedef struct tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content;
typedef struct tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA;
typedef struct tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ;
typedef struct tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA;
typedef struct tyObject_TLineInfo__7ZAGqjaN6WqWPlHP9cRagRg tyObject_TLineInfo__7ZAGqjaN6WqWPlHP9cRagRg;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
typedef struct tyObject_TIdent__L29bfCasnfXpB7u88iPkwMA tyObject_TIdent__L29bfCasnfXpB7u88iPkwMA;
typedef struct tyObject_TIdObj__jPSvrmNCWI4CL3MSWxUHJQ tyObject_TIdObj__jPSvrmNCWI4CL3MSWxUHJQ;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_ItemId__RG5oiYa2xm9bBBKInuP3ECw tyObject_ItemId__RG5oiYa2xm9bBBKInuP3ECw;
typedef struct tyObject_TLoc__cQfx3WjJDtozqFtY4RdR9cA tyObject_TLoc__cQfx3WjJDtozqFtY4RdR9cA;
typedef struct tyObject_TLib__tP0u9cd1FuZgfCfM3WIm9cRg tyObject_TLib__tP0u9cd1FuZgfCfM3WIm9cRg;
typedef struct tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA;
typedef struct tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA;
typedef struct tySequence__Bre9bNyuQOg1EJKitjSzn8w tySequence__Bre9bNyuQOg1EJKitjSzn8w;
typedef struct tySequence__Bre9bNyuQOg1EJKitjSzn8w_Content tySequence__Bre9bNyuQOg1EJKitjSzn8w_Content;
typedef struct tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A;
typedef struct tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ;
typedef struct tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ_Content tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ_Content;
struct tySequence__xxu3GgaFAGO6lOns9aHaeLQ {
NI len; tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content* p;
};
typedef NU8 tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ;
struct tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag {
tySequence__xxu3GgaFAGO6lOns9aHaeLQ wasMovedLocs;
tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ kind;
NIM_BOOL hasReturn;
NIM_BOOL hasBreak;
tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* label;
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* parent;
};
struct tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ {
NIM_BOOL somethingTodo;
NI inFinally;
};
struct tyObject_TLineInfo__7ZAGqjaN6WqWPlHP9cRagRg {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU32 tySet_tyEnum_TNodeFlag__69c8WThOUT3nlaj2cOZ9c2dw;
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
struct tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q {
tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA* typ;
tyObject_TLineInfo__7ZAGqjaN6WqWPlHP9cRagRg info;
tySet_tyEnum_TNodeFlag__69c8WThOUT3nlaj2cOZ9c2dw flags;
tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ kind;
union{
struct {NI64 intVal;
} _kind_1;
struct {NF floatVal;
} _kind_2;
struct {NimStringV2 strVal;
} _kind_3;
struct {tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* sym;
} _kind_4;
struct {tyObject_TIdent__L29bfCasnfXpB7u88iPkwMA* ident;
} _kind_5;
struct {tySequence__xxu3GgaFAGO6lOns9aHaeLQ sons;
} _kind_6;
};
};
struct TNimTypeV2 {
void* destructor;
NI size;
NI16 align;
NI16 depth;
NU32* display;
void* traceImpl;
void* typeInfoV1;
NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_ItemId__RG5oiYa2xm9bBBKInuP3ECw {
NI32 module;
NI32 item;
};
struct tyObject_TIdObj__jPSvrmNCWI4CL3MSWxUHJQ {
RootObj Sup;
tyObject_ItemId__RG5oiYa2xm9bBBKInuP3ECw itemId;
};
typedef NU8 tyEnum_TSymKind__EmlFK9c4sdJy7UDy5lm8yQQ;
typedef NU16 tyEnum_TMagic__mTDI9bmjHUNrwgx3GHm4Krg;
typedef NU64 tySet_tyEnum_TSymFlag__TAs9cOBd13PVhEf42OX9cOdg;
typedef NU32 tySet_tyEnum_TOption__PrH9cMsvu5oCG0HODAZ3CAg;
typedef NU8 tyEnum_TLocKind__iCEcZjTaghPmL3Wx2e5DQw;
typedef NU8 tyEnum_TStorageLoc__BKvMXWvKko6Yn5329c9aw9afg;
typedef NU16 tySet_tyEnum_TLocFlag__9a7m8BSAfzn6yluCKaq6viw;
struct tyObject_TLoc__cQfx3WjJDtozqFtY4RdR9cA {
tyEnum_TLocKind__iCEcZjTaghPmL3Wx2e5DQw k;
tyEnum_TStorageLoc__BKvMXWvKko6Yn5329c9aw9afg storage;
tySet_tyEnum_TLocFlag__9a7m8BSAfzn6yluCKaq6viw flags;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* lode;
NimStringV2 r;
};
struct tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA {
tyObject_TIdObj__jPSvrmNCWI4CL3MSWxUHJQ Sup;
tyEnum_TSymKind__EmlFK9c4sdJy7UDy5lm8yQQ kind;
union{
struct {tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* gcUnsafetyReason;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* transformedBody;
} _kind_1;
struct {tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* guard;
NI bitsize;
NI alignment;
} _kind_2;
};
tyEnum_TMagic__mTDI9bmjHUNrwgx3GHm4Krg magic;
tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA* typ;
tyObject_TIdent__L29bfCasnfXpB7u88iPkwMA* name;
tyObject_TLineInfo__7ZAGqjaN6WqWPlHP9cRagRg info;
tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* owner;
tySet_tyEnum_TSymFlag__TAs9cOBd13PVhEf42OX9cOdg flags;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* ast;
tySet_tyEnum_TOption__PrH9cMsvu5oCG0HODAZ3CAg options;
NI position;
NI offset;
tyObject_TLoc__cQfx3WjJDtozqFtY4RdR9cA loc;
tyObject_TLib__tP0u9cd1FuZgfCfM3WIm9cRg* annex;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* constraint;
};
struct tyObject_TIdent__L29bfCasnfXpB7u88iPkwMA {
NI id;
NimStringV2 s;
tyObject_TIdent__L29bfCasnfXpB7u88iPkwMA* next;
NI h;
};
typedef NU8 tyEnum_TNodeFlag__69c8WThOUT3nlaj2cOZ9c2dw;
struct tySequence__Bre9bNyuQOg1EJKitjSzn8w {
NI len; tySequence__Bre9bNyuQOg1EJKitjSzn8w_Content* p;
};
typedef NI tyArray__emiAJ8okywrJw7ZHLzlXbQ[34];
struct tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA {
NI elems;
NI counter;
NI max;
tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA* head;
tySequence__Bre9bNyuQOg1EJKitjSzn8w data;
tyArray__emiAJ8okywrJw7ZHLzlXbQ a;
};
typedef NU tyArray__VqSA39cBDWnwnJySTumCdjw[8];
struct tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA {
tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA* next;
NI key;
tyArray__VqSA39cBDWnwnJySTumCdjw bits;
};
struct tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A {
NI rc;
NI rootIdx;
};
typedef NU8 tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ;
typedef NU8 tyEnum_TCallingConvention__XL1p2EKvOAlAHpc68ecZPw;
typedef NU64 tySet_tyEnum_TTypeFlag__wRa4s6r4s9cXJ9abWKsrci1Q;
struct tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ {
NI len; tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ_Content* p;
};
struct tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA {
tyObject_TIdObj__jPSvrmNCWI4CL3MSWxUHJQ Sup;
tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ kind;
tyEnum_TCallingConvention__XL1p2EKvOAlAHpc68ecZPw callConv;
tySet_tyEnum_TTypeFlag__wRa4s6r4s9cXJ9abWKsrci1Q flags;
tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ sons;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n;
tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* owner;
tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* sym;
NI64 size;
NI16 align;
NI16 paddingAtEnd;
tyObject_TLoc__cQfx3WjJDtozqFtY4RdR9cA loc;
tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA* typeInst;
tyObject_ItemId__RG5oiYa2xm9bBBKInuP3ECw uniqueId;
};
typedef NU8 tySet_tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ[9];
#ifndef tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
#define tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
struct tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content { NI cap; tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* data[SEQ_DECL_SIZE];};
#endif
#ifndef tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
#define tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
struct tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content { NI cap; tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* data[SEQ_DECL_SIZE];};
#endif
#ifndef tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
#define tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
struct tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content { NI cap; tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* data[SEQ_DECL_SIZE];};
#endif
#ifndef tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
#define tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content_PP
struct tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content { NI cap; tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* data[SEQ_DECL_SIZE];};
#endif
#ifndef tySequence__Bre9bNyuQOg1EJKitjSzn8w_Content_PP
#define tySequence__Bre9bNyuQOg1EJKitjSzn8w_Content_PP
struct tySequence__Bre9bNyuQOg1EJKitjSzn8w_Content { NI cap; tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA* data[SEQ_DECL_SIZE];};
#endif
#ifndef tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ_Content_PP
#define tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ_Content_PP
struct tySequence__iPgAQ0li6vRlH9cX9aT6CQgQ_Content { NI cap; tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA* data[SEQ_DECL_SIZE];};
#endif
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, analyse__optimizer_180)(tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ* c, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_4063)(tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA** dest, tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* src);
N_LIB_PRIVATE N_NIMCALL(void, add__ast_4147)(tySequence__xxu3GgaFAGO6lOns9aHaeLQ* x, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* value);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_3457)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q** dest, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* src);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a, NimStringV2 b);
static N_INLINE(NIM_BOOL, equalMem__system_1727)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
N_LIB_PRIVATE N_NIMCALL(void, wasMovedDestroyPair__optimizer_153)(tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ* c, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* d);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, exprStructuralEquivalent__trees_63)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* a, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* b, NIM_BOOL strictSymEquality);
static N_INLINE(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*, skipAddr__ast_6671)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n);
N_LIB_PRIVATE N_NIMCALL(void, del__closureiters_3859)(tySequence__xxu3GgaFAGO6lOns9aHaeLQ* x, NI i);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_3454)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q** dest);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_4060)(tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA** dest);
static N_INLINE(NI, len__ast_3325)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canRaise__ast_6541)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* fn);
N_LIB_PRIVATE N_NIMCALL(void, returnStmt__optimizer_74)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b);
N_LIB_PRIVATE N_NIMCALL(void, setLen__ast_3741)(tySequence__xxu3GgaFAGO6lOns9aHaeLQ* s, NI newlen);
N_LIB_PRIVATE N_NIMCALL(void, invalidateWasMoved__optimizer_136)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* c, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* x);
N_LIB_PRIVATE N_NIMCALL(void*, newSeqPayload)(NI cap, NI elemSize, NI elemAlign);
N_LIB_PRIVATE N_NIMCALL(void, nestedBlock__optimizer_17)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* parent, tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ kind, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* Result);
static N_INLINE(void, mergeBasicBlockInfo__optimizer_85)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* parent, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* this_0);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___ast_3729)(tySequence__xxu3GgaFAGO6lOns9aHaeLQ* dest, tySequence__xxu3GgaFAGO6lOns9aHaeLQ src);
N_LIB_PRIVATE N_NIMCALL(void, intersect__optimizer_110)(tySequence__xxu3GgaFAGO6lOns9aHaeLQ* summary, tySequence__xxu3GgaFAGO6lOns9aHaeLQ branch);
static N_INLINE(void, initIntSet__pureZcollectionsZintsets_389)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* Result);
N_LIB_PRIVATE N_NIMCALL(void, initPackedSet__pureZcollectionsZintsets_16)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* Result);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, wasMovedTarget__optimizer_92)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* matches, tySequence__xxu3GgaFAGO6lOns9aHaeLQ branch, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* moveTarget);
N_LIB_PRIVATE N_NIMCALL(void, incl__pureZcollectionsZintsets_202)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* s, NI key);
static N_INLINE(NI, pluspercent___system_770)(NI x, NI y);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___pureZcollectionsZintsets_27)(tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA** dest, tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA* src);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZcollectionsZintsets_24)(tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA** dest);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZcollectionsZintsets_181)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* dest);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___optimizer_37)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* dest);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_3723)(tySequence__xxu3GgaFAGO6lOns9aHaeLQ* dest);
static N_INLINE(NIM_BOOL, nimDecRefIsLast)(void* p);
static N_INLINE(NI, minuspercent___system_790)(NI x, NI y);
N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA*, skipTypes__ast_4803)(tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA* t, tySet_tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ kinds);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_3543)(tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA** dest);
N_LIB_PRIVATE N_NIMCALL(void, breakStmt__optimizer_50)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n);
static N_INLINE(NI, safeLen__ast_3318)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*, shallowCopy__ast_5838)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* src);
N_LIB_PRIVATE N_NIMCALL(void, opt__optimizer_360)(tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ c, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* parent, NI parentPos);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___ast_3460)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q** dest, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*, newNodeI__ast_3949)(tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ kind, tyObject_TLineInfo__7ZAGqjaN6WqWPlHP9cRagRg info);
static const struct {
NI cap; NIM_CHAR data[8+1];
} TM__oWufXaZyaVPOHSSzjwt0PQ_2 = { 8 | NIM_STRLIT_FLAG, "=destroy" };
static const NimStringV2 TM__oWufXaZyaVPOHSSzjwt0PQ_3 = {8, (NimStrPayload*)&TM__oWufXaZyaVPOHSSzjwt0PQ_2};
static const struct {
NI cap; NIM_CHAR data[5+1];
} TM__oWufXaZyaVPOHSSzjwt0PQ_4 = { 5 | NIM_STRLIT_FLAG, "=sink" };
static const NimStringV2 TM__oWufXaZyaVPOHSSzjwt0PQ_5 = {5, (NimStrPayload*)&TM__oWufXaZyaVPOHSSzjwt0PQ_4};
static NIM_CONST tySet_tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ TM__oWufXaZyaVPOHSSzjwt0PQ_6 = {
0x10, 0xa8, 0x90, 0x00, 0x00, 0x60, 0x80, 0x00,
0x00}
;
extern NIM_BOOL nimInErrorMode__system_3980;
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (NIM_BOOL*)0;
result = (&nimInErrorMode__system_3980);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__systemZmemory_7(p, ((int)0), size);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
int result;
result = (int)0;
result = memcmp(a, b, ((size_t) (size)));
return result;
}
static N_INLINE(NIM_BOOL, equalMem__system_1727)(void* a, void* b, NI size) {
NIM_BOOL result;
int T1_;
result = (NIM_BOOL)0;
T1_ = (int)0;
T1_ = nimCmpMem(a, b, size);
result = (T1_ == ((NI32)0));
return result;
}
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a, NimStringV2 b) {
NIM_BOOL result;
NI alen;
NI blen;
{ result = (NIM_BOOL)0;
alen = a.len;
blen = b.len;
{
if (!(alen == blen)) goto LA3_;
{
if (!(alen == ((NI)0))) goto LA7_;
result = NIM_TRUE;
goto BeforeRet_;
}
LA7_: ;
result = equalMem__system_1727(((void*) ((&a.p->data[((NI)0)]))), ((void*) ((&b.p->data[((NI)0)]))), ((NI) (alen)));
goto BeforeRet_;
}
LA3_: ;
}BeforeRet_: ;
return result;
}
static N_INLINE(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*, skipAddr__ast_6671)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n) {
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* result;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
result = NIM_NIL;
T1_ = NIM_NIL;
{
if (!((*n).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)64))) goto LA4_;
eqcopy___ast_3457(&result, (*n)._kind_6.sons.p->data[((NI)0)]);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
goto LA2_;
LA4_: ;
{
eqcopy___ast_3457(&result, n);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA2_: ;
}BeforeRet_: ;
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, wasMovedDestroyPair__optimizer_153)(tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ* c, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* d) {
NI i;
NIM_BOOL oldNimErrFin4_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
i = ((NI)0);
{
while (1) {
NI T3_;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD_;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD__2;
T3_ = (*b).wasMovedLocs.len;
if (!(i < T3_)) goto LA2 ;
colontmpD_ = NIM_NIL;
colontmpD__2 = NIM_NIL;
{
NIM_BOOL T7_;
colontmpD_ = skipAddr__ast_6671((*(*b).wasMovedLocs.p->data[i])._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
colontmpD__2 = skipAddr__ast_6671((*d)._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
T7_ = (NIM_BOOL)0;
T7_ = exprStructuralEquivalent__trees_63(colontmpD_, colontmpD__2, NIM_TRUE);
if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
if (!T7_) goto LA8_;
(*(*b).wasMovedLocs.p->data[i]).flags |= ((NU32)1)<<(((((tyEnum_TNodeFlag__69c8WThOUT3nlaj2cOZ9c2dw)0))) & 31);
(*c).somethingTodo = NIM_TRUE;
(*d).flags |= ((NU32)1)<<(((((tyEnum_TNodeFlag__69c8WThOUT3nlaj2cOZ9c2dw)0))) & 31);
del__closureiters_3859((&(*b).wasMovedLocs), ((NI) (i)));
}
goto LA5_;
LA8_: ;
{
i += ((NI)1);
}
LA5_: ;
{
LA4_:;
}
{
oldNimErrFin4_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&colontmpD__2);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqdestroy___ast_3454(&colontmpD_);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin4_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
} LA2: ;
}
}BeforeRet_: ;
}
static N_INLINE(NI, len__ast_3325)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n) {
NI result;
NI T1_;
result = (NI)0;
T1_ = (*n)._kind_6.sons.len;
result = T1_;
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, returnStmt__optimizer_74)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b) {
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* it;
(*b).hasReturn = NIM_TRUE;
it = b;
{
while (1) {
if (!!((it == ((tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag*) NIM_NIL)))) goto LA2 ;
setLen__ast_3741((&(*it).wasMovedLocs), ((NI)0));
it = (*it).parent;
} LA2: ;
}
}
N_LIB_PRIVATE N_NIMCALL(void, invalidateWasMoved__optimizer_136)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* c, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* x) {
NI i;
NIM_BOOL oldNimErrFin4_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
i = ((NI)0);
{
while (1) {
NI T3_;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD_;
T3_ = (*c).wasMovedLocs.len;
if (!(i < T3_)) goto LA2 ;
colontmpD_ = NIM_NIL;
{
NIM_BOOL T7_;
colontmpD_ = skipAddr__ast_6671((*(*c).wasMovedLocs.p->data[i])._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
T7_ = (NIM_BOOL)0;
T7_ = exprStructuralEquivalent__trees_63(colontmpD_, x, NIM_TRUE);
if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
if (!T7_) goto LA8_;
del__closureiters_3859((&(*c).wasMovedLocs), ((NI) (i)));
}
goto LA5_;
LA8_: ;
{
i += ((NI)1);
}
LA5_: ;
{
LA4_:;
}
{
oldNimErrFin4_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&colontmpD_);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin4_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
} LA2: ;
}
}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, nestedBlock__optimizer_17)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* parent, tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ kind, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* Result) {
tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ colontmpD_;
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* colontmpD__2;
colontmpD_ = (tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)0;
colontmpD__2 = (tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag*)0;
nimZeroMem((void*)Result, sizeof(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag));
(*Result).wasMovedLocs.len = 0; (*Result).wasMovedLocs.p = (tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content*) newSeqPayload(0, sizeof(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*), NIM_ALIGNOF(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*));
colontmpD_ = kind;
(*Result).kind = colontmpD_;
(*Result).hasReturn = NIM_FALSE;
(*Result).hasBreak = NIM_FALSE;
(*Result).label = ((tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA*) NIM_NIL);
colontmpD__2 = parent;
(*Result).parent = colontmpD__2;
}
static N_INLINE(void, mergeBasicBlockInfo__optimizer_85)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* parent, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* this_0) {
{
if (!(*this_0).hasReturn) goto LA3_;
setLen__ast_3741((&(*parent).wasMovedLocs), ((NI)0));
(*parent).hasReturn = NIM_TRUE;
}
LA3_: ;
}
static N_INLINE(void, initIntSet__pureZcollectionsZintsets_389)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* Result) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
initPackedSet__pureZcollectionsZintsets_16(Result);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, wasMovedTarget__optimizer_92)(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA* matches, tySequence__xxu3GgaFAGO6lOns9aHaeLQ branch, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* moveTarget) {
NIM_BOOL result;
NIM_BOOL oldNimErrFin5_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
result = (NIM_BOOL)0;
result = NIM_FALSE;
{
NI i;
NI colontmp_;
NI T2_;
NI i_2;
i = (NI)0;
colontmp_ = (NI)0;
T2_ = branch.len;
colontmp_ = T2_;
i_2 = ((NI)0);
{
while (1) {
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD_;
if (!(i_2 < colontmp_)) goto LA4 ;
colontmpD_ = NIM_NIL;
i = i_2;
{
NIM_BOOL T8_;
colontmpD_ = skipAddr__ast_6671((*branch.p->data[i])._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
T8_ = (NIM_BOOL)0;
T8_ = exprStructuralEquivalent__trees_63(colontmpD_, moveTarget, NIM_TRUE);
if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
if (!T8_) goto LA9_;
result = NIM_TRUE;
incl__pureZcollectionsZintsets_202(matches, i);
if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
}
LA9_: ;
i_2 += ((NI)1);
{
LA5_:;
}
{
oldNimErrFin5_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&colontmpD_);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin5_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
} LA4: ;
}
}
}BeforeRet_: ;
return result;
}
static N_INLINE(NI, pluspercent___system_770)(NI x, NI y) {
NI result;
result = (NI)0;
result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, intersect__optimizer_110)(tySequence__xxu3GgaFAGO6lOns9aHaeLQ* summary, tySequence__xxu3GgaFAGO6lOns9aHaeLQ branch) {
tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA matches;
NI i;
NIM_BOOL oldNimErrFin5_;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&matches), sizeof(tyObject_PackedSet__IhxwDBRi51nGrosBGFKcsA));
i = ((NI)0);
initIntSet__pureZcollectionsZintsets_389((&matches));
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
{
while (1) {
NI T4_;
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD_;
T4_ = (*summary).len;
if (!(i < T4_)) goto LA3 ;
colontmpD_ = NIM_NIL;
{
NIM_BOOL T8_;
colontmpD_ = skipAddr__ast_6671((*(*summary).p->data[i])._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
T8_ = (NIM_BOOL)0;
T8_ = wasMovedTarget__optimizer_92((&matches), branch, colontmpD_);
if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
if (!T8_) goto LA9_;
i += ((NI)1);
}
goto LA6_;
LA9_: ;
{
del__closureiters_3859(summary, ((NI) (i)));
}
LA6_: ;
{
LA5_:;
}
{
oldNimErrFin5_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&colontmpD_);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
*nimErr_ = oldNimErrFin5_;
}
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
} LA3: ;
}
{
NI m;
m = (NI)0;
{
if (!(matches.elems <= ((NI)34))) goto LA17_;
{
NI i_2;
NI i_3;
i_2 = (NI)0;
i_3 = ((NI)0);
{
while (1) {
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD__2;
if (!(i_3 < matches.elems)) goto LA21 ;
colontmpD__2 = NIM_NIL;
i_2 = i_3;
m = matches.a[(i_2)- 0];
colontmpD__2 = 0;
eqcopy___ast_3457(&colontmpD__2, branch.p->data[m]);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
add__ast_4147((&(*summary)), colontmpD__2);
i_3 += ((NI)1);
} LA21: ;
}
}
}
goto LA15_;
LA17_: ;
{
tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA* r;
r = NIM_NIL;
r = matches.head;
matches.head = 0;
{
while (1) {
NI i_4;
if (!!((r == ((tyObject_TrunkcolonObjectType___POcWT53G7t0BSUjc31o0iA*) NIM_NIL)))) goto LA24 ;
i_4 = ((NI)0);
{
while (1) {
NU w;
NI j;
if (!(i_4 <= ((NI)7))) goto LA26 ;
w = (*r).bits[(i_4)- 0];
j = ((NI)0);
{
while (1) {
if (!!((w == ((NU)0)))) goto LA28 ;
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD__3;
NI T33_;
if (!!(((NU)(w & ((NU)1)) == ((NU)0)))) goto LA31_;
colontmpD__3 = NIM_NIL;
T33_ = (NI)0;
T33_ = pluspercent___system_770((NI)((NU64)(i_4) << (NU64)(((NI)6))), j);
m = (NI)((NI)((NU64)((*r).key) << (NU64)(((NI)9))) | T33_);
colontmpD__3 = 0;
eqcopy___ast_3457(&colontmpD__3, branch.p->data[m]);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
add__ast_4147((&(*summary)), colontmpD__3);
}
LA31_: ;
j += ((NI)1);
w = (NU)((NU64)(w) >> (NU64)(((NI)1)));
} LA28: ;
}
i_4 += ((NI)1);
} LA26: ;
}
eqcopy___pureZcollectionsZintsets_27(&r, (*r).next);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
} LA24: ;
}
eqdestroy___pureZcollectionsZintsets_24(&r);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
}
LA15_: ;
}
{
LA1_:;
}
{
oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___pureZcollectionsZintsets_181((&matches));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin1_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(NI, minuspercent___system_790)(NI x, NI y) {
NI result;
result = (NI)0;
result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
return result;
}
static N_INLINE(NIM_BOOL, nimDecRefIsLast)(void* p) {
NIM_BOOL result;
result = (NIM_BOOL)0;
{
tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A* cell;
NI T5_;
if (!!((p == NIM_NIL))) goto LA3_;
T5_ = (NI)0;
T5_ = minuspercent___system_790(((NI) (ptrdiff_t) (p)), ((NI)16));
cell = ((tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A*) (T5_));
{
if (!((NI)((*cell).rc & ((NI)-16)) == ((NI)0))) goto LA8_;
result = NIM_TRUE;
}
goto LA6_;
LA8_: ;
{
(*cell).rc -= ((NI)16);
}
LA6_: ;
}
LA3_: ;
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___optimizer_37)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* dest) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
eqdestroy___ast_3723((&(*dest).wasMovedLocs));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
NIM_BOOL T3_;
T3_ = (NIM_BOOL)0;
T3_ = nimDecRefIsLast((*dest).label);
if (!T3_) goto LA4_;
nimDestroyAndDispose((*dest).label);
}
LA4_: ;
}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, breakStmt__optimizer_50)(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n) {
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* it;
it = b;
{
while (1) {
if (!!((it == ((tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag*) NIM_NIL)))) goto LA2 ;
setLen__ast_3741((&(*it).wasMovedLocs), ((NI)0));
(*it).hasBreak = NIM_TRUE;
{
if (!((*n).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)3))) goto LA5_;
{
if (!((*it).label == (*n)._kind_4.sym)) goto LA9_;
goto LA1;
}
LA9_: ;
}
goto LA3_;
LA5_: ;
{
{
if (!((*it).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)96) || (*it).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)112) || (*it).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)127))) goto LA14_;
goto LA1;
}
LA14_: ;
}
LA3_: ;
it = (*it).parent;
} LA2: ;
} LA1: ;
}
static N_INLINE(NI, safeLen__ast_3318)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n) {
NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
result = (NI)0;
{
if (!((*n).kind >= ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)0) && (*n).kind <= ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)23))) goto LA3_;
result = ((NI)0);
}
goto LA1_;
LA3_: ;
{
result = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA1_: ;
}BeforeRet_: ;
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, analyse__optimizer_180)(tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ* c, tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag* b, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n) {
NIM_BOOL oldNimErrFin6_;
NIM_BOOL oldNimErrFin58_;
NIM_BOOL oldNimErrFin53_;
NIM_BOOL oldNimErrFin85_;
NIM_BOOL oldNimErrFin78_;
NIM_BOOL oldNimErrFin108_;
NIM_BOOL oldNimErrFin112_;
NIM_BOOL oldNimErrFin116_;
NIM_BOOL oldNimErrFin126_;
NIM_BOOL oldNimErrFin134_;
NIM_BOOL oldNimErrFin142_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
switch ((*n).kind) {
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)26) ... ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)32):
{
NIM_BOOL special;
NIM_BOOL reverse;
special = NIM_FALSE;
reverse = NIM_FALSE;
{
tyObject_TSym__9cob5UPXvLCxy8mslvxEYzA* s;
if (!((*(*n)._kind_6.sons.p->data[((NI)0)]).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)3))) goto LA4_;
s = NIM_NIL;
eqcopy___ast_4063(&s, (*(*n)._kind_6.sons.p->data[((NI)0)])._kind_4.sym);
if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD_;
if (!((*s).magic == ((tyEnum_TMagic__mTDI9bmjHUNrwgx3GHm4Krg)150))) goto LA9_;
colontmpD_ = NIM_NIL;
colontmpD_ = 0;
eqcopy___ast_3457(&colontmpD_, n);
if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
add__ast_4147((&(*b).wasMovedLocs), colontmpD_);
special = NIM_TRUE;
}
goto LA7_;
LA9_: ;
{
if (!eqStrings((*(*s).name).s, TM__oWufXaZyaVPOHSSzjwt0PQ_3)) goto LA12_;
{
NIM_BOOL T16_;
NIM_BOOL T18_;
T16_ = (NIM_BOOL)0;
T16_ = (((NI)0) < (*c).inFinally);
if (!(T16_)) goto LA17_;
T18_ = (NIM_BOOL)0;
T18_ = (*b).hasReturn;
if (T18_) goto LA19_;
T18_ = (*b).hasBreak;
LA19_: ;
T16_ = T18_;
LA17_: ;
if (!T16_) goto LA20_;
}
goto LA14_;
LA20_: ;
{
wasMovedDestroyPair__optimizer_153(c, b, n);
if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
}
LA14_: ;
special = NIM_TRUE;
}
goto LA7_;
LA12_: ;
{
if (!eqStrings((*(*s).name).s, TM__oWufXaZyaVPOHSSzjwt0PQ_5)) goto LA24_;
reverse = NIM_TRUE;
}
goto LA7_;
LA24_: ;
LA7_: ;
{
LA6_:;
}
{
oldNimErrFin6_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_4060(&s);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin6_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA4_: ;
{
if (!!(special)) goto LA30_;
{
if (!!(reverse)) goto LA34_;
{
NI i;
NI colontmp_;
NI i_2;
i = (NI)0;
colontmp_ = (NI)0;
colontmp_ = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
i_2 = ((NI)0);
{
while (1) {
if (!(i_2 < colontmp_)) goto LA38 ;
i = i_2;
analyse__optimizer_180(c, b, (*n)._kind_6.sons.p->data[i]);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
i_2 += ((NI)1);
} LA38: ;
}
}
}
goto LA32_;
LA34_: ;
{
{
NI i_3;
NI colontmp__2;
NI T41_;
NI res;
i_3 = (NI)0;
colontmp__2 = (NI)0;
T41_ = (NI)0;
T41_ = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
colontmp__2 = (NI)(T41_ - ((NI)1));
res = colontmp__2;
{
while (1) {
if (!(((NI)0) <= res)) goto LA43 ;
i_3 = res;
analyse__optimizer_180(c, b, (*n)._kind_6.sons.p->data[i_3]);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
res -= ((NI)1);
} LA43: ;
}
}
}
LA32_: ;
{
NIM_BOOL T46_;
T46_ = (NIM_BOOL)0;
T46_ = canRaise__ast_6541((*n)._kind_6.sons.p->data[((NI)0)]);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
if (!T46_) goto LA47_;
returnStmt__optimizer_74(b);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA47_: ;
}
LA30_: ;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)3):
{
invalidateWasMoved__optimizer_136(b, n);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)0) ... ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)2):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)4) ... ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)23):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)98):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)79):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)81):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)80):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)84):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)82):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)83):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)51):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)52):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)159):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)101):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)102):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)121):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)116):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)118):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)90):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)125):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)158):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)132):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)123):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)122):
{
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)73):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)74):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)149):
{
analyse__optimizer_180(c, b, (*n)._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
analyse__optimizer_180(c, b, (*n)._kind_6.sons.p->data[((NI)0)]);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)92):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)48):
{
tySequence__xxu3GgaFAGO6lOns9aHaeLQ wasMovedSet;
NIM_BOOL isExhaustive;
NI T54_;
wasMovedSet.len = 0; wasMovedSet.p = NIM_NIL;
T54_ = (NI)0;
T54_ = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
isExhaustive = ((*(*n)._kind_6.sons.p->data[(NI)(T54_ - ((NI)1))]).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)88) || (*(*n)._kind_6.sons.p->data[(NI)(T54_ - ((NI)1))]).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)50));
wasMovedSet.len = 0; wasMovedSet.p = (tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content*) newSeqPayload(0, sizeof(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*), NIM_ALIGNOF(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*));
{
NI i_4;
NI colontmp__3;
NI i_5;
i_4 = (NI)0;
colontmp__3 = (NI)0;
colontmp__3 = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
i_5 = ((NI)0);
{
while (1) {
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag branch;
if (!(i_5 < colontmp__3)) goto LA57 ;
nimZeroMem((void*)(&branch), sizeof(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag));
i_4 = i_5;
nestedBlock__optimizer_17(b, (*(*n)._kind_6.sons.p->data[i_4]).kind, (&branch));
if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
analyse__optimizer_180(c, (&branch), (*n)._kind_6.sons.p->data[i_4]);
if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
mergeBasicBlockInfo__optimizer_85(b, (&branch));
if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
{
if (!isExhaustive) goto LA61_;
{
tySequence__xxu3GgaFAGO6lOns9aHaeLQ T67_;
if (!(i_4 == ((NI)0))) goto LA65_;
T67_.len = 0; T67_.p = NIM_NIL;
T67_ = branch.wasMovedLocs;
branch.wasMovedLocs.len = 0; branch.wasMovedLocs.p = NIM_NIL;
eqsink___ast_3729((&wasMovedSet), T67_);
if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
}
goto LA63_;
LA65_: ;
{
intersect__optimizer_110((&wasMovedSet), branch.wasMovedLocs);
if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
}
LA63_: ;
}
LA61_: ;
i_5 += ((NI)1);
{
LA58_:;
}
{
oldNimErrFin58_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___optimizer_37((&branch));
if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
*nimErr_ = oldNimErrFin58_;
}
if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
} LA57: ;
}
}
{
NI i_6;
NI colontmp__4;
NI T72_;
NI i_7;
i_6 = (NI)0;
colontmp__4 = (NI)0;
T72_ = wasMovedSet.len;
colontmp__4 = T72_;
i_7 = ((NI)0);
{
while (1) {
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD__2;
if (!(i_7 < colontmp__4)) goto LA74 ;
colontmpD__2 = NIM_NIL;
i_6 = i_7;
colontmpD__2 = 0;
eqcopy___ast_3457(&colontmpD__2, wasMovedSet.p->data[i_6]);
if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
add__ast_4147((&(*b).wasMovedLocs), colontmpD__2);
i_7 += ((NI)1);
} LA74: ;
}
}
{
LA53_:;
}
{
oldNimErrFin53_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3723((&wasMovedSet));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin53_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)97):
{
tyObject_TType__qs8ld9cHTjcxh7xYsvWduXA* colontmpD__3;
tySequence__xxu3GgaFAGO6lOns9aHaeLQ wasMovedSet_2;
NIM_BOOL isExhaustive_2;
NIM_BOOL T79_;
NI T81_;
colontmpD__3 = NIM_NIL;
wasMovedSet_2.len = 0; wasMovedSet_2.p = NIM_NIL;
T79_ = (NIM_BOOL)0;
colontmpD__3 = skipTypes__ast_4803((*(*n)._kind_6.sons.p->data[((NI)0)]).typ, TM__oWufXaZyaVPOHSSzjwt0PQ_6);
if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
T79_ = !(((*colontmpD__3).kind >= ((tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ)36) && (*colontmpD__3).kind <= ((tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ)39) || (*colontmpD__3).kind == ((tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ)28) || (*colontmpD__3).kind == ((tyEnum_TTypeKind__cu4lI59aFp7m9cDkg2Nfr7ZQ)29)));
if (T79_) goto LA80_;
T81_ = (NI)0;
T81_ = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
T79_ = ((*(*n)._kind_6.sons.p->data[(NI)(T81_ - ((NI)1))]).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)88));
LA80_: ;
isExhaustive_2 = T79_;
analyse__optimizer_180(c, b, (*n)._kind_6.sons.p->data[((NI)0)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
wasMovedSet_2.len = 0; wasMovedSet_2.p = (tySequence__xxu3GgaFAGO6lOns9aHaeLQ_Content*) newSeqPayload(0, sizeof(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*), NIM_ALIGNOF(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*));
{
NI i_8;
NI colontmp__5;
NI i_9;
i_8 = (NI)0;
colontmp__5 = (NI)0;
colontmp__5 = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
i_9 = ((NI)1);
{
while (1) {
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag branch_2;
if (!(i_9 < colontmp__5)) goto LA84 ;
nimZeroMem((void*)(&branch_2), sizeof(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag));
i_8 = i_9;
nestedBlock__optimizer_17(b, (*(*n)._kind_6.sons.p->data[i_8]).kind, (&branch_2));
if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
analyse__optimizer_180(c, (&branch_2), (*n)._kind_6.sons.p->data[i_8]);
if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
mergeBasicBlockInfo__optimizer_85(b, (&branch_2));
if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
{
if (!isExhaustive_2) goto LA88_;
{
tySequence__xxu3GgaFAGO6lOns9aHaeLQ T94_;
if (!(i_8 == ((NI)1))) goto LA92_;
T94_.len = 0; T94_.p = NIM_NIL;
T94_ = branch_2.wasMovedLocs;
branch_2.wasMovedLocs.len = 0; branch_2.wasMovedLocs.p = NIM_NIL;
eqsink___ast_3729((&wasMovedSet_2), T94_);
if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
}
goto LA90_;
LA92_: ;
{
intersect__optimizer_110((&wasMovedSet_2), branch_2.wasMovedLocs);
if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
}
LA90_: ;
}
LA88_: ;
i_9 += ((NI)1);
{
LA85_:;
}
{
oldNimErrFin85_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___optimizer_37((&branch_2));
if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
*nimErr_ = oldNimErrFin85_;
}
if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
} LA84: ;
}
}
{
NI i_10;
NI colontmp__6;
NI T99_;
NI i_11;
i_10 = (NI)0;
colontmp__6 = (NI)0;
T99_ = wasMovedSet_2.len;
colontmp__6 = T99_;
i_11 = ((NI)0);
{
while (1) {
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* colontmpD__4;
if (!(i_11 < colontmp__6)) goto LA101 ;
colontmpD__4 = NIM_NIL;
i_10 = i_11;
colontmpD__4 = 0;
eqcopy___ast_3457(&colontmpD__4, wasMovedSet_2.p->data[i_10]);
if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
add__ast_4147((&(*b).wasMovedLocs), colontmpD__4);
i_11 += ((NI)1);
} LA101: ;
}
}
{
LA78_:;
}
{
oldNimErrFin78_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3723((&wasMovedSet_2));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqdestroy___ast_3543(&colontmpD__3);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin78_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)106):
{
{
NI i_12;
NI colontmp__7;
NI i_13;
i_12 = (NI)0;
colontmp__7 = (NI)0;
colontmp__7 = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
i_13 = ((NI)0);
{
while (1) {
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag tryBody;
if (!(i_13 < colontmp__7)) goto LA107 ;
nimZeroMem((void*)(&tryBody), sizeof(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag));
i_12 = i_13;
nestedBlock__optimizer_17(b, ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)106), (&tryBody));
if (NIM_UNLIKELY(*nimErr_)) goto LA108_;
analyse__optimizer_180(c, (&tryBody), (*n)._kind_6.sons.p->data[i_12]);
if (NIM_UNLIKELY(*nimErr_)) goto LA108_;
mergeBasicBlockInfo__optimizer_85(b, (&tryBody));
if (NIM_UNLIKELY(*nimErr_)) goto LA108_;
i_13 += ((NI)1);
{
LA108_:;
}
{
oldNimErrFin108_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___optimizer_37((&tryBody));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin108_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
} LA107: ;
}
}
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)96):
{
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag loopBody;
nimZeroMem((void*)(&loopBody), sizeof(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag));
analyse__optimizer_180(c, b, (*n)._kind_6.sons.p->data[((NI)0)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
nestedBlock__optimizer_17(b, ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)96), (&loopBody));
if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
analyse__optimizer_180(c, (&loopBody), (*n)._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
mergeBasicBlockInfo__optimizer_85(b, (&loopBody));
if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
{
LA112_:;
}
{
oldNimErrFin112_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___optimizer_37((&loopBody));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin112_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)112):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)127):
{
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag blockBody;
nimZeroMem((void*)(&blockBody), sizeof(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag));
nestedBlock__optimizer_17(b, (*n).kind, (&blockBody));
if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
{
if (!((*(*n)._kind_6.sons.p->data[((NI)0)]).kind == ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)3))) goto LA119_;
eqcopy___ast_4063(&blockBody.label, (*(*n)._kind_6.sons.p->data[((NI)0)])._kind_4.sym);
if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
}
LA119_: ;
analyse__optimizer_180(c, (&blockBody), (*n)._kind_6.sons.p->data[((NI)1)]);
if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
mergeBasicBlockInfo__optimizer_85(b, (&blockBody));
if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
{
LA116_:;
}
{
oldNimErrFin116_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___optimizer_37((&blockBody));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin116_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)110):
{
breakStmt__optimizer_50(b, (*n)._kind_6.sons.p->data[((NI)0)]);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)109):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)108):
{
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* child;
child = NIM_NIL;
{
NI i_14;
NI colontmp__8;
NI i_15;
i_14 = (NI)0;
colontmp__8 = (NI)0;
colontmp__8 = safeLen__ast_3318(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA126_;
i_15 = ((NI)0);
{
while (1) {
if (!(i_15 < colontmp__8)) goto LA129 ;
i_14 = i_15;
eqcopy___ast_3457(&child, (*n)._kind_6.sons.p->data[i_14]);
if (NIM_UNLIKELY(*nimErr_)) goto LA126_;
analyse__optimizer_180(c, b, child);
if (NIM_UNLIKELY(*nimErr_)) goto LA126_;
i_15 += ((NI)1);
} LA129: ;
}
}
{
LA126_:;
}
{
oldNimErrFin126_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&child);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin126_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
returnStmt__optimizer_74(b);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)107):
{
(*c).inFinally += ((NI)1);
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* child_2;
child_2 = NIM_NIL;
{
NI i_16;
NI colontmp__9;
NI i_17;
i_16 = (NI)0;
colontmp__9 = (NI)0;
colontmp__9 = safeLen__ast_3318(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA134_;
i_17 = ((NI)0);
{
while (1) {
if (!(i_17 < colontmp__9)) goto LA137 ;
i_16 = i_17;
eqcopy___ast_3457(&child_2, (*n)._kind_6.sons.p->data[i_16]);
if (NIM_UNLIKELY(*nimErr_)) goto LA134_;
analyse__optimizer_180(c, b, child_2);
if (NIM_UNLIKELY(*nimErr_)) goto LA134_;
i_17 += ((NI)1);
} LA137: ;
}
}
{
LA134_:;
}
{
oldNimErrFin134_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&child_2);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin134_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
(*c).inFinally -= ((NI)1);
}
break;
default:
{
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* child_3;
child_3 = NIM_NIL;
{
NI i_18;
NI colontmp__10;
NI i_19;
i_18 = (NI)0;
colontmp__10 = (NI)0;
colontmp__10 = safeLen__ast_3318(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA142_;
i_19 = ((NI)0);
{
while (1) {
if (!(i_19 < colontmp__10)) goto LA145 ;
i_18 = i_19;
eqcopy___ast_3457(&child_3, (*n)._kind_6.sons.p->data[i_18]);
if (NIM_UNLIKELY(*nimErr_)) goto LA142_;
analyse__optimizer_180(c, b, child_3);
if (NIM_UNLIKELY(*nimErr_)) goto LA142_;
i_19 += ((NI)1);
} LA145: ;
}
}
{
LA142_:;
}
{
oldNimErrFin142_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&child_3);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin142_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
}
break;
}
}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, opt__optimizer_360)(tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ c, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n, tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* parent, NI parentPos) {
NIM_BOOL oldNimErrFin8_;
NIM_BOOL oldNimErrFin16_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
switch ((*n).kind) {
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)26) ... ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)32):
{
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* T6_;
if (!(((*n).flags &((NU32)1<<((NU)((((tyEnum_TNodeFlag__69c8WThOUT3nlaj2cOZ9c2dw)0)))&31U)))!=0)) goto LA4_;
T6_ = NIM_NIL;
T6_ = newNodeI__ast_3949(((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)1), (*n).info);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqsink___ast_3460(&(*parent)._kind_6.sons.p->data[parentPos], T6_);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
goto LA2_;
LA4_: ;
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* xX60gensym39_;
xX60gensym39_ = NIM_NIL;
xX60gensym39_ = shallowCopy__ast_5838(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
{
NI iX60gensym39_;
NI colontmp_;
NI i;
iX60gensym39_ = (NI)0;
colontmp_ = (NI)0;
colontmp_ = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
i = ((NI)0);
{
while (1) {
if (!(i < colontmp_)) goto LA11 ;
iX60gensym39_ = i;
opt__optimizer_360(c, (*n)._kind_6.sons.p->data[iX60gensym39_], xX60gensym39_, iX60gensym39_);
if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
i += ((NI)1);
} LA11: ;
}
}
eqsink___ast_3460(&(*parent)._kind_6.sons.p->data[parentPos], xX60gensym39_);
if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
xX60gensym39_ = 0;
{
LA8_:;
}
{
oldNimErrFin8_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&xX60gensym39_);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin8_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA2_: ;
}
break;
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)0) ... ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)23):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)98):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)79):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)81):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)80):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)84):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)82):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)83):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)51):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)52):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)159):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)101):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)102):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)121):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)116):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)118):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)90):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)125):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)158):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)132):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)123):
case ((tyEnum_TNodeKind__ySM4MdHjvuRpNcphR1xnyQ)122):
{
eqcopy___ast_3457(&(*parent)._kind_6.sons.p->data[parentPos], n);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
default:
{
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* xX60gensym43_;
xX60gensym43_ = NIM_NIL;
xX60gensym43_ = shallowCopy__ast_5838(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
{
NI iX60gensym43_;
NI colontmp__2;
NI i_2;
iX60gensym43_ = (NI)0;
colontmp__2 = (NI)0;
colontmp__2 = len__ast_3325(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
i_2 = ((NI)0);
{
while (1) {
if (!(i_2 < colontmp__2)) goto LA19 ;
iX60gensym43_ = i_2;
opt__optimizer_360(c, (*n)._kind_6.sons.p->data[iX60gensym43_], xX60gensym43_, iX60gensym43_);
if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
i_2 += ((NI)1);
} LA19: ;
}
}
eqsink___ast_3460(&(*parent)._kind_6.sons.p->data[parentPos], xX60gensym43_);
if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
xX60gensym43_ = 0;
{
LA16_:;
}
{
oldNimErrFin16_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___ast_3454(&xX60gensym43_);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin16_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
break;
}
}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q*, optimize__optimizer_400)(tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* n) {
tyObject_TNode__1pEudI6ZemBfsBxMjg4u5Q* result;
tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag b;
tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ c;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
result = NIM_NIL;
nimZeroMem((void*)(&b), sizeof(tyObject_BasicBlock__oHv68TcOXo9cLJD2lQQt59ag));
nimZeroMem((void*)(&c), sizeof(tyObject_Con__MgXZmgKGNnLxC1CBbEOFLQ));
analyse__optimizer_180((&c), (&b), n);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
{
if (!c.somethingTodo) goto LA4_;
result = shallowCopy__ast_5838(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
{
NI i;
NI colontmp_;
NI i_2;
i = (NI)0;
colontmp_ = (NI)0;
colontmp_ = safeLen__ast_3318(n);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
i_2 = ((NI)0);
{
while (1) {
if (!(i_2 < colontmp_)) goto LA8 ;
i = i_2;
opt__optimizer_360(c, (*n)._kind_6.sons.p->data[i], result, i);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
i_2 += ((NI)1);
} LA8: ;
}
}
}
goto LA2_;
LA4_: ;
{
eqcopy___ast_3457(&result, n);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
}
LA2_: ;
{
LA1_:;
}
{
oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
eqdestroy___optimizer_37((&b));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
*nimErr_ = oldNimErrFin1_;
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
return result;
}