+
    ;i5                        ^ RI t ^ RIt ^ RI HtHt ^ RIHt ^ RIHtHtHt ^ RI	H
t
 ^ RIHtHtHtHtHtHtHt ^ RIHt ^ RIHtHtHt ^ R	IHtHtHtHtHtHtH t H!t!H"t"H#t# ^ R
IH$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H*t* ^ RI-t.^ RI/H0t0H1t1H2t2 ^ RI3t3R t4R t5] P                  R 4       t6R t7R t8 ! R R]24      t9 ! R R]24      t:];R8X  d   ]3Px                  ! 4        R# R# )    N)njitjit)ir_utils)typesircompiler)
cpu_target)copy_propagateapply_copy_propagateget_name_var_tableremove_delsremove_deadremove_call_handlersalias_func_extensions)type_inference_stage)FunctionPassregister_passPassManager)
ExtractByteCodeTranslateByteCode	FixupArgsIRProcessingDeadBranchPruneRewriteSemanticConstantsGenericRewritesWithLifting
PreserveIRInlineClosureLikes)
NopythonTypeInferenceAnnotateTypesNopythonRewritesPreParforPass
ParforPassDumpParforDiagnosticsNativeLoweringIRLegalizationNoPythonBackendr%   )skip_parfors_unsupported
needs_blasTestCasec                 H    ^pTpV ^ 8  d
   W,           pM^ p^V,          pW`8  # )    )bzwx1xyas   &&&    Z/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_remove_dead.pytest_will_propagater6      s/    	
B
A1uE	AA5L    c                     R # Nr-   )r4   r.   cds   &&&&r5   	null_funcr<   )   s    	r7   c                     V # r9   r-   )As   &r5   dummy_aliased_funcr?   ,   s    Hr7   c                 V    \         P                  ! W^ ,          P                  W#4       R# )r   N)r   
_add_aliasname)lhs_nameargs	alias_maparg_aliasess   &&&&r5   alias_ext_dummy_funcrG   0   s    q',,	Gr7   c                 
   V P                   P                  4        Fd  w  r#\        VP                  4       FF  w  rE\	        V\
        P                  4      '       g   K'  VP                  P                  V8X  g   KD    R # 	  Kf  	  R# )TF)	blocksitems	enumeratebody
isinstancer   AssigntargetrB   )func_irvarlabelblockiinsts   &&    r5   findLhsAssignrV   3   sZ    ,,. ,GA$		**t{{/?/?/D - /
 r7   c                      a  ] tR t^;t o RtR tR tR tR tR t	R t
R tR	 tR
 t]]R 4       4       tR tR tR tR t]R 4       tRtV tR# )TestRemoveDeadFc                *    \        VR R R7      ! V4      # )T)parallelfastmath)r   )selffunc	arg_typess   &&&r5   compile_parallelTestRemoveDead.compile_parallel?   s    It<TBBr7   c                `   \         P                  p\         P                  p\        P                  ! \
        4      pVP                  4        VP                  4        \        P                  \        P                  \        P                  3p\        WW4R 4      w  rVrv\        VP                  4       \        VP                  V4      w  r\        VP                  V\        VP                  4      WW4       \        VP                  VP                   V4       V P#                  \%        VR4      4       R # )Nr2   )r	   typing_contexttarget_contextr   run_frontendr6   refreshr   int64r   r   rI   r
   r   r   r   	arg_namesassertFalserV   )
