summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/constexpr-steps.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-05-08 02:38:36 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-05-08 02:38:36 +0000
commit220dd334468e8dbfc3b3b5d21fea24ed01a602b4 (patch)
tree863dac2b793e01046e74e1f53ac005b2da4f69a7 /clang/test/SemaCXX/constexpr-steps.cpp
parenta3d3bd215bcd9dd39b547e8401b157cdbde7e6d0 (diff)
downloadbcm5719-llvm-220dd334468e8dbfc3b3b5d21fea24ed01a602b4.tar.gz
bcm5719-llvm-220dd334468e8dbfc3b3b5d21fea24ed01a602b4.zip
Add test forgotten in r181388.
llvm-svn: 181389
Diffstat (limited to 'clang/test/SemaCXX/constexpr-steps.cpp')
-rw-r--r--clang/test/SemaCXX/constexpr-steps.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/constexpr-steps.cpp b/clang/test/SemaCXX/constexpr-steps.cpp
new file mode 100644
index 00000000000..f7967eee9f7
--- /dev/null
+++ b/clang/test/SemaCXX/constexpr-steps.cpp
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 -std=c++1y -fsyntax-only -verify %s -DMAX=1234 -fconstexpr-steps 1234
+// RUN: %clang_cc1 -std=c++1y -fsyntax-only -verify %s -DMAX=10 -fconstexpr-steps 10
+// RUN: %clang -std=c++1y -fsyntax-only -Xclang -verify %s -DMAX=12345 -fconstexpr-steps=12345
+
+// This takes a total of n + 4 steps according to our current rules:
+// - One for the compound-statement that is the function body
+// - One for the 'for' statement
+// - One for the 'int k = 0;' statement
+// - One for each of the n evaluations of the compound-statement in the 'for' body
+// - One for the 'return' statemnet
+constexpr bool steps(int n) {
+ for (int k = 0; k != n; ++k) {}
+ return true; // expected-note {{step limit}}
+}
+
+static_assert(steps((MAX - 4)), ""); // ok
+static_assert(steps((MAX - 3)), ""); // expected-error {{constant}} expected-note{{call}}
OpenPOWER on IntegriCloud