§
    2@Äj•L  ã                   óÊ  — 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rS ej        d¦  «        Z e  !                    ej"        ¬¦  «         e  #                     ej$        ej%        ¦  «        ¦  «          G d„ de¦  «        Z& G d„ de&¦  «        Z' G d„ de&¦  «        Z( G d„ dee¦  «        Z)dS )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dS )ÚSSABaseTestc                 ó˜   —  |t          j        |¦  «        Ž } |j        t          j        |¦  «        Ž }|                      ||¦  «         d S ©N)ÚcopyÚdeepcopyÚpy_funcÚassertEqual)ÚselfÚfuncÚargsÚgotÚexps        úEC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_ssa.pyÚ
check_funczSSABaseTest.check_func   sL   € Øˆd•D”M $Ñ'Ô'Ð(ˆØˆdŒl�DœM¨$Ñ/Ô/Ð0ˆØ×Ò˜˜cÑ"Ô"Ð"Ð"Ð"ó    N)Ú__name__Ú
__module__Ú__qualname__r"   © r#   r!   r   r      s#   € € € € € ð#ð #ð #ð #ð #r#   r   c                   óH   — 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S )ÚTestSSAz8
    Contains tests to help isolate problems in SSA
    c                 óR   — t           d„ ¦   «         }|                      |d¦  «         d S )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*   s7   € Ý	ð	ð 	ñ 
Œð	ð 	�Š˜˜SÑ!Ô!Ð!Ð!Ð!r#   c                 ó‚   — t           d„ ¦   «         }|                      |dd¦  «         |                      |dd¦  «         d S )Nc                 ó&   — | |z  }| |k     r| }n|}|S r   r'   )r/   ÚyÚzs      r!   r0   z*TestSSA.test_if_else_redefine.<locals>.foo3   s%   € à�A‘ˆAØ�1ŠuˆuØ��à�ØˆHr#   é   é   r2   r3   s     r!   Útest_if_else_redefinezTestSSA.test_if_else_redefine2   sO   € Ý	ð	ð 	ñ 
Œð	ð 	�Š˜˜Q Ñ"Ô"Ð"Ø�Š˜˜Q Ñ"Ô"Ð"Ð"Ð"r#   c                 ó~   — t           d„ ¦   «         }|                      |d¦  «         |                      |d¦  «         d S )Nc                 ó8   — d}t          | ¦  «        D ]}||z  }Œ|S ©Nr   ©Úrange)ÚnÚcÚis      r!   r0   z"TestSSA.test_sum_loop.<locals>.foo@   s,   € àˆAÝ˜1‘X”Xð ð �Ø�Q‘��ØˆHr#   r   é
   r2   r3   s     r!   Útest_sum_loopzTestSSA.test_sum_loop?   sK   € Ý	ð	ð 	ñ 
