diff options
author | Jason Merrill <jason@redhat.com> | 2011-04-26 15:28:25 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-04-26 15:28:25 -0400 |
commit | 574cfaa47dbcc2e8d9ea68b83d8dc3122832ff9b (patch) | |
tree | e83e77854b5490319145c8e64a21bec89b47616f /gcc/cp/decl2.c | |
parent | 5a87ca71c875b5bc34b9b8bc0ef405cec9b51b51 (diff) | |
download | gcc-574cfaa47dbcc2e8d9ea68b83d8dc3122832ff9b.zip gcc-574cfaa47dbcc2e8d9ea68b83d8dc3122832ff9b.tar.gz gcc-574cfaa47dbcc2e8d9ea68b83d8dc3122832ff9b.tar.bz2 |
re PR c++/48530 ([C++0x][SFINAE] Hard errors with deleted d'tors)
PR c++/48530
* decl.c (cxx_maybe_build_cleanup): Add complain parm.
* tree.c (force_target_expr): Add complain parm.
(build_target_expr_with_type): Likewise.
(get_target_expr_sfinae): Split out.
(build_vec_init_expr, bot_manip): Adjust.
* init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
(build_delete, build_dtor_call): Likewise.
(perform_direct_initialization_if_possible): Adjust.
(build_vec_init): Handle error return.
* cvt.c (force_rvalue): Add complain parm.
Call build_special_member_call directly.
* decl2.c (delete_sanity): Add complain parm.
(build_cleanup): Adjust.
* pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
* semantics.c (finish_stmt_expr_expr): Adjust.
(finish_compound_literal): Adjust.
* parser.c (cp_parser_delete_expression): Adjust.
* typeck2.c (build_functional_cast): Adjust.
* cp-tree.h: Adjust.
From-SVN: r172985
Diffstat (limited to 'gcc/cp/decl2.c')
-rw-r--r-- | gcc/cp/decl2.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index a9c2455..d1b252d 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -419,7 +419,8 @@ grok_array_decl (tree array_expr, tree index_exp) Implements ARM $5.3.4. This is called from the parser. */ tree -delete_sanity (tree exp, tree size, bool doing_vec, int use_global_delete) +delete_sanity (tree exp, tree size, bool doing_vec, int use_global_delete, + tsubst_flags_t complain) { tree t, type; @@ -475,10 +476,11 @@ delete_sanity (tree exp, tree size, bool doing_vec, int use_global_delete) if (doing_vec) return build_vec_delete (t, /*maxindex=*/NULL_TREE, sfk_deleting_destructor, - use_global_delete); + use_global_delete, complain); else return build_delete (type, t, sfk_deleting_destructor, - LOOKUP_NORMAL, use_global_delete); + LOOKUP_NORMAL, use_global_delete, + complain); } /* Report an error if the indicated template declaration is not the @@ -2594,7 +2596,8 @@ build_cleanup (tree decl) temp = build_address (decl); temp = build_delete (TREE_TYPE (temp), temp, sfk_complete_destructor, - LOOKUP_NORMAL|LOOKUP_NONVIRTUAL|LOOKUP_DESTRUCTOR, 0); + LOOKUP_NORMAL|LOOKUP_NONVIRTUAL|LOOKUP_DESTRUCTOR, 0, + tf_warning_or_error); return temp; } |