[llvm] r348648 - [WebAssembly] clang-format/clang-tidy AsmParser (NFC)

Heejin Ahn via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 7 13:35:38 PST 2018


Author: aheejin
Date: Fri Dec  7 13:35:37 2018
New Revision: 348648

URL: http://llvm.org/viewvc/llvm-project?rev=348648&view=rev
Log:
[WebAssembly] clang-format/clang-tidy AsmParser (NFC)

Summary:
- LLVM clang-format style doesn't allow one-line ifs.
- LLVM clang-tidy style says method names should start with a lowercase
  letter. But currently WebAssemblyAsmParser's parent class
  MCTargetAsmParser is mixing lowercase and uppercase method names
  itself so overridden methods cannot be renamed now.
- Changed else ifs after returns to ifs.
- Added some newlines for readability.

Reviewers: aardappel, sbc100

Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits

Differential Revision: https://reviews.llvm.org/D55350

Modified:
    llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp

Modified: llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp?rev=348648&r1=348647&r2=348648&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp Fri Dec  7 13:35:37 2018
@@ -175,27 +175,27 @@ public:
     llvm_unreachable("ParseRegister is not implemented.");
   }
 
-  bool Error(const StringRef &msg, const AsmToken &tok) {
-    return Parser.Error(tok.getLoc(), msg + tok.getString());
+  bool error(const StringRef &Msg, const AsmToken &Tok) {
+    return Parser.Error(Tok.getLoc(), Msg + Tok.getString());
   }
 
-  bool IsNext(AsmToken::TokenKind Kind) {
-    auto ok = Lexer.is(Kind);
-    if (ok)
+  bool isNext(AsmToken::TokenKind Kind) {
+    auto Ok = Lexer.is(Kind);
+    if (Ok)
       Parser.Lex();
-    return ok;
+    return Ok;
   }
 
-  bool Expect(AsmToken::TokenKind Kind, const char *KindName) {
-    if (!IsNext(Kind))
-      return Error(std::string("Expected ") + KindName + ", instead got: ",
+  bool expect(AsmToken::TokenKind Kind, const char *KindName) {
+    if (!isNext(Kind))
+      return error(std::string("Expected ") + KindName + ", instead got: ",
                    Lexer.getTok());
     return false;
   }
 
-  StringRef ExpectIdent() {
+  StringRef expectIdent() {
     if (!Lexer.is(AsmToken::Identifier)) {
-      Error("Expected identifier, got: ", Lexer.getTok());
+      error("Expected identifier, got: ", Lexer.getTok());
       return StringRef();
     }
     auto Name = Lexer.getTok().getString();
@@ -203,33 +203,38 @@ public:
     return Name;
   }
 
-  Optional<wasm::ValType> ParseType(const StringRef &Type) {
+  Optional<wasm::ValType> parseType(const StringRef &Type) {
     // FIXME: can't use StringSwitch because wasm::ValType doesn't have a
     // "invalid" value.
-    if (Type == "i32") return wasm::ValType::I32;
-    if (Type == "i64") return wasm::ValType::I64;
-    if (Type == "f32") return wasm::ValType::F32;
-    if (Type == "f64") return wasm::ValType::F64;
+    if (Type == "i32")
+      return wasm::ValType::I32;
+    if (Type == "i64")
+      return wasm::ValType::I64;
+    if (Type == "f32")
+      return wasm::ValType::F32;
+    if (Type == "f64")
+      return wasm::ValType::F64;
     if (Type == "v128" || Type == "i8x16" || Type == "i16x8" ||
         Type == "i32x4" || Type == "i64x2" || Type == "f32x4" ||
-        Type == "f64x2") return wasm::ValType::V128;
+        Type == "f64x2")
+      return wasm::ValType::V128;
     return Optional<wasm::ValType>();
   }
 
-  bool ParseRegTypeList(SmallVectorImpl<wasm::ValType> &Types) {
+  bool parseRegTypeList(SmallVectorImpl<wasm::ValType> &Types) {
     while (Lexer.is(AsmToken::Identifier)) {
-      auto Type = ParseType(Lexer.getTok().getString());
+      auto Type = parseType(Lexer.getTok().getString());
       if (!Type)
         return true;
       Types.push_back(Type.getValue());
       Parser.Lex();
-      if (!IsNext(AsmToken::Comma))
+      if (!isNext(AsmToken::Comma))
         break;
     }
     return false;
   }
 
-  void ParseSingleInteger(bool IsNegative, OperandVector &Operands) {
+  void parseSingleInteger(bool IsNegative, OperandVector &Operands) {
     auto &Int = Lexer.getTok();
     int64_t Val = Int.getIntVal();
     if (IsNegative)
@@ -240,9 +245,9 @@ public:
     Parser.Lex();
   }
 
-  bool ParseOperandStartingWithInteger(bool IsNegative, OperandVector &Operands,
+  bool parseOperandStartingWithInteger(bool IsNegative, OperandVector &Operands,
                                        StringRef InstName) {
-    ParseSingleInteger(IsNegative, Operands);
+    parseSingleInteger(IsNegative, Operands);
     // FIXME: there is probably a cleaner way to do this.
     auto IsLoadStore = InstName.startswith("load") ||
                        InstName.startswith("store") ||
@@ -252,7 +257,7 @@ public:
       // Parse load/store operands of the form: offset align
       auto &Offset = Lexer.getTok();
       if (Offset.is(AsmToken::Integer)) {
-        ParseSingleInteger(false, Operands);
+        parseSingleInteger(false, Operands);
       } else {
         // Alignment not specified.
         // FIXME: correctly derive a default from the instruction.
@@ -271,13 +276,15 @@ public:
     // Note: Name does NOT point into the sourcecode, but to a local, so
     // use NameLoc instead.
     Name = StringRef(NameLoc.getPointer(), Name.size());
+
     // WebAssembly has instructions with / in them, which AsmLexer parses
     // as seperate tokens, so if we find such tokens immediately adjacent (no
     // whitespace), expand the name to include them:
     for (;;) {
       auto &Sep = Lexer.getTok();
       if (Sep.getLoc().getPointer() != Name.end() ||
-          Sep.getKind() != AsmToken::Slash) break;
+          Sep.getKind() != AsmToken::Slash)
+        break;
       // Extend name with /
       Name = StringRef(Name.begin(), Name.size() + Sep.getString().size());
       Parser.Lex();
@@ -285,10 +292,11 @@ public:
       auto &Id = Lexer.getTok();
       if (Id.getKind() != AsmToken::Identifier ||
           Id.getLoc().getPointer() != Name.end())
-        return Error("Incomplete instruction name: ", Id);
+        return error("Incomplete instruction name: ", Id);
       Name = StringRef(Name.begin(), Name.size() + Id.getString().size());
       Parser.Lex();
     }
+
     // Now construct the name as first operand.
     Operands.push_back(make_unique<WebAssemblyOperand>(
         WebAssemblyOperand::Token, NameLoc, SMLoc::getFromPointer(Name.end()),
@@ -296,6 +304,7 @@ public:
     auto NamePair = Name.split('.');
     // If no '.', there is no type prefix.
     auto BaseName = NamePair.second.empty() ? NamePair.first : NamePair.second;
+
     while (Lexer.isNot(AsmToken::EndOfStatement)) {
       auto &Tok = Lexer.getTok();
       switch (Tok.getKind()) {
@@ -304,7 +313,7 @@ public:
         const MCExpr *Val;
         SMLoc End;
         if (Parser.parsePrimaryExpr(Val, End))
-          return Error("Cannot parse symbol: ", Lexer.getTok());
+          return error("Cannot parse symbol: ", Lexer.getTok());
         Operands.push_back(make_unique<WebAssemblyOperand>(
             WebAssemblyOperand::Symbol, Id.getLoc(), Id.getEndLoc(),
             WebAssemblyOperand::SymOp{Val}));
@@ -313,18 +322,18 @@ public:
       case AsmToken::Minus:
         Parser.Lex();
         if (Lexer.isNot(AsmToken::Integer))
-          return Error("Expected integer instead got: ", Lexer.getTok());
-        if (ParseOperandStartingWithInteger(true, Operands, BaseName))
+          return error("Expected integer instead got: ", Lexer.getTok());
+        if (parseOperandStartingWithInteger(true, Operands, BaseName))
           return true;
         break;
       case AsmToken::Integer:
-        if (ParseOperandStartingWithInteger(false, Operands, BaseName))
+        if (parseOperandStartingWithInteger(false, Operands, BaseName))
           return true;
         break;
       case AsmToken::Real: {
         double Val;
         if (Tok.getString().getAsDouble(Val, false))
-          return Error("Cannot parse real: ", Tok);
+          return error("Cannot parse real: ", Tok);
         Operands.push_back(make_unique<WebAssemblyOperand>(
             WebAssemblyOperand::Float, Tok.getLoc(), Tok.getEndLoc(),
             WebAssemblyOperand::FltOp{Val}));
@@ -332,14 +341,15 @@ public:
         break;
       }
       default:
-        return Error("Unexpected token in operand: ", Tok);
+        return error("Unexpected token in operand: ", Tok);
       }
       if (Lexer.isNot(AsmToken::EndOfStatement)) {
-        if (Expect(AsmToken::Comma, ","))
+        if (expect(AsmToken::Comma, ","))
           return true;
       }
     }
     Parser.Lex();
+
     // Block instructions require a signature index, but these are missing in
     // assembly, so we add a dummy one explicitly (since we have no control
     // over signature tables here, we assume these will be regenerated when
@@ -371,66 +381,84 @@ public:
     auto &Out = getStreamer();
     auto &TOut =
         reinterpret_cast<WebAssemblyTargetStreamer &>(*Out.getTargetStreamer());
+
     // TODO: any time we return an error, at least one token must have been
     // consumed, otherwise this will not signal an error to the caller.
     if (DirectiveID.getString() == ".globaltype") {
-      auto SymName = ExpectIdent();
-      if (SymName.empty()) return true;
-      if (Expect(AsmToken::Comma, ",")) return true;
+      auto SymName = expectIdent();
+      if (SymName.empty())
+        return true;
+      if (expect(AsmToken::Comma, ","))
+        return true;
       auto TypeTok = Lexer.getTok();
-      auto TypeName = ExpectIdent();
-      if (TypeName.empty()) return true;
-      auto Type = ParseType(TypeName);
+      auto TypeName = expectIdent();
+      if (TypeName.empty())
+        return true;
+      auto Type = parseType(TypeName);
       if (!Type)
-        return Error("Unknown type in .globaltype directive: ", TypeTok);
+        return error("Unknown type in .globaltype directive: ", TypeTok);
       // Now set this symbol with the correct type.
       auto WasmSym = cast<MCSymbolWasm>(
-                    TOut.getStreamer().getContext().getOrCreateSymbol(SymName));
+          TOut.getStreamer().getContext().getOrCreateSymbol(SymName));
       WasmSym->setType(wasm::WASM_SYMBOL_TYPE_GLOBAL);
       WasmSym->setGlobalType(
-            wasm::WasmGlobalType{uint8_t(Type.getValue()), true});
+          wasm::WasmGlobalType{uint8_t(Type.getValue()), true});
       // And emit the directive again.
       TOut.emitGlobalType(WasmSym);
-      return Expect(AsmToken::EndOfStatement, "EOL");
-    } else if (DirectiveID.getString() == ".functype") {
+      return expect(AsmToken::EndOfStatement, "EOL");
+    }
+
+    if (DirectiveID.getString() == ".functype") {
       // This code has to send things to the streamer similar to
       // WebAssemblyAsmPrinter::EmitFunctionBodyStart.
       // TODO: would be good to factor this into a common function, but the
       // assembler and backend really don't share any common code, and this code
       // parses the locals seperately.
-      auto SymName = ExpectIdent();
-      if (SymName.empty()) return true;
+      auto SymName = expectIdent();
+      if (SymName.empty())
+        return true;
       auto WasmSym = cast<MCSymbolWasm>(
-                    TOut.getStreamer().getContext().getOrCreateSymbol(SymName));
+          TOut.getStreamer().getContext().getOrCreateSymbol(SymName));
       if (CurrentState == Label && WasmSym == LastLabel) {
         // This .functype indicates a start of a function.
         CurrentState = FunctionStart;
       }
       auto Signature = make_unique<wasm::WasmSignature>();
-      if (Expect(AsmToken::LParen, "(")) return true;
-      if (ParseRegTypeList(Signature->Params)) return true;
-      if (Expect(AsmToken::RParen, ")")) return true;
-      if (Expect(AsmToken::MinusGreater, "->")) return true;
-      if (Expect(AsmToken::LParen, "(")) return true;
-      if (ParseRegTypeList(Signature->Returns)) return true;
-      if (Expect(AsmToken::RParen, ")")) return true;
+      if (expect(AsmToken::LParen, "("))
+        return true;
+      if (parseRegTypeList(Signature->Params))
+        return true;
+      if (expect(AsmToken::RParen, ")"))
+        return true;
+      if (expect(AsmToken::MinusGreater, "->"))
+        return true;
+      if (expect(AsmToken::LParen, "("))
+        return true;
+      if (parseRegTypeList(Signature->Returns))
+        return true;
+      if (expect(AsmToken::RParen, ")"))
+        return true;
       WasmSym->setSignature(Signature.get());
       addSignature(std::move(Signature));
       WasmSym->setType(wasm::WASM_SYMBOL_TYPE_FUNCTION);
       TOut.emitFunctionType(WasmSym);
       // TODO: backend also calls TOut.emitIndIdx, but that is not implemented.
-      return Expect(AsmToken::EndOfStatement, "EOL");
-    } else if (DirectiveID.getString() == ".local") {
+      return expect(AsmToken::EndOfStatement, "EOL");
+    }
+
+    if (DirectiveID.getString() == ".local") {
       if (CurrentState != FunctionStart)
-        return Error(".local directive should follow the start of a function",
+        return error(".local directive should follow the start of a function",
                      Lexer.getTok());
       SmallVector<wasm::ValType, 4> Locals;
-      if (ParseRegTypeList(Locals)) return true;
+      if (parseRegTypeList(Locals))
+        return true;
       TOut.emitLocal(Locals);
       CurrentState = FunctionLocals;
-      return Expect(AsmToken::EndOfStatement, "EOL");
+      return expect(AsmToken::EndOfStatement, "EOL");
     }
-    return true;  // We didn't process this directive.
+
+    return true; // We didn't process this directive.
   }
 
   bool MatchAndEmitInstruction(SMLoc IDLoc, unsigned & /*Opcode*/,




More information about the llvm-commits mailing list