fd78307c1f22cbca235a702f143a93f572f2acdd
[oota-llvm.git] / test / MC / COFF / weak-symbol.ll
1 ; Test that weak functions and globals are placed into selectany COMDAT\r
2 ; sections with the mangled name as suffix. Ensure that the weak linkage\r
3 ; type is not ignored by the backend if the section was specialized.\r
4 ;\r
5 ; RUN: llc -mtriple=i686-pc-win32 %s     -o - | FileCheck %s --check-prefix=X86\r
6 ; RUN: llc -mtriple=i686-pc-mingw32 %s   -o - | FileCheck %s --check-prefix=X86\r
7 ; RUN: llc -mtriple=x86_64-pc-win32 %s   -o - | FileCheck %s --check-prefix=X64\r
8 ; RUN: llc -mtriple=x86_64-pc-mingw32 %s -o - | FileCheck %s --check-prefix=X64\r
9 \r
10 ; Mangled function\r
11 ; X86: .section .text,"xr",discard,__Z3foo\r
12 ; X86: .globl __Z3foo\r
13 ;\r
14 ; X64: .section .text,"xr",discard,_Z3foo\r
15 ; X64: .globl _Z3foo\r
16 define weak void @_Z3foo() {\r
17   ret void\r
18 }\r
19 \r
20 ; Unmangled function\r
21 ; X86: .section .sect,"xr",discard,_f\r
22 ; X86: .globl _f\r
23 ;\r
24 ; X64: .section .sect,"xr",discard,f\r
25 ; X64: .globl f\r
26 define weak void @f() section ".sect" {\r
27   ret void\r
28 }\r
29 \r
30 ; Weak global\r
31 ; X86: .section .data,"rd",discard,_a\r
32 ; X86: .globl _a\r
33 ; X86: .zero 12\r
34 ;\r
35 ; X64: .section .data,"rd",discard,a\r
36 ; X64: .globl a\r
37 ; X64: .zero 12\r
38 @a = weak unnamed_addr constant { i32, i32, i32 } { i32 0, i32 0, i32 0}, section ".data"\r
39 \r
40 ; X86:  .section        .tls$,"wd",discard,_b\r
41 ; X86:  .globl  _b\r
42 ; X86:  .long   0\r
43 ;\r
44 ; X64:  .section        .tls$,"wd",discard,b\r
45 ; X64:  .globl  b\r
46 ; X64:  .long   0\r
47 \r
48 @b = weak_odr thread_local global i32 0, align 4\r