§
    1@Äjp  ã                   ó²  — d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d d
l)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?  G d„ de=¦  «        Z@ e@¦   «         ZAdeA_B        g d¢ZC G d„ d edeC¦  «        ¦  «        ZD edg d¢¦  «        ZEd„ ZFd„ ZGd+d„ZH G d„ deI¦  «        ZJ G d„ deK¦  «        ZL G d„ deM¦  «        ZNd „ ZO G d!„ d"eI¦  «        ZP G d#„ d$eP¦  «        ZQ G d%„ d&eI¦  «        ZRdeQfd'„ZSd(dddeQfd)„ZTd*„ ZUdS ),é    )Ú
namedtupleN)Úevent)ÚerrorsÚinterpreterÚbytecodeÚpostprocÚconfigÚcallconvÚcpu)ÚParforDiagnostics)ÚCompilerError)Úlookup_environment)ÚPassManager)ÚExtractByteCodeÚTranslateByteCodeÚ	FixupArgsÚIRProcessingÚDeadBranchPruneÚRewriteSemanticConstantsÚInlineClosureLikesÚGenericRewritesÚWithLiftingÚInlineInlinablesÚFindLiterallyCallsÚMakeFunctionToJitFunctionÚCanonicalizeLoopExitÚCanonicalizeLoopEntryÚLiteralUnrollÚReconstructSSAÚRewriteDynamicRaisesÚ!LiteralPropagationSubPipelinePass)ÚNopythonTypeInferenceÚAnnotateTypesÚNopythonRewritesÚPreParforPassÚ
ParforPassÚDumpParforDiagnosticsÚIRLegalizationÚNoPythonBackendÚInlineOverloadsÚPreLowerStripPhisÚNativeLoweringÚNativeParforLoweringÚ"NoPythonSupportedFeatureValidationÚParforFusionPassÚParforPreLoweringPass)ÚObjectModeFrontEndÚObjectModeBackEnd)ÚTargetConfigÚOptionÚConfigStackc                   óì  — e Zd ZdZ eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z	 eedd	¬¦  «        Z
 eedd
¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eej         ej        d¦  «        d¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eej         ej        d¦  «        d¬¦  «        Z eedd¬¦  «        Z eej         ej        d¦  «        d¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z dS )ÚFlags© FzEnable loop-lifting)ÚtypeÚdefaultÚdocz!Enable pyobject mode (in general)z(Enable pyobject mode inside lifted loopsTz
Enable SSAz-Force pyobject mode inside the whole functionz&Release GIL inside the native functionÚTODOz7Force inlining of the function. Overrides _dbg_optnone.zŽEnable automatic parallel optimization, can be fine-tuned by
taking a dictionary of sub-options instead of a boolean, see parfor.py for
detailÚpythonÚneverzTExtend variable lifetime for debugging. This automatically turns on with debug=True.z\Disable optimization for debug. Equivalent to adding optnone attribute in the LLVM Function.zDMake debug emissions directives-only. Used when generating lineinfo.N)!Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r4   ÚboolÚenable_loopliftÚenable_pyobjectÚenable_pyobject_loopliftÚ
enable_ssaÚforce_pyobjectÚrelease_gilÚ
no_compileÚ	debuginfoÚboundscheckÚforceinlineÚno_cpython_wrapperÚno_cfunc_wrapperr   ÚParallelOptionsÚauto_parallelÚnrtÚno_rewritesÚstrÚerror_modelÚFastMathOptionsÚfastmathÚnoaliasÚInlineOptionsÚinlineÚdbg_extend_lifetimesÚdbg_optnoneÚdbg_directives_onlyr8   ó    úDC:\Projects\Historical\venv\Lib\site-packages\numba/core/compiler.pyr7   r7   *   s'  € € € € € Ø€Ià�fØØØ!ðñ ô €Oð
 �fØØØ/ðñ ô €Oð
  &˜vØØØ6ð ñ  ô  Ðð
 �ØØØðñ ô €Jð
 �VØØØ;ðñ ô €Nð
 �&ØØØ4ðñ ô €Kð
 �ØØØðñ ô €Jð
 �ØØØðñ ô €Ið
 �&ØØØðñ ô €Kð
 �&ØØØEðñ ô €Kð
  ˜ØØØðñ ô Ðð
 �vØØØðñ ô Ðð
 �FØÔ Ø#�Ô# EÑ*Ô*ð
ðñ ô €Mð ˆ&ØØØðñ ô €Cð
 �&ØØØðñ ô €Kð
 �&ØØØðñ ô €Kð
 ˆvØÔ Ø#�Ô# EÑ*Ô*Øðñ ô €Hð
 ˆfØØØðñ ô €Gð
 ˆVØÔØ!�Ô! 'Ñ*Ô*Øðñ ô €Fð "˜6ØØð<ðñ ô Ðð �&ØØðLðñ ô €Kð !˜&ØØð.ðñ ô ÐÐÐr^   r7   T)Útyping_contextÚtarget_contextÚentry_pointÚtyping_errorÚtype_annotationÚ	signatureÚ
