Skip to content

Commit 6b6c3aa

Browse files
committed
[test] Add explicit dso_local to function declarations in static relocation model tests
They are currently implicit because TargetMachine::shouldAssumeDSOLocal implies dso_local. For such function declarations, clang -fno-pic emits the dso_local specifier. Adding explicit dso_local makes these tests align with the clang behavior and helps implementing an option to use GOT indirection when taking the address of a function symbol in -fno-pic (to avoid a canonical PLT entry (SHN_UNDEF with non-zero st_value)).
1 parent bfda694 commit 6b6c3aa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+141
-141
lines changed

llvm/test/CodeGen/AArch64/extern-weak.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
; RUN: llc -mtriple=aarch64-none-linux-gnu -code-model=large -o - %s | FileCheck --check-prefix=CHECK-LARGE %s
44
; RUN: llc -mtriple=aarch64-none-none-eabi -code-model=tiny -o - %s | FileCheck --check-prefix=CHECK-TINY %s
55

6-
declare extern_weak i32 @var()
6+
declare extern_weak dso_local i32 @var()
77

88
define i32()* @foo() {
99
; The usual ADRP/ADD pair can't be used for a weak reference because it must

llvm/test/CodeGen/AArch64/funcptr_cast.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ entry:
1212
ret i8 %0
1313
}
1414

15-
declare void @foo(...)
15+
declare dso_local void @foo(...)

llvm/test/CodeGen/AArch64/tagged-globals-static.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
88
target triple = "aarch64-unknown-linux-android"
99

1010
@global = external dso_local global i32
11-
declare void @func()
11+
declare dso_local void @func()
1212

1313
define i32* @global_addr() #0 {
1414
; Static relocation model has common codegen between SelectionDAGISel and

llvm/test/CodeGen/SystemZ/la-01.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
@e1 = external dso_local global i32, align 1
1111
@d1 = global i32 1, align 1
1212

13-
declare void @ef()
13+
declare dso_local void @ef()
1414
define void @df() {
1515
ret void
1616
}
1717

18-
declare void @foo(i32 *)
18+
declare dso_local void @foo(i32 *)
1919

