ó
    „ñ:i?· ã                   óŽ  • S SK r S SKrS SK JrJrJr  S SKJr  S SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  \
R6                  " 5       S
:X  a  \R8                  " S5        \R:                  " \R<                  S:H  S\R<                   35      r\R:                  " \R<                  S:H  S\R<                   35      r Sr! S SK"r"Sr!\R:                  " \!S5      r$S r%Sr&Sr'Sr(Sr)Sr*Sr+Sr,\
RZ                  " 5       S:X  a  \,R]                  SS5      r,Sr/Sr0S r1S!r2S"r3S#r4S$r5S%r6S&r7S'r8S(r9S)r:S*r;S+r</ S,Qr=/ S-Qr>/ S.Qr?S/r@S0rAS1rBS2rCS3rDS4rES5rFS6rGS7rH " S8 S9\5      rI " S: S;\I5      rJ " S< S=\I5      rK " S> S?\I5      rL " S@ SA\I5      rM " SB SC\N5      rO " SD SE\O5      rP " SF SG\I\P5      rQ\R¤                  " SH5       " SI SJ\I5      5       rS " SK SL\I5      rT " SM SN\I5      rU " SO SP\I5      rV " SQ SR\I5      rW " SS ST\I5      rX " SU SV\I5      rY " SW SX\I5      rZ " SY SZ\I5      r[ " S[ S\\Q5      r\ " S] S^\I5      r]\R:                  " \
R6                  " 5       R½                  S_5      S`5       " Sa Sb\I5      5       r_ " Sc Sd\I5      r` " Se Sf\I5      ra " Sg Sh\I5      rb " Si Sj\N5      rc " Sk Sl\I\c5      rd " Sm Sn\I\c5      re " So Sp\I\c5      rf\R:                  " \	RÎ                  RÑ                  Sq5      Sr5      \$ " Ss St\5      5       5       ri\jSu:X  a  \RÖ                  " 5         gg! \# a     GN\f = f)vé    N)Ú	CFUNCTYPEÚc_intÚc_int32)Úfind_library)Úcontextmanager)Úmkstemp)Úir)Úbinding)Úffi)ÚTestCaseÚarmv7lzlibgcc_s.so.1Úcondazconda package test only, have Úwheelzwheel package test only, have FTztest needs py-lief packagec                  ó¶  • [         R                  " [         R                  5      n  [         R                  " [         R                  S5         [         R                  " [         R                  U 5        g! [         R                   a(     [         R                  " [         R                  U 5        gf = f! [         R                  " [         R                  U 5        f = f)NÚde_DEFT)ÚlocaleÚ	setlocaleÚLC_ALLÚError)Úcurs    Ú^/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/llvmlite/tests/test_binding.pyÚno_de_localer   ,   s�   € Ü
×
Ò
œ6Ÿ=™=Ó
)€Cð-Ü×ÒœŸ™¨Ô0ð ä×ÒœŸ™¨Õ,øô �<‰<ó Øô 	×ÒœŸ™¨Õ,ðûô
 	×ÒœŸ™¨Õ,ús#   ¦%A2 Á2B.ÂB1 Â-B.Â.B1 Â1'Caæ  
    ; ModuleID = '<string>'
    source_filename = "asm_sum.c"
    target triple = "{triple}"
    %struct.glob_type = type {{ i64, [2 x i64]}}
    %struct.glob_type_vec = 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
    }}
    z 
    ; ModuleID = '<string>'
    target triple = "{triple}"

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

    define i64 @sum(i64 %.1, i64 %.2) {{
      %.3 = add i64 %.1, %.2
      %.4 = add i64 5, %.3
      %.5 = add i64 -5, %.4
      ret i64 %.5
    }}
    z¢
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define i32 @sum(i32 %.1, i32 %.2) {{
        %.3 = add i32 %.1, %.2
        ret i32 0
    }}
    z½
    ; 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
    }}
    a  
    ; ModuleID = '<string>'
    target triple = "{triple}"
    @mul_glob = global i32 0

    declare i32 @sum(i32, i32)
    define i32 @square_sum(i32 %.1, i32 %.2) {{
      %.3 = call i32 @sum(i32 %.1, i32 %.2)
      %.4 = mul i32 %.3, %.3
      ret i32 %.4
    }}
    zÏ
    ; ModuleID = '<string>'
    target triple = "{triple}"

    declare i8* @Py_GetVersion()

    define void @getversion(i32 %.1, i32 %.2) {{
      %1 = call i8* @Py_GetVersion()
      ret void
    }}
    ÚPyPyÚPy_GetVersionÚPyPy_GetVersionz¡
    ; ModuleID = '<string>'
    target triple = "{triple}"

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

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

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

    declare i32 @vararg(i32 %.1, ...)
    zÔ
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo() {{
      %const = fadd fp128 0xLF3CB1CCF26FBC178452FB4EC7F91DEAD, 0xL00000000000000000000000000000001
      ret void
    }}
    z–
    ; ModuleID = '<string>'
    target triple = "{triple}"

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

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

    define void @inlineme() {{
        ret void
    }}

    define i32 @caller(i32 %.1, i32 %.2) {{
    entry:
      %stack = alloca i32
      store i32 %.1, i32* %stack
      br label %main
    main:
      %loaded = load i32, i32* %stack
      %.3 = add i32 %loaded, %.2
      %.4 = add i32 0, %.3
      call void @inlineme()
      ret i32 %.4
    }}
aÉ  
; ModuleID = 'test.c'
source_filename = "test.c"
target triple = "{triple}"

; Function Attrs: noinline nounwind optnone ssp uwtable
define void @inlineme() noinline !dbg !15 {{
  ret void, !dbg !18
}}

; Function Attrs: noinline nounwind optnone ssp uwtable
define i32 @foo(i32 %0, i32 %1) !dbg !19 {{
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  store i32 %0, i32* %3, align 4
  call void @llvm.dbg.declare(metadata i32* %3, metadata !23, metadata !DIExpression()), !dbg !24
  store i32 %1, i32* %4, align 4
  call void @llvm.dbg.declare(metadata i32* %4, metadata !25, metadata !DIExpression()), !dbg !26
  call void @inlineme(), !dbg !27
  %5 = load i32, i32* %3, align 4, !dbg !28
  %6 = load i32, i32* %4, align 4, !dbg !29
  %7 = add nsw i32 %5, %6, !dbg !30
  ret i32 %7, !dbg !31
}}

; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1

attributes #1 = {{ nofree nosync nounwind readnone speculatable willreturn }}

!llvm.module.flags = !{{!1, !2, !3, !4, !5, !6, !7, !8, !9, !10}}
!llvm.dbg.cu = !{{!11}}
!llvm.ident = !{{!14}}

!0 = !{{i32 2, !"SDK Version", [2 x i32] [i32 12, i32 3]}}
!1 = !{{i32 7, !"Dwarf Version", i32 4}}
!2 = !{{i32 2, !"Debug Info Version", i32 3}}
!3 = !{{i32 1, !"wchar_size", i32 4}}
!4 = !{{i32 1, !"branch-target-enforcement", i32 0}}
!5 = !{{i32 1, !"sign-return-address", i32 0}}
!6 = !{{i32 1, !"sign-return-address-all", i32 0}}
!7 = !{{i32 1, !"sign-return-address-with-bkey", i32 0}}
!8 = !{{i32 7, !"PIC Level", i32 2}}
!9 = !{{i32 7, !"uwtable", i32 1}}
!10 = !{{i32 7, !"frame-pointer", i32 1}}
!11 = distinct !DICompileUnit(language: DW_LANG_C99, file: !12, producer: "Apple clang version 13.1.6 (clang-1316.0.21.2.3)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !13, splitDebugInlining: false, nameTableKind: None, sysroot: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk", sdk: "MacOSX.sdk")
!12 = !DIFile(filename: "test.c", directory: "/")
!13 = !{{}}
!14 = !{{!"Apple clang version 13.1.6 (clang-1316.0.21.2.3)"}}
!15 = distinct !DISubprogram(name: "inlineme", scope: !12, file: !12, line: 1, type: !16, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !13)
!16 = !DISubroutineType(types: !17)
!17 = !{{null}}
!18 = !DILocation(line: 1, column: 22, scope: !15)
!19 = distinct !DISubprogram(name: "foo", scope: !12, file: !12, line: 3, type: !20, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !13)
!20 = !DISubroutineType(types: !21)
!21 = !{{!22, !22, !22}}
!22 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!23 = !DILocalVariable(name: "a", arg: 1, scope: !19, file: !12, line: 3, type: !22)
!24 = !DILocation(line: 3, column: 13, scope: !19)
!25 = !DILocalVariable(name: "b", arg: 2, scope: !19, file: !12, line: 3, type: !22)
!26 = !DILocation(line: 3, column: 20, scope: !19)
!27 = !DILocation(line: 4, column: 5, scope: !19)
!28 = !DILocation(line: 5, column: 12, scope: !19)
!29 = !DILocation(line: 5, column: 16, scope: !19)
!30 = !DILocation(line: 5, column: 14, scope: !19)
!31 = !DILocation(line: 5, column: 5, scope: !19)
aN  
; ModuleID = "<string>"
target triple = "{triple}"

define double @licm(i32 %0) {{
  %2 = alloca i32, align 4
  %3 = alloca double, align 8
  %4 = alloca i32, align 4
  %5 = alloca double, align 8
  store i32 %0, i32* %2, align 4
  store double 0.000000e+00, double* %3, align 8
  store i32 0, i32* %4, align 4
  br label %6

6:                                                ; preds = %14, %1
  %7 = load i32, i32* %4, align 4
  %8 = load i32, i32* %2, align 4
  %9 = icmp slt i32 %7, %8
  br i1 %9, label %10, label %17

10:                                               ; preds = %6
  store double 7.000000e+00, double* %5, align 8
  %11 = load double, double* %5, align 8
  %12 = load double, double* %3, align 8
  %13 = fadd double %12, %11
  store double %13, double* %3, align 8
  br label %14

14:                                               ; preds = %10
  %15 = load i32, i32* %4, align 4
  %16 = add nsw i32 %15, 1
  store i32 %16, i32* %4, align 4
  br label %6

17:                                               ; preds = %6
  %18 = load double, double* %3, align 8
  ret double %18
}}
a€  
    ; 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}}]
    aƒ  
    ; ModuleID = "<string>"
    target triple = "{triple}"

    @A = external global i32

    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}}]
    z…; ModuleID = ""
target triple = "unknown-unknown-unknown"
target datalayout = ""

define i32 @"foo"()
{
"<>!*''#":
  ret i32 12345
}
zÆ
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo(i64* %.1) {{
      ret void
    }}

    define void @bar() {{
      call void @foo(i64* null)
      ret void
    }}
)úaddi	sp, sp, -16zsw	a1, 8(sp)zsw	a2, 12(sp)úfld	fa5, 8(sp)zfmv.w.x	fa4, a0zfcvt.d.s	fa4, fa4úfadd.d	fa5, fa4, fa5úfsd	fa5, 8(sp)úlw	a0, 8(sp)úlw	a1, 12(sp)úaddi	sp, sp, 16Úret)r   zsw	a0, 8(sp)zsw	a1, 12(sp)r   zfcvt.d.s	fa4, fa0r   r   r    r!   r"   r#   )zfcvt.d.s	fa5, fa0zfadd.d	fa0, fa5, fa1r#   zc
declare void @a_readonly_func(i8 *) readonly

declare i8* @a_arg0_return_func(i8* returned, i32*)
a*  
define double @foo(i32 %i, double %j) optnone noinline {
    %I = alloca i32		; <i32*> [#uses=4]
    %J = alloca double		; <double*> [#uses=2]
    store i32 %i, i32* %I
    store double %j, double* %J
    %t1 = load i32, i32* %I		; <i32> [#uses=1]
    %t2 = add i32 %t1, 1		; <i32> [#uses=1]
    store i32 %t2, i32* %I
    %t3 = load i32, i32* %I		; <i32> [#uses=1]
    %t4 = sitofp i32 %t3 to double		; <double> [#uses=1]
    %t5 = load double, double* %J		; <double> [#uses=1]
    %t6 = fmul double %t4, %t5		; <double> [#uses=1]
    ret double %t6
}
z#
declare void @test_declare(i32* )
Á@  7f454c4602010100000000000000000001003e000100000000000000000000000000000000000000e0000000000000000000000040000000000040000500010048c1e2204809c24889d048c1c03d4831d048b90120000480001070480fafc8000000000000000000000000000000000000000000000000002f0000000400f1ff00000000000000000000000000000000070000001200020000000000000000001f00000000000000002e74657874005f5f617279626f002e6e6f74652e474e552d737461636b002e737472746162002e73796d746162003c737472696e673e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f0000000300000000000000000000000000000000000000a800000000000000380000000000000000000000000000000100000000000000000000000000000001000000010000000600000000000000000000000000000040000000000000001f000000000000000000000000000000100000000000000000000000000000000f00000001000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000100000000000000000000000000000027000000020000000000000000000000000000000000000060000000000000004800000000000000010000000200000008000000000000001800000000000000Ú>48c1e2204809c24889d048c1c03d4831d048b90120000480001070480fafc8ay  
; ModuleID = '<lambda>'
source_filename = "<string>"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"

declare float @llvm.exp2.f32(float %casted)

define float @foo(i16 %arg) {
entry:
  %casted = sitofp i16 %arg to float
  %ret = call float @llvm.exp2.f32(float %casted)
  ret float %ret
}
aª  
; ModuleID = '<string>'
target triple = "{triple}"

define void @foo(i32 %N) {{
  ; unnamed block for testing
  %cmp4 = icmp sgt i32 %N, 0
  br i1 %cmp4, label %for.body, label %for.cond.cleanup

for.cond.cleanup:
  ret void

for.body:
  %i.05 = phi i32 [ %inc, %for.body ], [ 0, %0 ]
  %inc = add nuw nsw i32 %i.05, 1
  %exitcond.not = icmp eq i32 %inc, %N
  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}}
aw  
; Source C++
;-----------------------------------------
; class MyClass;
;
; class MyClassDefined{
;     MyClass *member;
;     MyClass *m2;
;     MyClass *m3;
; };
;
; void foo(MyClass *c, MyClassDefined){ }
;-----------------------------------------
; LLVM-IR by: clang -arch arm64 -S -emit-llvm file.cpp
; ModuleID = 'file.cpp'
source_filename = "class.cpp"
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "arm64-apple-macosx13.3.0"

%class.MyClass = type opaque
%class.MyClassDefined = type { %class.MyClass*, %class.MyClass*, %class.MyClass* }

; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
define void @_Z3fooP7MyClass14MyClassDefined(%class.MyClass* noundef %0, %class.MyClassDefined* noundef %1) {
  %3 = alloca %class.MyClass*, align 8
  store %class.MyClass* %0, %class.MyClass** %3, align 8
  ret void
}

!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7, !8}
!llvm.ident = !{!9}

!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 13, i32 3]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 8, !"branch-target-enforcement", i32 0}
!3 = !{i32 8, !"sign-return-address", i32 0}
!4 = !{i32 8, !"sign-return-address-all", i32 0}
!5 = !{i32 8, !"sign-return-address-with-bkey", i32 0}
!6 = !{i32 7, !"PIC Level", i32 2}
!7 = !{i32 7, !"uwtable", i32 1}
!8 = !{i32 7, !"frame-pointer", i32 1}
!9 = !{!"Apple clang version 14.0.3 (clang-1403.0.22.14.1)"}

a  ; Source C++
;-----------------------------------------

; struct Vector2D{
;     float x, y;
; };
;
; void foo(Vector2D vec, Vector2D *out) {
;     *out = vec;
; }
;-----------------------------------------
; LLVM-IR by: clang -arch x86_64 -S -emit-llvm file.cpp
; ModuleID = 'file.cpp'
source_filename = "class.cpp"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx13.3.0"

%struct.Vector2D = type { float, float }

; Function Attrs: noinline nounwind optnone ssp uwtable
define void @_Z3foo8Vector2DPS_(<2 x float> %0, %struct.Vector2D* noundef %1) #0 {
  %3 = alloca %struct.Vector2D, align 4
  %4 = alloca %struct.Vector2D*, align 8
  %5 = bitcast %struct.Vector2D* %3 to <2 x float>*
  store <2 x float> %0, <2 x float>* %5, align 4
  store %struct.Vector2D* %1, %struct.Vector2D** %4, align 8
  %6 = load %struct.Vector2D*, %struct.Vector2D** %4, align 8
  %7 = bitcast %struct.Vector2D* %6 to i8*
  %8 = bitcast %struct.Vector2D* %3 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %7, i8* align 4 %8, i64 8, i1 false)
  ret void
}

; Function Attrs: argmemonly nofree nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #1

attributes #0 = { noinline nounwind optnone ssp uwtable "darwin-stkchk-strong-link" "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "probe-stack"="___chkstk_darwin" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "tune-cpu"="generic" }
attributes #1 = { argmemonly nofree nounwind willreturn }

!llvm.module.flags = !{!0, !1, !2, !3, !4}
!llvm.ident = !{!5}

!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 13, i32 3]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 7, !"PIC Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{i32 7, !"frame-pointer", i32 2}
!5 = !{!"Apple clang version 14.0.3 (clang-1403.0.22.14.1)"}

c                   ó>   • \ rS rSrS rS r\S4S jrS	S jrS r	Sr
g)
ÚBaseTesti�  c                 óØ   • [         R                  " 5         [         R                  " 5         [        R                  " 5         [        R
                  S S  U l        / [        R
                  S S & g ©N)ÚllvmÚinitialize_native_targetÚinitialize_native_asmprinterÚgcÚcollectÚgarbageÚold_garbage©Úselfs    r   ÚsetUpÚBaseTest.setUpŸ  s@   € Ü×%Ò%Ô'Ü×)Ò)Ô+Ü
�
Š
ŒÜŸ:™:¡a˜=ˆÔØŒ�
‰
‘1‰ó    c                 ór   • [         R                  " 5         U R                  [         R                  / 5        U ?g r)   )r-   r.   ÚassertEqualr/   r0   r1   s    r   ÚtearDownÚBaseTest.tearDown¦  s'   € ô 	�
Š
ŒØ×ÑœŸ™ RÔ(àÑr5   Nc                 óv   • UR                  [        R                  " 5       S9n[        R                  " X5      nU$ )N©Útriple)Úformatr*   Úget_default_tripleÚparse_assembly)r2   ÚasmÚcontextÚmods       r   ÚmoduleÚBaseTest.module¯  s0   € Ø�j‰j¤× 7Ò 7Ó 9ˆjÐ:ˆÜ×!Ò! #Ó/ˆØˆ
r5   c                 óJ   • Uc  U R                  5       nUR                  U5      $ r)   )rC   Úget_global_variable)r2   ÚnamerB   s      r   ÚglobÚBaseTest.glob´  s#   € Ø‰;Ø—+‘+“-ˆCØ×&Ñ& tÓ,Ð,r5   c                ó\   • [         R                  R                  5       nUR                  US9$ )N©Újit)r*   ÚTargetÚfrom_default_tripleÚcreate_target_machine)r2   rL   Útargets      r   Útarget_machineÚBaseTest.target_machine¹  s(   € Ü—‘×0Ñ0Ó2ˆØ×+Ñ+°Ð+Ð4Ð4r5   )r0   )rH   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r3   r8   Úasm_sumrC   rH   rQ   Ú__static_attributes__© r5   r   r'   r'   �  s"   † òòð !¨$ô ô
-õ
5r5   r'   c                   óÚ   • \ rS rSrSr\R                  " \R                  R                  S5      S5      \R                  " \
R                  R                  S5      S5      S 5       5       rSrg	)
ÚTestDependenciesi¾  z:
Test DLL dependencies are within a certain expected set.
ÚlinuxzLinux-specific testÚLLVMLITE_DIST_TESTúDistribution-specific testc                 óŒ  • [         R                  R                  n[        R                  R                  5       nSUS'   [        R                  " SSU/[        R                  US9nUR                  5       u  pEU R                  SUR                  5        [        R                  " S5      n[        5       nUR                  5       R!                  5        Hˆ  nUR#                  5       n	U	(       d  M  U	S   S:X  d  M'  U	S	   n
UR%                  U
5      n['        U	5      S
:w  d  U(       d  U R)                  SU< 35        UR+                  UR-                  S	5      5        MŠ     SU;  d  SU;  a  U R)                  SU< 35        [        / SQ5      n[.        R0                  " 5       S:X  a  UR+                  S5        / nU H3  n
U
R3                  S5      (       a  M  X¬;  d  M"  UR5                  U
5        M5     ['        U5      S	:X  a  U R)                  SUS   < SU< 35        g ['        U5      S	:”  a  U R)                  SU< SU< 35        g g )NÚCÚLANGÚobjdumpz-p)ÚstdoutÚenvr   z%^([+-_a-zA-Z0-9]+)\.so(?:\.\d+){0,3}$ÚNEEDEDé   é   zinvalid NEEDED line: ÚlibcÚ
libpthreadz!failed parsing dependencies? got )ÚlibrtÚlibdlri   ÚlibzÚlibmÚlibgcc_srh   zld-linuxÚld64Úlibzstdz	libstdc++r   Úlibtinfoz	ld-linux-zunexpected dependency z in zunexpected dependencies )r   ÚlibÚ_nameÚosÚenvironÚcopyÚ
subprocessÚPopenÚPIPEÚcommunicater7   Ú
returncodeÚreÚcompileÚsetÚdecodeÚ
splitlinesÚsplitÚmatchÚlenÚfailÚaddÚgroupÚplatformÚpython_implementationÚ
startswithÚappend)r2   Úlib_pathrd   ÚpÚoutÚ_Úlib_patÚdepsÚlineÚpartsÚdepÚmÚallowedÚfailss                 r   Ú
test_linuxÚTestDependencies.test_linuxÃ  s¼  € ô
 —7‘7—=‘=ˆÜ�j‰j�o‰oÓˆØˆˆF‰Ü×Ò˜i¨¨xÐ8Ü$.§O¡O¸ñ>ˆà—‘“‰ˆØ×Ñ˜˜AŸL™LÔ)ä—*’*ÐEÓFˆÜ‹uˆØ—J‘J“L×+Ñ+Ö-ˆDØ—J‘J“LˆEßˆu˜˜q™ XÕ-Ø˜A‘h�Ø—M‘M #Ó&�Ü�u“: “?®!Ø—I’Iº4ÐAÔBØ—‘˜Ÿ™ ›Ö$ñ .ð ˜Ó °TÓ!9Ø�IŠIºtÐEÔFäò $ó %ˆô ×)Ò)Ó+¨vÓ5Ø�K‰K˜
