Commit Graph

164234 Commits

Author SHA1 Message Date
GCC Administrator
fb6f9bbc75 Daily bump.
From-SVN: r264896
2018-10-06 00:17:07 +00:00
Andrew Waterman
1fcbfb00fc RISC-V: Fix -fsignaling-nans for glibc testsuite.
gcc/
	* config/riscv/riscv.md (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4):
	Add define_expand.  Add ! HONOR_SNANS check to current pattern.  Add
	new pattern using HONOR_SNANS that emits one extra instruction.

Co-Authored-By: Jim Wilson <jimw@sifive.com>

From-SVN: r264892
2018-10-05 13:18:21 -07:00
Segher Boessenkool
a3a81f2922 rs6000: Some mfcr pattern simplification
* config/rs6000/rs6000.md (unnamed mfcr scc_comparison_operator
	patterns): Merge SI and DI patterns to a GPR pattern.
	(unnamed define_insn and define_split for record form of that): Merge
	to a single define_insn_and_split pattern.

From-SVN: r264889
2018-10-05 21:40:36 +02:00
Bernd Edlinger
c1ec62f1fb string_merge1.adb: Fix test expectations.
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
2018-10-05 19:19:42 +00:00
David Malcolm
0d48e8779c Support string locations for C++ in -Wformat (PR c++/56856)
-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
2018-10-05 19:02:17 +00:00
Uros Bizjak
1f58c814c0 * config/i386/i386.md: Reorder cmpi patterns.
From-SVN: r264886
2018-10-05 20:59:04 +02:00
Uros Bizjak
874761d228 i386.md (*cmpxf_cc_i387): Remove pattern.
* 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
2018-10-05 20:48:56 +02:00
Paul Koning
7717110a42 Add some pdp11 target hook definitions for C++
* 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
2018-10-05 14:08:34 -04:00
Ian Lance Taylor
7fc9c2e52f libgo: use inline assembly in favor of call to _xgetbv()
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
2018-10-05 17:51:57 +00:00
Paul Koning
d5a9895595 Remove -mfloat32, -mfloat64 switches from pdp11 target.
* 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
2018-10-05 13:37:56 -04:00
David Malcolm
9a85d982cc testsuite: multiline.exp: implement optional target/xfail selector
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
2018-10-05 17:35:55 +00:00
Uros Bizjak
08993ffb52 i386.md (*cmpxf_i387): Change operand 2 predicate to reg_or_0_operand.
* 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
2018-10-05 19:07:17 +02:00
Uros Bizjak
808d8de5a2 constraints.md ("C"): Do not depend on TARGET_SSE.
* 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
2018-10-05 18:45:52 +02:00
Martin Sebor
f343165275 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
2018-10-05 10:43:11 -06:00
François Dumont
e0b9bc230a 2018-10-05 François Dumont <fdumont@gcc.gnu.org>
* 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
2018-10-05 16:01:39 +00:00
Steve Ellcey
825e64583e re PR tree-optimization/71625 (missing strlen optimization on different array initialization style)
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
2018-10-05 15:26:40 +00:00
Ian Lance Taylor
cbba2e1e47 runtime: remove checkgoarm function
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
2018-10-05 14:21:01 +00:00
Ian Lance Taylor
a2a86641b7 re PR libbacktrace/87529 (libbacktrace API forces users to have memory leaks)
PR libbacktrace/87529
	* backtrace.h: Document that backtrace_create_state should be
	called only once.

