§
    ƒÛgr  ã                   ó  — d dl mZ d dlZd dlZd dlZd dlZd dlm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 d dlmZ d dlmZ d dlmZ  G d	„ d
e¦  «        Z G d„ de¦  «        Zedk    r e	j        ¦   «          dS dS )é    )Ú
namedtupleN)Údedent)ÚTestCaseÚoverride_configÚignore_internal_warnings)ÚjitÚnjit)Útypes)Údefault_manager)ÚNumbaDebugInfoWarningc                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestDebugInfozF
    These tests only checks the compiled assembly for debuginfo.
    c                 óV   — |                      |¦  «         |                     |¦  «        S ©N)ÚcompileÚinspect_asm©ÚselfÚfnÚsigs      úP/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_debuginfo.pyÚ_getasmzTestDebugInfo._getasm   s#   € Ø
�
Š
�3‰ŒˆØ�~Š~˜cÑ"Ô"Ð"ó    c                 ó²   — |                       ||¬¦  «        }t          j        d|t          j        ¦  «        }|d u}|                      ||d|z  ¬¦  «         d S )N©r   z\.section.+debugzdebug info not found in:
%s)Úmsg)r   ÚreÚsearchÚIÚassertEqual)r   r   r   ÚexpectÚasmÚmÚgots          r   Ú_checkzTestDebugInfo._check    s]   € Ø�lŠl˜2 3ˆlÑ'Ô'ˆÝŒIÐ)¨3µ´Ñ5Ô5ˆØ�tˆmˆØ×Ò˜ Ð*HÈ3Ñ*NÐÑOÔOÐOÐOÐOr   c                 ó€   — t          dd¬¦  «        d„ ¦   «         }|                      |t          j        fd¬¦  «         d S )NTF©ÚnopythonÚdebugc                 ó   — | S r   © ©Úxs    r   Úfooz3TestDebugInfo.test_no_debuginfo_in_asm.<locals>.foo'   ó   € àˆHr   ©r   r!   ©r   r%   r
   Úint32©r   r.   s     r   Útest_no_debuginfo_in_asmz&TestDebugInfo.test_no_debuginfo_in_asm&   sM   € Ý	�d %Ð	(Ñ	(Ô	(ð	ð 	ñ 
)Ô	(ð	ð 	�Š�C�eœk˜^°EˆÑ:Ô:Ð:Ð:Ð:r   c                 ó€   — t          dd¬¦  «        d„ ¦   «         }|                      |t          j        fd¬¦  «         d S )NTr'   c                 ó   — | S r   r+   r,   s    r   r.   z0TestDebugInfo.test_debuginfo_in_asm.<locals>.foo.   r/   r   r0   r1   r3   s     r   Útest_debuginfo_in_asmz#TestDebugInfo.test_debuginfo_in_asm-   sM   € Ý	�d $Ð	'Ñ	'Ô	'ð	ð 	ñ 
(Ô	'ð	ð 	�Š�C�eœk˜^°DˆÑ9Ô9Ð9Ð9Ð9r   c                 óJ  — t          dd¦  «        5  t          d¬¦  «        d„ ¦   «         }|                      |t          j        fd¬¦  «         t          dd¬¦  «        d	„ ¦   «         }|                      |t          j        fd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
NÚDEBUGINFO_DEFAULTé   T)r(   c                 ó   — | S r   r+   r,   s    r   r.   z4TestDebugInfo.test_environment_override.<locals>.foo7   ó   € à�r   r0   Fr'   c                 ó   — | S r   r+   r,   s    r   Úbarz4TestDebugInfo.test_environment_override.<locals>.bar=   r<   r   )r   r   r%   r
   r2   )r   r.   r>   s      r   Útest_environment_overridez'TestDebugInfo.test_environment_override4   sý   € ÝÐ0°!Ñ4Ô4ð 	?ð 	?å˜$ÐÑÔðð ñ  Ôðà�KŠK˜¥%¤+ ¸ˆKÑ=Ô=Ð=õ ˜$ eÐ,Ñ,Ô,ðð ñ -Ô,ðà�KŠK˜¥%¤+ ¸ˆKÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?s   ‘A:BÂBÂBc                 ó^  ‡‡‡— t          d¬¦  «        d„ ¦   «         Št          d¬¦  «        d„ ¦   «         Št           ˆˆfd„¦   «         }t          dd¦  «        5   |t          j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      ||                     t          j        ¦  «        ¦  «         |                     |j        d	         ¦  «        }t          j	        |¦  «        }|j
        |j        d	                  j        j        Šˆfd
„|j        D ¦   «         }|                      t          |¦  «        d¦  «         |d	         }g }|j        D ]K}|j        D ]A}	|	j        dk    r4|                     t)          |	¦  «                             ¦   «         ¦  «         ŒBŒLd}
d}‰j
        ‰j        d	                  j        j        }|D ]8}|
st-          j        d|¦  «        rd}
|st-          j        d|› d�|¦  «        rd}Œ9|                      |
¦  «         |                      |¦  «         d S )NT)Úforceinlinec                 ó*   — t          j        | ¦  «        S r   )ÚmathÚsinr,   s    r   r>   z:TestDebugInfo.test_llvm_inliner_flag_conflict.<locals>.barG   ó   € å”8˜A‘;”;Ðr   Fc                 ó*   — t          j        | ¦  «        S r   )rC   Úcosr,   s    r   Úbazz:TestDebugInfo.test_llvm_inliner_flag_conflict.<locals>.bazK   rE   r   c                 ó8   •—  ‰| ¦  «        } ‰| ¦  «        }||fS r   r+   )r-   ÚaÚbr>   rH   s      €€r   r.   z:TestDebugInfo.test_llvm_inliner_flag_conflict.<locals>.fooO   s&   ø€ à��A‘”ˆAØ��A‘”ˆAØ�a�4ˆKr   r9   r:   r   c                 ó*   •— g | ]}|j         ‰k    ¯|‘ŒS r+   ©Úname©Ú.0r-   rN   s     €r   ú
<listcomp>zATestDebugInfo.test_llvm_inliner_flag_conflict.<locals>.<listcomp>_   ó    ø€ Ð?Ð?Ð?�q°´¸$²°�°°°r   Úcallz.*llvm.sin.f64.*z.*)r	   r   ÚnpÚpiÚassertPreciseEqualÚpy_funcÚinspect_llvmÚ
signaturesÚllvmÚparse_assemblyÚ	overloadsÚfndescÚmangled_nameÚ	functionsr    ÚlenÚblocksÚinstructionsÚopcodeÚappendÚstrÚstripr   ÚmatchÚ
assertTrue)r   r.   ÚresultÚfull_irÚmoduleÚfuncsÚfuncÚf_namesÚblkÚstmtÚ	found_sinÚ	found_bazÚbaz_namer-   r>   rH   rN   s                 @@@r   Útest_llvm_inliner_flag_conflictz-TestDebugInfo.test_llvm_inliner_flag_conflictB   s«  øøø€ õ
 
˜$Ð	Ñ	Ô	ð	ð 	ñ 
 Ô	ð	õ 
