llvm-project/llvm/test/ExecutionEngine/Orc/global-variable-alignment.ll
Lang Hames 563ce9aa4a [lli] Add new testcases for lli.
These are an attempt to more systematically test the features covered by the
MCJIT regression tests (though these tests apply to lli's default mode, which
is now -jit-kind=orc).

This first batch of tests includes a basic smoke test (trivial-return-zero),
tests for single function calls and data references, and alignment handling.
2023-05-12 15:40:04 +10:00

28 lines
750 B
LLVM

; Check that lli respects alignment on global variables.
;
; Returns ((uint32_t)&B & 0x7) - A + C. Variables A and C have byte-alignment,
; and are intended to increase the chance of misalignment, but don't contribute
; to the result, since they have the same initial value.
;
; A failure may indicate a problem with alignment handling in the JIT linker or
; JIT memory manager.
;
; RUN: %lli %s
@A = internal global i8 1, align 1
@B = global i64 1, align 8
@C = internal global i8 1, align 1
define i32 @main(i32 %argc, i8** %argv) {
entry:
%0 = ptrtoint i8* @B to i32
%1 = and i32 %0, 7
%2 = load i8, i8* @A
%3 = zext i8 %2 to i32
%4 = add i32 %1, %3
%5 = load i8, i8* @B
%6 = zext i8 %5 to i32
%7 = sub i32 %4, %6
ret i32 %7
}