
    0;ji78                        d dl Z d dlmZmZ d dlmZmZ d dlZd dlm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmc mZ  ej                    Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z"dZ#d Z$ edd          Z% G d de          Z& edd          Z' G d  d!e          Z( e(            Z)[(	 e)j*        Z+dS )"    N)abstractmethodABCMeta)
namedtupleOrderedDict)global_compiler_lock)errorsconfig
transformsutils)event)PostProcessor)enforce_no_delslegalize_single_scopec                       e Zd ZdZd Zd ZdS )SimpleTimerz(
    A simple context managed timer
    c                 6    t          j                    | _        | S N)timeitdefault_timertsselfs    W/root/voice-cloning/.venv/lib/python3.11/site-packages/numba/core/compiler_machinery.py	__enter__zSimpleTimer.__enter__   s    &((    c                 F    t          j                    | j        z
  | _        d S r   )r   r   r   elapsed)r   excs     r   __exit__zSimpleTimer.__exit__   s    +--7r   N)__name__
__module____qualname____doc__r   r    r   r   r   r      s<           8 8 8 8 8r   r   c                       e Zd ZdZed             Zed             Zed             Z	e	j
        d             Z	ed             Zej
        d             Zd Zed	             Zd
 Zd Zd ZdS )CompilerPassz- The base class for all compiler passes.
    c                 "    d | _         d | _        d S r   )	_analysis_pass_idr   argskwargss      r   __init__zCompilerPass.__init__#   s    r   c                     | j         S )z.
        Returns the name of the pass
        )_name)clss    r   namezCompilerPass.name(   s    
 yr   c                     | j         S )z$
        The ID of the pass
        r)   r   s    r   pass_idzCompilerPass.pass_id/   s    
 }r   c                     || _         dS )z)
        Sets the ID of the pass
        Nr3   r   vals     r   r4   zCompilerPass.pass_id6   s    
 r   c                     | j         S )z,
        Analysis data for the pass
        r(   r   s    r   analysiszCompilerPass.analysis=   s    
 ~r   c                     || _         dS )z4
        Set the analysis data for the pass
        Nr9   r6   s     r   r:   zCompilerPass.analysisD   s    
 r   c                     dS zd
        Runs the initialization sequence for the pass, will run before
        `run_pass`.
        Fr$   r*   s      r   run_initializationzCompilerPass.run_initializationK   	    
 ur   c                     dS )z
        Runs the pass itself. Must return True/False depending on whether
        statement level modification took place.
        Nr$   r*   s      r   run_passzCompilerPass.run_passR   s	     	r   c                     dS r=   r$   r*   s      r   run_finalizerzCompilerPass.run_finalizerZ   r?   r   c                     dS )z( Override to set analysis usage
        Nr$   )r   AUs     r   get_analysis_usagezCompilerPass.get_analysis_usagea   s	     	r   c                     | j         |         S )z5
        Gets the analysis from a given pass
        r9   )r   	pass_names     r   get_analysiszCompilerPass.get_analysisf   s     ~i((r   N)r    r!   r"   r#   r   r-   classmethodr1   propertyr4   setterr:   r>   rA   rC   rF   rI   r$   r   r   r&   r&      s           ^   [   X ^  ^   X _  _     ^    
) ) ) ) )r   r&   )	metaclassc                       e Zd ZdZdS )SSACompliantMixinzn Mixin to indicate a pass is SSA form compliant. Nothing is asserted
    about this condition at present.
    Nr    r!   r"   r#   r$   r   r   rO   rO   m   s          	Dr   rO   c                       e Zd ZdZdS )FunctionPassz$ Base class for function passes
    NrP   r$   r   r   rR   rR   t            Dr   rR   c                       e Zd ZdZdS )AnalysisPasszD Base class for analysis passes (no modification made to state)
    NrP   r$   r   r   rU   rU   z   rS   r   rU   c                       e Zd ZdZdS )LoweringPassz$ Base class for lowering passes
    NrP   r$   r   r   rW   rW      rS   r   rW   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	AnalysisUsagezLThis looks and behaves like LLVM's AnalysisUsage because its like that.
    c                 R    t                      | _        t                      | _        d S r   )set	_required
_preservedr   s    r   r-   zAnalysisUsage.__init__   s    %%r   c                     | j         S r   r\   r   s    r   get_required_setzAnalysisUsage.get_required_set   s
    ~r   c                     | j         S r   )r]   r   s    r   get_preserved_setzAnalysisUsage.get_preserved_set   s
    r   c                 :    | j                             |           d S r   )r\   addr   psss     r   add_requiredzAnalysisUsage.add_required   s    3r   c                 :    | j                             |           d S r   )r]   rd   re   s     r   add_preservedzAnalysisUsage.add_preserved   s    C     r   c                     d| j         z  S )Nzrequired: %s
