[Mlir-commits] [mlir] [MLIR][IRDL] Relax the restrictions on IRDL-defined names (PR #187911)
Théo Degioanni
llvmlistbot at llvm.org
Mon Mar 23 00:11:51 PDT 2026
================
@@ -65,16 +65,46 @@ static std::string joinNameList(llvm::ArrayRef<std::string> names) {
return nameArray;
}
+// Convert a dialect/operation/type/attribute name to a valid identifier in C++.
+// The conversion is done by removing dots, underscores and dollar signs and
+// capitalizing the following character. For example, `name.with.dots` will be
+// converted to `nameWithDots` with `capitalizeFirst = false`.
+static std::string toCppName(StringRef input, bool capitalizeFirst = false) {
+ if (input.empty())
+ return "";
+
+ std::string output;
+ output.reserve(input.size());
+
+ // Push the first character, capatilizing if necessary.
+ if (capitalizeFirst && std::islower(input.front()))
+ output.push_back(llvm::toUpper(input.front()));
+ else
+ output.push_back(input.front());
+
+ // Walk the input converting any `*[._$]+[a-z]` snake case into `*[A-Z]`
+ // camelCase.
+ bool isSpecial = false;
+ for (char c : input.drop_front()) {
+ if (c == '_' || c == '.' || c == '$')
+ isSpecial = true;
+ else if (isSpecial) {
+ output.push_back(llvm::toUpper(c));
----------------
Moxinilian wrote:
An alternative approach that I believe was suggested by @math-fehr is that we could have an additional, optional "camel case name" wherever a name is formulated. Its default value would be the result of the logic above, then verifiers would make sure camel case names do not conflict with each other within the same namespace.
https://github.com/llvm/llvm-project/pull/187911
More information about the Mlir-commits
mailing list