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,"xr",discard,__Z3foo 12 ; X86: .globl __Z3foo 13 ; 14 ; X64: .section .text,"xr",discard,_Z3foo 15 ; X64: .globl _Z3foo 16 define weak void @_Z3foo() { 17 ret void 18 } 19 20 ; Unmangled function 21 ; X86: .section .sect,"xr",discard,_f 22 ; X86: .globl _f 23 ; 24 ; X64: .section .sect,"xr",discard,f 25 ; X64: .globl f 26 define weak void @f() section ".sect" { 27 ret void 28 } 29 30 ; Weak global 31 ; X86: .section .data,"rd",discard,_a 32 ; X86: .globl _a 33 ; X86: .zero 12 34 ; 35 ; X64: .section .data,"rd",discard,a 36 ; X64: .globl a 37 ; X64: .zero 12 38 @a = weak unnamed_addr constant { i32, i32, i32 } { i32 0, i32 0, i32 0}, section ".data" 39 40 ; X86: .section .tls$,"wd",discard,_b 41 ; X86: .globl _b 42 ; X86: .long 0 43 ; 44 ; X64: .section .tls$,"wd",discard,b 45 ; X64: .globl b 46 ; X64: .long 0 47 48 @b = weak_odr thread_local global i32 0, align 4 49