-
Notifications
You must be signed in to change notification settings - Fork 4
IRDL-to-C++ #15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
IRDL-to-C++ #15
Changes from 11 commits
74f7aa6
9f37bb6
c1ca4bd
483d5a2
71cc646
4b6bd5d
39dda7d
cb7337d
451c439
f25ce38
228729d
bf226ad
8d4bad5
704f111
d30c976
aa82910
3411c33
731fd7c
79d5acb
02d396e
3ddd47b
f6920fe
69ee9b0
0da3cb6
dfdb06a
19ae518
9160c95
2c496ec
b3801fe
3b9a32d
35d9dba
1cbb39d
aac4b98
5f77c3a
f00bf0d
739e8b1
9736b13
7727f15
bc41321
24b9d78
cb754ee
c8e98d9
73e8ff9
98efc62
77aaaf2
bda0295
1995868
14b3fde
4a9735e
447e474
c1feed3
edc9fa2
21eada6
d2ca62c
1c5c3c1
26f580e
732e606
44976b6
318f759
6d1beac
16b0414
05fa3a8
ef0d97e
91d6f80
8f7e939
764d638
dfbb919
3638c9b
a1f308e
db38f4e
1295496
b35f796
7c52b16
81a1530
cf508a9
da16951
784b04d
d99bc6a
e980d88
c26e36d
b9fb698
bc37a24
e51ae35
ef16ac5
e21a21f
c79ddcd
5ef348a
a30bb8d
b1ccf66
aae9e19
29581b7
180f3a5
c6b1fcd
fafc0ee
2abd9dc
f04509d
8d3e8c2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,8 +29,9 @@ namespace irdl { | |
/// | ||
/// // This define generates code for the dialect's class definitions | ||
/// #define GEN_DIALECT_DEF | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is that all the macro guards that are available? |
||
LogicalResult translateIRDLDialectToCpp(llvm::ArrayRef<irdl::DialectOp> dialect, | ||
raw_ostream &output); | ||
LogicalResult | ||
translateIRDLDialectToCpp(llvm::ArrayRef<irdl::DialectOp> dialects, | ||
raw_ostream &output); | ||
|
||
} // namespace irdl | ||
} // namespace mlir | ||
|
hhkit marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -74,13 +74,62 @@ static void printSingleBlockRegion(OpAsmPrinter &p, Operation *op, | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!region.getBlocks().front().empty()) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p.printRegion(region); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static llvm::LogicalResult isSnakeCase(llvm::StringRef in, mlir::Operation *loc, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hhkit marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const Twine &label) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (in.empty()) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return loc->emitError("name of ") << label << " is empty"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bool allowUnderscore = false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for (auto &elem : in) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (elem == '_') { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!allowUnderscore) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return loc->emitError("name of ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< label << " should not contain leading or double underscores"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Moxinilian marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Moxinilian marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!isalnum(elem)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return loc->emitError("name of ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< label | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< " must contain only lowercase letters, digits and " | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"underscores"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (llvm::isUpper(elem)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return loc->emitError("name of ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< label << " should not contain uppercase letters"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
allowUnderscore = elem != '_'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+83
to
+101
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I can't easily format on GitHub but I hope you get the gist.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return success(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LogicalResult DialectOp::verify() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!Dialect::isValidNamespace(getName())) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return emitOpError("invalid dialect name"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (failed(isSnakeCase(getSymName(), getOperation(), "dialect"))) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return failure(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return success(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LogicalResult OperationOp::verify() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return isSnakeCase(getSymName(), getOperation(), "operation"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LogicalResult TypeOp::verify() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
auto symName = getSymName(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (symName.front() == '!') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is no bueno but we have to due to symbols. Once this PR is merged upstream I'll fix it myself. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
symName = symName.substr(1); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return isSnakeCase(symName, getOperation(), "type"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LogicalResult AttributeOp::verify() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
auto symName = getSymName(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (symName.front() == '#') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
symName = symName.substr(1); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return isSnakeCase(symName, getOperation(), "attribute"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LogicalResult OperationOp::verifyRegions() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Stores pairs of value kinds and the list of names of values of this kind in | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// the operation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -133,18 +182,11 @@ static LogicalResult verifyNames(Operation *op, StringRef kindName, | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DenseMap<StringRef, size_t> nameMap; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for (auto [i, name] : llvm::enumerate(names)) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
StringRef nameRef = llvm::cast<StringAttr>(name).getValue(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (nameRef.empty()) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return op->emitOpError() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< "name of " << kindName << " #" << i << " is empty"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!llvm::isAlpha(nameRef[0]) && nameRef[0] != '_') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return op->emitOpError() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< "name of " << kindName << " #" << i | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< " must start with either a letter or an underscore"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (llvm::any_of(nameRef, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[](char c) { return !llvm::isAlnum(c) && c != '_'; })) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return op->emitOpError() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< "name of " << kindName << " #" << i | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< " must contain only letters, digits and underscores"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
auto verifyNameRef = | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isSnakeCase(nameRef, op, Twine(kindName) + " #" + Twine(i)); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (failed(verifyNameRef)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return verifyNameRef; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hhkit marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (nameMap.contains(nameRef)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return op->emitOpError() << "name of " << kindName << " #" << i | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< " is a duplicate of the name of " << kindName | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,6 +13,7 @@ | |
#include "llvm/ADT/SmallString.h" | ||
#include "llvm/ADT/SmallVector.h" | ||
#include "llvm/ADT/StringExtras.h" | ||
#include "llvm/ADT/TypeSwitch.h" | ||
#include "llvm/Support/FormatVariadic.h" | ||
#include "llvm/Support/raw_ostream.h" | ||
|
||
|
@@ -60,6 +61,35 @@ static std::string joinNameList(llvm::ArrayRef<std::string> names) { | |
return nameArray; | ||
} | ||
|
||
static llvm::LogicalResult isSnakeCase(llvm::StringRef in, | ||
hhkit marked this conversation as resolved.
Show resolved
Hide resolved
|
||
mlir::Operation *loc) { | ||
bool allowUnderscore = false; | ||
for (auto &elem : in) { | ||
if (elem == '_') { | ||
if (!allowUnderscore) | ||
return loc->emitError( | ||
llvm::formatv("Error in symbol name `{}`: No leading or double " | ||
"underscores allowed.", | ||
in)); | ||
} else { | ||
if (!isalnum(elem)) | ||
return loc->emitError( | ||
llvm::formatv("Error in symbol name `{}`: Only numbers and " | ||
"lower-case characters allowed.", | ||
in)); | ||
|
||
if (llvm::isUpper(elem)) | ||
return loc->emitError(llvm::formatv( | ||
"Error in symbol name `{}`: Upper-case characters are not allowed.", | ||
in)); | ||
} | ||
|
||
allowUnderscore = elem != '_'; | ||
} | ||
Moxinilian marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
return success(); | ||
} | ||
|
||
static std::string snakeToCamel(llvm::StringRef in, bool capitalize = false) { | ||
std::string output; | ||
output.reserve(in.size()); | ||
|
@@ -472,31 +502,69 @@ void {0}::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, | |
} | ||
|
||
static LogicalResult verifySupported(irdl::DialectOp dialect) { | ||
Moxinilian marked this conversation as resolved.
Show resolved
Hide resolved
|
||
for (auto operation : dialect.getOps<irdl::OperationOp>()) { | ||
// scan operands of operation | ||
for (auto operands : operation.getOps<irdl::OperandsOp>()) { | ||
for (auto operand : operands.getOperands()) { | ||
if (!llvm::isa<irdl::AnyOp>(operand.getDefiningOp())) { | ||
return operands.emitError( | ||
"IRDL C++ translation only supports irdl.any " | ||
"constraint for types"); | ||
} | ||
} | ||
} | ||
|
||
// scan results of operation | ||
for (auto results : operation.getOps<irdl::ResultsOp>()) { | ||
for (auto operand : results.getOperands()) { | ||
if (!llvm::isa<irdl::AnyOp>(operand.getDefiningOp())) { | ||
return results.emitError( | ||
"IRDL C++ translation only supports irdl.any " | ||
"constraint for types"); | ||
} | ||
} | ||
} | ||
} | ||
if (failed(isSnakeCase(dialect.getSymName(), dialect))) | ||
hhkit marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return failure(); | ||
|
||
return success(); | ||
LogicalResult res = success(); | ||
dialect.walk([&](mlir::Operation *op) { | ||
res = | ||
llvm::TypeSwitch<Operation *, LogicalResult>(op) | ||
.Case<irdl::AttributeOp>([](irdl::AttributeOp op) -> LogicalResult { | ||
return op.emitError( | ||
"IRDL C++ translation does not yet support attributes."); | ||
}) | ||
.Case<irdl::AttributesOp>( | ||
[](irdl::AttributesOp op) -> LogicalResult { | ||
return op.emitError( | ||
"IRDL C++ translation does not yet support attributes."); | ||
}) | ||
.Case<irdl::AnyOfOp>([](irdl::AnyOfOp op) -> LogicalResult { | ||
return op.emitError("IRDL C++ translation only supports irdl.any " | ||
"constraint for types"); | ||
}) | ||
.Case<irdl::AllOfOp>([](irdl::AllOfOp op) -> LogicalResult { | ||
return op.emitError("IRDL C++ translation only supports irdl.any " | ||
"constraint for types"); | ||
}) | ||
.Case<irdl::BaseOp>([](irdl::BaseOp op) -> LogicalResult { | ||
return op.emitError( | ||
"IRDL C++ translation does not yet support base types."); | ||
}) | ||
.Case<irdl::ParametersOp>([](irdl::ParametersOp op) | ||
-> LogicalResult { | ||
return op.emitError( | ||
"IRDL C++ translation does not yet support type parameters."); | ||
}) | ||
.Case<irdl::ParametricOp>( | ||
[](irdl::ParametricOp op) -> LogicalResult { | ||
return op.emitError("IRDL C++ translation does not yet " | ||
"support parametric operations."); | ||
}) | ||
.Case<irdl::RegionOp>([](irdl::RegionOp op) -> LogicalResult { | ||
return op.emitError( | ||
"IRDL C++ translation does not yet support regions."); | ||
}) | ||
.Case<irdl::RegionsOp>([](irdl::RegionsOp op) -> LogicalResult { | ||
return op.emitError( | ||
"IRDL C++ translation does not yet support regions."); | ||
}) | ||
.Case<irdl::IsOp>([](irdl::IsOp op) -> LogicalResult { | ||
return op.emitError("IRDL C++ translation only supports irdl.any " | ||
"constraint for types"); | ||
}) | ||
.Case<irdl::CPredOp>([](irdl::CPredOp op) -> LogicalResult { | ||
return op.emitError("IRDL C++ translation only supports irdl.any " | ||
"constraint for types"); | ||
}) | ||
.Default(success()); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do it the other way around, success if the operation is explicitly supported (and then check that the operands are constraints that you support, which you are not doing right now I believe). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The reason I say this is because at some point I expect irdl.dialect will not be isolated from above anymore so SSA values could come from outside of it. This would hijack your checks. |
||
|
||
if (failed(res)) | ||
return WalkResult::interrupt(); | ||
|
||
return WalkResult::advance(); | ||
}); | ||
|
||
return res; | ||
} | ||
|
||
LogicalResult | ||
|
@@ -511,26 +579,11 @@ irdl::translateIRDLDialectToCpp(llvm::ArrayRef<irdl::DialectOp> dialects, | |
for (auto dialect : dialects) { | ||
StringRef dialectName = dialect.getSymName(); | ||
|
||
// TODO: deal with no more constraints than the verifier allows. | ||
if (dialectName.size() < 1) { | ||
result = | ||
dialect->emitError("dialect name must be more than one character"); | ||
continue; | ||
} | ||
if (!llvm::isAlpha(dialectName[0])) { | ||
result = dialect->emitError("dialect name must start with a letter"); | ||
continue; | ||
} | ||
if (!llvm::all_of(dialectName, | ||
[](char c) { return llvm::isAlnum(c) || c == '_'; })) { | ||
result = dialect->emitError( | ||
"dialect name must only contain letters, numbers or underscores"); | ||
if (failed(verifySupported(dialect))) { | ||
result = failure(); | ||
hhkit marked this conversation as resolved.
Show resolved
Hide resolved
|
||
continue; | ||
} | ||
|
||
if (failed(verifySupported(dialect))) | ||
result = failure(); | ||
|
||
llvm::SmallVector<llvm::SmallString<8>> namespaceAbsolutePath{{"mlir"}, | ||
dialectName}; | ||
std::string namespaceOpen; | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
// RUN: mlir-opt %s | FileCheck %s | ||
// CHECK: module { | ||
module { | ||
// CHECK: %[[v0:[^ ]*]] = "test_irdl_to_cpp.bar"() : () -> !test_irdl_to_cpp.foo | ||
%0 = "test_irdl_to_cpp.bar"() : () -> !test_irdl_to_cpp.foo | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spacing is inconsistent 👉 👈