mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-25 00:29:20 +00:00
link.exe: Fuzz testing has shown that COMMON symbols with size > 32 will always have an alignment of at least 32 and all symbols with size < 32 will have an alignment of at least the largest power of 2 less than the size of the symbol. binutils: The BFD linker essentially work like the link.exe behavior but with alignment 4 instead of 32. The BFD linker also supports an extension to COFF which adds an -aligncomm argument to the .drectve section which permits specifying a precise alignment for a variable but MC currently doesn't support editing .drectve in this way. With all of this in mind, we decide to play a little trick: we can ensure that the alignment will be respected by bumping the size of the global to it's alignment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218201 91177308-0d34-0410-b5e6-96231b3b80d8
14 lines
369 B
LLVM
14 lines
369 B
LLVM
; RUN: llc -mtriple i386-pc-mingw32 < %s | FileCheck %s
|
|
|
|
@a = internal global i8 0, align 1
|
|
@b = internal global double 0.000000e+00, align 8
|
|
@c = common global i8 0, align 1
|
|
@d = common global double 0.000000e+00, align 8
|
|
|
|
; .lcomm uses byte alignment
|
|
; CHECK: .lcomm _a,1
|
|
; CHECK: .lcomm _b,8,8
|
|
; .comm uses log2 alignment
|
|
; CHECK: .comm _c,1,0
|
|
; CHECK: .comm _d,8,3
|