[all-commits] [llvm/llvm-project] 8a3222: [mlir][Parser] Fix crash when resolving invalid op...

Matthias Springer via All-commits all-commits at lists.llvm.org
Fri Feb 21 03:34:01 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8a3222d8da5012501d6f091beaab31b510ade6f1
      https://github.com/llvm/llvm-project/commit/8a3222d8da5012501d6f091beaab31b510ade6f1
  Author: Matthias Springer <me at m-sp.org>
  Date:   2025-02-21 (Fri, 21 Feb 2025)

  Changed paths:
    M mlir/include/mlir/IR/OpImplementation.h
    M mlir/test/IR/invalid-ops.mlir
    M mlir/test/lib/Dialect/Test/TestOpsSyntax.td

  Log Message:
  -----------
  [mlir][Parser] Fix crash when resolving invalid operands with missing location (#128163)

When `resolveOperands` reports an error and no valid `SMLoc` was
provided, report the error at the beginning of the op instead of
crashing.

```
Assert `Ptr >= BufStart && Ptr <= Buffer->getBufferEnd()' in llvm/lib/Support/SourceMgr.cpp:llvm::SourceMgr::SrcBuffer::getLineNumberSpecialized failed
```

E.g., this is currently the case when parsing the following op with a
type but without any operands:
```
let assemblyFormat = "$str (`,` $args^)? attr-dict (`:` type($args)^)?";
```

Reported error (with this PR):
```
within split at mlir/test/IR/invalid-ops.mlir:122 offset :4:1: error: custom op 'test.variadic_args_types_split' number of operands and types do not match: got 0 operands and 1 types
test.variadic_args_types_split "hello_world" : i32
^
```

In the ODS-generated C++, the `SMLoc` is populated when parsing the
optional group containing `$args`. However, this group is missing in the
test case.

There are likely additional hand-written parsers that suffer from the
same problem.

Note: I tried emitting a second `SMLoc` for the optional type group in
the `OpFormatGen.cpp`, but this adds quite a bit of complexity in the
code base for little improvement in user experience.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list