mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-04 18:38:37 +00:00

Change the representation of COFF comdats so that a COFF linker is able to accurately resolve comdats between IR and native object files. Specifically, apply name mangling to comdat names consistently with native object files, and do not export comdats with an internal leader because they do not affect symbol resolution. Differential Revision: https://reviews.llvm.org/D40278 llvm-svn: 318805
71 lines
1.4 KiB
LLVM
71 lines
1.4 KiB
LLVM
; RUN: llvm-as -o %t %s
|
|
; RUN: llvm-lto2 dump-symtab %t | FileCheck %s
|
|
|
|
; CHECK: target triple: i686-pc-windows-msvc18.0.0
|
|
target triple = "i686-pc-windows-msvc18.0.0"
|
|
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
|
|
|
; CHECK: source filename: src.c
|
|
source_filename = "src.c"
|
|
|
|
; CHECK: linker opts: /include:foo
|
|
!0 = !{!"/include:foo"}
|
|
!llvm.linker.options = !{ !0 }
|
|
|
|
; CHECK: D------X _fun
|
|
define i32 @fun() {
|
|
ret i32 0
|
|
}
|
|
|
|
; CHECK: D------X @fun2@8
|
|
; CHECK-NEXT: comdat @fun2@8
|
|
$fun2 = comdat any
|
|
define x86_fastcallcc i32 @fun2(i32 inreg %a, i32 inreg %b) comdat {
|
|
entry:
|
|
%add = add nsw i32 %b, %a
|
|
ret i32 %add
|
|
}
|
|
|
|
; CHECK: H------- _g1
|
|
@g1 = hidden global i32 0
|
|
|
|
; CHECK: P------- _g2
|
|
@g2 = protected global i32 0
|
|
|
|
; CHECK: D------- _g3
|
|
@g3 = global i32 0
|
|
|
|
; CHECK: DU------ _g4
|
|
@g4 = external global i32
|
|
|
|
; CHECK: D--W---- _g5
|
|
@g5 = weak global i32 0
|
|
|
|
; CHECK: D--W-O-- _g6
|
|
@g6 = linkonce_odr unnamed_addr global i32 0
|
|
|
|
; CHECK: D-----T- _g7
|
|
@g7 = thread_local global i32 0
|
|
|
|
; CHECK: D-C----- _g8
|
|
; CHECK-NEXT: size 4 align 8
|
|
@g8 = common global i32 0, align 8
|
|
|
|
; CHECK: D------- _g9
|
|
; CHECK-NEXT: comdat _g9
|
|
$g9 = comdat any
|
|
@g9 = global i32 0, comdat
|
|
|
|
; CHECK-NOT: _g10
|
|
$g10 = comdat any
|
|
@g10 = internal global i32 0, comdat
|
|
|
|
; CHECK: D------- _g11
|
|
; CHECK-NOT: comdat
|
|
@g11 = global i32 0, comdat($g10)
|
|
|
|
; CHECK: D--WI--- _a1
|
|
; CHECK-NEXT: comdat _g9
|
|
; CHECK-NEXT: fallback _g9
|
|
@a1 = weak alias i32, i32* @g9
|