˜%Ð	 Ñ	 Ô	 ð	ð 	ñ 
!Ô	 ð	õ 
ð	ð 	ð 	ð 	ð 	ñ 
Œð	õ Ð0°!Ñ4Ô4ð 	 ð 	 Ø�S�œ‘Z”ZˆFð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	×Ò ¨¯ªµB´EÑ(:Ô(:Ñ;Ô;Ð;ð ×"Ò" 3¤>°!Ô#4Ñ5Ô5ˆÝÔ$ WÑ-Ô-ˆØŒ}˜Sœ^¨AÔ.Ô/Ô6ÔCˆØ?Ð?Ð?Ð?˜FÔ,Ð?Ñ?Ô?ˆØ×Ò�˜U™œ QÑ'Ô'Ð'Ø�QŒxˆð ˆØ”;ð 	6ð 	6ˆCØÔ(ð 6ð 6�Ø”; &Ò(Ð(à—N’N¥3 t¡9¤9§?¢?Ñ#4Ô#4Ñ5Ô5Ð5øð6ð ˆ	Øˆ	Ø”= ¤°Ô!2Ô3Ô:ÔGˆØð 	!ð 	!ˆAØð !¥¤Ð*<¸aÑ!@Ô!@ð !Ø �	Øð !¥¤Ð*;¨xÐ*;Ð*;Ð*;¸QÑ!?Ô!?ð !Ø �	øà�Š˜	Ñ"Ô"Ð"Ø�Š˜	Ñ"Ô"Ð"Ð"Ð"s   ÁA;Á;A?ÂA?N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   r4   r7   r?   rt   r+   r   r   r   r      s{   € € € € € ðð ð#ð #ð #ðPð Pð Pð;ð ;ð ;ð:ð :ð :ð?ð ?ð ?ð6#ð 6#ð 6#ð 6#ð 6#r   r   c                   óÖ   — e Zd ZdZddiZd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
 ej        e¬
¦  «        d„ ¦   «         Z ej        e¬
¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestDebugInfoEmissionz1 Tests that debug info is emitted correctly.
    Ú	NUMBA_OPTÚ0c                 óª   — t          dd¦  «        5  |                     |¦  «         |                     |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NÚOPTr   )r   r   rX   r   s      r   Ú_get_llvmirz!TestDebugInfoEmission._get_llvmir�   s”   € Ý˜U AÑ&Ô&ð 	(ð 	(Ø�JŠJ�s‰OŒOˆOØ—?’? 3Ñ'Ô'ð	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   ‘*AÁAÁAc                 óà   — |                       ||¦  «                             ¦   «         }t          j        d¦  «        }g }|D ],}|                     |¦  «        r|                     |¦  «         Œ-|S )Nz![0-9]+ =.*)r   Ú
splitlinesr   r   rg   rd   )r   r   r   ÚllÚmeta_reÚmetadataÚlines          r   Ú_get_metadataz#TestDebugInfoEmission._get_metadata†   sr   € Ø×Ò˜b #Ñ&Ô&×1Ò1Ñ3Ô3ˆÝ”*˜^Ñ,Ô,ˆØˆØð 	&ð 	&ˆDØ�}Š}˜TÑ"Ô"ð &Ø—’ Ñ%Ô%Ð%øØˆr   c                 óº   — t          ¦   «         }t          j        d¦  «        }|D ]5}|                     |¦  «        }|r|                     ¦   «         \  }}|||<   Œ6|S )zdGets the map of DI label to md, e.g.
        '!33' -> '!{!"branch_weights", i32 1, i32 99}'
        z(![0-9]+) = (.*))Údictr   r   rg   Úgroups)r   r„   Úmetadata_definition_mapÚmeta_definition_splitr…   ÚmatchedÚdbg_valÚinfos           r   Ú_get_metadata_mapz'TestDebugInfoEmission._get_metadata_map�   sn   € õ #'¡&¤&ÐÝ "¤
Ð+>Ñ ?Ô ?ÐØð 	8ð 	8ˆDØ+×1Ò1°$Ñ7Ô7ˆGØð 8Ø '§¢Ñ 0Ô 0‘�˜Ø37Ð'¨Ñ0øØ&Ð&r   c                 ó  — |                       |¦  «        }t          ¦   «         }|                     ¦   «         D ]P}t          j        d|¦  «        }|r7t          |                     d¦  «        ¦  «        }|                     |¦  «         ŒQ|S )Nz!DILocation\(line: (\d+),r:   )r�   ÚsetÚvaluesr   rg   ÚintÚgroupÚadd)r   r„   Ú
md_def_mapÚlinesÚmdr#   Úlns          r   Ú_get_lines_from_debuginfoz/TestDebugInfoEmission._get_lines_from_debuginfoœ   s}   € à×+Ò+¨HÑ5Ô5ˆ
å‘”ˆØ×#Ò#Ñ%Ô%ð 	ð 	ˆBÝ”Ð5°rÑ:Ô:ˆAØð Ý˜Ÿš ™œ‘_”_�Ø—	’	˜"‘”�øØˆr   c                 ó
  — t          d¬¦  «        d„ ¦   «         }|                      |d¬¦  «        }|d         }|                      d|d d…         ¦  «         |                      d	|¦  «         |                      d
|¦  «         d S )NT©r)   c                  ó   — d S r   r+   r+   r   r   r.   z/TestDebugInfoEmission.test_DW_LANG.<locals>.fooª   ó   € àˆDr   r+   r   r   z!0é   z,!DICompileUnit(language: DW_LANG_C_plus_pluszproducer: "clang (Numba)")r	   r†   r    ÚassertIn)r   r.   r„   ÚDICompileUnits       r   Útest_DW_LANGz"TestDebugInfoEmission.test_DW_LANG¨   s    € å	�DÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð ×%Ò% c¨rÐ%Ñ2Ô2ˆØ  œˆØ×Ò˜˜}¨R¨a¨RÔ0Ñ1Ô1Ð1Ø�ŠÐDØ#ñ	%ô 	%ð 	%à�ŠÐ1°=ÑAÔAÐAÐAÐAr   c                 ó¤  ‡#‡$‡%— t          dd¬¦  «        d„ ¦   «         }t          j        f}|                      ||¬¦  «        }|                      ||¬¦  «        }t          j        |¦  «        }|j        |j        d                  j	        j
        Š$ˆ$fd„|j        D ¦   «         }|                      t          |¦  «        d¦  «         |d         }d	„ |j        D ¦   «         }|                      t          |¦  «        d¦  «         |d         }	d