2020
; Test a load of a fully-aligned external variable.
2121
define i32 *@f1() {

llvm/test/CodeGen/X86/add.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -553,8 +553,8 @@ define i32 @add_to_sub(i32 %a, i32 %b) {
553553
ret i32 %r
554554
}
555555

556-
declare void @bar_i32(i32)
557-
declare void @bar_i64(i64)
556+
declare dso_local void @bar_i32(i32)
557+
declare dso_local void @bar_i64(i64)
558558

559559
; Make sure we can use sub -128 for add 128 when the flags are used.
560560
define void @add_i32_128_flag(i32 %x) {

llvm/test/CodeGen/X86/avx-vzeroupper.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
; RUN: llc < %s -x86-use-vzeroupper -mtriple=x86_64-unknown-unknown -mcpu=bdver2 | FileCheck %s --check-prefixes=ALL,BDVER2
66
; RUN: llc < %s -x86-use-vzeroupper -mtriple=x86_64-unknown-unknown -mcpu=btver2 | FileCheck %s --check-prefixes=ALL,BTVER2
77

8-
declare i32 @foo()
9-
declare <4 x float> @do_sse(<4 x float>)
10-
declare <8 x float> @do_avx(<8 x float>)
11-
declare <4 x float> @llvm.x86.avx.vextractf128.ps.256(<8 x float>, i8) nounwind readnone
8+
declare dso_local i32 @foo()
9+
declare dso_local <4 x float> @do_sse(<4 x float>)
10+
declare dso_local <8 x float> @do_avx(<8 x float>)
11+
declare dso_local <4 x float> @llvm.x86.avx.vextractf128.ps.256(<8 x float>, i8) nounwind readnone
1212
@x = common global <4 x float> zeroinitializer, align 16
1313
@g = common global <8 x float> zeroinitializer, align 32
1414

llvm/test/CodeGen/X86/avx512-i1test.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,4 @@ return: ; preds = %if.end, %if.then
9191
ret i64 %or.sink
9292
}
9393

94-
declare i64 @bar()
94+
declare dso_local i64 @bar()

llvm/test/CodeGen/X86/bmi.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1243,7 +1243,7 @@ define i64 @blsi64_branch(i64 %x) {
12431243
ret i64 %tmp2
12441244
}
12451245

1246-
declare void @bar()
1246+
declare dso_local void @bar()
12471247

12481248
define void @pr42118_i32(i32 %x) {
12491249
; X86-LABEL: pr42118_i32:

llvm/test/CodeGen/X86/bool-zext.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,6 @@ define zeroext i1 @bar3() nounwind ssp {
5757
ret i1 %call
5858
}
5959

60-
declare i32 @foo1(...)
60+
declare dso_local i32 @foo1(...)
6161
declare zeroext i1 @foo2()
6262

llvm/test/CodeGen/X86/btq.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22
; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s
33

4-
declare void @bar()
4+
declare dso_local void @bar()
55

66
define void @test1(i64 %foo) nounwind {
77
; CHECK-LABEL: test1:

llvm/test/CodeGen/X86/callbr-asm-branch-folding.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,14 @@ cleanup: ; preds = %if.else, %if.then20
137137
ret void
138138
}
139139

140-
declare i32 @c()
140+
declare dso_local i32 @c()
141141

142-
declare i32 @l(i32*)
142+
declare dso_local i32 @l(i32*)
143143

144-
declare i32 @m(i64)
144+
declare dso_local i32 @m(i64)
145145

146-
declare i32 @i(i32)
146+
declare dso_local i32 @i(i32)
147147

148-
declare i32 @k(i32, i64, i32*, i64)
148+
declare dso_local i32 @k(i32, i64, i32*, i64)
149149

150150
!0 = !{!"branch_weights", i32 2000, i32 1}

llvm/test/CodeGen/X86/cmp.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ bb12:
138138
ret i32 32
139139
}
140140

141-
declare i32 @foo(...)
141+
declare dso_local i32 @foo(...)
142142

143143
define i32 @test6() nounwind align 2 {
144144
; CHECK-LABEL: test6:
@@ -266,7 +266,7 @@ F:
266266
ret i32 2
267267
}
268268

269-
declare zeroext i1 @test12b()
269+
declare dso_local zeroext i1 @test12b()
270270

271271
define i32 @test13(i32 %mask, i32 %base, i32 %intra) {
272272
; CHECK-LABEL: test13:
@@ -518,7 +518,7 @@ return: ; preds = %if.end, %if.then
518518
ret i32 %retval.0
519519
}
520520

521-
declare i32 @g()
521+
declare dso_local i32 @g()
522522

523-
declare i32 @f()
523+
declare dso_local i32 @f()
524524

llvm/test/CodeGen/X86/conditional-tailcall.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
; RUN: llc < %s -mtriple=x86_64-linux -show-mc-encoding | FileCheck %s --check-prefix=CHECK64
44
; RUN: llc < %s -mtriple=x86_64-win32 -show-mc-encoding | FileCheck %s --check-prefix=WIN64
55

6-
declare void @foo()
7-
declare void @bar()
6+
declare dso_local void @foo()
7+
declare dso_local void @bar()
88

99
define void @f(i32 %x, i32 %y) optsize {
1010
; CHECK32-LABEL: f:
@@ -141,7 +141,7 @@ bb2:
141141

142142
}
143143

144-
declare x86_thiscallcc zeroext i1 @baz(i8*, i32)
144+
declare dso_local x86_thiscallcc zeroext i1 @baz(i8*, i32)
145145
define x86_thiscallcc zeroext i1 @BlockPlacementTest(i8* %this, i32 %x) optsize {
146146
; CHECK32-LABEL: BlockPlacementTest:
147147
; CHECK32: # %bb.0: # %entry
@@ -226,7 +226,7 @@ land.end:
226226

227227
%"class.std::basic_string" = type { %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider" }
228228
%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider" = type { i8* }
229-
declare zeroext i1 @_Z20isValidIntegerSuffixN9__gnu_cxx17__normal_iteratorIPKcSsEES3_(i8*, i8*)
229+
declare dso_local zeroext i1 @_Z20isValidIntegerSuffixN9__gnu_cxx17__normal_iteratorIPKcSsEES3_(i8*, i8*)
230230

231231
define zeroext i1 @pr31257(%"class.std::basic_string"* nocapture readonly dereferenceable(8) %s) minsize {
232232
; CHECK32-LABEL: pr31257:

llvm/test/CodeGen/X86/copy-eflags.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
@d = common global i8 0, align 1
1111
@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
1212

13-
declare void @external(i32)
13+
declare dso_local void @external(i32)
1414

1515
; A test that re-uses flags in interesting ways due to volatile accesses.
1616
; Specifically, the first increment's flags are reused for the branch despite
@@ -142,8 +142,8 @@ else:
142142
ret i32 0
143143
}
144144

145-
declare void @external_a()
146-
declare void @external_b()
145+
declare dso_local void @external_a()
146+
declare dso_local void @external_b()
147147

148148
; This lowers to a conditional tail call instead of a conditional branch. This
149149
; is tricky because we can only do this from a leaf function, and so we have to

llvm/test/CodeGen/X86/dagcombine-shifts.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,5 +213,5 @@ define void @g(i32 %a) {
213213
ret void
214214
}
215215

216-
declare void @f(i64)
216+
declare dso_local void @f(i64)
217217

llvm/test/CodeGen/X86/fold-rmw-ops.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ target triple = "x86_64-unknown-unknown"
88
@g16 = external dso_local global i16, align 2
99
@g8 = external dso_local global i8, align 1
1010

11-
declare void @a()
12-
declare void @b()
11+
declare dso_local void @a()
12+
declare dso_local void @b()
1313

1414
define void @add64_imm32_br() nounwind {
1515
; CHECK-LABEL: add64_imm32_br:

llvm/test/CodeGen/X86/fp-strict-scalar-cmp.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4212,7 +4212,7 @@ define void @foo(float %0, float %1) #0 {
42124212
5: ; preds = %4, %2
42134213
ret void
42144214
}
4215-
declare void @bar()
4215+
declare dso_local void @bar()
42164216

42174217
attributes #0 = { strictfp }
42184218

llvm/test/CodeGen/X86/fp-une-cmp.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,6 @@ for.end:
130130
br i1 %tobool, label %for.cond, label %for.cond1
131131
}
132132

133-
declare void @a()
133+
declare dso_local void @a()
134134

135135
!1 = !{!"branch_weights", i32 1, i32 1000}

llvm/test/CodeGen/X86/fp128-i128.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ entry:
417417
ret fp128 %cond
418418
}
419419

420-
declare void @foo(fp128) #1
420+
declare dso_local void @foo(fp128) #1
421421

422422
; Test logical operations on fp128 values.
423423
define fp128 @TestFABS_LD(fp128 %x) #0 {

llvm/test/CodeGen/X86/lvi-hardening-indirectbr.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
;
44
; Note that a lot of this code was lifted from retpoline.ll.
55

6-
declare void @bar(i32)
6+
declare dso_local void @bar(i32)
77

88
; Test a simple indirect call and tail call.
99
define void @icall_reg(void (i32)* %fp, i32 %x) {
@@ -90,7 +90,7 @@ define void @vcall(%struct.Foo* %obj) #0 {
9090
; X64FAST: jmp __llvm_lvi_thunk_r11 # TAILCALL
9191

9292

93-
declare void @direct_callee()
93+
declare dso_local void @direct_callee()
9494

9595
define void @direct_tail() #0 {
9696
tail call void @direct_callee()

llvm/test/CodeGen/X86/memcmp-minsize.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
@.str = private constant [65 x i8] c"0123456789012345678901234567890123456789012345678901234567890123\00", align 1
1212

13-
declare i32 @memcmp(i8*, i8*, i64)
13+
declare dso_local i32 @memcmp(i8*, i8*, i64)
1414

1515
define i32 @length2(i8* %X, i8* %Y) nounwind minsize {
1616
; X86-LABEL: length2:

llvm/test/CodeGen/X86/memcmp-more-load-pairs.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
@.str = private constant [513 x i8] c"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901\00", align 1
2222

23-
declare i32 @memcmp(i8*, i8*, i64)
23+
declare dso_local i32 @memcmp(i8*, i8*, i64)
2424

2525
define i32 @length0(i8* %X, i8* %Y) nounwind {
2626
; X86-LABEL: length0:

llvm/test/CodeGen/X86/memcmp-optsize.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111
@.str = private constant [65 x i8] c"0123456789012345678901234567890123456789012345678901234567890123\00", align 1
1212

13-
declare i32 @memcmp(i8*, i8*, i64)
14-
declare i32 @bcmp(i8*, i8*, i64)
13+
declare dso_local i32 @memcmp(i8*, i8*, i64)
14+
declare dso_local i32 @bcmp(i8*, i8*, i64)
1515

1616
define i32 @length2(i8* %X, i8* %Y) nounwind optsize {
1717
; X86-LABEL: length2:

llvm/test/CodeGen/X86/memcmp-pgso.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111
@.str = private constant [65 x i8] c"0123456789012345678901234567890123456789012345678901234567890123\00", align 1
1212

13-
declare i32 @memcmp(i8*, i8*, i64)
14-
declare i32 @bcmp(i8*, i8*, i64)
13+
declare dso_local i32 @memcmp(i8*, i8*, i64)
14+
declare dso_local i32 @bcmp(i8*, i8*, i64)
1515

1616
define i32 @length2(i8* %X, i8* %Y) nounwind !prof !14 {
1717
; X86-LABEL: length2:

llvm/test/CodeGen/X86/memcmp.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
@.str = private constant [513 x i8] c"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901\00", align 1
2121

22-
declare i32 @memcmp(i8*, i8*, i64)
22+
declare dso_local i32 @memcmp(i8*, i8*, i64)
2323

2424
define i32 @length0(i8* %X, i8* %Y) nounwind {
2525
; X86-LABEL: length0:

llvm/test/CodeGen/X86/mov-zero-to-xor.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
33

4-
declare void @foo(i64, i64, i64, i64, i64, i64)
5-
declare void @bar(i32, i32, i32, i32, i32)
4+
declare dso_local void @foo(i64, i64, i64, i64, i64, i64)
5+
declare dso_local void @bar(i32, i32, i32, i32, i32)
66

77
define void @pr47024() {
88
; CHECK-LABEL: pr47024:

llvm/test/CodeGen/X86/musttail-tailcc.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
; tailcc will turn all of these musttail calls into tail calls.
66

7-
declare tailcc i32 @tailcallee(i32 %a1, i32 %a2)
7+
declare dso_local tailcc i32 @tailcallee(i32 %a1, i32 %a2)
88

99
define tailcc i32 @tailcaller(i32 %in1, i32 %in2) nounwind {
1010
; X64-LABEL: tailcaller:
@@ -19,7 +19,7 @@ entry:
1919
ret i32 %tmp11
2020
}
2121

22-
declare tailcc i8* @alias_callee()
22+
declare dso_local tailcc i8* @alias_callee()
2323

2424
define tailcc noalias i8* @noalias_caller() nounwind {
2525
; X64-LABEL: noalias_caller:
@@ -33,7 +33,7 @@ define tailcc noalias i8* @noalias_caller() nounwind {
3333
ret i8* %p
3434
}
3535

36-
declare tailcc noalias i8* @noalias_callee()
36+
declare dso_local tailcc noalias i8* @noalias_callee()
3737

3838
define tailcc i8* @alias_caller() nounwind {
3939
; X64-LABEL: alias_caller:

llvm/test/CodeGen/X86/neg_cmp.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
; rdar://11245199
55
; PR12545
66

7-
declare void @g()
7+
declare dso_local void @g()
88

99
define void @neg_cmp(i32 %x, i32 %y) nounwind {
1010
; CHECK-LABEL: neg_cmp:

llvm/test/CodeGen/X86/nomerge.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ if.end3:
2020
ret void
2121
}
2222

23-
declare void @bar()
23+
declare dso_local void @bar()
2424

2525
attributes #0 = { nomerge }
2626

llvm/test/CodeGen/X86/peep-test-4.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22
; RUN: llc < %s -mtriple=x86_64-pc-linux -mattr=+bmi,+bmi2,+popcnt,+lzcnt | FileCheck %s
3-
declare void @foo(i32)
4-
declare void @foo32(i32)
5-
declare void @foo64(i64)
3+
declare dso_local void @foo(i32)
4+
declare dso_local void @foo32(i32)
5+
declare dso_local void @foo64(i64)
66

77
define void @neg(i32 %x) nounwind {
88
; CHECK-LABEL: neg:

llvm/test/CodeGen/X86/pr37063.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22
; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s
33

4-
declare void @bar()
4+
declare dso_local void @bar()
55

66
define void @foo(i64*) {
77
; CHECK-LABEL: foo:

llvm/test/CodeGen/X86/pr38865.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ entry:
4242
ret void
4343
}
4444

45-
declare void @d(%struct.a* byval(%struct.a) align 8) local_unnamed_addr #1
45+
declare dso_local void @d(%struct.a* byval(%struct.a) align 8) local_unnamed_addr #1
4646

47-
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1)
47+
declare dso_local void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1)

llvm/test/CodeGen/X86/pr47024.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ define void @_Z4testv() {
1515
ret void
1616
}
1717

18-
declare void @_Z8process36data_tS_S_(i64, i64, i64, i64, i64, i64)
18+
declare dso_local void @_Z8process36data_tS_S_(i64, i64, i64, i64, i64, i64)

0 commit comments

Comments
 (0)