
    Ǆg                     X    d dl mZ  G d de      Z G d de      Z G d de      Zd Zy	)
    )	CallInstrc                   T    e Zd Zd Zd Zd Zd Zed        Zed        Z	ed        Z
y)	Visitorc                 V    || _         |j                  D ]  }| j                  |        y N)_module	functionsvisit_Function)selfmodulefuncs      ^/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/llvmlite/ir/transforms.pyvisitzVisitor.visit   s,    $$ 	&D%	&    c                 V    || _         |j                  D ]  }| j                  |        y r   )	_functionblocksvisit_BasicBlock)r   r   bbs      r   r
   zVisitor.visit_Function
   s*    ++ 	&B!!"%	&r   c                 V    || _         |j                  D ]  }| j                  |        y 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      sR    &
&
*
"     ! !r   r   c                       e Zd Zd Zd Zy)CallVisitorc                 H    t        |t              r| j                  |       y y r   )
isinstancer   
visit_Callr   s     r   r   zCallVisitor.visit_Instruction%   s    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,   $   s    #"r   r,   c                   $     e Zd Z fdZd Z xZS )ReplaceCallsc                 T    t         t        |           || _        || _        g | _        y r   )superr2   __init__origreplcalls)r   r6   r7   	__class__s      r   r5   zReplaceCalls.__init__.   s%    lD*,		
r   c                     |j                   | j                  k(  r7|j                  | j                         | j                  j                  |       y y r   )calleer6   replace_calleer7   r8   appendr   s     r   r/   zReplaceCalls.visit_Call4   s;    <<499$  +JJe$ %r   )r&   r'   r(   r5   r/   __classcell__)r9   s   @r   r2   r2   -   s    %r   r2   c                 T    t        ||      }|j                  |        |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HHSM88Or   N)llvmlite.irr   objectr   r,   r2   rB   r*   r   r   <module>rE      s2    !!f !@"' "
%; 
%r   