mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-26 07:29:55 +00:00
For regular object files this is only meaningful for common symbols. An object file format with direct support for atoms should be able to provide alignment information for all symbols. This replaces getCommonSymbolAlignment and fixes test-common-symbols-alignment.ll on darwin. This also includes a fix to MachOObjectFile::getSymbolFlags. It was marking undefined symbols as common (already tested by existing mcjit tests now that it is used). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180736 91177308-0d34-0410-b5e6-96231b3b80d8
33 lines
944 B
LLVM
33 lines
944 B
LLVM
; RUN: %lli_mcjit -O0 %s
|
|
|
|
; This test checks that common symbols have been allocated addresses honouring
|
|
; the alignment requirement.
|
|
|
|
@CS1 = common global i32 0, align 16
|
|
@CS2 = common global i8 0, align 1
|
|
@CS3 = common global i32 0, align 16
|
|
|
|
define i32 @main() nounwind {
|
|
entry:
|
|
%retval = alloca i32, align 4
|
|
%ptr = alloca i32, align 4
|
|
store i32 0, i32* %retval
|
|
store i32 ptrtoint (i32* @CS3 to i32), i32* %ptr, align 4
|
|
%0 = load i32* %ptr, align 4
|
|
%and = and i32 %0, 15
|
|
%tobool = icmp ne i32 %and, 0
|
|
br i1 %tobool, label %if.then, label %if.else
|
|
|
|
if.then: ; preds = %entry
|
|
store i32 1, i32* %retval
|
|
br label %return
|
|
|
|
if.else: ; preds = %entry
|
|
store i32 0, i32* %retval
|
|
br label %return
|
|
|
|
return: ; preds = %if.else, %if.then
|
|
%1 = load i32* %retval
|
|
ret i32 %1
|
|
}
|