objectmodeÚliftedÚfndescÚlibraryÚcall_helperÚenvironmentÚmetadataÚreload_initÚreferenced_envsc                   óV   — e Zd ZdZdZd„ Zd„ Zed„ ¦   «         Ze	d„ ¦   «         Z
d
d„Zd	S )ÚCompileResultzI
    A structure holding results from the compilation of a function.
    r8   c                 ó  — | j                              ¦   «         }t          | j        ¦  «        }| j        }dx|_        |_        |                      ¦   «         }|| j        | j        | j	        | j
        | j        || j        t          |¦  «        f	S )zA
        Reduce a CompileResult to picklable components.
        N)ri   Úserialize_using_object_coderT   rd   rh   ÚtypemapÚ	calltypesÚ_find_referenced_environmentsrk   re   rf   rg   rm   Útuple)ÚselfÚlibdataÚtypeannrh   rn   s        r_   Ú_reducezCompileResult._reduceÄ   sƒ   € ð ”,×:Ò:Ñ<Ô<ˆå�dÔ*Ñ+Ô+ˆØ”ˆà,0Ð0ˆŒ˜Ô)à×<Ò<Ñ>Ô>ˆØ˜œ dÔ&6¸¼Ø” ¤¨g°tÔ7GÝ�oÑ&Ô&ð(ð 	(r^   c                 óâ   — | j         j        }g }|j        D ]X}|j        }|                     d¦  «        r:t          |¦  «        }|�)|                     ¦   «         r|                     |¦  «         ŒY|S )z2Returns a list of referenced environments
        Ú_ZN08NumbaEnv)ri   Ú_final_moduleÚglobal_variablesÚnameÚ
startswithr   Ú	can_cacheÚappend)rw   Úmodrn   ÚgvÚgvnÚenvs         r_   ru   z+CompileResult._find_referenced_environmentsÔ   s}   € ð ŒlÔ(ˆàˆØÔ&ð 	4ð 	4ˆBØ”'ˆCØ�~Š~˜oÑ.Ô.ð 4Ý(¨Ñ-Ô-�Ø�?Ø—}’}‘”ð 4Ø'×.Ò.¨sÑ3Ô3Ð3øØÐr^   c                 ó,  — |	r|	D ]} |¦   «          Œ|                      ¦   «                              |¦  «        }|                     |||¦  «        } | ||j        ||||||||d d d |	|
¬¦  «        }|
D ]"}|j                              |j        |¦  «         Œ#|S )N)ra   r`   ri   rk   rb   rh   rd   re   rf   rg   rc   rj   rl   rm   rn   )ÚcodegenÚunserialize_libraryÚget_executabler`   Úset_envÚenv_name)Úclsra   rx   rh   r†   re   rf   rg   ry   rm   rn   Úfnri   ÚcfuncÚcrs                  r_   Ú_rebuildzCompileResult._rebuildã   sÖ   € ð ð 	à!ð ð �Ø�‘”��à ×(Ò(Ñ*Ô*×>Ò>¸wÑGÔGˆØ×-Ò-¨g°v¸sÑCÔCˆØˆS Ø .Ô =Ø Ø Ø"ØØ!(Ø$Ø&ØØ"Ø!ØØ(Ø!0ðñ ô ˆð$ #ð 	7ð 	7ˆCØŒO×#Ò# C¤L°#Ñ6Ô6Ð6Ð6àˆ	r^   c                 ó4   — | j                              ¦   «         S ©N)ra   rˆ   ©rw   s    r_   rˆ   zCompileResult.codegen  s   € àÔ"×*Ò*Ñ,Ô,Ð,r^   Ú c                 óÂ   — t          |› dt          | ¦  «        j        › d| j        › �¦  «         | j                             |dz   ¬¦  «         t          |› d�¦  «         d S )NzDUMP ú z  )ÚtabzEND DUMP)Úprintr9   r?   rb   re   Údump)rw   r˜   s     r_   rš   zCompileResult.dump	  sl   € Ý�ÐCÐC�4 ™:œ:Ô.ÐCÐC°Ô1AÐCÐCÑDÔDÐDØŒ×Ò  d¡
ÐÑ+Ô+Ð+Ý�ÐÐÐÑÔÐÐÐr^   N)r•   )r?   r@   rA   Ú__doc__rB   rz   ru   Úclassmethodr‘   Úpropertyrˆ   rš   r8   r^   r_   rp   rp   ½   sŽ   € € € € € ðð ð €Ið(ð (ð (ð ð ð ð ðð ñ „[ððB ð-ð -ñ „Xð-ð ð  ð  ð  ð  ð  r^   rp   Ú_CompileResultÚ_LowerResult)rh   rj   r�   r†   c                 óò   — t          |                      ¦   «         ¦  «        }t          t          ¦  «        }||z
  }|r	t          |Ž ‚||z
  }|D ]}d | |<   Œ| d         }|�|                     d ¦  «        | d<   | S )Nrc   )ÚsetÚkeysÚ	CR_FIELDSÚ	NameErrorÚwith_traceback)Úentriesr¢   ÚfieldsetÚbadnamesÚmissingÚkÚerrs          r_   Úsanitize_compile_result_entriesr¬     s�   € Ýˆw�|Š|‰~Œ~ÑÔ€DÝ•9‰~Œ~€HØ�h‰€HØð #Ý˜Ð"Ð"Ø˜‰o€GØð ð ˆØˆ�‰
