@@ -44,12 +44,12 @@ define dso_local void @m2_f1() {
44
44
45
45
@m2_f1_alias = alias void (...), ptr @m2_f1
46
46
47
- define linkonce void @interposable_f () {
47
+ define weak void @interposable_f () {
48
48
call void @m2_variant ()
49
49
ret void
50
50
}
51
51
52
- define external void @noninterposable_f () {
52
+ define linkonce_odr void @noninterposable_f () {
53
53
call void @m2_variant ()
54
54
ret void
55
55
}
@@ -94,15 +94,17 @@ define dso_local void @m3_f1() {
94
94
;
95
95
; The run with workload definitions - same other options.
96
96
;
97
- ; RUN: echo '{"m1_f1":["m1_f1", "m2_f1", "m2_f1_alias", "interposable_f", "noninterposable_f"], \
98
- ; RUN: "m2_f1":["m1_f1", "m1_f2", "interposable_f"]}' > %t_exp/workload_defs.json
97
+ ; RUN: echo '{ \
98
+ ; RUN: "m1_f1": ["m1_f1", "m2_f1", "m2_f1_alias", "interposable_f", "noninterposable_f"], \
99
+ ; RUN: "m2_f1": ["m1_f1", "m1_f2", "interposable_f"] \
100
+ ; RUN: }' > %t_exp/workload_defs.json
99
101
;
100
102
; RUN: llvm-lto2 run %t/m1.bc %t/m2.bc %t/m3.bc \
101
103
; RUN: -o %t_exp/result.o -save-temps \
102
104
; RUN: -thinlto-workload-def=%t_exp/workload_defs.json \
103
105
; RUN: -r %t/m1.bc,m1_f1,plx \
104
106
; RUN: -r %t/m1.bc,interposable_f,p \
105
- ; RUN: -r %t/m1.bc,noninterposable_f,p \
107
+ ; RUN: -r %t/m1.bc,noninterposable_f \
106
108
; RUN: -r %t/m1.bc,m1_variant \
107
109
; RUN: -r %t/m1.bc,m2_f1_alias \
108
110
; RUN: -r %t/m2.bc,m2_f1,plx \
@@ -126,15 +128,26 @@ define dso_local void @m3_f1() {
126
128
;
127
129
; FIRST-LABEL: @m1_f1
128
130
; FIRST-LABEL: @m1_f2.llvm.0
131
+ ;
132
+ ; @interposable_f is prevailing in m1, so it won't be imported
129
133
; FIRST-LABEL: define void @interposable_f
130
134
; FIRST-NEXT: call void @m1_variant
135
+ ;
131
136
; FIRST-LABEL: @m2_f1
137
+ ;
138
+ ; @noninterposable_f is prevailing in m2 so it will be imported from there.
132
139
; FIRST-LABEL: define available_externally void @noninterposable_f
133
140
; FIRST-NEXT: call void @m2_variant
141
+ ;
134
142
; FIRST-LABEL: define available_externally void @m2_f1_alias
135
143
; SECOND-LABEL: @m2_f1
144
+ ;
145
+ ; SECOND-LABEL: define weak_odr void @noninterposable_f
146
+ ; SECOND-NEXT: call void @m2_variant()
136
147
; SECOND-LABEL: @m1_f1
137
148
; SECOND-LABEL: define available_externally hidden void @m1_f2.llvm.0
149
+ ;
150
+ ; we import @interposable_f from m1, the prevailing variant.
138
151
; SECOND-LABEL: define available_externally void @interposable_f
139
152
; SECOND-NEXT: call void @m1_variant
140
153
; THIRD-LABEL: define available_externally void @m1_f1
0 commit comments