+
    :i -                        ^ RI t ^ RIt^ RIHtHtHtHt ^ RIH	t	H
t
 ^ RIHtHtHtHt ^ RIHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtH t H!t!H"t"H#t#H$t$ ^ R	I%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H,t,H0t0H1t1 ^ R
I2H3t3H4t4H5t5 ^ RI6t6]5! RRR7       ! R R]34      4       t7R t8 ! R R]Pr                  4      t: ! R R]4      t;]<R8X  d   ]6Pz                  ! 4        R# R# )    N)TestCaseoverride_configcaptured_stdoutskip_parfors_unsupported)jitnjit)typesirpostproccompiler)guardfind_callname
find_constget_definitionsimplify_CFG)CPUDispatcher)inline_closure_call)
ExtractByteCodeTranslateByteCode	FixupArgsIRProcessingDeadBranchPruneRewriteSemanticConstantsGenericRewritesWithLifting
PreserveIRInlineClosureLikes)NopythonTypeInferenceAnnotateTypesNopythonRewritesPreParforPass
ParforPassDumpParforDiagnosticsNativeLoweringNativeParforLoweringIRLegalizationNoPythonBackendr$   ParforFusionPassParforPreLoweringPass)FunctionPassPassManagerregister_passFTanalysis_onlymutates_CFGc                   0   a  ] tR t^t o RtR tR tRtV tR# )InlineTestPassinline_test_passc                2    \         P                  ! V 4       R # Nr*   __init__selfs   &W/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_inlining.pyr6   InlineTestPass.__init__    s    d#    c                T   \        VP                  P                  4      ^8X  g   Q h\        VP                  P                  P	                  4       4      ^ ,          p\        VP                  4       Ft  w  r4\        \        VP                  VP                  4      f   K.  \        VP                  / W#R VP                  VP                  RVP                  VP                  4
        M	  \        P                   ! VP                  4      pVP#                  4        VP%                  4        R# )   c                      R # r4    r?   r;   r9   <lambda>)InlineTestPass.run_pass.<locals>.<lambda>)   s    r;   Tr?   )lenfunc_irblockslistvalues	enumeratebodyr   r   valuer   	typingctx	targetctxtypemap	calltypesr   PostProcessorrunremove_dels)r8   stateblockistmt	post_procs   &&    r9   run_passInlineTestPass.run_pass#   s    5==''(A---U]]))0023A6 ,GA]5==$**=I#EMM2u$)OOU__b$)MM5??D  - **5==9	r;   r?   N	__name__
__module____qualname____firstlineno___namer6   rV   __static_attributes____classdictcell____classdict__s   @r9   r1   r1      s     E$ r;   r1   c                 6   R p\        V4      pVP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \
        R4       V P                  P                  '       gC   VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R	4       V P                  P                  P                  '       d   VP                  \        R
4       V P                  P                  '       g   VP                  \         R4       V P                  P                  P                  '       dC   VP                  \"        R4       VP                  \$        R4       VP                  \&        R4       VP                  VR4       VP                  \(        R4       VP                  \*        R4       VP                  \,        R4       V P                  P                  P                  '       d   VP                  \.        R4       MVP                  \0        R4       VP                  \2        R4       VP                  \4        R4       V# )inline_testzanalyzing bytecodezfix up argszprocessing IRzHandle with contextsznopython rewriteszrewrite semantic constantszdead branch pruningz(inline calls to locally defined closuresznopython frontendzPreprocessing for parforszconvert to parforszfuse parforszparfor preloweringzinline testz$ensure IR is legal prior to loweringzannotate typeszpreserve IRznative parfor loweringznative loweringznopython mode backendzdump parfor diagnostics)r+   add_passr   r   r   r   flagsno_rewritesr   r   r   r   r   auto_parallelenabledr!   r    r"   r(   r)   r&   r   r   r%   r$   r'   r#   )rQ   	test_passnamepms   &&  r9   gen_pipelinerl   4   s   
%';<
I}-
L/2
K!78{{&&&KK)<=KK02NOKK)>?
&>	@ 	)+>?;;$$,,,KK'BC{{&&&KK(*=>;;$$,,,KK
$89KK(.9KK-/CD
I}- 	N$JK
M#34
J. ;;$$,,,KK,.FGKK(9:
O%<=
)+DE	r;   c                   *   a  ] tR t^^t o RtR tRtV tR# )InlineTestPipelinez>compiler pipeline for testing inlining after optimization
    c                \    \        V P                  \        4      pVP                  4        V.# r4   )rl   rQ   r1   finalize)r8   rk   s   & r9   define_pipelines#InlineTestPipeline.define_pipelinesa   s"    $**n5