„ |	j        D ¦   «         }
h d£}d}|
D ]C}|j        |v r|                     |j        ¦  «         |sd}Œ*|r|r|                      d¦  «         ŒD|                      |d¦  «         t+          ¦   «         }t-          j        d¦  «        }d}|
D ]å}t1          |¦  «        Š#|                     ‰#¦  «        }|s1d}|                      t7          ˆ#fd„|D ¦   «         ¦  «        ¦  «         ŒY|                     ¦   «         }|                      t          |¦  «        d¦  «         |d         }t;          |dd…         ¦  «        }|dk    r|                      ||k    ¦  «         |}|                     |¦  «         Œæt?          j         |¦  «        \  }Š%|  !                    |¦  «        }g d¢}ˆ%fd„|D ¦   «         }tE          tG          |d„ ¬¦  «        |¦  «        D ]&\  }}||         }|  $                    d|› �|¦  «         Œ'd}t-          j        |¦  «        }| %                    ¦   «         D ]ƒ} |                     | ¦  «        }|rj|                     ¦   «         }|                      t          |¦  «        d¦  «         t;          |d         ¦  «        }!‰%dz   }"|                      |!|"¦  «          dS Œ„|                      d¦  «         dS )z: Tests that DILocation information is reasonable.
        TÚnumpy)r)   Úerror_modelc                 óB   — | dz   }|dz  }||z  }t          |¦  «         |S )Ng®Gáz®ó?g¸…ëQ¸@)Úprint)rJ   rK   ÚcÚds       r   r.   z2TestDebugInfoEmission.test_DILocation.<locals>.foo¸   s-   € à�D‘ˆAØ�D‘ˆAØ�A‘ˆAÝ�!‰HŒHˆHØˆHr   r   r   c                 ó*   •— g | ]}|j         ‰k    ¯|‘ŒS r+   rM   rO   s     €r   rQ   z9TestDebugInfoEmission.test_DILocation.<locals>.<listcomp>Ù   rR   r   r:   c                 ó   — g | ]}|‘ŒS r+   r+   ©rP   r-   s     r   rQ   z9TestDebugInfoEmission.test_DILocation.<locals>.<listcomp>Ü   ó   € Ð)Ð)Ð)˜�!Ð)Ð)Ð)r   c                 ó(   — g | ]}|j         d k    ¯|‘ŒS )rS   )rc   r¬   s     r   rQ   z9TestDebugInfoEmission.test_DILocation.<locals>.<listcomp>á   s$   € ÐFÐFÐF˜°1´8¸vÒ3EÐ3E�!Ð3EÐ3EÐ3Er   >   ÚfaddÚfdivÚfmulFzMath opcodes are not contiguouszMath opcodes were not foundz.*!dbg (![0-9]+).*$éÿÿÿÿ)zalloca zstore c                 ó   •— g | ]}|‰v ‘ŒS r+   r+   )rP   r-   Úinst_as_strs     €r   rQ   z9TestDebugInfoEmission.test_DILocation.<locals>.<listcomp>û   s   ø€ Ð$HÐ$HÐ$H¸! Q¨+Ð%5Ð$HÐ$HÐ$Hr   N)r   r:   rŸ   é   c                 ó    •— g | ]
}‰d z   |z   ‘ŒS )rŸ   r+   )rP   r-   Úpysrc_line_starts     €r   rQ   z9TestDebugInfoEmission.test_DILocation.<locals>.<listcomp>  s$   ø€ Ð@Ð@Ð@°1Ð&¨Ñ*¨QÑ.Ð@Ð@Ð@r   c                 ó0   — t          | dd …         ¦  «        S ©Nr:   )r“   r,   s    r   ú<lambda>z7TestDebugInfoEmission.test_DILocation.<locals>.<lambda>  s   € ½sÀ1ÀQÀRÀRÄ5¹z¼z€ r   )Úkeyzline: z1.*!DILocalVariable\(name: "a",.*line: ([0-9]+),.*z%Assertion on DILocalVariable not made)&r	   r
   Úfloat64r†   r   rZ   r[   r\   rY   r]   r^   r_   r    r`   ra   ÚassertGreaterrb   rc   ÚremoveÚfailÚassertFalser‘   r   r   re   rg   rh   Úanyr‰   r“   r•   ÚinspectÚgetsourcelinesr�   ÚzipÚsortedr    r’   )&r   r.   r   r„   rj   rk   rl   rm   ra   ÚblockÚinstrsÚ	op_expectÚstartedr-   Úline2dbgÚ
re_dbg_refÚfoundÚinstrrŒ   Úacceptedr‰   r�   Úint_dbg_valÚpysrcrŠ   ÚoffsetsÚ
pyln_rangeÚkÚline_noÚdilocation_infoÚexprÚmatch_local_var_aÚentryÚdbg_lineÚdefliner´   rN   r·   s&                                      @@@r   Útest_DILocationz%TestDebugInfoEmission.test_DILocationµ   sM  øøø€ õ 
�D gÐ	.Ñ	.Ô	.ð	ð 	ñ 
/Ô	.ð	õ2 Œ}ÐˆØ×%Ò% c¨sÐ%Ñ3Ô3ˆØ×"Ò" 3¨CÐ"Ñ0Ô0ˆåÔ$ WÑ-Ô-ˆàŒ}˜Sœ^¨AÔ.Ô/Ô6ÔCˆØ?Ð?Ð?Ð?˜FÔ,Ð?Ñ?Ô?ˆØ×Ò�˜U™œ QÑ'Ô'Ð'Ø�QŒxˆØ)Ð)˜Tœ[Ð)Ñ)Ô)ˆØ×Ò�3˜v™;œ;¨Ñ*Ô*Ð*Ø�q”	ˆð GÐF˜UÔ/ÐFÑFÔFˆØ,Ð,Ð,ˆ	ØˆØð 	=ð 	=ˆAØŒx˜9Ð$Ð$Ø× Ò  ¤Ñ*Ô*Ð*Øð #Ø"�GøØð =˜wð =Ø—	’	Ð;Ñ<Ô<Ð<øØ×Ò˜Ð$AÑBÔBÐBõ
 ‘5”5ˆÝ”ZÐ 6Ñ7Ô7ˆ
ØˆØð 	"ð 	"ˆEÝ˜e™*œ*ˆKØ ×&Ò& {Ñ3Ô3ˆGØð ð 1�Ø—’¥Ð$HÐ$HÐ$HÐ$H¸xÐ$HÑ$HÔ$HÑ IÔ IÑJÔJÐJØØ—^’^Ñ%Ô%ˆFØ×Ò�S ™[œ[¨!Ñ,Ô,Ð,Ø˜Q”iˆGÝ˜g a b bœkÑ*Ô*ˆKØ˜ŠzˆzØ—’ ¨uÒ 4Ñ5Ô5Ð5ØˆEð �LŠL˜Ñ!Ô!Ð!Ð!å")Ô"8¸Ñ"=Ô"=ÑˆÐð #'×"8Ò"8¸Ñ"BÔ"BÐð
ð ð ˆð
 AÐ@Ð@Ð@¸Ð@Ñ@Ô@ˆ
õ  ¥ xÐ5IÐ5IÐ JÑ JÔ JØ *ñ,ô ,ð 	?ð 	?‰LˆQ�à5°aÔ8ˆOØ�MŠMÐ, 7Ð,Ð,¨oÑ>Ô>Ð>Ð>ð DˆÝœJ tÑ,Ô,ÐØ,×3Ò3Ñ5Ô5ð 	?ð 	?ˆEØ'×-Ò-¨eÑ4Ô4ˆGØð 	Ø ŸšÑ)Ô)�Ø× Ò ¥ V¡¤¨aÑ0Ô0Ð0Ý˜v aœy™>œ>�ð +¨QÑ.�Ø× Ò  ¨7Ñ3Ô3Ð3Ø��ð	ð �IŠIÐ=Ñ>Ô>Ð>Ð>Ð>r   )Úenvvarsc                 óÞ  ‡— t          d¬¦  «        d„ ¦   «         } |d¦  «         |                     |j        d         ¦  «        }t          j        |¦  «        }|j        |j        d                  j        j        Šˆfd„|j        D ¦   «         }|  	                    t          |¦  «        d¦  «         |d         }d„ |j        D ¦   «         }|  	                    t          |¦  «        d	¦  «         |\  }}d
„ |j        D ¦   «         }	|	d         }
|  	                    |
j        d¦  «         d„ |
j        D ¦   «         }|  	                    t          |¦  «        d¦  «         |d         }t          |¦  «                             d¦  «        d                              ¦   «         }|  	                    ||j        ¦  «         |                      t          |
¦  «                             |¦  «        ¦  «         d S )NTrœ   c                 ó   — | dz   S r¹   r+   ©rJ   s    r   r.   z<TestDebugInfoEmission.test_DILocation_entry_blk.<locals>.foo@  s   € à�q‘5ˆLr   é{   r   c                 ó*   •— g | ]}|j         ‰k    ¯|‘ŒS r+   rM   rO   s     €r   rQ   zCTestDebugInfoEmission.test_DILocation_entry_blk.<locals>.<listcomp>T  rR   r   r:   c                 ó   — g | ]}|‘ŒS r+   r+   r¬   s     r   rQ   zCTestDebugInfoEmission.test_DILocation_entry_blk.<locals>.<listcomp>W  r­   r   rŸ   c                 ó   — g | ]}|‘ŒS r+   r+   r¬   s     r   rQ   zCTestDebugInfoEmission.test_DILocation_entry_blk.<locals>.<listcomp>]  s   € Ð;Ð;Ð;˜Q�qÐ;Ð;Ð;r   r²   Úbrc                 ó   — g | ]}|‘ŒS r+   r+   r¬   s     r   rQ   zCTestDebugInfoEmission.test_DILocation_entry_blk.<locals>.<listcomp>`  s   € Ð2Ð2Ð2˜q˜Ð2Ð2Ð2r   ú:)r	   rX   rY   rZ   r[   r\   r]   r^   r_   r    r`   ra   rb   rc   Úoperandsre   Úsplitrf   rN   rh   Úendswith)r   r.   rj   rk   rl   rm   ra   Úentry_blockÚ
body_blockÚentry_instrÚujmpÚujmp_operandsÚtarget_dataÚtargetrN   s                 @r   Útest_DILocation_entry_blkz/TestDebugInfoEmission.test_DILocation_entry_blk0  sÞ  ø€ õ  
�DÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	àˆˆC‰Œˆà×"Ò" 3¤>°!Ô#4Ñ5Ô5ˆõ Ô$ WÑ-Ô-ˆØŒ}˜Sœ^¨AÔ.Ô/Ô6ÔCˆØ?Ð?Ð?Ð?˜FÔ,Ð?Ñ?Ô?ˆØ×Ò�˜U™œ QÑ'Ô'Ð'Ø�QŒxˆØ)Ð)˜Tœ[Ð)Ñ)Ô)ˆØ×Ò�˜V™œ aÑ(Ô(Ð(Ø"(Ñˆ�Zð <Ð; +Ô":Ð;Ñ;Ô;ˆØ˜2ŒˆØ×Ò˜œ dÑ+Ô+Ð+Ø2Ð2 D¤MÐ2Ñ2Ô2ˆØ×Ò�˜]Ñ+Ô+¨QÑ/Ô/Ð/Ø# AÔ&ˆÝ�[Ñ!Ô!×'Ò'¨Ñ,Ô,¨QÔ/×5Ò5Ñ7Ô7ˆà×Ò˜ ¤Ñ1Ô1Ð1à�Š�˜D™	œ	×*Ò*¨6Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3r   c                 ó°  ‡— t          d¬¦  «        d„ ¦   «         Št          d¬¦  «        ˆfd„¦   «         }t          j        ddd…         f}|                      ||¬¦  «        }d}|                     ¦   «         D ]F}|                     ¦   «         }|                     d	¦  «        r|                      |d
¦  «         |dz  }ŒG|                      |d¦  «         dS )zË This tests that decref's generated from `ir.Del`s as variables go
        out of scope do not have debuginfo associated with them (the location of
        `ir.Del` is an implementation detail).
        Trœ   c                  ó   — d S r   r+   r,   s    r   Úsinkz:TestDebugInfoEmission.test_DILocation_decref.<locals>.sinkp  rž   r   c                 ó^   •— | | f}| d         dk    r ‰|¦  «         dS |d         d         }|S )Nr   é   r+   )rJ   r-   Úzrô   s      €r   r.   z9TestDebugInfoEmission.test_DILocation_decref.<locals>.foou  s=   ø€ à�A�ˆAØ�Œt�qŠyˆyØ��Q‘”�Ø�rØ�!”�Q”ˆAØˆHr   Nr:   r   r   zcall void @NRT_decrefz.*meminfo\.[0-9]+\)$)	r	   r
   r¼   r   r�   rf   Ú
startswithÚassertRegexr½   )r   r.   r   rj   Úcountr…   Úline_strippedrô   s          @r   Útest_DILocation_decrefz,TestDebugInfoEmission.test_DILocation_decrefi  s  ø€ õ 
�DÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ 
�DÐ	Ñ	Ô	ð	ð 	ð 	ð 	ñ 
Ô	ð	õ Œ}˜S˜S˜q˜SÔ!Ð#ˆØ×"Ò" 3¨CÐ"Ñ0Ô0ˆð ˆØ×&Ò&Ñ(Ô(ð 	ð 	ˆDØ ŸJšJ™LœLˆMØ×'Ò'Ð(?Ñ@Ô@ð Ø× Ò  Ð'>Ñ?Ô?Ð?Ø˜‘
�øØ×Ò˜5 !Ñ$Ô$Ð$Ð$Ð$r   c                 ó^  — t          d¬¦  «        d„ ¦   «         }t          j        f}|                      ||¬¦  «        }t	          j        |¦  «        \  }}d}t          j        |¦  «        }t          ¦   «         }|D ]x}	| 	                    |	¦  «        }
|
r_|
 
                    ¦   «         }|                      t          |¦  «        d¦  «         |                     t          |d         ¦  «        ¦  «         Œy|                      t          |¦  «        d¦  «         |                      ||¦  «         d	S )
z� Tests that DILocation information for undefined vars is associated
        with the line of the function definition (so it ends up in the prologue)
        Trœ   c                 ó(   — | r
| dk    rd}|S |dz  }|S )Nr   r:   r+   )Únr¨   s     r   r.   z<TestDebugInfoEmission.test_DILocation_undefined.<locals>.fooŽ  s-   € àð Ø�q’5�5Ø�AØ�ð �Q‘�Ø�r   r   z:.*!DILocalVariable\(name: "c\$?[0-9]?",.*line: ([0-9]+),.*r:   r   rµ   N)r	   r
   Úintpr†   rÂ   rÃ   r   r   r‘   rg   r‰   r    r`   r•   r“   r    )r   r.   r   r„   rÐ   r·   rÖ   ÚmatcherÚassociated_linesr˜   rg   r‰   s               r   Útest_DILocation_undefinedz/TestDebugInfoEmission.test_DILocation_undefinedŠ  s+  € õ 
�DÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ ŒzˆmˆØ×%Ò% c¨sÐ%Ñ3Ô3ˆÝ")Ô"8¸Ñ"=Ô"=ÑˆÐàLˆÝ”*˜TÑ"Ô"ˆÝ™5œ5ÐØð 	5ð 	5ˆBØ—M’M "Ñ%Ô%ˆEØð 5ØŸš™œ�Ø× Ò ¥ V¡¤¨aÑ0Ô0Ð0Ø ×$Ò$¥S¨°¬¡^¤^Ñ4Ô4Ð4øà×Ò�Ð-Ñ.Ô.°Ñ2Ô2Ð2Ø�ŠÐ&Ð(8Ñ9Ô9Ð9Ð9Ð9r   c                 ó"  — t          d¬¦  «        d„ ¦   «         }t          j        f}|                      ||¬¦  «        }t	          j        |¦  «        \  }}d}t          j        |¦  «        }t          ¦   «         }|D ]x}	| 	                    |	¦  «        }
|
r_|
 
                    ¦   «         }|                      t          |¦  «        d¦  «         |                     t          |d         ¦  «        ¦  «         Œy|                      t          |¦  «        d¦  «         t          ¦   «         }t          |¦  «        D ]!\  }}d	|v r|                     ||z   ¦  «         Œ"|                      t          |¦  «        d¦  «         |                      ||¦  «         d
