ó
C]c           @   s_   d  d l  m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d	 S(
   i   (   t	   CallInstrt   Visitorc           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 RS(   c         C   s.   | |  _  x | j D] } |  j | ƒ q Wd  S(   N(   t   _modulet	   functionst   visit_Function(   t   selft   modulet   func(    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyt   visit   s    	c         C   s.   | |  _  x | j D] } |  j | ƒ q Wd  S(   N(   t	   _functiont   blockst   visit_BasicBlock(   R   R   t   bb(    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR   
   s    	c         C   s.   | |  _  x | j D] } |  j | ƒ q Wd  S(   N(   t   _basic_blockt   instructionst   visit_Instruction(   R   R   t   instr(    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR      s    	c         C   s
   t  ‚ d  S(   N(   t   NotImplementedError(   R   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR      s    c         C   s   |  j  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR      s    c         C   s   |  j  S(   N(   R	   (   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyt   function   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyt   basic_block   s    (
   t   __name__t
   __module__R   R   R   R   t   propertyR   R   R   (    (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR      s   				t   CallVisitorc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s#   t  | t ƒ r |  j | ƒ n  d  S(   N(   t
   isinstanceR    t
   visit_Call(   R   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR   %   s    c         C   s
   t  ‚ d  S(   N(   R   (   R   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR   )   s    (   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR   $   s   	t   ReplaceCallsc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s2   t  t |  ƒ j ƒ  | |  _ | |  _ g  |  _ d  S(   N(   t   superR   t   __init__t   origt   replt   calls(   R   R   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR   .   s    		c         C   s9   | j  |  j k r5 | j |  j ƒ |  j j | ƒ n  d  S(   N(   t   calleeR   t   replace_calleeR   R   t   append(   R   R   (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR   4   s    (   R   R   R   R   (    (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyR   -   s   	c         C   s#   t  | | ƒ } | j |  ƒ | j S(   sl   Replace all calls to `orig` to `repl` in module `mod`.
    Returns the references to the returned calls
    (   R   R   R   (   t   modR   R   t   rc(    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyt   replace_all_calls:   s    N(   t    R    t   objectR   R   R   R%   (    (    (    s5   lib/python2.7/site-packages/llvmlite/ir/transforms.pyt   <module>   s    	