1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/test/MC/COFF/comm.ll
David Majnemer 0146a46121 MC: Support aligned COMMON symbols for COFF
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.

llvm-svn: 218201
2014-09-21 09:18:07 +00:00

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