§
    2@ÄjI7  ã                   ó¸  — d dl Z d dlZ d dl mZmZ d dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZ d d	lmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d d
lm$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m*Z* d dl-Z.d dl/m0Z0m1Z1m2Z2 d dl3Z3d„ Z4d„ Z5e j        d„ ¦   «         Z6d„ Z7d„ Z8 G d„ de2¦  «        Z9 G d„ de2¦  «        Z:e;dk    r e3j<        ¦   «          dS dS )é    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                 ó<   — d}|}| dk    r||z   }nd}d|z  }|| k     S )Né   r   é   © )ÚbÚzÚwÚx1ÚxÚyÚas          úMC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_remove_dead.pyÚtest_will_propagater7      s7   € Ø	
€BØ
€AØˆ1‚u€uØ�‰EˆˆàˆØ	ˆA‰€AØˆqŠ5€Ló    c                 ó   — d S ©Nr.   )r5   r/   ÚcÚds       r6   Ú	null_funcr=   )   s   € Ø	€Er8   c                 ó   — | S r:   r.   )ÚAs    r6   Údummy_aliased_funcr@   ,   s   € à€Hr8   c                 óJ   — t          j        | |d         j        ||¦  «         d S ©Nr   )r   Ú
_add_aliasÚname)Úlhs_nameÚargsÚ	alias_mapÚarg_aliasess       r6   Úalias_ext_dummy_funcrI   0   s%   € ÝÔ˜ $ q¤'¤,°	¸;ÑGÔGÐGÐGÐGr8   c                 óÔ   — | j                              ¦   «         D ]M\  }}t          |j        ¦  «        D ]3\  }}t	          |t
          j        ¦  «        r|j        j        |k    r  dS Œ4ŒNdS )NTF)	ÚblocksÚitemsÚ	enumerateÚbodyÚ
isinstancer   ÚAssignÚtargetrD   )Úfunc_irÚvarÚlabelÚblockÚiÚinsts         r6   ÚfindLhsAssignrX   3   sy   € Øœ×,Ò,Ñ.Ô.ð ð ‰ˆˆuÝ  ¤Ñ,Ô,ð 	ð 	‰GˆAˆtÝ˜$¥¤	Ñ*Ô*ð ¨t¬{Ô/?ÀÒ/DÐ/DØ�t�t�tøð	ð ˆ5r8   c                   óœ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zeed„ ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         ZdS )ÚTestRemoveDeadFc                 ó8   —  t          |dd¬¦  «        |¦  «        S )NT)ÚparallelÚfastmath)r   )ÚselfÚfuncÚ	arg_typess      r6   Úcompile_parallelzTestRemoveDead.compile_parallel?   s!   € Ø<�t�I¨°tÐ<Ñ<Ô<¸TÑBÔBÐBr8   c                 óV  — t           j        }t           j        }t          j        t
          ¦  «        }|                     ¦   «          |                     ¦   «          t          j        t          j        t          j        f}t          ||||d ¦  «        \  }}}}t          |j        ¦  «         t          |j        |¦  «        \  }}	t          |j        |t          |j        ¦  «        ||¦  «         t          |j        |j        |¦  «         |                      t%          |d¦  «        ¦  «         d S )Nr3   )r	   Útyping_contextÚtarget_contextr   Úrun_frontendr7   Úrefreshr   Úint64r   r   rK   r
   r   r   r   Ú	arg_namesÚassertFalserX   )
