[all-commits] [llvm/llvm-project] 0e894e: [TableGen] Permit dag operators to be unset.

Simon Tatham via All-commits all-commits at lists.llvm.org
Tue Dec 10 03:09:47 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 0e894edee18f74ae66598f2121d8bfb909f6288e
      https://github.com/llvm/llvm-project/commit/0e894edee18f74ae66598f2121d8bfb909f6288e
  Author: Simon Tatham <simon.tatham at arm.com>
  Date:   2019-12-10 (Tue, 10 Dec 2019)

  Changed paths:
    M llvm/lib/TableGen/Record.cpp
    M llvm/lib/TableGen/TGParser.cpp
    A llvm/test/TableGen/unsetop.td

  Log Message:
  -----------
  [TableGen] Permit dag operators to be unset.

This is not a new semantic feature. The syntax `(? 1, 2, 3)` was
disallowed by the parser in a dag //expression//, but there were
already ways to sneak a `?` into the operator field of a dag
//value//, e.g. by initializing it from a class template parameter
which is then set to `?` by the instantiating `def`.

This patch makes `?` in the operator slot syntactically legal, so it's
now easy to construct dags with an unset operator. Also, the semantics
of `!con` are relaxed so that it will allow a combination of set and
unset operator fields in the dag nodes it's concatenating, with the
restriction that all the operators that are //not// unset still have
to agree with each other.

Reviewers: hfinkel, nhaehnle

Reviewed By: hfinkel, nhaehnle

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71195




More information about the All-commits mailing list