1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/TableGen/listpaste.td
Javed Absar d19970f650 TableGen: Allow lists to be concatenated through '#'
Currently one can concatenate strings using hash(#),
but not lists, although that would be a natural thing to do. 

This patch allows one to write something like:
def : A<!listconcat([1,2], [3,4])>;
simply as :
def : A<[1,2] # [3,4]>;

This was missing feature was highlighted by Nicolai
at FOSDEM talk.

Reviewed by: nhaehnle, hfinkel

Differential Revision: https://reviews.llvm.org/D58895

llvm-svn: 355414
2019-03-05 17:16:07 +00:00

41 lines
826 B
TableGen

// RUN: llvm-tblgen %s | FileCheck %s
// CHECK: class A<bit A:x = ?> {
// CHECK: list<int> lst = !listconcat([], !if(A:x, [], [4]));
// CHECK: }
class A<bit x> {
list<int> lst = [] # !if(x, [], [4]);
}
// CHECK: class A1<list<int> A1:l = ?> {
// CHECK: list<int> A1List = A1:l;
// CHECK: }
class A1<list<int> l> {
list<int> A1List = l;
}
// CHECK: def A0 {
// CHECK: list<int> lst = [4];
// CHECK: }
def A0 : A<0>;
// CHECK: def A1 {
// CHECK: list<int> lst = [];
// CHECK: }
def A1 : A<1>;
// CHECK: def A1_0 {
// CHECK: list<int> A1List = [1, 2, 3, 4];
// CHECK: }
def A1_0 : A1<[1,2] # [3,4]>;
// CHECK: def A1_1 {
// CHECK: list<int> A1List = [1, 2];
// CHECK: }
def A1_1 : A1<[] # [1,2]>;
// CHECK: def A1_2 { // A1
// CHECK: list<int> A1List = [1, 2];
// CHECK: }
def A1_2 : A1<[1,2] # []>;