ó
    „ñ:i -  ã                   ó°  • S SK r S SKrS SKJrJrJrJr  S SKJ	r	J
r
  S SKJrJrJrJr  S SKJrJrJrJrJr  S SKJr  S SKJr  S SKJrJrJrJrJrJ r J!r!J"r"J#r#J$r$  S S	K%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J,r,J0r0J1r1  S S
K2J3r3J4r4J5r5  S SK6r6\5" SSS9 " S S\35      5       r7S r8 " S S\Rr                  5      r: " S S\5      r;\<S:X  a  \6Rz                  " 5         gg)é    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                   ó$   • \ rS rSrSrS rS rSrg)ÚInlineTestPassé   Úinline_test_passc                 ó0   • [         R                  " U 5        g ©N©r*   Ú__init__©Úselfs    Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_inlining.pyr7   ÚInlineTestPass.__init__    s   € Ü×Ò˜dÕ#ó    c                 óF  • [        UR                  R                  5      S:X  d   e[        UR                  R                  R	                  5       5      S   n[        UR                  5       Hs  u  p4[        [        UR                  UR                  5      c  M-  [        UR                  0 X#S UR                  UR                  SUR                  UR                  5
          O   [        R                   " UR                  5      nUR#                  5         UR%                  5         g)Né   r   c                  ó   • g r5   © r@   r<   r:   Ú<lambda>Ú)InlineTestPass.run_pass.<locals>.<lambda>)   s   € Èr<   r@   T)ÚlenÚfunc_irÚblocksÚlistÚvaluesÚ	enumerateÚbodyr   r   Úvaluer   Ú	typingctxÚ	targetctxÚtypemapÚ	calltypesr   ÚPostProcessorÚrunÚremove_dels)r9   ÚstateÚblockÚiÚstmtÚ	post_procs         r:   Úrun_passÚInlineTestPass.run_pass#   sÑ   € ä�5—=‘=×'Ñ'Ó(¨AÓ-Ð-Ð-Ü�U—]‘]×)Ñ)×0Ñ0Ó2Ó3°AÑ6ˆÜ  §¡Ö,‰GˆAÜ”] 5§=¡=°$·*±*Ó=ÓIÜ# E§M¡M°2°uÁØ$)§O¡O°U·_±_ÀbØ$)§M¡M°5·?±?ôDñ ñ -ô ×*Ò*¨5¯=©=Ó9ˆ	Ø�‰ŒØ×ÑÔØr<   r@   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú_namer7   rW   Ú__static_attributes__r@   r<   r:   r1   r1      s   † à€Eò$õr<   r1   c                 ó,  • Sn[        U5      nUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [
        S5        U R                  R                  (       dB  UR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        S	5        UR                  [        S
5        U R                  R                  R                  (       a  UR                  [        S5        U R                  R                  (       d  UR                  [         S5        U R                  R                  R                  (       aB  UR                  ["        S5        UR                  [$        S5        UR                  [&        S5        UR                  US5        UR                  [(        S5        UR                  [*        S5        UR                  [,        S5        U R                  R                  R                  (       a  UR                  [.        S5        OUR                  [0        S5        UR                  [2        S5        UR                  [4        S5        U$ )NÚ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#   )rR   Ú	test_passÚnameÚpms       r:   Úgen_pipelinerj   4   sÀ  € ØˆÜ˜ÓˆØ
�‰Ô%Ð';Ô<Ø
�‰”I˜}Ô-Ø
�‰”L /Ô2Ø
�‰”KÐ!7Ô8à�{‰{×&×&Ø�K‰KœÐ)<Ô=Ø�K‰KÔ0Ð2NÔOØ�K‰KœÐ)>Ô?Ø
�‰Ô&Ø>ô	@ð 	�‰Ô)Ð+>Ô?à�;‰;×$Ñ$×,×,Ø�K‰KœÐ'BÔCØ�{‰{×&×&Ø�K‰KÔ(Ð*=Ô>Ø�;‰;×$Ñ$×,×,Ø�K‰Kœ
Ð$8Ô9Ø�K‰KÔ(¨.Ô9Ø�K‰KÔ-Ð/CÔDà
�‰�I˜}Ô-ð 	�‰”NÐ$JÔKØ
�‰”MÐ#3Ô4Ø
�‰”J Ô.ð �;‰;×$Ñ$×,×,Ø�K‰KÔ,Ð.FÕGà�K‰KœÐ(9Ô:Ø
�‰”OÐ%<Ô=Ø
�‰Ô)Ð+DÔEØˆ	r<   c                   ó   • \ rS rSrSrS rSrg)ÚInlineTestPipelineé^   z>compiler pipeline for testing inlining after optimization
    c                 ó\   • [        U R                  [        5      nUR                  5         U/$ r5   )rj   rR   r1   Úfinalize)r9   ri   s     r:   Údefine_pipelinesÚ#InlineTestPipeline.define_pipelinesa   s"   € Ü˜$Ÿ*™*¤nÓ5ˆØ
�‰ŒØˆtˆr<   r@   N)rZ   r[   r\   r]   Ú__doc__rp   r_   r@   r<   r:   rl   rl   ^   s   † ñõr<   rl   c                   óv   • \ rS rSrSrS rS rS rS rS r	\
S 5       r\
S	 5       r\
S
 5       r\
S 5       rSrg)ÚTestInliningéf   zÁ
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           	      ó–   • UR                  S5      nSSR                  U Vs/ s H  nSR                  U5      PM     sn5      -   $ s  snf )z$
Make regexpr to match mangled name
Ú.z_ZN?Ú z\d+{})ÚsplitÚjoinÚformat)r9   ÚfullnameÚpartsÚps       r:   Úmake_patternÚTestInlining.make_patternn   sA   € ð —‘˜sÓ#ˆØ˜Ÿ™¹uÓ"Eºu¸! 8§?¡?°1Ö#5¹uÑ"EÓFÑFÐFùÒ"Es   ¢A
c                 óŒ   • U R                  U5      nU R                  [        R                  " X25      SR	                  U5      S9  g )Nzexpected {}©Úmsg)r   ÚassertIsNotNoneÚreÚsearchr{   ©r9   r|   ÚtextÚpats       r:   Úassert_has_patternÚTestInlining.assert_has_patternu   s>   € Ø×Ñ Ó)ˆØ×ÑœRŸYšY sÓ1Ø!.×!5Ñ!5°cÓ!:ð 	ò 	<r<   c                 óŒ   • U R                  U5      nU R                  [        R                  " X25      SR	                  U5      S9  g )Nzunexpected {}r‚   )r   ÚassertIsNoner…   r†   r{   r‡   s       r:   Úassert_not_has_patternÚ#TestInlining.assert_not_has_patternz   s>   € Ø×Ñ Ó)ˆØ×Ñœ"Ÿ)š) CÓ.Ø-×4Ñ4°SÓ9ð 	ò 	;r<   c                 óŠ  • SSK JnJn  [        SS5         [	        5        n[        [        R                  4SS9" U5      nS S S 5        S S S 5        U R                  W" S5      S5        WR                  5       nU R                  SU-  U5        U R                  S	U-  U5        g ! , (       d  f       Ni= f! , (       d  f       Nr= f)
Nr   )Úouter_simplerZ   ÚDUMP_ASSEMBLYT©Únopythonr>   é   z%s.outer_simpleú%s.inner)Únumba.tests.inlining_usecasesr‘   rZ   r   r   r   r	   Úint32ÚassertPreciseEqualÚgetvaluerŠ   rŽ   )r9   r‘   ÚprefixÚoutÚcfuncÚasms         r:   Útest_inner_functionÚ TestInlining.test_inner_function   sœ   € ÷	ô ˜_¨dÕ3Ü Ô" cÜœUŸ[™[˜N°TÒ:¸<ÓH�÷ #÷ 4ð 	×Ñ¡ a£¨!Ô,ð �l‰l‹nˆØ×ÑÐ 1°FÑ :¸CÔ@Ø×#Ñ# J°Ñ$7¸Õ=÷ #Õ"ú÷ 4Õ3ús"   •B4  B#Á B4Â#
B1	Â-B4Â4
Cc                 ó´  • SSK JnJn  [        SS5         [	        5        n[        [        R                  4SS9" U5      nS S S 5        S S S 5        U R                  W" S5      S5        WR                  5       nU R                  SU-  U5        U R                  S	U-  U5        U R                  S
U-  U5        g ! , (       d  f       N~= f! , (       d  f       N‡= f)Nr   )Úouter_multiplerZ   r’   Tr“   r>   é   z%s.outer_multiplez%s.morer–   )r—   r¢   rZ   r   r   r   r	   r˜   r™   rš   rŠ   rŽ   )r9   r¢   r›   rœ   r�   rž   s         r:   Útest_multiple_inner_functionsÚ*TestInlining.test_multiple_inner_functions�   s¯   € ÷	ô
 ˜_¨dÕ3Ü Ô" cÜœUŸ[™[˜N°TÒ:¸>ÓJ�÷ #÷ 4ð 	×Ñ¡ a£¨!Ô,Ø�l‰l‹nˆØ×ÑÐ 3°fÑ <¸cÔBØ×#Ñ# I°Ñ$6¸Ô<Ø×#Ñ# J°Ñ$7¸Õ=÷ #Õ"ú÷ 4Õ3ús"   •C	  B8Á C	Â8
C	ÃC	Ã	
Cc                 ó®   ^• SSK Jm  U4S jn[        S[        S9" U5      n[        R
                  " S5      nU R                  U" U5      U" U5      5        g )Nr   )Ú	__dummy__c                 ó2   >• T" 5         U R                  5       $ r5   )Úsum)ÚAr§   s    €r:   Ú	test_implÚ=TestInlining.test_inline_call_after_parfor.<locals>.test_impl¡   s   ø€ ÙŒKØ—5‘5“7ˆNr<   T)ÚparallelÚpipeline_classé
   )r—   r§   r   rl   ÚnpÚarangeÚassertEqual)r9   r«   Új_funcrª   r§   s       @r:   Útest_inline_call_after_parforÚ*TestInlining.test_inline_call_after_parforœ   sH   ø€ å;õ	ô ˜tÔ4FÒGØDMóOˆä�IŠI�b‹MˆØ×Ñ™ 1›¡v¨a£yÕ1r<   c           
      ó¼  • S n[         R                  " U5      n[        UR                  R	                  5       5      nU GHq  n[        UR                  5       GHS  u  pV[        U[        R                  5      (       d  M'  [        UR                  [        R                  5      (       d  MR  [        [        X&R                  5      S:X  d  Mr  UR                  UR                  R                      R#                  UR                  5        [        R$                  R'                  [        R                  " UR(                  SUR*                  S9SSUR*                  5      Ul
        UR                  UR                  R                      R-                  UR                  5        [/        U0 XES 5          GMo     GMt     U R1                  [3        UR                  S   5      S5        g )Nc                 ó   • U S:X  a  SnU$ SnU$ )Nr>   é   é   r@   ©ÚaÚbs     r:   r«   Ú=TestInlining.test_inline_update_target_def.<locals>.test_impl¬   s!   € Ø�A‹vØ�ð ˆHð �ØˆHr<   r¸   Úmyvar)Úlocr@   c                  ó   • g©Nr¸   r@   r@   r<   r:   rA   Ú<TestInlining.test_inline_update_target_def.<locals>.<lambda>¿   s   € Àqr<   r¼   )r   Úrun_frontendrF   rE   rG   rH   rI   Ú