r^   Ú	typingctxÚ	targetctxÚtest_irrF   ÚtypemapÚ_Ú	calltypesÚin_cpsÚout_cpss
             r6   Útest1zTestRemoveDead.test1B   sþ   € ÝÔ-ˆ	ÝÔ-ˆ	ÝÔ'Õ(;Ñ<Ô<ˆà×ÒÑÔÐØ×ÒÑÔÐÝ”�Uœ[­%¬+Ð6ˆÝ#7¸	À9ÈgÐW[Ð]aÑ#bÔ#bÑ ˆ��I˜qÝ�G”NÑ#Ô#Ð#Ý(¨¬¸ÑAÔA‰ˆ�Ý˜Wœ^¨VÕ5GÈÌÑ5WÔ5WÐY`ÐbkÑlÔlÐlå�G”N GÔ$5°wÑ?Ô?Ð?Ø×Ò� w°Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5r8   c                 ó¬   — d„ }d„ }t          j        |¦  «        }t          |j        |j        |¦  «         |                       ||¦  «        ¦  «         d S )Nc                  óD   — t           j                             d¦  «         d S ©Nr-   )ÚnpÚrandomÚseedr.   r8   r6   Úcall_np_random_seedz1TestRemoveDead.test2.<locals>.call_np_random_seedS   s   € ÝŒI�NŠN˜1ÑÔÐÐÐr8   c                 ó  — | j         d         j        D ]v}t          |t          j        ¦  «        rZt          |j        t          j        ¦  «        r;|j        j        dk    r+|                      |j        j	        ¦  «        j
        dk    r dS ŒwdS )Nr   Úcallrx   TF)rK   rN   rO   r   rP   ÚvalueÚExprÚopÚget_definitionr_   Úattr)rR   rW   s     r6   Úseed_call_existsz.TestRemoveDead.test2.<locals>.seed_call_existsV   s�   € Øœ qÔ)Ô.ð  ð  �Ý˜t¥R¤YÑ/Ô/ð  Ý˜tœz­2¬7Ñ3Ô3ð à”J”M VÒ+Ð+Ø×*Ò*¨4¬:¬?Ñ;Ô;Ô@ÀFÒJÐJØ˜4˜4øØ�5r8   )r   re   r   rK   rh   Ú