Œð	ð 	�Š˜˜QÑÔÐØ�Š˜˜RÑ Ô Ð Ð Ð r#   c                 ó~   — t           d„ ¦   «         }|                      |d¦  «         |                      |d¦  «         d S )Nc                 óJ   — d}| }t          | ¦  «        D ]}||z  }|| z  }Œ||fS r>   r?   )rA   rB   ÚdrC   s       r!   r0   z(TestSSA.test_sum_loop_2vars.<locals>.fooK   s>   € àˆAØˆAÝ˜1‘X”Xð ð �Ø�Q‘�Ø�Q‘��Ø�a�4ˆKr#   r   rD   r2   r3   s     r!   Útest_sum_loop_2varszTestSSA.test_sum_loop_2varsJ   sK   € Ý	ð	ð 	ñ 
Œð	ð 	�Š˜˜QÑÔÐØ�Š˜˜RÑ Ô Ð Ð Ð r#   c                 ó~   — t           d„ ¦   «         }|                      |d¦  «         |                      |d¦  «         d S )Nc                 óf   — d}t          | ¦  «        D ]}t          | ¦  «        D ]}||z  }Œ||z  }Œ|S r>   r?   )rA   rB   rC   Újs       r!   r0   z%TestSSA.test_sum_2d_loop.<locals>.fooX   sL   € àˆAÝ˜1‘X”Xð ð �Ý˜q™œð ð �AØ˜‘F�A�AØ�Q‘��ØˆHr#   r   rD   r2   r3   s     r!   Útest_sum_2d_loopzTestSSA.test_sum_2d_loopW   sK   € Ý	ð	ð 	ñ 
Œð	ð 	�Š˜˜QÑÔÐØ�Š˜˜RÑ Ô Ð Ð Ð r#   c                 óÒ  — t           d„ ¦   «         }|rv|                      t          j        ¦  «        5 }|                      |d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         n|                      |d¦  «         |                      t          ¦  «        5  | 
                    d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó(   — | r
| dk    rd}|S |dz  }|S ©Nr   r-   r'   )rA   rB   s     r!   r0   z(TestSSA.check_undefined_var.<locals>.fooe   s-   € àð Ø�q’5�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   sm  € Ý	ð	ð 	ñ 
Œð	ð ð 	$Ø×!Ò!¥&Ô"5Ñ6Ô6ð (¸%à—’  QÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð �MŠMÐ=Ý˜eœmÑ,Ô,ñ.ô .ð .ð .ð �OŠO˜C Ñ#Ô#Ð#à×ÒÕ0Ñ1Ô1ð 	ð 	Ø�KŠK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s#   ²AÁAÁAÂ9CÃC Ã#C c                 ó   — t          dd¦  «        5  |                      d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          dd¦  «        5  |                      d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚALWAYS_WARN_UNINIT_VARr   F)rX   r-   T)r   rZ   ©r   s    r!   Útest_undefined_varzTestSSA.test_undefined_var|   s  € ÝÐ5°qÑ9Ô9ð 	8ð 	8Ø×$Ò$°Ð$Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8åÐ5°qÑ9Ô9ð 	7ð 	7Ø×$Ò$°Ð$Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s   ‘4´8»8ÁA3Á3A7Á:A7c                 óz   — t           d„ ¦   «         }|                      |t          j        ddg¦  «        ¦  «         d S )Nc                 ó>  — d}d}d}|dk    rŽ|t          | ¦  «        k     r{|dz  }| |         rP| |         r| |         r|dz  }| |xx         dz  cc<   n| |         r|dz  }| |xx         dz  cc<   ||z  }| |         °P||z  }|dk    r|t          | ¦  «        k     °{||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‚   sE   € Ý	ð	ð 	ñ 
Œð	ð, 	�Š˜�RœX q¨! fÑ-Ô-Ñ.Ô.Ð.Ð.Ð.r#   c                 óŽ   — d„ } |ddddd¦  «        } t          |¦  «        ddddd¦  «        }|                      ||¦  «         d S )Nc                 ój   — | r
|}|}|}| }d S |r
|r|}	d S |}
d S |r|r
|r|
}d S |}|S |r|}| S |}
|S |}d S r   r'   )Úarg1Úarg2Úarg3Úarg4Úarg5Úvar1Úvar2Úvar3Úvar4Úvar5Úvar6Úvar7Úvar8Úvar9Úvar10s                  r!   Ú	function1z3TestSSA.test_unhandled_undefined.<locals>.function1�   sŸ   € àð (Ø�Ø�Ø�Ø�Ø�àð  Øð Ø#˜Ø˜à#˜Ø˜ð ð Øð #Ø#ð ,Ø'+ Ø & à'+ Ø'+ ð  $ð ,Ø'+ Ø'+ à'+ Ø'+ ð  $˜Ø˜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Œo˜a  A q¨!Ñ,Ô,ˆØ×Ò˜ Ñ%Ô%Ð%Ð%Ð%r#   N)r$   r%   r&   Ú__doc__r4   r;   rE   rI   rM   rZ   r^   rg   r}   r'   r#   r!   r)   r)   %   s¥   € € € € € ðð ð"ð "ð "ð#ð #ð #ð	!ð 	!ð 	!ð!ð !ð !ð!ð !ð !ðð ð ð07ð 7ð 7ð/ð /ð /ð41&ð 1&ð 1&ð 1&ð 1&r#   r)   c                   ób   — 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S )ÚTestReportedSSAIssuesc                 óP   — t           d„ ¦   «         }|                      |¦  «         d S )Nc                  óª   — t          j        d¦  «        } t          j        d¦  «        }t          |¦  «        D ]}d| |<   Œt          |d¦  «        D ]}Œd S r,   )re   ÚemptyÚuint32r@   )ÚVÚsrC   s      r!   r0   z1TestReportedSSAIssues.test_issue2194.<locals>.fooÖ   s`   € å”˜‘”ˆAÝ”	˜!‘”ˆAå˜1‘X”Xð ð �Ø��!‘�Ý˜1˜a‘[”[ð ð �Øðð r#   r2   r3   s     r!   Útest_issue2194z$TestReportedSSAIssues.test_issue2194Ô   s5   € å	ð	ð 	ñ 
Œð	ð 	�Š˜ÑÔÐÐÐr#   c                 óx   ‡— t           d„ ¦   «         Št           ˆfd„¦   «         }|                      |d¦  «         d S )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$   ø€ àð Ø��à�à�4˜‘7”7ˆNr#   Fr2   )r   r0   rŠ   s     @r!   Útest_issue3094z$TestReportedSSAIssues.test_issue3094â   s]   ø€ å	ð	ð 	ñ 
Œð	õ 
ð	ð 	ð 	ð 	ñ 
Œð	ð 	�Š˜˜UÑ#Ô#Ð#Ð#Ð#r#   c                 óæ   — t           d„ ¦   «         }t          j                              |t          j        d¦  «        ¦  «        |                     t          j        d¦  «        ¦  «        ¦  «         d S )Nc                 ó€   — t          d¦  «        D ]-}|                      d¦  «        } |                      dd¦  «        } Œ.| S )Nr-   rz   r9   r:   )r@   Úreshape)ÚarrrC   s     r!   r0   z1TestReportedSSAIssues.test_issue3931.<locals>.fooõ   sB   € å˜1‘X”Xð (ð (�Ø—k’k %Ñ(Ô(�Ø—k’k ! QÑ'Ô'��ØˆLr#   )r9   r:   )r   re   ÚtestingÚassert_allcloseÚzerosr   r3   s     r!   Útest_issue3931z$TestReportedSSAIssues.test_issue3931ó   su   € å	ð	ð 	ñ 
Œð	õ 	Œ
×"Ò" 3 3¥r¤x°Ñ'7Ô'7Ñ#8Ô#8Ø#&§;¢;­r¬x¸Ñ/?Ô/?Ñ#@Ô#@ñ	Bô 	Bð 	Bð 	Bð 	Br#   c                 ó’   ‡— d„ Št           ˆfd„¦   «         }t          ‰¦  «        ˆfd„¦   «         }|                      |d¦  «         d S )Nc                 ó   — dS )NÚdummyr'   )Úas    r!   Úoverload_thisz;TestReportedSSAIssues.test_issue3976.<locals>.overload_this  s   € Ø�7r#   c                 ó,   •— | rd} ‰|¦  «        }nd}|S )Né   Úbr'   )r™   r†   rš   s     €r!   r0   z1TestReportedSSAIssues.test_issue3976.<locals>.foo  s+   ø€ àð Ø�Ø!�M !Ñ$Ô$��à�àˆ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ÿ   s�   ø€ ð	ð 	ð 	õ 
ð	ð 	ð 	ð 	ñ 
Œð	õ 
�-Ñ	 Ô	 ð	!ð 	!ð 	!ð 	!ñ 
!Ô	 ð	!ð 	�Š˜˜TÑ"Ô"Ð"Ð"Ð"r#   c                 óT   — t           d„ ¦   «         }|                      |dd¦  «         d S )Nc                 óF   — | d         }|d         }| D ]}|}Œ|D ]}|}Œ||fS r>   r'   )ÚAÚBr/   r7   rC   s        r!   r0   z1TestReportedSSAIssues.test_issue3979.<locals>.foo  sI   € à�!”ˆAØ�!”ˆAØð ð �Ø��Øð ð �Ø��Ø�a�4ˆKr#   )r-   r:   )r£   r¤   r2   r3   s     r!   Útest_issue3979z$TestReportedSSAIssues.test_issue3979  s9   € å	ð	ð 	ñ 
Œð	ð 	�Š˜˜V ZÑ0Ô0Ð0Ð0Ð0r#   c                 ó”   ‡— dd„Št          ‰¦  «        dd„¦   «         }t          ˆfd„¦   «         }|                      |dd¦  «         d S )Nc                 ó@   — 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                 ó`   ‡— 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ÔEˆJðð ð ð ð ð ð ˆKr#   c                 ó    •—  ‰| |¦  «         d S r   r'   )r™   r�   rš   s     €r!   Ú
test_tuplez8TestReportedSSAIssues.test_issue5219.<locals>.test_tuple3  s   ø€ àˆM˜!˜QÑÔÐÐÐr#   r-   )r:   r   )r   r   r"   )r   rŸ   r±   rš   s      @r!   Útest_issue5219z$TestReportedSSAIssues.test_issue5219"  sƒ   ø€ ð	ð 	ð 	ð 	õ
 