ˆ
à
�.Ô
!€CØ
€Ø"%×"4Ò"4°TÑ":Ô":ˆ�ÑØ€Nr^   c                  ó8   — t          | ¦  «        } t          di | ¤ŽS ©Nr8   )r¬   rp   )r¦   s    r_   Úcompile_resultr¯   '  s#   € Ý-¨gÑ6Ô6€GÝÐ#Ð#˜7Ð#Ð#Ð#r^   Fc                 óŠ  — t           j                             | ¦  «        }t          j        |¦  «        }t          j        |¬¦  «        }|                     |¦  «        }|r:ddlm}  ||t          j
        d¦  «        i d¦  «        }|                     ¦   «          t          j        |¦  «        }	|	                     |¦  «         |S )a  
    Run the compiler frontend over the given Python function, and return
    the function's canonical Numba IR.

    If inline_closures is Truthy then closure inlining will be run
    If emit_dels is Truthy the ir.Del nodes will be emitted appropriately
    )Úfunc_idr   )ÚInlineClosureCallPassF)r   ÚFunctionIdentityÚfrom_functionr   ÚInterpreterÚByteCodeÚ	interpretÚnumba.core.inline_closurecallr²   r   rP   Úrunr   ÚPostProcessor)
ÚfuncÚinline_closuresÚ	emit_delsr±   ÚinterpÚbcÚfunc_irr²   Úinline_passÚ	post_procs
             r_   Úrun_frontendrÃ   ,  sÇ   € õ Ô'×5Ò5°dÑ;Ô;€GÝÔ$ WÑ-Ô-€FÝ	Ô	 7Ð	+Ñ	+Ô	+€BØ×Ò˜rÑ"Ô"€GØð ØGÐGÐGÐGÐGÐGØ+Ð+¨GµSÔ5HÈÑ5OÔ5OØ,.°ñ7ô 7ˆà�ŠÑÔÐÝÔ& wÑ/Ô/€IØ‡M‚M�)ÑÔÐØ€Nr^   c                   ó&   — e Zd ZdZddgZd„ Zd„ ZdS )Ú_CompileStatuszC
    Describes the state of compilation. Used like a C record.
    Úfail_reasonÚcan_fallbackc                 ó"   — d | _         || _        d S r“   )rÆ   rÇ   )rw   rÇ   s     r_   Ú__init__z_CompileStatus.__init__I  s   € ØˆÔØ(ˆÔÐÐr^   c           
      ó´   — g }| j         D ]:}|                     d                     |t          | |¦  «        ¬¦  «        ¦  «         Œ;d                     |¦  «        S )Nz{k}={v})rª   Úvz, )rB   r‚   ÚformatÚgetattrÚjoin)rw   Úvalsrª   s      r_   Ú__repr__z_CompileStatus.__repr__M  s\   € ØˆØ”ð 	Cð 	CˆAØ�KŠK˜	×(Ò(¨1µ¸¸aÑ0@Ô0@Ð(ÑAÔAÑBÔBÐBÐBØ�yŠy˜‰ŒÐr^   N)r?   r@   rA   r›   rB   rÉ   rÐ   r8   r^   r_   rÅ   rÅ   C  sH   € € € € € ðð ð  Ð/€Ið)ð )ð )ðð ð ð ð r^   rÅ   c                   ó   — e Zd ZdZd„ ZdS )Ú_EarlyPipelineCompletionz@
    Raised to indicate that a pipeline has completed early
    c                 ó   — || _         d S r“   )Úresult)rw   rÔ   s     r_   rÉ   z!_EarlyPipelineCompletion.__init__Y  s   € ØˆŒˆˆr^   N)r?   r@   rA   r›   rÉ   r8   r^   r_   rÒ   rÒ   T  s-   € € € € € ðð ðð ð ð ð r^   rÒ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú	StateDictz�
    A dictionary that has an overloaded getattr and setattr to permit getting
    and setting key/values through the use of attributes.
    c                 óN   — 	 | |         S # t           $ r t          |¦  «        ‚w xY wr“   )ÚKeyErrorÚAttributeError)rw   Úattrs     r_   Ú__getattr__zStateDict.__getattr__c  s:   € ð	'Ø˜”:ÐøÝð 	'ð 	'ð 	'Ý  Ñ&Ô&Ð&ð	'øøøs   ‚
 Š$c                 ó   — || |<   d S r“   r8   )rw   rÚ   Úvalues      r_   Ú__setattr__zStateDict.__setattr__i  s   € ØˆˆT‰
ˆ
ˆ
r^   N)r?   r@   rA   r›   rÛ   rÞ   r8   r^   r_   rÖ   rÖ   ]  s<   € € € € € ðð ð
'ð 'ð 'ðð ð ð ð r^   rÖ   c                 óê   — i }|j         rd|d<   |j        rd|d<   |j        rd|d<   |j        r
|j        |d<   |j        r
|j        |d<   t          j        |j        | ¦  «        }||d<    | j        di |¤ŽS )	zL
    Make a new target context from the given target context and flags.
    TÚenable_debuginfoÚenable_boundscheckÚ