tr;   r?   N)rY   rZ   r[   r\   __doc__rq   r^   r_   r`   s   @r9   rn   rn   ^   s      r;   rn   c                      a  ] tR t^ft o RtR tR tR tR tR t	]
R 4       t]
R 4       t]
R	 4       t]
R
 4       tRtV tR# )TestInliningz
Check that jitted inner functions are inlined into outer functions,
in nopython mode.
Note that not all inner functions are guaranteed to be inlined.
We just trust LLVM's inlining heuristics.
c           	         VP                  R4      pRRP                  V Uu. uF  pRP                  V4      NK  	  up4      ,           # u upi )z$
Make regexpr to match mangled name
.z_ZN? z\d+{})splitjoinformat)r8   fullnamepartsps   &&  r9   make_patternTestInlining.make_patternn   sA     s#u"Eu!8??1#5u"EFFF"Es   A	
c                    V P                  V4      pV P                  \        P                  ! W24      R P	                  V4      R7       R# )zexpected {}msgN)r   assertIsNotNoneresearchr{   r8   r|   textpats   &&& r9   assert_has_patternTestInlining.assert_has_patternu   s>    )RYYs1!.!5!5c!: 	 	<r;   c                    V P                  V4      pV P                  \        P                  ! W24      R P	                  V4      R7       R# )zunexpected {}r   N)r   assertIsNoner   r   r{   r   s   &&& r9   assert_not_has_pattern#TestInlining.assert_not_has_patternz   s>    )"))C.-44S9 	 	;r;   c           	        ^ RI HpHp \        RR4      ;_uu_ 4        \	        4       ;_uu_ 4       p\        \        P                  3RR7      ! V4      pRRR4       RRR4       V P                  X! ^4      ^4       XP                  4       pV P                  RV,          V4       V P                  RV,          V4       R#   + '       g   i     Lt; i  + '       g   i     L; i)r   )outer_simplerY   DUMP_ASSEMBLYTnopythonNz%s.outer_simple%s.inner)numba.tests.inlining_usecasesr   rY   r   r   r   r	   int32assertPreciseEqualgetvaluer   r   )r8   r   prefixoutcfuncasms   &     r9   test_inner_function TestInlining.test_inner_function   s    	 _d33 ""cU[[NT:<H # 4 	a!, lln 1F :C@##J$7= #" 43s"   C#B?	C?C
CC"	c           	        ^ RI HpHp \        RR4      ;_uu_ 4        \	        4       ;_uu_ 4       p\        \        P                  3RR7      ! V4      pRRR4       RRR4       V P                  X! ^4      ^4       XP                  4       pV P                  RV,          V4       V P                  RV,          V4       V P                  RV,          V4       R#   + '       g   i     L; i  + '       g   i     L; i)	r   )outer_multiplerY   r   Tr   Nz%s.outer_multiplez%s.morer   )r   r   rY   r   r   r   r	   r   r   r   r   r   )r8   r   r   r   r   r   s   &     r9   test_multiple_inner_functions*TestInlining.test_multiple_inner_functions   s    	
 _d33 ""cU[[NT:>J # 4 	a!,lln 3f <cB##I$6<##J$7= #" 43s"   C+#C	C+C(#C++C;	c                   a ^ RI Ho V3R lp\        R\        R7      ! V4      p\        P
                  ! ^
4      pV P                  V! V4      V! V4      4       R# )r   )	__dummy__c                 2   < S! 4        V P                  4       # r4   )sum)Ar   s   &r9   	test_impl=TestInlining.test_inline_call_after_parfor.<locals>.test_impl   s    K557Nr;   T)parallelpipeline_classN)r   r   r   rn   nparangeassertEqual)r8   r   j_funcr   r   s   &   @r9   test_inline_call_after_parfor*TestInlining.test_inline_call_after_parfor   sH    ;	 t4FGDMOIIbM1vay1r;   c           
        R  p\         P                  ! V4      p\        VP                  P	                  4       4      pV EF  p\        VP                  4       EFa  w  rV\        V\        P                  4      '       g   K(  \        VP                  \        P                  4      '       g   KT  \        \        W&P                  4      ^8X  g   Ku  VP                  VP                  P                   ,          P#                  VP                  4       \        P$                  P'                  \        P                  ! VP(                  RVP*                  R7      RRVP*                  4      Vn
        VP                  VP                  P                   ,          P-                  VP                  4       \/        V/ WER 4        EK}  	  EK  	  V P1                  \3        VP                  R,          4      ^4       R# )c                      V ^8X  d   ^pV# ^pV# r=   r?   abs   & r9   r   =TestInlining.test_inline_update_target_def.<locals>.test_impl   s!    Av H Hr;   myvar)locc                      ^# )   r?   r?   r;   r9   r@   <TestInlining.test_inline_update_target_def.<locals>.<lambda>   s    qr;   r   Nr?   )r   run_frontendrE   rD   rF   rG   rH   
isinstancer
   AssignrI   Varr   r   _definitionstargetrj   removeExprcallscoper   appendr   r   rB   )r8   r   rC   rD   rR   rS   rT   s   &      r9   test_inline_update_target_def*TestInlining.test_inline_update_target_def   s@   	 ''	2gnn++-.E$UZZ0tRYY//Jtzz2664R4R!*gzzBaG(()9)9:AA$**M!#bffU[['txx.XZ\^`bfbjbj!kDJ(()9)9:AA$**M'UyI 1  	W11#67;r;   c           	     n  a \        R \        P                  /R7      R 4       oV3R lp\        P                  ! V4      p\        VP                  P                  4       4      pV EF7  p\        VP                  4       EF  w  rV\        V\        P                  4      '       g   K(  \        VP                  \        P                  4      '       g   KT  VP                  P                  R8X  g   Kq  \!        \"        W&P                  P$                  4      p\        V\        P&                  \        P(                  34      '       g   K  \        VP                  \*        4      '       g   K  VP                  P,                  p\/        W(P0                  WEV4      w  r EK5  	  EK:  	  V P3                  R X
9   4       R# )r   )localsc                     V ^,           pV# r   r?   r   s   & r9   g0TestInlining.test_inline_var_dict_ret.<locals>.g   s    AAHr;   c                     < S ! ^4      # r   r?   )r   s   r9   r   8TestInlining.test_inline_var_dict_ret.<locals>.test_impl   s    Q4Kr;   r   N)r   r	   float64r   r   rE   rD   rF   rG   rH   r   r
   r   rI   r   opr   r   funcGlobalFreeVarr   py_funcr   __globals__
assertTrue)r8   r   rC   rD   rR   rS   rT   func_defr   _var_mapr   s   &          @r9   test_inline_var_dict_ret%TestInlining.test_inline_var_dict_ret   s%    
c5==)	*	 
+		 ''	2gnn++-.E$UZZ0tRYY//&tzz277;; JJMMV3$^WjjooNH"8bii-DEE *8>>= I I"*.."8"8%8#%8%8%G&M
 1  	w'r;   c                >  aa \         RR l4       oRV3R llp\        RRR7       ! V3R lR\        4      4       o ! V3R lR	\        P                  4      p\        VR
