Commit Graph

169615 Commits

Author SHA1 Message Date
Jason Merrill 7ffc7de55b PR c++/55442 - memory-hog with highly recursive constexpr.
This testcase in the PR is extremely recursive, and therefore uses a huge
amount of memory on caching the results of individual calls.  We no longer
need to track all calls to catch infinite recursion, as we have other limits
on maximum depth and operations count.  So let's only cache a few calls at
the top level: 8 seems to be a reasonable compromise.

gcc/c-family/
	* c.opt (fconstexpr-loop-limit): New.
gcc/cp/
	* constexpr.c (push_cx_call_context): Return depth.
	(cxx_eval_call_expression): Don't cache past constexpr_cache_depth.

From-SVN: r272765
2019-06-27 17:29:19 -04:00
Jakub Jelinek 95bb6e7a56 re PR c++/91024 (-Wimplicit-fallthrough is confused by likely/unlikely attributes)
PR c++/91024
	* gimplify.c (collect_fallthrough_labels): Ignore GIMPLE_PREDICT
	statements.

	* g++.dg/warn/Wimplicit-fallthrough-4.C: New test.

From-SVN: r272764
2019-06-27 23:25:56 +02:00
Jakub Jelinek 12213acba9 re PR tree-optimization/91010 (ICE: Segmentation fault (in location_wrapper_p))
PR tree-optimization/91010
	* tree-vect-stmts.c (scan_operand_equal_p): If offset1 == offset2,
	return true.  Otherwise, don't call operand_equal_p if offset1 or
	offset2 is NULL and just return false.

	* g++.dg/vect/simd-10.cc: New test.

From-SVN: r272763
2019-06-27 23:23:09 +02:00
Iain Sandoe 08b219921f [Darwin, PPC] Allow the user to override the use of hard float in kexts.
The default for the kernel is soft-float, however a user writing a kernel
extension might want to make use of hard float.  This change makes
" -mkernel -mhard-float " work as expected.

2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour
	user-specified float mode choice for kernel mode code.

From-SVN: r272760
2019-06-27 19:08:16 +00:00
Iain Sandoe 6986c632a2 [Darwin, PPC] Correct whitespace in specs.
A recent merge dropped whitespace in the endfile specs, which affects
transactional memory cases.

2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the
	spec.

From-SVN: r272759
2019-06-27 19:01:57 +00:00
Iain Sandoe 085efec58f [Darwin, PPC] Do not use longcall for 64b code.
The linker [ld64] that supports 64Bit does not need the JBSR longcall
optimisation, and will not work with the most generic case (where the
symbol is undefined external, but there is no symbl stub).  So switch
the longcall option off.  ld64 will generate branch islands as needed.

2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not
	use longcall for 64b code.

From-SVN: r272758
2019-06-27 18:56:53 +00:00
Steven G. Kargl c2fe65930a re PR fortran/90987 (Wrong error message with variables named "COMMON*")
2019-06-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/90987
	* match.c (gfc_match_common): Adjust parsing of fixed and free form
	source code containing, e.g., COMMONI.

2019-06-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/90987
	* gfortran.dg/common_1.f: new test.
	* gfortran.dg/common_26.f90: Ditto.

