[Mlir-commits] [mlir] [mlir][bytecode] Check that bytecode source buffer is sufficiently aligned. (PR #66380)
Christian Sigg
llvmlistbot at llvm.org
Thu Sep 14 13:42:51 PDT 2023
================
@@ -93,23 +97,31 @@ namespace {
class EncodingReader {
public:
explicit EncodingReader(ArrayRef<uint8_t> contents, Location fileLoc)
- : dataIt(contents.data()), dataEnd(contents.end()), fileLoc(fileLoc) {}
+ : buffer(contents), dataIt(buffer.begin()), fileLoc(fileLoc) {}
explicit EncodingReader(StringRef contents, Location fileLoc)
: EncodingReader({reinterpret_cast<const uint8_t *>(contents.data()),
contents.size()},
fileLoc) {}
/// Returns true if the entire section has been read.
- bool empty() const { return dataIt == dataEnd; }
+ bool empty() const { return dataIt == buffer.end(); }
/// Returns the remaining size of the bytecode.
- size_t size() const { return dataEnd - dataIt; }
+ size_t size() const { return buffer.end() - dataIt; }
/// Align the current reader position to the specified alignment.
LogicalResult alignTo(unsigned alignment) {
if (!llvm::isPowerOf2_32(alignment))
return emitError("expected alignment to be a power-of-two");
+ // Ensure the data buffer was sufficiently aligned in the first place.
+ if (LLVM_UNLIKELY(
----------------
chsigg wrote:
It was a few unnecessary instructions before, now it's just 2.
https://github.com/llvm/llvm-project/pull/66380
More information about the Mlir-commits
mailing list