enable_nrtrQ   rW   rU   r8   )	rK   rL   rR   rQ   rW   r
   Úcreate_error_modelrU   Ú	subtarget)Ú	targetctxÚflagsÚsubtargetoptionsrU   s       r_   Ú_make_subtargetrè   m  s·   € ð ÐØ„ð 4Ø/3ÐÐ+Ñ,ØÔð 6Ø15ÐÐ-Ñ.Ø„yð .Ø)-Ð˜Ñ&ØÔð @Ø,1Ô,?Ð˜Ñ)Ø„~ð 6Ø',¤~Ð˜Ñ$ÝÔ-¨eÔ.?ÀÑKÔK€KØ&1Ð�]Ñ#àˆ9ÔÐ2Ð2Ð!1Ð2Ð2Ð2r^   c                   ó>   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zd„ Zd	„ Z	d
„ Z
dS )ÚCompilerBasez4
    Stores and manages states for the compiler
    c                 ó@  — t          j        ¦   «          |                     ¦   «          |                     ¦   «          t          ¦   «         | _        || j        _        t          ||¦  «        | j        _        || j        _        || j        _	        || j        _
        || j        _        || j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        i | j        _        g | j        _        | | j        _        t1          ¦   «         | j        _        | j        j        | j        j        d<   i | j        j        d<   t5          | j        j        j        ¬¦  «        | j        _        d S )NÚparfor_diagnosticsÚparfors)rÇ   )r	   Úreload_configÚrefreshrÖ   ÚstateÚ	typingctxrè   rå   ri   ÚargsÚreturn_typeræ   Úlocalsr¿   r±   rÀ   rg   Úlifted_fromrs   rt   rd   rl   rm   Úpipeliner   rì   rÅ   rE   Ústatus)rw   rñ   rå   ri   rò   ró   ræ   rô   s           r_   rÉ   zCompilerBase.__init__‡  sc  € õ 	ÔÑÔÐØ×ÒÑÔÐØ×ÒÑÔÐå‘[”[ˆŒ
à(ˆŒ
ÔÝ.¨y¸%Ñ@Ô@ˆŒ
ÔØ$ˆŒ
ÔØˆŒ
ŒØ!,ˆŒ
ÔØ ˆŒ
ÔØ"ˆŒ
Ôð ˆŒ
ŒØ!ˆŒ
ÔØ!ˆŒ
ÔØ ˆŒ
ÔØ!%ˆŒ
ÔØ!ˆŒ
ÔØ#ˆŒ
ÔØ%)ˆŒ
Ô"à ˆŒ
ÔØ!#ˆŒ
Ôà"ˆŒ
Ôõ ):Ñ(;Ô(;ˆŒ
Ô%àŒJÔ)ð 	Œ
ÔÐ0Ñ1à)+ˆŒ
Ô˜IÑ&å*ØœÔ)Ô9ð
ñ 
ô 
ˆŒ
ÔÐÐr^   c                 óø   — t           j                             |¦  «        | j        _        t          ¦   «                              | j        ¦  «         d| j        _        d | j        _        |  	                    ¦   «         S r®   )
r   r³   r´   rð   r±   r   Úrun_passrg   rõ   Ú_compile_bytecode)rw   r»   s     r_   Úcompile_extrazCompilerBase.compile_extra±  s_   € Ý%Ô6×DÒDÀTÑJÔJˆŒ
ÔÝÑÔ×"Ò" 4¤:Ñ.Ô.Ð.àˆŒ
ÔØ!%ˆŒ
ÔØ×%Ò%Ñ'Ô'Ð'r^   r8   Nc                 ó  — |j         | j        _         || j        _        || j        _        || j        _        | j        j        j        | j        _        t          ¦   «                              | j        ¦  «         |  	                    ¦   «         S r“   )
r±   rð   rg   rõ   rÀ   Ú	arg_countÚnargsr   rù   Ú_compile_ir)rw   rÀ   rg   rõ   s       r_   Ú
compile_irzCompilerBase.compile_ir¹  sj   € Ø$œ_ˆŒ
ÔØ"ˆŒ
ÔØ!,ˆŒ
ÔØ$ˆŒ
ÔØœ:Ô-Ô7ˆŒ
Ôå‰Œ×Ò˜TœZÑ(Ô(Ð(Ø×ÒÑ!Ô!Ð!r^   c                 ó   — t          ¦   «         ‚)zGChild classes override this to customize the pipelines in use.
        )ÚNotImplementedErrorr”   s    r_   Údefine_pipelineszCompilerBase.define_pipelinesÃ  s   € õ "Ñ#Ô#Ð#r^   c                 óL  — t          ¦   «                              | j        j                             ¦   «         ¦  «        5  |                      ¦   «         }|D ]ò}|j        }| j        j        j        ›d| j        j        j	        ›�}t          d|›d|›�¦  «         ||j        i| j        j        d<   ||d         k    }d}	 |                     | j        ¦  «         | j        j        � nrŒ‘# t          $ r}|j        }Y d}~ nZd}~wt"          $ r;}t%          |t&          j        ¦  «        s|‚|| j        j        _        |r|‚Y d}~Œëd}~ww xY wt/          d¦  «        ‚d| j        _        |�|cddd¦  «         S | j        j        €J ‚| j        j        cddd¦  «         S # 1 swxY w Y   dS )z4
        Populate and run compiler pipeline
        ú.z
