ó
C]c           @   sQ   d  Z  d d l m Z d d l m Z d d „ Z d e e d „ Z d „  Z	 d	 S(
   sH  
Useful options to debug LLVM passes

llvm.set_option("test", "-debug-pass=Details")
llvm.set_option("test", "-debug-pass=Executions")
llvm.set_option("test", "-debug-pass=Arguments")
llvm.set_option("test", "-debug-pass=Structure")
llvm.set_option("test", "-debug-only=loop-vectorize")
llvm.set_option("test", "-help-hidden")

iÿÿÿÿ(   t   binding(   t
   namedtuplei    c         C   s4   |  d k r d S| d k r  d S| d k r0 d Sd S(   Ni   i  i   iK   i   iá   (    (   t   optlevelt	   sizelevel(    (    s5   lib/python2.7/site-packages/llvmlite/llvmpy/passes.pyt   _inlining_threshold   s    i   c         C   s:   t  j ƒ  } |  | _ | | _ | | _ t |  ƒ | _ | S(   N(   t   llvmt   create_pass_manager_buildert	   opt_levelt   loop_vectorizet   slp_vectorizeR   t   inlining_threshold(   t   optR   R	   t   pmb(    (    s5   lib/python2.7/site-packages/llvmlite/llvmpy/passes.pyR   !   s    			c    
   	   K   s  |  j  d ƒ } | s$ t d ƒ ‚ n  t j ƒ  } |  j  d t ƒ rl t | t j ƒ sZ t ‚ t j | ƒ } n d  } t j
 ƒ  „} |  j  d d ƒ | _ } |  j  d t ƒ | _ |  j  d t ƒ | _ t d | ƒ | _ | rrt j | j ƒ } |  j  d	 t ƒ r| j ƒ  n9 x6 |  j  d
 d ƒ D]" } | j | ƒ } | j | ƒ q W| j | ƒ | d  k	 rr| j | ƒ qrn  |  j  d ƒ }	 |	 r³|	 j | ƒ | d  k	 r³|	 j | ƒ q³n  | j | ƒ | d  k	 rÜ| j | ƒ n  t d d d g ƒ d | d | ƒ SWd  QXd  S(   Nt   mods   module must be providedt   fpmR   i   R   R	   R   t
   nobuiltinst   disable_builtinst   tmt   pmst   pm(    (   t   gett	   NameErrorR   t   create_module_pass_managert   Truet
   isinstancet	   ModuleReft   AssertionErrort   create_function_pass_managert   NoneR   R   t   FalseR   R	   R   R
   t   create_target_library_infot   triplet   disable_allt   get_libfunct   set_unavailablet   add_passt   add_analysis_passest   populateR   (
   t   kwsR   R   R   R   R   t   tlit   kt   libfR   (    (    s5   lib/python2.7/site-packages/llvmlite/llvmpy/passes.pyt   build_pass_managers+   s@    N(
   t   __doc__t   llvmliteR    R   t   collectionsR   R   R   R   R*   (    (    (    s5   lib/python2.7/site-packages/llvmlite/llvmpy/passes.pyt   <module>   s   	