From-SVN: r272756
2019-06-27 17:52:00 +00:00
Aaron Sawdey 76715c3216 builtins.c (get_memory_rtx): Fix comment.
2019-06-27  Aaron Sawdey <acsawdey@linux.ibm.com>

	* builtins.c (get_memory_rtx): Fix comment.
	* optabs.def (movmem_optab): Change to cpymem_optab.
	* expr.c (emit_block_move_via_cpymem): Change movmem to cpymem.
	(emit_block_move_hints): Change movmem to cpymem.
	* defaults.h: Change movmem to cpymem.
	* targhooks.c (get_move_ratio): Change movmem to cpymem.
	(default_use_by_pieces_infrastructure_p): Ditto.
	* config/aarch64/aarch64-protos.h: Change movmem to cpymem.
	* config/aarch64/aarch64.c (aarch64_expand_movmem): Change movmem
	to cpymem.
	* config/aarch64/aarch64.h: Change movmem to cpymem.
	* config/aarch64/aarch64.md (movmemdi): Change name to cpymemdi.
	* config/alpha/alpha.h: Change movmem to cpymem in comment.
	* config/alpha/alpha.md (movmemqi, movmemdi, *movmemdi_1): Change
	movmem to cpymem.
	* config/arc/arc-protos.h: Change movmem to cpymem.
	* config/arc/arc.c (arc_expand_movmem): Change movmem to cpymem.
	* config/arc/arc.h: Change movmem to cpymem in comment.
	* config/arc/arc.md (movmemsi): Change movmem to cpymem.
	* config/arm/arm-protos.h: Change movmem to cpymem in names.
	* config/arm/arm.c (arm_movmemqi_unaligned, arm_gen_movmemqi, 
	gen_movmem_ldrd_strd, thumb_expand_movmemqi) Change movmem to cpymem.
	* config/arm/arm.md (movmemqi): Change movmem to cpymem.
	* config/arm/thumb1.md (movmem12b, movmem8b): Change movmem to cpymem.
	* config/avr/avr-protos.h: Change movmem to cpymem.
	* config/avr/avr.c (avr_adjust_insn_length, avr_emit_movmemhi,
	avr_out_movmem): Change movmem to cpymem.
	* config/avr/avr.md (movmemhi, movmem_<mode>, movmemx_<mode>):
	Change movmem to cpymem.
	* config/bfin/bfin-protos.h: Change movmem to cpymem.
	* config/bfin/bfin.c (single_move_for_movmem, bfin_expand_movmem):
	Change movmem to cpymem.
	* config/bfin/bfin.h: Change movmem to cpymem in comment.
	* config/bfin/bfin.md (movmemsi): Change name to cpymemsi.
	* config/c6x/c6x-protos.h: Change movmem to cpymem.
	* config/c6x/c6x.c (c6x_expand_movmem): Change movmem to cpymem.
	* config/c6x/c6x.md (movmemsi): Change name to cpymemsi.
	* config/frv/frv.md (movmemsi): Change name to cpymemsi.
	* config/ft32/ft32.md (movmemsi): Change name to cpymemsi.
	* config/h8300/h8300.md (movmemsi): Change name to cpymemsi.
	* config/i386/i386-expand.c (expand_set_or_movmem_via_loop,
	expand_set_or_movmem_via_rep, expand_movmem_epilogue,
	expand_setmem_epilogue_via_loop, expand_set_or_cpymem_prologue,
	expand_small_cpymem_or_setmem,
	expand_set_or_cpymem_prologue_epilogue_by_misaligned_moves,
	expand_set_or_cpymem_constant_prologue, 
	ix86_expand_set_or_cpymem): Change movmem to cpymem.
	* config/i386/i386-protos.h: Change movmem to cpymem.
	* config/i386/i386.h: Change movmem to cpymem in comment.
	* config/i386/i386.md (movmem<mode>): Change name to cpymem.
	(setmem<mode>): Change expansion function name.
	* config/lm32/lm32.md (movmemsi): Change name to cpymemsi.
	* config/m32c/blkmov.md (movmemhi, movmemhi_bhi_op, movmemhi_bpsi_op,
	movmemhi_whi_op, movmemhi_wpsi_op): Change movmem to cpymem.
	* config/m32c/m32c-protos.h: Change movmem to cpymem.
	* config/m32c/m32c.c (m32c_expand_movmemhi): Change movmem to cpymem.
	* config/m32r/m32r.c (m32r_expand_block_move): Change movmem to cpymem.
	* config/m32r/m32r.md (movmemsi, movmemsi_internal): Change movmem
	to cpymem.
	* config/mcore/mcore.md (movmemsi): Change name to cpymemsi.
	* config/microblaze/microblaze.c: Change movmem to cpymem in comment.
	* config/microblaze/microblaze.md (movmemsi): Change name to cpymemsi.
	* config/mips/mips.c (mips_use_by_pieces_infrastructure_p):
	Change movmem to cpymem.
	* config/mips/mips.h: Change movmem to cpymem.
	* config/mips/mips.md (movmemsi): Change name to cpymemsi.
	* config/nds32/nds32-memory-manipulation.c
	(nds32_expand_movmemsi_loop_unknown_size,
	nds32_expand_movmemsi_loop_known_size, nds32_expand_movmemsi_loop,
	nds32_expand_movmemsi_unroll,
	nds32_expand_movmemsi): Change movmem to cpymem.
	* config/nds32/nds32-multiple.md (movmemsi): Change name to cpymemsi.
	* config/nds32/nds32-protos.h: Change movmem to cpymem.
	* config/pa/pa.c (compute_movmem_length): Change movmem to cpymem.
	(pa_adjust_insn_length): Change call to compute_movmem_length.
	* config/pa/pa.md (movmemsi, movmemsi_prereload, movmemsi_postreload,
	movmemdi, movmemdi_prereload, 
	movmemdi_postreload): Change movmem to cpymem.
	* config/pdp11/pdp11.md (movmemhi, movmemhi1, 
	movmemhi_nocc, UNSPEC_MOVMEM): Change movmem to cpymem.
	* config/riscv/riscv.c: Change movmem to cpymem in comment.
	* config/riscv/riscv.h: Change movmem to cpymem.
	* config/riscv/riscv.md: (movmemsi) Change name to cpymemsi.
	* config/rs6000/rs6000.md: (movmemsi) Change name to cpymemsi.
	* config/rx/rx.md: (UNSPEC_MOVMEM, movmemsi, rx_movmem): Change
	movmem to cpymem.
	* config/s390/s390-protos.h: Change movmem to cpymem.
	* config/s390/s390.c (s390_expand_movmem, s390_expand_setmem,
	s390_expand_insv): Change movmem to cpymem.
	* config/s390/s390.md (movmem<mode>, movmem_short, *movmem_short,
	movmem_long, *movmem_long, *movmem_long_31z): Change movmem to cpymem.
	* config/sh/sh.md (movmemsi): Change name to cpymemsi.
	* config/sparc/sparc.h: Change movmem to cpymem in comment.
	* config/vax/vax-protos.h (vax_output_movmemsi): Remove prototype
	for nonexistent function.
	* config/vax/vax.h: Change movmem to cpymem in comment.
	* config/vax/vax.md (movmemhi, movmemhi1): Change movmem to cpymem.
	* config/visium/visium.h: Change movmem to cpymem in comment.
	* config/visium/visium.md (movmemsi): Change name to cpymemsi.
	* config/xtensa/xtensa.md (movmemsi): Change name to cpymemsi.
	* doc/md.texi: Change movmem to cpymem and update description to match.
	* doc/rtl.texi: Change movmem to cpymem.
	* target.def (use_by_pieces_infrastructure_p): Change movmem to cpymem.
        * doc/tm.texi: Regenerate.

