aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/cvt.c
AgeCommit message (Collapse)AuthorFilesLines
2011-06-07re PR c++/48780 ([C++0x] scoped enumerations and va_arg (default argument ↵Jason Merrill1-1/+2
promotions)) PR c++/48780 * typeck.c (perform_integral_promotions): Don't promote scoped enums. * call.c (convert_arg_to_ellipsis): Promote them here in old ABI. From-SVN: r174751
2011-05-21re PR c++/48780 ([C++0x] scoped enumerations and va_arg (default argument ↵Jason Merrill1-0/+7
promotions)) PR c++/48780 * cvt.c (type_promotes_to): Don't promote scoped enums. From-SVN: r174005
2011-05-05cp-tree.h (REFERENCE_REF_P): Just check the type.Jason Merrill1-1/+0
* cp-tree.h (REFERENCE_REF_P): Just check the type. * cvt.c (convert_from_reference): Adjust. * pt.c (build_non_dependent_expr): Adjust. * semantics.c (finish_offsetof): Adjust. * tree.c (lvalue_kind): Use it. From-SVN: r173449
2011-04-26re PR c++/48530 ([C++0x][SFINAE] Hard errors with deleted d'tors)Jason Merrill1-4/+10
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
2011-04-11re PR c++/48534 ([C++0x][SFINAE] Compiler break down on explicit scoped enum ↵Jason Merrill1-1/+1
=> bool conversion) PR c++/48534 * cvt.c (ocp_convert): Use build_nop to convert to underlying type of scoped enum. From-SVN: r172284
2011-04-07re PR c++/48450 ([C++0x][SFINAE] Hard errors with static_cast expressions)Jason Merrill1-1/+1
PR c++/48450 * tree.c (build_cplus_new, build_aggr_init_expr): Take complain. (bot_manip): Adjust. * cp-tree.h: Adjust. * call.c (convert_like_real, build_cxx_call): Adjust. (perform_direct_initialization_if_possible): Adjust. * cvt.c (ocp_convert): Adjust. * init.c (build_value_init): Adjust. * semantics.c (maybe_add_lambda_conv_op): Adjust. * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust. * typeck2.c (build_functional_cast): Adjust. From-SVN: r172143
2011-04-07re PR c++/48450 ([C++0x][SFINAE] Hard errors with static_cast expressions)Jason Merrill1-1/+7
PR c++/48450 * c-family/c-common.c (c_common_truthvalue_conversion): Don't ignore conversion from C++0x scoped enum. * cp/cvt.c (ocp_convert): Handle converting scoped enum to bool. From-SVN: r172138
2011-02-17re PR c++/47783 (Warning 'set but not used' [-Wunused-but-set-parameter] ↵Jakub Jelinek1-0/+1
incorrectly issued for update through reference wrapper) PR c++/47783 * cvt.c (convert_from_reference): Call mark_exp_read. * g++.dg/warn/Wunused-parm-4.C: New test. From-SVN: r170255
2011-02-10* cvt.c (convert_to_void): Handle null op1.Jason Merrill1-4/+8
From-SVN: r170007
2010-11-30diagnostic-core.h: Include bversion.h.Joseph Myers1-1/+0
* diagnostic-core.h: Include bversion.h. * toplev.h: Don't include input.h or bversion.h. (parse_optimize_options): Don't declare here. * alias.c, auto-inc-dec.c, c-aux-info.c, c-convert.c, c-parser.c, caller-save.c, cfg.c, cfganal.c, cfgbuild.c, cfgcleanup.c, combine-stack-adj.c, config/arm/pe.c, config/darwin-c.c, config/host-darwin.c, config/i386/host-cygwin.c, config/i386/host-mingw32.c, config/i386/msformat-c.c, config/i386/netware.c, config/i386/nwld.c, config/i386/winnt-cxx.c, config/i386/winnt-stubs.c, config/ia64/ia64-c.c, config/m32c/m32c-pragma.c, config/mep/mep-pragma.c, config/microblaze/microblaze-c.c, config/rs6000/host-darwin.c, config/rs6000/rs6000-c.c, config/score/score3.c, config/score/score7.c, config/sh/symbian-base.c, config/sh/symbian-c.c, config/sh/symbian-cxx.c, config/sol2-c.c, config/sol2.c, config/v850/v850-c.c, config/vxworks.c, convert.c, cppbuiltin.c, cselib.c, dbgcnt.c, ddg.c, dfp.c, dominance.c, emit-rtl.c, fixed-value.c, fwprop.c, ggc-common.c, gimple.c, gimplify.c, graphite-blocking.c, graphite-clast-to-gimple.c, graphite-dependences.c, graphite-flattening.c, graphite-interchange.c, graphite-poly.c, graphite-scop-detection.c, graphite.c, haifa-sched.c, implicit-zee.c, integrate.c, ipa-pure-const.c, ipa-reference.c, ira-build.c, ira-conflicts.c, ira-costs.c, ira-lives.c, jump.c, lists.c, loop-doloop.c, loop-iv.c, lto-cgraph.c, lto-compress.c, lto-opts.c, lto-section-in.c, lto-section-out.c, lto-streamer-out.c, lto-symtab.c, modulo-sched.c, optabs.c, params.c, postreload-gcse.c, postreload.c, predict.c, profile.c, regcprop.c, reginfo.c, regmove.c, reorg.c, resource.c, sched-deps.c, sched-ebb.c, sched-rgn.c, sdbout.c, sel-sched-dump.c, sel-sched-ir.c, sese.c, stmt.c, targhooks.c, tree-cfgcleanup.c, tree-mudflap.c, tree-nomudflap.c, tree-object-size.c, tree-outof-ssa.c, tree-phinodes.c, tree-profile.c, tree-sra.c, tree-ssa-ccp.c, tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-loop-prefetch.c, tree-ssa-loop.c, tree-ssa-operands.c, tree-ssa-structalias.c, tree-ssa-uninit.c, tree-vect-patterns.c, value-prof.c, var-tracking.c, web.c: Don't include toplev.h. * Makefile.in (TOPLEV_H): Remove. All uses changed to use toplev.h. Dependencies for above files and c-family files changed to remove $(TOPLEV_H) or toplev.h. (C_TREE_H): Don't include $(TOPLEV_H). (DIAGNOSTIC_CORE_H): Use $(INPUT_H) instead of input.h. Add bversion.h. * config/arm/t-pe, config/arm/t-wince-pe, config/i386/t-cygming, config/ia64/t-ia64, config/mep/t-mep, config/score/t-score-elf, config/t-darwin, config/t-sol2, config/t-vxworks, config/v850/t-v850, config/v850/t-v850e: Dependencies for above files changed to remove $(TOPLEV_H) or toplev.h. c-family: * c-common.h (parse_optimize_options): Declare. * c-cppbuiltin.c, c-format.c, c-gimplify.c, c-lex.c, c-omp.c, c-pch.c, c-pragma.c, c-semantics.c: Don't include toplev.h. cp: * cp-gimplify.c, cp-lang.c, cvt.c, cxx-pretty-print.c, error.c, except.c, expr.c, friend.c, init.c, mangle.c, name-lookup.c, optimize.c, parser.c, rtti.c, tree.c, typeck2.c: Don't include toplev.h. * Make-lang.in: Dependencies for above files changed to remove toplev.h. java: * expr.c, lang.c, mangle.c, mangle_name.c, typeck.c, verify-glue.c: Don't include toplev.h. * Make-lang.in: Dependencies for above files changed to remove toplev.h. lto: * Make-lang.in (lto/lto-object.o): Depend on toplev.h instead of $(TOPLEV_H). From-SVN: r167293
2010-11-29re PR c++/45383 (Implicit conversion to pointer does no longer automatically ↵Dodji Seketeli1-3/+1
generate operator== and operator!=.) Fix PR c++/45383 Reverting the fix for PR c++/42260 fixes c++/45383. This reverts commit r155415. gcc/cp/ Reverted patch for PR c++/42260 * cp-tree.h (lookup_conversions): Reverted "Add new bool parameter to declarationE." * search.c (lookup_conversion): Reverted "Use new bool parameter in definition". * call.c (add_builtin_candidates): Reverted "Don't lookup template conversion" (convert_class_to_reference, build_user_type_conversion_1, build_op_call): Reverted "Adjust". * cvt.c (build_expr_type_conversion): Reverted "Likewise". gcc/testsuite/ Reverted patch for PR c++/42260 * conversion/cast2.C: Reverted New test. From-SVN: r167248
2010-11-10cfgloop.c (verify_loop_structure): Use %' in diagnostics.Joseph Myers1-1/+1
* cfgloop.c (verify_loop_structure): Use %' in diagnostics. Start diagnostics with lowercase letters. * cgraphunit.c (verify_cgraph_node): Start diagnostics with lowercase letters. * collect2.c (maybe_run_lto_and_relink): Remove trailing '.' from diagnostic. * config/alpha/freebsd.h (LINK_SPEC): Avoid '`' in diagnostic. * config/arm/arm.c (arm_get_pcs_model): Start diagnostics with lowercase letters. * config/arm/freebsd.h (LINK_SPEC): Avoid '`' in diagnostic. Remove trailing ' ' from diagnostic. * config/avr/avr.c (print_operand_address): Start diagnostic with a lowercase letter and remove trailing '.'. * config/avr/avr.opt (mpmem-wrap-around): Fix typo in help text. * config/bfin/bfin.c (bfin_option_override): Start diagnostics with lowercase letters. Use %' in diagnostics. Remove trailing '.' from diagnostics. (bfin_handle_longcall_attribute): Use %' in diagnostic. * config/cris/cris.c (cris_split_movdx, cris_expand_pic_call_address): Start diagnostics with lowercase letters. (cris_asm_output_label_ref): Use %' in diagnostic. * config/cris/cris.h (ASM_SPEC): Start diagnostic with a lowercase letter. * config/crx/crx.h (FUNCTION_PROFILER): Start diagnostic with a lowercase letter. * config/darwin-c.c (version_as_macro): Start diagnostic with a lowercase letter. * config/darwin-driver.c (darwin_default_min_version): Use %' in diagnostic. * config/host-darwin.c (darwin_gt_pch_use_address): Use %' in diagnostic. * config/i386/freebsd.h (LINK_SPEC): Avoid '`' in diagnostic. * config/i386/host-cygwin.c (cygwin_gt_pch_get_address): Use %' in diagnostics. * config/i386/i386.c (ix86_option_override_internal): Write diagnostic as a single sentence without trailing '.'. Use %' in diagnostics. (ix86_function_sseregparm, classify_argument): Start diagnostics with lowercase letters. (ix86_expand_prologue): Use %' in diagnostic. * config/i386/i386.h (CC1_CPU_SPEC_1): Remove trailing '.' from diagnostic. * config/i386/nwld.h (LINK_SPEC): Start diagnostic with a lowercase letter. * config/i386/winnt.c (i386_pe_determine_dllimport_p): Use %' in diagnostic. * config/ia64/freebsd.h (LINK_SPEC): Avoid '`' in diagnostic. * config/ia64/ia64.opt (msched-max-memory-insns-hard-limit): Avoid '`' in help text. * config/lm32/lm32.c (lm32_print_operand): Start diagnostic with a lowercase letter. * config/mep/mep.c (mep_validate_vliw): Start diagnostics with lowercase letters. * config/microblaze/microblaze.c (microblaze_handle_option): Remove trailing '.' from diagnostic. (print_operand): Start diagnostic with a lowercase letter. * config/pa/pa-hpux10.h (LINK_SPEC): Start diagnostics with lowercase letters. Avoid '`' in diagnostics. * config/pa/pa-hpux11.h (LINK_SPEC): Start diagnostics with lowercase letters. Avoid '`' in diagnostics. * config/pa/pa64-hpux.h (LINK_SPEC): Start diagnostics with lowercase letters. Avoid '`' in diagnostics. * config/picochip/picochip.c (picochip_option_override, picochip_emit_save_register, picochip_function_arg, picochip_output_label, picochip_output_internal_label, picochip_asm_output_opcode, picochip_output_cbranch, picochip_output_compare, picochip_output_branch, picochip_get_vliw_alu_id): Remove trailing '.' and '\n' from diagnostics. Start diagnostics with lowercase letters. Use %' in diagnostics. * config/rs6000/rs6000.c (rs6000_option_override_internal): Use "SPE" capitalization. Start diagnostic with a lowercase letter. (rs6000_handle_option): Start diagnostics with lowercase letters. (def_builtin): Remove trailing '.' from diagnostic. (rs6000_savres_routine_name): Start diagnostic with a lowercase letter. * config/rs6000/sysv4.h (LINK_OS_FREEBSD_SPEC): Avoid '`' in diagnostic. * config/rx/rx.c (rx_handle_option): Start diagnostic with a lowercase letter. * config/s390/s390.c (s390_option_override) Start diagnostics with lowercase letters. Use %' in diagnostic. * config/sh/sh.c (sh_output_mi_thunk): Start diagnostics with lowercase letters. * config/sh/symbian-base.c (sh_symbian_mark_dllimport): Use %' in diagnostic. * config/sh/symbian-c.c (sh_symbian_is_dllimported): Use %' in diagnostic. * config/sh/symbian-cxx.c (sh_symbian_is_dllimported): Use %' in diagnostic. * config/sparc/freebsd.h (LINK_SPEC): Avoid '`' in diagnostic. * config/spu/spu.c (spu_option_override): Start diagnostics with lowercase letters. Use %qs for quoting in diagnostics. (spu_check_builtin_parm): Remove trailing '.' from diagnostics. Use %wd instead of HOST_WIDE_INT_PRINT_DEC in diagnostic . * config/v850/v850.c (construct_save_jarl): Remove trailing '\n' from diagnostic. * convert.c (convert_to_integer, convert_to_vector): Use %' in diagnostics. * dbgcnt.c (dbg_cnt_process_opt): Start diagnostic with lowercase letter and use "cannot" spelling. * expmed.c (extract_fixed_bit_field): Start diagnostic with lowercase letter and format as a single sentence without '.'. * ggc-common.c (write_pch_globals, gt_pch_save, gt_pch_restore): Use %' in diagnostics. * ggc-page.c (ggc_pch_write_object, ggc_pch_finish, ggc_pch_read): Use %' in diagnostics. * ggc-zone.c (ggc_pch_write_object, ggc_pch_finish, ggc_pch_read): Use %' in diagnostics. * graph.c (clean_graph_dump_file): Use %' in diagnostic. * graphite-poly.c (graphite_read_scop_file): Start diagnostics with lowercase letters and remove tailing '.' and '\n'. * lto-cgraph.c (input_profile_summary): Start diagnostic with lowercase letter and remove trailing '.'. (input_cgraph): Start diagnostics with lowercase letters and remove trailing '\n'. * opts.c (finish_options, common_handle_option): Start diagnostics with lowercase letters and remove trailing '.'. Fix typo in diagnostic. * passes.c (position_pass): Start diagnostic with lowercase letter. * plugin.c (add_new_plugin, parse_plugin_arg_opt, register_callback, try_init_one_plugin): Start diagnostics with lowercase letters. * reload1.c (spill_failure): Use %' in diagnostic. (gen_reload): Start diagnostic with a lowercase letter. * stor-layout.c (place_field): Start diagnostic with a lowercase letter. * toplev.c (open_auxiliary_file): Use %' in diagnostic. * tree-cfg.c (verify_expr, verify_types_in_gimple_reference, verify_gimple_call, verify_gimple_phi, verify_eh_throw_stmt_node): Start diagnostics with lowercase letters, remove trailing '.' and use %' in diagnostics. * tree-ssa.c (verify_def): Remove trailing '.' from diagnostic. (verify_ssa): Don't split diagnostic across two error calls. Spell out "number" and use %' in diagnostic. * value-prof.c (visit_hist, check_counter): Start diagnostics with lowercase letters. c-family: * c-common.c (handle_mode_attribute): Use %' and word "signedness" in diagnostic. * c-opts.c (c_common_parse_file): Start diagnostics with lowercase letter. * c-pragma.c (handle_pragma_target, handle_pragma_optimize): Remove trailing '.' from diagnostics. * c.opt (Wwrite-strings_: Avoid '`' in help text. cp: * cvt.c (cp_convert_to_pointer): Use %' in diagnostic. * decl.c (layout_var_decl, maybe_commonize_var, grokdeclarator): Use %' in diagnostics. * decl2.c (check_classfn): Use %' in diagnostic. * init.c (build_java_class_ref): Use %' in diagnostic. (build_delete): Remove trailing '.' from diagnostic. * method.c (do_build_copy_assign, walk_field_subobs): Use %' in diagnostics. * name-lookup.c (pushdecl_maybe_friend): Use %' in diagnostic. * parser.c (cp_parser_exception_specification_opt): Remove trailing '.' from diagnostic. (cp_parser_objc_interstitial_code): Use %qs for quoting in diagnostic. * pt.c (check_valid_ptrmem_cst_expr): Use %< and %> for quoting in diagnostic. * repo.c (reopen_repo_file_for_write): Use %' in diagnostic. fortran: * trans-array.c (gfc_trans_deferred_array): Use "front-end" spelling in diagnostic. * trans.c (gfc_allocate_array_with_status): Add missing space in diagnostic. java: * expr.c (expand_java_field_op): Use %' in diagnostic. * jcf-parse.c (java_parse_file): Use %' in diagnostics. * jvspec.c (lang_specific_driver): Use %' in diagnostic. * lang.c (java_post_options): Use %' in diagnostics. lto: * lto.c (lto_resolution_read): Start diagnostics with lowercase letters and remove trailing '.'. (lto_file_finalize): Start diagnostic with a lowercase letter. objc: * objc-act.c (objc_init): Use %' in diagnostic. (objc_set_method_opt): Remove trailing '.' from diagnostic. From-SVN: r166570
2010-11-08Correct conversion/overflow behavior.Jason Merrill1-3/+30
* cvt.c (ignore_overflows): Move here from typeck.c. (ocp_convert): Use it. (cp_fold_convert): Use it. Don't call rvalue. * typeck.c (build_static_cast_1): Don't use it. Do call rvalue. * error.c (location_of): Handle expressions, too. * class.c (check_bitfield_decl): Set input_location around call to cxx_constant_value. * semantics.c (cxx_eval_outermost_constant_expr): Don't print the expression if it already had TREE_OVERFLOW set. (reduced_constant_expression_p): Check TREE_OVERFLOW_P for C++98, too. (verify_constant): Allow overflow with a permerror if we're enforcing. (cxx_eval_outermost_constant_expr): Use verify_constant. (adjust_temp_type): Use cp_fold_convert. * decl.c (build_enumerator): Don't call constant_expression_warning. * decl2.c (grokbitfield): Likewise. From-SVN: r166453
2010-11-01call.c (null_ptr_cst_p): Use maybe_constant_value.Jason Merrill1-1/+4
* call.c (null_ptr_cst_p): Use maybe_constant_value. (set_up_extended_ref_temp): Support constant initialization. (initialize_reference): Adjust. * class.c (check_bitfield_decl): Use cxx_constant_value. * cvt.c (ocp_convert): Don't use integral_constant_value when converting to class type. * decl.c (finish_case_label): Use maybe_constant_value. (build_init_list_var_init): Support constant initialization. (check_initializer): Likewise. Reorganize. (cp_finish_decl): Likewise. (expand_static_init): Likewise. (compute_array_index_type): Use maybe_constant_value. Add complain parm. (create_array_type_for_decl, grokdeclarator): Pass it. (build_enumerator): Use cxx_constant_value. * decl2.c (grokfield): Use maybe_constant_init. * except.c (check_noexcept_r): Handle constexpr. (build_noexcept_spec): Use maybe_constant_value. * init.c (expand_default_init): Support constant initialization. (build_vec_init): Likewise. (constant_value_1): Adjust. (build_new_1): Adjust. * parser.c (cp_parser_constant_expression): Allow non-integral in C++0x mode. (cp_parser_direct_declarator): Don't fold yet in C++0x mode. (cp_parser_initializer_clause): Toss folded result if non-constant. * pt.c (fold_decl_constant_value): Remove. (convert_nontype_argument): Use maybe_constant_value. Give clearer error about overflow. (tsubst): Move array bounds handling into compute_array_index_type. (value_dependent_expression_p): Handle constant CALL_EXPR. * semantics.c (finish_static_assert): Use maybe_constant_value. (ensure_literal_type_for_constexpr_object): Make sure type is complete. (potential_constant_expression): Use maybe_constant_value. * tree.c (cast_valid_in_integral_constant_expression_p): Any cast is potentially valid in C++0x. * typeck2.c (store_init_value): Handle constant init. (check_narrowing): Use maybe_constant_value. (build_functional_cast): Set TREE_CONSTANT on literal T(). * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): Remove. (LOOKUP_ALREADY_DIGESTED): New. (compute_array_index_type): Adjust prototype. From-SVN: r166167
2010-10-27* cvt.c (build_up_reference): Use target_type for the temporary var.Jason Merrill1-1/+1
From-SVN: r166009
2010-09-27Require lvalues as specified by the standard.Jason Merrill1-2/+2
* typeck.c (lvalue_or_else): Use real_lvalue_p. (cp_build_addr_expr_1): Split out of cp_build_unary_op. (cp_build_addr_expr, cp_build_addr_expr_strict): Interfaces. (decay_conversion, get_member_function_from_ptrfunc): Adjust. (build_x_unary_op, build_reinterpret_cast_1): Adjust. (build_const_cast_1): Adjust. * cp-tree.h: Declare new fns. * call.c (build_this, convert_like_real, build_over_call): Adjust. (initialize_reference): Adjust. * class.c (build_base_path, convert_to_base_statically): Adjust. (build_vfn_ref, resolve_address_of_overloaded_function): Adjust. * cvt.c (build_up_reference, convert_to_reference): Adjust. * decl.c (register_dtor_fn): Adjust. * decl2.c (build_offset_ref_call_from_tree): Adjust. * except.c (initialize_handler_parm): Adjust. * init.c (build_offset_ref, build_delete, build_vec_delete): Adjust. * rtti.c (build_dynamic_cast_1, tinfo_base_init): Adjust. * tree.c (stabilize_expr): Adjust. From-SVN: r164666
2010-08-06typeck.c (complete_type_or_maybe_complain): Split out from...Jason Merrill1-1/+1
* typeck.c (complete_type_or_maybe_complain): Split out from... (complete_type_or_else): Here. (build_class_member_access_expr): Call it. (finish_class_member_access_expr): Likewise. * call.c (build_special_member_call): Likewise. * cvt.c (build_expr_type_conversion): Likewise. * init.c (build_new): Likewise. * typeck2.c (build_functional_cast): Likewise. * cp-tree.h: Declare it. * init.c (build_value_init): Add complain parm. (build_value_init_noctor): Likewise. (perform_member_init): Pass it. (expand_aggr_init_1): Likewise. (build_new_1): Likewise. (build_vec_init): Likewise. * pt.c (tsubst_expr): Likewise. * typeck2.c (build_functional_cast): Likewise. * cp-tree.h: Adjust. * tree.c (build_target_expr_with_type): Handle error_mark_node. From-SVN: r162953
2010-07-13re PR c++/44908 (SFINAE vs pointer to member via virtual base)Paolo Carlini1-3/+3
cp/ 2010-07-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/44908 * call.c (convert_like_real): Adjust convert_ptrmem call, pass complain argument. * typeck.c (get_delta_difference): Update prototype, add a tsubst_flags_t parameter; update get_delta_difference_1 calls and add checks for error_mark_node. (get_delta_difference_1): Update prototype, add a tsubst_flags_t parameter; update lookup_base call. (build_ptrmemfunc): Update prototype, add a tsubst_flags_t parameter; update get_delta_difference call and add check for error_mark_node. (convert_ptrmem): Update prototype, add a tsubst_flags_t parameter; update get_delta_difference call and add check for error_mark_node; update build_ptrmemfunc call. (build_static_cast_1): Adjust convert_ptrmem call. (expand_ptrmemfunc_cst): Adjust get_delta_difference call. (cp_build_unary_op): Adjust build_ptrmemfunc call. * cvt.c (cp_convert_to_pointer, convert_force): Adjust convert_ptrmem and build_ptrmemfunc calls. * cp-tree.h: Update build_ptrmemfunc and convert_ptrmem prototypes. testsuite/ 2010-07-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/44908 * g++.dg/template/sfinae21.C: New. * g++.dg/template/sfinae22.C: Likewise. From-SVN: r162138
2010-07-06cp-tree.h (impl_conv_void): New type.Shujing Zhao1-32/+281
/cp 2010-07-06 Shujing Zhao <pearly.zhao@oracle.com> * cp-tree.h (impl_conv_void): New type. (convert_to_void): Adjust prototype. * cvt.c (convert_to_void): Use impl_conv_void, emit and adjust the diagnostic for easy translation. Change caller. * typeck.c: Update call to convert_to_void. * semantics.c: Likewise. * init.c: Likewise. /testsuite 2010-07-06 Shujing Zhao <pearly.zhao@oracle.com> * g++.dg/warn/noeffect2.C: Adjust expected warning. * g++.dg/warn/volatile1.C: Likewise. * g++.dg/template/warn1.C: Likewise. From-SVN: r161863
2010-06-11cp-tree.h (expr_list_kind): New type.Shujing Zhao1-1/+1
2010-06-11 Shujing Zhao <pearly.zhao@oracle.com> * cp-tree.h (expr_list_kind): New type. (impl_conv_rhs): New type. (build_x_compound_expr_from_list, convert_for_initialization): Adjust prototype. (typeck.c (convert_arguments): Use impl_conv_rhs and emit the diagnostics for easy translation. Change caller. (convert_for_initialization): Use impl_conv_rhs and change caller. (build_x_compound_expr_from_list): Use expr_list_kind and emit the diagnostics for easy translation. Change caller. * decl.c (bad_spec_place): New enum. (bad_specifiers): Use it and emit the diagnostics for easy translation. Change caller. * pt.c (coerce_template_parms): Put the diagnostics in full sentence. From-SVN: r160591
2010-06-07re PR c++/44444 (-Wunused-but-set-variable problem with field references)Jakub Jelinek1-1/+3
PR c++/44444 * expr.c (mark_exp_read): Handle INDIRECT_REF. * cvt.c (convert_to_void): Handle INDIRECT_REF like handled_component_p. * g++.dg/warn/Wunused-var-12.C: New test. From-SVN: r160388
2010-06-05cvt.c (cp_convert_to_pointer): Use null_ptr_cst_p.Magnus Fromreide1-1/+1
* cvt.c (cp_convert_to_pointer): Use null_ptr_cst_p. * typeck.c (build_ptrmemfunc): Likewise. From-SVN: r160309
2010-06-02re PR debug/44367 (-O0 -g wrong DW_AT_location on c++ class retval)Jakub Jelinek1-12/+16
PR debug/44367 * semantics.c (finalize_nrv): Don't copy DECL_ARTIFICIAL, DECL_IGNORED_P, DECL_SOURCE_LOCATION and DECL_ABSTRACT_ORIGIN from var to result. Set DECL_VALUE_EXPR on var. From-SVN: r160187
2010-06-01Undo inadvertent commit in rev 160105.Diego Novillo1-16/+12
From-SVN: r160107
2010-06-01richi's fixes for c++ bootstrapDiego Novillo1-12/+16
From-SVN: r160105
2010-05-13re PR bootstrap/44048 (building without C++ enabled fails)Jason Merrill1-1/+1
PR bootstrap/44048 PR target/44099 gcc/cp: * cp-tree.def (NULLPTR_TYPE): Remove. * cp-tree.h (NULLPTR_TYPE_P): New. (SCALAR_TYPE_P): Use it. (nullptr_type_node): New. (cp_tree_index): Add CPTI_NULLPTR_TYPE. * decl.c (cxx_init_decl_processing): Call record_builtin_type on nullptr_type_node. * cvt.c (ocp_convert): Use NULLPTR_TYPE_P instead of NULLPTR_TYPE. * cxx-pretty-print.c (pp_cxx_constant): Likewise. * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise. * mangle.c (write_type): Likewise. * name-lookup.c (arg_assoc_type): Likewise. * typeck.c (build_reinterpret_cast_1): Likewise. * rtti.c (typeinfo_in_lib_p): Likewise. (emit_support_tinfos): Remove local nullptr_type_node. gcc: * dbxout.c (dbxout_type): Remove NULLPTR_TYPE handling. * sdbout.c (plain_type_1): Likewise. * dwarf2out.c (is_base_type): Likewise. (gen_type_die_with_usage): Likewise. Generate DW_TAG_unspecified_type for any LANG_TYPE. From-SVN: r159350
2010-05-11re PR c++/44062 ((void)var; doesn't prevent 'set but not used' warning)Jakub Jelinek1-1/+15
PR c++/44062 * c-parser.c (c_parser_expression): Mark LHS of a comma expression as read if it is a decl, handled component or COMPOUND_EXPR with that on the RHS. * c-typeck.c (c_process_expr_stmt): Mark RHS of COMPOUND_EXPR if it is a decl or handled component. * semantics.c (finish_expr_stmt): Don't call mark_exp_read here... * cvt.c (convert_to_void): ... but here. If expr is a COMPOUND_EXPR, look at its second operand. * c-c++-common/Wunused-var-7.c: New test. * g++.dg/warn/Wunused-var-9.C: New test. From-SVN: r159286
2010-05-06Add support for C++0x nullptr.Jason Merrill1-0/+2
gcc: * c-common.c (c_common_reswords): Add nullptr. * c-common.h: Add RID_NULLPTR. Reorganize C++0x rids. * dwarf2out.c (is_base_type): Handle NULLPTR_TYPE. (gen_type_die_with_usage): Likewise. * dbxout.c (dbxout_type): Likewise. * sdbout.c (plain_type_1): Likewise. gcc/cp: * cp-tree.def: Add NULLPTR_TYPE. * cp-tree.h: Add nullptr_node. (cp_tree_index): Add CPTI_NULLPTR. (SCALAR_TYPE_P): Add NULLPTR_TYPE. * call.c (null_ptr_cst_p): Handle nullptr. (standard_conversion): Likewise. (convert_arg_to_ellipsis): Likewise. * mangle.c (write_type): Likewise. * name-lookup.c (arg_assoc_type): Likewise. * parser.c (cp_parser_primary_expression): Likewise. * typeck.c (cp_build_binary_op): Likewise. (build_reinterpret_cast_1): Likewise. * error.c (dump_type): Likewise. (dump_type_prefix, dump_type_suffix): Likewise. * decl.c (cxx_init_decl_processing): Likewise. * cxx-pretty-print.c (pp_cxx_constant): Likewise. * cvt.c (ocp_convert): Likewise. * rtti.c (typeinfo_in_lib_p, emit_support_tinfos): Put nullptr_t tinfo in libsupc++. libstdc++-v3: * config/abi/pre/gnu.ver: Add typeinfo for decltype(nullptr). libiberty: * cp-demangle.c (cplus_demangle_builtin_types): Add nullptr. (cplus_demangle_type): Handle nullptr. From-SVN: r159131
2010-05-03re PR c++/43680 ([DR 1022] G++ is too aggressive in optimizing away bounds ↵Jason Merrill1-1/+4
checking with enums) PR c++/43680 gcc: * c.opt (-fstrict-enums): New. * doc/invoke.texi (C++ Dialect Options): Document -fstrict-enums. gcc/cp: * decl.c (finish_enum): Use the TYPE_MIN_VALUE and TYPE_MAX_VALUE from the selected underlying type unless -fstrict-enums. Set ENUM_UNDERLYING_TYPE to have the restricted range. * cvt.c (type_promotes_to): Use ENUM_UNDERLYING_TYPE. * class.c (check_bitfield_decl): Likewise. From-SVN: r159006
2010-04-21re PR c++/9335 (repeated diagnostic when maximum template depth is exceeded)Jason Merrill1-0/+2
PR c++/9335 gcc/cp: * init.c (constant_value_1): Treat error_mark_node as a constant if DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P is set. * cvt.c (ocp_convert): Handle getting error_mark_node from integral_constant_value. * decl.c (compute_array_index_type): Likewise. gcc/testsuite: * lib/prune.exp: Prune "skipping N instantiation contexts". From-SVN: r158586
2010-02-20re PR c++/35669 (NULL (__null) not considered different from 0 with C++)Manuel López-Ibáñez1-1/+2
2010-02-20 Manuel López-Ibáñez <manu@gcc.gnu.org> PR c++/35669 * c.opt (Wconversion-null): New option. * doc/invoke.texi (Wconversion-null): Document. cp/ * call.c (conversion_null_warnings): Replace -Wconversion with -Wconversion-null. * cvt.c (build_expr_type_conversion): Likewise. testsuite/ * g++.dg/warn/Wconversion2.C: Replace -Wconversion with -Wconversion-null. * g++.dg/warn/Wconversion-null.C: New test. * g++.old-deja/g++.other/null1.C: Move to... * g++.dg/warn/Wconversion-null-2.C: ... here. Remove -Wconversion. libstdc++-v3/ * testsuite/18_support/headers/cstddef/macros.cc: Add -Wno-conversion-null. From-SVN: r156928
2010-02-18re PR c++/43108 (mixed complex<T> multiplication horribly inefficient)Jason Merrill1-2/+4
PR c++/43108 * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from C build_binary_op. * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR. * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE. From-SVN: r156874
2010-02-10Make-lang.in (cp/cvt.o, [...]): Depend on intl.h.Shujing Zhao1-8/+9
2010-02-10 Shujing Zhao <pearly.zhao@oracle.com> * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h. * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy translation. * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id) (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype) (cp_parser_parameter_declaration) (cp_parser_exception_specification_opt) (cp_parser_exception_declaration): Likewise. * pt.c (check_default_tmpl_args): Likewise. * search.c (lookup_field_r): Likewise. From-SVN: r156645
2010-01-18re PR c++/42766 (tree check fail in build_expr_type_conversion)Dodji Seketeli1-0/+1
Fix PR c++/42766 gcc/cp/ChangeLog: PR c++/42766 * cvt.c (build_expr_type_conversion): Look through OVERLOAD. gcc/testsuite/ChangeLog: PR c++/42766 * g++.dg/conversion/op6.C: New test. From-SVN: r156020
2009-12-23re PR c++/42260 (ICE looking up template conversion operator)Dodji Seketeli1-1/+3
Fix PR c++/42260 gcc/cp/ChangeLog: PR c++/42260 * cp-tree.h (lookup_conversions): Add new bool parameter to declaration. * search.c (lookup_conversion): Use new bool parameter in definition. * call.c (add_builtin_candidates): Don't lookup template conversion (convert_class_to_reference, build_user_type_conversion_1, build_op_call): Adjust. * cvt.c (build_expr_type_conversion): Likewise gcc/testsuite/ChangeLog: PR c++/42260 * conversion/cast2.C: New test. From-SVN: r155415
2009-12-03re PR c++/42266 ([C++0x] ICE with decltype and variadic templates)Jason Merrill1-1/+2
PR c++/42266 * cvt.c (convert_from_reference): Do nothing if TREE_TYPE is null. From-SVN: r154964
2009-10-08re PR c++/37177 ([c++0x] ICE on decltype(rel_ops::operator><int>);)Jason Merrill1-0/+1
PR c++/37177 * pt.c (resolve_nondeduced_context): New. * cvt.c (convert_to_void): Call it. * semantics.c (finish_decltype_type): Likewise. * typeck.c (decay_conversion): Here too. * pt.c (tsubst_decl): Don't clobber input_location. Don't register a bad specialization. From-SVN: r152564
2009-09-17re PR c++/39365 (++ operator with volatile bool increments)Andrew Pinski1-1/+1
2009-09-17 Andrew Pinski <pinskia@gcc.gnu.org> PR c++/39365 * typeck.c (cp_build_unary_op): Check TREE_CODE for bools instead of using same_type_p. (convert_for_assignment): Likewise. * cvt.c (type_promotes_to): Likewise. 2009-09-17 Andrew Pinski <pinskia@gcc.gnu.org> PR c++/39365 * g++.dg/expr/bool3.C: New test. * g++.dg/expr/bool4.C: New test. From-SVN: r151823
2009-07-31call.c (reference_binding): Rename lvalue_p to is_lvalue.Jason Merrill1-0/+9
* call.c (reference_binding): Rename lvalue_p to is_lvalue. Do direct binding of "rvalues" in memory to rvalue references. * tree.c (lvalue_p_1): Can't be both non-addressable lvalue and "rvalue" in memory. * typeck.c (build_static_cast_1): Do direct binding of memory "rvalues" to rvalue references. * cvt.c (cp_fold_convert): New. * cp-tree.h: Declare it. From-SVN: r150325
2009-07-16re PR c/40435 (Revision 148442 caused many regressions on trunk)Aldy Hernandez1-4/+5
2009-07-17 Aldy Hernandez <aldyh@redhat.com> Manuel López-Ibáñez <manu@gcc.gnu.org> PR 40435 * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h, builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c, tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c, c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c, calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c, tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c, tree-inline.c, c-common.c, c-common.h, gimple.c, tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c, convert.c: Add location argument to fold_{unary,binary,ternary}, fold_build[123], build_call_expr, build_size_arg, build_fold_addr_expr, build_call_array, non_lvalue, size_diffop, fold_build1_initializer, fold_build2_initializer, fold_build3_initializer, fold_build_call_array, fold_build_call_array_initializer, fold_single_bit_test, omit_one_operand, omit_two_operands, invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref, combine_comparisons, fold_builtin_*, fold_call_expr, build_range_check, maybe_fold_offset_to_address, round_up, round_down. objc/ * objc-act.c: Add location argument to all calls to build_fold_addr_expr. testsuite/ * gcc.dg/pr36902.c: Add column info. * g++.dg/gcov/gcov-2.C: Change count for definition. cp/ * typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c, tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c, call.c, cvt.c, mangle.c: Add location argument to fold_{unary,binary,ternary}, fold_build[123], build_call_expr, build_size_arg, build_fold_addr_expr, build_call_array, non_lvalue, size_diffop, fold_build1_initializer, fold_build2_initializer, fold_build3_initializer, fold_build_call_array, fold_build_call_array_initializer, fold_single_bit_test, omit_one_operand, omit_two_operands, invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref, combine_comparisons, fold_builtin_*, fold_call_expr, build_range_check, maybe_fold_offset_to_address, round_up, round_down. fortran/ * trans-expr.c, trans-array.c, trans-openmp.c, trans-stmt.c, trans.c, trans-io.c, trans-decl.c, trans-intrinsic.c: Add location argument to fold_{unary,binary,ternary}, fold_build[123], build_call_expr, build_size_arg, build_fold_addr_expr, build_call_array, non_lvalue, size_diffop, fold_build1_initializer, fold_build2_initializer, fold_build3_initializer, fold_build_call_array, fold_build_call_array_initializer, fold_single_bit_test, omit_one_operand, omit_two_operands, invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref, combine_comparisons, fold_builtin_*, fold_call_expr, build_range_check, maybe_fold_offset_to_address, round_up, round_down. Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org> From-SVN: r149722
2009-06-25cvt.c (convert_to_void): Only warn about COND_EXPR if neither the second nor ↵Ian Lance Taylor1-2/+3
third operand has side effects. cp/: * cvt.c (convert_to_void): Only warn about COND_EXPR if neither the second nor third operand has side effects. testsuite/: * g++.dg/warn/Wunused-16.C: New testcase. From-SVN: r148950
2009-06-16c-common.c (skip_evaluation): Don't define.Ian Lance Taylor1-1/+3
./: * c-common.c (skip_evaluation): Don't define. (c_inhibit_evaluation_warnings): Define global variable. (overflow_warning): Check c_inhibit_evaluation_warnings rather than skip_evaluation. (convert_and_check, warn_for_div_by_zero): Likewise. * c-common.h (skip_evaluation): Don't declare. (c_inhibit_evaluation_warnings): Declare. * c-parser.c (c_parser_typeof_specifier): Set c_inhibit_evaluation_warnings rather than skip_evaluation. (c_parser_conditional_expression): Likewise. (c_parser_binary_expression): Likewise. (c_parser_sizeof_expression): Likewise. (c_parser_alignof_expression): Likewise. * c-typeck.c (build_indirect_ref): Check c_inhibit_evaluation_warnings rather than skip_evaluation. (build_conditional_expr, build_binary_op): Likewise. cp/: * parser.c (cp_unevaluated_operand): Define global variable. (cp_parser_question_colon_clause): Increment c_inhibit_evaluation_warnings when evaluating an expression which will never be executed. (cp_parser_decltype): Increment cp_unevaluated_operand and c_inhibit_evaluation_warnings, not skip_evaluation. (cp_parser_sizeof_operand): Likewise. (cp_parser_enclosed_template_argument_list): Save cp_unevaluated_operand and c_inhibit_evaluation_warnings, not skip_evaluation. * cp-tree.h (struct saved_scope): Remove skip_evaluation field. Add unevaluated_operand and inhibit_evaluation_warnings fields. (cp_unevaluated_operand): Declare. * name-lookup.c (push_to_top_level): Save cp_unevaluated_operand and c_inhibit_evaluation_warnings rather than skip_evaluation. (pop_from_top_level): Restore cp_unevaluated_operand and c_inhibit_evaluation_warnings rather than skip_evaluation. * class.c (build_base_path): Check cp_unevaluated_operand rather than skip_evaluation. * typeck.c (build_class_member_access_expr): Likewise. (cp_build_binary_op): Don't warn about bad shift counts if c_inhibit_evaluation_warnings is non-zero. * pt.c (coerce_template_parms): Save state of cp_unevaluated_operand and c_inhibit_evaluation_warnings, not skip_evaluation. (tsubst_aggr_type): Likewise. (tsubst_pack_expansion): Check cp_unevaluated_operand rather than skip_evaluation. (tsubst_copy): Likewise. (tsubst): Set cp_unevaluated_operand and c_inhibit_evaluation_warnings, not skip_evaluation. (tsubst_copy_and_build): Likewise. * call.c (convert_arg_to_ellipsis): Check cp_unevaluated_operand rather than skip_evaluation. * decl2.c (mark_used): Likewise. * semantics.c (finish_non_static_data_member): Likewise. * cvt.c (cp_convert_and_check): Check c_inhibit_evaluation_warnings rather than skip_evaluation. * mangle.c (write_type): Set cp_unevaluated_operand rather than skip_evaluation. testsuite/: * g++.dg/warn/skip-1.C: New testcase. From-SVN: r148535
2009-05-28Fix for PR c++/PR39754Dodji Seketeli1-1/+1
gcc/cp/ChangeLog: PR c++/39754 * cp-tree.h (canonical_type_variant): Remove this function declaration. (strip_typedefs): New function declaration. * tree.c (strip_typedefs): New function definition. (canonical_type_variant): Remove function definition. * cvt.c (convert_from_reference): No need to use canonical_type_variant. * typeck.c (cp_build_indirect_ref): Likewise. * error.c (dump_template_bindings): Use strip_typedefs instead of canonical_type_variant. * pt.c (convert_template_argument, unify): Likewise. * mangle.c (canonicalize_for_substitution): Don't use canonical_type_variant. gcc/testsuite/ChangeLog: PR c++/39754 * g++.dg/template/canon-type-1.C: New test. * g++.dg/template/canon-type-2.C: Likewise. * g++.dg/template/canon-type-3.C: Likewise. * g++.dg/template/canon-type-4.C: Likewise. * g++.dg/template/canon-type-5.C: Likewise. * g++.dg/template/canon-type-6.C: Likewise. * g++.dg/template/canon-type-7.C: Likewise. From-SVN: r147951
2009-05-21tree.c (build_tree_list_vec_stat): New function.Ian Lance Taylor1-6/+10
./: * tree.c (build_tree_list_vec_stat): New function. (ctor_to_vec): New function. (build_nt_call_vec): New function. (build_call_array): Change args to be a const pointer. (build_call_vec): New function. * tree.h (build_nt_call_vec): Declare. (build_tree_list_vec_stat): Declare. (build_tree_list_vec): Define. (build_call_array): Update declaration. (build_call_vec): Declare. (ctor_to_vec): Declare. * c-common.c (tree_vector_cache): New static variable. (make_tree_vector): New function. (release_tree_vector): New function. (make_tree_vector_single): New function. (make_tree_vector_copy): New function. * c-common.h (tree_vector_cache, make_tree_vector): Declare. (make_tree_vector_single, make_tree_vector_copy): Declare. * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove. (c_parser_expr_list): Don't manage cache here, instead call make_tree_vector. (c_parser_release_expr_list): Remove static function. (c_parser_vec_to_tree_list): Remove static function. (c_parser_attributes): Call build_tree_list_vec instead of c_parser_vec_to_tree_list. Call release_tree_vector instead of c_parser_release_expr_list. (c_parser_postfix_expression_after_primary): Likewise. (c_parser_objc_keywordexpr): Likewise. cp/: * parser.c (cp_parser_postfix_expression): Change args to a vec. Release it when done. (tree_vector): Define typedef. Define VEC functions. (cp_parser_parenthesized_expression_list): Change return type to vec. Change all callers. (cp_parser_new_expression): Change placement and initializer to vecs. Release them when done. (cp_parser_new_placement): Change return type to vec. Change all callers. (cp_parser_new_initializer): Likewise. * typeck.c (build_function_call_vec): Just call cp_build_function_call_vec. (cp_build_function_call): Just build a vec and call cp_build_function_call_vec. (cp_build_function_call_vec): New function based on old cp_build_function_call. (convert_arguments): Remove nargs and argarray parameters. Change values to a vec. Change caller. (build_x_compound_expr_from_vec): New function. (cp_build_modify_expr): Build vec to pass to build_special_member_call. * call.c (struct z_candidate): Add first_arg field. Change args field to vec. (convert_class_to_reference): Handle first argument separately. (add_candidate): Add first_arg parameter. Change args parameter to vec. Change all callers. (add_function_candidate, add_conv_candidate): Likewise. (add_template_candidate_real, add_template_candidate): Likewise. (add_template_conv_candidate): Likewise. (build_user_type_conversion_1): Handle first argument separately. (resolve_args): Change return type and parameter type to vecs. Change all callers. (perform_overload_resolution): Change args parameter to vec. Change all callers. (build_new_function_call, build_operator_new_call): Likewise. (add_candidates): Likewise. (build_op_call): New globally visible function, built from and replacing static function build_object_call. (build_new_op): Don't handle CALL_EXPR. Build vec, not tree_list, of arguments. (build_op_delete_call): Build vec to pass to cp_build_function_call_vec. (build_temp): Build vec to pass to build_special_member_call. (convert_like_real): Likewise. (perform_direct_initialization_if_possible): Likewise. (build_over_call): Handle first_arg field. Use build_call_array rather than build_call_list. (build_special_member_call): Change args parameter to vec. Change all callers. (build_new_method_call): Likewise. * init.c (expand_default_init): Change parms to vec. (build_raw_new_expr): Change placement and init to vecs. Change all callers. (build_new_1, build_new): Likewise. * class.c (resolve_address_of_overloaded_function): Build array to pass to fn_type_unification. * pt.c (tsubst_copy_and_build): For NEW_EXPR build vecs to pass to build_new. For CALL_EXPR create a vec rather than a tree_list; expand a pack if necessary. (fn_type_unification): Change args parameter to const tree *. Add nargs parameter. Change all callers. (type_unification_real): Likewise. (unify): Build array to pass to type_unification_real. (get_bindings): Build array to pass to fn_type_unification. (any_type_dependent_arguments_p): Change args parameter to a vec. Change all callers. (make_args_non_dependent): Renamed from build_non_dependent_args. Change return type to void. Change parameter type to vec. Change all callers. (do_auto_deduction): Pass an array to type_unification_real. * semantics.c (perform_koenig_lookup): Change args to vec. Change all callers. (finish_call_expr): Change args to vec. Change all callers. Call build_op_call instead of passing CALL_EXPR to build_new_op. (cxx_omp_create_clause_info): Allocate vec to pass to build_special_member_call. * decl2.c (build_offset_ref_call_from_tree): Change args parameter to vec. Change all callers. * name-lookup.c (lookup_function_nonclass): Likewise. (struct arg_lookup): Change args to vec. (arg_assoc_namespace): Handle args as a vec. (arg_assoc_args_vec): New static function. (lookup_arg_dependent): Change args parameter to vec. Change all callers. * method.c (do_build_assign_ref): Allocate vec to pass to build_special_member_call. * except.c (build_throw): Likewise. * typeck2.c (build_functional_cast): Likewise. * cvt.c (ocp_convert): Likewise. * tree.c (build_min_non_dep_call_vec): Change last parameter to vec. Change all callers. * cp-tree.h: Update declarations. * name-lookup.h: Update declarations. objc/: * objc-act.c (objc_generate_cxx_ctor_or_dtor): Pass NULL rather than NULL_TREE to build_special_member_call. From-SVN: r147759
2009-05-20tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE...Sandra Loosemore1-0/+12
2009-05-20 Sandra Loosemore <sandra@codesourcery.com> gcc/ * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE, TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and TARGET_CONVERT_TO_TYPE. * hooks.c (hook_tree_const_tree_null): Define. * hooks.h (hook_tree_const_tree_null): Declare. * target.h (struct gcc_target): Add invalid_parameter_type, invalid_return_type, promoted_type, and convert_to_type fields. * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define. (TARGET_INVALID_RETURN_TYPE): Define. (TARGET_PROMOTED_TYPE): Define. (TARGET_CONVERT_TO_TYPE): Define. (TARGET_INITIALIZER): Update for new fields. * c-decl.c (grokdeclarator): Check targetm.invalid_return_type. (grokparms): Check targetm.invalid_parameter_type. * c-typeck.c (default_conversion): Check targetm.promoted_type. * c-convert.c (convert): Check targetm.convert_to_type. gcc/cp/ * typeck.c (default_conversion): Check targetm.promoted_type. * decl.c (grokdeclarator): Check targetm.invalid_return_type. (grokparms): Check targetm.invalid_parameter_type. * cvt.c (ocp_convert): Check targetm.convert_to_type. (build_expr_type_conversion): Check targetm.promoted_type. From-SVN: r147758
2009-05-18Implement explicit conversions ops as specified in N2437.Jason Merrill1-0/+3
* decl.c (grokdeclarator): Handle explicit conversion ops. (check_initializer): Pass flags to store_init_value. * decl2.c (maybe_emit_vtables): Likewise. * init.c (expand_aggr_init_1): Likewise. * call.c (convert_class_to_reference): Take flags parm, check DECL_NONCONVERTING_P. (build_user_type_conversion_1): Check DECL_NONCONVERTING_P. (add_builtin_candidates): Simplify getting type of conversion. (build_object_call): Likewise. Check DECL_NONCONVERTING_P. (implicit_conversion): Pass through LOOKUP_ONLYCONVERTING. (reference_binding): Take flags parm. Direct-initialize copy parm. (add_function_candidate): Direct-initialize the copy parm. (add_conv_candidate): Use LOOKUP_IMPLICIT, not LOOKUP_NORMAL. (build_builtin_candidate): Add LOOKUP_ONLYCONVERTING. (conditional_conversion): Likewise. (convert_like_real): Only complain about DECL_NONCONVERTING_P constructors. (perform_implicit_conversion_flags): Add flags parm to perform_implicit_conversion. Improve diagnostics. * cp-tree.h (LOOKUP_IMPLICIT): New macro. (LOOKUP_COPY_PARM): New bit macro. * cvt.c (build_expr_type_conversion): Check DECL_NONCONVERTING_P. * typeck.c (convert_for_assignment): Take flags parm, pass it to perform_implicit_conversion_flags. (cp_build_modify_expr): Pass flags to convert_for_assignment. (convert_for_initialization): Likewise. * typeck2.c (store_init_value): Take flags parm, pass to digest_init_flags. (digest_init_flags): Add flags parm to digest_init. (digest_init_r): Take flags parm, pass to convert_for_initialization. (process_init_constructor_array): Pass it. (process_init_constructor_record): Likewise. (process_init_constructor_union): Likewise. From-SVN: r147677
2009-04-27re PR c++/39875 (Wrong "value computed is not used" warning)Jakub Jelinek1-1/+5
PR c++/39875 * cvt.c (convert_to_void) <case INDIRECT_REF>: Only warn about -Wunused-value if implicit. * g++.dg/warn/Wunused-15.C: New test. From-SVN: r146825
2009-04-23re PR c++/38228 (ICE with invalid use of bound member function)Dodji Seketeli1-2/+9
gcc/cp/ChangeLog: PR c++/38228 * pt.c (unify): Do not allow the result of a template argument deduction to be a METHOD_TYPE. * cvt.c (cp_convert): Report a meaningful error for non-valid use of pointer to member functions during conversions. * call.c (build_new_op): Report a meaningful error for non-valid use of pointer to member functions in binary expressions. * typeck.c (invalid_nonstatic_memfn_p): Do not crash when EXPR is NULL; gcc/testsuite/ChangeLog: PR c++/38228 * g++.dg/expr/bound-mem-fun.C: New test. From-SVN: r146646
2009-04-15re PR c++/39551 (C++ frontend not warn about unused dereference operator ↵Le-Chun Wu1-1/+14
with -Wunused-value) PR c++/39551 * gcc/cp/call.c (build_over_call): Set TREE_NO_WARNING on the compiler-generated INDIRECT_REF expression. * gcc/cp/cvt.c (convert_to_void): Emit warning when stripping off INDIRECT_REF. * gcc/testsuite/g++.dg/warn/Wunused-13.C: New testcase. From-SVN: r146132
2008-08-18diagnostics.c (permerror_at): Rename as permerror.Manuel López-Ibáñez1-3/+3
2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org> * diagnostics.c (permerror_at): Rename as permerror. (permerror): Delete. * toplev.h: Likewise. cp/ * typeck.c: Update all callers. * init.c: Likewise. * class.c: Likewise. * decl.c: Likewise. * call.c: Likewise. * except.c: Likewise. * cvt.c: Likewise. * typeck2.c: Likewise. * pt.c: Likewise. * semantics.c: Likewise. * name-lookup.c: Likewise. * lex.c: Likewise. * decl2.c: Likewise. * parser.c: Likewise. From-SVN: r139193