Ë
    èÿæiJ  ã                   ó¼  — d Z ddlZ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 ddlmZmZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZmZ dZerY ej>                  d«      Z e jC                  ejD                  ¬«       e jG                   ejH                  ejJ                  «      «        G d„ de«      Z& G d„ de&«      Z' G d„ de&«      Z( G d„ dee«      Z)y)z
Tests for SSA reconstruction
é    N)ÚnjitÚjitÚtypes)ÚerrorsÚir)ÚFunctionPassÚregister_pass)ÚDefaultPassBuilderÚCompilerBase)ÚReconstructSSAÚ
PreserveIR)ÚNativeLowering)Úoverload)ÚMemoryLeakMixinÚTestCaseÚoverride_configFznumba.core.ssa)Úlevelc                   ó   — e Zd Zd„ Zy)ÚSSABaseTestc                 óœ   —  |t        j                  |«      Ž } |j                  t        j                  |«      Ž }| j                  ||«       y ©N)ÚcopyÚdeepcopyÚpy_funcÚassertEqual)ÚselfÚfuncÚargsÚgotÚexps        úi/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_ssa.pyÚ
check_funczSSABaseTest.check_func   s>   € Ù”D—M‘M $Ó'Ð(ˆØˆd�l‰lœDŸM™M¨$Ó/Ð0ˆØ×Ñ˜˜cÕ"ó    N)Ú__name__Ú
__module__Ú__qualname__r"   © r#   r!   r   r      s   „ ó#r#   r   c                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestSSAz8
    Contains tests to help isolate problems in SSA
    c                 ó@   — t         d„ «       }| j                  |d«       y )Nc                 ó   — | dz  } | S ©Né   r'   ©Úxs    r!   Úfooz.TestSSA.test_argument_name_reused.<locals>.foo+   s   € à�‰FˆAØˆHr#   é{   ©r   r"   ©r   r0   s     r!   Útest_argument_name_reusedz!TestSSA.test_argument_name_reused*   s$   € Ü	ñ	ó 
ð	ð 	�‰˜˜SÕ!r#   c                 óh   — t         d„ «       }| j                  |dd«       | j                  |dd«       y )Nc                 ó&   — | |z  }| |k  r| }|S |}|S r   r'   )r/   ÚyÚzs      r!   r0   z*TestSSA.test_if_else_redefine.<locals>.foo3   s*   € à�A‘ˆAØ�1ŠuØ�ð ˆHð �ØˆHr#   é   é   r2   r3   s     r!   Útest_if_else_redefinezTestSSA.test_if_else_redefine2   s6   € Ü	ñ	ó 
ð	ð 	�‰˜˜Q Ô"Ø�‰˜˜Q Õ"r#   c                 ód   — t         d„ «       }| j                  |d«       | j                  |d«       y )Nc                 ó4   — d}t        | «      D ]  }||z  }Œ	 |S ©Nr   ©Úrange)ÚnÚcÚis      r!   r0   z"TestSSA.test_sum_loop.<locals>.foo@   s#   € àˆAÜ˜1–X�Ø�Q‘‘ð àˆHr#   r   é
   r2   r3   s     r!   Útest_sum_loopzTestSSA.test_sum_loop?   s2   € Ü	ñ	ó 
