Skip to content

Commit 930b339

Browse files
committed
[TargetMachine] Clean up TargetMachine::shouldAssumeDSOLocal after x86-32 specific hack is moved to X86Subtarget
With my previous commit, X86Subtarget::classifyGlobalReference has learned to use MO_NO_FLAG for 32-bit ELF -fno-pic code, the x86-32 special case in TargetMachine::shouldAssumeDSOLocal can be removed. Since we no longer imply dso_local for function declarations, we can drop the ppc64 special case as well. This is NFC in terms of Clang emitted assembly.
1 parent a084c03 commit 930b339

File tree

2 files changed

+13
-31
lines changed

2 files changed

+13
-31
lines changed

llvm/lib/Target/TargetMachine.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -173,27 +173,6 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module &M,
173173
// If the symbol is defined, it cannot be preempted.
174174
if (!GV->isDeclarationForLinker())
175175
return true;
176-
177-
// A symbol marked nonlazybind should not be accessed with a plt. If the
178-
// symbol turns out to be external, the linker will convert a direct
179-
// access to an access via the plt, so don't assume it is local.
180-
const Function *F = dyn_cast<Function>(GV);
181-
if (F && F->hasFnAttribute(Attribute::NonLazyBind))
182-
return false;
183-
Triple::ArchType Arch = TT.getArch();
184-
185-
// PowerPC64 prefers TOC indirection to avoid copy relocations.
186-
if (TT.isPPC64())
187-
return false;
188-
189-
// dso_local is traditionally implied for Reloc::Static. Eventually we shall
190-
// drop the if block entirely and respect dso_local/dso_preemptable
191-
// specifiers set by the frontend.
192-
if (RM == Reloc::Static) {
193-
// TODO Remove the special case for x86-32.
194-
if (Arch == Triple::x86 && !F && !GV->isThreadLocal())
195-
return true;
196-
}
197176
} else if (TT.isOSBinFormatELF()) {
198177
// If dso_local allows AsmPrinter::getSymbolPreferLocal to use a local
199178
// alias, set the flag. We cannot set dso_local for other global values,

llvm/test/CodeGen/X86/abi-isel.ll

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,7 +1246,8 @@ define void @qux01() nounwind {
12461246
;
12471247
; LINUX-32-STATIC-LABEL: qux01:
12481248
; LINUX-32-STATIC: # %bb.0: # %entry
1249-
; LINUX-32-STATIC-NEXT: movl $dst+64, ptr
1249+
; LINUX-32-STATIC-NEXT: leal dst+64, %eax
1250+
; LINUX-32-STATIC-NEXT: movl %eax, ptr
12501251
; LINUX-32-STATIC-NEXT: retl
12511252
;
12521253
; LINUX-32-PIC-LABEL: qux01:
@@ -1334,7 +1335,8 @@ define void @qxx01() nounwind {
13341335
;
13351336
; LINUX-32-STATIC-LABEL: qxx01:
13361337
; LINUX-32-STATIC: # %bb.0: # %entry
1337-
; LINUX-32-STATIC-NEXT: movl $xdst+64, ptr
1338+
; LINUX-32-STATIC-NEXT: leal xdst+64, %eax
1339+
; LINUX-32-STATIC-NEXT: movl %eax, ptr
13381340
; LINUX-32-STATIC-NEXT: retl
13391341
;
13401342
; LINUX-32-PIC-LABEL: qxx01:
@@ -4519,7 +4521,8 @@ define void @moo01(i64 %i) nounwind {
45194521
;
45204522
; LINUX-32-STATIC-LABEL: moo01:
45214523
; LINUX-32-STATIC: # %bb.0: # %entry
4522-
; LINUX-32-STATIC-NEXT: movl $dst+262144, ptr
4524+
; LINUX-32-STATIC-NEXT: leal dst+262144, %eax
4525+
; LINUX-32-STATIC-NEXT: movl %eax, ptr
45234526
; LINUX-32-STATIC-NEXT: retl
45244527
;
45254528
; LINUX-32-PIC-LABEL: moo01:
@@ -7448,7 +7451,7 @@ define i8* @bat00() nounwind {
74487451
;
74497452
; LINUX-32-STATIC-LABEL: bat00:
74507453
; LINUX-32-STATIC: # %bb.0: # %entry
7451-
; LINUX-32-STATIC-NEXT: movl $src+64, %eax
7454+
; LINUX-32-STATIC-NEXT: leal src+64, %eax
74527455
; LINUX-32-STATIC-NEXT: retl
74537456
;
74547457
; LINUX-32-PIC-LABEL: bat00:
@@ -7519,7 +7522,7 @@ define i8* @bxt00() nounwind {
75197522
;
75207523
; LINUX-32-STATIC-LABEL: bxt00:
75217524
; LINUX-32-STATIC: # %bb.0: # %entry
7522-
; LINUX-32-STATIC-NEXT: movl $xsrc+64, %eax
7525+
; LINUX-32-STATIC-NEXT: leal xsrc+64, %eax
75237526
; LINUX-32-STATIC-NEXT: retl
75247527
;
75257528
; LINUX-32-PIC-LABEL: bxt00:
@@ -7590,7 +7593,7 @@ define i8* @bat01() nounwind {
75907593
;
75917594
; LINUX-32-STATIC-LABEL: bat01:
75927595
; LINUX-32-STATIC: # %bb.0: # %entry
7593-
; LINUX-32-STATIC-NEXT: movl $dst+64, %eax
7596+
; LINUX-32-STATIC-NEXT: leal dst+64, %eax
75947597
; LINUX-32-STATIC-NEXT: retl
75957598
;
75967599
; LINUX-32-PIC-LABEL: bat01:
@@ -7661,7 +7664,7 @@ define i8* @bxt01() nounwind {
76617664
;
76627665
; LINUX-32-STATIC-LABEL: bxt01:
76637666
; LINUX-32-STATIC: # %bb.0: # %entry
7664-
; LINUX-32-STATIC-NEXT: movl $xdst+64, %eax
7667+
; LINUX-32-STATIC-NEXT: leal xdst+64, %eax
76657668
; LINUX-32-STATIC-NEXT: retl
76667669
;
76677670
; LINUX-32-PIC-LABEL: bxt01:
@@ -8226,7 +8229,7 @@ define i8* @bam00() nounwind {
82268229
;
82278230
; LINUX-32-STATIC-LABEL: bam00:
82288231
; LINUX-32-STATIC: # %bb.0: # %entry
8229-
; LINUX-32-STATIC-NEXT: movl $src+262144, %eax
8232+
; LINUX-32-STATIC-NEXT: leal src+262144, %eax
82308233
; LINUX-32-STATIC-NEXT: retl
82318234
;
82328235
; LINUX-32-PIC-LABEL: bam00:
@@ -8297,7 +8300,7 @@ define i8* @bam01() nounwind {
82978300
;
82988301
; LINUX-32-STATIC-LABEL: bam01:
82998302
; LINUX-32-STATIC: # %bb.0: # %entry
8300-
; LINUX-32-STATIC-NEXT: movl $dst+262144, %eax
8303+
; LINUX-32-STATIC-NEXT: leal dst+262144, %eax
83018304
; LINUX-32-STATIC-NEXT: retl
83028305
;
83038306
; LINUX-32-PIC-LABEL: bam01:
@@ -8368,7 +8371,7 @@ define i8* @bxm01() nounwind {
83688371
;
83698372
; LINUX-32-STATIC-LABEL: bxm01:
83708373
; LINUX-32-STATIC: # %bb.0: # %entry
8371-
; LINUX-32-STATIC-NEXT: movl $xdst+262144, %eax
8374+
; LINUX-32-STATIC-NEXT: leal xdst+262144, %eax
83728375
; LINUX-32-STATIC-NEXT: retl
83738376
;
83748377
; LINUX-32-PIC-LABEL: bxm01:

0 commit comments

Comments
 (0)