Ë
    èÿæin‘  ã                   ó|  — d dl Z d dlZd dlZd dlmZmZ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 d dlmZ d dlmZ d dlmZmZmZmZ d dlmZmZ d d	lmZm Z m!Z!m"Z"m#Z# d d
lm$Z$m%Z%m&Z& d dl'm(Z( da) e«       Z*de*_+        d„ Z, G d„ dee«      Z- G d„ de-e«      Z. G d„ de-e«      Z/ G d„ dee«      Z0 G d„ de-«      Z1y)é    N)Úrun_frontendÚFlagsÚ	StateDict)ÚjitÚnjitÚliteral_unroll)ÚtypesÚerrorsÚirÚrewritesÚir_utilsÚcpu)Úpostproc)ÚInlineClosureCallPass)ÚTestCaseÚMemoryLeakMixinÚSerialMixinÚIRPreservingTestPipeline)Údead_branch_pruneÚrewrite_semantic_constants)ÚReconstructSSAÚTranslateByteCodeÚIRProcessingÚDeadBranchPruneÚ
PreserveIR)ÚDefaultPassBuilderÚCompilerBaseÚPassManager)Ú	PYVERSIONé{   Tc                 óÌ   — t        | «      }t        «       }||_        d |_        d |_        t        «       j                  |«       t        j                  j                  d|«       |S )Nzbefore-inference)
r   r   Úfunc_irÚtypemapÚ	calltypesr   Úrun_passr   Úrewrite_registryÚapply)Úfuncr"   Ústates      ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_analysis.pyÚcompile_to_irr+      sU   € Ü˜4Ó €GÜ‹K€EØ€E„MØ€E„MØ€E„OäÓ×Ñ˜eÔ$ä×Ñ×#Ñ#Ð$6¸Ô>Ø€Nó    c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚTestBranchPruneBasez
    Tests branch pruning
    Fc                 óÎ   — g }|j                   j                  «       D ]@  }|j                  t        j                  ¬«      D �cg c]  }|‘Œ }}|j                  |«       ŒB |S c c}w )N)Úcls)ÚblocksÚvaluesÚ
find_instsr   ÚBranchÚextend)ÚselfÚthe_irÚbranchesÚblkÚ_Útmps         r*   Úfind_branchesz!TestBranchPruneBase.find_branches/   s[   € ØˆØ—=‘=×'Ñ'Ö)ˆCØ!Ÿn™n´·±˜nÔ;Ó<Ñ;˜’1Ð;ˆCÐ<Ø�O‰O˜CÕ ð *ð ˆùò =s   Á	A"c                 ót  — t        |«      }|j                  «       }| j                  r&t        d«       t        d«       |j	                  «        t        |t        j                  d«      «      }|j                  «        t        j                  |«      }	|	j                  «        t        ||«       | j                  r&t        d«       t        d«       |j	                  «        t        ||«       |}
| j                  rt        d«       |j	                  «        | j                  |«      }| j                  t        |«      t        |«      «       g }t!        |«      D ]�  \  }}||   }|du r|j#                  |j$                  «       Œ+|du r|j#                  |j&                  «       ŒK|€ŒN|dk(  r7|j#                  |j&                  «       |j#                  |j$                  «       ŒŠJ d«       ‚ t)        |j*                  j-                  «       D �cg c]  }|‘Œ c}«      }t)        |
j*                  j-                  «       D �cg c]  }|‘Œ c}«      }	 | j                  ||t)        |«      z
  «       |j3                  dddi«      } t5        |fi |¤Ž|«      j6                  |   }|€|j9                  «       } |«       }n |j8                  |Ž } ||Ž }| j                  ||«       y c c}w c c}w # t.        $ rF}t        d	t1        |«      «       t        d
t1        |«      «       t        dt1        |«      «       |‚d }~ww xY w)NúP================================================================================zbefore inlineFúbefore pruneúafter pruneTÚbothÚunreachableÚ
new_labelsÚoriginal_labelsÚexpect_removedÚflagsÚnopython)r+   ÚcopyÚ_DEBUGÚprintÚdumpr   r   ÚParallelOptionsÚrunr   ÚPostProcessorr   r   r<   ÚassertEqualÚlenÚ	enumerateÚappendÚtruebrÚfalsebrÚsetr1   ÚkeysÚAssertionErrorÚsortedÚpopr   Ú	overloadsÚentry_point)r6   r(   Úargs_tysÚpruneÚargsÚkwargsr"   ÚbeforeÚinline_passÚ	post_procÚafterÚbefore_branchesrE   ÚidxÚbranchr:   rD   rC   ÚeÚsupplied_flagsÚcresÚresÚexpecteds                          r*   Úassert_prunez TestBranchPruneBase.assert_prune6   sÃ  € ô   Ó%ˆØ—‘“ˆØ�;Š;Ü�(ŒOÜ�/Ô"Ø�L‰LŒNô ,¨GÜ,/×,?Ñ,?ÀÓ,FóIˆà�‰Ôô ×*Ñ*¨7Ó3ˆ	Ø�‰Œä" 7¨HÔ5Ø�;Š;Ü�(ŒOÜ�.Ô!Ø�L‰LŒNä˜' 8Ô,àˆØ�;Š;Ü�-Ô Ø�L‰LŒNà×,Ñ,¨VÓ4ˆØ×Ñœ˜_Ó-¬s°5«zÔ:ð ˆÜ# EÖ*‰JˆC�Ø$ SÑ)ˆFØ˜‰}Ø×%Ñ% f§m¡mÕ4Ø˜%‘Ø×%Ñ% f§n¡nÕ5Ø�ØØ˜&’Ø×%Ñ% f§n¡nÔ5Ø×%Ñ% f§m¡mÕ4à'˜-Ó'�qð +ô ¨&¯-©-×*<Ñ*<Ô*>Ó?Ñ*> QšqÐ*>Ñ?Ó@ˆÜ U§\¡\×%6Ñ%6Ô%8Ó9Ñ%8 š!Ð%8Ñ9Ó:ˆ
ð	Ø×Ñ˜Z¨¼3¸~Ó;NÑ)NÔOð  Ÿ™ G¨j¸$Ð-?Ó@ˆà.Œs�8Ñ.˜~Ñ.¨tÓ4×>Ñ>¸xÑHˆØˆ<Ø×"Ñ"Ó$ˆCÙ“v‰Hà"�$×"Ñ" DÐ)ˆCÙ˜T�{ˆHØ×Ñ˜˜hÕ'ùò+ @ùÚ9øô
 ò 	Ü�,¤ zÓ 2Ô3ÜÐ#¤V¨OÓ%<Ô=ÜÐ"¤F¨>Ó$:Ô;ØˆGûð		ús%   È
	KÈ;	K#ÉK( Ë(	L7Ë1AL2Ì2L7N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rI   r<   rl   © r,   r*   r.   r.   (   s   „ ñð €FòóU(r,   r.   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d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestBranchPrunec                 ó\  — d„ }| j                  |t        j                  d«      fdgd «       d„ }| j                  |t        j                  d«      fdgd «       d„ }| j                  |t        j                  d«      fdgd «       | j                  |t        j                  d«      fdgd«       d„ }| j                  |t        j                  d«      fdgd «       | j                  |t        j                  d«      fd gd«       d	„ }| j                  |t        j                  d«      fdgd «       | j                  |t        j                  d«      fd gd«       d
