[llvm] r245047 - Centralize the information about which object format we are using.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 14 06:31:17 PDT 2015


Author: rafael
Date: Fri Aug 14 08:31:17 2015
New Revision: 245047

URL: http://llvm.org/viewvc/llvm-project?rev=245047&view=rev
Log:
Centralize the information about which object format we are using.

Other than some places that were handling unknown as ELF, this should
have no change. The test updates are because we were detecting
arm-coff or x86_64-win64-coff as ELF targets before.

It is not clear if the enum should live on the Triple. At least now it lives
in a single location and should be easier to move somewhere else.

Removed:
    llvm/trunk/test/MC/COFF/ARM/directive-type-diagnostics.s
Modified:
    llvm/trunk/include/llvm/MC/MCObjectFileInfo.h
    llvm/trunk/lib/MC/MCContext.cpp
    llvm/trunk/lib/MC/MCObjectFileInfo.cpp
    llvm/trunk/lib/MC/MCParser/AsmParser.cpp
    llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
    llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
    llvm/trunk/test/CodeGen/X86/statepoint-stackmap-format.ll

Modified: llvm/trunk/include/llvm/MC/MCObjectFileInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCObjectFileInfo.h?rev=245047&r1=245046&r2=245047&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCObjectFileInfo.h (original)
+++ llvm/trunk/include/llvm/MC/MCObjectFileInfo.h Fri Aug 14 08:31:17 2015
@@ -331,13 +331,9 @@ public:
     return EHFrameSection;
   }
 
-  enum Environment { IsMachO, IsELF, IsCOFF };
-  Environment getObjectFileType() const { return Env; }
-
   Reloc::Model getRelocM() const { return RelocM; }
 
 private:
-  Environment Env;
   Reloc::Model RelocM;
   CodeModel::Model CMModel;
   MCContext *Ctx;