Ô#àˆÛˆCØ—>‘> +×.Ó.°3Õ3EØ—‘˜SÖ!ñ ô ˆu‹:˜‹?Ø�IŠI¸%À¼(ÂDÐIÕJÜ�‹Z˜!‹^Ø�IŠI»EÂ4ÐHÕIàr5   rY   N)rS   rT   rU   rV   Ú__doc__ÚunittestÚ
skipUnlessÚsysr‡   r‰   rt   ru   Úgetr—   rX   rY   r5   r   r[   r[   ¾  s`   † ñð ×Ò˜Ÿ™×0Ñ0°Ó9Ø.ó0à×Ò˜Ÿ™Ÿ™Ð(<Ó=Ø5ó7ñ&ó7ó0ó&r5   r[   c                   óZ   ^ • \ rS rSrSrSrU 4S jrS rS rS r	S r
S	 rS
 rS rSrU =r$ )ÚTestRISCVABIið  zT
Test calling convention of floating point arguments of RISC-V
using different ABI.
zriscv32-unknown-linuxc                 óv   >• [         TU ]  5         [        R                  " 5         [        R                  " 5         g r)   )Úsuperr3   r*   Úinitialize_all_targetsÚinitialize_all_asmprinters)r2   Ú	__class__s    €r   r3   ÚTestRISCVABI.setUp÷  s$   ø€ Ü‰‰ŒÜ×#Ò#Ô%Ü×'Ò'Õ)r5   c                 óÊ   •  [         R                  R                  U R                  5        g ! [         a,  nS[        U5      ;   a  U R                  S5         S nAg UeS nAff = f)Nz/No available targets are compatible with triplez(RISCV target unsupported by linked LLVM.)r*   rM   Úfrom_tripler<   ÚRuntimeErrorÚstrÚskipTest)r2   Úes     r   Úcheck_riscv_targetÚTestRISCVABI.check_riscv_targetü  sN   € ð	Ü�K‰K×#Ñ# D§K¡KÕ0øÜó 	Ø@ÄCÈÃFÓJØ—‘ÐH×IÑIà�ûð		ús   ‚), ¬
A"¶ AÁAÁA"c                 óx   • [         R                  R                  U R                  5      nUR                  " S0 UD6$ )NrY   )r*   rM   r§   r<   rO   )r2   ÚkwargÚlltargets      r   Úriscv_target_machineÚ!TestRISCVABI.riscv_target_machine  s.   € Ü—;‘;×*Ñ*¨4¯;©;Ó7ˆØ×-Ò-Ñ6°Ñ6Ð6r5   c                 ó
  • [         R                  " 5       n[         R                  " 5       n[         R                  " XU45      n[         R                  " 5       n[         R
                  " XCSS9nUR                  5       n[         R                  " U5      nUR                  u  p‰UR                  X�5      n
UR                  X©5      nUR                  U5        [        R                  " [        U5      5      nUR                  5         U$ )NÚfpadd©rG   )r	   Ú
DoubleTypeÚ	FloatTypeÚFunctionTypeÚModuleÚFunctionÚappend_basic_blockÚ	IRBuilderÚargsÚfpextÚfaddr#   r*   r?   r©   Úverify)r2   Úf64Úf32ÚfntyrC   ÚfuncÚblockÚbuilderÚaÚbÚarg0ÚresultÚllmods                r   Úfpadd_ll_moduleÚTestRISCVABI.fpadd_ll_module	  s¶   € Ü�mŠm‹oˆÜ�lŠl‹nˆÜ�Š˜s¨# JÓ/ˆÜ—’“ˆÜ�{Š{˜6¨gÑ6ˆØ×'Ñ'Ó)ˆÜ—,’,˜uÓ%ˆØ�y‰y‰ˆØ�}‰}˜QÓ$ˆØ—‘˜dÓ&ˆØ�‰�FÔä×#Ò#¤C¨£KÓ0ˆØ�‰ŒØˆr5   c                 óê   • / nUR                  5        H\  nUR                  5       nUR                  S5      (       a  M+  UR                  S5      (       a  MC  US:X  a  MK  UR                  U5        M^     U$ )NÚ.r´   Ú )r€   Ústripr‰   rŠ   )r2   r@   Úasm_listr‘   Ús_lines        r   Úbreak_up_asmÚTestRISCVABI.break_up_asm  s^   € ØˆØ—N‘NÖ$ˆDØ—Z‘Z“\ˆFØ×%Ñ% c×*Ó*¨f×.?Ñ.?À×.HÓ.HØ •|Ø—‘ Ö'ñ	 %ð
 ˆr5   c                 óÌ   • U R                  5         U R                  5       nU R                  SSS9nU R                  U R	                  UR                  U5      5      [        5        g )Nú+f,+dÚilp32©ÚfeaturesÚabiname)r¬   rÌ   r±   r7   rÔ   Úemit_assemblyÚriscv_asm_ilp32©r2   rË   rP   s      r   Útest_rv32d_ilp32ÚTestRISCVABI.test_rv32d_ilp32#  sZ   € Ø×ÑÔ!Ø×$Ñ$Ó&ˆØ×*Ñ*°GÀWÐ*ÐMˆØ×Ñ˜×*Ñ*¨6×+?Ñ+?ÀÓ+FÓGÜ(õ	*r5   c                 óÌ   • U R                  5         U R                  5       nU R                  SSS9nU R                  U R	                  UR                  U5      5      [        5        g )Nr×   Úilp32frÙ   )r¬   rÌ   r±   r7   rÔ   rÜ   Úriscv_asm_ilp32frÞ   s      r   Útest_rv32d_ilp32fÚTestRISCVABI.test_rv32d_ilp32f*  óZ   € Ø×ÑÔ!Ø×$Ñ$Ó&ˆØ×*Ñ*°GÀXÐ*ÐNˆØ×Ñ˜×*Ñ*¨6×+?Ñ+?ÀÓ+FÓGÜ)õ	+r5   c                 óÌ   • U R                  5         U R                  5       nU R                  SSS9nU R                  U R	                  UR                  U5      5      [        5        g )Nr×   Úilp32drÙ   )r¬   rÌ   r±   r7   rÔ   rÜ   Úriscv_asm_ilp32drÞ   s      r   Útest_rv32d_ilp32dÚTestRISCVABI.test_rv32d_ilp32d1  ræ   r5   rY   )rS   rT   rU   rV   r™   r<   r3   r¬   r±   rÌ   rÔ   rß   rä   rê   rX   Ú__classcell__)r¤   s   @r   rŸ   rŸ   ð  s<   ø† ñð %€Fõ*ò
ò7òò"ò*ò+÷+ð +r5   rŸ   c                   ó®   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS r\R(                  " \" 5       S5      S 5       rS rSrg)ÚTestMisci9  z/
Test miscellaneous functions in llvm.binding.
c                 ó.   • U R                  [        5        g r)   )rC   rW   r1   s    r   Útest_parse_assemblyÚTestMisc.test_parse_assembly>  s   € Ø�‰”GÕr5   c                 óþ   • U R                  [        5       nU R                  [        5        S S S 5        [	        WR
                  5      nU R                  SU5        U R                  SU5        g ! , (       d  f       NH= f)Nzparsing errorzinvalid operand type)ÚassertRaisesr¨   rC   Úasm_parse_errorr©   Ú	exceptionÚassertIn)r2   ÚcmÚss      r   Útest_parse_assembly_errorÚ"TestMisc.test_parse_assembly_errorA  sW   € Ø×Ñœ|Ô,°Ø�K‰KœÔ(÷ -ä�—‘ÓˆØ�‰�o qÔ)Ø�‰Ð,¨aÕ0÷	 -Õ,ús   –A.Á.
A<c                 ó®  • [         R                  " 5       n[         R                  " [         R                  " S5      / 5      n[         R                  " XS5      n[         R
                  " UR                  SS95      nUR                  [         R                  " [         R                  " S5      S5      5        [        U5      nU R                  U[        5        g )Né    Úfooz<>!*''#rµ   i90  )r	   r¹   r¸   ÚIntTyperº   r¼   r»   r#   ÚConstantr©   r7   Úasm_nonalphanum_blocklabel)r2   rB   ÚftÚfnÚbdr@   s         r   Útest_nonalphanum_block_nameÚ$TestMisc.test_nonalphanum_block_nameH  sŠ   € Ü�iŠi‹kˆÜ�_Š_œRŸZšZ¨›^¨RÓ0ˆÜ�[Š[˜ %Ó(ˆÜ�\Š\˜"×/Ñ/°YÐ/Ð?Ó@ˆØ
�‰Œr�{Š{œ2Ÿ:š: b›>¨5Ó1Ô2Ü�#‹hˆØ×Ñ˜Ô8Õ9r5   c                 óŠ   • [         R                  R                  5       n[         R                  R                  5       nX:X  d   eg r)   )r*   rA   Úget_global_context)r2   Ú	gcontext1Ú	gcontext2s      r   Útest_global_contextÚTestMisc.test_global_contextQ  s2   € Ü—L‘L×3Ñ3Ó5ˆ	Ü—L‘L×3Ñ3Ó5ˆ	ØÓ%Ð%Ñ%r5   c                 ó   • [         R                  " SS5        [         R                  " SS5        [         R                  " S5      nU R                  US5        [         R                  " S5      nU R	                  US 5        g )NÚ__xyzzyéÒ  i.  Ú__foobar)r*   Ú
add_symbolÚaddress_of_symbolr7   ÚassertIs)r2   Úaddrs     r   Útest_dylib_symbolsÚTestMisc.test_dylib_symbolsV  s\   € Ü�Š˜	 4Ô(Ü�Š˜	 4Ô(Ü×%Ò% iÓ0ˆØ×Ñ˜˜tÔ$Ü×%Ò% jÓ1ˆØ�‰�d˜DÕ!r5   c                 ó|   • [         R                  " 5       nU R                  U[        5        U R	                  U5        g r)   )r*   r>   ÚassertIsInstancer©   Ú
assertTrue)r2   r<   s     r   Útest_get_default_tripleÚ TestMisc.test_get_default_triple^  s,   € Ü×(Ò(Ó*ˆØ×Ñ˜f¤cÔ*Ø�‰˜Õr5   c                 ó6  • S n[         R                  " 5       n[         R                  " 5       nU R                  U[        5        U R                  U5        U" UR                  S5      S   5      nU" UR                  S5      S   5      nU R                  XE5        g )Nc                 ó   • U S:X  a  gU $ )NÚpowerpc64leÚppc64lerY   )Úarchs    r   Únormalize_ppcÚ7TestMisc.test_get_process_triple.<locals>.normalize_ppce  s   € Ø�}Ó$Ø à�r5   Ú-r   )r*   Úget_process_tripler>   r  r©   r  r�   r7   )r2   r   r<   ÚdefaultÚdefault_archÚtriple_archs         r   Útest_get_process_tripleÚ TestMisc.test_get_process_triplec  s   € ò	ô ×(Ò(Ó*ˆÜ×)Ò)Ó+ˆØ×Ñ˜f¤cÔ*Ø�‰˜Ôá$ W§]¡]°3Ó%7¸Ñ%:Ó;ˆÙ# F§L¡L°Ó$5°aÑ$8Ó9ˆà×Ñ˜Õ3r5   c                 ó^  • [         R                  " 5       nU R                  U[        5        U R                  U[         R                  5        UR                  5        HB  u  p#U R                  U[        5        U R                  U5        U R                  U[        5        MD     U R                  UR                  5       [        5        SnSR                  U5      nU R                  [        R                  " US5      5        U R                  [        R                  " US5      5        U R                  [        R                  " US5      5        [        U5      S:X  a!  U R                  UR                  5       S5        g U R                  [        R                  " XQR                  5       5      5        g )Nz[+\-][a-zA-Z0-9\._-]+z^({0}|{0}(,{0})*)?$rÐ   z+aaz+a,-bbr   )r*   Úget_host_cpu_featuresr  ÚdictÚ
FeatureMapÚitemsr©   r  ÚboolÚflattenr=   ÚassertIsNotNoner|   r‚   rƒ   r7   )r2   rÚ   ÚkÚvÚre_termÚregexs         r   Útest_get_host_cpu_featuresÚ#TestMisc.test_get_host_cpu_featuresu  s3  € Ü×-Ò-Ó/ˆà×Ñ˜h¬Ô-Ø×Ñ˜h¬¯©Ô8Ø—N‘NÖ$‰DˆAØ×!Ñ! !¤SÔ)Ø�O‰O˜AÔØ×!Ñ! !¤TÖ*ñ %ð 	×Ñ˜h×.Ñ.Ó0´#Ô6à*ˆØ&×-Ñ-¨gÓ6ˆà×ÑœRŸXšX e¨RÓ0Ô1Ø×ÑœRŸXšX e¨UÓ3Ô4Ø×ÑœRŸXšX e¨XÓ6Ô7äˆx‹=˜AÓØ×Ñ˜X×-Ñ-Ó/°Õ4à× Ñ ¤§¢¨%×1AÑ1AÓ1CÓ!DÕEr5   c                 ó|   • [         R                  " 5       nU R                  U[        5        U R	                  U5        g r)   )r*   Úget_host_cpu_namer  r©   r  )r2   Úcpus     r   Útest_get_host_cpu_nameÚTestMisc.test_get_host_cpu_nameŒ  s,   € Ü×$Ò$Ó&ˆØ×Ñ˜c¤3Ô'Ø�‰˜Õr5   c                 óV   • Sn[         R                  " [        R                  SU/5        g )Na  if 1:
            from llvmlite import binding as llvm

            llvm.initialize_native_target()
            llvm.initialize_native_asmprinter()
            llvm.initialize_all_targets()
            llvm.initialize_all_asmprinters()
            llvm.shutdown()
            ú-c©rw   Ú
check_callrœ   Ú
executable©r2   Úcodes     r   Útest_initfiniÚTestMisc.test_initfini‘  s$   € ðˆô 	×ÒœsŸ~™~¨t°TÐ:Õ;r5   c                 óŽ   • SnU R                  [        US9   [        R                  " 5         S S S 5        g ! , (       d  f       g = f)Nz-llvmlite.binding.initialize\(\) is deprecated)Úexpected_regex)ÚassertRaisesRegexr¨   r*   Ú
initialize)r2   r4  s     r   Útest_deprecated_initÚTestMisc.test_deprecated_init�  s1   € Ø@ˆØ×#Ñ#¤LÀÐ#ÒGÜ�OŠOÔ÷ H×GÖGús	   —6¶
Ac                 óV   • Sn[         R                  " [        R                  SU/5        g )Nz„if 1:
            from llvmlite import binding as llvm

            llvm.set_option("progname", "-debug-pass=Disabled")
            r=  r>  rA  s     r   Útest_set_optionÚTestMisc.test_set_option¢  s$   € ðˆô
 	×ÒœsŸ~™~¨t°TÐ:Õ;r5   c                 ó†   • [         R                  u  pnSnU R                  X5        U R                  U[        S5      5        g )N)é   é	   )r*   Úllvm_version_inforö   Úrange)r2   ÚmajorÚminorÚpatchÚvalids        r   Útest_versionÚTestMisc.test_version¬  s5   € Ü"×4Ñ4Ñˆ�eàˆØ�‰�eÔ#Ø�‰�eœU 1›XÕ&r5   c                 ó.   • [         R                  " 5         g r)   )r*   Úcheck_jit_executionr1   s    r   Útest_check_jit_executionÚ!TestMisc.test_check_jit_execution³  s   € Ü× Ò Õ"r5   zLocale not availablec                 óÆ   • U R                  [        5      n[        U5      n[        R                  " [        R
                  S5        [        U5      nU R                  X#5        g )Nr   )rC   Úasm_double_localer©   r   r   r   r7   )r2   r”   ÚexpectÚgots       r   Útest_print_double_localeÚ!TestMisc.test_print_double_locale¶  sG   € à�K‰KÔ)Ó*ˆÜ�Q“ˆô 	×ÒœŸ™¨Ô0ä�!‹fˆà×Ñ˜Õ%r5   c                 ó`   • SnSn[         R                  USU/n[        R                  " U5        g )Nzfrom llvmlite import bindingz-Werrorr=  )rœ   r@  rw   r?  )r2   rB  ÚflagsÚcmdargss       r   Útest_no_accidental_warningsÚ$TestMisc.test_no_accidental_warningsÂ  s,   € Ø-ˆØˆÜ—>‘> 5¨$°Ð5ˆÜ×Ò˜gÕ&r5   rY   N)rS   rT   rU   rV   r™   rð   rù   r  r
  r  r  r'  r5  r:  rC  rI  rL  rW  r[  rš   ÚskipIfr   ra  rf  rX   rY   r5   r   rî   rî   9  su   † ñòò1ò:ò&ò
"ò ò
4ò$Fò.ò

<òò
<ò'ò#ð ‡_‚_‘\“^Ð%;Ó<ñ	&ó =ð	&õ'r5   rî   c                   ó’   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚTestModuleRefiÉ  c                 ó˜   • U R                  5       n[        U5      R                  5       nU R                  UR	                  S5      U5        g )Nz; ModuleID =)rC   r©   rÑ   r  r‰   ©r2   rB   rø   s      r   Útest_strÚTestModuleRef.test_strË  s4   € Ø�k‰k‹mˆÜ�‹H�N‰NÓˆØ�‰˜Ÿ™ ^Ó4°aÕ8r5   c                 ó  • U R                  5       n[        U5        UR                  5         U R                  [        R
                  5         [        U5        S S S 5        UR                  5         g ! , (       d  f       N= fr)   )rC   r©   Úcloseró   ÚctypesÚArgumentError©r2   rB   s     r   Ú
test_closeÚTestModuleRef.test_closeÐ  sO   € Ø�k‰k‹mˆÜˆCŒØ�	‰	ŒØ×Ñœv×3Ñ3Õ4Ü�ŒH÷ 5à�	‰	�÷ 5Õ4ús   ÁA0Á0
A>c                 ó¨  • U R                  5       n[        U5        U   [        U5        S S S 5        U R                  [        R                  5         [        U5        S S S 5        U R                  [
        5         U    S S S 5        S S S 5        g ! , (       d  f       Nl= f! , (       d  f       NJ= f! , (       d  f       N9= f! , (       d  f       g = fr)   )rC   r©   ró   rq  rr  r¨   rs  s     r   Ú	test_withÚTestModuleRef.test_withØ  s„   € Ø�k‰k‹mˆÜˆCŒÚÜ�ŒH÷ à×Ñœv×3Ñ3Õ4Ü�ŒH÷ 5à×Ñœ|Õ,ÚØ÷ ÷ -Ð,÷	 �Súç4Õ4ú÷ •ú÷ -Õ,ús;   žBÁB!Á:CÁ=B2Á?CÂ
BÂ!
B/Â2
C 	Â<CÃ
Cc                 ó°   • U R                  5       nSUl        U R                  UR                  S5        SUl        U R                  UR                  S5        g )Nrý   Úbar)rC   rG   r7   rs  s     r   Ú	test_nameÚTestModuleRef.test_nameã  sC   € Ø�k‰k‹mˆØˆŒØ×Ñ˜Ÿ™ 5Ô)ØˆŒØ×Ñ˜Ÿ™ 5Õ)r5   c                 ó\   • U R                  5       nU R                  UR                  S5        g )Nz	asm_sum.c)rC   r7   Úsource_filers  s     r   Útest_source_fileÚTestModuleRef.test_source_fileê  s!   € Ø�k‰k‹mˆØ×Ñ˜Ÿ™¨+Õ6r5   c                 óª   • U R                  5       nUR                  nU R                  U[        5        X!l        U R	                  X!R                  5        g r)   )rC   Údata_layoutr  r©   r7   rl  s      r   Útest_data_layoutÚTestModuleRef.test_data_layoutî  s=   € Ø�k‰k‹mˆØ�O‰OˆØ×Ñ˜a¤Ô%ØŒØ×Ñ˜ŸO™OÕ,r5   c                 óÌ   • U R                  5       nUR                  nU R                  U[        R                  " 5       5        SUl        U R                  UR                  S5        g )NrÐ   )rC   r<   r7   r*   r>   rl  s      r   Útest_tripleÚTestModuleRef.test_tripleõ  sJ   € Ø�k‰k‹mˆØ�J‰JˆØ×Ñ˜œD×3Ò3Ó5Ô6ØˆŒ
Ø×Ñ˜Ÿ™ RÕ(r5   c                 óZ  • U R                  5       nU R                  UR                  5       S 5        U R                  [        5      nU R	                  [
        5       nUR                  5         S S S 5        [        WR                  5      nU R                  SU5        g ! , (       d  f       N6= f)Nz%.bug = add i32 1, %.bug)	rC   r  rÀ   Úasm_verification_failró   r¨   r©   rõ   rö   )r2   rB   r÷   rø   s       r   Útest_verifyÚTestModuleRef.test_verifyü  st   € à�k‰k‹mˆØ�‰�c—j‘j“l DÔ)à�k‰kÔ/Ó0ˆØ×Ñœ|Ô,°Ø�J‰JŒL÷ -ä�—‘ÓˆØ�‰Ð0°!Õ4÷ -Õ,ús   ÁBÂ
B*c                 ój  • U R                  5       nUR                  S5      nU R                  U[        R                  5        U R                  UR                  S5        U R                  [        5         UR                  S5        S S S 5        A[        UR                   5        g ! , (       d  f       N%= f)NÚsumrý   )
rC   Úget_functionr  r*   ÚValueRefr7   rG   ró   Ú	NameErrorr©   ©r2   rB   r  s      r   Útest_get_functionÚTestModuleRef.test_get_function  s   € Ø�k‰k‹mˆØ×Ñ˜eÓ$ˆØ×Ñ˜b¤$§-¡-Ô0Ø×Ñ˜Ÿ™ %Ô(à×ÑœyÕ)Ø×Ñ˜UÔ#÷ *ð ÜˆB�I‰I�÷ *Õ)úó   Á3B$Â$
B2c                 ó\  • U R                  5       nUR                  S5      nU R                  UR                  S5        U R	                  [
        R                  " S[        U5      5      5        U R                  [        5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nústruct.glob_typeú8%struct\.glob_type(\.[\d]+)? = type { i64, \[2 x i64\] }zstruct.doesnt_exist)
rC   Úget_struct_typer7   rG   r0  r|   r‚   r©   ró   r�  )r2   rB   Úst_tys      r   Útest_get_struct_typeÚ"TestModuleRef.test_get_struct_type  s�   € Ø�k‰k‹mˆØ×#Ñ#Ð$6Ó7ˆØ×Ñ˜Ÿ™Ð%7Ô8à×ÑœRŸXšXØGÜ�‹Jóô 	ð ×ÑœyÕ)Ø×ÑÐ 5Ô6÷ *×)Ö)ús   ÂBÂ
B+c                 ój  • U R                  5       nUR                  S5      nU R                  U[        R                  5        U R                  UR                  S5        U R                  [        5         UR                  S5        S S S 5        A[        UR                   5        g ! , (       d  f       N%= f)NrH   rz  )
rC   rF   r  r*   r�  r7   rG   ró   r�  r©   )r2   rB   Úgvs      r   Útest_get_global_variableÚ&TestModuleRef.test_get_global_variable   s   € Ø�k‰k‹mˆØ×$Ñ$ VÓ,ˆØ×Ñ˜b¤$§-¡-Ô0Ø×Ñ˜Ÿ™ &Ô)à×ÑœyÕ)Ø×#Ñ# EÔ*÷ *ð ÜˆB�I‰I�÷ *Õ)úr”  c                 óð   • U R                  5       nUR                  nA[        US S9nU R                  [	        U5      S5        U R                  U Vs/ s H  oDR
                  PM     sn/ SQ5        g s  snf )Nc                 ó   • U R                   $ r)   rµ   )Úvalues    r   Ú<lambda>Ú5TestModuleRef.test_global_variables.<locals>.<lambda>1  s   € ¨U¯ZªZr5   )Úkeyé   )rH   Úglob_bÚglob_fÚglob_struct)rC   Úglobal_variablesÚsortedr7   rƒ   rG   )r2   rB   ÚitÚglobsÚgs        r   Útest_global_variablesÚ#TestModuleRef.test_global_variables-  sd   € Ø�k‰k‹mˆØ×!Ñ!ˆØÜ�rÑ7Ñ8ˆØ×Ñœ˜U› QÔ'Ø×Ñ©%Ó0ª% QŸ&œ&©%Ñ0ÚDõ	FùÒ0s   ÁA3c                 óÈ   • U R                  5       nUR                  nA[        U5      nU R                  [	        U5      S5        U R                  US   R
                  S5        g ©Nrf   r   r�  )rC   Ú	functionsÚlistr7   rƒ   rG   )r2   rB   r¬  Úfuncss       r   Útest_functionsÚTestModuleRef.test_functions6  sN   € Ø�k‰k‹mˆØ�]‰]ˆØÜ�R“ˆØ×Ñœ˜U› QÔ'Ø×Ñ˜˜q™Ÿ™¨Õ.r5   c           	      óT  • U R                  5       nUR                  nA[        U5      nU R                  [	        U5      S5        U R                  [        R                  " SUS   R                  5      5        U R                  [        R                  " S[        US   5      5      5        g )Nrf   ústruct\.glob_type(\.[\d]+)?r   r—  )