S )zi Tests that DILocation information for versions of variables matches
        up to their definition site.Trœ   c                 ó$   — | rd}nd}d}d}d}d}|S )Né   r:   rŸ   rµ   é   r+   )rÿ   r¨   Úpy310_defeat1Úpy310_defeat2Úpy310_defeat3Úpy310_defeat4s         r   r.   zFTestDebugInfoEmission.test_DILocation_versioned_variables.<locals>.foo°  s/   € àð Ø��à�àˆMØˆMØˆMØˆMØˆHr   r   z9.*!DILocalVariable\(name: "c\$[0-9]?",.*line: ([0-9]+),.*r:   r   rŸ   zc = N)r	   r
   r   r†   rÂ   rÃ   r   r   r‘   rg   r‰   r    r`   r•   r“   Ú	enumerate)r   r.   r   r„   rÐ   r·   rÖ   r  r  r˜   rg   r‰   Úpy_linesÚixÚpylns                  r   Ú#test_DILocation_versioned_variablesz9TestDebugInfoEmission.test_DILocation_versioned_variablesª  s•  € õ 
�DÐ	Ñ	Ô	ð
	ð 
	ñ 
Ô	ð
	õ ŒzˆmˆØ×%Ò% c¨sÐ%Ñ3Ô3ˆÝ")Ô"8¸Ñ"=Ô"=ÑˆÐð LˆÝ”*˜TÑ"Ô"ˆÝ™5œ5ÐØð 	5ð 	5ˆBØ—M’M "Ñ%Ô%ˆEØð 5ØŸš™œ�Ø× Ò ¥ V¡¤¨aÑ0Ô0Ð0Ø ×$Ò$¥S¨°¬¡^¤^Ñ4Ô4Ð4øØ×Ò�Ð-Ñ.Ô.°Ñ2Ô2Ð2õ ‘5”5ˆÝ! %Ñ(Ô(ð 	4ð 	4‰HˆB�Ø˜ˆ~ˆ~Ø—’˜RÐ"2Ñ2Ñ3Ô3Ð3øØ×Ò�˜X™œ¨Ñ*Ô*Ð*ð 	×ÒÐ)¨8Ñ4Ô4Ð4Ð4Ð4r   c                 óè  ‡— t          dd¦  «        }t          j         |ddd¦  «        t          j         |ddd¦  «        t          j         |dd	d
¦  «        t          j         |ddd
¦  «        t          j         |ddd
¦  «        t          j         |ddd
¦  «        t          j         |dd	d¦  «        t          j	         |ddd¦  «        t          j
         |ddd¦  «        t          j         |ddd¦  «        t          j         |ddd¦  «        t          j         |ddd¦  «        i}|                     ¦   «         D �]4\  Š}t          d¬¦  «        ˆfd„¦   «         }|                      |d¬¦  «        }|                      |¦  «        }|                     ¦   «         D ]\  }}d|v r
||         }	 nŒJ d¦   «         ‚t%          j        d |	¦  «                             ¦   «         d         }
||
         }d!|j        v r2d"|j        › d#|j        › d$|j        › d%�}|                      ||¦  «         Œï|j        dk    rd&nd'}d(|j        › d)|j        › d*|› d+|› d,|j        › �
}|                      ||¦  «         �Œ6d-S ).z@ Tests that dwarf info is correctly emitted for numeric scalars.ÚDIzname bits encodingÚfloat32é    ÚDW_ATE_floatr¼   é@   Úint8é   ÚDW_ATE_signedÚint16é   r2   Úint64Úuint8ÚDW_ATE_unsignedÚuint16Úuint32Úuint64Ú	complex64ÚDW_TAG_structure_typeÚ
complex128é€   Trœ   c                  ó   •—  ‰d¦  «        } | S )Né
   r+   )rJ   Útys    €r   r.   z7TestDebugInfoEmission.test_numeric_scalars.<locals>.fooî  s   ø€ à�B�r‘F”F�Ø�r   r+   r   úDILocalVariable(name: "a"r   úmissing DILocalVariable 'a'ú.*type: (![0-9]+).*ÚDW_ATEz!DIBasicType(name: "ú	", size: z, encoding: ú)ÚfloatÚdoublezdistinct !DICompositeType(tag: z	, name: "z ({z, z})", size: N)r   rT   r  r¼   r  r  r2   r  r  r  r   r!  r"  r$  Úitemsr	   r†   r�   r   rg   r‰   ÚencodingrN   Úbitsr    r    )r   r  Ú
type_infosÚ
dwarf_infor.   r„   rŠ   rÓ   ÚvÚlvarÚtype_markerÚ	type_declÚexpectedÚraw_fltr(  s                 @r   Útest_numeric_scalarsz*TestDebugInfoEmission.test_numeric_scalarsØ  s  ø€ õ ˜Ð2Ñ3Ô3ˆå”j " " Y°°NÑ"CÔ"CÝ”j " " Y°°NÑ"CÔ"CÝ”g˜r˜r &¨!¨_Ñ=Ô=Ý”h   7¨B°Ñ @Ô @Ý”h   7¨B°Ñ @Ô @Ý”h   7¨B°Ñ @Ô @Ý”h   7¨AÐ/@Ñ AÔ AÝ”i   H¨bÐ2CÑ!DÔ!DÝ”i   H¨bÐ2CÑ!DÔ!DÝ”i   H¨bÐ2CÑ!DÔ!DÝ”l B B {°BØ'>ñ%@ô %@å”m R R¨°cØ(?ñ&Aô &AðCˆ
ð )×.Ò.Ñ0Ô0ð !	3ñ !	3‰NˆB�
å˜ÐÑÔðð ð ð ñ Ôðð ×)Ò)¨#°2Ð)Ñ6Ô6ˆHØ&*×&<Ò&<¸XÑ&FÔ&FÐ#à/×5Ò5Ñ7Ô7ð 8ð 8‘��1Ø.°!Ð3Ð3Ø2°1Ô5�DØ�Eð 4ð 8Ð7Ñ7Ô7Ð7åœ(Ð#8¸$Ñ?Ô?×FÒFÑHÔHÈÔKˆKØ/°Ô<ˆIà˜:Ô.Ð.Ð.ð@°:´?ð @ð @Ø%/¤_ð@ð @à)3Ô)<ð@ð @ð @�ð × Ò  ¨HÑ5Ô5Ð5Ð5ð &0¤_¸Ò%:Ð%:˜'˜'À�ð7Ø$.Ô$7ð7ð 7à&0¤oð7ð 7ð #*ð7ð 7ð .5ð7ð 7ð &0¤_ð	7ð 7�ð
 —’˜h¨	Ñ2Ô2Ð2Ñ2ðC!	3ð !	3r   c           
      óŒ  — t          d¬¦  «        d„ ¦   «         }|                      |d¬¦  «        }|                      |¦  «        }|                     ¦   «         D ]\  }}d|v r
||         } nŒJ d¦   «         ‚t	          j        d	|¦  «                             ¦   «         d         }||         }|                      d
|¦  «         |                      dt          t          j
        d d …d d d…f         ¦  «        › �|¦  «         t	          j        d¦  «        }	|	                     |¦  «                             ¦   «         }
|                      t          |
¦  «        d¦  «         |
d         }||         }d}t	          j        |¦  «        }|                     |¦  «                             ¦   «         }|                      |d u¦  «         t          j        t          j
        d d …d d d…f         ¦  «        }|                      t          |¦  «        t          |j        ¦  «        ¦  «         t          j        j        }d|› d�}d|› d|› d�}d|› d|› dd|z  › d|› d�	}|||||||dœ}d}t	          j        |¦  «        }t)          |j        ¦  «        D ]»\  }}|||                  }|                      d|¦  «         |                      d|› d�|¦  «         |                     |¦  «        }|                     ¦   «         }|                      t          |¦  «        d¦  «         |d         }||         }|                      |||         ¦  «         Œ¼d S )NTrœ   c                  óF   — t          j        dt           j        ¬¦  «        } | S )N)rŸ   rµ   )Údtype)rT   Úonesr¼   rß   s    r   r.   z.TestDebugInfoEmission.test_arrays.<locals>.foo  s   € å”˜¥b¤jÐ1Ñ1Ô1ˆAØˆHr   r+   r   r)  r   r*  r+  z+!DICompositeType(tag: DW_TAG_structure_typezname: "r:   z.*elements: (![0-9]+),.*zN!{(![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+)}zC!DIDerivedType\(tag: DW_TAG_pointer_type, baseType: ![0-9]+, size: z\)z!DIBasicType\(name: "intr-  z, encoding: DW_ATE_signed\)z>!DICompositeType\(tag: DW_TAG_array_type, name: "UniTuple\(intz x 2\) \(\[2 x iz \]\)", baseType: ![0-9]+, size: rŸ   z), elements: ![0-9]+, identifier: "\[2 x iz\]"\))ÚmeminfoÚparentÚnitemsÚitemsizeÚdataÚshapeÚstridesz*!DIDerivedType\(.*, baseType: (![0-9]+),.*ÚDIDerivedTypeú")r	   r†   r�   r1  r   rg   r‰   r    re   r
   r¼   r   r    r`   ÚassertIsNotNoner   ÚlookupÚ_fieldsr   Úbitwidthr  rù   )r   r.   r„   rŠ   rÓ   r6  r7  r8  r9  Úmatch_elementsÚelem_matchesÚ