�-Ñ	 Ô	 ð	ð 	ð 	ñ 
!Ô	 ð	õ 
ð	 ð 	 ð 	 ð 	 ñ 
Œð	 ð 	�Š˜
 A uÑ-Ô-Ð-Ð-Ð-r#   c                 óÞ   — t           d„ ¦   «         }t          j        d¦  «        }d|j        _        t          j                              ||¦  «        |                     |¦  «        ¦  «         d S )Nc                 ó¶   — t          | ¦  «        dk    r| S |                      ¦   «         } t          t          | ¦  «        ¦  «        D ]}| |xx         dz  cc<   Œ| S )Nrœ   r-   )rb   r   r@   )r/   rC   s     r!   Úbarz1TestReportedSSAIssues.test_issue5223.<locals>.bar;  sZ   € å�1‰vŒv˜Š{ˆ{Ø�Ø—’‘”ˆAÝ�3˜q™6œ6‘]”]ð ð �Ø�!��”˜‘	��‘�ØˆHr#   rœ   F)r   re   ÚonesÚflagsÚ	writeabler’   r“   r   )r   rµ   r™   s      r!   Útest_issue5223z$TestReportedSSAIssues.test_issue52239  sd   € å	ð	ð 	ñ 
Œð	õ ŒG�A‰JŒJˆØ!ˆŒÔå
Œ
×"Ò" 3 3 q¡6¤6¨3¯;ª;°q©>¬>Ñ:Ô:Ð:Ð:Ð:r#   c                 óv   — t           d„ ¦   «         }|                      |t          j        d¦  «        ¦  «         d S )Nc                 óx   — 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  s6   € å”(˜?Ñ+Ô+ˆCÝ”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  sA   € å	ð	ð 	ñ 
Œð	ð 	�Š˜�RœX fÑ-Ô-Ñ.Ô.Ð.Ð.Ð.r#   c                 ó6   — t          d¦  «        d„ ¦   «         }d S )Nú(intp, intp, intp)c                 ób   — 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  sP   € å˜1‘X”Xð 
6ð 
6�Ø˜’6�6Ø˜A’v�vØà&'˜˜à˜A’v�vØà&1°A¡o˜˜ØÐr#   )r   r3   s     r!   Ú$test_issue5482_missing_variable_initz:TestReportedSSAIssues.test_issue5482_missing_variable_initT  s1   € õ 
Ð"Ñ	#Ô	#ð	ð 	ñ 
$Ô	#ð	ð 	ð 	r#   c                 ó–   ‡‡‡‡— ddl m}mŠ ddlmŠmŠ ddlmŠ  G ˆˆˆˆfd„d|¦  «        }t          dd|¬	¦  «        d
„ ¦   «         }d S )Nr   ©r   r
   )r   ÚIRProcessing)ÚPreLowerStripPhisc                   ó    •— e Zd Zˆ ˆˆˆfd„ZdS )úWTestReportedSSAIssues.test_issue5482_objmode_expr_null_lowering.<locals>.CustomPipelinec                 ó´   •—  ‰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  sY   ø€ ØBÐ'ÔBÀ4Ä:ÑNÔN�à×!Ò! .°,Ñ?Ô?Ð?Ø×!Ò!Ð"3°^ÑDÔDÐDØ—’‘”�Ø�t�r#   N©r$   r%   r&   rÓ   )r
   rÉ   rÊ   r   s   €€€€r!   ÚCustomPipelinerÌ   n  s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r#   rÕ   rÁ   F)ÚloopliftÚpipeline_classc                 ób   — 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  sR   € õ ˜1‘X”Xð 
