mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
d19970f650
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
41 lines
826 B
TableGen
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] # []>;
|