diff options
Diffstat (limited to 'contrib/llvm/lib/MC/MCSymbol.cpp')
| -rw-r--r-- | contrib/llvm/lib/MC/MCSymbol.cpp | 40 | 
1 files changed, 9 insertions, 31 deletions
diff --git a/contrib/llvm/lib/MC/MCSymbol.cpp b/contrib/llvm/lib/MC/MCSymbol.cpp index ddc381407df8..8d07b7605cea 100644 --- a/contrib/llvm/lib/MC/MCSymbol.cpp +++ b/contrib/llvm/lib/MC/MCSymbol.cpp @@ -8,60 +8,38 @@  //===----------------------------------------------------------------------===//  #include "llvm/MC/MCSymbol.h" +#include "llvm/MC/MCAsmInfo.h"  #include "llvm/MC/MCExpr.h"  #include "llvm/Support/Debug.h" +#include "llvm/Support/ErrorHandling.h"  #include "llvm/Support/raw_ostream.h"  using namespace llvm;  // Sentinel value for the absolute pseudo section.  MCSection *MCSymbol::AbsolutePseudoSection = reinterpret_cast<MCSection *>(1); -static bool isAcceptableChar(char C) { -  if ((C < 'a' || C > 'z') && -      (C < 'A' || C > 'Z') && -      (C < '0' || C > '9') && -      C != '_' && C != '$' && C != '.' && C != '@') -    return false; -  return true; -} - -/// NameNeedsQuoting - Return true if the identifier \p Str needs quotes to be -/// syntactically correct. -static bool NameNeedsQuoting(StringRef Str) { -  assert(!Str.empty() && "Cannot create an empty MCSymbol"); - -  // If any of the characters in the string is an unacceptable character, force -  // quotes. -  for (unsigned i = 0, e = Str.size(); i != e; ++i) -    if (!isAcceptableChar(Str[i])) -      return true; -  return false; -} -  void MCSymbol::setVariableValue(const MCExpr *Value) {    assert(!IsUsed && "Cannot set a variable that has already been used.");    assert(Value && "Invalid variable value!");    this->Value = Value; -  this->Section = nullptr; +  SectionOrFragment = nullptr;  } -void MCSymbol::print(raw_ostream &OS) const { +void MCSymbol::print(raw_ostream &OS, const MCAsmInfo *MAI) const {    // The name for this MCSymbol is required to be a valid target name.  However,    // some targets support quoting names with funny characters.  If the name    // contains a funny character, then print it quoted.    StringRef Name = getName(); -  if (Name.empty()) { -    OS << "\"\""; -    return; -  } -  if (!NameNeedsQuoting(Name)) { +  if (!MAI || MAI->isValidUnquotedName(Name)) {      OS << Name;      return;    } +  if (MAI && !MAI->supportsNameQuoting()) +    report_fatal_error("Symbol name with unsupported characters"); +    OS << '"'; -  for (unsigned I = 0, E = Name.size(); I != E; ++I) { -    char C = Name[I]; +  for (char C : Name) {      if (C == '\n')        OS << "\\n";      else if (C == '"')  | 
