NL i^dZddlmZddlmZmZmZmZddlm Z ddl m Z m Z ddl mZmZmZmZmZmZmZmZmZmZmZmZmZddlmZd dZ dd Z dd Z dd Z y )z'Insert checks for uninitialized values.) annotations) AnalysisDictanalyze_must_defined_regs cleanup_cfgget_cfg) BITMAP_BITS)FuncIR all_values) Assign BasicBlockBranch ComparisonOpIntegerIntOp LoadAddressLoadErrorValueOpRaiseStandardErrorRegister UnreachableValue)bitmap_rprimitivec 4t|jt|j}t|j|t |j t |j |j}t|j|j|_yN) rblocksrrsetarg_regsr split_blocks_at_uninitsbefore)ircfg must_defineds \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/transform/uninit.pyinsert_uninit_checksr$sg  ")) C, 3BKK(*R[["))*LL( <3F3FGBIc g}g}t}g}g}|D]"}|j}g|_|} |j| t|D]\} } ||| f} | j D]} t | t s| | vst | tr| jtjk(rHt | trY| |vr"|j| |j| | jstt}}| jx|_|_|||gz }| jj sB| jjt| ||tj| j"n%t%| j| ||||| j"t't&j(d| jd| j"}|jj||jjt+|} | jj| %|r t-||||rg}|D]E}t/|jd}|j||jt1||G|D]+}|jt1|t3dt4-||djdd|S)N) true_label false_labeloplinezlocal variable "z" referenced before assignmentT) undefinesr)ropsappend enumerateunique_sources isinstancerr r)IS_ERRORraddnamer error_handlertype error_overlapr*check_for_uninit_using_bitmaprUNBOUND_LOCAL_ERRORr)update_register_assignments_to_set_bitmaprr rr)rpre_must_defined new_blocksinit_registersinit_registers_setbitmap_registers bitmap_backedblockr, cur_blockir)definedsrc new_block error_block raise_stdnew_opsregerrs r#rr's$&JN')$&MA%ii  )$s^; %EAr&uax0G((*8 *sH-7*'F38P&r;7"44&--c2*..s388 -7\:<{IJSJaJaaI+k.G; "::J8811! ,," #+6,5#)??%'WW 6%MM,)'%GG!3*>>*388*4RS!I  OO**95OO**;=9 )Iq8 *r MM  $w; % A%F1*>NP]^! -C T:C NN3  NN6#s+ , -$ GC NN6#wq2C'DE F G!( 1 !A r%c R||vrV|j|t|dz tz}t||kr"|jttd||j |}t t||tztd|tdz zztt j|} |j| t| tdttj} |j| |jt| ||tjy)zcCheck if src is defined using a bitmap. Modifies ops, bitmap_registers and bitmap_backed. __locals_bitmaprN) r-lenrrrindexrrANDrEQr BOOL) r,rDr>r?rFok_blockr*nrOmaskedchks r#r7r7s -S!  ! # 3  A %  # #H->/RSQT@U$V W    $E +-.e{Q/02CD  FJJv vwq*;?r%c >|D]}tfd|jDs#g}|jD]}t|tr|jvrj |j}|j |||tz}tt|td|tdz zzttj|j}|j ||j t|||j |||_y)zUpdate some assignments to registers to also set a bit in a bitmap. The bitmaps are used to track if a local variable has been assigned to. Modifies blocks. c3^K|]$}t|txr|jv&ywr)r0r dest).0r)r?s r# z.s)Wrz"f%B"'']*BBWs*-rLN) anyr,r0r rYrOr-rrrrORr*) rr>r?r@rHr)rOrInews ` r#r9r9s  WUYYW W "Gii 'b&)bgg.F)//8ENN2&*5K+?@C)e{Q&? @BST CNN3'NN6#s#34NN2& '  EI' r%N)r r returnNone)rlist[BasicBlock]r:zAnalysisDict[Value]r_ra)r,zlist[Op]rDrr>list[Register]r?rbrFr rSr r*intr_r`)rrar>rbr?rbr_r`)!__doc__ __future__rmypyc.analysis.dataflowrrrr mypyc.commonrmypyc.ir.func_irr r mypyc.ir.opsr r r rrrrrrrrrrmypyc.ir.rtypesrr$rr7r9r%r#rls-"aa$/. H[ [0C[[|@ @ @%@" @  @  @ @ @D  0> O]   r%