[ELF][MIPS] Reorganize isMipsPIC routine. NFC
authorSimon Atanasyan <simon@atanasyan.com>
Fri, 4 May 2018 20:48:53 +0000 (20:48 +0000)
committerSimon Atanasyan <simon@atanasyan.com>
Fri, 4 May 2018 20:48:53 +0000 (20:48 +0000)
llvm-svn: 331555

lld/ELF/Arch/Mips.cpp

index 51ecb8b..f2a1aea 100644 (file)
@@ -658,18 +658,21 @@ template <class ELFT> bool MIPS<ELFT>::usesOnlyLowPageBits(RelType Type) const {
 
 // Return true if the symbol is a PIC function.
 template <class ELFT> bool elf::isMipsPIC(const Defined *Sym) {
-  typedef typename ELFT::Ehdr Elf_Ehdr;
-  if (!Sym->Section || !Sym->isFunc())
+  if (!Sym->isFunc())
     return false;
 
-  auto *Sec = cast<InputSectionBase>(Sym->Section);
-  ObjFile<ELFT> *File = Sec->template getFile<ELFT>();
+  if (Sym->StOther & STO_MIPS_PIC)
+    return true;
+
+  if (!Sym->Section)
+    return false;
+
+  ObjFile<ELFT> *File =
+      cast<InputSectionBase>(Sym->Section)->template getFile<ELFT>();
   if (!File)
     return false;
 
-  const Elf_Ehdr *Hdr = File->getObj().getHeader();
-  return (Sym->StOther & STO_MIPS_MIPS16) == STO_MIPS_PIC ||
-         (Hdr->e_flags & EF_MIPS_PIC);
+  return File->getObj().getHeader()->e_flags & EF_MIPS_PIC;
 }
 
 template <class ELFT> TargetInfo *elf::getMipsTargetInfo() {