ð	ð 	�‰˜˜QÔØ�‰˜˜RÕ r#   c                 ód   — t         d„ «       }| j                  |d«       | j                  |d«       y )Nc                 óF   — d}| }t        | «      D ]  }||z  }|| z  }Œ ||fS r>   r?   )rA   rB   ÚdrC   s       r!   r0   z(TestSSA.test_sum_loop_2vars.<locals>.fooK   s7   € àˆAØˆAÜ˜1–X�Ø�Q‘�Ø�Q‘‘ð ð �a�4ˆKr#   r   rD   r2   r3   s     r!   Útest_sum_loop_2varszTestSSA.test_sum_loop_2varsJ   s2   € Ü	ñ	ó 
ð	ð 	�‰˜˜QÔØ�‰˜˜RÕ r#   c                 ód   — t         d„ «       }| j                  |d«       | j                  |d«       y )Nc                 ó^   — d}t        | «      D ]  }t        | «      D ]  }||z  }Œ	 ||z  }Œ |S r>   r?   )rA   rB   rC   Újs       r!   r0   z%TestSSA.test_sum_2d_loop.<locals>.fooX   s<   € àˆAÜ˜1–X�Ü˜qž�AØ˜‘F‘Að "à�Q‘‘ð ð ˆHr#   r   rD   r2   r3   s     r!   Útest_sum_2d_loopzTestSSA.test_sum_2d_loopW   s2   € Ü	ñ	ó 
ð	ð 	�‰˜˜QÔØ�‰˜˜RÕ r#   c                 ó’  — t         d„ «       }|r`| j                  t        j                  «      5 }| j	                  |d«       d d d «       | j                  dt        j                  «      «       n| j	                  |d«       | j                  t        «      5  |j                  d«       d d d «       y # 1 sw Y   ŒqxY w# 1 sw Y   y xY w)Nc                 ó&   — | r	| dkD  rd}S dz  }|S ©Nr   r-   r'   )rA   rB   s     r!   r0   z(TestSSA.check_undefined_var.<locals>.fooe   s&   € áØ�q’5Ø�AØ�ð �Q‘�Ø�r#   r-   z!Detected uninitialized variable cr   )r   ÚassertWarnsr   ÚNumbaWarningr"   ÚassertInÚstrÚwarningÚassertRaisesÚUnboundLocalErrorr   )r   Úshould_warnr0   Úwarnss       r!   Úcheck_undefined_varzTestSSA.check_undefined_vard   s£   € Ü	ñ	ó 
ð	ñ Ø×!Ñ!¤&×"5Ñ"5Ô6¸%à—‘  QÔ'÷ 7ð �M‰MÐ=Ü˜eŸm™mÓ,õ.ð �O‰O˜C Ô#à×ÑÔ0Õ1Ø�K‰K˜ŒN÷ 2Ð1÷ 7Ð6ú÷ 2Ð1ús   ®B1ÂB=Â1B:Â=Cc                 óÐ   — t        dd«      5  | j                  d¬«       d d d «       t        dd«      5  | j                  d¬«       d d d «       y # 1 sw Y   Œ1xY w# 1 sw Y   y xY w)NÚALWAYS_WARN_UNINIT_VARr   F)rX   r-   T)r   rZ   ©r   s    r!   Útest_undefined_varzTestSSA.test_undefined_var|   sW   € ÜÐ5°qÕ9Ø×$Ñ$°Ð$Ô7÷ :äÐ5°qÕ9Ø×$Ñ$°Ð$Ô6÷ :Ð9÷ :Ð9úç9Ð9ús   �A´AÁAÁA%c                 ój   — t         d„ «       }| j                  |t        j                  ddg«      «       y )Nc                 ó   — d}d}d}|dkD  rp|t        | «      k  rb|dz  }| |   r?| |   r| |   r|dz  }| |xx   dz  cc<   n| |   r|dz  }| |xx   dz  cc<   ||z  }| |   rŒ?||z  }|dkD  r|t        | «      k  rŒb||fS )Nr-   r   rD   é   )Úlen)ÚactionsrA   rC   Úcts       r!   r0   z)TestSSA.test_phi_propagation.<locals>.fooƒ   s°   € àˆAàˆAØˆBØ�a’%˜A¤ G£Ò,Ø�Q‘�à˜a’jØ˜q’zØ" 1š:Ø ™G˜AØ ›
 a™œ
à" 1š:Ø ™G˜AØ ›
 a™›