rC   Ústruct_typesr´  r7   rƒ   r0  r|   r‚   rG   r©   )r2   rB   r¬  Ústructss       r   Útest_structsÚTestModuleRef.test_structs>  s†   € Ø�k‰k‹mˆØ×ÑˆØÜ�r“(ˆØ×Ñœ˜W› qÔ)Ø×ÑœRŸXšXÐ&DØ&-¨a¡j§o¡oó7ô 	8à×ÑœRŸXšXØGÜ�˜‘
‹Oóõ 	r5   c                 ó¢  • U R                  5       nU R                  [        5      nUR                  U5        U R                  [	        S UR
                   5       5      SS/5        UR                  S5        UR                  5         U R                  [        R                  5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr)   rµ   ©Ú.0Úfs     r   Ú	<genexpr>Ú-TestModuleRef.test_link_in.<locals>.<genexpr>O  ó   é € Ð2¢>˜a—6–6¢>ùó   ‚Úmulr�  )rC   Úasm_mulÚlink_inr7   r«  r³  rŽ  rp  ró   rq  rr  )r2   ÚdestÚsrcs      r   Útest_link_inÚTestModuleRef.test_link_inJ  s“   € Ø�{‰{‹}ˆØ�k‰kœ'Ó"ˆØ�‰�SÔØ×ÑÜÑ2 4§>¢>Ó2Ó2°U¸E°Nô	Dà×Ñ˜%Ô Ø�
‰
ŒØ×Ñœv×3Ñ3Õ4Ø×Ñ˜UÔ#÷ 5×4Ö4ús   Â%C Ã 
Cc                 óf  • U R                  5       nU R                  [        5      nUR                  USS9  U R                  [	        S UR
                   5       5      SS/5        UR                  5         U R                  [	        S UR
                   5       5      S/5        UR                  S5        g )NT©Úpreservec              3   ó8   #   • U  H  oR                   v •  M     g 7fr)   rµ   rÀ  s     r   rÃ  Ú6TestModuleRef.test_link_in_preserve.<locals>.<genexpr>Z  rÅ  rÆ  rÇ  r�  c              3   ó8   #   • U  H  oR                   v •  M     g 7fr)   rµ   rÀ  s     r   rÃ  rÒ  \  s   é € Ð?²¨1§¦²ùrÆ  )rC   rÈ  rÉ  r7   r«  r³  rp  rŽ  )r2   rÊ  Úsrc2s      r   Útest_link_in_preserveÚ#TestModuleRef.test_link_in_preserveU  sŠ   € Ø�{‰{‹}ˆØ�{‰{œ7Ó#ˆØ�‰�T DˆÑ)Ø×ÑÜÑ2 4§>¢>Ó2Ó2°U¸E°Nô	Dà�
‰
ŒØ×ÑœÑ?°·²Ó?Ó?À%ÀÔIØ×Ñ˜%Õ r5   c                 ó  • U R                  5       nU R                  [        5      nU R                  [        5       nUR	                  U5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nzsymbol multiply defined)rC   Úasm_sum2ró   r¨   rÉ  rö   r©   rõ   )r2   rÊ  rË  r÷   s       r   Útest_link_in_errorÚ TestModuleRef.test_link_in_error_  s_   € ð �{‰{‹}ˆØ�k‰kœ(Ó#ˆØ×Ñœ|Ô,°Ø�L‰L˜Ô÷ -à�‰Ð/´°R·\±\Ó1BÕC÷ -Õ,ús   »A;Á;
B	c                 ó¼   • U R                  5       nUR                  5       nSnSnU R                  UR                  U5      =(       d    UR                  U5      5        g )Ns   ÞÀs   BC)rC   Ú
as_bitcoder  r‰   )r2   rB   ÚbcÚbitcode_wrapper_magicÚbitcode_magics        r   Útest_as_bitcodeÚTestModuleRef.test_as_bitcodeh  sO   € Ø�k‰k‹mˆØ�^‰^Óˆð !4ÐØˆØ�‰˜Ÿ™ mÓ4÷ =ØŸ™Ð&;Ó<õ	>r5   c                 ó"  • U R                  [        5       n[        R                  " S5        S S S 5        U R	                  S[        WR                  5      5        U R	                  S[        UR                  5      5        g ! , (       d  f       NY= f)Nr5   zLLVM bitcode parsing errorz(file too small to contain bitcode header)ró   r¨   r*   Úparse_bitcoderö   r©   rõ   )r2   r÷   s     r   Útest_parse_bitcode_errorÚ&TestModuleRef.test_parse_bitcode_errorr  s`   € Ø×Ñœ|Ô,°Ü×Ò˜sÔ#÷ -à�‰Ð2´C¸¿¹Ó4EÔFØ�‰Ø6¼¸B¿L¹LÓ8Iõ	
÷ -Õ,ús   –B Â 
Bc                 óB  • [         R                  " 5       nU R                  US9R                  5       n[         R                  " 5       n[         R                  " X#5      nU R                  UR                  5       U5        UR                  S5        UR                  S5        g )N©rA   r�  rH   )r*   Úcreate_contextrC   rÜ  rã  r7   rŽ  rF   )r2   Úcontext1rÝ  Úcontext2rB   s        r   Útest_bitcode_roundtripÚ$TestModuleRef.test_bitcode_roundtripz  sz   € ä×&Ò&Ó(ˆØ�[‰[ ˆ[Ð*×5Ñ5Ó7ˆÜ×&Ò&Ó(ˆÜ× Ò  Ó.ˆØ×Ñ˜Ÿ™Ó)¨2Ô.à×Ñ˜ÔØ×Ñ Õ'r5   c                 óÂ   • U R                  5       nUR                  5       nU R                  X!5        U R                  UR	                  5       UR	                  5       5        g r)   )rC   ÚcloneÚassertIsNotr7   rÜ  )r2   r”   Úcloneds      r   Útest_cloningÚTestModuleRef.test_cloning…  sE   € Ø�K‰K‹MˆØ—‘“ˆØ×Ñ˜Ô#Ø×Ñ˜×*Ñ*Ó,¨a¯l©l«nÕ=r5   rY   N)rS   rT   rU   rV   rm  rt  rw  r{  r  rƒ  r†  rŠ  r’  rš  rž  r¯  r¶  r¼  rÌ  rÕ  rÙ  rà  rä  rë  rñ  rX   rY   r5   r   rj  rj  É  sm   † ò9ò
ò	ò*ò7ò-ò)ò	5òò
7òòFò/ò
ò	$ò!òDò>ò
ò	(õ>r5   rj  c                   óp   • \ rS rSrSrSS jrS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)ÚJITTestMixiniŒ  z"
Mixin for ExecutionEngine tests.
c                 ó¤   • UR                  5         UR                  U5      nU R                  U5        [        [        [        [        5      " U5      $ r)   )Úfinalize_objectÚget_function_addressr  r   r   )r2   ÚeeÚ	func_nameÚcfptrs       r   Úget_sumÚJITTestMixin.get_sum‘  s>   € Ø
×ÑÔØ×'Ñ'¨	Ó2ˆØ�‰˜ÔÜœ¤¤uÔ-¨eÓ4Ð4r5   c                 óÒ   • U R                  5       nU R                  U5       nU R                  U5      nU" SS5      nU R                  SU5        S S S 5        g ! , (       d  f       g = f©Nrg   éûÿÿÿéýÿÿÿ)rC   rL   rû  r7   )r2   rB   rø  ÚcfuncÚress        r   Útest_run_codeÚJITTestMixin.test_run_code—  sM   € Ø�k‰k‹mˆØ�X‰X�cŒ]˜bØ—L‘L Ó$ˆEÙ˜˜2“,ˆCØ×Ñ˜R Ô%÷ �]Ž]ús   ¢-AÁ
A&c                 ó  • U R                  U R                  5       5      nUR                  5         UR                  5         U R                  [        R
                  5         UR                  5         S S S 5        g ! , (       d  f       g = fr)   )rL   rC   rp  ró   rq  rr  rö  ©r2   rø  s     r   rt  ÚJITTestMixin.test_closež  sT   € Ø�X‰X�d—k‘k“mÓ$ˆØ
�‰Œ
Ø
�‰Œ
Ø×Ñœv×3Ñ3Õ4Ø×ÑÔ ÷ 5×4Ö4ús   ÁA9Á9
Bc                 ó¦  • U R                  U R                  5       5      nU    S S S 5        U R                  [        5         U    S S S 5        S S S 5        U R                  [        R
                  5         UR                  5         S S S 5        g ! , (       d  f       Nq= f! , (       d  f       N`= f! , (       d  f       Ni= f! , (       d  f       g = fr)   )rL   rC   ró   r¨   rq  rr  rö  r  s     r   rw  ÚJITTestMixin.test_with¥  s‹   € Ø�X‰X�d—k‘k“mÓ$ˆÚØ÷ à×Ñœ|Õ,ÚØ÷ ÷ -ð ×Ñœv×3Ñ3Õ4Ø×ÑÔ ÷ 5Ð4÷ �Rú÷ •ú÷ -Õ,ú÷ 5Õ4ús;   ¢BÁB1ÁB ÁB1Á5CÂ
BÂ 
B.	Â*B1Â1
B?Ã
Cc                 ó†   • U R                  5       nU R                  U5      nUR                  5         UR                  5         g r)   ©rC   rL   rp  ©r2   rB   rø  s      r   Útest_module_lifetimeÚ!JITTestMixin.test_module_lifetime¯  s,   € Ø�k‰k‹mˆØ�X‰X�c‹]ˆØ
�‰Œ
Ø�	‰	�r5   c                 ó†   • U R                  5       nU R                  U5      nUR                  5         UR                  5         g r)   r  r  s      r   Útest_module_lifetime2Ú"JITTestMixin.test_module_lifetime2µ  s,   € Ø�k‰k‹mˆØ�X‰X�c‹]ˆØ�	‰	ŒØ
�‰�
r5   c                 óš  • U R                  U R                  5       5      nU R                  [        5      nUR                  U5        U R	                  [
        5         UR                  U5        S S S 5        U R                  UR                  5        UR                  5         U R                  UR                  5        g ! , (       d  f       NU= fr)   )
rL   rC   rÈ  Ú
add_moduleró   ÚKeyErrorÚassertFalseÚclosedrp  r  ©r2   rø  rB   s      r   Útest_add_moduleÚJITTestMixin.test_add_module»  sƒ   € Ø�X‰X�d—k‘k“mÓ$ˆØ�k‰kœ'Ó"ˆØ
�‰�cÔØ×ÑœxÕ(Ø�M‰M˜#Ô÷ )à×Ñ˜Ÿ™Ô$Ø
�‰Œ
Ø�‰˜Ÿ
™
Õ#÷	 )Õ(ús   ÁB<Â<
C
c                 óÎ   • U R                  U R                  5       5      nU R                  [        5      nUR                  U5        UR	                  5         UR	                  5         g r)   ©rL   rC   rÈ  r  rp  r  s      r   Útest_add_module_lifetimeÚ%JITTestMixin.test_add_module_lifetimeÅ  sB   € Ø�X‰X�d—k‘k“mÓ$ˆØ�k‰kœ'Ó"ˆØ
�‰�cÔØ�	‰	ŒØ
�‰�
r5   c                 óÎ   • U R                  U R                  5       5      nU R                  [        5      nUR                  U5        UR	                  5         UR	                  5         g r)   r  r  s      r   Útest_add_module_lifetime2Ú&JITTestMixin.test_add_module_lifetime2Ì  sB   € Ø�X‰X�d—k‘k“mÓ$ˆØ�k‰kœ'Ó"ˆØ
�‰�cÔØ
�‰Œ
Ø�	‰	�r5   c                 ó¼  • U R                  U R                  5       5      nU R                  [        5      nUR                  U5        UR	                  U5        U R                  [        5         UR	                  U5        S S S 5        U R                  UR                  5        UR                  5         U R                  UR                  5        g ! , (       d  f       NU= fr)   )
rL   rC   rÈ  r  Úremove_moduleró   r  r  r  rp  r  s      r   Útest_remove_moduleÚJITTestMixin.test_remove_moduleÓ  s•   € Ø�X‰X�d—k‘k“mÓ$ˆØ�k‰kœ'Ó"ˆØ
�‰�cÔØ
×Ñ˜ÔØ×ÑœxÕ(Ø×Ñ˜SÔ!÷ )à×Ñ˜Ÿ™Ô$Ø
�‰Œ
Ø×Ñ˜Ÿ™Õ$÷	 )Õ(ús   Á,CÃ
Cc                 óÆ   • U R                  5       nU R                  U5      nUR                  nU R                  UR                  U5        [	        U5        AA[	        U5        g r)   )rC   rL   Útarget_datar  r©   )r2   rB   rø  Útds       r   Útest_target_dataÚJITTestMixin.test_target_dataÞ  sH   € Ø�k‰k‹mˆØ�X‰X�c‹]ˆØ�^‰^ˆà�‰�b—n‘n bÔ)ÜˆBŒØ�ÜˆB�r5   c                 ód  • U R                  5       nU R                  U5      nUR                  nUR                  S5      nUR                  S5      nUR                  S5      n[        R
                  S:  a  SOSnXEU4 H.  nU R                  UR                  UR                  5      U5        M0     U R                  UR                  UR                  5      S5        U R                  UR                  UR                  5      S5        U R                  UR                  UR                  5      S5        U R                  UR                  UR                  5      S5        U R                  UR                  UR                  5      S	5        U R                  UR                  UR                  5      S
5        g )NrH   r§  r©  ì        r¦  é   rf   )rf   rg   r¦  é   )r¦  r,  )rC   rL   r&  rF   rœ   Úmaxsizer7   Úget_abi_sizeÚtypeÚglobal_value_typeÚget_abi_alignmentrö   )	r2   rB   rø  r'  Úgv_i32Úgv_i8Ú	gv_structÚpointer_sizer®  s	            r   Útest_target_data_abi_enquiriesÚ+JITTestMixin.test_target_data_abi_enquiriesè  sO  € Ø�k‰k‹mˆØ�X‰X�c‹]ˆØ�^‰^ˆØ×(Ñ(¨Ó0ˆØ×'Ñ'¨Ó1ˆØ×+Ñ+¨MÓ:ˆ	äŸK™K¨'Ó1‘q°qˆØ Ó+ˆAØ×Ñ˜RŸ_™_¨Q¯V©VÓ4°lÖCñ ,ð 	×Ñ˜Ÿ™¨×)AÑ)AÓBÀAÔFØ×Ñ˜×-Ñ-¨f×.FÑ.FÓGÈÔKà×Ñ˜Ÿ™¨×)@Ñ)@ÓAÀ1ÔEØ�‰�b×*Ñ*¨5×+BÑ+BÓCÀYÔOà×Ñ˜Ÿ™¨×)DÑ)DÓEÀrÔJØ�‰�b×*Ñ*¨9×+FÑ+FÓGÈÕPr5   c                 óš  ^• / mU4S jnU R                  5       nU R                  U5      nUR                  U5        U R                  [	        T5      S5        U R                  U5      nU" SS5        U R                  [	        T5      S5        U R                  TS   S   U5        U R                  TS   S   [        5        / TS S & U R                  [        5      nUR                  U5        U R                  US5      nU R                  [	        T5      S5        U R                  TS   S   U5        U R                  TS   S   [        5        g )Nc                 ó*   >• TR                  X45        g r)   ©rŠ   ©rB   ÚbufÚnotifiess     €r   ÚnotifyÚ5JITTestMixin.test_object_cache_notify.<locals>.notify   ó   ø€ Ø�O‰O˜S˜JÕ'r5   r   rg   rÿ  rf   rÇ  )rC   rL   Úset_object_cacher7   rƒ   rû  r  r  ÚbytesrÈ  r  )r2   r?  rB   rø  r  Úmod2r>  s         @r   Útest_object_cache_notifyÚ%JITTestMixin.test_object_cache_notifyý  s  ø€ Øˆõ	(ð �k‰k‹mˆØ�X‰X�c‹]ˆØ
×Ñ˜FÔ#à×Ñœ˜X›¨Ô*Ø—‘˜RÓ ˆÙˆa�ŒØ×Ñœ˜X›¨Ô*à�‰�h˜q‘k !‘n cÔ*Ø×Ñ˜h q™k¨!™n¬eÔ4àˆ‘ˆØ�{‰{œ7Ó#ˆØ
�‰�dÔØ—‘˜R Ó'ˆØ×Ñœ˜X›¨Ô*à�‰�h˜q‘k !‘n dÔ+Ø×Ñ˜h q™k¨!™n¬eÕ4r5   c                 ó~  ^^^	• / m/ mU4S jnU4S jnU R                  5       nU R                  U5      nUR                  X5        U R                  [	        T5      S5        U R                  [	        T5      S5        U R                  U5      nU R                  [	        T5      S5        U R                  [	        T5      S5        U R                  TS   U5        TS   S   m	UU	4S jn/ TS S & / TS S & U R                  [        5      nU R                  U5      nUR                  X5        U R                  [	        T5      S5        U R                  [	        T5      S5        U R                  U5      nU R                  U" SS5      S5        U R                  [	        T5      S5        U R                  [	        T5      S5        g )	Nc                 ó*   >• TR                  X45        g r)   r;  r<  s     €r   r?  Ú8JITTestMixin.test_object_cache_getbuffer.<locals>.notify  rA  r5   c                 ó(   >• TR                  U 5        g r)   r;  )rB   Ú
getbufferss    €r   Ú	getbufferÚ;JITTestMixin.test_object_cache_getbuffer.<locals>.getbuffer  s   ø€ Ø×Ñ˜cÕ"r5   r   rf   c                 ó*   >• TR                  U 5        T$ r)   r;  )rB   rK  Ú
sum_buffers    €€r   Úgetbuffer_successfulÚFJITTestMixin.test_object_cache_getbuffer.<locals>.getbuffer_successful2  s   ø€ Ø×Ñ˜cÔ"ØÐr5   rg   rÿ  r   )rC   rL   rB  r7   rƒ   rû  r  rÈ  )
r2   r?  rL  rB   rø  r  rP  rK  r>  rO  s
          @@@r   Útest_object_cache_getbufferÚ(JITTestMixin.test_object_cache_getbuffer  st  ú€ ØˆØˆ
õ	(õ	#ð �k‰k‹mˆØ�X‰X�c‹]ˆØ
×Ñ˜FÔ.ð 	×Ñœ˜X›¨Ô*Ø×Ñœ˜Z›¨!Ô,Ø—‘˜RÓ ˆØ×Ñœ˜X›¨Ô*Ø×Ñœ˜Z›¨!Ô,Ø�‰�j ‘m SÔ)Ø˜a‘[ ‘^ˆ
ö
	ð ˆ‘ˆØˆ
‘1ˆà�k‰kœ'Ó"ˆØ�X‰X�c‹]ˆØ
×Ñ˜FÔ9à×Ñœ˜X›¨Ô*Ø×Ñœ˜Z›¨!Ô,Ø—‘˜RÓ ˆØ×Ñ™˜q "› rÔ*Ø×Ñœ˜X›¨Ô*Ø×Ñœ˜Z›¨!Õ,r5   rY   N)r�  )rS   rT   rU   rV   r™   rû  r  rt  rw  r  r  r  r  r  r#  r(  r7  rE  rR  rX   rY   r5   r   rô  rô  Œ  sN   † ñô5ò&ò!ò!òòò$òòò	%òòQò*5õ6*-r5   rô  c                   ó    • \ rS rSrS rS rSrg)ÚJITWithTMTestMixiniE  c                 ó4  • U R                  SS9nU R                  5       nU R                  X!5      nUR                  U5      nU R	                  SU5        UR                  S5        UR                  U5      nU R	                  SU5        U R                  XE5        g)z%Test TargetMachineRef.emit_assembly()TrK   r�  N)rQ   rC   rL   rÜ   rö   Úset_asm_verbosityÚassertNotEqual)r2   rQ   rB   rø  Úraw_asmÚraw_asm_verboses         r   Útest_emit_assemblyÚ%JITWithTMTestMixin.test_emit_assemblyG  s†   € à×,Ñ,°Ð,Ð6ˆØ�k‰k‹mˆØ�X‰X�cÓ*ˆØ ×.Ñ.¨sÓ3ˆØ�‰�e˜WÔ%Ø×(Ñ(¨Ô.Ø(×6Ñ6°sÓ;ˆØ�‰�e˜WÔ%Ø×Ñ˜GÕ5r5   c                 ó&  • U R                  SS9nU R                  5       nU R                  X!5      nUR                  U5      nU R	                  U[
        5        [        R                  R                  S5      (       a  U R                  SUSS 5        gg)z#Test TargetMachineRef.emit_object()TrK   r\   s   ELFNé
   )
rQ   rC   rL   Úemit_objectr  rC  rœ   r‡   r‰   rö   )r2   rQ   rB   rø  Úcode_objects        r   Útest_emit_objectÚ#JITWithTMTestMixin.test_emit_objectS  s}   € à×,Ñ,°Ð,Ð6ˆØ�k‰k‹mˆØ�X‰X�cÓ*ˆØ$×0Ñ0°Ó5ˆØ×Ñ˜k¬5Ô1Ü�<‰<×"Ñ" 7×+Ñ+à�M‰M˜& +¨c¨rÐ"2Õ3ð ,r5   rY   N)rS   rT   rU   rV   r[  ra  rX   rY   r5   r   rU  rU  E  s   † ò
6õ	4r5   rU  c                   ó"   • \ rS rSrSrSS jrSrg)Ú	TestMCJiti_  z8
Test JIT engines created with create_mcjit_compiler().
Nc                 óR   • Uc  U R                  SS9n[        R                  " X5      $ )NTrK   )rQ   r*   Úcreate_mcjit_compiler)r2   rB   rQ   s      r   rL   ÚTestMCJit.jitd  s,   € ØÑ!Ø!×0Ñ0°TÐ0Ð:ˆNÜ×)Ò)¨#Ó>Ð>r5   rY   r)   )rS   rT   rU   rV   r™   rL   rX   rY   r5   r   rd  rd  _  s   † ñ÷?r5   rd  zOrcJIT support is experimentalc            	       óš   • \ rS rSr\SSS\" \\\5      S4S jrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚTestOrcLLJITiq  r�  NFc                 ó˜  • [         R                  " USUS9n[         R                  " 5       nU(       a  UR                  5         UR	                  UR                  [         R                  " 5       S95      R                  U5      R                  Xr5      n	X’   n
U R                  U
5        U R                  X)R                  5        XyU" U
5      4$ )NF)Úuse_jit_linkÚsuppress_errorsr;   )r*   Úcreate_lljit_compilerÚJITLibraryBuilderÚadd_current_processÚadd_irr=   r>   Úexport_symbolÚlinkr  r7   rG   )r2   r@   rù  rQ   Úadd_processÚ	func_typerl  ÚlljitrÆ   Úrtrú  s              r   rL   ÚTestOrcLLJIT.jitt  s­   € ô ×*Ò*¨>Ø8=Ø;JñLˆô ×(Ò(Ó*ˆÞØ×'Ñ'Ô)Øß‰V�C—J‘J¤d×&=Ò&=Ó&?�JÐ@ÓAß‰]˜9Ó%ß‰T�%Ó#ð 	ð ‘ˆØ�‰˜ÔØ×Ñ˜§G¡GÔ,Ø™) EÓ*Ð*Ð*r5   c                 óà   • [         R                  " 5       n[         R                  " 5       R                  SS5      R	                  S5      R                  US5      nU R                  US   S5        g )Nr  r  rý   )r*   rm  rn  Úimport_symbolrq  rr  r7   ©r2   ru  rv  s      r   Útest_define_symbolÚTestOrcLLJIT.test_define_symbol‡  sW   € Ü×*Ò*Ó,ˆÜ×#Ò#Ó%×3Ñ3°I¸tÓDß‰]˜9Ó%§d¡d¨5°%Ó&8ð 	à×Ñ˜˜I™¨Õ-r5   c                 óè  • [         R                  " 5       nU R                  [        S5         UR	                  SS5        S S S 5        [         R
                  " 5       R                  SS5      R                  S5      R                  US5      nU R                  US   S5        U R                  [        S5         UR	                  SS5        S S S 5        g ! , (       d  f       N™= f! , (       d  f       g = f)NzNo such libraryrý   r  r  r  r   zSymbols not found.*__foobar)