„ }| j                  |t        j                  d«      fdgd «       | j                  |t        j                  d«      fdgd«       y )Nc                 ó   — ddk(  ryy )Né   r   çn†ðù!	@rq   ©Úxs    r*   Úimplz,TestBranchPrune.test_single_if.<locals>.impl’   ó   € Ø�AŠvØð r,   ÚnoneTc                 ó   — ddk(  ryy )Nrv   rw   rq   rx   s    r*   rz   z,TestBranchPrune.test_single_if.<locals>.impl˜   r{   r,   Fc                 ó
   — | €yy ©Nrw   rq   rx   s    r*   rz   z,TestBranchPrune.test_single_if.<locals>.implž   s   € ØˆyØð r,   é
   c                 ó   — | dk(  ryy ©Nr€   rw   rq   rx   s    r*   rz   z,TestBranchPrune.test_single_if.<locals>.impl¥   s   € Ø�BŠwØð r,   c                 ó   — | dk(  rd}y y r‚   rq   )ry   Úzs     r*   rz   z,TestBranchPrune.test_single_if.<locals>.impl¬   s   € Ø�BŠwØ‘ð r,   c                 ó   — d }|}| |k(  ryy )Néd   rq   )ry   r„   Úys      r*   rz   z,TestBranchPrune.test_single_if.<locals>.impl³   s   € ØˆAØˆAØ�AŠvØð r,   ©rl   r	   ÚNoneTypeÚIntegerLiteral©r6   rz   s     r*   Útest_single_ifzTestBranchPrune.test_single_if�   sˆ  € ò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸D¸6À4ÔHò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸E¸7ÀDÔIò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸E¸7ÀDÔIØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸d¸VÀRÔHò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸D¸6À4ÔHØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸d¸VÀRÔHò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸D¸6À4ÔHØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸d¸VÀRÔHò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸E¸7ÀDÔIØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸d¸VÀRÕHr,   c                 ó®   — d„ }| j                  |t        j                  d«      fdgd «       | j                  |t        j                  d«      fdgd«       y )Nc                 ó
   — | €yy©Nrw   çl&ßlsãù?rq   rx   s    r*   rz   z1TestBranchPrune.test_single_if_else.<locals>.impl¾   s   € ØˆyØàr,   r|   Fr€   Trˆ   r‹   s     r*   Útest_single_if_elsez#TestBranchPrune.test_single_if_else¼   sO   € ò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸E¸7ÀDÔIØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸d¸VÀRÕHr,   c                 óX  — d„ }| j                  |t        j                  d«      fdgd «       | j                  |t        j                  d«      fd gd«       d„ }| j                  |t        j                  d«      fdgd «       | j                  |t        j                  d«      fd gd«       y )Nc                 ó   — | dk(  ryy ©Nr†   rw   rq   rx   s    r*   rz   z6TestBranchPrune.test_single_if_const_val.<locals>.implÉ   s   € Ø�CŠxØð r,   r|   Tr†   c                 ó   — d| k(  ryy r”   rq   rx   s    r*   rz   z6TestBranchPrune.test_single_if_const_val.<locals>.implÐ   s   € à�aŠxØð r,   rˆ   r‹   s     r*   Útest_single_if_const_valz(TestBranchPrune.test_single_if_const_valÇ   sœ   € ò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸D¸6À4ÔHØ×Ñ˜$¤×!5Ñ!5°cÓ!:Ð <¸t¸fÀcÔJò	ð
 	×Ñ˜$¤§¡°Ó!7Ð 9¸D¸6À4ÔHØ×Ñ˜$¤×!5Ñ!5°cÓ!:Ð <¸t¸fÀcÕJr,   c                 ó¶  — d„ }| j                  |t        j                  d«      fdz  d gdd«       | j                  |t        j                  d«      fdz  dgd d «       | j                  |t        j                  d«      t        j                  d«      fdgdd «       | j                  |t        j                  d«      t        j                  d«      fd gdd«       y )Nc                 ó   — | |k(  ryyr�   rq   )ry   r‡   s     r*   rz   z?TestBranchPrune.test_single_if_else_two_const_val.<locals>.implÚ   s   € Ø�AŠvØàr,   r†   é   r|   FTéè  )rl   r	   rŠ   r‰   r‹   s     r*   Ú!test_single_if_else_two_const_valz1TestBranchPrune.test_single_if_else_two_const_valØ   sÕ   € ò	ð 	×Ñ˜$¤×!5Ñ!5°cÓ!:Ð <¸qÑ @À4À&È#Øô	à×Ñ˜$¤§¡°Ó!7Ð 9¸AÑ =À¸wÈØô	 à×Ñ˜$¤×!5Ñ!5°cÓ!:Ü!&§¡°Ó!7ð!:Ø<@¸6À3Èô	Nà×Ñ˜$¤×!5Ñ!5°cÓ!:Ü!&×!5Ñ!5°dÓ!;ð!=Ø?C¸fÀcÈ4õ	Qr,   c                 ó`  — d„ }| j                  |t        j                  d«      fdd gd «       | j                  |t        j                  d«      fdd gd«       d„ }| j                  |t        j                  d«      fdd gd «       | j                  |t        j                  d«      fdd gd«       y )Nc                 ó(   — d}| €d}nd}|rd}|S d}|S )NFTé   r€   éýÿÿÿrq   )ry   Úx_is_none_workÚdeadr‡   s       r*   rz   zJTestBranchPrune.test_single_if_else_w_following_undetermined.<locals>.implë   s1   € Ø"ˆNØˆyØ!%‘à�áØ�ð ˆHð �ØˆHr,   r|   Fr€   Tc                 ó&   — d}| €d}n	 |rd}|S d}|S )NFTr€   rŸ   rq   )ry   r    r‡   s      r*   rz   zJTestBranchPrune.test_single_if_else_w_following_undetermined.<locals>.implû   s/   € Ø"ˆNØˆyØ!%‘àáØ�ð ˆHð �ØˆHr,   rˆ   r‹   s     r*   Ú,test_single_if_else_w_following_undeterminedz<TestBranchPrune.test_single_if_else_w_following_undeterminedé   s©   € ò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸EÀ4¸=È$ÔOØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸dÀD¸\È2ÔNò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸EÀ4¸=Øô	 ð 	×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸dÀD¸\È2ÕNr,   c                 ó²   — d„ }| j                  |t        j                  d«      fdd gd «       | j                  |t        j                  d«      fdd gd«       y )Nc                 ó:   — d}d}| €d}nd}||k(  rd}||fS d}||fS )Nr†   é   rž   r€   rŸ   rq   )ry   Úone_hundredr    r¡   r‡   s        r*   rz   z:TestBranchPrune.test_double_if_else_rt_const.<locals>.impl  sG   € ØˆKØˆNØˆyØ!$‘à�à Ò,Ø�ð �nÐ$Ð$ð �à�nÐ$Ð$r,   r|   Fr€   Trˆ   r‹   s     r*   Útest_double_if_else_rt_constz,TestBranchPrune.test_double_if_else_rt_const  sS   € ò	%ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸EÀ4¸=È$ÔOØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸dÀD¸\È2ÕNr,   c                 ó®   — d„ }| j                  |t        j                  d«      fd gd«       | j                  |t        j                  d«      fd gd«       y )Nc                 ó    — d}| |k(  rd}|S d}|S )Nr†   rw   r�   rq   )ry   r§   r‡   s      r*   rz   zCTestBranchPrune.test_double_if_else_non_literal_const.<locals>.impl%  s'   € ØˆKØ�KÒØ�ð ˆHð �ØˆHr,   r€   r†   ©rl   r	   rŠ   r‹   s     r*   Ú%test_double_if_else_non_literal_constz5TestBranchPrune.test_double_if_else_non_literal_const#  sQ   € ò	ð 	×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸d¸VÀRÔHØ×Ñ˜$¤×!5Ñ!5°cÓ!:Ð <¸t¸fÀcÕJr,   c                 ó²   — d„ }| j                  |t        j                  d«      fddgd «       | j                  |t        j                  d«      fddgd«       y )Nc                 ó,   — | €d}nd}| �d}||fS d}||fS ©Nr€   é(   r†   é�  rq   ©ry   r‡   r„   s      r*   rz   z@TestBranchPrune.test_single_two_branches_same_cond.<locals>.impl3  ó6   € ØˆyØ‘à�àˆ}Ø�ð �a�4ˆKð �à�a�4ˆKr,   r|   FTr€   rˆ   r‹   s     r*   Ú"test_single_two_branches_same_condz2TestBranchPrune.test_single_two_branches_same_cond1  sS   € ò	ð 	×Ñ˜$¤§¡°Ó!7Ð 9¸EÀ4¸=È$ÔOØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸dÀE¸]ÈBÕOr,   c                 ó  — dd„}| j                  |t        j                  d «      fddgd «       | j                  |t        j                  d«      fddgd «       | j                  |t        j                  d«      fddgd«       y )Nc                 ó,   — | €d}nd}| �d}||fS d}||fS r¯   rq   r²   s      r*   rz   z5TestBranchPrune.test_cond_is_kwarg_none.<locals>.implE  r³   r,   FTr|   r€   ©N)rl   r	   ÚOmittedr‰   rŠ   r‹   s     r*   Útest_cond_is_kwarg_nonez'TestBranchPrune.test_cond_is_kwarg_noneC  sz   € ó	ð 	×Ñ˜$¤§¡¨tÓ!4Ð 6Ø  $˜-¨ô	/à×Ñ˜$¤§¡°Ó!7Ð 9¸EÀ4¸=È$ÔOØ×Ñ˜$¤×!5Ñ!5°bÓ!9Ð ;¸dÀE¸]ÈBÕOr,   c                 ó\  — dd„}| j                  |t        j                  d«      fd d gd«       | j                  |t        j                  d«      fd d gd«       | j                  |t        j                  d«      fd d gd«       | j                  |t        j                  d«      fddgd «       y )Nrš   c                 ó8   — | dk(  rd}nd}| dk7  rd}||fS d}||fS )Nrš   r€   r°   r†   r±   rq   r²   s      r*   rz   z6TestBranchPrune.test_cond_is_kwarg_value.<locals>.implY  s:   € Ø�DŠyØ‘à�à�DŠyØ�ð �a�4ˆKð �à�a�4ˆKr,   r   r|   TF)rš   )rl   r	   r¸   rŠ   r‰   r‹   s     r*   Útest_cond_is_kwarg_valuez(TestBranchPrune.test_cond_is_kwarg_valueW  s    € ó	ð 	×Ñ˜$¤§¡¨tÓ!4Ð 6¸¸t¸ÀdÔKØ×Ñ˜$¤×!5Ñ!5°dÓ!;Ð =ÀÀd¸|Øô	 à×Ñ˜$¤×!5Ñ!5°aÓ!8Ð :¸TÀ4¸LÈ!ÔLØ×Ñ˜$¤§¡°Ó!7Ð 9¸DÀ%¸=È$ÕOr,   c                 óŽ   ‡ — d„ }ˆ fd„} ||t        j                  d«      fd«        ||t        j                  d«      fd«       y )Nc                 ó
   — | €yy)Nr€   é   rq   rx   s    r*   Úfnz8TestBranchPrune.test_cond_rewrite_is_correct.<locals>.fno  s   € ØˆyØØr,   c                 ó  •— t        | «      }‰