r_   r   s    r   __str__zAnalysisUsage.__str__   s    $.00r   N)
r    r!   r"   r#   r-   r`   rb   rg   ri   rk   r$   r   r   rY   rY      sx                       ! ! !1 1 1 1 1r   rY   Fc                  0    t           rt          | i | d S d S r   )_DEBUGprint)r+   r,   s     r   debug_printro      s-     tv r   pass_timingszinit run finalizec                   z    e Zd ZdZdZd Zd ZddZd Zd Z	d	 Z
ed
             Zd Zed             Zd Zd ZdS )PassManagerzR
    The PassManager is a named instance of a particular compilation pipeline
    Fc                 r    g | _         t                      | _        d| _        d| _        d| _        || _        dS )zA
        Create a new pipeline with name "pipeline_name"
        FN)passesr   
exec_times
_finalizedr(   _print_afterpipeline_name)r   rx   s     r   r-   zPassManager.__init__   s:     %-- *r   c                 d   t          |t                    s=t          j        |          rt	          |t
                    sd|z  }t          |          t          |t                    rt                              |          }d S t          	                    |          st          d|z            d S )NzKPass must be referenced by name or be a subclass of a CompilerPass. Have %szPass %s is not registered)
isinstancestrinspectisclass
issubclassr&   	TypeError_pass_registryfind_by_nameis_registered
ValueError)r   pass_clsmsgs      r   _validate_passzPassManager._validate_pass   s    Hc** 	!/(++	!X|44	!+-56CC.. h$$ 	I%228<<HHH!//99 I !<x!GHHHI Ir    c                 z    |                      |           ||f}| j                            |           d| _        dS )zI
        Append a pass to the PassManager's compilation pipeline
        FN)r   rt   appendrv   )r   rf   descriptionfunc_desc_tuples       r   add_passzPassManager.add_pass   sC     	C   ,?+++r   c                 B   | j         sJ |                     |           |                     |           t          | j                   D ]\  }\  }}||k    r nt          d|z            | j                             |dz   |t          |          f           d| _        dS )zt
        Add a pass `pass_cls` to the PassManager's compilation pipeline after
        the pass `location`.
        zCould not find pass %s   FN)rt   r   	enumerater   insertr{   rv   )r   r   locationidxx_s         r   add_pass_afterzPassManager.add_pass_after   s    
 {{H%%%H%%%$T[11 	B 	BKC!QH}}  5@AAA37Xs8}}$=>>>r   c                       fd} |t           j                   |t           j                   |t           j                  f}|S )Nc                     g }| dk    r9| dk    rd j         D             }n!|                     d          }d |D             }|S )Nnoneallc                 <    g | ]\  }}|                                 S r$   r1   ).0r   r   s      r   
<listcomp>z:PassManager._debug_init.<locals>.parse.<locals>.<listcomp>   s$    #G#G#G!QAFFHH#G#G#Gr   ,c                 6    g | ]}|                                 S r$   )strip)r   r   s     r   r   z:PassManager._debug_init.<locals>.parse.<locals>.<listcomp>   s     #@#@#@!AGGII#@#@#@r   )rt   split)	conf_itemprint_passessplittedr   s      r   parsez&PassManager._debug_init.<locals>.parse   sa    LF""%%#G#G4;#G#G#GLL
  )s33H#@#@x#@#@#@Lr   )r	   DEBUG_PRINT_AFTERDEBUG_PRINT_BEFOREDEBUG_PRINT_WRAP)r   r   rets   `  r   _debug_initzPassManager._debug_init   s\    	  	  	  	  	  uV-..uV.//uV,--0 
r   c                     |                                  | _        |                                 \  | _        | _        | _        d| _        dS )zt
        Finalize the PassManager, after which no more passes may be added
        without re-finalization.
        TN)dependency_analysisr(   r   rw   _print_before_print_wraprv   r   s    r   finalizezPassManager.finalize   sF    
 1133 	@4-t/?r   c                     | j         S r   )rv   r   s    r   	finalizedzPassManager.finalized   s
    r   c                 D    d                     ||          }|f|_        |S )zG
        Patches the error to show the stage that it arose in.
        z{desc}
{exc})descr   )formatr+   )r   r   r   newmsgs       r   _patch_errorzPassManager._patch_error  s*     !''Ts';;9
r   c           
      v    d}fd} fd} |                                  j         j        z   d            j        _        j        j        }t                                            d| d|j        j        t          j
        j                                                  t          j                  t          j                            }t!          j        d                                 	          }	t%          j        d