From-SVN: r264871
2018-10-05 14:09:07 +00:00
Richard Biener
f48bd5e43a re PR middle-end/63155 (memory hog)
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
2018-10-05 12:54:51 +00:00
Richard Biener
700adeb6fd tree-core.h (tree_block::abstract_flag): Remove.
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
2018-10-05 11:46:12 +00:00
Richard Biener
3f41c986d2 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
2018-10-05 11:40:50 +00:00
H.J. Lu
ae36de9153 i386: Don't pass -msse2avx to assembler for -mavx
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
2018-10-05 04:29:44 -07:00
Segher Boessenkool
49022a8b83 rs6000: Various fixes for the new fpscr builtins (PR87509)
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
2018-10-05 12:52:33 +02:00
Paul Thomas
3665f77c7f 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
2018-10-05 07:01:57 +00:00
GCC Administrator
1afa270f17 Daily bump.
From-SVN: r264860
2018-10-05 00:16:34 +00:00
Bernhard Reutner-Fischer
0448002b17 contrib: unused_functions.py: Handle archives
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
2018-10-05 00:28:18 +02:00
Uros Bizjak
f556d6b5d1 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
2018-10-04 21:52:44 +02:00
Vinay Kumar
8cff06522f invoke.texi (-Wno-prio-ctor-dtor): Document new warning -Wno-prio-ctor-dtor.
* 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
2018-10-04 12:23:25 -06:00
David Malcolm
f4ebbd243f Report vectorization problems via a new opt_problem class
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
2018-10-04 17:50:52 +00:00
David Malcolm
7db960c5b6 Add -fopt-info-internals
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
2018-10-04 17:41:08 +00:00
Bernd Edlinger
5e1b4477fa varasm.c (output_constant): Add new parameter merge_strings.
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
2018-10-04 17:34:56 +00:00
Thomas Preud'homme
a81a0bfa4e Revert "Never reload fixed form constraints memory operand"
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
2018-10-04 16:48:50 +00:00
Thomas Schwinge
956a75082c List myself as "libgomp (OpenACC)" and "OpenACC" maintainer
* MAINTAINERS: List myself as "libgomp (OpenACC)" and "OpenACC"
	maintainer.

From-SVN: r264848
2018-10-04 17:50:34 +02:00
Bill Seurer
f349e465b2 [PATCH, rs6000] Fix expected error output for test case.
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
2018-10-04 15:05:32 +00:00
Martin Liska
96c545e5ed Error about alias attribute with body definition (PR c/87483).
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
2018-10-04 14:44:53 +00:00
Martin Liska
b8ce8129a5 Redirect call within specific target attribute among MV clones (PR ipa/82625).
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
2018-10-04 14:36:55 +00:00
David Malcolm
5d98e5a6bc Fix -fopt-info for plugin passes
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
2018-10-04 14:33:47 +00:00
Peter Bergner
c19bc1a083 Add missing ChangeLog entry for previous commit
From-SVN: r264843
2018-10-04 08:38:51 -05:00
Peter Bergner
82957a739c re PR rtl-optimization/87466 (IRA and LRA spill all pseudos that are live across setjmp calls)
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
2018-10-04 08:36:20 -05:00
Tamar Christina
ac712e4eb4 Remove superfluous assignment in add_params.
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
2018-10-04 13:06:59 +00:00
Martin Liska
3edbcdbead Fix divergence in indirect profiling (PR gcov-profile/84107).
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
2018-10-04 12:41:14 +00:00
Nathan Sidwell
668f8d4526 [C++ PATCH] String concatenation is a thing
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00248.html
	* lang-specs.h: Use string contatenation, not line splicing.

From-SVN: r264839
2018-10-04 11:36:15 +00:00
Prathamesh Kulkarni
9a47171492 re PR tree-optimization/85787 (malloc_candidate_p fails to detect malloc attribute on nested phis)
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
2018-10-04 11:06:24 +00:00
Bernhard Reutner-Fischer
75fcc3eb1b contrib: Add unused_functions.py script
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
2018-10-04 10:59:12 +02:00
Richard Biener
289380f1df cunroll-15.c: Add XFAILs for arm and powerpc.
2018-10-04  Richard Biener  <rguenther@suse.de>

	* gcc.dg/tree-ssa/cunroll-15.c: Add XFAILs for arm and powerpc.

From-SVN: r264836
2018-10-04 08:59:12 +00:00
Martin Liska
5e626cd9ff Call ultimate_alias_target for node being inlined (PR ipa/87491).
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
2018-10-04 08:06:52 +00:00
Thomas Preud'homme
b4ee650946 Never reload fixed form constraints memory operand
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
2018-10-04 07:55:02 +00:00
Jeff Law
0863decda9 gimple-ssa-sprintf.c (format_string): Do not hardcode size of target's wchar_t.
* gimple-ssa-sprintf.c (format_string): Do not hardcode size of
        target's wchar_t.
        * tree.c (get_typenode_from_name): Moved from fortran/trans-types.c.
        * tree.h (get_typenode_from_name): Prototype.

        * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c.

From-SVN: r264833
2018-10-03 20:55:10 -06:00
GCC Administrator
74ac60743f Daily bump.
From-SVN: r264831
2018-10-04 00:16:46 +00:00
Uros Bizjak
c7d53a7c9b i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Change operand 2 predicate to nonimmediate_operand.
* config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
	Change operand 2 predicate to nonimmediate_operand.
	(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.

From-SVN: r264827
2018-10-03 23:51:50 +02:00