This is an archive of the discontinued LLVM Phabricator instance.

[TableGen] Permit dag operators to be unset.
ClosedPublic

Authored by simon_tatham on Dec 9 2019, 3:46 AM.

Details

Summary

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.

Diff Detail

Event Timeline

simon_tatham created this revision.Dec 9 2019, 3:46 AM
Herald added a project: Restricted Project. · View Herald TranscriptDec 9 2019, 3:46 AM
hfinkel accepted this revision.Dec 9 2019, 7:02 PM

LGTM

This revision is now accepted and ready to land.Dec 9 2019, 7:02 PM
This revision was automatically updated to reflect the committed changes.