OSDN Git Service

Revert r274536: [mips][ias] Don't break apart and reconstruct StringRef's for k_Token...
authorDaniel Sanders <daniel.sanders@imgtec.com>
Tue, 5 Jul 2016 10:44:24 +0000 (10:44 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Tue, 5 Jul 2016 10:44:24 +0000 (10:44 +0000)
It turns out that MSVC requires this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274538 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/AsmParser/MipsAsmParser.cpp

index 3cfc469..7a48ad6 100644 (file)
@@ -599,7 +599,8 @@ private:
   MipsAsmParser &AsmParser;
 
   struct Token {
-    StringRef Str;
+    const char *Data;
+    unsigned Length;
   };
 
   struct PhysRegOp {
@@ -1165,7 +1166,7 @@ public:
 
   StringRef getToken() const {
     assert(Kind == k_Token && "Invalid access!");
-    return Tok.Str;
+    return StringRef(Tok.Data, Tok.Length);
   }
   bool isRegPair() const {
     return Kind == k_RegPair && RegIdx.Index <= 30;
@@ -1219,7 +1220,8 @@ public:
   static std::unique_ptr<MipsOperand> CreateToken(StringRef Str, SMLoc S,
                                                   MipsAsmParser &Parser) {
     auto Op = make_unique<MipsOperand>(k_Token, Parser);
-    Op->Tok.Str = Str;
+    Op->Tok.Data = Str.data();
+    Op->Tok.Length = Str.size();
     Op->StartLoc = S;
     Op->EndLoc = S;
     return Op;
@@ -1435,7 +1437,7 @@ public:
       OS << "RegIdx<" << RegIdx.Index << ":" << RegIdx.Kind << ">";
       break;
     case k_Token:
-      OS << Tok.Str;
+      OS << Tok.Data;
       break;
     case k_RegList:
       OS << "RegList< ";