7      ! V4      p^pV P                  V! V4      V! V4      4       V P                  V! 4       V! 4       4       VP                  \        P                  ! R 4      3,          P                  R,          p\        VP                  4      Vn        V P                  \        VP                  4      ^4       R # )Nc                     V f   ^# V # r4   r?   )r   s   &r9   foo9TestInlining.test_inline_call_branch_pruning.<locals>.foo   s    yr;   c                    < S! V 4      # r4   r?   )r   r   s   &r9   r   ?TestInlining.test_inline_call_branch_pruning.<locals>.test_impl   s    q6Mr;   FTr-   c                   8   <a  ] tR t^t o RtR tV3R ltRtV tR# )KTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPasspruning_inline_test_passc                2    \         P                  ! V 4       R # r4   r5   r7   s   &r9   r6   TTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPass.__init__   s    %%d+r;   c                Z  < \        VP                  P                  4      ^8X  g   Q h\        VP                  P                  P	                  4       4      ^ ,          p\        VP                  4       F  w  r4\        \        VP                  VP                  4       f   K/  \        VP                  / W#SP                  VP                  VP                  VP                  VP                  P                  ^ ,          P                   ,          3VP                  VP"                  4
        R# 	  R# )r=   T)rB   rC   rD   rE   rF   rG   rH   r   r   rI   r   r   rJ   rK   rL   argsrj   rM   )r8   rQ   rR   rS   rT   r   s   &&   r9   rV   TTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPass.run_pass   s    5==//0A555U]]1188:;A>(4GAmU]]DJJG#'(+EMM2uKK%//"]]4::??1+=+B+BCE"]]EOO=   5 r;   r?   NrX   )ra   r   s   @r9   PruningInlineTestPassr      s     .E, r;   r   c                   .   <a  ] tR tRt o V3R ltRtV tR# )MTestInlining.test_inline_call_branch_pruning.<locals>.InlineTestPipelinePrunei  c                V   < \        V P                  S4      pVP                  4        V.# r4   )rl   rQ   rp   )r8   rk   r   s   & r9   rq   ^TestInlining.test_inline_call_branch_pruning.<locals>.InlineTestPipelinePrune.define_pipelines  s$    !$**.CDtr;   r?   N)rY   rZ   r[   r\   rq   r^   r_   )ra   r   s   @r9   InlineTestPipelinePruner     s      r;   r   )r   preserved_irr4   )r   r,   r*   r   CompilerBaser   	overloadsr	   Omittedmetadatar   rD   rB   )r8   r   r   r   r   firr   r   s   &     @@r9   test_inline_call_branch_pruning,TestInlining.test_inline_call_branch_pruning   s     
	 
		 
U	=	L 	 
>	(	h&;&; 	 %<=iH1vay1fh/ d 356??O!#**-
SZZ!,r;   r?   N)rY   rZ   r[   r\   rs   r   r   r   r   r   r   r   r   r   r   r^   r_   r`   s   @r9   ru   ru   f   st     G<
;
>> 
2 
2 < <4 ( (8 2- 2-r;   ru   __main__)>r   numpyr   numba.tests.supportr   r   r   r   numbar   r   
numba.corer	   r
   r   r   numba.core.ir_utilsr   r   r   r   r   numba.core.registryr   numba.core.inline_closurecallr   numba.core.untyped_passesr   r   r   r   r   r   r   r   r   r   numba.core.typed_passesr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   numba.core.compiler_machineryr*   r+   r,   unittestr1   rl   r   rn   ru   rY   mainr?   r;   r9   <module>r	     s    	 0 0  4 4? ? - =J J J
D D D D S R U5\  6.(T.. n-8 n-` zMMO r;   