From 1c5728825e7473a1c73fefa7439760e065036664 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 27 Dec 2016 04:01:22 +0000 Subject: [PATCH] Add a test for `const` folding introduced by r290297. NFC. AFAICT, we didn't add a test targeted at the new "const can sometimes act as constexpr" behavior introduced by r290297. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290577 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/SemaCXX/constant-expression-cxx1y.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/SemaCXX/constant-expression-cxx1y.cpp b/test/SemaCXX/constant-expression-cxx1y.cpp index f8103224af..0a1877cc8c 100644 --- a/test/SemaCXX/constant-expression-cxx1y.cpp +++ b/test/SemaCXX/constant-expression-cxx1y.cpp @@ -957,3 +957,20 @@ namespace PR27989 { } static_assert(f(0) == 1, ""); } + +namespace const_char { +template +constexpr int sum(const char (&Arr)[N]) { + static_assert(N >= M, ""); + int S = 0; + for (unsigned I = 0; I != M; ++I) + S += Arr[I]; + return S; +} + +// As an extension, we support evaluating some things that are `const` as though +// they were `constexpr`. +const char Cs[] = {'a', 'b', 'c'}; +const int N = 2; +static_assert(sum(Cs) == 'a' + 'b', ""); +} -- 2.40.0