Modified: llvm/trunk/lib/MC/MCContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCContext.cpp?rev=245047&r1=245046&r2=245047&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCContext.cpp (original)
+++ llvm/trunk/lib/MC/MCContext.cpp Fri Aug 14 08:31:17 2015
@@ -162,13 +162,15 @@ MCSymbol *MCContext::getOrCreateLSDASymb
 MCSymbol *MCContext::createSymbolImpl(const StringMapEntry<bool> *Name,
                                       bool IsTemporary) {
   if (MOFI) {
-    switch (MOFI->getObjectFileType()) {
-    case MCObjectFileInfo::IsCOFF:
+    switch (MOFI->getTargetTriple().getObjectFormat()) {
+    case Triple::COFF:
       return new (Name, *this) MCSymbolCOFF(Name, IsTemporary);
-    case MCObjectFileInfo::IsELF:
+    case Triple::ELF:
       return new (Name, *this) MCSymbolELF(Name, IsTemporary);
-    case MCObjectFileInfo::IsMachO:
+    case Triple::MachO:
       return new (Name, *this) MCSymbolMachO(Name, IsTemporary);
+    case Triple::UnknownObjectFormat:
+      break;
     }
   }
   return new (Name, *this) MCSymbol(MCSymbol::SymbolKindUnset, Name,

Modified: llvm/trunk/lib/MC/MCObjectFileInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCObjectFileInfo.cpp?rev=245047&r1=245046&r2=245047&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCObjectFileInfo.cpp (original)
+++ llvm/trunk/lib/MC/MCObjectFileInfo.cpp Fri Aug 14 08:31:17 2015
@@ -767,25 +767,19 @@ void MCObjectFileInfo::InitMCObjectFileI
 
   TT = TheTriple;
 
-  Triple::ArchType Arch = TT.getArch();
-  // FIXME: Checking for Arch here to filter out bogus triples such as
-  // cellspu-apple-darwin. Perhaps we should fix in Triple?
-  if ((Arch == Triple::x86 || Arch == Triple::x86_64 ||
-       Arch == Triple::arm || Arch == Triple::thumb ||
-       Arch == Triple::aarch64 ||
-       Arch == Triple::ppc || Arch == Triple::ppc64 ||
-       Arch == Triple::UnknownArch) &&
-      TT.isOSBinFormatMachO()) {
-    Env = IsMachO;
+  Triple::ObjectFormatType Format = TT.getObjectFormat();
+  switch (Format) {
+  case Triple::MachO:
     initMachOMCObjectFileInfo(TT);
-  } else if ((Arch == Triple::x86 || Arch == Triple::x86_64 ||
-              Arch == Triple::arm || Arch == Triple::thumb) &&
-             (TT.isOSWindows() && TT.getObjectFormat() == Triple::COFF)) {
-    Env = IsCOFF;
+    break;
+  case Triple::COFF:
     initCOFFMCObjectFileInfo(TT);
-  } else {
-    Env = IsELF;
+    break;
+  case Triple::ELF:
     initELFMCObjectFileInfo(TT);
+    break;
+  case Triple::UnknownObjectFormat:
+    break;
   }
 }
 
@@ -801,7 +795,9 @@ MCSection *MCObjectFileInfo::getDwarfTyp
 }
 
 void MCObjectFileInfo::InitEHFrameSection() {
-  if (Env == IsMachO)
+  Triple::ObjectFormatType Format = TT.getObjectFormat();
+  switch (Format) {
+  case Triple::MachO:
     EHFrameSection =
       Ctx->getMachOSection("__TEXT", "__eh_frame",
                            MachO::S_COALESCED |
@@ -809,14 +805,20 @@ void MCObjectFileInfo::InitEHFrameSectio
                            MachO::S_ATTR_STRIP_STATIC_SYMS |
                            MachO::S_ATTR_LIVE_SUPPORT,
                            SectionKind::getReadOnly());
-  else if (Env == IsELF)
+    break;
+  case Triple::ELF:
     EHFrameSection =
         Ctx->getELFSection(".eh_frame", EHSectionType, EHSectionFlags);
-  else
+    break;
+  case Triple::COFF:
     EHFrameSection =
       Ctx->getCOFFSection(".eh_frame",
                           COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
                           COFF::IMAGE_SCN_MEM_READ |
                           COFF::IMAGE_SCN_MEM_WRITE,
                           SectionKind::getDataRel());
+    break;
+  case Triple::UnknownObjectFormat:
+    break;
+  }
 }

Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=245047&r1=245046&r2=245047&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Fri Aug 14 08:31:17 2015
@@ -513,17 +513,19 @@ AsmParser::AsmParser(SourceMgr &SM, MCCo
   Lexer.setBuffer(SrcMgr.getMemoryBuffer(CurBuffer)->getBuffer());
 
   // Initialize the platform / file format parser.
-  switch (Ctx.getObjectFileInfo()->getObjectFileType()) {
-  case MCObjectFileInfo::IsCOFF:
+  switch (Ctx.getObjectFileInfo()->getTargetTriple().getObjectFormat()) {
+  case Triple::COFF:
     PlatformParser.reset(createCOFFAsmParser());
     break;
-  case MCObjectFileInfo::IsMachO:
+  case Triple::MachO:
     PlatformParser.reset(createDarwinAsmParser());
     IsDarwin = true;
     break;
-  case MCObjectFileInfo::IsELF:
+  case Triple::ELF:
     PlatformParser.reset(createELFAsmParser());
     break;
+  case Triple::UnknownObjectFormat:
+    break;
   }
 
   PlatformParser->Initialize(*this);

Modified: llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp?rev=245047&r1=245046&r2=245047&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp Fri Aug 14 08:31:17 2015
@@ -4055,10 +4055,10 @@ bool AArch64AsmParser::MatchAndEmitInstr
 
 /// ParseDirective parses the arm specific directives
 bool AArch64AsmParser::ParseDirective(AsmToken DirectiveID) {
-  const MCObjectFileInfo::Environment Format =
-    getContext().getObjectFileInfo()->getObjectFileType();
-  bool IsMachO = Format == MCObjectFileInfo::IsMachO;
-  bool IsCOFF = Format == MCObjectFileInfo::IsCOFF;
+  Triple::ObjectFormatType Format =
+      getContext().getObjectFileInfo()->getTargetTriple().getObjectFormat();
+  bool IsMachO = Format == Triple::MachO;
+  bool IsCOFF = Format == Triple::COFF;
 
   StringRef IDVal = DirectiveID.getIdentifier();
   SMLoc Loc = DirectiveID.getLoc();

Modified: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=245047&r1=245046&r2=245047&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Fri Aug 14 08:31:17 2015
@@ -5173,18 +5173,11 @@ bool ARMAsmParser::parsePrefix(ARMMCExpr
     return true;
   }
 
-  enum {
-    COFF = (1 << MCObjectFileInfo::IsCOFF),
-    ELF = (1 << MCObjectFileInfo::IsELF),
-    MACHO = (1 << MCObjectFileInfo::IsMachO)
-  };
   static const struct PrefixEntry {
     const char *Spelling;
     ARMMCExpr::VariantKind VariantKind;
-    uint8_t SupportedFormats;
   } PrefixEntries[] = {
-    { "lower16", ARMMCExpr::VK_ARM_LO16, COFF | ELF | MACHO },
-    { "upper16", ARMMCExpr::VK_ARM_HI16, COFF | ELF | MACHO },
+      {"lower16", ARMMCExpr::VK_ARM_LO16}, {"upper16", ARMMCExpr::VK_ARM_HI16},
   };
 
   StringRef IDVal = Parser.getTok().getIdentifier();
@@ -5199,25 +5192,6 @@ bool ARMAsmParser::parsePrefix(ARMMCExpr
     return true;
   }
 
-  uint8_t CurrentFormat;
-  switch (getContext().getObjectFileInfo()->getObjectFileType()) {
-  case MCObjectFileInfo::IsMachO:
-    CurrentFormat = MACHO;
-    break;
-  case MCObjectFileInfo::IsELF:
-    CurrentFormat = ELF;
-    break;
-  case MCObjectFileInfo::IsCOFF:
-    CurrentFormat = COFF;
-    break;
-  }
-
-  if (~Prefix->SupportedFormats & CurrentFormat) {
-    Error(Parser.getTok().getLoc(),
-          "cannot represent relocation in the current file format");
-    return true;
-  }
-
   RefKind = Prefix->VariantKind;
   Parser.Lex();
 
@@ -8691,10 +8665,10 @@ bool ARMAsmParser::MatchAndEmitInstructi
 
 /// parseDirective parses the arm specific directives
 bool ARMAsmParser::ParseDirective(AsmToken DirectiveID) {
-  const MCObjectFileInfo::Environment Format =
-    getContext().getObjectFileInfo()->getObjectFileType();
-  bool IsMachO = Format == MCObjectFileInfo::IsMachO;
-  bool IsCOFF = Format == MCObjectFileInfo::IsCOFF;
+  Triple::ObjectFormatType Format =
+      getContext().getObjectFileInfo()->getTargetTriple().getObjectFormat();
+  bool IsMachO = Format == Triple::MachO;
+  bool IsCOFF = Format == Triple::COFF;
 
   StringRef IDVal = DirectiveID.getIdentifier();
   if (IDVal == ".word")
@@ -8859,8 +8833,9 @@ void ARMAsmParser::onLabelParsed(MCSymbo
 ///  ::= .thumbfunc symbol_name
 bool ARMAsmParser::parseDirectiveThumbFunc(SMLoc L) {
   MCAsmParser &Parser = getParser();
-  const auto Format = getContext().getObjectFileInfo()->getObjectFileType();
-  bool IsMachO = Format == MCObjectFileInfo::IsMachO;
+  Triple::ObjectFormatType Format =
+      getContext().getObjectFileInfo()->getTargetTriple().getObjectFormat();
+  bool IsMachO = Format == Triple::MachO;
 
   // Darwin asm has (optionally) function name after .thumb_func direction
   // ELF doesn't

Modified: llvm/trunk/test/CodeGen/X86/statepoint-stackmap-format.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/statepoint-stackmap-format.ll?rev=245047&r1=245046&r2=245047&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/statepoint-stackmap-format.ll (original)
+++ llvm/trunk/test/CodeGen/X86/statepoint-stackmap-format.ll Fri Aug 14 08:31:17 2015
@@ -1,5 +1,5 @@
 ; RUN: llc < %s -mtriple="x86_64-pc-linux-gnu" | FileCheck %s
-; RUN: llc < %s -mtriple="x86_64-pc-win64-coff" | FileCheck %s
+; RUN: llc < %s -mtriple="x86_64-pc-unknown-elf" | FileCheck %s
 
 ; This test is a sanity check to ensure statepoints are generating StackMap
 ; sections correctly.  This is not intended to be a rigorous test of the 

Removed: llvm/trunk/test/MC/COFF/ARM/directive-type-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/COFF/ARM/directive-type-diagnostics.s?rev=245046&view=auto
==============================================================================
--- llvm/trunk/test/MC/COFF/ARM/directive-type-diagnostics.s (original)
+++ llvm/trunk/test/MC/COFF/ARM/directive-type-diagnostics.s (removed)
@@ -1,10 +0,0 @@
-// RUN: not llvm-mc -triple arm-coff -filetype asm -o /dev/null %s 2>&1 | FileCheck %s
-// RUN: not llvm-mc -triple armeb-coff -filetype asm -o /dev/null %s 2>&1 | FileCheck %s
-// RUN: not llvm-mc -triple thumb-coff -filetype asm -o /dev/null %s 2>&1 | FileCheck %s
-// RUN: not llvm-mc -triple thumbeb-coff -filetype asm -o /dev/null %s 2>&1 | FileCheck %s
-
-        .type symbol 32
-// CHECK: error: expected STT_<TYPE_IN_UPPER_CASE>, '#<type>', '%<type>' or "<type>"
-// CHECK: .type symbol 32
-// CHECK:              ^
-




More information about the llvm-commits mailing list