mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
4bad07fbec
This fixes a problem from a previous check-in where a return value was omitted. Previously the remote/stubs-remote.ll and remote/stubs-sm-pic.ll tests were reporting passes, but they should have been failing. Those tests attempt to link against an external symbol and remote symbol resolution is not supported. The old RemoteMemoryManager implementation resulted in local symbols being used for resolution and the child process crashed but the test didn't notice. With this check-in remote symbol resolution fails, and so the test (correctly) fails. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192514 91177308-0d34-0410-b5e6-96231b3b80d8
38 lines
1.0 KiB
LLVM
38 lines
1.0 KiB
LLVM
; RUN: %lli_mcjit -remote-mcjit -disable-lazy-compilation=false -relocation-model=pic -code-model=small %s
|
|
; XFAIL: *
|
|
; This function should fail until remote symbol resolution is supported.
|
|
|
|
define i32 @main() nounwind {
|
|
entry:
|
|
call void @lazily_compiled_address_is_consistent()
|
|
ret i32 0
|
|
}
|
|
|
|
; Test PR3043: @test should have the same address before and after
|
|
; it's JIT-compiled.
|
|
@funcPtr = common global i1 ()* null, align 4
|
|
@lcaic_failure = internal constant [46 x i8] c"@lazily_compiled_address_is_consistent failed\00"
|
|
|
|
define void @lazily_compiled_address_is_consistent() nounwind {
|
|
entry:
|
|
store i1 ()* @test, i1 ()** @funcPtr
|
|
%pass = tail call i1 @test() ; <i32> [#uses=1]
|
|
br i1 %pass, label %pass_block, label %fail_block
|
|
pass_block:
|
|
ret void
|
|
fail_block:
|
|
call i32 @puts(i8* getelementptr([46 x i8]* @lcaic_failure, i32 0, i32 0))
|
|
call void @exit(i32 1)
|
|
unreachable
|
|
}
|
|
|
|
define i1 @test() nounwind {
|
|
entry:
|
|
%tmp = load i1 ()** @funcPtr
|
|
%eq = icmp eq i1 ()* %tmp, @test
|
|
ret i1 %eq
|
|
}
|
|
|
|
declare i32 @puts(i8*) noreturn
|
|
declare void @exit(i32) noreturn
|