[TargetMachine][CodeGenModule] Delete unneeded ppc32 special case from shouldAssumeDS...
authorFangrui Song <i@maskray.me>
Sat, 5 Dec 2020 08:42:07 +0000 (00:42 -0800)
committerFangrui Song <i@maskray.me>
Sat, 5 Dec 2020 08:42:07 +0000 (00:42 -0800)
PPCMCInstLower does not actually call shouldAssumeDSOLocal for ppc32 so this is dead.
Actually Clang ppc32 does produce a pair of absolute relocations which match GCC.

This also fixes a comment (R_PPC_COPY and R_PPC64_COPY do exist).

clang/lib/CodeGen/CodeGenModule.cpp
llvm/lib/Target/TargetMachine.cpp

index ce5fb94..0bb9c91 100644 (file)
@@ -967,10 +967,8 @@ static bool shouldAssumeDSOLocal(const CodeGenModule &CGM,
   if (RM == llvm::Reloc::PIC_ && GV->hasExternalWeakLinkage())
     return false;
 
-  // PPC has no copy relocations and cannot use a plt entry as a symbol address.
-  llvm::Triple::ArchType Arch = TT.getArch();
-  if (Arch == llvm::Triple::ppc || Arch == llvm::Triple::ppc64 ||
-      Arch == llvm::Triple::ppc64le)
+  // PowerPC64 prefers TOC indirection to avoid copy relocations.
+  if (TT.isPPC64())
     return false;
 
   // If we can use copy relocations we can assume it is local.
index 30f5881..e2fd468 100644 (file)
@@ -186,8 +186,8 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module &M,
       return false;
     Triple::ArchType Arch = TT.getArch();
 
-    // PowerPC prefers avoiding copy relocations.
-    if (Arch == Triple::ppc || TT.isPPC64())
+    // PowerPC64 prefers TOC indirection to avoid copy relocations.
+    if (TT.isPPC64())
       return false;
 
     // dso_local is traditionally implied for Reloc::Static. Eventually we shall