r*   rm  rG  r¨   Úlookuprn  ry  rq  rr  rX  rz  s      r   Ú"test_lookup_undefined_symbol_failsÚ/TestOrcLLJIT.test_lookup_undefined_symbol_fails�  sÁ   € Ü×*Ò*Ó,ˆØ×#Ñ#¤LÐ2CÕDØ�L‰L˜ 
Ô+÷ Eä×#Ò#Ó%×3Ñ3°I¸tÓDß‰]˜9Ó%§d¡d¨5°%Ó&8ð 	à×Ñ˜B˜y™M¨1Ô-Ø×#Ñ#¤LØ$AõCà�L‰L˜ 
Ô+÷Cð C÷ EÕDú÷
Cõ Cús   ¬CÂ6C#Ã
C Ã#
C1c                 óü   • [         R                  S:X  a4  U R                  [        S5         [        R
                  " SS9  S S S 5        g U R                  [        R
                  " SS95        g ! , (       d  f       g = f)NÚwin32zJITLink .* WindowsT)rk  )rœ   r‡   rG  r¨   r*   rm  r0  r1   s    r   Útest_jit_linkÚTestOrcLLJIT.test_jit_link˜  s_   € Ü�<‰<˜7Ó"Ø×'Ñ'¬Ø(<õ>ä×*Ò*¸Ò=÷>ð >ð × Ñ ¤×!;Ò!;ÈÑ!NÕO÷	>õ >ús   «A-Á-
A;c                 ó˜   • U R                  5       u  pnU   U" SS5      nU R                  SU5        S S S 5        g ! , (       d  f       g = frþ  )rL   r7   )r2   ru  rv  r  r  s        r   r  ÚTestOrcLLJIT.test_run_code   s:   € Ø!ŸX™X›ZÑˆ�EÚÙ˜˜2“,ˆCØ×Ñ˜R Ô%÷ �UŽUús	   –;»
A	c                 óì   • U R                  5       u  pnUR                  5         UR                  5         U R                  [        5         UR	                  SS5        S S S 5        g ! , (       d  f       g = f©Nrý   r  )rL   rp  ró   ÚAssertionErrorr~  ©r2   ru  rv  r  s       r   rt  ÚTestOrcLLJIT.test_close¦  sL   € Ø!ŸX™X›ZÑˆ�EØ�‰ŒØ�‰ŒØ×Ñœ~Õ.Ø�L‰L˜ Ô%÷ /×.Ö.ús   Á	A%Á%
A3c                 ó~  • U R                  5       u  pnU    S S S 5        U R                  [        5         U    S S S 5        S S S 5        U R                  [        5         UR	                  SS5        S S S 5        g ! , (       d  f       Ni= f! , (       d  f       NX= f! , (       d  f       Na= f! , (       d  f       g = frˆ  )rL   ró   r¨   r‰  r~  rŠ  s       r   rw  ÚTestOrcLLJIT.test_with­  sƒ   € Ø!ŸX™X›ZÑˆ�EÚØ÷ à×Ñœ|Õ,ÚØ÷ ÷ -ð ×Ñœ~Õ.Ø�L‰L˜ Ô%÷ /Ð.÷ �Uú÷ •ú÷ -Õ,ú÷ /Õ.ús8   –A;µB¸BºBÁB.Á;
B	Â
B	ÂBÂ
B+Â.
B<c                 ó  • U R                  5       u  pn[        R                  " 5       R                  [        R                  [        R                  " 5       S95      R                  S5      R                  US5      n[        [        [        [        5      " US   5      " SS5      nU R                  SU5        U R                  UR                  SS5      S   S5        U R                  UR                  SS5      S   S5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        g ! , (       d  f       N?= f! , (       d  f       g = f)Nr;   rÇ  rg   rÿ  iöÿÿÿr�  r   )rL   r*   rn  rp  rÈ  r=   r>   rq  rr  r   r   r7   rX  r~  ró   r¨   ©r2   ru  Úrt_sumÚ	cfunc_sumÚrt_mulr  s         r   Útest_add_ir_moduleÚTestOrcLLJIT.test_add_ir_module·  s  € Ø%)§X¡X£ZÑ"ˆ˜	Ü×'Ò'Ó)ß‰V”G—N‘N¬$×*AÒ*AÓ*C�NÐDÓEß‰]˜5Ó!ß‰T�%˜Óð 	ô œœu¤eÔ,¨V°E©]Ô;¸A¸rÓBˆØ×Ñ˜˜cÔ"Ø×Ñ˜EŸL™L¨°Ó6°uÑ=¸qÔAØ×Ñ˜EŸL™L¨°Ó6°uÑ=¸qÔAØ×Ñœ|Õ,Ø�L‰L˜ Ô&÷ -à×Ñœ|Õ,Ø�L‰L˜ Ô&÷ -Ð,÷ -Õ,úç,Õ,ús   ÄE!ÅE2Å!
E/Å2
F c                 óø   • U R                  5       u  pnA[        R                  " 5         U R                  [        5         UR                  SS5        S S S 5        UR                  5         g ! , (       d  f       N= f©Nr�  )rL   r-   r.   ró   r¨   r~  rp  )r2   ru  r�  rŽ   s       r   r#  ÚTestOrcLLJIT.test_remove_moduleÆ  sQ   € Ø!ŸX™X›ZÑˆ˜ØÜ
�
Š
ŒØ×Ñœ|Õ,Ø�L‰L˜ Ô&÷ -à�‰�÷ -Õ,ús   ¿A+Á+
A9c                 óŒ  • U R                  5       u  pn[        R                  " 5       R                  [        R                  [        R                  " 5       S95      R                  S5      R                  S5      R                  US5      n[        [        [        [        5      " US   5      " SS5      nU R                  SU5        g )Nr;   Ú
square_sumr�  rg   rÿ  rP  )rL   r*   rn  rp  Úasm_square_sumr=   r>   rq  Úadd_jit_libraryrr  r   r   r7   r�  s         r   Útest_lib_dependsÚTestOrcLLJIT.test_lib_dependsÎ  s•   € Ø%)§X¡X£ZÑ"ˆ˜	Ü×'Ò'Ó)ß‰V”N×)Ñ)´×1HÒ1HÓ1JÐ)ÐKÓLß‰]˜<Ó(ß‰_˜UÓ#ß‰T�%˜Ó&ð	 	ô
 œœu¤eÔ,¨V°LÑ-AÔBÀ1ÀbÓIˆØ×Ñ˜˜CÕ r5   c                 ó¨   • U R                  5       u  pnUR                  nU R                  UR                  U5        [        U5        A[        U5        g r)   )rL   r&  r  r©   )r2   ru  rv  rŽ   r'  s        r   r(  ÚTestOrcLLJIT.test_target_dataØ  sA   € ØŸ™›‰ˆ�AØ×Ñˆà�‰�e×'Ñ'¨Ô,ÜˆBŒØÜˆB�r5   c                 ó  • [        S5      n[        R                  " 5       n[        R                  " 5       nUR	                  [
        R                  [        R                  " 5       S95      R                  S[        R                  " U5      5      R                  S5      R                  US5      nUS   nU R                  U5        U R                  [        [         5      " U5      " 5       S5        AU R#                  UR$                  S5        g )Nr   r;   ÚArý   é   rO  )r   r*   rm  rn  rp  Úasm_ext_ctorsr=   r>   ry  rq  Ú	addressofrq  rr  r  r7   r   r   rX  r¢  )r2   Úshared_valueru  rÆ   rv  rý   s         r   Útest_global_ctors_dtorsÚ$TestOrcLLJIT.test_global_ctors_dtorsá  sÌ   € ô ˜q“zˆÜ×*Ò*Ó,ˆÜ×(Ò(Ó*ˆØß‰V”M×(Ñ(´×0GÒ0GÓ0IÐ(ÐJÓKß‰]˜3¤× 0Ò 0°Ó >Ó?ß‰]˜5Ó!ß‰T�%˜Óð	 	ð
 �‰iˆØ�‰˜ÔØ×Ñœ¤5Ô)¨#Ô.Ó0°"Ô5ØØ×Ñ˜L×.Ñ.°Õ3r5   c                 ó’   • SnU R                  [        U5         U R                  [        SSS9  S S S 5        g ! , (       d  f       g = f)Nz*Failed to materialize symbols:.*getversionÚ
getversionT)rl  )rG  r¨   rL   Úasm_getversion)r2   Úmsgs     r   Ú(test_lookup_current_process_symbol_failsÚ5TestOrcLLJIT.test_lookup_current_process_symbol_failsò  s7   € ð ;ˆØ×#Ñ#¤L°#Õ6Ø�H‰H”^ \À4ˆHÑH÷ 7×6Ö6ús	   ™8¸
Ac                 ó4   • U R                  [        SS S5        g )Nr©  T)rL   rª  r1   s    r   Ú"test_lookup_current_process_symbolÚ/TestOrcLLJIT.test_lookup_current_process_symbolú  s   € Ø�‰” ¨t°TÕ:r5   c                 ó†  ^^• [         R                  " 5       m[        R                  [         R                  " 5       S9mUU4S jn[        [        R                  " 5       5       Vs/ s H  n[        R                  " U" U5      S9PM     nnU H  nUR                  5         M     U H  nUR                  5         M     g s  snf )Nr;   c                 ó   >^ • U UU4S jnU$ )Nc            
      óÞ   >• / n [        S5       H[  nU R                  [        R                  " 5       R	                  T5      R                  S5      R                  TST SU 35      5        M]     g )Né2   r�  Úsum_rŽ   )rR  rŠ   r*   rn  rp  rq  rr  )ÚtrackingÚcÚiru  Úllvm_irs     €€€r   Údo_workÚDTestOrcLLJIT.test_thread_safe.<locals>.compile_many.<locals>.do_work  sY   ø€ Ø�Ü˜rž�AØ—O‘O¤D×$:Ò$:Ó$<ß%+¡V¨G£_ß%2¡]°5Ó%9ß%)¡T¨%°4¸°s¸!¸A¸3°Ó%@öBò #r5   rY   )r¸  rº  ru  r¹  s   ` €€r   Úcompile_manyÚ3TestOrcLLJIT.test_thread_safe.<locals>.compile_many  s   ù€ ÷Bð ˆNr5   )rP   )r*   rm  rW   r=   r>   rR  rt   Ú	cpu_countÚ	threadingÚThreadÚstartÚjoin)r2   r¼  r¸  ÚthsÚthru  r¹  s        @@r   Útest_thread_safeÚTestOrcLLJIT.test_thread_safeý  s–   ù€ Ü×*Ò*Ó,ˆÜ—.‘.¬×(?Ò(?Ó(A�.ÐBˆö		ô œbŸlšl›nÔ-ó/Ú-�1ô ×Ò¡|°A£Ô7Ù-ð 	ð /ãˆBØ�H‰HŽJñ ãˆBØ�G‰GŽIò ùò	/s   Á%$B>c                 óˆ  • U R                  SS9nU R                  5       n[        R                  " U5      n[        R                  " 5       R                  UR                  U5      5      R                  S5      R                  US5      n[        [        [        [        5      " US   5      nU R                  U" SS5      S5        g )NFrK   r�  rg   é   é   )rQ   rC   r*   rm  rn  Úadd_object_imgr_  rq  rr  r   r   r7   )r2   rQ   rB   ru  rv  r�  s         r   Útest_add_object_fileÚ!TestOrcLLJIT.test_add_object_file  s›   € Ø×,Ñ,°Ð,Ð7ˆØ�k‰k‹mˆÜ×*Ò*¨>Ó:ˆÜ×#Ò#Ó%ß‰^˜N×6Ñ6°sÓ;Ó<ß‰]˜5Ó!ß‰T�%˜Óð 	ô œœu¤eÔ,¨R°©YÓ7ˆØ×Ñ™˜Q › AÕ&r5   c                 óŒ  • U R                  SS9nU R                  5       nUR                  U5      n[        5       u  pE [        R
                  " US5       nUR                  U5        S S S 5        [        R                  " U5      n[        R                  " 5       R                  U5      R                  S5      R                  US5      n[        [        [        [        5      " US   5      n	U R                  U	" SS5      S5        [        R                   " U5        g ! , (       d  f       N¹= f! [        R                   " U5        f = f)NFrK   Úwbr�  rg   rÈ  rÉ  )rQ   rC   r_  r   rt   ÚfdopenÚwriter*   rm  rn  Úadd_object_filerq  rr  r   r   r7   Úunlink)
r2   rQ   rB   Úobj_binÚ	temp_descÚ	temp_pathrÂ  ru  rv  r�  s
             r   Ú$test_add_object_file_from_filesystemÚ1TestOrcLLJIT.test_add_object_file_from_filesystem  sô   € Ø×,Ñ,°Ð,Ð7ˆØ�k‰k‹mˆØ ×,Ñ,¨SÓ1ˆÜ&›yÑˆ	ð	!Ü—’˜9 dÔ+¨qØ—‘˜Ô ÷ ,ä×.Ò.¨~Ó>ˆEÜ×'Ò'Ó)ß ‘ Ó+ß‘˜uÓ%ß‘�e˜UÓ#ð ô œE¤5¬%Ô0°°E±Ó;ˆCØ×Ñ™S  A›Y¨Ô*ä�IŠI�iÕ ÷ ,Õ+ûô �IŠI�iÕ ús$   ¾D+ ÁDÁ'BD+ Ä
D(Ä$D+ Ä+ErY   )rS   rT   rU   rV   rW   r   r   rL   r{  r  rƒ  r  rt  rw  r“  r#  rœ  r(  r¦  r¬  r¯  rÅ  rË  rÖ  rX   rY   r5   r   ri  ri  q  ss   † ð ¨¸tØ©°5¸%ÀÓ)GØ!ô+ò&.ò	,òPò&ò&ò&ò'òò!òò4ò"Iò;òò,	'õ!r5   ri  c                   ó¶   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚTestValueRefi2  c                 ó|   • U R                  5       nUR                  S5      nU R                  [        U5      S5        g )NrH   z@glob = global i32 0)rC   rF   r7   r©   ©r2   rB   rH   s      r   rm  ÚTestValueRef.test_str4  s2   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ×Ñœ˜T›Ð$:Õ;r5   c                 óÄ   • U R                  5       nUR                  S5      nU R                  UR                  S5        SUl        U R                  UR                  S5        g )NrH   Úfoobar)rC   rF   r7   rG   rÛ  s      r   r{  ÚTestValueRef.test_name9  sL   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ×Ñ˜Ÿ™ FÔ+ØˆŒ	Ø×Ñ˜Ÿ™ HÕ-r5   c                 ó´  • U R                  5       nUR                  S5      nUR                  nU R                  UR                  [        R
                  5        X2l        U R                  UR                  U5        S HY  nX2l        U R                  UR                  [        R
                  5        U R                  UR                  R                  U5        M[     g )NrH   )ÚinternalÚexternal)rC   rF   Úlinkager  r*   ÚLinkager7   rG   )r2   rB   rH   rã  s       r   Útest_linkageÚTestValueRef.test_linkage@  s˜   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ—,‘,ˆØ×Ñ˜dŸl™l¬D¯L©LÔ9ØŒØ×Ñ˜Ÿ™ wÔ/Û/ˆGØ"ŒLØ×!Ñ! $§,¡,´·±Ô=Ø×Ñ˜TŸ\™\×.Ñ.°Ö8ò 0r5   c                 ó´  • U R                  5       nUR                  S5      nUR                  nU R                  UR                  [        R
                  5        X2l        U R                  UR                  U5        S HY  nX2l        U R                  UR                  [        R
                  5        U R                  UR                  R                  U5        M[     g )NrH   )ÚhiddenÚ	protectedr$  )rC   rF   Ú
visibilityr  r*   Ú
Visibilityr7   rG   )r2   rB   rH   rê  s       r   Útest_visibilityÚTestValueRef.test_visibilityL  s˜   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ—_‘_ˆ
Ø×Ñ˜dŸo™o¬t¯©Ô?Ø$ŒØ×Ñ˜Ÿ™¨*Ô5Û<ˆJØ(ŒOØ×!Ñ! $§/¡/´4·?±?ÔCØ×Ñ˜TŸ_™_×1Ñ1°:Ö>ò =r5   c                 ó´  • U R                  5       nUR                  S5      nUR                  nU R                  UR                  [        R
                  5        X2l        U R                  UR                  U5        S HY  nX2l        U R                  UR                  [        R
                  5        U R                  UR                  R                  U5        M[     g )NrH   )Ú	dllimportÚ	dllexportr$  )rC   rF   Ústorage_classr  r*   ÚStorageClassr7   rG   )r2   rB   rH   rñ  s       r   Útest_storage_classÚTestValueRef.test_storage_classX  s©   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ×*Ñ*ˆØ×Ñ˜d×0Ñ0´$×2CÑ2CÔDØ*ÔØ×Ñ˜×+Ñ+¨]Ô;ÛBˆMØ!.ÔØ×!Ñ! $×"4Ñ"4´d×6GÑ6GÔHØ×Ñ˜T×/Ñ/×4Ñ4°mÖDò Cr5   c                 ó2  • U R                  5       nUR                  S5      nUR                  S5        U R                  [        5       nUR                  S5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nr�  Ú	nocaptureÚzextzno such attribute 'zext')rC   rŽ  Úadd_function_attributeró   Ú
ValueErrorr7   r©   rõ   )r2   rB   r  Úraisess       r   Útest_add_function_attributeÚ(TestValueRef.test_add_function_attributed  ss   € Ø�k‰k‹mˆØ×Ñ˜eÓ$ˆØ
×!Ñ! +Ô.Ø×ÑœzÔ*¨fØ×%Ñ% fÔ-÷ +à×Ñœ˜V×-Ñ-Ó.Ð0JÕK÷ +Õ*ús   ÁBÂ
Bc                 ó~   • U R                  5       nUR                  S5      nU R                  UR                   U5        g ©NrH   )rC   rF   r  rÛ  s      r   Útest_moduleÚTestValueRef.test_modulel  s/   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ�‰�d—k‘k 3Õ'r5   c                 óž   • U R                  5       nUR                  S5      nUR                  nU R                  U[        R
                  5        g rþ  )rC   rF   r0  r  r*   ÚTypeRef©r2   rB   rH   Útps       r   Ú	test_typeÚTestValueRef.test_typeq  s:   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ�Y‰YˆØ×Ñ˜b¤$§,¡,Õ/r5   c                 ó,  • U R                  5       nUR                  S5      nUR                  nU R                  UR                  S5        UR                  S5      nU R                  [        R                  " SUR                  R                  5      5        g )NrH   rÐ   r©  r¹  )	rC   rF   r0  r7   rG   r0  r|   r‚   r1  )r2   rB   rH   r  Ústs        r   Útest_type_nameÚTestValueRef.test_type_namew  sw   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ�Y‰YˆØ×Ñ˜Ÿ™ "Ô%Ø×$Ñ$ ]Ó3ˆØ×ÑœRŸXšXÐ&DØ&(×&:Ñ&:×&?Ñ&?óAõ 	Br5   c                 ó”   • U R                  5       nUR                  S5      nUR                  nU R                  [	        U5      S5        g )NrH   Úi32)rC   rF   r1  r7   r©   r  s       r   Útest_type_printing_variableÚ(TestValueRef.test_type_printing_variable€  s<   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ×#Ñ#ˆØ×Ñœ˜R› %Õ(r5   c                 ó�   • U R                  5       nUR                  S5      nU R                  [        UR                  5      S5        g )Nr�  zi32 (i32, i32))rC   rŽ  r7   r©   r1  r‘  s      r   Útest_type_printing_functionÚ(TestValueRef.test_type_printing_function†  s9   € Ø�k‰k‹mˆØ×Ñ˜eÓ$ˆØ×Ñœ˜R×1Ñ1Ó2Ð4DÕEr5   c                 ót  • U R                  5       nUR                  S5      nU R                  UR                  R                  5        U R                  [        R                  " S[        UR                  5      5      5        U R                  [        R                  " S[        UR                  5      5      5        g )Nr©  Úptrr—  )
rC   rF   r  r0  Ú
is_pointerr0  r|   r‚   r©   r1  )r2   rB   r  s      r   Útest_type_printing_structÚ&TestValueRef.test_type_printing_struct‹  s~   € Ø�k‰k‹mˆØ×$Ñ$ ]Ó3ˆØ�‰˜Ÿ™×*Ñ*Ô+Ø×ÑœRŸXšX f¬c°"·'±'«lÓ;Ô<Ø×ÑœRŸXšXØGÜ�×$Ñ$Ó%ó'õ 	(r5   c                 ód   • U R                  5       nUR                  5         UR                  5         g r)   )rH   rp  )r2   rH   s     r   rt  ÚTestValueRef.test_close”  s   € Ø�y‰y‹{ˆØ�
‰
ŒØ�
‰
�r5   c                 óö   • U R                  5       R                  S5      nU R                  [        5      R                  S5      nU R                  UR                  5        U R                  UR                  5        g r–  )rC   rŽ  Úasm_sum_declarer  Úis_declarationr  )r2   ÚdefinedÚdeclareds      r   Útest_is_declarationÚ TestValueRef.test_is_declaration™  sW   € Ø—+‘+“-×,Ñ,¨UÓ3ˆØ—;‘;œÓ/×<Ñ<¸UÓCˆØ×Ñ˜×/Ñ/Ô0Ø�‰˜×/Ñ/Õ0r5   c                 óÖ   • U R                  [        5      n[        UR                  5      nU R	                  [        U5      S5        U H  nU R                  UR                  5        M      g ©Nr¦  )rC   rW   r´  rª  r7   rƒ   r  Ú	is_global)r2   rB   Úgvarsr2  s       r   Útest_module_global_variablesÚ)TestValueRef.test_module_global_variablesŸ  sN   € Ø�k‰kœ'Ó"ˆÜ�S×)Ñ)Ó*ˆØ×Ñœ˜U› QÔ'ÛˆAØ�O‰O˜AŸK™KÖ(ò r5   c                 ó^  • U R                  5       n[        UR                  5      nU R                  [	        U5      S5        US   nU R                  UR                  5        U R                  UR                  S5        U R                  [        5         UR                    S S S 5        U R                  [        5         UR                    S S S 5        U R                  [        5         UR                    S S S 5        g ! , (       d  f       Nc= f! , (       d  f       NJ= f! , (       d  f       g = fr²  )rC   r´  r³  r7   rƒ   r  Úis_functionrG   ró   rù  ÚinstructionsÚoperandsÚopcode)r2   rB   rµ  rÄ   s       r   Útest_module_functionsÚ"TestValueRef.test_module_functions¦  sÈ   € Ø�k‰k‹mˆÜ�S—]‘]Ó#ˆØ×Ñœ˜U› QÔ'Ø�Q‰xˆØ�‰˜×(Ñ(Ô)Ø×Ñ˜Ÿ™ EÔ*à×ÑœzÕ*Ø×Ò÷ +à×ÑœzÕ*Ø�MŠM÷ +à×ÑœzÕ*Ø�KŠK÷ +Ð*÷	 +Õ*úç*Õ*úç*Õ*ús$   ÂC<Â<DÃ&DÃ<
D
Ä
DÄ
D,c                 óh  • U R                  5       nUR                  S5      nU R                  UR                  5        [	        UR
                  5      nU R                  [        U5      S5        U R                  US   R                  5        U R                  US   R                  5        U R                  US   R                  S5        U R                  [        US   R                  5      S5        U R                  US   R                  S5        U R                  [        US   R                  5      S5        U R                  [        5         US   R                    S S S 5        U R                  [        5         US   R
                    S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr�  rg   r   rf   ú.1r  ú.2)rC   rŽ  r  r'  r´  Ú	argumentsr7   rƒ   Úis_argumentrG   r©   r0  ró   rù  Úblocks)r2   rB   rÄ   r½   s       r   Útest_function_argumentsÚ$TestValueRef.test_function_argumentsµ  s8  € Ø�k‰k‹mˆØ×Ñ Ó&ˆØ�‰˜×(Ñ(Ô)Ü�D—N‘NÓ#ˆØ×Ñœ˜T› AÔ&Ø�‰˜˜Q™×+Ñ+Ô,Ø�‰˜˜Q™×+Ñ+Ô,Ø×Ñ˜˜a™Ÿ™ tÔ,Ø×Ñœ˜T !™WŸ\™\Ó*¨EÔ2Ø×Ñ˜˜a™Ÿ™ tÔ,Ø×Ñœ˜T !™WŸ\™\Ó*¨EÔ2à×ÑœzÕ*Ø�‰G�NŠN÷ +à×ÑœzÕ*Ø�‰G×Ò÷ +Ð*÷ +Õ*úç*Õ*ús   ÅFÅ9F#Æ
F Æ#
F1c                 óâ   • U R                  5       R                  S5      n[        UR                  5      nU R	                  [        U5      S5        US   nU R                  UR                  5        g )Nr�  rf   r   )rC   rŽ  r´  r2  r7   rƒ   r  Úis_block)r2   rÄ   r2  rÅ   s       r   Útest_function_blocksÚ!TestValueRef.test_function_blocksÇ  sS   € Ø�{‰{‹}×)Ñ)¨%Ó0ˆÜ�d—k‘kÓ"ˆØ×Ñœ˜V› aÔ(Ø�q‘	ˆØ�‰˜Ÿ™Õ'r5   c                 ó<  • U R                  5       R                  S5      n[        [        UR                  5      S   R                  5      nU R                  [        U5      S5        U R                  US   R                  5        U R                  US   R                  5        U R                  US   R                  5        U R                  US   R                  S5        U R                  US   R                  S5        U R                  US   R                  S5        g )Nr�  r   rÈ  rf   rg   r…   r#   )
rC   rŽ  r´  r2  r(  r7   rƒ   r  Úis_instructionr*  )r2   rÄ   Úinstss      r   Útest_block_instructionsÚ$TestValueRef.test_block_instructionsÎ  sÔ   € Ø�{‰{‹}×)Ñ)¨%Ó0ˆÜ”T˜$Ÿ+™+Ó& qÑ)×6Ñ6Ó7ˆØ×Ñœ˜U› QÔ'Ø�‰˜˜a™×/Ñ/Ô0Ø�‰˜˜a™×/Ñ/Ô0Ø�‰˜˜a™×/Ñ/Ô0Ø×Ñ˜˜q™Ÿ™¨%Ô0Ø×Ñ˜˜q™Ÿ™¨%Ô0Ø×Ñ˜˜q™Ÿ™¨%Õ0r5   c                 óÊ  • U R                  5       R                  S5      n[        [        UR                  5      S   R                  5      S   nU R                  UR                  S5        [        UR                  5      nU R                  [        U5      S5        U R                  US   R                  5        U R                  US   R                  5        U R                  US   R                  S5        U R                  [        US   R                  5      S5        U R                  US   R                  S5        U R                  [        US   R                  5      S5        g )	Nr�  r   r…   rg   rf   r.  r  r/  )rC   rŽ  r´  r2  r(  r7   r*  r)  rƒ   r  Ú
is_operandrG   r©   r0  )r2   rÄ   r…   r)  s       r   Útest_instruction_operandsÚ&TestValueRef.test_instruction_operandsÙ  s  € Ø�{‰{‹}×)Ñ)¨%Ó0ˆÜ”4˜Ÿ™Ó$ QÑ'×4Ñ4Ó5°aÑ8ˆØ×Ñ˜Ÿ™ UÔ+Ü˜Ÿ™Ó%ˆØ×Ñœ˜X›¨Ô*Ø�‰˜ ™×.Ñ.Ô/Ø�‰˜ ™×.Ñ.Ô/Ø×Ñ˜ !™×)Ñ)¨4Ô0Ø×Ñœ˜X a™[×-Ñ-Ó.°Ô6Ø×Ñ˜ !™×)Ñ)¨4Ô0Ø×Ñœ˜X a™[×-Ñ-Ó.°Õ6r5   c                 ó  • [         R                  S   nUS:”  a  SOS/nU R                  [        5      nUR                   HÅ  n[        UR                  5      nUR                  S:X  a  U R                  XR5        M;  UR                  S:X  d  MM  U R                  U/ 5        [        UR                  5      nU R                  [        US   R                  5      S/5        U R                  [        US   R                  5      / 5        MÇ     g )	Nr   é   s   memory(read)s   readonlyÚa_readonly_funcÚa_arg0_return_funcs   returnedrf   )
r*   rQ  rC   Úasm_attributesr³  r´  Ú
attributesrG   r7   r0  )r2   ÚverÚreadonly_attrsrB   rÄ   Úattrsr½   s          r   Útest_function_attributesÚ%TestValueRef.test_function_attributesæ  sÒ   € Ü×$Ñ$ QÑ'ˆØ-0°2«X™/¸;ÐGˆØ�k‰kœ.Ó)ˆØ—M”MˆDÜ˜Ÿ™Ó)ˆEØ�y‰yÐ-Ó-Ø× Ñ  Ö7Ø—‘Ð2Õ2Ø× Ñ  ¨Ô+Ü˜DŸN™NÓ+�Ø× Ñ ¤ d¨1¡g×&8Ñ&8Ó!9¸K¸=ÔIØ× Ñ ¤ d¨1¡g×&8Ñ&8Ó!9¸2Ö>ò "r5   c                 óÄ  • U R                  5       nU R                  UR                  S5      R                  [        R
                  R                  5        UR                  S5      nU R                  UR                  [        R
                  R                  5        [        UR                  5      S   nU R                  UR                  [        R
                  R                  5        [        UR                  5      S   nU R                  UR                  [        R
                  R                  5        U R                  [        UR                  5      S   R                  [        R
                  R                  5        U R                  [        UR                  5      S   R                  [        R
                  R                  5        U R                  [         5      R                  S5      n[        [        UR                  5      S   R                  5      S   nU R                  [        UR                  5      S   R                  [        R
                  R"                  5        g )NrH   r�  r   rf   rý   )rC   r7   rF   Ú
value_kindr*   Ú	ValueKindÚglobal_variablerŽ  Úfunctionr´  r2  Úbasic_blockr(  Úinstructionr)  Úconstant_intÚasm_inlineasmÚ
inline_asm)r2   rB   rÄ   rÅ   ÚinstÚ	iasm_funcÚ	iasm_insts          r   Útest_value_kindÚTestValueRef.test_value_kindô  s¤  € Ø�k‰k‹mˆØ×Ñ˜×0Ñ0°Ó8×CÑCÜŸ™×7Ñ7ô	9à×Ñ Ó&ˆØ×Ñ˜Ÿ™¬$¯.©.×*AÑ*AÔBÜ�T—[‘[Ó! !Ñ$ˆØ×Ñ˜×)Ñ)¬4¯>©>×+EÑ+EÔFÜ�E×&Ñ&Ó'¨Ñ*ˆØ×Ñ˜Ÿ™¬$¯.©.×*DÑ*DÔEØ×Ñœ˜dŸm™mÓ,¨QÑ/×:Ñ:ÜŸ™×4Ñ4ô	6à×Ñœ˜dŸm™mÓ,¨QÑ/×:Ñ:ÜŸ™×3Ñ3ô	5ð —K‘K¤Ó.×;Ñ;¸EÓBˆ	Üœ˜i×.Ñ.Ó/°Ñ2×?Ñ?Ó@ÀÑCˆ	Ø×Ñœ˜i×0Ñ0Ó1°!Ñ4×?Ñ?ÜŸ™×2Ñ2õ	4r5   c                 ó
  • U R                  5       nU R                  UR                  S5      R                  5        SnUR                   H¥  nU R                  UR                  5        UR
                   Hw  nU R                  UR                  5        UR                   HI  nU R                  UR                  5        UR                   H  nUR                  (       d  M  US-  nM     MK     My     M§     U R                  US5        g )NrH   r   rf   )
rC   r  rF   Úis_constantr³  r2  r  r(  r)  r7   )r2   rB   Úconstant_operandsrÄ   rÅ   rW  Úops          r   Útest_is_constantÚTestValueRef.test_is_constant  sË   € Ø�k‰k‹mˆØ�‰˜×/Ñ/°Ó7×CÑCÔDØÐØ—M”MˆDØ�O‰O˜D×,Ñ,Ô-ØŸœ�Ø× Ñ  ×!2Ñ!2Ô3Ø!×.Ô.�DØ×$Ñ$ T×%5Ñ%5Ô6Ø"Ÿmœm˜ØŸ>Ÿ>™>Ø-°Ñ2Ò-ó ,ó /ó %ñ "ð 	×ÑÐ*¨AÕ.r5   c                 óf  • U R                  5       nUR                  S5      n[        [        UR                  5      S   R                  5      nU R                  US   R                  S5        [        US   R                  5      nU R                  US   R                  5        U R                  US   R                  5        U R                  US   R                  5       S5        U R                  [        5         US   R                  5         S S S 5        U R                  [        5      nUR                  S5      n[        [        UR                  5      S   R                  5      n[        US   R                  5      S   n[        US   R                  5      S   nU R                  UR                  5       S5        U R                  UR                  SS9S	5        UR                  S
S9n[        R!                  UR#                  SS5      SSS9nU R                  US	5        g ! , (       d  f       GN= f)Nr�  r   rf   r…   rg   rÉ  T)Ú
signed_intrÿ  Fr,  Úlittle)Úsigned)rC   rŽ  r´  r2  r(  r7   r*  r)  r  r]  r  Úget_constant_valueró   rù  Úasm_sum3ÚintÚ
from_bytesÚto_bytes)	r2   rB   rÄ   r;  r)  Úposint64Únegint64Úas_u64Úas_i64s	            r   Útest_constant_intÚTestValueRef.test_constant_int  sÏ  € Ø�k‰k‹mˆØ×Ñ Ó&ˆÜ”T˜$Ÿ+™+Ó& qÑ)×6Ñ6Ó7ˆØ×Ñ˜˜q™Ÿ™¨%Ô0Ü˜˜a™×)Ñ)Ó*ˆØ�‰˜ ™×/Ñ/Ô0Ø×Ñ˜ !™×0Ñ0Ô1Ø×Ñ˜ !™×7Ñ7Ó9¸1Ô=Ø×ÑœzÕ*Ø�Q‰K×*Ñ*Ô,÷ +ð �k‰kœ(Ó#ˆØ×Ñ Ó&ˆÜ”T˜$Ÿ+™+Ó& qÑ)×6Ñ6Ó7ˆÜ˜˜a™×)Ñ)Ó*¨1Ñ-ˆÜ˜˜a™×)Ñ)Ó*¨1Ñ-ˆØ×Ñ˜×4Ñ4Ó6¸Ô:Ø×Ñ˜×4Ñ4ÀÐ4ÐEÀrÔJð ×,Ñ,¸Ð,Ð>ˆÜ—‘ §¡°°8Ó <¸hØ'+ð  ð -ˆà×Ñ˜ Õ$÷ +Ö*ús   Ã8H!È!
H0c                 óè  • U R                  [        5      nUR                  S5      n[        [        UR                  5      S   R
                  5      nU R                  [        U5      S5        U R                  US   R                  S5        [        US   R                  5      nU R                  US   R                  5        U R                  US   R                  5       S5        U R                  US   R                  5        U R                  US   R                  5       S5        U R                  [        5      nUR                  S5      n[        [        UR                  5      S   R
                  5      S   n[        UR                  5      nU R                  [         5         US   R                  5         S S S 5        U R                  US   R                  SS	9S5        g ! , (       d  f       N1= f)
Nrý   r   rg   r¿   g        rf   g…ëQ¸	@T)Úround_fp)rC   r^  rŽ  r´  r2  r(  r7   rƒ   r*  r)  r  r]  ÚassertAlmostEqualrf  Úasm_double_inaccurateró   rù  )r2   rB   rÄ   r;  r)  rW  s         r   Útest_constant_fpÚTestValueRef.test_constant_fp2  sƒ  € Ø�k‰kÔ+Ó,ˆØ×Ñ Ó&ˆÜ”T˜$Ÿ+™+Ó& qÑ)×6Ñ6Ó7ˆØ×Ñœ˜U› QÔ'Ø×Ñ˜˜q™Ÿ™¨&Ô1Ü˜˜a™×)Ñ)Ó*ˆØ�‰˜ ™×/Ñ/Ô0Ø×Ñ˜x¨™{×=Ñ=Ó?ÀÔEØ�‰˜ ™×/Ñ/Ô0Ø×Ñ˜x¨™{×=Ñ=Ó?ÀÔFà�k‰kÔ/Ó0ˆØ×Ñ Ó&ˆÜ”D˜Ÿ™Ó% aÑ(×5Ñ5Ó6°qÑ9ˆÜ˜Ÿ™Ó&ˆØ×ÑœzÕ*Ø�Q‰K×*Ñ*Ô,÷ +à×Ñ˜x¨™{×=Ñ=ÀtÐ=ÐLÈaÕP÷ +Õ*ús   Æ$G#Ç#
G1c                 óR  • U R                  [        5      nUR                  S5      n[        [        UR                  5      S   R
                  5      S   n[        UR                  5      S   nU R                  UR                  5        U R                  UR                  5       S5        g )Nrz  r   zptr null)rC   Úasm_null_constantrŽ  r´  r2  r(  r)  r  r]  r7   rf  )r2   rB   rÄ   rW  Úargs        r   Útest_constant_as_stringÚ$TestValueRef.test_constant_as_stringF  s€   € Ø�k‰kÔ+Ó,ˆØ×Ñ Ó&ˆÜ”D˜Ÿ™Ó% aÑ(×5Ñ5Ó6°qÑ9ˆÜ�4—=‘=Ó! !Ñ$ˆØ�‰˜Ÿ™Ô(Ø×Ñ˜×/Ñ/Ó1°:Õ>r5   c                 ó  • U R                  [        5      nUR                  S5      n[        UR                  5      n[        US   R
                  5      nU R                  US   R                  5        U R                  US   R                  S5        [        US   R                  5      nU R                  [        U5      S5        U R                  US   R                  5        U R                  US   R                  5        U R                  US   US   5        U R                  US   US   5        U R                  US   R                  S5        U R                  [        5         US   R                    S S S 5        g ! , (       d  f       g = f)Nrý   éÿÿÿÿr   Úphirg   rf   )rC   Úasm_phi_blocksrŽ  r´  r2  r(  r  r:  r7   r*  Úincoming_blocksrƒ   r6  rX  ró   rù  )r2   rB   rÄ   r2  r(  r€  s         r   Útest_incoming_phi_blocksÚ%TestValueRef.test_incoming_phi_blocksN  s>  € Ø�k‰kœ.Ó)ˆØ×Ñ Ó&ˆÜ�d—k‘kÓ"ˆÜ˜F 2™J×3Ñ3Ó4ˆØ�‰˜ Q™×6Ñ6Ô7Ø×Ñ˜ a™×/Ñ/°Ô7ä˜|¨A™×>Ñ>Ó?ˆØ×Ñœ˜_Ó-¨qÔ1Ø�‰˜¨Ñ*×3Ñ3Ô4Ø�‰˜¨Ñ*×3Ñ3Ô4à×Ñ˜¨Ñ+¨V°B©ZÔ8Ø×Ñ˜¨Ñ+¨V°A©YÔ7ð 	×Ñ˜L¨™O×2Ñ2°EÔ:Ø×ÑœzÕ*Ø˜‰O×+Ò+÷ +×*Ö*ús   Å$E=Å=
FrY   N) rS   rT   rU   rV   rm  r{  rå  rì  ró  rû  rÿ  r  r	  r  r  r  rt  r  r$  r+  r3  r7  r<  r@  rK  rZ  r`  ro  ru  rz  r�  rX   rY   r5   r   rÙ  rÙ  2  sŽ   † ò<ò
.ò
9ò
?ò
EòLò(ò
0òBò)òFò
(òò
1ò)òòò$(ò	1ò7ò?ò4ò(/ò %ò4Qò(?õ,r5   rÙ  c                   óV   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)ÚTestTypeRefid  c                 óÀ  • U R                  5       nUR                  S5      nU R                  [        UR                  5      S5        UR                  S5      nU R                  [        U5      S5        [        UR                  5      nU R                  [        U5      S5        U R                  [        US   5      S5        U R                  [        US   5      S	5        g )
NrH   r  r–  z+%struct.glob_type = type { i64, [2 x i64] }rg   r   Úi64rf   z	[2 x i64])	rC   rF   r7   r©   r1  r˜  r´  Úelementsrƒ   )r2   rB   rH   Úglob_struct_typer‡  s        r   rm  ÚTestTypeRef.test_strf  s½   € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ×Ñœ˜T×3Ñ3Ó4°eÔ<Ø×.Ñ.Ð/AÓBÐØ×ÑœÐ-Ó.ØFô	Hô Ð(×1Ñ1Ó2ˆØ×Ñœ˜X›¨Ô*Ø×Ñœ˜X a™[Ó)¨5Ô1Ø×Ñœ˜X a™[Ó)¨;Õ7r5   c                 óä  • U R                  5       nUR                  S5      nU R                  UR                  R                  [
        R                  R                  5        U R                  UR                  R                  5        UR                  S5      nU R                  UR                  R                  [
        R                  R                  5        U R                  UR                  R                  5        UR                  nU R                  UR                  [
        R                  R                  5        U R                  UR                  5        UR                  u  pVU R                  UR                  [
        R                  R                  5        U R                  UR                  [
        R                  R                  5        U R                  UR                   5        UR#                  S5      nUR                  u  p‰U R                  U	R                  [
        R                  R$                  5        U R                  U	R&                  5        UR)                  S5      R                  n
U R                  U
R                  [
        R                  R                  5        UR)                  S5      R                  nU R                  UR                  [
        R                  R*                  5        g )NrH   r©  ústruct.glob_type_vecr�  )rC   rF   r7   r0  Ú	type_kindr*   ÚTypeKindÚpointerr  r  r1  ÚstructÚ	is_structr‡  ÚintegerÚarrayÚis_arrayr˜  ÚvectorÚ	is_vectorrŽ  rQ  )r2   rB   rH   r©  ÚstypeÚstype_aÚstype_bÚglob_vec_struct_typerŽ   Úvector_typeÚfuncptrÚfunctypes               r   Útest_type_kindÚTestTypeRef.test_type_kinds  sù  € Ø�k‰k‹mˆØ×&Ñ& vÓ.ˆØ×Ñ˜Ÿ™×,Ñ,¬d¯m©m×.CÑ.CÔDØ�‰˜Ÿ	™	×,Ñ,Ô-à×-Ñ-¨mÓ<ˆØ×Ñ˜×)Ñ)×3Ñ3´T·]±]×5JÑ5JÔKØ�‰˜×(Ñ(×3Ñ3Ô4à×-Ñ-ˆØ×Ñ˜Ÿ™¬$¯-©-×*>Ñ*>Ô?Ø�‰˜Ÿ™Ô(à Ÿ>™>ÑˆØ×Ñ˜×*Ñ*¬D¯M©M×,AÑ,AÔBØ×Ñ˜×*Ñ*¬D¯M©M×,?Ñ,?Ô@Ø�‰˜×(Ñ(Ô)à"×2Ñ2Ð3IÓJÐØ-×6Ñ6‰ˆØ×Ñ˜×.Ñ.´·±×0DÑ0DÔEØ�‰˜×-Ñ-Ô.à×"Ñ" 5Ó)×.Ñ.ˆØ×Ñ˜×*Ñ*¬D¯M©M×,AÑ,AÔBØ×#Ñ# EÓ*×<Ñ<ˆØ×Ñ˜×+Ñ+¬T¯]©]×-CÑ-CÕDr5   c                 ó  • U R                  5       nUR                  S5      nUR                  u  p4U R                  UR                  S5        U R                  [        5         UR                    S S S 5        g ! , (       d  f       g = f)Nr–  rg   )rC   r˜  r‡  r7   Úelement_countró   rù  )r2   rB   rˆ  rŽ   Ú
array_types        r   Útest_element_countÚTestTypeRef.test_element_count�  se   € Ø�k‰k‹mˆØ×.Ñ.Ð/AÓBÐØ(×1Ñ1‰ˆØ×Ñ˜×1Ñ1°1Ô5Ø×ÑœzÕ*Ø×*Ò*÷ +×*Ö*ús   Á!A7Á7
Bc                 ó€  • U R                  5       nUR                  S5      nUR                  S5      nUR                  u  pEUR                  u  pgU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        g )Nr–  r‹  é@   é€   r   )rC   r˜  r‡  r7   Ú
type_width)r2   rB   rˆ  r™  Úinteger_typer¡  rŽ   rš  s           r   Útest_type_widthÚTestTypeRef.test_type_width˜  s§   € Ø�k‰k‹mˆØ×.Ñ.Ð/AÓBÐØ"×2Ñ2Ð3IÓJÐØ#3×#<Ñ#<Ñ ˆØ-×6Ñ6‰ˆØ×Ñ˜×0Ñ0°"Ô5Ø×Ñ˜×/Ñ/°Ô8ð 	×ÑÐ)×4Ñ4°aÔ8Ø×Ñ˜×.Ñ.°Õ2r5   c                 óV  • U R                  [        5      nUR                  S5      nUR                  nU R	                  UR
                  5        U R                  [        5      nUR                  S5      nUR                  nU R                  UR
                  5        U R	                  UR                  R                  5        U R                  [        5       nUR                  R
                    S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)NÚvarargr�  zType ptr is not a function)rC   Úasm_vararg_declarerŽ  r1  r  Úis_function_varargr  r  r0  r  ró   rù  rö   r©   rõ   )r2   rB   rÄ   Údecltyperú  s        r   Útest_vararg_functionÚ TestTypeRef.test_vararg_function¥  sØ   € à�k‰kÔ,Ó-ˆØ×Ñ Ó)ˆØ×)Ñ)ˆØ�‰˜×3Ñ3Ô4à�k‰kœ/Ó*ˆØ×Ñ Ó&ˆØ×)Ñ)ˆØ×Ñ˜×4Ñ4Ô5ð 	�‰˜Ÿ	™	×,Ñ,Ô-Ø×ÑœzÔ*¨fØ�I‰I×(Ò(÷ +à�‰Ð2´C¸×8HÑ8HÓ4IÕJ÷ +Õ*ús   ÃDÄ
D(c                 ó8  • U R                  5       n[        UR                  5      u  nU R                  UR                  R
                  [        R                  R                  5        U R                  UR                  R                  5        UR                  nU R                  UR
                  [        R                  R                  5        U R                  UR                  5        UR                  [        R                   5      nU R#                  U[        R$                  5        U R                  UR&                  [        R(                  " S5      [        R(                  " S5      45        U R                  UR*                  [        R(                  " S5      5        g ©Nrü   )rC   r´  r³  r7   r0  rŒ  r*   r�  rŽ  r  r'  r1  rQ  r  Úas_irr	   Úglobal_contextr  r¸   r½   rþ   Úreturn_type)r2   rB   r  rÃ   Útyirs        r   Útest_function_typeref_as_irÚ'TestTypeRef.test_function_typeref_as_ir·  s  € Ø�k‰k‹mˆä�C—M‘MÓ"‰ˆà×Ñ˜Ÿ™×*Ñ*¬D¯M©M×,AÑ,AÔBØ×Ñ˜Ÿ™×,Ñ,Ô-à×#Ñ#ˆØ×Ñ˜Ÿ™¬¯©×)?Ñ)?Ô@Ø�‰˜×(Ñ(Ô)à�z‰zœ"×+Ñ+Ó,ˆØ×Ñ˜d¤B§O¡OÔ4Ø×Ñ˜Ÿ™¤R§Z¢Z°£^´R·Z²ZÀ³^Ð$DÔEØ×Ñ˜×)Ñ)¬2¯:ª:°b«>Õ:r5   c                 ó¤  • [         R                  " [         R                  " 5       S5      n[         R                  " 5       n[         R                  " X!S5      nU R                  [        U5      5      nUR                  S5      nUR                  nU R                  UR                  UR                  [         R                  5      R                  5        g )NrY   rý   )r	   r¸   ÚVoidTyper¹   rº   rC   r©   rŽ  r1  r7   r¶  r´  rµ  )r2   rÃ   Úirmodr  rB   Úgvtys         r   Útest_void_typeref_as_irÚ#TestTypeRef.test_void_typeref_as_irÈ  s�   € ä�ŠœrŸ{š{›}¨bÓ1ˆÜ—	’	“ˆÜ�[Š[˜ eÓ,ˆØ�k‰kœ#˜e›*Ó%ˆØ×Ñ˜eÓ$ˆØ×#Ñ#ˆØ×Ñ˜×)Ñ)ØŸ™¤B×$5Ñ$5Ó6×BÑBõ	Dr5   c           	      óÔ  ^• SSK Jn  [        R                  " 5       mSS1n0 nS nXCS'   S nXSS'   S	 nXcS
'   S nXsS'   U4S jnXƒS'   S n	X“S'   S n
X£S'   S nX³S'   U R	                  UR                  5        Vs1 s H  oÌR                  iM     sn[        UR                  5       5      [        U5      -  5        UR                  5        GH  u  pÞUR                  U;   a  M  X=R                     " 5        HÓ  nU R                  U< SU 35         [        R                  " TS9n[        R                  " UUSS9  [        U5      n[        R                  " U5      nUR                  S5      nUR                   nUR#                  [        R                  " 5       5      nU R	                  UU5        U R%                  UU5        S S S 5        MÕ     GM     g s  snf ! , (       d  f       Mñ  = f)Nr   )Ú_TypeKindToIRTyperQ  Úvoidc               3   ó:   #   • [         R                  " 5       v •  g 7fr)   )r	   ÚHalfTyperY   r5   r   Ú
maker_halfÚ9TestTypeRef.test_global_typeref_as_ir.<locals>.maker_halfÞ  s   é € Ü—+’+“-Óùó   ‚Úhalfc               3   ó:   #   • [         R                  " 5       v •  g 7fr)   )r	   r·   rY   r5   r   Úmaker_floatÚ:TestTypeRef.test_global_typeref_as_ir.<locals>.maker_floatã  s   é € Ü—,’,“.Ó ùrÇ  Úfloatc               3   ó:   #   • [         R                  " 5       v •  g 7fr)   )r	   r¶   rY   r5   r   Úmaker_doubleÚ;TestTypeRef.test_global_typeref_as_ir.<locals>.maker_doubleè  s   é € Ü—-’-“/Ó!ùrÇ  Údoublec               3   ó<   #   • [         R                  " S5      v •  g 7fr³  )r	   rþ   rY   r5   r   Úmaker_integerÚ<TestTypeRef.test_global_typeref_as_ir.<locals>.maker_integerí  s   é € Ü—*’*˜R“.Ó ùs   ‚r‘  c               3   ó8  >#   • [         R                  " [         R                  " S5      5      v •  TR                  S5      R	                  5       v •  TR                  S5      n U R                  [         R                  " S5      5        U R	                  5       v •  g 7f)Nr,  ÚmyclassÚmyclass2)r	   ÚPointerTyperþ   Úget_identified_typeÚ
as_pointerÚset_body)rÖ  Úctxs    €r   Úmaker_pointerÚ<TestTypeRef.test_global_typeref_as_ir.<locals>.maker_pointerò  sl   øé € Ü—.’.¤§¢¨A£Ó/Ò/à×)Ñ)¨)Ó4×?Ñ?ÓAÒAà×.Ñ.¨zÓ:ˆHØ×ÑœbŸjšj¨›mÔ,Ø×%Ñ%Ó'Ó'ùs   ƒBBrŽ  c               3   óf   #   • [         R                  " [         R                  " S5      S5      v •  g 7f)Nr,  é{   )r	   Ú	ArrayTyperþ   rY   r5   r   Úmaker_arrayÚ:TestTypeRef.test_global_typeref_as_ir.<locals>.maker_arrayý  s   é € Ü—,’,œrŸzšz¨!›}¨cÓ2Ó2ùs   ‚/1r’  c               3   ód   #   • [         R                  " [         R                  " 5       S5      v •  g 7f)Nrg   )r	   Ú
VectorTyper·   rY   r5   r   Úmaker_vectorÚ;TestTypeRef.test_global_typeref_as_ir.<locals>.maker_vector  s   é € Ü—-’-¤§¢£°Ó2Ó2ùs   ‚.0r”  c               3   ó  #   • [         R                  " [         R                  " 5       [         R                  " S5      /5      v •  [         R                  " [         R                  " 5       [         R                  " S5      /SS9v •  g 7f)Nr¥  T©Úpacked)r	   ÚLiteralStructTyper·   rþ   rY   r5   r   Úmaker_structÚ;TestTypeRef.test_global_typeref_as_ir.<locals>.maker_struct  sT   é € Ü×&Ò&¬¯ª«¼¿
º
À2»Ð'GÓHÒHÜ×&Ò&¬¯ª«¼¿
º
À2»Ð'GØ.2ñ4ó 4ùs   ‚BBr�  z -> rç  r�  rµ   )Úllvmlite.binding.typerefrÁ  r	   ÚContextr7   ÚkeysrG   r~   r-  ÚsubTestr¹   ÚGlobalVariabler©   r*   r?   rF   r1  r´  r  )r2   rÁ  ÚskippedÚmakersrÅ  rÊ  rÎ  rÒ  rÜ  rá  rå  rë  ÚxrŒ  ÚirtypeÚtyr¼  r@   rB   r�  r½  r`  rÛ  s                         @r   Útest_global_typeref_as_irÚ%TestTypeRef.test_global_typeref_as_irÓ  sÓ  ø€ Ý>Ü�jŠj‹lˆð Øð
ˆð
 ˆò	 ð $ˆv‰ò	!ð &ˆw‰ò	"ð (ˆxÑò	!ð *ˆyÑõ	(ð *ˆyÑò	3ð &ˆw‰ò	3ð (ˆxÑò	4ð
 (ˆxÑð 	×ÑÐ*;×*@Ñ*@Ô*BÓCÒ*B QŸ&œ&Ñ*BÑCÜ˜VŸ[™[›]Ó+¬c°'«lÑ:ô	<ð "3×!8Ñ!8×!:ÑˆIØ�~‰~ Ó(ÙØŸ^™^Ò,Ö.�Ø—\‘\ Y¡M°°b°TÐ":Õ;ÜŸIšI¨cÑ2�EÜ×%Ò% e¨R°dÒ;Ü˜e›*�CÜ×-Ò-¨cÓ2�CØ×0Ñ0°Ó6�BØ×/Ñ/�DØŸ*™*¤R§Z¢Z£\Ó2�CØ×$Ñ$ S¨"Ô-Ø×)Ñ)¨#¨vÔ6÷ <Ñ;ô /ò ";ùò	 D÷ <Ö;ús   Á;GÄB1GÇ
G'c                 óP  • [         R                  " U5      nUR                  U5      nUR                  n[        R
                  " 5       nUR                  US9n[        R                  " US9n[        R                  " X‡UR                  S9n	[        R                  " X‡SS9n
[        R                  " U
R                  5       5      nUR                  XšR                  5        UR                  5         [         R                  " [        U5      5      nU R!                  UR                  U	R                  5      R"                  SS9  UR%                  USS9  U R'                  [)        [+        UR,                  5      5      [)        [+        UR,                  5      5      S	-   S
S9  U R/                  UR                  U	R                  5      R"                  SS9  U R'                  UR                  U	R                  5      R                  UR                  U
R                  5      R                  SS9  g )N)Úir_ctxrç  rµ   Úwrapperzdeclfn must not have a body)r«  TrÏ  rf   z$the only new function is the wrapperzdeclfn must have a body nowz.declfn and wrapfn must have the same llvm Type)r*   r?   rŽ  r1  r	   rî  r´  r¹   rº   rG   r¼   r»   Úcallr½   Úret_voidr©   r  r  rÉ  r7   rƒ   r´  r³  r  )r2   r@   Útarget_symbolrB   ÚcppfnÚ	cppfntypeÚ
my_contextrö  Úwrapper_modÚdeclfnÚwrapfnrÆ   Únew_mods                r   Ú!_check_typeref_as_ir_for_wrappersÚ-TestTypeRef._check_typeref_as_ir_for_wrappers"  s·  € ä×!Ò! #Ó&ˆØ× Ñ  Ó/ˆØ×+Ñ+ˆ	ô —Z’Z“\ˆ
Ø�_‰_ Jˆ_Ð/ˆô —i’i¨
Ñ3ˆä—’˜[°5·:±:Ñ>ˆä—’˜[°9Ñ=ˆÜ—,’,˜v×8Ñ8Ó:Ó;ˆà�‰�VŸ[™[Ô)Ø×ÑÔä×%Ò%¤c¨+Ó&6Ó7ˆØ�‰˜×,Ñ,¨V¯[©[Ó9×HÑHØ9ð 	ñ 	;ð 	�‰˜ dˆÑ+Ø×ÑœœT '×"3Ñ"3Ó4Ó5ÜœT #§-¡-Ó0Ó1°AÑ5ØCð 	ñ 	Eð 	×Ñ˜×-Ñ-¨f¯k©kÓ:×IÑIØ:ð 	ñ 	<à×Ñ˜×-Ñ-¨f¯k©kÓ:×LÑLØ ×-Ñ-¨f¯k©kÓ:×LÑLØMð 	ò 	Or5   c                 ó0   • U R                  [        S5        g)zdExercise extracting C++ defined class types.
Contains both opaque and non-opaque class definitions.
Ú_Z3fooP7MyClass14MyClassDefinedN)r  Úasm_cpp_classr1   s    r   Ú,test_typeref_as_ir_for_wrappers_of_cpp_classÚ8TestTypeRef.test_typeref_as_ir_for_wrappers_of_cpp_classE  s   € ð 	×.Ñ.ÜØ-õ	
r5   c                 ó0   • U R                  [        S5        g)z�Exercise extracting C++ struct types that are passed as vectors.

IA64 ABI on x86_64 will put struct with two floats as
a vector of two floats.
Ú_Z3foo8Vector2DPS_N)r  Úasm_cpp_vectorr1   s    r   Ú4test_typeref_as_ir_for_wrappers_of_cpp_vector_structÚ@TestTypeRef.test_typeref_as_ir_for_wrappers_of_cpp_vector_structN  s   € ð 	×.Ñ.ÜØ õ	
r5   rY   N)rS   rT   rU   rV   rm  r�  r¢  r©  r°  r¸  r¾  r÷  r  r  r  rX   rY   r5   r   r„  r„  d  s@   † ò8òEò:+ò3òKò$;ò"	DòM7ò^!OòF
õ	
r5   r„  c                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
Ú
TestTargetiZ  c                 ó‚  • [         R                  R                  nU R                  [        5       nU" S5        S S S 5        U R                  S[        WR                  5      5        [         R                  " 5       nU" U5      nU R                  UR                  U5        UR                  5         g ! , (       d  f       N}= f)NrÞ  z(No available targets are compatible with)r*   rM   r§   ró   r¨   rö   r©   rõ   r>   r7   r<   rp  )r2   rÂ  r÷   r<   rP   s        r   Útest_from_tripleÚTestTarget.test_from_triple\  s…   € Ü�K‰K×#Ñ#ˆØ×Ñœ|Ô,°ÙˆhŒK÷ -à�‰Ð@Ü˜"Ÿ,™,Ó'ô	)ä×(Ò(Ó*ˆÙ�6“ˆØ×Ñ˜Ÿ™¨Ô/Ø�‰�÷ -Õ,ús   °	B0Â0
B>c                 óæ   • [         R                  R                  [         R                  " 5       5      nUR	                  SSSSS5        [         R
                  " 5       nUR	                  USSSS5        g )NrÐ   rf   r$  )r*   rM   r§   r>   rO   r8  )r2   rP   r9  s      r   Útest_create_target_machineÚ%TestTarget.test_create_target_machineg  sY   € Ü—‘×(Ñ(¬×)@Ò)@Ó)BÓCˆà×$Ñ$ R¨¨Q°	¸9ÔEä×$Ò$Ó&ˆØ×$Ñ$ S¨"¨a°¸IÕFr5   c                 ó0  • [         R                  R                  [         R                  " 5       5      n[         R                  R	                  5       nU R                  UR                  [        5        U R                  UR                  UR                  5        g r)   )	r*   rM   r§   r>   rN   r  rG   r©   r7   ©r2   ÚtÚus      r   r{  ÚTestTarget.test_nameo  s]   € Ü�K‰K×#Ñ#¤D×$;Ò$;Ó$=Ó>ˆÜ�K‰K×+Ñ+Ó-ˆØ×Ñ˜aŸf™f¤cÔ*Ø×Ñ˜Ÿ™ §¡Õ(r5   c                 ó0  • [         R                  R                  [         R                  " 5       5      n[         R                  R	                  5       nU R                  UR                  [        5        U R                  UR                  UR                  5        g r)   )	r*   rM   r§   r>   rN   r  Údescriptionr©   r7   r  s      r   Útest_descriptionÚTestTarget.test_descriptionu  s]   € Ü�K‰K×#Ñ#¤D×$;Ò$;Ó$=Ó>ˆÜ�K‰K×+Ñ+Ó-ˆØ×Ñ˜aŸm™m¬SÔ1Ø×Ñ˜Ÿ™¨¯©Õ6r5   c                 óî   • [         R                  R                  [         R                  " 5       5      n[	        U5      nU R                  UR                  U5        U R                  UR                  U5        g r)   )r*   rM   r§   r>   r©   rö   rG   r   )r2   rP   rø   s      r   rm  ÚTestTarget.test_str{  sN   € Ü—‘×(Ñ(¬×)@Ò)@Ó)BÓCˆÜ�‹KˆØ�‰�f—k‘k 1Ô%Ø�‰�f×(Ñ(¨!Õ,r5   c                 ó,  • S[         R                  R                  SSSSSSS94S	[         R                  R                  SSSSSSS94S
[         R                  R                  SSSSSSS94S[         R                  R                  SSSSSSS94S[         R                  R                  SSSSSSS94S[         R                  R                  SSSSSSS94S[         R                  R                  SSSSSSS94S[         R                  R                  SSSSSSS94S[         R                  R                  S SS!S"SS#S94S$[         R                  R                  S%SSS&SS'S94/
nU H.  nUu  p4[         R                  " U5      nU R	                  XT5        M0     g )(Nzx86_64-scei-ps4Úx86_64rÐ   ÚsceiÚps4ÚunknownÚELF)ÚArchÚSubArchÚVendorÚOSÚEnvÚObjectFormatzx86_64-sie-ps4zpowerpc-dunno-notsureÚpowerpczpowerpcspe-unknown-freebsdÚspeÚfreebsdzarmv6hl-none-linux-gnueabiÚarmÚv6hlr\   Úgnueabizi686-unknown-linux-gnuÚi386Úgnuzi686-apple-macosxÚappleÚmacosxÚMachOzi686-dunno-win32ÚwindowsÚmsvcÚCOFFzs390x-ibm-zosÚs390xÚibmÚzosÚGOFFzwasm64-wasiÚwasm64ÚwasiÚWasm)r*   ÚtargetsÚTripleÚget_triple_partsr7   )r2   ÚcasesÚcaseÚ
triple_strÚ
triple_objr  s         r   Útest_get_parts_from_tripleÚ%TestTarget.test_get_parts_from_triple�  s'  € ð Ü�\‰\× Ñ  h¸Ø(.°5Ø%.¸Uð !ð DðEð Ü�\‰\× Ñ  h¸Ø(.°5Ø%.¸Uð !ð DðEð %Ü�\‰\× Ñ  i¸Ø(1°iØ%.¸Uð !ð DðEð *Ü�\‰\× Ñ  i¸Ø(1°iØ%.¸Uð !ð DðEð *Ü�\‰\× Ñ  e°VØ(1°gØ%.¸Uð !ð DðEð &Ü�\‰\× Ñ  f°bØ(1°gØ%*¸ð !ð @ðAð !Ü�\‰\× Ñ  f°bØ(/°HØ%.¸Wð !ð FðGð  Ü�\‰\× Ñ  f°bØ(1°iØ%+¸&ð !ð BðCð Ü�\‰\× Ñ  g°rØ(-°%Ø%.¸Vð !ð EðFð Ü�\‰\× Ñ  h¸Ø(1°fØ%.¸Vð !ð EðFðK)
ˆóV ˆDØ%)Ñ"ˆJÜ×'Ò'¨
Ó3ˆCà×Ñ˜SÖ-ò	 r5   rY   N)rS   rT   rU   rV   r  r  r{  r!  rm  rM  rX   rY   r5   r   r  r  Z  s!   † ò	òGò)ò7ò-õ1.r5   r  c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚTestTargetDataiµ  c                 ó.   • [         R                  " S5      $ )Nz%e-m:e-i64:64-f80:128-n8:16:32:64-S128)r*   Úcreate_target_datar1   s    r   r&  ÚTestTargetData.target_data·  s   € Ü×&Ò&Ð'NÓOÐOr5   c                 óš   • U R                  5       nU R                  5       nU R                  UR                  UR                  5      S5        g )Nr,  )r&  rH   r7   r/  r0  ©r2   r'  rH   s      r   Útest_get_abi_sizeÚ TestTargetData.test_get_abi_sizeº  s8   € Ø×ÑÓˆØ�y‰y‹{ˆØ×Ñ˜Ÿ™¨¯©Ó3°QÕ7r5   c                 ó  • U R                  5       nU R                  5       nU R                  UR                  UR                  5      S5        U R                  S5      nU R                  UR                  UR                  5      S5        g )Nr¦  r©  r-  )r&  rH   r7   r/  r1  rU  s      r   Útest_get_pointee_abi_sizeÚ(TestTargetData.test_get_pointee_abi_size¿  sg   € Ø×ÑÓˆà�y‰y‹{ˆØ×Ñ˜Ÿ™¨×)?Ñ)?Ó@À!ÔDà�y‰y˜Ó'ˆØ×Ñ˜Ÿ™¨×)?Ñ)?Ó@À"ÕEr5   c                 ó|  • U R                  5       nU R                  S5      nU R                  [        5         UR	                  UR
                  S5        S S S 5        UR                  nU R                  UR	                  US5      S5        U R                  UR	                  US5      S5        g ! , (       d  f       N_= f)Nr©  r   rf   r,  )r&  rH   ró   rù  Úget_element_offsetr0  r1  r7   )r2   r'  rH   Ústruct_types       r   Útest_get_struct_element_offsetÚ-TestTargetData.test_get_struct_element_offsetÈ  s•   € Ø×ÑÓˆØ�y‰y˜Ó'ˆà×ÑœzÕ*Ø×!Ñ! $§)¡)¨QÔ/÷ +ð ×,Ñ,ˆØ×Ñ˜×.Ñ.¨{¸AÓ>ÀÔBØ×Ñ˜×.Ñ.¨{¸AÓ>ÀÕB÷ +Õ*ús   ·B-Â-
B;rY   N)	rS   rT   rU   rV   r&  rV  rY  r^  rX   rY   r5   r   rP  rP  µ  s   † òPò8ò
Fõ	Cr5   rP  c                   ó   • \ rS rSrS rSrg)ÚTestTargetMachineiÔ  c                 ó  • U R                  SS9nUR                  nU R                  5       nUR                  S5      n[        R
                  S:  a  SOSnU R                  UR                  UR                  5      U5        g )NFrK   rH   r+  r¦  r,  )	rQ   r&  rC   rF   rœ   r.  r7   r/  r0  )r2   Útmr'  rB   r3  r6  s         r   Útest_target_data_from_tmÚ*TestTargetMachine.test_target_data_from_tmÖ  sh   € Ø× Ñ  UÐ Ð+ˆØ�^‰^ˆØ�k‰k‹mˆØ×(Ñ(¨Ó0ˆäŸK™K¨'Ó1‘q°qˆØ×Ñ˜Ÿ™¨¯©Ó5°|ÕDr5   rY   N)rS   rT   rU   rV   rd  rX   rY   r5   r   ra  ra  Ô  s   † õEr5   ra  c                   óp   • \ rS rSrS r\R                  " \R                  " 5       S;   S5      S 5       r	Sr
g)Ú	TestDylibià  c                 óŽ   • U R                  [        5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)Nzzzzasdkf;jasd;l)ró   r¨   r*   Úload_library_permanentlyr1   s    r   Útest_bad_libraryÚTestDylib.test_bad_libraryâ  s+   € Ø×Ñœ|Õ,Ü×)Ò)Ð*;Ô<÷ -×,Ö,ús	   –6¶
A)ÚLinuxztest only works on Linuxc                 óF   • [        S5      n[        R                  " U5        g )Nr”   )r   r*   ri  )r2   rm   s     r   Ú	test_libmÚTestDylib.test_libmæ  s   € ô ˜CÓ ˆÜ×%Ò% dÕ+r5   rY   N)rS   rT   rU   rV   rj  rš   r›   r‡   Úsystemrn  rX   rY   r5   r   rg  rg  à  s7   † ò=ð ×Ò˜ŸšÓ*¨iÑ7Ø3ó5ñ,ó5ó,r5   rg  c                   ó&   • \ rS rSrS rS rS rSrg)ÚTestAnalysisií  c                 ó°  • [         R                  " 5       n[         R                  " [         R                  " S5      [         R                  " S5      [         R                  " S5      /5      n[         R                  " XS5      n[         R
                  " UR                  5       5      nUR                  u  pVUR                  XV5      nUR                  U5        U$ )Nrü   rý   )
r	   r¹   r¸   rþ   rº   r¼   r»   r½   r…   r#   )r2   r”   r  r  r  rô  ÚyÚzs           r   Úbuild_ir_moduleÚTestAnalysis.build_ir_moduleî  s‰   € Ü�IŠI‹KˆÜ�_Š_œRŸZšZ¨›^¬b¯jªj¸«n¼b¿jºjÈ»nÐ-MÓNˆÜ�[Š[˜ Ó&ˆÜ�\Š\˜"×/Ñ/Ó1Ó2ˆØ�w‰w‰ˆØ�F‰F�1‹LˆØ
�‰ˆqŒ	Øˆr5   c                 óä   • U R                  5       nUR                  S5      n[        R                  " U5      n[        R                  " USS9nSnU R	                  XS5        U R                  XT5        g )Nrý   F©Ú	show_instz%.5 = add i32 %.1, %.2)rv  Ú
get_globalr*   Úget_function_cfgrö   ÚassertNotIn)r2   rB   rý   Údot_showing_instÚdot_without_instrW  s         r   Útest_get_function_cfg_on_irÚ(TestAnalysis.test_get_function_cfg_on_irø  sa   € Ø×"Ñ"Ó$ˆØ�n‰n˜UÓ#ˆÜ×0Ò0°Ó5ÐÜ×0Ò0°ÀÑFÐØ'ˆØ�‰�dÔ-Ø×Ñ˜Õ0r5   c                 ón  • U R                  5       R                  S5      n[        R                  " USS9n[        R                  " USS9nSnU R	                  XB5        U R	                  XC5        SnU R	                  XR5        U R	                  XS5        SnU R	                  Xb5        U R                  Xc5        g )Nr�  Try  FÚdigraphzCFG for 'sum' functionz%.3 = add i32 %.1, %.2)rC   rŽ  r*   r|  rö   r}  )r2   r  r~  r  ÚprefixÚfnamerW  s          r   Útest_function_cfg_on_llvm_valueÚ,TestAnalysis.test_function_cfg_on_llvm_value	  s—   € Ø—+‘+“-×,Ñ,¨UÓ3ˆÜ×0Ò0°ÀDÑIÐÜ×0Ò0°ÀEÑJÐàˆØ�‰�fÔ/Ø�‰�fÔ/à(ˆØ�‰�eÔ.Ø�‰�eÔ.à'ˆØ�‰�dÔ-Ø×Ñ˜Õ0r5   rY   N)rS   rT   rU   rV   rv  r€  r†  rX   rY   r5   r   rr  rr  í  s   † òò1õ1r5   rr  c                   ó*   • \ rS rSr\S 5       rS rSrg)ÚTestTypeParsingi	  c              #   ó€   #   • [         R                  " 5       nUv •  [        U5      n[        R                  " U5        g 7fr)   )r	   r¹   r©   r*   r?   )r2   rB   r@   s      r   Úcheck_parsingÚTestTypeParsing.check_parsing	  s.   é € ä�iŠi‹kˆð Š	ä�#‹hˆÜ×Ò˜CÕ ùs   ‚<>c                 ór  • U R                  5        n[        R                  " [        R                  " S5      /5      n[        R                  " XS5      n[        R
                  " US/5      Ul        S S S 5        U R                  5        n[        R                  " [        R                  " S5      /SS9n[        R                  " XS5      n[        R
                  " US/5      Ul        S S S 5        U R                  5        n[        R
                  R                  [        R                  " S5      " S5      [        R                  " S5      " S5      /SS9n[        R                  " XR                  S5      nXCl        S S S 5        g ! , (       d  f       GN= f! , (       d  f       Nµ= f! , (       d  f       g = f)Nrü   rý   rf   Trè  rg   )	r‹  r	   rê  rþ   rñ  rÿ   ÚinitializerÚliteral_structr0  )r2   rB   Útypr�  Úconsts        r   Útest_literal_structÚ#TestTypeParsing.test_literal_struct	  sB  € à×ÑÔ! SÜ×&Ò&¬¯
ª
°2«Ð'7Ó8ˆCÜ×"Ò" 3¨UÓ3ˆBäŸ[š[¨¨q¨cÓ2ˆBŒN÷	 "ð ×ÑÔ! SÜ×&Ò&¬¯
ª
°2«Ð'7Ø.2ñ4ˆCä×"Ò" 3¨UÓ3ˆBäŸ[š[¨¨q¨cÓ2ˆBŒN÷ "ð ×ÑÔ! SÜ—K‘K×.Ñ.´·
²
¸2´¸qÓ0AÜ02·
²
¸2´¸qÓ0Að0Cà6:ð /ð <ˆEô ×"Ò" 3¯
©
°EÓ:ˆBØ"ŒN÷ "Ð!÷ "Ö!ú÷ "Õ!ú÷ "Õ!ús&   ‘A FÂ	AFÄ A<F(Æ
FÆ
F%Æ(
F6rY   N)rS   rT   rU   rV   r   r‹  r’  rX   rY   r5   r   r‰  r‰  	  s   † Øñ!ó ð!õ#r5   r‰  c                   ój   • \ rS rSr\R
                  " \R                  " 5       S:H  S5      S 5       rSr	g)ÚTestGlobalConstructorsi7	  ÚDarwinz&__cxa_atexit is broken on OSX in MCJITc                 ó‚  • U R                  [        5      nU R                  U5      nUR                  5         UR	                  5         UR                  S5      n[        R                  " [        R                  5      n[        R                  " X45      nU R                  UR                  R                  S5        UR                  S5      n[        R                  " [        R                  5      " U5      nU R                  U" 5       S5        UR                  5         U R                  UR                  R                  S5        g )Nr¡  r^  rý   r¢  rO  )rC   Úasm_global_ctorsrL   rö  Úrun_static_constructorsÚget_global_value_addressrq  ÚPOINTERr   Úcastr7   Úcontentsr¢  r÷  r   Úrun_static_destructors)r2   rB   rø  Úptr_addrÚptr_tr  Úfoo_addrrý   s           r   r¦  Ú.TestGlobalConstructors.test_global_ctors_dtors8	  sç   € ð
 �k‰kÔ*Ó+ˆØ�X‰X�c‹]ˆØ
×ÑÔà
×"Ñ"Ô$ð ×.Ñ.¨sÓ3ˆÜ—’œvŸ~™~Ó.ˆÜ�kŠk˜(Ó*ˆØ×Ñ˜Ÿ™×+Ñ+¨RÔ0à×*Ñ*¨5Ó1ˆÜ×ÒœvŸ~™~Ô.¨xÓ8ˆØ×Ñ™› Ô#à
×!Ñ!Ô#ð 	×Ñ˜Ÿ™×+Ñ+¨RÕ0r5   rY   N)
rS   rT   rU   rV   rš   rh  r‡   rp  r¦  rX   rY   r5   r   r•  r•  7	  s.   † Ø‡_‚_�X—_’_Ó&¨(Ñ2Ø=ó?ñ1ó?ó1r5   r•  c                   ó`   • \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)ÚTestGlobalVariablesiS	  c                 ó$  • [         R                  " 5       n[         R                  " S5      n[         R                  " X4S5      nXl        [        U5      nU(       a  U R                  SU5        OU R                  SU5        U R                  U5        g )Nrü   rý   Úundef)	r	   r¹   rþ   rñ  rã  r©   rö   r}  rC   )r2   rã  Ú	has_undefrB   r�  r�  r@   s          r   Úcheck_global_variable_linkageÚ1TestGlobalVariables.check_global_variable_linkageT	  si   € ô �iŠi‹kˆÜ�jŠj˜‹nˆÜ×Ò˜s¨Ó/ˆØŒ
Ü�#‹hˆæØ�M‰M˜' 3Õ'à×Ñ˜W cÔ*à�‰�CÕr5   c                 ó&   • U R                  S5        g )Nrá  ©r¨  r1   s    r   Útest_internal_linkageÚ)TestGlobalVariables.test_internal_linkageh	  ó   € Ø×*Ñ*¨:Õ6r5   c                 ó&   • U R                  S5        g )NÚcommonr«  r1   s    r   Útest_common_linkageÚ'TestGlobalVariables.test_common_linkagek	  s   € Ø×*Ñ*¨8Õ4r5   c                 ó$   • U R                  SSS9  g )Nrâ  F©r§  r«  r1   s    r   Útest_external_linkageÚ)TestGlobalVariables.test_external_linkagen	  s   € Ø×*Ñ*¨:ÀÐ*ÒGr5   c                 ó&   • U R                  S5        g )NÚavailable_externallyr«  r1   s    r   Ú!test_available_externally_linkageÚ5TestGlobalVariables.test_available_externally_linkageq	  s   € Ø×*Ñ*Ð+AÕBr5   c                 ó&   • U R                  S5        g )NÚprivater«  r1   s    r   Útest_private_linkageÚ(TestGlobalVariables.test_private_linkaget	  s   € Ø×*Ñ*¨9Õ5r5   c                 ó&   • U R                  S5        g )NÚlinkoncer«  r1   s    r   Útest_linkonce_linkageÚ)TestGlobalVariables.test_linkonce_linkagew	  r®  r5   c                 ó&   • U R                  S5        g )NÚweakr«  r1   s    r   Útest_weak_linkageÚ%TestGlobalVariables.test_weak_linkagez	  s   € Ø×*Ñ*¨6Õ2r5   c                 ó&   • U R                  S5        g )NÚ	appendingr«  r1   s    r   Útest_appending_linkageÚ*TestGlobalVariables.test_appending_linkage}	  s   € Ø×*Ñ*¨;Õ7r5   c                 ó$   • U R                  SSS9  g )NÚextern_weakFr´  r«  r1   s    r   Útest_extern_weak_linkageÚ,TestGlobalVariables.test_extern_weak_linkage€	  s   € Ø×*Ñ*¨=ÀEÐ*ÒJr5   c                 ó&   • U R                  S5        g )NÚlinkonce_odrr«  r1   s    r   Útest_linkonce_odr_linkageÚ-TestGlobalVariables.test_linkonce_odr_linkageƒ	  s   € Ø×*Ñ*¨>Õ:r5   c                 ó&   • U R                  S5        g )NÚweak_odrr«  r1   s    r   Útest_weak_odr_linkageÚ)TestGlobalVariables.test_weak_odr_linkage†	  r®  r5   rY   N)T)rS   rT   rU   rV   r¨  r¬  r±  rµ  r¹  r½  rÁ  rÅ  rÉ  rÍ  rÑ  rÕ  rX   rY   r5   r   r¤  r¤  S	  sA   † ôò(7ò5òHòCò6ò7ò3ò8òKò;õ7r5   r¤  Úx86zonly on x86c                   ó   • \ rS rSrS rSrg)ÚTestInlineAsmiŠ	  c                 ó¸   • [         R                  " 5         U R                  [        S9nU R	                  SS9nUR                  U5      nU R                  SU5        g )N)r@   FrK   Únop)r*   Úinitialize_native_asmparserrC   rU  rQ   rÜ   rö   )r2   r”   rc  r@   s       r   Útest_inlineasmÚTestInlineAsm.test_inlineasmŒ	  sO   € Ü×(Ò(Ô*Ø�K‰KœMˆKÐ*ˆØ× Ñ  UÐ Ð+ˆØ×Ñ˜qÓ!ˆØ�‰�e˜SÕ!r5   rY   N)rS   rT   rU   rV   rÝ  rX   rY   r5   r   rÙ  rÙ  Š	  s   † õ"r5   rÙ  c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚTestObjectFilei”	  a,  
        ;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                 óÚ  • U R                  SS9nU R                  5       nUR                  U5      n[        R                  R                  U5      nSnSnUR                  5        Hs  nUR                  5       (       d  M  [        UR                  5       5      S:”  d  M9  UR                  5       c  ML  XgR                  5       :  d  Ma  SnUR                  5       n  O   U R                  U5        g )NFrK   r}  r   T)rQ   rC   r_  r*   ÚObjectFileRefÚ	from_dataÚsectionsÚis_textrƒ   ÚdataÚaddressr  )r2   rQ   rB   rÓ  ÚobjÚhas_text_and_dataÚlast_addressrø   s           r   Útest_object_fileÚTestObjectFile.test_object_file£	  s¹   € Ø×,Ñ,°Ð,Ð7ˆØ�k‰k‹mˆØ ×,Ñ,¨SÓ1ˆÜ× Ñ ×*Ñ*¨7Ó3ˆà!ÐØˆØ—‘–ˆAà—	‘	—“Ü˜Ÿ™›“M AÕ%Ø—I‘I“KÓ+Ø §9¡9£;Õ.à$(Ð!Ø Ÿy™y›{�Ùñ  ð 	�‰Ð)Õ*r5   c                 ó²  • U R                  SS9nU R                  5       nUR                  U5      n[        R                  R                  U5      n[        R                  " U R                  U R                  5      U5      nUR                  U5        [        [        [        [        5      " UR                  S5      5      nU R                  U" SS5      S5        g )NFrK   Ú	sum_twicerg   rÈ  r^  )rQ   rC   r_  r*   râ  rã  rf  Úmod_asmrÑ  r   r   r÷  r7   )r2   rQ   rB   rÓ  rè  rL   rî  s          r   rË  Ú#TestObjectFile.test_add_object_file·	  s±   € Ø×,Ñ,°Ð,Ð7ˆØ�k‰k‹mˆØ ×,Ñ,¨SÓ1ˆÜ× Ñ ×*Ñ*¨7Ó3ˆä×(Ò(¨¯©°T·\±\Ó)BØ)7ó9ˆð 	×Ñ˜CÔ äœe¤U¬EÔ2Ø×$Ñ$ [Ó1ó3ˆ	ð 	×Ñ™ 1 a›¨"Õ-r5   c                 ó¬  • U R                  SS9nU R                  5       nUR                  U5      n[        5       u  pE  [        R
                  " US5      nUR                  U5        UR                  5         UR                  5         [        R                  " U R                  U R                  5      U5      nUR                  U5        [        R                  " U5        [        [        [        [        5      " UR!                  S5      5      nU R#                  U" SS5      S5        g ! WR                  5         f = f! [        R                  " U5        f = f)NFrK   rÎ  rî  rg   rÈ  r^  )rQ   rC   r_  r   rt   rÏ  rÐ  Úflushrp  r*   rf  rï  rÑ  rÒ  r   r   r÷  r7   )	r2   rQ   rB   rÓ  rÔ  rÕ  rÂ  rL   rî  s	            r   rÖ  Ú3TestObjectFile.test_add_object_file_from_filesystemÇ	  s  € Ø×,Ñ,°Ð,Ð7ˆØ�k‰k‹mˆØ ×,Ñ,¨SÓ1ˆÜ&›yÑˆ	ð	!ðÜ—I’I˜i¨Ó.�Ø—‘˜Ô Ø—‘”	à—‘”	ä×,Ò,¨T¯[©[¸¿¹Ó-FØ-;ó=ˆCð ×Ñ 	Ô*ä�IŠI�iÔ äœe¤U¬EÔ2Ø×$Ñ$ [Ó1ó3ˆ	ð 	×Ñ™ 1 a›¨"Õ-øð —‘•	ûô �IŠI�iÕ ús   ¿8D& Á7AD; Ä&D8Ä8D; Ä;Ec                 ó†  • [         R                  [        5      n[        R                  R                  U5      nUR                  5        Hu  nUR                  5       (       d  M  U R                  [        UR                  5       5      S5        U R                  UR                  5       R                  5       [        5        Mw     g )Né   )rC  ÚfromhexÚissue_632_elfr*   râ  rã  rä  rå  r7   rƒ   ræ  ÚhexÚissue_632_text)r2   Úelfrè  rø   s       r   Útest_get_section_contentÚ'TestObjectFile.test_get_section_contentá	  sy   € ô �m‰mœMÓ*ˆÜ× Ñ ×*Ñ*¨3Ó/ˆØ—‘–ˆAØ�y‰y�{‹{Ø× Ñ ¤ Q§V¡V£X£°Ô3Ø× Ñ  §¡£§¡£´Ö@ò  r5   rY   N)
rS   rT   rU   rV   rï  rë  rË  rÖ  rû  rX   rY   r5   r   rà  rà  ”	  s   † ð€Gò+ò(.ò .õ4Ar5   rà  c                   ó   • \ rS rSrS rSrg)ÚTestLLVMLockCallbacksiì	  c                 óÎ  ^• / mU4S jnU4S jn[         R                  R                  X5        U R                  T5        [         R                  " 5         U R                  ST5        U R                  ST5        [         R                  R                  X5        U R                  [        5         [         R                  R                  X5        S S S 5        g ! , (       d  f       g = f)Nc                  ó(   >• T R                  S5        g )NÚacqr;  ©Úeventss   €r   r  Ú6TestLLVMLockCallbacks.test_lock_callbacks.<locals>.acqð	  ó   ø€ Ø�M‰M˜%Õ r5   c                  ó(   >• T R                  S5        g )NÚrelr;  r  s   €r   r  Ú6TestLLVMLockCallbacks.test_lock_callbacks.<locals>.reló	  r  r5   r  r  )	r*   r   Úregister_lock_callbackr  Úcreate_new_module_pass_managerrö   Úunregister_lock_callbackró   rù  )r2   r  r  r  s      @r   Útest_lock_callbacksÚ)TestLLVMLockCallbacks.test_lock_callbacksí	  s    ø€ Øˆõ	!õ	!ô 	�‰×'Ñ'¨Ô1ð 	×Ñ˜Ô ä×+Ò+Ô-à�‰�e˜VÔ$Ø�‰�e˜VÔ$ô 	�‰×)Ñ)¨#Ô3ð ×ÑœzÕ*Ü�H‰H×-Ñ-¨cÔ7÷ +×*Ö*ús   Â- CÃ
C$rY   N)rS   rT   rU   rV   r  rX   rY   r5   r   rþ  rþ  ì	  s   † õ8r5   rþ  c                   óV   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)ÚTestPipelineTuningOptionsi	
  c                 ó,   • [         R                  " 5       $ r)   )r*   Úcreate_pipeline_tuning_optionsr1   s    r   ÚptoÚTestPipelineTuningOptions.pto
  ó   € Ü×2Ò2Ó4Ð4r5   c                 óD   • U R                  5       nUR                  5         g r)   )r  rp  ©r2   r  s     r   rt  Ú$TestPipelineTuningOptions.test_close
  s   € Ø�h‰h‹jˆØ�	‰	�r5   c                 óÌ   • U R                  5       nU R                  UR                  [        5        [	        S5       H%  nX!l        U R                  UR                  U5        M'     g r!  )r  r  Úspeed_levelrh  rR  r7   ©r2   r  r¸  s      r   Útest_speed_levelÚ*TestPipelineTuningOptions.test_speed_level
  sH   € Ø�h‰h‹jˆØ×Ñ˜cŸo™o¬sÔ3Ü�q–ˆAØŒOØ×Ñ˜SŸ_™_¨aÖ0ò r5   c                 óÌ   • U R                  5       nU R                  UR                  [        5        [	        S5       H%  nX!l        U R                  UR                  U5        M'     g ©NrÈ  )r  r  Ú
size_levelrh  rR  r7   r  s      r   Útest_size_levelÚ)TestPipelineTuningOptions.test_size_level
  sH   € Ø�h‰h‹jˆØ×Ñ˜cŸn™n¬cÔ2Ü�q–ˆAØŒNØ×Ñ˜SŸ^™^¨QÖ/ò r5   c                 ó‚   • U R                  5       nU R                  UR                  [        5        S H	  nX!l        M     g )N)é   éP   i^  )r  r  Úinlining_thresholdrh  r  s      r   Útest_inlining_thresholdÚ1TestPipelineTuningOptions.test_inlining_threshold 
  s3   € Ø�h‰h‹jˆØ×Ñ˜c×4Ñ4´cÔ:ÛˆAØ%&Ö"ò r5   c                 óº   • U R                  5       nU R                  UR                  [        5        S H%  nX!l        U R	                  UR                  U5        M'     g ©N)TF)r  r  Úloop_interleavingr.  r7   ©r2   r  rÈ   s      r   Útest_loop_interleavingÚ0TestPipelineTuningOptions.test_loop_interleaving&
  óI   € Ø�h‰h‹jˆØ×Ñ˜c×3Ñ3´TÔ:ÛˆAØ$%Ô!Ø×Ñ˜S×2Ñ2°AÖ6ò r5   c                 óº   • U R                  5       nU R                  UR                  [        5        S H%  nX!l        U R	                  UR                  U5        M'     g r)  )r  r  Úloop_vectorizationr.  r7   r+  s      r   Útest_loop_vectorizationÚ1TestPipelineTuningOptions.test_loop_vectorization-
  sI   € Ø�h‰h‹jˆØ×Ñ˜c×4Ñ4´dÔ;ÛˆAØ%&Ô"Ø×Ñ˜S×3Ñ3°QÖ7ò r5   c                 óº   • U R                  5       nU R                  UR                  [        5        S H%  nX!l        U R	                  UR                  U5        M'     g r)  )r  r  Úslp_vectorizationr.  r7   r+  s      r   Útest_slp_vectorizationÚ0TestPipelineTuningOptions.test_slp_vectorization4
  r.  r5   c                 óº   • U R                  5       nU R                  UR                  [        5        S H%  nX!l        U R	                  UR                  U5        M'     g r)  )r  r  Úloop_unrollingr.  r7   r+  s      r   Útest_loop_unrollingÚ-TestPipelineTuningOptions.test_loop_unrolling;
  sI   € Ø�h‰h‹jˆØ×Ñ˜c×0Ñ0´$Ô7ÛˆAØ!"ÔØ×Ñ˜S×/Ñ/°Ö3ò r5   c                 óü   • U R                  5       nU R                  [        5         SUl        S S S 5        U R                  [        5         SUl        S S S 5        g ! , (       d  f       N4= f! , (       d  f       g = f)Nr¦  r}  )r  ró   rù  r  r  s     r   Útest_speed_level_constraintsÚ6TestPipelineTuningOptions.test_speed_level_constraintsB
  sT   € Ø�h‰h‹jˆØ×ÑœzÕ*ØˆCŒO÷ +à×ÑœzÕ*Ø ˆCŒO÷ +Ð*÷ +Õ*úç*Õ*ús   ¦AÁA-Á
A*Á-
A;c                 óv  • U R                  5       nU R                  [        5         SUl        S S S 5        U R                  [        5         SUl        S S S 5        U R                  [        5         SUl        SUl        S S S 5        g ! , (       d  f       N`= f! , (       d  f       NL= f! , (       d  f       g = f)NrÈ  r}  rg   )r  ró   rù  r  r  r  s     r   Útest_size_level_constraintsÚ5TestPipelineTuningOptions.test_size_level_constraintsI
  s|   € Ø�h‰h‹jˆØ×ÑœzÕ*ØˆCŒN÷ +à×ÑœzÕ*Ø ˆCŒO÷ +à×ÑœzÕ*ØˆCŒOØˆCŒN÷ +Ð*÷	 +Õ*úç*Õ*úç*Õ*ús#   ¦BÁBÁ0B*Â
BÂ
B'Â*
B8rY   N)rS   rT   rU   rV   r  rt  r  r   r&  r,  r1  r5  r9  r<  r?  rX   rY   r5   r   r  r  	
  s9   † ò5òò1ò0ò'ò7ò8ò7ò4ò!õr5   r  c                   ó   • \ rS rSrSS jrSrg)ÚNewPassManagerMixiniT
  c                 ó|   • U R                  SS9n[        R                  " X5      n[        R                  " X45      nU$ )NFrK   )rQ   r*   r  Úcreate_pass_builder)r2   r  r  rc  r  Úpbs         r   rE  ÚNewPassManagerMixin.pbV
  s:   € Ø× Ñ  UÐ Ð+ˆÜ×1Ò1°+ÓJˆÜ×%Ò% bÓ.ˆØˆ	r5   rY   N)r   r   )rS   rT   rU   rV   rE  rX   rY   r5   r   rB  rB  T
  s   † ÷r5   rB  c                   óD   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)ÚTestPassBuilderi]
  c                 óD   • U R                  5       nUR                  5         g r)   )rE  rp  )r2   rE  s     r   rt  ÚTestPassBuilder.test_close_
  s   € Ø�W‰W‹YˆØ
�‰�
r5   c                 óâ   • U R                  SS9n[        R                  " SS5      nSUl        SUl        SUl        SUl        SUl        [        R                  " X5      nUR                  5         g )NFrK   rÈ  r   rg   T)
rQ   r*   r  r%  r*  r0  r4  r8  rD  rp  )r2   rc  r  rE  s       r   Útest_ptoÚTestPassBuilder.test_ptoc
  sh   € Ø× Ñ  UÐ Ð+ˆÜ×1Ò1°!°QÓ7ˆØ!"ˆÔØ $ˆÔØ!%ˆÔØ $ˆÔØ"ˆÔÜ×%Ò% bÓ.ˆØ
�‰�
r5   c                 ó¤   • U R                  5       nUR                  5       nUR                  U R                  5       U5        UR	                  5         g r)   )rE  ÚgetModulePassManagerÚrunrC   rp  )r2   rE  Úmpms      r   Útest_get_module_pass_managerÚ,TestPassBuilder.test_get_module_pass_managern
  s8   € Ø�W‰W‹YˆØ×%Ñ%Ó'ˆØ�‰�—‘“˜rÔ"Ø
�‰�
r5   c                 óÂ   • U R                  5       nUR                  5       nUR                  U R                  5       R	                  S5      U5        UR                  5         g r–  )rE  ÚgetFunctionPassManagerrP  rC   rŽ  rp  )r2   rE  Úfpms      r   Útest_get_function_pass_managerÚ.TestPassBuilder.test_get_function_pass_managert
  sC   € Ø�W‰W‹YˆØ×'Ñ'Ó)ˆØ�‰�—‘“×*Ñ*¨5Ó1°2Ô6Ø
�‰�
r5   c                 ó  ^ • U 4S jnU" S5      nU" S5      nT R                  U[        5        T R                  U[        5        T R                  UR                  S5      S5        T R                  UR                  S5      S5        g)z:Test pass timing reports for O3 and O0 optimization levelsc                 óê   >• TR                  5       nTR                  U SS9nUR                  5         UR                  5       nUR	                  X5        UR                  5       nUR                  5         U$ ©Nr   ©r  r  )rC   rE  Ústart_pass_timingrO  rP  Úfinish_pass_timingrp  )r  rB   rE  rQ  Úreportr2   s        €r   Úrun_with_timingÚ9TestPassBuilder.test_time_passes.<locals>.run_with_timing|
  sb   ø€ Ø—+‘+“-ˆCØ—‘ [¸Q�Ð?ˆBØ× Ñ Ô"Ø×)Ñ)Ó+ˆCØ�G‰G�CÔØ×*Ñ*Ó,ˆFØ�H‰HŒJØˆMr5   rÈ  r   zPass execution timing reportrf   N)r  r©   r7   Úcount)r2   r`  Ú	report_O3Ú	report_O0s   `   r   Útest_time_passesÚ TestPassBuilder.test_time_passesz
  sr   ø€ õ	ñ $ AÓ&ˆ	Ù# AÓ&ˆ	à×Ñ˜i¬Ô-Ø×Ñ˜i¬Ô-Ø×Ñ˜Ÿ™Ð)GÓHÈ!ÔLØ×Ñ˜Ÿ™Ð)GÓHÈ!ÕLr5   c                 ó  • U R                  5       nU R                  5       nUR                  5       nUR                  X5        UR	                  5         UR                  5       nUR                  5         U R                  U5        g r)   )rC   rE  rO  rP  r]  r^  rp  r  )r2   rB   rE  rQ  r_  s        r   Útest_empty_reportÚ!TestPassBuilder.test_empty_reportŽ
  sc   € Ø�k‰k‹mˆØ�W‰W‹YˆØ×%Ñ%Ó'ˆØ�‰�ÔØ
×ÑÔØ×&Ñ&Ó(ˆØ
�‰Œ
Ø×Ñ˜Õ r5   c                 óf  • U R                  5       nU R                  5       nUR                  5         UR                  5       nUR	                  X5        UR                  5         U R                  [        S5         UR                  5         S S S 5        UR                  5         g ! , (       d  f       N= f)Nzonly be done once)	rC   rE  r]  rO  rP  r^  rG  r¨   rp  ©r2   rB   rE  rQ  s       r   Útest_multiple_timers_errorÚ*TestPassBuilder.test_multiple_timers_error˜
  s€   € Ø�k‰k‹mˆØ�W‰W‹YˆØ
×ÑÔØ×%Ñ%Ó'ˆØ�‰�ÔØ
×ÑÔØ×#Ñ#¤LÐ2EÕFØ× Ñ Ô"÷ Gà
�‰�
÷ GÕFús   Á8B"Â"
B0c                 ó&  • U R                  5       nU R                  5       nUR                  5       nUR                  X5        U R	                  [
        S5         UR                  5         S S S 5        UR                  5         g ! , (       d  f       N= f)Nznot enabled)rC   rE  rO  rP  rG  r¨   r^  rp  rk  s       r   Útest_empty_report_errorÚ'TestPassBuilder.test_empty_report_error£
  sg   € Ø�k‰k‹mˆØ�W‰W‹YˆØ×%Ñ%Ó'ˆØ�‰�ÔØ×#Ñ#¤L°-Õ@Ø×!Ñ!Ô#÷ Aà
�‰�
÷ AÕ@ús   ÁBÂ
BrY   N)rS   rT   rU   rV   rt  rL  rR  rW  re  rh  rl  ro  rX   rY   r5   r   rH  rH  ]
  s+   † òò	òòòMò(!ò	õr5   rH  c                   óD   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)ÚTestNewModulePassManageri­
  c                 ó,   • [         R                  " 5       $ r)   )r*   r
  r1   s    r   ÚpmÚTestNewModulePassManager.pm®
  r  r5   c                 ó¶   • U R                  5       n[        U5      nU R                  USS9nUR                  5       nUR	                  X$5        [        U5      nX64$ r[  )rC   r©   rE  rO  rP  )r2   ÚlevelrB   Úorig_asmrE  rQ  Úoptimized_asms          r   Úrun_o_nÚ TestNewModulePassManager.run_o_n±
  sT   € Ø�k‰k‹mˆÜ�s“8ˆØ�W‰W °1ˆWÐ5ˆØ×%Ñ%Ó'ˆØ�‰�ÔÜ˜C›ˆØÐ&Ð&r5   c                 óD   • U R                  5       nUR                  5         g r)   ©rt  rp  ©r2   rQ  s     r   rt  Ú#TestNewModulePassManager.test_closeº
  ó   € Ø�g‰g‹iˆØ�	‰	�r5   c                 ór   • U R                  S5      u  pU R                  SU5        U R                  SU5        g ©NrÈ  ú%.4©rz  rö   r}  ©r2   rx  ry  s      r   Útest_run_o3Ú$TestNewModulePassManager.test_run_o3¾
  ó0   € Ø"&§,¡,¨q£/ÑˆØ�‰�e˜XÔ&Ø×Ñ˜ Õ.r5   c                 ór   • U R                  S5      u  pU R                  SU5        U R                  SU5        g ©Nr   rƒ  ©rz  rö   r…  s      r   Útest_run_o0Ú$TestNewModulePassManager.test_run_o0Ã
  ó.   € Ø"&§,¡,¨q£/ÑˆØ�‰�e˜XÔ&Ø�‰�e˜]Õ+r5   c                 ó$  • U R                  5       nU R                  5       nUR                  5         U R                  [        5      n[        U5      nUR                  X15        [        U5      nU R                  SU5        U R                  SU5        g )Nú%.3)	rE  rt  Úadd_instruction_combine_passrC   Úasm_sum4r©   rP  rö   r}  )r2   rE  rQ  rB   rx  ry  s         r   Útest_instcombineÚ)TestNewModulePassManager.test_instcombineÈ
  sn   € Ø�W‰W‹YˆØ�g‰g‹iˆØ×(Ñ(Ô*Ø�k‰kœ(Ó#ˆÜ�s“8ˆØ�‰�ÔÜ˜C›ˆØ�‰�e˜XÔ&Ø×Ñ˜ Õ.r5   c                 ó  • U R                  SSS9n[        [        R                  SS5      5      n[        R
                  " U5      nUR                  5       nUR                  X15        [        U5      nU R                  SU5        U R                  SU5        [        [        5      nUR                  5       n[        R
                  " U5      nUR                  X15        [        U5      nU R                  SU5        U R                  SU5        g )NrÈ  r   r\  úoptnone rÐ   Úalloca)
rE  r©   Úasm_alloca_optnoneÚreplacer*   r?   rO  rP  rö   r}  )r2   rE  rx  rB   rQ  ry  Úorig_asm_optnoneÚoptimized_asm_optnones           r   Útest_optnoneÚ%TestNewModulePassManager.test_optnoneÓ
  sÞ   € Ø�W‰W ¨qˆWÐ1ˆÜÔ)×1Ñ1°*¸bÓAÓBˆÜ×!Ò! (Ó+ˆØ×%Ñ%Ó'ˆØ�‰�ÔÜ˜C›ˆØ�‰�h Ô)Ø×Ñ˜ =Ô1ô Ô1Ó2ÐØ×%Ñ%Ó'ˆÜ×!Ò!Ð"2Ó3ˆØ�‰�ÔÜ # C£ÐØ�‰�hÐ 0Ô1Ø�‰�hÐ 5Õ6r5   c                 óÄ  • U R                  5       nUR                  5         UR                  5         UR                  5         UR	                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR!                  5         UR#                  5         UR%                  5         UR'                  5         UR)                  5         UR+                  5         UR-                  5         UR/                  5         UR1                  5         UR3                  5         UR5                  5         UR7                  5         UR9                  5         UR;                  5         UR=                  5         UR?                  5         URA                  5         UR;                  5         URC                  5         URE                  5         URG                  5         URI                  5         URK                  5         URM                  5         URO                  5         URQ                  5         URS                  5         URU                  5         URW                  5         URY                  5         UR[                  5         UR]                  5         UR_                  5         URa                  5         URc                  5         URe                  5         URg                  5         URi                  5         URk                  5         URm                  5         URo                  5         URq                  5         URs                  5         URu                  5         URw                  5         URy                  5         g r)   )=rt  Úadd_argument_promotion_passÚ'add_post_order_function_attributes_passÚadd_verifierÚadd_constant_merge_passÚadd_dead_arg_elimination_passÚadd_dot_call_graph_printer_passÚadd_always_inliner_passÚadd_rpo_function_attrs_passÚ#add_global_dead_code_eliminate_passÚadd_global_opt_passÚadd_ipsccp_passÚadd_internalize_passÚadd_loop_extract_passÚadd_merge_functions_passÚadd_partial_inliner_passÚadd_strip_symbols_passÚadd_strip_dead_debug_info_passÚadd_strip_dead_prototype_passÚadd_strip_debug_declare_passÚ add_strip_non_debug_symbols_passÚadd_aa_eval_passÚadd_simplify_cfg_passÚadd_loop_unroll_passr‘  Úadd_jump_threading_passÚadd_cfg_printer_passÚadd_cfg_only_printer_passÚadd_dom_printer_passÚadd_dom_only_printer_passÚadd_post_dom_printer_passÚadd_post_dom_only_printer_passÚadd_dom_viewer_passÚadd_post_dom_viewer_passÚadd_post_dom_only_viewer_passÚadd_lint_passÚadd_aggressive_dce_passÚadd_break_critical_edges_passÚadd_dead_store_elimination_passÚadd_dead_code_elimination_passÚadd_aggressive_instcombine_passÚadd_lcssa_passÚadd_new_gvn_passÚadd_loop_simplify_passÚadd_loop_unroll_and_jam_passÚadd_sccp_passÚadd_lower_atomic_passÚadd_lower_invoke_passÚadd_lower_switch_passÚadd_mem_copy_opt_passÚ"add_unify_function_exit_nodes_passÚadd_reassociate_passÚadd_register_to_memory_passÚadd_sroa_passÚadd_sinking_passÚadd_tail_call_elimination_passÚadd_instruction_namer_passÚadd_loop_deletion_passÚadd_loop_strength_reduce_passÚadd_loop_rotate_passÚadd_refprune_passr~  s     r   Útest_add_passesÚ(TestNewModulePassManager.test_add_passesæ
  sé  € Ø�g‰g‹iˆØ×'Ñ'Ô)Ø×3Ñ3Ô5Ø×ÑÔØ×#Ñ#Ô%Ø×)Ñ)Ô+Ø×+Ñ+Ô-Ø×#Ñ#Ô%Ø×'Ñ'Ô)Ø×/Ñ/Ô1Ø×ÑÔ!Ø×ÑÔØ× Ñ Ô"Ø×!Ñ!Ô#Ø×$Ñ$Ô&Ø×$Ñ$Ô&Ø×"Ñ"Ô$Ø×*Ñ*Ô,Ø×)Ñ)Ô+Ø×(Ñ(Ô*Ø×,Ñ,Ô.Ø×ÑÔØ×!Ñ!Ô#Ø× Ñ Ô"Ø×(Ñ(Ô*Ø×#Ñ#Ô%Ø× Ñ Ô"Ø×%Ñ%Ô'Ø× Ñ Ô"Ø×%Ñ%Ô'Ø×%Ñ%Ô'Ø×*Ñ*Ô,Ø×ÑÔ!Ø×%Ñ%Ô'Ø×$Ñ$Ô&Ø×)Ñ)Ô+Ø×ÑÔØ×#Ñ#Ô%Ø×)Ñ)Ô+Ø×+Ñ+Ô-Ø×*Ñ*Ô,Ø×+Ñ+Ô-Ø×ÑÔØ×ÑÔØ×"Ñ"Ô$Ø×(Ñ(Ô*Ø×ÑÔØ×!Ñ!Ô#Ø×!Ñ!Ô#Ø×!Ñ!Ô#Ø×!Ñ!Ô#Ø×.Ñ.Ô0Ø× Ñ Ô"Ø×'Ñ'Ô)Ø×ÑÔØ×ÑÔØ×*Ñ*Ô,Ø×&Ñ&Ô(Ø×"Ñ"Ô$Ø×)Ñ)Ô+Ø× Ñ Ô"Ø×ÑÕr5   rY   N)rS   rT   rU   rV   rt  rz  rt  r†  rŒ  r“  rœ  rÚ  rX   rY   r5   r   rr  rr  ­
  s*   † ò5ò'òò/ò
,ò
	/ò7õ&> r5   rr  c                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)ÚTestNewFunctionPassManageri'  c                 ó,   • [         R                  " 5       $ r)   )r*   Ú create_new_function_pass_managerr1   s    r   rt  ÚTestNewFunctionPassManager.pm(  s   € Ü×4Ò4Ó6Ð6r5   c                 óD   • U R                  5       nUR                  5         g r)   r}  ©r2   rV  s     r   rt  Ú%TestNewFunctionPassManager.test_close+  r€  r5   c                 óØ   • U R                  5       nUR                  S5      n[        U5      nU R                  USS9nUR	                  5       nUR                  X55        [        U5      nXG4$ )Nr�  r   r\  )rC   rŽ  r©   rE  rU  rP  )r2   rw  rB   Úfunrx  rE  rV  ry  s           r   rz  Ú"TestNewFunctionPassManager.run_o_n/  sd   € Ø�k‰k‹mˆØ×Ñ˜uÓ%ˆÜ�s“8ˆØ�W‰W °1ˆWÐ5ˆØ×'Ñ'Ó)ˆØ�‰�ÔÜ˜C›ˆØÐ&Ð&r5   c                 ór   • U R                  S5      u  pU R                  SU5        U R                  SU5        g r‚  r„  r…  s      r   r†  Ú&TestNewFunctionPassManager.test_run_o39  rˆ  r5   c                 ór   • U R                  S5      u  pU R                  SU5        U R                  SU5        g rŠ  r‹  r…  s      r   rŒ  Ú&TestNewFunctionPassManager.test_run_o0>  rŽ  r5   c                 óT  • U R                  SSS9n[        [        R                  SS5      5      n[        R
                  " U5      R                  S5      nUR                  5       nUR                  X15        [        U5      nU R                  SU5        U R                  SU5        [        [        5      n[        R
                  " U5      R                  S5      nUR                  5       nUR                  X15        [        U5      nU R                  SU5        U R                  SU5        g )NrÈ  r   r\  r–  rÐ   rý   r—  )rE  r©   r˜  r™  r*   r?   rŽ  rU  rP  rö   r}  )r2   rE  rx  rå  rV  ry  rš  r›  s           r   rœ  Ú'TestNewFunctionPassManager.test_optnoneC  sô   € Ø�W‰W ¨qˆWÐ1ˆÜÔ)×1Ñ1°*¸bÓAÓBˆÜ×!Ò! (Ó+×8Ñ8¸Ó?ˆØ×'Ñ'Ó)ˆØ�‰�ÔÜ˜C›ˆØ�‰�h Ô)Ø×Ñ˜ =Ô1ô Ô1Ó2ÐÜ×!Ò!Ð"2Ó3×@Ñ@ÀÓGˆØ×'Ñ'Ó)ˆØ�‰�ÔÜ # C£ÐØ�‰�hÐ 0Ô1Ø�‰�hÐ 5Õ6r5   c                 óB  • U R                  5       nU R                  5       nU R                  [        5      R	                  S5      nUR                  5         [        U5      nUR                  X15        [        U5      nU R                  SU5        U R                  SU5        g )Nr�  r�  )
rE  rt  rC   r’  rŽ  r‘  r©   rP  rö   r}  )r2   rE  rV  rå  rx  ry  s         r   r“  Ú+TestNewFunctionPassManager.test_instcombineV  sy   € Ø�W‰W‹YˆØ�g‰g‹iˆØ�k‰kœ(Ó#×0Ñ0°Ó7ˆØ×(Ñ(Ô*Ü�s“8ˆØ�‰�ÔÜ˜C›ˆØ�‰�e˜XÔ&Ø×Ñ˜ Õ.r5   c                 ó¾   • U R                  S5      nUR                  5       n[        R                  " [        5      R
                   H  nUR                  X15        M     g r  )rE  rU  r*   r?   Úasm_declarationr³  rP  )r2   rE  rV  rå  s       r   Útest_declarationsÚ,TestNewFunctionPassManager.test_declarationsb  sE   € Ø�W‰W�Q‹ZˆØ×'Ñ'Ó)ˆÜ×&Ò&¤Ó7×AÔAˆCØ�G‰G�CÖò Br5   c                 óD  • U R                  5       nUR                  5         UR                  5         UR                  5         UR	                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR!                  5         UR#                  5         UR%                  5         UR'                  5         UR)                  5         UR+                  5         UR-                  5         UR/                  5         UR1                  5         UR3                  5         UR5                  5         UR7                  5         UR9                  5         UR;                  5         UR=                  5         UR?                  5         URA                  5         URC                  5         URE                  5         URG                  5         URI                  5         URK                  5         URM                  5         URO                  5         URQ                  5         g r)   ))rt  r³  r´  rµ  r‘  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  r¿  rÀ  rÁ  rÂ  rÃ  rÄ  rÅ  rÆ  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  rÎ  rÏ  rÐ  rÑ  rÒ  rÓ  rÔ  rÕ  rÖ  r×  rØ  rÙ  râ  s     r   rÚ  Ú*TestNewFunctionPassManager.test_add_passesh  sù  € Ø�g‰g‹iˆØ×ÑÔØ×!Ñ!Ô#Ø× Ñ Ô"Ø×(Ñ(Ô*Ø×#Ñ#Ô%Ø× Ñ Ô"Ø×%Ñ%Ô'Ø× Ñ Ô"Ø×%Ñ%Ô'Ø×%Ñ%Ô'Ø×*Ñ*Ô,Ø×ÑÔ!Ø×%Ñ%Ô'Ø×$Ñ$Ô&Ø×)Ñ)Ô+Ø×ÑÔØ×#Ñ#Ô%Ø×)Ñ)Ô+Ø×+Ñ+Ô-Ø×*Ñ*Ô,Ø×+Ñ+Ô-Ø×ÑÔØ×ÑÔØ×"Ñ"Ô$Ø×(Ñ(Ô*Ø×ÑÔØ×!Ñ!Ô#Ø×!Ñ!Ô#Ø×!Ñ!Ô#Ø×!Ñ!Ô#Ø×.Ñ.Ô0Ø× Ñ Ô"Ø×'Ñ'Ô)Ø×ÑÔØ×ÑÔØ×*Ñ*Ô,Ø×&Ñ&Ô(Ø×"Ñ"Ô$Ø×)Ñ)Ô+Ø× Ñ Ô"Ø×ÑÕr5   rY   N)rS   rT   rU   rV   rt  rt  rz  r†  rŒ  rœ  r“  rñ  rÚ  rX   rY   r5   r   rÝ  rÝ  '  s/   † ò7òò'ò/ò
,ò
7ò&	/òõ* r5   rÝ  r]   r^   c                   ó  • \ rS rSr\" / SQ5      \" / SQ5      S.S\" / SQ5      0\" / SQ5      \" / SQ5      S	.S
.r\" / SQ5      \" / SQ5      S.S\" / SQ5      0\" / SQ5      \" / SQ5      S	.S
.rS r\S 5       r	\
S 5       rSrg)Ú	TestBuildi•  )	Úpthreadru  Údlr”   Úgcc_sr·  rv  ústdc++úld-linux-x86-64)r÷  ru  rø  r”   rù  r·  rv  rú  )r&  Úaarch64Úamd64)Úadvapi32Úkernel32ÚntdllÚmsvcp140Úvcruntime140Úvcruntime140_1úapi-ms-win-crt-convert-l1-1-0ú!api-ms-win-crt-environment-l1-1-0úapi-ms-win-crt-heap-l1-1-0úapi-ms-win-crt-locale-l1-1-0úapi-ms-win-crt-math-l1-1-0úapi-ms-win-crt-runtime-l1-1-0úapi-ms-win-crt-stdio-l1-1-0úapi-ms-win-crt-string-l1-1-0úapi-ms-win-crt-time-l1-1-0úapi-ms-win-crt-utility-l1-1-0Úshell32Úole32)Úllvmliterp  ru  Úcorefoundationúc++)r  rp  ru  r  )r&  Úarm64)r\   r<  Údarwin)r÷  ru  Úzstdrø  r”   rù  r·  rû  )r÷  ru  r  rø  r”   rù  r·  zld-linux-aarch64)ru  r  rþ  rÿ  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  )r  rp  ru  r  r  r  )r  rp  ru  r  r  c                 ó¤  • [         R                  " 5       R                  5       n[         R                  " 5       R                  5       nUS:X  a  U R                  U   U   nO'US:X  a  U R
                  U   U   nO[        SU 35      e[        US   5      nU Vs1 s H  nUR                  S5      (       a  SOUiM     nn U R                  XV5        g s  snf ! [         an  nS[        U5       S[        U5       S[        R                  XV5       S	[        R                  XV5       S
[        R                  Xe5       S3n	[        U	5      UeS nAff = f)Nr   r   zUnexpected package type: Úcanonicalised_linked_librariesr  z:Unexpected linkage encountered for libllvmlite:
Expected: z
     Got: z

Difference: z
Only in Expected: z
Only in Got: Ú
)r‡   ÚmachineÚlowerrp  Úwheel_expectedÚconda_expectedrù  r~   r‰   r7   r‰  r«  Úsymmetric_differenceÚ
difference)
r2   ÚinfoÚpackage_typer  Úos_nameÚexpectedr`  rr   r«   r«  s
             r   Úcheck_linkageÚTestBuild.check_linkage#  sa  € Ü×"Ò"Ó$×*Ñ*Ó,ˆÜ—/’/Ó#×)Ñ)Ó+ˆà˜7Ó"Ø×*Ñ*¨7Ñ3°GÑ<‰HØ˜WÓ$Ø×*Ñ*¨7Ñ3°GÑ<‰HäÐ8¸¸ÐGÓHÐHä�$Ð7Ñ8Ó9ˆñ ó
â�ð Ÿ>™>¨*×5Ñ5‰Z¸3Ò>Ùð 	ð 
ð
		-Ø×Ñ˜XÕ+ùò
øô ó 	-ð Ü & xÓ 0Ð1ð 2 Ü & s£˜}ð -"Ü"%×":Ñ":¸8Ó"IÐ!Jð K(Ü(+¯©°xÓ(EÐ'Fð G#Ü#&§>¡>°#Ó#@Ð"AÀðEˆCô ! Ó%¨1Ð,ûð	-ús   Â$CÃ C Ã
EÃ!A)E
Å
Ec                 ó¸   • [         R                  R                  5       nU R                  US   S5        U R                  US   S5        U R	                  US5        g )NÚllvm_linkage_typeÚstaticÚllvm_assertions_stateÚonr   )r*   ÚconfigÚget_sysinfor7   r#  ©r2   r  s     r   Útest_wheel_buildÚTestBuild.test_wheel_build@  sP   € ä�{‰{×&Ñ&Ó(ˆØ×Ñ˜Ð1Ñ2°HÔ=Ø×Ñ˜Ð5Ñ6¸Ô=Ø×Ñ˜4 Õ)r5   c                 ó2  • [         R                  R                  5       nU R                  US   S5        U R                  US   S5        U R	                  US5        [
        R                  " 5       R                  5       S:X  a  U R                  US   S5        g g )Nr&  r'  r(  r)  r   r\   Úlibstdcxx_linkage_type)r*   r*  r+  r7   r#  r‡   rp  r  r,  s     r   Útest_conda_buildÚTestBuild.test_conda_buildG  sƒ   € ä�{‰{×&Ñ&Ó(ˆØ×Ñ˜Ð1Ñ2°HÔ=Ø×Ñ˜Ð5Ñ6¸Ô=à×Ñ˜4 Ô)Ü�?Š?Ó×"Ñ"Ó$¨Ó/Ø×Ñ˜TÐ":Ñ;¸XÕFð 0r5   rY   N)rS   rT   rU   rV   r~   r  r  r#  Úis_wheel_packager-  Úis_conda_packager1  rX   rY   r5   r   rö  rö  •  s  † ñB +.ò /Có +Dñ -0ò 1<ó -=ñ "ð* #*©3ò 0:ó ,;ð "$ñ& ,/ò 08ó ,9ñ
 +.ò /7ó +8ñ	!#ñQ2€Nñh +.ò /Có +Dñ -0ò 1Fó -Gñ "ð, #*©3ò 0:ó ,;ð "$ñ* ,/ò 08ó ,9ñ +.ò /7ó +8ñ!#ñW7€Nòr-ð: ñ*ó ð*ð ñGó óGr5   rö  Ú__main__)lrq  r¿  r   r   r   Úctypes.utilr   r-   r   rt   r‡   r|   rw   rœ   rš   Ú
contextlibr   Útempfiler   r  r	   r
   r*   Úllvmlite.bindingr   Úllvmlite.testsr   r  ri  r›   Úpackage_formatr4  r3  Ú
_HAVE_LIEFÚliefÚImportErrorÚ
needs_liefr   rW   rØ  rg  r’  rÈ  rš  rª  rˆ   r™  rô   r‰  r  r­  rt  r^  rU  Úasm_inlineasm2Úasm_inlineasm3Úlicm_asmr˜  r£  r   rx  rÝ   rã   ré   rF  r˜  rð  r÷  rù  Úasm_tli_exp2r  r
  r  r'   r[   rŸ   rî   rj  Úobjectrô  rU  rd  Úskipri  rÙ  r„  r  rP  ra  rg  rr  r‰  r•  r¤  r‰   rÙ  rà  rþ  r  rB  rH  rr  rÝ  ru   r�   rö  rS   ÚmainrY   r5   r   Ú<module>rG     s_  ðÛ Û ß ,Ñ ,Ý $Û 	Û Û 	Û Û 	Û Û 
Û Ý %Ý å Ý $Ý  Ý #ð ×ÒÓ˜Ó!Ø×!Ò! /Ô2ð ×&Ò& t×':Ñ':¸gÑ'EØ(HØ+/×+>Ñ+>Ð*?ð)AóCÐ ð ×&Ò& t×':Ñ':¸gÑ'EØ(HØ+/×+>Ñ+>Ð*?ð)AóCÐ ð €
ð	ÛØ€Jð
 × Ò  Ð-IÓJ€
ò	-ð€ð&€ð
€ð€ð	€ð€ð
€ð ×!Ò!Ó# vÓ-Ø#×+Ñ+¨OÐ=NÓO€Nð€ðÐ ð€ðÐ ðÐ ðÐ ð€ð€ð,B€ðH&€ðPÐ ð:€ð<	Ð ðÐ ò€ò Ð òÐ ð€ðÐ ð"€ð0-ð ð( Eð ð€ð €ð(+€ðZ1€ôh5ˆxô 5ôB/�xô /ôdF+�8ô F+ôRM'ˆxô M'ô`@>�Hô @>ôFv-�6ô v-ôr4˜ô 4ô4?�Ð,ô ?ð$ 
‡‚Ð/Ó0ô}!�8ó }!ó 1ð}!ô@o,�8ô o,ôd	s
�(ô s
ôlX.�ô X.ôvC�Xô Cô>	E˜ô 	Eô
,�ô 
,ô#1�8ô #1ôL!#�hô !#ôH1˜Yô 1ô847˜(ô 47ðn 
×Ò�X×%Ò%Ó'×2Ñ2°5Ó9¸=ÓIô"�Hó "ó Jð"ôUA�Xô UAôp8˜Hô 8ô:H ô HôV˜&ô ôM�hÐ 3ô Mô`w ˜xÐ)<ô w ôtk  Ð+>ô k ð\ 
×Ò�R—Z‘Z—^‘^Ð$8Ó9Ø1ó3àôwG�ó wGó ó3ðwGðt ˆzÓØ‡M‚M…Oð øð[a ó 	Úð	ús   Ã!L: Ì:MÍM