isinstancer
   ÚAssignrJ   ÚVarr   r   Ú_definitionsÚtargetrh   ÚremoveÚExprÚcallÚscoper¿   Úappendr   r²   rC   )r9   r«   rD   rE   rS   rT   rU   s          r:   Útest_inline_update_target_defÚ*TestInlining.test_inline_update_target_def©   s@  € ò	ô ×'Ò'¨	Ó2ˆÜ�g—n‘n×+Ñ+Ó-Ó.ˆÜˆEÜ$ U§Z¡Z×0‘�ä˜t¤R§Y¡Y×/Ó/´J¸t¿z¹zÌ2Ï6É6×4RÓ4RÜ!¤*¨g·z±zÓBÀaÕGà×(Ñ(¨¯©×)9Ñ)9Ñ:×AÑAÀ$Ç*Á*ÔMÜ!#§¡§¡¬b¯fªf°U·[±[À'ÈtÏxÉxÑ.XÐZ\Ð^`Ðbf×bjÑbjÓ!k�D”JØ×(Ñ(¨¯©×)9Ñ)9Ñ:×AÑAÀ$Ç*Á*ÔMä'¨°°U¹yÔIÛô 1ñ ð 	×Ñœ˜W×1Ñ1°#Ñ6Ó7¸Õ;r<   c           	      ó\  ^• [        S[        R                  0S9S 5       mU4S jn[        R                  " U5      n[        UR                  R                  5       5      nU GH2  n[        UR                  5       GH  u  pV[        U[        R                  5      (       d  M'  [        UR                  [        R                  5      (       d  MR  UR                  R                  S:X  d  Mn  [!        ["        X&R                  R$                  5      n[        U[        R&                  [        R(                  45      (       d  MÃ  [        UR                  [*        5      (       d  Mä  UR                  R,                  n[/        X(R0                  XEU5      u  pš  GM0     GM5     U R3                  SW