From-SVN: r272755
2019-06-27 09:45:36 -05:00
Bill Schmidt 00e72aa462 rs6000.c (rs6000_option_override_internal): Enable -fvariable-expansion-in-unroller by default.
2019-06-27  Bill Schmidt  <wschmidt@linux.ibm.com>

	* config/rs6000/rs6000.c (rs6000_option_override_internal): Enable
	-fvariable-expansion-in-unroller by default.
	* doc/invoke.texi (-fvariable-expansion-in-unroller): Document new
	default for Power.

From-SVN: r272754
2019-06-27 13:59:20 +00:00
David Edelsohn 2fd634d41d revert: config.gcc (powerpc-ibm-aix*): Define target_gtfiles.
Revert
        2019-06-26  David Edelsohn  <dje.gcc@gmail.com>
        * config.gcc (powerpc-ibm-aix*): Define target_gtfiles.

        * config.gcc(rs6000-*-*): Define target_gtfiles.

From-SVN: r272753
2019-06-27 09:33:45 -04:00
Jan Hubicka 85693eef57 lto-common.c: tree-pretty-print.h
* lto-common.c: tree-pretty-print.h
	(type_streaming_finished): New static var.
	(gimple_register_canonical_type_1): Return updated hash; handle ODR
	types.
	(iterative_hash_canonical_type): Update use of
	gimple_register_canonical_type_1.

From-SVN: r272750
2019-06-27 12:08:12 +00:00
Jan Hubicka a0276c0093 class.c (layout_class_type): Set TYPE_CXX_ODR_P for as-base type copy.
* class.c (layout_class_type): Set TYPE_CXX_ODR_P for as-base
	type copy.

	* ipa-devirt.c (odr_type_d): Add tbaa_enabled flag.
	(add_type_duplicate): When odr hash is not allocated, to nothing.
	(odr_based_tbaa_p): New function.
	(set_type_canonical_for_odr_type): New function.
	* ipa-utils.h (enable_odr_based_tbaa, odr_based_tbaa_p,
	set_type_canonical_for_odr_type): New.
	* tree.c (gimple_canonical_types_compatible_p): ODR types with
	ODR based TBAA are not equivalent to non-ODR types.

	* lto-common.c: Include demangle.h and tree-pretty-print.h
	(type_streaming_finished): New static var.
	(gimple_register_canonical_type_1): Return updated hash; handle ODR
	types.
	(iterative_hash_canonical_type): Update use of
	gimple_register_canonical_type_1.

	* g++.dg/lto/alias-2_0.C: New testcase.
	* g++.dg/lto/alias-2_1.C: New testcase.

From-SVN: r272749
2019-06-27 12:07:43 +00:00
Martin Liska ef874db611 Fix various issues seen with clang-static-analyzer.
2019-06-27  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/90974
	PR rtl-optimization/90975
	PR rtl-optimization/90976
	PR target/91016
	PR tree-optimization/91017
	* config/i386/i386-expand.c (ix86_expand_rounddf_32): Remove
	unused tmp.
	* lra.c (lra_set_insn_recog_data): Remove a leftover from
	initial commit of IRA.
	* optabs.c (expand_twoval_binop): Use xop0 and xop1 instead
	of op0 and op1.
	* tree-vect-loop.c (vect_create_epilog_for_reduction):
	Remove unused mode1.
	* tree-vect-stmts.c (vectorizable_call): Remove dead assignment
	to new_stmt_info.

