mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 21:42:54 +02:00
de773ccc50
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 llvm-svn: 284030
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
|
|
}
|