j                  |«      }‰
j                  t        |«      d«       |d   j                  }t        j                  ||«      }‰
j                  |j                  d«       |j                  d   }t        j                  ||«      }‰
j                  |j                  d«       ‰
j                  r&t        d«       t        d«       |j                  «        t        ||«       ‰
j                  r&t        d«       t        d«       |j                  «        t        j                  ||«      }	‰
j                  t        |	t        j                   «      «       ‰
j                  |	j"                  |«       y )Nrv   r   ÚcallÚbinopr>   r?   r@   )r+   r<   rO   rP   Úcondr   Úget_definitionÚopr^   rI   rJ   rK   r   Ú
assertTrueÚ
isinstancer   ÚConstÚvalue)r(   Úarg_tysÚbit_valr"   rd   Úpred_varÚ	pred_defnÚcondition_varÚcondition_opÚnew_condition_defnr6   s             €r*   Úcheckz;TestBranchPrune.test_cond_rewrite_is_correct.<locals>.checkt  s.  ø€ Ü# DÓ)ˆGð #×0Ñ0°Ó9ˆOØ×ÑœS Ó1°1Ô5ð ' qÑ)×.Ñ.ˆHÜ ×/Ñ/°¸ÓBˆIØ×Ñ˜YŸ\™\¨6Ô2Ø%ŸN™N¨1Ñ-ˆMÜ#×2Ñ2°7¸MÓJˆLØ×Ñ˜\Ÿ_™_¨gÔ6ð �{Š{Ü�h”Ü�nÔ%Ø—‘”Ü˜g wÔ/Ø�{Š{Ü�h”Ü�mÔ$Ø—‘”ô "*×!8Ñ!8¸À-Ó!PÐØ�O‰OœJÐ'9¼2¿8¹8ÓDÔEØ×ÑÐ/×5Ñ5°wÕ?r,   r|   rv   r€   r   )r	   r‰   rŠ   )r6   rÀ   rÒ   s   `  r*   Útest_cond_rewrite_is_correctz,TestBranchPrune.test_cond_rewrite_is_correctl  sC   ø€ ò	ô
	@ñ@ 	ˆb”5—>‘> &Ó)Ð+¨QÔ/Ùˆb”5×'Ñ'¨Ó+Ð-¨qÕ1r,   c                 óØ   — d„ }| j                  |t        j                  d«      fdgd«       t        }	 dad„ }| j                  |t        j                  d«      fdgd«       |ay # |aw xY w)Nc                 ó"   — t         dk(  r| S | dz   S ©Nr    r€   ©Ú_GLOBALrx   s    r*   rz   z1TestBranchPrune.test_global_bake_in.<locals>.impl™  s   € Ü˜#Š~Ø�à˜2‘v�r,   rv   Fé   c                 ó"   — t         dk(  r| S | dz   S rÖ   r×   rx   s    r*   rz   z1TestBranchPrune.test_global_bake_in.<locals>.impl§  s   € Ü˜c’>Ø�Hà˜r™6�Mr,   T)rl   r	   rŠ   rØ   )r6   rz   r;   s      r*   Útest_global_bake_inz#TestBranchPrune.test_global_bake_in—  st   € ò	ð 	×Ñ˜$¤×!5Ñ!5°aÓ!8Ð :¸U¸GÀQÔGô ˆð	ØˆGò"ð ×Ñ˜d¤U×%9Ñ%9¸!Ó%<Ð$>ÀÀÈÔJà‰Gø�c‰Gús   ´.A% Á%A)c                 óÆ   ‡— dŠˆfd„}| j                  |t        j                  d«      fdgd«       dŠˆfd„}| j                  |t        j                  d«      fdgd«       y )Nr    c                 ó   •— ‰dk(  r| S | dz   S rÖ   rq   ©ry   Ú_FREEVARs    €r*   rz   z2TestBranchPrune.test_freevar_bake_in.<locals>.implµ  ó   ø€ Ø˜3ŠØ�à˜2‘v�r,   rv   Fr¿   c                 ó   •— ‰dk(  r| S | dz   S rÖ   rq   rÞ   s    €r*   rz   z2TestBranchPrune.test_freevar_bake_in.<locals>.impl¿  rà   r,   Tr«   )r6   rz   rß   s     @r*   Útest_freevar_bake_inz$TestBranchPrune.test_freevar_bake_in±  sc   ø€ àˆô	ð 	×Ñ˜$¤×!5Ñ!5°aÓ!8Ð :¸U¸GÀQÔGàˆô	ð 	×Ñ˜$¤×!5Ñ!5°aÓ!8Ð :¸T¸FÀAÕFr,   c                 óÐ   — dd„}| j                  |t        j                  t        j                  dd«      t        j                  d«      fd d gt        j                  d«      d «       y )Nc                 ó   — |€d}|dk  ryy)Nr   r€   é   rq   )ÚarrayÚas     r*   rz   zRTestBranchPrune.test_redefined_variables_are_not_considered_in_prune.<locals>.implË  s   € ØˆyØ�Ø�1ŠuØØr,   r™   ÚCr|   ©r™   é   r·   ©rl   r	   ÚArrayÚfloat64r‰   ÚnpÚzerosr‹   s     r*   Ú4test_redefined_variables_are_not_considered_in_prunezDTestBranchPrune.test_redefined_variables_are_not_considered_in_pruneÇ  sS   € ó	ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ>™>¨&Ó1ð4à ˜,ÜŸ(™( 6Ó*¨Dõ		2r,   c                 óŠ  — d	d„}| j                  |t        j                  t        j                  dd«      t        j                  d«      fddgt        j                  d«      d «       | j                  |t        j                  t        j                  dd«      t        j                  fd d gt        j                  d«      d«       y )