From-SVN: r272746
2019-06-27 11:22:36 +00:00
Jakub Jelinek d2d604d83e re PR target/90991 (_mm_loadu_ps instrinsic translates to vmovaps in combination with _mm512_insertf32x4)
PR target/90991
	* config/i386/sse.md (avx_vec_concat<mode>): Use nonimmediate_operand
	instead of register_operand for operands[1], add m to its constraints
	if operands[2] uses "C" constraint.  Ensure in condition that if
	operands[2] is not 0, then operands[1] is not a MEM.  For last two
	alternatives, use unaligned loads instead of aligned if operands[1] is
	misaligned_operand.

	* gcc.target/i386/avx2-pr90991-1.c: New test.
	* gcc.target/i386/avx512dq-pr90991-2.c: New test.

From-SVN: r272745
2019-06-27 13:13:10 +02:00
Martin Liska 45309d286c Remove quite obvious dead assignments.
2019-06-27  Martin Liska  <mliska@suse.cz>

	* asan.c (asan_emit_allocas_unpoison): Remove obviously
	dead assignments.
	* bt-load.c (move_btr_def): Likewise.
	* builtins.c (expand_builtin_apply_args_1): Likewise.
	(expand_builtin_apply): Likewise.
	* cfgexpand.c (expand_asm_stmt): Likewise.
	(construct_init_block): Likewise.
	* cfghooks.c (verify_flow_info): Likewise.
	* cfgloopmanip.c (remove_path): Likewise.
	* cfgrtl.c (rtl_verify_bb_layout): Likewise.
	* cgraph.c (cgraph_node::set_pure_flag): Likewise.
	* combine.c (simplify_if_then_else): Likewise.
	* config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
	(choose_basereg): Likewise.
	(ix86_expand_prologue): Likewise.
	(ix86_preferred_output_reload_class): Likewise.
	* cselib.c (cselib_record_sets): Likewise.
	* df-scan.c (df_scan_alloc): Likewise.
	* dojump.c (do_jump_by_parts_greater_rtx): Likewise.
	* early-remat.c (early_remat::record_equiv_candidates): Likewise.
	* emit-rtl.c (try_split): Likewise.
	* graphite-scop-detection.c (assign_parameter_index_in_region): Likewise.
	* ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Likewise.
	* ira-color.c (setup_profitable_hard_regs): Likewise.
	* ira.c (rtx_moveable_p): Likewise.
	* lra-eliminations.c (eliminate_regs_in_insn): Likewise.
	* read-rtl.c (read_subst_mapping): Likewise.
	* regrename.c (scan_rtx): Likewise.
	* reorg.c (fill_slots_from_thread): Likewise.
	* tree-inline.c (tree_function_versioning): Likewise.
	* tree-ssa-reassoc.c (optimize_ops_list): Likewise.
	* tree-ssa-sink.c (statement_sink_location): Likewise.
	* tree-ssa-threadedge.c (thread_across_edge): Likewise.
	* tree-vect-loop.c (vect_get_loop_niters): Likewise.
	(vect_create_epilog_for_reduction): Likewise.
	* tree.c (build_nonstandard_integer_type): Likewise.
2019-06-27  Martin Liska  <mliska@suse.cz>

	* class.c (adjust_clone_args): Remove obviously
	dead assignments.
	(dump_class_hierarchy_r): Likewise.
	* decl.c (check_initializer): Likewise.
	* parser.c (cp_parser_lambda_expression): Likewise.
	* pt.c (unify_bound_ttp_args): Likewise.
	(convert_template_argument): Likewise.
	* rtti.c (build_headof): Likewise.
	* typeck.c (convert_for_initialization): Likewise.
2019-06-27  Martin Liska  <mliska@suse.cz>

	* libgcov-driver-system.c (gcov_exit_open_gcda_file): Remove obviously
	dead assignments.
	* libgcov-util.c: Likewise.

From-SVN: r272744
2019-06-27 10:25:21 +00:00
Jan Beulich 57e088f5ed ix86: pass correct options to compiler for gfni-4 testcase
SSE2 is the required prereq of the builtins; as x86-64 has SSE2 enabled
anyway, the test failure was noticable on 32-bit builds only.

From-SVN: r272743
2019-06-27 10:19:37 +00:00
Richard Biener b38f4c1b76 tree-ssa-sccvn.c (vn_reference_lookup_3): Encode valueized RHS.
2019-06-27  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (vn_reference_lookup_3): Encode valueized RHS.

	* gcc.dg/tree-ssa/ssa-fre-69.c: New testcase.

From-SVN: r272742
2019-06-27 10:11:57 +00:00
Jun Ma 5fd336bbd7 re PR tree-optimization/89772 (memchr for a character not in constant nul-padded string not folded)
PR tree-optimization/89772
	* gimple-fold.c (gimple_fold_builtin_memchr): consider trailing nuls in
	out-of-bound accesses checking.

	gcc/testsuite
	* gcc.dg/builtin-memchr-4.c: New test.