;   5        g )Nr¼   )Úlocalsc                 ó   • U S-   nU$ ©Nr>   r@   rº   s     r:   ÚgÚ0TestInlining.test_inline_var_dict_ret.<locals>.gÈ   s   € à�A‘ˆAØˆHr<   c                  ó   >• T " S5      $ rÓ   r@   )rÔ   s   €r:   r«   Ú8TestInlining.test_inline_var_dict_ret.<locals>.test_implÍ   s   ø€ Ù�Q“4ˆKr<   rË   )r   r	   Úfloat64r   rÃ   rF   rE   rG   rH   rI   rÄ   r
   rÅ   rJ   rÊ   Úopr   r   ÚfuncÚGlobalÚFreeVarr   Úpy_funcr   Ú__globals__Ú
assertTrue)r9   r«   rD   rE   rS   rT   rU   Úfunc_defrÝ   Ú_Úvar_maprÔ   s              @r:   Útest_inline_var_dict_retÚ%TestInlining.test_inline_var_dict_retÄ   s%  ø€ ô 
�cœ5Ÿ=™=Ð)Ñ	*ñ	ó 
+ð	õ	ô ×'Ò'¨	Ó2ˆÜ�g—n‘n×+Ñ+Ó-Ó.ˆÜˆEÜ$ U§Z¡Z×0‘�Ü˜t¤R§Y¡Y×/Ó/Ü& t§z¡z´2·7±7×;Ó;Ø ŸJ™JŸM™M¨VÕ3Ü$¤^°W¿j¹j¿o¹oÓN�HÜ" 8¬b¯i©i¼¿¹Ð-D×EÓEÜ *¨8¯>©>¼=× IÓ IØ"*§.¡.×"8Ñ"8˜Ü%8Ø#×%8Ñ%8¸%ÀGó&M™
˜ãô 1ñ ð 	�‰˜˜w™Õ'r<   c                 ó   ^^• [         SS j5       mSU4S jjn[        SSS9 " U4S jS[        5      5       m " U4S jS	[        R                  5      n[        US
9" U5      nSnU R                  U" U5      U" U5      5        U R                  U" 5       U" 5       5        UR                  [        R                  " S 5      4   R                  S   n[        UR                  5      Ul        U R                  [        UR                  5      S5        g )Nc                 ó   • U c  gU $ rÁ   r@   )rª   s    r:   ÚfooÚ9TestInlining.test_inline_call_branch_pruning.<locals>.fooå   s   € à‰yØà�r<   c                 ó   >• T" U 5      $ r5   r@   )rª   rç   s    €r:   r«   Ú?TestInlining.test_inline_call_branch_pruning.<locals>.test_implì   s   ø€ Ù�q“6ˆMr<   FTr-   c                   ó,   >• \ rS rSrSrS rU 4S jrSrg)ÚKTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPasséï   Úpruning_inline_test_passc                 ó0   • [         R                  " U 5        g r5   r6   r8   s    r:   r7   ÚTTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPass.__init__ó   s   € Ü×%Ò% dÕ+r<   c                 ó:  >• [        UR                  R                  5      S:X  d   e[        UR                  R                  R	                  5       5      S   n[        UR                  5       H¬  u  p4[        [        UR                  UR                  5       c  M.  [        UR                  0 X#TR                  UR                  UR                  UR                  UR                  R                  S   R                      4UR                  UR"                  5
          g   g)Nr>   r   T)rC   rD   rE   rF   rG   rH   rI   r   r   rJ   r   rÝ   rK   rL   rM   Úargsrh   rN   )r9   rR   rS   rT   rU   rç   s        €r:   rW   ÚTTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPass.run_passö   sÔ   ø€ ä˜5Ÿ=™=×/Ñ/Ó0°AÓ5Ð5Ð5Ü˜UŸ]™]×1Ñ1×8Ñ8Ó:Ó;¸AÑ>�Ü(¨¯©Ö4‘G�AÜœm¨U¯]©]¸D¿J¹JÓGØ#'ó(ä+¨E¯M©M¸2¸uØŸK™K¨¯©¸%¿/¹/Ø"Ÿ]™]¨4¯:©:¯?©?¸1Ñ+=×+BÑ+BÑCÐEØ"Ÿ]™]¨E¯O©Oô=ð Øñ  5ð r<   r@   NrY   )rç   s   €r:   ÚPruningInlineTestPassrì   ï   s   ø† à.ˆEò,÷ð r<   rô   c                   ó"   >• \ rS rSrU 4S jrSrg)ÚMTestInlining.test_inline_call_branch_pruning.<locals>.InlineTestPipelinePrunei  c                 óV   >• [        U R                  T5      nUR                  5         U/$ r5   )rj   rR   ro   )r9   ri   rô   s     €r:   rp   Ú^TestInlining.test_inline_call_branch_pruning.<locals>.InlineTestPipelinePrune.define_pipelines  s$   ø€ Ü! $§*¡*Ð.CÓD�Ø—‘”Ø�t�r<   r@   N)rZ   r[   r\   r]   rp   r_   )rô   s   €r:   ÚInlineTestPipelinePrunerö     s   ø† ÷ð r<   rù   )r®   r¹   Úpreserved_irr>   r5   )r   r,   r*   r   ÚCompilerBaser²   Ú	overloadsr	   ÚOmittedÚmetadatar   rE   rC   )r9   r«   rù   r³   rª   Úfirrô   rç   s         @@r:   Útest_inline_call_branch_pruningÚ,TestInlining.test_inline_call_branch_pruningá   sä   ù€ ô 
