diff options
| author | Meador Inge <meadori@codesourcery.com> | 2015-02-17 21:02:56 +0000 |
|---|---|---|
| committer | Meador Inge <meadori@codesourcery.com> | 2015-02-17 21:02:56 +0000 |
| commit | 006e0e65317b8a6d4d56125cd7c08703566efcec (patch) | |
| tree | 5ceac7cc1709dc30ce8b65fcfdc0627bee2831be /clang | |
| parent | 928e9ae89cc99f4e827faa47dba5032a503be92a (diff) | |
| download | bcm5719-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.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp | 2 |
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}} } |