à˜!‘G�Bð ˜a“jð �a‘�ð �a’%˜A¤ G£Ó,ð �q�5ˆLr#   r-   r:   )r   r"   ÚnpÚarrayr3   s     r!   Útest_phi_propagationzTestSSA.test_phi_propagation‚   s1   € Ü	ñ	ó 
ð	ð, 	�‰˜œRŸX™X q¨! fÓ-Õ.r#   c                 óp   — d„ } |ddddd«      } t        |«      ddddd«      }| j                  ||«       y )Nc                 ó`   — | r	|}|}|}| }y |r|r|}	y }
y |rr	|r
}y |}|S r|}| S }
S }y r   r'   )Úarg1Úarg2Úarg3Úarg4Úarg5Úvar1Úvar2Úvar3Úvar4Úvar5Úvar6Úvar7Úvar8Úvar9Úvar10s                  r!   Ú	function1z3TestSSA.test_unhandled_undefined.<locals>.function1�   sr   € áØ�Ø�Ø�Ø�ØáÙØ#˜Øà#˜Øñ ÙÙ#Ø'+ Ø &à'+ Ø'+ ñ  $Ø'+ Ø'+ à'+ Ø'+ ð  $˜Ør#   r:   r9   é   r   é   )r   r   )r   ry   Úexpectr   s       r!   Útest_unhandled_undefinedz TestSSA.test_unhandled_undefinedœ   sD   € ò*	ñ\ ˜1˜a  A qÓ)ˆØŒd�9‹o˜a  A q¨!Ó,ˆØ×Ñ˜ Õ%r#   N)r$   r%   r&   Ú__doc__r4   r;   rE   rI   rM   rZ   r^   rg   r}   r'   r#   r!   r)   r)   %   s4   „ ñò"ò#ò	!ò!ò!òò07ò/ó41&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y)ÚTestReportedSSAIssuesc                 ó>   — t         d„ «       }| j                  |«       y )Nc                  ó¤   — t        j                  d«      } t        j                  d«      }t        |«      D ]  }d| |<   Œ	 t        |d«      D ]  }Œ y r,   )re   ÚemptyÚuint32r@   )ÚVÚsrC   s      r!   r0   z1TestReportedSSAIssues.test_issue2194.<locals>.fooÖ   sF   € ä—‘˜“ˆAÜ—	‘	˜!“ˆAä˜1–X�Ø��!’ð ä˜1˜a–[�Øñ !r#   r2   r3   s     r!   Útest_issue2194z$TestReportedSSAIssues.test_issue2194Ô   s"   € ä	ñ	ó 
ð	ð 	�‰˜Õr#   c                 ó^   ‡— t         d„ «       Št         ˆfd„«       }| j                  |d«       y )Nc                 ó   — | S r   r'   r.   s    r!   Údoitz2TestReportedSSAIssues.test_issue3094.<locals>.doitä   s   € àˆHr#   c                 ó"   •— | rd}nd} ‰|«      S )NTFr'   )Úpredr/   rŠ   s     €r!   r0   z1TestReportedSSAIssues.test_issue3094.<locals>.fooè   s   ø€ áØ‘à�á˜“7ˆNr#   Fr2   )r   r0   rŠ   s     @r!   Útest_issue3094z$TestReportedSSAIssues.test_issue3094â   s9   ø€ ä	ñ	ó 
ð	ô 
ó	ó 
ð	ð 	�‰˜˜UÕ#r#   c                 óÒ   — t         d„ «       }t        j                  j                   |t        j                  d«      «      |j                  t        j                  d«      «      «       y )Nc                 ól   — t        d«      D ]%  }| j                  d«      } | j                  dd«      } Œ' | S )Nr-   rz   r9   r:   )r@   Úreshape)ÚarrrC   s     r!   r0   z1TestReportedSSAIssues.test_issue3931.<locals>.fooõ   s5   € ä˜1–X�Ø—k‘k %Ó(�Ø—k‘k ! QÓ'‘ð ð ˆLr#   )r9   r:   )r   re   ÚtestingÚassert_allcloseÚzerosr   r3   s     r!   Útest_issue3931z$TestReportedSSAIssues.test_issue3931ó   sN   € ä	ñ	ó 
ð	ô 	�
‰
×"Ñ"¡3¤r§x¡x°Ó'7Ó#8Ø#&§;¡;¬r¯x©x¸Ó/?Ó#@õ	Br#   c                 ór   ‡— d„ Št         ˆfd„«       }t        ‰«      ˆfd„«       }| j                  |d«       y )Nc                  ó   — y)NÚdummyr'   )Úas    r!   Úoverload_thisz;TestReportedSSAIssues.test_issue3976.<locals>.overload_this  s   € Ør#   c                 ó(   •— | rd} ‰|«      }|S d}|S )Né   Úbr'   )r™   r†   rš   s     €r!   r0   z1TestReportedSSAIssues.test_issue3976.<locals>.foo  s(   ø€ áØ�Ù! !Ó$�ð ˆHð �àˆHr#   c                 ó   •— ‰S r   r'   )r™   rš   s    €r!   Úolz0TestReportedSSAIssues.test_issue3976.<locals>.ol  s	   ø€ à Ð r#   T)r   r   r"   )r   r0   rŸ   rš   s      @r!   Útest_issue3976z$TestReportedSSAIssues.test_issue3976ÿ   sE   ø€ ò	ô 
ó	ó 
ð	ô 
�-Ó	 ó	!ó 
!ð	!ð 	�‰˜˜TÕ"r#   c                 óB   — t         d„ «       }| j                  |dd«       y )Nc                 óB   — | d   }|d   }| D ]  }|}Œ |D ]  }|}Œ ||fS r>   r'   )ÚAÚBr/   r7   rC   s        r!   r0   z1TestReportedSSAIssues.test_issue3979.<locals>.foo  s;   € à�!‘ˆAØ�!‘ˆAÛ�Ø‘ð ã�Ø‘ð à�a�4ˆKr#   )r-   r:   )r£   r¤   r2   r3   s     r!   Útest_issue3979z$TestReportedSSAIssues.test_issue3979  s&   € ä	ñ	ó 
ð	ð 	�‰˜˜V ZÕ0r#   c                 ót   ‡— dd„Št        ‰«      dd„«       }t        ˆfd„«       }| j                  |dd«       y )Nc                 ó0   — t        |t        «      r|d   }|S r>   )Ú
isinstanceÚtuple)r™   r�   s     r!   rš   z;TestReportedSSAIssues.test_issue5219.<locals>.overload_this$  s   € Ü˜!œUÔ#Ø�a‘D�ØˆHr#   c                 óh   ‡— t        |t        j                  t        j                  f«      Šdˆfd„	}|S )Nc                 ó   •— ‰du r|d   }|S )NTr   r'   )r™   r�   Ú
b_is_tuples     €r!   Úimplz>TestReportedSSAIssues.test_issue5219.<locals>.ol.<locals>.impl-  s   ø€ Ø Ñ%Ø˜!™�AØ�r#   r   )r¨   r   ÚTupleÚUniTuple)r™   r�   r­   r¬   s      @r!   rŸ   z0TestReportedSSAIssues.test_issue5219.<locals>.ol)  s(   ø€ ä# A¬¯©´U·^±^Ð'DÓEˆJõð ˆKr#   c                 ó   •—  ‰| |«       y r   r'   )r™   r�   rš   s     €r!   Ú
test_tuplez8TestReportedSSAIssues.test_issue5219.<locals>.test_tuple3  s   ø€ á˜!˜QÕr#   r-   )r:   r   )r   r   r"   )r   rŸ   r±   rš   s      @r!   Útest_issue5219z$TestReportedSSAIssues.test_issue5219"  sG   ø€ ó	ô
 