assertTrue)r^   ry   r�   rl   s       r6   Útest2zTestRemoveDead.test2R   sn   € ð	ð 	ð 	ð	ð 	ð 	õ Ô'Ð(;Ñ<Ô<ˆÝ�G”N GÔ$5°wÑ?Ô?Ð?Ø�ŠÐ(Ð(¨Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r8   c                 ój  — t          j        d¦  «                             dd¦  «        }|                     ¦   «         }d}|                      |t          j        |¦  «        t          j        |¦  «        f¦  «        } |||¦  «          |||¦  «         t           j                             ||¦  «         d S )Né   r-   r,   r   )	rv   ÚarangeÚreshapeÚcopyra   ÚnumbaÚtypeofÚtestingÚassert_array_equal)r^   r_   ÚA1ÚA2rV   Úpfuncs         r6   Úrun_array_index_testz#TestRemoveDead.run_array_index_testc   s™   € ÝŒY�q‰\Œ\×!Ò! ! AÑ&Ô&ˆØ�WŠW‰YŒYˆØˆØ×%Ò% d­U¬\¸"Ñ-=Ô-=½u¼|ÈA¹¼Ð,OÑPÔPˆàˆˆR�‰ŒˆØˆˆb�!‰ŒˆÝ
Œ
×%Ò% b¨"Ñ-Ô-Ð-Ð-Ð-r8   c                 ó6   — d„ }|                       |¦  «         d S )Nc                 ó8   — |                       ¦   «         }d||<   d S ©Nr,   )Úravel©r?   rV   ÚBs      r6   r_   z-TestRemoveDead.test_alias_ravel.<locals>.funcn   s   € Ø—’‘	”	ˆAØˆAˆa‰DˆDˆDr8   ©r�   ©r^   r_   s     r6   Útest_alias_ravelzTestRemoveDead.test_alias_ravelm   ó-   € ð	ð 	ð 	ð 	×!Ò! $Ñ'Ô'Ð'Ð'Ð'r8   c                 ó6   — d„ }|                       |¦  «         d S )Nc                 ó   — | j         }d||<   d S r“   )Úflatr•   s      r6   r_   z,TestRemoveDead.test_alias_flat.<locals>.funcu   s   € Ø”ˆAØˆAˆa‰DˆDˆDr8   r—   r˜   s     r6   Útest_alias_flatzTestRemoveDead.test_alias_flatt   rš   r8   c                 ó6   — d„ }|                       |¦  «         d S )Nc                 ó"   — | j         }d||df<   d S ©Nr,   r   )ÚTr•   s      r6   r_   z2TestRemoveDead.test_alias_transpose1.<locals>.func|   s   € Ø”ˆAØˆAˆa�ˆc‰FˆFˆFr8   r—   r˜   s     r6   Útest_alias_transpose1z$TestRemoveDead.test_alias_transpose1{   ó-   € ð	ð 	ð 	ð 	×!Ò! $Ñ'Ô'Ð'Ð'Ð'r8   c                 ó6   — d„ }|                       |¦  «         d S )Nc                 ó<   — |                       ¦   «         }d||df<   d S r¡   )Ú	transposer•   s      r6   r_   z2TestRemoveDead.test_alias_transpose2.<locals>.funcƒ   s    € Ø—’‘”ˆAØˆAˆa�ˆc‰FˆFˆFr8   r—   r˜   s     r6   Útest_alias_transpose2z$TestRemoveDead.test_alias_transpose2‚   r¤   r8   c                 ó6   — d„ }|                       |¦  «         d S )Nc                 ó<   — t          j        | ¦  «        }d||df<   d S r¡   )rv   r§   r•   s      r6   r_   z2TestRemoveDead.test_alias_transpose3.<locals>.funcŠ   s    € Ý”˜Q‘”ˆAØˆAˆa�ˆc‰FˆFˆFr8   r—   r˜   s     r6   Útest_alias_transpose3z$TestRemoveDead.test_alias_transpose3‰   r¤   r8   c                 ó0  ‡— ddl m}  |¦   «                              t          j        ¦  «        Šˆfd„}t
          d d …         }t          j        |¦  «         ˆfd„}t          j        d¦  «        }| 	                    ¦   «         }	 |  
                    |t          j        |¦  «        f¦  «        } t          j        |¦  «        |¦  «          ||¦  «         |t
          d d …<   n# |t
          d d …<   w xY w|                      |d         |d         ¦  «         d S )Nr   )Ú_BLASc                 ó>   •— |‰gk    r| j         d         j        |vS dS )Né   F)rF   rD   )ÚrhsÚlivesÚ	call_listÚxxnrm2s      €r6   Úremove_dead_xxnrm2z<TestRemoveDead.test_alias_ctypes.<locals>.remove_dead_xxnrm2—   s)   ø€ Ø˜V˜HÒ$Ð$Ø”x ”{Ô'¨uÐ4Ð4Ø�5r8   c                 ób   •— t          j        d¦  «        } ‰dd|j        d| j        ¦  «         d S )Nr¯   éd   é   )rv   ÚonesÚctypes)Úretr5   r³   s     €r6   r_   z.TestRemoveDead.test_alias_ctypes.<locals>.func¡   s2   ø€ Ý”˜‘
”
ˆAØˆF�3˜˜1œ8 Q¨¬
Ñ3Ô3Ð3Ð3Ð3r8   r·   )Únumba.np.linalgr­   Únumba_xxnrm2r   Úfloat64r   Úappendrv   Úzerosrˆ   ra   r‰   rŠ   r   ÚassertEqual)	r^   r­   r´   Úold_remove_handlersr_   r�   rŽ   r�   r³   s	           @r6   Útest_alias_ctypesz TestRemoveDead.test_alias_ctypes�   sE  ø€ ð 	*Ð)Ð)Ð)Ð)Ð)Ø�‘”×%Ò%¥e¤mÑ4Ô4ˆð	ð 	ð 	ð 	ð 	õ 3°1°1°1Ô5ÐÝÔ#Ð$6Ñ7Ô7Ð7ð	4ð 	4ð 	4ð 	4ð 	4õ ŒX�a‰[Œ[ˆØ�WŠW‰YŒYˆð	:Ø×)Ò)¨$µ´¸bÑ1AÔ1AÐ0CÑDÔDˆEØ�EŒJ�tÑÔ˜RÑ Ô Ð ØˆE�"‰IŒIˆIð ':Õ    Ñ#Ð#øÐ&9Õ    Ñ#Ð9Ð9Ð9Ð9à×Ò˜˜Aœ  1¤Ñ&Ô&Ð&Ð&Ð&s   ÂAC# Ã#C1c                 ó6   — d„ }|                       |¦  «         d S )Nc                 ó>   — t          j        | d¦  «        }d||df<   d S )N)r,   r-   r,   r   )rv   r‡   r•   s      r6   r_   z0TestRemoveDead.test_alias_reshape1.<locals>.func³   s$   € Ý”
˜1˜eÑ$Ô$ˆAØˆAˆa�ˆc‰FˆFˆFr8   r—   r˜   s     r6   Útest_alias_reshape1z"TestRemoveDead.test_alias_reshape1²   r¤   r8   c                 ó6   — d„ }|                       |¦  «         d S )Nc                 ó@   — |                       dd¦  «        }d||df<   d S )Nr,   r-   r   )r‡   r•   s      r6   r_   z0TestRemoveDead.test_alias_reshape2.<locals>.funcº   s$   € Ø—	’	˜!˜A‘”ˆAØˆAˆa�ˆc‰FˆFˆFr8   r—   r˜   s     r6   Útest_alias_reshape2z"TestRemoveDead.test_alias_reshape2¹   r¤   r8   c                 ó¶   — d„ }t          j        ¦   «         }	 t          t           d<   |                      |¦  «         |t          _         d S # |t          _         w xY w)Nc                 ó2   — t          | ¦  «        }d||df<   d S r¡   )r@   r•   s      r6   r_   z0TestRemoveDead.test_alias_func_ext.<locals>.funcÁ   s    € Ý" 1Ñ%Ô%ˆAØˆAˆa�ˆd‰GˆGˆGr8   )r@   znumba.tests.test_remove_dead)r   rˆ   rI   r�   r   )r^   r_   Úold_ext_handlerss      r6   Útest_alias_func_extz"TestRemoveDead.test_alias_func_extÀ   sr   € ð	ð 	ð 	õ
 1Ô5Ñ7Ô7Ðð	>å3Gõ "ð #0ñ 1à×%Ò% dÑ+Ô+Ð+ð .>�HÔ*Ð*Ð*øÐ-=�HÔ*Ð=Ð=Ð=Ð=s   ˜$A
 Á
Ac                 ó|   — d„ }|                        |¦   «          t          j        |¦  «        ¦   «         ¦  «         dS )zimake sure lhs variable of assignment is considered live if used in
        rhs (test for #6715).
        c                  ój   — t          d¦  «        D ]"}  d„ | ¦  «        }t          j        |¦  «        }Œ#|S )Nr,   c                 ó   — | S r:   r.   )Újs    r6   ú<lambda>zDTestRemoveDead.test_rm_dead_rhs_vars.<locals>.func.<locals>.<lambda>Õ   s   € ˜q€ r8   )Úrangerv   Úarray)rV   r5   s     r6   r_   z2TestRemoveDead.test_rm_dead_rhs_vars.<locals>.funcÓ   s<   € Ý˜1‘X”Xð  ð  �Ø �[�[ !Ñ$Ô$�Ý”H˜Q‘K”K��ØˆHr8   N)rÀ   r‰   r   r˜   s     r6   Útest_rm_dead_rhs_varsz$TestRemoveDead.test_rm_dead_rhs_varsÏ   sH   € ð	ð 	ð 	ð 	×Ò˜˜™œÐ!1¥¤¨DÑ!1Ô!1Ñ!3Ô!3Ñ4Ô4Ð4Ð4Ð4r8   c                 ó0  — d„ }t          dd¬¦  «         G d„ dt          ¦  «        ¦   «         } G d„ dt          j        ¦  «        }  t	          j        |¬	¦  «        |¦  «        ¦   «         } |¦   «         }t          j                             ||¦  «         d
