Home | History | Annotate | Download | only in remote
      1 ; RUN: %lli -remote-mcjit -disable-lazy-compilation=false -relocation-model=pic -code-model=small %s
      2 ; XFAIL: *
      3 ; This function should fail until remote symbol resolution is supported.
      4 
      5 define i32 @main() nounwind {
      6 entry:
      7 	call void @lazily_compiled_address_is_consistent()
      8 	ret i32 0
      9 }
     10 
     11 ; Test PR3043: @test should have the same address before and after
     12 ; it's JIT-compiled.
     13 @funcPtr = common global i1 ()* null, align 4
     14 @lcaic_failure = internal constant [46 x i8] c"@lazily_compiled_address_is_consistent failed\00"
     15 
     16 define void @lazily_compiled_address_is_consistent() nounwind {
     17 entry:
     18 	store i1 ()* @test, i1 ()** @funcPtr
     19 	%pass = tail call i1 @test()		; <i32> [#uses=1]
     20 	br i1 %pass, label %pass_block, label %fail_block
     21 pass_block:
     22 	ret void
     23 fail_block:
     24 	call i32 @puts(i8* getelementptr([46 x i8], [46 x i8]* @lcaic_failure, i32 0, i32 0))
     25 	call void @exit(i32 1)
     26 	unreachable
     27 }
     28 
     29 define i1 @test() nounwind {
     30 entry:
     31 	%tmp = load i1 ()*, i1 ()** @funcPtr
     32 	%eq = icmp eq i1 ()* %tmp, @test
     33 	ret i1 %eq
     34 }
     35 
     36 declare i32 @puts(i8*) noreturn
     37 declare void @exit(i32) noreturn
     38