Don't create a PLT when we optimize out the plt use.
llvm-svn: 265202
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 8585287..81c7bd3 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -302,7 +302,7 @@
return 1;
}
if (!Body.isPreemptible())
- return 1;
+ return 2;
if (!Body.isInGot()) {
Out<ELFT>::Got->addEntry(Body);
Out<ELFT>::RelaDyn->addReloc(
diff --git a/lld/test/ELF/tls-opt-no-plt.s b/lld/test/ELF/tls-opt-no-plt.s
new file mode 100644
index 0000000..c0ec9ab
--- /dev/null
+++ b/lld/test/ELF/tls-opt-no-plt.s
@@ -0,0 +1,24 @@
+// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/tls-opt-gdie.s -o %t2.o
+// RUN: ld.lld %t2.o -o %t2.so -shared
+// RUN: ld.lld %t.o %t2.so -o %t.exe
+// RUN: llvm-readobj -s %t.exe | FileCheck %s
+
+// CHECK-NOT: .plt
+
+ .global _start
+_start:
+ data16
+ leaq foo@TLSGD(%rip), %rdi
+ data16
+ data16
+ rex64
+ callq __tls_get_addr@PLT
+
+
+ .type foo,@object
+ .section .tdata,"awT",@progbits
+ .globl foo
+ .align 8
+foo:
+ .long 42