S )zWMake sure aliases are considered in remove dead extension for
        parfors.
        c                  ó´   — d} t           j        j                             ¦   «          t	          j        | ¦  «        }|}t          j        | ¦  «        D ]}|||<   Œ|S )Né   )r‰   ÚparforsÚparforÚinit_prangerv   ÚemptyÚprange)Únr?   r–   rV   s       r6   r_   z8TestRemoveDead.test_alias_parfor_extension.<locals>.funcà   sW   € ØˆAÝŒMÔ ×,Ò,Ñ.Ô.Ð.Ý”˜‘”ˆAØˆAÝ”\ !‘_”_ð ð �Ø��!‘�àˆHr8   FT)Úanalysis_onlyÚmutates_CFGc                   ó   — e Zd ZdZd„ Zd„ ZdS )úATestRemoveDead.test_alias_parfor_extension.<locals>.LimitedParforÚlimited_parforc                 ó.   — t          j        | ¦  «         d S r:   )r   Ú__init__)r^   s    r6   rä   zJTestRemoveDead.test_alias_parfor_extension.<locals>.LimitedParfor.__init__î   s   € ÝÔ% dÑ+Ô+Ð+Ð+Ð+r8   c                 óX  — t           j        j                             |j        |j        |j        |j        |j        |j	        j
        |j	        |j        |j        ¦	  «	        }t          |j        j        ¦  «         |j                             |j        j        ¦  «         |                     |j        j        ¦  «         t%          |j        j        |j        j        |j        |j        ¦  «         t           j        j                             |j        j        |j        j        |j        ¦  «         dS )NT)r‰   rØ   rÙ   r#   rR   rm   ro   Úreturn_typerj   ÚflagsÚauto_parallelÚmetadataÚparfor_diagnosticsr   rK   Úarray_analysisÚrunÚ_convert_loopr   rh   Úget_parfor_paramsÚoptionsÚfusionÚnested_fusion_info)r^   ÚstateÚparfor_passs      r6   Úrun_passzJTestRemoveDead.test_alias_parfor_extension.<locals>.LimitedParfor.run_passñ   s  € Ý#œmÔ2×=Ò=Ø”MØ”MØ”OØÔ%Ø”OØ”KÔ-Ø”KØ”NØÔ,ñ
ô 
�õ ˜EœMÔ0Ñ1Ô1Ð1ØÔ*×.Ò.¨u¬}Ô/CÑDÔDÐDØ×)Ò)¨%¬-Ô*>Ñ?Ô?Ð?Ý˜EœMÔ0Ø!œMÔ3Ø!œMØ!œMñ+ô +ð +õ ”Ô$×6Ò6°u´}Ô7KØ0;Ô0CÔ0JØ0;Ô0NñPô Pð Pð �tr8   N)Ú__name__Ú
__module__Ú__qualname__Ú_namerä   rô   r.   r8   r6   ÚLimitedParforrá   ê   s7   € € € € € à$ˆEð,ð ,ð ,ðð ð ð ð r8   rù   c                   ó   — e Zd ZdZd„ ZdS )ú@TestRemoveDead.test_alias_parfor_extension.<locals>.TestPipelinezÀTest 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                 óÆ  — d}t          |¦  «        }|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t
          d¦  «         | j        j        j        sQ|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d	¦  «         |                     t          d
¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |gS )Nz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^   rD   Úpms      r6   Údefine_pipelineszQTestRemoveDead.test_alias_parfor_extension.<locals>.TestPipeline.define_pipelines  s/  € Ø-�Ý  Ñ&Ô&�Ø—’Õ-Ð/CÑDÔDÐDØ—’�I }Ñ5Ô5Ð5Ø—’�L¨/Ñ:Ô:Ð:Ø—’�KÐ)?Ñ@Ô@Ð@à”zÔ'Ô3ð HØ—K’K¥Ð1DÑEÔEÐEØ—K’KÕ 8Ð:VÑWÔWÐWØ—K’K¥Ð1FÑGÔGÐGØ—’Õ.ØFñHô Hð Hð —’Õ1Ð3FÑGÔGÐGð —’�NÐ,=Ñ>Ô>Ð>Ø—’�OÐ-DÑEÔEÐEØ—’‘”�Ø�t�r8   N)rõ   rö   r÷   Ú__doc__r  r.   r8   r6   ÚTestPipelinerû   	  s-   € € € € € ðð ðð ð ð ð r8   r  )Úpipeline_classN)	r   r   r   ÚCompilerr‰   r   rv   r‹   rŒ   )r^   r_   rù   r  Útest_resÚpy_ress         r6   Útest_alias_parfor_extensionz*TestRemoveDead.test_alias_parfor_extensionÛ   sÓ   € ð
	ð 	ð 	õ 
 U¸Ð	=Ñ	=Ô	=ð	ð 	ð 	ð 	ð 	�Lñ 	ô 	ñ 
>Ô	=ð	ð<	ð 	ð 	ð 	ð 	�8Ô,ñ 	ô 	ð 	ð8 @Ð9•5”9¨LÐ9Ñ9Ô9¸$Ñ?Ô?ÑAÔAˆØ�‘”ˆÝ
Œ
×%Ò% h°Ñ7Ô7Ð7Ð7Ð7r8   N)rõ   rö   r÷   Ú_numba_parallel_test_ra   rr   rƒ   r�   r™   rž   r£   r¨   r«   r(   r)   rÂ   rÅ   rÈ   rÌ   rÔ   r  r.   r8   r6   rZ   rZ   ;   s(  € € € € € à!ÐðCð Cð Cð6ð 6ð 6ð 3ð 3ð 3ð".ð .ð .ð(ð (ð (ð(ð (ð (ð(ð (ð (ð(ð (ð (ð(ð (ð (ð Øð'ð 'ñ „Zñ Ôð'ð@(ð (ð (ð(ð (ð (ð>ð >ð >ð
5ð 
5ð 
5ð ðK8ð K8ñ ÔðK8ð K8ð K8r8   rZ   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestSSADeadBranchPrunez?
    Test issues that required dead-branch-prune on SSA IR
    c                 óò   — t           dd„¦   «         }t           dd„¦   «         }|                       |dd ¦  «         |dd ¦  «        ¦  «         |                       |dd¦  «         |dd¦  «        ¦  «         d S )Nc                 ó   — |�| |z   S | }| |z   S r:   r.   )r3   r4   s     r6   Úfooz3TestSSADeadBranchPrune.test_issue_9706.<locals>.foo/  s   € àˆ}Ø˜1‘u�à�Ø˜1‘u�r8   c                 ó   — |�| |z   S | }| |z   S r:   r.   )r3   r4   Úy_s      r6   Úfoo_manual_ssaz>TestSSADeadBranchPrune.test_issue_9706.<locals>.foo_manual_ssa7  s    € àˆ}Ø˜1‘u�ð �Ø˜2‘v�r8   r,   é
   r:   )r   rÀ   )r^   r  r  s      r6   Útest_issue_9706z&TestSSADeadBranchPrune.test_issue_9706.  s    € Ý	ð	ð 	ð 	ñ 
