[all-commits] [llvm/llvm-project] fef2fc: [TableGen] Support non-def operators in !getdagop ...

Visoiu Mistrih Francis via All-commits all-commits at lists.llvm.org
Wed Jan 10 06:59:52 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: fef2fc3400eb5a22a5ccc96bd3862bec0058d305
      https://github.com/llvm/llvm-project/commit/fef2fc3400eb5a22a5ccc96bd3862bec0058d305
  Author: Visoiu Mistrih Francis <890283+francisvm at users.noreply.github.com>
  Date:   2024-01-10 (Wed, 10 Jan 2024)

  Changed paths:
    M llvm/lib/TableGen/Record.cpp
    M llvm/test/TableGen/getsetop.td

  Log Message:
  -----------
  [TableGen] Support non-def operators in !getdagop (#77531)

`!getdagop` expects the dag operator to be a def, and errors out if it's
not.

While that's true in most cases, when multiclasses are involved, the
late resolution of the dag operator can result in it not being a def
yet, but still have a proper type, wich is required to check against the
optional parameter Ty in `!getdagop<Ty>`.

e.g, in the following dag:
```
(!cast<TestInstruction>(TestInstructionAndPattern::NAME) foo)
```
the operator is a UnOpInit, but all we need here is to check its type.

This fixes a bug where !getdagop is used to query the dag operator that
is dependent on the multiclass, which is not yet resolved to a def. Once
the folding is performed, the field becomes a record that can be
queried.




More information about the All-commits mailing list