�-Ó	 ò	ó 
!ð	ô 
ó	 ó 
ð	 ð 	�‰˜
 A uÕ-r#   c                 óÒ   — t         d„ «       }t        j                  d«      }d|j                  _        t        j
                  j                   ||«      |j                  |«      «       y )Nc                 ó’   — t        | «      dk(  r| S | j                  «       } t        t        | «      «      D ]  }| |xx   dz  cc<   Œ | S )Nrœ   r-   )rb   r   r@   )r/   rC   s     r!   Úbarz1TestReportedSSAIssues.test_issue5223.<locals>.bar;  sA   € ä�1‹v˜Š{Ø�Ø—‘“ˆAÜœ3˜q›6–]�Ø�!“˜‘	”ð #àˆHr#   rœ   F)r   re   ÚonesÚflagsÚ	writeabler’   r“   r   )r   rµ   r™   s      r!   Útest_issue5223z$TestReportedSSAIssues.test_issue52239  sO   € ä	ñ	ó 
ð	ô �G‰G�A‹JˆØ!ˆ�‰Ôä
�
‰
×"Ñ"¡3 q£6¨3¯;©;°q«>Õ:r#   c                 óf   — t         d„ «       }| j                  |t        j                  d«      «       y )Nc                 óp   — t        j                  d«      }t        j                  d«      }| d   |d<   |d   S )N)gš™™™™™¹?g333333ã?g333333Ó?)r9   r9   )r   r   r   )re   rf   r”   )ÚqÚlinÚstencils      r!   r0   z1TestReportedSSAIssues.test_issue5243.<locals>.fooK  s4   € ä—(‘(˜?Ó+ˆCÜ—h‘h˜vÓ&ˆGØ˜d™GˆG�D‰MØ�q‘6ˆMr#   )r:   r:   )r   r"   re   r”   r3   s     r!   Útest_issue5243z$TestReportedSSAIssues.test_issue5243I  s-   € ä	ñ	ó 
ð	ð 	�‰˜œRŸX™X fÓ-Õ.r#   c                 ó&   — t        d«      d„ «       }y )Nú(intp, intp, intp)c                 óX   — t        |«      D ]  }|dk(  r	|| k(  rŒ|}Œ|| k(  rŒ|z   }Œ S r>   r?   ©r/   ÚvrA   rC   Úproblematics        r!   r0   zGTestReportedSSAIssues.test_issue5482_missing_variable_init.<locals>.fooW  sA   € ä˜1–X�Ø˜’6Ø˜A’vØà&'™à˜A’vØà&1°A¡o™ð ð Ðr#   )r   r3   s     r!   Ú$test_issue5482_missing_variable_initz:TestReportedSSAIssues.test_issue5482_missing_variable_initT  s   € ô 
Ð"Ó	#ñ	ó 
$ñ	r#   c                 ó€   ‡‡‡‡— ddl m}mŠ ddlmŠmŠ ddlmŠ  G ˆˆˆˆfd„d|«      }t        dd|¬	«      d
„ «       }y )Nr   ©r   r
   )r   ÚIRProcessing)ÚPreLowerStripPhisc                   ó   •— e Zd Zˆ ˆˆˆfd„Zy)úWTestReportedSSAIssues.test_issue5482_objmode_expr_null_lowering.<locals>.CustomPipelinec                 óª   •—  ‰j                   | j                  «      }|j                  ‰‰«       |j                  ‰‰«       |j                  «        |gS r   )Údefine_objectmode_pipelineÚstateÚadd_pass_afterÚfinalize)r   Úpmr
   rÉ   rÊ   r   s     €€€€r!   Údefine_pipelineszhTestReportedSSAIssues.test_issue5482_objmode_expr_null_lowering.<locals>.CustomPipeline.define_pipelineso  sK   ø€ ØBÐ'×BÑBÀ4Ç:Á:ÓN�à×!Ñ! .°,Ô?Ø×!Ñ!Ð"3°^ÔDØ—‘”Ø�t�r#   N©r$   r%   r&   rÓ   )r
   rÉ   rÊ   r   s   €€€€r!   ÚCustomPipelinerÌ   n  s   ø„ ÷ð r#   rÕ   rÁ   F)ÚloopliftÚpipeline_classc                 óX   — t        |«      D ]  }||k(  r	|| k(  rŒ|}Œ|| k(  rŒ|z   }Œ S r   r?   rÃ   s        r!   r0   zLTestReportedSSAIssues.test_issue5482_objmode_expr_null_lowering.<locals>.foow  sC   € ô ˜1–X�Ø˜’6Ø˜A’vØà&'™à˜A’vØà&1°A¡o™ð ð Ðr#   )	Únumba.core.compilerr   r
   Únumba.core.untyped_passesr   rÉ   Únumba.core.typed_passesrÊ   r   )r   r   rÕ   r0   r
   rÉ   rÊ   r   s       @@@@r!   Ú)test_issue5482_objmode_expr_null_loweringz?TestReportedSSAIssues.test_issue5482_objmode_expr_null_loweringf  sA   û€ ÷ 	IßJÝ=÷	ñ 	˜\ô 	ô 