r\   	typingctx	targetctxtest_irrD   typemap_	calltypesin_cpsout_cpss
   &         r5   test1TestRemoveDead.test1B   s    --	--	''(;<U[[%++6#7	g]a#b IGNN#(AW^^V5G5WY`lGNNG$5$5w?w45r7   c                    R  pR p\         P                  ! V4      p\        VP                  VP                  V4       V P                  V! V4      4       R# )c                  D    \         P                  P                  ^4       R# )   N)nprandomseedr-   r7   r5   call_np_random_seed1TestRemoveDead.test2.<locals>.call_np_random_seedS   s    IINN1r7   c                    V P                   ^ ,          P                   F  p\        V\        P                  4      '       g   K%  \        VP
                  \        P                  4      '       g   KQ  VP
                  P                  R8X  g   Kn  V P                  VP
                  P                  4      P                  R8X  g   K   R# 	  R# )r   callrx   TF)rI   rL   rM   r   rN   valueExpropget_definitionr]   attr)rP   rU   s   & r5   seed_call_exists.TestRemoveDead.test2.<locals>.seed_call_existsV   sz    q)..tRYY//tzz27733JJMMV+**4::??;@@FJ / r7   N)r   rd   r   rI   rg   
assertTrue)r\   ry   r   rk   s   &   r5   test2TestRemoveDead.test2R   sG    		 ''(;<GNNG$5$5w?(12r7   c                L   \         P                  ! ^4      P                  ^^4      pVP                  4       p^ pV P	                  V\
        P                  ! V4      \
        P                  ! V4      34      pV! W$4       V! W44       \         P                  P                  W#4       R# )   N)	rv   arangereshapecopyr_   numbatypeoftestingassert_array_equal)r\   r]   A1A2rT   pfuncs   &&    r5   run_array_index_test#TestRemoveDead.run_array_index_testc   st    YYq\!!!A&WWY%%dU\\"-=u||A,OPRb


%%b-r7   c                .    R  pV P                  V4       R# )c                 .    V P                  4       p^W!&   R# r,   N)ravelr>   rT   Bs   && r5   r]   -TestRemoveDead.test_alias_ravel.<locals>.funcn   s    	AADr7   Nr   r\   r]   s   & r5   test_alias_ravelTestRemoveDead.test_alias_ravelm       	 	!!$'r7   c                .    R  pV P                  V4       R# )c                 &    V P                   p^W!&   R# r   )flatr   s   && r5   r]   ,TestRemoveDead.test_alias_flat.<locals>.funcu   s    AADr7   Nr   r   s   & r5   test_alias_flatTestRemoveDead.test_alias_flatt   r   r7   c                .    R  pV P                  V4       R# )c                 *    V P                   p^W!^ 3&   R# r   )Tr   s   && r5   r]   2TestRemoveDead.test_alias_transpose1.<locals>.func|   s    AAcFr7   Nr   r   s   & r5   test_alias_transpose1$TestRemoveDead.test_alias_transpose1{       	 	!!$'r7   c                .    R  pV P                  V4       R# )c                 2    V P                  4       p^W!^ 3&   R# r   )	transposer   s   && r5   r]   2TestRemoveDead.test_alias_transpose2.<locals>.func   s    AAcFr7   Nr   r   s   & r5   test_alias_transpose2$TestRemoveDead.test_alias_transpose2   r   r7   c                .    R  pV P                  V4       R# )c                 >    \         P                  ! V 4      p^W!^ 3&   R# r   )rv   r   r   s   && r5   r]   2TestRemoveDead.test_alias_transpose3.<locals>.func   s    QAAcFr7   Nr   r   s   & r5   test_alias_transpose3$TestRemoveDead.test_alias_transpose3   r   r7   c                  a ^ RI Hp V! 4       P                  \        P                  4      oV3R lp\
        R,          p\
        P                  ! V4       V3R lp\        P                  ! ^4      pVP                  4       p V P                  V\        P                  ! V4      34      p\        P                  ! V4      ! V4       V! V4       V\
        R&   V P                  V^ ,          V^ ,          4       R#   T\
        R&   i ; i)r   )_BLASc                 X   < VS.8X  d!   V P                   ^,          P                  V9  # R# )   F)rD   rB   )rhslives	call_listxxnrm2s   &&&r5   remove_dead_xxnrm2<TestRemoveDead.test_alias_ctypes.<locals>.remove_dead_xxnrm2   s)    VH$xx{''u44r7   NNNc                 t   < \         P                  ! ^4      pS! ^d^VP                  ^V P                  4       R# )r   N)rv   onesctypes)retr4   r   s   & r5   r]   .TestRemoveDead.test_alias_ctypes.<locals>.func   s(    
A3188Q

3r7   N)numba.np.linalgr   numba_xxnrm2r   float64r   appendrv   zerosr   r_   r   r   r   assertEqual)	r\   r   r   old_remove_handlersr]   r   r   r   r   s	   &       @r5   test_alias_ctypes TestRemoveDead.test_alias_ctypes   s     	*%%emm4	 315##$67	4 XXa[WWY	:))$b1A0CDEJJtR "I ': #A1& ': #s   AC8 8Dc                .    R  pV P                  V4       R# )c                 @    \         P                  ! V R4      p^W!^ 3&   R# )r,   N)r,   ru   )rv   r   r   s   && r5   r]   0TestRemoveDead.test_alias_reshape1.<locals>.func   s    