Pipeline: z for Úpipeline_timeséÿÿÿÿNz!All available pipelines exhausted)r5   Úenterrð   ræ   Úcopyr  Úpipeline_namer±   ÚmodnameÚfunc_qualnamer   Ú
exec_timesrl   r¹   r�   rÒ   rÔ   Ú	ExceptionÚ
isinstancer   Ú
NumbaErrorr÷   rÆ   r   rö   )rw   ÚpmsÚpmr
  Ú	func_nameÚis_final_pipelineÚresÚes           r_   Ú_compile_corezCompilerBase._compile_coreÈ  s[  € õ ‰]Œ]× Ò  ¤Ô!1×!6Ò!6Ñ!8Ô!8Ñ9Ô9ð &	%ð &	%Ø×'Ò'Ñ)Ô)ˆCØð Ið I�Ø "Ô 0�Ø'+¤zÔ'9Ô'AÐ'AÐ'AØ'+¤zÔ'9Ô'GÐ'GðI�	õ �¨}¨}¨}¸i¸iÐHÑIÔIÐIØ9FØ9;¼ð9H�”
Ô#Ð$4Ñ5à$&¨#¨b¬'¢MÐ!Ø�ð Ø—F’F˜4œ:Ñ&Ô&Ð&Ø”z”}Ð0Ø˜ð 1øå/ð ð ð Øœ(�CØ�E�E�E�E�EøøøøÝ ð  ð  ð  Ý% a­Ô):Ñ;Ô;ð  Ø˜Ø45�D”JÔ%Ô1Ø(ð  Ø˜ð ð  ð  ð  ð  øøøøð	 øøøõ $Ð$GÑHÔHÐHð #'ˆDŒJÔð ˆàðG&	%ð &	%ð &	%ð &	%ñ &	%ô &	%ð &	%ð &	%ðJ ”z”}Ð0Ð0Ð0Ø”z”}ðM&	%ð &	%ð &	%ð &	%ñ &	%ô &	%ð &	%ð &	%ð &	%ð &	%ð &	%ð &	%øøøð &	%ð &	%ð &	%ð &	%ð &	%ð &	%sT   ¾A>FÂ=&C&Ã#FÃ&
EÃ0C=Ã7FÃ=EÄ
1E Ä;FÅ EÅ!FÅ3FÆFÆ Fc                 óF   — | j         j        �J ‚|                      ¦   «         S )z>
        Populate and run pipeline for bytecode input
        ©rð   rÀ   r  r”   s    r_   rú   zCompilerBase._compile_bytecodeô  s'   € ð ŒzÔ!Ð)Ð)Ð)Ø×!Ò!Ñ#Ô#Ð#r^   c                 óF   — | j         j        €J ‚|                      ¦   «         S )z8
        Populate and run pipeline for IR input
        r  r”   s    r_   rÿ   zCompilerBase._compile_irû  s'   € ð ŒzÔ!Ð-Ð-Ð-Ø×!Ò!Ñ#Ô#Ð#r^   )r8   N)r?   r@   rA   r›   rÉ   rû   r   r  r  rú   rÿ   r8   r^   r_   rê   rê   ‚  sŽ   € € € € € ðð ð(
ð (
ð (
ðT(ð (ð (ð"ð "ð "ð "ð$ð $ð $ð
*%ð *%ð *%ðX$ð $ð $ð$ð $ð $ð $ð $r^   rê   c                   ó   — e Zd ZdZd„ ZdS )ÚCompilerzThe default compiler
    c                 ó¤   — | j         j        j        r t                               | j         ¦  «        gS t                               | j         ¦  «        gS r“   )rð   ræ   rH   ÚDefaultPassBuilderÚdefine_objectmode_pipelineÚdefine_nopython_pipeliner”   s    r_   r  zCompiler.define_pipelines  sG   € ØŒ:ÔÔ*ð 	Nå&×AÒAÀ$Ä*ÑMÔMÐOÐOõ '×?Ò?ÀÄ
ÑKÔKÐMÐMr^   N)r?   r@   rA   r›   r  r8   r^   r_   r  r    s2   € € € € € ðð ðNð Nð Nð Nð Nr^   r  c                   ó¼   — e Zd ZdZedd„¦   «         Zedd„¦   «         Ze	 dd„¦   «         Zedd	„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
edd„¦   «         ZdS )r  zð
    This is the default pass builder, it contains the "classic" default
    pipelines as pre-canned PassManager instances:
      - nopython
      - objectmode
      - interpreted
      - typed
      - untyped
      - nopython lowering
    Únopythonc                 ó’  — t           }t          |¦  «        }|                     | ¦  «        }|j                             |j        ¦  «         |                     | ¦  «        }|j                             |j        ¦  «         |                     | ¦  «        }|j                             |j        ¦  «         |                     ¦   «          |S )z<Returns an nopython mode pipeline based PassManager
        )r  r   Údefine_untyped_pipelineÚpassesÚextendÚdefine_typed_pipelineÚ!define_nopython_lowering_pipelineÚfinalize)rð   r   Údpbr  Úuntyped_passesÚtyped_passesÚlowering_passess          r_   r   z+DefaultPassBuilder.define_nopython_pipeline  s¬   € õ
 !ˆÝ˜ÑÔˆØ×4Ò4°UÑ;Ô;ˆØ
