diff options
author | Jason Merrill <jason@redhat.com> | 2013-01-03 15:36:14 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2013-01-03 15:36:14 -0500 |
commit | ffabb76185e08d4db5d09c615fdeb99b06a234b6 (patch) | |
tree | e8dea07d2da5de94ecd9db084fdc29dc41549691 | |
parent | 8ac16127cf8c60a4fd33288cb044043cbf014bd6 (diff) | |
download | gcc-ffabb76185e08d4db5d09c615fdeb99b06a234b6.zip gcc-ffabb76185e08d4db5d09c615fdeb99b06a234b6.tar.gz gcc-ffabb76185e08d4db5d09c615fdeb99b06a234b6.tar.bz2 |
re PR c++/55842 (C++11 ICE with boost multi-precision and boost variant)
PR c++/55842
* semantics.c (trait_expr_value): Call maybe_instantiate_noexcept.
From-SVN: r194869
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/has_nothrow_constructor-2.C | 7 |
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index dda06fd..56fcfa6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2013-01-03 Jason Merrill <jason@redhat.com> + PR c++/55842 + * semantics.c (trait_expr_value): Call maybe_instantiate_noexcept. + PR c++/55856 * semantics.c (build_data_member_initialization): Handle DECL_EXPR. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 9f8119f..2e02295 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5454,7 +5454,8 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree type2) return (trait_expr_value (CPTK_HAS_TRIVIAL_CONSTRUCTOR, type1, type2) || (CLASS_TYPE_P (type1) && (t = locate_ctor (type1)) - && TYPE_NOTHROW_P (TREE_TYPE (t)))); + && (maybe_instantiate_noexcept (t), + TYPE_NOTHROW_P (TREE_TYPE (t))))); case CPTK_HAS_TRIVIAL_CONSTRUCTOR: type1 = strip_array_types (type1); diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor-2.C new file mode 100644 index 0000000..9191c3e --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor-2.C @@ -0,0 +1,7 @@ +// PR c++/55842 +// { dg-options -std=c++11 } + +template <class=void> struct number { + number() noexcept(noexcept(0)) { } +}; +const int z=__has_nothrow_constructor(number<>); |