Occasional TableGen Newsletter, no. 1

This is the first of a series of occasional TableGen newsletters. The purpose is to inform the greater LLVM community of changes and enhancements to TableGen and its backends.

* As announced previously, there are two new TableGen documents:

TableGen Programmer's Reference --- 1   TableGen Programmer’s Reference — LLVM 16.0.0git documentation
TableGen Backend Developer's Guide --- 1   TableGen Backend Developer’s Guide — LLVM 16.0.0git documentation

* Also as announced previously, there is a new TableGen backend that might help you when debugging complex .td files. It is similar to the default print backend, but includes more detail. The PrintDetailedRecords backend is described in the backend guide.

* And also as announced previously, the RecordVal class now includes the source file location of the statement that set the field's value. This may help you produce more accurate error messages. The backend guide explains this in greater detail.

The following changes were made recently or will be made soon.

* A reference for the SearchableTables backend was added to the TableGen BackEnds document.

* The bang operators !not and !xor were added. !not performs a logical negation of its boolean argument. !xor was implemented to complement the existing !and and !or operators.

* The operators !empty and !size were enhanced to handle strings and DAGs in addition to lists.

* The !getop and !setop operators were renamed to !getdagop and !setdagop in anticipation of new DAG operators coming in the next couple of months.

* The RecordKeeper::getAllDerivedDefinitions function was overloaded to accept a list of class names and return the set of records deriving from all the specified classes. An example can be found in the PseudoLoweringEmitter backend.

As always, feel free to contact me with comments or suggestions.

This is very helpful, thank you for sending this!