This patch enhances the TableGen !empty and !size operators so they can handle strings and DAGs in addition to lists. This is the first in a series of patches to improve TableGen's ability to build complex DAGs.
In the process, I fixed a bug in the type checking for !first, !empty, !size, and !tail.