Adding new tests to test lli's pseudo-remote feature (-remote-mcjit).
[oota-llvm.git] / test / ExecutionEngine / MCJIT / stubs-remote.ll
1 ; RUN: %lli -mtriple=%mcjit_triple -use-mcjit -remote-mcjit -disable-lazy-compilation=false %s\r
2 \r
3 define i32 @main() nounwind {\r
4 entry:\r
5         call void @lazily_compiled_address_is_consistent()\r
6         ret i32 0\r
7 }\r
8 \r
9 ; Test PR3043: @test should have the same address before and after\r
10 ; it's JIT-compiled.\r
11 @funcPtr = common global i1 ()* null, align 4\r
12 @lcaic_failure = internal constant [46 x i8] c"@lazily_compiled_address_is_consistent failed\00"\r
13 \r
14 define void @lazily_compiled_address_is_consistent() nounwind {\r
15 entry:\r
16         store i1 ()* @test, i1 ()** @funcPtr\r
17         %pass = tail call i1 @test()            ; <i32> [#uses=1]\r
18         br i1 %pass, label %pass_block, label %fail_block\r
19 pass_block:\r
20         ret void\r
21 fail_block:\r
22         call i32 @puts(i8* getelementptr([46 x i8]* @lcaic_failure, i32 0, i32 0))\r
23         call void @exit(i32 1)\r
24         unreachable\r
25 }\r
26 \r
27 define i1 @test() nounwind {\r
28 entry:\r
29         %tmp = load i1 ()** @funcPtr\r
30         %eq = icmp eq i1 ()* %tmp, @test\r
31         ret i1 %eq\r
32 }\r
33 \r
34 declare i32 @puts(i8*) noreturn\r
35 declare void @exit(i32) noreturn\r