1. 03 Nov, 2017 21 commits
    • i386.c (ix86_expand_prologue): Tighten assert for int_registers_saved. · 74a6366d
      	* config/i386/i386.c (ix86_expand_prologue): Tighten assert
      	for int_registers_saved.
      
      From-SVN: r254386
      Jeff Law committed
    • re PR testsuite/82828 (i386/pr70263-2.c fail) · ece615ec
      	PR testsuite/82828
      	PR rtl-optimization/70263
      	* gcc.target/i386/pr70263-2.c: Fix invalid testcase.
      
      From-SVN: r254385
      Uros Bizjak committed
    • re PR c++/82768 (ICE in synthesize_implicit_template_parm, at cp/parser.c:39338) · 33a2e348
      Fix PR82768
      
      Forcing LR at the bottom of the frame caused a few test failures.
      Since there are some cases that generate worse code, revert this
      part, and the frame tests pass again.
      
          gcc/
      	PR target/82786
      	* config/aarch64/aarch64.c (aarch64_layout_frame):
      	Undo forcing of LR at bottom of frame.
      
      From-SVN: r254384
      Wilco Dijkstra committed
    • cfganal.c (single_pred_edge_ignoring_loop_edges): New function extracted from tree-ssa-dom.c. · 2965f127
      	* cfganal.c (single_pred_edge_ignoring_loop_edges): New function
      	extracted from tree-ssa-dom.c.
      	* cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype.
      	* tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove.
      	(record_equivalences_from_incoming_edge): Add additional argument
      	to single_pred_edge_ignoring_loop_edges call.
      	* tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove.
      	(uncprop_dom_walker::before_dom_children): Add additional argument
      	to single_pred_edge_ignoring_loop_edges call.
      	* tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use
      	single_pred_edge_ignoring_loop_edges rather than open coding.
      	* tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly.
      
      From-SVN: r254383
      Jeff Law committed
    • Generalize -(-X) a little · 63626547
      2017-11-03  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* match.pd (-(-A)): Rewrite.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/negneg-1.c: New file.
      	* gcc.dg/tree-ssa/negneg-2.c: Likewise.
      	* gcc.dg/tree-ssa/negneg-3.c: Likewise.
      	* gcc.dg/tree-ssa/negneg-4.c: Likewise.
      
      From-SVN: r254382
      Marc Glisse committed
    • Define std::endian for C++2a (P0463R1) · e641ee43
      	* include/std/type_traits (endian): Define new enumeration type.
      	* testsuite/20_util/endian/1.cc: New test.
      
      From-SVN: r254381
      Jonathan Wakely committed
    • rs6000: Remove rs6000_emit_sISEL · d0481454
      Instead of calling rs6000_emit_sISEL, call rs6000_emit_int_cmove
      directly, in the one place it is used.
      
      
      	* config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
      	(rs6000_emit_int_cmove): New declaration.
      	* config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
      	(rs6000_emit_sISEL): Delete.
      	(rs6000_emit_int_cmove): Make non-static.
      	* config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
      	instead of rs6000_emit_sISEL.
      
      From-SVN: r254380
      Segher Boessenkool committed
    • asan.c (create_cond_insert_point): Maintain profile. · e7a74006
      
      	* asan.c (create_cond_insert_point): Maintain profile.
      	* ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are
      	merged.
      	* basic-block.h (struct basic_block_def): Remove frequency.
      	(EDGE_FREQUENCY): Use to_frequency
      	* bb-reorder.c (push_to_next_round_p): Use only IPA counts for global
      	heuristics.
      	(find_traces): Update to use to_frequency.
      	(find_traces_1_round): Likewise; use only IPA counts.
      	(bb_to_key): Likewise.
      	(connect_traces): Use IPA counts only.
      	(copy_bb_p): Update to use to_frequency.
      	(fix_up_crossing_landing_pad): Likewise.
      	(sanitize_hot_paths): Likewise.
      	* bt-load.c (basic_block_freq): Likewise.
      	* cfg.c (init_flow): Set count_max to uninitialized.
      	(check_bb_profile): Remove frequencies; check counts.
      	(dump_bb_info): Do not dump frequencies.
      	(update_bb_profile_for_threading): Update counts only.
      	(scale_bbs_frequencies_int): Likewise.
      	(MAX_SAFE_MULTIPLIER): Remove.
      	(scale_bbs_frequencies_gcov_type): Update counts only.
      	(scale_bbs_frequencies_profile_count): Update counts only.
      	(scale_bbs_frequencies): Update counts only.
      	* cfg.h (struct control_flow_graph): Add count-max.
      	(update_bb_profile_for_threading): Update prototype.
      	* cfgbuild.c (find_bb_boundaries): Do not update frequencies.
      	(find_many_sub_basic_blocks): Likewise.
      	* cfgcleanup.c (try_forward_edges): Likewise.
      	(try_crossjump_to_edge): Likewise.
      	* cfgexpand.c (expand_gimple_cond): Likewise.
      	(expand_gimple_tailcall): Likewise.
      	(construct_init_block): Likewise.
      	(construct_exit_block): Likewise.
      	* cfghooks.c (verify_flow_info): Check consistency of counts.
      	(dump_bb_for_graph): Do not dump frequencies.
      	(split_block_1): Do not update frequencies.
      	(split_edge): Do not update frequencies.
      	(make_forwarder_block): Do not update frequencies.
      	(duplicate_block): Do not update frequencies.
      	(account_profile_record): Do not update frequencies.
      	* cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts
      	for global heuristics.
      	* cfgloopanal.c (average_num_loop_insns): Update to use to_frequency.
      	(expected_loop_iterations_unbounded): Use counts only.
      	* cfgloopmanip.c (scale_loop_profile): Simplify.
      	(create_empty_loop_on_edge): Simplify
      	(loopify): Simplify
      	(duplicate_loop_to_header_edge): Simplify
      	* cfgrtl.c (force_nonfallthru_and_redirect): Update profile.
      	(update_br_prob_note): Take care of removing note when profile
      	becomes undefined.
      	(relink_block_chain): Do not dump frequency.
      	(rtl_account_profile_record): Use to_frequency.
      	* cgraph.c (symbol_table::create_edge): Convert count to ipa count.
      	(cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count.
      	(cgraph_update_edges_for_call_stmt_node): Likewise.
      	(cgraph_edge::verify_count_and_frequency): Update.
      	(cgraph_node::verify_node): Temporarily disable frequency verification.
      	* cgraphbuild.c (compute_call_stmt_bb_frequency): Use
      	to_cgraph_frequency.
      	(cgraph_edge::rebuild_edges): Convert to ipa counts.
      	* cgraphunit.c (init_lowered_empty_function): Do not initialize
      	frequencies.
      	(cgraph_node::expand_thunk): Update profile.
      	* except.c (dw2_build_landing_pads): Do not update frequency.
      	* final.c (compute_alignments): Use to_frequency.
      	(dump_basic_block_info): Do not dump frequency.
      	* gimple-pretty-print.c (dump_profile): Do not dump frequency.
      	(dump_gimple_bb_header): Do not dump frequency.
      	* gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency;
      	do update count.
      	* gimple-streamer-in.c (input_bb): Do not stream frequency.
      	* gimple-streamer-out.c (output_bb): Do not stream frequency.
      	* haifa-sched.c (sched_pressure_start_bb): Use to_freuqency.
      	(init_before_recovery): Do not update frequency.
      	(sched_create_recovery_edges): Do not update frequency.
      	* hsa-gen.c (convert_switch_statements): Do not update frequency.
      	* ipa-cp.c (ipcp_propagate_stage): Update search for max_count.
      	(ipa_cp_c_finalize): Set max_count to uninitialized.
      	* ipa-fnsummary.c (get_minimal_bb): Use counts.
      	(param_change_prob): Use counts.
      	* ipa-profile.c (ipa_profile_generate_summary): Do not summarize
      	local profiles.
      	* ipa-split.c (consider_split): Use to_frequency.
      	(split_function): Use to_frequency.
      	* ira-build.c (loop_compare_func): Likewise.
      	(mark_loops_for_removal): Likewise.
      	(mark_all_loops_for_removal): Likewise.
      	* loop-doloop.c (doloop_modify): Do not update frequency.
      	* loop-unroll.c (unroll_loop_runtime_iterations): Do not update
      	frequency.
      	* lto-streamer-in.c (input_function): Update count_max.
      	* omp-expand.c (expand_omp_taskreg): Update count_max.
      	* omp-simd-clone.c (simd_clone_adjust): Update profile.
      	* predict.c (maybe_hot_frequency_p): Use to_frequency.
      	(maybe_hot_count_p): Use ipa counts only.
      	(maybe_hot_bb_p): Simplify.
      	(maybe_hot_edge_p): Simplify.
      	(probably_never_executed): Do not take frequency argument.
      	(probably_never_executed_bb_p): Do not pass frequency.
      	(probably_never_executed_edge_p): Likewise.
      	(combine_predictions_for_bb): Check that profile is nonzero.
      	(propagate_freq): Do not set frequency.
      	(drop_profile): Simplify.
      	(counts_to_freqs): Simplify.
      	(expensive_function_p): Use to_frequency.
      	(propagate_unlikely_bbs_forward): Simplify.
      	(determine_unlikely_bbs): Simplify.
      	(estimate_bb_frequencies): Add hack to silence graphite issues.
      	(compute_function_frequency): Use ipa counts.
      	(pass_profile::execute): Update.
      	(rebuild_frequencies): Use counts only.
      	(force_edge_cold): Use counts only.
      	* profile-count.c (profile_count::dump): Dump new count types.
      	(profile_count::differs_from_p): Check compatiblity.
      	(profile_count::to_frequency): New function.
      	(profile_count::to_cgraph_frequency): New function.
      	* profile-count.h (struct function): Declare.
      	(enum profile_quality): Add profile_guessed_local and
      	profile_guessed_global0.
      	(class profile_proability): Decrease number of bits to 29;
      	update from_reg_br_prob_note and to_reg_br_prob_note.
      	(class profile_count: Update comment; decrease number of bits
      	to 61. Check compatibility.
      	(profile_count::compatible_p): New private member function.
      	(profile_count::ipa_p): New member function.
      	(profile_count::operator<): Handle global zero correctly.
      	(profile_count::operator>): Handle global zero correctly.
      	(profile_count::operator<=): Handle global zero correctly.
      	(profile_count::operator>=): Handle global zero correctly.
      	(profile_count::nonzero_p): New member function.
      	(profile_count::force_nonzero): New member function.
      	(profile_count::max): New member function.
      	(profile_count::apply_scale): Handle IPA scalling.
      	(profile_count::guessed_local): New member function.
      	(profile_count::global0): New member function.
      	(profile_count::ipa): New member function.
      	(profile_count::to_frequency): Declare.
      	(profile_count::to_cgraph_frequency): Declare.
      	* profile.c (OVERLAP_BASE): Delete.
      	(compute_frequency_overlap): Delete.
      	(compute_branch_probabilities): Do not use compute_frequency_overlap.
      	* regs.h (REG_FREQ_FROM_BB): Use to_frequency.
      	* sched-ebb.c (rank): Use counts only.
      	* shrink-wrap.c (handle_simple_exit): Use counts only.
      	(try_shrink_wrapping): Use counts only.
      	(place_prologue_for_one_component): Use counts only.
      	* tracer.c (find_best_predecessor): Use to_frequency.
      	(find_trace): Use to_frequency.
      	(tail_duplicate): Use to_frequency.
      	* trans-mem.c (expand_transaction): Do not update frequency.
      	* tree-call-cdce.c: Do not update frequency. 
      	* tree-cfg.c (gimple_find_sub_bbs): Likewise.
      	(gimple_merge_blocks): Likewise.
      	(gimple_split_edge): Likewise.
      	(gimple_duplicate_sese_region): Likewise.
      	(gimple_duplicate_sese_tail): Likewise.
      	(move_sese_region_to_fn): Likewise.
      	(gimple_account_profile_record): Likewise.
      	(insert_cond_bb): Likewise.
      	* tree-complex.c (expand_complex_div_wide): Likewise.
      	* tree-eh.c (lower_resx): Update profile.
      	* tree-inline.c (copy_bb): Simplify count scaling; do not scale
      	frequencies.
      	(initialize_cfun): Do not initialize frequencies
      	(freqs_to_counts): Delete.
      	(copy_cfg_body): Ignore count parameter.
      	(copy_body): Update.
      	(expand_call_inline): Update count_max.
      	(optimize_inline_calls): Update count_max.
      	(tree_function_versioning): Update count_max.
      	* tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency.
      	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update
      	frequency.
      	* tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only.
      	* tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency.
      	(try_peel_loop): Likewise.
      	* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use
      	to_frequency.
      	* tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1.
      	(tree_transform_and_unroll_loop): Do not use frequencies
      	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations):
      	Use reliable prediction only.
      	* tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies.
      	* tree-ssa-sink.c (select_best_block): Use to_frequency.
      	* tree-ssa-tail-merge.c (replace_block_by): Temporarily disable
      	probability scaling.
      	* tree-ssa-threadupdate.c (create_block_for_threading): Do
      	not update frequency
      	(any_remaining_duplicated_blocks): Likewise.
      	(update_profile): Likewise.
      	(estimated_freqs_path): Delete.
      	(freqs_to_counts_path): Delete.
      	(clear_counts_path): Delete.
      	(ssa_fix_duplicate_block_edges): Likewise.
      	(duplicate_thread_path): Likewise.
      	* tree-switch-conversion.c (gen_inbound_check): Use counts.
      	* tree-tailcall.c (decrease_profile): Do not update frequency.
      	(eliminate_tail_call): Likewise.
      	* tree-vect-loop-manip.c (vect_do_peeling): Likewise.
      	* tree-vect-loop.c (scale_profile_for_vect_loop): Likewise.
      	(optimize_mask_stores): Likewise.
      	* tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
      	* ubsan.c (ubsan_expand_null_ifn): Update profile.
      	(ubsan_expand_ptr_ifn): Update profile.
      	* value-prof.c (gimple_ic): Simplify.
      	* value-prof.h (gimple_ic): Update prototype.
      	* ipa-inline-transform.c (inline_transform): Fix scaling conditoins.
      	* ipa-inline.c (compute_uninlined_call_time): Be sure that
      	counts are nonzero.
      	(want_inline_self_recursive_call_p): Likewise.
      	(resolve_noninline_speculation): Only cummulate defined counts.
      	(inline_small_functions): Use nonzero_p.
      	(ipa_inline): Do not access freed node.
      
      Unknown ChangeLog:
      
      2017-11-02  Jan Hubicka  <hubicka@ucw.cz>
      
      	* testsuite/gcc.dg/no-strict-overflow-3.c (foo): Update magic
      	value to not clash with frequency.
      	* testsuite/gcc.dg/strict-overflow-3.c (foo): Likewise.
      	* testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/dump-2.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-10.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-11.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-12.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-5.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-8.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-9.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-cd.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-pr56541.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-pr68583.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-pr69489-1.c: Update template.
      	* testsuite/gcc.dg/tree-ssa/ifc-pr69489-2.c: Update template.
      	* testsuite/gcc.target/i386/pr61403.c: Update template.
      
      From-SVN: r254379
      Jan Hubicka committed
    • Set default sched pressure algorithm · 13494fcb
      The Arm backend sets the default sched-pressure algorithm to SCHED_PRESSURE_MODEL.
      Benchmarking on AArch64 shows this speeds up floating point performance on SPEC -
      eg. CactusBSSN improves by ~16%.  The gains are mostly due to less spilling,
      so enable this on AArch64 by default.
      
          gcc/
      	* config/aarch64/aarch64.c (aarch64_override_options_internal):
      	Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL.
      
      From-SVN: r254378
      Wilco Dijkstra committed
    • RISC-V: Handle non-legitimate address in riscv_legitimize_move · 13e4f305
      GCC may generate non-legitimate address due to we allow some
      load/store with non-legitimate address in pic.md.
      
      gcc/ChangeLog
      
      2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
      
              * config/riscv/riscv.c (riscv_legitimize_move): Handle
              non-legitimate address.
      
      From-SVN: r254376
      Kito Cheng committed
    • [PATCH] Fix testsuire error message · 91afdf4c
      https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00196.html
      	* lib/scanlang.exp: Fix error message to refer to scan-lang-dump.
      
      From-SVN: r254375
      Nathan Sidwell committed
    • rs6000: Improve *lt0 patterns · 187bd6cd
      The rs6000 port currently has an *lt0_disi define_insn, setting the DI
      result to whether the SI argument is negative or not.  It turns out the
      generic optimisers cannot always figure out in the other cases either
      that this is just a shift for us.  This patch adds patterns for all
      four SI/DI combinations.
      
      
      	* config/rs6000/rs6000.md (*lt0_disi): Delete.
      	(*lt0_<mode>di, *lt0_<mode>si): New.
      
      From-SVN: r254374
      Segher Boessenkool committed
    • rs6000: move_from_CR_ov_bit is TARGET_PAIRED_FLOAT, not TARGET_ISEL · b15a4bc9
      
      	* config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to
      	TARGET_PAIRED_FLOAT.
      
      From-SVN: r254373
      Segher Boessenkool committed
    • [aarch64] Add Qualcomm saphira CPU support. · 52ee8191
      This patch adds an mcpu option for the Qualcomm saphira server part.
      Tested on aarch64 and did not find any regressions resulting from this
      patch.
      
      2017-11-03  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>
      	    Jim Wilson  <jim.wilson@linaro.org>
      
      	* config/aarch64/aarch64-cores.def (saphira): New CPU.
      	* config/aarch64/aarch64-tune.md: Regenerated.
      	* doc/invoke.texi (AArch64 Options/-mtune): Add "saphira".
      	* gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table.
      
      
      Co-Authored-By: Jim Wilson <jim.wilson@linaro.org>
      
      From-SVN: r254372
      Siddhesh Poyarekar committed
    • [PR c++/82710] false positive paren warning · a93ee058
      https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00186.html
      	PR c++/82710
      	* decl.c (grokdeclarator): Protect MAYBE_CLASS things from paren
      	warning too.
      
      	PR c++/82710
      	* g++.dg/warn/pr82710.C: More cases.
      
      From-SVN: r254371
      Nathan Sidwell committed
    • Remove _Node_insert_return::get() member functions (P0508R0) · 97695d99
      	* include/bits/node_handle.h (_Node_insert_return::get): Remove, as
      	per P0508R0.
      
      From-SVN: r254368
      Jonathan Wakely committed
    • [ARC] Fix to unwinding. · b0c7ddf8
      gcc/ChangeLog:
      2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
      
              * config/arc/arc.c (arc_save_restore): Corrected CFA note.
              (arc_expand_prologue): Restore blink for millicode.
              * config/arc/linux.h (LINK_EH_SPEC): Defined.
      
      libgcc/ChangeLog:
      2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
                  Vineet Gupta <vgupta@synopsys.com>
      
              * config.host (arc*-*-linux*): Set md_unwind_header variable.
              * config/arc/linux-unwind-reg.def: New file.
              * config/arc/linux-unwind.h: Likewise.
      
      Co-Authored-By: Vineet Gupta <vgupta@synopsys.com>
      
      From-SVN: r254367
      Cupertino Miranda committed
    • PR82809: register handling in ix86_vector_duplicate_value · a34a16ab
      When adding the call to gen_vec_duplicate, I failed to notice that
      code further down modified the VEC_DUPLICATE in place.  That isn't
      safe if gen_vec_duplicate returned a const_vector.
      
      2017-11-02  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR target/82809
      	* config/i386/i386.c (ix86_vector_duplicate_value): Use
      	gen_vec_duplicate after forcing the scalar into a register.
      
      gcc/testsuite/
      	* gcc.dg/pr82809.c: New test.
      
      From-SVN: r254366
      Richard Sandiford committed
    • combine: Print insns we try to combine · f53bd856
      This adds some extra debug info to the dump file for combine: print
      the insns that are input to try_combine.  I was worried printing more
      will make the dump file only harder to read, but especially the info
      from the REG_DEAD notes is invaluable.
      
      
      	* combine (try_combine): Print the insns input to try_combine to the
      	dump file.
      
      From-SVN: r254365
      Segher Boessenkool committed
    • Daily bump. · 89513a1c
      From-SVN: r254364
      GCC Administrator committed
    • re PR c++/81957 (ICE decltype) · d5f0b3f0
      /cp
      2017-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/81957
      	* pt.c (make_pack_expansion): Add tsubst_flags_t parameter.
      	(expand_integer_pack, convert_template_argument, coerce_template_parms,
      	gen_elem_of_pack_expansion_instantiation, tsubst_pack_expansion,
      	unify): Adjust calls.
      	* tree.c (cp_build_qualified_type_real): Likewise.
      	* cp-tree.h (make_pack_expansion): Adjust declaration.
      
      /testsuite
      2017-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/81957
      	* g++.dg/cpp0x/variadic-crash5.C: New.
      
      From-SVN: r254361
      Paolo Carlini committed
  2. 02 Nov, 2017 19 commits