A dialect can opt-in to handle versioning through the `BytecodeDialectInterface`. Few hooks are exposed to the dialect to allow managing a version encoded into the bytecode file. The version is loaded lazily and allows to retrieve the version information while parsing the input IR, and gives an opportunity to each dialect for which a version is present to perform IR upgrades post-parsing through the `upgradeFromVersion` method. Custom Attribute and Type encodings can also be upgraded according to the dialect version using readAttribute and readType methods. There is no restriction on what kind of information a dialect is allowed to encode to model its versioning. Currently, versioning is supported only for bytecode formats. Reviewed By: rriddle, mehdi_amini Differential Revision: https://reviews.llvm.org/D143647
48 lines
2.1 KiB
MLIR
48 lines
2.1 KiB
MLIR
// This file contains various failure test cases related to the structure of
|
|
// a bytecode file.
|
|
|
|
// Bytecode currently does not support big-endian platforms
|
|
// UNSUPPORTED: target=s390x-{{.*}}
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Version
|
|
//===--------------------------------------------------------------------===//
|
|
|
|
// RUN: not mlir-opt %S/invalid-structure-version.mlirbc 2>&1 | FileCheck %s --check-prefix=VERSION
|
|
// VERSION: bytecode version 127 is newer than the current version 1
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Producer
|
|
//===--------------------------------------------------------------------===//
|
|
|
|
// RUN: not mlir-opt %S/invalid-structure-producer.mlirbc 2>&1 | FileCheck %s --check-prefix=PRODUCER
|
|
// PRODUCER: malformed null-terminated string, no null character found
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Section
|
|
//===--------------------------------------------------------------------===//
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Missing
|
|
|
|
// RUN: not mlir-opt %S/invalid-structure-section-missing.mlirbc 2>&1 | FileCheck %s --check-prefix=SECTION_MISSING
|
|
// SECTION_MISSING: missing data for top-level section: String (0)
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// ID
|
|
|
|
// RUN: not mlir-opt %S/invalid-structure-section-id-unknown.mlirbc 2>&1 | FileCheck %s --check-prefix=SECTION_ID_UNKNOWN
|
|
// SECTION_ID_UNKNOWN: invalid section ID: 127
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Length
|
|
|
|
// RUN: not mlir-opt %S/invalid-structure-section-length.mlirbc 2>&1 | FileCheck %s --check-prefix=SECTION_LENGTH
|
|
// SECTION_LENGTH: attempting to parse a byte at the end of the bytecode
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Duplicate
|
|
|
|
// RUN: not mlir-opt %S/invalid-structure-section-duplicate.mlirbc 2>&1 | FileCheck %s --check-prefix=SECTION_DUPLICATE
|
|
// SECTION_DUPLICATE: duplicate top-level section: String (0)
|