[PATCH] D43756: TableGen: Delay instantiating inline anonymous records

Nicolai Hähnle via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 26 00:32:31 PST 2018


nhaehnle created this revision.
nhaehnle added reviewers: arsenm, craig.topper, tra, MartinO.
Herald added a subscriber: wdng.

Only instantiate anonymous records once all variable references in template
arguments have been resolved. This allows patterns like the new test case,
which in practice can appear in expressions like:

  class IntrinsicTypeProfile<list<LLVMType> ty, int shift> {
    list<LLVMType> types =
      !listconcat(ty, [llvm_any_ty, LLVMMatchType<shift>]);
  }
  
  class FooIntrinsic<IntrinsicTypeProfile P, ...>
    : Intrinsic<..., P.types, ...>;

Without this change, the anonymous LLVMMatchType instantiation would
never get resolved.

Another consequence of this change is that anonymous inline
instantiations are uniqued via the folding set of the newly introduced
VarDefInit.

Change-Id: I7a7041a20e297cf98c9109b28d85e64e176c932a


Repository:
  rL LLVM

https://reviews.llvm.org/D43756

Files:
  include/llvm/TableGen/Record.h
  lib/TableGen/Record.cpp
  lib/TableGen/TGParser.cpp
  test/TableGen/AnonDefinitionOnDemand.td

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D43756.135861.patch
Type: text/x-patch
Size: 12317 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180226/8ba16b32/attachment.bin>


More information about the llvm-commits mailing list