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