ó
&³Y]c           @@ sÔ  d  d l  m Z m Z d  d l m Z m Z d d l m Z d   Z d   Z	 d e j
 f d     YZ d	 e f d
     YZ d e f d     YZ e j e j j _ e j g e j j _ e j e j j _ e j g e j j _ e j e j g e j j _ e e j j _ e j g e j j _ e e j j _ e j g e j j _ e e j j _ e j e j g e j j _ e e j j _ e j g e j j _ e j g e j j _ e j g e j j _ e j e g e j j _ e j g e j j _ e j g e j j  _ e j g e j j! _ e j g e j j" _ e j g e j j# _ e j g e j j$ _ e j g e j j% _ e j g e j j& _ e j g e j j' _ e j g e j j( _ e j g e j j) _ e j g e j j* _ d S(   i    (   t   print_functiont   absolute_import(   t   c_boolt   c_inti   (   t   ffic           C@ s   t    S(   N(   t   ModulePassManager(    (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   create_module_pass_manager   s    c         C@ s
   t  |   S(   N(   t   FunctionPassManager(   t   module(    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   create_function_pass_manager
   s    t   PassManagerc           B@ s§   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s   PassManager
    c         C@ s   |  j  j |   d  S(   N(   t   _capit   LLVMPY_DisposePassManager(   t   self(    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   _dispose   s    c         C@ s   t  j j |   d S(   sQ   See http://llvm.org/docs/Passes.html#constmerge-merge-duplicate-global-constants.N(   R   t   libt   LLVMPY_AddConstantMergePass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_constant_merge_pass   s    c         C@ s   t  j j |   d S(   sK   See http://llvm.org/docs/Passes.html#deadargelim-dead-argument-elimination.N(   R   R   t    LLVMPY_AddDeadArgEliminationPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_dead_arg_elimination_pass   s    c         C@ s   t  j j |   d S(   sN   See http://llvm.org/docs/Passes.html#functionattrs-deduce-function-attributes.N(   R   R   t   LLVMPY_AddFunctionAttrsPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_function_attrs_pass   s    c         C@ s   t  j j |  |  d S(   sJ   See http://llvm.org/docs/Passes.html#inline-function-integration-inlining.N(   R   R   t   LLVMPY_AddFunctionInliningPass(   R   t	   threshold(    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_function_inlining_pass!   s    c         C@ s   t  j j |   d S(   sG   See http://llvm.org/docs/Passes.html#globaldce-dead-global-elimination.N(   R   R   t   LLVMPY_AddGlobalDCEPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_global_dce_pass%   s    c         C@ s   t  j j |   d S(   sI   See http://llvm.org/docs/Passes.html#globalopt-global-variable-optimizer.N(   R   R   t   LLVMPY_AddGlobalOptimizerPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_global_optimizer_pass)   s    c         C@ s   t  j j |   d S(   sd   See http://llvm.org/docs/Passes.html#ipsccp-interprocedural-sparse-conditional-constant-propagation.N(   R   R   t   LLVMPY_AddIPSCCPPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_ipsccp_pass-   s    c         C@ s   t  j j |   d S(   s?   See http://llvm.org/docs/Passes.html#dce-dead-code-elimination.N(   R   R   t!   LLVMPY_AddDeadCodeEliminationPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_dead_code_elimination_pass1   s    c         C@ s   t  j j |   d S(   sB   See http://llvm.org/docs/Passes.html#simplifycfg-simplify-the-cfg.N(   R   R   t   LLVMPY_AddCFGSimplificationPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_cfg_simplification_pass5   s    c         C@ s   t  j j |   d S(   s@   See http://llvm.org/docs/Passes.html#gvn-global-value-numbering.N(   R   R   t   LLVMPY_AddGVNPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_gvn_pass9   s    c         C@ s   t  j j |   d S(   s8   See http://llvm.org/docs/Passes.html#passes-instcombine.N(   R   R   t"   LLVMPY_AddInstructionCombiningPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_instruction_combining_pass=   s    c         C@ s   t  j j |   d S(   sE   See http://llvm.org/docs/Passes.html#licm-loop-invariant-code-motion.N(   R   R   t   LLVMPY_AddLICMPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_licm_passA   s    c         C@ s   t  j j |   d S(   sR   See http://llvm.org/docs/Passes.html#sccp-sparse-conditional-constant-propagation.N(   R   R   t   LLVMPY_AddSCCPPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_sccp_passE   s    c         C@ s   t  j j |   d S(   sÆ   See http://llvm.org/docs/Passes.html#scalarrepl-scalar-replacement-of-aggregates-dt.
        Note that this pass corresponds to the ``opt -sroa`` command-line option,
        despite the link above.N(   R   R   t   LLVMPY_AddSROAPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_sroa_passI   s    c         C@ s   t  j j |   d  S(   N(   R   R   t$   LLVMPY_AddTypeBasedAliasAnalysisPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt"   add_type_based_alias_analysis_passO   s    c         C@ s   t  j j |   d S(   s=   See http://llvm.org/docs/AliasAnalysis.html#the-basicaa-pass.N(   R   R   t    LLVMPY_AddBasicAliasAnalysisPass(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   add_basic_alias_analysis_passR   s    (   t   __name__t
   __module__t   __doc__R   R   R   R   R   R   R   R   R    R"   R$   R&   R(   R*   R,   R.   R0   (    (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyR
      s$   																R   c           B@ s   e  Z d d   Z d   Z RS(   c         C@ s2   | d  k r t j j   } n  t j |  |  d  S(   N(   t   NoneR   R   t   LLVMPY_CreatePassManagerR
   t   __init__(   R   t   ptr(    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyR6   Y   s    c         C@ s   t  j j |  |  S(   s>   
        Run optimization passes on the given module.
        (   R   R   t   LLVMPY_RunPassManager(   R   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   run^   s    N(   R1   R2   R4   R6   R9   (    (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyR   W   s   R   c           B@ s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C@ s8   t  j j |  } | |  _ t | _ t j |  |  d  S(   N(   R   R   t    LLVMPY_CreateFunctionPassManagert   _modulet   Truet   _ownedR
   R6   (   R   R   R7   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyR6   g   s    		c         C@ s   t  j j |   S(   sk   
        Initialize the FunctionPassManager.  Returns True if it produced
        any changes (?).
        (   R   R   t$   LLVMPY_InitializeFunctionPassManager(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt
   initializem   s    c         C@ s   t  j j |   S(   si   
        Finalize the FunctionPassManager.  Returns True if it produced
        any changes (?).
        (   R   R   t"   LLVMPY_FinalizeFunctionPassManager(   R   (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   finalizet   s    c         C@ s   t  j j |  |  S(   s@   
        Run optimization passes on the given function.
        (   R   R   t   LLVMPY_RunFunctionPassManager(   R   t   function(    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyR9   {   s    (   R1   R2   R6   R?   RA   R9   (    (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyR   e   s   			N(+   t
   __future__R    R   t   ctypesR   R   t    R   R   R	   t	   ObjectRefR
   R   R   t   LLVMPassManagerRefR   R5   t   restypet   LLVMModuleRefR:   t   argtypesR   R8   R>   R@   t   LLVMValueRefRB   R   R   R   R   R   R   R   R   R!   R#   R%   R'   R)   R+   R-   R/   (    (    (    s<   lib/python2.7/site-packages/llvmlite/binding/passmanagers.pyt   <module>   sJ   		I 