Œ	×Ò˜Ô.Ñ/Ô/Ð/à×0Ò0°Ñ7Ô7ˆØ
Œ	×Ò˜Ô,Ñ-Ô-Ð-à×?Ò?ÀÑFÔFˆØ
Œ	×Ò˜Ô/Ñ0Ô0Ð0à
�Š‰ŒˆØˆ	r^   Únopython_loweringc                 óê  — t          |¦  «        }|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j        j        r|                     t          d¦  «         n|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |S )Nú3ensure features that are in use are in a valid formú$ensure IR is legal prior to loweringúannotate typesúnative parfor loweringúnative loweringúnopython mode backendzdump parfor diagnostics)r   Úadd_passr.   r(   r#   ræ   rQ   Úenabledr-   r,   r)   r'   r)  ©rð   r   r  s      r_   r(  z4DefaultPassBuilder.define_nopython_lowering_pipeline.  sÛ   € å˜ÑÔˆà
�ŠÕ6ØIñ	Kô 	Kð 	Kà
�Š•NØ:ñ	<ô 	<ð 	<ð 	�Š•MÐ#3Ñ4Ô4Ð4àŒ;Ô$Ô,ð 	;Ø�KŠKÕ,Ð.FÑGÔGÐGÐGà�KŠK�Ð(9Ñ:Ô:Ð:Ø
�Š•OÐ%<Ñ=Ô=Ð=Ø
�ŠÕ)Ð+DÑEÔEÐEØ
�Š‰ŒˆØˆ	r^   Úparfor_gufunc_nopython_loweringc                 ó´  — t          |¦  «        }|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j        j        r|                     t          d¦  «         n|                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |S )Nr0  r1  r2  r3  r4  r5  )r   r6  r.   r(   r#   ræ   rQ   r7  r-   r,   r)   r)  r8  s      r_   Ú/define_parfor_gufunc_nopython_lowering_pipelinezBDefaultPassBuilder.define_parfor_gufunc_nopython_lowering_pipelineB  sÇ   € õ ˜ÑÔˆà
�ŠÕ6ØIñ	Kô 	Kð 	Kà
�Š•NØ:ñ	<ô 	<ð 	<ð 	�Š•MÐ#3Ñ4Ô4Ð4àŒ;Ô$Ô,ð 	;Ø�KŠKÕ,Ð.FÑGÔGÐGÐGà�KŠK�Ð(9Ñ:Ô:Ð:Ø
�Š•OÐ%<Ñ=Ô=Ð=Ø
�Š‰ŒˆØˆ	r^   Útypedc                 óX  — t          |¦  «        }|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j        j        r|                     t          d¦  «         | j        j	        s|                     t          d¦  «         | j        j        j        rQ|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |S )	ú/Returns the typed part of the nopython pipelineúnopython frontendúremove phis nodeszinline overloaded functionszPreprocessing for parforsúnopython rewriteszconvert to parforszfuse parforsúparfor prelowering)r   r6  r"   r+   r*   ræ   rQ   r7  r%   rS   r$   r&   r/   r0   r)  r8  s      r_   r'  z(DefaultPassBuilder.define_typed_pipelineV  s  € õ ˜ÑÔˆà
�ŠÕ)Ð+>Ñ?Ô?Ð?ð 	�ŠÕ%Ð':Ñ;Ô;Ð;ð 	�Š•OÐ%BÑCÔCÐCØŒ;Ô$Ô,ð 	DØ�KŠK�Ð'BÑCÔCÐCØŒ{Ô&ð 	?Ø�KŠKÕ(Ð*=Ñ>Ô>Ð>ØŒ;Ô$Ô,ð 	EØ�KŠK�
Ð$8Ñ9Ô9Ð9Ø�KŠKÕ(¨.Ñ9Ô9Ð9Ø�KŠKÕ-Ð/CÑDÔDÐDà
�Š‰ŒˆØˆ	r^   Úparfor_gufunc_typedc                 ó   — t          |¦  «        }| j        sJ ‚|                     t          d¦  «         |                     t          d¦  «         |                     t
          d¦  «         |                     ¦   «          |S )r>  úprocessing IRr?  rB  )r   rÀ   r6  r   r"   r0   r)  r8  s      r_   Údefine_parfor_gufunc_pipelinez0DefaultPassBuilder.define_parfor_gufunc_pipelinen  sp   € õ ˜ÑÔˆØŒ}ÐÐˆ}Ø