Nc                 ó   — d}|€y|dk  ry|S ©Nr   r€   é   rq   )ræ   rç   ry   s      r*   rz   z7TestBranchPrune.test_comparison_operators.<locals>.implÝ  s    € ØˆAØˆyØð �1ŠuØØˆHr,   r™   rè   r|   FrA   ré   g      (@r·   rë   r‹   s     r*   Útest_comparison_operatorsz)TestBranchPrune.test_comparison_operatorsØ  sš   € ó
	ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ>™>¨&Ó1ð4à  &˜/ÜŸ(™( 6Ó*¨Dô		2ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ=™=ð+à ˜,ÜŸ(™( 6Ó*¨Cõ		1r,   c                 óð   — dd„}| j                  |t        j                  t        j                  dd«      t        j                  t        j                  d«      fg d¢t        j                  d«      dd «       y )	Nc                 ó>   — d}|dk  rd}|€d}nd}|dk  ryd|z   |z   S )	Nr™   r¦   r¿   rž   é   r   r€   rå   rq   ©ræ   ry   rç   Úbs       r*   rz   zCTestBranchPrune.test_redefinition_analysis_same_block.<locals>.impl÷  s:   € ØˆAØ�1ŠuØ�ØˆyØ‘à�Ø�1ŠuØØ˜‘6˜A‘:Ðr,   r™   rè   r|   )NFNré   ç      ð?r·   rë   r‹   s     r*   Ú%test_redefinition_analysis_same_blockz5TestBranchPrune.test_redefinition_analysis_same_blockó  sX   € ó
	ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ=™=¬%¯.©.¸Ó*@ðCâ-ÜŸ(™( 6Ó*¨B°õ		6r,   c                 óð   — dd„}| j                  |t        j                  t        j                  dd«      t        j                  t        j                  d«      fg d¢t        j                  d«      dd «       y )	Nc                 óZ   — d}|dkD  rd}|dk  rd}|€
|dz  }d|z   S |dz  }|dk  ryd|z   S )	Nr   rÙ   é   r¦   r¿   rž   r€   rå   rq   rù   s       r*   rz   zQTestBranchPrune.test_redefinition_analysis_different_block_can_exec.<locals>.impl  sV   € ØˆAØ�1ŠuØ�Ø�1ŠuØ�ØˆyØ�Q‘�ð
 ˜‘6ˆMð �Q‘�Ø�q’5ØØ˜‘6ˆMr,   r™   rè   r|   )NNNNré   rû   r·   rë   r‹   s     r*   Ú3test_redefinition_analysis_different_block_can_execzCTestBranchPrune.test_redefinition_analysis_different_block_can_exec	  sX   € ó	ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ=™=¬%¯.©.¸Ó*@ðCâ2ÜŸ(™( 6Ó*¨B°õ		6r,   c                 óÂ  — dd„}| j                  |t        j                  t        j                  dd«      t        j                  d«      t        j                  d«      fdd gt        j                  d«      d d «       | j                  |t        j                  t        j                  dd«      t        j                  d«      t        j                  fdd gt        j                  d«      d d«       | j                  |t        j                  t        j                  dd«      t        j                  t        j                  d«      fd d gt        j                  d«      dd «       y )	Nc                 ó:   — d}|�d}|€