1e$AAcFr7   Nr   r   s   & r5   test_alias_reshape1"TestRemoveDead.test_alias_reshape1   r   r7   c                .    R  pV P                  V4       R# )c                 6    V P                  ^^4      p^W!^ 3&   R# r   )r   r   s   && r5   r]   0TestRemoveDead.test_alias_reshape2.<locals>.func   s    		!AAAcFr7   Nr   r   s   & r5   test_alias_reshape2"TestRemoveDead.test_alias_reshape2   r   r7   c                    R  p\         P                  ! 4       p \        \         R&   V P                  V4       V\        n         R#   T\        n         i ; i)c                 (    \        V 4      p^W!^ 3&   R# r   )r?   r   s   && r5   r]   0TestRemoveDead.test_alias_func_ext.<locals>.func   s    "1%AAdGr7   N)r?   znumba.tests.test_remove_dead)r   r   rG   r   r   )r\   r]   old_ext_handlerss   &  r5   test_alias_func_ext"TestRemoveDead.test_alias_func_ext   sQ    	
 1557	>3G " #0 1%%d+ .>H*-=H*s   A Ac                l    R pV P                  V! 4       \        P                  ! V4      ! 4       4       R# )zYmake sure lhs variable of assignment is considered live if used in
rhs (test for #6715).
c                  h    \        ^4       F"  p R ! V 4      p\        P                  ! V4      pK$  	  X# )r,   c                     V # r9   r-   )js   &r5   <lambda>DTestRemoveDead.test_rm_dead_rhs_vars.<locals>.func.<locals>.<lambda>   s    qr7   )rangerv   array)rT   r4   s     r5   r]   2TestRemoveDead.test_rm_dead_rhs_vars.<locals>.func   s.    1X !$HHQK  Hr7   N)r   r   r   r   s   & r5   test_rm_dead_rhs_vars$TestRemoveDead.test_rm_dead_rhs_vars   s'    	 	D!1!34r7   c                   R p\        RRR7       ! R R\        4      4       p ! R R\        P                  4      p\        P
                  ! VR	7      ! V4      ! 4       pV! 4       p\        P                  P                  WE4       R
# )zGMake sure aliases are considered in remove dead extension for
parfors.
c                      ^p \         P                  P                  P                  4        \        P
                  ! V 4      pTp\         P                  ! V 4       F  pW1V&   K	  	  V# )   )r   parforsparforinit_prangerv   emptyprange)nr>   r   rT   s       r5   r]   8TestRemoveDead.test_alias_parfor_extension.<locals>.func   sO    AMM  ,,.AA\\!_! % Hr7   FT)analysis_onlymutates_CFGc                   0   a  ] tR t^t o RtR tR tRtV tR# )ATestRemoveDead.test_alias_parfor_extension.<locals>.LimitedParforlimited_parforc                2    \         P                  ! V 4       R # r9   )r   __init__)r\   s   &r5   r   JTestRemoveDead.test_alias_parfor_extension.<locals>.LimitedParfor.__init__   s    %%d+r7   c                d   \         P                  P                  P                  VP                  VP
                  VP                  VP                  VP                  VP                  P                  VP                  VP                  VP                  4	      p\        VP                  P                  4       VP                  P!                  VP                  P                  4       VP#                  VP                  P                  4       \%        VP                  P                  VP                  P&                  VP                  VP
                  4       \         P                  P                  P)                  VP                  P                  VP*                  P,                  VP.                  4       R # )T)r   r   r   r#   rP   rl   rn   return_typeri   flagsauto_parallelmetadataparfor_diagnosticsr   rI   array_analysisrun_convert_loopr   rg   get_parfor_paramsoptionsfusionnested_fusion_info)r\   stateparfor_passs   && r5   run_passJTestRemoveDead.test_alias_parfor_extension.<locals>.LimitedParfor.run_pass   s"   #mm22==MMMMOO%%OOKK--KKNN,,
 EMM001**..u}}/C/CD))%--*>*>?EMM00!MM33!MM!MM+ $$66u}}7K7K0;0C0C0J0J0;0N0NP r7   r-   N)	__name__