elem_matchÚstruct_markersÚstruct_patternÚmatch_structÚstruct_member_matchesÚ
data_modelÚptr_sizeÚptr_reÚint_reÚ	utuple_rer:  Úbase_type_patternÚbase_type_matcherr  ÚfieldÚderived_typeÚbase_type_matchÚbase_type_matchesÚbase_type_markerÚ	data_types                                  r   Útest_arraysz!TestDebugInfoEmission.test_arrays  sÒ  € å	�DÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð ×%Ò% c¨rÐ%Ñ2Ô2ˆØ"&×"8Ò"8¸Ñ"BÔ"BÐà+×1Ò1Ñ3Ô3ð 	4ð 	4‰DˆAˆqØ*¨aÐ/Ð/Ø.¨qÔ1�Ø�ð 0ð 4Ð3Ñ3Ô3Ð3å”hÐ4°dÑ;Ô;×BÒBÑDÔDÀQÔGˆØ+¨KÔ8ˆ	ð 	�ŠÐCÀYÑOÔOÐOà�ŠÐ<¥¥E¤M°!°!°!°S°S°q°S°&Ô$9Ñ :Ô :Ð<Ð<¸iÑHÔHÐHõ œÐ$?Ñ@Ô@ˆØ%×+Ò+¨IÑ6Ô6×=Ò=Ñ?Ô?ˆØ×Ò�˜\Ñ*Ô*¨AÑ.Ô.Ð.Ø! !”_ˆ
ð 1°Ô<ˆØ@ˆÝ”z .Ñ1Ô1ˆØ ,× 2Ò 2°>Ñ BÔ B× IÒ IÑ KÔ KÐØ×ÒÐ2¸$Ð>Ñ?Ô?Ð?Ý$Ô+­E¬M¸!¸!¸!¸S¸S¸q¸S¸&Ô,AÑBÔBˆ
Ø×Ò�Ð2Ñ3Ô3µS¸Ô9KÑ5LÔ5LÑMÔMÐMå”:Ô&ˆð<Ø/7ð<ð <ð <ˆð/¨hð /ð /Àð /ð /ð /ˆð=Ø-5ð=ð =à"*ð=ð =ð  ! 8™|ð=ð =ð .6ð	=ð =ð =ˆ	ð
  &Ø$Ø$Ø &Ø"Ø&Ø(ð*ð *ˆð JÐÝœJÐ'8Ñ9Ô9Ðå" :Ô#5Ñ6Ô6ð 		9ð 		9‰IˆB�Ø2Ð3HÈÔ3LÔMˆLØ�MŠM˜/¨<Ñ8Ô8Ð8Ø�MŠMÐ, EÐ,Ð,Ð,¨lÑ;Ô;Ð;Ø/×5Ò5°lÑCÔCˆOØ /× 6Ò 6Ñ 8Ô 8ÐØ×Ò�SÐ!2Ñ3Ô3°QÑ7Ô7Ð7Ø0°Ô3ÐØ/Ð0@ÔAˆIØ×Ò˜Y¨°¬Ñ8Ô8Ð8Ð8ð		9ð 		9r   c           	      ó  ‡ — ˆ fd„}d„ }d„ } t          d¬¦  «        |¦  «        } t          dd¬¦  «        |¦  «        } t          ddd¬¦  «        |¦  «        }|j        j        }i }t          d|d	z   ht	          ¦   «         t	          d
