
    I/Ph                     l    d dl mZ  G d de          Z G d de          Z G d de          Zd Zd	S )
    )	CallInstrc                   h    e Zd Zd Zd Zd Zd Zed             Zed             Z	ed             Z
dS )	Visitorc                 R    || _         |j        D ]}|                     |           d S N)_module	functionsvisit_Function)selfmodulefuncs      V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/llvmlite/ir/transforms.pyvisitzVisitor.visit   s<    $ 	& 	&D%%%%	& 	&    c                 R    || _         |j        D ]}|                     |           d S r   )	_functionblocksvisit_BasicBlock)r   r   bbs      r   r
   zVisitor.visit_Function
   s;    + 	& 	&B!!"%%%%	& 	&r   c                 R    || _         |j        D ]}|                     |           d S r   )_basic_blockinstructionsvisit_Instruction)r   r   instrs      r   r   zVisitor.visit_BasicBlock   s<    _ 	* 	*E""5))))	* 	*r   c                     t           r   NotImplementedErrorr   r   s     r   r   zVisitor.visit_Instruction       !!r   c                     | j         S r   )r   r   s    r   r   zVisitor.module   s
    |r   c                     | j         S r   )r   r!   s    r   functionzVisitor.function   s
    ~r   c                     | j         S r   )r   r!   s    r   basic_blockzVisitor.basic_block   s      r   N)__name__
__module____qualname__r   r
   r   r   propertyr   r#   r%    r   r   r   r      s        & & &
& & &
* * *
" " "   X   X ! ! X! ! !r   r   c                       e Zd Zd Zd ZdS )CallVisitorc                 ^    t          |t                    r|                     |           d S d S r   )
isinstancer   
visit_Callr   s     r   r   zCallVisitor.visit_Instruction%   s6    eY'' 	#OOE"""""	# 	#r   c                     t           r   r   r   s     r   r/   zCallVisitor.visit_Call)   r   r   N)r&   r'   r(   r   r/   r*   r   r   r,   r,   $   s2        # # #" " " " "r   r,   c                   $     e Zd Z fdZd Z xZS )ReplaceCallsc                     t          t          |                                            || _        || _        g | _        d S r   )superr2   __init__origreplcalls)r   r6   r7   	__class__s      r   r5   zReplaceCalls.__init__.   s8    lD!!**,,,		


r   c                     |j         | j        k    r6|                    | j                   | j                            |           d S d S r   )calleer6   replace_calleer7   r8   appendr   s     r   r/   zReplaceCalls.visit_Call4   sK    <49$$  +++Je$$$$$ %$r   )r&   r'   r(   r5   r/   __classcell__)r9   s   @r   r2   r2   -   sG            % % % % % % %r   r2   c                 Z    t          ||          }|                    |            |j        S )zlReplace all calls to `orig` to `repl` in module `mod`.
    Returns the references to the returned calls
    )r2   r   r8   )modr6   r7   rcs       r   replace_all_callsrB   :   s)     
dD	!	!BHHSMMM8Or   N)llvmlite.irr   objectr   r,   r2   rB   r*   r   r   <module>rE      s    ! ! ! ! ! !! ! ! ! !f ! ! !@" " " " "' " " "
% 
% 
% 
% 
%; 
% 
% 
%    r   