1 ; RUN: llc < %s -mtriple=i386-unknown-linux-gnu | FileCheck %s -check-prefix=LINUX
2 ; RUN: llc < %s -mtriple=i386-apple-darwin9.7 | FileCheck %s -check-prefix=DARWIN
3 ; RUN: llc < %s -mtriple=i386-apple-darwin10 -relocation-model=static | FileCheck %s -check-prefix=DARWIN-STATIC
4 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s -check-prefix=DARWIN64
5 ; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -data-sections -function-sections | FileCheck %s -check-prefix=LINUX-SECTIONS
6 ; RUN: llc < %s -mtriple=i686-pc-win32 -data-sections -function-sections | FileCheck %s -check-prefix=WIN32-SECTIONS
12 ; WIN32-SECTIONS: .section .text,"xr",one_only,_F1
13 ; WIN32-SECTIONS: .globl _F1
15 define void @F2(i32 %y) {
17 switch i32 %y, label %bb5 [
36 ; LINUX-NEX: .cfi_endproc
37 ; LINUX-NEX: .section .rodata,"a",@progbits
39 ; LINUX-SECTIONS: .section .text.F2,"ax",@progbits
40 ; LINUX-SECTIONS: .size F2,
41 ; LINUX-SECTIONS-NEXT: .cfi_endproc
42 ; LINUX-SECTIONS-NEXT: .section .rodata.F2,"a",@progbits
45 @G1 = common global i32 0
47 ; LINUX: .type G1,@object
50 ; DARWIN: .comm _G1,4,2
55 ; const int G2 __attribute__((weak)) = 42;
56 @G2 = weak_odr unnamed_addr constant i32 42
59 ; TODO: linux drops this into .rodata, we drop it into ".gnu.linkonce.r.G2"
61 ; DARWIN: .section __TEXT,__const_coal,coalesced
66 ; int * const G3 = &G1;
67 @G3 = unnamed_addr constant i32* @G1
69 ; DARWIN: .section __DATA,__const
74 ; LINUX: .section .rodata,"a",@progbits
77 ; LINUX-SECTIONS: .section .rodata.G3,"a",@progbits
78 ; LINUX-SECTIONS: .globl G3
80 ; WIN32-SECTIONS: .section .rdata,"dr",one_only,_G3
81 ; WIN32-SECTIONS: .globl _G3
84 ; _Complex long long const G4 = 34;
85 @G4 = private unnamed_addr constant {i64,i64} { i64 34, i64 0 }
87 ; DARWIN: .section __TEXT,__literal16,16byte_literals
91 ; DARWIN-STATIC: .section __TEXT,__literal16,16byte_literals
92 ; DARWIN-STATIC: L_G4:
93 ; DARWIN-STATIC: .long 34
95 ; DARWIN64: .section __TEXT,__literal16,16byte_literals
107 ; DARWIN: .section __DATA,__data
114 @"foo bar" = linkonce global i32 42
116 ; LINUX: .type "foo bar",@object
117 ; LINUX: .weak "foo bar"
120 ; DARWIN: .section __DATA,__datacoal_nt,coalesced
121 ; DARWIN: .globl "_foo bar"
122 ; DARWIN: .weak_definition "_foo bar"
123 ; DARWIN: "_foo bar":
126 @G6 = weak_odr unnamed_addr constant [1 x i8] c"\01"
128 ; LINUX: .type G6,@object
134 ; DARWIN: .section __TEXT,__const_coal,coalesced
136 ; DARWIN: .weak_definition _G6
141 @G7 = unnamed_addr constant [10 x i8] c"abcdefghi\00"
143 ; DARWIN: __TEXT,__cstring,cstring_literals
146 ; DARWIN: .asciz "abcdefghi"
148 ; LINUX: .section .rodata.str1.1,"aMS",@progbits,1
151 ; LINUX: .asciz "abcdefghi"
153 ; LINUX-SECTIONS: .section .rodata.str1.1,"aMS",@progbits,1
154 ; LINUX-SECTIONS: .globl G7
156 ; WIN32-SECTIONS: .section .rdata,"dr",one_only,_G7
157 ; WIN32-SECTIONS: .globl _G7
160 @G8 = unnamed_addr constant [4 x i16] [ i16 1, i16 2, i16 3, i16 0 ]
162 ; DARWIN: .section __TEXT,__const
166 ; LINUX: .section .rodata.str2.2,"aMS",@progbits,2
170 @G9 = unnamed_addr constant [4 x i32] [ i32 1, i32 2, i32 3, i32 0 ]
175 ; LINUX: .section .rodata.str4.4,"aMS",@progbits,4
180 @G10 = weak global [100 x i32] zeroinitializer, align 32 ; <[100 x i32]*> [#uses=0]
183 ; DARWIN: .section __DATA,__datacoal_nt,coalesced
184 ; DARWIN: .globl _G10
185 ; DARWIN: .weak_definition _G10
198 ;; Zero sized objects should round up to 1 byte in zerofill directives.
200 @G11 = global [0 x i32] zeroinitializer
201 @G12 = global {} zeroinitializer
202 @G13 = global { [0 x {}] } zeroinitializer
204 ; DARWIN: .globl _G11
205 ; DARWIN: .zerofill __DATA,__common,_G11,1,2
206 ; DARWIN: .globl _G12
207 ; DARWIN: .zerofill __DATA,__common,_G12,1,3
208 ; DARWIN: .globl _G13
209 ; DARWIN: .zerofill __DATA,__common,_G13,1,3
211 @G14 = private unnamed_addr constant [4 x i8] c"foo\00", align 1
213 ; LINUX-SECTIONS: .type .LG14,@object # @G14
214 ; LINUX-SECTIONS: .section .rodata.str1.1,"aMS",@progbits,1
215 ; LINUX-SECTIONS: .LG14:
216 ; LINUX-SECTIONS: .asciz "foo"
217 ; LINUX-SECTIONS: .size .LG14, 4
219 ; WIN32-SECTIONS: .section .rdata,"dr"
220 ; WIN32-SECTIONS: L_G14:
221 ; WIN32-SECTIONS: .asciz "foo"
223 ; cannot be merged on MachO, but can on other formats.
224 @G15 = unnamed_addr constant i64 0
226 ; LINUX: .section .rodata.cst8,"aM",@progbits,8
229 ; DARWIN: .section __TEXT,__const
232 ; DARWIN-STATIC: .section __TEXT,__const
233 ; DARWIN-STATIC: _G15:
235 ; DARWIN64: .section __TEXT,__const
238 ; LINUX-SECTIONS: .section .rodata.cst8,"aM",@progbits,8
239 ; LINUX-SECTIONS: G15:
241 ; WIN32-SECTIONS: .section .rdata,"dr",one_only,_G15
242 ; WIN32-SECTIONS: _G15: