
    sh$                     r   S SK r S SKJrJr  S SKJr  S SKJrJr  S SK	J
r
  S SKJrJrJrJrJrJr  S SKJrJrJrJr  S SKJrJrJr  S S	KJr  S
r\" S\ R<                  R                  R?                  \ R@                  5      4/5       " S S\!5      5       r" " S S\5      r#\$S:X  a  \RJ                  " 5         gg)    N)TestCaseunittest)
cpu_target)CompilerBaseFlags)PassManager)typesirbytecodecompilerir_utilsregistry)ExtractByteCodeTranslateByteCode	FixupArgsIRProcessing)NopythonTypeInferencetype_inference_stageDeadCodeElimination)jitclass   valc                       \ rS rSrS rSrg)Dummy   c                     Xl         g Nr   )selfr   s     m/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_ir_utils.py__init__Dummy.__init__   s        r   N)__name__
__module____qualname____firstlineno__r!   __static_attributes__ r#   r    r   r      s    r#   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)	TestIrUtils   z9
Tests ir handling utility functions like find_callname.
c                    S n[         R                  " U5      n[        R                  n[        R                  n[        X4USS5      n[        R                  " X"R                  S   R                  S   R                  UR                  5      nU R                  [        U[        5      =(       a    [        U5      S:H  =(       a    US   S:H  5        g)zGTest matching of an object method (other than Array see #3449)
        c                  R    [        S/5      n U R                  R                  S5        g )N      )r   r   append)ds    r    	test_func2TestIrUtils.test_obj_func_match.<locals>.test_func!   s    qc