�Š•L /Ñ2Ô2Ð2Ø
�ŠÕ)Ð+>Ñ?Ô?Ð?Ø
�ŠÕ)Ð+?Ñ@Ô@Ð@à
�Š‰ŒˆØˆ	r^   Úuntypedc                 óP  — t          |¦  «        }| j        €6|                     t          d¦  «         |                     t          d¦  «         |                     t
          d¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j	        sQ|                     t          d¦  «         |                     t          d¦  «         |                     t          d	¦  «         |                     t          d
¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j	        s|                     t          d¦  «         |                     t           d¦  «         |                     t"          d¦  «         | j        j        r|                     t&          d¦  «         | j        j	        s|                     t          d¦  «         |                     t(          d¦  «         |                     ¦   «          |S )z0Returns an untyped part of the nopython pipelineNúanalyzing bytecodeúfix up argsrE  zHandle with contextsú(inline calls to locally defined closureszrewrite semantic constantszdead branch pruningrA  zrewrite dynamic raisesú(convert make_function into JIT functionszinline inlinable functionszfind literally callszhandles literal_unrollÚssazLiteral propagation)r   rÀ   r6  r   r   r   r   r   ræ   rS   r   r   r   r    r   r   r   r   rG   r   r!   r)  r8  s      r_   r$  z*DefaultPassBuilder.define_untyped_pipelinez  så  € õ ˜ÑÔˆØŒ=Ð Ø�KŠKÕ)Ð+?Ñ@Ô@Ð@Ø�KŠK�	 =Ñ1Ô1Ð1Ø
�Š•L /Ñ2Ô2Ð2Ø
�Š•KÐ!7Ñ8Ô8Ð8ð 	�ŠÕ&Ø>ñ	@ô 	@ð 	@ð Œ{Ô&ð 	>Ø�KŠKÕ0Ð2NÑOÔOÐOØ�KŠK�Ð)>Ñ?Ô?Ð?Ø�KŠK�Ð)<Ñ=Ô=Ð=à
�ŠÕ(Ð*BÑCÔCÐCð 	�ŠÕ-Ø>ñ	@ô 	@ð 	@ð 	�ŠÕ$Ð&BÑCÔCÐCØŒ{Ô&ð 	@Ø�KŠK�Ð)>Ñ?Ô?Ð?à
�ŠÕ&Ð(>Ñ?Ô?Ð?Ø
�Š•MÐ#;Ñ<Ô<Ð<àŒ;Ô!ð 	/Ø�KŠK�¨Ñ.Ô.Ð.àŒ{Ô&ð 	@Ø�KŠK�Ð)>Ñ?Ô?Ð?à
�ŠÕ5Ð7LÑMÔMÐMà
�Š‰ŒˆØˆ	r^   Úobjectc                 óä  — t          |¦  «        }| j        €7|                     t          d¦  «         |                     t          d¦  «         n|                     t
          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d	¦  «         |                     t          d
¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |S )z:Returns an object-mode pipeline based PassManager
        NrI  rJ  r@  rE  zcanonicalize loop entryzcanonicalize loop exitzobject mode frontendrK  rL  r1  r2  zobject mode backend)r   rÀ   r6  r   r   r+   r   r   r   r1   r   r   r(   r#   r2   r)  r8  s      r_   r  z-DefaultPassBuilder.define_objectmode_pipelineª  sH  € õ ˜ÑÔˆØŒ=Ð Ø�KŠKÕ)Ð+?Ñ@Ô@Ð@Ø�KŠK�	 =Ñ1Ô1Ð1Ð1ð �KŠKÕ)Ð+>Ñ?Ô?Ð?Ø
�Š•L /Ñ2Ô2Ð2ð 	�ŠÕ)Ð+DÑEÔEÐEØ
�ŠÕ(Ð*BÑCÔCÐCà
�ŠÕ&Ð(>Ñ?Ô?Ð?Ø
�ŠÕ&Ø>ñ	@ô 	@ð 	@ð 	�ŠÕ-Ø>ñ	@ô 	@ð 	@à
�Š•NÐ$JÑKÔKÐKØ
�Š•MÐ#3Ñ4Ô4Ð4Ø
�ŠÕ%Ð'<Ñ=Ô=Ð=Ø
�Š‰ŒˆØˆ	r^   N)r"  )r.  )r9  )r<  )rC  )rG  )rN  )r?   r@   rA   r›   Ústaticmethodr   r(  r;  r'  rF  r$  r  r8   r^   r_   r  r    s  € € € € € ð	ð 	ð ðð ð ñ „\ðð$ ðð ð ñ „\ðð& à9ðð ð ñ „\ðð& ðð ð ñ „\ðð. ð	ð 	ð 	ñ „\ð	ð ð-ð -ð -ñ „\ð-ð^ ðð ð ñ „\ðð ð r^   r  c	           	      óN   —  || ||||||¦  «        }	|	                      |¦  «        S )aD  Compiler entry point

    Parameter
    ---------
    typingctx :
        typing context
    targetctx :
        target context
    func : function
        the python function to be compiled
    args : tuple, list
        argument types
    return_type :
        Use ``None`` to indicate void return
    flags : numba.compiler.Flags
        compiler flags
    library : numba.codegen.CodeLibrary
        Used to store the compiled code.
        If it is ``None``, a new CodeLibrary is used.
    pipeline_class : type like numba.compiler.CompilerBase
        compiler pipeline
    )rû   )