g¦  «        ¬¦  «        ||<   t          t	          t          |dz   |dz   ¦  «        ¦  «        t	          d
g¦  «        t	          ¦   «         ¬¦  «        ||<   t          d|d	z   ht	          dg¦  «        t	          d
g¦  «        ¬¦  «        ||<    |¦   «         }	|                     ¦   «         D ]È\  }
}‰                      |
j        ¦  «        5   |
¦   «         }‰  	                    ||	¦  «         ‰  	                     ||
¦  «        |d         ¦  «          ||
¦  «        }|d         }‰  	                    ||z  |¦  «         |d         }‰  
                    ||z  ¦  «         d d d ¦  «         n# 1 swxY w Y   ŒÉd S )Nc                 ót   •— ‰                      | | j        d         ¦  «        }‰                     |¦  «        }|S )Nr   )r†   rY   rš   )r   r„   r—   r   s      €r   Úget_debug_lineszATestDebugInfoEmission.test_debug_optnone.<locals>.get_debug_linesZ  s7   ø€ Ø×)Ò)¨"¨b¬m¸AÔ.>Ñ?Ô?ˆHØ×2Ò2°8Ñ<Ô<ˆEØˆLr   c                 óþ   — | j         | j        d                  }|j        }|j                             |j        j        ¦  «        } t          d                     | j	        ¦  «         
                    ¦   «         ¦  «        }|S )Nr   ó    )r\   rY   ÚlibraryÚ_final_moduleÚget_functionr]   r^   r‘   ÚjoinÚ
attributesrè   )r   ÚcresÚlibÚattrss       r   Úget_func_attrsz@TestDebugInfoEmission.test_debug_optnone.<locals>.get_func_attrs_  sc   € Ø”< ¤¨aÔ 0Ô1ˆDØ”,ˆCØÔ"×/Ò/°´Ô0HÑIÔIˆBÝ˜Ÿ	š	 "¤-Ñ0Ô0×6Ò6Ñ8Ô8Ñ9Ô9ˆEØˆLr   c                  ó<   — d} d}t          | ¦  «        D ]}||z  }Œ|S )Nr'  r   )Úrange)rÿ   r¨   Úis      r   r.   z5TestDebugInfoEmission.test_debug_optnone.<locals>.foof  s1   € ØˆAØˆAÝ˜1‘X”Xð ð �Ø�Q‘��ØˆHr   Trœ   )r)   Ú_dbg_optnone)r)   rt  rA   r   r  s   optnone)r—   Úmust_have_attrsÚmust_not_have_attrsr:   é   s   alwaysinliner—   ru  rv  )r	   Ú__code__Úco_firstlinenorˆ   r‘   rr  r1  ÚsubTestÚtargetoptionsr    rÀ   )r   re  rp  r.   Ú	foo_debugÚfoo_debug_optnoneÚfoo_debug_optnone_inlineÚ	firstlineÚexpected_infoÚexpected_retÚudtr:  r$   ro  Ú	must_haveÚmust_not_haves   `               r   Útest_debug_optnonez(TestDebugInfoEmission.test_debug_optnoneY  sÀ  ø€ ð	ð 	ð 	ð 	ð 	ð
	ð 	ð 	ð	ð 	ð 	ð %•D˜tÐ$Ñ$Ô$ SÑ)Ô)ˆ	Ø?�D t¸$Ð?Ñ?Ô?ÀÑDÔDÐð$:¥4¨dÀØ48ð$:ñ $:ô $:Ø:=ñ$?ô $?Ð ð ”LÔ/ˆ	àˆÝ#'à�i !‘mÐ$Ý™EœEÝ # Z LÑ 1Ô 1ð	$
