#include "M3Runtime.h" typedef struct { int tc; char* str; int len; } TXT; PRIVATE TXT txt1 = { 3, "@.elts[@] = ", 13}; PRIVATE TXT txt2 = { 3, "@.elts[@];\012", 12}; PRIVATE TXT txt3 = { 3, "@ = @;\012", 8}; PRIVATE TXT txt4 = { 3, "@.elts[@] | ", 13}; PRIVATE TXT txt5 = { 3, "{\001\012int i;\012for (i = 0; i < @; i++) \001\012{", 38}; PRIVATE TXT txt6 = { 3, "@.elts[i] = @.elts[i] | @.elts[i];\012 };\002\012 };\002\012", 46 }; PRIVATE TXT txt7 = { 3, "@.elts[@] & ", 13}; PRIVATE TXT txt8 = { 3, "@.elts[i] = @.elts[i] & @.elts[i];\012 };\002\012 };\002\012", 46 }; PRIVATE TXT txt9 = { 3, "@.elts[@] & ~ ", 15}; PRIVATE TXT txt10 = { 3, "@.elts[i] = @.elts[i] & ~ @.elts[i];\012 };\002\012 };\002\012", 48 }; PRIVATE TXT txt11 = { 3, "@.elts[@] ^ ", 13}; PRIVATE TXT txt12 = { 3, "@.elts[i] = @.elts[i] ^ @.elts[i];\012 };\002\012 };\002\012", 46 }; PRIVATE TXT txt13 = { 3, "{int i, st; ", 13}; PRIVATE TXT txt14 = { 3, "for (st = 0, i = 0; i < @; i++) {", 34}; PRIVATE TXT txt15 = { 3, "if ((@.elts[i] & ~ (@.elts[i])) != 0) { st = 0; break; };", 58 }; PRIVATE TXT txt16 = { 3, "st = st || (@.elts[i] != @.elts[i]);}", 38}; PRIVATE TXT txt17 = { 3, "{int i, st;", 12}; PRIVATE TXT txt18 = { 3, "for (st = 1, i = 0; i < @; i++) {", 34}; PRIVATE TXT txt19 = { 3, "if ((@.elts[i] & ~@.elts[i]) != 0) { st = 0; break; }; };", 58 }; PRIVATE TXT txt20 = { 3, "if (@.elts[i] != @.elts[i]) { st = 0; break; }; };", 51 }; PRIVATE TXT txt21 = { 3, "if (@.elts[i] !=@.elts[i]) { st = 1; break; }; };", 50 }; PRIVATE TXT txt22 = { 3, "if ((~@.elts[i] & @.elts[i]) != 0) { st = 0; break; }; };", 58 }; PRIVATE TXT txt23 = { 3, "if ((~@.elts[i] & @.elts[i]) != 0) { st = 0; break; };", 55 }; PRIVATE TXT txt24 = { 3, "@ = st;}", 9}; PRIVATE TXT txt25 = { 3, "{int i;", 8}; PRIVATE TXT txt26 = { 3, "for (i = 0; i < @; i++) {", 26}; PRIVATE TXT txt27 = { 3, "if (@.elts[i] != @.elts[i])", 28}; PRIVATE TXT txt28 = { 3, "goto @; }; }; \012", 16}; PRIVATE TXT txt29 = { 3, "{int i = @; int j = i - @;", 27}; PRIVATE TXT txt30 = { 3, "@ = ", 5}; PRIVATE TXT txt31 = { 3, "(@ <= i) && (i <= @) && ", 25}; PRIVATE TXT txt32 = { 3, "((@.elts [j/@] & ", 19}; PRIVATE TXT txt33 = { 3, " (1<<(j%@))) != 0); }; \012", 25}; PRIVATE TXT txt34 = { 3, "@ = ((@.elts ", 14}; PRIVATE TXT txt35 = { 3, "[@] & (1<<@)) != 0);\012", 24}; PRIVATE TXT txt36 = { 3, "@ = 0;\012", 8}; PRIVATE TXT txt37 = { 3, "set element out of range", 25}; PRIVATE TXT txt38 = { 3, "set element is not an ordinal", 30}; PRIVATE TXT txt39 = { 3, "set constructor must specify a set type", 40}; PRIVATE TXT txt40 = { 3, "keyword values not allowed in set constructors", 47 }; PRIVATE TXT txt41 = { 3, "illegal set value", 18}; PRIVATE TXT txt42 = { 3, "@.elts", 7}; PRIVATE TXT txt43 = { 3, "INCL (@.elts, ", 15}; PRIVATE TXT txt44 = { 3, "@", 2}; PRIVATE TXT txt45 = { 3, " - @", 5}; PRIVATE TXT txt46 = { 3, ", @", 4}; PRIVATE TXT txt47 = { 3, ");\012", 4}; PRIVATE TXT txt48 = { 3, "@ = @", 6}; PRIVATE TXT txt49 = { 3, ";\012@.elts[@ / ", 14}; PRIVATE TXT txt50 = { 3, "@] |= 1 << ", 12}; PRIVATE TXT txt51 = { 3, "(@ % @);\012", 10}; PRIVATE TXT txt52 = { 3, "@.elts [@] = 0;\012", 17}; PRIVATE TXT txt53 = { 3, "@.elts [@] = ", 14}; PRIVATE TXT txt54 = { 3, "0x@;\012", 6}; PRIVATE TXT txt55 = { 3, "{{\001 ", 5}; PRIVATE TXT txt56 = { 3, "\002 }}", 5}; PRIVATE TXT txt57 = { 3, ", ", 3}; PRIVATE TXT txt58 = { 3, "\012", 2}; PRIVATE TXT txt59 = { 3, "0", 2}; PRIVATE TXT txt60 = { 3, "0x@", 4}; #line 22 "SetExpr.m3" #define t10 ADDRESS typedef int t3; #line 18 typedef struct { t10 _next; t3 _min; t3 _max; } t24; PRIVATE void t10_PrintProc (); PRIVATE typecell t10_TC; PRIVATE typecell t10_TC_init = {0, 0, 0, 0, 0, (PROC)NIL, 12, 0, NIL, 0, 0, (PROC)NIL, (PROC)NIL, t10_PrintProc, #line 22 "", 1959971032, 1032782401}; PRIVATE TYPE TC10 = &t10_TC; #line 16 "../Interfaces/Type.i3" #define t14 ADDRESS #define t86 void typedef struct { #line 116 ".ROOT/.boots/corelib/Interfaces/Wr.i3" char* elts; int size[1]; } t71; #line 58 "SetExpr.m3" #define t1 t71 #define TC14 TC_Type__Map IMPORT TYPE TC_Type__Map; #line 16 "../Interfaces/Type.i3" IMPORT char VS_Type__Map__41dd9f4b33104fce; #define t18 ADDRESS #define TC18 TC_NULL IMPORT TYPE TC_NULL; IMPORT char VS_NULL__fb50c7d53bec30dc; #line 14 "./Expr.i3" #define t21 ADDRESS #define t84 ADDRESS typedef struct { TYPE self; int private; } t84_methods; #define t84_msize (sizeof (t84_methods)) typedef struct { ADDRESS methods; } t84_fields; #define t84_size (sizeof (t84_fields)) #define TC84 TC_UNTRACED_ROOT IMPORT TYPE TC_UNTRACED_ROOT; IMPORT char VS_UNTRACED_ROOT__3e0964513fd6da20; #line 16 "../Interfaces/M3.i3" #define t5 ADDRESS #define TC5 TC_M3__Expr IMPORT TYPE TC_M3__Expr; #line 16 IMPORT char VS_M3__Expr__8ae39aaa2d432477; #line 16 "../Interfaces/Bool.i3" #define t25 t71 #define TC21 TC_Expr__List IMPORT TYPE TC_Expr__List; #line 14 "./Expr.i3" IMPORT char VS_Expr__List__3f87eceb2b9a246a; #line 17 "../Interfaces/Scope.i3" #define t39 ADDRESS #define t27 ADDRESS #define TC27 TC_M3__Value IMPORT TYPE TC_M3__Value; #line 15 "../Interfaces/M3.i3" IMPORT char VS_M3__Value__6f64cf9c2cae25fb; #line 17 "../Interfaces/Scope.i3" #define t43 t71 #define TC39 TC_Scope__ValueList IMPORT TYPE TC_Scope__ValueList; #line 17 IMPORT char VS_Scope__ValueList__64bf053e22e4e53c; #line 17 "../Interfaces/Type.i3" #define t55 ADDRESS #define t4 ADDRESS #define TC4 TC_M3__Type IMPORT TYPE TC_M3__Type; #line 18 "../Interfaces/M3.i3" IMPORT char VS_M3__Type__4d87bc25311f81d2; #line 17 "../Interfaces/Type.i3" typedef struct { t55 _next; t4 _type; } t56; #define TC55 TC_Type__List IMPORT TYPE TC_Type__List; #line 17 IMPORT char VS_Type__List__5791758e343becc1; #define t66 ADDRESS #define TC66 TC_ADDRESS IMPORT TYPE TC_ADDRESS; IMPORT char VS_ADDRESS__30f7308738738b44; #define t73 ADDRESS #define TC73 TC_REFANY IMPORT TYPE TC_REFANY; IMPORT char VS_REFANY__4b8748e831fc107a; #line 19 "../Interfaces/M3.i3" #define t2 ADDRESS #define TC2 TC_M3__Temp IMPORT TYPE TC_M3__Temp; #line 19 IMPORT char VS_M3__Temp__450b691937f03dae; #line 879 "SetExpr.m3" typedef t86 (*t6)(); #line 13 "../Interfaces/String.i3" #define t7 ADDRESS #define TC7 TC_String__T IMPORT TYPE TC_String__T; #line 13 IMPORT char VS_String__T__3a6c7dc12615e4ee; #line 14 "./CompareExpr.i3" typedef unsigned char t8; typedef unsigned char t9; #line 25 "SetExpr.m3" #define t11 ADDRESS #line 31 "./ExprRep.i3" typedef t2 (*t17)(); #line 24 typedef t5 (*t15)(); #line 92 "SetExpr.m3" typedef t9 (*t12)(); #line 25 typedef struct { int filler; } t11_methods; #define t11_msize (sizeof (t11_methods)) typedef struct { #line 25 t4 _tipe; t21 _args; t9 _mapped; t10 _tree; t21 _others; t3 _nOthers; } t11_fields; #define t11_size (sizeof (t11_fields)) PRIVATE void t11_InitProc (); #line 25 PRIVATE void t11_SetupProc (); PRIVATE void t11_PrintProc (); PRIVATE typecell t11_TC; PRIVATE typecell t11_TC_init = {0, 0, 0, 0, 0, (PROC)NIL, #line 25 t11_size, t11_msize, NIL, 0, 0, t11_InitProc, t11_SetupProc, t11_PrintProc, "", -2029628513, 955071551}; PRIVATE TYPE TC11 = &t11_TC; #line 25 #define t74 ADDRESS typedef struct { TYPE self; int private; } t74_methods; #define t74_msize (sizeof (t74_methods)) typedef struct { ADDRESS methods; } t74_fields; #define t74_size (sizeof (t74_fields)) #define TC74 TC_ROOT IMPORT TYPE TC_ROOT; IMPORT char VS_ROOT__349f58f628be0ac6; #define t74_MapProc TC_ROOT->mapProc #define t13 ADDRESS #define TC13 TC_Wr__T IMPORT TYPE TC_Wr__T; #line 90 ".ROOT/.boots/corelib/Interfaces/Wr.i3" IMPORT char VS_Wr__T__2555b70b3f7780b1; #define t13_MapProc TC_Wr__T->mapProc typedef t3 (*t16)(); #line 387 "SetExpr.m3" typedef t10 (*t19)(); #line 48 typedef struct { t10 _a; t10 _b; t3 _amin; t3 _amax; t3 _bmin; t3 _bmax; t3 _min; t3 _max; t9 _inA; t9 _inB; } t20; typedef signed_char t22; typedef struct { t3 elts[33]; } t23; #line 16 "../Interfaces/Bool.i3" typedef struct { t5 elts[2]; } t26; #line 27 "../Interfaces/Emit.i3" typedef signed_char t28; #line 63 typedef t28 (*t29)(); #define t30 ADDRESS #define TC30 TC_TEXT IMPORT TYPE TC_TEXT; IMPORT char VS_TEXT__b7a92447326386f5; #define t30_MapProc TC_TEXT->mapProc typedef signed_char t64; #line 65 "../Interfaces/Token.i3" #define t57 t71 typedef struct { t7 elts[100]; } t65; #line 17 "../Interfaces/String.i3" typedef struct { t3 _top; t65 _stk; } t31; #line 16 "../Interfaces/Variable.i3" #define t32 ADDRESS #define TC32 TC_Variable__T IMPORT TYPE TC_Variable__T; #line 16 IMPORT char VS_Variable__T__be7ead4a3afd8be5; typedef double t33; typedef unsigned char t34; #line 14 "../Interfaces/M3.i3" #define t35 ADDRESS #define TC35 TC_M3__Scope IMPORT TYPE TC_M3__Scope; #line 14 IMPORT char VS_M3__Scope__6e6d8848308d8a2d; #line 24 "../Interfaces/Variable.i3" typedef t32 (*t36)(); #line 14 "../Interfaces/Decl.i3" typedef struct { t7 _alias; t9 _isExternal; t9 _isInline; t9 _isUnused; t9 _isObsolete; } t37; #line 15 "../Interfaces/Token.i3" typedef unsigned char t58; #line 45 typedef struct { int elts[4]; } t38; #line 14 "../Interfaces/String.i3" typedef struct { t7 _module; t7 _item; } t40; #line 38 "../Interfaces/Scope.i3" typedef t27 (*t41)(); #line 31 typedef t35 (*t42)(); #line 18 "../Interfaces/AssignStmt.i3" typedef unsigned char t44; #line 17 "../Interfaces/M3.i3" #define t45 ADDRESS #define TC45 TC_M3__Stmt IMPORT TYPE TC_M3__Stmt; #line 17 IMPORT char VS_M3__Stmt__376b307627fc1f2f; #line 16 "../Interfaces/AssignStmt.i3" typedef t45 (*t46)(); #line 16 "../Interfaces/Stmt.i3" typedef unsigned char t49; typedef struct { int elts[1]; } t47; typedef void (*t48)(); #line 14 "../Interfaces/SetType.i3" typedef t4 (*t50)(); #line 13 "./ExprRep.i3" #define t51 ADDRESS #line 13 typedef struct { t6 _bind; t6 _check; t6 _write; t12 _isEqual; t15 _evaluate; t6 _getBounds; t12 _isWritable; t12 _isDesignator; #line 13 t12 _isZeroes; t6 _genLiteral; t6 _fprint; t17 _compile; } t51_methods; #define t51_msize (sizeof (t51_methods)) typedef struct { #line 13 t3 _origin; t4 _type; t9 _bound; t9 _inCheck; t9 _checked; } t51_fields; #define t51_size (sizeof (t51_fields)) #define TC51 TC_M3__Expr typedef unsigned char t52; #line 40 "../Interfaces/Value.i3" typedef t52 (*t53)(); #line 121 "../Interfaces/Type.i3" typedef t14 (*t54)(); #line 65 "../Interfaces/Token.i3" typedef struct { t7 elts[97]; } t59; typedef int t60; #line 37 "../Interfaces/String.i3" typedef t30 (*t61)(); #line 34 typedef t7 (*t62)(); #line 28 #define t63 t71 typedef signed_char t67; #line 67 ".ROOT/.boots/corelib/Interfaces/Text.i3" typedef t67 (*t68)(); #line 26 typedef t60 (*t69)(); #line 23 typedef t34 (*t70)(); #line 91 ".ROOT/.boots/corelib/Interfaces/Wr.i3" typedef unsigned char t72; #line 15 ".ROOT/.boots/corelib/Interfaces/Thread.i3" #define t75 ADDRESS #define TC75 TC_Thread__T IMPORT TYPE TC_Thread__T; #line 15 IMPORT char VS_Thread__T__2555b70b3f7780b1; #define t75_MapProc TC_Thread__T->mapProc typedef t73 (*t76)(); #define t77 ADDRESS #define TC77 TC_Thread__Condition IMPORT TYPE TC_Thread__Condition; #line 21 IMPORT char VS_Thread__Condition__26d5968239e08f4e; #define t77_MapProc TC_Thread__Condition->mapProc #define t78 ADDRESS #define TC78 TC_MUTEX IMPORT TYPE TC_MUTEX; IMPORT char VS_MUTEX__1f9d4e89391ab815; #define t78_MapProc TC_MUTEX->mapProc typedef t75 (*t79)(); #line 23 #define t80 ADDRESS #line 23 typedef struct { t76 _apply; } t80_methods; #define t80_msize (sizeof (t80_methods)) typedef struct { #line 23 int filler; } t80_fields; #define t80_size (sizeof (t80_fields)) #define TC80 TC_Thread__Closure IMPORT TYPE TC_Thread__Closure; #line 23 IMPORT char VS_Thread__Closure__7fb5c6232c5a658a; #define t80_MapProc TC_Thread__Closure->mapProc typedef t77 (*t81)(); typedef t78 (*t82)(); #line 28 #define t83 ADDRESS #line 28 typedef struct { int filler; } t83_methods; #define t83_msize (sizeof (t83_methods)) typedef struct { #line 28 t60 _stackSize; } t83_fields; #define t83_size (sizeof (t83_fields)) #define TC83 TC_Thread__SizedClosure IMPORT TYPE TC_Thread__SizedClosure; #line 28 IMPORT char VS_Thread__SizedClosure__8a46717d2eae7b07; #define t83_MapProc TC_Thread__SizedClosure->mapProc typedef CLOSURE t85; typedef float t87; #line 11 "SetExpr.m3" IMPORT INITLINK* Word__init; IMPORT INITLINK* String__init; IMPORT INITLINK* Bool__init; IMPORT INITLINK* Wr__init; IMPORT INITLINK* Temp__init; #line 11 IMPORT INITLINK* Emit__init; IMPORT INITLINK* Target__init; IMPORT INITLINK* Int__init; IMPORT INITLINK* CompareExpr__init; #line 11 IMPORT INITLINK* AssignStmt__init; IMPORT INITLINK* SetType__init; IMPORT INITLINK* KeywordExpr__init; IMPORT INITLINK* RangeExpr__init; #line 11 IMPORT INITLINK* EnumExpr__init; IMPORT INITLINK* IntegerExpr__init; IMPORT INITLINK* Error__init; IMPORT INITLINK* Type__init; #line 11 IMPORT INITLINK* ExprRep__init; IMPORT INITLINK* Expr__init; IMPORT INITLINK* SetExpr__init; IMPORT t3 _Word__And (); IMPORT char VS_Word__And__479727d22e0cef9f; #line 11 IMPORT t3 _Word__Or (); IMPORT char VS_Word__Or__6e0e049826e116f7; IMPORT t3 _Word__Not (); IMPORT char VS_Word__Not__e5602ba93e6fe1e1; #line 11 IMPORT t3 _Word__Shift (); IMPORT char VS_Word__Shift__e50a3c672927c57d; IMPORT t26 _Bool__Map; IMPORT char VS_Bool__Map__988f3fa721f87e62; #line 11 IMPORT EXCEPTION_NAME _Thread__Alerted; IMPORT char VS_Thread__Alerted__fc88feb43485af46; IMPORT EXCEPTION_NAME _Wr__Failure; #line 11 IMPORT char VS_Wr__Failure__5f82cfb43dabf527; IMPORT EXCEPTION_NAME _Wr__Error; IMPORT char VS_Wr__Error__c367253d3ed4fd15; #line 11 IMPORT TYPE TC_Temp__T; IMPORT char VS_Temp__T__3a6c7dc12615e4ee; IMPORT t2 _Temp__AllocEmpty (); IMPORT char VS_Temp__AllocEmpty__20296f6d2a78c948; #line 11 IMPORT t2 _Temp__Alloc (); IMPORT char VS_Temp__Alloc__0b946c9d3ec0974e; IMPORT t86 _Temp__Free (); IMPORT char VS_Temp__Free__3b952a2225c26846; #line 11 IMPORT char VS_Emit__MaxStream__cf0a0e8934c9c9f3; IMPORT TYPE TC_Emit__Format; IMPORT char VS_Emit__Format__bc4a2b083b93bbd7; #line 11 IMPORT t86 _Emit__Op (); IMPORT char VS_Emit__Op__072646cc27c8ae10; IMPORT t86 _Emit__OpS (); IMPORT char VS_Emit__OpS__f7dc93802c012951; #line 11 IMPORT t86 _Emit__OpSS (); IMPORT char VS_Emit__OpSS__6d3e5a1c3d099356; IMPORT t86 _Emit__OpI (); IMPORT char VS_Emit__OpI__02cb878634bb9f49; #line 11 IMPORT t86 _Emit__OpII (); IMPORT char VS_Emit__OpII__2247fe46332f901b; IMPORT t86 _Emit__OpH (); IMPORT char VS_Emit__OpH__466335383480069b; #line 11 IMPORT t86 _Emit__OpT (); IMPORT char VS_Emit__OpT__764bdffe21d249e8; IMPORT t86 _Emit__OpTT (); IMPORT char VS_Emit__OpTT__cba0ce912431e01c; #line 11 IMPORT t86 _Emit__OpTTT (); IMPORT char VS_Emit__OpTTT__91a3dd742690c5b9; IMPORT t86 _Emit__OpTI (); IMPORT char VS_Emit__OpTI__af828b1c28578815; #line 11 IMPORT t86 _Emit__ZeroT (); IMPORT char VS_Emit__ZeroT__503aecb12ddbb6a6; IMPORT char VS_Target__INTSIZE__6d9548032b40710f; #line 11 IMPORT char VS_Target__CHARSIZE__bfc83af22ccab4e4; IMPORT t4 _Int__T; IMPORT char VS_Int__T__1062912139372387; IMPORT t5 _AssignStmt__CheckRHS (); #line 11 IMPORT char VS_AssignStmt__CheckRHS__9aaea40f392f387e; IMPORT t9 _SetType__Split (); IMPORT char VS_SetType__Split__edc8fdf02e117577; #line 11 IMPORT t9 _KeywordExpr__Split (); IMPORT char VS_KeywordExpr__Split__c7296ea8373069e8; IMPORT t5 _RangeExpr__New (); IMPORT char VS_RangeExpr__New__994c470a3fe972ea; #line 11 IMPORT t9 _RangeExpr__Split (); IMPORT char VS_RangeExpr__Split__ee8f44e4219e1314; IMPORT t9 _EnumExpr__Split (); IMPORT char VS_EnumExpr__Split__cac875982d1549f5; #line 11 IMPORT t9 _IntegerExpr__Split (); IMPORT char VS_IntegerExpr__Split__132919062838cba6; IMPORT t86 _Error__Msg (); IMPORT char VS_Error__Msg__4d119a332467757f; #line 11 IMPORT t86 _Error__Warn (); IMPORT char VS_Error__Warn__38cf6ace3df14804; IMPORT TYPE TC_Type__T; IMPORT char VS_Type__T__2446b70b3f7780a5; #line 11 IMPORT t4 _Type__Bind (); IMPORT char VS_Type__Bind__3443ccd12eedb9e8; IMPORT t3 _Type__Size (); IMPORT char VS_Type__Size__2f4d980e28adf05b; #line 11 IMPORT t3 _Type__Number (); IMPORT char VS_Type__Number__f5ca10923ed3cf22; IMPORT t86 _Type__GetBounds (); IMPORT char VS_Type__GetBounds__9a241b2b3c98ad98; #line 11 IMPORT t9 _Type__IsEqual (); IMPORT char VS_Type__IsEqual__4098bc3f32325d05; IMPORT t86 _Type__Check (); IMPORT char VS_Type__Check__3c8ceb09206ee440; #line 11 IMPORT t86 _Type__Fingerprint (); IMPORT char VS_Type__Fingerprint__0d24a3463c25e166; IMPORT t86 _ExprRep__Init (); IMPORT char VS_ExprRep__Init__8b7fff3e227cebab; #line 11 IMPORT t86 _ExprRep__NoBind (); IMPORT char VS_ExprRep__NoBind__e7d0d3dd3d703c08; IMPORT t86 _ExprRep__NoCheck (); IMPORT char VS_ExprRep__NoCheck__c11b54bc361794fa; #line 11 IMPORT t5 _ExprRep__NoValue (); IMPORT char VS_ExprRep__NoValue__8ccc143224598a66; IMPORT t86 _ExprRep__NoBounds (); IMPORT char VS_ExprRep__NoBounds__b64bb146289ee4f0; #line 11 IMPORT t9 _ExprRep__IsNever (); IMPORT char VS_ExprRep__IsNever__8f1a069b301903c8; IMPORT t9 _ExprRep__NeverEq (); IMPORT char VS_ExprRep__NeverEq__dfdc2412249ccb65; #line 11 IMPORT t86 _ExprRep__NoWriter (); IMPORT char VS_ExprRep__NoWriter__a97bb1a23bbf506e; IMPORT t86 _ExprRep__NoLiteral (); IMPORT char VS_ExprRep__NoLiteral__6c9c90073f496f67; #line 11 IMPORT TYPE TC_Expr__T; IMPORT char VS_Expr__T__2446b70b3f7780a5; IMPORT t86 _Expr__Bind (); IMPORT char VS_Expr__Bind__7e2752da3eaf56eb; #line 11 IMPORT t4 _Expr__TypeOf (); IMPORT char VS_Expr__TypeOf__fef0a11b388c64fa; IMPORT t5 _Expr__ConstValue (); IMPORT char VS_Expr__ConstValue__ce4fd448218fe483; #line 11 IMPORT t86 _Expr__TypeCheck (); IMPORT char VS_Expr__TypeCheck__af9aa9073729e7f7; IMPORT t2 _Expr__Compile (); IMPORT char VS_Expr__Compile__a7e0cc4029a2ec76; #line 11 IMPORT t9 _Expr__IsEqual (); IMPORT char VS_Expr__IsEqual__062d8b2c385e35a9; IMPORT t86 _Expr__Fingerprint (); IMPORT char VS_Expr__Fingerprint__50ce687c31d90a5b; #line 11 EXPORT t5 _SetExpr__New (); EXPORT char VS_SetExpr__New__36df42b53aabe0ad = '\0'; EXPORT t9 _SetExpr__Is (); EXPORT char VS_SetExpr__Is__f35771b83b4ba829 = '\0'; #line 11 EXPORT t9 _SetExpr__Compare (); EXPORT char VS_SetExpr__Compare__97823f082e8da06f = '\0'; EXPORT t9 _SetExpr__Union (); EXPORT char VS_SetExpr__Union__63625dc4384339f6 = '\0'; #line 11 EXPORT t9 _SetExpr__Intersection (); EXPORT char VS_SetExpr__Intersection__4f02e31a2ccb1fd3 = '\0'; EXPORT t9 _SetExpr__Difference (); #line 11 EXPORT char VS_SetExpr__Difference__626e4c0526055698 = '\0'; EXPORT t9 _SetExpr__SymDifference (); EXPORT char VS_SetExpr__SymDifference__9a3f8b052c9cc602 = '\0'; #line 11 EXPORT t9 _SetExpr__Include (); EXPORT char VS_SetExpr__Include__83556f08328fb16e = '\0'; EXPORT t9 _SetExpr__Exclude (); #line 11 EXPORT char VS_SetExpr__Exclude__7fb5f76a3829ff1d = '\0'; EXPORT t9 _SetExpr__Member (); EXPORT char VS_SetExpr__Member__e17859962ab48522 = '\0'; #line 11 EXPORT t86 _SetExpr__CompileAssign (); EXPORT char VS_SetExpr__CompileAssign__0231eea428cde01e = '\0'; EXPORT t86 _SetExpr__CompileUnion (); #line 11 EXPORT char VS_SetExpr__CompileUnion__f4ceb4262a34cf62 = '\0'; EXPORT t86 _SetExpr__CompileInter (); EXPORT char VS_SetExpr__CompileInter__6d1f6b4c27c692b8 = '\0'; #line 11 EXPORT t86 _SetExpr__CompileDiff (); EXPORT char VS_SetExpr__CompileDiff__b3c5adc920b9a4bb = '\0'; EXPORT t86 _SetExpr__CompileDiv (); #line 11 EXPORT char VS_SetExpr__CompileDiv__22fb224e3e4eb7a7 = '\0'; EXPORT t86 _SetExpr__CompileCompareT (); EXPORT char VS_SetExpr__CompileCompareT__b38fcbec2cd1bfac = '\0'; #line 11 EXPORT t86 _SetExpr__CompileCompareL (); EXPORT char VS_SetExpr__CompileCompareL__c99c39263ffd166a = '\0'; EXPORT t86 _SetExpr__CompileMember (); #line 11 EXPORT char VS_SetExpr__CompileMember__e564df29347be7de = '\0'; PRIVATE TYPE TC_SetExpr__Node; PRIVATE TYPE TC_SetExpr__P; #line 11 PRIVATE t3 _SetExpr__full; PRIVATE t23 _SetExpr__left; PRIVATE t23 _SetExpr__right; PRIVATE t5 _SetExpr__NewFromTree (); PRIVATE t9 _SetExpr__ConstElt (); #line 11 PRIVATE t9 _SetExpr__CheckPair (); PRIVATE t86 _SetExpr__SetupVisit (); PRIVATE t9 _SetExpr__Visit (); PRIVATE t9 _SetExpr__BuildMap (); #line 11 PRIVATE t86 _SetExpr__AddOther (); PRIVATE t10 _SetExpr__AddNode (); PRIVATE t10 _SetExpr__NormalizeTree (); PRIVATE t86 _SetExpr__Bind (); #line 11 PRIVATE t86 _SetExpr__Check (); PRIVATE t9 _SetExpr__EqCheck (); PRIVATE t2 _SetExpr__Compile (); PRIVATE t3 _SetExpr__CountWords (); #line 11 PRIVATE t86 _SetExpr__EmitAssign (); PRIVATE t5 _SetExpr__Fold (); PRIVATE t86 _SetExpr__FPrinter (); PRIVATE t9 _SetExpr__IsZeroes (); #line 11 PRIVATE t86 _SetExpr__GenLiteral (); PRIVATE t86 _SetExpr__EmitOne (); IMPORT char VS_M3__Expr__58bf709e39adf1f7; #line 60 "SetExpr.m3" EXPORT t5 _SetExpr__New (_type, _args) t4 _type; t21 _args; { t11 z0; t11 z2; t3 z1; #line 60 "SetExpr.m3" { auto t11 _p; auto t5 __result; { ZERO1 (& _p); #line 60 CHECKSTACKOVERFLOW; { register char** ptr = (char**) UNEWOBJ (TC11); z0 = (t11) ptr; }; _p = z0; _ExprRep__Init (_p); NILCHECKA (z2 = _p); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe) = _type; NILCHECKA (z2 = _p); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args) = _args; NILCHECKA (z2 = _p); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_mapped) = 0 ; NILCHECKA (z2 = _p); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_tree) = (t10) 0; NILCHECKA (z2 = _p); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_others) = (t21) 0; z1 = - 1 ; NILCHECKA (z2 = _p); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_nOthers) = z1; __result = _p; return __result; } } }; #line 74 "SetExpr.m3" PRIVATE t5 _SetExpr__NewFromTree (_p, _node) t11 _p; t10 _node; { t11 z0; t11 z1; t11 z3; t11 z2; t10 z4; t3 z5; #line 74 "SetExpr.m3" { auto t11 _c; auto t5 __result; { ZERO1 (& _c); #line 74 CHECKSTACKOVERFLOW; { register char** ptr = (char**) UNEWOBJ (TC11); z0 = (t11) ptr; }; _c = z0; NILCHECKA (z1 = _p); NILCHECKA (z3 = _c); (((t51_fields*)(z3+(0+t84_size)))->_origin) = (((t51_fields*)(z1+(0+t84_size)))->_origin); NILCHECKA (z1 = _p); NILCHECKA (z3 = _c); (((t51_fields*)(z3+(0+t84_size)))->_type) = (((t51_fields*)(z1+(0+t84_size)))->_type); NILCHECKA (z1 = _p); NILCHECKA (z3 = _c); (((t51_fields*)(z3+(0+t84_size)))->_bound) = (((t51_fields*)(z1+(0+t84_size)))->_bound); NILCHECKA (z1 = _p); NILCHECKA (z3 = _c); (((t51_fields*)(z3+(0+t84_size)))->_inCheck) = (((t51_fields*)(z1+(0+t84_size)))->_inCheck); NILCHECKA (z1 = _p); NILCHECKA (z3 = _c); (((t51_fields*)(z3+(0+t84_size)))->_checked) = (((t51_fields*)(z1+(0+t84_size)))->_checked); NILCHECKA (z1 = _p); NILCHECKA (z3 = _c); (((t11_fields*)(z3+(0+t51_size+t84_size)))->_tipe) = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tipe); NILCHECKA (z1 = _p); NILCHECKA (z3 = _c); (((t11_fields*)(z3+(0+t51_size+t84_size)))->_args) = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_args); NILCHECKA (z2 = _c); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_mapped) = 1 ; z4 = _SetExpr__NormalizeTree (_node); NILCHECKA (z1 = _c); (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree) = z4; NILCHECKA (z2 = _c); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_others) = (t21) 0; z5 = - 1 ; NILCHECKA (z1 = _p); (((t11_fields*)(z1+(0+t51_size+t84_size)))->_nOthers) = z5; __result = _c; return __result; } } }; #line 92 "SetExpr.m3" EXPORT t9 _SetExpr__Is (_e) t5 _e; { t3 z1; t3 z0; t9 z2; #line 92 "SetExpr.m3" { auto t9 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; z1 = TYPECODE (_e); z0 = TC11->typecode; z2 = (z1 == z0); __result = z2; return __result; } } }; #line 97 "SetExpr.m3" EXPORT t9 _SetExpr__Compare (_a, _b, _sign) t5 _a; t5 _b; t3 * _sign; { t9 z5; t9 z0; t11 z3; t11 z6; t9 z2; t9 z4; t9 z1; t3 z7; #line 97 "SetExpr.m3" { auto t11 _p; auto t11 _q; auto t9 _le; auto t9 _eq; auto t9 _ge; auto t20 _s; auto t9 __result; { ZERO1 (& _p); ZERO1 (& _q); ZERO1B (& _le); ZERO1B (& _eq); ZERO1B (& _ge); ZERO (36, & _s); #line 97 ZERO1B (& __result); _le = 1 ; _eq = 1 ; _ge = 1 ; #line 97 CHECKSTACKOVERFLOW; z5 = _SetExpr__CheckPair (_a, _b, &_p, &_q); z0 = ! z5; if (z0) { __result = 0 ; return __result; }; NILCHECKA (z3 = _p); NILCHECKA (z6 = _q); _SetExpr__SetupVisit (&_s, (((t11_fields*)(z3+(0+t51_size+t84_size)))->_tree), (((t11_fields*)(z6+(0+t51_size+t84_size)))->_tree)); z2 = _SetExpr__Visit (&_s); if (z2) do { z4 = ((_s._min) <= (_s._max)); if (z4) { z2 = 0; if ((_s._inA)) { z4 = ! (_s._inB); z2 = z4; }; if (z2) { _eq = 0 ; _le = 0 ; goto if_3_end; }; z2 = 0; if ((_s._inB)) { z4 = ! (_s._inA); z2 = z4; }; if (z2) { _eq = 0 ; _ge = 0 ; goto if_3_end; }; if_3_end: /**/; goto if_2_end; }; if_2_end: /**/; z2 = _SetExpr__Visit (&_s); #line 108 } while (z2); z1 = 0; if (_le) { z2 = ! _eq; z1 = z2; }; if (z1) { z7 = - 1 ; (*_sign) = z7; goto if_4_end; }; z1 = 0; if (_ge) { #line 112 z2 = ! _eq; z1 = z2; }; if (z1) { (*_sign) = 1 ; goto if_4_end; }; if (_eq) { (*_sign) = 0 ; goto if_4_end; }; z7 = - 99 ; (*_sign) = z7; if_4_end: /**/; __result = 1 ; return __result; } } }; #line 120 "SetExpr.m3" EXPORT t9 _SetExpr__Union (_a, _b, _c) t5 _a; t5 _b; t5 * _c; { t9 z5; t9 z0; t11 z1; t9 z2; t10 z3; t10 z6; t5 z4; #line 120 "SetExpr.m3" { auto t11 _p; auto t11 _q; auto t10 _n; auto t10 _x; auto t9 __result; { ZERO1 (& _p); ZERO1 (& _q); #line 120 ZERO1B (& __result); CHECKSTACKOVERFLOW; z5 = _SetExpr__CheckPair (_a, _b, &_p, &_q); z0 = ! z5; if (z0) { __result = 0 ; return __result; }; _n = (t10) 0; NILCHECKA (z1 = _p); _x = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree); z2 = (_x != 0); if (z2) do { NILCHECKA (z3 = _x); z6 = _SetExpr__AddNode (_n, ((*((t24*) z3))._min), ((*((t24*) z3))._max)); _n = z6; NILCHECKA (z3 = _x); _x = ((*((t24*) z3))._next); z2 = (_x != 0); } while (z2); NILCHECKA (z1 = _q); _x = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree); z2 = (_x != 0); if (z2) do { NILCHECKA (z3 = _x); z6 = _SetExpr__AddNode (_n, ((*((t24*) z3))._min), ((*((t24*) z3))._max)); _n = z6; NILCHECKA (z3 = _x); _x = ((*((t24*) z3))._next); z2 = (_x != 0); } while (z2); z4 = _SetExpr__NewFromTree (_p, _n); (*_c) = z4; __result = 1 ; return __result; } } }; #line 139 "SetExpr.m3" EXPORT t9 _SetExpr__Intersection (_a, _b, _c) t5 _a; t5 _b; t5 * _c; { t9 z5; t9 z0; t11 z3; t11 z6; t9 z2; t9 z4; t9 z1; t10 z7; t5 z8; #line 139 "SetExpr.m3" { auto t11 _p; auto t11 _q; auto t10 _n; auto t20 _s; auto t9 __result; { ZERO1 (& _p); ZERO1 (& _q); ZERO (36, & _s); #line 139 ZERO1B (& __result); CHECKSTACKOVERFLOW; z5 = _SetExpr__CheckPair (_a, _b, &_p, &_q); z0 = ! z5; if (z0) { __result = 0 ; return __result; }; _n = (t10) 0; NILCHECKA (z3 = _p); NILCHECKA (z6 = _q); _SetExpr__SetupVisit (&_s, (((t11_fields*)(z3+(0+t51_size+t84_size)))->_tree), (((t11_fields*)(z6+(0+t51_size+t84_size)))->_tree)); z2 = _SetExpr__Visit (&_s); if (z2) do { z4 = ((_s._min) <= (_s._max)); z0 = 0; if (z4) { z0 = (_s._inA); }; z1 = 0; if (z0) { z1 = (_s._inB); }; if (z1) { z7 = _SetExpr__AddNode (_n, (_s._min), (_s._max)); _n = z7; goto if_7_end; }; if_7_end: /**/; z2 = _SetExpr__Visit (&_s); #line 147 } while (z2); z8 = _SetExpr__NewFromTree (_p, _n); (*_c) = z8; __result = 1 ; return __result; } } }; #line 154 "SetExpr.m3" EXPORT t9 _SetExpr__Difference (_a, _b, _c) t5 _a; t5 _b; t5 * _c; { t9 z5; t9 z0; t11 z3; t11 z6; t9 z2; t9 z4; t9 z1; t10 z7; t5 z8; #line 154 "SetExpr.m3" { auto t11 _p; auto t11 _q; auto t10 _n; auto t20 _s; auto t9 __result; { ZERO1 (& _p); ZERO1 (& _q); ZERO (36, & _s); #line 154 ZERO1B (& __result); CHECKSTACKOVERFLOW; z5 = _SetExpr__CheckPair (_a, _b, &_p, &_q); z0 = ! z5; if (z0) { __result = 0 ; return __result; }; _n = (t10) 0; NILCHECKA (z3 = _p); NILCHECKA (z6 = _q); _SetExpr__SetupVisit (&_s, (((t11_fields*)(z3+(0+t51_size+t84_size)))->_tree), (((t11_fields*)(z6+(0+t51_size+t84_size)))->_tree)); z2 = _SetExpr__Visit (&_s); if (z2) do { z4 = ((_s._min) <= (_s._max)); z0 = 0; if (z4) { z0 = (_s._inA); }; z1 = 0; if (z0) { z4 = ! (_s._inB); z1 = z4; }; if (z1) { z7 = _SetExpr__AddNode (_n, (_s._min), (_s._max)); _n = z7; goto if_9_end; }; if_9_end: /**/; z2 = _SetExpr__Visit (&_s); #line 162 } while (z2); z8 = _SetExpr__NewFromTree (_p, _n); (*_c) = z8; __result = 1 ; return __result; } } }; #line 169 "SetExpr.m3" EXPORT t9 _SetExpr__SymDifference (_a, _b, _c) t5 _a; t5 _b; t5 * _c; { t9 z5; t9 z0; t11 z3; t11 z6; t9 z2; t9 z4; t10 z7; t5 z8; #line 169 "SetExpr.m3" { auto t11 _p; auto t11 _q; auto t10 _n; auto t20 _s; auto t9 __result; { ZERO1 (& _p); ZERO1 (& _q); ZERO (36, & _s); #line 169 ZERO1B (& __result); CHECKSTACKOVERFLOW; z5 = _SetExpr__CheckPair (_a, _b, &_p, &_q); z0 = ! z5; if (z0) { __result = 0 ; return __result; }; _n = (t10) 0; NILCHECKA (z3 = _p); NILCHECKA (z6 = _q); _SetExpr__SetupVisit (&_s, (((t11_fields*)(z3+(0+t51_size+t84_size)))->_tree), (((t11_fields*)(z6+(0+t51_size+t84_size)))->_tree)); z2 = _SetExpr__Visit (&_s); if (z2) do { z4 = ((_s._min) <= (_s._max)); z0 = 0; if (z4) { z5 = ((_s._inA) != (_s._inB)); z0 = z5; }; if (z0) { z7 = _SetExpr__AddNode (_n, (_s._min), (_s._max)); _n = z7; goto if_11_end; }; if_11_end: /**/; z2 = _SetExpr__Visit (&_s); #line 177 } while (z2); z8 = _SetExpr__NewFromTree (_p, _n); (*_c) = z8; __result = 1 ; return __result; } } }; #line 184 "SetExpr.m3" EXPORT t9 _SetExpr__Include (_set, _elt, _c) t5 _set; t5 _elt; t5 * _c; { t9 z3; t9 z0; t10 z4; t11 z1; t9 z2; t10 z6; t5 z5; #line 184 "SetExpr.m3" { auto t11 _p; auto t3 _i; auto t10 _n; auto t10 _x; auto t9 __result; { ZERO1 (& _p); #line 184 ZERO1B (& __result); CHECKSTACKOVERFLOW; z3 = _SetExpr__ConstElt (_elt, &_i); z0 = ! z3; if (z0) { __result = 0 ; return __result; }; z3 = _SetExpr__BuildMap (_set, &_p); z0 = ! z3; if (z0) { __result = 0 ; return __result; }; z4 = _SetExpr__AddNode (0, _i, _i); _n = z4; NILCHECKA (z1 = _p); _x = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree); z2 = (_x != 0); if (z2) do { NILCHECKA (z4 = _x); z6 = _SetExpr__AddNode (_n, ((*((t24*) z4))._min), ((*((t24*) z4))._max)); _n = z6; NILCHECKA (z4 = _x); _x = ((*((t24*) z4))._next); z2 = (_x != 0); } while (z2); z5 = _SetExpr__NewFromTree (_p, _n); (*_c) = z5; __result = 1 ; return __result; } } }; #line 199 "SetExpr.m3" EXPORT t9 _SetExpr__Exclude (_set, _elt, _c) t5 _set; t5 _elt; t5 * _c; { t9 z3; t9 z0; t11 z1; t9 z2; t10 z4; t9 z5; t3 z7; t10 z6; t5 z8; #line 199 "SetExpr.m3" { auto t11 _p; auto t3 _i; auto t10 _n; auto t10 _x; auto t9 __result; { ZERO1 (& _p); #line 199 ZERO1B (& __result); CHECKSTACKOVERFLOW; z3 = _SetExpr__ConstElt (_elt, &_i); z0 = ! z3; if (z0) { __result = 0 ; return __result; }; z3 = _SetExpr__BuildMap (_set, &_p); z0 = ! z3; if (z0) { __result = 0 ; return __result; }; _n = (t10) 0; NILCHECKA (z1 = _p); _x = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree); z2 = (_x != 0); if (z2) do { NILCHECKA (z4 = _x); z3 = (((*((t24*) z4))._min) <= _i); z0 = 0; if (z3) { NILCHECKA (z4 = _x); z5 = (_i <= ((*((t24*) z4))._max)); z0 = z5; #line 207 }; if (z0) { NILCHECKA (z4 = _x); z7 = _i - 1 ; z6 = _SetExpr__AddNode (_n, ((*((t24*) z4))._min), z7); _n = z6; z7 = _i + 1 ; NILCHECKA (z4 = _x); z6 = _SetExpr__AddNode (_n, z7, ((*((t24*) z4))._max)); _n = z6; goto if_16_end; #line 209 }; NILCHECKA (z4 = _x); z6 = _SetExpr__AddNode (_n, ((*((t24*) z4))._min), ((*((t24*) z4))._max)); _n = z6; if_16_end: /**/; NILCHECKA (z4 = _x); _x = ((*((t24*) z4))._next); z2 = (_x != 0); } while (z2); z8 = _SetExpr__NewFromTree (_p, _n); (*_c) = z8; __result = 1 ; return __result; } } }; #line 219 "SetExpr.m3" EXPORT t9 _SetExpr__Member (_set, _elt, _c) t5 _set; t5 _elt; t5 * _c; { t9 z3; t9 z0; t11 z1; t9 z2; t10 z4; t9 z5; #line 219 "SetExpr.m3" { auto t11 _p; auto t3 _i; auto t10 _x; auto t9 __result; { ZERO1 (& _p); #line 219 ZERO1B (& __result); CHECKSTACKOVERFLOW; z3 = _SetExpr__ConstElt (_elt, &_i); z0 = ! z3; if (z0) { __result = 0 ; return __result; }; z3 = _SetExpr__BuildMap (_set, &_p); z0 = ! z3; if (z0) { __result = 0 ; return __result; }; NILCHECKA (z1 = _p); _x = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree); z2 = (_x != 0); if (z2) do { NILCHECKA (z4 = _x); z3 = (((*((t24*) z4))._min) <= _i); z0 = 0; if (z3) { NILCHECKA (z4 = _x); z5 = (_i <= ((*((t24*) z4))._max)); z0 = z5; #line 226 }; if (z0) { (*_c) = (_Bool__Map.elts[ 1 ]); __result = 1 ; return __result; }; NILCHECKA (z4 = _x); _x = ((*((t24*) z4))._next); z2 = (_x != 0); } while (z2); (*_c) = (_Bool__Map.elts[ 0 ]); __result = 1 ; return __result; } } }; #line 236 "SetExpr.m3" PRIVATE t9 _SetExpr__ConstElt (_elt, _i) t5 _elt; t3 * _i; { t5 z2; t9 z3; t9 z0; t9 z5; #line 236 "SetExpr.m3" { auto t4 _t; auto t9 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; z2 = _Expr__ConstValue (_elt); _elt = z2; z3 = (_elt == 0); if (z3) { __result = 0 ; return __result; }; z3 = _IntegerExpr__Split (_elt, &(*_i)); z0 = 1; if (! z3) { z5 = _EnumExpr__Split (_elt, &(*_i), &_t); z0 = z5; }; #line 241 __result = z0; return __result; } } }; #line 244 "SetExpr.m3" PRIVATE t9 _SetExpr__CheckPair (_a, _b, _p, _q) t5 _a; t5 _b; t11 * _p; t11 * _q; { t9 z3; t9 z0; t9 z4; t9 z1; t11 z5; t11 z6; #line 244 "SetExpr.m3" { auto t9 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; z3 = _SetExpr__BuildMap (_a, &(*_p)); z0 = 0; if (z3) { z4 = _SetExpr__BuildMap (_b, &(*_q)); z0 = z4; }; z1 = 0; if (z0) { #line 246 NILCHECKA (z5 = (*_p)); NILCHECKA (z6 = (*_q)); z4 = _Type__IsEqual ((((t11_fields*)(z5+(0+t51_size+t84_size)))->_tipe), (((t11_fields*)(z6+(0+t51_size+t84_size)))->_tipe)); #line 246 z1 = z4; }; __result = z1; return __result; } } }; #line 251 "SetExpr.m3" PRIVATE t86 _SetExpr__SetupVisit (_s, _x, _y) t20 * _s; t10 _x; t10 _y; { t9 z2; t10 z1; #line 251 "SetExpr.m3" { { CHECKSTACKOVERFLOW; ((*_s)._a) = _x; ((*_s)._b) = _y; z2 = (_x != 0); if (z2) { NILCHECKA (z1 = _x); ((*_s)._amin) = ((*((t24*) z1))._min); NILCHECKA (z1 = _x); ((*_s)._amax) = ((*((t24*) z1))._max); #line 255 goto if_21_end; }; if_21_end: /**/; z2 = (_y != 0); if (z2) { NILCHECKA (z1 = _y); ((*_s)._bmin) = ((*((t24*) z1))._min); NILCHECKA (z1 = _y); ((*_s)._bmax) = ((*((t24*) z1))._max); #line 256 goto if_22_end; }; if_22_end: /**/; } } }; #line 259 "SetExpr.m3" PRIVATE t9 _SetExpr__Visit (_s) t20 * _s; { t9 z3; t9 z0; t9 z4; t3 z5; t10 z2; #line 259 "SetExpr.m3" { auto t9 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; z3 = (((*_s)._a) == 0); z0 = 0; if (z3) { z4 = (((*_s)._b) == 0); z0 = z4; }; if (z0) { __result = 0 ; return __result; }; z3 = (((*_s)._a) == 0); if (z3) { ((*_s)._min) = ((*_s)._bmin); ((*_s)._max) = ((*_s)._bmax); ((*_s)._inA) = 0 ; ((*_s)._inB) = 1 ; z5 = ((*_s)._bmax) + 1 ; ((*_s)._bmin) = z5; goto if_23_end; }; z3 = (((*_s)._b) == 0); if (z3) { ((*_s)._min) = ((*_s)._amin); ((*_s)._max) = ((*_s)._amax); ((*_s)._inA) = 1 ; ((*_s)._inB) = 0 ; z5 = ((*_s)._amax) + 1 ; ((*_s)._amin) = z5; goto if_23_end; }; z4 = (((*_s)._amin) < ((*_s)._bmin)); if (z4) { ((*_s)._min) = ((*_s)._amin); ((*_s)._inA) = 1 ; ((*_s)._inB) = 0 ; z4 = (((*_s)._amax) < ((*_s)._bmin)); if (z4) { ((*_s)._max) = ((*_s)._amax); z5 = ((*_s)._amax) + 1 ; ((*_s)._amin) = z5; goto if_25_end; }; ((*_s)._max) = ((*_s)._bmin); z5 = ((*_s)._bmin) + 1 ; ((*_s)._amin) = z5; ((*_s)._bmin) = ((*_s)._amin); if_25_end: /**/; goto if_24_end; #line 278 }; z4 = (((*_s)._amin) == ((*_s)._bmin)); if (z4) { ((*_s)._min) = ((*_s)._amin); ((*_s)._inA) = 1 ; ((*_s)._inB) = 1 ; z4 = (((*_s)._amax) <= ((*_s)._bmax)); if (z4) { ((*_s)._max) = ((*_s)._amax); z5 = ((*_s)._amax) + 1 ; ((*_s)._amin) = z5; goto if_26_end; }; ((*_s)._max) = ((*_s)._bmax); z5 = ((*_s)._bmax) + 1 ; ((*_s)._amin) = z5; if_26_end: /**/; ((*_s)._bmin) = ((*_s)._amin); goto if_24_end; }; ((*_s)._min) = ((*_s)._bmin); ((*_s)._inA) = 0 ; ((*_s)._inB) = 1 ; z4 = (((*_s)._amin) > ((*_s)._bmax)); if (z4) { ((*_s)._max) = ((*_s)._bmax); z5 = ((*_s)._bmax) + 1 ; ((*_s)._bmin) = z5; goto if_27_end; }; ((*_s)._max) = ((*_s)._amin); z5 = ((*_s)._amin) + 1 ; ((*_s)._amin) = z5; ((*_s)._bmin) = ((*_s)._amin); if_27_end: /**/; if_24_end: /**/; #line 293 if_23_end: /**/; z4 = (((*_s)._amin) > ((*_s)._amax)); z0 = 0; if (z4) { z4 = (((*_s)._a) != 0); z0 = z4; }; if (z0) { NILCHECKA (z2 = ((*_s)._a)); ((*_s)._a) = ((*((t24*) z2))._next); z3 = (((*_s)._a) != 0); if (z3) { NILCHECKA (z2 = ((*_s)._a)); ((*_s)._amin) = ((*((t24*) z2))._min); NILCHECKA (z2 = ((*_s)._a)); #line 299 ((*_s)._amax) = ((*((t24*) z2))._max); goto if_29_end; }; if_29_end: /**/; goto if_28_end; }; if_28_end: /**/; z4 = (((*_s)._bmin) > ((*_s)._bmax)); z0 = 0; if (z4) { z4 = (((*_s)._b) != 0); z0 = z4; }; if (z0) { NILCHECKA (z2 = ((*_s)._b)); ((*_s)._b) = ((*((t24*) z2))._next); z3 = (((*_s)._b) != 0); if (z3) { NILCHECKA (z2 = ((*_s)._b)); ((*_s)._bmin) = ((*((t24*) z2))._min); NILCHECKA (z2 = ((*_s)._b)); #line 303 ((*_s)._bmax) = ((*((t24*) z2))._max); goto if_31_end; }; if_31_end: /**/; goto if_30_end; }; if_30_end: /**/; __result = 1 ; return __result; } } }; #line 308 "SetExpr.m3" PRIVATE t9 _SetExpr__BuildMap (_e, _p) t5 _e; t11 * _p; { t11 z1; t9 z3; t11 z2; t9 z4; t9 z0; t3 z5; t21 z6; t3 z7; t5 z8; t11 z9; t9 z10; t10 z11; #line 308 "SetExpr.m3" { auto t4 _t; auto t4 _range; auto t5 _elt; auto t5 _eMin; auto t5 _eMax; auto t3 _from; auto t3 _to; auto t3 _min; auto t3 _max; #line 308 auto t9 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; { register ADDRESS ref = (ADDRESS) _e; register int tc = TYPECODE (ref); if (tc == 0) goto tc0_0; if (ISSUBTYPE (tc, TC11)) goto tc0_1; #line 314 goto tc0_else; tc0_0:; __result = 0 ; return __result; tc0_1:; { auto t11 _x; { ZERO1 (& _x); #line 315 _x = (t11) ref; (*_p) = _x; } } goto tc0_exit; tc0_else:; __result = 0 ; return __result; tc0_exit:; }; NILCHECKA (z1 = (*_p)); if ((((t11_fields*)(z1+(0+t51_size+t84_size)))->_mapped)) { NILCHECKA (z1 = (*_p)); z3 = ((((t11_fields*)(z1+(0+t51_size+t84_size)))->_others) == 0); #line 319 __result = z3; return __result; }; NILCHECKA (z2 = (*_p)); (((t11_fields*)(z2+(0+t51_size+t84_size)))->_mapped) = 1 ; NILCHECKA (z2 = (*_p)); z4 = _SetType__Split ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe), &_range); z0 = ! z4; #line 321 if (z0) { __result = 0 ; return __result; }; _Type__GetBounds (_range, &_min, &_max); z3 = (_max < _min); if (z3) { __result = 0 ; return __result; }; { int from, to, index; from = 0 ; NILCHECKA (z1 = (*_p)); NILCHECKB (z6 = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_args)); #line 324 z5 = (*((t25*) z6)).size[0] - 1; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { _i = (t3) index; NILCHECKA (z2 = (*_p)); NILCHECKB (z6 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z6)); #line 325 z7 = _i; if (z7 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z7 * 4)); }; z8 = _Expr__ConstValue ((*(t5*)z5)); #line 325 _elt = z8; z3 = (_elt == 0); if (z3) { NILCHECKA (z9 = (*_p)); NILCHECKB (z6 = (((t11_fields*)(z9+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z6)); #line 328 z7 = _i; if (z7 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z7 * 4)); }; _SetExpr__AddOther ((*_p), (*(t5*)z5)); #line 328 goto if_35_end; }; z3 = _IntegerExpr__Split (_elt, &_from); z0 = 1; if (! z3) { z10 = _EnumExpr__Split (_elt, &_from, &_t); #line 328 z0 = z10; }; if (z0) { z3 = (_from < _min); z0 = 1; if (! z3) { z3 = (_max < _from); z0 = z3; }; if (z0) { _Error__Warn ( 2 , ((ADDRESS)(& txt37.str))); _SetExpr__AddOther ((*_p), _elt); goto if_36_end; }; #line 331 NILCHECKA (z2 = (*_p)); z11 = _SetExpr__AddNode ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tree), _from, _from); #line 332 NILCHECKA (z1 = (*_p)); (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree) = z11; if_36_end: /**/; #line 332 goto if_35_end; }; z4 = _RangeExpr__Split (_elt, &_eMin, &_eMax); if (z4) { z8 = _Expr__ConstValue (_eMin); _eMin = z8; z8 = _Expr__ConstValue (_eMax); _eMax = z8; z3 = (_eMin != 0); z0 = 0; if (z3) { z3 = (_eMax != 0); z0 = z3; }; z3 = 0; if (z0) { z4 = _IntegerExpr__Split (_eMin, &_from); #line 337 z0 = 1; if (! z4) { z10 = _EnumExpr__Split (_eMin, &_from, &_t); z0 = z10; }; z3 = z0; }; z0 = 0; #line 337 if (z3) { z4 = _IntegerExpr__Split (_eMax, &_to); z3 = 1; if (! z4) { z10 = _EnumExpr__Split (_eMax, &_to, &_t); #line 337 z3 = z10; }; z0 = z3; }; if (z0) { z3 = (_from < _min); z0 = 1; if (! z3) { z3 = (_max < _from); z0 = z3; }; if (z0) { _Error__Warn ( 2 , ((ADDRESS)(& txt37.str))); _SetExpr__AddOther ((*_p), _elt); goto if_38_end; #line 342 }; NILCHECKA (z2 = (*_p)); z11 = _SetExpr__AddNode ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tree), _from, _to); NILCHECKA (z1 = (*_p)); #line 343 (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree) = z11; if_38_end: /**/; goto if_37_end; }; _SetExpr__AddOther ((*_p), _elt); if_37_end: /**/; goto if_35_end; }; _Error__Warn ( 2 , ((ADDRESS)(& txt38.str))); _SetExpr__AddOther ((*_p), _elt); if_35_end: /**/; } } }; }; NILCHECKA (z2 = (*_p)); z11 = _SetExpr__NormalizeTree ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tree)); NILCHECKA (z1 = (*_p)); #line 353 (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree) = z11; NILCHECKA (z1 = (*_p)); z3 = ((((t11_fields*)(z1+(0+t51_size+t84_size)))->_others) == 0); __result = z3; return __result; #line 354 } } }; #line 357 "SetExpr.m3" PRIVATE t86 _SetExpr__AddOther (_p, _elt) t11 _p; t5 _elt; { t11 z1; t9 z3; t21 z0; t60 z2; t11 z4; t21 z5; t3 z6; t3 z7; t3 z8; #line 357 "SetExpr.m3" { { CHECKSTACKOVERFLOW; NILCHECKA (z1 = _p); z3 = ((((t11_fields*)(z1+(0+t51_size+t84_size)))->_others) == 0); if (z3) { { register t71* ptr; int sz[1]; NILCHECKA (z4 = _p); NILCHECKB (z5 = (((t11_fields*)(z4+(0+t51_size+t84_size)))->_args)); #line 360 z2 = (*((t25*) z5)).size[0]; sz[0] = z2; ptr = (t71*) UNEWA(TC21, 8 + sz[0] * 4); ptr->elts = (char*)(& ptr->size[1]); #line 360 ptr->size[0] = sz[0]; z0 = (t21) ptr; }; NILCHECKA (z4 = _p); (((t11_fields*)(z4+(0+t51_size+t84_size)))->_others) = z0; NILCHECKA (z4 = _p); (((t11_fields*)(z4+(0+t51_size+t84_size)))->_nOthers) = 0 ; goto if_39_end; }; if_39_end: /**/; NILCHECKA (z4 = _p); NILCHECKB (z5 = (((t11_fields*)(z4+(0+t51_size+t84_size)))->_others)); NILCHECKA (z4 = _p); z6 = (((t11_fields*)(z4+(0+t51_size+t84_size)))->_nOthers); #line 363 if (z6 < 0) RANGEFAULT; { register t71* array = & (*((t25*) z5)); z8 = z6; if (z8 >= (array->size[0])) RANGEFAULT; z7 = (int)(array->elts + (z8 * 4)); #line 363 }; (*(t5*)z7) = _elt; NILCHECKA (z1 = _p); (((t11_fields*)(z1+(0+t51_size+t84_size)))->_nOthers) += 1 ; } } }; #line 367 "SetExpr.m3" PRIVATE t10 _SetExpr__AddNode (_n, _min, _max) t10 _n; t3 _min; t3 _max; { t9 z2; t10 z0; t10 z3; t10 z1; t9 z4; t9 z5; t9 z6; t3 z7; t3 z8; #line 367 "SetExpr.m3" { auto t10 _x; auto t10 __result; { CHECKSTACKOVERFLOW; z2 = (_min > _max); if (z2) { __result = _n; return __result; }; _x = _n; loop_0:; z2 = (_x == 0); if (z2) { { register t24* ptr = (t24*) UNEW (TC10); z0 = (t10) ptr; }; _x = z0; NILCHECKA (z3 = _x); ((*((t24*) z3))._next) = _n; #line 374 NILCHECKA (z3 = _x); ((*((t24*) z3))._min) = _min; NILCHECKA (z3 = _x); ((*((t24*) z3))._max) = _max; __result = _x; return __result; }; NILCHECKA (z1 = _x); z4 = (((*((t24*) z1))._min) <= _min); z2 = 0; if (z4) { NILCHECKA (z3 = _x); z5 = (_min <= ((*((t24*) z3))._max)); #line 377 z2 = z5; }; z4 = 1; if (! z2) { NILCHECKA (z1 = _x); z5 = (((*((t24*) z1))._min) <= _max); z2 = 0; if (z5) { NILCHECKA (z3 = _x); #line 377 z6 = (_max <= ((*((t24*) z3))._min)); z2 = z6; }; z4 = z2; }; if (z4) { NILCHECKA (z1 = _x); z7 = ((*((t24*) z1))._min); z8 = _min; if (z7 > z8) z7 = z8; NILCHECKA (z1 = _x); ((*((t24*) z1))._min) = z7; NILCHECKA (z1 = _x); z7 = ((*((t24*) z1))._max); z8 = _max; if (z7 < z8) z7 = z8; NILCHECKA (z1 = _x); ((*((t24*) z1))._max) = z7; __result = _n; return __result; }; NILCHECKA (z1 = _x); _x = ((*((t24*) z1))._next); goto loop_0; } } }; #line 387 "SetExpr.m3" PRIVATE t10 _SetExpr__NormalizeTree (_n) t10 _n; { t9 z2; t9 z1; t10 z3; t10 z4; t9 z6; t9 z0; t10 z5; t9 z7; t3 z8; t3 z9; #line 387 "SetExpr.m3" { auto t10 _x1; auto t10 _x2; auto t10 _x3; auto t9 _done; auto t10 __result; { ZERO1B (& _done); #line 387 CHECKSTACKOVERFLOW; z2 = (_n == 0); if (z2) { __result = 0; return __result; }; _done = 0 ; z1 = ! _done; if (z1) do { _done = 1 ; NILCHECKA (z3 = _n); _x1 = ((*((t24*) z3))._next); _x2 = _n; _x3 = (t10) 0; z2 = (_x1 != 0); if (z2) do { NILCHECKA (z3 = _x1); NILCHECKA (z4 = _x2); z6 = (((*((t24*) z3))._min) < ((*((t24*) z4))._min)); if (z6) { NILCHECKA (z3 = _x1); NILCHECKA (z4 = _x2); ((*((t24*) z4))._next) = ((*((t24*) z3))._next); NILCHECKA (z3 = _x1); ((*((t24*) z3))._next) = _x2; z2 = (_x3 == 0); if (z2) { _n = _x1; goto if_45_end; }; NILCHECKA (z3 = _x3); ((*((t24*) z3))._next) = _x1; #line 402 if_45_end: /**/; _x2 = _x1; NILCHECKA (z3 = _x2); _x1 = ((*((t24*) z3))._next); _done = 0 ; goto if_44_end; }; if_44_end: /**/; _x3 = _x2; _x2 = _x1; NILCHECKA (z3 = _x1); _x1 = ((*((t24*) z3))._next); z2 = (_x1 != 0); } while (z2); z1 = ! _done; #line 407 } while (z1); NILCHECKA (z3 = _n); _x1 = ((*((t24*) z3))._next); _x2 = _n; z2 = (_x1 != 0); if (z2) do { NILCHECKA (z3 = _x2); NILCHECKA (z4 = _x1); z6 = (((*((t24*) z3))._min) <= ((*((t24*) z4))._min)); z0 = 0; if (z6) { NILCHECKA (z3 = _x1); #line 414 NILCHECKA (z5 = _x2); z7 = (((*((t24*) z3))._min) <= ((*((t24*) z5))._max)); z0 = z7; }; if (z0) { NILCHECKA (z3 = _x2); NILCHECKA (z4 = _x1); z8 = ((*((t24*) z3))._max); z9 = ((*((t24*) z4))._max); if (z8 < z9) z8 = z9; #line 415 NILCHECKA (z3 = _x2); ((*((t24*) z3))._max) = z8; NILCHECKA (z3 = _x1); _x1 = ((*((t24*) z3))._next); NILCHECKA (z3 = _x2); ((*((t24*) z3))._next) = _x1; goto if_46_end; }; _x2 = _x1; NILCHECKA (z3 = _x1); _x1 = ((*((t24*) z3))._next); if_46_end: /**/; z2 = (_x1 != 0); } while (z2); __result = _n; return __result; } } }; #line 426 "SetExpr.m3" PRIVATE t86 _SetExpr__Bind (_p) t11 _p; { t11 z2; t4 z3; t11 z1; t3 z0; t21 z4; t3 z5; t3 z6; #line 426 "SetExpr.m3" { { CHECKSTACKOVERFLOW; NILCHECKA (z2 = _p); z3 = _Type__Bind ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe)); NILCHECKA (z1 = _p); (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tipe) = z3; { int from, to, index; from = 0 ; NILCHECKA (z2 = _p); NILCHECKB (z4 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); #line 429 z0 = (*((t25*) z4)).size[0] - 1; to = z0; { auto t3 _i; { for (index = from; index <= to; index += 1) { _i = (t3) index; #line 429 NILCHECKA (z2 = _p); NILCHECKB (z4 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z4)); #line 429 z6 = _i; if (z6 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z6 * 4)); }; _Expr__Bind ((*(t5*)z5)); #line 429 } } }; }; NILCHECKA (z1 = _p); (((t51_fields*)(z1+(0+t84_size)))->_type) = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tipe); #line 430 } } }; #line 433 "SetExpr.m3" PRIVATE t86 _SetExpr__Check (_p) t11 _p; { t11 z2; t9 z4; t9 z0; t3 z1; t21 z3; t3 z5; t3 z6; t4 z7; t5 z8; t9 z9; t9 z10; #line 433 "SetExpr.m3" { auto t4 _t; auto t4 _range; auto t3 _minT; auto t3 _maxT; auto t3 _minE; auto t3 _maxE; auto t5 _min; auto t5 _max; auto t5 _e1; #line 433 auto t5 _e2; auto t5 _e; auto t5 _value; auto t7 _key; { CHECKSTACKOVERFLOW; NILCHECKA (z2 = _p); _Type__Check ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe)); NILCHECKA (z2 = _p); z4 = _SetType__Split ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe), &_range); z0 = ! z4; #line 444 if (z0) { _Error__Msg (((ADDRESS)(& txt39.str))); { int from, to, index; from = 0 ; NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); #line 446 z1 = (*((t25*) z3)).size[0] - 1; to = z1; { auto t3 _i; { for (index = from; index <= to; index += 1) { _i = (t3) index; #line 446 NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z3)); #line 446 z6 = _i; if (z6 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z6 * 4)); }; _Expr__TypeCheck ((*(t5*)z5)); #line 446 } } }; }; return; }; _Type__GetBounds (_range, &_minT, &_maxT); { int from, to, index; from = 0 ; NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); #line 450 z1 = (*((t25*) z3)).size[0] - 1; to = z1; { auto t3 _i; { for (index = from; index <= to; index += 1) { _i = (t3) index; NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z3)); #line 451 z6 = _i; if (z6 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z6 * 4)); }; _e = (*(t5*)z5); z7 = _Expr__TypeOf (_e); _t = z7; _Expr__TypeCheck (_e); z4 = _KeywordExpr__Split (_e, &_key, &_value); if (z4) { _Error__Msg (((ADDRESS)(& txt40.str))); _e = _value; NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z3)); #line 458 z6 = _i; if (z6 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z6 * 4)); }; (*(t5*)z5) = _value; #line 458 goto if_48_end; }; if_48_end: /**/; z4 = _RangeExpr__Split (_e, &_min, &_max); if (z4) { z8 = _AssignStmt__CheckRHS (_range, _min, 0 ); _e1 = z8; z8 = _AssignStmt__CheckRHS (_range, _max, 0 ); _e2 = z8; z4 = (_min != _e1); z0 = 1; if (! z4) { z4 = (_max != _e2); z0 = z4; }; if (z0) { z8 = _RangeExpr__New (_e1, _e2); _e = z8; _Expr__Bind (_e); _Expr__TypeCheck (_e); NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z3)); #line 470 z6 = _i; if (z6 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z6 * 4)); }; (*(t5*)z5) = _e; _min = _e1; _max = _e2; goto if_50_end; }; if_50_end: /**/; z8 = _Expr__ConstValue (_min); _min = z8; z8 = _Expr__ConstValue (_max); _max = z8; goto if_49_end; }; z8 = _AssignStmt__CheckRHS (_range, _e, 0 ); _e1 = z8; z4 = (_e != _e1); if (z4) { NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z3)); #line 480 z6 = _i; if (z6 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z6 * 4)); }; (*(t5*)z5) = _e1; _e = _e1; goto if_51_end; }; if_51_end: /**/; z8 = _Expr__ConstValue (_e); _min = z8; _max = _min; if_49_end: /**/; z4 = (_min != 0); z0 = 0; if (z4) { z4 = (_max != 0); z0 = z4; }; z4 = 0; if (z0) { z9 = _IntegerExpr__Split (_min, &_minE); #line 487 z0 = 1; if (! z9) { z9 = _EnumExpr__Split (_min, &_minE, &_t); z0 = z9; }; z4 = z0; }; z0 = 0; if (z4) { #line 487 z4 = _IntegerExpr__Split (_max, &_maxE); z9 = 1; if (! z4) { z10 = _EnumExpr__Split (_max, &_maxE, &_t); #line 487 z9 = z10; }; z0 = z9; }; if (z0) { z4 = (_minE < _minT); z0 = 1; if (! z4) { z4 = (_maxT < _maxE); z0 = z4; }; if (z0) { _Error__Msg (((ADDRESS)(& txt41.str))); goto if_53_end; }; if_53_end: /**/; goto if_52_end; }; if_52_end: /**/; #line 491 } } }; }; } } }; #line 498 "SetExpr.m3" PRIVATE t9 _SetExpr__EqCheck (_a, _e) t11 _a; t5 _e; { t11 z2; t11 z4; t9 z5; t9 z0; t9 z1; t9 z6; t60 z3; t21 z7; t60 z8; t3 z9; t3 z10; t3 z11; #line 498 "SetExpr.m3" { auto t9 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; { register ADDRESS ref = (ADDRESS) _e; register int tc = TYPECODE (ref); if (tc == 0) goto tc1_0; if (ISSUBTYPE (tc, TC11)) goto tc1_1; #line 500 goto tc1_else; tc1_0:; __result = 0 ; return __result; tc1_1:; { auto t11 _b; { ZERO1 (& _b); #line 501 _b = (t11) ref; NILCHECKA (z2 = _a); NILCHECKA (z4 = _b); z5 = _Type__IsEqual ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe), (((t11_fields*)(z4+(0+t51_size+t84_size)))->_tipe)); #line 503 z0 = ! z5; z1 = 1; if (! z0) { NILCHECKA (z2 = _a); z5 = ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_args) == 0); #line 503 NILCHECKA (z2 = _b); z6 = ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_args) == 0); z0 = (z5 != z6); #line 503 z1 = z0; }; z0 = 1; if (! z1) { NILCHECKA (z2 = _a); z5 = ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_args) != 0); #line 503 z1 = 0; if (z5) { NILCHECKA (z4 = _a); NILCHECKB (z7 = (((t11_fields*)(z4+(0+t51_size+t84_size)))->_args)); #line 503 z3 = (*((t25*) z7)).size[0]; NILCHECKA (z4 = _b); NILCHECKB (z7 = (((t11_fields*)(z4+(0+t51_size+t84_size)))->_args)); #line 503 z8 = (*((t25*) z7)).size[0]; z5 = (z3 != z8); z1 = z5; }; z0 = z1; }; if (z0) { __result = 0 ; return __result; }; { int from, to, index; from = 0 ; NILCHECKA (z2 = _a); NILCHECKB (z7 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); #line 508 z9 = (*((t25*) z7)).size[0] - 1; to = z9; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 508 _i = (t3) index; NILCHECKA (z2 = _a); NILCHECKB (z7 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { #line 509 register t71* array = & (*((t25*) z7)); z10 = _i; if (z10 >= (array->size[0])) RANGEFAULT; #line 509 z9 = (int)(array->elts + (z10 * 4)); }; NILCHECKA (z4 = _b); NILCHECKB (z7 = (((t11_fields*)(z4+(0+t51_size+t84_size)))->_args)); #line 509 { register t71* array = & (*((t25*) z7)); z11 = _i; if (z11 >= (array->size[0])) RANGEFAULT; #line 509 z10 = (int)(array->elts + (z11 * 4)); }; z5 = _Expr__IsEqual ((*(t5*)z9), (*(t5*)z10)); z0 = ! z5; #line 509 if (z0) { __result = 0 ; return __result; }; } } }; }; __result = 1 ; return __result; } } tc1_else:; __result = 0 ; return __result; tc1_exit:; }; } } }; #line 516 "SetExpr.m3" PRIVATE t2 _SetExpr__Compile (_p) t11 _p; { t11 z2; t9 z4; t9 z3; t3 z5; t3 z1; t2 z6; t9 z0; t11 z7; t3 z8; t10 z9; t3 z10; t21 z11; #line 516 "SetExpr.m3" { auto t4 _range; auto t3 _w1; auto t3 _w2; auto t3 _b1; auto t3 _b2; auto t3 _minT; auto t3 _maxT; auto t5 _min; auto t5 _max; #line 516 auto t5 _e; auto t2 _t1; auto t2 _t2; auto t2 _t3; auto t2 _t4; auto t3 _nAssigns; auto t3 _nWords; auto t9 _zeroed; auto t3 _lastDone; #line 516 auto t3 _curWord; auto t3 _curMask; auto t10 _n; auto t2 __result; { #line 528 ZERO1B (& _zeroed); #line 516 CHECKSTACKOVERFLOW; #line 534 { { auto t9 _b; { ZERO1B (& _b); NILCHECKA (z2 = _p); z4 = _SetType__Split ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe), &_range); #line 534 _b = z4; if (!_b) ASSERTFAULT; } } }; _Type__GetBounds (_range, &_minT, &_maxT); z3 = _SetExpr__BuildMap (_p, &_p); NILCHECKA (z2 = _p); z5 = _SetExpr__CountWords ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tree), _minT); _nAssigns = z5; NILCHECKA (z2 = _p); z5 = _Type__Size ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe)); z1 = IDIV (z5, 32 ); _nWords = z1; z6 = _Temp__Alloc (_p); _t1 = z6; z3 = (_nWords > 4 ); z0 = 0; if (z3) { z5 = _nAssigns + _nAssigns; z3 = (z5 < _nWords); z0 = z3; }; _zeroed = z0; if (_zeroed) { NILCHECKA (z7 = _p); z5 = _Type__Size ((((t11_fields*)(z7+(0+t51_size+t84_size)))->_tipe)); z8 = IDIV (z5, 8 ); #line 547 _Emit__ZeroT (z8, ((ADDRESS)(& txt42.str)), _t1); goto if_56_end; }; if_56_end: /**/; NILCHECKA (z2 = _p); _n = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_tree); _curWord = 0 ; _curMask = 0 ; z1 = - 1 ; #line 551 _lastDone = z1; z3 = (_n != 0); if (z3) do { NILCHECKA (z9 = _n); z5 = ((*((t24*) z9))._min) - _minT; z1 = IDIV (z5, 32 ); _w1 = z1; NILCHECKA (z9 = _n); z5 = ((*((t24*) z9))._min) - _minT; z1 = z5; z8 = 32 ; z10 = z1 - (z8 * (IDIV (z1, z8))); _b1 = z10; NILCHECKA (z9 = _n); z5 = ((*((t24*) z9))._max) - _minT; z1 = IDIV (z5, 32 ); _w2 = z1; NILCHECKA (z9 = _n); z5 = ((*((t24*) z9))._max) - _minT; z1 = z5; z8 = 32 ; z10 = z1 - (z8 * (IDIV (z1, z8))); _b2 = z10; z3 = (_w1 != _curWord); if (z3) { z3 = ! _zeroed; if (z3) { { int from, to, index; z5 = _lastDone + 1 ; from = z5; z5 = _curWord - 1 ; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 559 _i = (t3) index; _SetExpr__EmitAssign (_t1, _i, 0 ); } } }; }; goto if_58_end; }; if_58_end: /**/; _SetExpr__EmitAssign (_t1, _curWord, _curMask); _lastDone = _curWord; _curWord = _w1; _curMask = 0 ; goto if_57_end; }; if_57_end: /**/; z3 = (_w1 != _w2); if (z3) { z8 = _b1; if ((z8 < 0) || (32 < z8)) RANGEFAULT; z10 = _curMask | (_SetExpr__left.elts[z8]); _SetExpr__EmitAssign (_t1, _w1, z10); { int from, to, index; z5 = _w1 + 1 ; from = z5; z5 = _w2 - 1 ; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 568 _i = (t3) index; _SetExpr__EmitAssign (_t1, _i, _SetExpr__full); } } }; }; z5 = _w2 - 1 ; _lastDone = z5; _curWord = _w2; z5 = _b2; if ((z5 < 0) || (32 < z5)) RANGEFAULT; _curMask = (_SetExpr__right.elts[z5]); goto if_59_end; }; z5 = _b1; if ((z5 < 0) || (32 < z5)) RANGEFAULT; z8 = _b2; if ((z8 < 0) || (32 < z8)) RANGEFAULT; z10 = (_SetExpr__left.elts[z5]) & (_SetExpr__right.elts[z8]); #line 573 z1 = _curMask | z10; _curMask = z1; if_59_end: /**/; NILCHECKA (z9 = _n); _n = ((*((t24*) z9))._next); z3 = (_n != 0); } while (z3); z3 = ! _zeroed; if (z3) { { int from, to, index; z5 = _lastDone + 1 ; from = z5; z5 = _curWord - 1 ; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 580 _i = (t3) index; _SetExpr__EmitAssign (_t1, _i, 0 ); } } }; }; goto if_60_end; }; if_60_end: /**/; _SetExpr__EmitAssign (_t1, _curWord, _curMask); z3 = ! _zeroed; if (z3) { { int from, to, index; z5 = _curWord + 1 ; from = z5; z5 = _nWords - 1 ; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 588 _i = (t3) index; _SetExpr__EmitAssign (_t1, _i, 0 ); } } }; }; goto if_61_end; }; if_61_end: /**/; z6 = _Temp__AllocEmpty (_Int__T, 0 ); _t4 = z6; { int from, to, index; from = 0 ; NILCHECKA (z2 = _p); z5 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_nOthers) - 1 ; #line 593 to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { _i = (t3) index; NILCHECKA (z2 = _p); NILCHECKB (z11 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_others)); { register t71* array = & (*((t25*) z11)); #line 594 z8 = _i; if (z8 >= (array->size[0])) RANGEFAULT; z5 = (int)(array->elts + (z8 * 4)); }; _e = (*(t5*)z5); z4 = _RangeExpr__Split (_e, &_min, &_max); if (z4) { z6 = _Expr__Compile (_min); _t2 = z6; z6 = _Expr__Compile (_max); _t3 = z6; _Emit__OpT (((ADDRESS)(& txt43.str)), _t1); _Emit__OpT (((ADDRESS)(& txt44.str)), _t2); z3 = (_minT != 0 ); if (z3) { _Emit__OpI (((ADDRESS)(& txt45.str)), _minT); #line 599 goto if_63_end; }; if_63_end: /**/; _Emit__OpT (((ADDRESS)(& txt46.str)), _t3); z3 = (_minT != 0 ); if (z3) { _Emit__OpI (((ADDRESS)(& txt45.str)), _minT); #line 600 goto if_64_end; }; if_64_end: /**/; _Emit__Op (((ADDRESS)(& txt47.str))); _Temp__Free (_t2); _Temp__Free (_t3); goto if_62_end; }; z6 = _Expr__Compile (_e); _t2 = z6; _Emit__OpTT (((ADDRESS)(& txt48.str)), _t4, _t2); z3 = (_minT != 0 ); if (z3) { _Emit__OpI (((ADDRESS)(& txt45.str)), _minT); goto if_65_end; }; if_65_end: /**/; _Emit__OpTT (((ADDRESS)(& txt49.str)), _t1, _t4); _Emit__OpI (((ADDRESS)(& txt50.str)), 32 ); _Emit__OpTI (((ADDRESS)(& txt51.str)), _t4, 32 ); _Temp__Free (_t2); if_62_end: /**/; } } }; }; _Temp__Free (_t4); __result = _t1; return __result; } } }; #line 619 "SetExpr.m3" PRIVATE t3 _SetExpr__CountWords (_n, _base) t10 _n; t3 _base; { t9 z2; t10 z3; t9 z4; t9 z0; t9 z5; t10 z1; t3 z6; t3 z7; #line 619 "SetExpr.m3" { auto t3 _nWords; auto t3 _lastWord; auto t3 _x; auto t3 _y; auto t3 __result; { ZERO1 ((& _nWords)); _lastWord = -1 ; #line 619 CHECKSTACKOVERFLOW; z2 = (_n != 0); if (z2) do { NILCHECKA (z3 = _n); z4 = (_base <= ((*((t24*) z3))._min)); z0 = 0; if (z4) { NILCHECKA (z3 = _n); z5 = (((*((t24*) z3))._min) <= ((*((t24*) z3))._max)); #line 623 z0 = z5; }; if (!z0) ASSERTFAULT; NILCHECKA (z1 = _n); z6 = ((*((t24*) z1))._min) - _base; z7 = IDIV (z6, 32 ); _x = z7; NILCHECKA (z1 = _n); z6 = ((*((t24*) z1))._max) - _base; z7 = IDIV (z6, 32 ); _y = z7; z2 = (_x == _lastWord); if (z2) { _x += 1 ; goto if_66_end; }; if_66_end: /**/; z2 = (_x <= _y); if (z2) { z6 = _y - _x; z7 = z6 + 1 ; _nWords += z7; _lastWord = _y; goto if_67_end; }; if_67_end: /**/; NILCHECKA (z1 = _n); _n = ((*((t24*) z1))._next); z2 = (_n != 0); } while (z2); __result = _nWords; return __result; } } }; #line 633 "SetExpr.m3" PRIVATE t86 _SetExpr__EmitAssign (_set, _index, _value) t2 _set; t3 _index; t3 _value; { t9 z2; #line 633 "SetExpr.m3" { { CHECKSTACKOVERFLOW; z2 = (_value == 0 ); if (z2) { _Emit__OpTI (((ADDRESS)(& txt52.str)), _set, _index); goto if_68_end; }; _Emit__OpTI (((ADDRESS)(& txt53.str)), _set, _index); _Emit__OpH (((ADDRESS)(& txt54.str)), _value); if_68_end: /**/; } } }; #line 643 "SetExpr.m3" PRIVATE t5 _SetExpr__Fold (_e) t5 _e; { t9 z3; #line 643 "SetExpr.m3" { auto t11 _p; auto t5 __result; { ZERO1 (& _p); #line 643 CHECKSTACKOVERFLOW; z3 = _SetExpr__BuildMap (_e, &_p); if (z3) { __result = _e; return __result; }; __result = 0; return __result; } } }; #line 652 "SetExpr.m3" PRIVATE t86 _SetExpr__FPrinter (_p, _map, _wr) t11 _p; t14 _map; t13 _wr; { t11 z2; t3 z0; t21 z3; t3 z4; t3 z5; #line 652 "SetExpr.m3" { { CHECKSTACKOVERFLOW; NILCHECKA (z2 = _p); _Type__Fingerprint ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe), _map, _wr); { int from, to, index; from = 0 ; NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); #line 655 z0 = (*((t25*) z3)).size[0] - 1; to = z0; { auto t3 _i; { for (index = from; index <= to; index += 1) { _i = (t3) index; NILCHECKA (z2 = _p); NILCHECKB (z3 = (((t11_fields*)(z2+(0+t51_size+t84_size)))->_args)); { register t71* array = & (*((t25*) z3)); #line 656 z5 = _i; if (z5 >= (array->size[0])) RANGEFAULT; z4 = (int)(array->elts + (z5 * 4)); }; _Expr__Fingerprint ((*(t5*)z4), _map, _wr); #line 656 } } }; }; } } }; #line 660 "SetExpr.m3" PRIVATE t9 _SetExpr__IsZeroes (_p) t11 _p; { t11 z1; t9 z3; t9 z0; t60 z2; t11 z4; t21 z5; #line 660 "SetExpr.m3" { auto t9 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; NILCHECKA (z1 = _p); z3 = ((((t11_fields*)(z1+(0+t51_size+t84_size)))->_args) == 0); z0 = 1; if (! z3) { NILCHECKA (z4 = _p); #line 662 NILCHECKB (z5 = (((t11_fields*)(z4+(0+t51_size+t84_size)))->_args)); z2 = (*((t25*) z5)).size[0]; z3 = (z2 <= 0 ); #line 662 z0 = z3; }; __result = z0; return __result; } } }; #line 665 "SetExpr.m3" PRIVATE t86 _SetExpr__GenLiteral (_p) t11 _p; { t11 z2; t9 z4; t9 z3; t11 z1; t3 z5; t10 z6; t3 z7; t3 z8; t3 z9; #line 665 "SetExpr.m3" { auto t3 _j; auto t4 _range; auto t3 _minT; auto t3 _maxT; auto t3 _w1; auto t3 _w2; auto t3 _b1; auto t3 _b2; auto t3 _curWord; #line 665 auto t3 _curMask; auto t3 _lastDone; auto t10 _n; { CHECKSTACKOVERFLOW; #line 677 { { auto t9 _b; { ZERO1B (& _b); NILCHECKA (z2 = _p); z4 = _SetType__Split ((((t11_fields*)(z2+(0+t51_size+t84_size)))->_tipe), &_range); #line 677 _b = z4; if (!_b) ASSERTFAULT; } } }; _Type__GetBounds (_range, &_minT, &_maxT); z3 = _SetExpr__BuildMap (_p, &_p); NILCHECKA (z1 = _p); z3 = ((((t11_fields*)(z1+(0+t51_size+t84_size)))->_others) == 0); if (!z3) ASSERTFAULT; _Emit__Op (((ADDRESS)(& txt55.str))); _j = 0 ; NILCHECKA (z1 = _p); _n = (((t11_fields*)(z1+(0+t51_size+t84_size)))->_tree); _curWord = 0 ; _curMask = 0 ; z5 = - 1 ; #line 686 _lastDone = z5; z3 = (_n != 0); if (z3) do { NILCHECKA (z6 = _n); z5 = ((*((t24*) z6))._min) - _minT; z7 = IDIV (z5, 32 ); _w1 = z7; NILCHECKA (z6 = _n); z5 = ((*((t24*) z6))._min) - _minT; z7 = z5; z8 = 32 ; z9 = z7 - (z8 * (IDIV (z7, z8))); _b1 = z9; NILCHECKA (z6 = _n); z5 = ((*((t24*) z6))._max) - _minT; z7 = IDIV (z5, 32 ); _w2 = z7; NILCHECKA (z6 = _n); z5 = ((*((t24*) z6))._max) - _minT; z7 = z5; z8 = 32 ; z9 = z7 - (z8 * (IDIV (z7, z8))); _b2 = z9; z3 = (_w1 != _curWord); if (z3) { { int from, to, index; z5 = _lastDone + 1 ; from = z5; z5 = _curWord - 1 ; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 693 _i = (t3) index; _SetExpr__EmitOne ( 0 , &_j); } } }; }; _SetExpr__EmitOne (_curMask, &_j); _lastDone = _curWord; _curWord = _w1; _curMask = 0 ; goto if_70_end; }; if_70_end: /**/; z3 = (_w1 != _w2); if (z3) { z5 = _b1; if ((z5 < 0) || (32 < z5)) RANGEFAULT; z7 = _curMask | (_SetExpr__left.elts[z5]); _SetExpr__EmitOne (z7, &_j); { int from, to, index; z5 = _w1 + 1 ; from = z5; z5 = _w2 - 1 ; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 701 _i = (t3) index; _SetExpr__EmitOne (_SetExpr__full, &_j); } } }; }; z5 = _w2 - 1 ; _lastDone = z5; _curWord = _w2; z5 = _b2; if ((z5 < 0) || (32 < z5)) RANGEFAULT; _curMask = (_SetExpr__right.elts[z5]); goto if_71_end; }; z5 = _b1; if ((z5 < 0) || (32 < z5)) RANGEFAULT; z7 = _b2; if ((z7 < 0) || (32 < z7)) RANGEFAULT; z8 = (_SetExpr__left.elts[z5]) & (_SetExpr__right.elts[z7]); #line 706 z5 = _curMask | z8; _curMask = z5; if_71_end: /**/; NILCHECKA (z6 = _n); _n = ((*((t24*) z6))._next); z3 = (_n != 0); } while (z3); { int from, to, index; z5 = _lastDone + 1 ; from = z5; z5 = _curWord - 1 ; to = z5; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 712 _i = (t3) index; _SetExpr__EmitOne ( 0 , &_j); } } }; }; _SetExpr__EmitOne (_curMask, &_j); _Emit__Op (((ADDRESS)(& txt56.str))); } } }; #line 720 "SetExpr.m3" PRIVATE t86 _SetExpr__EmitOne (_n, _cnt) t3 _n; t3 * _cnt; { t9 z2; t3 z3; t3 z4; t3 z5; t9 z1; #line 720 "SetExpr.m3" { { CHECKSTACKOVERFLOW; z2 = ((*_cnt) != 0 ); if (z2) { _Emit__Op (((ADDRESS)(& txt57.str))); goto if_72_end; }; if_72_end: /**/; z3 = (*_cnt); z4 = 8 ; z5 = z3 - (z4 * (IDIV (z3, z4))); z1 = (z5 == 7 ); if (z1) { _Emit__Op (((ADDRESS)(& txt58.str))); #line 723 goto if_73_end; }; if_73_end: /**/; z2 = (_n == 0 ); if (z2) { _Emit__Op (((ADDRESS)(& txt59.str))); goto if_74_end; }; _Emit__OpH (((ADDRESS)(& txt60.str)), _n); if_74_end: /**/; (*_cnt) += 1 ; } } }; #line 731 "SetExpr.m3" EXPORT t86 _SetExpr__CompileAssign (_range, _l, _r) t4 _range; t2 _l; t2 _r; { t3 z2; t3 z1; t9 z3; #line 731 "SetExpr.m3" { auto t3 _min; auto t3 _max; auto t3 _n; { CHECKSTACKOVERFLOW; _Type__GetBounds (_range, &_min, &_max); z2 = _max - _min; z1 = z2 + 32 ; z2 = IDIV (z1, 32 ); _n = z2; z3 = (_n <= 4 ); if (z3) { { int from, to, index; from = 0 ; z2 = _n - 1 ; to = z2; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 737 _i = (t3) index; _Emit__OpTI (((ADDRESS)(& txt1.str)), _l, _i); _Emit__OpTI (((ADDRESS)(& txt2.str)), _r, _i); } } }; }; goto if_75_end; }; _Emit__OpTT (((ADDRESS)(& txt3.str)), _l, _r); if_75_end: /**/; } } }; #line 746 "SetExpr.m3" EXPORT t86 _SetExpr__CompileUnion (_t1, _t2, _t3, _t) t2 _t1; t2 _t2; t2 _t3; t4 _t; { t9 z3; t3 z2; t3 z1; #line 746 "SetExpr.m3" { auto t4 _range; auto t9 _b; auto t3 _min; auto t3 _max; auto t3 _n; { ZERO1B (& _b); z3 = _SetType__Split (_t, &_range); _b = z3; #line 746 CHECKSTACKOVERFLOW; if (!_b) ASSERTFAULT; _Type__GetBounds (_range, &_min, &_max); z2 = _max - _min; z1 = z2 + 32 ; z2 = IDIV (z1, 32 ); _n = z2; z3 = (_n <= 4 ); if (z3) { { int from, to, index; from = 0 ; z2 = _n - 1 ; to = z2; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 754 _i = (t3) index; _Emit__OpTI (((ADDRESS)(& txt1.str)), _t3, _i); _Emit__OpTI (((ADDRESS)(& txt4.str)), _t1, _i); _Emit__OpTI (((ADDRESS)(& txt2.str)), _t2, _i); } } }; }; goto if_76_end; }; _Emit__OpI (((ADDRESS)(& txt5.str)), _n); _Emit__OpTTT (((ADDRESS)(& txt6.str)), _t3, _t1, _t2); if_76_end: /**/; } } }; #line 766 "SetExpr.m3" EXPORT t86 _SetExpr__CompileInter (_t1, _t2, _t3, _t) t2 _t1; t2 _t2; t2 _t3; t4 _t; { t9 z3; t3 z2; t3 z1; #line 766 "SetExpr.m3" { auto t4 _range; auto t9 _b; auto t3 _min; auto t3 _max; auto t3 _n; { ZERO1B (& _b); z3 = _SetType__Split (_t, &_range); _b = z3; #line 766 CHECKSTACKOVERFLOW; if (!_b) ASSERTFAULT; _Type__GetBounds (_range, &_min, &_max); z2 = _max - _min; z1 = z2 + 32 ; z2 = IDIV (z1, 32 ); _n = z2; z3 = (_n <= 4 ); if (z3) { { int from, to, index; from = 0 ; z2 = _n - 1 ; to = z2; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 774 _i = (t3) index; _Emit__OpTI (((ADDRESS)(& txt1.str)), _t3, _i); _Emit__OpTI (((ADDRESS)(& txt7.str)), _t1, _i); _Emit__OpTI (((ADDRESS)(& txt2.str)), _t2, _i); } } }; }; goto if_77_end; }; _Emit__OpI (((ADDRESS)(& txt5.str)), _n); _Emit__OpTTT (((ADDRESS)(& txt8.str)), _t3, _t1, _t2); if_77_end: /**/; } } }; #line 786 "SetExpr.m3" EXPORT t86 _SetExpr__CompileDiff (_t1, _t2, _t3, _t) t2 _t1; t2 _t2; t2 _t3; t4 _t; { t9 z3; t3 z2; t3 z1; #line 786 "SetExpr.m3" { auto t4 _range; auto t9 _b; auto t3 _min; auto t3 _max; auto t3 _n; { ZERO1B (& _b); z3 = _SetType__Split (_t, &_range); _b = z3; #line 786 CHECKSTACKOVERFLOW; if (!_b) ASSERTFAULT; _Type__GetBounds (_range, &_min, &_max); z2 = _max - _min; z1 = z2 + 32 ; z2 = IDIV (z1, 32 ); _n = z2; z3 = (_n <= 4 ); if (z3) { { int from, to, index; from = 0 ; z2 = _n - 1 ; to = z2; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 794 _i = (t3) index; _Emit__OpTI (((ADDRESS)(& txt1.str)), _t3, _i); _Emit__OpTI (((ADDRESS)(& txt9.str)), _t1, _i); _Emit__OpTI (((ADDRESS)(& txt2.str)), _t2, _i); } } }; }; goto if_78_end; }; _Emit__OpI (((ADDRESS)(& txt5.str)), _n); _Emit__OpTTT (((ADDRESS)(& txt10.str)), _t3, _t1, _t2); if_78_end: /**/; } } }; #line 806 "SetExpr.m3" EXPORT t86 _SetExpr__CompileDiv (_t1, _t2, _t3, _t) t2 _t1; t2 _t2; t2 _t3; t4 _t; { t9 z3; t3 z2; t3 z1; #line 806 "SetExpr.m3" { auto t4 _range; auto t9 _b; auto t3 _min; auto t3 _max; auto t3 _n; { ZERO1B (& _b); z3 = _SetType__Split (_t, &_range); _b = z3; #line 806 CHECKSTACKOVERFLOW; if (!_b) ASSERTFAULT; _Type__GetBounds (_range, &_min, &_max); z2 = _max - _min; z1 = z2 + 32 ; z2 = IDIV (z1, 32 ); _n = z2; z3 = (_n <= 4 ); if (z3) { { int from, to, index; from = 0 ; z2 = _n - 1 ; to = z2; { auto t3 _i; { for (index = from; index <= to; index += 1) { #line 814 _i = (t3) index; _Emit__OpTI (((ADDRESS)(& txt1.str)), _t3, _i); _Emit__OpTI (((ADDRESS)(& txt11.str)), _t1, _i); _Emit__OpTI (((ADDRESS)(& txt2.str)), _t2, _i); } } }; }; goto if_79_end; }; _Emit__OpI (((ADDRESS)(& txt5.str)), _n); _Emit__OpTTT (((ADDRESS)(& txt12.str)), _t3, _t1, _t2); if_79_end: /**/; } } }; #line 826 "SetExpr.m3" EXPORT t86 _SetExpr__CompileCompareT (_t1, _t2, _t3, _t, _op) t2 _t1; t2 _t2; t2 _t3; t4 _t; t8 _op; { t9 z3; t3 z2; t3 z1; #line 826 "SetExpr.m3" { auto t4 _range; auto t9 _b; auto t3 _nWords; { ZERO1B (& _b); z3 = _SetType__Split (_t, &_range); _b = z3; #line 826 CHECKSTACKOVERFLOW; if (!_b) ASSERTFAULT; z2 = _Type__Number (_range); z1 = z2 + 31 ; z2 = IDIV (z1, 32 ); _nWords = z2; switch (_op) { case 2: _Emit__Op (((ADDRESS)(& txt13.str))); _Emit__OpI (((ADDRESS)(& txt14.str)), _nWords); _Emit__OpTT (((ADDRESS)(& txt15.str)), _t1, _t2); _Emit__OpTT (((ADDRESS)(& txt16.str)), _t1, _t2); break; case 3: _Emit__Op (((ADDRESS)(& txt17.str))); _Emit__OpI (((ADDRESS)(& txt18.str)), _nWords); _Emit__OpTT (((ADDRESS)(& txt19.str)), _t1, _t2); break; case 0: _Emit__Op (((ADDRESS)(& txt17.str))); _Emit__OpI (((ADDRESS)(& txt18.str)), _nWords); _Emit__OpTT (((ADDRESS)(& txt20.str)), _t1, _t2); break; case 1: _Emit__Op (((ADDRESS)(& txt17.str))); _Emit__OpI (((ADDRESS)(& txt14.str)), _nWords); _Emit__OpTT (((ADDRESS)(& txt21.str)), _t1, _t2); break; case 5: _Emit__Op (((ADDRESS)(& txt17.str))); _Emit__OpI (((ADDRESS)(& txt18.str)), _nWords); _Emit__OpTT (((ADDRESS)(& txt22.str)), _t1, _t2); break; case 4: _Emit__Op (((ADDRESS)(& txt17.str))); _Emit__OpI (((ADDRESS)(& txt14.str)), _nWords); _Emit__OpTT (((ADDRESS)(& txt23.str)), _t1, _t2); _Emit__OpTT (((ADDRESS)(& txt16.str)), _t1, _t2); break; default: /**/; }; _Emit__OpT (((ADDRESS)(& txt24.str)), _t3); } } }; #line 868 "SetExpr.m3" EXPORT t86 _SetExpr__CompileCompareL (_p1, _p2, _label, _t) t7 _p1; t7 _p2; t7 _label; t4 _t; { t9 z3; t3 z2; t3 z1; #line 868 "SetExpr.m3" { auto t4 _range; auto t9 _b; auto t3 _nWords; { ZERO1B (& _b); z3 = _SetType__Split (_t, &_range); _b = z3; #line 868 CHECKSTACKOVERFLOW; if (!_b) ASSERTFAULT; z2 = _Type__Number (_range); z1 = z2 + 31 ; z2 = IDIV (z1, 32 ); _nWords = z2; _Emit__Op (((ADDRESS)(& txt25.str))); _Emit__OpI (((ADDRESS)(& txt26.str)), _nWords); _Emit__OpSS (((ADDRESS)(& txt27.str)), _p1, _p2); _Emit__OpS (((ADDRESS)(& txt28.str)), _label); } } }; #line 879 "SetExpr.m3" EXPORT t86 _SetExpr__CompileMember (_e1, _e2, _t3, _t) t5 _e1; t5 _e2; t2 _t3; t4 _t; { t9 z3; t9 z0; t2 z2; t3 z4; t3 z5; t3 z6; t3 z7; #line 879 "SetExpr.m3" { auto t4 _range; auto t9 _b; auto t3 _min; auto t3 _max; auto t3 _i; auto t2 _t1; auto t2 _t2; { ZERO1B (& _b); z3 = _SetType__Split (_t, &_range); _b = z3; #line 879 CHECKSTACKOVERFLOW; if (!_b) ASSERTFAULT; _Type__GetBounds (_range, &_min, &_max); z3 = _SetExpr__ConstElt (_e2, &_i); z0 = ! z3; if (z0) { z2 = _Expr__Compile (_e1); _t1 = z2; z2 = _Expr__Compile (_e2); _t2 = z2; _Emit__OpTI (((ADDRESS)(& txt29.str)), _t2, _min); _Emit__OpT (((ADDRESS)(& txt30.str)), _t3); _Emit__OpII (((ADDRESS)(& txt31.str)), _min, _max); _Emit__OpTI (((ADDRESS)(& txt32.str)), _t1, 32 ); _Emit__OpI (((ADDRESS)(& txt33.str)), 32 ); _Temp__Free (_t1); _Temp__Free (_t2); goto if_80_end; }; z3 = (_min <= _i); z0 = 0; if (z3) { z3 = (_i <= _max); z0 = z3; }; if (z0) { z2 = _Expr__Compile (_e1); _t1 = z2; z4 = _i - _min; _i = z4; _Emit__OpTT (((ADDRESS)(& txt34.str)), _t3, _t1); z4 = IDIV (_i, 32 ); z5 = _i; z6 = 32 ; z7 = z5 - (z6 * (IDIV (z5, z6))); _Emit__OpII (((ADDRESS)(& txt35.str)), z4, z7); _Temp__Free (_t1); goto if_80_end; }; _Emit__OpT (((ADDRESS)(& txt36.str)), _t3); if_80_end: /**/; } } }; PRIVATE int init_done = -1; #line 911 "SetExpr.m3" PRIVATE void SetExpr__initProc (g) int g; { t3 z3; t3 z2; t3 z1; t3 z4; #line 911 "SetExpr.m3" if (init_done >= g) return; init_done = g; INITIALIZE (& SetExpr__init); INITIALIZE (& Word__init); INITIALIZE (& String__init); #line 911 INITIALIZE (& Bool__init); INITIALIZE (& Wr__init); INITIALIZE (& Temp__init); INITIALIZE (& Emit__init); INITIALIZE (& Target__init); #line 911 INITIALIZE (& Int__init); INITIALIZE (& CompareExpr__init); INITIALIZE (& AssignStmt__init); INITIALIZE (& SetType__init); #line 911 INITIALIZE (& KeywordExpr__init); INITIALIZE (& RangeExpr__init); INITIALIZE (& EnumExpr__init); INITIALIZE (& IntegerExpr__init); #line 911 INITIALIZE (& Error__init); INITIALIZE (& Type__init); INITIALIZE (& ExprRep__init); INITIALIZE (& Expr__init); #line 908 _SetExpr__full = -1 ; { int from, to, index; from = 0 ; to = 31 ; { auto t3 _i; { for (index = from; index <= to; index += 1) { _i = (t3) index; z3 = _i + 1 ; z2 = z3 - 32 ; z3 = _SetExpr__full; z4 = z2; z1 = (((z4 <= -32) || (z4 >= 32)) ? 0 : ((z4 < 0) ? (((unsigned)z3) >> -(z4)) : (((unsigned) z3) << z4))); #line 910 (_SetExpr__right.elts[_i]) = z1; z3 = _SetExpr__full; z4 = _i; z2 = (((z4 <= -32) || (z4 >= 32)) ? 0 : ((z4 < 0) ? (((unsigned)z3) >> -(z4)) : (((unsigned) z3) << z4))); #line 911 (_SetExpr__left.elts[_i]) = z2; } } }; }; return; }; #line 911 "SetExpr.m3" PRIVATE void t10_PrintProc (ref) t24* ref; { CHECKSTACKOVERFLOW; fprintf (stderr, "%s {", TC10->brand); fprintf (stderr, "^ = { "); #line 911 fprintf (stderr, "next = %#x", (*ref)._next); fprintf (stderr, "min = %d", (*ref)._min); fprintf (stderr, "max = %d", (*ref)._max); #line 911 fprintf (stderr, "}"); fprintf (stderr, "}\n"); }; #line 911 "SetExpr.m3" PRIVATE void t11_InitProc (obj) char* obj; { register t11_fields* p; #line 911 "SetExpr.m3" CHECKSTACKOVERFLOW; p = (t11_fields*) (obj + TC5->datasize); }; #line 911 "SetExpr.m3" PRIVATE void t11_SetupProc () { register int* p; #line 911 "SetExpr.m3" t11_TC.datasize += TC5->datasize; t11_TC.methodsize += TC5->methodsize; p = (int*) UALLOC (t11_TC.methodsize); COPY (TC5->defaultMethods, p, (TC5->methodsize)); #line 911 p[0] = (int)(& t11_TC); p[1] = 0; ((t51_methods*) (((char*)p) + TC84->methodsize))->_bind = _SetExpr__Bind; ((t51_methods*) (((char*)p) + TC84->methodsize))->_check = _SetExpr__Check; #line 911 ((t51_methods*) (((char*)p) + TC84->methodsize))->_compile = _SetExpr__Compile; ((t51_methods*) (((char*)p) + TC84->methodsize))->_evaluate = _SetExpr__Fold; #line 911 ((t51_methods*) (((char*)p) + TC84->methodsize))->_fprint = _SetExpr__FPrinter; ((t51_methods*) (((char*)p) + TC84->methodsize))->_write = _ExprRep__NoWriter; #line 911 ((t51_methods*) (((char*)p) + TC84->methodsize))->_isEqual = _SetExpr__EqCheck; ((t51_methods*) (((char*)p) + TC84->methodsize))->_getBounds = _ExprRep__NoBounds; #line 911 ((t51_methods*) (((char*)p) + TC84->methodsize))->_isWritable = _ExprRep__IsNever; ((t51_methods*) (((char*)p) + TC84->methodsize))->_isDesignator = _ExprRep__IsNever; #line 911 ((t51_methods*) (((char*)p) + TC84->methodsize))->_isZeroes = _SetExpr__IsZeroes; ((t51_methods*) (((char*)p) + TC84->methodsize))->_genLiteral = _SetExpr__GenLiteral; #line 911 t11_TC.defaultMethods = (char*) p; }; #line 911 "SetExpr.m3" PRIVATE void t11_PrintProc (obj) char *obj; { t11_fields* o; #line 911 "SetExpr.m3" CHECKSTACKOVERFLOW; if (TC5->printProc != 0) {TC5->printProc (obj); } fprintf (stderr, "{%s} ", TC11->brand); o = (t11_fields*) (obj + TC5->datasize); #line 911 fprintf (stderr, "tipe = %#x", o->_tipe); fprintf (stderr, ", "); fprintf (stderr, "args = %#x", o->_args); fprintf (stderr, ", "); #line 911 fprintf (stderr, "mapped = %d", o->_mapped); fprintf (stderr, ", "); fprintf (stderr, "tree = %#x", o->_tree); fprintf (stderr, ", "); #line 911 fprintf (stderr, "others = %#x", o->_others); fprintf (stderr, ", "); fprintf (stderr, "nOthers = %d", o->_nOthers); fprintf (stderr, ", "); #line 911 }; PRIVATE INITLINK me_0 ={(INITLINK*)NIL, 0, SetExpr__initProc}; static char* VSimports[] = { &VS_Word__And__479727d22e0cef9f, &VS_Word__Or__6e0e049826e116f7, &VS_Word__Not__e5602ba93e6fe1e1, &VS_Word__Shift__e50a3c672927c57d, &VS_String__T__3a6c7dc12615e4ee, &VS_Bool__Map__988f3fa721f87e62, &VS_Thread__Alerted__fc88feb43485af46, &VS_Wr__T__2555b70b3f7780b1, &VS_Wr__Failure__5f82cfb43dabf527, &VS_Wr__Error__c367253d3ed4fd15, &VS_Temp__T__3a6c7dc12615e4ee, &VS_Temp__AllocEmpty__20296f6d2a78c948, &VS_Temp__Alloc__0b946c9d3ec0974e, &VS_Temp__Free__3b952a2225c26846, &VS_Emit__MaxStream__cf0a0e8934c9c9f3, &VS_Emit__Format__bc4a2b083b93bbd7, &VS_Emit__Op__072646cc27c8ae10, &VS_Emit__OpS__f7dc93802c012951, &VS_Emit__OpSS__6d3e5a1c3d099356, &VS_Emit__OpI__02cb878634bb9f49, &VS_Emit__OpII__2247fe46332f901b, &VS_Emit__OpH__466335383480069b, &VS_Emit__OpT__764bdffe21d249e8, &VS_Emit__OpTT__cba0ce912431e01c, &VS_Emit__OpTTT__91a3dd742690c5b9, &VS_Emit__OpTI__af828b1c28578815, &VS_Emit__ZeroT__503aecb12ddbb6a6, &VS_Target__INTSIZE__6d9548032b40710f, &VS_Target__CHARSIZE__bfc83af22ccab4e4, &VS_Int__T__1062912139372387, &VS_AssignStmt__CheckRHS__9aaea40f392f387e, &VS_SetType__Split__edc8fdf02e117577, &VS_KeywordExpr__Split__c7296ea8373069e8, &VS_RangeExpr__New__994c470a3fe972ea, &VS_RangeExpr__Split__ee8f44e4219e1314, &VS_EnumExpr__Split__cac875982d1549f5, &VS_IntegerExpr__Split__132919062838cba6, &VS_Error__Msg__4d119a332467757f, &VS_Error__Warn__38cf6ace3df14804, &VS_Type__T__2446b70b3f7780a5, &VS_Type__Map__41dd9f4b33104fce, &VS_Type__List__5791758e343becc1, &VS_Type__Bind__3443ccd12eedb9e8, &VS_Type__Size__2f4d980e28adf05b, &VS_Type__Number__f5ca10923ed3cf22, &VS_Type__GetBounds__9a241b2b3c98ad98, &VS_Type__IsEqual__4098bc3f32325d05, &VS_Type__Check__3c8ceb09206ee440, &VS_Type__Fingerprint__0d24a3463c25e166, &VS_ExprRep__Init__8b7fff3e227cebab, &VS_ExprRep__NoBind__e7d0d3dd3d703c08, &VS_ExprRep__NoCheck__c11b54bc361794fa, &VS_ExprRep__NoValue__8ccc143224598a66, &VS_ExprRep__NoBounds__b64bb146289ee4f0, &VS_ExprRep__IsNever__8f1a069b301903c8, &VS_ExprRep__NeverEq__dfdc2412249ccb65, &VS_ExprRep__NoWriter__a97bb1a23bbf506e, &VS_ExprRep__NoLiteral__6c9c90073f496f67, &VS_Expr__T__2446b70b3f7780a5, &VS_Expr__List__3f87eceb2b9a246a, &VS_Expr__Bind__7e2752da3eaf56eb, &VS_Expr__TypeOf__fef0a11b388c64fa, &VS_Expr__ConstValue__ce4fd448218fe483, &VS_Expr__TypeCheck__af9aa9073729e7f7, &VS_Expr__Compile__a7e0cc4029a2ec76, &VS_Expr__IsEqual__062d8b2c385e35a9, &VS_Expr__Fingerprint__50ce687c31d90a5b, NIL }; void SetExpr__MLink (phase) int phase; { switch (phase) { case 0: { me_0.link = SetExpr__init; SetExpr__init = & me_0; t10_TC = t10_TC_init; REGISTERTYPE (TC10); t11_TC = t11_TC_init; REGISTERTYPE (TC11); break; }; case 1: { t11_TC.parent = TC_M3__Expr; break; }; case 2: { break; }; }; };