rñ   rå   r»   rò   ró   ræ   rô   ri   Úpipeline_classrö   s
             r_   rû   rû   É  s:   € ð0 ˆ~˜i¨°GØ" K°¸ñ@ô @€Hà×!Ò! $Ñ'Ô'Ð'r^   r8   c           	      ó  ‡ ‡‡‡‡‡‡‡
‡— |	rÒt          j        |¦  «        }d|_        ˆˆ
ˆˆˆˆˆˆˆ f	d„} ||                      ¦   «         |¦  «        }d}|j        szt          j        ¦   «         5  t          j        dt          j        ¦  «         	  ||                      ¦   «         |¦  «        }n# t          $ r Y nw xY wddd¦  «         n# 1 swxY w Y   |�|}n|}|S  ‰‰ ‰‰
‰‰|‰¦  «        }| 	                    |‰‰¬¦  «        S )zK
    Compile a function with the given IR.

    For internal use only.
    Tc           	      óV   •	—  ‰‰‰
‰‰‰	|‰¦  «        }|                      | ‰‰¬¦  «        S )N©rÀ   rg   rõ   )r   )Úthe_irÚ	the_flagsrö   rò   ri   rg   rõ   rô   rR  ró   rå   rñ   s      €€€€€€€€€r_   Úcompile_localz!compile_ir.<locals>.compile_local  sL   ø€ Ø%�~ i°¸GØ&*¨K¸ÀFñLô LˆHà×&Ò&¨v¸fØ3>ð 'ñ @ô @ð @r^   NÚignorerU  )
r	  ÚdeepcopyrS   ÚwarningsÚcatch_warningsÚsimplefilterr   ÚNumbaWarningr  r   )rñ   rå   rÀ   rò   ró   ræ   rô   rg   rõ   Úis_lifted_loopri   rR  Ú
norw_flagsrX  Ú	norw_cresÚrw_cresÚcresrö   s   `` `` ``` ``      r_   r   r   æ  sÄ  øøøøøøøøø€ ð ð 3<õ ”] 5Ñ)Ô)ˆ
Ø!%ˆ
Ôð	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð "�M '§,¢,¡.¤.°*Ñ=Ô=ˆ	ð
 ˆØÔ ð 	åÔ(Ñ*Ô*ð ð ÝÔ% hµÔ0CÑDÔDÐDðØ+˜m¨G¯LªL©N¬N¸EÑBÔB�G�GøÝ ð ð ð Ø�Dðøøøð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ÐØˆDˆDàˆDØˆð "�> )¨Y¸Ø"&¨°U¸FñDô Dˆà×"Ò"¨7¸6Ø/:ð #ñ <ô <ð 	<s6   Á. C
ÂB.Â-C
Â.
B;Â8C
Â:B;Â;C
Ã
CÃCc           	      óV   — t          | ||||||¦  «        }|                     |¦  «        S )z 
    For internal use only.
    )r  rû   )	rñ   rå   ri   r»   rò   ró   ræ   rô   rö   s	            r_   Úcompile_internalre  &  s6   € õ
 ˜	 9¨gØ˜k¨5°&ñ:ô :€Hà×!Ò! $Ñ'Ô'Ð'r^   )FF)VÚcollectionsr   r	  r[  Únumba.core.tracingr   Ú
numba.corer   r   r   r   r	   r
   r   Únumba.parfors.parforr   Únumba.core.errorsr   Únumba.core.environmentr   Únumba.core.compiler_machineryr   Únumba.core.untyped_passesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   Únumba.core.typed_passesr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   Únumba.core.object_mode_passesr1   r2   Únumba.core.targetconfigr3   r4   r5   r7   ÚDEFAULT_FLAGSrR   r£   rp   rŸ   r¬   r¯   rÃ   rN  rÅ   r  rÒ   ÚdictrÖ   rè   rê   r  r  rû   r   re  r8   r^   r_   ú<module>rs     s   ðØ "Ð "Ð "Ð "Ð "Ð "Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø +Ð +Ð +Ð +Ð +Ð +Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à 5Ð 5Ð 5Ð 5Ð 5Ð 5ð)ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð>ð >ð >ð >ð >ð >ð >ð >à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eðxð xð xð xð xˆLñ xô xð xðv �‘”€Ø€Ô ðð ð €	ð(O ð O ð O ð O ð O �J�JÐ/°Ñ;Ô;ñ O ô O ð O ðd ˆz˜.ð +ð +ð +ñ ô €ðð ð ð $ð $ð $ð
ð ð ð ð.ð ð ð ð �Vñ ô ð ð"ð ð ð ð ˜yñ ô ð ðð ð ð ð �ñ ô ð ð 3ð 3ð 3ð*~$ð ~$ð ~$ð ~$ð ~$�6ñ ~$ô ~$ð ~$ðB
Nð 
Nð 
Nð 
Nð 
Nˆ|ñ 
Nô 
Nð 
Nðvð vð vð vð v˜ñ vô vð vðt #'°xð(ð (ð (ð (ð< !¨dÀ5Ø¨Hð=<ð =<ð =<ð =<ð@(ð (ð (ð (ð (r^   