- 28 Jun, 2018 20 commits
-
-
PR go/86343 * go-gcc.cc (Gcc_backend::set_placeholder_struct_type): Call build_variant_type_copy rather than build_distinct_type_copy. From-SVN: r262225
Ian Lance Taylor committed -
Fix and simplify the testcase so it generates dup even on latest trunk. testsuite/ * gcc.target/aarch64/f16_mov_immediate_3.c: Fix testcase. From-SVN: r262222
Wilco Dijkstra committed -
2018-06-28 Fritz Reese <fritzoreese@gmail.com> gcc/fortran/ChangeLog: PR fortran/82865 * decl.c (gfc_match_type): Refactor and check for PDT declarations. gcc/testsuite/ChangeLog: PR fortran/82865 * gfortran.dg/dec_type_print_2.f03: New testcase. From-SVN: r262221
Fritz Reese committed -
This patch removes alt_dump_file from dumpfile.h, making it static within dumpfile.c. This allows for changing how -fopt-info is implemented, and potentially adding other kinds of dump target, such as remarks or optimization records. Doing so requires changing the implementation of dump_enabled_p, so the patch changes this to a simple lookup of a boolean global, which is updated any time dump_file or alt_dump_file change. gcc/ChangeLog: * cgraph.c (cgraph_node::get_body): Replace assignments to "dump_file" with calls to set_dump_file. * dumpfile.c (alt_dump_file): Make static, and group with... (alt_flags): ...this definition. (dumps_are_enabled): New variable. (refresh_dumps_are_enabled): New function. (set_dump_file): New function. (set_alt_dump_file): New function. (gcc::dump_manager::dump_start): Replace assignments to "dump_file" and "alt_dump_file" with calls to set_dump_file and set_alt_dump_file. (gcc::dump_manager::dump_finish): Likewise. * dumpfile.h (alt_dump_file): Delete decl. (dumps_are_enabled): New variable decl. (set_dump_file): New function decl. (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled" global. * tree-nested.c (lower_nested_functions): Replace assignments to "dump_file" with calls to set_dump_file. From-SVN: r262220
David Malcolm committed -
tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the goto_locus of each outgoing edge of each basic block. * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the goto_locus of each outgoing edge of each basic block. From-SVN: r262219
Eric Botcazou committed -
2018-06-28 Richard Biener <rguenther@suse.de> * dwarf2out.c (decl_scope_table): Remove. (push_decl_scope): Likewise. (pop_decl_scope): Likewise. (gen_type_die_for_member): Do not call push/pop_decl_scope. (gen_struct_or_union_type_die): Likewise. (gen_tagged_type_die): Likewise. (dwarf2out_init): Do not initialize decl_scope_table. (dwarf2out_c_finalize): Do not free it. From-SVN: r262218
Richard Biener committed -
2018-06-28 Richard Biener <rguenther@suse.de> * dwarf2out.c (gen_subprogram_die): Use is_unit_die when deciding whether to not re-use a DIE. From-SVN: r262217
Richard Biener committed -
From-SVN: r262216
Jackson Woodruff committed -
2018-06-28 David Pagan <dave.pagan@oracle.com> PR c/55976 * gcc.dg/noncompile/pr55976-1.c: Add dg-prune-output for extraneous message causing unexpected test FAIL. From-SVN: r262215
David Pagan committed -
2018-06-28 Martin Liska <mliska@suse.cz> * brigspec.c: Add missing header file inclusion. From-SVN: r262214
Martin Liska committed -
2018-06-28 Richard Biener <rguenther@suse.de> * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an DW_AT_abstract_origin attribute. From-SVN: r262213
Richard Biener committed -
2018-06-28 Martin Liska <mliska@suse.cz> * tree-switch-conversion.c (jump_table_cluster::can_be_handled): Use newly introduced constants. * tree-switch-conversion.h (struct jump_table_cluster): Define max_ratio_for_size and max_ratio_for_speed. From-SVN: r262212
Martin Liska committed -
2018-06-28 Martin Liska <mliska@suse.cz> * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): Add new checking assert to catch invalid state. (jump_table_cluster::can_be_handled): Handle single case clusters. (jump_table_cluster::is_beneficial): Bail out for such case. (bit_test_cluster::find_bit_tests): Add new checking assert to catch invalid state. (bit_test_cluster::can_be_handled): Handle single case clusters. (bit_test_cluster::is_beneficial): Bail out for such case. (switch_decision_tree::analyze_switch_statement): Fix comment. 2018-06-28 Martin Liska <mliska@suse.cz> * gcc.dg/tree-ssa/switch-1.c: New test. From-SVN: r262211
Martin Liska committed -
2018-06-28 Martin Liska <mliska@suse.cz> * common.opt: Introduce -completion option. * gcc.c (driver_handle_option): Handle it. (driver::main): Print completions if completion is set. * opt-suggestions.c (option_proposer::get_completions): New function. (option_proposer::suggest_completion): Likewise. (option_proposer::find_param_completions): Likewise. (verify_autocompletions): Likewise. (test_completion_valid_options): Likewise. (test_completion_valid_params): Likewise. (in_completion_p): Likewise. (empty_completion_p): Likewise. (test_completion_partial_match): Likewise. (test_completion_garbage): Likewise. (opt_proposer_c_tests): Likewise. * opt-suggestions.h: Declare new functions. * opts.c (common_handle_option): Handle OPT__completion_. * selftest-run-tests.c (selftest::run_tests): Add opt_proposer_c_tests. * selftest.c (assert_str_startswith): New. * selftest.h (assert_str_startswith): Likewise. (opt_proposer_c_tests): New. (ASSERT_STR_STARTSWITH): Likewise. From-SVN: r262210
Martin Liska committed -
. 2018-06-28 Martin Liska <mliska@suse.cz> * Makefile.in: Add opt-suggestions.o. * gcc-main.c: Include opt-suggestions.h. * gcc.c (driver::driver): Likewise. (driver::~driver): Remove m_option_suggestions. (driver::build_option_suggestions): Moved to option_proposer. (driver::suggest_option): Likewise. (driver::handle_unrecognized_options): Use option_proposer. * gcc.h (class driver): Add new memver m_option_proposer. * opt-suggestions.c: New file. * opt-suggestions.h: New file. 2018-06-28 Martin Liska <mliska@suse.cz> * cppspec.c: Include opt-suggestions.h. 2018-06-28 Martin Liska <mliska@suse.cz> * gfortranspec.c: Include opt-suggestions.h. 2018-06-28 Martin Liska <mliska@suse.cz> * jit-playback.c: Include opt-suggestions.h. From-SVN: r262209
Martin Liska committed -
2018-06-28 Martin Liska <mliska@suse.cz> * vec.h (class auto_string_vec): New (moved from auto_argvec). (auto_string_vec::~auto_string_vec): Likewise. 2018-06-28 Martin Liska <mliska@suse.cz> * jit-playback.c (class auto_argvec): Moved to vec.h. (auto_argvec::~auto_argvec): Likewise. (compile): Use the renamed name. (invoke_driver): Likewise. From-SVN: r262208
Martin Liska committed -
tree-inline.c (remap_gimple_stmt): Force input_location on the new statement if id->reset_location is true. * tree-inline.c (remap_gimple_stmt): Force input_location on the new statement if id->reset_location is true. (copy_edges_for_bb): Do not set goto_locus on the new edges if id->reset_location is true. (copy_phis_for_bb): Force input_location on the arguments if id->reset_location is true. (expand_call_inline): Set id->reset_location if DECL_IGNORED_P is set on the function to be inlined. * tree-inline.h (struct copy_body_data): Move remapping_type_depth and prevent_decl_creation_for_types fields up and add reset_location field. From-SVN: r262207
Eric Botcazou committed -
From-SVN: r262206
Stephan Bergmann committed -
2018-06-23 Dimitar Dimitrov <dimitar@dinux.eu> * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard registers for Pmode. * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning hard registers for the clobbered pseudo. From-SVN: r262205
Dimitar Dimitrov committed -
From-SVN: r262203
GCC Administrator committed
-
- 27 Jun, 2018 20 commits
-
-
PR c++/86329 reports that the C++ frontend can offer bogus suggestions like: #include <string> int compare() { return __n1 - __n2; } suggested.cc: In function 'int compare()': suggested.cc:5:10: error: '__n1' was not declared in this scope return __n1 - __n2; ^~~~ suggested.cc:5:10: note: suggested alternative: '._61' return __n1 - __n2; ^~~~ ._61 suggested.cc:5:17: error: '__n2' was not declared in this scope return __n1 - __n2; ^~~~ suggested.cc:5:17: note: suggested alternative: '._72' return __n1 - __n2; ^~~~ ._72 The dot-prefixed names are an implementation detail of how we implement anonymous enums found in the header files, generated via anon_aggrname_format in make_anon_name. This patch uses anon_aggrname_p to filter them out when considering which names to suggest. gcc/cp/ChangeLog: PR c++/86329 * name-lookup.c (consider_binding_level): Filter out names that match anon_aggrname_p. gcc/testsuite/ChangeLog: PR c++/86329 * g++.dg/lookup/pr86329.C: New test. From-SVN: r262199
David Malcolm committed -
* common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle mutually exclusive options. * config/pdp11/constraints.md (h): New constraint. (O): Update definition to match shift code generation. (D): New constraint. * config/pdp11/pdp11-modes.def (CCNZ): Define mode. (CCFP): Remove. * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New function. (output_jump): Change arguments. (pdp11_fixed_cc_regs): New function. (pdp11_cc_mode): Ditto. (pdp11_expand_shift): Ditto. (pdp11_assemble_shift): Ditto. (pdp11_small_shift): Ditto. (pdp11_branch_cost): Remove. * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments from output. (pdp11_register_move_cost): Update for CC registers. (pdp11_rtx_costs): Add case for LSHIFTRT. (pdp11_output_jump): Add CCNZ mode conditional branches. (notice_update_cc_on_set): Remove. (pdp11_cc_mode): New function. (simple_memory_operand): Correct pre/post decrement case. (no_side_effect_operand): New function. (pdp11_regno_reg_class): Add CC_REGS class. (pdp11_fixed_cc_regs): New function. (pdp11_small_shift): New function. (pdp11_expand_shift): New function to expand shift insns. (pdp11_assemble_shift): New function to output shifts. (pdp11_branch_cost): Remove. (pdp11_modes_tieable_p): Make QI/HI modes tieable. * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type. (WCHAR_TYPE): Ditto. (PTRDIFF_TYPE): Ditto. (ADJUST_INSN_LENGTH): New macro. (FIXED_REGISTERS): Add CC registers. (CALL_USED_REGISTERS): Ditto. (reg_class): Ditto. (REG_CLASS_NAMES): Ditto. (REG_CLASS_CONTENTS): Ditto. (SELECT_CC_MODE): Use new function. (TARGET_FLAGS_REGNUM): New macro. (TARGET_FIXED_CONDITION_CODE_REGS): Ditto. (cc0_reg_rtx): Remove. (CC_STATUS_MDEP): Remove. (CC_STATUS_MDEFP_INIT): Remove. (CC_IN_FPU): Remove. (NOTICE_UPDATE_CC): Remove. (REGISTER_NAMES): Add CC registers. (BRANCH_COST): Change to constant 1. * config/pdp11/pdp11.md: Rewrite for CCmode condition code handling. * config/pdp11/pdp11.opt (mbcopy): Remove. (mbcopy-builtin): Remove. (mbranch-cheap): Remove. (mbranch-expensive): Remove. * config/pdp11/predicates.md (expand_shift_operand): Update to match shift code generation. (ccnz_operator): New predicate. * doc/invoke.texi (PDP-11 Options): Remove deleted options -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive. Remove non-existent option -mabshi, -mno-abshi. Document mutually exclusive options. * doc/md.texi (PDP-11): Document new D and h constraints. Update description of O constraint. From-SVN: r262198
Paul Koning committed -
gcc/testsuite/ChangeLog: 2018-06-27 Carl Love <cel@us.ibm.com> Add test case that was supposed to be added in commit 255556 on 2017-12-11. * gcc.target/vsx-vector-abss.c: New file to test vec_abss. From-SVN: r262196
Carl Love committed -
* Makefile.in (install_leaf): Use enable_gcov instead of enable_libgcov. From-SVN: r262195
Rainer Orth committed -
2018-06-27 François Dumont <fdumont@gcc.gnu.org> * include/bits/stl_vector.h (struct _Vector_base<>::_Vector_impl_data): New. (struct _Vector_base<>::_Vector_impl): Inherit from latter. (_Vector_base<>::_Vector_impl::_M_swap_data): Move... (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here. (_Vector_base<>::_Vector_impl()): Add noexcept qualification. (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New. (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New. (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter. (_Vector_base()): Default. (_Vector_base(_Vector_base&&)): Default. (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete. (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete. (_Vector_base::_M_create_storage(size_t)): Make protected. (vector()): Default. (vector(vector&&)): Default. (vector(vector&&, const allocator_type&, true_type)): New. (vector(vector&&, const allocator_type&, false_type)): New. (vector(vector&&, const allocator_type&)): Use latters. (vector(_InputIte, _InputIte, const allocator_type&)): Call _M_range_initialize directly. * include/debug/vector (vector(vector&&, const allocator_type&)): Add noexcept qualification. * testsuite/23_containers/vector/allocator/default_init.cc: New. * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add static assertions. From-SVN: r262194
François Dumont committed -
* config/v850/v850.md (addsi3_set_flags): New pattern. (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise. (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise. (zero_extendhisi2_v850_set_flags): Likewise. (zero_extendqisi2_v850_set_flags): Likewise. (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise. (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise. (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise. Co-Authored-By: Austin Law <austinklaw@gmail.com> From-SVN: r262192
Jeff Law committed -
* config/v850/v850-protos.h (notice_update_cc): Remove. * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove. (v850_print_operand): Handle 'D' and "d". (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument. Add handling of arithmetic/logical operations compared against zero. (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument. Do not look at v850_compare_op, instead get mode from last argument. (v850_gen_compare): Remove (increment_stack): Use addsi3_clobber_flags to avoid splitting failure after reload for prologue insns. (expand_prologue): Account for CLOBBER of CC_REGNUM in various patterns. (construct_save_jarl): Likewise. (TARGET_FLAGS_REGNUM): Define. * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove. (NOTICE_UPDATE_CC): Remove. * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather than cc0. Conditionalize on reload_completed. (cmpsi_insn, setfcc_insn): Likewise. (tst1 splitter): Turn into define_and_split which sets the flags after reload. (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise. (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here. (cstoresf4, cstoredf4): Clobber the flags. (cmpsi, cmpsf, cmpdf): Remove expanders. (setf_insn): Remove pattern. (addsi3): Turn into define_and_split which clobbers the flags after reload and a suitable pattern (addsi3_clobber_flags) for use after reload. (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise. (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise. (ashrsi3, ashrsi3_v850e2): Likewise. (bins): Clobber the flags. (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise. (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise. (fix_loop_counter, call_internal_short, call_internal_long): Likewise. (call_value_internal_short, call_value_internal_long): Likewise. (callt_save_interrupt, callt_return_interrupt): Likewise. (save_interrupt, return_interrupt): Likewise. (callt_save_all_interrupt, save_all_interrupt): Likewise. (_save_all_interrupt, callt_restore_all_interrupt): Likewise. (restore_all_interrupt, _restore_all_interrupt): Likewise. (All FP comparisons): Only allow after reload has completed. (trfsr): Likewise. (divh, divhu): Tweak output template. (branch_z_normal, branch_z_invert): Remove (branch_nz_normal, branch_nz_invert): Likewise. (extendhisi_insn, extendqisi_insn): Do not clobber flags. Co-Authored-By: Austin Law <austinklaw@gmail.com> From-SVN: r262190
Jeff Law committed -
* config/v850/v850-modes.def (CCZ, CCNZ): Add new modes. * config/v850/v850.c (notice_update_cc): Remove. * config/v850/v850.h (CC_OVERFLOW_UNUSABLE): Remove (CC_NO_CARRY): Likewise. (NOTICE_UPDATE_CC): Define to nothing. * config/v850/v850.md: Remove block comment on cc0 handling Remove "cc" attribute from all patterns. Remove cc_status handling from all patterns. Minor formatting fixes. Co-Authored-By: Austin Law <austinklaw@gmail.com> From-SVN: r262189
Jeff Law committed -
* name-lookup.c (do_pushtag): If we skip a class level, also skip its template level. From-SVN: r262188
Jason Merrill committed -
The Cortex-A76 is an Armv8.2-A processor with dotproduct and FP16 support. It can be paired with the Cortex-A55 and hence the option -mcpu/-mtune=cortex-a76.cortex-a55 is also introduced. Bootstrapped and tested on aarch64-none-linux-gnu. * config/aarch64/aarch64-cores.def (cortex-a76): New entry. (cortex-a76.cortex-a55): Likewise. * config/aarch64/aarch64-tune.md: Regenerate. * doc/invoke.texi (AArch64 Options): Document cortex-a76 and cortex-a76.cortex-a55. From-SVN: r262186
Kyrylo Tkachov committed -
* config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align. (MULTILIB_DIRNAMES): Similarly. From-SVN: r262185
Jeff Law committed -
* include/bits/cpp_type_traits.h [__cplusplus >= 201703] (__is_byte<byte>): Define specialization for std::byte. From-SVN: r262182
Jonathan Wakely committed -
* gimple.h (gimple_return_retbnd): Delete. (gimple_return_set_retbnd): Likewise. * cgraphunit.c (cgraph_node::expand_thunk): Remove call to gimple_return_set_retbnd. * gimple-pretty-print.c (dump_gimple_return): Remove call to gimple_return_retbnd and adjust. * tree-inline.h (struct copy_body_data): Remove retbnd field. * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd. Explicitly return NULL in a couple more cases. Move assertion on debug statements and remove unreachable code. (reset_debug_binding): Do not test id->retbnd. (expand_call_inline): Do not set it. From-SVN: r262181
Eric Botcazou committed -
For some targets (in my case VxWorks 5.5), libgcov does not compile due to missing functions and macros such as getpid() and F_OK. Incidentally, gcc/Makefile.in already contains comments such as # Install gcov if it was compiled. but there is no logic in place to actually allow gcov to not be compiled. So add an option for disabling build and install of libgcov and the related host tools. From-SVN: r262180
Rasmus Villemoes committed -
The Cortex-A76 is an Armv8.2-A processor with dotproduct and FP16 support. It can be paired with the Cortex-A55 and hence the option -mcpu/-mtune=cortex-a76.cortex-a55 is also introduced. Bootstrapped and tested on arm-none-linux-gnueabihf. * config/arm/arm-cpus.in (cortex-a76): New entry. (cortex-a76.cortex-a55): Likewise. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Likewise. * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry. * doc/invoke.texi (ARM Options): Document cortex-a76 and cortex-a76.cortex-a55. From-SVN: r262179
Kyrylo Tkachov committed -
This fixes a regression where we don't have an instruction for pre Armv8.2-a to do a move of an fp16 value from a GP reg to a SIMD reg. This patch adds that pattern to movhf_aarch64 using a dup and only selectes it using a very low priority. This fixes an ICE at -O0. gcc/ 2018-06-20 Tamar Christina <tamar.christina@arm.com> PR target/85769 * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern. gcc/testsuite/ 2018-06-20 Tamar Christina <tamar.christina@arm.com> PR target/85769 * gcc.target/aarch64/f16_mov_immediate_3.c: New. From-SVN: r262178
Tamar Christina committed -
When adding the vxworks_iolib_include_unistd hack I failed to add the appropriate hunk to the tests/base/ioLib.h file, causing "make check-fixincludes" to fail. From-SVN: r262177
Rasmus Villemoes committed -
r217431 changed X30 as caller-saved in CALL_USE_REGISTERS because of which this comment about X30 not being marked as call-clobbered is no longer accurate. Fixed to describe the current state more accurately. * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete comment. (EPILOGUE_USES): Likewise. From-SVN: r262176
Siddhesh Poyarekar committed -
* typeck2.c (process_init_constructor_array): Only compute a constant initializer once. In this PR, we have a large std::array of pairs. Since the C array is wrapped in a class we don't go to build_vec_init, so we end up with digest_init wanting to build up the element initializer for each element of the array. In the more general case, like 80272, we have a data structure problem: we don't currently have a good way of expressing the same dynamic initialization of many elements within a CONSTRUCTOR. RANGE_EXPR probably ought to work, but will need more work at genericize or gimplify time. But in this case, the initialization for each element reduces to constant 0, so we don't even need to add anything to the CONSTRUCTOR. We just need to realize that if the initializer for one element is 0, the others will be as well, and we don't need to iterate over the whole array. For the trunk, I also use a RANGE_EXPR to handle constant initialization by a value other than 0. void foo () { std::array<std::pair<int, int>, 1024 * 1024> arr {}; } From-SVN: r262173
Jason Merrill committed -
* pt.c (fn_type_unification): Add convs parameter. (check_non_deducible_conversion): Remember conversion. (check_non_deducible_conversions): New. Do checks here. (type_unification_real): Not here. Remove flags parm. * call.c (add_function_candidate): Make convs a parameter. Don't recalculate the conversion if it's already set. (add_template_candidate_real): Allocate convs here. (good_conversion, conv_flags): New. When the std::pair constructors got more complex to handle, it aggravated a preexisting algorithmic problem in template overload resolution: As part of template argument deduction in a call, once we've deduced all the template arguments we can but before we substitute them to form an actual declaration, for any function parameters that don't involve template parameters we need to check that it's possible to convert the argument to the parameter type (wg21.link/cwg1391). As a result, we end up calculating the conversion twice: once here, and then again in add_function_candidate as part of normal overload resolution. Normally this isn't a big deal, but when the argument is a multiply-nested initializer list, doubling the conversion processing at each level leads to combinatorial explosion. The patch for trunk avoids the duplication by remembering the conversion we calculate at deduction time and then reusing it in overload resolution rather than calculating it again. From-SVN: r262172
Jason Merrill committed
-