ñ $
ô $
ˆ�iÑ õ ,0å•e˜I¨™M¨9°q©=Ñ9Ô9Ñ:Ô:Ý  Ñ-Ô-Ý #¡¤ð	,
ñ ,
ô ,
ˆÐ'Ñ(õ 37ð �i !‘mÐ$Ý Ð 1Ñ2Ô2Ý # Z LÑ 1Ô 1ð3
ñ 3
ô 3
ˆÐ.Ñ/ð �s‘u”uˆà*×0Ò0Ñ2Ô2ð 	8ð 	8‰MˆC�Ø—’˜cÔ/Ñ0Ô0ð 8ð 8Ø�c‘e”e�Ø× Ò   lÑ3Ô3Ð3ð × Ò   °Ñ!5Ô!5°xÀÔ7HÑIÔIÐIð '˜ sÑ+Ô+�Ø$Ð%6Ô7�	Ø× Ò  ¨Ñ!2°IÑ>Ô>Ð>Ø (Ð)>Ô ?�Ø× Ò  ¨Ñ!6Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8øð	8ð 	8s   Å BG>Ç>H	ÈH	c                 óš  — t          d¬¦  «        dd„¦   «         }t          dd¦  «        5   |¦   «          d d d ¦  «         n# 1 swxY w Y   |                      |t          j        d ¦  «        f¬¦  «        }|                      |¦  «        }g }|D ]}d|v r|                     |¦  «         Œ|                      t          |¦  «        d¦  «         | 	                    ¦   «         }t          j        d|¦  «        }|                      |¦  «         |                     ¦   «         }|                      t          |¦  «        d¦  «         |d	         }	||	         }
t          j        d
|
¦  «        }|                      |¦  «         |                     ¦   «         }|                      t          |¦  «        d¦  «         d„ |d	                              d¦  «        D ¦   «         d         }||         }d}|                      ||¦  «         t          j        ||¦  «                             ¦   «         d	         }||         }|                      |d¦  «         d S )NTrœ   c                 ó   — d S r   r+   )Úmissings    r   r.   z3TestDebugInfoEmission.test_omitted_arg.<locals>.fooœ  rž   r   r9   r:   r   ÚDISubroutineTypez(.*!DISubroutineType\(types: ([!0-9]+)\)$r   z!{(.*)}c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r+   )rf   r¬   s     r   rQ   z:TestDebugInfoEmission.test_omitted_arg.<locals>.<listcomp>¾  s    € ÐJÐJÐJ 1�Q—W’W‘Y”YÐJÐJÐJr   ú,r²   zy^.*!DICompositeType\(tag: DW_TAG_structure_type, name: "Anonymous struct \({}\)", elements: (![0-9]+), identifier: "{}"\)z!{}r   )r	   r   r†   r
   ÚOmittedr�   rd   r    r`   Úpopr   rg   rJ  r‰   rè   rù   )r   r.   r„   rŠ   Ú
tmp_disubrr˜   ÚdisubrÚdisubr_matchedÚdisubr_groupsÚdisubr_metaÚdisubr_typesÚdisubr_types_matchedÚdisubr_types_groupsÚ	md_fn_argÚarg_tyÚexpected_arg_tyÚ
md_base_tyÚbase_tys                     r   Útest_omitted_argz&TestDebugInfoEmission.test_omitted_argš  s¢  € å	�DÐ	Ñ	Ô	ð	ð 	ð 	ñ 
Ô	ð	õ Ð0°!Ñ4Ô4ð 	ð 	ØˆC‰EŒEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×%Ò% cµ´¸dÑ0CÔ0CÐ/EÐ%ÑFÔFˆØ"&×"8Ò"8¸Ñ"BÔ"BÐð ˆ
Øð 	&ð 	&ˆBØ! RÐ'Ð'Ø×!Ò! "Ñ%Ô%Ð%øØ×Ò�˜Z™œ¨!Ñ,Ô,Ð,Ø—’Ñ!Ô!ˆåœÐ"MØ"(ñ*ô *ˆà×Ò˜^Ñ,Ô,Ð,Ø&×-Ò-Ñ/Ô/ˆØ×Ò�˜]Ñ+Ô+¨QÑ/Ô/Ð/Ø# AÔ&ˆð /¨{Ô;ˆÝ!œx¨
°LÑAÔAÐØ×Ò˜^Ñ,Ô,Ð,Ø2×9Ò9Ñ;Ô;ÐØ×Ò�Ð0Ñ1Ô1°1Ñ5Ô5Ð5ð KÐJÐ(;¸AÔ(>×(DÒ(DÀSÑ(IÔ(IÐJÑJÔJÈ2ÔNˆ	Ø(¨Ô3ˆð<ˆð 	×Ò˜ Ñ1Ô1Ð1Ý”X˜o¨vÑ6Ô6×=Ò=Ñ?Ô?ÀÔBˆ
Ø)¨*Ô5ˆà×Ò˜ 5Ñ*Ô*Ð*Ð*Ð*s   «AÁAÁ	Ac                 ó˜  — d}t          ¦   «         }t          t          |¦  «        i |¦  «          t          d¬¦  «        |d         ¦  «        }t	          j        d¬¦  «        5 }t	          j        dt          ¦  «         t          ¦   «           |¦   «          d d d ¦  «         n# 1 swxY w Y   |  	                    t          |¦  «        d¦  «         |d         }|  	                    |j        t          ¦  «         t          |j        ¦  «        }|                      d	|¦  «         |                      t          |j        ¦  «        |¦  «         d S )
Nz1
        def foo():
            return 1
        Trœ   r.   ©ÚrecordÚalwaysr:   r   z"Could not find source for function)rˆ   Úexecr   r	   ÚwarningsÚcatch_warningsÚsimplefilterr   r   r    r`   Úcategoryre   Úmessager    rW   )r   ÚstrsrcÚlr.   ÚwrÌ   r   s          r   Útest_missing_sourcez)TestDebugInfoEmission.test_missing_sourceÉ  sc  € ðˆõ ‰FŒFˆÝ�V�F‰^Œ^˜R Ñ#Ô#Ð#Ø�d˜ÐÑÔ˜q œxÑ(Ô(ˆåÔ$¨DÐ1Ñ1Ô1ð 	°QÝÔ! (Õ,AÑBÔBÐBÝ$Ñ&Ô&Ð&ØˆC‰EŒEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 	×Ò�˜Q™œ Ñ#Ô#Ð#Ø�!”ˆØ×Ò˜œÕ)>Ñ?Ô?Ð?Ý�%”-Ñ Ô ˆà�ŠÐ:¸CÑ@Ô@Ð@à�Š•c˜#œ+Ñ&Ô&¨Ñ,Ô,Ð,Ð,Ð,s   Á#3B"Â"B&Â)B&c                 óî  — t          d¬¦  «        d„ ¦   «         }t          j        d¬¦  «        5 }t          j        dt          ¦  «         t          ¦   «           |¦   «          d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         |                      ||j	        d         ¦  «        }|  
                    |¦  «        }|                      t          |¦  «        d¦  «         d S )NTrœ   c                  ó   — dS r¹   r+   r+   r   r   r.   zCTestDebugInfoEmission.test_irregularly_indented_source.<locals>.fooâ  s	   € ð �1r   r�  rŸ  r   r:   )r	   r¡  r¢  r£  r   r   r    r`   r†   rY   rš   )r   r.   r¨  r„   r—   s        r   Ú test_irregularly_indented_sourcez6TestDebugInfoEmission.test_irregularly_indented_sourceà  s)  € å	�DÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ Ô$¨DÐ1Ñ1Ô1ð 	°QÝÔ! (Õ,AÑBÔBÐBÝ$Ñ&Ô&Ð&ØˆC‰EŒEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×Ò�˜Q™œ Ñ#Ô#Ð#à×%Ò% c¨3¬>¸!Ô+<Ñ=Ô=ˆØ×.Ò.¨xÑ8Ô8ˆà×Ò�˜U™œ QÑ'Ô'Ð'Ð'Ð's   ¯3A.Á.A2Á5A2N)ru   rv   rw   rx   Ú_NUMBA_OPT_0_ENVr   r†   r�   rš   r¢   rÛ   r   Úrun_test_in_subprocessrñ   rü   r  r  r<  rb  r…  r›  r©  r¬  r+   r   r   rz   rz   {   si  € € € € € ðð ð $ SÐ)Ðð(ð (ð (ð
ð ð ð'ð 'ð 'ð
ð 
ð 
ðBð Bð Bðy?ð y?ð y?ðv %€XÔ$Ð-=Ð>Ñ>Ô>ð64ð 64ñ ?Ô>ð64ðp %€XÔ$Ð-=Ð>Ñ>Ô>ð%ð %ñ ?Ô>ð%ð@:ð :ð :ð@,5ð ,5ð ,5ð\53ð 53ð 53ðnH9ð H9ð H9ðT?8ð ?8ð ?8ðB-+ð -+ð -+ð^-ð -ð -ð.(ð (ð (ð (ð (r   rz   Ú__main__)Úcollectionsr   rÂ   r   r¤   rT   rC   Útextwrapr   Úunittestr¡  Únumba.tests.supportr   r   r   Únumbar   r	   Ú
numba.corer
   Únumba.core.datamodelr   Únumba.core.errorsr   Úllvmlite.bindingÚbindingrZ   r   rz   ru   Úmainr+   r   r   ú<module>r»     s€  ðØ "Ð "Ð "Ð "Ð "Ð "Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;à Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð ða#ð a#ð a#ð a#ð a#�Hñ a#ô a#ð a#ðHw	(ð w	(ð w	(ð w	(ð w	(˜Hñ w	(ô w	(ð w	(ðt ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   