1. 27 Aug, 2018 15 commits
    • diagnostics: show an extra line of context in line-insertion fix-it hints (PR 87091) · df308f81
      This patch tweaks how we print line-insertion fix-it hints, so that
      the line before the insertion point is also printed, to give the user
      more context on the proposed change.
      
      For example, it changes:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
        +++ |+#include <vector>
         74 | #endif
        ....
         87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
            |                      ^~~
      
      to:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
         73 | # include <debug/vector>
        +++ |+#include <vector>
         74 | #endif
        ....
         87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
            |                      ^~~
      
      gcc/ChangeLog:
      	PR 87091
      	* diagnostic-show-locus.c (get_line_span_for_fixit_hint): Show the
      	line above for line-insertion fix-it hints.
      	(selftest::test_fixit_insert_containing_newline): Update the
      	expected results, and add a test with line-numbering enabled.
      
      gcc/testsuite/ChangeLog:
      	PR 87091
      	* g++.dg/pr85523.C: Extend expected output to show line
      	before line-insertion fix-it hint.
      	* gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers.c
      	(test_fixit_insert_newline): Add previous line to expected output.
      	* gcc.dg/plugin/diagnostic-test-show-locus-bw.c: Likewise.
      	* gcc.dg/plugin/diagnostic-test-show-locus-color.c: Likewise.
      
      From-SVN: r263884
      David Malcolm committed
    • Sanopt: ignore params with DECL_HAS_VALUE_EXPR_P (PR sanitizer/86962). · 47c3496b
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR sanitizer/86962
      	* sanopt.c (sanitize_rewrite_addressable_params): Ignore
              params with DECL_HAS_VALUE_EXPR_P.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR sanitizer/86962
      	* gcc.dg/asan/pr86962.c: New test.
      
      From-SVN: r263882
      Martin Liska committed
    • Add test for memcpy expansion with hint. · 6b60ee20
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* config/i386/i386.c (ix86_expand_set_or_movmem): Dump
              selected expansion strategy.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/tree-prof/val-prof-10.c: New test.
      
      From-SVN: r263881
      Martin Liska committed
    • Come up with fndecl_built_in_p. · 3d78e008
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* builtins.h (is_builtin_fn): Remove and fndecl_built_in_p.
      	* builtins.c (is_builtin_fn): Likewise.
      	* attribs.c (diag_attr_exclusions): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(builtin_mathfn_code): Likewise.
      	(fold_builtin_expect): Likewise.
      	(fold_call_expr): Likewise.
      	(fold_builtin_call_array): Likewise.
      	(fold_call_stmt): Likewise.
      	(set_builtin_user_assembler_name): Likewise.
      	(is_simple_builtin): Likewise.
      	* calls.c (gimple_alloca_call_p): Likewise.
      	(maybe_warn_nonstring_arg): Likewise.
      	* cfgexpand.c (expand_call_stmt): Likewise.
      	* cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise.
      	(cgraph_edge::verify_corresponds_to_fndecl): Likewise.
      	(cgraph_node::verify_node): Likewise.
      	* cgraphclones.c (build_function_decl_skip_args): Likewise.
      	(cgraph_node::create_clone): Likewise.
      	* config/arm/arm.c (arm_insert_attributes): Likewise.
      	* config/i386/i386.c (ix86_gimple_fold_builtin): Likewise.
      	* dse.c (scan_insn): Likewise.
      	* expr.c (expand_expr_real_1): Likewise.
      	* fold-const.c (operand_equal_p): Likewise.
      	(fold_binary_loc): Likewise.
      	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
      	* gimple-low.c (lower_stmt): Likewise.
      	* gimple-pretty-print.c (dump_gimple_call): Likewise.
      	* gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Likewise.
      	* gimple.c (gimple_build_call_from_tree): Likewise.
      	(gimple_call_builtin_p): Likewise.
      	(gimple_call_combined_fn): Likewise.
      	* gimplify.c (gimplify_call_expr): Likewise.
      	(gimple_boolify): Likewise.
      	(gimplify_modify_expr): Likewise.
      	(gimplify_addr_expr): Likewise.
      	* hsa-gen.c (gen_hsa_insns_for_call): Likewise.
      	* ipa-cp.c (determine_versionability): Likewise.
      	* ipa-fnsummary.c (compute_fn_summary): Likewise.
      	* ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise.
      	* ipa-split.c (visit_bb): Likewise.
      	(split_function): Likewise.
      	* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
      	* lto-cgraph.c (input_node): Likewise.
      	* lto-streamer-out.c (write_symbol): Likewise.
      	* omp-low.c (setjmp_or_longjmp_p): Likewise.
      	(lower_omp_1): Likewise.
      	* predict.c (strip_predict_hints): Likewise.
      	* print-tree.c (print_node): Likewise.
      	* symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise.
      	* trans-mem.c (is_tm_irrevocable): Likewise.
      	(is_tm_load): Likewise.
      	(is_tm_simple_load): Likewise.
      	(is_tm_store): Likewise.
      	(is_tm_simple_store): Likewise.
      	(is_tm_abort): Likewise.
      	(tm_region_init_1): Likewise.
      	* tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise.
      	* tree-cfg.c (verify_gimple_call): Likewise.
      	(move_stmt_r): Likewise.
      	(stmt_can_terminate_bb_p): Likewise.
      	* tree-eh.c (lower_eh_constructs_2): Likewise.
      	* tree-if-conv.c (if_convertible_stmt_p): Likewise.
      	* tree-inline.c (remap_gimple_stmt): Likewise.
      	(copy_bb): Likewise.
      	(estimate_num_insns): Likewise.
      	(fold_marked_statements): Likewise.
      	* tree-sra.c (scan_function): Likewise.
      	* tree-ssa-ccp.c (surely_varying_stmt_p): Likewise.
      	(optimize_stack_restore): Likewise.
      	(pass_fold_builtins::execute): Likewise.
      	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
      	(mark_all_reaching_defs_necessary_1): Likewise.
      	* tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise.
      	* tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
      	(pass_forwprop::execute): Likewise.
      	* tree-ssa-loop-im.c (stmt_cost): Likewise.
      	* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
      	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise.
      	* tree-ssa-strlen.c (get_string_length): Likewise.
      	* tree-ssa-structalias.c (handle_lhs_call): Likewise.
      	(find_func_aliases_for_call): Likewise.
      	* tree-ssa-ter.c (find_replaceable_in_bb): Likewise.
      	* tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise.
      	* tree-tailcall.c (find_tail_calls): Likewise.
      	* tree.c (need_assembler_name_p): Likewise.
      	(free_lang_data_in_decl): Likewise.
      	(get_call_combined_fn): Likewise.
      	* ubsan.c (is_ubsan_builtin_p): Likewise.
      	* varasm.c (incorporeal_function_p): Likewise.
      	* tree.h (DECL_BUILT_IN): Remove and replace with
              fndecl_built_in_p.
      	(DECL_BUILT_IN_P): Transfort to fndecl_built_in_p.
      	(fndecl_built_in_p): New.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* gcc-interface/decl.c (update_profile): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	* gcc-interface/gigi.h (call_is_atomic_load): Likewise.
      	* gcc-interface/utils.c (gnat_pushdecl): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* c-common.c (check_function_restrict): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(check_builtin_function_arguments): Likewise.
      	(reject_gcc_builtin): Likewise.
      	* c-warn.c (sizeof_pointer_memaccess_warning): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* c-decl.c (locate_old_decl): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(diagnose_mismatched_decls): Likewise.
      	(merge_decls): Likewise.
      	(warn_if_shadowing): Likewise.
      	(pushdecl): Likewise.
      	(implicitly_declare): Likewise.
      	* c-parser.c (c_parser_postfix_expression_after_primary): Likewise.
      	* c-tree.h (C_DECL_ISNT_PROTOTYPE): Likewise.
      	* c-typeck.c (build_function_call_vec): Likewise.
      	(convert_arguments): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* call.c (build_call_a): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(build_cxx_call): Likewise.
      	* constexpr.c (constexpr_fn_retval): Likewise.
      	(cxx_eval_builtin_function_call): Likewise.
      	(cxx_eval_call_expression): Likewise.
      	(potential_constant_expression_1): Likewise.
      	* cp-gimplify.c (cp_gimplify_expr): Likewise.
      	(cp_fold): Likewise.
      	* decl.c (decls_match): Likewise.
      	(validate_constexpr_redeclaration): Likewise.
      	(duplicate_decls): Likewise.
      	(make_rtl_for_nonlocal_decl): Likewise.
      	* name-lookup.c (consider_binding_level): Likewise.
      	(cp_emit_debug_info_for_using): Likewise.
      	* semantics.c (finish_call_expr): Likewise.
      	* tree.c (builtin_valid_in_constant_expr_p): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* go-gcc.cc (Gcc_backend::call_expression): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* lto-lang.c (handle_const_attribute): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	* lto-symtab.c (lto_symtab_merge_p): Likewise.
      	(lto_symtab_merge_decls_1): Likewise.
      	(lto_symtab_merge_symbols): Likewise.
      	* lto.c (lto_maybe_register_decl): Likewise.
      	(read_cgraph_and_symbols): Likewise.
      
      From-SVN: r263880
      Martin Liska committed
    • Improve switch code emission for a balanced tree (PR tree-optimization/86847). · bb79aba4
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86847
      	* tree-switch-conversion.c (switch_decision_tree::dump_case_nodes):
              Dump also subtree probability.
      	(switch_decision_tree::do_jump_if_equal): New function.
      	(switch_decision_tree::emit_case_nodes): Handle special
              situations in balanced tree that can be emitted much simpler.
              Fix calculation of probabilities that happen in tree expansion.
      	* tree-switch-conversion.h (struct cluster): Add
              is_single_value_p.
      	(struct simple_cluster): Likewise.
      	(struct case_tree_node): Add new function has_child.
      	(do_jump_if_equal): New.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86847
      	* gcc.dg/tree-ssa/switch-3.c: New test.
      	* gcc.dg/tree-ssa/vrp105.c: Remove.
      
      From-SVN: r263879
      Martin Liska committed
    • Fix probability for bit-tests. · 377afcd5
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
              Add new argument to bit_test_cluster constructor.
      	(bit_test_cluster::emit): Set bits really number of values
              handlel by a test.
      	(bit_test_cluster::hoist_edge_and_branch_if_true): Add
              probability argument.
      	* tree-switch-conversion.h (struct bit_test_cluster):
              Add m_handles_entire_switch.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/tree-ssa/switch-2.c: New test.
      
      From-SVN: r263878
      Martin Liska committed
    • Fix probabilities for jump table (PR tree-optimization/86702). · dbdfaaba
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86702
      	* tree-switch-conversion.c (jump_table_cluster::emit):
              Make probabilities even for values in jump table
              according to number of cases handled.
      	(switch_decision_tree::compute_cases_per_edge): Pass
              argument to reset_out_edges_aux function.
      	(switch_decision_tree::analyze_switch_statement): Likewise.
      	* tree-switch-conversion.h (switch_decision_tree::reset_out_edges_aux):
              Make it static.
      
      From-SVN: r263877
      Martin Liska committed
    • Add new gswitch related functions into tree-cfg.c. · 61ff5d6f
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* cfgexpand.c (expand_asm_stmt): Use label_to_block and pass
              cfun argument explicitly.
      	* gimple-pretty-print.c (dump_gimple_switch): Likewise.
      	* hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new
              function gimple_switch_default_bb.
      	(convert_switch_statements):
      	(expand_builtins):
      	* ipa-fnsummary.c (set_switch_stmt_execution_predicate):
      	* stmt.c (label_to_block_fn): Use label_to_block and pass
              cfun argument explicitly and use gimple_switch_label_bb.
      	(expand_case): Likewise.
      	* tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass
              cfun argument explicitly. Likewise.
      	(make_edges_bb): Likewise.
      	(make_cond_expr_edges): Likewise.
      	(get_cases_for_edge): Likewise.
      	(make_gimple_switch_edges): Likewise.
      	(label_to_block_fn): Likewise.
      	(label_to_block): Likewise.
      	(make_goto_expr_edges): Likewise.
      	(make_gimple_asm_edges): Likewise.
      	(main_block_label): Likewise.
      	(group_case_labels_stmt): Likewise.
      	(find_taken_edge_computed_goto): Likewise.
      	(find_taken_edge_switch_expr): Likewise.
      	(gimple_verify_flow_info): Likewise.
      	(gimple_redirect_edge_and_branch): Likewise.
      	(gimple_switch_label_bb): New function.
      	(gimple_switch_default_bb): Likewise.
      	(gimple_switch_edge): Likewise.
      	(gimple_switch_default_edge): Likewise.
      	* tree-cfg.h (label_to_block_fn): Remove and replace ...
      	(label_to_block): ... with this.
      	(gimple_switch_label_bb): New.
      	(gimple_switch_default_bb): Likewise.
      	(gimple_switch_edge): Likewise.
      	(gimple_switch_default_edge): Likewise.
      	* tree-cfgcleanup.c (convert_single_case_switch): Use
              new gimple functions and pass new argument to label_to_block.
      	(cleanup_control_flow_bb):
      	* tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass
              cfun argument explicitly.
      	(make_eh_edges): Likewise.
      	(redirect_eh_dispatch_edge): Likewise.
      	(lower_resx): Likewise.
      	(lower_eh_dispatch): Likewise.
      	(maybe_remove_unreachable_handlers): Likewise.
      	(unsplit_eh): Likewise.
      	(cleanup_empty_eh): Likewise.
      	(verify_eh_edges): Likewise.
      	(verify_eh_dispatch_edge): Likewise.
      	* tree-ssa-dom.c (record_edge_info): Likewise.
      	* tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise.
      	* tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise.
      	(thread_through_normal_block): Likewise.
      	* tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
      	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
      	* tree-switch-conversion.c (switch_conversion::collect): Use new
              gimple functions.
      	(switch_conversion::check_final_bb): Likewise.
      	(switch_conversion::gather_default_values): Pass new argument
              to label_to_block.
      	(switch_conversion::build_constructors): Likewise.
      	(switch_decision_tree::compute_cases_per_edge): Use new
              gimple_switch_edge function.
      	(switch_decision_tree::analyze_switch_statement): Pass new argument
              to label_to_block.
      	(switch_decision_tree::try_switch_expansion): Use
              gimple_switch_default_edge.
      	* tree-vrp.c (find_switch_asserts): Pass new argument
              to label_to_block.
      	* vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise.
      	(vr_values::simplify_switch_using_ranges): Likewise.
      
      From-SVN: r263876
      Martin Liska committed
    • cfganal.h (rev_post_order_and_mark_dfs_back_seme): Declare. · 78ea9abc
      2018-08-27  Richard Biener  <rguenther@suse.de>
      
      	* cfganal.h (rev_post_order_and_mark_dfs_back_seme): Declare.
      	* cfganal.c (rev_post_order_and_mark_dfs_back_seme): New function.
      
      	* tree-ssa-sccvn.h (struct vn_pval): New structure.
      	(struct vn_nary_op_s): Add unwind_to member.  Add
      	predicated_values flag and put result into a union together
      	with a linked list of vn_pval.
      	(struct vn_ssa_aux): Add name member to make maintaining
      	a map of SSA name to vn_ssa_aux possible.  Remove no longer
      	needed info, dfsnum, low, visited, on_sccstack, use_processed
      	and range_info_anti_range_p members.
      	(run_scc_vn, vn_eliminate, free_scc_vn, vn_valueize): Remove.
      	(do_rpo_vn, run_rpo_vn, eliminate_with_rpo_vn, free_rpo_vn):
      	New functions.
      	(vn_valueize): New global.
      	(vn_context_bb): Likewise.
      	(VN_INFO_RANGE_INFO, VN_INFO_ANTI_RANGE_P, VN_INFO_RANGE_TYPE,
      	VN_INFO_PTR_INFO): Remove.
      	* tree-ssa-sccvn.c: ... (rewrite)
      	(pass_fre::execute): For -O2+ initialize loops and run
      	RPO VN in optimistic mode (iterating).  For -O1 and -Og
      	run RPO VN in non-optimistic mode.
      	* params.def (PARAM_SCCVN_MAX_SCC_SIZE): Remove.
      	(PARAM_RPO_VN_MAX_LOOP_DEPTH): Add.
      	* doc/invoke.texi (sccvn-max-scc-size): Remove.
      	(rpo-vn-max-loop-depth): Document.
      	* tree-ssa-alias.c (walk_non_aliased_vuses): Stop walking
      	when valuezing the VUSE signals we walked out of the region.
      	* tree-ssa-pre.c (phi_translate_1): Ignore predicated values.
      	(phi_translate): Set VN context block to use for availability
      	lookup.
      	(compute_avail): Likewise.
      	(pre_valueize): New function.
      	(pass_pre::execute): Adjust to the RPO VN API.
      
      	* tree-ssa-loop-ivcanon.c: Include tree-ssa-sccvn.h.
      	(propagate_constants_for_unrolling): Remove.
      	(tree_unroll_loops_completely): Perform value-numbering
      	on the unrolled bodies loop parent.
      
      	* g++.dg/torture/20180705-1.C: New testcase.
      	* gcc.dg/tree-ssa/ssa-fre-67.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ccp-14.c: Scan FRE dump.
      	* gcc.dg/tree-ssa/ssa-fre-46.c: Use -O2.
      	* gcc.dg/tree-ssa/vrp92.c: Disable FRE.
      	* gcc.dg/pr83666.c: Drop --param=sccvn-max-scc-size option.
      	* gcc.dg/pr85195.c: Likewise.
      	* gcc.dg/pr85467.c: Likewise.
      	* gcc.dg/torture/pr81790.c: Likewise.
      
      	* gfortran.dg/reassoc_4.f: Change max-completely-peeled-insns
      	param to current default.
      
      From-SVN: r263875
      Richard Biener committed
    • tree-ssa-pre.c (compute_antic): Re-use inverted postorder for partial antic compute. · 8d2d69eb
      2018-08-27  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-pre.c (compute_antic): Re-use inverted postorder
      	for partial antic compute.
      
      From-SVN: r263874
      Richard Biener committed
    • re PR rtl-optimization/87065 (combine causes ICE in trunc_int_for_mode) · e7289cb4
      	PR rtl-optimization/87065
      	* combine.c (simplify_if_then_else): Formatting fix.
      	(if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P
      	check.
      	(known_cond): Don't return const_true_rtx for vector modes.  Use
      	CONST0_RTX instead of const0_rtx.  Formatting fixes.
      
      	* gcc.target/i386/pr87065.c: New test.
      
      From-SVN: r263872
      Jakub Jelinek committed
    • Do not read gcda files multiple times (PR gcov-profile/87069). · 7a583153
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR gcov-profile/87069
      	* gcov.c (process_file): Record files already processed
              and warn about a file being processed multiple times.
      
      From-SVN: r263871
      Martin Liska committed
    • Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193). · 266c2b54
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR driver/83193
      	* config/aarch64/aarch64.c (aarch64_override_options_internal):
              Set default values for x_aarch64_*_string strings.
      	* config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
              prefix.  For -mabi do not print '=ABI' in help and use
              <option_value> format for -msve-vector-bits and -moverride
              options.
      
      From-SVN: r263870
      Martin Liska committed
    • frame-header-opt.c: Include "backend.h" rather than "cfg.h" · 507c82f6
      	* config/mips/frame-header-opt.c: Include "backend.h" rather than
      	"cfg.h"
      
      From-SVN: r263869
      Jeff Law committed
    • Daily bump. · 291872b4
      From-SVN: r263867
      GCC Administrator committed
  2. 26 Aug, 2018 3 commits
  3. 25 Aug, 2018 6 commits
    • re PR fortran/86704 (Segmentation fault when using matmul in combination with transpose) · 4f4fabd7
      
      2018-08-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR libfortran/86704
      	* m4/matmul_internal.m4: Correct calculation of needed buffer size
      	for arrays of shape (1,n).
      	* generated/matmul_c10.c: Regenerated
      	* generated/matmul_c16.c: Regenerated
      	* generated/matmul_c4.c: Regenerated
      	* generated/matmul_c8.c: Regenerated
      	* generated/matmul_i1.c: Regenerated
      	* generated/matmul_i16.c: Regenerated
      	* generated/matmul_i2.c: Regenerated
      	* generated/matmul_i4.c: Regenerated
      	* generated/matmul_i8.c: Regenerated
      	* generated/matmul_r10.c: Regenerated
      	* generated/matmul_r16.c: Regenerated
      	* generated/matmul_r4.c: Regenerated
      	* generated/matmul_r8.c: Regenerated
      	* generated/matmulavx128_c10.c: Regenerated
      	* generated/matmulavx128_c16.c: Regenerated
      	* generated/matmulavx128_c4.c: Regenerated
      	* generated/matmulavx128_c8.c: Regenerated
      	* generated/matmulavx128_i1.c: Regenerated
      	* generated/matmulavx128_i16.c: Regenerated
      	* generated/matmulavx128_i2.c: Regenerated
      	* generated/matmulavx128_i4.c: Regenerated
      	* generated/matmulavx128_i8.c: Regenerated
      	* generated/matmulavx128_r10.c: Regenerated
      	* generated/matmulavx128_r16.c: Regenerated
      	* generated/matmulavx128_r4.c: Regenerated
      	* generated/matmulavx128_r8.c: Regenerated
      
      2018-08-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR libfortran/86704
      	* gfortran.dg/matmul_19.f90: New test.
      
      From-SVN: r263856
      Thomas Koenig committed
    • re PR tree-optimization/87059 (internal compiler error: in set_value_range, at tree-vrp.c:289) · 75e96bc8
      	PR tree-optimization/87059
      	* builtins.c (expand_builtin_strncmp): Convert MIN_EXPR operand
      	to the same type as the other.
      	* fold-const.c (fold_binary_loc): Assert expectation.
      
      From-SVN: r263855
      Martin Sebor committed
    • re PR fortran/86545 (ICE in transfer_expr on invalid WRITE statement) · 3d6fc627
      fix PR 86545
      
      2018-08-25  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/86545
      	* resolve.c (resolve_transfer): Correctly determine typespec for
      	generic function calls, in order to throw a proper error.
      
      2018-08-25  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/86545
      	* gfortran.dg/generic_35.f90: New test case.
      
      From-SVN: r263854
      Janus Weil committed
    • Code clean-up on darwin.c · efa57fee
      	* config/darwin.c (machopic_legitimize_pic_address): Clean up
      	extraneous parentheses, dead code section and formatting.
      
      From-SVN: r263851
      Iain Sandoe committed
    • Don't force visibility to hidden for Darwin > 8. · ee959ecb
      	PR libstdc++/70694
      	* configure.host (OPT_LDFLAGS): Don't append
      	-fvisibility-inlines-hidden for newer Darwin.
      
      From-SVN: r263850
      Iain Sandoe committed
    • Daily bump. · 19b0eb25
      From-SVN: r263849
      GCC Administrator committed
  4. 24 Aug, 2018 16 commits
    • Set start_location to 0 if we ran out of line map space · cf806c7d
      With profiledbootstrap and --with-build-config=bootstrap-lto, linemap_add
      may create a macro map when we run out of line map space.  This patch
      changes start_location to UNKNOWN_LOCATION (0) in this case.
      
      Tested with profiledbootstrap and --with-build-config=bootstrap-lto on
      Linux/x86-64.
      
      	PR bootstrap/86872
      	* line-map.c (pure_location_p): Return true if linemap_lookup
      	returns NULL.
      	(linemap_add): Set start_location to 0 if we run out of line map
      	space.
      
      From-SVN: r263845
      H.J. Lu committed
    • diagnostics: tweaks to line-spans vs line numbering (PR 87091) · acf6214e
      This patch tweaks how line numbers are printed for a diagnostic
      containing multiple line spans.
      
      With this patch, rather than printing span headers:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:74:1:
        ++ |+#include <vector>
        74 | #endif
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22:
        87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
           |                      ^~~
      
      we now print:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
        +++ |+#include <vector>
         74 | #endif
        ....
         87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
            |                      ^~~
      
      and for sufficiently close lines, rather than print a gap:
      
        + |+#include <stdio.h>
        1 | test (int ch)
        ..
        3 |  putchar (ch);
          |  ^~~~~~~
      
      we print the line itself:
      
        + |+#include <stdio.h>
        1 | test (int ch)
        2 | {
        3 |  putchar (ch);
          |  ^~~~~~~
      
      gcc/ChangeLog:
      	PR 87091
      	* diagnostic-show-locus.c (layout::layout): Ensure the margin is
      	wide enough for jumps in the line-numbering to be visible.
      	(layout::print_gap_in_line_numbering): New member function.
      	(layout::calculate_line_spans): When using line numbering, merge
      	line spans that are only 1 line apart.
      	(diagnostic_show_locus): When printing line numbers, show gaps in
      	line numbering directly, rather than printing headers.
      	(selftest::test_diagnostic_show_locus_fixit_lines): Add test of
      	line-numbering with multiple line spans.
      	(selftest::test_fixit_insert_containing_newline_2): Add test of
      	line-numbering, in which the spans are close enough to be merged.
      
      gcc/testsuite/ChangeLog:
      	PR 87091
      	* gcc.dg/missing-header-fixit-3.c: Update for changes to how
      	line spans are printed with -fdiagnostics-show-line-numbers.
      
      From-SVN: r263843
      David Malcolm committed
    • gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range to range_includes_zero_p. · e5a3f08f
      	* gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range
      	to range_includes_zero_p.  Do not special case VR_ANTI_RANGE.
      	* tree-vrp.c (range_is_nonnull): Remove.
      	(range_includes_zero_p): Accept value_range instead of min/max.
      	(extract_range_from_binary_expr_1): Do not early bail on
      	POINTER_PLUS_EXPR.
      	Use range_includes_zero_p instead of range_is_nonnull.
      	(extract_range_from_unary_expr): Use range_includes_zero_p instead
      	of range_is_nonnull.
      	(vrp_meet_1): Pass value_range to range_includes_zero_p.  Do not
      	special case VR_ANTI_RANGE.
      	(vrp_finalize): Same.
      	* tree-vrp.h (range_includes_zero_p): Pass value_range as argument
      	instead of min/max.
      	(range_is_nonnull): Remove.
      	* vr-values.c (vrp_stmt_computes_nonzero): Use
      	range_includes_zero_p instead of range_is_nonnull.
      	(extract_range_basic): Pass value_range to range_includes_zero_p
      	instead of range_is_nonnull.
      
      From-SVN: r263842
      Aldy Hernandez committed
    • new(nothrow) is malloc-like · 6eac0600
      2018-08-24  Marc Glisse  <marc.glisse@inria.fr>
      
      	PR libstdc++/86822
      	* libsupc++/new (operator new(size_t, nothrow_t), operator
      	new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
      	operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
      
      From-SVN: r263841
      Marc Glisse committed
    • runtime: remove the dummy arg of getcallersp · 1d29bb04
          
          This is a port of https://golang.org/cl/109596 to the gofrontend, in
          preparation for updating libgo to 1.11.
          
          Original CL description:
          
              getcallersp is intrinsified, and so the dummy arg is no longer
              needed. Remove it, as well as a few dummy args that are solely
              to feed getcallersp.
          
          Reviewed-on: https://go-review.googlesource.com/131116
      
      From-SVN: r263840
      Ian Lance Taylor committed
    • Forward declare debug containers so std::pmr aliases work · 9ca2ac69
      Prior to this change, including a <debug/xxx> header when _GLIBCXX_DEBUG
      is also defined would fail to compile in C++17 or later. The <debug/xxx>
      header would include the standard <xxx> header which defined
      std::pmr::xxx as an alias for std::xxx. But in Debug Mode std::xxx
      refers to std::__debug::xxx which has not been defined yet (because it
      is in <debug/xxx> after the inclusion of <xxx>).
      
      This adds declarations of the debug containers before including the
      non-Debug Mode <xxx> header, so that the std::pmr::xxx aliases work.
      
      	* include/debug/deque (std::__debug::deque): Declare.
      	* include/debug/forward_list (std::__debug::forward_list): Declare.
      	* include/debug/list (std::__debug::list): Declare.
      	* include/debug/map (std::__debug::map): Declare.
      	* include/debug/set (std::__debug::set): Declare.
      	* include/debug/unordered_map (std::__debug::unordered_map): Declare.
      	* include/debug/unordered_set (std::__debug::unordered_set): Declare.
      	* include/debug/vector (std::__debug::vector): Declare.
      	* testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
      	test.
      	* testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
      	test.
      	* testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
      	New test.
      	* testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
      	New test.
      	* testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
      	test.
      	* testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
      	Adjust dg-error lineno.
      	* testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
      	test.
      
      From-SVN: r263839
      Jonathan Wakely committed
    • re PR fortran/86837 (Optimization breaks an unformatted read with implicit loop) · 3413d168
      2018-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/86837
      	* frontend-passes.c (var_in_expr_callback): New function.
      	(var_in_expr): New function.
      	(traverse_io_block): Use var_in_expr instead of
      	gfc_check_dependency for checking if the variable depends on the
      	previous interators.
      
      2018-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/86837
      	* gfortran.dg/implied_do_io_6.f90: New test.
      
      From-SVN: r263838
      Thomas Koenig committed
    • Add a testcase for PR middle-end/87092 · 01aa3748
      	PR middle-end/87092
      	* gcc.dg/pr87092.c: New test.
      
      From-SVN: r263837
      H.J. Lu committed
    • re PR c++/67012 (decltype(auto) with trailing return type) · 13ff3e16
      	PR c++/67012
      	PR c++/86942
      	* decl.c (grokdeclarator): Disallow functions with trailing return
              type with decltype(auto) as its type.  Also check the function if
              it's inner declarator doesn't exist
      
      	* g++.dg/cpp0x/auto52.C: New test.
      	* g++.dg/cpp1y/auto-fn52.C: New test.
      	* g++.dg/cpp1y/auto-fn53.C: New test.
      	* g++.dg/cpp1y/auto-fn54.C: New test.
      
      From-SVN: r263836
      Marek Polacek committed
    • emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes. · eafa30ef
      	* emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes.
      	* emit-rtl.h (rtl_data): Remove return_bnd.
      	* explow.c (trunc_int_for_mode): Do not handle POINTER_BOUNDS_MODE_P.
      	* function.c (diddle_return_value): Do not handle crtl->return_bnd.
      	* genmodes.c (complete_mode): Do not handle MODE_POINTER_BOUNDS.
      	(POINTER_BOUNDS_MODE): Remove definition.
      	(make_pointer_bounds_mode): Remove.
      	(get_mode_class): Do not handle MODE_POINTER_BOUNDS.
      	* machmode.h (POINTER_BOUNDS_MODE_P): Remove definition.
      	(scalare_mode::includes_p): Do not handle MODE_POINTER_BOUNDS.
      	* mode-classes.def: Do not define MODE_POINTER_BOUNDS.
      	* stor-layout.c (int_mode_for_mode): Do not handle MODE_POINTER_BOUNDS.
      	* tree-core.h (enum tree_index): Remove TI_POINTER_BOUNDS_TYPE.
      	* varasm.c (output_constant_pool_2): Do not handle MODE_POINTER_BOUNDS.
      
      	* config/i386/i386-modes.def (BND32, BND64): Remove.
      	* config/i386/i386.c (dbx_register_map): Remove bound registers.
      	(dbx64_register_map): Ditto.
      	(svr4_dbx_register_map): Ditto.
      	(indirect_thunk_bnd_needed): Remove.
      	(indirect_thunks_bnd_used): Ditto.
      	(indirect_return_bnd_needed): Ditto.
      	(indirect_return_via_cx_bnd): Ditto.
      	(enum indirect_thunk_prefix): Remove indirect_thunk_prefix_bnd.
      	(indirect_thunk_name): Remove handling of indirect_thunk_prefix_bnd.
      	(output_indirect_thunk): Ditto.  Remove need_prefix argument.
      	(output_indirect_thunk_function): Remove handling of
      	indirect_return_bnd_needed, indirect_return_via_cx_bnd,
      	indirect_thunk_bnd_needed and indirect_thunks_bnd_used variables.
      	(ix86_save_reg): Remove handling of crtl->return_bnd.
      	(ix86_legitimate_constant_p): Remove handling of POINTER_BOUNDS_MODE_P.
      	(ix86_print_operand_address_as): Remove handling of UNSPEC_BNDMK_ADDR
      	and UNSPEC_BNDLX_ADDR.
      	(ix86_output_indirect_branch_via_reg): Remove handling of
      	indirect_thunk_prefix_bnd.
      	(ix86_output_indirect_branch_via_push): Ditto.
      	(ix86_output_function_return): Ditto.
      	(ix86_output_indirect_function_return): Ditto.
      	(avoid_func_arg_motion): Do not handle UNSPEC_BNDSTX.
      	* config/i386/i386.h (FIXED_REGISTERS): Remove bound registers.
      	(CALL_USED_REGISTERS): Ditto.
      	(REG_ALLOC_ORDER): Update for removal of bound registers.
      	(HI_REGISTER_NAMES): Ditto.
      	* config/i386/i386.md (UNSPEC_BNDMK, UNSPEC_BNDMK_ADDR, UNSPEC_BNDSTX)
      	(UNSPEC_BNDLDX, UNSPEC_BNDLDX_ADDR, UNSPEC_BNDCL, UNSPEC_BNDCU)
      	(UNSPEC_BNDCN, UNSPEC_MPX_FENCE): Remove.
      	(BND0_REG, BND1_REG, BND2_REG, BND3_REG): Remove
      	(FIRST_PSEUDO_REG): Update.
      	(BND): Remove mode iterator.
      	* config/i386/predicates.md (bnd_mem_operator): Remove.
      
      From-SVN: r263835
      Uros Bizjak committed
    • Define vect_perm for variable-length SVE · f5cd4f8c
      Variable-length SVE now supports enough permutes to define vect_perm.
      
      The change to vect_perm_supported is currently a no-op because the
      function is only called with a count of 3.
      
      2018-08-24  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* lib/target-supports.exp (vect_perm_supported): Only return
      	false for variable-length vectors if the permute size is not
      	a power of 2.
      	(check_effective_target_vect_perm)
      	(check_effective_target_vect_perm_byte)
      	(check_effective_target_vect_perm_short): Remove check for
      	variable-length vectors.
      	* gcc.dg/vect/slp-23.c: Add an XFAIL for variable-length SVE.
      	* gcc.dg/vect/slp-perm-10.c: Likewise.
      	* gcc.dg/vect/slp-perm-9.c: Add an XFAIL for variable-length vectors.
      
      From-SVN: r263834
      Richard Sandiford committed
    • Avoid is_constant calls in vectorizable_bswap · 8c2f568c
      The "new" VEC_PERM_EXPR handling makes it easy to support bswap
      for variable-length vectors.
      
      2018-08-24  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-stmts.c (vectorizable_bswap): Handle variable-length
      	vectors.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/bswap_1.c: New test.
      	* gcc.target/aarch64/sve/bswap_2.c: Likewise.
      	* gcc.target/aarch64/sve/bswap_3.c: Likewise.
      
      From-SVN: r263833
      Richard Sandiford committed
    • Handle SLP permutations for variable-length vectors · ab7e60ce
      The SLP code currently punts for all variable-length permutes.
      This patch makes it handle the easy case of N->N permutes in which
      the number of vector lanes is a multiple of N.  Every permute then
      uses the same mask, and that mask repeats (with a stride) every
      N elements.
      
      The patch uses the same path for constant-length vectors,
      since it should be slightly cheaper in terms of compile time.
      
      2018-08-24  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-slp.c (vect_transform_slp_perm_load): Separate out
      	the case in which the permute needs only a single element and
      	repeats for every vector of the result.  Extend that case to
      	handle variable-length vectors.
      	* tree-vect-stmts.c (vectorizable_load): Update accordingly.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/slp_perm_1.c: New test.
      	* gcc.target/aarch64/sve/slp_perm_2.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_3.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_4.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_5.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_6.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_7.c: Likewise.
      
      From-SVN: r263832
      Richard Sandiford committed
    • DWARF: Call set_indirect_string on DW_MACINFO_start_file · 1ade64c9
      Since -gsplit-dwarf -g3 will output filename as indirect string, call
      set_indirect_string on DW_MACINFO_start_file for -gsplit-dwarf -g3.
      
      gcc/
      
      	PR debug/79342
      	* dwarf2out.c (save_macinfo_strings): Call set_indirect_string
      	on DW_MACINFO_start_file for -gsplit-dwarf -g3.
      
      gcc/testsuite/
      
      	PR debug/79342
      	* gcc.dg/pr79342.: New test.
      
      From-SVN: r263831
      H.J. Lu committed
    • cfg.h (struct control_flow_graph): Add edge_flags_allocated and bb_flags_allocated members. · e144a2b3
      2018-08-24  Richard Biener  <rguenther@suse.de>
      
      	* cfg.h (struct control_flow_graph): Add edge_flags_allocated and
      	bb_flags_allocated members.
      	(auto_flag): New RAII class for allocating flags.
      	(auto_edge_flag): New RAII class for allocating edge flags.
      	(auto_bb_flag): New RAII class for allocating bb flags.
      	* cfgloop.c (verify_loop_structure): Allocate temporary edge
      	flag dynamically.
      	* cfganal.c (dfs_enumerate_from): Remove use of visited sbitmap
      	in favor of temporarily allocated BB flag.
      	* hsa-brig.c: Re-order includes.
      	* hsa-dump.c: Likewise.
      	* hsa-regalloc.c: Likewise.
      	* print-rtl.c: Likewise.
      	* profile-count.c: Likewise.
      
      From-SVN: r263830
      Richard Biener committed
    • rs6000: Check that the base of a TOCREL is the TOC (PR86989) · 6a84c265
      There currently is nothing that prevents replacing the TOC_REGISTER in
      a TOCREL unspec with something else, like a pseudo, or a memory ref.
      This of course does not work.  Fix that.
      
      Tested on powerpc64-linux {-m32,-m64}; committing.
      
      
      Segher
      
      
      2018-08-24  Segher Boessenkool  <segher@kernel.crashing.org>
      
      	PR target/86989
      	* config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is
      	the TOC register.
      
      ---
       gcc/config/rs6000/rs6000.c | 4 +++-
       1 file changed, 3 insertions(+), 1 deletion(-)
      
      diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
      index a967912..ed33912 100644
      --- a/gcc/config/rs6000/rs6000.c
      +++ b/gcc/config/rs6000/rs6000.c
      @@ -7932,7 +7932,9 @@ toc_relative_expr_p (const_rtx op, bool strict, const_rtx *tocrel_base_ret,
           *tocrel_offset_ret = tocrel_offset;
       
         return (GET_CODE (tocrel_base) == UNSPEC
      -	  && XINT (tocrel_base, 1) == UNSPEC_TOCREL);
      +	  && XINT (tocrel_base, 1) == UNSPEC_TOCREL
      +	  && REG_P (XVECEXP (tocrel_base, 0, 1))
      +	  && REGNO (XVECEXP (tocrel_base, 0, 1)) == TOC_REGISTER);
       }
       
       /* Return true if X is a constant pool address, and also for cmodel=medium
      -- 
      1.8.3.1
      
      From-SVN: r263829
      Segher Boessenkool committed