Œð	õ 
ð	ð 	ð 	ñ 
Œð	ð 	×Ò˜˜˜Q ™œ ~ ~°a¸Ñ'>Ô'>Ñ?Ô?Ð?Ø×Ò˜˜˜Q ™œ ^ ^°A°rÑ%:Ô%:Ñ;Ô;Ð;Ð;Ð;r8   c                 óž  — t           dd„¦   «         } |t          j        g d¢¦  «        ¦  «        }t          j        dd¬¦  «        } |t          j        g d¢¦  «        |¬¦  «        }|                      ||¦  «         |                      ||¦  «         d } |t          j        g d¢¦  «        |¬¦  «        }|                      ||¦  «         d S )Nc                 ó–   — | j         \  }|€t          j        |¦  «        }n!t          j        d|k    ||k     z  ¦  «        sJ ‚||d d …<   |S rB   )Úshaperv   r†   Úall)ÚxsÚoutÚNs      r6   Úfz1TestSSADeadBranchPrune.test_issue_6541.<locals>.fD  sT   € à”‰BˆAØˆ{Ý”i ‘l”l��å”v˜q Cšx¨C°!ªGÑ4Ñ5Ô5Ð5Ð5Ð5ØˆC���‰FØˆJr8   )r,   r·   r-   r,   Úi8)Údtype)r  r:   )r   rv   rÓ   r†   ÚassertIsÚassertPreciseEqual)r^   r  Úexpectedr  Úgots        r6   Útest_issue_6541z&TestSSADeadBranchPrune.test_issue_6541C  sâ   € Ý	ð	ð 	ð 	ñ 
Œð	ð �1•R”X˜i˜i˜iÑ(Ô(Ñ)Ô)ˆÝŒi˜ Ð&Ñ&Ô&ˆØˆa•”˜˜˜Ñ#Ô#¨Ð-Ñ-Ô-ˆØ�Š�c˜3ÑÔÐØ×Ò  XÑ.Ô.Ð.ØˆØˆa•”˜˜˜Ñ#Ô#¨Ð-Ñ-Ô-ˆØ×Ò  XÑ.Ô.Ð.Ð.Ð.r8   c                 ó"  — t           dd„¦   «         }|                       |dd ¬¦  «        ¦  «         t          dt          j        d¦  «        t          j        d¦  «        ¬¦  «        }|                       |di |¤Ž |j        di |¤Ž¦  «         d S )	Nç        c                 óZ   — |€d S t          |¦  «        dk    r|S | |k    }||         }||z  S rB   )Úlen)ÚsmthÚweightsÚdefaultÚidxs       r6   Úcomputez7TestSSADeadBranchPrune.test_issue_7482.<locals>.computeX  s?   € àˆØ�tå�7‰|Œ|˜qÒ Ð Ø�à˜’.ˆCØ˜c”lˆGà˜WÑ$Ð$r8   r·   )r'  r(  é   )r'  r(  r)  )r$  r.   )r   ÚassertIsNoneÚdictrv   r†   r¿   rÀ   Úpy_func)r^   r+  Úkwargss      r6   Útest_issue_7482z&TestSSADeadBranchPrune.test_issue_7482W  s²   € Ý	ð
	%ð 
	%ð 
	%ñ 
Œð
	%ð 	×Ò˜'˜' q°$Ð7Ñ7Ô7Ñ8Ô8Ð8Ý˜1¥b¤i°¡l¤l½B¼HÀQ¹K¼KÐHÑHÔHˆØ×Ò˜˜Ð*Ð* 6Ð*Ð*Ø(˜œÐ2Ð2¨6Ð2Ð2ñ	4ô 	4ð 	4ð 	4ð 	4r8   c                 óà   — t           dd„¦   «         }g d¢}|D ]#}|                       ||Ž  |j        |Ž ¦  «         Œ$t           fd„}|                       |¦   «          |d„ ¦  «        ¦  «         d S )Nc                 ó,   — |€d}n|| k     r|dz  }| |z   S ©Nr·   r.   )r5   r/   s     r6   r  z3TestSSADeadBranchPrune.test_issue_5661.<locals>.fook  s)   € àˆyØ��Ø�Q’�Ø�Q‘�à�q‘5ˆLr8   ))r·   r-   )r-   r·   )r·   c                 óH   ‡— | d„ ¦   «         Š| ˆfd„¦   «         } |¦   «         S )Nc                 ó   — | €d} n| dz  } | S )Nr   r·   r.   )rò   s    r6   ÚinnerzCTestSSADeadBranchPrune.test_issue_5661.<locals>.make.<locals>.inner  s   € à�=Ø�E�Eà˜Q‘J�EØ�r8   c                  óF   •— d } t          d¦  «        D ]} ‰| ¦  «        } Œ| S )Nr  )rÒ   )rò   rV   r7  s     €r6   Úfnz@TestSSADeadBranchPrune.test_issue_5661.<locals>.make.<locals>.fn‡  s1   ø€ à�Ý˜r™œð )ð )�AØ!˜E %™LœL�E�EØ�r8   r.   )Údecorr9  r7  s     @r6   Úmakez4TestSSADeadBranchPrune.test_issue_5661.<locals>.make~  sN   ø€ Øðð ñ ŒUðð ðð ð ð ñ ŒUðð �2‘4”4ˆKr8   c                 ó   — | S r:   r.   )r3   s    r6   rÑ   z8TestSSADeadBranchPrune.test_issue_5661.<locals>.<lambda>�  s   € °€ r8   r:   )r   rÀ   r/  )r^   r  Ú	args_listrF   r;  s        r6   Útest_issue_5661z&TestSSADeadBranchPrune.test_issue_5661j  s³   € Ý	ð	ð 	ð 	ñ 