|dz  }d|z   S |dz  }d|z   S )Nr   rÿ   rÙ   rž   rå   rq   rù   s       r*   rz   zTTestBranchPrune.test_redefinition_analysis_different_block_cannot_exec.<locals>.impl%  s>   € ØˆAØˆ}Ø�ØˆyØ�Q‘�ð ˜‘6ˆMð �Q‘�Ø˜‘6ˆMr,   r™   rè   r|   Tré   g333333ó?©NNrë   r‹   s     r*   Ú6test_redefinition_analysis_different_block_cannot_execzFTestBranchPrune.test_redefinition_analysis_different_block_cannot_exec!  s  € ó	ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ>™>¨&Ó1´5·>±>À&Ó3IðKà ˜,ÜŸ(™( 6Ó*¨D°$ô		8ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ>™>¨&Ó1´5·=±=ðBà ˜,ÜŸ(™( 6Ó*¨D°#ô		7ð 	×Ñ˜$Ü Ÿ;™;¤u§}¡}°a¸Ó=Ü Ÿ=™=¬%¯.©.¸Ó*@ðBà ˜,ÜŸ(™( 6Ó*¨C°õ		7r,   c                 ó2   — d„ }| j                  |ddg«       y )Nc                  ó.   ‡— dŠˆfd„}  | «        ‰dk(  ryy)Nrš   c                  ó
   •— dŠ y ©Nr   rq   rx   s   €r*   ÚclosurezRTestBranchPrune.test_closure_and_nonlocal_can_prune.<locals>.impl.<locals>.closureG  ó   ø€ à‘r,   r   TFrq   )r	  ry   s    @r*   rz   zATestBranchPrune.test_closure_and_nonlocal_can_prune.<locals>.implD  s!   ø€ ØˆAôñ ŒIà�AŠvØàr,   rq   F)rl   r‹   s     r*   Ú#test_closure_and_nonlocal_can_prunez3TestBranchPrune.test_closure_and_nonlocal_can_pruneA  s   € ò	ð 	×Ñ˜$  U HÕ.r,   c                 óR   — d„ }| j                  |t        j                  fd gd«       y )Nc                 ó0   ‡— dŠˆfd„} || «       ‰dk(  ryy)Nrš   c                 ó
   •— | Šy r·   rq   )Útry   s    €r*   r	  zUTestBranchPrune.test_closure_and_nonlocal_cannot_prune.<locals>.impl.<locals>.closureZ  r
  r,   r   TFrq   )Únr	  ry   s     @r*   rz   zDTestBranchPrune.test_closure_and_nonlocal_cannot_prune.<locals>.implW  s#   ø€ ØˆAôñ �AŒJà�AŠvØàr,   rv   )rl   r	   Úint64r‹   s     r*   Ú&test_closure_and_nonlocal_cannot_prunez6TestBranchPrune.test_closure_and_nonlocal_cannot_pruneT  s%   € ò	ð 	×Ñ˜$¤§¡ °°¸Õ;r,   N)rm   rn   ro   rŒ   r‘   r–   r›   r£   r¨   r¬   r´   r¹   r¼   rÓ   rÛ   râ   rð   rõ   rü   r   r  r  r  rq   r,   r*   rs   rs   Ž   su   „ ò*IòX	IòKò"Qò"$OòLOò(KòPò$Pò(Pò*)2òVò4Gò,2ò"1ò66ò,6ò07ò@/ó&<r,   rs   c                   ón   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestBranchPrunePredicates)rv   ÚStringTgš™™™™™@y              @)r   Ú Fg        y                Nc                 ó†  — |j                   }t        |j                  «      D ��ci c]  \  }}||“Œ
 }}}|j                  «       D ]
  \  }}|||<   Œ t	        t        |j                  «       «      D ��cg c]  \  }}|‘Œ	 c}}«      }|j                  |¬«      }	t        j                  |	t        «       «      S c c}}w c c}}w )aK  
        This takes a python function, pyfunc, and manipulates its co_const
        __code__ member to create a new function with different co_consts as
        supplied in argument consts.

        consts is a dict {index: value} of co_const tuple index to constant
        value used to update a pyfunc clone's co_const.
        )Ú	co_consts)
Ú__code__rQ   r  ÚitemsÚtuplerX   ÚreplaceÚpytypesÚFunctionTypeÚglobals)
r6   ÚpyfuncÚconstsÚpyfunc_codeÚkÚvr  r:   Ú
new_constsÚnew_codes
             r*   Ú_literal_const_sample_generatorz9TestBranchPrunePredicates._literal_const_sample_generatorq  s¸   € ð —o‘oˆô '0°×0EÑ0EÔ&FÔGÑ&F™d˜a �Q˜‘TÐ&Fˆ	ÑGØ—L‘L–N‰DˆAˆqØˆI�aŠLð #ä¬&°·±Ó1BÔ*CÔDÑ*C¡$ ! QšAÐ*CÒDÓEˆ
ð ×&Ñ&°Ð&Ó<ˆô ×#Ñ# H¬g«iÓ8Ð8ùó Hùó Es   ¥B7Á3B=
c                 ó*  — d„ }t         dv r| j                  |dddœ«      }n-t         dv r| j                  |dddœ«      }nt        t         «      ‚|j                  j                  }|j                  j                  }t         dv r%| j                  |d«       | j                  |d	«       n<t         dv r%| j                  |d
«       | j                  |d«       nt        t         «      ‚| j                   |d «      d«       | j                   |d «      d«       y )Nc                 ó   — d}|ryd}|dz   S ©NÚPLACEHOLDER1rw   ÚPLACEHOLDER2r¦   rq   )ry   Ú_CONST1Ú_CONST2s      r*   rz   zCTestBranchPrunePredicates.test_literal_const_code_gen.<locals>.impl‰  s   € Ø$ˆGÙØà(�Ø˜Q‘;Ðr,   ©)rê   é   r   rô   )r   r™   ©)rê   r€   )rê   rÿ   )rê   r¿   )rê   é   )rv   rê   )r+  rw   r,  )r   rw   rô   r*  )Nr   rw   rô   r¦   rw   é   )r   r'  ÚNotImplementedErrorr  r  rO   )r6   rz   ÚnewÚiconstÚnconsts        r*   Útest_literal_const_code_genz5TestBranchPrunePredicates.test_literal_const_code_genˆ  sÿ   € ò	ô ˜Ñ#à×6Ñ6°tÀÀR¹[ÓI‰CÜÐ>Ñ>Ø×6Ñ6°tÀÀR¹[ÓI‰Cä%¤iÓ0Ð0à—‘×(Ñ(ˆØ—‘×'Ñ'ˆä˜Ñ#Ø×Ñ˜Vð &6ô 7à×Ñ˜VÐ%6Õ7ÜÐ>Ñ>Ø×Ñ˜Vð &9ô :à×Ñ˜VÐ%?Õ@ä%¤iÓ0Ð0à×Ñ™˜d› WÔ-Ø×Ñ™˜T› BÕ'r,   c                 óD  — d„ }| j                   df| j                  dffD ]~  \  }}|D ]t  }t        dv r| j                  |d|i«      }n,t        dv r| j                  |d|i«      }nt	        t        «      ‚| j                  |t        j                  d«      f|gd «       Œv Œ€ y )	Nc                 ó   — d}|ryy ©Nr+  rw   rq   ©ry   r-  s     r*   rz   z<TestBranchPrunePredicates.test_single_if_const.<locals>.impl¬  s   € Ø$ˆGÙØð r,   FTr/  r   r1  rv   r|   ©Ú_TRUTHYÚ_FALSEYr   r'  r4  rl   r	   r‰   ©r6   rz   Úc_inpr]   Úconstr(   s         r*   Útest_single_if_constz.TestBranchPrunePredicates.test_single_if_constª  ó°   € ò	ð
 "Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�ä Ñ+à×?Ñ?ÀØABÀEÀ
