diff options
Diffstat (limited to 'test/ExecutionEngine/MCJIT')
-rw-r--r-- | test/ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll | 3 | ||||
-rw-r--r-- | test/ExecutionEngine/MCJIT/2013-04-04-RelocAddend.ll | 25 | ||||
-rw-r--r-- | test/ExecutionEngine/MCJIT/eh.ll | 32 | ||||
-rw-r--r-- | test/ExecutionEngine/MCJIT/fpbitcast.ll | 5 | ||||
-rw-r--r-- | test/ExecutionEngine/MCJIT/lit.local.cfg | 9 | ||||
-rw-r--r-- | test/ExecutionEngine/MCJIT/non-extern-addend.ll | 12 | ||||
-rw-r--r-- | test/ExecutionEngine/MCJIT/test-global-ctors.ll | 1 |
7 files changed, 80 insertions, 7 deletions
diff --git a/test/ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll b/test/ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll index 0912897c05fab..9897602250a65 100644 --- a/test/ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll +++ b/test/ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll @@ -1,4 +1,5 @@ -; RUN: %lli_mcjit -force-interpreter=true %s | grep 1 +; RUN: %lli_mcjit -force-interpreter=true %s | FileCheck %s +; CHECK: 1 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32" target triple = "i686-pc-linux-gnu" diff --git a/test/ExecutionEngine/MCJIT/2013-04-04-RelocAddend.ll b/test/ExecutionEngine/MCJIT/2013-04-04-RelocAddend.ll new file mode 100644 index 0000000000000..3f402c5931169 --- /dev/null +++ b/test/ExecutionEngine/MCJIT/2013-04-04-RelocAddend.ll @@ -0,0 +1,25 @@ +; RUN: %lli_mcjit %s +; +; Verify relocations to global symbols with addend work correctly. +; +; Compiled from this C code: +; +; int test[2] = { -1, 0 }; +; int *p = &test[1]; +; +; int main (void) +; { +; return *p; +; } +; + +@test = global [2 x i32] [i32 -1, i32 0], align 4 +@p = global i32* getelementptr inbounds ([2 x i32]* @test, i64 0, i64 1), align 8 + +define i32 @main() { +entry: + %0 = load i32** @p, align 8 + %1 = load i32* %0, align 4 + ret i32 %1 +} + diff --git a/test/ExecutionEngine/MCJIT/eh.ll b/test/ExecutionEngine/MCJIT/eh.ll new file mode 100644 index 0000000000000..c2135736ad48f --- /dev/null +++ b/test/ExecutionEngine/MCJIT/eh.ll @@ -0,0 +1,32 @@ +; RUN: %lli_mcjit %s +; XFAIL: arm, cygwin, win32, mingw +declare i8* @__cxa_allocate_exception(i64) +declare void @__cxa_throw(i8*, i8*, i8*) +declare i32 @__gxx_personality_v0(...) +declare void @__cxa_end_catch() +declare i8* @__cxa_begin_catch(i8*) + +@_ZTIi = external constant i8* + +define void @throwException() { + %exception = tail call i8* @__cxa_allocate_exception(i64 4) + call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null) + unreachable +} + +define i32 @main() { +entry: + invoke void @throwException() + to label %try.cont unwind label %lpad + +lpad: + %p = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) + catch i8* bitcast (i8** @_ZTIi to i8*) + %e = extractvalue { i8*, i32 } %p, 0 + call i8* @__cxa_begin_catch(i8* %e) + call void @__cxa_end_catch() + br label %try.cont + +try.cont: + ret i32 0 +} diff --git a/test/ExecutionEngine/MCJIT/fpbitcast.ll b/test/ExecutionEngine/MCJIT/fpbitcast.ll index fb5ab6f24215b..ea39617547abe 100644 --- a/test/ExecutionEngine/MCJIT/fpbitcast.ll +++ b/test/ExecutionEngine/MCJIT/fpbitcast.ll @@ -1,5 +1,6 @@ -; RUN: %lli_mcjit -force-interpreter=true %s | grep 40091eb8 -; +; RUN: %lli_mcjit -force-interpreter=true %s | FileCheck %s +; CHECK: 40091eb8 + define i32 @test(double %x) { entry: %x46.i = bitcast double %x to i64 diff --git a/test/ExecutionEngine/MCJIT/lit.local.cfg b/test/ExecutionEngine/MCJIT/lit.local.cfg index fc29f651aa1f4..30ed4e87e6c2f 100644 --- a/test/ExecutionEngine/MCJIT/lit.local.cfg +++ b/test/ExecutionEngine/MCJIT/lit.local.cfg @@ -8,16 +8,17 @@ def getRoot(config): root = getRoot(config) targets = set(root.targets_to_build.split()) -if ('X86' in targets) | ('ARM' in targets) | ('Mips' in targets) | \ - ('PowerPC' in targets): +if ('X86' in targets) | ('AArch64' in targets) | ('ARM' in targets) | \ + ('Mips' in targets) | ('PowerPC' in targets) | ('SystemZ' in targets): config.unsupported = False else: config.unsupported = True -if root.host_arch not in ['x86', 'x86_64', 'ARM', 'Mips', 'PowerPC']: +if root.host_arch not in ['i386', 'x86', 'x86_64', + 'AArch64', 'ARM', 'Mips', 'PowerPC', 'SystemZ']: config.unsupported = True -if root.host_os in ['Darwin']: +if 'i386-apple-darwin' in root.target_triple: config.unsupported = True if 'powerpc' in root.target_triple and not 'powerpc64' in root.target_triple: diff --git a/test/ExecutionEngine/MCJIT/non-extern-addend.ll b/test/ExecutionEngine/MCJIT/non-extern-addend.ll new file mode 100644 index 0000000000000..3a6e63441200a --- /dev/null +++ b/test/ExecutionEngine/MCJIT/non-extern-addend.ll @@ -0,0 +1,12 @@ +; RUN: %lli_mcjit %s > /dev/null + +define i32 @foo(i32 %X, i32 %Y, double %A) { + %cond212 = fcmp ueq double %A, 2.000000e+00 ; <i1> [#uses=1] + %cast110 = zext i1 %cond212 to i32 ; <i32> [#uses=1] + ret i32 %cast110 +} + +define i32 @main() { + %reg212 = call i32 @foo( i32 0, i32 1, double 1.000000e+00 ) ; <i32> [#uses=1] + ret i32 %reg212 +} diff --git a/test/ExecutionEngine/MCJIT/test-global-ctors.ll b/test/ExecutionEngine/MCJIT/test-global-ctors.ll index 4510d9b6a4955..947d8f5d423de 100644 --- a/test/ExecutionEngine/MCJIT/test-global-ctors.ll +++ b/test/ExecutionEngine/MCJIT/test-global-ctors.ll @@ -1,4 +1,5 @@ ; RUN: %lli_mcjit %s > /dev/null +; XFAIL: darwin @var = global i32 1, align 4 @llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @ctor_func }] @llvm.global_dtors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @dtor_func }] |