1. 05 Oct, 2018 22 commits
    • string_merge1.adb: Fix test expectations. · c1ec62f1
      2018-10-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * gnat.dg/string_merge1.adb: Fix test expectations.
              * gnat.dg/string_merge2.adb: Likewise.
      
      From-SVN: r264888
      Bernd Edlinger committed
    • Support string locations for C++ in -Wformat (PR c++/56856) · 0d48e877
      -Wformat in the C++ FE doesn't work as well as it could:
      (a) it doesn't report precise locations within the string literal, and
      (b) it doesn't underline arguments for those arguments !CAN_HAVE_LOCATION_P,
      despite having location wrapper nodes.
      
      For example:
      
        Wformat-ranges.C:32:10: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wformat=]
        32 |   printf("hello %s", 42);
           |          ^~~~~~~~~~
      
      (a) is due to not wiring up the langhook for extracting substring
          locations.
      
          This patch uses the one in c-family; it also fixes string literal
          parsing so that it records string concatenations (needed for
          extracting substring locations from concatenated strings).
      
      (b) is due to the call to maybe_constant_value here:
             fargs[j] = maybe_constant_value (argarray[j]);
          within build_over_call.
      
          The patch fixes this by building a vec of location_t values when
          calling check_function_arguments.
          I attempted to eliminate the maybe_constant_value call here, but
          it's needed by e.g. check_function_sentinel for detecting NULL,
          and that code is in "c-family", so it can't simply call into
          maybe_constant_value (which is in "cp").
      
      With this patch, the output for the above example is improved to:
      
        Wformat-ranges.C:32:18: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wformat=]
        32 |   printf("hello %s", 42);
           |                 ~^   ~~
           |                  |   |
           |                  |   int
           |                  char*
           |                 %d
      
      gcc/cp/ChangeLog:
      	PR c++/56856
      	* call.c (build_over_call): Build a vec of locations of the
      	arguments before the call to maybe_constant_value, and pass to
      	check_function_arguments.
      	* cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
      	c_get_substring_location.
      	* parser.c (cp_parser_string_literal): Capture string
      	concatenation locations.
      
      gcc/ChangeLog:
      	PR c++/56856
      	* input.c (expand_location_to_spelling_point): Add param "aspect"
      	and use rather than hardcoding LOCATION_ASPECT_CARET.
      	(get_substring_ranges_for_loc): Handle the case of a single token
      	within a macro expansion.
      	* input.h (expand_location_to_spelling_point): Add "aspect" param,
      	defaulting to LOCATION_ASPECT_CARET.
      
      gcc/testsuite/ChangeLog:
      	PR c++/56856
      	* g++.dg/ext/builtin4.C: Set expected location for warning to the
      	correct location within the format string.
      	* g++.dg/plugin/plugin.exp (plugin_test_list): Add the plugin and
      	files for testing locations within string literal locations from
      	the C frontend.
      	* g++.dg/warn/Wformat-method.C: New test.
      	* g++.dg/warn/Wformat-pr71863.C: New test.
      	* g++.dg/warn/Wformat-ranges-c++11.C: New test.
      	* g++.dg/warn/Wformat-ranges.C: New test, based on
      	gcc.dg/format/diagnostic-ranges.c.
      	* gcc.dg/plugin/diagnostic-test-string-literals-1.c
      	(test_multitoken_macro): Generalize expected output to work with
      	both C and C++.
      	* gcc.dg/plugin/diagnostic-test-string-literals-2.c
      	(test_stringified_token_1): Likewise.
      	(test_stringified_token_3): Likewise.
      
      From-SVN: r264887
      David Malcolm committed
    • * config/i386/i386.md: Reorder cmpi patterns. · 1f58c814
      From-SVN: r264886
      Uros Bizjak committed
    • i386.md (*cmpxf_cc_i387): Remove pattern. · 874761d2
      	* config/i386/i386.md (*cmpxf_cc_i387): Remove pattern.
      	(*cmp<mode>_cc_i387): Ditto.
      	(*cmpu<mode>_cc_i387): Ditto.
      	(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
      	* config/i386/i386.c (ix86_expand_fp_compare): Remove
      	"scratch" argument.
      	<case IX86_FPCMP_SAHF>: Do not generate pattern with HImode clobber.
      	Emit x86_sahf_1 pattern.
      	(ix86_expand_compare): Update call to ix86_expand_fp_compare.
      	(ix86_expand_carry_flag_compare): Ditto.
      
      From-SVN: r264884
      Uros Bizjak committed
    • 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 18 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