6ð 
6�Ø˜’6�6Ø˜A’v�vØà&'˜˜à˜A’v�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  sÍ   øøøø€ ð 	IÐHÐHÐHÐHÐHÐHÐHØJÐJÐJÐJÐJÐJÐJÐ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                             ||¦  «         t           j                             ||¦  «         d S )	Nr:   r-   )r-   r-   c                 ó,  •— t          |¦  «        dk    r	|d         }n-|d         }t          dt          |¦  «        ¦  «        D ]}|‰z  }Œt          d| ¦  «        D ]8}t          |¦  «        D ]&}‰	}|dk    r||dz
  k    rŒ|}Œ||dz
  k    rŒ!||z   }Œ'Œ9|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Œy˜AŠ~ˆ~Ø˜!”W��à˜!”W�å˜q¥# d¡)¤)Ñ,Ô,ð ð �AØ˜!‘G�B�Bå˜1˜a‘[”[ð :ð :�Ý  ™8œ8ð :ð :�CØ�Aà˜a’x�xØ ! a¡%š<˜<Ø à*+˜K˜Kà ! a¡%š<˜<Ø à*5¸©/˜K˜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 A™JœJÐ'ˆÝŒG�A‰JŒJˆÝŒG�E‰NŒNˆð	ð 	ð 	ð 	ð 	ð 	ð2 ��R˜˜TÑ"Ô"ˆØ�t�C‰yŒy˜˜R Ñ&Ô&ˆØ6Ð1�s˜D¨5Ð1Ñ1Ô1°#Ñ6Ô6°r¸2¸tÑDÔDˆÝ
