diff options
author | Jason Merrill <jason@redhat.com> | 2011-06-08 17:35:02 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-06-08 17:35:02 -0400 |
commit | 1026172832d7175b52ee0ddf5ef17d7f5b803e2e (patch) | |
tree | ee6f3f833ee964ac09575df2a56cdaf0ded1d159 /gcc/cp/error.c | |
parent | 535fb6eb200870e582a7f4abf2ea929cfc7e24c6 (diff) | |
download | gcc-1026172832d7175b52ee0ddf5ef17d7f5b803e2e.zip gcc-1026172832d7175b52ee0ddf5ef17d7f5b803e2e.tar.gz gcc-1026172832d7175b52ee0ddf5ef17d7f5b803e2e.tar.bz2 |
re PR c++/49107 ([C++0x][4.7 Regression] incomplete type regression with std::pair)
PR c++/49107
* cp-tree.def (DEFERRED_NOEXCEPT): New.
* cp-tree.h (struct tree_deferred_noexcept): New.
(DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
(DEFERRED_NOEXCEPT_SPEC_P): New.
(enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
(union lang_tree_node): Add tree_deferred_noexcept.
(maybe_instantiate_noexcept): Declare.
* cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
* error.c (dump_exception_spec): Likewise.
* cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
* ptree.c (cxx_print_xnode): Likewise.
* tree.c (cp_tree_equal): Likewise.
* decl.c (cp_tree_node_structure): Likewise.
(duplicate_decls): Call maybe_instantiate_noexcept.
* except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
(nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
DEFERRED_NOEXCEPT_SPEC_P.
* typeck2.c (merge_exception_specifiers): Likewise.
* decl2.c (mark_used): Call maybe_instantiate_noexcept.
* method.c (process_subob_fn, defaulted_late_check): Likewise.
* pt.c (tsubst_exception_specification): Add defer_ok parm.
Build DEFERRED_NOEXCEPT.
(maybe_instantiate_noexcept): New.
(tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
* search.c (check_final_overrider): Call maybe_instantiate_noexcept.
From-SVN: r174820
Diffstat (limited to 'gcc/cp/error.c')
-rw-r--r-- | gcc/cp/error.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/cp/error.c b/gcc/cp/error.c index d9652dc..96796c2 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1438,7 +1438,10 @@ dump_exception_spec (tree t, int flags) pp_cxx_ws_string (cxx_pp, "noexcept"); pp_cxx_whitespace (cxx_pp); pp_cxx_left_paren (cxx_pp); - dump_expr (TREE_PURPOSE (t), flags); + if (DEFERRED_NOEXCEPT_SPEC_P (t)) + pp_cxx_ws_string (cxx_pp, "<uninstantiated>"); + else + dump_expr (TREE_PURPOSE (t), flags); pp_cxx_right_paren (cxx_pp); } else if (t) |