AEELLOr#   r)   Nr      r0   r1   )r   run_frontendr   typing_contexttarget_contextr   r   find_callnameblocksbodyvaluetypemap
assertTrue
isinstancetuplelen)r   r3   test_ir	typingctx	targetctx
typing_resmatched_calls          r    test_obj_func_matchTestIrUtils.test_obj_func_match   s    	 ''	2--	--	)'2t5
--^^A&++A.44j6H6HJ
<7 4L)Q.4$Q83	5r#   c                   ^   " S S[         5      nU 4S jnU 4S jnS nUR                  [        R                  45      nUR	                  U5      nU" U5      nUR                  [        R                  45      nUR	                  USS9nU" U5        T R                  [        UR                  S   R                  5      [        U5      -
  [        UR                  S   R                  5      5        g )	Nc                   >    \ rS rSr\SS0 SSS4S j5       rSS jrSrg)6TestIrUtils.test_dead_code_elimination.<locals>.Tester2   Nc           	          U(       d
  [        5       nSUl        Uc  [        R                  R                  nUc  [        R                  R
                  nU " XgXQX#U5      $ )NT)r   nrtr   r   r7   r8   )clsargsreturn_typeflagslocalslibraryr7   r8   s           r    mk_pipelineBTestIrUtils.test_dead_code_elimination.<locals>.Tester.mk_pipeline4   sY     !GE 	!)%-%8%8%G%GN!)%-%8%8%G%GN>7&v7 7r#   c                    [         R                  R                  U5      nX0R                  l        [        5       R                  U R                  5        U R                  nSn[        U5      nUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        S5        USL a  UR                  [        S5        UR                  5         UR                  U5        UR                   $ )z
Compile and return IR
DCE_testingzanalyzing bytecodezfix up argszprocessing IRznopython frontendTzDCE after typing)r   FunctionIdentityfrom_functionstatefunc_idr   run_passr   add_passr   r   r   r   r   finalizerunfunc_ir)r   funcDCEr\   r[   namepms          r    compile_to_irDTestIrUtils.test_dead_code_elimination.<locals>.Tester.compile_to_irB   s     #33AA$G%,

"!**4::6

$ &-/CDI}5L/:13FG$;KK 35GHu}}$r#   r)   )F)r$   r%   r&   r'   classmethodrU   rf   r(   r)   r#   r    TesterrK   2   s(    37tB$(+/7 7%r#   ri   c                 l  > TR                  [        U R                  5      S5        U R                  S   n/ nUR                  [        R
                  5       H]  n[        [        USS 5      [        R                  5      (       d  M/  S[        UR                  SS5      ;   d  ML  UR                  U5        M_     TR                  [        U5      S5        U H[  nU R                  UR                  5      nTR                  [        SUR                  R                  -  S	5      UR                  5        M]     U$ )
Nr/   r   targetdeadrd    r0   z0x%s   )assertEqualrA   r:   
find_instsr
   Assignr?   getattrVarrk   r1   get_definitionr<   r>   intrd   )the_irblockdeadsxr2   	const_valr   s         r    check_initial_ir@TestIrUtils.test_dead_code_elimination.<locals>.check_initial_irW   s     S/3MM!$EE%%bii0ga48"&&AA62!>>Q 1
 SZ+"11!'':	FQXX]]$:B ? )1  Lr#   c                   > TR                  [        U R                  5      S5        U R                  S   n/ n/ nUR                  [        R
                  5       H  n[        [        USS 5      [        R                  5      (       a,  S[        UR                  SS5      ;   a  UR                  U5        [        [        USS 5      [        R                  5      (       d  M  UR                  U5        M     TR                  [        U5      S5        U H+  nTR                  UR                  R                  S;  5        M-     g )	Nr/   r   rk   rl   rd   rm   r<   )     ^[= )ro   rA   r:   rp   r
   rq   r?   rr   rs   rk   r1   Constr>   r<   )rv   rw   rx   constsry   r   s        r    check_dce_ir<TestIrUtils.test_dead_code_elimination.<locals>.check_dce_irp   s    S/3MM!$EEF%%bii0ga48"&&AA62!>>Qga$7BBMM!$ 1 SZ+ 5I IJ r#   c                 *    U S-   nSnUS-   nSnX3-  nU$ )Nr/   r~   r0   r   r)   )ry   yrl   zdeaddeadrets         r    foo3TestIrUtils.test_dead_code_elimination.<locals>.foo   s*    AADAA!H%CJr#   T)rc   r   )	r   rU   r	   intprf   ro   rA   r:   r;   )	r   ri   r{   r   r   test_pipelineno_dceremovedw_dces	   `        r    test_dead_code_elimination&TestIrUtils.test_dead_code_elimination0   s    #	%\ #	%J	2	K$	 **EJJ=9,,S1"6***EJJ=9++CT+:U 	V]]1-223c'lBU\\!_112	4r#   c                   ^ SmU4S jn[         R                  " U5      nUR                  S   nSnSnUR                   H  n[	        U[
        R                  5      (       aI  UR                  R                  S:X  a/  [        R                  " [        R                  X&R                  5      n[	        U[
        R                  5      (       d  M  UR                  R                  S:X  d  M  [        R                  " [        R                  X&R                  5      nM     U R                  U[        5        U R                  UT5        g)z~
Test find_const() for values in globals (ir.Global) and freevars
(ir.FreeVar) that are considered constants for compilation.
   c                 "   > [         nTnX-   U-   $ r   )GLOBAL_B)abc	FREEVAR_Cs      r    r   /TestIrUtils.test_find_const_global.<locals>.foo   s    AA519r#   r   Nr   r   )r   r6   r:   r;   r?   r
   rq   rk   rd   r   guard
find_constro   r   )r   r   f_irrw   const_bconst_cinstr   s          @r    test_find_const_global"TestIrUtils.test_find_const_global   s    
 		
 $$S)AJJD$		**t{{/?/?3/F"..''{{<$		**t{{/?/?3/F"..''{{<  	(+),r#   c                    ^  S nS nS nU 4S jnU" U5      nU" U5      nU" U5      nT R                  XV5        T R                  XW5        g)ztests flatten_labels c                     SnU S:  a  US-  nU S:  a  gOAU S:  a0  U S:  a  US-  n[        S5       H  nUS-  nUS	:  d  M    O   US
-  nO[        S5      eSnS	nSnSnU$ )Nr      r/      5     r   
   r0   r5   some string   range
ValueErrorr   accry   py310_defeat1py310_defeat2py310_defeat3py310_defeat4s          r    r   ,TestIrUtils.test_flatten_labels.<locals>.foo   s    C1uqr6 T71HCrA1HCQw #
 1HC //MMMMJr#   c                     SnSnU S:  a  US-  nUS-  nU S:  a  US-  ngOPU S:  a?  U S:  a
  US-  nUS-  n[        S5       H  nUS-  nUS-  nUS	:  d  M    O   US-  nUS
-  nO[        S5      eSnS	nSnSnU$ )Nr   r   r   r/   r   r   r   r   r0   r5   r   r   r   )r   r   r   ry   r   r   r   r   s           r    bar,TestIrUtils.test_flatten_labels.<locals>.bar   s    CA1uqRr6GA  T7GA1HCrAGA1HCQw	 # GA1HC //MMMMJr#   c                     SnU S:  a  US-  nU S:  a  ggU S:  a0  U S:  a  US-  n[        S	5       H  nUS-  nUS
:  d  M    O   US-  nO[        S5      eSnS
nSnSnU$ )Nr   r   r/   r   r   7   r   r   r   r0   r5   r   r   r   r   s          r    baz,TestIrUtils.test_flatten_labels.<locals>.baz   s    C1uqr6T71HCrA1HCQw #
 1HC //MMMMJr#   c                 ,  > [         R                  " U [        5       5      n[         R                  " UR                  5      nTR                  [        UR                  5       5      S-   [        UR                  5      5        [         R                  " U5      $ )Nr/   )
r   compile_to_numba_irdictflatten_labelsr:   ro   maxkeysrA   compute_cfg_from_blocks)rb   ra   flat_blocksr   s      r    get_flat_cfg5TestIrUtils.test_flatten_labels.<locals>.get_flat_cfg  sh    224@G"11'..AKS!1!1!34q8#gnn:MN33K@@r#   N)ro   assertNotEqual)r   r   r   r   r   foo_cfgbar_cfgbaz_cfgs   `       r    test_flatten_labelsTestIrUtils.test_flatten_labels   sT    	0	:	2	A s#s#s#*G-r#   r)   N)
r$   r%   r&   r'   __doc__rG   r   r   r   r(   r)   r#   r    r+   r+      s    5&d4L-8[.r#   r+   __main__)&numbanumba.tests.supportr   r   numba.core.registryr   numba.core.compilerr   r   numba.core.compiler_machineryr   
numba.corer	   r
   r   r   r   r   numba.core.untyped_passesr   r   r   r   numba.core.typed_passesr   r   r   numba.experimentalr   r   coreListr   objectr   r+   r$   mainr)   r#   r    <module>r      s     2 * 3 5 H HA AP P '  
E5::##((45
67F  8
u.( u.p zMMO r#   