1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/Transforms/ThinLTOBitcodeWriter/split-used.ll
Teresa Johnson 6eca038caa [LTO] Fix cloning of llvm*.used when splitting module
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
2021-02-20 09:46:43 -08:00

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"}