
    X-Ph@                        d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ ddZ G d de          ZdS )aq  Transform IR to lower-level ops.

Higher-level ops are used in earlier compiler passes, as they make
various analyses, optimizations and transforms easier to implement.
Later passes use lower-level ops, as they are easier to generate code
from, and they help with lower-level optimizations.

Lowering of various primitive ops is implemented in the mypyc.lower
package.
    )annotations)FuncIR)PrimitiveOpValue)LowLevelIRBuilder)lowering_registry)CompilerOptions)IRTransformirr   optionsr	   returnNonec                    t          d |          }t          |          }|                    | j                   |j        | _        d S N)r   LoweringVisitortransform_blocksblocks)r   r   buildervisitors       U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/transform/lower.pylower_irr      sA    g..Gg&&GRY'''BIII    c                      e Zd ZddZdS )r   opr   r   Value | Nonec                h    t           |j        j                 } || j        |j        |j                  S r   )r   descnamer   argsline)selfr   lower_fns      r   visit_primitive_opz"LoweringVisitor.visit_primitive_op   s,     %RW\2xbgrw777r   N)r   r   r   r   )__name__
__module____qualname__r#    r   r   r   r      s(        8 8 8 8 8 8r   r   N)r   r   r   r	   r   r   )__doc__
__future__r   mypyc.ir.func_irr   mypyc.ir.opsr   r   mypyc.irbuild.ll_builderr   mypyc.lower.registryr   mypyc.optionsr	   mypyc.transform.ir_transformr
   r   r   r'   r   r   <module>r0      s   	 	 # " " " " " # # # # # # + + + + + + + + 6 6 6 6 6 6 2 2 2 2 2 2 ) ) ) ) ) ) 4 4 4 4 4 4   8 8 8 8 8k 8 8 8 8 8r   