diff --git a/mlir/include/mlir/Support/LLVM.h b/mlir/include/mlir/Support/LLVM.h --- a/mlir/include/mlir/Support/LLVM.h +++ b/mlir/include/mlir/Support/LLVM.h @@ -60,6 +60,8 @@ class SmallVectorImpl; template class StringSet; +template +class StringSwitch; template class TinyPtrVector; template @@ -111,6 +113,8 @@ using llvm::SmallPtrSetImpl; using llvm::SmallVector; using llvm::SmallVectorImpl; +template +using StringSwitch = llvm::StringSwitch; using llvm::TinyPtrVector; template using TypeSwitch = llvm::TypeSwitch; diff --git a/mlir/lib/Conversion/GPUCommon/IndexIntrinsicsOpLowering.h b/mlir/lib/Conversion/GPUCommon/IndexIntrinsicsOpLowering.h --- a/mlir/lib/Conversion/GPUCommon/IndexIntrinsicsOpLowering.h +++ b/mlir/lib/Conversion/GPUCommon/IndexIntrinsicsOpLowering.h @@ -27,7 +27,7 @@ unsigned indexBitwidth; static dimension dimensionToIndex(Op op) { - return llvm::StringSwitch(op.dimension()) + return StringSwitch(op.dimension()) .Case("x", X) .Case("y", Y) .Case("z", Z) diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMTypeSyntax.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMTypeSyntax.cpp --- a/mlir/lib/Dialect/LLVMIR/IR/LLVMTypeSyntax.cpp +++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMTypeSyntax.cpp @@ -440,7 +440,7 @@ if (failed(parser.parseKeyword(&key))) return LLVMType(); - return llvm::StringSwitch>(key) + return StringSwitch>(key) .Case("void", [&] { return LLVMVoidType::get(ctx); }) .Case("half", [&] { return LLVMHalfType::get(ctx); }) .Case("bfloat", [&] { return LLVMBFloatType::get(ctx); }) diff --git a/mlir/lib/Dialect/PDL/IR/PDL.cpp b/mlir/lib/Dialect/PDL/IR/PDL.cpp --- a/mlir/lib/Dialect/PDL/IR/PDL.cpp +++ b/mlir/lib/Dialect/PDL/IR/PDL.cpp @@ -34,7 +34,7 @@ return Type(); Builder &builder = parser.getBuilder(); - Type result = llvm::StringSwitch(keyword) + Type result = StringSwitch(keyword) .Case("attribute", builder.getType()) .Case("operation", builder.getType()) .Case("type", builder.getType()) diff --git a/mlir/lib/ExecutionEngine/JitRunner.cpp b/mlir/lib/ExecutionEngine/JitRunner.cpp --- a/mlir/lib/ExecutionEngine/JitRunner.cpp +++ b/mlir/lib/ExecutionEngine/JitRunner.cpp @@ -291,7 +291,7 @@ Error (*)(Options &, ModuleOp, StringRef, std::function); auto compileAndExecuteFn = - llvm::StringSwitch(options.mainFuncType.getValue()) + StringSwitch(options.mainFuncType.getValue()) .Case("i32", compileAndExecuteSingleReturnFunction) .Case("i64", compileAndExecuteSingleReturnFunction) .Case("f32", compileAndExecuteSingleReturnFunction) diff --git a/mlir/lib/IR/SymbolTable.cpp b/mlir/lib/IR/SymbolTable.cpp --- a/mlir/lib/IR/SymbolTable.cpp +++ b/mlir/lib/IR/SymbolTable.cpp @@ -166,7 +166,7 @@ return Visibility::Public; // Otherwise, switch on the string value. - return llvm::StringSwitch(vis.getValue()) + return StringSwitch(vis.getValue()) .Case("private", Visibility::Private) .Case("nested", Visibility::Nested) .Case("public", Visibility::Public); diff --git a/mlir/lib/Parser/Lexer.cpp b/mlir/lib/Parser/Lexer.cpp --- a/mlir/lib/Parser/Lexer.cpp +++ b/mlir/lib/Parser/Lexer.cpp @@ -212,7 +212,7 @@ isAllDigit(spelling.drop_front(2)))) return Token(Token::inttype, spelling); - Token::Kind kind = llvm::StringSwitch(spelling) + Token::Kind kind = StringSwitch(spelling) #define TOK_KEYWORD(SPELLING) .Case(#SPELLING, Token::kw_##SPELLING) #include "TokenKinds.def" .Default(Token::bare_identifier); diff --git a/mlir/lib/TableGen/Format.cpp b/mlir/lib/TableGen/Format.cpp --- a/mlir/lib/TableGen/Format.cpp +++ b/mlir/lib/TableGen/Format.cpp @@ -60,7 +60,7 @@ } FmtContext::PHKind FmtContext::getPlaceHolderKind(StringRef str) { - return llvm::StringSwitch(str) + return StringSwitch(str) .Case("_builder", FmtContext::PHKind::Builder) .Case("_op", FmtContext::PHKind::Op) .Case("_self", FmtContext::PHKind::Self) diff --git a/mlir/lib/TableGen/Predicate.cpp b/mlir/lib/TableGen/Predicate.cpp --- a/mlir/lib/TableGen/Predicate.cpp +++ b/mlir/lib/TableGen/Predicate.cpp @@ -119,7 +119,7 @@ return PredCombinerKind::Leaf; const auto &combinedPred = static_cast(pred); - return llvm::StringSwitch( + return StringSwitch( combinedPred.getCombinerDef()->getName()) .Case("PredCombinerAnd", PredCombinerKind::And) .Case("PredCombinerOr", PredCombinerKind::Or) diff --git a/mlir/test/lib/Dialect/Test/TestDialect.cpp b/mlir/test/lib/Dialect/Test/TestDialect.cpp --- a/mlir/test/lib/Dialect/Test/TestDialect.cpp +++ b/mlir/test/lib/Dialect/Test/TestDialect.cpp @@ -685,7 +685,7 @@ // Get the specific memory effect. MemoryEffects::Effect *effect = - llvm::StringSwitch( + StringSwitch( effectElement.get("effect").cast().getValue()) .Case("allocate", MemoryEffects::Allocate::get()) .Case("free", MemoryEffects::Free::get()) diff --git a/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-gen.cpp b/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-gen.cpp --- a/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-gen.cpp +++ b/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-gen.cpp @@ -288,7 +288,7 @@ // Check to see if this identifier is a keyword. StringRef str(tokStart, curPtr - tokStart); - Token::Kind kind = llvm::StringSwitch(str) + Token::Kind kind = StringSwitch(str) .Case("def", Token::Kind::kw_def) .Case("ods_def", Token::Kind::kw_ods_def) .Case("floordiv", Token::Kind::kw_floordiv) diff --git a/mlir/tools/mlir-tblgen/OpFormatGen.cpp b/mlir/tools/mlir-tblgen/OpFormatGen.cpp --- a/mlir/tools/mlir-tblgen/OpFormatGen.cpp +++ b/mlir/tools/mlir-tblgen/OpFormatGen.cpp @@ -719,7 +719,7 @@ body << "Keyword(\"" << value << "\")"; return; } - body << (StringRef)llvm::StringSwitch(value) + body << (StringRef)StringSwitch(value) .Case("->", "Arrow()") .Case(":", "Colon()") .Case(",", "Comma()") @@ -1936,7 +1936,7 @@ // Check to see if this identifier is a keyword. StringRef str(tokStart, curPtr - tokStart); Token::Kind kind = - llvm::StringSwitch(str) + StringSwitch(str) .Case("attr-dict", Token::kw_attr_dict) .Case("attr-dict-with-keyword", Token::kw_attr_dict_w_keyword) .Case("custom", Token::kw_custom)