diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-11-25 20:51:56 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-11-25 20:51:56 +0000 |
commit | 4fd602a1e050ca035265ae53f2dfe721505811a5 (patch) | |
tree | ed7d02bbaf71b3671b993e46241d405a17c38f1f /gcc | |
parent | 807b7031711f7e7b48cabd52ef3e30e32dbcfeee (diff) | |
download | gcc-4fd602a1e050ca035265ae53f2dfe721505811a5.zip gcc-4fd602a1e050ca035265ae53f2dfe721505811a5.tar.gz gcc-4fd602a1e050ca035265ae53f2dfe721505811a5.tar.bz2 |
re PR c++/58607 ([c++11] ICE with undeclared variable in constexpr)
/cp
2013-11-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58607
* semantics.c (check_constexpr_ctor_body): Check for BIND_EXPR_VARS.
/testsuite
2013-11-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58607
* g++.dg/cpp0x/constexpr-ice9.C: New.
From-SVN: r205364
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-ice9.C | 7 |
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8118471..e567aa0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2013-11-25 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/58607 + * semantics.c (check_constexpr_ctor_body): Check for BIND_EXPR_VARS. + +2013-11-25 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/58810 * decl.c (grokdeclarator): Don't handle qualified free functions here, leave the diagnostic to grokfndecl. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 316834c..d871c4d 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -7596,6 +7596,11 @@ check_constexpr_ctor_body (tree last, tree list) break; if (TREE_CODE (t) == BIND_EXPR) { + if (BIND_EXPR_VARS (t)) + { + ok = false; + break; + } if (!check_constexpr_ctor_body (last, BIND_EXPR_BODY (t))) return false; else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 50e72f4..920f826 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2013-11-25 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/58607 + * g++.dg/cpp0x/constexpr-ice9.C: New. + +2013-11-25 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/58810 * g++.dg/other/cv_func3.C: New. * g++.dg/other/cv_func.C: Adjust. diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice9.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice9.C new file mode 100644 index 0000000..50de372 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice9.C @@ -0,0 +1,7 @@ +// PR c++/58607 +// { dg-do compile { target c++11 } } + +struct A +{ + constexpr A() { i; } // { dg-error "declared|empty body" } +}; |