__module____qualname____firstlineno___namer   r  __static_attributes____classdictcell____classdict__s   @r5   LimitedParforr      s     $E, r7   r  c                   *   a  ] tR tRt o RtR tRtV tR# )@TestRemoveDead.test_alias_parfor_extension.<locals>.TestPipelinei	  zTest pipeline that just converts prange() to parfor and calls
remove_dead(). Copy propagation can replace B in the example code
which this pipeline avoids.
c                r   R p\        V4      pVP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \
        R4       V P                  P                  P                  '       gC   VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R	4       VP                  \        R
4       VP                  \        R4       VP!                  4        V.# )ztest parfor aliasingzanalyzing bytecodezfix up argszprocessing IRzHandle with contextsznopython rewriteszrewrite semantic constantszdead branch pruningz(inline calls to locally defined closuresznopython frontendznative loweringznopython mode backend)r   add_passr   r   r   r   r  r  no_rewritesr   r   r   r   r   r%   r'   finalize)r\   rB   pms   &  r5   define_pipelinesQTestRemoveDead.test_alias_parfor_extension.<locals>.TestPipeline.define_pipelines  s    - &-/CDI}5L/:K)?@zz''333KK1DEKK 8:VWKK1FG.FH 13FG N,=>O-DEtr7   r-   N)r  r  r  r  __doc__r!  r  r  r  s   @r5   TestPipeliner  	  s      r7   r$  )pipeline_classN)	r   r   r   Compilerr   r   rv   r   r   )r\   r]   r  r$  test_respy_ress   &     r5   test_alias_parfor_extension*TestRemoveDead.test_alias_parfor_extension   sl    
	 
U	=	L 	 
>	<	8,, 	8 99L9$?A


%%h7r7   r-   N)r  r  r  r  _numba_parallel_test_r_   rq   r   r   r   r   r   r   r   r(   r)   r   r   r   r   r   r)  r  r  r  s   @r5   rX   rX   ;   s     !C6 3".((((( '  '@((>
5 K8 K8r7   rX   c                   H   a  ] tR tRt o RtR tR tR tR tR t	R t
R	tV tR
# )TestSSADeadBranchPrunei*  z7
Test issues that required dead-branch-prune on SSA IR
c                    \         RR l4       p\         RR l4       pV P                  V! ^R 4      V! ^R 4      4       V P                  V! ^^
4      V! ^^
4      4       R # )Nc                 .    Ve	   W,           # T pW,           # r9   r-   )r2   r3   s   &&r5   foo3TestSSADeadBranchPrune.test_issue_9706.<locals>.foo/  s    }uur7   c                 .    Ve	   W,           # T pW,           # r9   r-   )r2   r3   y_s   && r5   foo_manual_ssa>TestSSADeadBranchPrune.test_issue_9706.<locals>.foo_manual_ssa7  s    }u vr7   r9   )r   r   )r\   r0  r4  s   &  r5   test_issue_9706&TestSSADeadBranchPrune.test_issue_9706.  sd    		 
	 
	 
	 	Q~a'>?Q^Ar%:;r7   c                x   \         RR l4       pV! \        P                  ! . RO4      4      p\        P                  ! ^RR7      pV! \        P                  ! . RO4      VR7      pV P	                  WC4       V P                  WB4       R pV! \        P                  ! . RO4      VR7      pV P                  WB4       R # )Nc                     V P                   w  pVf   \        P                  ! V4      pM*\        P                  ! ^ V8*  W8  ,          4      '       g   Q hW!R&   V# )Nr   )shaperv   r   all)xsoutNs   && r5   f1TestSSADeadBranchPrune.test_issue_6541.<locals>.fD  sK    BA{iilvvqCxCG45555FJr7   i8)dtype)r=  r9   )r,      ru   )r   rv   r   r   assertIsassertPreciseEqual)r\   r?  expectedr=  gots   &    r5   test_issue_6541&TestSSADeadBranchPrune.test_issue_6541C  s    		 
	 RXXi()ii&#-c.#-.r7   c                   \         RR l4       pV P                  V! ^RR7      4       \        ^\        P                  ! ^4      \        P
                  ! ^4      R7      pV P                  V! R/ VB VP                  ! R/ VB 4       R# )        c                 Z    Vf   R # \        V4      ^ 8X  d   V# W8  pW,          pW!,          # r9   )len)smthweightsdefaultidxs   &&& r5   compute7TestSSADeadBranchPrune.test_issue_7482.<locals>.computeX  s2    7|q .ClG$$r7   N)rN  rO  )rN  rO  rP  )rK  r-   )r   assertIsNonedictrv   r   r   r   py_func)r\   rR  kwargss   &  r5   test_issue_7482&TestSSADeadBranchPrune.test_issue_7482W  sp    	
	% 

	% 	'q$781biilBHHQKH*6* 262	4r7   c                    \         RR l4       p. ROpV F'  pV P                  V! V!  VP                  ! V!  4       K)  	  \         3R lpV P                  V! 4       V! R 4      4       R # )Nc                 L    Vf   ^pW,           # W8  d
   V^,          pW,           # r9   r-   )r4   r.   s   &&r5   r0  3TestSSADeadBranchPrune.test_issue_5661.<locals>.fook  s,    y 5L Q5Lr7   c                 8   a V R  4       oV V3R l4       pV! 4       # )c                 (    V f   ^ p V # V ^,          p V # r9   r-   )r  s   &r5   innerCTestSSADeadBranchPrune.test_issue_5661.<locals>.make.<locals>.inner  s#    =E  QJEr7   c                  @   < R p \        ^
