summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorMeador Inge <meadori@codesourcery.com>2015-02-17 21:02:56 +0000
committerMeador Inge <meadori@codesourcery.com>2015-02-17 21:02:56 +0000
commit006e0e65317b8a6d4d56125cd7c08703566efcec (patch)
tree5ceac7cc1709dc30ce8b65fcfdc0627bee2831be /clang
parent928e9ae89cc99f4e827faa47dba5032a503be92a (diff)
downloadbcm5719-llvm-006e0e65317b8a6d4d56125cd7c08703566efcec.tar.gz
bcm5719-llvm-006e0e65317b8a6d4d56125cd7c08703566efcec.zip
Sema: Allow 'constexpr' variables in range loops
This fixes PR22492, which is in response to CWG issue #1204. Per the CWG issue 'contexpr' variables are now allowed in for range loops. llvm-svn: 229543
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp2
-rw-r--r--clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp2
2 files changed, 1 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 7ff91cd60c3..dbc4f2cd089 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -9366,8 +9366,6 @@ void Sema::ActOnCXXForRangeDecl(Decl *D) {
case SC_OpenCLWorkGroupLocal:
llvm_unreachable("Unexpected storage class");
}
- if (VD->isConstexpr())
- Error = 5;
if (Error != -1) {
Diag(VD->getOuterLocStart(), diag::err_for_range_storage_class)
<< VD->getDeclName() << Error;
diff --git a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
index c23cd28f313..11898df2d3f 100644
--- a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
+++ b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
@@ -118,7 +118,7 @@ void g() {
for (extern int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'extern'}}
for (static int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'static'}}
for (register int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'register'}} expected-warning {{deprecated}}
- for (constexpr int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'constexpr'}}
+ for (constexpr int a : A()) {} // OK per CWG issue #1204.
for (auto u : X::NoBeginADL()) { // expected-error {{invalid range expression of type 'X::NoBeginADL'; no viable 'begin' function available}}
}
OpenPOWER on IntegriCloud