[llvm] 43c3014 - [llvm-ml] Remove unused parser functions

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 1 17:19:44 PST 2025


Author: Fangrui Song
Date: 2025-03-01T17:19:39-08:00
New Revision: 43c3014ec1eda1d14d836f19395f0232c06f4536

URL: https://github.com/llvm/llvm-project/commit/43c3014ec1eda1d14d836f19395f0232c06f4536
DIFF: https://github.com/llvm/llvm-project/commit/43c3014ec1eda1d14d836f19395f0232c06f4536.diff

LOG: [llvm-ml] Remove unused parser functions

Added: 
    

Modified: 
    llvm/lib/MC/MCParser/MasmParser.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/MC/MCParser/MasmParser.cpp b/llvm/lib/MC/MCParser/MasmParser.cpp
index 6df83026903ec..fc38c3c15dda3 100644
--- a/llvm/lib/MC/MCParser/MasmParser.cpp
+++ b/llvm/lib/MC/MCParser/MasmParser.cpp
@@ -458,9 +458,6 @@ class MasmParser : public MCAsmParser {
   /// Are we parsing ms-style inline assembly?
   bool ParsingMSInlineAsm = false;
 
-  /// Did we already inform the user about inconsistent MD5 usage?
-  bool ReportedInconsistentMD5 = false;
-
   // Current <...> expression depth.
   unsigned AngleBracketDepth = 0U;
 
@@ -494,8 +491,6 @@ class MasmParser : public MCAsmParser {
   MCContext &getContext() override { return Ctx; }
   MCStreamer &getStreamer() override { return Out; }
 
-  CodeViewContext &getCVContext() { return Ctx.getCVContext(); }
-
   unsigned getAssemblerDialect() override {
     if (AssemblerDialect == ~0U)
       return MAI.getAssemblerDialect();
@@ -664,9 +659,6 @@ class MasmParser : public MCAsmParser {
 
   bool parseRegisterOrRegisterNumber(int64_t &Register, SMLoc DirectiveLoc);
 
-  bool parseCVFunctionId(int64_t &FunctionId, StringRef DirectiveName);
-  bool parseCVFileId(int64_t &FileId, StringRef DirectiveName);
-
   // Generic (target and platform independent) directive parsing.
   enum DirectiveKind {
     DK_NO_DIRECTIVE, // Placeholder
@@ -729,44 +721,7 @@ class MasmParser : public MCAsmParser {
     DK_ELSEIFIDNI,
     DK_ELSE,
     DK_ENDIF,
-    DK_FILE,
-    DK_LINE,
-    DK_LOC,
-    DK_STABS,
-    DK_CV_FILE,
-    DK_CV_FUNC_ID,
-    DK_CV_INLINE_SITE_ID,
-    DK_CV_LOC,
-    DK_CV_LINETABLE,
-    DK_CV_INLINE_LINETABLE,
-    DK_CV_DEF_RANGE,
-    DK_CV_STRINGTABLE,
-    DK_CV_STRING,
-    DK_CV_FILECHECKSUMS,
-    DK_CV_FILECHECKSUM_OFFSET,
-    DK_CV_FPO_DATA,
-    DK_CFI_SECTIONS,
-    DK_CFI_STARTPROC,
-    DK_CFI_ENDPROC,
-    DK_CFI_DEF_CFA,
-    DK_CFI_DEF_CFA_OFFSET,
-    DK_CFI_ADJUST_CFA_OFFSET,
-    DK_CFI_DEF_CFA_REGISTER,
-    DK_CFI_OFFSET,
-    DK_CFI_REL_OFFSET,
-    DK_CFI_PERSONALITY,
-    DK_CFI_LSDA,
-    DK_CFI_REMEMBER_STATE,
-    DK_CFI_RESTORE_STATE,
-    DK_CFI_SAME_VALUE,
-    DK_CFI_RESTORE,
-    DK_CFI_ESCAPE,
-    DK_CFI_RETURN_COLUMN,
-    DK_CFI_SIGNAL_FRAME,
-    DK_CFI_UNDEFINED,
-    DK_CFI_REGISTER,
-    DK_CFI_WINDOW_SAVE,
-    DK_CFI_B_KEY_FRAME,
+
     DK_MACRO,
     DK_EXITM,
     DK_ENDM,
@@ -801,19 +756,6 @@ class MasmParser : public MCAsmParser {
 
   bool isMacroLikeDirective();
 
-  // Codeview def_range type parsing.
-  enum CVDefRangeType {
-    CVDR_DEFRANGE = 0, // Placeholder
-    CVDR_DEFRANGE_REGISTER,
-    CVDR_DEFRANGE_FRAMEPOINTER_REL,
-    CVDR_DEFRANGE_SUBFIELD_REGISTER,
-    CVDR_DEFRANGE_REGISTER_REL
-  };
-
-  /// Maps Codeview def_range types --> CVDefRangeType enum, for Codeview
-  /// def_range types parsed by this class.
-  StringMap<CVDefRangeType> CVDefRangeTypeMap;
-
   // Generic (target and platform independent) directive parsing.
   enum BuiltinSymbol {
     BI_NO_SYMBOL, // Placeholder
@@ -935,49 +877,6 @@ class MasmParser : public MCAsmParser {
   bool parseDirectiveAlign();  // "align"
   bool parseDirectiveEven();   // "even"
 
-  // ".file", ".line", ".loc", ".stabs"
-  bool parseDirectiveFile(SMLoc DirectiveLoc);
-  bool parseDirectiveLine();
-  bool parseDirectiveLoc();
-  bool parseDirectiveStabs();
-
-  // ".cv_file", ".cv_func_id", ".cv_inline_site_id", ".cv_loc", ".cv_linetable",
-  // ".cv_inline_linetable", ".cv_def_range", ".cv_string"
-  bool parseDirectiveCVFile();
-  bool parseDirectiveCVFuncId();
-  bool parseDirectiveCVInlineSiteId();
-  bool parseDirectiveCVLoc();
-  bool parseDirectiveCVLinetable();
-  bool parseDirectiveCVInlineLinetable();
-  bool parseDirectiveCVDefRange();
-  bool parseDirectiveCVString();
-  bool parseDirectiveCVStringTable();
-  bool parseDirectiveCVFileChecksums();
-  bool parseDirectiveCVFileChecksumOffset();
-  bool parseDirectiveCVFPOData();
-
-  // .cfi directives
-  bool parseDirectiveCFIRegister(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIWindowSave(SMLoc DirectiveLoc);
-  bool parseDirectiveCFISections();
-  bool parseDirectiveCFIStartProc();
-  bool parseDirectiveCFIEndProc();
-  bool parseDirectiveCFIDefCfaOffset(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIDefCfa(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIAdjustCfaOffset(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIDefCfaRegister(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIOffset(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIRelOffset(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIPersonalityOrLsda(bool IsPersonality);
-  bool parseDirectiveCFIRememberState(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIRestoreState(SMLoc DirectiveLoc);
-  bool parseDirectiveCFISameValue(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIRestore(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIEscape(SMLoc DirectiveLoc);
-  bool parseDirectiveCFIReturnColumn(SMLoc DirectiveLoc);
-  bool parseDirectiveCFISignalFrame();
-  bool parseDirectiveCFIUndefined(SMLoc DirectiveLoc);
-
   // macro directives
   bool parseDirectivePurgeMacro(SMLoc DirectiveLoc);
   bool parseDirectiveExitMacro(SMLoc DirectiveLoc, StringRef Directive,
@@ -1069,7 +968,6 @@ class MasmParser : public MCAsmParser {
   bool parseDirectiveEcho(SMLoc DirectiveLoc);
 
   void initializeDirectiveKindMap();
-  void initializeCVDefRangeTypeMap();
   void initializeBuiltinSymbolMap();
 };
 
@@ -1110,7 +1008,6 @@ MasmParser::MasmParser(SourceMgr &SM, MCContext &Ctx, MCStreamer &Out,
 
   initializeDirectiveKindMap();
   PlatformParser->Initialize(*this);
-  initializeCVDefRangeTypeMap();
   initializeBuiltinSymbolMap();
 
   NumOfMacroInstantiations = 0;
@@ -1359,8 +1256,6 @@ bool MasmParser::Run(bool NoInitialTextSection, bool NoFinalize) {
     (void)InsertResult;
   }
 
-  getTargetParser().onBeginOfFile();
-
   // While we have input, parse each statement.
   while (Lexer.isNot(AsmToken::Eof) ||
          SrcMgr.getParentIncludeLoc(CurBuffer) != SMLoc()) {
@@ -1386,14 +1281,11 @@ bool MasmParser::Run(bool NoInitialTextSection, bool NoFinalize) {
       eatToEndOfStatement();
   }
 
-  getTargetParser().onEndOfFile();
   printPendingErrors();
 
   // All errors should have been emitted.
   assert(!hasPendingError() && "unexpected error from parseStatement");
 
-  getTargetParser().flushPendingInstructions(getStreamer());
-
   if (TheCondState.TheCond != StartingCondState.TheCond ||
       TheCondState.Ignore != StartingCondState.Ignore)
     printError(getTok().getLoc(), "unmatched .ifs or .elses");
@@ -2357,80 +2249,6 @@ bool MasmParser::parseStatement(ParseStatementInfo &Info,
       return parseDirectiveFor(IDLoc, IDVal);
     case DK_FORC:
       return parseDirectiveForc(IDLoc, IDVal);
-    case DK_FILE:
-      return parseDirectiveFile(IDLoc);
-    case DK_LINE:
-      return parseDirectiveLine();
-    case DK_LOC:
-      return parseDirectiveLoc();
-    case DK_STABS:
-      return parseDirectiveStabs();
-    case DK_CV_FILE:
-      return parseDirectiveCVFile();
-    case DK_CV_FUNC_ID:
-      return parseDirectiveCVFuncId();
-    case DK_CV_INLINE_SITE_ID:
-      return parseDirectiveCVInlineSiteId();
-    case DK_CV_LOC:
-      return parseDirectiveCVLoc();
-    case DK_CV_LINETABLE:
-      return parseDirectiveCVLinetable();
-    case DK_CV_INLINE_LINETABLE:
-      return parseDirectiveCVInlineLinetable();
-    case DK_CV_DEF_RANGE:
-      return parseDirectiveCVDefRange();
-    case DK_CV_STRING:
-      return parseDirectiveCVString();
-    case DK_CV_STRINGTABLE:
-      return parseDirectiveCVStringTable();
-    case DK_CV_FILECHECKSUMS:
-      return parseDirectiveCVFileChecksums();
-    case DK_CV_FILECHECKSUM_OFFSET:
-      return parseDirectiveCVFileChecksumOffset();
-    case DK_CV_FPO_DATA:
-      return parseDirectiveCVFPOData();
-    case DK_CFI_SECTIONS:
-      return parseDirectiveCFISections();
-    case DK_CFI_STARTPROC:
-      return parseDirectiveCFIStartProc();
-    case DK_CFI_ENDPROC:
-      return parseDirectiveCFIEndProc();
-    case DK_CFI_DEF_CFA:
-      return parseDirectiveCFIDefCfa(IDLoc);
-    case DK_CFI_DEF_CFA_OFFSET:
-      return parseDirectiveCFIDefCfaOffset(IDLoc);
-    case DK_CFI_ADJUST_CFA_OFFSET:
-      return parseDirectiveCFIAdjustCfaOffset(IDLoc);
-    case DK_CFI_DEF_CFA_REGISTER:
-      return parseDirectiveCFIDefCfaRegister(IDLoc);
-    case DK_CFI_OFFSET:
-      return parseDirectiveCFIOffset(IDLoc);
-    case DK_CFI_REL_OFFSET:
-      return parseDirectiveCFIRelOffset(IDLoc);
-    case DK_CFI_PERSONALITY:
-      return parseDirectiveCFIPersonalityOrLsda(true);
-    case DK_CFI_LSDA:
-      return parseDirectiveCFIPersonalityOrLsda(false);
-    case DK_CFI_REMEMBER_STATE:
-      return parseDirectiveCFIRememberState(IDLoc);
-    case DK_CFI_RESTORE_STATE:
-      return parseDirectiveCFIRestoreState(IDLoc);
-    case DK_CFI_SAME_VALUE:
-      return parseDirectiveCFISameValue(IDLoc);
-    case DK_CFI_RESTORE:
-      return parseDirectiveCFIRestore(IDLoc);
-    case DK_CFI_ESCAPE:
-      return parseDirectiveCFIEscape(IDLoc);
-    case DK_CFI_RETURN_COLUMN:
-      return parseDirectiveCFIReturnColumn(IDLoc);
-    case DK_CFI_SIGNAL_FRAME:
-      return parseDirectiveCFISignalFrame();
-    case DK_CFI_UNDEFINED:
-      return parseDirectiveCFIUndefined(IDLoc);
-    case DK_CFI_REGISTER:
-      return parseDirectiveCFIRegister(IDLoc);
-    case DK_CFI_WINDOW_SAVE:
-      return parseDirectiveCFIWindowSave(IDLoc);
     case DK_EXITM:
       Info.ExitValue = "";
       return parseDirectiveExitMacro(IDLoc, IDVal, *Info.ExitValue);
@@ -3769,25 +3587,6 @@ bool MasmParser::parseDirectiveNamedValue(StringRef TypeName, unsigned Size,
   return false;
 }
 
-static bool parseHexOcta(MasmParser &Asm, uint64_t &hi, uint64_t &lo) {
-  if (Asm.getTok().isNot(AsmToken::Integer) &&
-      Asm.getTok().isNot(AsmToken::BigNum))
-    return Asm.TokError("unknown token in expression");
-  SMLoc ExprLoc = Asm.getTok().getLoc();
-  APInt IntValue = Asm.getTok().getAPIntVal();
-  Asm.Lex();
-  if (!IntValue.isIntN(128))
-    return Asm.Error(ExprLoc, "out of range literal value");
-  if (!IntValue.isIntN(64)) {
-    hi = IntValue.getHiBits(IntValue.getBitWidth() - 64).getZExtValue();
-    lo = IntValue.getLoBits(64).getZExtValue();
-  } else {
-    hi = 0;
-    lo = IntValue.getZExtValue();
-  }
-  return false;
-}
-
 bool MasmParser::parseRealValue(const fltSemantics &Semantics, APInt &Res) {
   // We don't truly support arithmetic on floating point expressions, so we
   // have to manually parse unary prefixes.
@@ -4741,738 +4540,6 @@ bool MasmParser::parseDirectiveEven() {
   return false;
 }
 
-/// parseDirectiveFile
-/// ::= .file filename
-/// ::= .file number [directory] filename [md5 checksum] [source source-text]
-bool MasmParser::parseDirectiveFile(SMLoc DirectiveLoc) {
-  // FIXME: I'm not sure what this is.
-  int64_t FileNumber = -1;
-  if (getLexer().is(AsmToken::Integer)) {
-    FileNumber = getTok().getIntVal();
-    Lex();
-
-    if (FileNumber < 0)
-      return TokError("negative file number");
-  }
-
-  std::string Path;
-
-  // Usually the directory and filename together, otherwise just the directory.
-  // Allow the strings to have escaped octal character sequence.
-  if (check(getTok().isNot(AsmToken::String),
-            "unexpected token in '.file' directive") ||
-      parseEscapedString(Path))
-    return true;
-
-  StringRef Directory;
-  StringRef Filename;
-  std::string FilenameData;
-  if (getLexer().is(AsmToken::String)) {
-    if (check(FileNumber == -1,
-              "explicit path specified, but no file number") ||
-        parseEscapedString(FilenameData))
-      return true;
-    Filename = FilenameData;
-    Directory = Path;
-  } else {
-    Filename = Path;
-  }
-
-  uint64_t MD5Hi, MD5Lo;
-  bool HasMD5 = false;
-
-  std::optional<StringRef> Source;
-  bool HasSource = false;
-  std::string SourceString;
-
-  while (!parseOptionalToken(AsmToken::EndOfStatement)) {
-    StringRef Keyword;
-    if (check(getTok().isNot(AsmToken::Identifier),
-              "unexpected token in '.file' directive") ||
-        parseIdentifier(Keyword))
-      return true;
-    if (Keyword == "md5") {
-      HasMD5 = true;
-      if (check(FileNumber == -1,
-                "MD5 checksum specified, but no file number") ||
-          parseHexOcta(*this, MD5Hi, MD5Lo))
-        return true;
-    } else if (Keyword == "source") {
-      HasSource = true;
-      if (check(FileNumber == -1,
-                "source specified, but no file number") ||
-          check(getTok().isNot(AsmToken::String),
-                "unexpected token in '.file' directive") ||
-          parseEscapedString(SourceString))
-        return true;
-    } else {
-      return TokError("unexpected token in '.file' directive");
-    }
-  }
-
-  if (FileNumber == -1) {
-    // Ignore the directive if there is no number and the target doesn't support
-    // numberless .file directives. This allows some portability of assembler
-    // between 
diff erent object file formats.
-    if (getContext().getAsmInfo()->hasSingleParameterDotFile())
-      getStreamer().emitFileDirective(Filename);
-  } else {
-    // In case there is a -g option as well as debug info from directive .file,
-    // we turn off the -g option, directly use the existing debug info instead.
-    // Throw away any implicit file table for the assembler source.
-    if (Ctx.getGenDwarfForAssembly()) {
-      Ctx.getMCDwarfLineTable(0).resetFileTable();
-      Ctx.setGenDwarfForAssembly(false);
-    }
-
-    std::optional<MD5::MD5Result> CKMem;
-    if (HasMD5) {
-      MD5::MD5Result Sum;
-      for (unsigned i = 0; i != 8; ++i) {
-        Sum[i] = uint8_t(MD5Hi >> ((7 - i) * 8));
-        Sum[i + 8] = uint8_t(MD5Lo >> ((7 - i) * 8));
-      }
-      CKMem = Sum;
-    }
-    if (HasSource) {
-      char *SourceBuf = static_cast<char *>(Ctx.allocate(SourceString.size()));
-      memcpy(SourceBuf, SourceString.data(), SourceString.size());
-      Source = StringRef(SourceBuf, SourceString.size());
-    }
-    if (FileNumber == 0) {
-      if (Ctx.getDwarfVersion() < 5)
-        return Warning(DirectiveLoc, "file 0 not supported prior to DWARF-5");
-      getStreamer().emitDwarfFile0Directive(Directory, Filename, CKMem, Source);
-    } else {
-      Expected<unsigned> FileNumOrErr = getStreamer().tryEmitDwarfFileDirective(
-          FileNumber, Directory, Filename, CKMem, Source);
-      if (!FileNumOrErr)
-        return Error(DirectiveLoc, toString(FileNumOrErr.takeError()));
-    }
-    // Alert the user if there are some .file directives with MD5 and some not.
-    // But only do that once.
-    if (!ReportedInconsistentMD5 && !Ctx.isDwarfMD5UsageConsistent(0)) {
-      ReportedInconsistentMD5 = true;
-      return Warning(DirectiveLoc, "inconsistent use of MD5 checksums");
-    }
-  }
-
-  return false;
-}
-
-/// parseDirectiveLine
-/// ::= .line [number]
-bool MasmParser::parseDirectiveLine() {
-  int64_t LineNumber;
-  if (getLexer().is(AsmToken::Integer)) {
-    if (parseIntToken(LineNumber, "unexpected token in '.line' directive"))
-      return true;
-    (void)LineNumber;
-    // FIXME: Do something with the .line.
-  }
-  if (parseEOL())
-    return true;
-
-  return false;
-}
-
-/// parseDirectiveLoc
-/// ::= .loc FileNumber [LineNumber] [ColumnPos] [basic_block] [prologue_end]
-///                                [epilogue_begin] [is_stmt VALUE] [isa VALUE]
-/// The first number is a file number, must have been previously assigned with
-/// a .file directive, the second number is the line number and optionally the
-/// third number is a column position (zero if not specified).  The remaining
-/// optional items are .loc sub-directives.
-bool MasmParser::parseDirectiveLoc() {
-  int64_t FileNumber = 0, LineNumber = 0;
-  SMLoc Loc = getTok().getLoc();
-  if (parseIntToken(FileNumber, "unexpected token in '.loc' directive") ||
-      check(FileNumber < 1 && Ctx.getDwarfVersion() < 5, Loc,
-            "file number less than one in '.loc' directive") ||
-      check(!getContext().isValidDwarfFileNumber(FileNumber), Loc,
-            "unassigned file number in '.loc' directive"))
-    return true;
-
-  // optional
-  if (getLexer().is(AsmToken::Integer)) {
-    LineNumber = getTok().getIntVal();
-    if (LineNumber < 0)
-      return TokError("line number less than zero in '.loc' directive");
-    Lex();
-  }
-
-  int64_t ColumnPos = 0;
-  if (getLexer().is(AsmToken::Integer)) {
-    ColumnPos = getTok().getIntVal();
-    if (ColumnPos < 0)
-      return TokError("column position less than zero in '.loc' directive");
-    Lex();
-  }
-
-  auto PrevFlags = getContext().getCurrentDwarfLoc().getFlags();
-  unsigned Flags = PrevFlags & DWARF2_FLAG_IS_STMT;
-  unsigned Isa = 0;
-  int64_t Discriminator = 0;
-
-  auto parseLocOp = [&]() -> bool {
-    StringRef Name;
-    SMLoc Loc = getTok().getLoc();
-    if (parseIdentifier(Name))
-      return TokError("unexpected token in '.loc' directive");
-
-    if (Name == "basic_block")
-      Flags |= DWARF2_FLAG_BASIC_BLOCK;
-    else if (Name == "prologue_end")
-      Flags |= DWARF2_FLAG_PROLOGUE_END;
-    else if (Name == "epilogue_begin")
-      Flags |= DWARF2_FLAG_EPILOGUE_BEGIN;
-    else if (Name == "is_stmt") {
-      Loc = getTok().getLoc();
-      const MCExpr *Value;
-      if (parseExpression(Value))
-        return true;
-      // The expression must be the constant 0 or 1.
-      if (const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(Value)) {
-        int Value = MCE->getValue();
-        if (Value == 0)
-          Flags &= ~DWARF2_FLAG_IS_STMT;
-        else if (Value == 1)
-          Flags |= DWARF2_FLAG_IS_STMT;
-        else
-          return Error(Loc, "is_stmt value not 0 or 1");
-      } else {
-        return Error(Loc, "is_stmt value not the constant value of 0 or 1");
-      }
-    } else if (Name == "isa") {
-      Loc = getTok().getLoc();
-      const MCExpr *Value;
-      if (parseExpression(Value))
-        return true;
-      // The expression must be a constant greater or equal to 0.
-      if (const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(Value)) {
-        int Value = MCE->getValue();
-        if (Value < 0)
-          return Error(Loc, "isa number less than zero");
-        Isa = Value;
-      } else {
-        return Error(Loc, "isa number not a constant value");
-      }
-    } else if (Name == "discriminator") {
-      if (parseAbsoluteExpression(Discriminator))
-        return true;
-    } else {
-      return Error(Loc, "unknown sub-directive in '.loc' directive");
-    }
-    return false;
-  };
-
-  if (parseMany(parseLocOp, false /*hasComma*/))
-    return true;
-
-  getStreamer().emitDwarfLocDirective(FileNumber, LineNumber, ColumnPos, Flags,
-                                      Isa, Discriminator, StringRef());
-
-  return false;
-}
-
-/// parseDirectiveStabs
-/// ::= .stabs string, number, number, number
-bool MasmParser::parseDirectiveStabs() {
-  return TokError("unsupported directive '.stabs'");
-}
-
-/// parseDirectiveCVFile
-/// ::= .cv_file number filename [checksum] [checksumkind]
-bool MasmParser::parseDirectiveCVFile() {
-  SMLoc FileNumberLoc = getTok().getLoc();
-  int64_t FileNumber;
-  std::string Filename;
-  std::string Checksum;
-  int64_t ChecksumKind = 0;
-
-  if (parseIntToken(FileNumber,
-                    "expected file number in '.cv_file' directive") ||
-      check(FileNumber < 1, FileNumberLoc, "file number less than one") ||
-      check(getTok().isNot(AsmToken::String),
-            "unexpected token in '.cv_file' directive") ||
-      parseEscapedString(Filename))
-    return true;
-  if (!parseOptionalToken(AsmToken::EndOfStatement)) {
-    if (check(getTok().isNot(AsmToken::String),
-              "unexpected token in '.cv_file' directive") ||
-        parseEscapedString(Checksum) ||
-        parseIntToken(ChecksumKind,
-                      "expected checksum kind in '.cv_file' directive") ||
-        parseEOL())
-      return true;
-  }
-
-  Checksum = fromHex(Checksum);
-  void *CKMem = Ctx.allocate(Checksum.size(), 1);
-  memcpy(CKMem, Checksum.data(), Checksum.size());
-  ArrayRef<uint8_t> ChecksumAsBytes(reinterpret_cast<const uint8_t *>(CKMem),
-                                    Checksum.size());
-
-  if (!getStreamer().emitCVFileDirective(FileNumber, Filename, ChecksumAsBytes,
-                                         static_cast<uint8_t>(ChecksumKind)))
-    return Error(FileNumberLoc, "file number already allocated");
-
-  return false;
-}
-
-bool MasmParser::parseCVFunctionId(int64_t &FunctionId,
-                                   StringRef DirectiveName) {
-  SMLoc Loc;
-  return parseTokenLoc(Loc) ||
-         parseIntToken(FunctionId, "expected function id in '" + DirectiveName +
-                                       "' directive") ||
-         check(FunctionId < 0 || FunctionId >= UINT_MAX, Loc,
-               "expected function id within range [0, UINT_MAX)");
-}
-
-bool MasmParser::parseCVFileId(int64_t &FileNumber, StringRef DirectiveName) {
-  SMLoc Loc;
-  return parseTokenLoc(Loc) ||
-         parseIntToken(FileNumber, "expected integer in '" + DirectiveName +
-                                       "' directive") ||
-         check(FileNumber < 1, Loc, "file number less than one in '" +
-                                        DirectiveName + "' directive") ||
-         check(!getCVContext().isValidFileNumber(FileNumber), Loc,
-               "unassigned file number in '" + DirectiveName + "' directive");
-}
-
-/// parseDirectiveCVFuncId
-/// ::= .cv_func_id FunctionId
-///
-/// Introduces a function ID that can be used with .cv_loc.
-bool MasmParser::parseDirectiveCVFuncId() {
-  SMLoc FunctionIdLoc = getTok().getLoc();
-  int64_t FunctionId;
-
-  if (parseCVFunctionId(FunctionId, ".cv_func_id") || parseEOL())
-    return true;
-
-  if (!getStreamer().emitCVFuncIdDirective(FunctionId))
-    return Error(FunctionIdLoc, "function id already allocated");
-
-  return false;
-}
-
-/// parseDirectiveCVInlineSiteId
-/// ::= .cv_inline_site_id FunctionId
-///         "within" IAFunc
-///         "inlined_at" IAFile IALine [IACol]
-///
-/// Introduces a function ID that can be used with .cv_loc. Includes "inlined
-/// at" source location information for use in the line table of the caller,
-/// whether the caller is a real function or another inlined call site.
-bool MasmParser::parseDirectiveCVInlineSiteId() {
-  SMLoc FunctionIdLoc = getTok().getLoc();
-  int64_t FunctionId;
-  int64_t IAFunc;
-  int64_t IAFile;
-  int64_t IALine;
-  int64_t IACol = 0;
-
-  // FunctionId
-  if (parseCVFunctionId(FunctionId, ".cv_inline_site_id"))
-    return true;
-
-  // "within"
-  if (check((getLexer().isNot(AsmToken::Identifier) ||
-             getTok().getIdentifier() != "within"),
-            "expected 'within' identifier in '.cv_inline_site_id' directive"))
-    return true;
-  Lex();
-
-  // IAFunc
-  if (parseCVFunctionId(IAFunc, ".cv_inline_site_id"))
-    return true;
-
-  // "inlined_at"
-  if (check((getLexer().isNot(AsmToken::Identifier) ||
-             getTok().getIdentifier() != "inlined_at"),
-            "expected 'inlined_at' identifier in '.cv_inline_site_id' "
-            "directive") )
-    return true;
-  Lex();
-
-  // IAFile IALine
-  if (parseCVFileId(IAFile, ".cv_inline_site_id") ||
-      parseIntToken(IALine, "expected line number after 'inlined_at'"))
-    return true;
-
-  // [IACol]
-  if (getLexer().is(AsmToken::Integer)) {
-    IACol = getTok().getIntVal();
-    Lex();
-  }
-
-  if (parseEOL())
-    return true;
-
-  if (!getStreamer().emitCVInlineSiteIdDirective(FunctionId, IAFunc, IAFile,
-                                                 IALine, IACol, FunctionIdLoc))
-    return Error(FunctionIdLoc, "function id already allocated");
-
-  return false;
-}
-
-/// parseDirectiveCVLoc
-/// ::= .cv_loc FunctionId FileNumber [LineNumber] [ColumnPos] [prologue_end]
-///                                [is_stmt VALUE]
-/// The first number is a file number, must have been previously assigned with
-/// a .file directive, the second number is the line number and optionally the
-/// third number is a column position (zero if not specified).  The remaining
-/// optional items are .loc sub-directives.
-bool MasmParser::parseDirectiveCVLoc() {
-  SMLoc DirectiveLoc = getTok().getLoc();
-  int64_t FunctionId, FileNumber;
-  if (parseCVFunctionId(FunctionId, ".cv_loc") ||
-      parseCVFileId(FileNumber, ".cv_loc"))
-    return true;
-
-  int64_t LineNumber = 0;
-  if (getLexer().is(AsmToken::Integer)) {
-    LineNumber = getTok().getIntVal();
-    if (LineNumber < 0)
-      return TokError("line number less than zero in '.cv_loc' directive");
-    Lex();
-  }
-
-  int64_t ColumnPos = 0;
-  if (getLexer().is(AsmToken::Integer)) {
-    ColumnPos = getTok().getIntVal();
-    if (ColumnPos < 0)
-      return TokError("column position less than zero in '.cv_loc' directive");
-    Lex();
-  }
-
-  bool PrologueEnd = false;
-  uint64_t IsStmt = 0;
-
-  auto parseOp = [&]() -> bool {
-    StringRef Name;
-    SMLoc Loc = getTok().getLoc();
-    if (parseIdentifier(Name))
-      return TokError("unexpected token in '.cv_loc' directive");
-    if (Name == "prologue_end")
-      PrologueEnd = true;
-    else if (Name == "is_stmt") {
-      Loc = getTok().getLoc();
-      const MCExpr *Value;
-      if (parseExpression(Value))
-        return true;
-      // The expression must be the constant 0 or 1.
-      IsStmt = ~0ULL;
-      if (const auto *MCE = dyn_cast<MCConstantExpr>(Value))
-        IsStmt = MCE->getValue();
-
-      if (IsStmt > 1)
-        return Error(Loc, "is_stmt value not 0 or 1");
-    } else {
-      return Error(Loc, "unknown sub-directive in '.cv_loc' directive");
-    }
-    return false;
-  };
-
-  if (parseMany(parseOp, false /*hasComma*/))
-    return true;
-
-  getStreamer().emitCVLocDirective(FunctionId, FileNumber, LineNumber,
-                                   ColumnPos, PrologueEnd, IsStmt, StringRef(),
-                                   DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCVLinetable
-/// ::= .cv_linetable FunctionId, FnStart, FnEnd
-bool MasmParser::parseDirectiveCVLinetable() {
-  int64_t FunctionId;
-  StringRef FnStartName, FnEndName;
-  SMLoc Loc = getTok().getLoc();
-  if (parseCVFunctionId(FunctionId, ".cv_linetable") ||
-      parseToken(AsmToken::Comma,
-                 "unexpected token in '.cv_linetable' directive") ||
-      parseTokenLoc(Loc) || check(parseIdentifier(FnStartName), Loc,
-                                  "expected identifier in directive") ||
-      parseToken(AsmToken::Comma,
-                 "unexpected token in '.cv_linetable' directive") ||
-      parseTokenLoc(Loc) || check(parseIdentifier(FnEndName), Loc,
-                                  "expected identifier in directive"))
-    return true;
-
-  MCSymbol *FnStartSym = getContext().getOrCreateSymbol(FnStartName);
-  MCSymbol *FnEndSym = getContext().getOrCreateSymbol(FnEndName);
-
-  getStreamer().emitCVLinetableDirective(FunctionId, FnStartSym, FnEndSym);
-  return false;
-}
-
-/// parseDirectiveCVInlineLinetable
-/// ::= .cv_inline_linetable PrimaryFunctionId FileId LineNum FnStart FnEnd
-bool MasmParser::parseDirectiveCVInlineLinetable() {
-  int64_t PrimaryFunctionId, SourceFileId, SourceLineNum;
-  StringRef FnStartName, FnEndName;
-  SMLoc Loc = getTok().getLoc();
-  if (parseCVFunctionId(PrimaryFunctionId, ".cv_inline_linetable") ||
-      parseTokenLoc(Loc) ||
-      parseIntToken(
-          SourceFileId,
-          "expected SourceField in '.cv_inline_linetable' directive") ||
-      check(SourceFileId <= 0, Loc,
-            "File id less than zero in '.cv_inline_linetable' directive") ||
-      parseTokenLoc(Loc) ||
-      parseIntToken(
-          SourceLineNum,
-          "expected SourceLineNum in '.cv_inline_linetable' directive") ||
-      check(SourceLineNum < 0, Loc,
-            "Line number less than zero in '.cv_inline_linetable' directive") ||
-      parseTokenLoc(Loc) || check(parseIdentifier(FnStartName), Loc,
-                                  "expected identifier in directive") ||
-      parseTokenLoc(Loc) || check(parseIdentifier(FnEndName), Loc,
-                                  "expected identifier in directive"))
-    return true;
-
-  if (parseEOL())
-    return true;
-
-  MCSymbol *FnStartSym = getContext().getOrCreateSymbol(FnStartName);
-  MCSymbol *FnEndSym = getContext().getOrCreateSymbol(FnEndName);
-  getStreamer().emitCVInlineLinetableDirective(PrimaryFunctionId, SourceFileId,
-                                               SourceLineNum, FnStartSym,
-                                               FnEndSym);
-  return false;
-}
-
-void MasmParser::initializeCVDefRangeTypeMap() {
-  CVDefRangeTypeMap["reg"] = CVDR_DEFRANGE_REGISTER;
-  CVDefRangeTypeMap["frame_ptr_rel"] = CVDR_DEFRANGE_FRAMEPOINTER_REL;
-  CVDefRangeTypeMap["subfield_reg"] = CVDR_DEFRANGE_SUBFIELD_REGISTER;
-  CVDefRangeTypeMap["reg_rel"] = CVDR_DEFRANGE_REGISTER_REL;
-}
-
-/// parseDirectiveCVDefRange
-/// ::= .cv_def_range RangeStart RangeEnd (GapStart GapEnd)*, bytes*
-bool MasmParser::parseDirectiveCVDefRange() {
-  SMLoc Loc;
-  std::vector<std::pair<const MCSymbol *, const MCSymbol *>> Ranges;
-  while (getLexer().is(AsmToken::Identifier)) {
-    Loc = getLexer().getLoc();
-    StringRef GapStartName;
-    if (parseIdentifier(GapStartName))
-      return Error(Loc, "expected identifier in directive");
-    MCSymbol *GapStartSym = getContext().getOrCreateSymbol(GapStartName);
-
-    Loc = getLexer().getLoc();
-    StringRef GapEndName;
-    if (parseIdentifier(GapEndName))
-      return Error(Loc, "expected identifier in directive");
-    MCSymbol *GapEndSym = getContext().getOrCreateSymbol(GapEndName);
-
-    Ranges.push_back({GapStartSym, GapEndSym});
-  }
-
-  StringRef CVDefRangeTypeStr;
-  if (parseToken(
-          AsmToken::Comma,
-          "expected comma before def_range type in .cv_def_range directive") ||
-      parseIdentifier(CVDefRangeTypeStr))
-    return Error(Loc, "expected def_range type in directive");
-
-  StringMap<CVDefRangeType>::const_iterator CVTypeIt =
-      CVDefRangeTypeMap.find(CVDefRangeTypeStr);
-  CVDefRangeType CVDRType = (CVTypeIt == CVDefRangeTypeMap.end())
-                                ? CVDR_DEFRANGE
-                                : CVTypeIt->getValue();
-  switch (CVDRType) {
-  case CVDR_DEFRANGE_REGISTER: {
-    int64_t DRRegister;
-    if (parseToken(AsmToken::Comma, "expected comma before register number in "
-                                    ".cv_def_range directive") ||
-        parseAbsoluteExpression(DRRegister))
-      return Error(Loc, "expected register number");
-
-    codeview::DefRangeRegisterHeader DRHdr;
-    DRHdr.Register = DRRegister;
-    DRHdr.MayHaveNoName = 0;
-    getStreamer().emitCVDefRangeDirective(Ranges, DRHdr);
-    break;
-  }
-  case CVDR_DEFRANGE_FRAMEPOINTER_REL: {
-    int64_t DROffset;
-    if (parseToken(AsmToken::Comma,
-                   "expected comma before offset in .cv_def_range directive") ||
-        parseAbsoluteExpression(DROffset))
-      return Error(Loc, "expected offset value");
-
-    codeview::DefRangeFramePointerRelHeader DRHdr;
-    DRHdr.Offset = DROffset;
-    getStreamer().emitCVDefRangeDirective(Ranges, DRHdr);
-    break;
-  }
-  case CVDR_DEFRANGE_SUBFIELD_REGISTER: {
-    int64_t DRRegister;
-    int64_t DROffsetInParent;
-    if (parseToken(AsmToken::Comma, "expected comma before register number in "
-                                    ".cv_def_range directive") ||
-        parseAbsoluteExpression(DRRegister))
-      return Error(Loc, "expected register number");
-    if (parseToken(AsmToken::Comma,
-                   "expected comma before offset in .cv_def_range directive") ||
-        parseAbsoluteExpression(DROffsetInParent))
-      return Error(Loc, "expected offset value");
-
-    codeview::DefRangeSubfieldRegisterHeader DRHdr;
-    DRHdr.Register = DRRegister;
-    DRHdr.MayHaveNoName = 0;
-    DRHdr.OffsetInParent = DROffsetInParent;
-    getStreamer().emitCVDefRangeDirective(Ranges, DRHdr);
-    break;
-  }
-  case CVDR_DEFRANGE_REGISTER_REL: {
-    int64_t DRRegister;
-    int64_t DRFlags;
-    int64_t DRBasePointerOffset;
-    if (parseToken(AsmToken::Comma, "expected comma before register number in "
-                                    ".cv_def_range directive") ||
-        parseAbsoluteExpression(DRRegister))
-      return Error(Loc, "expected register value");
-    if (parseToken(
-            AsmToken::Comma,
-            "expected comma before flag value in .cv_def_range directive") ||
-        parseAbsoluteExpression(DRFlags))
-      return Error(Loc, "expected flag value");
-    if (parseToken(AsmToken::Comma, "expected comma before base pointer offset "
-                                    "in .cv_def_range directive") ||
-        parseAbsoluteExpression(DRBasePointerOffset))
-      return Error(Loc, "expected base pointer offset value");
-
-    codeview::DefRangeRegisterRelHeader DRHdr;
-    DRHdr.Register = DRRegister;
-    DRHdr.Flags = DRFlags;
-    DRHdr.BasePointerOffset = DRBasePointerOffset;
-    getStreamer().emitCVDefRangeDirective(Ranges, DRHdr);
-    break;
-  }
-  default:
-    return Error(Loc, "unexpected def_range type in .cv_def_range directive");
-  }
-  return true;
-}
-
-/// parseDirectiveCVString
-/// ::= .cv_stringtable "string"
-bool MasmParser::parseDirectiveCVString() {
-  std::string Data;
-  if (checkForValidSection() || parseEscapedString(Data))
-    return addErrorSuffix(" in '.cv_string' directive");
-
-  // Put the string in the table and emit the offset.
-  std::pair<StringRef, unsigned> Insertion =
-      getCVContext().addToStringTable(Data);
-  getStreamer().emitIntValue(Insertion.second, 4);
-  return false;
-}
-
-/// parseDirectiveCVStringTable
-/// ::= .cv_stringtable
-bool MasmParser::parseDirectiveCVStringTable() {
-  getStreamer().emitCVStringTableDirective();
-  return false;
-}
-
-/// parseDirectiveCVFileChecksums
-/// ::= .cv_filechecksums
-bool MasmParser::parseDirectiveCVFileChecksums() {
-  getStreamer().emitCVFileChecksumsDirective();
-  return false;
-}
-
-/// parseDirectiveCVFileChecksumOffset
-/// ::= .cv_filechecksumoffset fileno
-bool MasmParser::parseDirectiveCVFileChecksumOffset() {
-  int64_t FileNo;
-  if (parseIntToken(FileNo, "expected identifier in directive"))
-    return true;
-  if (parseEOL())
-    return true;
-  getStreamer().emitCVFileChecksumOffsetDirective(FileNo);
-  return false;
-}
-
-/// parseDirectiveCVFPOData
-/// ::= .cv_fpo_data procsym
-bool MasmParser::parseDirectiveCVFPOData() {
-  SMLoc DirLoc = getLexer().getLoc();
-  StringRef ProcName;
-  if (parseIdentifier(ProcName))
-    return TokError("expected symbol name");
-  if (parseEOL("unexpected tokens"))
-    return addErrorSuffix(" in '.cv_fpo_data' directive");
-  MCSymbol *ProcSym = getContext().getOrCreateSymbol(ProcName);
-  getStreamer().emitCVFPOData(ProcSym, DirLoc);
-  return false;
-}
-
-/// parseDirectiveCFISections
-/// ::= .cfi_sections section [, section]
-bool MasmParser::parseDirectiveCFISections() {
-  StringRef Name;
-  bool EH = false;
-  bool Debug = false;
-
-  if (parseIdentifier(Name))
-    return TokError("Expected an identifier");
-
-  if (Name == ".eh_frame")
-    EH = true;
-  else if (Name == ".debug_frame")
-    Debug = true;
-
-  if (getLexer().is(AsmToken::Comma)) {
-    Lex();
-
-    if (parseIdentifier(Name))
-      return TokError("Expected an identifier");
-
-    if (Name == ".eh_frame")
-      EH = true;
-    else if (Name == ".debug_frame")
-      Debug = true;
-  }
-
-  getStreamer().emitCFISections(EH, Debug);
-  return false;
-}
-
-/// parseDirectiveCFIStartProc
-/// ::= .cfi_startproc [simple]
-bool MasmParser::parseDirectiveCFIStartProc() {
-  StringRef Simple;
-  if (!parseOptionalToken(AsmToken::EndOfStatement)) {
-    if (check(parseIdentifier(Simple) || Simple != "simple",
-              "unexpected token") ||
-        parseEOL())
-      return addErrorSuffix(" in '.cfi_startproc' directive");
-  }
-
-  // TODO(kristina): Deal with a corner case of incorrect diagnostic context
-  // being produced if this directive is emitted as part of preprocessor macro
-  // expansion which can *ONLY* happen if Clang's cc1as is the API consumer.
-  // Tools like llvm-mc on the other hand are not affected by it, and report
-  // correct context information.
-  getStreamer().emitCFIStartProc(!Simple.empty(), Lexer.getLoc());
-  return false;
-}
-
-/// parseDirectiveCFIEndProc
-/// ::= .cfi_endproc
-bool MasmParser::parseDirectiveCFIEndProc() {
-  getStreamer().emitCFIEndProc();
-  return false;
-}
-
 /// parse register name or number.
 bool MasmParser::parseRegisterOrRegisterNumber(int64_t &Register,
                                                SMLoc DirectiveLoc) {
@@ -5488,241 +4555,6 @@ bool MasmParser::parseRegisterOrRegisterNumber(int64_t &Register,
   return false;
 }
 
-/// parseDirectiveCFIDefCfa
-/// ::= .cfi_def_cfa register,  offset
-bool MasmParser::parseDirectiveCFIDefCfa(SMLoc DirectiveLoc) {
-  int64_t Register = 0, Offset = 0;
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
-      parseToken(AsmToken::Comma, "unexpected token in directive") ||
-      parseAbsoluteExpression(Offset))
-    return true;
-
-  getStreamer().emitCFIDefCfa(Register, Offset);
-  return false;
-}
-
-/// parseDirectiveCFIDefCfaOffset
-/// ::= .cfi_def_cfa_offset offset
-bool MasmParser::parseDirectiveCFIDefCfaOffset(SMLoc DirectiveLoc) {
-  int64_t Offset = 0;
-  if (parseAbsoluteExpression(Offset))
-    return true;
-
-  getStreamer().emitCFIDefCfaOffset(Offset, DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFIRegister
-/// ::= .cfi_register register, register
-bool MasmParser::parseDirectiveCFIRegister(SMLoc DirectiveLoc) {
-  int64_t Register1 = 0, Register2 = 0;
-  if (parseRegisterOrRegisterNumber(Register1, DirectiveLoc) ||
-      parseToken(AsmToken::Comma, "unexpected token in directive") ||
-      parseRegisterOrRegisterNumber(Register2, DirectiveLoc))
-    return true;
-
-  getStreamer().emitCFIRegister(Register1, Register2, DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFIWindowSave
-/// ::= .cfi_window_save
-bool MasmParser::parseDirectiveCFIWindowSave(SMLoc DirectiveLoc) {
-  getStreamer().emitCFIWindowSave(DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFIAdjustCfaOffset
-/// ::= .cfi_adjust_cfa_offset adjustment
-bool MasmParser::parseDirectiveCFIAdjustCfaOffset(SMLoc DirectiveLoc) {
-  int64_t Adjustment = 0;
-  if (parseAbsoluteExpression(Adjustment))
-    return true;
-
-  getStreamer().emitCFIAdjustCfaOffset(Adjustment, DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFIDefCfaRegister
-/// ::= .cfi_def_cfa_register register
-bool MasmParser::parseDirectiveCFIDefCfaRegister(SMLoc DirectiveLoc) {
-  int64_t Register = 0;
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc))
-    return true;
-
-  getStreamer().emitCFIDefCfaRegister(Register);
-  return false;
-}
-
-/// parseDirectiveCFIOffset
-/// ::= .cfi_offset register, offset
-bool MasmParser::parseDirectiveCFIOffset(SMLoc DirectiveLoc) {
-  int64_t Register = 0;
-  int64_t Offset = 0;
-
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
-      parseToken(AsmToken::Comma, "unexpected token in directive") ||
-      parseAbsoluteExpression(Offset))
-    return true;
-
-  getStreamer().emitCFIOffset(Register, Offset);
-  return false;
-}
-
-/// parseDirectiveCFIRelOffset
-/// ::= .cfi_rel_offset register, offset
-bool MasmParser::parseDirectiveCFIRelOffset(SMLoc DirectiveLoc) {
-  int64_t Register = 0, Offset = 0;
-
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
-      parseToken(AsmToken::Comma, "unexpected token in directive") ||
-      parseAbsoluteExpression(Offset))
-    return true;
-
-  getStreamer().emitCFIRelOffset(Register, Offset, DirectiveLoc);
-  return false;
-}
-
-static bool isValidEncoding(int64_t Encoding) {
-  if (Encoding & ~0xff)
-    return false;
-
-  if (Encoding == dwarf::DW_EH_PE_omit)
-    return true;
-
-  const unsigned Format = Encoding & 0xf;
-  if (Format != dwarf::DW_EH_PE_absptr && Format != dwarf::DW_EH_PE_udata2 &&
-      Format != dwarf::DW_EH_PE_udata4 && Format != dwarf::DW_EH_PE_udata8 &&
-      Format != dwarf::DW_EH_PE_sdata2 && Format != dwarf::DW_EH_PE_sdata4 &&
-      Format != dwarf::DW_EH_PE_sdata8 && Format != dwarf::DW_EH_PE_signed)
-    return false;
-
-  const unsigned Application = Encoding & 0x70;
-  if (Application != dwarf::DW_EH_PE_absptr &&
-      Application != dwarf::DW_EH_PE_pcrel)
-    return false;
-
-  return true;
-}
-
-/// parseDirectiveCFIPersonalityOrLsda
-/// IsPersonality true for cfi_personality, false for cfi_lsda
-/// ::= .cfi_personality encoding, [symbol_name]
-/// ::= .cfi_lsda encoding, [symbol_name]
-bool MasmParser::parseDirectiveCFIPersonalityOrLsda(bool IsPersonality) {
-  int64_t Encoding = 0;
-  if (parseAbsoluteExpression(Encoding))
-    return true;
-  if (Encoding == dwarf::DW_EH_PE_omit)
-    return false;
-
-  StringRef Name;
-  if (check(!isValidEncoding(Encoding), "unsupported encoding.") ||
-      parseToken(AsmToken::Comma, "unexpected token in directive") ||
-      check(parseIdentifier(Name), "expected identifier in directive"))
-    return true;
-
-  MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
-
-  if (IsPersonality)
-    getStreamer().emitCFIPersonality(Sym, Encoding);
-  else
-    getStreamer().emitCFILsda(Sym, Encoding);
-  return false;
-}
-
-/// parseDirectiveCFIRememberState
-/// ::= .cfi_remember_state
-bool MasmParser::parseDirectiveCFIRememberState(SMLoc DirectiveLoc) {
-  getStreamer().emitCFIRememberState(DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFIRestoreState
-/// ::= .cfi_remember_state
-bool MasmParser::parseDirectiveCFIRestoreState(SMLoc DirectiveLoc) {
-  getStreamer().emitCFIRestoreState(DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFISameValue
-/// ::= .cfi_same_value register
-bool MasmParser::parseDirectiveCFISameValue(SMLoc DirectiveLoc) {
-  int64_t Register = 0;
-
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc))
-    return true;
-
-  getStreamer().emitCFISameValue(Register, DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFIRestore
-/// ::= .cfi_restore register
-bool MasmParser::parseDirectiveCFIRestore(SMLoc DirectiveLoc) {
-  int64_t Register = 0;
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc))
-    return true;
-
-  getStreamer().emitCFIRestore(Register);
-  return false;
-}
-
-/// parseDirectiveCFIEscape
-/// ::= .cfi_escape expression[,...]
-bool MasmParser::parseDirectiveCFIEscape(SMLoc DirectiveLoc) {
-  std::string Values;
-  int64_t CurrValue;
-  if (parseAbsoluteExpression(CurrValue))
-    return true;
-
-  Values.push_back((uint8_t)CurrValue);
-
-  while (getLexer().is(AsmToken::Comma)) {
-    Lex();
-
-    if (parseAbsoluteExpression(CurrValue))
-      return true;
-
-    Values.push_back((uint8_t)CurrValue);
-  }
-
-  getStreamer().emitCFIEscape(Values, DirectiveLoc);
-  return false;
-}
-
-/// parseDirectiveCFIReturnColumn
-/// ::= .cfi_return_column register
-bool MasmParser::parseDirectiveCFIReturnColumn(SMLoc DirectiveLoc) {
-  int64_t Register = 0;
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc))
-    return true;
-  getStreamer().emitCFIReturnColumn(Register);
-  return false;
-}
-
-/// parseDirectiveCFISignalFrame
-/// ::= .cfi_signal_frame
-bool MasmParser::parseDirectiveCFISignalFrame() {
-  if (parseEOL())
-    return true;
-
-  getStreamer().emitCFISignalFrame();
-  return false;
-}
-
-/// parseDirectiveCFIUndefined
-/// ::= .cfi_undefined register
-bool MasmParser::parseDirectiveCFIUndefined(SMLoc DirectiveLoc) {
-  int64_t Register = 0;
-
-  if (parseRegisterOrRegisterNumber(Register, DirectiveLoc))
-    return true;
-
-  getStreamer().emitCFIUndefined(Register);
-  return false;
-}
-
 /// parseDirectiveMacro
 /// ::= name macro [parameters]
 ///     ["LOCAL" identifiers]


        


More information about the llvm-commits mailing list