óL‘DäÐ"FÑFØ×?Ñ?ÀØABÀEÀ
óL‘Dô .¬iÓ8Ð8à×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 óD  — d„ }| j                   df| j                  dffD ]~  \  }}|D ]t  }t        dv r| j                  |d|i«      }n,t        dv r| j                  |d|i«      }nt	        t        «      ‚| j                  |t        j                  d«      f|gd «       Œv Œ€ y )	Nc                 ó   — d}|syy r;  rq   r<  s     r*   rz   zCTestBranchPrunePredicates.test_single_if_negate_const.<locals>.implÃ  s   € Ø$ˆGÙØð r,   FTr/  r   r1  rv   r|   r=  r@  s         r*   Útest_single_if_negate_constz5TestBranchPrunePredicates.test_single_if_negate_constÁ  rD  r,   c                 óD  — d„ }| j                   df| j                  dffD ]~  \  }}|D ]t  }t        dv r| j                  |d|i«      }n,t        dv r| j                  |d|i«      }nt	        t        «      ‚| j                  |t        j                  d«      f|gd «       Œv Œ€ y )	Nc                 ó   — d}|ryy©Nr+  rw   r�   rq   r<  s     r*   rz   zATestBranchPrunePredicates.test_single_if_else_const.<locals>.implÚ  s   € Ø$ˆGÙØàr,   FTr/  r   r1  rv   r|   r=  r@  s         r*   Útest_single_if_else_constz3TestBranchPrunePredicates.test_single_if_else_constØ  ó°   € ò	ð "Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�ä Ñ+à×?Ñ?ÀØABÀEÀ
óL‘DäÐ"FÑFØ×?Ñ?ÀØABÀEÀ
óL‘Dô .¬iÓ8Ð8à×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 óD  — d„ }| j                   df| j                  dffD ]~  \  }}|D ]t  }t        dv r| j                  |d|i«      }n,t        dv r| j                  |d|i«      }nt	        t        «      ‚| j                  |t        j                  d«      f|gd «       Œv Œ€ y )	Nc                 ó   — d}|syyrJ  rq   r<  s     r*   rz   zHTestBranchPrunePredicates.test_single_if_else_negate_const.<locals>.impló  s   € Ø$ˆGÙØàr,   FTr/  r   r1  rv   r|   r=  r@  s         r*   Ú test_single_if_else_negate_constz:TestBranchPrunePredicates.test_single_if_else_negate_constñ  rL  r,   c                 ó¸   ‡— | j                   df| j                  dffD ]:  \  }}|D ]0  Šˆfd„}| j                  |t        j                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó   •— ‰rd‰fS y r   rq   ©ry   rB  s    €r*   r(   z>TestBranchPrunePredicates.test_single_if_freevar.<locals>.func  s   ø€ ÙØ&¨˜~Ð-ð r,   r|   ©r>  r?  rl   r	   r‰   ©r6   rA  r]   r(   rB  s       @r*   Útest_single_if_freevarz0TestBranchPrunePredicates.test_single_if_freevar
  ó_   ø€ Ø!Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�ô.ð ×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 ó¸   ‡— | j                   df| j                  dffD ]:  \  }}|D ]0  Šˆfd„}| j                  |t        j                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó   •— ‰sd‰fS y r   rq   rR  s    €r*   r(   zETestBranchPrunePredicates.test_single_if_negate_freevar.<locals>.func  s   ø€ Ù Ø&¨˜~Ð-ð !r,   r|   rS  rT  s       @r*   Útest_single_if_negate_freevarz7TestBranchPrunePredicates.test_single_if_negate_freevar  rV  r,   c                 ó¸   ‡— | j                   df| j                  dffD ]:  \  }}|D ]0  Šˆfd„}| j                  |t        j                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó   •— ‰rd‰fS d‰fS r�   rq   rR  s    €r*   r(   zCTestBranchPrunePredicates.test_single_if_else_freevar.<locals>.func"  s   ø€ ÙØ&¨˜~Ð-à&¨˜~Ð-r,   r|   rS  rT  s       @r*   Útest_single_if_else_freevarz5TestBranchPrunePredicates.test_single_if_else_freevar  ó_   ø€ Ø!Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�ô.ð
 ×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 ó¸   ‡— | j                   df| j                  dffD ]:  \  }}|D ]0  Šˆfd„}| j                  |t        j                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó   •— ‰sd‰fS d‰fS r�   rq   rR  s    €r*   r(   zJTestBranchPrunePredicates.test_single_if_else_negate_freevar.<locals>.func.  s   ø€ Ù Ø&¨˜~Ð-à&¨˜~Ð-r,   r|   rS  rT  s       @r*   Ú"test_single_if_else_negate_freevarz<TestBranchPrunePredicates.test_single_if_else_negate_freevar*  r]  r,   c                 ó¶   — | j                   df| j                  dffD ]:  \  }}|D ]0  }|ad„ }| j                  |t	        j
                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó    — t         rdt         fS y r   )Úc_test_single_if_globalrx   s    r*   r(   z=TestBranchPrunePredicates.test_single_if_global.<locals>.func?  s   € Ý.Ø&Ô(?Ð?Ð?ð /r,   r|   )r>  r?  rc  rl   r	   r‰   ©r6   rA  r]   Úcr(   s        r*   Útest_single_if_globalz/TestBranchPrunePredicates.test_single_if_global8  sg   € ð "Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�Ø*+Ð'ò@ð ×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 ó¶   — | j                   df| j                  dffD ]:  \  }}|D ]0  }|ad„ }| j                  |t	        j
                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó    — t         rdt         fS y r   )Úc_test_single_if_negate_globalrx   s    r*   r(   zDTestBranchPrunePredicates.test_single_if_negate_global.<locals>.funcM  s   € Ý5Ø&Ô(FÐFÐFð 6r,   r|   )r>  r?  ri  rl   r	   r‰   rd  s        r*   Útest_single_if_negate_globalz6TestBranchPrunePredicates.test_single_if_negate_globalF  sg   € ð "Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�Ø12Ð.òGð ×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 ó¶   — | j                   df| j                  dffD ]:  \  }}|D ]0  }|ad„ }| j                  |t	        j
                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó.   — t         rdt         fS dt         fS r�   )Úc_test_single_if_else_globalrx   s    r*   r(   zBTestBranchPrunePredicates.test_single_if_else_global.<locals>.func[  s   € Ý3Ø&Ô(DÐDÐDà&Ô(DÐDÐDr,   r|   )r>  r?  rm  rl   r	   r‰   rd  s        r*   Útest_single_if_else_globalz4TestBranchPrunePredicates.test_single_if_else_globalT  sg   € ð "Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�Ø/0Ð,òEð
 ×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 ó¶   — | j                   df| j                  dffD ]:  \  }}|D ]0  }|ad„ }| j                  |t	        j
                  d«      f|gd «       Œ2 Œ< y )NFTc                 ó.   — t         sdt         fS dt         fS r�   )Ú#c_test_single_if_else_negate_globalrx   s    r*   r(   zITestBranchPrunePredicates.test_single_if_else_negate_global.<locals>.funcj  s   € Ý>Ø&Ô(KÐKÐKà&Ô(KÐKÐKr,   r|   )r>  r?  rq  rl   r	   r‰   rd  s        r*   Ú!test_single_if_else_negate_globalz;TestBranchPrunePredicates.test_single_if_else_negate_globalc  sg   € ð "Ÿ\™\¨5Ð1°D·L±LÀ$Ð3GÓG‰LˆE�5Û�Ø67Ð3òLð
 ×!Ñ! $¬¯©¸Ó)?Ð(AÀEÀ7Ø"&õ(ñ ñ Hr,   c                 ó–   — t         d„ «       }| j                  |j                  «       d   d«       | j                   |«       d   d«       y )Nc                  óB   — t        j                  d«      } d}|r|| d<   | S )Nrv   iš  r   )rî   rï   )r2   r;   s     r*   Úfooz6TestBranchPrunePredicates.test_issue_5618.<locals>.foot  s%   € ä—X‘X˜a“[ˆFØˆCÙØ��q‘	ØˆMr,   r   g     Ð„@)r   ÚassertPreciseEqualÚpy_func)r6   ru  s     r*   Útest_issue_5618z)TestBranchPrunePredicates.test_issue_5618r  sG   € ä	ñ	ó 
ð	ð 	×Ñ §¡£¨aÑ 0°$Ô7Ø×Ñ¡£ a¡¨$Õ/r,   N)rm   rn   ro   r>  r?  r'  r8  rC  rG  rK  rO  rU  rY  r\  r`  rf  rj  rn  rr  rx  rq   r,   r*   r  r  h  sZ   „ ð +€GØ+€Gò9ò. (òD(ò.(ò.(ò2(ò2(ò(ò
(ò
(ò(ò(ò(ò(ó0r,   r  c                   ó.   — e Zd Z G d„ de«      Zd„ Zd„ Zy)ÚTestBranchPruneSSAc                   ó   — e Zd Zd„ Zy)ú$TestBranchPruneSSA.SSAPrunerCompilerc                 ó&  — t        d«      }|j                  t        d«       |j                  t        d«       |j                  t        d«       |j                  t
        d«       |j                  t        d«       t        }|j                  | j                  «      }|j                  j                  |j                  «       |j                  | j                  «      }|j                  j                  |j                  «       |j                  «        |gS )Nz