Ð!¨EØ*ô
,ñ	ó
,ñ	r#   c                 ó¬  ‡‡— t        j                  d«      t        j                  d«      f}t        j                  d«      Št        j                  d«      Šˆˆfd„} |dd|«      } t        |«      dd|«      }  t        dd¬«      |«      dd|«      }t         j                  j                  ||«       t         j                  j                  ||«       y )	Nr:   r-   )r-   r-   c                 óü   •— t        |«      dk(  r|d   }n$|d   }t        dt        |«      «      D ]  }|‰z  }Œ	 t        d| «      D ]3  }t        |«      D ]#  }‰	}|dk(  r||dz
  k(  rŒ|}Œ||dz
  k(  rŒ|z   }Œ% Œ5 S )Nr-   r   )rb   r@   )
ÚmrA   ÚdataÚv0Ú_ÚtÚidxrÅ   r£   r¤   s
           €€r!   r0   z>TestReportedSSAIssues.test_issue5493_unneeded_phi.<locals>.fooŽ  sœ   ø€ Ü�4‹y˜AŠ~Ø˜!‘W‘à˜!‘W�ä˜q¤# d£)Ö,�AØ˜!‘G‘Bð -ô ˜1˜a–[�Ü  ž8�CØ�Aà˜a’xØ ! a¡%š<Ø à*+™Kà ! a¡%š<Ø à*5¸©/™Kñ $ð !ð Ðr#   rD   TF)ÚforceobjrÖ   )re   r¶   r   r   r’   Úassert_array_equal)r   rà   r0   r|   Úres1Úres2r£   r¤   s         @@r!   Útest_issue5493_unneeded_phiz1TestReportedSSAIssues.test_issue5493_unneeded_phi‡  s©   ù€ ô —‘˜“