Œ
×%Ò% f¨dÑ3Ô3Ð3Ý
Œ
×%Ò% f¨dÑ3Ô3Ð3Ð3Ð3r#   c                 óZ  — d„ }t          j        ddg¦  «        } |d|¦  «         t          j        ddg¦  «        } t          |¦  «        d|¦  «         t          j        ddg¦  «        }t           j                             ||¦  «         t           j                             ||¦  «         d S )Nc                 óB   — d}d}| du r|||<   |dz  }|||<   |dz  }d S d S )Nr   r-   Tr'   )rŒ   ÚstackrC   rB   s       r!   r0   zMTestReportedSSAIssues.test_issue5623_equal_statements_in_same_bb.<locals>.foo¯  sD   € Øˆ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�q˜#�hÑÔˆØ�ˆS‰	Œ	�$˜ÑÔÐå”˜1˜a˜&Ñ!Ô!ˆå
Œ
×%Ò% f¨fÑ5Ô5Ð5Ý
Œ
×%Ò% b¨&Ñ1Ô1Ð1Ð1Ð1r#   c                 ój  ‡ ‡‡‡‡	— 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„¦   «         }‰                       |d¦  «        | 	                    d¦  «        ¦  «         ‰  
                    ‰	dg¦  «         d S )Nr   rÈ   )r   r   r	   FT©Úmutates_CFGÚanalysis_onlyc                   óH   •‡ — e Zd Z”j        j        dz   Zˆ fd„Zˆfd„Zˆ xZS )úMTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CheckSSAMinimalz.CheckSSAMinimalc                 óJ   •— t          ¦   «                              | ¦  «         d S r   )ÚsuperÚ__init__)r   Ú	__class__s    €r!   rø   zVTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CheckSSAMinimal.__init__Ô  s!   ø€ Ý‘”× Ò  Ñ&Ô&Ð&Ð&Ð&r#   c           	      óÜ   •— d}|j         j                             ¦   «         D ]4}|t          t	          |                     d¦  «        ¦  «        ¦  «        z  }Œ5‰                     |¦  «         dS )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×  si   ø€ Ø�Ø œ=Ô/×6Ò6Ñ8Ô8ð ;ð ;�CØ�#�d 3§>¢>°%Ñ#8Ô#8Ñ9Ô9Ñ:Ô:Ñ:�B�BØ×"Ò" 2Ñ&Ô&Ð&Ø�tr#   )r$   r%   r&   rù   Ú_namerø   r  Ú__classcell__)rù   r  r   s   @€€r!   ÚCheckSSAMinimalrõ   Î  sd   øø€ € € € € ð ”NÔ/Ð2DÑDˆEð'ð 'ð 'ð 'ð 'ðð ð ð ð ð ð ð ð r#   r  c                   ó   •— e Zd Zˆ ˆˆfd„ZdS )úLTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.CustomPipelinec                 óˆ   •—  ‰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ß  sB   ø€ Ø@Ð'Ô@ÀÄÑLÔL�Ø×!Ò! /°>ÑBÔBÐBØ—’‘”�Ø�t�r#   NrÔ   )r  r
   r   s   €€€r!   rÕ   r	  Þ  s8   ø€ € € € € ðð ð ð ð ð ð ð ð r#   rÕ   ©r×   r-   c                 óè   — t          j        | | f¦  «        }d}||k    rSt          t          |¦  «        ¦  «        D ]+}t          t          |¦  «        ¦  «        D ]}||z   |||f<   ŒŒ,|dz  }||k    °S|S rP   )re   rƒ   r@   rb   )rA   Úmax_iterr™   rC   rL   Úks         r!   Ú	while_forzGTestReportedSSAIssues.test_issue5678_non_minimal_phi.<locals>.while_forå  sŠ   € å”˜!˜A˜‘”ˆAØˆAØ�x’-�-Ý�s 1™vœv™œð 'ð '�AÝ"¥3 q¡6¤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Ä  sd  øøøøø€ ð 	IÐHÐHÐHÐHÐHÐHÐHð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð ˆà	ˆ 5¸Ð	=Ñ	=Ô	=ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	˜lñ 	ô 	ñ 