From-SVN: r272740
2019-06-27 09:50:35 +00:00
Jonathan Wakely e11c487111 PR libstdc++/91012 fixfilesystem_error::what() string
When I refactored the filesystem_error code I changed it to only use the
constructor parameter in the what() string, instead of the string
returned by system_error::what(). That meant it no longer included the
description of the error_code that system_error adds. This restores the
previous behaivour, as encouraged by the standard ("Implementations
should include the system_error::what() string and the pathnames of
path1 and path2 in the native format in the returned string").

	PR libstdc++/91012
	* src/c++17/fs_path.cc (filesystem_error::_Impl): Use a string_view
	for the what_arg parameters.
	(filesystem_error::filesystem_error): Pass system_error::what() to
	the _Impl constructor.
	* testsuite/27_io/filesystem/filesystem_error/cons.cc: Ensure that
	filesystem_error::what() contains system_error::what().

From-SVN: r272739
2019-06-27 10:42:39 +01:00
Martin Liska 4c4be718fb Fix ICE when __builtin_calloc has no LHS (PR tree-optimization/91014).
2019-06-27  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/91014
	* tree-ssa-dse.c (initialize_ao_ref_for_dse): Bail out
	when LHS is NULL_TREE.
2019-06-27  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/91014
	* gcc.target/s390/pr91014.c: New test.

From-SVN: r272738
2019-06-27 09:41:34 +00:00
Richard Biener fecd7a1ab4 re PR testsuite/91004 (Excess errors in g++.dg/torture/pr34850.C starting with r272688)
2019-06-27  Richard Biener  <rguenther@suse.de>

	PR testsuite/91004
	* g++.dg/torture/pr34850.C: Fix overly reduced testcase.

From-SVN: r272737
2019-06-27 09:08:02 +00:00
Martin Liska 721bd21026 Fix warnings seen by clang in gcc/symbol-summary.h.
2019-06-27  Martin Liska  <mliska@suse.cz>

	* symbol-summary.h (traverse): Pass
	argument a to the call of callback.
	(gt_ggc_mx): Mark arguments as unused.
	(gt_pch_nx): Likewise.

From-SVN: r272734
2019-06-27 08:21:47 +00:00
Martin Liska c2f7a665a1 Fix misc stuff seen by clang-static-analyzer.
2019-06-27  Martin Liska  <mliska@suse.cz>

	* lto-dump.c (struct symbol_entry): Add default dtor.
	(struct variable_entry): Likewise.
	(struct function_entry): Likewise.
	(dump_list_functions): Release memory.
	(dump_list_variables): Likewise.
2019-06-27  Martin Liska  <mliska@suse.cz>

	* libgcov-util.c (gcov_profile_merge): Release allocated
	memory.
	(calculate_overlap): Likewise.

From-SVN: r272733
2019-06-27 08:21:32 +00:00
Kewen Lin b5b31291bd One line change onto r272731
PR target/62147
    * gcc/loop-iv.c (find_simple_exit)

-  if (single_exit (loop) && finite_loop_p (loop))
+  if (desc->infinite && single_exit (loop) && finite_loop_p (loop))

From-SVN: r272732
2019-06-27 05:33:15 +00:00
Kewen Lin ce3ad45c3c Call finite_loop_p in RTL to get better finiteness information.
gcc/ChangeLog

2019-06-27  Kewen Lin  <linkw@gcc.gnu.org>

    PR target/62147
    * gcc/loop-iv.c (find_simple_exit): Call finite_loop_p to update finiteness.

gcc/testsuite/ChangeLog

2019-06-27  Kewen Lin  <linkw@gcc.gnu.org>

    PR target/62147
    * gcc.target/powerpc/pr62147.c: New test.

From-SVN: r272731
2019-06-27 05:24:00 +00:00
Jeff Law 08c1638dab re PR tree-optimization/90883 (Generated code is worse if returned struct is unnamed)
PR tree-optimization/90883
	* tree-ssa-dse.c (delete_dead_or_redundant_call): Fix signature.
	(delete_dead_or_redundant_assignment): Likewise.

From-SVN: r272726
2019-06-26 20:42:30 -06:00
Jeff Law a9f054a56f re PR tree-optimization/90883 (Generated code is worse if returned struct is unnamed)
PR tree-optimization/90883
	* tree-ssa-dse.c (delete_dead_or_redundant_call): Fix signature.
	(delete_dead_or_redundant_assignment): Likewise.

From-SVN: r272725
2019-06-26 20:41:27 -06:00
GCC Administrator 0e444c0441 Daily bump.
From-SVN: r272723
2019-06-27 00:16:22 +00:00
Jonathan Wakely 22ff8929d7 Define std::chars_format enumeration type
This type isn't used anywhere yet, but will be needed for the
floating-point overloads of to_chars and from_chars.

	* include/std/charconv (chars_format): Define bitmask type.
	* testsuite/20_util/to_chars/chars_format.cc: New test.

From-SVN: r272718
2019-06-26 23:54:38 +01:00
Jeff Law 3fe0ddc883 re PR tree-optimization/90883 (Generated code is worse if returned struct is unnamed)
PR tree-optimization/90883
	* tree-ssa-alias.c (stmt_kills_ref_p): Handle BUILT_IN_CALLOC.
	* tree-ssa-dse.c: Update various comments to distinguish between
	dead and redundant stores.
	(initialize_ao_ref_for_dse): Handle BUILT_IN_CALLOC.
	(dse_optimize_redundant_stores): New function.
	(delete_dead_or_redundant_call): Renamed from delete_dead_call.
	Distinguish between dead and redundant calls in dump output.  All
	callers updated.
	(delete_dead_or_redundant_assignment): Similarly for assignments.
	(dse_optimize_stmt): Handle _CHK variants.  For statements which
	store 0 into multiple memory locations, try to prove a subsequent
	store is redundant.

        PR tree-optimization/90883
	* g++.dg/tree-ssa/pr90883.C: New test.
	* gcc.dg/tree-ssa/ssa-dse-36.c: New test.

From-SVN: r272717
2019-06-26 15:36:27 -06:00
Uros Bizjak 9f962469ca re PR target/89021 (Implement mmintrin.h in SSE)
PR target/89021
	* config/i386/i386.c (ix86_autovectorize_vector_sizes):
	Autovectorize 8-byte vectors for TARGET_MMX_WITH_SSE.

testsuite/ChangeLog:

	PR target/89021
	* lib/target-supports.exp (available_vector_sizes)
	<[istarget i?86-*-*] || [istarget x86_64-*-*]>: Add
	64-bit vectors for !ia32.

From-SVN: r272711
2019-06-26 21:12:27 +02:00
Iain Sandoe 9ff33839fc [PATCH, PPC 2/2] Fix Darwin bootstrap after split of rs6000.c.
To fix this we need to make the branch islands (or code) visible between
both files.  This keeps the generation side in rs6000.c and moves the
output routine to rs6000-logue.c, placing a reference to the islands
vector in rs6000-internal.h.

2019-06-26  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/rs6000-internal.h (branch_island): New typedef.
	(branch_islands): New extern.
	* config/rs6000/rs6000-logue.c (macho_branch_islands): Moved from
	* config/rs6000/rs6000.c: .. here.

From-SVN: r272710
2019-06-26 19:04:50 +00:00
Iain Sandoe 6b011221fd [PATCH, PPC 1/2] Make sure the gt- files are built for all sub-targets.
The new gt-rs6000-logue.h is common to all sub-targets in the port, so
it needs to be added for them.

It seems better to place the common target_gtfiles in the powerpc*-*-*
section, rather than duplicating them in sub-targets.  This would make it
less likely that a sub-target would be overlooked in any future file
introductions.

2019-06-26  Iain Sandoe  <iain@sandoe.co.uk>

	* config.gcc (powerpc*-*-linux*): Move target_gtfiles from here..
	(powerpc*-*-*) ... to here.

From-SVN: r272708
2019-06-26 19:00:16 +00:00
Jeff Law 4a61cf9c62 tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of memcpy, memmove and memset builtins.
* tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of
	memcpy, memmove and memset builtins.
	(maybe_trim_memstar_call): Likewise.

	* gcc.c-torture/execute/builtins/builtins.exp: Add -fno-tree-dse
	as DSE compromises several of these tests.
	* gcc.dg/builtin-stringop-chk-1.c: Similarly.
	* gcc.dg/memcpy-2.c: Similarly.
	* gcc.dg/pr40340-1.c: Similarly.
	* gcc.dg/pr40340-2.c: Similarly.
	* gcc.dg/pr40340-5.c: Similarly.

From-SVN: r272704
2019-06-26 12:00:00 -06:00
Steven G. Kargl f363fc5b49 ChangeLog: Document revision 272698
2016-06-26  Steven G. Kargl  <kargl@gcc.gnu.org>

	* ChangeLog: Document revision 272698

2016-06-26  Steven G. Kargl  <kargl@gcc.gnu.org>
   
        * testsuite/ChangeLog: Document revision 272698

From-SVN: r272699
2019-06-26 16:16:58 +00:00
Jonathan Wakely 47f7905440 Add new helper traits for signed/unsigned integer types
Reuse the __is_one_of alias in additional places, and define traits to
check for signed/unsigned integer types so we don't have to duplicate
those checks elsewhere.

The additional overloads for std::byte in <bit> were reviewed by LEWG
and considered undesirable, so this patch removes them.

	* include/bits/fs_path.h (path::__is_encoded_char): Use __is_one_of.
	* include/std/bit (_If_is_unsigned_integer_type): Remove.
	(_If_is_unsigned_integer): Use __is_unsigned_integer.
	(rotl(byte, unsigned), rotr(byte, unsigned), countl_zero(byte))
	(countl_one(byte), countr_zero(byte), countr_one(byte))
	(popcount(byte), ispow2(byte), ceil2(byte), floor2(byte))
	(log2p1(byte)): Remove.
	* include/std/charconv (__detail::__is_one_of): Move to <type_traits>.
	(__detail::__is_int_to_chars_type): Remove.
	(__detail::__integer_to_chars_result_type): Use __is_signed_integer
	and __is_unsigned_integer.
	* include/std/type_traits (__is_one_of): Move here from <charconv>.
	(__is_signed_integer, __is_unsigned_integer): New helpers.
	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Remove test for
	std::byte overload.
	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countl_one.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.rot/rotl.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.rot/rotr.cc: Likewise.

From-SVN: r272695
2019-06-26 15:38:23 +01:00
David Edelsohn 7cbb1b721e * config/rs6000/rs6000-logue.c: Add #ifndef TARGET_PROFILE_KERNEL.
From-SVN: r272694
2019-06-26 09:46:01 -04:00
David Edelsohn 8f40e1b249 * config.gcc (powerpc-ibm-aix*): Define target_gtfiles.
From-SVN: r272693
2019-06-26 09:36:23 -04:00
Nathan Sidwell 66d7749bce [PR preprocessor/90927] Fixe dependency output
https://gcc.gnu.org/ml/gcc-patches/2019-06/msg01664.html
	libcpp/
	PR preprocessor/90927
	* mkdeps.c (mkdeps::vec::operator[]): Add non-const variant.
	(deps_add_target): Deal with out of order unquoted targets.

	gcc/testsuite/
	* c-c++-common/pr90927.c: New.

From-SVN: r272692
2019-06-26 12:58:39 +00:00
Segher Boessenkool 93a090cf2a rs6000: Fix rs6000_keep_leaf_when_profiled
This function is called from elsewhere, so shouldn't be static.


	* config/rs6000/rs6000-internal.h (rs6000_keep_leaf_when_profiled): New
	declaration.
	* config/rs6000/rs6000-logue.c (rs6000_keep_leaf_when_profiled): Remove
	"static".
	* config/rs6000/rs6000.c (rs6000_keep_leaf_when_profiled): Delete
	declaration.

---
 gcc/config/rs6000/rs6000-internal.h | 1 +
 gcc/config/rs6000/rs6000-logue.c    | 4 ++--
 gcc/config/rs6000/rs6000.c          | 1 -
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-internal.h b/gcc/config/rs6000/rs6000-internal.h
index a1acb66..22ebd37 100644
--- a/gcc/config/rs6000/rs6000-internal.h
+++ b/gcc/config/rs6000/rs6000-internal.h
@@ -99,6 +99,7 @@ extern bool save_reg_p (int reg);
 extern const char * rs6000_machine_from_flags (void);
 extern void emit_asm_machine (void);
 extern bool rs6000_global_entry_point_prologue_needed_p (void);
+extern bool rs6000_keep_leaf_when_profiled (void);
 
 /* Return true if the OFFSET is valid for the quad address instructions that
    use d-form (register + offset) addressing.  */
diff --git a/gcc/config/rs6000/rs6000-logue.c b/gcc/config/rs6000/rs6000-logue.c
index 9df4b5a..adc137b 100644
--- a/gcc/config/rs6000/rs6000-logue.c
+++ b/gcc/config/rs6000/rs6000-logue.c
@@ -4025,8 +4025,8 @@ rs6000_output_function_prologue (FILE *file)
 
 /* -mprofile-kernel code calls mcount before the function prolog,
    so a profiled leaf function should stay a leaf function.  */
-static bool
-rs6000_keep_leaf_when_profiled ()
+bool
+rs6000_keep_leaf_when_profiled (void)
 {
   return TARGET_PROFILE_KERNEL;
 }
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 3fc4029..bcfc881 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -1338,7 +1338,6 @@ static bool rs6000_secondary_reload_move (enum rs6000_reg_type,
 					  secondary_reload_info *,
 					  bool);
 rtl_opt_pass *make_pass_analyze_swaps (gcc::context*);
-static bool rs6000_keep_leaf_when_profiled () __attribute__ ((unused));
 static tree rs6000_fold_builtin (tree, int, tree *, bool);
 
 /* Hash table stuff for keeping track of TOC entries.  */
-- 
1.8.3.1

From-SVN: r272691
2019-06-26 14:16:40 +02:00
Segher Boessenkool e2e8d27426 rs6000: Remove duplicated code
A large portion of the code moved from rs6000.c (to rs6000-logue.c)
was accidentally retained.  This fixes it.


	* rs6000.c: Fix previous commit, it missed some changes.

From-SVN: r272690
2019-06-26 14:14:37 +02:00
Richard Biener baf8d2ecd7 re PR middle-end/90982 (ICE in make_decl_rtl, at varasm.c:1344)
2019-06-26  Richard Biener  <rguenther@suse.de>

	PR ipa/90982
	* tree-inline.c (remap_ssa_name): Copy SSA range info.

	* g++.dg/torture/pr90982.C: New testcase.

From-SVN: r272688
2019-06-26 11:16:56 +00:00
Richard Biener 6ab601efaa lto-streamer.h (lto_bitmap_alloc): Remove.
2019-06-26  Richard Biener  <rguenther@suse.de>

	* lto-streamer.h (lto_bitmap_alloc): Remove.
	(lto_bitmap_free): Likewise.
	* lto-streamer.c (lto_bitmap_alloc): Remove.
	(lto_bitmap_free): Likewise.
	(lto_obstack): Likewise.
	(lto_obstack_initialized): Likewise.
	* lto-streamer-out.c (lto_output): Use own obstack for local
	bitmap, free it consistently.

From-SVN: r272687
2019-06-26 11:09:51 +00:00
Rainer Orth 7cfb726052 Fix sanitizer_common/sanitizer_posix_libcdep.cc compilation on Solaris 11.5
* sanitizer_common/sanitizer_posix_libcdep.cc: Cherry-pick
	compiler-rt revision 363778.

From-SVN: r272685
2019-06-26 10:43:08 +00:00
Paolo Carlini 2bca2d6a72 re PR c++/67184 (Missed optimization with C++11 final specifier)
2019-06-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/67184
	PR c++/69445
	* g++.dg/other/final3.C: New.
	* g++.dg/other/final5.C: Likewise.

From-SVN: r272675
2019-06-26 08:51:50 +00:00
Jakub Jelinek d55c1ffd49 re PR target/90991 (_mm_loadu_ps instrinsic translates to vmovaps in combination with _mm512_insertf32x4)
PR target/90991
	* config/i386/sse.md
	(*<extract_type>_vinsert<shuffletype><extract_suf>_0): Use vmovupd,
	vmovups, vmovdqu, vmovdqu32 or vmovdqu64 instead of the aligned
	insns if operands[2] is misaligned_operand.

	* gcc.target/i386/avx512dq-pr90991-1.c: New test.

From-SVN: r272674
2019-06-26 10:26:18 +02:00
Li Jia He fdfbed383e [RS6000] Change maddld match_operand from DI to GPR
From PowerPC ISA3.0, the description of `maddld RT, RA.RB, RC` is as follows:
64-bit RA and RB are multiplied and then the RC is signed extend to 128 bits,
and add them together.

We only apply it to 64-bit mode (DI) when implementing maddld.  However, if we
can guarantee that the result of the maddld operation will be limited to 32-bit
mode (SI), we can still apply it to 32-bit mode (SI).

gcc/ChangeLog
2019-06-26  Li Jia He  <helijia@linux.ibm.com>

	* config/rs6000/rs6000.h (TARGET_MADDLD): Remove the restriction of
	TARGET_POWERPC64.
	* config/rs6000/rs6000.md (maddld): Change maddld match_operand from DI
	to GPR.

gcc/testsuite/ChangeLog
2019-06-26  Li Jia He  <helijia@linux.ibm.com>

	* gcc.target/powerpc/maddld-1.c: New testcase.

From-SVN: r272673
2019-06-26 08:23:06 +00:00
Segher Boessenkool de80936dbf doc: Fix opindex for -W options
@opindex -Wxxx is wrong; it should be @opindex Wxxx.


	* doc/invoke.texi (Warning Options): Fix some @opindex syntax.

From-SVN: r272672
2019-06-26 09:43:52 +02:00
Martin Liska 44ead50eb6 Fix one another thinko in tree-vect-loop.c (PR tree-optimization/90973).
2019-06-26  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/90973
	* tree-vect-loop.c (vect_get_known_peeling_cost): Use
	epilogue_cost_vec instead of prologue_cost_vec for
	a epilogue cost.

From-SVN: r272671
2019-06-26 06:44:58 +00:00
Martin Liska 02e18a0e8a Fix missing else keyword seen with clang-static-analyzer:
2019-06-26  Martin Liska  <mliska@suse.cz>

	* bb-reorder.c (connect_better_edge_p): Add missing else
	statement in the middle of if-else statements.

/home/marxin/Programming/gcc/gcc/bb-reorder.c:1031:2: warning: Value stored to 'is_better_edge' is never read
        is_better_edge = true;
        ^                ~~~~
/home/marxin/Programming/gcc/gcc/bb-reorder.c:1034:2: warning: Value stored to 'is_better_edge' is never read
        is_better_edge = false;
        ^                ~~~~~

From-SVN: r272670
2019-06-26 06:44:28 +00:00