œBŸG™G A›JÐ'ˆÜ�G‰G�A‹JˆÜ�G‰G�E‹Nˆõ	ñ2 �R˜˜TÓ"ˆØŒt�C‹y˜˜R Ó&ˆØ6Ð1Œs˜D¨5Ô1°#Ó6°r¸2¸tÓDˆÜ
�
‰
×%Ñ% f¨dÔ3Ü
�
‰
×%Ñ% f¨dÕ3r#   c                 óJ  — d„ }t        j                  ddg«      } |d|«       t        j                  ddg«      } t        |«      d|«       t        j                  ddg«      }t         j                  j	                  ||«       t         j                  j	                  ||«       y )Nc                 ó>   — d}d}| du r|||<   |dz  }|||<   |dz  }y y )Nr   r-   Tr'   )rŒ   ÚstackrC   rB   s       r!   r0   zMTestReportedSSAIssues.test_issue5623_equal_statements_in_same_bb.<locals>.foo¯  s<   € ØˆAØˆAà�t‰|Ø��a‘Ø�Q‘�Ø��a‘Ø�Q‘‘ð	 r#   r   iš  Tr-   )re   rf   r   r’   ræ   )r   r0   ÚpythonÚnbr|   s        r!   Ú*test_issue5623_equal_statements_in_same_bbz@TestReportedSSAIssues.test_issue5623_equal_statements_in_same_bb­  s�   € ò	ô —‘˜1˜c˜(Ó#ˆÙˆD�&Ôä�X‰X�q˜#�hÓˆØŒˆS‹	�$˜Ôä—‘˜1˜a˜&Ó!ˆä
�
‰
×%Ñ% f¨fÔ5Ü
�
‰
×%Ñ% b¨&Õ1r#   c                 ó$  ‡ ‡‡‡‡	— ddl m}mŠ ddlmŠm}m} g Š	 |dd¬«       G ˆ	ˆ fd„d|«      «       Š G ˆˆˆfd	„d
|«      }t        |¬«      dd„«       }‰ j                   |d«      |j                  d«      «       ‰ j                  ‰	dg«       y )Nr   rÈ   )r   r   r	   FT©Úmutates_CFGÚanalysis_onlyc                   ó^   •‡ — e Zd ZW °j                  j                  dz   Zˆ fd„Zˆfd„Zˆ xZS )úMTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CheckSSAMinimalz.CheckSSAMinimalc                 ó$   •— t         ‰| �  | «       y r   )ÚsuperÚ__init__)r   Ú	__class__s    €r!   rø   zVTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CheckSSAMinimal.__init__Ô  s   ø€ Ü‘Ñ  Õ&r#   c           	      óÊ   •— d}|j                   j                  j                  «       D ](  }|t        t	        |j                  d«      «      «      z  }Œ* ‰j                  |«       y)Nr   ÚphiT)Úfunc_irÚblocksÚvaluesrb   ÚlistÚ
find_exprsÚappend)r   rÏ   rd   ÚblkÚphi_counters       €r!   Úrun_passzVTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CheckSSAMinimal.run_pass×  sS   ø€ Ø�Ø Ÿ=™=×/Ñ/×6Ñ6Ö8�CØœ#œd 3§>¡>°%Ó#8Ó9Ó:Ñ:‘Bð 9à×"Ñ" 2Ô&Ør#   )r$   r%   r&   rù   Ú_namerø   r  Ú__classcell__)rù   r  r   s   @€€r!   ÚCheckSSAMinimalrõ   Î  s)   ù„ ñ —N‘N×/Ñ/Ð2DÑDˆEô'÷ð r#   r  c                   ó   •— e Zd Zˆ ˆˆfd„Zy)úLTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CustomPipelinec                 ó†   •—  ‰j                   | j                  «      }|j                  ‰‰«       |j                  «        |gS r   )Údefine_nopython_pipelinerÏ   rÐ   rÑ   )r   rÒ   r  r
   r   s     €€€r!   rÓ   z]TestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CustomPipeline.define_pipelinesß  s:   ø€ Ø@Ð'×@Ñ@ÀÇÁÓL�Ø×!Ñ! /°>ÔBØ—‘”Ø�t�r#   NrÔ   )r  r
   r   s   €€€r!   rÕ   r	  Þ  s   ø„ ÷r#   rÕ   ©r×   r-   c                 óÐ   — t        j                  | | f«      }d}||k  rGt        t        |«      «      D ]%  }t        t        |«      «      D ]  }||z   |||f<   Œ Œ' |dz  }||k  rŒG|S rP   )re   rƒ   r@   rb   )rA   Úmax_iterr™   rC   rL   Úks         r!   Ú	while_forzGTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.while_forå  so   € ä—‘˜!˜A˜“ˆAØˆAØ�x’-Üœs 1›vž�AÜ"¤3 q£6ž]˜Ø!" Q¡˜˜!˜A˜#šñ +ð 'ð �Q‘�ð	 �x“-ð
 ˆHr#   rD   )r-   )rÙ   r   r
   rÚ   r   r   r	   r   ÚassertPreciseEqualr   r   )