|          5  |	5  t)                      5 }
| |j                  z  }d d d            n# 1 swxY w Y   t)                      5 }| |j                  z  }d d d            n# 1 swxY w Y   t)                      5 }| |j                  z  }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t1          t2                    rt5          j                    j        rt:                              j                  j         rQ|r'tC          j                  "                                 n(tG          j$        j        j%                  j        _%        tM          j        j%                  st!          j'        d           tQ          |
j)        |j)        |j)                  }| j*        |d                                 <    |                                  j+         j        z   d           d S )NFc                 r     | |          }|dvr&d}t          |                                z            |S )N)TFz[CompilerPass implementations should return True/False. CompilerPass with name '%s' did not.)r   r1   )funccompiler_statemangledr   rf   s       r   checkz#PassManager._runPass.<locals>.check  sD    d>**Gm++> sxxzz!1222Nr   c                     | |v rvj         }|j        |j        j        || f}t	          d|z                      dd                     j        j                                         d S t	          d           d S d S )Nz%s.%s: %s: %s %sx   -zfunc_ir is None)func_idmodnamefunc_qualnamerx   rn   centerfunc_irdump)rH   print_conditionprintable_conditionfidr+   internal_stater   s        r   ro   z)PassManager._runPass.<locals>.debug_print  s    O++$,S%68J+Y8)D088cBBCCC!)5"*//11111+,,,,, ,+r   BEFOREz [])r1   qualnamemoduleflagsr+   return_typezPass {name}r   znumba:run_pass)dataz&multiple scope in func_ir detected in r   AFTER),r1   r   r   r(   r:   r   r   dictr   r   _lazy_pformatr   valuesr{   r+   r   r   new_error_contextevtrigger_eventr   r>   rA   rC   rz   rR   r   r   
_ENFORCINGr   get	__class__mutates_CFGr   runr
   canonicalize_cfgblocksr   CompilerErrorrp   r   ru   rw   )r   indexrf   r   mutatedr   ro   r   
ev_detailserrctx	init_time	pass_timefinalize_timepts   ` ``          r   _runPasszPassManager._runPass  s   	 	 	 	 			- 		- 		- 		- 		- 		- 	CHHJJ 2T5E ExPPP ~!)7HHJJ--(---!)1%n&:&A&A&C&CDD^())N677
 
 

 )-chhjjIII.Z@@@ 	D 	D& 	D 	D I)55!7HHHI I I I I I I I I I I I I I I ?)55~>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? D-55!2NCCCD D D D D D D D D D D D D D D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D c<(( 	4N2333? 	 !!#-00< 7 7!."899==????4>4O&.557 57N*1 ))?)FGG *BSBB   )+Y->'/1 19;555#((***56 	CHHJJ 1D4D DgNNNNNs   G,G)E
>G
EGEG#F8GFGFGF>2G>GGGG	G,G	G,G	G,,G03G0c                    ddl m} | j        st          d          t	          | j                  D ]\  }\  }}	 t          d|z             t                              |          j	        }t          |t                    r|                     |||           nt          d          w# |$ r}|d}~wt          $ rG}t          |t          j                  s|d| j        d|d	}|                     ||          }	|	d}~ww xY wdS )
z9
        Run the defined pipelines on the state.
        r   )_EarlyPipelineCompletionz!Cannot run non-finalised pipelinez-- %szLegacy pass in useNz
Failed in z mode pipeline (step: ))numba.core.compilerr   r   RuntimeErrorr   rt   r   r   r   	pass_instrz   r&   r   BaseException	Exceptionr   
NumbaErrorrx   r   )
r   stater   r   rf   	pass_descr   er   patched_exceptions
             r   r   zPassManager.runV  s_    	A@@@@@~ 	DBCCC &/t{%;%; 	( 	(!C!#y(g	)****..s33=	i66 >MM#y%8888'(<=== 9 ,    ( ( (!!V%677 G '''4$($5$5c1$=$=!''(	( 	(s%   A-B((D-B//D<AC>>Dc                    t                      }| j        D ]Y\  }}t                              |          j        }t                      }|                    |           ||t          |          <   Zt                      }|                                D ]\  }}|	                                ||<   d }	t                      }
|                                D ]$\  }}t          |           |	||          z  |
|<   %|
S )z.
        Computes dependency analysis
        c                 V    fdt                      }| D ]}| ||          z  }|S )Nc                     | |v r||          nt                      }|r|D ]}| ||          z  }|S t                      S r   r[   )lkeyrmapdep_setr   walks       r   r   zGPassManager.dependency_analysis.<locals>.resolve_requires.<locals>.walk  sW    (,$t**#%% !$ 3 3DDDMM2"N55Lr   r   )keyr   r   kr   s       @r   resolve_requiresz9PassManager.dependency_analysis.<locals>.resolve_requires  sQ    ! ! ! ! ! %%C % %ttAt}}$Jr   )r   rt   r   r   r   rY   rF   typeitemsr`   r[   )r   depsrf   r   r   aurequires_mapr   vr   	dep_chains              r   r   zPassManager.dependency_analysisq  s    vv 	 	HS!""3''1AB  $$$DaMMvvJJLL 	3 	3DAq0022LOO	 	 	 FF	 &&(( 	H 	HDAqq66%5%5a%F%FGIaLLr   N)r   )r    r!   r"   r#   r   r-   r   r   r   r   r   rK   r   r   r   r   r   r   r$   r   r   rr   rr      s          J	+ 	+ 	+I I I            "  &     X   HO HO HOT( ( (6! ! ! ! !r   rr   	pass_infoz#pass_inst mutates_CFG analysis_onlyc                   N    e Zd ZdZdZ e            Zd Zd Zd Z	d Z
d Zd Zd	S )
PassRegistryz(
    Pass registry singleton class.
    r   c                       fd}|S )Nc                                         |           rJ                     |                                           rJ j        | _        xj        dz  c_        t           |                       j        | <   | S )Nr   )r   _does_pass_name_aliasr1   _idr4   r  	_registry)
