Home | History | Annotate | Download | only in COFF
      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