4       F  pS! V 4      p K  	  V # r9   )r   )r  rT   r_  s     r5   fn@TestSSADeadBranchPrune.test_issue_5661.<locals>.make.<locals>.fn  s$    rA!%LE #r7   r-   )decorrb  r_  s   & @r5   make4TestSSADeadBranchPrune.test_issue_5661.<locals>.make~  s2        4Kr7   c                     V # r9   r-   )r2   s   &r5   r   8TestSSADeadBranchPrune.test_issue_5661.<locals>.<lambda>  s    r7   r9   ))rC  ru   )ru   rC  rC  )r   r   rV  )r\   r0  	args_listrD   re  s   &    r5   test_issue_5661&TestSSADeadBranchPrune.test_issue_5661j  sg    		 
	
	
 DS$Zd);< 
  	$ 	k!23r7   c                t   a ^ o\         V3R l4       pV P                  V! 4       VP                  4       4       R# )    c                  f   < S^,          p . pV '       d   VP                  V 4       V ^,          p K$  V# )ru   r   )conditionalcollectCONSTs     r5   r0  3TestSSADeadBranchPrune.test_issue_9742.<locals>.foo  s1      1*KG{+!Nr7   Nr   r   rV  r\   r0  rs  s   & @r5   test_issue_9742&TestSSADeadBranchPrune.test_issue_9742  s4    			 
		 	.r7   c                t   a ^ o\         V3R l4       pV P                  V! 4       VP                  4       4       R# )rn  c                  P   < . p S^,           pV'       d   V P                  V4       V # ri  rp  )rr  r2   rs  s     r5   r0  ;TestSSADeadBranchPrune.test_issue_9742_variant.<locals>.foo  s'    G 	Aq!Nr7   Nru  rv  s   & @r5   test_issue_9742_variant.TestSSADeadBranchPrune.test_issue_9742_variant  s4    		 
	 	.r7   r-   N)r  r  r  r  r#  r6  rH  rX  rk  rw  r|  r  r  r  s   @r5   r-  r-  *  s.     <*/(4&&4P/"/ /r7   r-  __main__)=r   numba.parfors.parforr   r   
numba.corer   r   r   r   numba.core.registryr	   numba.core.ir_utilsr
   r   r   r   r   r   r   numba.core.typed_passesr   numba.core.compiler_machineryr   r   r   numba.core.untyped_passesr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   numpyrv   numba.tests.supportr(   r)   r*   unittestr6   r<   r?   rG   rV   rX   r-  r  mainr-   r7   r5   <module>r     s        + + *I I I 9 R RJ J J
L L L  N N 
  Hl8X l8^F/X F/R zMMO r7   