1. 05 Oct, 2018 18 commits
    • Add some pdp11 target hook definitions for C++ · 7717110a
          * config/pdp11/pdp11.c (TARGET_CXX_GUARD_TYPE): Define.
          (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Define.
          (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
          (pdp11_guard_type): New function.
      
      From-SVN: r264883
      Paul Koning committed
    • libgo: use inline assembly in favor of call to _xgetbv() · 7fc9c2e5
          
          Use inline assembly in the implementation of internal_cpu.xgetbv as
          opposed to a call to the intrinsic _xgetbv(), since non-gcc compilers
          (e.g. clang) may or may not have support for it.
          
          Reviewed-on: https://go-review.googlesource.com/c/140137
      
      From-SVN: r264882
      Ian Lance Taylor committed
    • Remove -mfloat32, -mfloat64 switches from pdp11 target. · d5a98955
          * config/pdp11/pdp11.h (FLOAT_TYPE_SIZE): Always 32.
          * config/pdp11/pdp11.opt (mfloat32): Remove.
          (mfloat64): Remove.
          * doc/invoke.texi (pdp11 -mfloat32): Remove:
          (pdp11 -mfloat64): Remove.
      
      From-SVN: r264881
      Paul Koning committed
    • testsuite: multiline.exp: implement optional target/xfail selector · 9a85d982
      gcc/testsuite/ChangeLog:
      	* lib/multiline.exp (proc dg-end-multiline-output): Check argument
      	count.  If there's a 3rd argument, use dg-process-target on it,
      	bailing out, or recording expected failures as "maybe_x".
      	(proc handle-multiline-outputs): Extract "maybe_x", and use it
      	to convert pass/fail into xpass/xfail.
      
      From-SVN: r264880
      David Malcolm committed
    • i386.md (*cmpxf_i387): Change operand 2 predicate to reg_or_0_operand. · 08993ffb
      	* config/i386/i386.md (*cmpxf_i387): Change operand 2 predicate
      	to reg_or_0_operand.  Add "C" constraint.
      	(*cmpxf_cc_i387): Ditto.
      	(*cmp<mode>_i387): Change operand 2 predicate
      	to nonimm_or_0_operand.  Add "C" constraint.
      	(*cmp<mode>_cc_i387): Ditto.
      	(*cmp<mode>_0_i387): Remove insn pattern.
      	(*cmp<mode>_0_cc_i387): Ditto.
      
      From-SVN: r264879
      Uros Bizjak committed
    • constraints.md ("C"): Do not depend on TARGET_SSE. · 808d8de5
      	* config/i386/constraints.md ("C"): Do not depend on TARGET_SSE.
      	* config/i386/predicates.md (nonimm_or_0_operand): Rename
      	from vector_move_operand.  Update all uses.
      
      From-SVN: r264877
      Uros Bizjak committed
    • PR tree-optimization/87490 - ICE in expand_builtin_strnlen with a constant… · f3431652
      PR tree-optimization/87490 - ICE in expand_builtin_strnlen with a constant argument and non-constant bound
      
      gcc/ChangeLog:
      
      	PR tree-optimization/87490
      	* builtins.c (expand_builtin_strnlen): Handle a null data.decl
      	consistently.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/87490
      	* gcc.dg/pr87490.c: New test.
      	* gcc.dg/warn-strnlen-no-nul-2.c: Same.
      
      From-SVN: r264876
      Martin Sebor committed
    • 2018-10-05 François Dumont <fdumont@gcc.gnu.org> · e0b9bc23
      	* include/bits/stl_tree.h
      	(_Rb_tree_iterator<>::operator==): Make inline friend.
      	(_Rb_tree_iterator<>::operator!=): Likewise.
      	(_Rb_tree_const_iterator<>::operator==): Likewise.
      	(_Rb_tree_const_iterator<>::operator!=): Likewise.
      	(operator==(const _Rb_tree_iterator<>&,
      	const _Rb_tree_const_iterator&)): Remove.
      	(operator!=(const _Rb_tree_iterator<>&,
      	const _Rb_tree_const_iterator&)): Remove.
      	(operator==(const _Rb_tree<>&, const _Rb_tree<>&)): Make inline friend.
      	(operator<(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
      	(operator!=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise and
      	deprecate.
      	(operator>(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
      	(operator<=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
      	(operator>=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
      	* include/debug/map.h (map<>::erase(const_iterator, const_iterator)):
      	Compare __victim with _Base::cend().
      	* include/debug/multimap.h
      	(multimap<>::erase(const_iterator, const_iterator)): Likewise.
      	* include/debug/set.h (set<>::erase(const_iterator, const_iterator)):
      	Compare __victim with _Base::cend().
      	* include/debug/multiset.h
      	(multiset<>::erase(const_iterator, const_iterator)): Likewise.
      
      From-SVN: r264875
      François Dumont committed
    • re PR tree-optimization/71625 (missing strlen optimization on different array initialization style) · 825e6458
      2018-10-05  Steve Ellcey  <sellcey@cavium.com>
      
      	PR tree-optimization/71625
      	* /gcc.target/aarch64/vclz.c (test_vclz_s8): Add noinline attribute.
      	(test_vclz_s16): Ditto.
      	(test_vclz_s32): Ditto.
      	(test_vclzq_s8): Ditto.
      	(test_vclzq_s16): Ditto.
      	(test_vclzq_s32): Ditto.
      	(test_vclz_u8): Ditto.
      	(test_vclz_u16): Ditto.
      	(test_vclz_u32): Ditto.
      	(test_vclzq_u8): Ditto.
      	(test_vclzq_u16): Ditto.
      	(test_vclzq_u32): Ditto.
      	* gcc.target/aarch64/vneg_s.c (test_vneg_s8): Ditto.
      	(test_vneg_s16): Ditto.
      	(test_vneg_s32): Ditto.
      	(test_vneg_s64): Ditto.
      	(test_vnegd_s64): Ditto.
      	(test_vnegq_s8): Ditto.
      	(test_vnegq_s16): Ditto.
      	(test_vnegq_s32): Ditto.
      	(test_vnegq_s64): Ditto.
      
      From-SVN: r264874
      Steve Ellcey committed
    • runtime: remove checkgoarm function · cbba2e1e
          
          Nothing in libgo calls checkgoarm, and it relies on a variable, goarm,
          that is not set.
          
          Reviewed-on: https://go-review.googlesource.com/c/140057
      
      From-SVN: r264872
      Ian Lance Taylor committed
    • re PR libbacktrace/87529 (libbacktrace API forces users to have memory leaks) · a2a86641
      	PR libbacktrace/87529
      	* backtrace.h: Document that backtrace_create_state should be
      	called only once.
      
      From-SVN: r264871
      Ian Lance Taylor committed
    • re PR middle-end/63155 (memory hog) · f48bd5e4
      2018-10-05  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/63155
      	* tree-ssa-ccp.c (ccp_propagate::visit_phi): Avoid excess
      	vertical space in dumpfiles.
      	* tree-ssa-propagate.h
      	(ssa_propagation_engine::process_ssa_edge_worklist): Remove.
      	* tree-ssa-propagate.c (cfg_blocks_back): New global.
      	(ssa_edge_worklist_back): Likewise.
      	(curr_order): Likewise.
      	(cfg_blocks_get): Remove abstraction.
      	(cfg_blocks_add): Likewise.
      	(cfg_blocks_empty_p): Likewise.
      	(add_ssa_edge): Add to current or next worklist based on
      	RPO index.
      	(add_control_edge): Likewise.
      	(ssa_propagation_engine::process_ssa_edge_worklist): Fold
      	into ...
      	(ssa_propagation_engine::ssa_propagate): ... here.  Unify
      	iteration from CFG and SSA edge worklist so we process
      	everything in RPO order, prioritizing forward progress
      	over iteration.
      	(ssa_prop_init): Allocate new worklists, do not dump
      	immediate uses.
      	(ssa_prop_fini): Free new worklists.
      
      From-SVN: r264869
      Richard Biener committed
    • tree-core.h (tree_block::abstract_flag): Remove. · 700adeb6
      2018-10-05  Richard Biener  <rguenther@suse.de>
      
      	* tree-core.h (tree_block::abstract_flag): Remove.
      	(tree_block::block_num): Make full 32bits.
      	* tree.def (BLOCK): Remove docs about BLOCK_ABSTRACT.
      	* tree.h (BLOCK_ABSTRACT): Remove.
      	* dwarf2out.c (gen_lexical_block_die): Remove dead code
      	resulting from BLOCK_ABSTRACT being always false.
      	(gen_inlined_subroutine_die): Likewise.
      	(gen_block_die): Likewise.
      	* tree.c (block_ultimate_origin): Likewise.
      	* tree-pretty-print.c (dump_block_node): Remove code dealing
      	with BLOCK_ABSTRACT.
      	* tree-ssa-live.c (dump_scope_block): Likewise.
      	* tree-streamer-in.c (unpack_ts_block_value_fields): Likewise.
      	* tree-streamer-out.c (pack_ts_block_value_fields): Likewise.
      
      From-SVN: r264868
      Richard Biener committed
    • i386.c (ix86_add_stmt_cost): When scalar cost is asked for initialize mode to… · 3f41c986
      i386.c (ix86_add_stmt_cost): When scalar cost is asked for initialize mode to the component mode of the...
      
      2018-10-05   Richard Biener  <rguenther@suse.de>
      
      	* config/i386/i386.c (ix86_add_stmt_cost): When scalar cost
      	is asked for initialize mode to the component mode of the
      	vector type.
      
      From-SVN: r264866
      Richard Biener committed
    • i386: Don't pass -msse2avx to assembler for -mavx · ae36de91
      With
      
      gcc -O2 -fPIC -flto -g -c -o a.o a.c
      gcc -O2 -fPIC -flto -g -mavx   -c -o b.o b.c
      gcc -shared -O2 -fPIC -flto -g -o lib1.so a.o b.o
      
      LTO correctly generates AVX for b.o and SSE for a.o.  But the GCC driver
      passes -msse2avx to assembler, which encodes SSE instructions as AVX
      instructions.  We shouldn't pass -msse2avx to assembler for -mavx.
      
      	PR target/87522
      	* config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to
      	assembler for -mavx.
      	* config/i386/gnu-user64.h (ASM_SPEC): Likewise.
      
      From-SVN: r264864
      H.J. Lu committed
    • rs6000: Various fixes for the new fpscr builtins (PR87509) · 49022a8b
      With these fixes all testcases test clean for me, both on
      powerpc64-linux {-m32,-m64} and on powerpc64le-linux, with all
      relevant -mcpu= settings.
      
      
      	PR target/87509
      	* config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_SET_FPSCR_DRN): Use
      	RS6000_BTM_DFP.
      	* config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Require the operand
      	to be DImode.  When using mffscrn, force the operand to a register.
      
      gcc/testsuite/
      	PR target/87509
      	* gcc.target/powerpc/test_fpscr_drn_builtin.c: Use hard_dfp instead
      	of dfp_hw.  Don't include <altivec.h>.
      	* gcc.target/powerpc/test_fpscr_drn_builtin_error.c: Ditto.  Require
      	lp64.
      	* gcc.target/powerpc/test_fpscr_rn_builtin.c: Don't include <altivec.h>.
      	* gcc.target/powerpc/test_fpscr_rn_builtin_error.c: Ditto.
      	* gcc.target/powerpc/test_mffsl.c: Ditto.
      
      From-SVN: r264863
      Segher Boessenkool committed
    • re PR testsuite/87487 (New test case gfortran.dg/deferred_character_24.f90 in… · 3665f77c
      re PR testsuite/87487 (New test case gfortran.dg/deferred_character_24.f90 in r264721 fails on big endian)
      
      2018-10-05  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/87487
      	* trans-decl.c (gfc_get_symbol_decl): Make sure that deferred
      	character length pointer initializer has the right type to fix
      	problem with deferred_character_24.f90 on big endian.
      
      From-SVN: r264862
      Paul Thomas committed
    • Daily bump. · 1afa270f
      From-SVN: r264860
      GCC Administrator committed
  2. 04 Oct, 2018 22 commits
    • contrib: unused_functions.py: Handle archives · 0448002b
      one can now use verbatim the arguments used by the driver invocation to
      link e.g. cc1.
      
      2018-10-04  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
      
      	* unused_functions.py: Handle archive files.
      
      From-SVN: r264856
      Bernhard Reutner-Fischer committed
    • i386.md (*fop_<X87MODEF:mode>_2_i387): Macroize insn from… · f556d6b5
      i386.md (*fop_<X87MODEF:mode>_2_i387): Macroize insn from *fop_<MODEF:mode>_2_i387 and *fop_xf_2_i387 using X87MODEF...
      
      	* config/i386/i386.md (*fop_<X87MODEF:mode>_2_i387): Macroize insn
      	from *fop_<MODEF:mode>_2_i387 and *fop_xf_2_i387 using
      	X87MODEF mode iterator.
      	(*fop_<X87MODEF:mode>_3_i387): Macroize insn from
      	*fop_<MODEF:mode>_3_i387 and *fop_xf_3_i387 using
      	X87MODEF mode iterator.
      
      From-SVN: r264855
      Uros Bizjak committed
    • invoke.texi (-Wno-prio-ctor-dtor): Document new warning -Wno-prio-ctor-dtor. · 8cff0652
      	* doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning
      	-Wno-prio-ctor-dtor.
      
      	* c-attribs.c (get_priority): Add a warning flag warn_prio_ctor_dtor
      	to generate constructor destructor priority warning.
      	* c.opt (-Wprio-ctor-dtor): New option.
      
      	* c-c++-common/Wprio-ctor-dtor.c: New test.
      
      From-SVN: r264853
      Vinay Kumar committed
    • Report vectorization problems via a new opt_problem class · f4ebbd24
      This is v3 of the patch; previous versions were:
        v2: https://gcc.gnu.org/ml/gcc-patches/2018-07/msg00446.html
        v1: https://gcc.gnu.org/ml/gcc-patches/2018-06/msg01462.html
      
      This patch introduces a class opt_problem, along with wrapper
      classes for bool (opt_result) and for pointers (e.g. opt_loop_vec_info
      for loop_vec_info).
      
      opt_problem instances are created when an optimization problem
      is encountered, but only if dump_enabled_p.  They are manually
      propagated up the callstack, and are manually reported at the
      "top level" of an optimization if dumping is enabled, to give the user
      a concise summary of the problem *after* the failure is reported.
      In particular, the location of the problematic statement is
      captured and emitted, rather than just the loop's location.
      
      For example:
      
      no-vfa-vect-102.c:24:3: missed: couldn't vectorize loop
      no-vfa-vect-102.c:27:7: missed: statement clobbers memory: __asm__ __volatile__("" :  :  : "memory");
      
      Changed in v3:
      * This version bootstraps and passes regression testing (on
        x86_64-pc-linux-gnu).
      * added selftests, to exercise the opt_problem machinery
      * removed the "bool to opt_result" ctor, so that attempts to
        use e.g. return a bool from an opt_result-returning function
        will fail at compile time
      * use formatted printing within opt_problem ctor to replace the
        various dump_printf_loc calls
      * dropped i18n
      * changed the sense of vect_analyze_data_ref_dependence's return
        value (see the ChangeLog)
      * add MSG_PRIORITY_REEMITTED, so that -fopt-info can show the
        messages, without them messing up the counts in scan-tree-dump-times
        in DejaGnu tests
      
      gcc/ChangeLog:
      	* Makefile.in (OBJS): Add opt-problem.o.
      	* dump-context.h: Include "selftest.h.
      	(selftest::temp_dump_context): New forward decl.
      	(class dump_context): Make friend of class
      	selftest::temp_dump_context.
      	(dump_context::dump_loc_immediate): New decl.
      	(class dump_pretty_printer): Move here from dumpfile.c.
      	(class temp_dump_context): Move to namespace selftest.
      	(temp_dump_context::temp_dump_context): Add param
      	"forcibly_enable_dumping".
      	(selftest::verify_dumped_text):
      	(ASSERT_DUMPED_TEXT_EQ): Move here from dumpfile.c.
      	(selftest::verify_item):
      	(ASSERT_IS_TEXT): Move here from dumpfile.c.
      	(ASSERT_IS_TREE): Likewise.
      	(ASSERT_IS_GIMPLE): Likewise.
      	* dumpfile.c (dump_context::dump_loc): Move immediate dumping
      	to...
      	(dump_context::dump_loc_immediate): ...this new function.
      	(class dump_pretty_printer): Move to dump-context.h.
      	(dump_switch_p_1): Don't enable MSG_PRIORITY_REEMITTED.
      	(opt_info_switch_p_1): Enable MSG_PRIORITY_REEMITTED.
      	(temp_dump_context::temp_dump_context): Move to "selftest"
      	namespace.  Add param "forcibly_enable_dumping", and use it to
      	conditionalize the use of m_pp;
      	(selftest::verify_dumped_text): Make non-static.
      	(ASSERT_DUMPED_TEXT_EQ): Move to dump-context.h.
      	(selftest::verify_item): Make non-static.
      	(ASSERT_IS_TEXT): Move to dump-context.h.
      	(ASSERT_IS_TREE): Likewise.
      	(ASSERT_IS_GIMPLE): Likewise.
      	(selftest::test_capture_of_dump_calls): Pass "true" for new
      	param of temp_dump_context.
      	* dumpfile.h (enum dump_flag): Add MSG_PRIORITY_REEMITTED, adding
      	it to MSG_ALL_PRIORITIES.  Update values of TDF_COMPARE_DEBUG and
      	TDF_COMPARE_DEBUG.
      	* opt-problem.cc: New file.
      	* opt-problem.h: New file.
      	* optinfo-emit-json.cc
      	(selftest::test_building_json_from_dump_calls): Pass "true" for
      	new param of temp_dump_context.
      	* optinfo.cc (optinfo_kind_to_dump_flag): New function.
      	(optinfo::emit_for_opt_problem): New function.
      	(optinfo::emit): Clarity which emit_item is used.
      	* optinfo.h (optinfo::get_dump_location): New accessor.
      	(optinfo::emit_for_opt_problem): New decl.
      	(optinfo::emit): Make const.
      	* selftest-run-tests.c (selftest::run_tests): Call
      	selftest::opt_problem_cc_tests.
      	* selftest.h (selftest::opt_problem_cc_tests): New decl.
      	* tree-data-ref.c (dr_analyze_innermost): Convert return type from
      	bool to opt_result, converting fprintf messages to
      	opt_result::failure_at calls.  Add "stmt" param for use by the
      	failure_at calls.
      	(create_data_ref): Pass "stmt" to the dr_analyze_innermost call.
      	(runtime_alias_check_p): Convert return type from bool to
      	opt_result, converting dump_printf calls to
      	opt_result::failure_at, using the statement DDR_A for their
      	location.
      	(find_data_references_in_stmt): Convert return type from bool to
      	opt_result, converting "return false" to opt_result::failure_at
      	with a new message.
      	* tree-data-ref.h: Include "opt-problem.h".
      	(dr_analyze_innermost): Convert return type from bool to opt_result,
      	and add a const gimple * param.
      	(find_data_references_in_stmt): Convert return type from bool to
      	opt_result.
      	(runtime_alias_check_p): Likewise.
      	* tree-predcom.c (find_looparound_phi): Pass "init_stmt" to
      	dr_analyze_innermost.
      	* tree-vect-data-refs.c (vect_mark_for_runtime_alias_test):
      	Convert return type from bool to opt_result, adding a message for
      	the PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS zero case.
      	(vect_analyze_data_ref_dependence): Convert return type from bool
      	to opt_result.  Change sense of return type from "false"
      	effectively meaning "no problems" to "false" meaning a problem,
      	so that "return false" becomes "return opt_result::success".
      	Convert "return true" calls to opt_result::failure_at, using
      	the location of statement A rather than vect_location.
      	(vect_analyze_data_ref_dependences): Convert return type from bool
      	to opt_result.
      	(verify_data_ref_alignment): Likewise, converting dump_printf_loc
      	calls to opt_result::failure_at, using the stmt location rather
      	than vect_location.
      	(vect_verify_datarefs_alignment): Convert return type from bool
      	to opt_result.
      	(vect_enhance_data_refs_alignment): Likewise.  Split local "stat"
      	into multiple more-tightly-scoped copies.
      	(vect_analyze_data_refs_alignment): Convert return type from bool
      	to opt_result.
      	(vect_analyze_data_ref_accesses): Likewise, converting a
      	"return false" to a "return opt_result::failure_at", adding a
      	new message.
      	(vect_prune_runtime_alias_test_list): Convert return type from
      	bool to opt_result, converting dump_printf_loc to
      	opt_result::failure_at.  Add a %G to show the pertinent statement,
      	and use the stmt's location rather than vect_location.
      	(vect_find_stmt_data_reference): Convert return type from
      	bool to opt_result, converting dump_printf_loc to
      	opt_result::failure_at, using stmt's location.
      	(vect_analyze_data_refs):  Convert return type from bool to
      	opt_result.  Convert "return false" to "return
      	opt_result::failure_at", adding messages as needed.
      	* tree-vect-loop.c (vect_determine_vf_for_stmt_1): Convert return
      	type from bool to opt_result.
      	(vect_determine_vf_for_stmt): Likewise.
      	(vect_determine_vectorization_factor): Likewise, converting
      	dump_printf_loc to opt_result::failure_at, using location of phi
      	rather than vect_location.
      	(vect_analyze_loop_form_1): Convert return type from bool to
      	opt_result, converting dump_printf_loc calls, retaining the use of
      	vect_location.
      	(vect_analyze_loop_form): Convert return type from loop_vec_info
      	to opt_loop_vec_info.
      	(vect_analyze_loop_operations): Convert return type from bool to
      	opt_result, converting dump_printf_loc calls, using the location
      	of phi/stmt rather than vect_location where available.  Convert
      	various "return false" to "return opt_result::failure_at" with
      	"unsupported phi" messages.
      	(vect_get_datarefs_in_loop): Convert return type from bool to
      	opt_result.  Add a message for the
      	PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS failure.
      	(vect_analyze_loop_2): Convert return type from bool to
      	opt_result.  Ensure "ok" is set to a opt_result::failure_at before
      	each "goto again;", adding new messages where needed.
      	Add "unsupported grouped {store|load}" messages.
      	(vect_analyze_loop): Convert return type from loop_vec_info to
      	opt_loop_vec_info.
      	* tree-vect-slp.c (vect_analyze_slp): Convert return type from
      	bool to opt_result.
      	* tree-vect-stmts.c (process_use): Likewise, converting
      	dump_printf_loc call and using stmt location, rather than
      	vect_location.
      	(vect_mark_stmts_to_be_vectorized): Likeise.
      	(vect_analyze_stmt): Likewise, adding a %G.
      	(vect_get_vector_types_for_stmt): Convert return type from bool to
      	opt_result, converting dump_printf_loc calls and using stmt
      	location, rather than vect_location.
      	(vect_get_mask_type_for_stmt): Convert return type from tree to
      	opt_tree, converting dump_printf_loc calls and using stmt location.
      	* tree-vectorizer.c: Include "opt-problem.h.
      	(try_vectorize_loop_1): Flag "Analyzing loop at" dump message as
      	MSG_PRIORITY_INTERNALS.  Convert local "loop_vinfo" from
      	loop_vec_info to opt_loop_vec_info.  If if fails, and dumping is
      	enabled, use it to report at the top level "couldn't vectorize
      	loop" followed by the problem.
      	* tree-vectorizer.h (opt_loop_vec_info): New typedef.
      	(vect_mark_stmts_to_be_vectorized): Convert return type from bool
      	to opt_result.
      	(vect_analyze_stmt): Likewise.
      	(vect_get_vector_types_for_stmt): Likewise.
      	(tree vect_get_mask_type_for_stmt): Likewise.
      	(vect_analyze_data_ref_dependences): Likewise.
      	(vect_enhance_data_refs_alignment): Likewise.
      	(vect_analyze_data_refs_alignment): Likewise.
      	(vect_verify_datarefs_alignment): Likewise.
      	(vect_analyze_data_ref_accesses): Likewise.
      	(vect_prune_runtime_alias_test_list): Likewise.
      	(vect_find_stmt_data_reference): Likewise.
      	(vect_analyze_data_refs): Likewise.
      	(vect_analyze_loop): Convert return type from loop_vec_info to
      	opt_loop_vec_info.
      	(vect_analyze_loop_form): Likewise.
      	(vect_analyze_slp): Convert return type from bool to opt_result.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/vect/nodump-vect-opt-info-2.c: New test.
      	* gcc.dg/vect/vect-alias-check-4.c: Add "-fopt-info-vec-all" to
      	dg-additional-options.  Add dg-message and dg-missed directives
      	to verify that -fopt-info messages are written at the correct
      	locations.
      
      From-SVN: r264852
      David Malcolm committed
    • Add -fopt-info-internals · 7db960c5
      This patch introduces a verbosity level to dump messages:
      "user-facing" vs "internals".
      
      By default, messages at the top-level dump scope are "user-facing",
      whereas those that are in nested scopes are implicitly "internals",
      and are filtered out by -fopt-info unless a new "-internals" sub-option
      of "-fopt-info" is supplied (intended purely for use by GCC developers).
      Dumpfiles are unaffected by the change.
      
      Given that the vectorizer is the only subsystem using AUTO_DUMP_SCOPE
      (via DUMP_VECT_SCOPE), this only affects the vectorizer.
      
      Filtering out these implementation-detail messages goes a long way
      towards making -fopt-info-vec-all more accessible to advanced end-users;
      the follow-up patch restores the most pertinent missing details.
      
      gcc/ChangeLog:
      	* doc/invoke.texi (-fopt-info): Document new "internals"
      	sub-option.
      	* dump-context.h (dump_context::apply_dump_filter_p): New decl.
      	* dumpfile.c (dump_options): Update for renaming of MSG_ALL to
      	MSG_ALL_KINDS.
      	(optinfo_verbosity_options): Add "internals".
      	(kind_as_string): Update for renaming of MSG_ALL to MSG_ALL_KINDS.
      	(dump_context::apply_dump_filter_p): New member function.
      	(dump_context::dump_loc): Use apply_dump_filter_p rather than
      	explicitly masking the dump_kind.
      	(dump_context::begin_scope): Increment the scope depth first.  Use
      	apply_dump_filter_p rather than explicitly masking the dump_kind.
      	(dump_context::emit_item): Use apply_dump_filter_p rather than
      	explicitly masking the dump_kind.
      	(dump_dec): Likewise.
      	(dump_hex): Likewise.
      	(dump_switch_p_1): Default to MSG_ALL_PRIORITIES.
      	(opt_info_switch_p_1): Default to MSG_PRIORITY_USER_FACING.
      	(opt_info_switch_p): Update handling of default
      	MSG_OPTIMIZED_LOCATIONS to cope with default of
      	MSG_PRIORITY_USER_FACING.
      	(dump_basic_block): Use apply_dump_filter_p rather than explicitly
      	masking the dump_kind.
      	(selftest::test_capture_of_dump_calls): Update test_dump_context
      	instances to use MSG_ALL_KINDS | MSG_PRIORITY_USER_FACING rather
      	than MSG_ALL.  Generalize scope test to be run at all four
      	combinations of with/without MSG_PRIORITY_USER_FACING and
      	MSG_PRIORITY_INTERNALS, adding examples of explicit priority
      	for each of the two values.
      	* dumpfile.h (enum dump_flag): Add comment about the MSG_* flags.
      	Rename MSG_ALL to MSG_ALL_KINDS.  Add MSG_PRIORITY_USER_FACING,
      	MSG_PRIORITY_INTERNALS, and MSG_ALL_PRIORITIES, updating the
      	values for TDF_COMPARE_DEBUG and TDF_ALL_VALUES.
      	(AUTO_DUMP_SCOPE): Add a note to the comment about the interaction
      	with MSG_PRIORITY_*.
      	* tree-vect-loop-manip.c (vect_loop_versioning): Mark versioning
      	dump messages as MSG_PRIORITY_USER_FACING.
      	* tree-vectorizer.h (DUMP_VECT_SCOPE): Add a note to the comment
      	about the interaction with MSG_PRIORITY_*.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/dump-1.c: Update expected output for test_scopes
      	due to "-internals" not being selected.
      	* gcc.dg/plugin/dump-2.c: New test, based on dump-1.c, with
      	"-internals" added to re-enable the output from test_scopes.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add dump-2.c.
      
      From-SVN: r264851
      David Malcolm committed
    • varasm.c (output_constant): Add new parameter merge_strings. · 5e1b4477
      2018-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * varasm.c (output_constant): Add new parameter merge_strings.
              Make strings properly zero terminated in merge string sections.
              (mergeable_string_section): Don't fail if the last char is non-zero.
              (assemble_variable_contents): Handle merge string sections.
              (assemble_variable): Likewise.
              (assemble_constant_contents): Likewise.
              (output_constant_def_contents): Likewise.
              (output_constructor_array_range,
              output_constructor_regular_field): Adjust call to output_constant.
              (output_object_block): Adjust call to assemble_constant_contents
              and assemble_variable_contents.
      
      testsuie:
      2018-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * gnat.dg/string_merge1.adb: New test.
              * gnat.dg/string_merge2.adb: New test.
              * gcc.dg/merge-all-constants-1.c: Adjust test.
              * gcc.dg/merge-all-constants-2.c: New test.
      
      From-SVN: r264850
      Bernd Edlinger committed
    • Revert "Never reload fixed form constraints memory operand" · a81a0bfa
      This reverts commit r264834.
      
      2018-10-04  Thomas Preud'homme  <thomas.preudhomme@linaro.org>
      
          Revert
          2018-10-04  Thomas Preud'homme  <thomas.preudhomme@linaro.org>
      
          gcc/
          * lra-constraints.c (process_address_1): Bail out for all
          satisfied fixed constraints.
      
      From-SVN: r264849
      Thomas Preud'homme committed
    • List myself as "libgomp (OpenACC)" and "OpenACC" maintainer · 956a7508
      	* MAINTAINERS: List myself as "libgomp (OpenACC)" and "OpenACC"
      	maintainer.
      
      From-SVN: r264848
      Thomas Schwinge committed
    • [PATCH, rs6000] Fix expected error output for test case. · f349e465
      r264355 removed some spelling suggestions including for "bool" as used
      in this test case.
      
      Bootstrapped and tested on powerpc64le-unknown-linux-gnu and
      powerpc64be-unknown-linux-gnu with no regressions.  Is this ok for trunk?
      
      2018-10-04  Bill Seurer  <seurer@linux.vnet.ibm.com>
      
      	PR target/87486
      	* gcc.target/powerpc/undef-bool-2.c: Fix expected error output.
      
      Index: gcc/testsuite/gcc.target/powerpc/undef-bool-2.c
      ===================================================================
      --- gcc/testsuite/gcc.target/powerpc/undef-bool-2.c	(revision 264812)
      +++ gcc/testsuite/gcc.target/powerpc/undef-bool-2.c	(working copy)
      @@ -9,7 +9,7 @@
       
       #include <xmmintrin.h>
       
      -bool foo (int x) /* { dg-error "unknown type name 'bool'; did you mean '_Bool'?" } */
      +bool foo (int x) /* { dg-error "unknown type name 'bool'" } */
       {
         return x == 2;
       }
      
      From-SVN: r264847
      Bill Seurer committed
    • Error about alias attribute with body definition (PR c/87483). · 96c545e5
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR c/87483
      	* cgraphunit.c (process_function_and_variable_attributes):
      	Warn about a function with alias attribute and a body.
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR c/87483
      	* gcc.dg/pr87483.c: New test.
      
      From-SVN: r264846
      Martin Liska committed
    • Redirect call within specific target attribute among MV clones (PR ipa/82625). · b8ce8129
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/82625
      	* multiple_target.c (redirect_to_specific_clone): New function.
      	(ipa_target_clone): Use it.
      	* tree-inline.c: Fix comment.
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/82625
      	* g++.dg/ext/pr82625.C: New test.
      
      From-SVN: r264845
      Martin Liska committed
    • Fix -fopt-info for plugin passes · 5d98e5a6
      Attempts to dump via -fopt-info from a plugin pass fail, due
      to the dfi->alt_state for such passes never being set.
      
      This is because the -fopt-info options were being set up per-pass
      during option-parsing (via gcc::dump_manager::opt_info_enable_passes),
      but this data was not retained or used it for passes created later
      (for plugins and target-specific passes).
      
      This patch fixes the issue by storing the -fopt-info options into
      gcc::dump_manager, refactoring the dfi-setup code out of
      opt_info_enable_passes, and reusing it for such passes, fixing the
      issue.  The patch adds a demo plugin to test that dumping from a
      plugin works.
      
      gcc/ChangeLog:
      	* dumpfile.c (gcc::dump_manager::dump_manager): Initialize new
      	fields.
      	(gcc::dump_manager::~dump_manager): Free m_optinfo_filename.
      	(gcc::dump_manager::register_pass): New member function, adapted
      	from loop body in gcc::pass_manager::register_pass, adding a
      	call to update_dfi_for_opt_info.
      	(gcc::dump_manager::opt_info_enable_passes): Store the
      	-fopt-info options into the new fields.  Move the loop
      	bodies into...
      	(gcc::dump_manager::update_dfi_for_opt_info): ...this new member
      	function.
      	* dumpfile.h (struct opt_pass): New forward decl.
      	(gcc::dump_manager::register_pass): New decl.
      	(gcc::dump_manager::update_dfi_for_opt_info): New decl.
      	(class gcc::dump_manager): Add fields "m_optgroup_flags",
      	"m_optinfo_flags", and "m_optinfo_filename".
      	* passes.c (gcc::pass_manager::register_pass): Move all of the
      	dump-handling code to gcc::dump_manager::register_pass.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/dump-1.c: New test.
      	* gcc.dg/plugin/dump_plugin.c: New test plugin.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.
      
      From-SVN: r264844
      David Malcolm committed
    • Add missing ChangeLog entry for previous commit · c19bc1a0
      From-SVN: r264843
      Peter Bergner committed
    • re PR rtl-optimization/87466 (IRA and LRA spill all pseudos that are live across setjmp calls) · 82957a73
      gcc/
      	PR rtl-optimization/87466
      	* target.def (setjmp_preserves_nonvolatile_regs_p): New target hook.
      	* doc/tm.texi.in (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): New hook.
      	* doc/tm.texi: Regenerate.
      	* ira-lives.c (process_bb_node_lives): Use the new target hook.
      	* lra-lives.c (process_bb_lives): Likewise.
      	* config/rs6000/rs6000.c (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P):
      	Define.
      
      gcc/testsuite/
      	PR rtl-optimization/87466
      	* gcc.target/powerpc/pr87466.c: New test.
      
      From-SVN: r264842
      Peter Bergner committed
    • Remove superfluous assignment in add_params. · ac712e4e
      This fixes the superfluous assignment that Coverity reported in add_params,
      and changes the starting index from 0 to num_params - n in order for it to
      work properly if add_params is called multiple times.
      
      validate_params calls error so it doesn't matter that we don't check the
      results here.  The results is checked in individual parameter updates after
      front-end initialization.
      
      2018-10-04  Tamar Christina  <tamar.christina@arm.com>
      
      	* params.c (add_params): Fix initialization.
      
      From-SVN: r264841
      Tamar Christina committed
    • Fix divergence in indirect profiling (PR gcov-profile/84107). · 3edbcdbe
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84107
      	* tree-profile.c (init_ic_make_global_vars):
      	Remove ic_void_ptr_var and ic_gcov_type_ptr_var.
      	Come up with new ic_tuple* variables.  Emit
      	__gcov_indirect_call{,_topn} variables.
      	(gimple_gen_ic_profiler): Access the variable
      	and emit gimple.
      	(gimple_gen_ic_func_profiler): Access
      	__gcov_indirect_call.callee field.
      	(gimple_init_gcov_profiler): Use ptr_type_node.
      	* value-prof.c (gimple_ic): Use ptr_type_node.
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84107
      	* libgcov-profiler.c (__gcov_indirect_call):
      	Change type to indirect_call_tuple.
      	(struct indirect_call_tuple): New struct.
      	(__gcov_indirect_call_topn_profiler): Change type.
      	(__gcov_indirect_call_profiler_v2): Use the new
      	variables.
      	* libgcov.h (struct indirect_call_tuple): New struct
      	definition.
      
      From-SVN: r264840
      Martin Liska committed
    • [C++ PATCH] String concatenation is a thing · 668f8d45
      https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00248.html
      	* lang-specs.h: Use string contatenation, not line splicing.
      
      From-SVN: r264839
      Nathan Sidwell committed
    • re PR tree-optimization/85787 (malloc_candidate_p fails to detect malloc attribute on nested phis) · 9a471714
      2018-10-04  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR tree-optimization/85787
      	* ipa-pure-const.c (malloc_candidate_p_1): Move most of malloc_candidate_p
      	into this function and add support for detecting multiple phis.
      	(DUMP_AND_RETURN): Move from malloc_candidate_p into top-level macro.
      
      testsuite/
      	* gcc.dg/ipa/propmalloc-4.c: New test.
      
      From-SVN: r264838
      Prathamesh Kulkarni committed
    • contrib: Add unused_functions.py script · 75fcc3eb
      For a set of object-files, determine symbols that are
       - public but should be static
      
      2018-10-04  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
      
      	* unused_functions.py: New file.
      
      From-SVN: r264837
      Bernhard Reutner-Fischer committed
    • cunroll-15.c: Add XFAILs for arm and powerpc. · 289380f1
      2018-10-04  Richard Biener  <rguenther@suse.de>
      
      	* gcc.dg/tree-ssa/cunroll-15.c: Add XFAILs for arm and powerpc.
      
      From-SVN: r264836
      Richard Biener committed
    • Call ultimate_alias_target for node being inlined (PR ipa/87491). · 5e626cd9
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/87491
      	* ipa-inline.c (inline_to_all_callers_1):
      	Call ultimate_alias_target for node being inlined.
      
      From-SVN: r264835
      Martin Liska committed
    • Never reload fixed form constraints memory operand · b4ee6509
      The unconditional reload of address operand for recognized instruction
      in process_address_1 prevent the patch fixing PR85434 from working as
      expected. The code in that patch attempts to control which registers are
      used to make PIC access but the reload performed by process_address_1
      will use generic PIC access. This patch removes the test for the
      instruction to be unrecognized to do the reload, thus always avoiding to
      reload address operand for fixed constraints (such as "X" used in the
      patch).
      
      2018-10-04  Thomas Preud'homme  <thomas.preudhomme@linaro.org>
      
          gcc/
          * lra-constraints.c (process_address_1): Bail out for all
          satisfied fixed constraints.
      
      From-SVN: r264834
      Thomas Preud'homme committed