>Ô	=ð	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	˜\ñ 	ô 	ð 	õ 
˜^Ð	,Ñ	,Ô	,ð	ð 	ð 	ñ 
-Ô	,ð	ð 	×Ò 	 	¨"¡¤¨y×/@Ò/@ÀÑ/DÔ/DÑEÔEÐ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¦  «         d S )Nr   )Ú
FunctionIR)ÚAnalysisPassr	   Úfirc                 ó  •— | j                              ¦   «         ^}}|j                             d¦  «        }|                      |¦  «        }‰                     |j        d¦  «         ‰                     t          j	        |j
        ¦  «         d S )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ü  sw   ø€ Øœ
×)Ò)Ñ+Ô+ˆIˆS�1Ø”)—-’- Ñ$Ô$ˆCØ×%Ò% cÑ*Ô*ˆDØ×Ò˜TœW eÑ,Ô,Ð,Ø�MŠM�"œ,¨Ô(<Ñ=Ô=Ð=Ð=Ð=r#   FTrñ   c                   ó,   •— e Zd ZdZdZˆ fd„Zˆfd„ZdS )úFTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheckz3
            Check SSA on variable `d`
            Ú	SSA_Checkc                 ó2   •— ‰                      | ¦  «         d S r   )rø   )r   r  s    €r!   rø   zOTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheck.__init__  s   ø€ Ø×%Ò% dÑ+Ô+Ð+Ð+Ð+r#   c                 ó(   •—  ‰|j         ¦  «         dS )NF)rü   )r   rÏ   r   s     €r!   r  zOTestReportedSSAIssues.test_issue9242_use_not_dom_def.<locals>.SSACheck.run_pass  s   ø€ Ø��e”mÑ$Ô$Ð$Ø�ur#   N)r$   r%   r&   r~   r  rø   r  )r  r   s   €€r!   ÚSSACheckr"    sX   ø€ € € € € ðð ð  ˆEð,ð ,ð ,ð ,ð ,ðð ð ð ð ð ð r#   r&  c                   ó   •— e Zd ZdZˆ fd„ZdS )ú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|_        |                     ‰t
          ¦  «         |                     ¦   «          |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  sW   ø€ Ý-ÔFØ”JÐ ;ñ=ô =�ð ',�Ô#Ø×'Ò'¨µ.ÑAÔAÐAà×!Ò!Ñ#Ô#Ð#Ø �zÐ!r#   N)r$   r%   r&   r~   rÓ   )r&  s   €r!   ÚSSACheckPipeliner(    s8   ø€ € € € € ðð ð"ð "ð "ð "ð "ð "ð "r#   r-  r  c                 ó,   — | dk    }|r| dz   }|o|dk    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õ  s)  øøøø€ Ø,Ð,Ð,Ð,Ð,Ð,ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
	>�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€   Ð   sì   € € € € € ðð ð ð$ð $ð $ð"
