
C]c           @@ s  d  d l  m Z m Z d  d l Z d  d l m Z m Z d  d l m Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l 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 e j   d k r0e j d  n  d   Z d Z  d Z! d Z" d Z# d Z$ d Z% d Z& d Z' d Z( d Z) d e f d     YZ* d e* f d     YZ+ d e* f d     YZ, d e* f d      YZ- d! e. f d"     YZ/ d# e/ f d$     YZ0 d% e* e0 f d&     YZ1 d' e* f d(     YZ2 d) e* f d*     YZ3 d+ e* f d,     YZ4 d- e* f d.     YZ5 d/ e* f d0     YZ6 d1 e. f d2     YZ7 d3 e* e7 f d4     YZ8 d5 e* e7 f d6     YZ9 d7 e* e7 f d8     YZ: d9 e* f d:     YZ; d; e* f d<     YZ< d= e* f d>     YZ= d? e1 f d@     YZ> dA e* f dB     YZ? e j@ e j   jA dC  dD  dE e* f dF     Y ZB dG e* f dH     YZC eD dI k re jE   n  d S(J   i    (   t   print_functiont   absolute_importN(   t	   CFUNCTYPEt   c_int(   t   find_library(   t   contextmanager(   t   mkstemp(   t   sixt   ir(   t   binding(   t   ffii   (   t   TestCaset   armv7ls   libgcc_s.so.1c          C@ sd   t  j t  j  }  z7 y t  j t  j d  Wn t  j k
 rC t SXt SWd  t  j t  j |   Xd  S(   Nt   de_DE(   t   localet	   setlocalet   LC_ALLt   Errort   Truet   False(   t   cur(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   no_de_locale   s     s  
    ; ModuleID = '<string>'
    target triple = "{triple}"
    %struct.glob_type = type {{ i64, [2 x i64]}}

    @glob = global i32 0
    @glob_b = global i8 0
    @glob_f = global float 1.5
    @glob_struct = global %struct.glob_type {{i64 0, [2 x i64] [i64 0, i64 0]}}

    define i32 @sum(i32 %.1, i32 %.2) {{
      %.3 = add i32 %.1, %.2
      %.4 = add i32 0, %.3
      ret i32 %.4
    }}
    s   
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define i32 @sum(i32 %.1, i32 %.2) {{
      %.3 = add i32 %.1, %.2
      ret i32 %.3
    }}
    s   
    ; ModuleID = '<string>'
    target triple = "{triple}"
    @mul_glob = global i32 0

    define i32 @mul(i32 %.1, i32 %.2) {{
      %.3 = mul i32 %.1, %.2
      ret i32 %.3
    }}
    s   
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define i32 @sum(i32 %.1, i32 %.2) {{
      %.3 = fadd i32 %.1, %.2
      ret i32 %.3
    }}
    s   
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @sum() {{
      %.bug = add i32 1, %.bug
      ret void
    }}
    sh   
    ; ModuleID = '<string>'
    target triple = "{triple}"

    declare i32 @sum(i32 %.1, i32 %.2)
    s   
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo() {{
      %const = fadd double 0.0, 3.14
      ret void
    }}
    s   
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo() {{
      call void asm sideeffect "nop", ""()
      ret void
    }}
    s  
    ; ModuleID = "<string>"
    target triple = "{triple}"

    @A = global i32 undef

    define void @ctor_A()
    {{
      store i32 10, i32* @A
      ret void
    }}

    define void @dtor_A()
    {{
      store i32 20, i32* @A
      ret void
    }}

    define i32 @foo()
    {{
      %.2 = load i32, i32* @A
      %.3 = add i32 %.2, 2
      ret i32 %.3
    }}

    @llvm.global_ctors = appending global [1 x {{i32, void ()*, i8*}}] [{{i32, void ()*, i8*}} {{i32 0, void ()* @ctor_A, i8* null}}]
    @llvm.global_dtors = appending global [1 x {{i32, void ()*, i8*}}] [{{i32, void ()*, i8*}} {{i32 0, void ()* @dtor_A, i8* null}}]
    sc   
declare void @a_readonly_func(i8 *) readonly

declare i8* @a_arg0_return_func(i8* returned, i32*)
t   BaseTestc           B@ sA   e  Z d    Z d   Z e d d  Z d d d  Z d   Z RS(   c         C@ sC   t  j   t  j   t  j   t j   t j |  _ g  t j (d  S(   N(   t   llvmt
   initializet   initialize_native_targett   initialize_native_asmprintert   gct   collectt   garbaget   old_garbage(   t   self(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   setUp   s    



c         C@ s'   t  j   |  j t  j g   |  ` d  S(   N(   R   R   t   assertEqualR   R   (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   tearDown   s    
c         C@ s.   | j  d t j    } t j | |  } | S(   Nt   triple(   t   formatR   t   get_default_triplet   parse_assembly(   R   t   asmt   contextt   mod(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   module   s    t   globc         C@ s(   | d  k r |  j   } n  | j |  S(   N(   t   NoneR*   t   get_global_variable(   R   t   nameR)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR+      s    c         C@ s   t  j j   } | j   S(   N(   R   t   Targett   from_default_triplet   create_target_machine(   R   t   target(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   target_machine   s    N(	   t   __name__t
   __module__R    R"   t   asm_sumR,   R*   R+   R3   (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR      s
   			t   TestDependenciesc           B@ sS   e  Z d  Z e j e j j d  d  e j e j	 j
 d  d  d     Z RS(   sB   
    Test DLL dependencies are within a certain expected set.
    t   linuxs   Linux-specific testt   LLVMLITE_DIST_TESTs   Distribution-specific testc      
   C@ s  t  j j } t j j   } d | d <t j d d | g d t j d | } | j	   \ } } |  j
 d | j  t j d  } t   } x | j   j   D] } | j   }	 |	 r |	 d d	 k r |	 d
 }
 | j |
  } t |	  d k s | r|  j d | f  n  | j | j d
   q q Wd | k sBd | k rY|  j d | f  n  t d d d d d d d d d g	  } t j   d k r| j d  n  xD | D]< }
 |
 j d  r|
 | k r|  j d |
 | f  qqWd  S(   Nt   Ct   LANGt   objdumps   -pt   stdoutt   envi    s$   ^([-_a-zA-Z0-9]+)\.so(?:\.\d+){0,3}$t   NEEDEDi   i   s   invalid NEEDED line: %rt   libct
   libpthreads#   failed parsing dependencies? got %rt   librtt   libdlt   libzt   libmt   libgcc_ss   ld-linuxt   ld64t   PyPyt   libtinfos	   ld-linux-s   unexpected dependency %r in %r(   R
   t   libt   _namet   ost   environt   copyt
   subprocesst   Popent   PIPEt   communicateR!   t
   returncodet   ret   compilet   sett   decodet
   splitlinest   splitt   matcht   lent   failt   addt   groupt   platformt   python_implementationt
   startswith(   R   t   lib_pathR>   t   pt   outt   _t   lib_patt   depst   linet   partst   dept   mt   allowed(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt
   test_linux   s4    
	
(   R4   R5   t   __doc__t   unittestt
   skipUnlesst   sysR_   Ra   RL   RM   t   getRm   (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR7      s   t   TestMiscc           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 e j e   d  d    Z RS(   s7   
    Test miscellaneous functions in llvm.binding.
    c         C@ s   |  j  t  d  S(   N(   R*   R6   (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_parse_assembly   s    c         C@ sX   |  j  t   } |  j t  Wd  QXt | j  } |  j d |  |  j d |  d  S(   Ns   parsing errors   invalid operand type(   t   assertRaisest   RuntimeErrorR*   t   asm_parse_errort   strt	   exceptiont   assertIn(   R   t   cmt   s(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_parse_assembly_error   s
    c         C@ s4   t  j j   } t  j j   } | | k s0 t  d  S(   N(   R   R(   t   get_global_contextt   AssertionError(   R   t	   gcontext1t	   gcontext2(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_global_context   s    c         C@ sb   t  j d d  t  j d d  t  j d  } |  j | d  t  j d  } |  j | d   d  S(   Nt   __xyzzyi  i.  t   __foobar(   R   t
   add_symbolt   address_of_symbolR!   t   assertIsR,   (   R   t   addr(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_dylib_symbols  s    c         C@ s-   t  j   } |  j | t  |  j |  d  S(   N(   R   R%   t   assertIsInstanceRx   t
   assertTrue(   R   R#   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_default_triple
  s    c         C@ so   t  j   } t  j   } |  j | t  |  j |  | j d  } | j d  } |  j | d | d  d  S(   Nt   -i    (   R   t   get_process_tripleR%   R   Rx   R   RY   R!   (   R   R#   t   defaultt   default_partst   triple_parts(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_process_triple  s    c         C@ sY  y t  j   } Wn@ t k
 rR t  j   } | j d  } |  j | d d d  SX|  j | t  |  j | t  j  xG | j	   D]9 \ } } |  j | t
  |  j |  |  j | t  q W|  j | j   t
  d } d j |  } |  j t j | d   |  j t j | d   |  j t j | d   |  j t j | | j     d  S(	   Nt   x86t   msgs(   get_host_cpu_features() should not raises   [+\-][a-zA-Z0-9\._-]+s   ^({0}|{0}(,{0})*)?$t    s   +aas   +a,-bb(   R   t   get_host_cpu_featuresRv   R   Ra   t   assertFalseR   t   dictt
   FeatureMapt   itemsRx   R   t   boolt   flattenR$   t   assertIsNotNoneRT   RZ   (   R   t   featuresR#   t   is_x86t   kt   vt   re_termt   regex(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_host_cpu_features  s*    c         C@ s-   t  j   } |  j | t  |  j |  d  S(   N(   R   t   get_host_cpu_nameR   Rx   R   (   R   t   cpu(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_host_cpu_name8  s    c         C@ s#   d } t  j t j d | g  d  S(   Ns2  if 1:
            from llvmlite import binding as llvm

            llvm.initialize()
            llvm.initialize_native_target()
            llvm.initialize_native_asmprinter()
            llvm.initialize_all_targets()
            llvm.initialize_all_asmprinters()
            llvm.shutdown()
            s   -c(   RO   t
   check_callRq   t
   executable(   R   t   code(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_initfini=  s    
c         C@ s#   d } t  j t j d | g  d  S(   Ns   if 1:
            from llvmlite import binding as llvm

            llvm.set_option("progname", "-debug-pass=Disabled")
            s   -c(   RO   R   Rq   R   (   R   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_set_optionJ  s    c         C@ sQ   t  j \ } } } d d d g } |  j | | f |  |  j | t d   d  S(	   Ni   i    i   i   i
   (   i   i    (   i   i    (   i   i   (   R   t   llvm_version_infoRz   t   range(   R   t   majort   minort   patcht   valid(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_versionT  s    c         C@ s   t  j   d  S(   N(   R   t   check_jit_execution(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_check_jit_execution[  s    s   Locale not availablec         C@ sN   |  j  t  } t |  } t j t j d  t |  } |  j | |  d  S(   NR   (   R*   t   asm_double_localeRx   R   R   R   R!   (   R   Rk   t   expectt   got(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_print_double_locale^  s
    (   R4   R5   Rn   Rt   R}   R   R   R   R   R   R   R   R   R   R   Ro   t   skipIfR   R   (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyRs      s   										
		t   TestModuleRefc           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 d   Z d   Z RS(   c         C@ s;   |  j    } t |  j   } |  j | j d  |  d  S(   Ns   ; ModuleID =(   R*   Rx   t   stripR   Ra   (   R   R)   R|   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_strm  s    c         C@ sQ   |  j    } t |  | j   |  j t j   t |  Wd  QX| j   d  S(   N(   R*   Rx   t   closeRu   t   ctypest   ArgumentError(   R   R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt
   test_closer  s    

c         C@ sw   |  j    } t |  |  t |  Wd  QX|  j t j   t |  Wd  QX|  j t   |  Wd  QXWd  QXd  S(   N(   R*   Rx   Ru   R   R   Rv   (   R   R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt	   test_withz  s    
c         C@ sH   |  j    } d | _ |  j | j d  d | _ |  j | j d  d  S(   Nt   foot   bar(   R*   R.   R!   (   R   R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt	   test_name  s
    		c         C@ sE   |  j    } | j } |  j | t  | | _ |  j | | j  d  S(   N(   R*   t   data_layoutR   Rx   R!   (   R   R)   R|   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_data_layout  s
    		c         C@ sK   |  j    } | j } |  j | t j    d | _ |  j | j d  d  S(   NR   (   R*   R#   R!   R   R%   (   R   R)   R|   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_triple  s
    		c         C@ sv   |  j    } |  j | j   d   |  j  t  } |  j t   } | j   Wd  QXt | j  } |  j	 d |  d  S(   Ns   %.bug = add i32 1, %.bug(
   R*   R   t   verifyR,   t   asm_verification_failRu   Rv   Rx   Ry   Rz   (   R   R)   R{   R|   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_verify  s    c         C@ sx   |  j    } | j d  } |  j | t j  |  j | j d  |  j t   | j d  Wd  QX~ t	 | j   d  S(   Nt   sumR   (
   R*   t   get_functionR   R   t   ValueRefR!   R.   Ru   t	   NameErrorRx   (   R   R)   t   fn(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_function  s    c         C@ st   |  j    } | j d  } |  j | j d  |  j t j d t |    |  j t	   | j d  Wd  QXd  S(   Ns   struct.glob_types8   %struct\.glob_type(\.[\d]+)? = type { i64, \[2 x i64\] }s   struct.doesnt_exist(
   R*   t   get_struct_typeR!   R.   R   RT   RZ   Rx   Ru   R   (   R   R)   t   st_ty(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_struct_type  s    c         C@ sx   |  j    } | j d  } |  j | t j  |  j | j d  |  j t   | j d  Wd  QX~ t	 | j   d  S(   NR+   R   (
   R*   R-   R   R   R   R!   R.   Ru   R   Rx   (   R   R)   t   gv(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_global_variable  s    c         C@ sy   |  j    } | j } ~ t | d d   } |  j t |  d  |  j g  | D] } | j ^ qP d d d d g  d  S(   Nt   keyc         S@ s   |  j  S(   N(   R.   (   t   value(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   <lambda>  R   i   R+   t   glob_bt   glob_ft   glob_struct(   R*   t   global_variablest   sortedR!   R[   R.   (   R   R)   t   itt   globst   g(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_global_variables  s    	c         C@ sU   |  j    } | j } ~ t |  } |  j t |  d  |  j | d j d  d  S(   Ni   i    R   (   R*   t	   functionst   listR!   R[   R.   (   R   R)   R   t   funcs(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_functions  s    	c         C@ s   |  j    } | j } ~ t |  } |  j t |  d  |  j t j d | d j   |  j t j d t	 | d    d  S(   Ni   s   struct\.glob_type(\.[\d]+)?i    s8   %struct\.glob_type(\.[\d]+)? = type { i64, \[2 x i64\] }(
   R*   t   struct_typesR   R!   R[   R   RT   RZ   R.   Rx   (   R   R)   R   t   structs(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_structs  s    	c         C@ s   |  j    } |  j  t  } | j |  |  j t d   | j D  d d g  | j d  | j   |  j t	 j
   | j d  Wd  QXd  S(   Nc         s@ s   |  ] } | j  Vq d  S(   N(   R.   (   t   .0t   f(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pys	   <genexpr>  s    t   mulR   (   R*   t   asm_mult   link_inR!   R   R   R   R   Ru   R   R   (   R   t   destt   src(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_link_in  s    #
c         C@ s   |  j    } |  j  t  } | j | d t |  j t d   | j D  d d g  | j   |  j t d   | j D  d g  | j d  d  S(   Nt   preservec         s@ s   |  ] } | j  Vq d  S(   N(   R.   (   R   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pys	   <genexpr>  s    R   R   c         s@ s   |  ] } | j  Vq d  S(   N(   R.   (   R   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pys	   <genexpr>  s    (	   R*   R   R   R   R!   R   R   R   R   (   R   R   t   src2(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_link_in_preserve  s    #
&c         C@ s]   |  j    } |  j  t  } |  j t   } | j |  Wd  QX|  j d t | j   d  S(   Ns   symbol multiply defined(   R*   t   asm_sum2Ru   Rv   R   Rz   Rx   Ry   (   R   R   R   R{   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_link_in_error  s
    c         C@ sM   |  j    } | j   } d } d } |  j | j |  pE | j |   d  S(   Ns   t   BC(   R*   t
   as_bitcodeR   Ra   (   R   R)   t   bct   bitcode_wrapper_magict   bitcode_magic(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_as_bitcode  s    c         C@ s[   |  j  t   } t j d  Wd  QX|  j d t | j   |  j d t | j   d  S(   NR   s   LLVM bitcode parsing errors   Invalid bitcode signature(   Ru   Rv   R   t   parse_bitcodeRz   Rx   Ry   (   R   R{   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_parse_bitcode_error  s    c         C@ sv   t  j   } |  j d |  j   } t  j   } t  j | |  } |  j | j   |  | j d  | j d  d  S(   NR(   R   R+   (   R   t   create_contextR*   R   R   R!   R   R-   (   R   t   context1R   t   context2R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_bitcode_roundtrip  s    c         C@ sH   |  j    } | j   } |  j | |  |  j | j   | j    d  S(   N(   R*   t   clonet   assertIsNotR!   R   (   R   Rk   t   cloned(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_cloning!  s    (   R4   R5   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR   k  s(   																
			
		t   JITTestMixinc           B@ s   e  Z d  Z d 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*   
    Mixin for ExecutionEngine tests.
    R   c         C@ s<   | j    | j |  } |  j |  t t t t  |  S(   N(   t   finalize_objectt   get_function_addressR   R   R   (   R   t   eet	   func_namet   cfptr(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   get_sum-  s    
c         C@ sV   |  j    } |  j |  5 } |  j |  } | d d  } |  j d |  Wd  QXd  S(   Ni   ii(   R*   t   jitR  R!   (   R   R)   R
  t   cfunct   res(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_run_code3  s
    c         C@ sP   |  j  |  j    } | j   | j   |  j t j   | j   Wd  QXd  S(   N(   R  R*   R   Ru   R   R   R  (   R   R
  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR   :  s
    

c      
   C@ sl   |  j  |  j    } |  Wd  QX|  j t   |  Wd  QXWd  QX|  j t j   | j   Wd  QXd  S(   N(   R  R*   Ru   Rv   R   R   R  (   R   R
  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR   A  s    c         C@ s3   |  j    } |  j |  } | j   | j   d  S(   N(   R*   R  R   (   R   R)   R
  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_module_lifetimeK  s    
c         C@ s3   |  j    } |  j |  } | j   | j   d  S(   N(   R*   R  R   (   R   R)   R
  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_module_lifetime2Q  s    
c         C@ s   |  j  |  j    } |  j t  } | j |  |  j t   | j |  Wd  QX|  j | j  | j   |  j	 | j  d  S(   N(
   R  R*   R   t
   add_moduleRu   t   KeyErrorR   t   closedR   R   (   R   R
  R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_add_moduleW  s    
c         C@ sI   |  j  |  j    } |  j t  } | j |  | j   | j   d  S(   N(   R  R*   R   R  R   (   R   R
  R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_add_module_lifetimea  s
    
c         C@ sI   |  j  |  j    } |  j t  } | j |  | j   | j   d  S(   N(   R  R*   R   R  R   (   R   R
  R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_add_module_lifetime2h  s
    
c         C@ s   |  j  |  j    } |  j t  } | j |  | j |  |  j t   | j |  Wd  QX|  j | j  | j	   |  j | j  d  S(   N(
   R  R*   R   R  t   remove_moduleRu   R  R   R  R   (   R   R
  R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_remove_moduleo  s    
c         C@ sU   |  j    } |  j |  } | j } |  j | j |  t |  ~ ~ t |  d  S(   N(   R*   R  t   target_dataR   Rx   (   R   R)   R
  t   td(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_target_dataz  s    	
c   	      C@ sN  |  j    } |  j |  } | j } | j d  } | j d  } | j d  } t j d
 k  rf d n d } x3 | | | f D]" } |  j | j | j  |  q| W|  j | j	 | j  d  |  j | j
 | j  d  |  j | j	 | j  d  |  j | j
 | j  d  |  j | j	 | j  d	  |  j | j
 | j  d  d  S(   NR+   R   R   i   i    i   i   i   i   I       (   i   i   i   (   i   i   (   R*   R  R  R-   Rq   t   maxsizeR!   t   get_abi_sizet   typet   get_pointee_abi_sizet   get_pointee_abi_alignmentRz   (	   R   R)   R
  R  t   gv_i32t   gv_i8t	   gv_structt   pointer_sizeR   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_target_data_abi_enquiries  s    	 c         @ s4  g      f d   } |  j    } |  j |  } | j |  |  j t    d  |  j |  } | d d  |  j t    d  |  j   d d |  |  j   d d t  g    (|  j  t	  } | j
 |  |  j | d  } |  j t    d  |  j   d d |  |  j   d d t  d  S(   Nc         @ s     j  |  | f  d  S(   N(   t   append(   R)   t   buf(   t   notifies(    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   notify  s    i    i   ii   R   (   R*   R  t   set_object_cacheR!   R[   R  R   R   t   bytesR   R  (   R   R,  R)   R
  R  t   mod2(    (   R+  s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_object_cache_notify  s$    c         @ s  g   g     f d   }   f d   } |  j    } |  j |  } | j | |  |  j t   d  |  j t    d  |  j |  } |  j t   d  |  j t    d  |  j   d |   d d     f d   } g   (g    (|  j  t  } |  j |  } | j | |  |  j t   d  |  j t    d  |  j |  } |  j | d d  d  |  j t   d  |  j t    d  d  S(	   Nc         @ s     j  |  | f  d  S(   N(   R)  (   R)   R*  (   R+  (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR,    s    c         @ s     j  |   d  S(   N(   R)  (   R)   (   t
   getbuffers(    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt	   getbuffer  s    i    i   c         @ s     j  |    S(   N(   R)  (   R)   (   R1  t
   sum_buffer(    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   getbuffer_successful  s    i   ii(   R*   R  R-  R!   R[   R  R   R   (   R   R,  R2  R)   R
  R  R4  (    (   R1  R+  R3  s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_object_cache_getbuffer  s4    (   R4   R5   Rn   R  R  R   R   R  R  R  R  R  R  R  R(  R0  R5  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  (  s   			
			
				
		t   JITWithTMTestMixinc           B@ s   e  Z d    Z d   Z RS(   c         C@ s   |  j    } |  j   } |  j | |  } | j |  } |  j d |  | j t  | j |  } |  j d |  |  j | |  d S(   s%   Test TargetMachineRef.emit_assembly()R   N(   R3   R*   R  t   emit_assemblyRz   t   set_asm_verbosityR   t   assertNotEqual(   R   R3   R)   R
  t   raw_asmt   raw_asm_verbose(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_emit_assembly  s    c         C@ sy   |  j    } |  j   } |  j | |  } | j |  } |  j | t j  t j j	 d  ru |  j
 d | d   n  d S(   s#   Test TargetMachineRef.emit_object()R8   t   ELFi
   N(   R3   R*   R  t   emit_objectR   R   t   binary_typeRq   R_   Ra   Rz   (   R   R3   R)   R
  t   code_object(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_emit_object  s    (   R4   R5   R<  RA  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR6    s   	t	   TestMCJitc           B@ s   e  Z d  Z d d  Z RS(   s@   
    Test JIT engines created with create_mcjit_compiler().
    c         C@ s+   | d  k r |  j   } n  t j | |  S(   N(   R,   R3   R   t   create_mcjit_compiler(   R   R)   R3   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR     s    N(   R4   R5   Rn   R,   R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyRB    s   t   TestValueRefc           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 d   Z d   Z d   Z RS(   c         C@ s5   |  j    } | j d  } |  j t |  d  d  S(   NR+   s   @glob = global i32 0(   R*   R-   R!   Rx   (   R   R)   R+   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR     s    c         C@ sN   |  j    } | j d  } |  j | j d  d | _ |  j | j d  d  S(   NR+   t   foobar(   R*   R-   R!   R.   (   R   R)   R+   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR     s
    	c         C@ s   |  j    } | j d  } | j } |  j | j t j  | | _ |  j | j |  xC d D]; } | | _ |  j | j t j  |  j | j j |  q] Wd  S(   NR+   t   internalt   external(   RF  RG  (   R*   R-   t   linkageR   R   t   LinkageR!   R.   (   R   R)   R+   RH  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_linkage  s    			c         C@ s   |  j    } | j d  } | j } |  j | j t j  | | _ |  j | j |  xC d D]; } | | _ |  j | j t j  |  j | j j |  q] Wd  S(   NR+   t   hiddent	   protectedR   (   RK  RL  R   (   R*   R-   t
   visibilityR   R   t
   VisibilityR!   R.   (   R   R)   R+   RM  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_visibility   s    			c         C@ s   |  j    } | j d  } | j } |  j | j t j  | | _ |  j | j |  xC d D]; } | | _ |  j | j t j  |  j | j j |  q] Wd  S(   NR+   t	   dllimportt	   dllexportR   (   RP  RQ  R   (   R*   R-   t   storage_classR   R   t   StorageClassR!   R.   (   R   R)   R+   RR  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_storage_class,  s    			c         C@ sj   |  j    } | j d  } | j d  |  j t   } | j d  Wd  QX|  j t | j  d  d  S(   NR   t	   nocapturet   zexts   no such attribute 'zext'(   R*   R   t   add_function_attributeRu   t
   ValueErrorR!   Rx   Ry   (   R   R)   R   t   raises(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_add_function_attribute8  s    c         C@ s2   |  j    } | j d  } |  j | j  |  d  S(   NR+   (   R*   R-   R   (   R   R)   R+   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_module@  s    c         C@ s;   |  j    } | j d  } | j } |  j | t j  d  S(   NR+   (   R*   R-   R!  R   R   t   TypeRef(   R   R)   R+   t   tp(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt	   test_typeE  s    	c         C@ sl   |  j    } | j d  } | j } |  j | j d  | j d  } |  j t j d | j j j   d  S(   NR+   R   R   s   struct\.glob_type(\.[\d]+)?(	   R*   R-   R!  R!   R.   R   RT   RZ   t   element_type(   R   R)   R+   R]  t   st(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_type_nameK  s    	c         C@ s>   |  j    } | j d  } | j } |  j t |  d  d  S(   NR+   s   i32*(   R*   R-   R!  R!   Rx   (   R   R)   R+   R]  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_type_printing_variableT  s    	c         C@ s8   |  j    } | j d  } |  j t | j  d  d  S(   NR   s   i32 (i32, i32)*(   R*   R   R!   Rx   R!  (   R   R)   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_type_printing_functionZ  s    c         C@ sy   |  j    } | j d  } |  j | j j  |  j t j d t | j    |  j t j d t | j j	    d  S(   NR   s   %struct\.glob_type(\.[\d]+)?\*s8   %struct\.glob_type(\.[\d]+)? = type { i64, \[2 x i64\] }(
   R*   R-   R   R!  t
   is_pointerR   RT   RZ   Rx   R_  (   R   R)   R`  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_type_printing_struct_  s    c         C@ s$   |  j    } | j   | j   d  S(   N(   R+   R   (   R   R+   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR   i  s    
c         C@ sQ   |  j    j d  } |  j  t  j d  } |  j | j  |  j | j  d  S(   NR   (   R*   R   t   asm_sum_declareR   t   is_declarationR   (   R   t   definedt   declared(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_is_declarationn  s    c         C@ sY   |  j  t  } t | j  } |  j t |  d  x | D] } |  j | j  q; Wd  S(   Ni   (   R*   R6   R   R   R!   R[   R   t	   is_global(   R   R)   t   gvarsR   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_module_global_variablest  s
    c         C@ s   |  j    } t | j  } |  j t |  d  | d } |  j | j  |  j | j d  |  j t	   } | j
 Wd  QX|  j t	   } | j Wd  QX|  j t	   } | j Wd  QXd  S(   Ni   i    R   (   R*   R   R   R!   R[   R   t   is_functionR.   Ru   RX  t   instructionst   operandst   opcode(   R   R)   R   t   funcR{   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_module_functions{  s    
c         C@ s*  |  j    } | j d  } |  j | j  t | j  } |  j t |  d  |  j | d j  |  j | d j  |  j | d j	 d  |  j t
 | d j  d  |  j | d j	 d  |  j t
 | d j  d  |  j t   } | d j Wd  QX|  j t   } | d j Wd  QXd  S(   NR   i   i    i   s   .1t   i32s   .2(   R*   R   R   Rn  R   t	   argumentsR!   R[   t   is_argumentR.   Rx   R!  Ru   RX  t   blocks(   R   R)   Rr  t   argsR{   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_function_arguments  s    c         C@ sX   |  j    j d  } t | j  } |  j t |  d  | d } |  j | j  d  S(   NR   i   i    (   R*   R   R   Rw  R!   R[   R   t   is_block(   R   Rr  Rw  t   block(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_function_blocks  s
    
c         C@ s   |  j    j d  } t t | j  d j  } |  j t |  d  |  j | d j  |  j | d j  |  j | d j  |  j | d j	 d  |  j | d j	 d  |  j | d j	 d  d  S(   NR   i    i   i   i   R]   t   ret(
   R*   R   R   Rw  Ro  R!   R[   R   t   is_instructionRq  (   R   Rr  t   insts(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_block_instructions  s    c         C@ s  |  j    j d  } t t | j  d j  d } |  j | j d  t | j  } |  j t |  d  |  j	 | d j
  |  j	 | d j
  |  j | d j d  |  j t | d j  d  |  j | d j d  |  j t | d j  d  d  S(	   NR   i    R]   i   i   s   .1Rt  s   .2(   R*   R   R   Rw  Ro  R!   Rq  Rp  R[   R   t
   is_operandR.   Rx   R!  (   R   Rr  R]   Rp  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_instruction_operands  s     c         C@ s   |  j  t  } t | j  } x | j D] } t | j  } | j d k rb |  j | d g  q( | j d k r( |  j | g   t | j  } |  j t | d j  d g  |  j t | d j  g   q( q( Wd  S(   Nt   a_readonly_funct   readonlyt   a_arg0_return_funci    t   returnedi   (   R*   t   asm_attributesR   R   t
   attributesR.   R!   Ru  (   R   R)   R   Rr  t   attrsRx  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_function_attributes  s     (   R4   R5   R   R   RJ  RO  RT  RZ  R[  R^  Ra  Rb  Rc  Re  R   Rj  Rm  Rs  Ry  R|  R  R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyRD    s*   													
								t
   TestTargetc           B@ s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C@ s   t  j j } |  j t   } | d  Wd  QX|  j d t | j   t  j   } | |  } |  j	 | j
 |  | j   d  S(   NRE  s(   No available targets are compatible with(   R   R/   t   from_tripleRu   Rv   Rz   Rx   Ry   R%   R!   R#   R   (   R   R   R{   R#   R2   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_from_triple  s    	c         C@ sZ   t  j j t  j    } | j d d d d d  t  j   } | j | d d d d  d  S(   NR   i   R   (   R   R/   R  R%   R1   R   (   R   R2   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_create_target_machine  s    c         C@ sT   t  j j t  j    } t  j j   } |  j | j t  |  j | j | j  d  S(   N(	   R   R/   R  R%   R0   R   R.   Rx   R!   (   R   t   tt   u(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR     s    c         C@ sT   t  j j t  j    } t  j j   } |  j | j t  |  j | j | j  d  S(   N(	   R   R/   R  R%   R0   R   t   descriptionRx   R!   (   R   R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_description  s    c         C@ sN   t  j j t  j    } t |  } |  j | j |  |  j | j |  d  S(   N(   R   R/   R  R%   Rx   Rz   R.   R  (   R   R2   R|   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR     s    (   R4   R5   R  R  R   R  R   (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s
   				t   TestTargetDatac           B@ s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C@ s   t  j d  S(   Ns%   e-m:e-i64:64-f80:128-n8:16:32:64-S128(   R   t   create_target_data(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s    c         C@ s8   |  j    } |  j   } |  j | j | j  d  d  S(   Ni   (   R  R+   R!   R   R!  (   R   R  R+   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_abi_size  s    c         C@ sc   |  j    } |  j   } |  j | j | j  d  |  j d  } |  j | j | j  d  d  S(   Ni   R   i   (   R  R+   R!   R"  R!  (   R   R  R+   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_pointee_abi_size  s
    c         C@ s   |  j    } |  j d  } |  j t   | j | j d  Wd  QX| j j } |  j | j | d  d  |  j | j | d  d  d  S(   NR   i    i   i   (   R  R+   Ru   RX  t   get_element_offsetR!  R_  R!   (   R   R  R+   t   struct_type(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_struct_element_offset  s    (   R4   R5   R  R  R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s   				t   TestTargetMachinec           B@ s   e  Z d    Z d   Z RS(   c         C@ s)   |  j    } t j   } | j |  d  S(   N(   R3   R   t   create_module_pass_managert   add_analysis_passes(   R   t   tmt   pm(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_add_analysis_passes  s    c         C@ sk   |  j    } | j } |  j   } | j d  } t j d k  rE d n d } |  j | j | j  |  d  S(   NR+   i   i    i   i   I       (	   R3   R  R*   R-   Rq   R  R!   R   R!  (   R   R  R  R)   R$  R'  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_target_data_from_tm  s    	(   R4   R5   R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s   	t   TestPassManagerBuilderc           B@ sk   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   c         C@ s
   t  j   S(   N(   R   t   PassManagerBuilder(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   pmb#  s    c         C@ s"   t  j   } d | _ d | _ d  S(   Ni   i   (   R   t   create_pass_manager_buildert   inlining_thresholdt	   opt_level(   R   R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_old_api&  s    	c         C@ s$   |  j    } | j   | j   d  S(   N(   R  R   (   R   R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR   ,  s    
c         C@ sY   |  j    } |  j | j t j  x0 t d  D]" } | | _ |  j | j |  q/ Wd  S(   Ni   (   R  R   R  R   t   integer_typesR   R!   (   R   R  t   i(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_opt_level1  s
    	c         C@ sY   |  j    } |  j | j t j  x0 t d  D]" } | | _ |  j | j |  q/ Wd  S(   Ni   (   R  R   t
   size_levelR   R  R   R!   (   R   R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_size_level8  s
    	c         C@ sG   |  j    } |  j t   | j Wd  QXx d D] } | | _ q0 Wd  S(   Ni   iP   i^  (   i   iP   i^  (   R  Ru   t   NotImplementedErrorR  (   R   R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_inlining_threshold?  s
    c         C@ sV   |  j    } |  j | j t  x0 t t f D]" } | | _ |  j | j |  q, Wd  S(   N(   R  R   t   disable_unroll_loopsR   R   R   R!   (   R   R  t   b(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_disable_unroll_loopsF  s
    	c         C@ sV   |  j    } |  j | j t  x0 t t f D]" } | | _ |  j | j |  q, Wd  S(   N(   R  R   t   loop_vectorizeR   R   R   R!   (   R   R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_loop_vectorizeM  s
    	c         C@ sV   |  j    } |  j | j t  x0 t t f D]" } | | _ |  j | j |  q, Wd  S(   N(   R  R   t   slp_vectorizeR   R   R   R!   (   R   R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_slp_vectorizeT  s
    	c         C@ s=   |  j    } t j   } | j |  | j   | j   d  S(   N(   R  R   R  t   populateR   (   R   R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt!   test_populate_module_pass_manager[  s
    
c         C@ sL   |  j    } |  j   } t j |  } | j |  | j   | j   d  S(   N(   R*   R  R   t   create_function_pass_managerR  R   (   R   R)   R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt#   test_populate_function_pass_managerb  s    
(   R4   R5   R  R  R   R  R  R  R  R  R  R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  !  s   										t   PassManagerTestMixinc           B@ s   e  Z d    Z d   Z RS(   c         C@ s   t  j   } d | _ | S(   Ni   (   R   R  R  (   R   R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  m  s    	c         C@ s$   |  j    } | j   | j   d  S(   N(   R  R   (   R   R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR   r  s    
(   R4   R5   R  R   (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  k  s   	t   TestModulePassManagerc           B@ s   e  Z d    Z d   Z RS(   c         C@ s
   t  j   S(   N(   R   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  z  s    c         C@ s  |  j    } |  j   j |  |  j   } t |  } | j |  t |  } | j   } x t |  D] \ } } | j   j	 d  ri d d h } x* | D] }	 |	 | k r Pq q Wt
 d   | | }
 | |	 h Aj   } |  j d |  |  j | |  Pqi qi Wt
 d   d  S(   Ns   ret i32s   %.3s   %.4s   expected tokens not founds   expected IR not found(   R  R  R  R*   Rx   t   runRX   t	   enumerateR   Ra   Rv   t   popRz   t   assertNotIn(   R   R  R)   t   orig_asmt   opt_asmt   opt_asm_splitt   idxt   lt   toksR  t   add_linet
   othertoken(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_run}  s(    
(   R4   R5   R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  x  s   	t   TestFunctionPassManagerc           B@ s&   e  Z d d   Z d   Z d   Z RS(   c         C@ s   | p |  j    } t j |  S(   N(   R*   R   R  (   R   R)   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s    c         C@ s$   |  j    } | j   | j   d  S(   N(   R  R   t   finalize(   R   R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR     s    
c         C@ s   |  j    } | j d  } |  j |  } |  j   j |  | j   t |  } | j   | j |  | j	   t |  } |  j
 d |  |  j d |  d  S(   NR   s   %.4(   R*   R   R  R  R  R   Rx   R   R  R  Rz   R  (   R   R)   R   R  R  R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s    


N(   R4   R5   R,   R  R   R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s   	t
   TestPassesc           B@ s   e  Z d    Z d   Z RS(   c         C@ s
   t  j   S(   N(   R   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s    c         C@ s   |  j    } | j   | j   | j   | j d  | j   | j   | j   | j   | j	   | j
   | j   | j   | j   | j   | j   | j   d  S(   Ni   (   R  t   add_constant_merge_passt   add_dead_arg_elimination_passt   add_function_attrs_passt   add_function_inlining_passt   add_global_dce_passt   add_global_optimizer_passt   add_ipsccp_passt   add_dead_code_elimination_passt   add_cfg_simplification_passt   add_gvn_passt   add_instruction_combining_passt   add_licm_passt   add_sccp_passt   add_sroa_passt"   add_type_based_alias_analysis_passt   add_basic_alias_analysis_pass(   R   R  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_populate  s"    













(   R4   R5   R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s   	t	   TestDylibc           B@ s8   e  Z d    Z e j e j   d k d  d    Z RS(   c         C@ s'   |  j  t   t j d  Wd  QXd  S(   Ns   zzzasdkf;jasd;l(   Ru   Rv   R   t   load_library_permanently(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_bad_library  s    t   Linuxt   Darwins#   test only works on Linux and Darwinc         C@ sS   t  j   } | d k r' t d  } n | d k rB t d  } n  t j |  d  S(   NR  Rk   R  RE   (   R_   t   systemR   R   R  (   R   R  RE   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt	   test_libm  s    (   R  R  (   R4   R5   R  Ro   Rp   R_   R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s   	t   TestAnalysisc           B@ s#   e  Z d    Z d   Z d   Z RS(   c         C@ s   t  j   } t  j t  j d  t  j d  t  j d  g  } t  j | | d  } t  j | j    } | j \ } } | j | |  } | j	 |  | S(   Ni    R   (
   R   t   Modulet   FunctionTypet   IntTypet   Functiont	   IRBuildert   append_basic_blockRx  R]   R}  (   R   Rk   t   ftR   t   bdt   xt   yt   z(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   build_ir_module  s    3c         C@ si   |  j    } | j d  } t j |  } t j | d t } d } |  j | |  |  j | |  d  S(   NR   t	   show_insts   %.5 = add i32 %.1, %.2(   R  t
   get_globalR   t   get_function_cfgR   Rz   R  (   R   R)   R   t   dot_showing_instt   dot_without_instt   inst(    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_get_function_cfg_on_ir  s    c         C@ s   |  j    j d  } t j | d t } t j | d t } d } |  j | |  |  j | |  d } |  j | |  |  j | |  d } |  j | |  |  j | |  d  S(   NR   R  t   digraphs   CFG for 'sum' functions   %.3 = add i32 %.1, %.2(   R*   R   R   R  R   R   Rz   R  (   R   Rh  R  R  t   prefixt   fnameR  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_function_cfg_on_llvm_value  s    (   R4   R5   R  R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s   	
		t   TestTypeParsingc           B@ s    e  Z e d     Z d   Z RS(   c         c@ s.   t  j   } | Vt |  } t j |  d  S(   N(   R   R  Rx   R   R&   (   R   R)   R'   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   check_parsing	  s    c      	   C@ s   |  j    O } t j t j d  g  } t j | | d  } t j | d g  | _ Wd  QX|  j    U } t j t j d  g d t } t j | | d  } t j | d g  | _ Wd  QXd  S(   Ni    R   i   t   packed(   R  R   t   LiteralStructTypeR  t   GlobalVariablet   Constantt   initializerR   (   R   R)   t   typR   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_literal_struct  s    	(   R4   R5   R   R  R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR    s   
t   TestGlobalConstructorsc           B@ s   e  Z d    Z RS(   c         C@ s   |  j  t  } |  j |  } | j   | j   | j d  } t j t j  } t j	 | |  } |  j
 | j j d  | j d  } t j t j  |  } |  j
 |   d  | j   |  j
 | j j d  d  S(   Nt   Ai
   R   i   i   (   R*   t   asm_global_ctorsR  R  t   run_static_constructorst   get_global_value_addressR   t   POINTERt   c_int32t   castR!   t   contentsR   R	  R   t   run_static_destructors(   R   R)   R
  t   ptr_addrt   ptr_tt   ptrt   foo_addrR   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_global_ctors_dtors%  s    


(   R4   R5   R  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  $  s   t   TestGlobalVariablesc           B@ sw   e  Z e 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(   c         C@ s   t  j   } t  j d  } t  j | | d  } | | _ t |  } | r^ |  j d |  n |  j d |  |  j |  d  S(   Ni    R   t   undef(	   R   R  R  R   RH  Rx   Rz   R  R*   (   R   RH  t	   has_undefR)   R  R   R'   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   check_global_variable_linkage?  s    	c         C@ s   |  j  d  d  S(   NRF  (   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_internal_linkageS  s    c         C@ s   |  j  d  d  S(   Nt   common(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_common_linkageV  s    c         C@ s   |  j  d d t d  S(   NRG  R  (   R  R   (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_external_linkageY  s    c         C@ s   |  j  d  d  S(   Nt   available_externally(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt!   test_available_externally_linkage\  s    c         C@ s   |  j  d  d  S(   Nt   private(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_private_linkage_  s    c         C@ s   |  j  d  d  S(   Nt   linkonce(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_linkonce_linkageb  s    c         C@ s   |  j  d  d  S(   Nt   weak(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_weak_linkagee  s    c         C@ s   |  j  d  d  S(   Nt	   appending(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_appending_linkageh  s    c         C@ s   |  j  d d t d  S(   Nt   extern_weakR  (   R  R   (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_extern_weak_linkagek  s    c         C@ s   |  j  d  d  S(   Nt   linkonce_odr(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_linkonce_odr_linkagen  s    c         C@ s   |  j  d  d  S(   Nt   weak_odr(   R  (   R   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_weak_odr_linkageq  s    (   R4   R5   R   R  R  R  R  R  R  R!  R#  R%  R'  R)  R+  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR  >  s   										R   s   only on x86t   TestInlineAsmc           B@ s   e  Z d    Z RS(   c         C@ sK   t  j   |  j d t  } |  j   } | j |  } |  j d |  d  S(   NR'   t   nop(   R   t   initialize_native_asmparserR*   t   asm_inlineasmR3   R7  Rz   (   R   Rk   R  R'   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_inlineasmw  s
    
(   R4   R5   R0  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR,  u  s   t   TestObjectFilec           B@ s)   e  Z d  Z d   Z d   Z d   Z RS(   s,  
        ;ModuleID = <string>
        target triple = "{triple}"

        declare i32 @sum(i32 %.1, i32 %.2)

        define i32 @sum_twice(i32 %.1, i32 %.2) {{
            %.3 = call i32 @sum(i32 %.1, i32 %.2)
            %.4 = call i32 @sum(i32 %.3, i32 %.3)
            ret i32 %.4
        }}
    c         C@ s  |  j    } |  j   } | j |  } t j j |  } t } d } x | j   D] } | j   rR t	 } |  j
 | j    |  j | j   d k  |  j t | j    d k  |  j
 | j    |  j | | j   k   | j   } PqR qR W|  j |  d  S(   Nii    (   R3   R*   R>  R   t   ObjectFileReft	   from_dataR   t   sectionst   is_textR   R   R.   R   t   sizeR[   t   datat   address(   R   R3   R)   t   obj_bint   objt   has_textt   last_addressR|   (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_object_file  s"    c         C@ s   |  j    } |  j   } | j |  } t j j |  } t j |  j |  j  |  } | j |  t	 t
 t
 t
  | j d   } |  j | d d  d  d  S(   Nt	   sum_twicei   i   i
   (   R3   R*   R>  R   R2  R3  RC  t   mod_asmt   add_object_fileR   R   R	  R!   (   R   R3   R)   R9  R:  R  R>  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   test_add_object_file  s    	c   	      C@ s   |  j    } |  j   } | j |  } t   \ } } zj z- t j | d  } | j |  | j   Wd  | j   Xt	 j
 |  j |  j  |  } | j |  Wd  t j |  Xt t t t  | j d   } |  j | d d  d  d  S(   Nt   wbR>  i   i   i
   (   R3   R*   R>  R   RL   t   fdopent   writet   flushR   R   RC  R?  R@  t   unlinkR   R   R	  R!   (	   R   R3   R)   R9  t	   temp_desct	   temp_pathR   R  R>  (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt$   test_add_object_file_from_filesystem  s"    	(   R4   R5   R?  R=  RA  RI  (    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyR1    s   		t   __main__(F   t
   __future__R    R   R   R   R   t   ctypes.utilR   R   R   RL   R_   RT   RO   Rq   Ro   t
   contextlibR   t   tempfileR   t   llvmliteR   R   R	   R   t   llvmlite.bindingR
   R   R   t   machineR  R   R6   R   R   Rw   R   Rf  R   R/  R  R  R   R7   Rs   R   t   objectR  R6  RB  RD  R  R  R  R  R  R  R  R  R  R  R  R  R  Rp   Ra   R,  R1  R4   t   main(    (    (    s:   lib/python2.7/site-packages/llvmlite/tests/test_binding.pyt   <module>   sp   	
"(}(J%&7!	N