r   r   r   r	   rÕ   r  r  r
   r   r  s
   `     @@@@r!   Útest_issue5678_non_minimal_phiz4TestReportedSSAIssues.test_issue5678_non_minimal_phiÄ  s—   ü€ ÷ 	I÷	
ñ 	
ð ˆá	 5¸Ô	=÷	˜ló 	ó 
>ð	÷	ð 	˜\ô 	ô 
˜^Ô	,ò	ó 
-ð	ð 	×Ñ¡	¨"£¨y×/@Ñ/@ÀÓ/DÔEà×Ñ˜ q cÕ*r#   c                 óÄ   ‡ ‡‡‡— ddl m} ddlmŠm} d|fˆ fd„Š |dd¬«       G ˆˆfd	„d
‰«      «       Š G ˆfd„dt
        «      }t        |¬«      d„ «       } |d«       y )Nr   )Ú
FunctionIR)ÚAnalysisPassr	   Úfirc                 ó"  •— | j                   j                  «       ^}}|j                  j                  d«      }| j	                  |«      }‰j                  |j                  d«       ‰j                  t        j                  |j                  «       y )NrH   rû   )rý   rþ   ÚscopeÚgetÚget_definitionr   ÚoprS   r   Ú	UNDEFINEDÚincoming_values)r  r  râ   ÚvarÚdefnr   s        €r!   ÚcheckzCTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.checkü  sg   ø€ ØŸ
™
×)Ñ)Ó+ˆIˆS�1Ø—)‘)—-‘- Ó$ˆCØ×%Ñ% cÓ*ˆDØ×Ñ˜TŸW™W eÔ,Ø�M‰Mœ"Ÿ,™,¨×(<Ñ(<Õ=r#   FTrñ   c                   ó*   •— e Zd ZdZdZˆ fd„Zˆfd„Zy)úFTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheckz3
            Check SSA on variable `d`
            Ú	SSA_Checkc                 ó(   •— ‰j                  | «       y r   )rø   )r   r  s    €r!   rø   zOTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheck.__init__  s   ø€ Ø×%Ñ% dÕ+r#   c                 ó*   •—  ‰|j                   «       y)NF)rü   )r   rÏ   r   s     €r!   r  zOTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheck.run_pass  s   ø€ Ù�e—m‘mÔ$Ør#   N)r$   r%   r&   r~   r  rø   r  )r  r   s   €€r!   ÚSSACheckr"    s   ø„ ñð  ˆEô,õr#   r&  c                   ó   •— e Zd ZdZˆ fd„Zy)úNTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheckPipelinez^Inject SSACheck pass into the default pipeline following the SSA
            pass
            c                 ó¤   •— t        j                  | j                  d«      }d|_        |j	                  ‰t
        «       |j                  «        |gS )NÚssa_check_custom_pipelineF)r
   r  rÏ   Ú
_finalizedrÐ   r   rÑ   )r   Úpipeliner&  s     €r!   rÓ   z_TestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheckPipeline.define_pipelines  sK   ø€ Ü-×FÑFØ—J‘JÐ ;ó=�ð ',�Ô#Ø×'Ñ'¨´.ÔAà×!Ñ!Ô#Ø �zÐ!r#   N)r$   r%   r&   r~   rÓ   )r&  s   €r!   ÚSSACheckPipeliner(    s   ø„ ñõ"r#   r-  r  c                 ó,   — | dkD  }|r| dz   }|xr dkD  S )Nr   rœ   r'   )r™   rB   rH   s      r!   r   zETestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.py_func!  s%   € à�A‘ˆAÙØ˜‘E�à’;˜˜Q™Ðr#   rD   )Únumba.core.irr  Únumba.core.compiler_machineryr  r	   r   r   )r   r  r	   r-  r   r  r&  r   s   `    @@@r!   Útest_issue9242_use_not_dom_defz4TestReportedSSAIssues.test_issue9242_use_not_dom_defõ  sh   û€ Ý,÷	
ð
	>�zõ 	>ñ 
 5¸Ô	=÷	�|ó 	ó 
>ð	ö	"œ|ô 	"ô 
Ð-Ô	.ñ	ó 
/ð	ñ 	��r#   N)r$   r%   r&   r‡   r�   r•   r    r¥   r²   r¹   r¿   rÆ   rÜ   ré   rï   r  r1  r'   r#   r!   r€   r€   Ð   sL   „ òò$ò"
Bò#ò*1ò.ò.;ò 	/òò$òB$4òL2ò./+ób4r#   r€   c                   ó   — e Zd Zd„ Zy)ÚTestSROAIssuesc                 óT  ‡	‡
— g Š
t        dd¬«       G ˆ
fd„dt        «      «       Š	 G ˆ	fd„dt        «      }t        |¬«      d	„ «       }t	        j
                  d
«      }| j                   ||«      |dz   «       | j                  t        ‰
«      d«       | j                  ‰
d   j                  j                  d«       |j                  |j                  d      j                  d   }| j                  t        |j                  «      dd«       |j                  j                  «       \  }|j!                  t"        j$                  «      }|D �cg c]  }|j                  j                  dk(  r|‘Œ }}| j                  t        |«      dd«       | j                  |d   |d   d«       y c c}w )NFT)ró   rò   c                   ó"   •— e Zd ZdZd„ Zˆ fd„Zy)úZTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CloneFoobarAssignmentsÚclone_foobar_assignments_passc                 ó.   — t        j                  | «       y r   )r   rø   r]   s    r!   rø   zcTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CloneFoobarAssignments.__init__<  s   € Ü×%Ñ% dÕ+r#   c                 ó‚  •— d}|j                   j                  j                  «       D ]”  }g }|j                  t        j
                  «      D ]-  }|j                  j                  dk(  sŒ|j                  |«       Œ/ |D ]<  }t        j                  |«      }|j                  ||«       d}‰j                  |«       Œ> Œ– |S )NFÚfoobarT)rü   rý   rþ   Ú
