mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-11 13:46:13 +00:00
256d6fed02
Module inline asm was always being linked/concatenated when running the IRLinker. This is correct for full LTO but not when we are importing for ThinLTO, as it can result in multiply defined symbols when the module asm defines a global symbol. In order to test with llvm-lto2, I had to work around PR30396, where a symbol that is defined in module assembly but defined in the LLVM IR appears twice. Added workaround to llvm-lto2 with a FIXME. Fixes PR30610. Reviewers: mehdi_amini Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D25359 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284030 91177308-0d34-0410-b5e6-96231b3b80d8
36 lines
1.0 KiB
LLVM
36 lines
1.0 KiB
LLVM
; RUN: opt -module-summary %s -o %t1.bc
|
|
; RUN: opt -module-summary %p/Inputs/module_asm.ll -o %t2.bc
|
|
|
|
; RUN: llvm-lto -thinlto-action=run -exported-symbol=main %t1.bc %t2.bc
|
|
; RUN: llvm-nm %t1.bc.thinlto.o | FileCheck %s --check-prefix=NM0
|
|
; RUN: llvm-nm %t2.bc.thinlto.o | FileCheck %s --check-prefix=NM1
|
|
|
|
; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \
|
|
; RUN: -r=%t1.bc,foo,plx \
|
|
; RUN: -r=%t1.bc,_simplefunction,pl \
|
|
; RUN: -r=%t2.bc,main,plx \
|
|
; RUN: -r=%t2.bc,_simplefunction,l
|
|
; RUN: llvm-nm %t.o.0 | FileCheck %s --check-prefix=NM0
|
|
; RUN: llvm-nm %t.o.1 | FileCheck %s --check-prefix=NM1
|
|
|
|
; NM0: T foo
|
|
; NM1-NOT: foo
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
module asm "\09.text"
|
|
module asm "\09.globl\09foo"
|
|
module asm "\09.align\0916, 0x90"
|
|
module asm "\09.type\09foo,@function"
|
|
module asm "foo:"
|
|
module asm "\09ret "
|
|
module asm "\09.size\09foo, .-foo"
|
|
module asm ""
|
|
|
|
declare zeroext i16 @foo() #0
|
|
|
|
define i32 @_simplefunction() #1 {
|
|
ret i32 1
|
|
}
|