Œð	ð
ð 
ð 
ˆ	ð
 ð 	=ð 	=ˆDØ×Ò˜S˜S $˜Z¨¨¬°dÐ);Ñ<Ô<Ð<Ð<õ ð 	ð 	ð 	ð 	ð$ 	×Ò˜˜™œ   k kÑ!2Ô!2Ñ3Ô3Ð3Ð3Ð3r8   c                 ó�   ‡— dŠt           ˆfd„¦   «         }|                       |¦   «         |                     ¦   «         ¦  «         d S )Né    c                  óR   •— ‰dz  } g }| r|                      | ¦  «         | dz  } | °|S ru   ©r¾   )ÚconditionalÚcollectÚCONSTs     €r6   r  z3TestSSADeadBranchPrune.test_issue_9742.<locals>.foo•  sH   ø€ ð   1™*ˆKØˆGØð "Ø—’˜{Ñ+Ô+Ð+Ø Ñ!�ð ð "ð ˆNr8   ©r   rÀ   r/  ©r^   r  rE  s     @r6   Útest_issue_9742z&TestSSADeadBranchPrune.test_issue_9742’  sW   ø€ Øˆå	ð		ð 		ð 		ð 		ñ 
Œð		ð 	×Ò˜˜™œ §¢¡¤Ñ.Ô.Ð.Ð.Ð.r8   c                 ó�   ‡— dŠt           ˆfd„¦   «         }|                       |¦   «         |                     ¦   «         ¦  «         d S )Nr@  c                  óD   •— g } ‰dz   }|r|                       |¦  «         | S r4  rB  )rD  r3   rE  s     €r6   r  z;TestSSADeadBranchPrune.test_issue_9742_variant.<locals>.foo¦  s2   ø€ àˆGð ˜‘	ˆAØð "Ø—’˜qÑ!Ô!Ð!ØˆNr8   rF  rG  s     @r6   Útest_issue_9742_variantz.TestSSADeadBranchPrune.test_issue_9742_variant£  sW   ø€ Øˆå	ð	ð 	ð 	ð 	ñ 
Œð	ð 	×Ò˜˜™œ §¢¡¤Ñ.Ô.Ð.Ð.Ð.r8   N)
rõ   rö   r÷   r  r  r"  r1  r>  rH  rK  r.   r8   r6   r  r  *  sy   € € € € € ðð ð<ð <ð <ð*/ð /ð /ð(4ð 4ð 4ð&&4ð &4ð &4ðP/ð /ð /ð"/ð /ð /ð /ð /r8   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*   Úunittestr7   r=   r@   rI   rX   rZ   r  rõ   Úmainr.   r8   r6   ú<module>rX     sQ  ðð €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø *Ð *Ð *Ð *Ð *Ð *ðIð Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið 9Ð 8Ð 8Ð 8Ð 8Ð 8Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RðJð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð
Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Ð Ð Ð Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ €€€ðð ð ð
ð 
ð 
ð „ðð ñ „ððHð Hð Hðð ð ðl8ð l8ð l8ð l8ð l8�Xñ l8ô l8ð l8ð^F/ð F/ð F/ð F/ð F/˜Xñ F/ô F/ð F/ðR ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr8   