Files
clang-p2996/mlir/test/Bytecode/invalid/invalid-structure.mlir
Matteo Franciolini 0e0b6070fd Implements MLIR Bytecode versioning capability
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
2023-03-10 23:28:56 +01:00

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)