testing pmzanalyzing bytecodezprocessing IRÚssazdead branch pruningzpreserves the IR as metadata)r   Úadd_passr   r   r   r   r   r   Údefine_typed_pipeliner)   Úpassesr5   Ú!define_nopython_lowering_pipelineÚfinalize)r6   ÚpmÚdpbÚtyped_passesÚlowering_passess        r*   Údefine_pipelinesz5TestBranchPruneSSA.SSAPrunerCompiler.define_pipelines„  sÅ   € ô ˜\Ó*ˆBØ�K‰KÔ)Ð+?Ô@Ø�K‰Kœ oÔ6à�K‰Kœ¨Ô.Ø�K‰KœÐ)>Ô?à�K‰Kœ
Ð$BÔCÜ$ˆCØ×4Ñ4°T·Z±ZÓ@ˆLØ�I‰I×Ñ˜\×0Ñ0Ô1Ø!×CÑCÀDÇJÁJÓOˆOØ�I‰I×Ñ˜_×3Ñ3Ô4Ø�K‰KŒMØ�4ˆKr,   N)rm   rn   ro   rˆ  rq   r,   r*   ÚSSAPrunerCompilerr|  ƒ  s   „ ó	r,   r‰  c                 óˆ   — t        | j                  ¬«      dd„«       }| j                   |«       |j                  «       «       y )N©Úpipeline_classc                 ó&   — d}d}| €d}|r|�d}||fS )Nrv   FTrô   rq   )ÚpÚqr„   Úrs       r*   rz   z4TestBranchPruneSSA.test_ssa_update_phi.<locals>.impl›  s-   € àˆAØˆAØˆyØ�á�Q�]Ø�ð
 �a�4ˆKr,   r  )r   r‰  rv  rw  r‹   s     r*   Útest_ssa_update_phiz&TestBranchPruneSSA.test_ssa_update_phi—  s;   € ô 
˜T×3Ñ3Ô	4ò	ó 
5ð	ð 	×Ñ¡£¨¯©«Õ7r,   c                 ó\  — t        | j                  ¬«      dd„«       }| j                   |«       |j                  «       «       |j                  |j
                  d      j                  d   }|j                  j                  «       D ]$  }| j                  g |j                  d«      ¢«       Œ& y )Nr‹  c                 ó   — d}| €d}|S d}|S ró   rq   )rŽ  r„   s     r*   rz   z5TestBranchPruneSSA.test_ssa_replace_phi.<locals>.impl°  s$   € àˆAØˆyØ�ð ˆHð �àˆHr,   r   Úpreserved_irÚphir·   )r   r‰  rv  rw  rZ   Ú
signaturesÚmetadatar1   r2   ÚassertFalseÚ
find_exprs)r6   rz   r"   r9   s       r*   Útest_ssa_replace_phiz'TestBranchPruneSSA.test_ssa_replace_phi¬  s“   € ô 
˜T×3Ñ3Ô	4ò	ó 
5ð	ð 	×Ñ¡£¨¯©«Ô7Ø—.‘. §¡°Ñ!3Ñ4×=Ñ=¸nÑMˆð —>‘>×(Ñ(Ö*ˆCØ×ÑÐ5˜sŸ~™~¨eÓ4Ð5Õ6ñ +r,   N)rm   rn   ro   r   r‰  r‘  rš  rq   r,   r*   rz  rz  €  s   „ ô˜Lô ò(8ó*7r,   rz  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú(TestBranchPrunePostSemanticConstRewritesc                 ó>  — d„ }| j                  |t        j                  t        j                  dd«      fdd gt	        j
                  d«      «       | j                  |t        j                  t        j                  dd«      fddgt	        j
                  d	«      «       y )
Nc                 óJ   — | j                   dk(  r| j                  d   dk(  ryy y)Nr™   rv   r€   )ÚndimÚshape)ræ   s    r*   rz   zKTestBranchPrunePostSemanticConstRewrites.test_array_ndim_attr.<locals>.implÇ  s*   € Ø�z‰z˜QŠØ—;‘;˜q‘> QÒ&Øð 'ð r,   r™   rè   Fré   rv   TrA   )r™   )rl   r	   rì   rí   rî   rï   r‹   s     r*   Útest_array_ndim_attrz=TestBranchPrunePostSemanticConstRewrites.test_array_ndim_attrÅ  s†   € ò	ð 	×Ñ˜$¤§¡¬U¯]©]¸A¸sÓ!CÐ EÈØHLðHNäŸ(™( 6Ó*ô	,ð 	×Ñ˜$¤§¡¬U¯]©]¸A¸sÓ!CÐ EÈØHNðHPäŸ(™( 4›.õ	*r,   c           	      ó  — d„ }| j                  |t        j                  t        j                  d«      fdd gt	        g d¢«      «       | j                  |t        j                  t        j                  d«      fddgt	        ddg«      «       y )	Nc                 ó4   — t        | «      dk(  r
| d   dk(  ryy y)Nrê   r™   rv   r   )rP   )Útups    r*   rz   zETestBranchPrunePostSemanticConstRewrites.test_tuple_len.<locals>.impl×  s%   € Ü�3‹x˜1Š}Ø�q‘6˜Q’;Øð ð r,   rê   F©rv   r™   rê   r™   TrA   rv   )rl   r	   ÚUniTupler  r  r‹   s     r*   Útest_tuple_lenz7TestBranchPrunePostSemanticConstRewrites.test_tuple_lenÕ  s~   € ò	ð 	×Ñ˜$¤§¡´·±¸QÓ!?Ð AÀEØDHðDJä¢	Ó*ô	,ð 	×Ñ˜$¤§¡´·±¸QÓ!?Ð AÀDØDJðDLä  A ›-õ	)r,   c                 óÜ   — t         d„ «       }| j                  t        j                  «      5 } |«        d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nc                  ó.   — t         j                  d«       y )Ng®Gáz®ó?)ÚfloatÚas_integer_ratiorq   r,   r*   ÚtestzHTestBranchPrunePostSemanticConstRewrites.test_attr_not_len.<locals>.testë  s   € ä×"Ñ" 4Õ(r,   z$Unknown attribute 'as_integer_ratio')r   ÚassertRaisesr
   ÚTypingErrorÚassertInÚstrÚ	exception)r6   r¬  rg   s      r*   Útest_attr_not_lenz:TestBranchPrunePostSemanticConstRewrites.test_attr_not_lenå  s[   € ô 
ñ	)ó 
ð	)ð ×Ñœv×1Ñ1Ô2°aÙŒF÷ 3ð 	�‰Ð<¼cÀ!Ç+Á+Ó>NÕO÷ 3Ð2ús   ¬A"Á"A+c           	      ób  — t        j                  ddg«      } |d¬«      }d„ }| j                  |t        j                  t        j
                  dd«      fdgt        j                  d«      «       t        j                  t        j                  d	|«      }| j                  ||fd g|dd
