[TableGen] Allow references to class template arguments in defvar
authorwangpc <pc.wang@linux.alibaba.com>
Fri, 14 Apr 2023 03:07:29 +0000 (11:07 +0800)
committerwangpc <pc.wang@linux.alibaba.com>
Fri, 14 Apr 2023 03:12:35 +0000 (11:12 +0800)
commitfd5d0a88dde007728004e43cb28f3c8c0be7b97c
tree10a56fb1753b55cc23392475efc8764247322370
parent99e52b68a4a02acf098b48bf6749badcac55d37e
[TableGen] Allow references to class template arguments in defvar

We can't refer to template arguments for defvar statements in class
definitions, or it will report some errors like:

```
error: Variable not defined: 'xxx'.
```

The key point here is we used to pass nullptr to `ParseValue` in
`ParseDefvar`. As a result, we can't refer to template arguments
since `CurRec` is nullptr in `ParseIDValue`.

So we add an argument `CurRec` to `ParseDefvar` and provide it
when parsing defvar statements in class definitions.

Reviewed By: tra, simon_tatham

Differential Revision: https://reviews.llvm.org/D148197
llvm/lib/TableGen/TGParser.cpp
llvm/lib/TableGen/TGParser.h
llvm/test/TableGen/defvar.td