pass_classanalysis_onlyr   r   s    r   make_festivez+PassRegistry.register.<locals>.make_festive  s    ))*5555511*//2C2CDDDDD!%JHHMHH)2::<<3@*B *BDN:&r   r$   )r   r   r  r  s   ``` r   registerzPassRegistry.register  s0    	 	 	 	 	 	 	 r   c                 8    || j                                         v S r   )r  keysr   clazzs     r   r   zPassRegistry.is_registered  s    ++----r   c                 J    |                      |          sJ | j        |         S r   )r   r  r  s     r   r   zPassRegistry.get  s)    !!%(((((~e$$r   c                 j    | j                                         D ]\  }}|j        j        |k    r dS dS )NTF)r  r  r   r1   )r   r   r   r  s       r   r  z"PassRegistry._does_pass_name_alias  sD    N((** 	 	DAq{5((tt )ur   c                     t          |t                    sJ | j                                        D ]\  }}|j        j        |k    r|c S t          d|z            )Nz"No pass with name %s is registered)rz   r{   r  r  r   r1   r   )r   
class_namer   r  s       r   r   zPassRegistry.find_by_name  so    *c*****N((** 	P 	PDAq{:-- . AJNOOOr   c                 l    | j                                         D ]\  }}t          |d|           d S )Nz: )r  r  rn   )r   r   r  s      r   r   zPassRegistry.dump  sI    N((** 	% 	%DAqaaa#$$$$	% 	%r   N)r    r!   r"   r#   r  r   r  r  r   r   r  r   r   r$   r   r   r
  r
    s          CI	 	 	. . .% % %  P P P% % % % %r   r
  ),r   abcr   r   collectionsr   r   r|   numba.core.compiler_lockr   
numba.corer   r	   r
   r   numba.core.tracingr   numba.core.postprocr   numba.core.ir_utilsr   r   numba.core.eventcorer   	termcolor
_termcolorobjectr   r&   rO   rR   rU   rW   rY   rm   ro   rp   rr   r  r
  r   r  register_passr$   r   r   <module>r*     s    ' ' ' ' ' ' ' ' / / / / / / / /  : 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 $ $ $ $ $ $ - - - - - - F F F F F F F F          V

8 
8 
8 
8 
8& 
8 
8 
8K) K) K) K) K)W K) K) K) K)\	 	 	 	 	 	 	 		 	 	 	 	< 	 	 		 	 	 	 	< 	 	 		 	 	 	 	< 	 	 	1 1 1 1 1F 1 1 10 
  
 z.*=>>i i i i i& i i iX J{$IJJ	+% +% +% +% +%6 +% +% +%\  'r   