dœ¬«       y )NÚ	FakeArrayrŸ  r™   )rŸ  c                 óN   — | j                   dk(  r| j                   S t        «        y )Nr™   )rŸ  Úobject)Úfas    r*   rz   zMTestBranchPrunePostSemanticConstRewrites.test_ndim_not_on_array.<locals>.implú  s   € Ø�w‰w˜!Š|Ø—w‘w�ä•r,   rè   Fré   rv   T)rG   Úforceobj)rF   )
ÚcollectionsÚ
namedtuplerl   r	   rì   rí   rî   rï   ÚNamedUniTupler  )r6   r´  r·  rz   ÚFakeArrayTypes        r*   Útest_ndim_not_on_arrayz?TestBranchPrunePostSemanticConstRewrites.test_ndim_not_on_arrayõ  s    € ä×*Ñ*¨;¸¸ÓAˆ	Ù˜AÔˆò	ð 	×Ñ˜$¤§¡¬U¯]©]¸A¸sÓ!CÐ EÈÀwÜŸ(™( 6Ó*ô	,ô ×+Ñ+¬E¯K©K¸¸IÓFˆØ×Ñ˜$ Ð 0°4°&¸"Ø,1¸dÑ Cð 	õ 	Er,   c                 ó´   — t         d„ «       }t        j                  d«      t        j                  d«      f}| j                   ||Ž  |j                  |Ž «       y )Nc                 ó4   — | j                   d |j                   S r·   )r   rŸ  )rç   rú   s     r*   rz   zlTestBranchPrunePostSemanticConstRewrites.test_semantic_const_propagates_before_static_rewrites.<locals>.impl  s   € à—7‘7˜7˜AŸF™FÐ#Ð#r,   )rÙ   r¦   rê   r™   )rv   rv   )r   rî   rï   rv  rw  )r6   rz   r^   s      r*   Ú5test_semantic_const_propagates_before_static_rewritesz^TestBranchPrunePostSemanticConstRewrites.test_semantic_const_propagates_before_static_rewrites	  sS   € ô 
ñ	$ó 
ð	$ô —‘˜Ó&¬¯©°Ó(8Ð9ˆà×Ñ¡ d ¨\¨T¯\©\¸4Ð-@ÕAr,   c           	      ó�  — t        t        ¬«      d„ «       }d}| j                   ||Ž  |j                  |Ž «       |j                  |j
                  d      }|j                  d   }t        «       }|j                  j                  «       D ]Œ  }|j                  d«      D ]v  }|j                  |j                  j                  «      }| j                  |j                  t         j"                  «       |j%                  |j                  j                  «       Œx ŒŽ | j'                  ||D �	ch c]  }	t)        |	«      ’Œ c}	«       y c c}	w )Nr‹  c                  óF   — d}t        | «      D ]  }|t        |«      z  }Œ |S r  )r   rP   )r^   ÚsÚargs      r*   rz   zSTestBranchPrunePostSemanticConstRewrites.test_tuple_const_propagation.<locals>.impl  s(   € àˆAÜ% dÖ+�Ø”S˜“X‘‘ð ,àˆHr,   )rq   r¥  rq   r   r”  Úinplace_binop)r   r   rv  rw  rZ   r–  r—  rU   r1   r2   r™  Úfind_variable_assignmentÚrhsÚnameÚassertIsInstancerÊ   r   rÉ   ÚaddrO   rP   )
r6   rz   ÚinpÚolr"   Úbinop_constsr9   ÚexprÚinstry   s
             r*   Útest_tuple_const_propagationzETestBranchPrunePostSemanticConstRewrites.test_tuple_const_propagation  s  € Ü	Ô5Ô	6ñ	ó 
7ð	ð "ˆØ×Ñ¡ c 
¨L¨D¯L©L¸#Ð,>Ô?à�^‰^˜DŸO™O¨AÑ.Ñ/ˆØ—+‘+˜nÑ-ˆä“uˆØ—>‘>×(Ñ(Ö*ˆCØŸ™ Ö7�Ø×3Ñ3°D·H±H·M±MÓB�Ø×%Ñ% d§j¡j´"·(±(Ô;Ø× Ñ  §¡×!1Ñ!1Õ2ñ 8ð +ð
 	×Ñ˜¹Ó'<¹°1¬¨A­¸Ñ'<Õ=ùÒ'<s   Ä)E
N)	rm   rn   ro   r¡  r§  r²  r½  rÀ  rÐ  rq   r,   r*   rœ  rœ  Â  s#   „ ò*ò )ò Pò Eò(	Bó>r,   rœ  )2r¹  r	   r  Únumpyrî   Únumba.core.compilerr   r   r   Únumbar   r   r   Ú
numba.corer
   r   r   r   r   r   Únumba.core.inline_closurecallr   Únumba.tests.supportr   r   r   r   Únumba.core.analysisr   r   Únumba.core.untyped_passesr   r   r   r   r   r   r   r   Únumba.core.utilsr   rØ   Úenable_pyobj_flagsÚenable_pyobjectr+   r.   rs   r  rz  rœ  rq   r,   r*   Ú<module>rÜ     s¹   ðã Û ã ß >Ñ >ß +Ñ +ß A× AÝ Ý ?÷;ó ;ç M÷3õ 3÷ NÑ MÝ &ð €á“WÐ Ø%)Ð Ô "ò
ôc(˜/¨8ô c(ôLW<Ð)¨;ô W<ôtU0Ð 3°[ô U0ôp?7˜¨(ô ?7ôDf>Ð/Bõ f>r,   