Bð 
Bð 
Bð#ð #ð #ð*1ð 1ð 1ð.ð .ð .ð.;ð ;ð ;ð 	/ð 	/ð 	/ðð ð ð$ð ð ðB$4ð $4ð $4ðL2ð 2ð 2ð./+ð /+ð /+ðb4ð 4ð 4ð 4ð 4r#   r€   c                   ó   — e Zd Zd„ ZdS )ÚTestSROAIssuesc                 ór  ‡‡	— g Š	t          dd¬¦  «         G ˆ	fd„dt          ¦  «        ¦   «         Š G ˆfd„dt          ¦  «        }t          |¬¦  «        d	„ ¦   «         }t	          j        d
¦  «        }|                       ||¦  «        |dz   ¦  «         |                      t          ‰	¦  «        d¦  «         |                      ‰	d         j	        j
        d¦  «         |j        |j        d                  j        d         }|                      t          |j        ¦  «        dd¦  «         |j                             ¦   «         \  }|                     t"          j        ¦  «        }d„ |D ¦   «         }|                      t          |¦  «        dd¦  «         |                      |d         |d         d¦  «         d S )NFT)ró   rò   c                   ó$   •— e Zd ZdZd„ Zˆ fd„ZdS )úZTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CloneFoobarAssignmentsÚclone_foobar_assignments_passc                 ó.   — t          j        | ¦  «         d S r   )r   rø   r]   s    r!   rø   zcTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CloneFoobarAssignments.__init__<  s   € ÝÔ% dÑ+Ô+Ð+Ð+Ð+r#   c                 ól  •— d}|j         j                             ¦   «         D ]‘}g }|                     t          j        ¦  «        D ]'}|j        j        dk    r|                     |¦  «         Œ(|D ]C}t          j
        |¦  «        }|                     ||¦  «         d}‰                     |¦  «         ŒDŒ’|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Ô8ð -ð -�CØ!�Hà"%§.¢.µ´Ñ";Ô";ð 4ð 4˜Ø!œ=Ô-°Ò9Ð9Ø$ŸOšO¨FÑ3Ô3Ð3øà"*ð -ð -˜Ý $¤¨fÑ 5Ô 5˜Ø×(Ò(¨°Ñ7Ô7Ð7Ø"&˜àŸš eÑ,Ô,Ð,Ð,ð-ð �r#   N)r$   r%   r&   r  rø   r  )rD  s   €r!   ÚCloneFoobarAssignmentsr6  7  sD   ø€ € € € € ð 4ˆEð,ð ,ð ,ðð ð ð ð ð ð r#   rE  c                   ó   •— e Zd Zˆ fd„ZdS )úRTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.CustomCompilerc                 óê   •— t          j        | j        d¦  «        }d|_        |                     ‰t
          ¦  «         |                     t          t          ¦  «         |                     ¦   «          |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  sg   ø€ Ý'Ô@Ø”JÐ 1ñô �ð !&�”à×!Ò!Ð"8½.ÑIÔIÐ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 blockc                 ó2   — g | ]}|j         j        d k    ¯|‘ŒS )r:  )r=  r>  )Ú.0Ústmts     r!   ú
<listcomp>zNTestSROAIssues.test_issue7258_multiple_assignment_post_SSA.<locals>.<listcomp>n  s1   € ð ;ð ;ð ; 4Ø!œ[Ô-°Ò9Ð9ð Ø9Ð9Ð9r#   r:   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Úfoobar_assignsrE  rD  s
           @@r!   Ú+test_issue7258_multiple_assignment_post_SSAz:TestSROAIssues.test_issue7258_multiple_assignment_post_SSA1  s  øø€ ð ˆå	 U¸Ð	=Ñ	=Ô	=ð	ð 	ð 	ð 	ð 	ð 	ð 	¥\ñ 	ô 	ñ 
>Ô	=ð	ð0	ð 	ð 	ð 	ð 	ð 	ð 	�\ñ 	ô 	ð 	õ 
˜^Ð	,Ñ	,Ô	,ð	ð 	ñ 
-Ô	,ð	õ Œi˜‰mŒmˆà×Ò   C¡¤¨#°©'Ñ2Ô2Ð2à×Ò�˜V™œ aÑ(Ô(Ð(Ø×Ò˜ œÔ)Ô.°Ñ9Ô9Ð9àŒm˜CœN¨1Ô-Ô.Ô7¸ÔGˆØ×Ò�˜SœZ™œ¨!Ø)ñ	+ô 	+ð 	+à”
×!Ò!Ñ#Ô#‰ˆØ—.’.¥¤Ñ+Ô+ˆð;ð ;¨7ð ;ñ ;ô ;ˆà×ÒÝ�ÑÔ Ø>ñ	
ô 	
ð 	
ð 	×ÒØ˜1Ô˜~¨aÔ0ØCñ	
ô 	
ð 	
ð 	
ð 	
r#   N)r$   r%   r&   rY  r'   r#   r!   r3  r3  ,  s(   € € € € € ð
F
ð F
ð F
ð F
ð 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>ri     s'  ððð ð €
€
€
Ø €€€Ø €€€à Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø $Ð $Ð $Ð $Ð $Ð $Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jð 
€à	ð =à"�Ô"Ð#3Ñ4Ô4€JØ×Ò˜gœmÐÑ,Ô,Ð,Ø×ÒÐ/˜'Ô/°´
Ñ;Ô;Ñ<Ô<Ð<ð#ð #ð #ð #ð #�(ñ #ô #ð #ðh&ð h&ð h&ð h&ð h&ˆkñ h&ô h&ð h&ðVYð Yð Yð Yð Y˜Kñ Yô Yð Yðx
K
ð K
ð K
ð K
ð K
�_ hñ K
ô K
ð K
ð K
ð K
r#   