mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
6eca038caa
Refines the fix in 3c4c205060c9398da705eb71b63ddd8a04999de9 to only put globals whose defs were cloned into the split regular LTO module on the cloned llvm*.used globals. This avoids an issue where one of the attached values was a local that was promoted in the original module after the module was cloned. We only need to have the values defined in the new module on those globals. Fixes PR49251. Differential Revision: https://reviews.llvm.org/D97013
31 lines
1.1 KiB
LLVM
31 lines
1.1 KiB
LLVM
; Test to ensure that @llvm[.compiler].used is cloned to the split module for
|
|
; any globals whose defs were cloned to that module.
|
|
|
|
; RUN: opt -thinlto-bc -thinlto-split-lto-unit -o %t %s
|
|
; RUN: llvm-modextract -b -n 0 -o %t0.bc %t
|
|
; RUN: llvm-modextract -b -n 1 -o %t1.bc %t
|
|
; RUN: llvm-dis -o - %t0.bc | FileCheck --check-prefix=M0 %s
|
|
; RUN: llvm-dis -o - %t1.bc | FileCheck --check-prefix=M1 %s
|
|
|
|
; M0: @g1 = external global i8
|
|
; M0: @g2 = external global i8
|
|
; M0: @g3 = global i8 42
|
|
; M0: @g4 = global i8 42
|
|
; M1: @g1 = global i8 42, !type !0
|
|
; M1: @g2 = global i8 42, !type !0
|
|
; M1-NOT: @g
|
|
@g1 = global i8 42, !type !0
|
|
@g2 = global i8 42, !type !0
|
|
@g3 = global i8 42
|
|
@g4 = global i8 42
|
|
|
|
; M0: @llvm.used = appending global [2 x i8*] [i8* @g1, i8* @g3]
|
|
; M0: @llvm.compiler.used = appending global [2 x i8*] [i8* @g2, i8* @g4]
|
|
; M1: @llvm.used = appending global [1 x i8*] [i8* @g1]
|
|
; M1: @llvm.compiler.used = appending global [1 x i8*] [i8* @g2]
|
|
@llvm.used = appending global [2 x i8*] [ i8* @g1, i8* @g3]
|
|
@llvm.compiler.used = appending global [2 x i8*] [ i8* @g2, i8* @g4]
|
|
|
|
; M1: !0 = !{i32 0, !"typeid"}
|
|
!0 = !{i32 0, !"typeid"}
|