find_instsr   ÚAssignÚtargetÚnamer  r   r   Úinsert_after)r   rÏ   Úmutatedr  Úto_cloneÚassignÚcloneÚcloneds          €r!   r  zcTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CloneFoobarAssignments.run_pass?  s¡   ø€ Ø�Ø Ÿ=™=×/Ñ/×6Ñ6Ö8�CØ!�Hà"%§.¡.´·±Ö";˜Ø!Ÿ=™=×-Ñ-°Ó9Ø$ŸO™O¨FÕ3ð #<ó #+˜Ü $§¡¨fÓ 5˜Ø×(Ñ(¨°Ô7Ø"&˜àŸ™ eÕ,ñ #+ð 9ð �r#   N)r$   r%   r&   r  rø   r  )rD  s   €r!   ÚCloneFoobarAssignmentsr6  7  s   ø„ ð 4ˆEò,õr#   rE  c                   ó   •— e Zd Zˆ fd„Zy)úRTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CustomCompilerc                 óØ   •— t        j                  | j                  d«      }d|_        |j	                  ‰t
        «       |j	                  t        t        «       |j                  «        |gS )NÚcustom_pipelineF)	r
   r  rÏ   r+  rÐ   r   r   r   rÑ   )r   rÒ   rE  s     €r!   rÓ   zcTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CustomCompiler.define_pipelinesQ  sW   ø€ Ü'×@Ñ@Ø—J‘JÐ 1ó�ð !&�”à×!Ñ!Ð"8¼.ÔIà×!Ñ!¤*¬nÔ=Ø—‘”Ø�t�r#   NrÔ   )rE  s   €r!   ÚCustomCompilerrG  P  s   ø„ õ
r#   rJ  r  c                 ó   — | dz   }|S r,   r'   )r‘   r:  s     r!   ÚudtzGTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.udt]  s   € à˜1‘WˆFØˆMr#   rD   r-   r   r:  Úpreserved_irzonly one blockr:   z0expected two assignment statements into 'foobar'z5expected the two assignment statements to be the same)r	   r   r   r   re   Úaranger  r   rb   r=  r>  Ú	overloadsÚ
signaturesÚmetadatarý   rþ   r;  r   r<  )r   rJ  rL  r‘   Únirr  ÚassignsÚstmtÚfoobar_assignsrE  rD  s            @@r!   Ú+test_issue7258_multiple_assignment_post_SSAz:TestSROAIssues.test_issue7258_multiple_assignment_post_SSA1  s~  ù€ ð ˆä	 U¸Ô	=ö	¤\ó 	ó 
>ð	ö0	œ\ô 	ô 
˜^Ô	,ñ	ó 
-ð	ô �i‰i˜‹mˆà×Ñ¡ C£¨#°©'Ô2à×Ñœ˜V› aÔ(Ø×Ñ˜ ™×)Ñ)×.Ñ.°Ô9à�m‰m˜CŸN™N¨1Ñ-Ñ.×7Ñ7¸ÑGˆØ×Ñœ˜SŸZ™Z›¨!Ø)ô	+à—
‘
×!Ñ!Ó#‰ˆØ—.‘.¤§¡Ó+ˆÙ+2ó ;©7 4Ø!Ÿ[™[×-Ñ-°Ò9ò ¨7ˆð ;à×ÑÜ�Ó Ø>ô	
ð 	×ÑØ˜1Ñ˜~¨aÑ0ØCõ	
ùò;s   Å"F%N)r$   r%   r&   rV  r'   r#   r!   r3  r3  ,  s   „ ó
F
r#   r3  )*r~   Úsysr   ÚloggingÚnumpyre   Únumbar   r   r   Ú
numba.corer   r   r0  r   r	   rÙ   r
   r   rÚ   r   r   rÛ   r   Únumba.extendingr   Únumba.tests.supportr   r   r   Ú_DEBUGÚ	getLoggerÚ
ssa_loggerÚsetLevelÚDEBUGÚ
addHandlerÚStreamHandlerÚstderrr   r)   r€   r3  r'   r#   r!   Ú<module>rf     sÂ   ðñó Û Û ã ç "Ñ "ß !ß Eß @ß @Ý 2Ý $ß JÑ Jð 
€á	à"�×"Ñ"Ð#3Ó4€JØ×Ñ˜gŸm™mÐÔ,Ø×ÑÐ/˜'×/Ñ/°·
±
Ó;Ô<ô#�(ô #ôh&ˆkô h&ôVY˜Kô Yôx
K
�_ hõ K
r#   