“节点转换'设置'需要一个操作数!”尝试使用tablegen时

时间:2019-09-14 18:31:05

标签: llvm

我试图使C65 LLVM后端(https://github.com/Peppar/llvm-C65)与LLVM 8.0.1(如果是LLVM 3则为原始版本)一起使用。 经过一些修复后,所有内容均可正确编译,但TableGen会生成一些错误。

错误消息都是这样的:

add_frag(dst, src1, src2):  (set node:{}:$dst, (add:{} node:{}:$src1, node:{}:$src2))
Included from F:/Projects/llvm-65816/lib/Target/C65/C65.td:59:
F:/Projects/llvm-65816/lib/Target/C65\C65InstrInfo.td:1353:1: error: In add_frag: Node transform 'set' requires one operand! (got 2)
def add_frag : PatFrag<(ops node:$dst, node:$src1, node:$src2),
^

这是导致它的行(在https://github.com/Peppar/llvm-C65/blob/master/C65InstrInfo.td#L1353):

def add_frag : PatFrag<(ops node:$dst, node:$src1, node:$src2),
                       (set node:$dst, (add node:$src1, node:$src2))>;

TableGen语言的记录不如LLVM IR记录得那么清楚,因此我正在努力找出问题所在,但我认为这是由类型引起的。

我有以下问题:

  1. 如何解决?
  2. node是什么意思,为什么在这种情况下(如果是)这是个问题?

0 个答案:

没有答案