[tablegen] !strconcat accepts more than two arguments but this wasn't documented or tested.

Summary:
* Updated the documentation
* Added a test for >2 arguments
* Added a check for the lexical concatenation
* Made the existing test a bit stricter.

Reviewers: t.p.northover

Reviewed By: t.p.northover

Subscribers: t.p.northover, llvm-commits

Differential Revision: http://reviews.llvm.org/D3485

llvm-svn: 207865
This commit is contained in:
Daniel Sanders 2014-05-02 19:25:52 +00:00
parent a53b3593f0
commit 6ef0a2f1be
2 changed files with 16 additions and 2 deletions

View File

@ -160,8 +160,10 @@ supported include:
remaining elements in the list may be arbitrary other values, including
nested ```dag``' values.
``!strconcat(a, b)``
``!strconcat(a, b, ...)``
A string value that is the result of concatenating the 'a' and 'b' strings.
More than two arguments are accepted with the result being the concatenation
of all the strings given.
``str1#str2``
"#" (paste) is a shorthand for !strconcat. It may concatenate things that

View File

@ -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";