[llvm] [mlir] [mlir][bytecode] Add builtin dialect version (PR #184678)
Jacques Pienaar via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 8 12:41:32 PDT 2026
================
@@ -239,6 +239,41 @@ struct BuiltinDialectBytecodeInterface : public BytecodeDialectInterface {
DialectBytecodeWriter &writer) const override {
return ::writeType(type, writer);
}
+
+ //===--------------------------------------------------------------------===//
+ // Version
+
+ void writeVersion(DialectBytecodeWriter &writer) const override {
+ auto configVersion = writer.getDialectVersion(getDialect()->getNamespace());
+ // Write version set in config.
+ if (succeeded(configVersion)) {
+ auto *version =
+ static_cast<const BuiltinDialectVersion *>(*configVersion);
+ writer.writeVarInt(static_cast<uint64_t>(version->getVersion()));
+ return;
+ }
+ // Else, write current set version version if not 0.
+ if (auto version = cast<BuiltinDialect>(getDialect())->getVersion();
+ version && version->getVersion() > 0) {
+ writer.writeVarInt(static_cast<uint64_t>(version->getVersion()));
+ }
+ }
+
+ std::unique_ptr<DialectVersion>
+ readVersion(DialectBytecodeReader &reader) const override {
+ uint64_t version;
+ if (failed(reader.readVarInt(version)))
+ return nullptr;
+
+ auto dialectVersion = std::make_unique<BuiltinDialectVersion>(version);
+ if (BuiltinDialectVersion::getCurrentVersion() < *dialectVersion) {
+ reader.emitWarning()
+ << "reading newer builtin dialect version than supported";
----------------
jpienaar wrote:
I was in between: if set, we would emit a higher version even if it doesn't use a higher version feature, while making it a warning while never breaking existing checked in would mean that it would either parse or fail to parse only on the higher versioned items. Given no version is set, I'll make this more conservative for now and could discuss more later.
https://github.com/llvm/llvm-project/pull/184678
More information about the llvm-commits
mailing list