summaryrefslogtreecommitdiffstats
path: root/clang/test/PCH/make-integer-seq.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-11-04 03:40:30 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-11-04 03:40:30 +0000
commitd9b1a4fb710d45b2acba65d6248d91af22788c6e (patch)
treec5343ab0425c83973e966e4fb34959b609a31263 /clang/test/PCH/make-integer-seq.cpp
parent40d3570c4470bd7c6dde62669a7192d7ffe900b6 (diff)
downloadbcm5719-llvm-d9b1a4fb710d45b2acba65d6248d91af22788c6e.tar.gz
bcm5719-llvm-d9b1a4fb710d45b2acba65d6248d91af22788c6e.zip
[Sema] Implement __make_integer_seq
This new builtin template allows for incredibly fast instantiations of templates like std::integer_sequence. Performance numbers follow: My work station has 64 GB of ram + 20 Xeon Cores at 2.8 GHz. __make_integer_seq<std::integer_sequence, int, 90000> takes 0.25 seconds. std::make_integer_sequence<int, 90000> takes unbound time, it is still running. Clang is consuming gigabytes of memory. Differential Revision: http://reviews.llvm.org/D13786 llvm-svn: 252036
Diffstat (limited to 'clang/test/PCH/make-integer-seq.cpp')
-rw-r--r--clang/test/PCH/make-integer-seq.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/test/PCH/make-integer-seq.cpp b/clang/test/PCH/make-integer-seq.cpp
new file mode 100644
index 00000000000..3622c33449d
--- /dev/null
+++ b/clang/test/PCH/make-integer-seq.cpp
@@ -0,0 +1,14 @@
+// RUN: %clang_cc1 -std=c++14 -x c++-header %s -emit-pch -o %t.pch
+// RUN: %clang_cc1 -std=c++14 -x c++ /dev/null -include-pch %t.pch
+
+template <class T, T... I>
+struct Seq {
+ static constexpr T PackSize = sizeof...(I);
+};
+
+template <typename T, T N>
+using MakeSeq = __make_integer_seq<Seq, T, N>;
+
+void fn1() {
+ MakeSeq<int, 3> x;
+}
OpenPOWER on IntegriCloud