diff options
Diffstat (limited to 'test/TableGen')
-rw-r--r-- | test/TableGen/GeneralList.td | 1 | ||||
-rw-r--r-- | test/TableGen/lisp.td | 1 | ||||
-rw-r--r-- | test/TableGen/listconcat.td | 18 | ||||
-rw-r--r-- | test/TableGen/strconcat.td | 14 |
4 files changed, 31 insertions, 3 deletions
diff --git a/test/TableGen/GeneralList.td b/test/TableGen/GeneralList.td index 9e0c7df..17cc9a5 100644 --- a/test/TableGen/GeneralList.td +++ b/test/TableGen/GeneralList.td @@ -1,5 +1,4 @@ // RUN: llvm-tblgen %s -// XFAIL: vg_leak // // Test to make sure that lists work with any data-type diff --git a/test/TableGen/lisp.td b/test/TableGen/lisp.td index 9e58605..d753fbd 100644 --- a/test/TableGen/lisp.td +++ b/test/TableGen/lisp.td @@ -1,5 +1,4 @@ // RUN: llvm-tblgen %s -// XFAIL: vg_leak // CHECK: def One { // CHECK-NEXT: list<string> names = ["Jeffrey Sinclair"]; diff --git a/test/TableGen/listconcat.td b/test/TableGen/listconcat.td new file mode 100644 index 0000000..870e649 --- /dev/null +++ b/test/TableGen/listconcat.td @@ -0,0 +1,18 @@ +// RUN: llvm-tblgen %s | FileCheck %s + +// CHECK: class Y<list<string> Y:S = ?> { +// CHECK: list<string> T1 = !listconcat(Y:S, ["foo"]); +// CHECK: list<string> T2 = !listconcat(Y:S, !listconcat(["foo"], !listconcat(Y:S, ["bar", "baz"]))); +// CHECK: } + +// CHECK: def Z { +// CHECK: list<string> T1 = ["fu", "foo"]; +// CHECK: list<string> T2 = ["fu", "foo", "fu", "bar", "baz"]; +// CHECK: } + +class Y<list<string> S> { + list<string> T1 = !listconcat(S, ["foo"]); + list<string> T2 = !listconcat(S, ["foo"], S, ["bar", "baz"]); +} + +def Z : Y<["fu"]>; diff --git a/test/TableGen/strconcat.td b/test/TableGen/strconcat.td index dfb1a94..f5d7512 100644 --- a/test/TableGen/strconcat.td +++ b/test/TableGen/strconcat.td @@ -1,9 +1,21 @@ // RUN: llvm-tblgen %s | FileCheck %s -// CHECK: fufoo +// CHECK: class Y<string Y:S = ?> { +// CHECK: string T = !strconcat(Y:S, "foo"); +// CHECK: string T2 = !strconcat(Y:S, !strconcat("foo", !strconcat(Y:S, "bar"))); +// CHECK: string S = "foobar"; +// CHECK: } + +// CHECK: def Z { +// CHECK: string T = "fufoo"; +// CHECK: string T2 = "fufoofubar"; +// CHECK: string S = "foobar"; +// CHECK: } class Y<string S> { string T = !strconcat(S, "foo"); + // More than two arguments is equivalent to nested calls + string T2 = !strconcat(S, "foo", S, "bar"); // String values concatenate lexically, as in C. string S = "foo" "bar"; |