ó	ó 
ð	÷	ô 
 U¸Ñ	=÷	¤Ló 	ó 
>ð	÷(	¤h×&;Ñ&;ô 	ô Ð%<Ò=¸iÓHˆØˆØ×Ñ™ 1›¡v¨a£yÔ1Ø×Ñ™›¡f£hÔ/ð ×Ñ¤§¢¨dÓ 3Ð5Ñ6×?Ñ?ÀÑOˆÜ! #§*¡*Ó-ˆŒ
Ø×Ñœ˜SŸZ™Z›¨!Õ,r<   r@   N)rZ   r[   r\   r]   rr   r   rŠ   rŽ   rŸ   r¤   r   r´   rÎ   rã   r   r_   r@   r<   r:   rt   rt   f   sq   † ñòGò<ò
;ò
>ò>ð ñ
2ó ð
2ð ñ<ó ð<ð4 ñ(ó ð(ð8 ñ2-ó ó2-r<   rt   Ú__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   rj   rû   rl   rt   rZ   Úmainr@   r<   r:   Ú<module>r     sÃ   ðÛ 	Û ÷0ó 0ç ß 4Ó 4÷?õ ?å -Ý =÷J÷ J÷ J÷
D÷ D÷ Dõ D÷ SÑ RÛ á˜U°Ñ5ô�\ó ó 6ðò.(ôT˜×.Ñ.ô ôn-�8ô n-ð` ˆzÓØ‡M‚M…Oð r<   