view gcc/ChangeLog-2018 @ 158:494b0b89df80 default tip

author Shinji KONO <>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
line wrap: on
line source

2018-12-31  Max Filippov  <>

	PR target/86814
	* config/xtensa/xtensa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
	Define to speculation_safe_value_not_needed.

2018-12-31  Martin Liska  <>

	* predict.c (set_even_probabilities): Include also
	unlikely_count in calculation.
	(combine_predictions_for_bb): Consider also HOT and
	COLD labels predictions.
	* predict.def (PRED_HOT_LABEL): Move it just after
	__builtin_expect_with_probability predictor.
	(PRED_COLD_LABEL): Likewise.

2018-12-30  Jan Hubicka  <>

	* x86-tune.def: Enable inter_unit_moves_to_vec for generic.

2018-12-30  Martin Sebor  <>
	    Jeff Law  <>

	* gimple-fold.c (get_range_strlen): Minor logic cleanup.  Add comments
	on code's intent.

	* gimple-fold.c (strlen_range_kind): New enum.
	(get_range_strlen): Update signature to use strlen_range_kind
	instead of type+fuzzy.
	(get_range_strlen_tree): Update signature to use
	strlen_range_kind instead of type+fuzzy.  Pass rkind down to
	get_range_strlen.  Check the rkind enum value instead of
	(get_range_strlen): Similarly.
	(get_maxval_strlen): Update signature to make NONSTR argument have
	a default value and make static.  Add asserts to ensure sanity of
	arguments.  Update calls to get_range_strlen.
	(gimple_fold_builtin_strcpy): Update calls to get_maxval_strlen.
	(gimple_fold_builtin_strcat, gimple_fold_builtin_fputs): Similarly.
	(gimple_fold_builtin_memory_chk): Similarly.
	(gimple_fold_builtin_stxcpy_chk): Similarly.
	(gimple_fold_builtin_snprintf_chk): Similarly.
	(gimple_fold_builtin_sprintf, gimple_fold_builtin_snprintf): Similarly.
	* gimple-fold.h (get_maxval_strlen): Delete prototype.

2018-12-29  Jozef Lawrynowicz  <>

	* config/msp430/msp430.c (msp430_attr): Warn when the critical and
	interrupt function attributes are used together.
	* gcc/doc/extend.texi: Update documentation on the critical attribute.

2018-12-29  John David Anglin  <>

	* config.gcc (hppa*64*-*-linux*): Add pa/t-pa to tmake_file.  Define
	(hppa*-*-openbsd*): Likewise.
	(hppa[12]*-*-hpux10*): Likewise.
	(hppa*64*-*-hpux11*): Likewise.
	(hppa[12]*-*-hpux11*): Likewise.

2018-12-29  Jakub Jelinek  <>

	PR ipa/88586
	* omp-low.c (lower_omp_task_reductions): Set DECL_CONTEXT on field
	and ifield.  Update TYPE_ALIGN from alignment of field, ifield or

2018-12-28  Uros Bizjak  <>

	* config/i386/i386.h (ADDITIONAL_REGISTER_NAMES): Add
	sil, dil, bpl and spl aliases.

2018-12-28  Martin Sebor  <>

	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Avoid
	undesirable warning.

2018-12-28  Thomas Schwinge  <>

	* omp-expand.c (expand_omp_target): Restructure OpenACC vs. OpenMP
	code paths.  Update for libgomp OpenACC entry points change.

2018-12-28  Thomas Schwinge  <>
	    Julian Brown  <>

	* gimplify.c (gimplify_scan_omp_clauses): Fix known_eq typo/bug.

2018-12-27  Jan Hubicka  <>

	* ipa-devirt.c (polymorphic_call_target_d): Add n_odr_types.
	(polymorphic_call_target_hasher::hash): Hash it.
	(polymorphic_call_target_hasher::equal): Compare it.
	(possible_polymorphic_call_targets): Set it.
	* tree.c (free_lang_data): Rebuild type inheritance graph even on
	non-LTO path.

2018-12-27  Martin Liska  <>

	PR gcov-profile/88225
	* gcov.c(source_info::get_functions_at_location):
	Use newly added line_to_function_map.
	(source_info::add_function): New.
	(output_json_intermediate_file): Use a pointer return
	type for get_functions_at_location.
	(process_all_functions): Use add_function instead
	of direct push to a s->functions container.
	(release_structures): Release ident_to_fn.
	(read_graph_file): Register function into ident_to_fn.
	(read_count_file): Use the map.
	(output_lines): Handle pointer return type of

2018-12-27  Martin Liska  <>

	* builtins.c (expand_movstr): Compare with RETURN_BEGIN.
	* expr.c (move_by_pieces): Likewise.
	(store_by_pieces): Likewise.
	(store_expr): Fix GNU coding style.

2018-12-26  Andrew Pinski  <>

	* config/aarch64/aarch64-cores.def (octeontx): New.
	(octeontx81): Likewise.
	(octeontx83): Likewise.
	* config/aarch64/ Regenerate.
	* doc/invoke.texi (AArch64 Options) [mtune]: Add octeontx, octeontx81
	and octeontx83.

2018-12-24  Martin Sebor  <>

	* gimple-fold.c (get_range_strlen_tree): Factored out of
	get_range_strlen.  Minor comment updates/additions.  Assert
	argument is not a simple SSA_NAME.
	(get_range_strlen): Call get_range_strlen_tree as appropriate.
	Minor comment updates/additions.

2018-12-24  Jan Hubicka  <>

	* ipa-devirt.c (dump_targets): Cap number of targets printed.
	(dump_possible_polymorphic_call_targets): Add verbose parameter.
	(ipa_devirt): Use it.
	* ipa-utils.h (dump_possible_polymorphic_call_targets): Add verbose

2018-12-24  Jan Hubicka  <>

	PR lto/88140
	* tree.c (fld_simplified_type): Temporarily disable array

2018-12-24  Jan Hubicka  <>

	* lto-symtab.c (lto_symtab_merge_decls_2): Do not report ODR violations
	for method whose basetype was already reported.
	* ipa-devirt.c (odr_type_violation_reported_p): New.
	* ipa-utils.h (odr_type_violation_reported_p): Declare.

2018-12-24  Iain Sandoe  <>

	* (dwarf2_debug_line): Check for the debug_line
	section using otool when there’s no objdump available.
	* configure: Regenerate.

2018-12-24  Jan Hubicka  <>

	* ipa-utils.c (ipa_merge_profiles): Fix updating of fnsummary;
	also handle rescaling of mismatched profiles.
	* ipa-fnsummary.c (analyze_function): Handle speculative edges.

2018-12-23  Martin Sebor  <>
	    Jeff Law  <>

	* builtins.h (c_strlen_data): Add new fields and comments.
	* builtins.c (unterminated_array): Change field reference from
	"len" to "minlen" in c_strlen_data instance.
	* gimple-fold.c (get_range_strlen): Likewise.
	* gimple-ssa-sprintf.c (get_string_length): Likewise.

	* builtins.c (unterminated_array): Rename "data" to "lendata".  Fix
	a few comments.
	(expand_builtin_strnlen, expand_builtin_stpcpy_1): Likewise.
	(fold_builtin_strlen): Likewise.
	* gimple-fold.c (get_range_strlen): Likewise.  Also rename a couple
	instances of "type" to "optype" and "arg" to "fld".

	* builtins.c (unterminated_array): Use empty brace initialization
	for c_strlen_data.
	(c_strlen, expand_builtin_strnlen): Likewise.
	(expand_builtin_stpcpy_1, fold_builtin_strlen): Likewise.
	* gimple-fold.c (get_range_strlen): Likewise.
	(gimple_fold_builtin_stpcpy): Likewise.
	* gimple-ssa-sprintf.c (get_string_length): Likewise.

2018-12-23  Alan Modra  <>

	PR 88346
	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Correct %e message.  Handle
	-mcpu=rs64, not -mcpu=rs64a.  Handle -mcpu=powerpc64 and -mcpu=titan.
	* config/rs6000/driver-rs6000.c (asm_names): Similarly.
	* config/rs6000/aix71.h (ASM_CPU_SPEC): Delete %e message.  Handle
	-mcpu=rs64, not -mcpu=rs64a.
	* config/rs6000/aix72.h (ASM_CPU_SPEC): Likewise.

2018-12-23  Iain Sandoe  <>

	* lto-wrapper.c (tool_cleanup): Don’t report ficticious temp files.
	(debug_objcopy): Improve temp filenames.  Append the early
	debug objects to the outfiles.  Remove the phase prelinking the
	early debug. Emit the early debug filenames for ld.

2018-12-23  Iain Sandoe  <>

	* config/i386/darwin.h (TARGET_ASM_OUTPUT_IDENT): New.

2018-12-23  Iain Sandoe  <>

	* collect2.c (maybe_run_lto_and_relink): Don’t say we have a temp file
	unless we actually did some LTO.
	(has_lto_section, is_lto_object_file): New.
	(maybe_lto_object_file): Remove.
	(scan_prog_file): Use is_lto_object_file() instead of scanning the
	output of nm.

2018-12-23  Iain Sandoe  <>

	* collect2.c (main): Parse the output file early so we can make nicer
	temp names.  Respond to “-save-temps” in the GCC OPTIONS.
	(maybe_unlink): Don’t print “[Leaving…”] for files we never created
	and don’t exist.

2018-12-23  Iain Sandoe  <>

	* collect2.c (main): Combine flags from both the command line and
	COLLECT_GCC_OPTIONS to determine the set in force

2018-12-21  Jan Hubicka  <>

	* ipa-utils.c (ipa_merge_profiles): Recompute summaries.

2018-12-21  Jakub Jelinek  <>

	PR middle-end/85594
	PR middle-end/88553
	* omp-expand.c (extract_omp_for_update_vars): Regimplify the condition
	if needed.
	(expand_omp_for_generic): Don't clobber t temporary for ordered loops.

2018-12-15  Jan Hubicka  <>

	PR ipa/88561
	* ipa-polymorphic-call.c
	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Handle
	arguments of thunks correctly.
	(ipa_polymorphic_call_context::get_dynamic_context): Be ready for
	NULL instance pinter.
	* lto-cgraph.c (lto_output_node): Always stream thunk info.

2018-12-21  Andreas Krebbel  <>

	* config/s390/ ("floatv2div2df2", "floatunsv2div2df2")
	("fix_truncv2dfv2di2", "fixuns_truncv2dfv2di2"): New pattern

2018-12-21  Eric Botcazou  <>

	PR rtl-optimization/87727
	* combine.c (cant_combine_insn_p): On a LEAF_REGISTERS target, combine
	again moves from leaf hard registers.

	* final.c (final_scan_insn_1) <NOTE_INSN_INLINE_ENTRY>: Minor tweak.

2018-12-21  Jakub Jelinek  <>

	PR target/88522
	* config/i386/ (*avx512pf_gatherpf<mode>sf_mask,
	*avx512pf_gatherpf<mode>df_mask, *avx512pf_scatterpf<mode>sf_mask,
	*avx512pf_scatterpf<mode>df_mask): Use %X5 instead of %5 for
	(gatherq_mode): Remove mode iterator.
	(*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2): Use X instead
	of <xtg_mode>.
	(*avx512f_gatherdi<mode>): Use X instead of <gatherq_mode>.
	(*avx512f_gatherdi<mode>_2, *avx512f_scattersi<mode>,
	*avx512f_scatterdi<mode>): Use %X5 for -masm=intel.

	PR rtl-optimization/88563
	* expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Swap innermode
	and mode arguments to convert_modes.  Likewise swap mode and word_mode
	arguments.  Handle both arguments with VOIDmode before convert_modes
	of one of them.  Formatting fixes.

2018-12-21  Uros Bizjak  <>

	PR target/88556
	* internal-fn.def (COSH): New.
	(SINH): Ditto.
	(TANH): Ditto.
	* optabs.def (cosh_optab): New.
	(sinh_optab): Ditto.
	(tanh_optab): Ditto.
	* config/i386/i386-protos.h (ix86_emit_i387_sinh): New prototype.
	(ix86_emit_i387_cosh): Ditto.
	(ix86_emit_i387_tanh): Ditto.
	* config/i386/i386.c (ix86_emit_i387_sinh): New function.
	(ix86_emit_i387_cosh): Ditto.
	(ix86_emit_i387_tanh): Ditto.
	* config/i386/ (sinhxf2): New expander.
	(sinh<mode>2):	Ditto.
	(coshxf2): Ditto.
	(cosh<mode>2): Ditto.
	(tanhxf2): Ditto.
	(tanh<mode>2): Ditto.

2018-12-21  Jakub Jelinek  <>

	PR target/88547
	* config/i386/i386.c (ix86_expand_int_sse_cmp): Optimize
	x > y ? 0 : -1 into min (x, y) == x ? -1 : 0.

2018-12-21  Jan Beulich  <>

	* config/i386/ (vaesdec_<mode>, vaesdeclast_<mode>): Allow
	memory input.

2018-12-21  Alexandre Oliva <>

	* config.gcc (tmake_file): Add name to tmake_file for
	each @name in --with-multilib-list on arm-*-* targets.
	* doc/install.texi (with-multilib-list): Document it.

2018-12-21  Jakub Jelinek  <>

	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use
	DR_TARGET_ALIGNMENT on dr_info rather than dr.  Spelling fixes.

2018-12-20  Joern Rennecke  <>

	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Don't do
	versioning for data accesses with misaligned step.

2018-12-20  H.J. Lu  <>

	PR c/51628
	* doc/invoke.texi: Document -Wno-address-of-packed-member.

2018-12-20  Vladimir Makarov  <>

	PR target/88457
	* ira-color.c (fast_allocation): Choose the best cost hard reg.

2018-12-20  Richard Sandiford  <>

	* config/aarch64/ (SVE_INT_UNARY, fp_int_op): Add abs.
	(SVE_FP_UNARY): Sort.

2018-12-20  Richard Sandiford  <>

	* config/aarch64/ (*cond_<optab><mode>_4): Use
	sve_fmla_op rather than sve_fmad_op for the movprfx alternative.

2018-12-20  Martin Jambor  <>

	PR ipa/88214
	* tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Assert that
	ptr is a pointer.

2018-12-20  Richard Biener  <>

	PR tree-optimization/84362
	* tree-ssa-loop-im.c: Include alias.h, builtins.h and tree-dfa.h.
	(struct im_mem_ref): add ref_canonical flag.
	(struct mem_ref_hasher): Use ao_ref as compare_type.
	(mem_ref_hasher::equal): Adjust and add variant comparing ao_ref
	(mem_ref_alloc): Take ao_ref parameter, initialize ref_canonical
	(gather_mem_refs_stmt): Set up ao_ref early and do the lookup
	using it.  If we have non-equal refs canonicalize the one
	in the hashtable used for insertion.
	(tree_ssa_lim_initialize): Adjust.

2018-12-20  Jakub Jelinek  <>

	PR target/88547
	* config/i386/i386.c (ix86_expand_sse_movcc): For maskcmp, try to
	emit vpmovm2? instruction perhaps after knot?.  Reorganize code
	so that it doesn't have to test !maskcmp in almost every conditional.

2018-12-20  Alan Modra  <>

	* config/rs6000/sysv4.h (GNU_USER_DYNAMIC_LINKER): Define.

2018-12-19  Andreas Tobler  <>


2018-12-19  Uros Bizjak  <>

	* config/i386/ (SWI1248_AVX512BWDQ_64): Rename from
	SWI1248_AVX512BWDQ2_64.  Unconditionally enable HImode.
	(*cmp<mode>_ccz_1): Emit kortest instead of ktest insn.
	Use SWI1248_AVX512BWDQ_64 mode iterator and enable only for

2018-12-19  Thomas Preud'homme  <>

	* config/arm/elf.h: Update comment about condition that need to
	match with libgcc/config/arm/lib1funcs.S to also include
	* doc/sourcebuild.texi (output-exists, output-exists-not): Rename
	subsubsection these directives are in to "Check for output files".
	Move scan-symbol to that section and add to it new scan-symbol-not

2018-12-19  Tom de Vries  <>

	* config/nvptx/nvptx.c (PTX_CTA_SIZE): Define.

2018-12-19  Tom de Vries  <>

	* omp-offload.c (oacc_fn_attrib_level): Remove static.
	* omp-offload.h (oacc_fn_attrib_level): Declare.

2018-12-19  Tom de Vries  <>

	* omp-offload.c (oacc_get_default_dim): New function.
	* omp-offload.h (oacc_get_default_dim): Declare.

2018-12-19  David Malcolm  <>

	PR c++/87504
	* gcc-rich-location.c
	(maybe_range_label_for_tree_type_mismatch::get_text): Move here from
	(binary_op_rich_location::binary_op_rich_location): New ctor.
	(binary_op_rich_location::use_operator_loc_p): New function.
	* gcc-rich-location.h
	(class maybe_range_label_for_tree_type_mismatch)): Move here from
	(struct op_location_t): New forward decl.
	(class binary_op_rich_location): New class.
	* tree.h (struct op_location_t): New struct.

2018-12-19  David Malcolm  <>

	PR c++/43064
	PR c++/43486
	* convert.c: Include "selftest.h".
	(preserve_any_location_wrapper): New function.
	(convert_to_pointer_maybe_fold): Update to handle location
	(convert_to_real_maybe_fold): Likewise.
	(convert_to_integer_1): Strip expr when using TREE_OVERFLOW.
	Handle location wrappers when checking for INTEGER_CST.
	(convert_to_integer_maybe_fold): Update to handle location
	(convert_to_complex_maybe_fold): Likewise.
	(selftest::test_convert_to_integer_maybe_fold): New functions.
	(selftest::convert_c_tests): New function.
	* convert.h (preserve_any_location_wrapper): New decl.
	* fold-const.c (size_binop_loc): Strip location wrappers when
	(operand_equal_p): Strip any location wrappers.
	(integer_valued_real_p): Strip any location wrapper.
	* selftest-run-tests.c (selftest::run_tests): Call
	* selftest.h (selftest::convert_c_tests): New decl.
	* tree.c (build_complex): Assert that REAL and IMAG are constants.
	(integer_zerop): Look through location wrappers.
	(integer_onep): Likewise.
	(integer_each_onep): Likewise.
	(integer_all_onesp): Likewise.
	(integer_minus_onep): Likewise.
	(integer_pow2p): Likewise.
	(integer_nonzerop): Likewise.
	(integer_truep): Likewise.
	(fixed_zerop): Likewise.
	(real_zerop): Likewise.
	(real_onep): Likewise.
	(real_minus_onep): Likewise.
	(tree_int_cst_equal): Likewise.
	(simple_cst_equal): Treat location wrappers with non-equal source
	locations as being unequal.
	(uniform_integer_cst_p): Look through location wrappers.
	(maybe_wrap_with_location): Don't create wrappers if any
	auto_suppress_location_wrappers are active.
	(suppress_location_wrappers): New variable.
	(selftest::test_predicates): New test.
	(selftest::tree_c_tests): Call it.
	* tree.h (CONSTANT_CLASS_OR_WRAPPER_P): New macro.
	(suppress_location_wrappers): New decl.
	(class auto_suppress_location_wrappers): New class.

2018-12-19  Paul A. Clarke  <>

	* config/rs6000/tmmintrin.h (_mm_hadds_epi16): Vector lanes swapped.
	(_mm_hsub_epi32): Likewise.
	(_mm_shuffle_epi8): Fix reversed interpretation of parameters.
	(_mm_shuffle_pi8): Likewise.
	(_mm_addubs_pi16): Likewise.

2018-12-19  Thomas Preud'homme  <>

	* config/arm/arm.h (TARGET_HARD_FLOAT): Restrict to TARGET_32BIT
	* config/arm/arm.c (output_return_instruction): Only check
	TARGET_HARD_FLOAT to decide whether FP instructions are available.

2018-12-19  Tom de Vries  <>

	* doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
	dump files): Add offload-rtl.

2018-12-19  Segher Boessenkool  <>

	PR target/88213
	* config/rs6000/ (*vsx_extract_<P:mode>_<VSX_D:mode>_load):

2018-12-19  Richard Biener  <>

	PR tree-optimization/88533
	2018-04-30  Richard Biener  <>

	PR tree-optimization/28364
	PR tree-optimization/85275
	* tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
	copying first exit test.

	* tree-ssa-loop-ch.c: Include tree-phinodes.h and
	(should_duplicate_loop_header_p): Track whether stmt compute
	loop invariants or values based on IVs.  Apart from the
	original loop header only duplicate blocks with exit tests
	that are based on IVs or invariants.

2018-12-19  Tom de Vries  <>

	* config/nvptx/nvptx.c (nvptx_gen_shared_bcast, shared_prop_gen)
	(nvptx_goacc_expand_accel_var): Use MAX and ROUND_UP.
	(nvptx_assemble_value, nvptx_output_skip): Use MIN.
	(nvptx_shared_propagate, nvptx_single, nvptx_expand_shared_addr): Use

2018-12-19  Tom de Vries  <>

	* config/nvptx/nvptx.c (nvptx_gen_wcast): Rename as
	(nvptx_gen_wcast): Rename to nvptx_gen_shared_bcast, add bool
	vector argument, and update call to nvptx_gen_shared_bcast.
	(propagator_fn): Add bool argument.
	(nvptx_propagate): New bool argument, pass bool argument to fn.
	(vprop_gen): Rename to warp_prop_gen, update call to
	(nvptx_vpropagate): Rename to nvptx_warp_propagate, update call to
	(wprop_gen): Rename to shared_prop_gen, update call to
	(nvptx_wpropagate): Rename to nvptx_shared_propagate, update call
	to nvptx_propagate.
	(nvptx_wsync): Rename to nvptx_cta_sync.
	(nvptx_single): Update calls to nvptx_gen_warp_bcast,
	nvptx_gen_shared_bcast and nvptx_cta_sync.
	(nvptx_process_pars): Likewise.
	(write_worker_buffer): Rename as write_shared_buffer.
	(nvptx_file_end): Update calls to write_shared_buffer.
	(nvptx_expand_worker_addr): Rename as nvptx_expand_shared_addr.
	(nvptx_expand_builtin): Update call to nvptx_expand_shared_addr.
	(nvptx_get_worker_red_addr): Rename as nvptx_get_shared_red_addr.
	(nvptx_goacc_reduction_setup): Update call to
	(nvptx_goacc_reduction_fini): Likewise.
	(nvptx_goacc_reduction_teardown): Likewise.

2018-12-19  Tom de Vries  <>

	* config/nvptx/nvptx.c (worker_bcast_size): Rename as
	(worker_bcast_align): Rename as oacc_bcast_align.
	(worker_bcast_sym): Rename as oacc_bcast_sym.
	(nvptx_option_override): Update usage of oacc_bcast_*.
	(struct wcast_data_t): Rename as broadcast_data_t.
	(nvptx_gen_wcast): Update type of data argument and usage of
	(wprop_gen): Update type of data_ and usage of oacc_bcast_align.
	(nvptx_wpropagate): Update type of data and usage of
	(nvptx_single): Update type of data and usage of oacc_bcast_size.
	(nvptx_file_end): Update usage of oacc_bcast_{sym,align,size}.

2018-12-19  Tom de Vries  <>

	* config/nvptx/ (nvptx_barsync): Add and handle operand.
	* config/nvptx/nvptx.c (nvptx_wsync): Update call to gen_nvptx_barsync.

2018-12-19  Tom de Vries  <>

	* config/nvptx/nvptx.c (nvptx_single): Always pass false to
	(nvptx_process_pars): Likewise.

2018-12-19  Tom de Vries  <>

	* config/nvptx/nvptx.c (nvptx_previous_fndecl): Declare.
	(nvptx_set_current_function): New function.

2018-12-19  Shaokun Zhang  <>

	* config/aarch64/aarch64-cores.def (tsv110): Fix architecture.  This
	part is really Armv8.2 with some permitted Armv8.4 extensions.

2018-12-19  Jakub Jelinek  <>

	PR target/88541
	* config/i386/vpclmulqdqintrin.h (_mm256_clmulepi64_epi128): Enable
	for -mavx -mvpclmulqdq rather than just for -mavx512vl -mvpclmulqdq.

2018-12-19  Alexandre Oliva  <>

	PR testsuite/86153
	PR middle-end/83239
	* vr-values.c
	(vr_values::vrp_evaluate_conditional_warnv_with_ops): Extend
	simplification of overflow tests to cover cases in which we
	can determine the result of the comparison.

2018-12-19  Bin Cheng  <>

	* auto-profile.c (afdo_indirect_call): Skip generating histogram
	value if we can't find cgraph_node for then indirected callee.  Save
	profile_id of the cgraph_node in histogram value's first counter.
	* value-prof.c (gimple_value_profile_transformations): Don't skip
	for flag_auto_profile.

2018-12-18  Vladimir Makarov  <>

	PR rtl-optimization/87759
	* lra-assigns.c (lra_split_hard_reg_for): Recalculate

2018-12-18  Jakub Jelinek  <>

	PR target/88464
	* config/i386/i386-builtin-types.def
	VOID_FTYPE_PINT_QI_V2DI_V4SI_INT): New builtin types.
	* config/i386/i386.c (enum ix86_builtins): Add
	(ix86_init_mmx_sse_builtins): Fix up names of IX86_BUILTIN_GATHERALT*,
	match the IX86_BUILTIN codes.  Build 	IX86_BUILTIN_SCATTERALTSIV4DF,
	(ix86_vectorize_builtin_scatter): Expand those new builtins.

2018-12-18  Bill Schmidt  <>

	* doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
	Describe when a typedef name can be used as the type specifier for
	a vector type, and when it cannot.

2018-12-18  Jozef Lawrynowicz  <>

	* config/msp430/msp430.h: Define TARGET_VTABLE_ENTRY_ALIGN.

2018-12-18  Jakub Jelinek  <>

	PR target/88513
	PR target/88514
	* optabs.def (vec_pack_sbool_trunc_optab, vec_unpacks_sbool_hi_optab,
	vec_unpacks_sbool_lo_optab): New optabs.
	* optabs.c (expand_widen_pattern_expr): Use vec_unpacks_sbool_*_optab
	and pass additional argument if both input and target have the same
	scalar mode of VECTOR_BOOLEAN_TYPE_P vectors.
	* expr.c (expand_expr_real_2) <case VEC_PACK_TRUNC_EXPR>: Handle
	VECTOR_BOOLEAN_TYPE_P pack where result has the same scalar mode
	as the operands using vec_pack_sbool_trunc_optab.
	* tree-vect-stmts.c (supportable_widening_operation): Use
	vec_unpacks_sbool_{lo,hi}_optab for VECTOR_BOOLEAN_TYPE_P conversions
	where both wider_vectype and vectype have the same scalar mode.
	(supportable_narrowing_operation): Similarly use
	vec_pack_sbool_trunc_optab if narrow_vectype and vectype have the same
	scalar mode.
	* config/i386/i386.c (ix86_get_builtin)
	rather than non-VOIDmode.
	* config/i386/ (vec_pack_trunc_qi, vec_pack_trunc_<mode>):
	Remove useless ()s around "register_operand", formatting fixes.
	(vec_pack_sbool_trunc_qi, vec_unpacks_sbool_lo_qi,
	vec_unpacks_sbool_hi_qi): New expanders.
	* doc/md.texi (vec_pack_sbool_trunc_M, vec_unpacks_sbool_hi_M,
	vec_unpacks_sbool_lo_M): Document.

2018-12-18  Jozef Lawrynowicz  <>

	* combine.c (update_rsp_from_reg_equal): Only look for the nonzero bits
	of src in nonzero_bits_mode if the mode of src is MODE_INT and
	(reg_nonzero_bits_for_combine): Add clarification to comment.

2018-12-18  Wei Xiao  <>

	* config/i386/driver-i386.c (host_detect_local_cpu): Detect cascadelake.
	* config/i386/i386.c (fold_builtin_cpu): Handle cascadelake.
	* doc/extend.texi: Add cascadelake.
2018-12-17  Peter Bergner  <>

	PR target/87870
	* config/rs6000/ (nW): New mode iterator.
	(vsx_mov<mode>_64bit): Use it.  Remove redundant GPR 0/-1 alternative.
	Update length attribute for (<??r>, <nW>)  alternative.
	(vsx_mov<mode>_32bit): Likewise.

2018-12-17  Tom de Vries  <>

	* config/nvptx/nvptx.c (PTX_VECTOR_LENGTH, PTX_WORKER_LENGTH,
	PTX_DEFAULT_RUNTIME_DIM): Move to the top of the file.

2018-12-17  Tom de Vries  <>

	* config/nvptx/nvptx.c (PTX_WARP_SIZE): Define.
	(nvptx_simt_vf): Return PTX_WARP_SIZE instead of PTX_VECTOR_LENGTH.

2018-12-17  Tom de Vries  <>

	* config/nvptx/nvptx.c (nvptx_single): Fix whitespace.
	(nvptx_neuter_pars): Likewise.

2018-12-17  Tom de Vries  <>

	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Work around Fortran
	bug PR72741 by overriding dims parameter for routines.

2018-12-17  Tom de Vries  <>

	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Rewrite using
	predicate vars.

2018-12-17  Steve Ellcey  <>

	* config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
	New prototype.
	(aarch64_epilogue_uses): Ditto.
	* config/aarch64/aarch64.c (aarch64_attribute_table): New array.
	(aarch64_simd_decl_p): New function.
	(aarch64_reg_save_mode): New function.
	(aarch64_function_ok_for_sibcall): Check for simd calls.
	(aarch64_layout_frame): Check for simd function.
	(aarch64_gen_storewb_pair): Handle E_TFmode.
	(aarch64_push_regs): Use aarch64_reg_save_mode to get mode.
	(aarch64_gen_loadwb_pair): Handle E_TFmode.
	(aarch64_pop_regs): Use aarch64_reg_save_mode to get mode.
	(aarch64_gen_store_pair): Handle E_TFmode.
	(aarch64_gen_load_pair): Ditto.
	(aarch64_save_callee_saves): Handle different mode sizes.
	(aarch64_restore_callee_saves): Ditto.
	(aarch64_components_for_bb): Check for simd function.
	(aarch64_epilogue_uses): New function.
	(aarch64_process_components): Check for simd function.
	(aarch64_expand_prologue): Ditto.
	(aarch64_expand_epilogue): Ditto.
	(aarch64_expand_call): Ditto.
	(aarch64_use_simple_return_insn_p): New function.
	* config/aarch64/aarch64.h (EPILOGUE_USES): Redefine.
	* config/aarch64/ (simple_return): New define_expand.
	(load_pair_dw_tftf): New instruction.
	(store_pair_dw_tftf): Ditto.
	(loadwb_pair<TX:mode>_<P:mode>): Ditto.
	(storewb_pair<TX:mode>_<P:mode>): Ditto.

2018-12-17  Uros Bizjak  <>

	PR target/88502
	* internal-fn.def (ACOSH): New.
	(ASINH): Ditto.
	(ATANH): Ditto.
	* optabs.def (acosh_optab): New.
	(asinh_optab): Ditto.
	(atanh_optab): Ditto.
	* config/i386/i386-protos.h (ix86_emit_i387_asinh): New prototype.
	(ix86_emit_i387_acosh): Ditto.
	(ix86_emit_i387_atanh): Ditto.
	* config/i386/i386.c (ix86_emit_i387_asinh): New function.
	(ix86_emit_i387_acosh): Ditto.
	(ix86_emit_i387_atanh): Ditto.
	* config/i386/ (asinhxf2): New expander.
	(asinh<mode>2):	Ditto.
	(acoshxf2): Ditto.
	(acosh<mode>2): Ditto.
	(atanhxf2): Ditto.
	(atanh<mode>2): Ditto.

2018-12-17  David Edelsohn  <>

	* config.gcc (powerpc-ibm-aix6.*): Delete extra_headers.
	(powerpc-ibm-aix7.1.*): Same.
	(powerpc-ibm-aix[789].*): Same.

2018-12-17  H.J. Lu  <>

	PR debug/79342
	* dwarf2out.c (find_AT_string_in_table): Add insert argument
	defaulting to INSERT and replace INSERT.
	(find_AT_string): Likewise.
	(output_macinfo_op): Pass NO_INSERT to find_AT_string.

2018-12-15  Jan Hubicka  <>

	* coverage.c (struct conts_entry): Add n_counts.
	(remap_counts_file): Record number of ocunts.
	(get_coverage_counts): Verify that counts match.
	* coverage.h (get_coverage_counts): Update prototype.
	* profile.c (get_exec_counts. compute_value_histograms): Add
	n_counts parametrs.

2018-12-17  Senthil Kumar Selvaraj  <>

	PR rtl-optimization/88253
	* combine.c (combine_simplify_rtx): Test for side-effects before
	substituting by zero.

2018-12-17  Richard Sandiford  <>
	    Ramana Radhakrishnan  <>
	    Kyrylo Tkachov  <>

	* doc/invoke.texi (-fversion-loops-for-strides): Document
	(loop-versioning-group-size, loop-versioning-max-inner-insns)
	(loop-versioning-max-outer-insns): Document new --params.
	* (OBJS): Add gimple-loop-versioning.o.
	* common.opt (fversion-loops-for-strides): New option.
	* opts.c (default_options_table): Enable fversion-loops-for-strides
	at -O3.
	* passes.def: Add pass_loop_versioning.
	* timevar.def (TV_LOOP_VERSIONING): New time variable.
	* tree-ssa-propagate.h
	(substitute_and_fold_engine::substitute_and_fold): Add an optional
	block parameter.
	* tree-ssa-propagate.c
	(substitute_and_fold_engine::substitute_and_fold): Likewise.
	When passed, only walk blocks dominated by that block.
	* tree-vrp.h (range_includes_p): Declare.
	(range_includes_zero_p): Turn into an inline wrapper around
	* tree-vrp.c (range_includes_p): New function, generalizing...
	(range_includes_zero_p): ...this.
	* tree-pass.h (make_pass_loop_versioning): Declare.
	* New file.

2018-12-15  Jan Hubicka  <>

	* ipa-fnsummary.c (remap_edge_change_prob): Do not ICE when changes
	are not streamed in.

2018-12-15  H.J. Lu  <>

	PR target/88483
	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Revert
	reversion 267133.

2018-12-15  Jan Hubicka  <>

	* ipa-fnsummary.c (analyze_function_body): Do not loeak conds and
	(ipa_fn_summary_generate): Add prevails parameter; do not allocate
	data when symbol is not prevailing.
	(inline_read_section): Likewise.

2018-12-15  Jan Hubicka  <>

	* cgraph.h (cgraph_node): Add predicate prevailing_p.
	(cgraph_edge): Add predicate possible_call_in_translation_unit_p.
	* ipa-prop.c (ipa_write_jump_function): Optimize streaming of ADDR_EXPR.
	(ipa_read_jump_function): Add prevails parameter; optimize streaming.
	(ipa_read_edge_info): Break out from ...
	(ipa_read_node_info): ... here; optimize streaming.
	* cgraph.c (cgraph_edge::possibly_call_in_translation_unit_p): New

2018-12-15  Jan Hubicka  <>

	* ipa-utils.c (ipa_merge_profiles): Do no merging when source function
	has zero count.

2018-12-15  Jakub Jelinek  <>

	PR tree-optimization/88464
	PR target/88498
	* tree-vect-stmts.c (vect_build_gather_load_calls): For NARROWING
	and mask with integral masktype, don't try to permute mask vectors,
	instead emit VEC_UNPACK_{LO,HI}_EXPR.  Fix up NOP_EXPR operand.
	(vectorizable_store): Handle masked scatters with decl and integral
	mask type.
	(permute_vec_elements): Allow scalar_dest to be NULL.
	* config/i386/i386.c (ix86_get_builtin)
	<case IX86_BUILTIN_GATHER3ALTDIV16SF>: Use lowpart_subreg for masks.
	<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Don't assume mask and src have
	to be the same.

2018-12-15  Jan Hubicka  <>

	* ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
	(cgraph_build_static_cdtor): Update.
	(build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor

2018-12-15  Alan Modra  <>

	* config/rs6000/rs6000.c (generate_set_vrsave, rs6000_emit_savres_rtx),
	(rs6000_emit_prologue, rs6000_call_aix, rs6000_call_sysv),
	(rs6000_call_darwin_1): Use gen_hard_reg_clobber.

2018-12-15  Jakub Jelinek  <>

	PR target/88489
	* config/i386/ (UNSPEC_SFIXUPIMM): New unspec enumerator.
	(avx512f_sfixupimm<mode><mask_name><round_saeonly_name>): Use it
	instead of UNSPEC_FIXUPIMM.

	PR rtl-optimization/88478
	* cselib.c (cselib_record_sets): Move sets[i].src_elt tests
	after REG_P (dest) test.

2018-12-14  Martin Sebor  <>

	PR tree-optimization/88372
	* calls.c (maybe_warn_alloc_args_overflow): Handle function pointers.
	* tree-object-size.c (alloc_object_size): Same.  Simplify.
	* doc/extend.texi (Object Size Checking): Update.
	(Other Builtins): Add __builtin_object_size.
	(Common Type Attributes): Add alloc_size.
	(Common Variable Attributes): Ditto.

2018-12-14  Martin Sebor  <>

	PR rtl-optimization/87096
	* gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Avoid
	folding calls whose bound may exceed INT_MAX.  Diagnose bound ranges
	that exceed the limit.

2018-12-14  Martin Sebor  <>

	PR web/79738
	* doc/extend.texi (attribute const, pure): Clarify.

2018-12-14  H.J. Lu  <>

	* config/i386/i386.c (rest_of_insert_endbranch): Insert ENDBR
	at the function entry only when -mmanual-endbr isn't used or
	there is cf_check function attribute.
	(ix86_attribute_table): Add cf_check.
	* config/i386/i386.opt: Add -mmanual-endbr.
	* doc/extend.texi: Document cf_check attribute.
	* doc/invoke.texi: Document -mmanual-endbr.

2018-12-14  Thomas Schwinge  <>
	    Cesar Philippidis  <>

	* omp-offload.c (inform_oacc_loop): New function.
	(execute_oacc_device_lower): Use it to display loop parallelism.

2018-12-14  Jakub Jelinek  <>

	PR c++/82294
	PR c++/87436
	* expr.h (categorize_ctor_elements): Add p_unique_nz_elts argument.
	* expr.c (categorize_ctor_elements_1): Likewise.  Compute it like
	p_nz_elts, except don't multiply it by mult.  Adjust recursive call.
	Fix up COMPLEX_CST handling.
	(categorize_ctor_elements): Add p_unique_nz_elts argument, initialize
	it and pass it through to categorize_ctor_elements_1.
	(mostly_zeros_p, all_zeros_p): Adjust categorize_ctor_elements callers.
	* gimplify.c (gimplify_init_constructor): Likewise.  Don't force
	ctor into readonly data section if num_unique_nonzero_elements is
	smaller or equal to 1/8 of num_nonzero_elements and size is >= 64

2018-12-14  Thomas Preud'homme  <>

	* config/arm/ (arm_movdi): Split if -mslow-flash-data and
	source is a constant that would be loaded by literal pool.
	(movsf expander): Generate a no_literal_pool_sf_immediate insn if
	-mslow-flash-data is present, targeting hardfloat ABI and source is a
	float constant that cannot be loaded via vmov.
	(movdf expander): Likewise but generate a no_literal_pool_df_immediate
	(arm_movsf_soft_insn): Split if -mslow-flash-data and source is a
	float constant that would be loaded by literal pool.
	(softfloat constant movsf splitter): Splitter for the above case.
	(movdf_soft_insn): Split if -mslow-flash-data and source is a float
	constant that would be loaded by literal pool.
	(softfloat constant movdf splitter): Splitter for the above case.
	* config/arm/ (Pz): Document existing constraint.
	(Ha): Define constraint.
	(Tu): Likewise.
	* config/arm/ (hard_sf_operand): New predicate.
	(hard_df_operand): Likewise.
	* config/arm/ (thumb2_movsi_insn): Split if
	-mslow-flash-data and constant would be loaded by literal pool.
	* constant/arm/ (thumb2_movsi_vfp): Likewise and disable constant
	load in VFP register.
	(movdi_vfp): Likewise.
	(thumb2_movsf_vfp): Use hard_sf_operand as predicate for source to
	prevent match for a constant load if -mslow-flash-data and constant
	cannot be loaded via vmov.  Adapt constraint accordingly by
	using Ha instead of E for generic floating-point constant load.
	(thumb2_movdf_vfp): Likewise using hard_df_operand predicate instead.
	(no_literal_pool_df_immediate): Add a clobber to use as the
	intermediate general purpose register and also enable it after reload
	but disable it constant is a valid FP constant.  Add constraints and
	generate a DI intermediate load rather than 2 SI loads.
	(no_literal_pool_sf_immediate): Add a clobber to use as the
	intermediate general purpose register and also enable it after

2018-12-14  Uros Bizjak  <>

	PR target/88474
	* internal-fn.def (HYPOT): New.
	* optabs.def (hypot_optab): New.
	* config/i386/ (hypot<mode>3): New expander.

2018-12-14  Jeff Law  <>

	* target.def (post_cfi_startproc): Fix text.

2018-12-14  Sam Tebbs  <>

	* doc/tm.texi (TARGET_ASM_POST_CFI_STARTPROC): Define.
	* dwarf2out.c (dwarf2out_do_cfi_startproc): Trigger the hook.
	* hooks.c (hook_void_FILEptr_tree): Define.
	* hooks.h (hook_void_FILEptr_tree): Define.
	* target.def (post_cfi_startproc): Define.

2018-12-14  Tom de Vries  <>

	* lto-cgraph.c (verify_node_partition): New function.
	(input_overwrite_node, input_varpool_node): Use verify_node_partition.

2018-12-14  H.J. Lu  <>

	PR target/88483
	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
	use get_frame_size ().

2018-12-14  Andrew Stubbs  <>

	* gcc/lra-int.h (lra_register_new_scratch_op): Add third parameter.
	* gcc/lra-remat.c (update_scratch_ops): Pass icode to
	* gcc/lra.c (struct sloc): Add icode field.
	(lra_register_new_scratch_op): Add icode parameter.
	Use icode to skip insns that have changed beyond recognition.

2018-12-14  Eric Botcazou  <>

	* dwarf2out.c (analyze_discr_in_predicate): Simplify.
	(analyze_variants_discr): Deal with naked boolean discriminants.

2018-12-14  Claudiu Zissulescu  <>

	* config/arc/arc.c (arc_restore_callee_milli) Don't clobber off

2018-12-14  Claudiu Zissulescu  <>

	* config/arc/arc.h (reg_class): Add SIBCALL_REGS.

2018-12-14  Richard Biener  <>

	* gimple-ssa-split-paths.c (is_feasible_trace): Remove
	duplicated code block.

2018-12-14  Alan Modra  <>

	PR rtl-optimization/88311
	* config/rs6000/rs6000.c (rs6000_call_sysv): Do not mask cookie.
	(rs6000_sibcall_sysv): Likewise.

2018-12-14  Segher Boessenkool  <>

	PR rtl-optimization/88001
	* function.c (match_asm_constraints_1): Don't invalidly share RTL.

2018-12-14  Bin Cheng  <>

	* auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even
	if autofdo counts are all zeros.

2018-12-14  Bin Cheng  <>

	* auto-profile.c (afdo_indirect_call): Skip generating histogram
	value for internal call.

2018-12-14  Bin Cheng  <>

	* auto-profile.c (AFDO_EINFO): New macro.
	(class edge_info): New class.
	(is_edge_annotated, set_edge_annotated): Delete.
	(afdo_propagate_edge, afdo_propagate_circuit, afdo_propagate): Remove
	parameter.  Adjust edge count computation and annotation using class
	(afdo_calculate_branch_prob, afdo_annotate_cfg): Likewise.

2018-12-13  Michael Ploujnikov  <>

	* ipa-cp.c (print_all_lattices): Skip cp clones.

	* ipa-cp.c: Fix various comment typos.

2018-12-13  Jakub Jelinek  <>

	PR tree-optimization/88444
	* tree-inline.c (fold_marked_statements): Iterate up to
	last_basic_block_for_fn rather than n_basic_blocks_for_fn.

	PR rtl-optimization/88470
	* cfgcleanup.c (outgoing_edges_match): If the function is
	shrink-wrapped and bb1 ends with a JUMP_INSN with a single fake
	edge to EXIT, return false.

2018-12-13  Martin Sebor  <>

	* doc/extend.texi: Consistently use @code for const and volatile
	qualifiers, the true and false constants, and asm statements.

2018-12-13  Vladimir Makarov  <>

	PR rtl-optimization/88414
	* lra-int.h (lra_asm_error_p): New.
	* lra-assigns.c (lra_assign): Check lra_asm_error_p for checking
	call crossed pseudo assignment correctness.
	(lra_split_hard_reg_for): Set up lra_asm_error_p.
	* lra-constraints.c (curr_insn_transform): Ditto.
	* lra.c (lra_asm_error_p): New.
	(lra): Reset lra_asm_error_p.

2018-12-13  Jakub Jelinek  <>

	PR rtl-optimization/88416
	* valtrack.c (cleanup_auto_inc_dec): Handle pre/post-inc/dec/modify
	even if !AUTO_INC_DEC.

2018-12-13  David Edelsohn  <>

	* config/rs6000/rs6000.c (rs6000_function_arg): Ensure type is
	(rs6000_arg_partial_bytes): Same.

2018-12-13  Jason Merrill  <>

	* (pp): New macro.
	(pbb): Remove.

2018-12-13  Jakub Jelinek  <>

	PR tree-optimization/88464
	* tree-vect-stmts.c (vect_build_gather_load_calls): Handle INTEGER_TYPE
	masktype if mask is non-NULL.
	(vectorizable_load): Don't reject masked gather loads if masktype
	in the decl is INTEGER_TYPE.

2018-12-13  Andreas Krebbel  <>

	* config/s390/s390-builtins.def (s390_vec_double_s64): Map to
	s390_vec_double_s64 instead of s390_vcdgb.
	(s390_vec_double_u64): Map to s390_vec_double_u64 instead of

2018-12-13  Andreas Krebbel  <>

	* config/s390/ ("vec_ctd_s64", "vec_ctd_u64")
	("vec_ctsl", "vec_ctul"): Replace 0 with VEC_NOINEXACT.
	("vec_double_s64", "vec_double_u64"): Replace 4 with VEC_INEXACT.

2018-12-13  Kyrylo Tkachov  <>

	* doc/invoke.texi (-msve-vector-bits): Clarify -msve-vector-bits=128

2018-12-13  Wei Xiao  <>

	* common/config/i386/i386-common.c (processor_names): Add cascadelake.
	(processor_alias_table): Add cascadelake.
	* config.gcc: Add -march=cascadelake.
	* config/i386/i386-c.c (ix86_target_macros_internal): Handle
	* config/i386/i386.c (Add m_CASCADELAKE): New.
	(processor_cost_table): Add cascadelake.
	(get_builtin_code_for_version): Handle cascadelake.
	* doc/invoke.texi: Add -march=cascadelake.

2018-12-13  Jakub Jelinek  <>

	PR target/88465
	* config/i386/ (*movdi_internal, *movsi_internal,
	*movhi_internal, *movqi_internal): Add alternative(s) to load
	0 or -1 into k registers using kxor or kxnoq instructions.

	PR target/88461
	* config/i386/ (VI1248_AVX512VLBW, AVX512ZEXTMASK): New
	mode iterators.
	<avx512>_testnm<mode>3<mask_scalar_merge_name>): Merge patterns
	with VI12_AVX512VL and VI48_AVX512VL iterators into ones with
	VI1248_AVX512VLBW iterator.
	*<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext_mask): New

	PR target/88461
	* config/i386/ (*zero_extendsidi2, zero_extend<mode>di2,
	*zero_extend<mode>si2, *zero_extendqihi2): Add =*k, *km alternatives.

2018-12-12  Tom de Vries  <>
	    Jakub Jelinek  <>

	function types - remove one argument.

2018-12-12  Martin Sebor  <>

	* doc/extend.texi (attribute copy): Fix typos.

2018-12-12  Martin Sebor  <>

	* doc/extend.texi (Function Attributes): Clarify C++ aspects.
	(Variable Attributes): Same.
	(Type Attributes): Same.

2018-12-12  Olivier Hainque  <>

	* config/aarch64/aarch64.c (aarch64_override_options): Once arch,
	cpu and tune were validated, insert SUBTARGET_OVERRIDE_OPTIONS if

2018-12-12  Olivier Hainque  <>

	* config/aarch64/aarch64.c (PROBE_STACK_FIRST_REG) : Redefine as
	R9_REGNUM instead of 9.
	(PROBE_STACK_SECOND_REG): Redefine as R10_REGNUM instead of 10.

2018-12-12  Eric Botcazou  <>

	PR target/86806
	* config/sparc/ (unspecv): Add UNSPECV_SPECULATION_BARRIER.
	(speculation_barrier): New instruction for V9.

2018-12-12  Segher Boessenkool  <>
	    Iain Sandoe  <>

	PR target/88343
	* config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg
	unless it has been used.
	(first_reg_to_save): Remove dead code.

2018-12-12  Iain Sandoe  <>

	* config/rs6000/rs6000-protos.h (rs6000_call_darwin): New.
	(rs6000_sibcall_darwin): New. (macho_call_template): Remove.
	* config/rs6000/rs6000.c (get_prev_label): Forward declaration. 
	(rs6000_call_template_1): Handle Darwin.
	(macho_call_template): Remove.
	(rs6000_call_sysv): Remove handling for Darwin.
	(rs6000_call_darwin_1, rs6000_call_darwin): New
	(rs6000_sibcall_darwin): New.
	* config/rs6000/ (define_expand “call”): Handle Darwin
	with its own expander. (define_expand “call_value”): Likewise.
	(define_expand “sibcall”): Likewise.
	(define_expand “sibcall_value”): Likewise.
	(call_nonlocal_sysv): Remove Darwin special-casing.
	(call_value_nonlocal_sysv): Likewise.

2018-12-12  Iain Sandoe  <>

	* config/rs6000/ (call_indirect_nonlocal_darwin64): Remove.
	(call_nonlocal_darwin64): Remove.
	(call_value_indirect_nonlocal_darwin64): Remove.
	(call_value_nonlocal_darwin64): Remove.
	* config/rs6000/rs6000.c (rs6000_call_template_1): Handle Darwin with
	the same asm output as AIX/ELFv2.  (rs6000_call_sysv): Preserve the
	CALL_LONG flag when needed for Darwin.
	* config/rs6000/ (define expand “call”): Expand Darwin as
	per sysv.
	(define_expand “call_value”): Likewise.
	(define_expand “sibcall”): Likewise.
	(define_expand “sibcall_value”): Likewise.
	(call_indirect_nonlocal_sysv): Mark the clobber mode P.
	(call_nonlocal_sysv): Likewise.
	(call_nonlocal_sysv_secure): Likewise.
	(call_value_indirect_nonlocal_sysv): Likewise.
	(call_value_nonlocal_sysv): Likewise.
	(call_value_nonlocal_sysv_secure): Likewise.
	(call_local64): Mark the clobber DI.
	(call_value_local64): Likewise.

2018-12-11  Jakub Jelinek  <>

	PR tree-optimization/88444
	* tree-vrp.c (register_edge_assert_for_2): Only register assertions
	for conversions if rhs1 is a SSA_NAME.

2018-12-11  Dimitar Dimitrov  <>

	* cfgexpand.c (asm_clobber_reg_is_valid): Also produce
	error when stack pointer is clobbered.
	(expand_asm_stmt): Refactor clobber check in separate function.

2018-12-11  Eric Botcazou  <>

	* config/rs6000/vxworks.h (RS6000_STARTING_FRAME_OFFSET): Define,
	accounting for STACK_BOUNDARY 128.

2018-12-11  Jakub Jelinek  <>

	PR target/88425
	* config/i386/ (*x86_mov<SWI48:mode>cc_0_m1_neg_leu<SWI:mode>):
	New define_insn_and_split.

2018-12-11  Richard Biener  <>

	PR middle-end/88448
	PR middle-end/88415
	* gimple.c (gimple_assign_set_rhs_with_ops): Revert previous
	* tree-complex.c (update_complex_assignment): Properly transfer
	or clean EH info around gimple_assign_set_rhs_with_ops.

2018-12-11  Richard Earnshaw  <>

	PR target/87369
	* config/aarch64/ (sizem1): Add sizes for SFmode and DFmode.
	(Vbtype): Add SFmode mapping.
	* config/aarch64/ (copysigndf3, copysignsf3): Delete.
	(copysign<GPF:mode>3): New expand pattern.
	(copysign<GPF:mode>3_insn): New insn pattern.

2018-12-11  Richard Biener  <>

	* ccmp.c (ccmp_candidate_p): Use GIMPLE API properly.

2018-12-11  Jakub Jelinek  <>

	PR lto/86004
	* doc/sourcebuild.texi (lto_incremental): Document new effective

2018-12-11  Segher Boessenkool  <>

	PR target/88145
	* config/rs6000/rs6000.c (rs6000_expand_zeroop_builtin): Use
	rs6000_isa_flags instead of rs6000_isa_flags_explicit to decide
	whether soft float is enabled.
	(rs6000_expand_mtfsb_builtin): Ditto.
	(rs6000_expand_set_fpscr_rn_builtin): Ditto.
	(rs6000_expand_set_fpscr_drn_builtin): Ditto.

2018-12-10  Jeff Law  <>

	PR tree-optimization/80520
	* gimple-ssa-split-paths.c (is_feasible_trace): Recognize half
	diamonds that are likely if convertable.

2018-12-10  Martin Sebor  <>

	PR tree-optimization/86196
	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
	base size only of arrays.

2018-12-10  Segher Boessenkool  <>

	* config.gcc (Obsolete configurations): Delete powerpc*-*-*spe*.
	(Unsupported targets): Add powerpc*-*-*spe*.
	(powerpc*-*-*spe*): Delete.
	(powerpc-*-eabispe*): Delete.
	(powerpc-*-rtems*spe*): Delete.
	(powerpc*-*-linux*spe*): Delete.
	(powerpc*-*-linux*): Do not handle the linux*spe* targets.
	(powerpc-wrs-vxworks*spe): Delete.
	(with_cpu setting code): Delete powerpc*-*-*spe* handling.
	* (target powerpc*-*-*spe*): Delete.
	* doc/invoke.texi (PowerPC SPE Options): Delete.
	(PowerPC SPE Options): Delete.
	* config/powerpcspe: Delete.

2018-12-10  Uros Bizjak  <>

	PR target/88418
	* config/i386/i386.c (ix86_expand_sse_cmp): For vector modes,
	check operand 1 with vector_operand predicate.
	(ix86_expand_sse_movcc): For vector modes, check op_true with
	vector_operand, not nonimmediate_operand.

2018-12-10  Richard Biener  <>

	* tree-affine.c (tree_to_aff_combination): Remove unreachable
	MEM_REF case.
	(aff_combination_expand): Cache on SSA names, not possibly
	on conversion trees.  Avoid expanding cases we do not handle.

2018-12-10  Richard Biener  <>

	PR tree-optimization/88427
	* vr-values.c (vr_values::extract_range_from_phi_node):
	Handle symbolic ranges conservatively when trying to drop
	to Inf +- 1.

2018-12-10  Martin Jambor  <>

	PR ipa/88214
	* ipa-prop.c (determine_locally_known_aggregate_parts): Make sure
	we check pointers against pointers.

2018-12-10  Richard Biener  <>

	PR middle-end/88415
	* gimple.c (gimple_assign_set_rhs_with_ops): Transfer EH
	info to a newly allocated stmt.

2018-12-10  Jerome Lambourg  <>

	* config/vxworksae.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): Define.

2018-12-10  Fredrik Nyström  <>

	PR bootstrap/65725
	* config/sol2.h: Only use if

2018-12-10  Bin Cheng  <>

	* auto-profile.c (afdo_calculate_branch_prob): Convert profile_count
	to afdo precision quality.
	(afdo_callsite_hot_enough_for_early_inline): Likewise.
	(afdo_annotate_cfg): Set profile_count for exit basic block.

2018-12-10  Bin Cheng  <>

	* auto-profile.c (string_table::get_index_by_decl)
	(function_instance::get_function_instance_by_decl): Avoid infinite
	recursion by using DECL_FROM_INLINE.

2018-12-09  John David Anglin  <>

	* config.gcc (hppa*-*-linux*): Add pa/t-pa to tmake_file.  Define
	* config/pa/pa-protos.h (pa_d_target_versions): New prototype.
	* config/pa/pa.h (TARGET_D_CPU_VERSIONS): Define.
	* config/pa/pa-d.c: New file.
	* config/pa/t-pa: New file.

2018-12-08  Bin Cheng  <>

	* ipa-cp.c (update_profiling_info): Call adjust_for_ipa_scaling for
	zero profile count.

2018-12-08  Jakub Jelinek  <>

	PR fortran/88304
	* tree-nested.c (convert_local_reference_stmt): Handle clobbers where
	lhs is not a decl normally, don't call use_pointer_in_frame on that

2018-12-08  Eric Botcazou  <>

	PR rtl-optimization/88390
	* dwarf2cfi.c (struct dw_cfi_row): Add window_save field.
	(cfi_row_equal_p): Compare it.
	(dwarf2out_frame_debug_cfa_window_save): Add FAKE parameter.
	If FAKE is false, set window_save of the current row.
	(dwarf2out_frame_debug) <REG_CFA_TOGGLE_RA_MANGLE>: Call above
	function with FAKE parameter set to true.
	<REG_CFA_WINDOW_SAVE>: Likewise but with FAKE parameter set to false.
	(change_cfi_row): Emit a DW_CFA_GNU_window_save if necessary.

2018-12-07  Peter Bergner  <>

	PR target/87496
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
	-mabi=ieeelongdouble and -mabi=ibmlongdouble without -mlong-double-128.
	Do not error for -mabi=ibmlongdouble and no ISA 2.06 support.
	* doc/invoke.texi: Document -mabi=ibmlongdouble and -mabi=ieeelongdouble
	require -mlong-double-128.

2018-12-07  Kyrylo Tkachov  <>

	* config/aarch64/aarch64.c (aarch64_tuning_override_functions): Add
	sve_width entry.
	(aarch64_parse_sve_width_string): Define.

2018-12-07  Jeff Law  <>

	PR middle-end/87813
	* gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Add
	m_update_global_ranges member.  Add corresponding argument to ctor.
	* gimple-ssa-evrp-analyze.c
	(evrp_range_analyzer::evrp_range_analyzer): Add new argument and
	initialize m_update_global_ranges.
	(evrp_range_analyzer::set_ssa_range_info): Assert that we are
	updating global ranges.
	(evrp_range_analyzer::record_ranges_from_incoming_edge): Only
	update global ranges if explicitly requested.
	(evrp_range_analyzer::record_ranges_from_phis): Similarly.
	(evrp_range_analyzer::record_ranges_from_stmt): Similarly.
	* gimple-ssa-evrp.c (evrp_dom_walker): Pass new argument to
	evrp_range_analyzer ctor.
	* gimple-ssa-sprintf.c (sprintf_dom_walker): Similarly.
	* tree-ssa-dom.c (dom_opt_dom_walker): Similarly.

2018-12-07  Kyrylo Tkachov  <>

	* config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum):
	* config/aarch64/aarch64-protos.h (struct tune_params): Add sve_width
	* config/aarch64/aarch64.c (generic_tunings,cortexa35_tunings,
	cortexa53_tunings, cortexa57_tunings, cortexa72_tunings,
	cortexa73_tunings, exynosm1_tunings, thunderx_tunings,
	thunderx_tunings, tsv110_tunings, xgene1_tunings, qdf24xx_tunings,
	saphira_tunings, thunderx2t99_tunings, emag_tunings):
	Specify sve_width.
	(aarch64_estimated_poly_value): Define.

2018-12-07  Paul A. Clarke  <>

	PR target/88408
	* config/rs6000/mmintrin.h (_mm_packs_pu16): Correctly use "__vector".

2018-12-07  Vladimir Makarov  <>

	PR rtl-optimization/88349
	* ira-costs.c (record_operand_costs): Check bigger reg class on

2018-12-07  Richard Sandiford  <>

	* config/aarch64/ (*mul<mode>3, *v<optab><mode>3):
	Split the patterns after reload if we don't need the predicate
	(*post_ra_mul<mode>3, *post_ra_v<optab><mode>3): New patterns.

2018-12-07  Richard Sandiford  <>

	* config/aarch64/ (SVE_UNPRED_FP_BINARY): New code
	(sve_fp_op): Handle minus and mult.
	* config/aarch64/ (*add<mode>3, *sub<mode>3)
	(*mul<mode>3): Split the patterns after reload if we don't
	need the predicate operand.
	(*post_ra_<sve_fp_op><mode>3): New pattern.

2018-12-07  Bin Cheng  <>

	* profile-count.h (profile_count::oeprator>=): Fix typo by inverting
	return condition when *this is precise zero.

2018-12-07  Jakub Jelinek  <>

	PR target/85593
	* final.c (rest_of_handle_final): Don't call collect_fn_hard_reg_usage
	for functions with naked attribute.

	PR c/88367
	* tree-vrp.c (extract_range_from_binary_expr): For POINTER_PLUS_EXPR
	with -fno-delete-null-pointer-checks, set_nonnull only if the pointer
	is non-NULL and offset is known to have most significant bit clear.
	* vr-values.c (vr_values::vrp_stmt_computes_nonzero): For ADDR_EXPR
	of MEM_EXPR, return true if the MEM_EXPR has non-zero offset with
	most significant bit clear.  If offset does have most significant bit
	set and -fno-delete-null-pointer-checks, don't return true even if
	the base pointer is non-NULL.

2018-12-06  Alexandre Oliva  <>

	* cselib.c (cselib_record_sets): Skip strict low part sets
	with NULL src_elt.

2018-12-06  Paul A. Clarke  <>

	PR target/88316
	* config/rs6000/smmintrin.h: New file.
	* config.gcc: Add smmintrin.h to extra_headers for powerpc*-*-*.

2018-12-06  Paul A. Clarke  <>

	PR target/88316
	* config/rs6000/mmintrin.h (_mm_unpackhi_pi8): Fix for big-endian.
	(_mm_unpacklo_pi8): Likewise.
	(_mm_mulhi_pi16): Likewise.
	(_mm_packs_pi16): Fix for big-endian. Use preferred API.
	(_mm_packs_pi32): Likewise.
	(_mm_packs_pu16): Likewise.
	* config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix for big-endian.
	(_mm_cvtss_si64): Likewise.
	(_mm_cvtpi32x2_ps): Likewise.
	(_mm_shuffle_ps): Likewise.
	(_mm_movemask_pi8): Likewise.
	(_mm_mulhi_pu16): Likewise.
	(_mm_sad_pu8): Likewise.
	(_mm_sad_pu8): Likewise.
	(_mm_cvtpu16_ps): Fix for big-endian. Use preferred API.
	(_mm_cvtpu8_ps): Likewise.
	(_mm_movemask_ps): Better #else case for big-endian (no functional
	(_mm_shuffle_pi16): Likewise.
	* config/rs6000/emmintrin.h (_mm_movemask_pd): Fix for big-endian.
	Better #else case for big-endian (no functional change).
	(_mm_movemask_epi8): Likewise.
	(_mm_shufflehi_epi16): Likewise.
	(_mm_shufflelo_epi16): Likewise.
	(_mm_shuffle_epi32): Likewise.
	(_mm_mul_epu32): Fix for big-endian.
	(_mm_bsrli_si128): Likewise.
	(_mm_cvtps_pd): Better #else case for big endian.
	(_mm_mulhi_epi16): Likewise.
	(_mm_mul_epu32): Likewise.
	(_mm_slli_si128): Likewise.
	(_mm_sll_epi16): Likewise.
	(_mm_sll_epi32): Likewise.
	(_mm_sra_epi16): Likewise.
	(_mm_sra_epi32): Likewise.
	(_mm_srl_epi16): Likewise.
	(_mm_srl_epi32): Likewise.
	(_mm_mulhi_epu16): Likewise.
	(_mm_sad_epu8): Likewise.
	* config/rs6000/pmmintrin.h (_mm_hadd_ps): Fix for big-endian.
	(_mm_sub_ps): Likewise.
	* config/rs6000/mmintrin.h (_mm_cmpeq_pi8): Fix for 32-bit mode.
	* gcc/config/rs6000/tmmintrin.h (_mm_alignr_epi8): Use ENDIAN
	macros consistently (no functional changes).
	(_mm_alignr_pi8): Likewise.

2018-12-06  Iain Sandoe  <>

	PR c++/87380
	* config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC) Remove, use the
	* config/rs6000/darwin7.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New.

2018-12-06  Vladimir Makarov  <>

	PR target/88282
	* ira.c (ira_init_register_move_cost): Use info from
	hard_regno_mode_ok instead of contains_reg_of_mode.
	* ira-costs.c (contains_reg_of_mode): Don't use cost from bigger
	hard register class for some fixed hard registers.

2018-12-06  Segher Boessenkool  <>

	* doc/extend.texi (Using Assembly Language with C): Document asm inline.
	(Size of an asm): Fix typo.  Document asm inline.
	* gimple-pretty-print.c (dump_gimple_asm): Handle asm inline.
	* gimple.h (enum gf_mask): Add GF_ASM_INLINE.
	(gimple_asm_set_volatile): Fix typo.
	(gimple_asm_inline_p): New.
	(gimple_asm_set_inline): New.
	* gimplify.c (gimplify_asm_expr): Propagate the asm inline flag from
	tree to gimple.
	* ipa-icf-gimple.c (func_checker::compare_gimple_asm): Compare the
	gimple_asm_inline_p flag, too.
	* tree-core.h (tree_base): Document that protected_flag is ASM_INLINE_P
	in an ASM_EXPR.
	* tree-inline.c (estimate_num_insns): If gimple_asm_inline_p return
	a minimum size for an asm.
	* tree.h (ASM_INLINE_P): New.

2018-12-06  Segher Boessenkool  <>

	PR inline-asm/55681
	* doc/extend.texi (Basic Asm): Update grammar.
	(Extended Asm): Update grammar.

2018-12-06  Iain Sandoe  <>

	PR target/78444
	* config/i386/darwin.h (STACK_BOUNDARY): Remove macro.
	* config/i386/i386.c (ix86_compute_frame_layout): Ensure at least 128b
	stack alignment in non-leaf functions.

2018-12-06  Jakub Jelinek  <>

	PR target/87598
	* config/aarch64/aarch64.c (aarch64_print_address_internal): Don't
	call output_operand_lossage on VOIDmode CONST_INTs.  After
	output_operand_lossage do return false.

2018-12-06  Richard Biener  <>

	* df-problems.c (df_rd_local_compute): Use bitmap_release.
	(df_live_free): Likewise.
	(df_md_local_compute): Likewise.
	(df_md_free): Release df_md_scratch bitmap.
	* loop-invariant.c (calculate_loop_reg_pressure): Use
	* sched-deps.c (true_dependency_cache, output_dependency_cache,
	anti_dependency_cache, control_dependency_cache,
	spec_dependency_cache): Use bitmap instead of bitmap_head *.
	* sched-ebb.c (schedule_ebbs_init): Initialize non-GTY
	dont_calc_deps as bitmap allocated from obstack not GC.
	(schedule_ebbs_finish): Use bitmap_release.
	* sched-rgn.c (schedule_insns): Initialize non-GTY
	not_in_df as bitmap allocated from obstack not GC.
	Use bitmap_release.
	* sel-sched.c (_forced_ebb_heads): Remove premature optimization.
	(sel_region_init): Allocate forced_ebb_heads.
	(sel_region_finish): Free forced_ebb_heads.

2018-12-06  Richard Biener  <>

	* bitmap.c (bitmap_head::crashme): Define.
	* bitmap.h (bitmap_head): Add constexpr default constructor
	poisoning the obstack member.
	(bitmap_head::crashme): Declare.
	(bitmap_release): New function clearing a bitmap and poisoning
	the obstack member.
	* gengtype.c (main): Make it recognize CONSTEXPR.
	* lra-constraints.c (lra_inheritance): Use bitmap_release
	instead of bitmap_clear.
	* ira.c (ira): Work around class-memaccess warning.
	* regrename.c (create_new_chain): Likewise.

2018-12-06  Jakub Jelinek  <>

	PR tree-optimization/85726
	* generic-match-head.c (optimize_successive_divisions_p): New function.
	* gimple-match-head.c (optimize_successive_divisions_p): Likewise.
	* match.pd: Don't combine successive divisions if they aren't exact
	and optimize_successive_divisions_p is false.

	PR fortran/88304
	* tree-nested.c (convert_nonlocal_reference_stmt): Remove clobbers
	for non-local automatic decls.

2018-12-05  David Edelsohn  <>

	* config/rs6000/aix72.h (ASM_DEFAULT_SPEC): Match Power7 processor

2018-12-05  Uros Bizjak  <>

	* dwarf2out.c (field_byte_offset): Remove

2018-12-05  Richard Biener  <>
	    Martin Sebor  <>

	PR c/87028
	* calls.c (get_attr_nonstring_decl): Avoid setting *REF to
	* gcc/gimple-low.c (lower_stmt): Fold builtin calls here.
	* gimplify (maybe_fold_stmt): Avoid folding builtin calls.

2018-12-05  Iain Sandoe  <>

	* (gcc_cv_otool): Set.
	* configure: Regenerate.

2018-12-05  Uros Bizjak  <>

	* config/i386/cygming.h (PCC_BITFIELD_TYPE_MATTERS): Remove.

2018-12-05  Richard Sandiford  <>

	PR tree-optimization/88064
	* tree-vect-patterns.c (vect_convert_input): Convert the result of
	an existing cast if it has the right width but the wrong sign.
	Do not test the signedness of the required result when
	considering whether to split an existing cast; instead split to
	a type with the same signedness as the source of the cast, then
	convert it to the opposite signedness where necessary.
	(vect_recog_over_widening_pattern): Handle sign changes between
	the final PLUS_EXPR and the RSHIFT_EXPR.
	(vect_recog_average_pattern): Use an unsigned operation when
	truncating an addition, subtraction or multiplication.  Cast the
	result back to the "real" signedness before promoting.

2018-12-05  Richard Biener  <>

	PR tree-optimization/86637
	* tree-vectorizer.c (pass_slp_vectorize::execute): Reset
	vect_location at the end.

2018-12-05  Jakub Jelinek  <>

	PR tree-optimization/87360
	* gimple-loop-jam.c (tree_loop_unroll_and_jam): On failure to analyze
	data dependencies, don't return false, just continue.  Formatting
	(merge_loop_tree, bb_prevents_fusion_p, unroll_jam_possible_p,
	fuse_loops): Formatting fixes.

	PR sanitizer/88333
	* cfgexpand.c (expand_stack_vars): If asan_vec is empty, start with
	aligning frame offset to ASAN_RED_ZONE_SIZE bytes.

2018-12-05  Xianmiao Qu  <>

	* config.gcc (csky-*-linux-gnu*): Force .init_array support.

2018-12-05  Segher Boessenkool  <>

	* config/rs6000/rs6000.c (rs6000_function_arg): Only do the special
	aggregate handling on actual AIX, not on somewhat similar systems.
	(rs6000_arg_partial_bytes): Ditto.

2018-12-04  Vladimir Makarov  <>

	PR rtl-optimization/88317
	* lra-constraints.c (split_reg): Don't set up check_only_regs if
	we are outside the inheritance pass.

2018-12-04  Jan Hubicka  <>

	* ipa-prop.c (jump_function_useful_p): New.
	(ipa_read_node_info): Do not allocated useless jump functions.

2018-12-04  David Malcolm  <>

	PR c/82967
	* spellcheck.c (selftest::test_suggestions): Add another assertion.

2018-12-04  Martin Sebor  <>

	* doc/extend.texi (__builtin_has_attribute): Fix typo.

2018-12-04  Jakub Jelinek  <>

	PR target/88188
	* config/rs6000/rs6000.c (ccr_bit): Return -1 instead of assertion
	(print_operand): Use REG_P instead of GET_CODE == REG.
	<case 'D'>: Also check CR_REGNO_P (REGNO (x)).
	<case 't'>: Likewise.  Remove GET_MODE check.
	* config/rs6000/ (scc patterns): Assert ccr_bit didn't
	return -1.

2018-12-04  Martin Sebor  <>

	* doc/extend.texi (attribute aligned): Expand.

2018-12-04  David Edelsohn  <>

	PR target/61976
	* config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates
	in FPRs on AIX.
	(rs6000_arg_partial_bytes): Same.

2018-12-04  Vladimir Makarov  <>

	PR target/88282
	* ira-costs.c (exec): Try bigger class to use smaller register
	move cost.

2018-12-04  Michael Ploujnikov  <>

	PR ipa/88297
	* ipa-cp.c (create_specialized_node): Track clone counters by
	node assembler names.
	(ipcp_driver): Change type of clone_num_suffixes key to const char*.

2018-12-04  Richard Biener  <>

	* tree-vect-loop.c (vect_transform_loop): Fix epilogue iterations
	for epilogue vectorization.

2018-12-04  Richard Biener  <>

	PR tree-optimization/88301
	* tree-vrp.c (register_edge_assert_for_2): Fix sign-conversion
	issues in last commit.

2018-12-04  Richard Biener  <>

	PR tree-optimization/88315
	* tree-vect-loop.c (get_initial_defs_for_reduction): Simplify
	and fix initialization vector for SAD and DOT_PROD SLP reductions.

2018-12-03  Sandra Loosemore  <>

	PR c/59039
	* doc/extend.texi (Nonlocal gotos): New section.

2018-12-03  Uros Bizjak  <>

	* config/i386/ (vec_concatv2df): Change (v,xm,C)
	alternative to (v,vm,c).

2018-12-03  Segher Boessenkool  <>

	* gcc/config.gcc (Unsupported targets): Add powerpc*-*-linux*paired*.
	(powerpc*-*-linux*): Don't handle it here.

2018-12-03  Jeff Law  <>

	* config/h8300/ (<code>qi3_1): Add gcc_unreachable to keep
	warnings quiet.

	* config/h8300/ (low byte masking peepholes): Only accept
	nonimmediate_operand for the to-be-masked operand.

2018-12-03  Richard Biener  <>

	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only
	allow expected function-pointer cast re-instantiation.

2018-12-03  Ilya Leoshkevich  <>

	* common/config/s390/s390-common.c (s390_option_init_struct):
	Use section anchors by default.
	* config/s390/s390.c (s390_check_symref_alignment): Handle
	(TARGET_MAX_ANCHOR_OFFSET): Use short displacement.
	* output.h (assemble_align): Pass `align' as unsigned int, so
	that the value 0x80000000, which corresponds to `aligned(1 <<
	28)', would pass the `align > BITS_PER_UNIT' check.
	* varasm.c (assemble_align): Likewise.

2018-12-03  Julian Brown  <>

	* tree-pretty-print.c (dump_omp_clause): Make default case

2018-12-03  Richard Biener  <>

	PR tree-optimization/88301
	* tree-vrp.c (register_edge_assert_for_2): Handle conversions
	that do not change the value by registering the same assert
	for the operand.

2018-12-03  Richard Biener  <>

	* tree-vect-loop.c (vect_transform_loop): Properly compute
	upper bound for the epilogue when doing epilogue vectorization.

2018-12-03  Ilya Leoshkevich  <>

	PR target/80080
	* cfgcleanup.c (class pass_postreload_jump): New pass.
	(pass_postreload_jump::execute): Likewise.
	(make_pass_postreload_jump): Likewise.
	* passes.def: Add pass_postreload_jump before
	* tree-pass.h (make_pass_postreload_jump): New pass.

2018-12-02  Uros Bizjak  <>

	* config/i386/i386.c (inline_memory_move_cost): Correctly
	compute number of TFmode GPR moves.

2018-12-02  Jakub Jelinek  <>

	PR target/88278
	* config/i386/ (*vec_concatv4sf_0, *vec_concatv4si_0): New insns.

2018-12-02  Jeff Law  <>

	* config/h8300/ (call, call_value): Drop mode from
	operand containing number of bytes pushed.
	(call_insn, call_value_insn): Use mode iterator for number
	of bytes pushed operand.  Make pattern name vary appropriately.

2018-12-02  Jan Hubicka  <>

	* bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges):
	trust precise profiles.

2018-12-02  Jakub Jelinek  <>

	* tree-nested.c (convert_nonlocal_omp_clauses,
	convert_local_omp_clauses): Handle OMP_CLAUSE_IN_REDUCTION,
	(convert_nonlocal_reference_stmt, convert_local_reference_stmt):
	Convert clauses for GIMPLE_OMP_TASKGROUP.

	* omp-low.c (check_omp_nesting_restrictions): Allow cancel or
	cancellation point with taskgroup clause inside of taskloop.  Consider
	a taskloop construct without nogroup clause as implicit taskgroup for
	diagnostics if cancel/cancellation point with taskgroup clause is
	closely nested inside of taskgroup region.

	PR sanitizer/88291
	* asan.c (asan_clear_shadow): Move assert that len is multiple of 4
	to the start of the function.
	(asan_emit_stack_protection): When emitting clearing sequence for
	epilogue, align offset down to ASAN_RED_ZONE_SIZE granularity,
	add last_size_aligned which is last_size padded to multiples of
	ASAN_RED_ZONE_SIZE and emit asan_clear_shadow always on 4 byte

2018-12-01  Jakub Jelinek  <>

	PR sanitizer/88289
	* asan.c (asan_redzone_buffer::flush_redzone_payload): Fix up
	an off-by-one for BYTES_BIG_ENDIAN.

	PR target/54589
	* combine.c (find_split_point): For invalid memory address
	nonobj + obj + const, if reg + obj + const is valid addressing
	mode, split at nonobj.  Use if rather than else if for the
	fallback.  Comment fixes.

2018-11-30  Indu Bhagat  <>

	* coverage.c (get_coverage_counts): Use from_function_decl for precise
	function location.
	* profile-count.c (profile_count::dump): Add handling for precise
	profile quality.
	* profile.c (compute_branch_probabilities): Rely on exec_counts instead
	of profile_info to set profile_status of function.
	(branch_prob): Do not set profile_status of function based on
	profile_info. Done above based on exec_counts.

2018-11-30  Jakub Jelinek  <>

	PR tree-optimization/88274
	* tree-ssa-reassoc.c (optimize_range_tests_xor,
	optimize_range_tests_diff): If type has smaller precision than
	corresponding mode or if it has non-standard min/max, compute
	everything in a standard type for the precision.

	PR testsuite/85368
	* params.def (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT): New param.
	* tree-ssa-ifcombine.c (ifcombine_ifandif): If
	--param logical-op-non-short-circuit is present, override
	LOGICAL_OP_NON_SHORT_CIRCUIT value from the param.
	* fold-const.c (fold_range_test, fold_truth_andor): Likewise.

2018-11-30  Jeff Law  <>

	* optabs.c (expand_binop): Use "machine_mode" rather than
	"enum machine mode" in most recent change.

2018-11-30  Wilco Dijkstra  <>

	PR middle-end/64242
	* builtins.c (expand_builtin_longjmp): Use a temporary when restoring
	the frame pointer.
	(expand_builtin_nonlocal_goto): Likewise.

2018-11-30  David Malcolm  <>

	* diagnostic-core.h (emit_diagnostic): New decl.
	* diagnostic.c (emit_diagnostic): New overload, taking a
	rich_location *.

2018-11-30  David Malcolm  <>

	* pretty-print.c (class selftest::test_pretty_printer): New
	subclass of pretty_printer.
	(selftest::test_prefixes_and_wrapping): New test.
	(selftest::pretty_print_c_tests): Call it.

2018-11-30  Michael Ploujnikov  <>

	Minimize clone counter memory usage in create_virtual_clone.
	* cgraph.h (clone_function_name): Add a variant that takes a
	tree decl.
	* cgraph.h (cgraph_node::create_virtual_clone): Add a new
	argument: num_suffix.
	* cgraphclones.c (cgraph_node::create_virtual_clone): Pass
	num_suffix to clone_function_name.
	(clone_function_name): Add a variant that takes a tree decl.
	* ipa-cp.c (create_specialized_node): Keep track of clone
	counters in clone_num_suffixes hash map.
	(ipcp_driver): Free the counter hash map.
	* ipa-hsa.c (process_hsa_functions): Creates at most one hsa
	clone per function.

2018-11-30  Michael Ploujnikov  <>
	Make function assembly more independent.

	This is achieved by having clone_function_name assign unique clone
	numbers for each function independently.

	* cgraphclones.c: Replaced clone_fn_id_num with clone_fn_ids;
	hash map.
	(clone_function_name_numbered): Use clone_fn_ids.

2018-11-30  Vladimir Makarov  <>

	PR rtl-optimization/88179
	* lra-constraints.c (address_eliminator::address_eliminator):
	Don't eleminate regs in illegitimate address.

2018-11-30  David Malcolm  <>

	PR preprocessor/88257
	* input.c (get_substring_ranges_for_loc): Fix indentation.
	Bulletproof against getting a different files back from
	linemap_resolve_location and expand_location_to_spelling_point.

2018-11-30  Alexander Monakov  <>

	PR gcov-profile/88279
	* tree-profile.c (init_ic_make_global_vars): Call
	decl_default_tls_model for variable and not it's type.

2018-11-30  Sam Tebbs  <>

	* config/arm/arm.h (TARGET_DOTPROD): Add TARGET_VFP5 constraint.

2018-11-30  Martin Liska  <>

	PR sanitizer/81715
	* asan.c (asan_shadow_cst): Remove, partially transform
	into flush_redzone_payload.
	(struct asan_redzone_buffer): New.
	(asan_redzone_buffer::emit_redzone_byte): Likewise.
	(asan_redzone_buffer::flush_redzone_payload): Likewise.
	(asan_redzone_buffer::flush_if_full): Likewise.
	(asan_emit_stack_protection): Use asan_redzone_buffer class
	that is responsible for proper aligned stores and flushing
	of shadow memory payload.
	* asan.h (ASAN_MIN_RED_ZONE_SIZE): New.
	(asan_var_and_redzone_size): Likewise.
	* cfgexpand.c (expand_stack_vars): Use smaller alignment
	(ASAN_MIN_RED_ZONE_SIZE) in order to make shadow memory
	for automatic variables more compact.

2018-11-30  Alan Modra  <>

	* config/rs6000/ (easy_fp_constant): Avoid long
	dependent insn sequences.
	* config/rs6000/rs6000.c (num_insns_constant): Support long
	double constants.
	* config/rs6000/ (mov<mode>_softfloat <FMOVE128>): Adjust
	length attribute.

2018-11-30  Alan Modra  <>

	* config/rs6000/rs6000.c (num_insns_constant_gpr): Renamed from
	num_insns_constant_wide.  Make static.  Revise comment.
	(num_insns_constant_multi): New function.
	(num_insns_constant): Formatting.  Correct CONST_WIDE_INT
	calculation.  Simplify and extract code common to both
	CONST_INT and CONST_DOUBLE.  Add gcc_unreachable for unhandled
	const_double modes.
	* config/rs6000/rs6000-protos.h (num_insns_const_wide): Delete.

2018-11-30  Richard Biener  <>

	PR tree-optimization/88274
	* tree-vrp.c (ranges_from_anti_range): Fix handling of

2018-11-29  Andi Kleen  <>

	* config/i386/i386.c (current_fentry_section): Add.
	(x86_function_profiler): Handle fentry section.
	(ix86_attribute_table): Add fentry section.
	* config/i386/i386.opt: Add -mfentry-section.
	* doc/extend.texi: Document fentry_section attribute.
	* doc/invoke.texi: Document -mfentry-section.

2018-11-29  Andi Kleen  <>

	* config/i386/i386.c (x86_print_call_or_nop): Handle nop name.
	(current_fentry_name): Add.
	(x86_function_profiler): Handle fentry_name attribute.
	(ix86_handle_fentry_name): Add.
	(ix86_attribute_table): Add fentry_name.
	* config/i386/i386.opt: Add -mfentry-name
	* doc/extend.texi: Document fentry_name.
	* doc/invoke.texi: Document minstrument-return.

2018-11-29  Andi Kleen  <>

	* config/i386/i386-opts.h (enum instrument_return): Add.
	* config/i386/i386.c (output_return_instrumentation): Add.
	(ix86_output_function_return): Call output_return_instrumentation.
	(ix86_output_call_insn): Call output_return_instrumentation.
	* config/i386/i386.opt: Add -minstrument-return=.
	* doc/invoke.texi (-minstrument-return): Document.

2018-11-29  Eric Botcazou  <>

	PR target/87807
	* config/sparc/sparc-modes.def: Minor tweak.
	* config/sparc/sparc.c: Minor reordering.
	(sparc_pass_by_reference): Move around.
	(traverse_record_type): Change offset from HOST_WIDE_INT to int.
	(classify_registers): Likewise for bitpos.
	(function_arg_slotno): Remove dead test and tweak comments.
	<MODE_RANDOM>: Remove useless assertion and test whether the
	parameter is named in order to pass it in FP registers.  Return
	the regno for floating-point vector types.
	(compute_int_layout): Change bitpos from HOST_WIDE_INT to int.
	(compute_fp_layout): Likewise.
	(count_registers): Likewise.
	(assign_int_registers): Likewise.
	(assign_fp_registers): Likewise.
	(assign_registers): Likewise.
	(function_arg_record_value): Change size from HOST_WIDE_INT to int
	and use CEIL_NWORDS to compute the number of registers.
	(function_arg_union_value): Minor tweaks.
	(function_arg_vector_value): Add slotno and named parameters, use
	CEIL_NWORDS to compute the number of registers.
	(sparc_function_arg_1): Rework handling of vector types.  Change
	size from HOST_WIDE_INT to int.
	(sparc_arg_partial_bytes): Rework handling of 32-bit ABI and deal
	with vector types for the 64-bt ABI.
	(sparc_function_arg_advance): Likewise.
	(sparc_return_in_memory): Add reference to -fpcc-struct-return.
	(sparc_struct_value_rtx): Return NULL_RTX instead of 0.
	(sparc_function_value_1): Rework handling of vector types.  Change
	size from HOST_WIDE_INT to int.

2018-11-29  Jakub Jelinek  <>

	PR target/88152
	* config/i386/ (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt,
	*<sse2_avx2>_pmovmskb_lt, *<sse2_avx2>_pmovmskb_zext_lt): New
	define_insn_and_split patterns.

	PR target/54700
	* config/i386/
	*<sse4_1_avx2>_pblendvb_lt): Change define_insn into

2018-11-29  Peter Bergner  <>

	PR target/87496
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
	-mabi=ieeelongdouble without both -mpopcntd and -mvsx.

2018-11-29  Uros Bizjak  <>

	* config/i386/i386.c (inline_memory_move_cost):
	Check "in" for 2 in MMX_CLASS_P case.
	* config/i386/ (*mov<mode>_internal): Correct
	alternatives in preferred_for_speed attribute calculation.

2018-11-29  Martin Sebor  <>

	PR c/88172
	PR testsuite/88208
	* doc/extend.texi (attribute constructor): Clarify.

2018-11-29  Martin Liska  <>

	PR middle-end/88246
	* builtins.c (expand_movstr): Fix thinko introduced
	when switching to the new enum.

2018-11-29  qing zhao  <>

	* cif-code.def (EXTERN_LIVE_ONLY_STATIC): New CIF code.
	* common.opt: Add -flive-patching flag.
	* doc/invoke.texi: Document -flive-patching.
	* flag-types.h (enum live_patching_level): New enum.
	* ipa-inline.c (can_inline_edge_p): Disable external functions from
	inlining when flag_live_patching is LIVE_PATCHING_INLINE_ONLY_STATIC.
	* opts.c (control_options_for_live_patching): New function.
	(finish_options): Make flag_live_patching incompatible with flag_lto.
	Control IPA optimizations based on different levels of

2018-11-29  Giuliano Belinassi  <>

	* match.pd (sinh (atanh (x))): New simplification rules.
	(cosh (atanh (x))): Likewise.

2018-11-29  Jakub Jelinek  <>

	PR target/54700
	* config/i386/ (ssebytemode): Add V16SI, V8SI and V4SI entries.
	(ssefltmodesuffix, ssefltvecmode): New define_mode_attrs.
	*<sse4_1_avx2>_pblendvb_lt): New define_insns.

	PR target/88152
	* tree.h (build_uniform_cst, uniform_integer_cst_p): Declare.
	* tree.c (build_uniform_cst, uniform_integer_cst_p): New functions.
	* match.pd (define_predicates): Add uniform_integer_cst_p.
	(cmp @0 INTEGER_CST@1, cmp (convert?@2 @0) INTEGER_CST@1): Adjust
	so that it works also for vector comparisons with uniform constants
	with INTEGER_CST element.

	PR target/88234
	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): For
	vec_add and vec_sub builtins, perform PLUS_EXPR or MINUS_EXPR
	in unsigned_type_for instead of vector integral type where overflow
	doesn't wrap.

2018-11-29  Michael Ploujnikov  <>

	There can be at most one .resolver clone per function
	* config/rs6000/rs6000.c (make_resolver_func): Generate
	resolver symbol with clone_function_name instead of

2018-11-29  Richard Biener  <>

	PR tree-optimization/88243
	* tree-vect-patterns.c (vect_mark_pattern_stmts): Set the def
	type of all pattern-sequence stmts to vect_internal_def.

2018-11-29  Andre Vieira  <>

	PR target/88224
	* config/arm/ (armv7-r): Add FP16conv configurations.
	(cortex-r7, cortex-r8): Update default and add new configuration.
	* doc/invoke.texi (armv7-r): Add two new vfp options.
	(nofp.dp): Add cortex-r7 and cortex-r8 to the list of targets that
	support this option.

2018-11-29  Alan Modra  <>

	* config/rs6000/rs6000.c (rs6000_emit_move): Disable long
	double split for targets other than Darwin.

2018-11-29  Alan Modra  <>

	* config/rs6000/ (movdi_internal64): Correct lengths.

2018-11-29  Alan Modra  <>

	* config/rs6000/ (easy_fp_constant): Remove code
	dealing with integers in const_double.  Assert on unexpected
	modes.  Delete superfluous ABI_V4 test.
	* config/rs6000/rs6000.c (rs6000_emit_move): Comment fixes.
	Don't call easy_fp_constant for Pmode.
	(rs6000_hash_constant): Remove code dealing with integers in
	(rs6000_legitimate_constant_p): Likewise.
	(output_toc): Formatting, use CONST_DOUBLE_P.

2018-11-29  Alan Modra  <>

	* config/rs6000/ (G, H): Comment on purpose of
	constraint.  Correct mode comments and "G" mode test.
	* config/rs6000/ (movdi_internal32): Remove "GH" from
	alternative handling "F".  Add length attr.  Formatting.
	(mov<mode>_softfloat <FMOVE128>): Delete "GH" from
	alternative, and move "F" to separate alternative.  Correct
	insn lengths.

2018-11-29  Alan Modra  <>

	* config/rs6000/ (easy_vector_constant): Don't call

2018-11-29  Alan Modra  <>

	* config/rs6000/ (indirect_call_operand): New.
	* config/rs6000/rs6000-protos.h (rs6000_pltseq_template),
	(rs6000_sibcall_sysv): Declare.
	* config/rs6000/rs6000.c (init_cumulative_args): Set cookie
	CALL_LONG for -fno-plt.
	(print_operand <T, z, 0>): Handle UNSPEC_PLTSEQ.
	(rs6000_indirect_call_template_1): Emit .reloc directives for
	(rs6000_pltseq_template): New function.
	(rs6000_longcall_ref): Add arg parameter.  Use PLT16 insns if
	relocs supported by assembler.  Move SYMBOL_REF test to callers.
	(rs6000_call_aix): Adjust rs6000_longcall_ref call.  Package
	insns in UNSPEC_PLTSEQ, preserving original func_desc.
	(rs6000_call_sysv): Likewise.
	(rs6000_sibcall_sysv): New function.
	* config/rs6000/rs6000.h (HAVE_AS_PLTSEQ): Provide default.
	* config/rs6000/ (UNSPEC_PLTSEQ, UNSPEC_PLT16_HA,
	(pltseq_tocsave, pltseq_plt16_ha, pltseq_plt16_lo, pltseq_mtctr): New.
	(call_indirect_nonlocal_sysv): Don't differentiate zero from non-zero
	cookie in constraints.  Test explicitly for flags in length attr.
	Handle unspec operand 1.
	(call_value_indirect_nonlocal_sysv): Likewise.
	(call_indirect_aix, call_value_indirect_aix): Handle unspec operand 1.
	(call_indirect_elfv2, call_value_indirect_elfv2): Likewise.
	(sibcall, sibcall_value): Use rs6000_sibcall_sysv.
	(sibcall_indirect_nonlocal_sysv): New pattern.
	(sibcall_value_indirect_nonlocal_sysv): Likewise.
	(sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Remove indirect
	call alternatives.
	* Check for gas plt sequence marker support.
	* configure: Regenerate.

2018-11-29  Alan Modra  <>

	* config/rs6000/ (unspec_tls): New.
	* config/rs6000/rs6000-protos.h (rs6000_call_template),
	(rs6000_sibcall_template): Update prototype.
	(rs6000_longcall_ref): Delete.
	(rs6000_call_sysv): Declare.
	* config/rs6000/rs6000.c (edit_tls_call_insn): New function.
	(global_tlsarg): New variable.
	(rs6000_legitimize_tls_address): Rewrite __tls_get_addr call
	(print_operand): Extract UNSPEC_TLSGD address operand.
	(rs6000_call_template, rs6000_sibcall_template): Remove arg
	parameter, extract from second call operand instead.
	(rs6000_longcall_ref): Make static, localize vars.
	(rs6000_call_aix): Rename parameter to reflect new usage.  Take
	tlsarg from global_tlsarg.  Don't create unused rtl or nop insns.
	(rs6000_sibcall_aix): Rename parameter to reflect new usage.  Take
	tlsarg from global_tlsarg.
	(rs6000_call_sysv): New function.
	* config/rs6000/ Adjust rs6000_call_template and
	rs6000_sibcall_template throughout.
	(tls_gd_aix, tls_gd_sysv, tls_gd_call_aix, tls_gd_call_sysv): Delete.
	(tls_ld_aix, tls_ld_sysv, tls_ld_call_aix, tls_ld_call_sysv): Delete.
	(tls_gdld_nomark): New insn.
	(tls_gd): Swap operand order.  Simplify mode selection.
	(tls_gd_high, tls_gd_low): Swap operand order.
	(tls_ld): Remove const_int 0 vector element from UNSPEC_TLSLD.
	Simplify mode selection.
	(tls_ld_high, tls_ld_low): Similarly adjust UNSPEC_TLSLD.
	(call, call_value): Don't assert for second call operand.
	Use rs6000_call_sysv.

2018-11-29  Alan Modra  <>

	* config/rs6000/ (call_indirect_nonlocal_darwin64),
	(call_nonlocal_darwin64, call_value_indirect_nonlocal_darwin64),
	(call_value_nonlocal_darwin64): Remove constraints from second call
	arg, the rounded_stack_size_rtx arg.
	* config/rs6000/ (tls_gd_aix, tls_gd_sysv, tls_gd_call_aix),
	(tls_gd_call_sysv, tls_ld_aix, tls_ld_sysv, tls_ld_call_aix),
	(tls_ld_call_sysv, call_local32, call_local64, call_value_local32),
	(call_value_local64, call_indirect_nonlocal_sysv),
	(call_nonlocal_sysv, call_nonlocal_sysv_secure),
	(call_value_indirect_nonlocal_sysv, call_value_nonlocal_sysv),
	(call_value_nonlocal_sysv_secure, call_local_aix),
	(call_value_local_aix, call_nonlocal_aix, call_value_nonlocal_aix),
	(call_indirect_aix, call_value_indirect_aix, call_indirect_elfv2),
	(call_value_indirect_elfv2, sibcall_local32, sibcall_local64),
	(sibcall_value_local32, sibcall_value_local64, sibcall_aix),
	(sibcall_value_aix): Likewise.

2018-11-29  Alan Modra  <>

	* config/rs6000/ (TLSmode): Delete mode iterator.  Replace
	with P throughout except for call mems which should use SI.
	(tls_abi_suffix, tls_sysv_suffix, tls_insn_suffix): Delete mode
	attributes.  Replace with bits, mode and ptrload respectively.

2018-11-29  Alan Modra  <>

	* config/rs6000/rs6000-protos.h (rs6000_indirect_call_template),
	(rs6000_indirect_sibcall_template): Declare.
	* config/rs6000/rs6000.c (rs6000_indirect_call_template_1),
	(rs6000_indirect_call_template, rs6000_indirect_sibcall_template):
	New functions.
	* config/rs6000/ (call_indirect_nonlocal_sysv),
	(call_value_indirect_nonlocal_sysv, sibcall_nonlocal_sysv),
	(call_indirect_aix, call_value_indirect_aix): Use
	rs6000_indirect_call_template and rs6000_indirect_sibcall_template.
	call_indirect_elfv2, call_value_indirect_elfv2): Likewise, and
	handle both speculation and non-speculation cases.
	(call_indirect_aix_nospec, call_value_indirect_aix_nospec): Delete.
	(call_indirect_elfv2_nospec, call_value_indirect_elfv2_nospec): Delete.

2018-11-29  Alan Modra  <>

	* config/rs6000/rs6000-protos.h (rs6000_call_template): Declare.
	(rs6000_sibcall_template): Declare.
	(macho_call_template): Rename from output_call.
	* config/rs6000/rs6000.c (rs6000_call_template_1): New function.
	(rs6000_call_template, rs6000_sibcall_template): Likewise.
	(macho_call_template): Rename from output_call.
	* config/rs6000/ (tls_gd_aix, tls_gd_sysv),
	(tls_gd_call_aix, tls_gd_call_sysv, tls_ld_aix, tls_ld_sysv),
	(tls_ld_call_aix, tls_ld_call_sysv, call_nonlocal_sysv),
	(call_nonlocal_sysv_secure, call_value_nonlocal_sysv),
	(call_value_nonlocal_sysv_secure, call_nonlocal_aix),
	(call_value_nonlocal_aix): Use rs6000_call_template and update
	occurrences of output_call to macho_call_template.
	(sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv, sibcall_aix),
	(sibcall_value_aix): Use rs6000_sibcall_template.

2018-11-28  Aaron Sawdey  <>

	* config/rs6000/rs6000-string.c (expand_block_clear): Change how
	we determine if unaligned vsx is ok.

2018-11-28  Jan Hubicka  <>

	* predict.c (determine_unlikely_bbs): Forward declare; also determine
	edges that are always known to be taken because it is only likely
	edge out of given BB.
	(tree_estimate_probability): Call before profile guessing to get bit
	of extra precision.

2018-11-28  Jan Hubicka  <>

	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Handle
	profile_probability::always better.

2018-11-28  Jan Hubicka  <>

	* profile-count.h (profile_count::split): Give better result when
	splitting profile_probability::always.

2018-11-28  Vladimir Makarov  <>

	PR target/88207
	* ira-costs.c (scan_one_insn): Process subregs when updating costs
	for pseudos and allocnos from insn.

2018-11-28  David Edelsohn  <>

	* config/rs6000/aix72.h: Update to match aix71.h changes.

2018-11-28  Jeff Law  <>

	* config/h8300/ Add "C" constraint for call insns.
	* config/h8300/ (call, call_value): Turn into a define_expand
	and define_insn pair.  Move invalid call targets into a register in
	the expander and fix constraints in the matching pattern.
	* config/h8300/ (call_expander_operand): Renamed from
	call_insn_operand.  Reject things we shouldn't be trying to handle.
	(call_insn_operand): New predicate for use by the call/call_value
	(small_call_insn_operand): Update appropriately.

2018-11-28  Sam Tebbs  <>

	* config/aarch64/aarch64.c (aarch64_process_target_attr): Replace
	calls to strtok with strtok_r.

2018-11-28  Richard Biener  <>

	PR tree-optimization/88223
	* tree-ssa-sccvn.c (vn_reference_lookup_3): When skipping
	over a stored-same value may-alias store make sure to consider
	partial overlaps which are valid when TBAA reasonings do not
	apply and byte-granular overlaps are possible at all.

2018-11-28  Richard Biener  <>

	PR tree-optimization/88217
	* vr-values.c (vr_values::extract_range_from_phi_node): Make
	sure to handle results > +INF and < -INF correctly when
	trying to drop down to +INF - 1 or -INF + 1.

2018-11-28  Alan Modra  <>

	* xcoffout.c (do_block): Signed/unsigned warning fix.

2018-11-28  Richard Biener  <>

	PR tree-optimization/79351
	* tree-ssa-sccvn.c (vn_reference_lookup_3): For assignments from
	empty CONSTRUCTORs ensure the store is at a constant position.

2018-11-28  Richard Biener  <>

	PR tree-optimization/88229
	* tree-ssa.c (non_rewritable_mem_ref_base): Check DECL_SIZE_UNIT
	is an INTEGER_CST before accessing it so.

2018-11-28  Sam Tebbs  <>

	* doc/invoke.texi (-mtune=): Remove obsolete CPU names.

2018-11-28  Jakub Jelinek  <>

	PR target/88189
	* config/i386/i386.c (ix86_expand_sse_movcc): Handle DFmode and
	SFmode using sse4_1_blendvs[sd] with TARGET_SSE4_1.  Formatting fixes.
	* config/i386/ (sse4_1_blendv<ssemodesuffix>): New pattern.

2018-11-27  Martin Liska  <>

	* gcov.c (generate_results): Append current_working_directory
	only when exists.

2018-11-27  Mike Gulick  <>

	PR preprocessor/83173
	* input.c (dump_location_info): Dump reason and included_from
	fields from line_map_ordinary struct.  Fix indentation when
	location > 5 digits.
	* diagnostic-show-locus.c (num_digits, num_digits): Move to
	diagnostic.c to allow it to be utilized by input.c.
	* diagnostic.c (num_digits, selftest::test_num_digits): Moved
	(selftest::diagnostic_c_tests): Run selftest::test_num_digits.
	* diagnostic.h (num_digits): Add extern definition.

2018-11-27  Fredrik Noring  <>

	* config/mips/mips.c (mips_reorg_process_insns)
	(mips_option_override): Handle `-mfix-r5900'.
	* config/mips/mips.h (ASM_SPEC): Add `mfix-r5900' and
	* config/mips/mips.opt (mfix-r5900): New option.
	* doc/invoke.texi: Document the `r5900' processor name, and
	`-mfix-r5900' and `-mno-fix-r5900' options.

2018-11-27  Jakub Jelinek  <>

	PR target/88188
	* config/rs6000/rs6000.c (print_operand) <case 'D'>: Use
	output_operand_lossage instead of gcc_assert.
	<case 't'>: Likewise.
	<case 'z'>: Likewise.
	<case 'V'>: Use output_operand_lossage instead of gcc_unreachable.

2018-11-27  Jeff Law  <>

	* config/riscv/riscv (riscv_block_mvoe_straight): Use RETURN_BEGIN
	in call to move_by_pieces.

	* config/sh/sh-mem.c (expand_block_move): Use RETURN_BEGIN in call
	to move_by_pieces.

	* config/lm32/lm32.c (lm32_block_move_inline): Use RETURN_BEGIN in
	call to move_by_pieces.

	* config/mips/mips.c (mips_block_move_straight): Use RETURN_BEGIN
	in call to move_by_pieces.

	* config/microblaze/microblaze.c (microblaze_block_move_straight): Use
	RETURN_BEGIN in call to move_by_pieces.
	(microblaze_expand_block_move): Likewise.

2018-11-27  Tamar Christina  <>

	* doc/md.texi (xorsign): Document it.

2018-11-27  Martin Liska  <>

	* config/gnu-user.h (TARGET_F951_OPTIONS): New.
	* gcc.c (find_fortran_preinclude_file): New function
	to handle Fortran pre-include.

2018-11-27  Martin Liska  <>

	* asan.c (asan_emit_stack_protection): Use new enum values
	instead of int constants.
	* builtins.c (expand_builtin_memory_copy_args): Replace int
	type with memop_ret enum type.
	(expand_builtin_mempcpy_args): Likewise.
	(expand_builtin_memcpy): Use new enum values
	instead of int constants. Likewise.
	(expand_builtin_mempcpy): Likewise.
	(expand_movstr): Likewise.
	(expand_builtin_strcpy_args): Likewise.
	(expand_builtin_stpcpy_1): Likewise.
	(expand_builtin_strncpy): Likewise.
	(expand_builtin_memset_args): Likewise.
	* expr.c (move_by_pieces_d::finish_endp): Rename to ...
	(move_by_pieces_d::finish_retmode): ... this.
	(move_by_pieces): Change last argument type to memop_ret.
	(store_by_pieces): Use new enum values
	instead of int constants.
	(emit_block_move_hints): Likewise.
	(emit_push_insn): Likewise.
	(store_expr): Likewise.
	* expr.h (store_by_pieces): Change int to newly added enum
	* rtl.h (enum memop_ret): Define.
	(move_by_pieces): Use the enum type.

2018-11-27  Alan Modra  <>

	* config/rs6000/aix71.h (ASM_SPEC): Don't select default -maix64
	cpu here.
	(ASM_CPU_SPEC): Do so here.  Rewrite using if .. else if .. specs
	form.  Error on missing -mcpu case.
	* config/rs6000/driver-rs6000.c (asm_names <_AIX>): Update NULL case.
	(asm_names <!_AIX>): Add missing cpus.  Update NULL case.  Apply
	PR63177 fix for -mcpu=power8 and -mcpu=powerpc64le.
	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Rewrite using if ..
	else if .. specs form.  Error on missing -mcpu case.  Don't output
	duplicate -maltivec.  Apply PR63177 fix for -mcpu=powerpc64le.

2018-11-26  David Malcolm  <>

	* dump-context.h (dump_context::dump_loc): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.  Convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_context::dump_loc_immediate): Convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_context::dump_gimple_stmt): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::void dump_gimple_stmt_loc): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_gimple_expr): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_gimple_expr_loc): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_generic_expr): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_generic_expr_loc): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_printf_va): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_printf_loc_va): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_dec): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_symtab_node): Likewise.
	(dump_context::begin_scope): Split out 2nd param into
	user and impl locations.
	(dump_context::ensure_pending_optinfo): Add metadata param.
	(dump_context::begin_next_optinfo): Replace dump_location_t param
	with metadata and user location.
	* dumpfile.c (dump_context::dump_loc): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.  Convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_context::dump_loc_immediate): Convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_context::dump_gimple_stmt): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::void dump_gimple_stmt_loc): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_gimple_expr): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_gimple_expr_loc): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_generic_expr): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_generic_expr_loc): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_printf_va): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_printf_loc_va): Likewise; convert
	2nd param from const dump_location_t & to
	const dump_user_location_t &.
	(dump_context::dump_dec): Convert 1st param from
	dump_flags_t to const dump_metadata_t &.
	(dump_context::dump_symtab_node): Likewise.
	(dump_context::begin_scope): Split out 2nd param into
	user and impl locations.
	(dump_context::ensure_pending_optinfo): Add metadata param.
	(dump_context::begin_next_optinfo): Replace dump_location_t param
	with metadata and user location.
	(dump_gimple_stmt): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_gimple_stmt_loc): Likewise; convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_gimple_expr): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_gimple_expr_loc): Likewise; convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_generic_expr): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_generic_expr_loc): Likewise; convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_printf): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_printf_loc): Likewise; convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_dec): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_symtab_node): Likewise.
	(dump_begin_scope): Split out 2nd param into user and impl
	(selftest::assert_impl_location_eq): New function.
	(selftest::test_impl_location): Update to use
	(selftest::test_capture_of_dump_calls): Convert "loc" to
	dump_user_location_t.  Add ASSERT_IMPL_LOCATION_EQ throughout,
	verifying line numbers of dump emissions.
	* dumpfile.h (class dump_metadata_t): New class.
	(dump_printf): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_printf_loc): Likewise; convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_generic_expr_loc): Likewise.
	(dump_generic_expr): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_gimple_stmt_loc): Likewise; convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_gimple_stmt): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_gimple_expr_loc): Likewise; convert 2nd param from
	const dump_location_t & to const dump_user_location_t &.
	(dump_gimple_expr): Convert 1st param from dump_flags_t to
	const dump_metadata_t &.
	(dump_symtab_node): Likewise.
	(dump_dec): Likewise.
	(dump_begin_scope): Split out 2nd param into user and impl
	(auto_dump_scope::auto_dump_scope): Split "loc" param into a user
	location and impl_location, and capture the impl_location.
	(AUTO_DUMP_SCOPE): Rename param from LOC to USER_LOC.
	* loop-unroll.c (report_unroll): Update for changes to
	dump_printf_loc and dump_printf.
	* (opt_problem::opt_problem): Update for change to
	(selftest::test_building_json_from_dump_calls): Convert "loc" from
	dump_location_t to dump_user_location_t.
	* (optinfo::emit_for_opt_problem): Update for change in
	* profile.c (compute_branch_probabilities): Update for change to
	* selftest.h (ASSERT_STR_CONTAINS_AT): New macro.
	* tree-vect-slp.c (vect_print_slp_tree): Update for change to

2018-11-27  Jozef Lawrynowicz  <>

	* doc/sourcebuild.texi: Document check_effective_target_int_eq_float
	and check_effective_target_ptr_eq_long.

2018-11-27  Alan Modra  <>

	* config.gcc (powerpc*-*-freebsd*, powerpc-*-netbsd*),
	(powerpc-*-eabisimaltivec*, powerpc-*-eabisim*, powerpc-*-elf*),
	(powerpc-*-eabialtivec*, powerpc-*-eabi*, powerpc-*-rtems*),
	(powerpc-wrs-vxworks*, powerpc-*-lynxos*, powerpcle-*-elf*),
	(powerpcle-*-eabisim*, powerpcle-*-eabi*): Add gnu-user.h to tm_file.
	* config/rs6000/freebsd.h (CPLUSPLUS_CPP_SPEC),
	(ASM_APP_ON, ASM_APP_OFF): Don't define.
	* config/rs6000/freebsd64.h (ASM_APP_ON, ASM_APP_OFF): Don't define.
	* config/rs6000/lynx.h (ASM_APP_ON, ASM_APP_OFF): Don't define.
	* config/rs6000/linux64.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/rs6000/netbsd.h (CPLUSPLUS_CPP_SPEC),
	* config/rs6000/rtems.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/rs6000/sysv4.h (GNU_USER_TARGET_CRTI): Redefine.
	(LINK_EH_SPEC): Don't define.

2018-11-26  Martin Sebor  <>

	PR 87756
	* expr.c (string_constant): Handle top-level decls of all character
	types and subobjects of narrow character type.

2018-11-27  Alan Modra  <>

	* config.gcc (powerpc*-*-linux*): Add linux.h to tm_file.
	* config/rs6000/linux.h (TARGET_OS_CPP_BUILTINS): Use
	(RS6000_ABI_NAME): Define.
	* config/rs6000/linux64.h (TARGET_OS_CPP_BUILTINS): Use
	(MUSL_DYNAMIC_LINKER32): Undef before defining.
	* config/rs6000/sysv4.h (MUSL_DYNAMIC_LINKER): Undef before defining.
	not already defined.
	(CPP_OS_LINUX_SPEC): Remove defines and asserts handled by

2018-11-26  Jozef Lawrynowicz  <>

	* doc/sourcebuild.texi: Document check_effective_target_newlib_nano_io.

2018-11-26  Jakub Jelinek  <>

	PR target/88195
	* config/i386/i386.c (def_builtin2): If tcode == VOID_FTYPE_UINT64
	and !TARGET_64BIT, return NULL_TREE.

	PR c++/86900
	* dwarf2out.c (secname_for_decl): For functions with
	DECL_SECTION_NAME if in_cold_section_p, try to return
	current_function_section's name if it is a named section.

2018-11-26  Maya Rashish  <>

	PR target/58397
	* (*-*-netbsd*): Use x-netbsd and host-netbsd.o.
	* config/x-netbsd: New file.
	* config/host-netbsd: New file.

2018-11-26  Jozef Lawrynowicz  <>

	* doc/sourcebuild.texi: Document check_effective_target_size20plus.
	Clarify documentation for check_effective_target_size32plus.

2018-11-26  Aaron Sawdey  <>

	* config/rs6000/rs6000-string.c (expand_cmp_vec_sequence): Rename
	and modify expand_strncmp_vec_sequence.
	(emit_final_compare_vec): Rename and modify emit_final_str_compare_vec.
	(generate_6432_conversion): New function.
	(expand_block_compare): Add support for vsx.
	(expand_block_compare_gpr): New function.
	* config/rs6000/rs6000.opt (rs6000_block_compare_inline_limit): Increase
	default limit to 63 because of more compact vsx code.

2018-11-26  Uros Bizjak  <>

	PR target/88178
	* config/i386/i386.c (dbx_register_map): Use IGNORED_DWARF_REGNUM
	for registers for which no debug information can be generated.
	Use INVALID_REGNUM for non-existent registers.
	(dbx64_register_map): Ditto.
	(svr4_dbx_register_map): Ditto.

2018-11-26  Sandra Loosemore  <>

	PR c/57182
	* doc/invoke.texi (Optimize Options): Document that
	-freorder-functions also uses "hot" and "cold" attributes.

2018-11-26  Kyrylo Tkachov  <>

	* config/aarch64/aarch64.c (aarch64_mangle_type): Fix typo in comment.

2018-11-26  Kyrylo Tkachov  <>

	* config/arm/ (mul64): Rename to...
	(widen_mul64): ... This.
	* config/arm/ Rename mul64 to widen_mul64.
	* config/arm/ Likewise.
	* config/arm/ Likewise.
	* config/arm/ Likewise.
	* config/arm/ Likewise.
	* config/arm/ Likewise.
	* config/arm/ Likewise.
	* config/arm/ Likewise.
	* config/arm/ Likewise.
	* config/arm/ Likewise.

2018-11-26  Richard Biener  <>

	PR tree-optimization/88182
	* tree-vect-loop.c (vectorizable_reduction): Pick up single
	correct reduc_def_info.
	* tree-vect-slp.c (vect_analyze_slp_instance): Set
	STMT_VINFO_REDUC_DEF of the first stmt.

2018-11-26  Andreas Krebbel  <>

	* doc/invoke.texi: Document z14/arch12 -march option.

2018-11-25  Sandra Loosemore  <>

	PR c/57166
	* doc/invoke.texi (Option Summary): Add -Wmissing-noreturn.
	(Warning Options): Likewise.

2018-11-25  Sandra Loosemore  <>

	PR web/79738
	* doc/extend.texi (Common Function Attributes): Clarify that
	functions with "const" attribute can read const global variables.

2018-11-26  Alan Modra  <>

	* config/rs6000/rs6000.h (OBJECT_PEF, TARGET_MACOS): Delete.

2018-11-25  Sandra Loosemore  <>

	PR other/54265
	* doc/extend.texi (Common Variable Attributes): Use preferred
	placement of type attributes in examples, plus whitespace fixes.
	(Type Attributes): Clarify why placement of attributes
	immediately after struct/union/enum keyword is preferred.
	(Common Type Attributes): Use preferred placement of type
	attributes in examples, plus more whitespace fixes.

2018-11-25  Paul Koning  <>

	* config/pdp11/pdp11.h (TARGET_HAS_NO_HW_DIVIDE): Define.

2018-11-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
	attributes): Document d_runtime.

2018-11-25  Vladimir Makarov  <>

	PR bootstrap/88157
	* ira-costs.c (record_operand_costs): Initiate register move cost
	for mode.

2018-11-23  Jeff Law  <>

	PR rtl-optimization/87468
	* tree-ssa-threadupdate.c (create_block_for_threading): Clear
	EDGE_IGNORE on all outgoing edges of the duplicate block.

2018-11-23  Vladimir Makarov  <>

	PR bootstrap/88157
	* ira-costs.c (record_operand_costs): Use bigger hard reg class if
	its mode does not fit to the original class.

2018-11-23  Martin Sebor  <>

	PR tree-optimization/87756
	* expr.c (string_constant): Synthesize a string literal from
	the address of a constant character.
	* tree.c (build_string_literal): Add an argument.
	* tree.h (build_string_literal): Same.

2018-11-23  Christoph Muellner  <>

	* config/aarch64/aarch64-cores.def: Define emag.
	* config/aarch64/ Regenerated with emag.
	* config/aarch64/aarch64.c (emag_tunings): New struct.
	* doc/invoke.texi: Document mtune value.

2018-11-23  Christoph Muellner  <>
	    Philipp Tomsich  <>

	* config/aarch64/aarch64.c (xgene1_tunings): Optimize Xgene1 tunings
	for GCC 9.
	* config/aarch64/aarch64.c (xgene1_tunings): Add Xgene1 specific
	prefetch tunings.
	* config/aarch64/aarch64.c (xgene1_addrcost_table): Correct the post-modify
	* config/arm/aarch-cost-tables.h (xgene1_extra_costs): Update the cost table
	for XGene1.

2018-11-23  Richard Biener  <>

	PR tree-optimization/88149
	* tree-vect-slp.c (vect_slp_analyze_node_operations): Detect
	the case where there are two different def types for the
	same operand at different operand position in the same stmt.

2018-23-11  Mihail Ionescu  <>

	* config/arm/arm.c (arm_expand_compare_and_swap): Simplify and call
	(arm_evpc_neon_vuzp): Likewise gen_neon_vuzp_internal.
	(arm_evpc_neon_vtrn): Likewise gen_neon_vtrn_internal.
	(arm_evpc_neon_vext): Likewise gen_neon_vext_internal.
	(arm_evpc_neon_vzip): Likewise gen_neon_vzip_internal.
	(arm_evpc_neon_vrev): Replace the function pointer and simplify the mode
	* config/arm/ (neon_vext<mode>),
	(neon_vrev64<mode>, neon_vrev32<mode>),
	(neon_vrev16<mode>, neon_vtrn<mode>_internal),
	(neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Add an '@'character
	before the pattern name.
	* config/arm/
	(atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): Likewise.

2018-11-23  Jakub Jelinek  <>

	PR tree-optimization/86614
	* gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return early
	if TREE_NO_WARNING is set on ref.ref.

2018-11-22  Sandra Loosemore  <>
	    Alan Coopersmith  <>

	PR c/53608
	* doc/extend.texi (Designated Inits): Clarify handling of multiple
	initializers for unions.

2018-11-22  Jan Hubicka  <>

	PR lto/88142
	* ipa-devirt.c (type_variants_equivalent_p): Drop warn and warned
	parameters; do not warn here.
	(odr_subtypes_equivalent_p): Likewise.
	(warn_odr): Fix typo.
	(warn_types_mismatch): Do not output confused warnings on integer types.
	(odr_types_equivalent_p): Update.

2018-11-22  Jakub Jelinek  <>

	* config/i386/i386.c (ix86_option_override_internal,
	ix86_can_inline_p, classify_argument, construct_container,
	ix86_expand_prologue, ix86_expand_split_stack_prologue,
	ix86_expand_carry_flag_compare, expand_set_or_movmem_via_loop,
	expand_setmem_epilogue_via_loop, promote_duplicated_reg,
	ix86_expand_set_or_movmem, ix86_init_builtins_va_builtins_abi):
	Formatting fixes.

	* config/i386/i386.c (ix86_option_override_internal): For
	stack_protector_guard related options, use opts_set->x_ instead
	of global_options_set. and prefix options with opts->x_ .  Move
	defaults for offset and reg into else block.

2018-11-22  Uros Bizjak  <>

	* config/i386/i386.c (ix86_check_avx_upper_register):
	Return true for all SSE registers with mode bitsize > 128.

2018-11-22  Vladimir Makarov  <>

	PR rtl-optimization/87718
	* ira-costs.c: Remove trailing white-spaces.
	(record_operand_costs): Add a special treatment for moves
	involving a hard register.

2018-11-22  Uros Bizjak  <>

	* config/i386/i386.c (ix86_avx_emit_vzeroupper): Remove.
	(ix86_emit_mode_set) <case AVX_U128>: Emit vzeroupper here.

2018-11-22  Martin Liska  <>

	* common/config/i386/i386-common.c (processor_names): Add
	static assert and add missing "znver2".
	(ix86_get_valid_option_values): Add checking assert for null
	values and add "native" value if feasible.
	* config/i386/i386.h: Do not declare size of processor_names.
	* common/config/i386/i386-common.c:
	* config/i386/i386.c: Add static assert for size
	of processor_cost_table.

2018-11-22  Thomas Preud'homme  <>

	* target-insns.def (stack_protect_combined_set): Define new standard
	pattern name.
	(stack_protect_combined_test): Likewise.
	* cfgexpand.c (stack_protect_prologue): Try new
	stack_protect_combined_set pattern first.
	* function.c (stack_protect_epilogue): Try new
	stack_protect_combined_test pattern first.
	* config/arm/arm.c (require_pic_register): Add pic_reg and compute_now
	parameters to control which register to use as PIC register and force
	reloading PIC register respectively.  Insert in the stream of insns if
	(legitimize_pic_address): Expose above new parameters in prototype and
	adapt recursive calls accordingly.  Use pic_reg if non null instead of
	cached one.
	(arm_load_pic_register): Add pic_reg parameter and use it if non null.
	(arm_legitimize_address): Adapt to new legitimize_pic_address
	(thumb_legitimize_address): Likewise.
	(arm_emit_call_insn): Adapt to require_pic_register prototype change.
	(arm_expand_prologue): Adapt to arm_load_pic_register prototype change.
	(thumb1_expand_prologue): Likewise.
	* config/arm/arm-protos.h (legitimize_pic_address): Adapt to prototype
	(arm_load_pic_register): Likewise.
	* config/arm/ (guard_addr_operand): New predicate.
	(guard_operand): New predicate.
	* config/arm/ (movsi expander): Adapt to legitimize_pic_address
	prototype change.
	(builtin_setjmp_receiver expander): Adapt to thumb1_expand_prologue
	prototype change.
	(stack_protect_combined_set): New expander..
	(stack_protect_combined_set_insn): New insn_and_split pattern.
	(stack_protect_set_insn): New insn pattern.
	(stack_protect_combined_test): New expander.
	(stack_protect_combined_test_insn): New insn_and_split pattern.
	(arm_stack_protect_test_insn): New insn pattern.
	* config/arm/ (thumb1_stack_protect_test_insn): New insn pattern.
	* config/arm/ (UNSPEC_SP_SET): New unspec.
	(UNSPEC_SP_TEST): Likewise.
	* doc/md.texi (stack_protect_combined_set): Document new standard
	pattern name.
	(stack_protect_set): Clarify that the operand for guard's address is
	(stack_protect_combined_test): Document new standard pattern name.
	(stack_protect_test): Clarify that the operand for guard's address is

2018-11-22  Richard Biener  <>

	PR tree-optimization/88148
	* tree-ssa-loop-niter.c (simplify_replace_tree): Get optional
	valueization callback parameter and handle it.
	* tree-ssa-loop-niter.h (simplify_replace_tree): Export.
	* tree-ssa-sccvn.c (process_bb): Eliminate in loop niter trees.

2018-11-22  Richard Biener  <>

	PR lto/87229
	PR lto/88112
	* lto-streamer-out.c (lto_is_streamable): Allow CALL_EXPRs
	which can appear in size expressions.
	* tree-streamer-in.c (unpack_ts_base_value_fields): Stream
	(streamer_read_tree_bitfields): Stream CALL_EXPR_IFN.
	* tree-streamer-out.c (pack_ts_base_value_fields): Stream
	(streamer_write_tree_bitfields): Stream CALL_EXPR_IFN.

	PR lto/87229
	* tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
	sizepos values.

2018-11-22  Richard Biener  <>

	PR tree-optimization/88069
	* tree-ssa-sccvn.c (visit_phi): Tweak previous fix to not
	apply to default defs.

2018-11-22  Jakub Jelinek  <>

	PR target/85644
	PR target/86832
	* config/i386/i386.c (ix86_option_override_internal): Default
	ix86_stack_protector_guard to SSP_TLS only if TARGET_THREAD_SSP_OFFSET
	is defined.
	* config/i386/ (stack_protect_set, stack_protect_set_<mode>,
	stack_protect_test, stack_protect_test_<mode>): Use empty condition

2018-11-22  Martin Liska  <>

	PR sanitizer/88017
	* config/i386/i386.c (ix86_option_override_internal): Error
	about usage -mabi=ms and -fsanitize=thread.

2018-11-21  Uros Bizjak  <>

	Revert the revert:
	2013-10-26  Vladimir Makarov  <>

	2013-10-25  Vladimir Makarov  <>

	* lra-spills.c (lra_final_code_change): Remove useless move insns.

2018-11-21  Uros Bizjak  <>

	PR middle-end/88129
	* function.c (expand_function_end): Do not emit extra blockage insn.

2018-11-21  Lokesh Janghel  <>

	PR target/85667
	* config/i386/i386.c (function_value_ms_64): Return AX_REG instead
	of FIRST_SSE_REG for 4 or 8 byte modes.

2018-11-21  Jan Hubicka  <>

	PR lto/87957
	* tree.c (fld_decl_context): Break out from ...
	(free_lang_data_in_decl): ... here; free TREE_PUBLIC, TREE_PRIVATE
	(fld_incomplete_type_of): Build copy of TYP_DECL.
	* ipa-devirt.c (free_enum_values): Rename to ...
	(free_odr_warning_data): ... this one; free also duplicated TYPE_DECLs
	(get_odr_type): Initialize odr_vtable_hash if needed.

2018-11-21  Alexandre Oliva  <>

	* final.c (compute_discriminator): Declare.  Renamed from...
	(maybe_set_discriminator): ... this.  Set and return a local.
	(override_discriminator): New.
	(final_scan_insn_1): Set it.
	(notice_source_line): Adjust.  Always set discriminator.

2018-11-21  Jakub Jelinek  <>

	PR target/87839
	* config/aarch64/ (@aarch64_compare_and_swap<mode>): Use
	rIJ constraint for aarch64_plus_operand rather than rn.

2018-11-21  Renlin Li  <>

	PR middle-end/84877
	* explow.h (get_dynamic_stack_size): Declare it as external.
	* explow.c (record_new_stack_level): Remove function static attribute.
	* function.c (assign_stack_local_1): Dynamically align the stack slot
	addr for parameter copy on the stack.

2018-11-21  Richard Biener  <>

	PR bootstrap/88133
	* bitmap.c (bitmap_last_set_bit): Refactor to avoid warning.
	* (bitmap.o-warn): Remove again.

2018-11-20  Jeff Law  <>

	PR tree-optimization/88069
	* tree-ssa-dom.c (record_equivalences_from_phis): Propagate away
	degenerate virtual PHIs.

2018-11-21  H.J. Lu  <>

	PR target/87317
	* config/i386/ (sse4_1_<code>v8qiv8hi2<mask_name>): Replace
	nonimmediate_operand with register_operand.
	(avx2_<code>v8qiv8si2<mask_name>): Likewise.
	(sse4_1_<code>v4qiv4si2<mask_name>): Likewise.
	(sse4_1_<code>v4hiv4si2<mask_name>): Likewise.
	(sse4_1_<code>v2qiv2di2<mask_name>): Likewise.
	(avx512f_<code>v8qiv8di2<mask_name>): Likewise.
	(avx2_<code>v4qiv4di2<mask_name>): Likewise.
	(avx2_<code>v4hiv4di2<mask_name>): Likewise.
	(sse4_1_<code>v2hiv2di2<mask_name>): Likewise.
	(sse4_1_<code>v2siv2di2<mask_name>): Likewise.
	(*sse4_1_<code>v8qiv8hi2<mask_name>_1): New pattern.
	(*sse4_1_<code>v8qiv8hi2<mask_name>_2): Likewise.
	(*avx2_<code>v8qiv8si2<mask_name>_1): Likewise.
	(*avx2_<code>v8qiv8si2<mask_name>_2): Likewise.
	(*sse4_1_<code>v4qiv4si2<mask_name>_1): Likewise.
	(*sse4_1_<code>v4qiv4si2<mask_name>_2): Likewise.
	(*sse4_1_<code>v4hiv4si2<mask_name>_1): Likewise.
	(*sse4_1_<code>v4hiv4si2<mask_name>_2): Likewise.
	(*avx512f_<code>v8qiv8di2<mask_name>_1): Likewise.
	(*avx512f_<code>v8qiv8di2<mask_name>_2): Likewise.
	(*avx2_<code>v4qiv4di2<mask_name>_1): Likewise.
	(*avx2_<code>v4qiv4di2<mask_name>_2): Likewise.
	(*avx2_<code>v4hiv4di2<mask_name>_1): Likewise.
	(*avx2_<code>v4hiv4di2<mask_name>_2): Likewise.
	(*sse4_1_<code>v2hiv2di2<mask_name>_1): Likewise.
	(*sse4_1_<code>v2hiv2di2<mask_name>_2): Likewise.
	(*sse4_1_<code>v2siv2di2<mask_name>_1): Likewise.
	(*sse4_1_<code>v2siv2di2<mask_name>_2): Likewise.

2018-11-21  H.J. Lu  <>

	* read-rtl.c (apply_subst_iterator): Handle define_split and

2018-11-21  Jakub Jelinek  <>

	PR rtl-optimization/87817
	* config/i386/ (bmi2_bzhi_<mode>3, *bmi2_bzhi_<mode>3,
	*bmi2_bzhi_<mode>3_1, *bmi2_bzhi_<mode>3_1_ccz): Use IF_THEN_ELSE
	in the pattern to avoid triggering UB when operands[2] is zero.
	(tbm_bextri_<mode>): New expander.  Renamed the old define_insn to ...
	(*tbm_bextri_<mode>): ... this.

2018-11-21  Tom de Vries  <>

	PR driver/79855
	* params.def (HOT_BB_COUNT_FRACTION): Terminate help message with

2018-11-21  Andreas Krebbel  <>

	* Add check for Binutils to determine whether vector
	load/store alignments hints are being supported.
	* Regenerate.
	* configure: Regenerate.
	* config/s390/s390.c (print_operand): Support new output
	modifier A.
	* config/s390/ ("movti"): Append alignment hint output
	using the new output modifier 'A'.
	* config/s390/ ("mov<mode>", "*vec_tf_to_v1tf")
	("*vec_ti_to_v1ti"): Likewise.

2018-11-20  Martin Sebor  <>

	* doc/extend.texi (Other Builtins): Add __builtin_has_attribute.

2018-11-20  Jan Hubicka  <>

	PR lto/84044
	* ipa-devirt.c (odr_types_equivalent_p): Use operand_equal_p to
	compare ENUM values.

2018-11-20  Jakub Jelinek  <>

	PR tree-optimization/87895
	* omp-simd-clone.c (ipa_simd_modify_function_body): When removing
	or replacing GIMPLE_RETURN, set EDGE_FALLTHRU on the edge to EXIT.
	(simd_clone_adjust): Don't set EDGE_FALLTHRU here. In a loop that
	redirects edges to EXIT to edges to incr_bb, iterate while EXIT
	has any preds and always use EDGE_PRED (, 0).

2018-11-20  Uros Bizjak  <>

	PR target/88070
	* mode-switching.c (create_pre_exit): After reload, always split the
	fallthrough edge to the exit block.

2018-11-20  Jan Hubicka  <>

	* ipa-devirt.c (add_type_duplicate): Do not ICE on incomplete enums.
	* tree.c (build_array_type_1): Forward declare.
	(fld_type_variant_equal_p): Add INNER_TYPE parameter.
	(fld_type_variant): Likewise.
	(fld_simplified_types): New hash.
	(fld_process_array_type): New function.
	(fld_incomplete_type_of): Handle array and enumeration types.
	(fld_simplified_type): Handle simplification of arrays.
	(free_lang_data): Allocate and free simplified types hash.

2018-11-20  Jan Hubicka  <>

	PR lto/87957
	* ipa-devirt.c (odr_subtypes_equivalent_p): Report ODR violation
	when sybtype already violates ODR.
	(get_odr_type): Do not ICE when insert is false and type duplicate
	is not registered yet.
	(register_odr_type): Be sure to register subtypes first.

2018-11-20  Andreas Krebbel  <>

	* config/s390/ ("clztidi2"): Swap the RTX's written to the
	DImode parts of the target operand.

2018-11-20  Nathan Sidwell  <>

	PR 87926
	* (bitmap.o-warn): Use -Wno-error=array-bounds.

2018-11-20  Jan Hubicka  <>

	PR lto/87997
	* tree.c (free_lang_data_in_cgraph): Add argument fld; break out
	type checking to...
	(free_lang_data) ... here; update call of free_lang_data_in_cgraph.

2018-11-20  Jan Hubicka  <>

	PR ipa/87706
	* ipa-fnsummary.c (pass_ipa_fnsummary): Do not remove functions
	* ipa.c (possible_inline_candidate_p): Break out from ..
	(process_references): ... here ; drop before_inlining_p;
	cleanup handling of alises.
	(walk_polymorphic_call_targets): Likewise.
	(symbol_table::remove_unreachable_nodes): Likewise.
	* passes.c (pass_data_ipa_remove_symbols): New structure.
	(pass_ipa_remove_symbols): New pass.
	(make_pass_ipa_remove_symbols): New function.
	* tree-pass.h (make_pass_ipa_remove_symbols): Declare.
	* passes.def (pass_ipa_remove_symbols): Schedule after early passes.

2018-11-20  Richard Biener  <>

	* tree-vect-stmts.c (vectorizable_condition): Do not get
	at else_clause vect def for EXTRACT_LAST_REDUCTION.  Remove
	pointless vect_is_simple_use calls.

2018-11-20  Richard Biener  <>

	PR tree-optimization/88074
	* tree-ssa-dom.c (pass_dominator::execute): Do not walk

2018-11-20  Richard Biener  <>

	PR tree-optimization/88069
	* tree-ssa-sccvn.c (visit_phi): Do not value-number to unvisited
	virtual PHI arguments.

2018-11-20  Ilya Leoshkevich  <>

	PR target/88083
	* config/s390/ Skip LT(G) peephole when literal pool is
	* rtl.h (contains_constant_pool_address_p): New function.
	* rtlanal.c (contains_constant_pool_address_p): Likewise.

2018-11-20  Richard Biener  <>

	PR middle-end/83215
	* alias.c (component_uses_parent_alias_set_from): Remove
	alias-set zero and TYPE_TYPELESS_STORAGE case both already
	handled in other ways.

2018-11-20  Richard Biener  <>

	PR tree-optimization/88087
	* tree-ssa-pre.c (create_expression_by_pieces): Re-materialize
	call fntype.
	* tree-ssa-sccvn.c (copy_reference_ops_from_call): Remember
	call fntype.

2018-11-20  Richard Biener  <>

	PR middle-end/88089
	* tree-data-ref.c (lambda_matrix_right_hermite): Use abs_hwi.

2018-11-19  Jan Hubicka  <>

	PR lto/87957
	* ipa-devirt.c (free_enum_values): Do not ICE on ODR vilations.

2018-11-19  Sandra Loosemore  <>

	PR driver/50250
	* doc/invoke.texi (Link Options): Mention shared libraries
	in documentation for the -l option.  Simplify discussion and
	point to the system linker documentation for details.

2018-11-19  Peter Bergner  <>

	PR rtl-optimization/88033
	* ira-lives.c (non_conflicting_reg_copy_p): Skip copies from a register
	to itself.  Use HARD_REGISTER_NUM_P.

2018-11-19  Kyrylo Tkachov  <>

	* tree-vect-loop.c (vect_transform_loop): Disable further unrolling
	of the loop if vf is non-constant.

2018-11-19  David Malcolm  <>

	PR tree-optimization/87025
	* dumpfile.c (dump_context::begin_scope): Call end_any_optinfo
	immediately after creating the scope optinfo.
	(selftest::test_pr87025): New function.
	(selftest::dumpfile_c_tests): Call it.
	* (optrecord_json_writer::pop_scope): Assert
	that we're not popping the top-level records array.
	* (optinfo::handle_dump_file_kind): Assert that we're
	not changing the kind of a "scope" optinfo.

2018-11-19  David Malcolm  <>

	PR tree-optimization/87025
	* dump-context.h: Include "optinfo.h".
	(class optrecord_json_writer): New forward decl.
	(dump_context::forcibly_enable_optinfo_p): Delete.
	(dump_context::optinfo_enabled_p): New member function.
	(dump_context::optimization_records_enabled_p): New member
	(dump_context::set_json_writer): New member function.
	(dump_context::emit_optinfo): New member function.
	(dump_context::m_forcibly_enable_optinfo): Delete.
	(dump_context::m_json_writer): New member data.
	* dumpfile.c (dump_context::set_json_writer): New member function.
	(dump_context::finish_any_json_writer): New member function.
	(dump_context::end_scope): Replace call to
	optimization_records_maybe_pop_dump_scope with call to
	(dump_context::optinfo_enabled_p): New member function.
	(dump_context::end_any_optinfo): Replace call to optinfo::emit with call
	to dump_context::emit_optinfo.
	(dump_context::emit_optinfo): New member function.
	(temp_dump_context::temp_dump_context): Replace
	m_forcibly_enable_optinfo with call to set_json_writer.
	(temp_dump_context::~temp_dump_context): Clean up any json writer.
	* (class optrecord_json_writer): Move to
	(the_json_writer): Delete.
	(optimization_records_start): Delete.
	(optimization_records_finish): Delete.
	(optimization_records_enabled_p): Delete, in favor of
	(optimization_records_maybe_record_optinfo): Delete.
	(optimization_records_maybe_pop_dump_scope): Delete.
	* optinfo-emit-json.h: Include "json.h".  Delete forward
	decl of opt_pass.
	(optimization_records_start): Delete.
	(optimization_records_finish): Delete.
	(optimization_records_enabled_p): Delete.
	(optimization_records_maybe_record_optinfo): Delete.
	(optimization_records_maybe_pop_dump_scope): Delete.
	(class optrecord_json_writer): Move here from
	* (optinfo::emit_for_opt_problem): Replace call
	to optinfo::emit with call to dump_context::emit_optinfo.
	(optinfo::emit): Delete, in favor of dump_context::emit_optinfo.
	(optinfo_enabled_p): Delete, in favor of
	(optinfo_wants_inlining_info_p): Update for conversion o
	optimization_records_enabled_p to a member function of
	* optinfo.h (optinfo_enabled_p): Delete, in favor of
	(optinfo::emit): Delete, in favor of dump_context::emit_optinfo.
	* toplev.c: Include "dump-context.h".
	(compile_file): Replace call to optimization_records_finish with
	(do_compile): Replace call to optimization_records_start with
	conditionally creating a optrecord_json_writer for the

2018-11-19  Jakub Jelinek  <>

	PR tree-optimization/88071
	* tree-vect-loop.c (vectorize_fold_left_reduction): Pass true instead
	of false as last argument to gsi_remove.
	* tree-vect-stmts.c (vect_finish_replace_stmt): Pass true instead of
	false as last argument to gsi_replace.

	PR debug/87039
	* omp-expand.c: Don't include debug.h.
	(adjust_context_and_scope): Add REGION argument.  Find DECL_CONTEXT
	from innermost outer parallel, task, teams or target that has a
	child_fn set, or, if there is no such outer region, use
	current_function_decl.  Do the DECL_CONTEXT adjustment regardless of
	whether a suitable BLOCK is found or not.
	(expand_parallel_call, expand_teams_call): Don't call
	adjust_context_and_scope here.
	(grid_expand_target_grid_body): Revert 2017-01-25 changes.
	(expand_omp_taskreg, expand_omp_target): Likewise.  Call
	* dwarf2out.c (dwarf2out_early_global_decl): For
	decl_function_context recurse instead of calling dwarf2out_decl.

2018-11-20  Eric Botcazou  <>

	PR rtl-optimization/85925
	* rtl.h (word_register_operation_p): New predicate.
	* combine.c (record_dead_and_set_regs_1): Only apply specific handling
	for WORD_REGISTER_OPERATIONS targets to word_register_operation_p RTX.
	* rtlanal.c (nonzero_bits1): Likewise.  Adjust couple of comments.
	(num_sign_bit_copies1): Likewise.

2018-11-19  Richard Biener  <>

	PR lto/87229
	* tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
	sizepos values.

2018-11-19  Eric Botcazou  <>

	* compare-elim.c (struct comparison): Add not_in_a field.
	(is_not): New static function.
	(strip_not): Likewise.
	(conforming_compare): Handle a NOT in the first operand.
	(can_eliminate_compare): Likewise.
	(find_comparison_dom_walker::before_dom_children): Likewise.
	(try_eliminate_compare): Likewise.
	* config/visium/ (negsi2_insn_set_carry): Turn into...
	(neg<mode>2_insn_set_carry): ...this and add missing NEG operation.

2018-11-19  Jonathan Wakely  <>

	* doc/extend.texi (Common Type Attributes): Fix typos.

2018-11-19  Martin Liska  <>

	PR gcov-profile/88045
	* coverage.c (coverage_begin_function): Add assert.

2018-11-18  Sandra Loosemore  <>

	PR other/40498
	* doc/extend.texi (Common Function Attributes): Document that
	no_instrument_function applies to -p and -pg, too.
	* doc/invoke.texi (Instrumentation Options): Add cross-references
	to docs for -p, -pg, and -finstrument-functions.

2018-11-18  Alan Modra  <>

	* config/gnu-user.h (GNU_USER_TARGET_CRTI): Define.

2018-11-18  Alan Modra  <>

	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Delete
	!HAVE_LD_PIE variant.

2018-11-17  Nick Clifton  <>
	    Sandra Loosemore  <>

	PR driver/31357
	* doc/invoke.texi (Overall Options): Document that --help and
	--help=<value> options cannot be combined.

2018-11-17  Jim Wilson  <>

	* config/riscv/riscv.c (epilogue_cfa_sp_offset): New.
	(riscv_restore_reg): If restoring HARD_FRAME_POINTER_REGNUM, and
	epilogue_cfa_sp_offset set, then add REG_CFA_DEF_CFA regnote.
	(riscv_expand_epilogue): Initialize epilogue_cfa_sp_offset.  Set it
	to step2 if frame_pointer_needed and step1 is 0.

2018-11-17  Sandra Loosemore  <>

	PR c++/4225
	* doc/cpp.texi (System Headers): Add note about implicit
	extern "C" block on targets that define SYSTEM_IMPLICIT_EXTERN_C.

2018-11-17  Sandra Loosemore  <>

	PR c++/4025
	* doc/invoke.texi (C++ Dialect Options): Clarify usage of

2018-11-17  Jakub Jelinek  <>

	PR tree-optimization/87546
	* tree-vect-patterns.c (vect_look_through_possible_promotion): Add
	min_precision variable, initially set it to orig_precision, only does
	something if op_type's precision is <= min_precision and update
	min_precision whenever calling set_op.

2018-11-16  Jan Hubicka  <>

	PR ipa/87957
	* ipa-devirt.c (warn_odr): Look for main variant to get TYPE_DECL.

2018-11-16  Sandra Loosemore  <>

	* doc/invoke.texi (Option Summary): Fix whitespace and line
	breaks in @gccoptlist environments.
	(Warning Options): Likewise.
	(Optimize Options): Likewise.
	(PowerPC SPE Options): Likewise.
	(RS/6000 and PowerPC Options): Likewise.

2018-11-16  Jeff Law  <>

	* config/mn10300/ (adddi3_degenerate): Remove bogus

2018-11-16  Sandra Loosemore  <>

	PR middle-end/23197
	* doc/invoke.texi (Optimize Options): Update options enabled by
	fprofile-generate, -fprofile-use, and -fauto-profile.

2018-11-16  Jozef Lawrynowicz  <>

	PR target/87927
	* target-def.h: Initialize TARGET_ASM_{,UN}ALIGNED_P{S,D,T}I_OP.
	Add them to the TARGET_ASM_{,UN}ALIGNED_INT_OP structs.
	* target.def: Enumerate TARGET_ASM_{,UN}ALIGNED_P{S,D,T}I_OP in
	the byte_op hook.
	* target.h: Add psi, pdi, pti to struct asm_int_op definition.
	* targhooks.c (default_print_patchable_function_entry): Assert
	asm_int_op does not return a NULL string.
	* varasm.c (integer_asm_op): Return the op for a partial int type
	when the requested size does not correspond to an integer type.
	* config/msp430/msp430.c: Initialize TARGET_ASM_{,UN}ALIGNED_PSI_OP.
	* doc/tm.texi: Regenerate.

2018-11-12  Jason Merrill  <>

	* gimplify.c (gimplify_case_label_expr): Handle hot/cold attributes.

2018-11-16  Michael Meissner  <>

	* config/rs6000/ (wF constraint): Remove power9
	fusion documentation.  Just document wF's use for power8 fusion.
	* config/rs6000/ (p9_fusion_reg_operand): Delete.
	(fusion_gpr_addis): Delete power9 fusion support.  Change power8
	fusion support to require the upper 12 bits to be all 0's or all
	(fusion_gpr_mem_load): Add comment.
	(fusion_addis_mem_combo_load): Remove power9 fusion support.
	(fusion_addis_mem_combo_store): Delete.
	(fusion_offsettable_mem_operand): Delete.
	* config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Do not set
	power8 fusion here.
	(ISA_3_0_MASKS_SERVER): Delete power9 fusion.
	(POWERPC_MASKS): Delete power9 fusion.
	* config/rs6000/rs6000-protos.h (emit_fusion_load_store): Delete.
	(fusion_p9_p): Delete.
	(expand_fusion_p9_load): Delete.
	(expand_fusion_p9_store): Delete.
	(emit_fusion_p9_load): Delete.
	(emit_fusion_p9_store): Delete.
	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Delete power9
	fusion support.
	(rs6000_option_override_internal): Set power8 fusion based on
	whether we are tuning for power8.  Delete power9 fusion support.
	(rs6000_opt_masks): Delete -mpower9-fusion switch.
	(emit_fusion_load): Rename emit_fusion_load_store to
	emit_fusion_load, and drop fusion store support.  Update callers.
	(emit_fusion_load_store): Likewise.
	(emit_fusion_gpr_load): Likewise.
	(fusion_p9_p): Delete.
	(expand_fusion_p9_load): Delete.
	(expand_fusion_p9_store): Delete.
	(emit_fusion_p9_load): Delete.
	(emit_fusion_p9_store): Delete.
	* config/rs6000/ (UNSPEC_FUSION_P9): Delete.
	(GPR_FUSION): Delete.
	(FPR_FUSION): Delete.
	(power9 fusion peephole2s): Delete.
	(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Delete.
	(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Delete.
	(fusion_vsx_<P:mode>_<FPR_FUSION:mode>_load): Delete.
	(fusion_vsx_<P:mode>_<FPR_FUSION:mode>_store): Delete.
	(fusion_p9_<mode>_constant): Delete.
	* config/rs6000/rs6000.opt (-mpower9-fusion): Delete undocumented
	power9 fusion switch.
	* doc/md.texi (PowerPC constraints): Update wF constraint
	documentation for power8 fusion only.

2018-11-16  Jakub Jelinek  <>

	PR rtl-optimization/87475
	* cfgrtl.c (patch_jump_insn): Allow redirection failure for
	(cfg_layout_redirect_edge_and_branch): Don't ICE if ret is NULL.

2018-11-16  Uros Bizjak  <>

	PR target/88051
	* config/i386/ (floatunsdidf2): Allow only 64bit AVX512F targets.
	* config/i386/ (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
	(movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.

2018-11-16  Jakub Jelinek  <>

	PR middle-end/88032
	* optabs.c (expand_binop): For op0_mode use GET_MODE (op0), unless it
	is VOIDmode, in which case use int_mode.  Similarly for op1_mode.

2018-11-16  Eric Botcazou  <>

	* tree-switch-conversion.h (switch_decision_tree::emit_case_nodes): Add
	location_t parameter.
	(switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
	(switch_decision_tree::do_jump_if_equal): Likewise.
	* tree-switch-conversion.c (switch_decision_tree::emit): Pass location
	of switch statement to emit_case_nodes.
	(switch_decision_tree::emit_cmp_and_jump_insns): Add LOC parameter and
	set it on the newly built GIMPLE comparison statement.
	(switch_decision_tree::do_jump_if_equal): Likewise.
	(switch_decision_tree::emit_case_nodes): Add LOC parameter and pass it
	in calls to do_jump_if_equal as well as recursive calls.

2018-11-16  Andi Kleen  <>

	* config/i386/ Allow memory operands to ptwrite.

2018-11-16  Michael Matz  <>

	* system.h (PRsa): New macro.
	(SIZE_AMOUNT): Cast number to uint64_t.
	* alloc-pool.h (pool_usage::dump): Don't use %zu but PRsa.
	(pool_usage::dump_footer): Likewise and also use PRIu64.
	* bitmap.h (bitmap_usage::dump): Likewise.
	* ggc-common.c (ggc_usage::dump): Likewise.
	* ggc-page.c (ggc_print_statistics): Likewise.
	* input.c (dump_line_table_statistics): Likewise.
	* mem-stats.h (mem_usage::dump): Likewise.
	(mem_usage::dump_footer): Likewise.
	* rtl.c (dump_rtx_statistics): Likewise.
	* tree-cfg.c (dump_cfg_stats): Likewise.
	* tree-dfa.c (dump_dfa_stats): Likewise.
	* tree-phinodes.c (phinodes_print_statistics): Likewise.
	* tree-ssanames (ssanames_print_statistics): Likewise.
	* vec.c (vec_usage::dump): Likewise.
	(vec_usage::dump_footer): Likewise.

2018-11-16  Richard Biener  <>

	PR tree-optimization/88011
	* tree-vrp.c (extract_range_from_binary_expr): Fix error in
	replacing set_value_range_to_undefined and
	set_value_range_to_varying with method calls.

2018-11-16  Ilya Leoshkevich  <>

	* config/s390/
	(*r<noxa>sbg_<mode>_srl_bitmask): Do not delegate arithmetic to
	(*r<noxa>sbg_<mode>_sll): Likewise.
	(*r<noxa>sbg_<mode>_srl): Likewise.
	(*r<noxa>sbg_sidi_srl): New pattern.

2018-11-16  Jerome Lambourg  <>

	* config/vxworks.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): New macro.
	* config/vxworks.c: Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead
	of TARGET_VXWORKS_RTP to set targetm.have_ctors_dtors.

2018-11-15  Sandra Loosemore  <>

	PR c++/25759
	* doc/extend.texi (Common Type Attributes): Make it explicit
	that attribute "packed" can apply to C++ classes.

2018-11-15  Martin Sebor  <>

	PR c++/87541
	PR c++/87542
	* tree.c (type_argument_type): New function.
	* tree.h (type_argument_type): Declare it.
	* gcc/doc/extend.texi (alloc_align): Update and clarify.
	(alloc_size, nonnull, sentinel): Same.

2018-11-15  Andrew Stubbs  <>
	    Kwok Cheung Yeung  <>

	* tree-vect-stmts.c (vectorizable_store): Don't ICE when
	int_mode_for_size fails.
	(vectorizable_load): Likewise.

2018-11-15  David Malcolm  <>

	* doc/ux.texi (Group logically-related diagnostics): Move
	discussion of auto_diagnostic_group into this new subsection.
	Give an example of where this grouping is used.

2018-11-15  David Malcolm  <>

	PR other/19165
	* (OBJS): Move json.o to...
	(OBJS-libcommon): and add diagnostic-format-json.o.
	* common.opt (fdiagnostics-format=): New option.
	(diagnostics_output_format): New enum.
	* New file.
	* diagnostic.c (default_diagnostic_final_cb): New function, taken
	from start of diagnostic_finish.
	(diagnostic_initialize): Initialize final_cb to
	(diagnostic_finish): Move "being treated as errors" messages to
	default_diagnostic_final_cb.  Call any final_cb.
	(default_diagnostic_finalizer): Add diagnostic_t param.
	(diagnostic_report_diagnostic): Pass "orig_diag_kind" to
	diagnostic_finalizer callback.
	* diagnostic.h (enum diagnostics_output_format): New enum.
	(diagnostic_finalizer_fn): Reimplement, adding diagnostic_t param.
	(struct diagnostic_context): Add "final_cb".
	(default_diagnostic_finalizer): Add diagnostic_t param.
	(diagnostic_output_format_init): New decl.
	* doc/invoke.texi (-fdiagnostics-format): New option.
	* dwarf2out.c (gen_producer_string): Ignore
	* gcc.c (driver_handle_option): Handle OPT_fdiagnostics_format_.
	* lto-wrapper.c (append_diag_options): Ignore it.
	* opts.c (common_handle_option): Handle it.

2018-11-15  David Malcolm  <>

	PR tree-optimization/88015
	* graphite-isl-ast-to-gimple.c
	(translate_isl_ast_to_gimple::scop_to_isl_ast): Add missing check
	for dump_enabled_p.
	* graphite-sese-to-poly.c (build_poly_scop): Likewise.

2018-11-15  Richard Biener  <>

	PR middle-end/88029
	* gimple.c (gimple_call_flags): Union flags from decl, type
	and call fntype.
	* trans-mem.c (is_tm_pure_call): Simplify.

2018-11-15  Richard Biener  <>

	PR tree-optimization/88031
	* tree-vect-loop.c (vectorizable_reduction): Move check
	for multiple types earlier so we get the expected dump.
	Simplify calls to vectorizable_condition.
	* tree-vect-stmts.h (vectorizable_condition): Update prototype.
	* tree-vect-stmts.c (vectorizable_condition): Instead of
	reduc_def and reduc_index take just a flag.  Simplify
	code-generation now that we can rely on the defs being set up.
	(vectorizable_comparison): Remove unused argument.

2018-11-15  Richard Biener  <>

	PR tree-optimization/88030
	* tree-complex.c (need_eh_cleanup): New global.
	(update_complex_assignment): Mark blocks that need EH update.
	(expand_complex_comparison): Likewise.
	(tree_lower_complex): Allocate and deallocate need_eh_cleanup,
	perform EH cleanup and schedule CFG cleanup if that did anything.

2018-11-15  Jakub Jelinek  <>

	PR rtl-optimization/88018
	* cfgrtl.c (fixup_abnormal_edges): Guard moving insns to fallthru edge
	on the presence of fallthru edge, rather than if it is a USE or not.

2018-11-15  Richard Biener  <>

	PR middle-end/87917
	* tree-data-ref.c (analyze_miv_subscript): Guard calls to
	analyze_subscript_affine_affine properly.

2018-11-15  Xianmiao Qu  <>

	* config/csky/csky-linux-elf.h (LINUX_DYNAMIC_LINKER): Remove.
	(LINUX_TARGET_LINK_SPEC): Update the dynamic linker's name.

2018-11-15  Bin Cheng  <>

	PR tree-optimization/84648
	* tree-ssa-loop-niter.c (adjust_cond_for_loop_until_wrap): New.
	(number_of_iterations_cond): Adjust exit cond for loop-until-wrap case
	by calling adjust_cond_for_loop_until_wrap.

2018-11-15  Sandra Loosemore  <>

	PR other/56334
	* doc/extend.texi (Common Function Attributes): Clarify linker
	restrictions on "aligned" attribute.
	(Common Variable Attributes): Likewise.  Mention that linker
	restrictions don't apply to stack-allocated variables.

2018-11-15  Joern Rennecke  <>

	* gensupport.c (add_predicate_code): Properly handle ZERO_EXTRACT
	as an lvalue.

2018-11-14  Sandra Loosemore  <>

	PR lto/55102
	PR lto/56700
	* doc/invoke.texi (Optimize Options): Remove bad example about
	interaction between -flto and -O.  Replace it with a note that
	you need to compile with -O and not just link.  Copy-edit -flto
	discussion to reduce verbiage and improve flow.

2018-11-14  Sandra Loosemore  <>

	PR middle-end/59658
	* doc/invoke.texi (Optimize Options): Clarify that -O0 and -Og
	also suppress many optimizations.  Alphabetize option lists for
	-O1, -O2, and -Os.  Add list of options disabled with -Og, and
	correct documentation for those options to say that.
	* opts.c (default_options_table): Sort table by level and option
	name, to make it easier to correlate to the manual.

2018-11-14  Uros Bizjak  <>

	* config/i386/i386.c (ix86_print_operand_address_as): Simplify
	printing of the names of segment registers.

2018-11-14  Nathan Sidwell  <>

	PR debug/88006
	PR debug/87462
	* dwarf2out.c (dwarf2out_finish): Apply resolve_addr to comdat
	type list.

2018-11-14  David Malcolm  <>

	* (CFLAGS-optinfo-emit-json.o): Add $(ZLIBINC).

2018-11-14  Jakub Jelinek  <>

	P1236R1 - Signed integers are two's complement
	* doc/invoke.texi (Wshift-overflow): Adjust documentation for c++2a.

	PR bootstrap/86739
	* hash-map.h (hash_map::iterator::reference_pair): New class.
	(hash_map::iterator::operator*): Return it rather than std::pair.

2018-11-14  Jeff Law  <>

	* optabs.c (expand_binop): Pass INT_MODE to operand_subword_force
	iff the operand is a constant.

2018-11-14  Aldy Hernandez  <>

	* gimple-ssa-evrp-analyze.c
	(evrp_range_analyzer::record_ranges_from_incoming_edge): Rename
	ignore_equivs_equal_p to equal_p.
	* ipa-cp.c (meet_with_1): Use equal_p instead of
	* ipa-prop.c (ipa_vr_ggc_hash_traits::equal): Same.
	* tree-vrp.c (value_range::ignore_equivs_equal_p): Remove.
	(value_range::operator==): Remove.
	(value_range::operator!=): Remove.
	(vrp_prop::visit_stmt): Use equal_p.
	* tree-vrp.h (value_range): Remove operator==, operator!=,
	* vr-values.c (update_value_range): Use equal_p.

2018-11-14  Michael Matz  <>

	PR middle-end/86575
	* gimplify.c (collect_fallthrough_labels): Add new argument,
	return location via that, don't modify statements.
	(warn_implicit_fallthrough_r): Adjust call, don't use
	statement location directly.

2018-11-14  Richard Biener  <>

	PR middle-end/87985
	* tree-data-ref.c (split_constant_offset): Add wrapper
	allocating a cache hash-map.
	(split_constant_offset_1): Cache results of expanding
	expressions from SSA def stmts.

2018-11-14  Richard Biener  <>

	PR middle-end/88021
	* tree-data-ref.c (lambda_matrix_row_add): Change const1 argument
	to lambda_int.
	(lambda_vector_mult_const): Likewise.
	(lambda_matrix_right_hermite): Use lambda_int temporaries.

2018-11-14  Wilco Dijkstra  <>
	    Jackson Woodruff  <>

	PR 71026/tree-optimization
	* match.pd: Simplify floating point comparisons.

2018-11-14  Jakub Jelinek  <>

	PR rtl-optimization/87817
	* config/i386/i386.c (ix86_fold_builtin): For _bzhi_u{32,64} if
	last argument has low 8 bits clear, fold to 0.

2018-11-14  Iain Sandoe  <>

	* tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Cast

2018-11-14  Richard Biener  <>

	PR tree-optimization/88019
	* graphite-isl-ast-to-gimple.c (ternary_op_to_tree): Rewrite
	COND_EXPR arguments to non-trapping overflow.

2018-11-14  Claudiu Zissulescu  <>

	* config/arc/arc.h (reg_class): Reorder registers classes, remove
	unused register classes.
	(REG_CLASS_NAMES): Likewise.
	(FIXED_REGISTERS): Make lp_count fixed.
	(BASE_REG_CLASS): Remove ACC16_BASE_REGS reference.
	* config/arc/arc.c (arc_conditional_register_usage): Remove unused
	register classes, use constants for register numbers, remove
	reg_class_contents references.
	(arc_process_double_reg_moves): Add asserts.
	(arc_secondary_reload): Remove LPCOUNT_REG reference, use
	lra_in_progress predicate.
	(arc_init_reg_tables): Remove unused register classes.
	(arc_register_move_cost): Likewise.
	(arc_preferred_reload_class): Likewise.
	(hwloop_optimize): Update rtx patterns involving lp_count register.
	(arc_return_address_register): Rename ILINK1, INLINK2 regnums macros.
	* config/arc/ ("c"): Choose between GENERAL_REGS and
	CHEAP_CORE_REGS.  Former one will be used for LRA.
	("Rac"): Choose between GENERAL_REGS and ALL_CORE_REGS.  Former
	one will be used for LRA.
	("w"): Choose between GENERAL_REGS and WRITABLE_CORE_REGS.  Former
	one will be used for LRA.
	Former one will be used for LRA.
	("f"): Delete constraint.
	("k"): Likewise.
	("e"): Likewise.
	("l"): Change it from register constraint to constraint.
	* config/arc/ (movqi_insn): Remove unsed lp_count constraints.
	(movhi_insn): Likewise.
	(movsi_insn): Update pattern.
	(arc_lp): Likewise.
	(dbnz): Likewise.
	(stack_tie): Remove 'b' constraint letter.
	(R4_REG): Define.
	(R9_REG, R15_REG, R16_REG, R25_REG): Likewise.
	(R32_REG, R40_REG, R41_REG, R42_REG, R43_REG, R44_REG): Likewise.
	(R57_REG, R59_REG, PCL_REG): Likewise.
	(ILINK1_REGNUM): Renamed to ILINK1_REG.
	(ILINK2_REGNUM): Renamed to ILINK2_REG.
	(Rgp): Remove.
	(SP_REGS): Likewise.
	(Rcw): Remove unused reg classes.
	* config/arc/ (dest_reg_operand): Just default on
	register_operand predicate.
	(mpy_dest_reg_operand): Likewise.
	(move_dest_operand): Use macros instead of constants.
	* config/arc/arc.opt (mlra): Switch to lra as default.

2018-11-14  Richard Biener  <>

	PR tree-optimization/87974
	* tree-vect-loop.c (vectorizable_reduction): When computing
	the vectorized reduction PHI vector type ignore constant
	and external defs.

2018-11-14  Jakub Jelinek  <>

	PR tree-optimization/87977
	* tree-ssa-math-opts.c (optimize_recip_sqrt): Don't reuse division
	stmt, build a new one and replace the old one with it.  Formatting fix.
	Call release_ssa_name (x) if !has_other_use and !delete_div.
	(pass_cse_reciprocals::execute): Before calling optimize_recip_sqrt
	verify lhs of stmt is still def.

2018-11-13  Peter Bergner  <>

	PR rtl-optimization/87507
	* lower-subreg.c (operand_for_swap_move_operator): New function.
	(simple_move): Strip simple operators.
	(find_pseudo_copy): Likewise.
	(resolve_operand_for_swap_move_operator): New function.
	(resolve_simple_move): Strip simple operators and swap operands.

2018-11-13  Jakub Jelinek  <>

	PR tree-optimization/87898
	* omp-simd-clone.c (ipa_simd_modify_stmt_ops): Formatting fix.
	(ipa_simd_modify_function_body): Remove debug stmts where the first
	argument was changed into a non-decl.

2018-11-13  Peter Bergner  <>

	PR rtl-optimization/87899
	* lra-lives.c (start_living): Update white space in comment.
	(enum point_type): New.
	(sparseset_contains_pseudos_p): New function.
	(update_pseudo_point): Likewise.
	(make_hard_regno_live): Use HARD_REGISTER_NUM_P macro.
	(make_hard_regno_dead): Likewise.  Remove ignore_reg_for_conflicts
	handling.  Move early exit after adding conflicts.
	(mark_pseudo_live): Use HARD_REGISTER_NUM_P macro.  Add early exit
	if regno is already live.  Remove all handling of program points.
	(mark_pseudo_dead): Use HARD_REGISTER_NUM_P macro.  Add early exit
	after adding conflicts.  Remove all handling of program points and
	(mark_regno_live): Use HARD_REGISTER_NUM_P macro.  Remove return value
	and do not guard call to mark_pseudo_live.
	(mark_regno_dead): Use HARD_REGISTER_NUM_P macro.  Remove return value
	and do not guard call to mark_pseudo_dead.
	(check_pseudos_live_through_calls): Use HARD_REGISTER_NUM_P macro.
	(process_bb_lives): Use HARD_REGISTER_NUM_P and HARD_REGISTER_P macros.
	Use new function update_pseudo_point.  Handle register copies by
	removing the source register from the live set.  Handle INOUT operands.
	Update to the next program point using the unused_set, dead_set and
	start_dying sets.
	(lra_create_live_ranges_1): Use HARD_REGISTER_NUM_P macro.

2018-11-13  David Malcolm  <>

	* builtins.c: Replace "source_location" with "location_t".
	* diagnostic-show-locus.c: Likewise.
	* diagnostic.c: Likewise.
	* dumpfile.c: Likewise.
	* gcc-rich-location.h: Likewise.
	* genmatch.c: Likewise.
	* gimple.h: Likewise.
	* gimplify.c: Likewise.
	* input.c: Likewise.
	* input.h: Likewise.  Eliminate the typedef.
	* omp-expand.c: Likewise.
	* selftest.h: Likewise.
	* substring-locations.h (get_source_location_for_substring):
	Rename to...
	(get_location_within_string): ...this.
	* tree-cfg.c: Replace "source_location" with "location_t".
	* tree-cfgcleanup.c: Likewise.
	* tree-diagnostic.c: Likewise.
	* tree-into-ssa.c: Likewise.
	* tree-outof-ssa.c: Likewise.
	* tree-parloops.c: Likewise.
	* tree-phinodes.c: Likewise.
	* tree-phinodes.h: Likewise.
	* tree-ssa-loop-ivopts.c: Likewise.
	* tree-ssa-loop-manip.c: Likewise.
	* tree-ssa-phiopt.c: Likewise.
	* tree-ssa-phiprop.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-ssa.h: Likewise.
	* tree-vect-loop-manip.c: Likewise.

2018-11-13  Michael Ploujnikov  <>

	* doc/extend.texi: Fix typo in the weakref description.

2018-11-13  Richard Biener  <>

	PR tree-optimization/86991
	* tree-vect-loop.c (vect_is_slp_reduction): Delay reduction
	group building until we have successfully detected the SLP
	(vect_is_simple_reduction): Remove fixup code here.

2018-11-13  David Malcolm  <>

	* dumpfile.c (VERIFY_DUMP_ENABLED_P): New macro.
	(dump_gimple_stmt): Use it.
	(dump_gimple_stmt_loc): Likewise.
	(dump_gimple_expr): Likewise.
	(dump_gimple_expr_loc): Likewise.
	(dump_generic_expr): Likewise.
	(dump_generic_expr_loc): Likewise.
	(dump_printf): Likewise.
	(dump_printf_loc): Likewise.
	(dump_dec): Likewise.
	(dump_dec): Likewise.
	(dump_hex): Likewise.
	(dump_symtab_node): Likewise.
	* (tree_loop_interchange::interchange):
	Guard dump call with dump_enabled_p.
	* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Likewise.
	* graphite-optimize-isl.c (optimize_isl): Likewise.
	* graphite.c (graphite_transform_loops): Likewise.
	* tree-loop-distribution.c (pass_loop_distribution::execute): Likewise.
	* tree-parloops.c (parallelize_loops): Likewise.
	* tree-ssa-loop-niter.c (number_of_iterations_exit): Likewise.
	* tree-vect-data-refs.c (vect_analyze_group_access_1): Likewise.
	(vect_prune_runtime_alias_test_list): Likewise.
	* tree-vect-loop.c (vect_update_vf_for_slp): Likewise.
	(vect_estimate_min_profitable_iters): Likewise.
	* tree-vect-slp.c (vect_record_max_nunits): Likewise.
	(vect_build_slp_tree_2): Likewise.
	(vect_supported_load_permutation_p): Likewise.
	(vect_slp_analyze_operations): Likewise.
	(vect_slp_analyze_bb_1): Likewise.
	(vect_slp_bb): Likewise.
	* tree-vect-stmts.c (vect_analyze_stmt): Likewise.
	* tree-vectorizer.c (try_vectorize_loop_1): Likewise.
	(pass_slp_vectorize::execute): Likewise.
	(increase_alignment): Likewise.

2018-11-13  David Malcolm  <>

	PR ipa/87955
	* ipa-inline.c (report_inline_failed_reason): Guard calls to
	cl_target_option_print_diff and cl_optimization_print_diff with
	if (dump_file).

2018-11-13  David Malcolm  <>

	* doc/invoke.texi (-fsave-optimization-record): Note that the
	output is compressed.
	* Include <zlib.h>.
	(optrecord_json_writer::write): Compress the output.

2018-11-13  Aldy Hernandez  <>

	* tree-vrp.c (value_range_base::dump): Dump type.
	Do not use INF nomenclature for 1-bit types.
	(dump_value_range): Group all variants to common dumping code.
	(debug): New overloaded functions for value_ranges.
	(value_range_base::dump): Remove no argument version.
	(value_range::dump): Same.

2018-11-13  Richard Biener  <>

	PR tree-optimization/87931
	* tree-vect-loop.c (vect_is_simple_reduction): Restrict
	nested cycles we support to latch computations vectorizable_reduction

2018-11-13  Martin Liska  <>

	PR tree-optimization/87885
	* cfghooks.c (account_profile_record): Rename
	to ...
	(profile_record_check_consistency): ... this.
	Calculate missing num_mismatched_freq_in.
	(profile_record_account_profile): New function
	that calculates time and size of a function.
	* cfghooks.h (struct profile_record): Remove
	all tuples.
	(struct cfg_hooks): Remove after_pass flag.
	(account_profile_record): Rename to ...
	(profile_record_check_consistency): ... this.
	(profile_record_account_profile): New.
	* cfgrtl.c (rtl_account_profile_record): Remove
	after_pass flag.
	* passes.c (check_profile_consistency): Do only
	(account_profile): Calculate size and time of
	function only.
	(pass_manager::dump_profile_report): Reformat
	(execute_one_ipa_transform_pass): Call
	consistency check before clean upand call account_profile
	after a clean up is done.
	(execute_one_pass): Call check_profile_consistency and
	account_profile instead of using after_pass flag..
	* tree-cfg.c (gimple_account_profile_record): Likewise.

2018-11-13  Martin Liska  <>

	PR sanitizer/87930
	* config/i386/i386.c (ix86_option_override_internal): Error
	about usage -mabi=ms and -fsanitize={,kernel-}address.

2018-11-13  Andre Vieira  <>

	* config/aarch64/aarch64.c
	(aarch64_vectorize_preferred_vector_alignment): Change return type to
	(aarch64_simd_vector_alignment_reachable): Adapt to preferred vector
	alignment being a poly int.
	return type to poly_uint64.
	* target.def (default_preferred_vector_alignment): Likewise.
	* targhooks.c (default_preferred_vector_alignment): Likewise.
	* targhooks.h (default_preferred_vector_alignment): Likewise.
	* tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise.
	(vect_compute_data_ref_alignment): Adapt to vector alignment being a
	poly int.
	(vect_update_misalignment_for_peel): Likewise.
	(vect_enhance_data_refs_alignment): Likewise.
	(vect_find_same_alignment_drs): Likewise.
	(vect_duplicate_ssa_name_ptr_info): Likewise.
	(vect_setup_realignment): Likewise.
	(vect_can_force_dr_alignment_p): Change alignment parameter type to
	* tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a
	mask with a compile time variable vector alignment.
	(vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly
	(vect_do_peeling): Exit early if vector alignment is not constant.
	* tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being
	a poly int.
	(vectorizable_store): Likewise.
	(vectorizable_load): Likweise.
	* tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a
	(vect_known_alignment_in_bytes): Adapt to vector alignment being a
	poly int.
	(vect_can_force_dr_alignment_p): Change alignment parameter type to

2018-11-13  Richard Biener  <>

	PR tree-optimization/87962
	* tree-vect-loop.c (vect_is_simple_reduction): More reliably
	detect outer reduction for disqualifying in-loop uses.

2018-11-13  Richard Biener  <>

	PR tree-optimization/87967
	* tree-vect-loop.c (vect_transform_loop): Also copy PHIs
	for constants for the scalar loop.

2018-11-13  Alan Modra  <>

	* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude
	integer constants when -mcmodel=medium.

2018-11-13  Claudiu Zissulescu  <>

	* config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty.
	* config/arc/elf.h (PROFILE_HOOK): Define.
	* config/arc/linux.h (PROFILE_HOOK): Likewise.

2018-11-13  Claudiu Zissulescu  <>

	* config/arc/arc.c (hwloop_optimize): Bailout when detecting a
	jump table data in the text section.

2018-11-13  Claudiu Zissulescu  <>

	* config/arc/arc.c (arc_eh_return_address_location): Repurpose it
	to fit the eh_return pattern.
	* config/arc/ (eh_return): Define.
	* config/arc/arc-protos.h (arc_eh_return_address_location): Match
	new implementation.
	* config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it.

2018-11-13  Claudiu Zissulescu  <>

	* common/config/arc/arc-common.c (arc_option_optimization_table):
	Millicode optimization is default on for size optimizations.
	* config/arc/arc-protos.h (arc_check_multi): New function.
	* config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange.
	(arc_override_options): Disable millicode when long calls option
	is on.
	(arc_frame_info): Change it from int to bool.
	(arc_compute_frame_size): Clean up.
	(arc_save_restore): Remove.
	(frame_save_reg): New function.
	(frame_restore_reg): Likewise.
	(arc_enter_leave_p): Likewise.
	(arc_save_callee_saves): Likewise.
	(arc_restore_callee_saves): Likewise.
	(arc_save_callee_enter): Likewise.
	(arc_restore_callee_leave): Likewise.
	(arc_save_callee_milli): Likewise.
	(arc_restore_callee_milli): Likewise.
	(arc_expand_prologue): Reimplement to emit enter/leave
	(arc_expand_epilogue): Likewise.
	(arc_check_multi): New function.
	* config/arc/ (push_multi_fp): New pattern.
	(push_multi_fp_blink): Likewise.
	(pop_multi_fp): Likewise.
	(pop_multi_fp_blink): Likewise.
	(pop_multi_fp_ret): Likewise.
	(pop_multi_fp_blink_ret): Likewise.
	* config/arc/arc.opt (mmillicode): Update option.
	(mcode-density-frame): New option.
	* config/arc/ (push_multi_operand): New predicate.
	(pop_multi_operand): Likewise.
	* doc/invoke.texi (ARC): Update ARC options information.

2018-11-13  Claudiu Zissulescu  <>

	* config/arc/arc-protos.h (gen_operands_ldd_std): Add.
	* config/arc/arc.c (operands_ok_ldd_std): New function.
	(mem_ok_for_ldd_std): Likewise.
	(gen_operands_ldd_std): Likewise.
	* config/arc/ Add peephole2 rules for std/ldd.

2018-11-13  Eric Botcazou  <>

	* toplev.c (output_stack_usage): Turn test on flag_stack_usage into
	test on stack_usage_file.
	(lang_dependent_init): Do not open the .su file if generating LTO.

2018-11-13  Jakub Jelinek  <>

	PR rtl-optimization/87918
	* simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use
	simplify_gen_relational rather than simplify_gen_binary.

2018-11-13  Richard Biener  <>

	* tree-ssanames.h (set_range_info): Use value_range_base.
	(get_range_info): Likewise.
	* tree-ssanames.c (set_range_info): Likewise.
	(get_range_info): Likewise.
	* tree-vrp.c (value_range_base::union_helper): Split
	out common parts of value_range[_base]::union_.
	(value_range_base::union_): Update.
	(value_range::union_): Likewise.
	(determine_value_range_1): Use value_range_base.
	(determine_value_range): Likewise.
	* tree-vrp.h (value_range_base::union_helper): Move ...
	(value_range::union_helper): ... from here.

2018-11-13  Alan Modra  <>

	* config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate
	offset for PRE_DEC.
	(rs6000_secondary_reload_gpr): Don't call find_replacement.

2018-11-13  Sandra Loosemore  <>

	PR middle-end/59634
	* doc/invoke.texi (Optimize Options): Clarify that the
	l1-cache-line-size, l1-cache-size, and l2-cache-size parameters
	apply to data cache size.

2018-11-13  Alan Modra  <>

	* config/rs6000/ (logical_const_operand),
	(logical_operand): Correct comment.
	* config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix.

2018-11-13  Alan Modra  <>

	* config/rs6000/ (addsi3_high): Prefix with '*'.

2018-11-13  Alan Modra  <>

	* gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint
	* config/rs6000/ (movsi_internal1): Delete MT%0 case
	covered by alternative.
	(movcc_internal1): Ignore h for register preference.
	(mov<mode>_hardfloat64): Likewise.
	(mov<mode>_softfloat): Ignore c, l, h for register preference.

2018-11-12  Sandra Loosemore  <>

	PR preprocessor/47823
	* doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once
	documentation to...
	* doc/extend.texi (Pragmas): Note additional pragmas documented
	in the CPP manual.

2018-11-13  Kugan Vivekanandarajah  <>

	PR middle-end/86677
	PR middle-end/87528
	* tree-scalar-evolution.c (expression_expensive_p): Make
	BUILTIN POPCOUNT as expensive when backend does not define it.

2018-11-12  Fredrik Noring  <>

	* config.gcc: Update with-llsc defaults for MIPS r5900.

2018-11-12  Martin Liska  <>

	PR gcov-profile/87442
	* common.opt: Add -fprofile-filter-files and -fprofile-exclude-files
	* doc/invoke.texi: Document them.
	* tree-profile.c (parse_profile_filter): New.
	(parse_profile_file_filtering): Likewise.
	(release_profile_file_filtering): Likewise.
	(include_source_file_for_profile): Likewise.
	(tree_profiling): Filter source files based on the
	newly added options.

2018-11-12  Martin Liska  <>

	PR target/87903
	* doc/extend.texi: Add missing values for __builtin_cpu_is and
	__builtin_cpu_supports for x86 target.

2018-11-12  Sandra Loosemore  <>

	PR middle-end/21110
	* doc/rtl.texi (Constants): Clarify that mode of "high" doesn't
	have to be Pmode.
	(Arithmetic): Likewise for "lo_sum".

2018-11-12  Renlin Li  <>

	PR target/87815
	* dse.c (get_stored_val): Add check for compile-time constantness
	of gap.

2018-11-12  Sudakshina Das  <>

	* config/arm/ (armv8_5, sb, predres): New features.
	(ARMv8_5a): New fgroup.
	(armv8.5-a): New arch.
	(armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options
	sb and predres.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/t-aprofile: Add matching rules for -march=armv8.5-a
	* config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a.
	* config/arm/t-multilib (v8_5_a_simd_variants): New variable.
	Add matching rules for -march=armv8.5-a and extensions.
	* doc/invoke.texi (ARM options): Document -march=armv8.5-a.
	Add sb and predres to all armv8-a except armv8.5-a.

2018-11-12  Richard Biener  <>

	* tree-vrp.h (value_range[_base]::set): Make public.  Provide
	overload for single value.
	(value_range[_base]::set_nonnull): New.
	(value_range[_base]::set_null): Likewise.
	(value_range): Document bitmap copying behavior, mark
	copy constructor and assignment operator deleted.
	(value_range::move): New.
	(value_range::set_and_canonicalize): Default bitmap to zero.
	(set_value_range_to_nonnull): Remove.
	(set_value_range_to_null): Likewise.
	(set_value_range): Likewise.
	(set_value_range_to_value): Likewise.
	(extract_range_from_unary_expr): Work on value_range_base.
	(extract_range_from_binary_expr_1): Likewise.  Rename to...
	(extract_range_from_binary_expr): ... this.
	* tree-vrp.c (value_range::update): Clear equiv bitmap
	if required.
	(value_range::move): New, move equiv bitmap.
	(value_range_base::set_undefined): Avoid assignment.
	(value_range::set_undefined): Likewise.
	(value_range_base::set_varying): Likewise.
	(value_range::set_varying): Likewise.
	(set_value_range): Remove.
	(value_range_base::set): New overload for value.
	(value_range::set): Likewise.
	(set_value_range_to_nonnull): Remove.
	(value_range_base::set_nonnull): New.
	(value_range::set_nonnull): Likewise.
	(set_value_range_to_null): Remove.
	(value_range_base::set_null): New.
	(value_range::set_null): Likewise.
	(range_is_null): Work on value_range_base.
	(range_is_nonnull): Likewise.
	(ranges_from_anti_range): Likewise.
	(extract_range_into_wide_ints): Likewise.
	(extract_range_from_multiplicative_op): Likewise.
	(extract_range_from_binary_expr): Likewise.  Update for API changes.
	(extract_range_from_unary_expr): Likewise.  Remove OBJ_TYPE_REF
	(value_range::intersect_helper): Avoid copy and assignment.
	(value_range::union_helper): Likewise.
	(determine_value_range_1): Adjust.
	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
	Avoid assignment by using move.
	(evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment.
	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
	* tree-ssanames.c (get_range_info): Likewise.
	* vr-values.h (vr_values::get_vr_for_comparison): Adjust API.
	* vr-values.c (vr_values::get_value_range): Adjust.
	(vr_values::update_value_range): Likewise.
	(symbolic_range_based_on_p): Work on value_range_base.
	(vr_values::extract_range_from_binary_expr): Use value_range_base.
	(vr_values::extract_range_from_unary_expr): Likewise.
	(vr_values::extract_range_from_cond_expr): Avoid assignment.
	(vr_values::extract_range_from_comparison): Adjust.
	(vr_values::check_for_binary_op_overflow): Use value_range_base.
	(vr_values::extract_range_basic): Adjust.
	(vr_values::adjust_range_with_scev): Likewise.
	(vr_values::vrp_visit_assignment_or_call): Likewise.
	(vr_values::get_vr_for_comparison): Change API to avoid
	assignment and copy construction.
	(vr_values::compare_name_with_value): Adjust accordingly.
	(vr_values::compare_names): Likewise.
	(vr_values::extract_range_from_phi_node): Avoid assignment and
	bogus in-place modify of equiv bitmap.
	(vr_values::simplify_bit_ops_using_ranges): Use value_range_base.
	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust
	for extract_range_from_unary_expr API change.
	* ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise.

2018-11-12  Eric Botcazou  <>

	* config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate.

2018-11-12  Richard Biener  <>

	* tree-vrp.h (value_range_base::symbolic_p,
	value_range_base::constant_p, value_range_base::zero_p,
	value_range_base::singleton_p): Move from value_range.
	(value_range::dump): Add.
	* gimple-ssa-evrp-analyze.c
	(evrp_range_analyzer::record_ranges_from_phis): Use set_varying.
	* ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range.
	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
	Use set_varying.
	* tree-vrp.c (value_range::symbolic_p): Move to value_range_base.
	(value_range::constant_p): Likewise.
	(value_range::singleton_p): Likewise.
	(value_range_base::dump): Add.
	(set_value_range_to_undefined): Remove.
	(set_value_range_to_varying): Likewise.
	(range_int_cst_p): Take value_range_base argument.
	(range_int_cst_singleton_p): Likewise.
	(value_range_constant_singleton): Likewise.
	(vrp_set_zero_nonzero_bits): Likewise.
	(extract_range_from_multiplicative_op): Use set_varying.
	(extract_range_from_binary_expr_1): Likewise. Use set_undefined.
	(extract_range_from_unary_expr): Likewise.
	(dump_value_range_base): Change to overload of dump_value_range.
	(vrp_prop::vrp_initialize): Use set_varying and set_undefined.
	(vrp_prop::visit_stmt): Likewise.
	(value_range::intersect_helper): Likewise.
	(value_range::union_helper): Likewise.
	(determine_value_range_1): Likewise.

2018-11-12  Richard Biener  <>

	* tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
	(set_value_range_to_null): Likewise.
	* vr-values.c (vr_values::extract_range_from_comparison):
	Clear equiv for constant singleton ranges.

2018-11-12  Wei Xiao  <>

	* config/i386/ Combine VFIXUPIMM* patterns
	(<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
	(<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
	(<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
	(avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
	(avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
	(avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.

2018-11-11  Sandra Loosemore  <>

	PR c/69502
	* doc/extend.texi (Common Type Attributes): For the align type
	attribute, copy language about decreasing alignment from the
	corresponding variable attribute.

2018-11-11  Xianmiao Qu  <>

	* config/csky/ (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle

2018-11-11  Sandra Loosemore  <>

	PR c++/43105
	* doc/invoke.texi (C++ Dialect Options): Add warning about mixing
	-frtti and -fno-rtti code.

2018-11-11  Sandra Loosemore  <>

	PR c/26366
	* doc/extend.texi (Other Builtins): Document probability associated
	with __builtin_expect.

2018-11-11  Uros Bizjak  <>

	PR target/87928
	* config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
	instead of (TARGET_64BIT && ix86_abi == MS_ABI).
	* config/i386/darwin.h (STACK_BOUNDARY): Ditto.
	* config/i386/cygming.h (STACK_BOUNDARY): Remove.

2018-11-11  Xianmiao Qu  <>

	* config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile.

2018-11-11  Xianmiao Qu  <>

	* config/csky/csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.

2018-11-11  Richard Biener  <>

	* tree-vrp.h (class value_range_base): New base class for
	value_range containing all but the m_equiv member.
	(dump_value_range_base): Add.
	(range_includes_zero_p): Work on value_range_base.
	* tree-vrp.c (value_range_base::set): Split out base handling
	(value_range::set): this.
	(value_range::set_equiv): New.
	(value_range_base::value_range_base): New constructors.
	(value_range_base::check): Split out base handling from...
	(value_range::check): this.
	(value_range::equal_p): Refactor in terms of
	ignore_equivs_equal_p which is now member of the base.
	(value_range_base::set_undefined): New.
	(value_range_base::set_varying): Likewise.
	(value_range_base::dump):Split out base handling from...
	(value_range::dump): this.
	(value_range_base::set_and_canonicalize): Split out base handling
	(value_range::set_and_canonicalize): this.
	(value_range_base::union_): New.
	* ipa-prop.h (struct ipa_jump_func): Use value_range_base *
	for m_vr.
	* ipa-cp.c (class ipcp_vr_lattice): Use value_range_base
	instead of value_range everywhere.
	(ipcp_vr_lattice::print): Use dump_value_range_base.
	(ipcp_vr_lattice::meet_with): Adjust.
	(ipcp_vr_lattice::meet_with_1): Likewise.
	(ipa_vr_operation_and_type_effects): Likewise.
	(propagate_vr_across_jump_function): Likewise.
	* ipa-prop.c (struct ipa_vr_ggc_hash_traits): Likewise.
	(ipa_get_value_range): Likewise.
	(ipa_set_jfunc_vr): Likewise.
	(ipa_compute_jump_functions_for_edge): Likewise.

2018-11-10  Sandra Loosemore  <>

	PR middle-end/65703
	* doc/invoke.texi (Optimize Options): Add @opindex entries
	for the positive forms of -fno-xxx and -mno-xxx options
	that were lacking them.

2018-11-10  Segher Boessenkool  <>

	* combine.c (make_more_copies): Only make an intermediate copy if the
	dest of a move is a pseudo.

2018-11-09  Maya Rashish  <>

	PR target/87221
	* config/netbsd-elf.h (NETBSD_STARTFILE_SPEC): Use crtbeginS.o for PIE.
	(NETBSD_ENDFILE_SPEC): Use crtendS.o for PIE.

2018-11-09  Sandra Loosemore  <>

	PR driver/41179
	PR middle-end/65703
	* doc/invoke.texi (Optimize Options): Clarify default behavior
	for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg.

2018-11-09  Bernd Edlinger  <>

	PR tree-optimization/87940
	* expr.c (string_constant): Don't strip NOPS in subexpressions.
	Fold PLUS_EXPR correctly.

2018-11-09  Ilya Leoshkevich  <>

	PR target/87762
	* config/s390/s390.c (s390_safe_relative_long_p): New function.
	(annotate_constant_pool_refs): Skip insns which support
	relative addressing.
	(annotate_constant_pool_refs_1): New helper function.
	(find_constant_pool_ref): Skip insns which support relative
	(find_constant_pool_ref_1): New helper function.
	(replace_constant_pool_ref): Skip insns which support
	relative addressing.
	(replace_constant_pool_ref_1): New helper function.
	(s390_mainpool_start): Adapt to the new signature.
	(s390_mainpool_finish): Likewise.
	(s390_chunkify_start): Likewise.
	(s390_chunkify_finish): Likewise.
	(pass_s390_early_mach::execute): Likewise.
	(s390_prologue_plus_offset): Likewise.
	(s390_emit_prologue): Likewise.
	(s390_emit_epilogue): Likewise.

2018-11-09  Jakub Jelinek  <>

	* gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid
	but unsupported lastprivate with conditional modifier.

2018-11-09  Jeff Law  <>

	* config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle
	unused argument better.  Add gcc_unreachable to silence warning.

2018-11-09  Martin Sebor  <>

	PR middle-end/81824
	* attribs.c (has_attribute): New helper function.
	(decls_mismatched_attributes, maybe_diag_alias_attributes): Same.
	* attribs.h (decls_mismatched_attributes): Declare.
	* cgraphunit.c (handle_alias_pairs): Call maybe_diag_alias_attributes.
	(maybe_diag_incompatible_alias): Use OPT_Wattribute_alias_.
	* common.opt (-Wattribute-alias): Take an argument.
	(-Wno-attribute-alias): New option.
	* doc/extend.texi (Common Function Attributes): Document copy.
	(Common Variable Attributes): Same.
	* doc/invoke.texi (-Wmissing-attributes): Document enhancement.
	(-Wattribute-alias): Document new option argument.

2018-11-09  Richard Earnshaw  <>

	* config/arm/parsecpu.awk (/alias/): Tighten invisible alias
	matching criteria.  Remove unused array initializer.

2018-11-09  Bill Schmidt  <>
	    Jinsong Ji  <>

	* config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix incorrect
	constraints by introducing a new temporary.
	(_mm_cvtss_si64): Likewise.

2018-11-09  Martin Liska  <>

	* common.opt: Add -fipa-stack-alignment flag.
	* doc/invoke.texi: Document it.
	* final.c (rest_of_clean_state): Guard stack
	shrinking with flag.

2018-11-09  Martin Liska  <>

	* cgraph.h (ipa_discover_readonly_nonaddressable_vars): Rename
	to ...
	(ipa_discover_variable_flags): ... this.
	* common.opt: Come up with new flag -fipa-reference-addressable.
	* doc/invoke.texi: Document it.
	* ipa-reference.c (propagate): Call the renamed fn.
	* ipa-visibility.c (whole_program_function_and_variable_visibility):
	* ipa.c (ipa_discover_readonly_nonaddressable_vars): Renamed to
	(ipa_discover_variable_flags): ... this.  Discover
	non-addressable variables only with the newly added flag.
	* opts.c: Enable the newly added flag with -O1 and higher
	optimization level.

2018-11-09  David Malcolm  <>

	* (selftest::test_writing_literals): Fix comment.

2018-11-09  Martin Liska  <>

	* config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy
	string to a stack buffer.
	(aarch64_parse_cpu): Likewise.
	(aarch64_parse_tune): Likewise.

2018-11-09  Richard Biener  <>

	PR tree-optimization/87953
	* tree-vect-loop.c (vectorizable_reduction): For analysis
	always pass ops[0] to vectorizable_condition.

2018-11-09  Stafford Horne  <>
	    Richard Henderson  <>
	    Joel Sherrill  <>

	* common/config/or1k/or1k-common.c: New file.
	* config/or1k/*: New.
	* config.gcc (or1k*-*-*): New.
	* (or1k*-*-*): New test for openrisc tls.
	* configure: Regenerated.
	* doc/install.texi: Document OpenRISC triplets.
	* doc/invoke.texi: Document OpenRISC arguments.
	* doc/md.texi: Document OpenRISC.

2018-11-09  Richard Earnshaw  <>

	* config/arm/ (arm7tdmi): Add an alias for arm7tdmi-s.
	(arm7tdmi-s): Delete CPU.
	(arm710t): Add aliases for arm720t and arm740t.
	(arm720t, arm740t): Delete CPUs.
	(arm920t): Add aliases for arm920, arm922t and arm940t.
	(arm920, arm922t, arm940t): Delete CPUs.
	(arm10tdmi): Add alias for arm1020t.
	(arm1020t): Delete CPU.
	(arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s.
	(arm946e-s, arm966e-s, arm968e-s): Delete CPUs.
	(arm10e): Add aliases for arm1020e and arm1022e.
	(arm1020e, arm1022e): Delete CPU.
	* config/arm/ (generic_sched): Remove entries that are now
	handled by aliases.
	(generic_vfp): Likewise.
	* config/arm/ Simplify tuning selection based on alias
	* config/arm/ Regenerated.
	* config/arm/arm-tables.opt: Regenerated.

2018-11-09  Richard Biener  <>

	PR tree-optimization/87621
	* tree-vect-loop.c (vectorizable_reduction): Handle reduction
	op with only phi inputs.
	* tree-ssa-loop-ch.c: Include tree-ssa-sccvn.h.
	(ch_base::copy_headers): Run CSE on copied loop headers.
	(pass_ch_vect::process_loop_p): Simplify.

2018-11-09  Alexandre Oliva  <>

	* config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust
	for non-w64 x86_64 biarch.

2018-11-09  Alexandre Oliva  <>

	PR rtl-optimization/86438
	* compare-elim.c (try_eliminate_compare): Use SET_SRC instead
	of in_b for the compare if in_b is SET_DEST.

	PR target/87793
	* config/i386/i386.c (ix86_const_not_ok_for_debug_p): Reject
	non-toplevel UNSPEC.

2018-11-08  Aldy Hernandez  <>

	* tree-vrp.c (value_range::check): Do not access internals
	(value_range::singleton_p): Same.
	(value_range::type): Same.
	(vrp_finalize): Use value_range API.

2018-11-08  Aldy Hernandez  <>

	* tree-vrp.c (may_contain_p): Do not access m_min/m_max directly.

2018-11-08  Aldy Hernandez  <>

	* vr-values.c (vr_values::get_value_range): Use value_range API
	instead of piecing together ranges.
	(vr_values::update_value_range): Same.

2018-11-08  Aldy Hernandez  <>

	* gimple-fold.c (size_must_be_zero_p): Use value_range API instead
	of performing ad-hoc calculations.
	* tree-ssanames.c (set_range_info): New overloaded function
	accepting value_range &.
	(get_range_info): Same.
	* tree-ssanames.h (set_range_info_raw): Remove.
	(set_range_info): New prototype.
	(get_range_info): Same.
	* tree-vrp.h (value_range::null_p): Rename to zero_p.
	* tree-vrp.c (value_range::null_p): Same.

2018-11-09  Jan Hubicka  <>

	* tree.c (fld_type_variant_equal_p): Test user align flag.
	(flt_type_variant): Copy user align flag.
	(fld_incomplete_type_of): Clear it.

2018-11-09  Prathamesh Kulkarni  <>

	* config/arm/ (div<mode>3): New pattern.

2018-11-08  Andi Kleen  <>

	* common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET): New.
	(ix86_handle_option): Handle OPT_mptwrite.
	* config/i386/cpuid.h (bit_PTWRITE): Add.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect ptwrite.
	* config/i386/i386-builtin.def (BDESC): Add ptwrite32/64.
	* config/i386/i386-c.c (ix86_target_macros_internal): Define __PTWRITE__.
	* config/i386/i386.c (ix86_target_string): Handle ptwrite.
	(ix86_option_override_internal): Handle PTA_PTWRITE.
	(ix86_valid_target_attribute_inner_p): Define ptwrite.
	(def_builtin2): Force UINT64 to be 64bit only.
	* config/i386/i386.h (TARGET_PTWRITE): Add.
	* config/i386/ Define ptwrite.
	* config/i386/i386.opt: Add -mptwrite.
	* config/i386/immintrin.h (_ptwrite64): Add.
	(_ptwrite32): Add
	* doc/extend.texi: Document __builtin_ia32_ptwrite*.
	* doc/invoke.texi: Document -mptwrite.

2018-11-08  Peter Bergner  <>

	PR rtl-optimization/87600
	* cfgexpand.c (expand_asm_stmt): Catch illegal asm constraint usage.
	* lra-constraints.c (process_alt_operands): Skip illegal hard
	register usage.  Prefer reloading non hard register operands.

2018-11-08  Sandra Loosemore  <>

	PR other/36572
	* doc/invoke.texi (Optimize Options): Clarify default behavior
	for -fno-sched-interblock and -fno-sched-spec.

2018-11-08  Roman Geissler  <>

	* collect2.c (linker_select):  Add USE_LLD_LD.
	(ld_suffixes): Add ld.lld.
	(main): Handle -fuse-ld=lld.
	* common.opt (-fuse-ld=lld): New option.
	* doc/invoke.texi (-fuse-ld=lld): Document.
	* opts.c (common_handle_option): Handle OPT_fuse_ld_lld.

2018-11-08  Paul Koning  <>

	* config/pdp11/ Add "Z" series constraints for use
	with pre-dec and post-inc addressing.
	* config/pdp11/pdp11-protos.m (expand_block_move): Delete.
	(pdp11_expand_operands): Add int argument (word count).
	(pdp11_sp_frame_offset): Delete.
	(pdp11_cmp_length): New function.
	(pushpop_regeq): New function.
	Add hook.
	(pdp11_expand_prologue, pdp11_expand_epilogue): Rewrite for new
	frame layout.
	(pdp11_initial_elimination_offset): Ditto.
	(pdp11_expand_operands): Add word count argument.  Bugfixes.
	(output_move_multiple): Change how pointer adjustment is done.
	(pdp11_gen_int_label): Correct format.
	(output_ascii): Ditto.
	(pdp11_asm_output_var): Add code for DEC assembler case.
	(pdp11_asm_print_operand): Bugfix for CONST_DOUBLE holding integer
	(legitimate_const_double_p): Ditto.
	(pdp11_register_move_cost): Adjust for new register classes.
	(pdp11_regno_reg_class): Ditto.
	(expand_block_move): Delete.
	(pushpop_regeq): New function.
	(pdp11_legitimate_address_p): Bugfix in check for constant
	(pdp11_sp_frame_offset): Delete.
	(pdp11_reg_save_size): New helper function for new frame layout.
	(output_addr_const_pdp11): Remove CONST_DOUBLE case.
	(pdp11_expand_shift): Bugfix in check for constant shift count.
	(pdp11_shift_length): Ditto.
	(pdp11_assemble_shift): Copy input to pdp11_expand_operands.
	(pdp11_cmp_length): New function.
	* config/pdp11/pdp11.h (TARGET_CPU_CPP_BUILTINS): Add macros for
	some compile options.
	(reg_class): Add classes NOTR0_REG through NOTSP_REG for use by Z
	(REG_CLASS_CONTENTS): Ditto.  Also remove
	(CPU_REG_CLASS): New macro.
	(CLASS_MAX_NREGS): Adjust for new register classes.
	(may_call_alloca): Remove unused declaration.
	(ASM_OUTPUT_ALIGN): Add workaround for PR87795.
	(ASM_OUTPUT_SKIP): Fix format.
	* config/pdp11/ (unspecv): Add UNSPECV_MOVMEM.
	(return): Delete.
	(*rts): Rename.  Remove epilogue related checks.
	(cmpsi, cmpdi): New insn.
	(cbranch<mode>4): Change to apply to SI and DI modes as well.
	(mov<mode>): Change constraints to enforce that push/pop
	destination cannot use the same register as source.
	(*mov<mode><cc_cc>): Ditto.
	(movmemhi, movmemhi1, movmemhi_nocc): Change to expand block move
	at assembly output rather than as RTL expander.
	(zero_extendqihi2): Bugfix in check for same registers.
	(adddi3_nocc): Bugfix in check for constant operand.
	(addsi3_nocc): Ditto.
	(subdi3_nocc): Ditto.
	(subsi3_nocc): Ditto.
	(negdi2_nocc): Copy input to pdp11_expand_operands.
	(negsi2_nocc): Ditto.
	(bswap2_nocc): Ditto.
	* config/pdp11/pdp11.opt (mlra): Fix documentation.
	* config/pdp11/t-pdp11: Use -Os.

2018-11-08  Richard Earnshaw  <>

	* config/arm/parsecpu.awk (/alias/): New parsing rule.
	(/begin cpu/): Check that the cpu name hasn't been previously defined.
	(gen_comm_data): Print out CPU alias tables.
	(check_cpu): Match aliases when checking the CPU name.
	* config/arm/arm-protos.h (cpu_alias): New structure.
	(cpu_option): Add entry for aliases.
	* config/arm/ (strongarm): Add aliases for strongarm110
	strongarm1100 and strongarm1110.
	(strongarm110, strongarm1100, strongarm1110): Delete CPU entries.
	(config/arm/ Remove redundant references to
	strongarm110, strongarm1100 and strongarm1110.
	* common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
	Scan aliases for additional hints.
	(arm_parse_cpu_option_name): Also match a cpu name against the list
	of aliases.
	* config/arm/arm-tables.opt: Regenerated.
	* config/arm/ Regenerated.

2018-11-08  Jakub Jelinek  <>

	* builtin-types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR,
	* gengtype.c (open_base_files): Add omp-general.h.
	* gimple.c (gimple_build_omp_critical):
	(gimple_build_omp_taskgroup): Add CLAUSES argument.  Call
	(gimple_build_omp_atomic_load): Add mo argument, call
	(gimple_build_omp_atomic_store): Likewise.
	(gimple_copy): Adjust handling of GIMPLE_OMP_TASKGROUP.
	instead of GSS_OMP.
	of GSS_OMP_SINGLE_LAYOUT, adjust comments.
	* gimple.h (enum gf_mask): Add GF_OMP_TEAMS_HOST, GF_OMP_TASK_TASKWAIT
	different value for GF_OMP_ATOMIC_NEED_VALUE.
	(struct gimple_statement_omp_taskreg): Add GIMPLE_OMP_TEAMS to
	(struct gimple_statement_omp_single_layout): And remove here.
	(struct gomp_teams): Inherit from gimple_statement_omp_taskreg rather
	than gimple_statement_omp_single_layout.
	(is_a_helper <gimple_statement_omp_taskreg *>::test): Allow
	(is_a_helper <const gimple_statement_omp_taskreg *>::test): Likewise.
	(gimple_omp_subcode): Formatting fix.
	(gimple_omp_teams_child_fn, gimple_omp_teams_child_fn_ptr,
	gimple_omp_teams_set_child_fn, gimple_omp_teams_data_arg,
	gimple_omp_teams_data_arg_ptr, gimple_omp_teams_set_data_arg,
	gimple_omp_teams_host, gimple_omp_teams_set_host,
	gimple_omp_task_taskwait_p, gimple_omp_task_set_taskwait_p,
	gimple_omp_taskgroup_clauses, gimple_omp_taskgroup_clauses_ptr,
	gimple_omp_taskgroup_set_clauses): New inline functions.
	(gimple_build_omp_atomic_load): Add enum omp_memory_order argument.
	(gimple_build_omp_atomic_store): Likewise.
	(gimple_omp_atomic_seq_cst_p): Remove.
	(gimple_omp_atomic_memory_order): New function.
	(gimple_omp_atomic_set_seq_cst): Remove.
	(gimple_omp_atomic_set_memory_order): New function.
	(gimple_build_omp_taskgroup): Add clauses argument.
	* gimple-pretty-print.c (dump_gimple_omp_taskgroup): New function.
	(dump_gimple_omp_task): Print taskwait with depend clauses.
	(dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Use
	(pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP.
	* gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP_ALLOC_ONLY,
	(enum omp_region_type): Reserve bits 1 and 2 for auxiliary flags,
	renumber values of most of ORT_* enumerators, add ORT_HOST_TEAMS,
	(enum gimplify_defaultmap_kind): New.
	(struct gimplify_omp_ctx): Remove target_map_scalars_firstprivate and
	target_map_pointers_as_0len_arrays members, add defaultmap.
	(new_omp_context): Initialize defaultmap member.
	(gimple_add_tmp_var): Handle ORT_TASKGROUP like ORT_WORKSHARE.
	(maybe_fold_stmt): Don't fold even in host teams regions.
	(omp_firstprivatize_variable): Handle ORT_TASKGROUP like
	ORT_WORKSHARE.  Test ctx->defaultmap[GDMK_SCALAR] instead of
	(omp_add_variable): Don't add private/firstprivate for VLAs in
	(omp_default_clause): Print "taskloop" rather than "task" if
	(omp_notice_variable): Handle ORT_TASKGROUP like ORT_WORKSHARE.
	Handle new defaultmap clause kinds.
	(omp_is_private): Handle ORT_TASKGROUP like ORT_WORKSHARE.  Allow simd
	iterator to be lastprivate or private.  Fix up diagnostics if linear
	is used on collapse>1 simd iterator.
	(omp_check_private): Handle ORT_TASKGROUP like ORT_WORKSHARE.
	(gimplify_omp_depend): New function.
	(gimplify_scan_omp_clauses): Add shared clause on parallel for
	combined parallel master taskloop{, simd} if taskloop has
	firstprivate, lastprivate or reduction clause.  Handle
	OMP_CLAUSE_REDUCTION_TASK diagnostics.  Adjust tests for
	ORT_COMBINED_TEAMS.  Gimplify depend clauses with iterators.  Handle
	cancel and simd OMP_CLAUSE_IF_MODIFIERs.  Handle
	OMP_CLAUSE_NONTEMPORAL.  Handle new defaultmap clause kinds.  Handle
	OMP_CLAUSE_{TASK,IN}_REDUCTION.  Diagnose invalid conditional
	(gimplify_adjust_omp_clauses_1): Ignore GOVD_NONTEMPORAL.  Handle
	(gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_NONTEMPORAL.  Handle
	(gimplify_omp_task): Handle taskwait with depend clauses.
	(gimplify_omp_for): Add shared clause on parallel for combined
	parallel master taskloop{, simd} if taskloop has firstprivate,
	lastprivate or reduction clause.  Use ORT_TASKLOOP or
	tests for ORT_COMBINED_TEAMS.  Handle C++ range for loops with
	__for_end and __for_range temporaries on OMP_PARALLEL for
	distribute parallel for{, simd}.  Move OMP_CLAUSE_REDUCTION
	and OMP_CLAUSE_IN_REDUCTION from taskloop to the task construct
	sandwiched in between two taskloops.
	(computable_teams_clause): Test ctx->defaultmap[GDMK_SCALAR]
	instead of ctx->omp_firstprivatize_variable.
	(gimplify_omp_workshare): Set ort to ORT_HOST_TEAMS or
	ORT_COMBINED_HOST_TEAMS if not inside of target construct.  If
	host teams, use gimplify_and_return_first etc. for body like
	for target or target data constructs, and at the end call
	gimple_omp_teams_set_host on the GIMPLE_OMP_TEAMS object.
	(gimplify_omp_atomic): Use OMP_ATOMIC_MEMORY_ORDER instead
	of OMP_ATOMIC_SEQ_CST, pass it as new argument to
	gimple_build_omp_atomic_load and gimple_build_omp_atomic_store, remove
	gimple_omp_atomic_set_seq_cst calls.
	(gimplify_expr) <case OMP_TASKGROUP>: Move handling into a separate
	case, handle taskgroup clauses.
	* lto-streamer-out.c (hash_tree): Handle
	* (GTFILES): Add omp-general.h.
	* omp-builtins.def (BUILT_IN_GOMP_TASKWAIT_DEPEND,
	* omp-expand.c (workshare_safe_to_combine_p): Return false for
	non-worksharing loops.
	(omp_adjust_chunk_size): Don't adjust anything if chunk_size is zero.
	(determine_parallel_type): Don't combine parallel with worksharing
	which has _reductemp_ clause.
	(expand_parallel_call): Emit the GOMP_*nonmonotonic_runtime* or
	GOMP_*maybe_nonmonotonic_runtime* builtins instead of GOMP_*runtime*
	if there is nonmonotonic modifier or if there is no modifier and no
	ordered clause.  For dynamic and guided schedule without monotonic
	and nonmonotonic modifier, default to nonmonotonic.
	(expand_omp_for): Likewise.  Adjust expand_omp_for_generic caller, use
	GOMP_loop{,_ull}{,_ordered,_doacross}_start builtins if there are
	task reductions.
	(expand_task_call): Add GOMP_TASK_FLAG_REDUCTION flag to flags if
	there are any reduction clauses.
	(expand_taskwait_call): New function.
	(expand_teams_call): New function.
	(expand_omp_taskreg): Allow GIMPLE_OMP_TEAMS and call
	expand_teams_call for it.  Formatting fix.  Handle taskwait with
	depend clauses.
	(expand_omp_for_generic): Add SCHED_ARG argument.  Handle expansion
	of worksharing loops with task reductions.
	(expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
	expansion of worksharing loops with task reductions.
	(expand_omp_sections): Handle expansion of sections with task
	(expand_omp_synch): For host teams call expand_omp_taskreg.
	(omp_memory_order_to_memmodel): New function.
	(expand_omp_atomic_load, expand_omp_atomic_store,
	expand_omp_atomic_fetch_op): Use it and gimple_omp_atomic_memory_order
	instead of gimple_omp_atomic_seq_cst_p.
	(build_omp_regions_1, omp_make_gimple_edges): Treat taskwait with
	depend clauses as a standalone directive.
	* omp-general.c (enum omp_requires): New variable.
	(omp_extract_for_data): Initialize have_reductemp member.  Allow
	NE_EXPR even in OpenMP loops, transform them into LT_EXPR or
	GT_EXPR loops depending on incr sign.  Formatting fixes.
	* omp-general.h (struct omp_for_data): Add have_reductemp member.
	(enum omp_requires): New enum.
	(omp_requires_mask): Declare.
	* omp-grid.c (grid_eliminate_combined_simd_part): Formatting fix.
	Fix comment typos.
	* omp-low.c (struct omp_context): Add task_reductions and
	task_reduction_map fields.
	(is_host_teams_ctx): New function.
	(is_taskreg_ctx): Return true also if is_host_teams_ctx.
	(use_pointer_for_field): Use is_global_var instead of
	TREE_STATIC || DECL_EXTERNAL, and apply only if not privatized
	in outer contexts.
	(build_outer_var_ref): Ignore taskgroup outer contexts.
	(delete_omp_context): Release task_reductions and task_reduction_map.
	(scan_sharing_clauses): Don't add any fields for reduction clause on
	taskloop.  Handle OMP_CLAUSE__REDUCTEMP_.  Handle
	modifier.  Don't ignore shared clauses in is_host_teams_ctx contexts.
	(add_taskreg_looptemp_clauses): Add OMP_CLAUSE__REDUCTEMP_ clause if
	(scan_omp_parallel): Add _reductemp_ clause if there are any reduction
	clauses with task modifier.
	(scan_omp_task): Handle taskwait with depend clauses.
	(finish_taskreg_scan): Move field corresponding to _reductemp_ clause
	first.  Move also OMP_CLAUSE__REDUCTEMP_ clause in front if present.
	(scan_omp_for): Fix comment formatting.
	(scan_omp_teams): Handle host teams constructs.
	(check_omp_nesting_restrictions): Allow teams with no outer
	OpenMP context.  Adjust diagnostics for teams strictly nested into
	some explicit OpenMP construct other than target.  Allow OpenMP atomics
	inside of simd regions.
	(scan_omp_1_stmt): Call scan_sharing_clauses for taskgroups.
	(scan_omp_1_stmt) <case GIMPLE_OMP_TEAMS>: Temporarily bump
	taskreg_nesting_level while scanning host teams construct.
	(task_reduction_read): New function.
	(lower_rec_input_clauses): Handle OMP_CLAUSE_REDUCTION on taskloop
	clauses.  Handle OMP_CLAUSE_REDUCTION with task modifier.  Remove
	second argument create_tmp_var if it is NULL.  Don't ignore shared
	clauses in is_host_teams_ctx contexts.  Handle
	(lower_reduction_clauses): Ignore reduction clauses with task
	modifier.  Remove second argument create_tmp_var if it is NULL.
	Initialize OMP_ATOMIC_MEMORY_ORDER to relaxed.
	(lower_send_clauses): Ignore reduction clauses with task modifier.
	Handle OMP_CLAUSE__REDUCTEMP_.  Don't send anything for
	(maybe_add_implicit_barrier_cancel): Add OMP_RETURN argument, don't
	rely that it is the last stmt in body so far.  Ignore outer taskgroup
	(omp_task_reductions_find_first, omp_task_reduction_iterate,
	lower_omp_task_reductions): New functions.
	(lower_omp_sections): Handle reduction clauses with taskgroup
	modifiers.  Adjust maybe_add_implicit_barrier_cancel caller.
	(lower_omp_single): Adjust maybe_add_implicit_barrier_cancel caller.
	(lower_omp_for): Likewise.  Handle reduction clauses with taskgroup
	(lower_omp_taskgroup): Handle taskgroup reductions.
	(create_task_copyfn): Copy over OMP_CLAUSE__REDUCTEMP_ pointer.
	(lower_depend_clauses): If there are any
	depend clauses, use a new array format.  If OMP_CLAUSE_DEPEND_LAST is
	seen, assume lowering is done already and return early.  Set kind
	on artificial depend clause to OMP_CLAUSE_DEPEND_LAST.
	(lower_omp_taskreg): Handle reduction clauses with task modifier on
	parallel construct.  Handle reduction clause on taskloop construct.
	Handle taskwait with depend clauses.
	(lower_omp_1): Use lower_omp_taskreg instead of lower_omp_teams
	for host teams constructs.
	* tree.c (omp_clause_num_ops): Add in_reduction, task_reduction,
	nontemporal and _reductemp_ clause entries.
	(omp_clause_code_name): Likewise.
	(walk_tree_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION,
	* tree-core.h (enum omp_clause_code): Add
	(enum omp_clause_defaultmap_kind, enum omp_memory_order): New.
	(struct tree_base): Add omp_atomic_memory_order field into union.
	Remove OMP_ATOMIC_SEQ_CST comment.
	(enum omp_clause_depend_kind): Add OMP_CLAUSE_DEPEND_MUTEXINOUTSET
	(struct tree_omp_clause): Add subcode.defaultmap_kind.
	* tree.def (OMP_TASKGROUP): Add another operand, move next to other
	OpenMP constructs with body and clauses operands.
	* tree.h (OMP_BODY): Use OMP_MASTER instead of OMP_TASKGROUP.
	* tree-inline.c (remap_gimple_stmt): Remap taskgroup clauses.
	* tree-nested.c (convert_nonlocal_omp_clauses): Handle
	(convert_local_omp_clauses): Likewise.  Remove useless test.
	* tree-parloops.c (create_call_for_reduction_1): Pass
	OMP_MEMORY_ORDER_RELAXED as new argument to
	dump_gimple_omp_atomic_load and dump_gimple_omp_atomic_store.
	* tree-pretty-print.c (dump_omp_iterators): New function.
	(dump_omp_clause): Handle OMP_CLAUSE__REDUCTEMP_,
	reduction modifiers.  Handle OMP_CLAUSE_DEPEND_DEPOBJ and
	OMP_CLAUSE_DEPEND_MUTEXINOUTSET.  Print iterators in depend clauses.
	Print __internal__ for OMP_CLAUSE_DEPEND_LAST.  Handle cancel and
	simd OMP_CLAUSE_IF_MODIFIERs.  Handle new kinds of
	OMP_CLAUSE_DEFAULTMAP. Print conditional: for
	(dump_omp_atomic_memory_order): New function.
	(dump_generic_node): Use it.  Print taskgroup clauses.  Print
	taskwait with depend clauses.
	* tree-pretty-print.h (dump_omp_atomic_memory_order): Declare.
	* tree-streamer-in.c (unpack_ts_omp_clause_value_fields):
	* tree-streamer-out.c (pack_ts_omp_clause_value_fields,
	write_ts_omp_clause_tree_pointers): Likewise.

2018-11-08  David Malcolm  <>

	PR ipa/86395
	* doc/invoke.texi (-fdump-ipa-): Document the "-optimized",
	"-missed", "-note", and "-all" sub-options.
	* ipa-inline.c (caller_growth_limits): Port from fprintf to dump
	(can_early_inline_edge_p): Likewise.
	(want_early_inline_function_p): Likewise.
	(want_inline_self_recursive_call_p): Likewise.
	(recursive_inlining): Likewise.
	(inline_small_functions): Likewise.
	(flatten_function): Likewise.
	(ipa_inline): Likewise.
	(inline_always_inline_functions): Likewise.
	(early_inline_small_functions): Likewise.
	(early_inliner): Likewise.
	* tree-inline.c (expand_call_inline): Likewise.

2018-11-08  David Malcolm  <>

	* pretty-print.c (pp_format): Handle %f.
	(selftest::test_pp_format): Add test of %f.
	* pretty-print.h (pp_double): New macro.

2018-11-08  David Malcolm  <>

	* dump-context.h (ASSERT_IS_CGRAPH_NODE): New macro.
	* dumpfile.c (make_item_for_dump_cgraph_node): Move to before...
	(dump_pretty_printer::decode_format): Implement "%C" for
	cgraph_node *.
	(selftest::test_capture_of_dump_calls): Rename "where" to
	"stmt_loc".  Convert test_decl to a function decl and set its
	location.  Add a symbol_table_test RAII instance and a
	cgraph_node, using it to test "%C" and dump_symtab_node.

2018-11-08  Eric Botcazou  <>

	PR middle-end/87916
	* cgraphclones.c (duplicate_thunk_for_node): Also set DECL_IGNORED_P.

2018-11-08  David Malcolm  <>

	* cgraph.c: Include "selftest.h".
	(saved_symtab): New variable.
	(selftest::symbol_table_test::symbol_table_test): New ctor.
	(selftest::symbol_table_test::~symbol_table_test): New dtor.
	(selftest::test_symbol_table_test): New test.
	(selftest::cgraph_c_tests): New.
	* cgraph.h (saved_symtab): New decl.
	(selftest::symbol_table_test): New class.
	* selftest-run-tests.c (selftest::run_tests): Call
	* selftest.h (selftest::cgraph_c_tests): New decl.

2018-11-08  Richard Biener  <>

	* tree-data-ref.h (lambda_int): New typedef.
	(lambda_vector_gcd): Adjust.
	(lambda_vector_new): Likewise.
	(lambda_matrix_new): Likewise.
	* tree-data-ref.c  (print_lambda_vector): Adjust.

2018-11-08  Richard Biener  <>

	PR tree-optimization/87929
	* tree-complex.c (expand_complex_comparison): Clean EH.

2018-11-08  Martin Liska  <>

	* doc/extend.texi: Reword.
	* predict.c (expr_expected_value_1): Likewise.

2018-11-08  Richard Biener  <>

	PR tree-optimization/87913
	* tree-ssa-phiopt.c (minmax_replacement): Turn EQ/NE compares
	of extreme values to ordered comparisons.

2018-11-07  Sandra Loosemore  <>

	PR middle-end/42726
	* doc/invoke.texi (Code Gen Options): Clarify -fno-common behavior.

2018-11-07  Sandra Loosemore  <>

	* doc/invoke.texi: Remove leading dash from @opindex entries
	throughout the file.

2018-11-07  Sandra Loosemore  <>

	PR driver/80828
	* doc/invoke.texi (Option Summary): Add -e and --entry.
	(Link Options): Likewise.

2018-11-07  Nathan Sidwell  <>

	PR 87926
	* (bitmap.o-warn): Add -Wno-error to unbreak
	--disable-checking bootstrap.

2018-11-07  Hafiz Abid Qadeer  <>

	* configure: Regenerated.

2018-11-07  Jozef Lawrynowicz  <>

	PR c/87691
	* stor-layout.c (compute_record_mode): Set TYPE_MODE of UNION_TYPE
	to the mode of the widest field iff the widest field has mode class
	MODE_INT, or MODE_PARTIAL_INT and the union would be passed by

2018-11-07  Nikolai Merinov  <>

	* common.opt: Add -Wattribute-warning.
	* doc/invoke.texi: Add documentation for -Wno-attribute-warning.
	* expr.c (expand_expr_real_1): Add new attribute to warning_at
	call to allow user configure behavior of "warning" attribute.

2018-11-07  Segher Boessenkool  <>

	* target.def: Put @: after every vs., e.g., and i.e. where it is
	followed by whitespace.
	* doc/extend.texi: Ditto.
	* doc/fragments.texi: Ditto.
	* doc/gimple.texi: Ditto.
	* doc/implement-c.texi: Ditto.
	* doc/install.texi: Ditto.
	* doc/invoke.texi: Ditto.
	* doc/md.texi: Ditto.
	* doc/plugins.texi: Ditto.
	* doc/rtl.texi: Ditto.
	* doc/sourcebuild.texi: Ditto.
	* doc/ Ditto.
	* doc/ux.texi: Ditto.
	* doc/tm.texi: Regenerate.

2018-11-07  Kyrylo Tkachov  <>

	* config/arm/ (ares): New entry.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/ Likewise.
	* doc/invoke.texi (ARM Options): Document ares.

2018-11-07  Kyrylo Tkachov  <>

	* config/aarch64/aarch64-cores.def (ares): Define.
	* config/aarch64/ Regenerate.
	* doc/invoke.texi (AArch64 Options): Document ares value for mtune.

2018-11-07  Jan Hubicka  <>

	* tree.c (fld_incomplete_type_of): Clear TREE_ADDRESSABLE.
	(free_lang_data_in_decl): Set TREE_ADDRESSABLE for public vars and
	functions; clear TYPE_DECL_SUPPRESS_DEBUG and DECL_MODE for

2018-11-07  Richard Biener  <>

	PR tree-optimization/87914
	* tree-vect-loop.c (vect_is_simple_reduction): Improve detection
	of nested cycles.
	(vectorizable_reduction): Handle shifts and rotates by dispatching
	to vectorizable_shift.
	* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Handle
	in-loop uses of vect_nested_cycle defs.  Merge cycle and internal
	def cases.
	(vectorizable_shift): Export and handle being called as
	(vect_analyze_stmt): Call vectorizable_shift after
	* tree-vectorizer.h (vectorizable_shift): Declare.

2018-11-07  Jan Hubicka  <>

	* ipa-devirt.c (odr_types_equivalent_p): Expect constants
	than const decls in TREE_VALUE of enum.
	(dump_type_inheritance_graph): Improve duplicate dumping.
	(free_enum_values): New.
	(build_type_inheritance_graph): Use it.
	* tree.c (free_lang_data_in_type): Free TYPE_VALUES of enums
	which are not main variants or not ODR types.
	(verify_type_variant): Expect variants to have no TYPE_VALUES.

2018-11-07  Richard Biener  <>

	* ipa-inline.c (want_inline_small_function_p): Compute
	big_speedup_p lazily and last.

2018-11-07  Jan Hubicka  <>

	* tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when
	building incomplete variant of complete type.
	(fld_type_variant): Do not copy TYPE_ALIGN when building incomplete
	variant of complete type.

2018-11-07  Chenghua Xu  <>

	* config/mips/mips.c: Fix typo in documentation of
	(mips_option_override): fix brain twister logical.
	* config/mips/mips.h: Fix typo in documentation of
	ISA_HAS_CTZ_CTO and define pattern.
	* config/mips/ (prefetch): Hoist EXT2 above
	the 2EF/EXT block.
	(prefetch_indexed): Hoist EXT2 above the EXT block.

2018-11-07  Jan Hubicka  <>

	* tree.c (free_lang_data_in_type): Add fld parameter; simplify
	return and parameter types of function and method types.
	(free_lang_data_in_cgraph): Update.

2018-11-07  Martin Liska  <>

	PR rtl-optimization/87868
	* postreload-gcse.c (eliminate_partially_redundant_load): Set
	threshold to max_count if we would overflow.
	* profile-count.h: Make max_count a public constant.

2018-11-07  Martin Liska  <>

	* mem-stats.h: Fix GNU coding style.

2018-11-07  Chenghua Xu  <>

	* config/mips/ New.
	* config/mips/mips-cpus.def: Define gs264e.
	* config/mips/mips-tables.opt: Regenerate.
	* config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for
	(mips_issue_rate): Add support for gs264e.
	(mips_multipass_dfa_lookahead): Likewise.
	* config/mips/mips.h: Define TARGET_GS264E and TUNE_GS264E.
	(MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs264e.
	(BASE_DRIVER_SELF_SPECS): march=gs264e implies -mmsa.
	* config/mips/ Include
	(processor): Add gs264e.
	* config/mips/mips.opt (MSA): Use Mask instead of Var.
	* doc/invoke.texi: Add gs264e to supported architectures.

2018-11-07  Chenghua Xu  <>

	* config/mips/ New.
	* config/mips/mips-cpus.def: Define gs464e.
	* config/mips/mips-tables.opt: Regenerate.
	* config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for
	(mips_issue_rate): Add support for gs464e.
	(mips_multipass_dfa_lookahead): Likewise.
	(mips_option_override): Enable MMI, EXT and EXT2 for gs464e.
	* config/mips/mips.h: Define TARGET_GS464E and TUNE_GS464E.
	(MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464e.
	* config/mips/ Include
	(processor): Add gs464e.
	* doc/invoke.texi: Add gs464e to supported architectures.

2018-11-07  Chenghua Xu  <>

	* config/mips/ Rename to ...
	* config/mips/ ... here.
	* config/mips/mips-cpus.def: Define gs464; Add loongson3a
	as an alias of gs464 processor.
	* config/mips/mips-tables.opt: Regenerate.
	* config/mips/mips.c (mips_issue_rate): Use PROCESSOR_GS464
	(mips_multipass_dfa_lookahead): Use TUNE_GS464 instead of
	(mips_option_override): Enable MMI and EXT for gs464.
	* config/mips/mips.h: Rename TARGET_LOONGSON_3A to TARGET_GS464;
	(MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464.
	ISA_HAS_UNFUSED_MADD4): Use TARGET_GS464 instead of
	* config/mips/ Include instead of
	(processor): Add gs464;
	* doc/invoke.texi: Add gs464 to supported architectures.

2018-11-07  Chenghua Xu  <>

	* config/mips/mips-protos.h
	(mips_loongson_ext2_prefetch_cookie): New prototype.
	* config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): New.
	(mips_option_override): Enable TARGET_LOONGSON_EXT when
	* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
	__mips_loongson_ext2, __mips_loongson_ext_rev=2.
	(ASM_SPEC): Add mloongson-ext2 and mno-loongson-ext2.
	(define_insn "ctz<mode>2"): New insn pattern.
	(define_insn "prefetch"): Include TARGET_LOONGSON_EXT2.
	(define_insn "prefetch_indexed_<mode>"): Include
	* config/mips/mips.opt (-mloongson-ext2): Add option.
	* gcc/doc/invoke.texi (-mloongson-ext2): Document.

2018-11-07  Chenghua Xu  <>

	* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add
	(BASE_DRIVER_SELF_SPECS): march=loongson3a implies
	(ASM_SPEC): Add mloongson-ext and mno-loongson-ext.
	* config/mips/ (mul<mode>3, mul<mode>3_mul3_nohilo,
	<u>div<mode>3, <u>mod<mode>3, prefetch): Use TARGET_LOONGSON_EXT
	instead of TARGET_LOONGSON_3A.
	* config/mips/mips.opt (-mloongson-ext): Add option.
	* gcc/doc/invoke.texi (-mloongson-ext): Document.

2018-11-07  Chenghua Xu  <>

	* config.gcc (extra_headers): Add loongson-mmiintrin.h.
	* config/mips/ Move to ...
	* config/mips/ here; Adjustment.
	* config/mips/loongson.h: Move to ...
	State as deprecated. Include loongson-mmiintrin.h for back
	compatibility and warning.
	* config/mips/loongson-mmiintrin.h: ... here.
	* config/mips/mips.c (mips_hard_regno_mode_ok_uncached,
	mips_vector_mode_supported_p, AVAIL_NON_MIPS16): Use
	(mips_option_override): Make sure MMI use hard float;
	(mips_shift_truncation_mask, mips_expand_vpc_loongson_even_odd,
	mips_expand_vpc_loongson_pshufh, mips_expand_vpc_loongson_bcast,
	mips_expand_vector_init): Use TARGET_LOONGSON_MMI instead of
	* gcc/config/mips/mips.h (TARGET_LOONGSON_VECTORS): Delete.
	(TARGET_CPU_CPP_BUILTINS): Add __mips_loongson_mmi.
	(BASE_DRIVER_SELF_SPECS): march=loongson2e/2f/3a implies
	* gcc/config/mips/ (MOVE64, MOVE128): Use
	(Loongson MMI patterns): Include instead of
	* gcc/config/mips/mips.opt (-mloongson-mmi): New option.
	* gcc/doc/invoke.texi (-mloongson-mmi): Document.

2018-11-07  Richard Biener  <>

	PR lto/87906
	* tree-streamer-in.c (lto_input_ts_block_tree_pointers): Fixup
	BLOCK_ABSTRACT_ORIGIN to be the ultimate origin.

2018-11-07  Alexandre Oliva  <>

	PR rtl-optimization/87874
	* lra.c (lra_substitute_pseudo): Do not create a subreg for
	const wide ints.

2018-11-06  Aaron Sawdey  <>

	* config/rs6000/ (bswap<mode>2): Force address into register
	if not in indexed or indirect form.
	(bswap<mode>2_load): Change predicate to indexed_or_indirect_operand.
	(bswap<mode>2_store): Ditto.

2018-11-06  Richard Earnshaw  <>

	* config/aarch64/ (speculation_tracker): Set the mode for
	the UNSPEC.

2018-11-06  Richard Biener  <>

	PR tree-optimization/86850
	* vec.h (vec<T, va_heap, vl_ptr>::splice): Check src.length ()
	instead of src.m_vec.

2018-11-06  Jan Hubicka  <>

	* tree.c (fld_simplified_type_name): Break out form ...
	(free_lang_data_in_type): ... here.
	(fld_type_variant_equal_p): Use it.

2018-11-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* config/default-d.c: Include memmodel.h.

	* config/sol2-d.c: New file.
	* config/t-sol2 (sol2-d.o): New rule.
	* config.gcc <*-*-solaris2*>: Set d_target_objs,

2018-11-06  Jan Hubicka  <>

	* tree.c (fld_type_variant): Also copy alignment; be sure that
	new variant is equal.

2018-11-06  Ilya Leoshkevich  <>

	PR target/87762
	* config/s390/ Add relative_long attribute.

2018-11-06  Jan Hubicka  <>

	* ipa-pure-const.c (check_decl): Do not test TYPE_NEEDS_CONSTRUCTING.
	* lto-streamer-out.c (hash_tree): Do not hash TYPE_NEEDS_CONSTRUCTING.
	* tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
	* tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
	* tree.c (free_lang_data_in_type): Clear TYPE_NEEDS_CONSTRUCTING.

2018-11-06  Richard Biener  <>

	* tree-vect-slp.c (vect_slp_bb): Move opening of vect_slp_analyze_bb
	dump-scope ...
	(vect_slp_analyze_bb_1): ... here to avoid hiding optimized locations.

2018-11-06  Jozef Lawrynowicz  <>

	* gcc/config/msp430/msp430.h (REG_CLASS_CONTENTS): Add R0 to
	(REGNO_REG_CLASS): Return NO_REGS for R2 and R3.

2018-11-06  Jan Hubicka  <>

	 * tree.c (fld_simplified_type_of): Clear TYPELESS_STORAGE flag.

2018-11-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR sanitizer/80953
	* config/sol2.h (ASAN_CC1_SPEC): Define.
	(ASAN_REJECT_SPEC): Provide default.
	* config/i386/sol2.h (CC1_SPEC): Redefine.

	* config/sparc/sparc.c (sparc_asan_shadow_offset): Declare.
	(sparc_asan_shadow_offset): New function.
	* config/sparc/sol2.h (CC1_SPEC): Append ASAN_CC1_SPEC.

2018-11-06  Jan Hubicka  <>

	* tree.c (fld_type_variant): Copy canonical type.
	(fld_incomplete_type_of): Check that canonical types looks sane;
	copy canonical type.
	(verify_type): Accept when incomplete type has complete canonical type.

2018-11-06  Jan Hubicka  <>

	* tree.c (free_lang_data): Reset overwite_assembler_name,
	print_xnode, print_decl, print_type and print_identifier of

2018-11-06  Richard Biener  <>

	PR tree-optimization/87889
	* tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
	Do nothing if old and new arg are the same

2018-11-06  Andreas Krebbel  <>

	PR target/87723
	* config/s390/ ("*r<noxa>sbg_di_rotl"): Remove mode
	attributes for operands 3 and 4.

2018-11-06  Richard Biener  <>

	PR middle-end/18041
	* simplify-rtx.c (simplify_binary_operation_1): Add pattern
	matching bitfield insertion.

2018-11-06  Alexandre Oliva  <>

	* auto-inc-dec.c: Include valtrack.h.  Improve comments.
	(reg_next_debug_use): New.
	(attempt_change): Propagate adjusted expression into affected
	debug insns.
	(merge_in_block): Track uses in debug insns.
	(pass_inc_dec::execute): Allocate and release

2018-11-06  Wei Xiao  <>

	* config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics.
	(_mm512_fixupimm_round_pd): Update parameters and builtin.
	(_mm512_maskz_fixupimm_round_pd): Ditto.
	(_mm512_fixupimm_round_ps): Ditto.
	(_mm512_maskz_fixupimm_round_ps): Ditto.
	(_mm_fixupimm_round_sd): Ditto.
	(_mm_maskz_fixupimm_round_sd): Ditto.
	(_mm_fixupimm_round_ss): Ditto.
	(_mm_maskz_fixupimm_round_ss): Ditto.
	(_mm512_fixupimm_pd): Ditto.
	(_mm512_maskz_fixupimm_pd): Ditto.
	(_mm512_fixupimm_ps): Ditto.
	(_mm512_maskz_fixupimm_ps): Ditto.
	(_mm_fixupimm_sd): Ditto.
	(_mm_maskz_fixupimm_sd): Ditto.
	(_mm_fixupimm_ss): Ditto.
	(_mm_maskz_fixupimm_ss): Ditto.
	(_mm512_mask_fixupimm_round_pd): Update builtin.
	(_mm512_mask_fixupimm_round_ps): Ditto.
	(_mm_mask_fixupimm_round_sd): Ditto.
	(_mm_mask_fixupimm_round_ss): Ditto.
	(_mm512_mask_fixupimm_pd): Ditto.
	(_mm512_mask_fixupimm_ps): Ditto.
	(_mm_mask_fixupimm_sd): Ditto.
	(_mm_mask_fixupimm_ss): Ditto.
	* config/i386/avx512vlintrin.h:
	(_mm256_fixupimm_pd): Update parameters and builtin.
	(_mm256_maskz_fixupimm_pd): Ditto.
	(_mm256_fixupimm_ps): Ditto.
	(_mm256_maskz_fixupimm_ps): Ditto.
	(_mm_fixupimm_pd): Ditto.
	(_mm_maskz_fixupimm_pd): Ditto.
	(_mm_fixupimm_ps): Ditto.
	(_mm_maskz_fixupimm_ps): Ditto.
	(_mm256_mask_fixupimm_pd): Update builtin.
	(_mm256_mask_fixupimm_ps): Ditto.
	(_mm_mask_fixupimm_pd): Ditto.
	(_mm_mask_fixupimm_ps): Ditto.
	* config/i386/i386-builtin-types.def: Add new types and remove useless ones.
	* config/i386/i386-builtin.def: Update builtin definitions.
	* config/i386/i386.c: Handle new builtin types and remove useless ones.
	* config/i386/ Update VFIXUPIMM* patterns.
	(<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
	(<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
	(<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Update.
	(avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
	(avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
	(avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Update.
	* config/i386/
	(round_saeonly_sd_mask_operand4): Add new subst_attr.
	(round_saeonly_sd_mask_op4): Ditto.
	(round_saeonly_expand_operand5): Ditto.
	(round_saeonly_expand): Update.

2018-11-05  Max Filippov  <>

	* config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0.

2018-11-05  Segher Boessenkool  <>

	PR rtl-optimization/87871
	* combine.c (make_more_copies): Skip if dest is frame_pointer_rtx.

2018-11-05  Paul Koning  <>

	* doc/sourcebuild.texi (target attributes): Document new "inf"
	effective target keyword.

2018-11-05  Robin Dapp  <>

	* config/s390/s390.c (s390_register_move_cost): Increase costs for
	moves involving the CC reg.

2018-11-05  Richard Biener  <>

	PR tree-optimization/87873
	* tree-ssa-loop-manip.h (split_loop_exit_edge): Add copy_constants_p
	* tree-ssa-loop-manip.c (split_loop_exit_edge): Likewise.
	* tree-vect-loop.c (vect_transform_loop): When splitting the
	loop exit also create forwarder PHIs for constants.
	* tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
	Handle constant to_arg, add extra checking we match up the correct

2018-11-05  Robin Dapp  <>

	* config/s390/ QImode and HImode for load on condition.

2018-11-05  Robin Dapp  <>

	* config/s390/ Fix typo.
	* config/s390/ Allow immediates for load on condition.

2018-11-05  Martin Liska  <>

	* alloc-pool.h (struct pool_usage): Use SIZE_AMOUNT.
	* bitmap.h (struct bitmap_usage): Likewise.
	* ggc-common.c (SCALE): Remove.
	(LABEL): Likewise.
	(struct ggc_usage): Use SIZE_AMOUNT. And update
	compare method.
	* ggc-page.c (SCALE): Remove.
	(STAT_LABEL): Remove.
	(ggc_print_statistics): Use SIZE_AMOUNT.
	* gimple.h (SCALE): Remove.
	(LABEL): Likewise.
	* input.c (ONE_K): Remove.
	(ONE_M): Likewise.
	(SCALE): Likewise.
	(STAT_LABEL): Likewise.
	(FORMAT_AMOUNT): Likewise.
	(dump_line_table_statistics): Use SIZE_AMOUNT.
	* mem-stats.h (struct mem_usage): Likewise.
	* rtl.c (dump_rtx_statistics): Likewise.
	(rtx_alloc_counts): Change type to size_t.
	(rtx_alloc_sizes): Likewise.
	(rtx_count_cmp): New.
	(dump_rtx_statistics): Sort first based on counts.
	* tree.c (tree_nodes_cmp): New.
	(tree_codes_cmp): New.
	(dump_tree_statistics): Sort first based on counts.
	* system.h (ONE_K): New.
	(ONE_M): Likewise.
	(SIZE_SCALE): Likewise.
	(SIZE_LABEL): Likewise.
	(SIZE_AMOUNT): Likewise.
	* tree-cfg.c (dump_cfg_stats): Use SIZE_AMOUNT.
	* tree-dfa.c (dump_dfa_stats): Likewise.
	* tree-phinodes.c (phinodes_print_statistics): Likewise.
	* tree-ssanames.c (ssanames_print_statistics): Likewise.
	* tree.c (dump_tree_statistics): Likewise.
	* vec.c (struct vec_usage): Likewise.
	* trans-mem.c (tm_mangle): Enlarge buffer in order to not
	trigger a -Werror=format-overflow with

2018-11-05  Martin Liska  <>

	* mem-stats.h (mem_alloc_description::release_instance_overhead):
	Return T *.
	* vec.c (struct vec_usage): Register m_element_size.
	(vec_prefix::register_overhead): New arguments: elements and
	(vec_prefix::release_overhead): Subtract elements.
	* vec.h (struct vec_prefix): Change signature.
	(va_heap::reserve): Pass proper arguments.
	(va_heap::release): Likewise.

2018-11-05  Martin Liska  <>

	* mem-stats.h (mem_alloc_description::get_list): Fix GNU coding
	* vec.c: Likewise.

2018-11-05  Richard Biener  <>

	* tree-scalar-evolution.h (final_value_replacement_loop): Update
	* tree-scalar-evolution.c (final_value_replacement_loop): Return
	whether anything was done.
	(scev_const_prop): Remove constant propagation part, fold
	remains into ...
	* tree-ssa-loop.c (pass_scev_cprop::execute): ... here.
	(pass_data_scev_cprop): TODO_cleanup_cfg is now done

2018-11-05  Jakub Jelinek  <>

	PR tree-optimization/87859
	* gimple-ssa-store-merging.c (struct merged_store_group): Add
	only_constants and first_nonmergeable_order members.
	(merged_store_group::merged_store_group): Initialize them.
	(merged_store_group::do_merge): Clear only_constants member if
	adding something other than INTEGER_CST store.
	(imm_store_chain_info::coalesce_immediate_stores): Don't merge
	stores with order >= first_nonmergeable_order.  Use
	merged_store->only_constants instead of always recomputing it.
	Set merged_store->first_nonmergeable_order if we've skipped any
	stores.  Attempt to merge overlapping INTEGER_CST stores that
	we would otherwise skip.

	PR sanitizer/87837
	* match.pd (X + Y < X): Don't optimize if TYPE_OVERFLOW_SANITIZED.

2018-11-05  Xuepeng Guo  <>

	PR target/87853
	* config/i386/emmintrin.h (__v16qs): New to cope with option
	(_mm_cmpeq_epi8): Replace __v16qi with __v16qs.
	(_mm_cmplt_epi8): Likewise.
	(_mm_cmpgt_epi8): Likewise.

2018-11-05  Richard Biener  <>

	PR rtl-optimization/87852
	* fwprop.c (use_killed_between): Only consider single-defs of the
	use whose definition statement dominates the use.

2018-11-05  Martin Liska  <>

	PR web/87829
	* doc/invoke.texi: Remove options that are
	not disabled with -Os.

2018-11-05  Martin Liska  <>

	PR c/87811
	* doc/extend.texi: Update constrain about the last argument
	of __builtin_expect_with_probability.

2018-11-05  Martin Liska  <>

	PR c/87811
	* predict.c (expr_expected_value_1): Verify
	that last argument is a real constants and emit

2018-11-05  Martin Liska  <>

	PR gcov-profile/77698
	* ipa-profile.c (ipa_profile): Adjust hotness threshold
	only in LTO mode.

2018-11-04  Bernd Edlinger  <>

	PR tree-optimization/86572
	* builtins.c (c_strlen): Handle negative offsets in a safe way.

2018-11-04  Bernd Edlinger  <>

	PR tree-optimization/87672
	* gimple-fold.c (gimple_fold_builtin_stxcpy_chk): Gimplify.
	* tree-ssa-strlen.c (handle_builtin_strcat): Adjust object size.

2018-11-04  Uros Bizjak  <>

	PR middle-end/58372
	* cfgexpand.c (pass_expand::execute): Move the call to
	finish_eh_generation in front of the call to expand_stack_alignment.

2018-11-04  Venkataramanan Kumar  <>

	* common/config/i386/i386-common.c (processor_alias_table): Add
	znver2 entry.
	* config.gcc (i[34567]86-*-linux* | ...): Add znver2.
	(case ${target}): Add znver2.
	* config/i386/driver-i386.c: (host_detect_local_cpu): Let
	-march=native recognize znver2 processors.
	* config/i386/i386-c.c (ix86_target_macros_internal): Add znver2.
	* config/i386/i386.c (m_znver2): New definition.
	(m_ZNVER): New definition.
	(m_AMD_MULTIPLE): Includes m_znver2.
	(processor_cost_table): Add znver2 entry.
	(processor_target_table): Add znver2 entry.
	(get_builtin_code_for_version): Set priority for
	(processor_model): Add M_AMDFAM17H_ZNVER2.
	(arch_names_table): Ditto.
	(ix86_reassociation_width): Include znver2.
	* config/i386/i386.h (TARGET_znver2): New definition.
	(struct ix86_size_cost): Add TARGET_ZNVER2.
	(enum processor_type): Add PROCESSOR_ZNVER2.
	* config/i386/ (define_attr "cpu"): Add znver2.
	* config/i386/x86-tune-costs.h: (processor_costs) Add znver2 costs.
	* config/i386/x86-tune-sched.c: (ix86_issue_rate): Add znver2.
	(ix86_adjust_cost): Add znver2.
	* config/i386/x86-tune.def:  Replace m_ZNVER1 by m_ZNVER.
	* gcc/doc/extend.texi: Add details about znver2.
	* gcc/doc/invoke.texi: Add details about znver2.

2018-11-03  Sandra Loosemore  <>

	PR target/87079

	* config/nios2/nios2.c (nios2_rtx_costs): Recognize <mul>sidi3

2018-11-02  Aaron Sawdey  <>

	* config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Pay

2018-11-02  Richard Earnshaw  <>

	* config/aarch64/aarch64.c ((aarch64_override_options): Disable
	shrink-wrapping when -mtrack-speculation.

2018-11-02  Richard Biener  <>

	* tree-ssa-coalesce.c (struct coalesce_list): Add obstack member.
	(pop_cost_one_pair): Do not free pair.
	(pop_best_coalesce): Likewise.
	(create_coalesce_list): Initialize obstack.
	(delete_coalesce_list): Free obstack.
	(find_coalesce_pair): Obstack-allocate coalesce pairs.
	(add_cost_one_coalesce): Likewise.
	(struct live_track): Remove bitmap pointer indirections.
	(new_live_track): Adjust.
	(delete_live_track): Likewise.
	(live_track_remove_partition): Likewise.
	(live_track_add_partition): Likewise.
	(live_track_live_p): Likewise.
	(live_track_process_def): Likewise.
	(live_track_clear_base_vars): Likewise.

2018-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* (gcc_cv_as_sparc_register_op): Remove.
	* configure: Regenerate.
	* Regenerate.
	* config/sparc/sparc.c (sparc_output_scratch_registers): Remove
	* config/sparc/sparc.h (ASM_ARCH64_SPEC): Remove

2018-11-02  Richard Biener  <>

	* dwarf2out.c (build_abbrev_table): Guard lookup_external_ref call
	with is_type_die.

2018-11-02  Richard Biener  <>

	PR tree-optimization/87776
	* tree-ssa-sccvn.c (do_rpo_vn): Do not mark backedges
	executable when iterating but running into rpo-vn-max-loop-depth
	and not eliding the iteration.

2018-11-30  Jan Hubicka  <>

	* tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of

2018-11-01  Aaron Sawdey  <>

	* config/rs6000/rs6000-protos.h (rs6000_address_for_fpconvert): Remove
	* config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem):
	Combine with rs6000_address_for_fpconvert.
	(rs6000_address_for_fpconvert): Combine with
	(rs6000_expand_vector_init): Change function call from
	rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem.
	* config/rs6000/ (floatsi<mode>2_lfiwax): Change call from
	rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem.
	(floatsi<mode>2_lfiwax_mem): Ditto.
	(floatunssi<mode>2_lfiwzx): Ditto.
	(floatunssi<mode>2_lfiwzx_mem): Ditto.
	(float<QHI:mode><FP_ISA3:mode>2): Ditto.
	(floatuns<QHI:mode><FP_ISA3:mode>2): Ditto.
	(fix_trunc<mode>si2_stfiwx): Ditto.
	(fixuns_trunc<mode>si2_stfiwx): Ditto.
	(float_<mode>si2_hw): Ditto.
	(floatuns_<mode>si2_hw): Ditto.
	* config/rs6000/ (*vsx_extract_si): Ditto.
	(vsx_splat_<mode>): Ditto.

2018-11-01  Joseph Myers  <>

	* (gcc_cv_as_ia64_ltoffx_ldxmov_relocs): Add newline
	at end of assembler input text.
	* configure: Regenerate.

2018-11-01  Jakub Jelinek  <>

	PR tree-optimization/87826
	* gimple-ssa-store-merging.c (do_shift_rotate): Punt if count is
	negative or larger or equal to type's precision.

2018-10-31  Alexandre Oliva  <>

	* opts.c (default_options_table): Do not enable
	OPT_fdelayed_branch at -Og.
	* doc/invoke.texi (-fdelayed-branch): Document it.

2018-10-31  Richard Henderson  <>

	* optabs-libfuncs.c (build_libfunc_function_visibility):
	New, split out from...
	(build_libfunc_function): ... here.
	(init_one_libfunc_visibility): New, split out from ...
	(init_one_libfunc): ... here.

	* config/aarch64/ (aarch64_atomic_<ATOMIC_LDOP><ALLI>_lse):
	scratch register need not be early-clobber.  Document the reason
	why we cannot use ST<OP>.

2018-10-31  Joseph Myers  <>

	PR bootstrap/82856
	* Remove AC_PREREQ.  Use AC_LANG_SOURCE.  Use single
	line for second argument of AC_DEFINE_UNQUOTED.
	* doc/install.texi (Tools/packages necessary for modifying GCC):
	Update to autoconf 2.69 and automake 1.15.1.
	* aclocal.m4,, configure: Regenerate.

2018-10-31  Pat Haugen  <>

	* tree-ssa-loop-ivcanon.c (try_peel_loop): Fix typo and remove dead

2018-10-31  Martin Liska  <>

	PR driver/83193
	* common/config/aarch64/aarch64-common.c (aarch64_parse_extension):
	Add new argument invalid_extension.
	(aarch64_get_all_extension_candidates): New function.
	(aarch64_rewrite_selected_cpu): Add NULL to function call.
	* config/aarch64/aarch64-protos.h (aarch64_parse_extension): Add
	new argument.
	(aarch64_get_all_extension_candidates): New function.
	* config/aarch64/aarch64.c (aarch64_parse_arch): Add new
	argument invalid_extension.
	(aarch64_parse_cpu): Likewise.
	(aarch64_print_hint_for_extensions): New function.
	(aarch64_validate_mcpu): Provide hint about invalid extension.
	(aarch64_validate_march): Likewise.
	(aarch64_handle_attr_arch): Pass new argument.
	(aarch64_handle_attr_cpu): Provide hint about invalid extension.
	(aarch64_handle_attr_isa_flags): Likewise.

2018-10-31  Richard Biener  <>

	PR middle-end/70359
	PR middle-end/86270
	* tree-outof-ssa.c (insert_backedge_copies): Restrict
	copy generation to useful cases.  Place the copy before
	the definition of the backedge value when possible.

2018-10-31  Claudiu Zissulescu  <>

	* config/arc/arc-arch.h (ARC_TUNE_ARC7XX): New tune value.
	* config/arc/arc.c (arc_active_insn): New function.
	(check_store_cacheline_hazard): Likewise.
	(workaround_arc_anomaly): Use check_store_cacheline_hazard.
	(arc_override_options): Disable delay slot scheduler for older
	(arc_store_addr_hazard_p): New implementation, old one renamed to
	(arc_store_addr_hazard_internal_p): Renamed.
	(arc_reorg): Don't combine into brcc instructions which are part
	of hardware hazard solution.
	* config/arc/ (attr tune): Consider new arc7xx tune value.
	(tune_arc700): Likewise.
	* config/arc/arc.opt (arc7xx): New tune value.
	* config/arc/ Improve A7 scheduler.

2018-10-31  Claudiu Zissulescu  <>

	* config/arc/arc.c (arc_override_options): Remove
	* config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Update.
	(CASE_VECTOR_MODE): Likewise.
	(ADDR_VEC_ALIGN): Update.
	(TARGET_BI_BIH): Define.
	* config/arc/ (casesi): Rework to accept BI/BIH
	instructions, remove compact_casesi use case.
	(casesi_compact_jump): Remove.
	(casesi_dispatch): New pattern.
	* config/arc/arc.opt: Add mbranch-index option. Deprecate
	compact_casesi option.
	* doc/invoke.texi: Document mbranch-index option.

2018-10-31  Claudiu Zissulescu  <>

	* config/arc/arc.c (arc_get_tp): Remove function.
	(arc_emit_call_tls_get_addr): Likewise.
	(arc_call_tls_get_addr): New function.
	(arc_legitimize_tls_address): Make use of arc_call_tls_get_addr.
	* config/arc/ (tls_load_tp_soft): Remove.
	(tls_gd_get_addr): Likewise.

2018-10-31  Claudiu Zissulescu  <>

	* config/arc/ (mulsi3): Remove call to mulsi_600_lib.
	(mulsi3_600_lib): Remove pattern.
	(umulsi3_highpart_600_lib_le): Likewise.
	(umulsi3_highpart): Remove call to umulsi3_highpart_600_lib_le.
	(umulsidi3): Remove call to umulsidi3_600_lib.
	(umulsidi3_600_lib): Remove pattern.
	(peephole2): Remove peephole using the above deprecated patterns.

2018-10-31  Thomas Preud'homme  <>

	PR target/87374
	* config/arm/arm.c (arm_option_check_internal): Disable the combined
	use of -mslow-flash-data and -mword-relocations.
	(arm_option_override): Enable -mword-relocations if -fpic or -fPIC.
	* config/arm/ (SYMBOL_REF MOVT splitter): Stop checking for
	* doc/invoke.texi (-mword-relocations): Mention conflict with
	(-mslow-flash-data): Reciprocally.

2018-10-31  Richard Henderson  <>

	* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Force
	16-byte modes held in GP registers to use an even regno.

	* config/aarch64/aarch64.c (aarch64_emit_bic): Remove.
	(aarch64_atomic_ldop_supported_p): Remove.
	(aarch64_gen_atomic_ldop): Remove.
	* config/aarch64/ (atomic_<atomic_optab><ALLI>):
	Fully expand LSE operations here.
	(atomic_fetch_<atomic_optab><ALLI>): Likewise.
	(atomic_<atomic_optab>_fetch<ALLI>): Likewise.
	(aarch64_atomic_<ATOMIC_LDOP><ALLI>_lse): Drop atomic_op iterator
	and use ATOMIC_LDOP instead; use register_operand for the input;
	drop the split and emit insns directly.
	(aarch64_atomic_fetch_<ATOMIC_LDOP><ALLI>_lse): Likewise.
	(aarch64_atomic_<atomic_op>_fetch<ALLI>_lse): Remove.
	(@aarch64_atomic_load<ATOMIC_LDOP><ALLI>): Remove.

	* config/aarch64/aarch64.c (aarch64_emit_atomic_swap): Remove.
	(aarch64_gen_atomic_ldop): Don't call it.
	* config/aarch64/ (atomic_exchange<ALLI>):
	Use aarch64_reg_or_zero.
	(aarch64_atomic_exchange<ALLI>): Likewise.
	(aarch64_atomic_exchange<ALLI>_lse): Remove split; remove & from
	operand 0; use aarch64_reg_or_zero for input; merge ...
	(@aarch64_atomic_swp<ALLI>): ... this and remove.

	* config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): New.
	(aarch64_split_compare_and_swap): Use it.
	(aarch64_expand_compare_and_swap): Likewise.  Remove convert_modes;
	test oldval against the proper predicate.
	* config/aarch64/ (@atomic_compare_and_swap<ALLI>):
	Use nonmemory_operand for expected.
	(cas_short_expected_pred): New.
	(@aarch64_compare_and_swap<SHORT>): Use it; use "rn" not "rI" to match.
	(@aarch64_compare_and_swap<GPI>): Use "rn" not "rI" for expected.
	* config/aarch64/ (aarch64_plushi_immediate): New.
	(aarch64_plushi_operand): New.

	* config/aarch64/aarch64.c (aarch64_expand_compare_and_swap):
	Force oldval into the rval register for TARGET_LSE; emit the compare
	during initial expansion so that it may be deleted if unused.
	(aarch64_gen_atomic_cas): Remove.
	* config/aarch64/ (@aarch64_compare_and_swap<SHORT>_lse):
	Change =&r to +r for operand 0; use match_dup for operand 2;
	remove is_weak and mod_f operands as unused.  Drop the split
	and merge with...
	(@aarch64_atomic_cas<SHORT>): ... this pattern's output; remove.
	(@aarch64_compare_and_swap<GPI>_lse): Similarly.
	(@aarch64_atomic_cas<GPI>): Similarly.

2018-10-31  Richard Biener  <>

	* tree-eh.c (replace_trapping_overflow): Simplify ABS_EXPR case
	using ABSU_EXPR.

2018-10-31  Sameera Deshpande  <>

	* config/aarch64/aarch64-cores.def (saphira): Use saphira pipeline.
	* config/aarch64/ Include
	* config/aarch64/ New file for pipeline description.

2018-10-30  Martin Sebor  <>

	PR middle-end/87041
	* gimple-ssa-sprintf.c (format_directive): Use %G to include
	inlining context.
	Avoid setting POSUNDER4K here.
	(get_destination_size): Handle null argument values.
	(get_user_idx_format): New function.
	(sprintf_dom_walker::handle_gimple_call): Handle all printf-like
	functions, including user-defined with attribute format printf.
	Use %G to include inlining context.
	Set POSUNDER4K here.

2018-10-30  Jan Hubicka  <>

	* params.def (lto-partitions): Bump from 32 to 128.

2018-10-30  Jan Hubicka  <>

	* tree.c
	(free_lang_data_d, add_tree_to_fld_list, fld_worklist_push): Move
	head in file.
	(free_lang_data_in_type): Forward declare.
	(fld_type_variant_equal_p): New function.
	(fld_type_variant): New function
	(fld_incomplete_types): New hash.
	(fld_incomplete_type_of): New function
	(fld_simplfied-type): New function.
	(free_lang_data_in_decl): Add fld parameter; simplify type of FIELD_DECL
	(free_lang_data): Allocate and free fld_incomplete_type; update call
	of free_lang_data_in_decl.

2018-10-30  Eric Botcazou  <>

	* gcov.c (output_lines): Remove duplicate line.

2018-10-30  Aaron Sawdey  <>

	* config/rs6000/ (bswapdi2): Force address into register
	if not in indexed or indirect form.
	(bswapdi2_load): Change predicate to indexed_or_indirect_operand.
	(bswapdi2_store): Ditto.
	* config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): New
	helper function.
	* config/rs6000/rs6000-protos.h (rs6000_force_indexed_or_indirect_mem):
	Prototype for helper function.

2018-10-30  Martin Sebor  <>

	* doc/extend.texi (optimize): Clarify/expand attribute documentation.
	(target, pragma GCC optimize, pragma GCC target): Ditto.

2018-10-30  Jonathan Wakely  <>

	* doc/extend.texi: Fix prototype and description of

2018-10-30  Michael Ploujnikov  <>

	* cgraph.h (clone_function_name_1): Replaced by new
	  clone_function_name_numbered that takes name as string; for
	  privatize_symbol_name_1 use only.
	  (clone_function_name): Renamed to
	  clone_function_name_numbered to be explicit about numbering.
	  (clone_function_name): New two-argument function that does
	  not number its output.
	  (clone_function_name): New three-argument function that
	  takes a number to append to its output.
	* cgraphclones.c (duplicate_thunk_for_node):
	  (clone_function_name_1): Renamed.
	  (clone_function_name_numbered): Two new functions.
	  (clone_function_name): Improved documentation.
	  (cgraph_node::create_virtual_clone): Use clone_function_name_numbered.
	* config/rs6000/rs6000.c (make_resolver_func): Ditto.
	* final.c (final_scan_insn_1): Use the new clone_function_name
	  without numbering.
	* multiple_target.c (create_dispatcher_calls): Ditto.
	  (create_target_clone): Ditto.
	* omp-expand.c (grid_expand_target_grid_body): Ditto.
	* omp-low.c (create_omp_child_function_name): Ditto.
	* omp-simd-clone.c (simd_clone_create): Ditto.
	* symtab.c (simd_symtab_node::noninterposable_alias): Use the
	  new clone_function_name without numbering.

2018-10-30  Richard Earnshaw  <>

	* alloc-pool.h (base_pool_allocator <TBlockAllocator>::initialize):
	Assert that the allocation size is not zero.

2018-10-30  Richard Biener  <>

	PR tree-optimization/87800
	* tree-vect-slp.c (vect_build_slp_tree_2): Reject any
	non-induction or reduction PHIs.

2018-10-30  Sameera Deshpande  <>

	* config/aarch64/falkor-tag-collision-avoidance.c
	(execute_tag_collision_avoidance): Call df_note_add_problem.

2018-10-30  Martin Liska  <>

	* doc/extend.texi: Fix typo in documentation
	of __builtin_expect_with_probability.

2018-10-29  David Malcolm  <>

	PR c++/87721
	* input.c (get_substring_ranges_for_loc): Detect if
	linemap_resolve_location gives us a NULL map, and reject
	this case.

2018-10-29  Iain Buclaw  <>

	* config.gcc (xstormy16-*-elf): Set tm_d_file.

2018-10-29  David Malcolm  <>
	    Martin Sebor  <>
	    Manuel Lopez-Ibanez  <>

	* doc/ux.texi (Quoting): New subsection, adapted from material at written by
	MartinSebor and ManuelLopezIbanez.
	(Fix-it hints): Note that fix-it hints shouldn't be marked for

2018-10-29  Kugan Vivekanandarajah  <>

	PR middle-end/87469
	* tree-ssa-loop-niter.c (number_of_iterations_popcount): Fix niter
	max value.

2018-10-29  Paul A. Clarke  <>

	* Remove inaccurate comment.

2018-10-29  Paul Koning  <>

	* doc/rtl.texi (CONST_WIDE_INT_ELT): Give correct macro name.

2018-10-29  Paul A. Clarke  <>

	* gcc/config/rs6000/mmintrin.h (_mm_packs_pi16, _mm_packs_pi32,
	_mm_packs_pu16, _mm_unpackhi_pi8, _mm_unpacklo_pi8, _mm_add_pi8,
	_mm_add_pi16, _mm_add_pi32, _mm_sub_pi8, _mm_sub_pi16, _mm_sub_pi32,
	_mm_cmpgt_pi8, _mm_cmpeq_pi16, _mm_cmpgt_pi16, _mm_cmpeq_pi32,
	_mm_cmpgt_pi32, _mm_adds_pi8, _mm_adds_pi16, _mm_adds_pu8,
	_mm_adds_pu16, _mm_subs_pi8, _mm_subs_pi16, _mm_subs_pu8,
	_mm_subs_pu16, _mm_madd_pi16, _mm_mulhi_pi16, _mm_mullo_pi16,
	_mm_sll_pi16, _mm_sra_pi16, _mm_srl_pi16, _mm_set1_pi16, _mm_set1_pi8):
	Change 'vector' to '__vector'.
	* gcc/config/rs6000/xmmintrin.h (_mm_cvtps_pi32, _mm_cvttps_pi32,
	_mm_cvtps_pi16, _mm_cvtps_pi8, _mm_max_pi16, _mm_max_pu8, _mm_min_pi16,
	_mm_min_pu8, _mm_mulhi_pu16, _mm_shuffle_pi16, _mm_avg_pu8,
	_mm_avg_pu16): Likewise.  And, whitespace corrections.

2018-10-29  Richard Biener  <>

	PR tree-optimization/87785
	* tree-vect-slp.c (vect_gather_slp_loads): Only gather
	internal defs.

2018-10-29  Olivier Hainque  <>

	* VXWORKS_NET_LIBS_RTP: New macro, network part of VXWORKS_LIBS_RTP.

2018-10-29  Olivier Hainque  <>

	* config/vxworks.h (VXWORKS_PERSONALITY): New VxWorks
	ports configuration macro, defaults to "gnu".

2018-10-29  Olivier Hainque  <>

	* config/vxworks.h (CLEAR_INSN_CACHE): #undef before #define.

2018-10-29  Richard Biener  <>

	PR tree-optimization/87790
	* tree-vect-slp.c (vect_mark_slp_stmts): Simplify.
	(vect_make_slp_decision): Adjust.
	(vect_slp_analyze_bb_1): Likewise.
	(vect_detect_hybrid_slp_stmts): Properly union SLP type over

2018-10-29  Richard Biener  <>

	PR tree-optimization/87785
	* tree-vect-slp.c (vect_build_slp_tree_2): Remove loads argument
	and processing.
	(vect_build_slp_tree): Likewise.
	(vect_gather_slp_loads): New function.
	(vect_analyze_slp_instance): Gather loads separately from the
	SLP tree build.

2018-10-29  Martin Liska  <>

	* Make dependency to json.o.
	* doc/gcov.texi: Document new JSON format, remove
	old intermediate format documentation.
	* gcov.c (struct function_info): Come up with m_name and
	(function_info::function_info): Initialize it.
	(function_info::~function_info): Release it.
	(main): Rename flag_intermediate_format to flag_json_format.
	(print_usage): Describe --json-format.
	(process_args): Set flag_json_format.
	(output_intermediate_line): Remove.
	(output_intermediate_json_line): Likewise.
	(get_gcov_intermediate_filename): Return new extension
	(output_intermediate_file): Implement JSON emission.
	(output_json_intermediate_file): Implement JSON emission.
	(generate_results): Use ::get_name for function name.
	Handle JSON output file.
	(read_graph_file): Use ::get_name instead of cplus_demangle.
	(read_count_file): Likewise.
	(solve_flow_graph): Likewise.
	(add_line_counts): Likewise.
	(accumulate_line_counts): Use new flag_json_format.
	(output_function_details): Use ::get_name instead of cplus_demangle.
	(output_lines): Likewise.
	* (test_writing_literals): Add new tests.
	* json.h (class literal): Add new boolean constructor.

2018-10-29  Segher Boessenkool  <>

	PR rtl-optimization/87701
	PR rtl-optimization/87780
	* combine.c (make_more_copies): Rewrite.

2018-10-28  Kugan Vivekanandarajah  <>

	* doc/generic.texi (ABSU_EXPR): Document.
	* match.pd (absu(x)*absu(x) -> x*x): Handle.
	(absu(absu(X)) -> absu(X)): Likewise.
	(absu(-X) -> absu(X)): Likewise.
	(absu(X)  where X is nonnegative -> X): Likewise.

2018-10-28  Iain Buclaw  <>

	* (tm_d_file_list, tm_d_include_list): New variables.
	(tm_d.h, cs-tm_d.h, default-d.o): New rules.
	(d/d-target-hooks-def.h, s-d-target-hooks-def-h): New rules.
	(s-tm-texi): Also check timestamp on d-target.def.
	(generated_files): Add TM_D_H and d-target-hooks-def.h.
	(build/genhooks.o): Also depend on D_TARGET_DEF.
	* config.gcc (tm_d_file, d_target_objs, target_has_targetdm): New
	* config/aarch64/aarch64-d.c: New file.
	* config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
	* config/aarch64/aarch64-protos.h (aarch64_d_target_versions): New
	* config/aarch64/aarch64.h (TARGET_D_CPU_VERSIONS): Define.
	* config/aarch64/t-aarch64 (aarch64-d.o): New rule.
	* config/arm/arm-d.c: New file.
	* config/arm/arm-protos.h (arm_d_target_versions): New prototype.
	* config/arm/arm.h (TARGET_D_CPU_VERSIONS): Define.
	* config/arm/linux-eabi.h (EXTRA_TARGET_D_OS_VERSIONS): Define.
	* config/arm/t-arm (arm-d.o): New rule.
	* config/default-d.c: New file.
	* config/glibc-d.c: New file.
	* config/gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/i386/i386-d.c: New file.
	* config/i386/i386-protos.h (ix86_d_target_versions): New prototype.
	* config/i386/i386.h (TARGET_D_CPU_VERSIONS): Define.
	* config/i386/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define.
	* config/i386/t-i386 (i386-d.o): New rule.
	* config/kfreebsd-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/kopensolaris-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/linux-android.h (ANDROID_TARGET_D_OS_VERSIONS): Define.
	* config/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/mips/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define.
	* config/mips/mips-d.c: New file.
	* config/mips/mips-protos.h (mips_d_target_versions): New prototype.
	* config/mips/mips.h (TARGET_D_CPU_VERSIONS): Define.
	* config/mips/t-mips (mips-d.o): New rule.
	* config/powerpcspe/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/powerpcspe/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/powerpcspe/powerpcspe-d.c: New file.
	* config/powerpcspe/powerpcspe-protos.h (rs6000_d_target_versions):
	New prototype.
	* config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue):
	Support GNU D by using 0 as the language type.
	* config/powerpcspe/powerpcspe.h (TARGET_D_CPU_VERSIONS): Define.
	* config/powerpcspe/t-powerpcspe (powerpcspe-d.o): New rule.
	* config/riscv/riscv-d.c: New file.
	* config/riscv/riscv-protos.h (riscv_d_target_versions): New
	* config/riscv/riscv.h (TARGET_D_CPU_VERSIONS): Define.
	* config/riscv/t-riscv (riscv-d.o): New rule.
	* config/rs6000/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/rs6000/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
	* config/rs6000/rs6000-d.c: New file.
	* config/rs6000/rs6000-protos.h (rs6000_d_target_versions): New
	* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
	Support GNU D by using 0 as the language type.
	* config/rs6000/rs6000.h (TARGET_D_CPU_VERSIONS): Define.
	* config/rs6000/t-rs6000 (rs6000-d.o): New rule.
	* config/s390/s390-d.c: New file.
	* config/s390/s390-protos.h (s390_d_target_versions): New prototype.
	* config/s390/s390.h (TARGET_D_CPU_VERSIONS): Define.
	* config/s390/t-s390 (s390-d.o): New rule.
	* config/sparc/sparc-d.c: New file.
	* config/sparc/sparc-protos.h (sparc_d_target_versions): New
	* config/sparc/sparc.h (TARGET_D_CPU_VERSIONS): Define.
	* config/sparc/t-sparc (sparc-d.o): New rule.
	* config/t-glibc (glibc-d.o): New rule.
	* configure: Regenerated.
	* (tm_d_file): New variable.
	(tm_d_file_list, tm_d_include_list, d_target_objs): Add substitutes.
	* doc/contrib.texi (Contributors): Add self for the D frontend.
	* doc/frontends.texi (G++ and GCC): Mention D as a supported language.
	* doc/install.texi (Configuration): Mention libphobos as an option for
	--enable-shared.  Mention d as an option for --enable-languages.
	(Testing): Mention check-d as a target.
	* doc/invoke.texi (Overall Options): Mention .d, .dd, and .di as file
	name suffixes.  Mention d as a -x option.
	* doc/sourcebuild.texi (Top Level): Mention libphobos.
	* doc/standards.texi (Standards): Add section on D language.
	* doc/tm.texi: Regenerated.
	* doc/ Add @node for D language and ABI, and @hook for
	* dwarf2out.c (is_dlang): New function.
	(gen_compile_unit_die): Use DW_LANG_D for D.
	(declare_in_namespace): Return module die for D, instead of adding
	extra declarations into the namespace.
	(gen_namespace_die): Generate DW_TAG_module for D.
	(gen_decl_die): Handle CONST_DECLSs for D.
	(dwarf2out_decl): Likewise.
	(prune_unused_types_walk_local_classes): Handle DW_tag_interface_type.
	(prune_unused_types_walk): Handle DW_tag_interface_type same as other
	kinds of aggregates.
	* gcc.c (default_compilers): Add entries for .d, .dd and .di.
	* genhooks.c: Include d/d-target.def.

2018-10-28  Iain Sandoe  <>

	PR target/85669
	* config/rs6000/darwin.h (STACK_BOUNDARY): New.
	(RS6000_STARTING_FRAME_OFFSET): Adjust to preserve 16byte alignment.

2018-10-27  Sandra Loosemore  <>

	PR target/80024
	* config/nios2/nios2.c (nios2_valid_target_attribute_rec): Fix
	error message.

2018-10-26  Tulio Magno Quites Machado Filho  <>

	* doc/extend.texi (PowerPC builtins): Fix __builtin_unpack_ibm128
	return type and other typos.

2018-10-26  Aaron Sawdey  <>

	* config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Change to
	a shorter sequence with fewer branches.
	(emit_final_str_compare_gpr): Ditto.

2018-10-26  Paul A. Clarke  <>

	* config/rs6000/tmmintrin.h: New file.
	* config.gcc (powerpc*-*-*): Add tmmintrin.h to extra_headers.

2018-10-26  Paul A. Clarke  <>

	* config/rs6000/mmintrin.h: Enable 32bit compilation.
	* config/rs6000/xmmintrin.h: Likewise.

2018-10-26  Paul A. Clarke  <>

	* config/rs6000/xmmintrin.h (_mm_extract_pi16): Fix for big-endian.

2018-10-26  Richard Biener  <>

	* tree-vect-slp.c (vect_mark_slp_stmts): Add visited hash_set
	and wrapper.
	(vect_mark_slp_stmts_relevant): Likewise.
	(vect_detect_hybrid_slp_stmts): Likewise.
	(vect_bb_slp_scalar_cost): Likewise.
	(vect_remove_slp_scalar_calls): Likewise.

2018-10-26  Jan Hubicka  <>

	* ipa-devirt.c (odr_subtypes_equivalent_p): Fix recursion.
	(warn_types_mismatch): Fix walk of DECL_NAME.
	(odr_types_equivalent_p): Fix overactive assert.

2018-10-26  Richard Biener  <>

	PR tree-optimization/87105
	* tree-vectorizer.h (_slp_tree::refcnt): New member.
	* tree-vect-slp.c (vect_free_slp_tree): Decrement and honor
	(vect_create_new_slp_node): Initialize refcnt to one.
	(bst_traits): Move.
	(scalar_stmts_set_t, bst_fail): Remove.
	(vect_build_slp_tree_2): Add bst_map argument and adjust calls.
	(vect_build_slp_tree): Add bst_map argument and lookup
	already created SLP nodes.
	(vect_print_slp_tree): Handle a SLP graph, print SLP node
	(vect_slp_rearrange_stmts): Handle a SLP graph.
	(vect_analyze_slp_instance): Adjust and free SLP nodes from
	the CSE map.  Fix indenting.
	(vect_schedule_slp_instance): Add short-cut.

2018-10-26  Martin Liska  <>

	PR testsuite/86158
	* ipa-prop.c (struct ipa_vr_ggc_hash_traits): Hash with
	addr_expr and not with pointers.

2018-10-26  Jan Hubicka  <>

	* tree.c (free_lang_data_in_type): Only check main variants.
	* ipa-devirt.c (warn_odr): Make static.
	(types_same_for_odr): Drop strict variant.
	(types_odr_comparable): Likewise.
	(odr_or_derived_type_p): Look for main variants.
	(odr_name_hasher::equal): Cleanup comment.
	(odr_subtypes_equivalent): Add warn and warned arguments; check main
	(type_variants_equivalent_p): break out from ...
	(odr_types_equivalent): ... here; go for main variants where needed.
	(warn_odr): ... here; turn static.
	(warn_types_mismatch): Compare mangled names of main variants.
	* ipa-utils.h (types_odr_comparable): Drop strict parameter.
	(type_with_linkage_p): Sanity check that we look at main variant.
	* lto.c (lto_read_decls): Only consider main variant to be ODR type.
	* tree.h (types_same_for_odr): Drop strict argument.

2018-10-26  Richard Biener  <>

	PR tree-optimization/87746
	* tree-vect-data-refs.c (vect_update_misalignment_for_peel):
	Simplify and fix WRT strided store groups with size not
	equal to step in element count.
	(vect_analyze_group_access_1): Dump the whole group.

2018-10-25  Carl Love  <>

	* config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_VSCEDPGT,
	P9V_BUILTIN_VEC_VSCEDPUO): Rename base overloaded name.  Add quad
	precicion entry for each overloaded builtin.
	* config/rs6000/rs6000-builtin.def (VSCEDPGT, VSCEDPLT, VSCEDPEQ,
	VSCEDPUO): Rename overloaded name.
	VSCEDPUO, VSCEQPUO): Add defitions for overloaded builtins.
	* config/rs6000/ (xscmpexpqp_<code>_<mode>): Add
	define_expand for xscmpexqp instruction.
	(*xscmpexpqp): Add define_insn for the xscmpexqp instruction.

2018-10-25  Bill Schmidt  <>
	    Jinsong Ji  <>

	* config/rs6000/emmintrin.h (_mm_slli_epi16): Replace deprecated
	function with vec_sl.
	(_mm_slli_epi32): Likewise.
	(_mm_slli_epi64): Likewise.
	(_mm_srai_epi16): Replace deprecated function with vec_sra.
	(_mm_srai_epi32): Likewise.
	(_mm_srli_epi16): Replace deprecated function with vec_sr.
	(_mm_srli_epi32): Likewise.
	(_mm_srli_epi64): Likewise.
	(_mm_sll_epi16): Replace deprecated function with vec_sl.
	(_mm_sll_epi32): Likewise.
	(_mm_sll_epi64): Likewise.
	(_mm_sra_epi16): Replace deprecated function with vec_sra.
	(_mm_sra_epi32): Likewise.
	(_mm_srl_epi16): Replace deprecated function with vec_sr.
	(_mm_srl_epi32): Likewise.
	(_mm_srl_epi64): Likewise.

2018-10-25  Bill Schmidt  <>
	    Jinsong Ji  <>

	* gcc/config/rs6000/emmintrin.h (_mm_sll_epi16): Replace
	comparison operators with vec_cmp* for compatibility due to
	unfortunate history; clean up formatting and use types more
	(_mm_sll_epi32): Likewise.
	(_mm_sll_epi64): Likewise.
	(_mm_srl_epi16): Likewise.
	(_mm_srl_epi32): Likewise.
	(_mm_srl_epi64): Likewise.

2018-10-25  Bill Schmidt  <>
	    Jinsong Ji  <>

	* config/rs6000/emmintrin.h (_mm_sll_epi64): Remove wrong cast.
	* config/rs6000/xmmintrin.h (_mm_min_ps): Change m's type to
	__vector __bool int.  Use vec_cmpgt in preference to deprecated
	function vec_vcmpgtfp.
	(_mm_max_ps): Likewise.

2018-10-25  Jeff Law  <>

	* config/rl78/rl78.c (insn_ok_now): Always re-recognize the insn
	if returning false.

2018-10-25  Martin Sebor  <>

	* doc/extend.texi (aligned): Expand attribute description.
	(Alignment): Rename section.  Discuss function arguments.

2018-10-25  Jan Hubicka  <>

	* ipa-devirt.c (main_odr_variant): Remove.
	(hash_odr_name, types_same_for_odr, types_odr_comparable,
	odr_name_hasher::equal, odr_subtypes_equivalent_p):
	Drop use of main_odr_variant.
	(add_type_duplicate): Silence confused warnings on integer types.
	(get_odr_type): Always look for main variant.
	(register_odr_type): Simplify.

2018-10-25  Richard Biener  <>

	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses):
	Initialize ng to silence error with release checking bootstrap.

2018-10-25  Richard Biener  <>

	* tree-if-conv.c: Include tree-ssa-sccvn.h.
	(tree_if_conversion): Run CSE on the if-converted loop body.

2018-10-25  Ilya Leoshkevich  <>

	* config/s390/ (ZL): New constraint.
	* config/s390/s390.c (legitimate_pic_operand_p): Accept LARL
	* config/s390/ (movdi_larl): Remove.
	(movdi_64): Add the LARL alternative.

2018-10-25  Ilya Leoshkevich  <>

	PR bootstrap/87747
	* rtl.c (RTX_CODE_HWINT_P_1): New helper macro.
	(RTX_CODE_HWINT_P): New macro.
	(rtx_code_size): Use RTX_CODE_HWINT_P ().

2018-10-25  Jan Hubicka  <>

	* ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types
	is anonymous.

2018-10-25  Richard Biener  <>

	PR tree-optimization/87665
	PR tree-optimization/87745
	* tree-vectorizer.h (get_earlier_stmt): Remove.
	(get_later_stmt): Pick up UID from the original non-pattern stmt.

2018-10-25  Sam Tebbs  <>

	* options.texi (Deprecated): Move list to Var section.

2018-10-24  Bill Schmidt  <>
	    Jinsong Ji  <>

	* config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Change deprecated
	__vector long to __vector long long.
	(_mm_cvtpd_ps): Likewise.
	(_mm_cvttpd_epi32): Likewise.
	(_mm_cvtpi32_pd): Likewise.
	(_mm_unpackhi_epi64): Likewise.
	(_mm_unpacklo_epi64): Likewise.

2018-10-24  Segher Boessenkool  <>

	PR rtl-optimization/87720
	* combine.c (make_more_copies): Skip if the dest is pc_rtx.

2018-10-24  Alexandre Oliva  <>

	* gimple-ssa-isolate-paths.c
	(find_implicit_erroneous_behavior): Do not change code if the
	pass is running for warnings only.
	(find_explicit_erroneous_behavior): Likewise.

2018-10-24  Michael Meissner  <>

	* config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME):
	Define as rs6000_mangle_decl_assembler_name.
	(rs6000_mangle_decl_assembler_name): If the user switched from IBM
	long double to IEEE long double, switch the names of the long
	double built-in functions to be <func>f128 instead of <func>l.

2018-10-24  Martin Sebor  <>

	* doc/extend.texi (nonnull): List no-argument form.  Reference
	-fno-delete-null-pointer-checks and -fisolate-erroneous-paths-attribute.

2018-10-24  Richard Biener  <>

	* tree-ssa-sccvn.c (do_rpo_vn): Free rpo_state.

2018-10-24  Martin Liska  <>

	PR tree-optimization/84436
	* tree-switch-conversion.c (switch_conversion::contains_same_values_p):
	(switch_conversion::contains_linear_function_p): New.
	(switch_conversion::build_one_array): Support linear
	transformation on input.
	* tree-switch-conversion.h (struct switch_conversion): Add
	contains_linear_function_p declaration.

2018-10-24  Richard Biener  <>

	* varasm.c (const_hash_1): Return hash of ADDR_EXPR
	if its argument is CONSTANT_CLASS_P.

2018-10-11  Jan Hubicka  <>

	* ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL;
	it is wrong for forward declarations.

2018-10-24  Ilya Leoshkevich  <>

	* config/s390/s390.c (s390_check_qrst_address): Add the missing
	SYMBOL_REF_P () check.

2018-10-24  Richard Biener  <>

	PR tree-optimization/87105
	* tree-vect-data-refs.c (vect_analyze_group_access_1): Adjust
	dump classification.
	(vect_analyze_data_ref_accesses): Handle duplicate loads and
	stores by splitting the affected group after the fact.
	* tree-vect-slp.c (vect_build_slp_tree_2): Dump when we
	fail the SLP build because of size constraints.

2018-10-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* (gcc_cv_ld_aligned_shf_merge): New test.
	* configure: Regenerate.
	* Regenerate.
	* varasm.c (mergeable_string_section): Use readonly_data_section
	if linker doesn't support SHF_MERGE with alignment > 8.
	(mergeable_constant_section): Likewise.

2018-10-24  Richard Biener  <>

	PR tree-optimization/84013
	* tree-ssa-structalias.c (struct msdi_data): New struct for
	marshalling data to walk_stmt_load_store_ops.
	(maybe_set_dependence_info): Refactor as callback for
	(compute_dependence_clique): Set restrict info on all stmt kinds.

2018-10-24  Martin Liska  <>

	* cgraph.c (cgraph_node::dump):
	Remove reduntant dumps and make tp_first_run dump more compact.

2018-10-24  Richard Biener  <>

	PR tree-optimization/87665
	* tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust
	to reflect reality.

2018-10-12  Jeff Law  <>

	* config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation
	for H8/S.

2018-10-23  Richard Biener  <>

	* tree-vrp.c (add_assert_info): Guard dump_printf with
	* gimple-ssa-evrp-analyze.c
	Use value_range::ignore_equivs_equal_p.

2018-10-23  Richard Biener  <>

	PR tree-optimization/87105
	PR tree-optimization/87608
	* passes.def (pass_all_early_optimizations): Add early phi-opt
	after dce.
	* tree-ssa-phiopt.c (value_replacement): Ignore NOPs and predicts in
	addition to debug stmts.
	(tree_ssa_phiopt_worker): Add early_p argument, do only min/max
	and abs replacement early.
	* tree-cfg.c (gimple_empty_block_p): Likewise.

2018-10-23  Richard Earnshaw  <>

	PR target/86383
	* config.gcc (arm*-*-netbsdelf*): Default to StrongARM if no CPU
	specified to configure.
	(arm*-*-*): Use ARM7TDMI as the target CPU if no default provided.

2018-10-23  Richard Biener  <>

	PR tree-optimization/87700
	* tree-ssa-copy.c (set_copy_of_val): Fix change detection logic.

2018-10-23  Jakub Jelinek  <>

	PR target/87674
	* config/i386/avx512vlintrin.h (_mm_mask_mullo_epi32): Change type of
	second argument from __mmask16 to __mmask8.
	* config/i386/avx512vlbwintrin.h (_mm_mask_packus_epi32,
	_mm_mask_packs_epi32): Likewise.
	* config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i64scatter_ps):
	(_mm512_mask_prefetch_i64scatter_pd): Likewise.  Formatting fix.

2018-10-23  Richard Biener  <>

	* tree-vect-stmts.c (vect_analyze_stmt): Fix typo in comment.

2018-10-23  Richard Biener  <>

	PR tree-optimization/86144
	* tree-vect-stmts.c (vect_analyze_stmt): Prefer -mveclibabi
	over simd attribute.

2018-10-23  Richard Biener  <>

	PR tree-optimization/87693
	* tree-ssa-threadedge.c (thread_around_empty_blocks): Handle
	the case we do not find the taken edge.

2018-10-22  Bill Schmidt  <>
	    Jinsong Ji  <>

	* config/rs6000/emmintrin.h (_MM_SHUFFLE2): Comment cleanup.
	(_mm_store_pd): Use unaligned vector type for pointer cast.
	(_mm_maskmoveu_si128): Likewise.
	* config/rs6000/xmmintrin.h (__m128_u): New typedef.
	(_mm_store_ps): Use unaligned vector type for pointer cast.

2018-10-22  Paul Koning  <>

	* symtab.c (symtab_node::increase_alignment): Correct max
	alignment check.

2018-10-22  Yury Gribov  <>

	PR tree-optimization/87633
	* match.pd: Do not generate unordered integer comparisons.

2018-10-22  Segher Boessenkool  <>

	PR rtl-optimization/87600
	* combine.c: Add include of expr.h.
	(cant_combine_insn_p): Do not combine moves from any hard non-fixed
	register to a pseudo.
	(make_more_copies): New function, add a copy to a new pseudo after
	the moves from hard registers into pseudos.
	(rest_of_handle_combine): Declare rebuild_jump_labels_after_combine
	later.  Call make_more_copies.

2018-10-22  Andrew Stubbs  <>

	* lra-constraints.c (process_alt_operands): New local array,
	matching_early_clobber.  Check matching_early_clobber before
	decrementing reject, and set matching_early_clobber after.

2018-10-22  Segher Boessenkool  <>

	PR target/87598
	* config/rs6000/rs6000.c (print_operand_address): For unexpected RTL
	call output_addr_const and hope for the best.

2018-10-22  Richard Biener  <>

	* gimple-ssa-evrp-analyze.c
	(evrp_range_analyzer::record_ranges_from_incoming_edge): Be
	smarter about what ranges to use.
	* tree-vrp.c (add_assert_info): Dump here.
	(register_edge_assert_for_2): Instead of here at multiple but
	not all places.

	* gcc.dg/tree-ssa/evrp12.c: New testcase.
	* gcc.dg/predict-6.c: Adjust.
	* gcc.dg/tree-ssa/vrp33.c: Disable EVRP.
	* gcc.dg/tree-ssa/vrp02.c: Likewise.
	* gcc.dg/tree-ssa/cunroll-9.c: Likewise.

2018-10-22  Steven Bosscher  <>
	Richard Biener  <>

	* bitmap.h: Update data structure documentation, including a
	description of bitmap views as either linked-lists or splay trees.
	(struct bitmap_element_def): Update comments for splay tree bitmaps.
	(struct bitmap_head_def): Likewise.
	(bitmap_list_view, bitmap_tree_view): New prototypes.
	(bitmap_initialize_stat): Initialize a bitmap_head's indx and
	tree_form fields.
	(bmp_iter_set_init): Assert the iterated bitmaps are in list form.
	(bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
	* bitmap.c (bitmap_elem_to_freelist): Unregister overhead of a
	released bitmap element here.
	(bitmap_element_free): Remove.
	(bitmap_elt_clear_from): Work on splay tree bitmaps.
	(bitmap_list_link_element): Renamed from bitmap_element_link.  Move
	this function similar ones such that linked-list bitmap implementation
	functions are grouped.
	(bitmap_list_unlink_element): Renamed from bitmap_element_unlink,
	and moved for grouping.
	(bitmap_list_insert_element_after): Renamed from
	bitmap_elt_insert_after, and moved for grouping.
	(bitmap_list_find_element): New function spliced from bitmap_find_bit.
	(bitmap_tree_link_left, bitmap_tree_link_right,
	bitmap_tree_rotate_left, bitmap_tree_rotate_right, bitmap_tree_splay,
	bitmap_tree_link_element, bitmap_tree_unlink_element,
	bitmap_tree_find_element): New functions for splay-tree bitmap
	(bitmap_element_link, bitmap_element_unlink, bitmap_elt_insert_after):
	Renamed and moved, see above entries.
	(bitmap_tree_listify_from): New function to convert part of a splay
	tree bitmap to a linked-list bitmap.
	(bitmap_list_view): Convert a splay tree bitmap to linked-list form.
	(bitmap_tree_view): Convert a linked-list bitmap to splay tree form.
	(bitmap_find_bit): Remove.
	(bitmap_clear, bitmap_clear_bit, bitmap_set_bit,
	bitmap_single_bit_set_p, bitmap_first_set_bit, bitmap_last_set_bit):
	Handle splay tree bitmaps.
	(bitmap_copy, bitmap_count_bits, bitmap_and, bitmap_and_into,
	bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
	bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior, bitmap_ior_into,
	bitmap_xor, bitmap_xor_into, bitmap_equal_p, bitmap_intersect_p,
	bitmap_intersect_compl_p, bitmap_ior_and_compl,
	bitmap_ior_and_compl_into, bitmap_set_range, bitmap_clear_range,
	bitmap_hash): Reject trying to act on splay tree bitmaps.  Make
	corresponding changes to use linked-list specific bitmap_element
	manipulation functions as applicable for efficiency.
	(bitmap_tree_to_vec): New function.
	(debug_bitmap_elt_file): New function split out from ...
	(debug_bitmap_file): ... here.  Handle splay tree bitmaps.
	(bitmap_print): Likewise.

	PR tree-optimization/63155
	* tree-ssa-propagate.c (ssa_prop_init): Use tree-view for the
	SSA edge worklists.
	* tree-ssa-coalesce.c (coalesce_ssa_name): Populate used_in_copies
	in tree-view.

2018-10-22  Martin Liska  <>

	PR tree-optimization/87686
	2018-08-29  Martin Liska  <>

	* tree-switch-conversion.c (switch_conversion::expand):
	Strenghten assumption about gswitch statements.

2018-10-22  Martin Liska  <>

	* ipa-icf.c (sem_item::compare_attributes): Remove.
	(sem_item::compare_referenced_symbol_properties): Use
	attribute_list_equal instead.
	(sem_function::equals_wpa): Likewise.
	* ipa-icf.h: Remove compare_attributes.

2018-10-22  Richard Biener  <>

	PR middle-end/87682
	* mem-stats.h (mem_usage::operator==): Fix pasto.

2018-10-22  Richard Biener  <>

	PR tree-optimization/87640
	* tree-vrp.c (set_value_range_with_overflow): Decompose
	incomplete result.
	(extract_range_from_binary_expr_1): Adjust.

2018-10-22  Martin Jambor  <>

	* tree-eh.h (stmt_could_throw_p): Add function parameter.
	(stmt_can_throw_external): Likewise.
	(stmt_can_throw_internal): Likewise.
	* tree-eh.c (lower_eh_constructs_2): Pass cfun to stmt_could_throw_p.
	(lower_eh_constructs_2): Likewise.
	(stmt_could_throw_p): Add fun parameter, use it instead of cfun.
	(stmt_can_throw_external): Likewise.
	(stmt_can_throw_internal): Likewise.
	(maybe_clean_eh_stmt_fn): Pass cfun to stmt_could_throw_p.
	(maybe_clean_or_replace_eh_stmt): Pass cfun to stmt_could_throw_p.
	(maybe_duplicate_eh_stmt_fn): Pass new_fun to stmt_could_throw_p.
	(maybe_duplicate_eh_stmt): Pass cfun to stmt_could_throw_p.
	(pass_lower_eh_dispatch::execute): Pass cfun to
	(cleanup_empty_eh): Likewise.
	(verify_eh_edges): Pass cfun to stmt_could_throw_p.
	* cgraph.c (cgraph_edge::set_call_stmt): Pass a function to
	stmt_can_throw_external instead of pushing it to cfun.
	(symbol_table::create_edge): Likewise.
	* gimple-fold.c (fold_builtin_atomic_compare_exchange): Pass cfun to
	* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Pass cfun
	to stmt_could_throw_p.
	* gimple-ssa-store-merging.c (handled_load): Pass cfun to
	(pass_store_merging::execute): Likewise.
	* gimple-ssa-strength-reduction.c
	(find_candidates_dom_walker::before_dom_children): Pass cfun to
	* gimplify-me.c (gimple_regimplify_operands): Pass cfun to
	* ipa-pure-const.c (check_call): Pass cfun to stmt_could_throw_p and
	to stmt_can_throw_external.
	(check_stmt): Pass cfun to stmt_could_throw_p.
	(check_stmt): Pass cfun to stmt_can_throw_external.
	(pass_nothrow::execute): Likewise.
	* trans-mem.c (expand_call_tm): Pass cfun to stmt_can_throw_internal.
	* tree-cfg.c (is_ctrl_altering_stmt): Pass cfun to
	(verify_gimple_in_cfg): Pass cfun to stmt_could_throw_p.
	(stmt_can_terminate_bb_p): Pass cfun to stmt_can_throw_external.
	(gimple_purge_dead_eh_edges): Pass cfun to stmt_can_throw_internal.
	* tree-complex.c (expand_complex_libcall): Pass cfun to
	stmt_could_throw_p and to stmt_can_throw_internal.
	(expand_complex_multiplication): Pass cfun to stmt_can_throw_internal.
	* tree-inline.c (copy_edges_for_bb): Likewise.
	(maybe_move_debug_stmts_to_successors): Likewise.
	* tree-outof-ssa.c (ssa_is_replaceable_p): Pass cfun to
	* tree-parloops.c (oacc_entry_exit_ok_1): Likewise.
	* tree-sra.c (scan_function): Pass cfun to stmt_can_throw_external.
	* tree-ssa-alias.c (stmt_kills_ref_p): Pass cfun to
	* tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Pass cfun to
	(mark_aliased_reaching_defs_necessary_1): Pass cfun to
	* tree-ssa-forwprop.c (pass_forwprop::execute): Likewise.
	* tree-ssa-loop-im.c (movement_possibility): Pass cfun to
	* tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Likewise.
	(add_autoinc_candidates): Pass cfun to stmt_can_throw_internal.
	* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
	(convert_mult_to_fma_1): Likewise.
	(convert_to_divmod): Likewise.
	* tree-ssa-phiprop.c (propagate_with_phi): Likewise.
	* tree-ssa-pre.c (compute_avail): Pass cfun to stmt_could_throw_p.
	* tree-ssa-propagate.c
	(substitute_and_fold_dom_walker::before_dom_children): Likewise.
	* tree-ssa-reassoc.c (suitable_cond_bb): Likewise.
	(maybe_optimize_range_tests): Likewise.
	(linearize_expr_tree): Likewise.
	(reassociate_bb): Likewise.
	* tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
	* tree-ssa-scopedtables.c (hashable_expr_equal_p): Likewise.
	* tree-ssa-strlen.c (adjust_last_stmt): Likewise.
	(handle_char_store): Likewise.
	* tree-vect-data-refs.c (vect_find_stmt_data_reference): Pass cfun to
	* tree-vect-patterns.c (check_bool_pattern): Pass cfun to
	* tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
	(vectorizable_call): Pass cfun to stmt_can_throw_internal.
	(vectorizable_simd_clone_call): Likewise.
	* value-prof.c (gimple_ic): Pass cfun to stmt_could_throw_p.
	(gimple_stringop_fixed_value): Likewise.

2018-10-22  Ilya Leoshkevich  <>

	* config/s390/s390.c (s390_loadrelative_operand_p): Accept
	literal pool references.
	(s390_check_qrst_address): Adapt to the new behavior of
	s390_loadrelative_operand_p ().

2018-10-22  H.J. Lu  <>

	PR target/72782
	* config/i386/ (*andnot<mode>3_bcst): New.

2018-10-22  H.J. Lu  <>

	PR target/72782
	* config/i386/ (*<code><mode>3_bcst): New.

2018-10-22  H.J. Lu  <>

	PR target/72782
	* config/i386/ (avx512bcst): Updated for V4SI, V2DI, V8SI,
	V4DI, V16SI and V8DI.
	(*sub<mode>3<mask_name>_bcst): New.
	(*add<mode>3<mask_name>_bcst): Likewise.

2018-10-21  Bill Schmidt  <>
	    Jinsong Ji  <>

	* config/rs6000/emmintrin.h (_mm_movemask_pd): Replace __vector
	__m64 with __vector unsigned long long for compatibility.
	(_mm_movemask_epi8): Likewise.
	* config/rs6000/xmmintrin.h (_mm_cvtps_pi32): Likewise.
	(_mm_cvttps_pi32): Likewise.
	(_mm_cvtpi32_ps): Likewise.
	(_mm_cvtps_pi16): Likewise.
	(_mm_loadh_pi): Likewise.
	(_mm_storeh_pi): Likewise.
	(_mm_movehl_ps): Likewise.
	(_mm_movelh_ps): Likewise.
	(_mm_loadl_pi): Likewise.
	(_mm_storel_pi): Likewise.
	(_mm_movemask_ps): Likewise.
	(_mm_shuffle_pi16): Likewise.

2018-10-21  H.J. Lu  <>

	PR target/72782
	* config/i386/avx512fintrin.h (_mm512_fnmsub_round_pd): Use
	(_mm512_mask_fnmsub_round_pd): Likewise.
	(_mm512_fnmsub_pd): Likewise.
	(_mm512_mask_fnmsub_pd): Likewise.
	(_mm512_maskz_fnmsub_round_pd): Use
	(_mm512_maskz_fnmsub_pd): Likewise.
	(_mm512_fnmsub_round_ps): Use __builtin_ia32_vfnmsubps512_mask.
	(_mm512_mask_fnmsub_round_ps): Likewise.
	(_mm512_fnmsub_ps): Likewise.
	(_mm512_mask_fnmsub_ps): Likewise.
	(_mm512_maskz_fnmsub_round_ps): Use
	(_mm512_maskz_fnmsub_ps): Likewise.
	* config/i386/avx512vlintrin.h (_mm256_mask_fnmsub_pd): Use
	(_mm256_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256_maskz.
	(_mm_mask_fnmsub_pd): Use __builtin_ia32_vfmaddpd128_mask
	(_mm_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd128_maskz.
	(_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask.
	(_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask.
	(_mm256_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_maskz.
	(_mm_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_mask.
	(_mm_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_maskz.
	* config/i386/fmaintrin.h (_mm_fnmsub_pd): Use
	(_mm256_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256.
	(_mm_fnmsub_ps): Use __builtin_ia32_vfnmsubps.
	(_mm256_fnmsub_ps): Use __builtin_ia32_vfnmsubps256.
	(_mm_fnmsub_sd): Use __builtin_ia32_vfnmsubsd3.
	(_mm_fnmsub_ss): Use __builtin_ia32_vfnmsubss3.
	* config/i386/i386-builtin.def: Add
	__builtin_ia32_vfnmsubps512_maskz, __builtin_ia32_vfnmsubss3,
	__builtin_ia32_vfnmsubsd3, __builtin_ia32_vfnmsubps,
	__builtin_ia32_vfnmsubpd, __builtin_ia32_vfnmsubps256 and.
	* config/i386/ (fma4i_fnmsub_<mode>): New.
	(<avx512>_fnmsub_<mode>_maskz<round_expand_name>): Likewise.
	(fmai_vmfnmsub_<mode><round_name>): Likewise.

2018-10-21  H.J. Lu  <>

	PR target/72782
	* config/i386/avx512fintrin.h (_mm512_fnmadd_round_pd): Use
	(_mm512_mask_fnmadd_round_pd): Likewise.
	(_mm512_fnmadd_pd): Likewise.
	(_mm512_mask_fnmadd_pd): Likewise.
	(_mm512_maskz_fnmadd_round_pd): Use
	(_mm512_maskz_fnmadd_pd): Likewise.
	(_mm512_fnmadd_round_ps): Use __builtin_ia32_vfnmaddps512_mask.
	(_mm512_mask_fnmadd_round_ps): Likewise.
	(_mm512_fnmadd_ps): Likewise.
	(_mm512_mask_fnmadd_ps): Likewise.
	(_mm512_maskz_fnmadd_round_ps): Use
	(_mm512_maskz_fnmadd_ps): Likewise.
	* config/i386/avx512vlintrin.h (_mm256_mask_fnmadd_pd): Use
	(_mm256_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256_maskz.
	(_mm_mask_fnmadd_pd): Use __builtin_ia32_vfmaddpd128_mask
	(_mm_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd128_maskz.
	(_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask.
	(_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask.
	(_mm256_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_maskz.
	(_mm_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_mask.
	(_mm_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_maskz.
	* config/i386/fmaintrin.h (_mm_fnmadd_pd): Use
	(_mm256_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256.
	(_mm_fnmadd_ps): Use __builtin_ia32_vfnmaddps.
	(_mm256_fnmadd_ps): Use __builtin_ia32_vfnmaddps256.
	(_mm_fnmadd_sd): Use __builtin_ia32_vfnmaddsd3.
	(_mm_fnmadd_ss): Use __builtin_ia32_vfnmaddss3.
	* config/i386/i386-builtin.def: Add
	__builtin_ia32_vfnmaddps512_maskz, __builtin_ia32_vfnmaddss3,
	__builtin_ia32_vfnmaddsd3, __builtin_ia32_vfnmaddps,
	__builtin_ia32_vfnmaddpd, __builtin_ia32_vfnmaddps256 and.
	* config/i386/ (fma4i_fnmadd_<mode>): New.
	(<avx512>_fnmadd_<mode>_maskz<round_expand_name>): Likewise.
	(fmai_vmfnmadd_<mode><round_name>): Likewise.

2018-10-21  H.J. Lu  <>

	PR target/72782
	* config/i386/avx512fintrin.h (_mm512_fmsub_round_pd): Use
	(_mm512_mask_fmsub_round_pd): Likewise.
	(_mm512_fmsub_pd): Likewise.
	(_mm512_mask_fmsub_pd): Likewise.
	(_mm512_maskz_fmsub_round_pd): Use
	(_mm512_maskz_fmsub_pd): Likewise.
	(_mm512_fmsub_round_ps): Use __builtin_ia32_vfmsubps512_mask.
	(_mm512_mask_fmsub_round_ps): Likewise.
	(_mm512_fmsub_ps): Likewise.
	(_mm512_mask_fmsub_ps): Likewise.
	(_mm512_maskz_fmsub_round_ps): Use
	(_mm512_maskz_fmsub_ps): Likewise.
	* config/i386/avx512vlintrin.h (_mm256_mask_fmsub_pd): Use
	(_mm256_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd256_maskz.
	(_mm_mask_fmsub_pd): Use __builtin_ia32_vfmaddpd128_mask
	(_mm_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd128_maskz.
	(_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask.
	(_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask.
	(_mm256_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps256_maskz.
	(_mm_mask_fmsub_ps): Use __builtin_ia32_vfmsubps128_mask.
	(_mm_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps128_maskz.
	* config/i386/fmaintrin.h (_mm_fmsub_pd): Use
	(_mm256_fmsub_pd): Use __builtin_ia32_vfmsubpd256.
	(_mm_fmsub_ps): Use __builtin_ia32_vfmsubps.
	(_mm256_fmsub_ps): Use __builtin_ia32_vfmsubps256.
	(_mm_fmsub_sd): Use __builtin_ia32_vfmsubsd3.
	(_mm_fmsub_ss): Use __builtin_ia32_vfmsubss3.
	* config/i386/i386-builtin.def: Add
	__builtin_ia32_vfmsubps512_maskz, __builtin_ia32_vfmsubss3,
	__builtin_ia32_vfmsubsd3, __builtin_ia32_vfmsubps,
	__builtin_ia32_vfmsubpd, __builtin_ia32_vfmsubps256 and.
	* config/i386/ (fma4i_fmsub_<mode>): New.
	(<avx512>_fmsub_<mode>_maskz<round_expand_name>): Likewise.
	(fmai_vmfmsub_<mode><round_name>): Likewise.

2018-10-21  H.J. Lu  <>

	* config/i386/ (*<plusminus_insn><mode>3<mask_name>_bcst_1):
	Remove plus.  Renamed to ...
	(*sub<mode>3<mask_name>_bcst): This.
	(*add<mode>3<mask_name>_bcst_2): Renamede to ...
	(*add<mode>3<mask_name>_bcst): This.

2018-10-21  H.J. Lu  <>

	PR target/72782
	* config/i386/ (*mul<mode>3<mask_name>_bcst): New.

2018-10-21  H.J. Lu  <>

	PR target/87662
	* i386/avx512vlintrin.h (_mm256_or_epi32): New.
	(_mm_or_epi32): Likewise.
	(_mm256_xor_epi32): Likewise.
	(_mm_xor_epi32): Likewise.
	(_mm256_or_epi64): Likewise.
	(_mm_or_epi64): Likewise.
	(_mm256_xor_epi64): Likewise.
	(_mm_xor_epi64): Likewise.

2018-10-20  H.J. Lu  <>

	PR target/72782
	* config/i386/ (*<avx512>_div<mode>3<mask_name>_bcst): New.

2018-10-20  Jakub Jelinek  <>

	PR middle-end/87647
	* varasm.c (decode_addr_const): Handle COMPOUND_LITERAL_EXPR.

2018-10-20  Andreas Schwab  <>

	* doc/ux.texi: Move @section directly after @node.

2018-10-19  Jakub Jelinek  <>

	PR middle-end/85488
	PR middle-end/87649
	* omp-low.c (check_omp_nesting_restrictions): Diagnose ordered without
	depend closely nested inside of loop with ordered clause with
	a parameter.

2018-10-19  David Malcolm  <>

	* (TEXI_GCCINT_FILES): Add ux.texi.
	* doc/gccint.texi: Include ux.texi and use it in top-level menu.
	* doc/ux.texi: New file.

2018-10-19  Segher Boessenkool  <>

	* config/rs6000/rs6000.h (REG_ALLOC_ORDER): Move 68 (that is, CR0) to
	be the first CR field allocated.

2018-10-19  Richard Biener  <>

	PR target/87657
	* config/i386/i386.c (ix86_builtin_vectorization_cost): Use
	TYPE_VECTOR_SUBPARTS and avoid relying on vector mode.

2018-10-19  H.J. Lu  <>

	PR target/72782
	* config/i386/
	(*<plusminus_insn><mode>3<mask_name>_bcst_1): New.
	(*add<mode>3<mask_name>_bcst_2): Likewise.

2018-10-19  H.J. Lu  <>

	* config/i386/
	Replace nonimmediate_operand with register_operand.

2018-10-19  Ilya Leoshkevich  <>

	PR rtl-optimization/87596
	* lra-constraints.c (spill_hard_reg_in_range): Use INSN_P () +
	lra_get_insn_recog_data () instead of lra_insn_recog_data[]
	for instructions in FROM..TO range.

2018-10-19  Eric Botcazou  <>

	* cfgexpand.c (expand_one_var): Use specific wording in error message
	for non-local frame variables.
	* stor-layout.c (layout_decl): Do not issue a warning for them.

2018-10-19  Robin Dapp  <>

	* haifa-sched.c (priority): Add force_recompute parameter.
	(apply_replacement): Call priority () with force_recompute = true.
	(restore_pattern): Likewise.

2018-10-18  H.J. Lu  <>

	* simplify-rtx.c (simplify_subreg): Limit mask of vec_merge to
	(test_vector_ops_duplicate): Likewise.

2018-10-18  H.J. Lu  <>

	PR target/72782
	* config/i386/ (VF_AVX512): New.
	(avx512bcst): Likewise.

2018-10-18  Jonathan Wakely  <>

	* doc/invoke.texi (-dumpversion): Improve grammar.
	(-dumpfullversion): Make more consistent with -dumpversion.

2018-10-18  Uros Bizjak  <>

	* config/i386/i386.c (ix86_emit_fp_unordered_jump):
	Set JUMP_LABEL to the jump insn.
	(ix86_emit_i387_log1p): Use ix86_expand_branch to expand branch.
	Predict emitted jump and add label to jump insn.

2018-10-18  David Malcolm  <>

	PR tree-optimization/87562
	* input.c (get_substring_ranges_for_loc): Use
	getting the linemap for the endpoint.  Verify that it's either
	in the same linemap as the start point's spelling location, or
	at least in the same file.

2018-10-18  Richard Biener  <>

	* config/i386/i386.c (ix86_builtin_vectorization_cost): Do not
	feed width-specific load/store costs through ix86_vec_cost.
	* config/i386/x86-tune-costs.h (athlon_cost): Adjust.
	(k8_cost): Likewise.
	(bdver_cost): Likewise.
	(znver1_cost): Likewise.
	(btver1_cost): Likewise.
	(btver2_cost): Likewise.

2018-10-18  H.J. Lu  <>

	* simplify-rtx.c (simplify_subreg): Call simplify_gen_subreg
	to simplify subreg of vec_merge.

2018-10-18  Richard Biener  <>

	* config/i386/i386.c: Fix costing of vector FMA.

2018-10-18  Richard Biener  <>

	* config/i386/i386.c (ix86_vec_cost): Remove !parallel path
	and argument.
	(ix86_builtin_vectorization_cost): For vec_construct properly
	cost insertion into SSE regs.
	(...): Adjust calls to ix86_vec_cost.

2018-10-18  Richard Biener  <>

	PR middle-end/87087
	2018-02-07  Richard Biener  <>

	PR tree-optimization/84204
	* tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
	this place.

2018-10-18  H.J. Lu  <>

	PR target/87537
	* simplify-rtx.c (simplify_subreg): Simplify subreg of vec_merge
	of vec_duplicate.
	(test_vector_ops_duplicate): Add test for a scalar subreg of a

2018-10-17  Joseph Myers  <>

	* doc/cpp.texi (__STDC_VERSION__): Document C2X handling.
	* doc/invoke.texi (-std=c2x, -std=gnu2x): Document new options.
	* doc/standards.texi (C Language): Document C2X.
	* dwarf2out.c (highest_c_language), config/rl78/rl78.c
	(rl78_option_override): Handle "GNU C2X" language name.

2018-10-17  Joseph Myers  <>

	* doc/invoke.texi (-std=c17), doc/standards.texi (C Language):
	Document C17 as published in 2018.

2018-10-17  Eric Botcazou  <>

	PR middle-end/87623
	* fold-const.c (fold_truth_andor_1): If the right side is not constant,
	bail out if both sides do not have the same storage order.

2018-10-17  Aldy Hernandez  <>

	* bitmap.c (bitmap_head::dump): New.
	* bitmap.h (bitmap_head): Add dump().
	* gimple-ssa-evrp-analyze.c
	(evrp_range_analyzer::try_find_new_range): Adjust for value_range API.
	(evrp_range_analyzer::set_ssa_range_info): Same.
	(evrp_range_analyzer::record_ranges_from_phis): Same.
	(evrp_range_analyzer::record_ranges_from_stmt): Same.
	* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Same.
	* gimple-ssa-sprintf.c (get_int_range): Same.
	(format_integer): Same.
	(sprintf_dom_walker::handle_gimple_call): Same.
	* ipa-cp.c (ipcp_vr_lattice::meet_with_1): Same.
	(ipcp_vr_lattice::top_p): Same.
	(ipcp_vr_lattice::bottom_p): Same.
	(ipcp_vr_lattice::set_to_bottom): Same.
	(ipa_vr_operation_and_type_effects): Same.
	(propagate_vr_across_jump_function): Same.
	(ipcp_store_vr_results): Same.
	* ipa-prop.c (struct ipa_vr_ggc_hash_traits): Same.
	(ipa_print_node_jump_functions_for_edge): Same.
	(ipa_get_value_range): Same.
	(ipa_compute_jump_functions_for_edge): Same.
	(ipa_write_jump_function): Same.
	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Same.
	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
	* vr-values.c (set_value_range_to_nonnegative): Same.
	(set_value_range_to_truthvalue): Same.
	(vr_values::get_value_range): Same.
	(vr_values::set_defs_to_varying): Same.
	(vr_values::update_value_range): Same.
	(symbolic_range_based_on_p): Same.
	(vr_values::op_with_boolean_value_range_p): Same.
	(vr_values::extract_range_for_var_from_comparison_expr): Same.
	(vr_values::extract_range_from_ssa_name): Same.
	(vr_values::extract_range_from_binary_expr): Same.
	(vr_values::extract_range_from_unary_expr): Same.
	(vr_values::extract_range_from_cond_expr): Same.
	(vr_values::extract_range_from_comparison): Same.
	(vr_values::check_for_binary_op_overflow): Same.
	(vr_values::extract_range_basic): Same.
	(vr_values::extract_range_from_assignment): Same.
	(compare_ranges): Same.
	(compare_range_with_value): Same.
	(vr_values::adjust_range_with_scev): Same.
	(vrp_valueize): Same.
	(vrp_valueize_1): Same.
	(vr_values::get_vr_for_comparison): Same.
	(vr_values::compare_name_with_value): Same.
	(vr_values::compare_names): Same.
	(vr_values::vrp_evaluate_conditional): Same.
	(find_case_label_ranges): Same.
	(vr_values::vrp_visit_switch_stmt): Same.
	(vr_values::extract_range_from_phi_node): Same.
	(vr_values::simplify_div_or_mod_using_ranges): Same.
	(vr_values::simplify_bit_ops_using_ranges): Same.
	(test_for_singularity): Same.
	(range_fits_type_p): Same.
	(vr_values::simplify_cond_using_ranges_1): Same.
	(vr_values::simplify_switch_using_ranges): Same.
	(vr_values::simplify_float_conversion_using_ranges): Same.
	(vr_values::two_valued_val_range_p): Same.
	(vr_values::add_equivalence): Move to value_range::equiv_add.
	* vr-values.h (vr_values::add_equivalence): Remove.
	* tree-vrp.c (value_range::set): New.
	(value_range::equiv_add): New.
	(value_range::value_range): New.
	(value_range::deep_copy): New.
	(value_range::check): New.
	(value_range::equal_p): New.
	(value_range::ignore_equivs_equal_p): New.
	(value_range::operator==): New.
	(value_range::operator!=): New.
	(value_range::symbolic_p): New.
	(value_range::numeric_p): New.
	(value_range::set_undefined): New.
	(value_range::set_varying): New.
	(value_range::may_contain_p): New.
	(value_range::equiv_clear): New.
	(value_range::singleton_p): New.
	(value_range::intersect): New.
	(value_range::dump): New.
	(value_range::set_and_canonicalize): New.
	(set_value_range): Adjust for value_range API.
	(set_value_range_to_undefined): Same.
	(set_value_range_to_varying): Same.
	(set_and_canonicalize_value_range): Same.
	(set_value_range_to_nonnull): Same.
	(set_value_range_to_null): Same.
	(range_is_null): Same.
	(range_is_nonnull): Same.
	(range_int_cst_p): Same.
	(range_int_cst_singleton_p): Same.
	(symbolic_range_p): Same.
	(range_includes_zero_p): Same.
	(value_range_constant_singleton): Same.
	(vrp_set_zero_nonzero_bits): Same.
	(ranges_from_anti_range): Same.
	(extract_range_into_wide_ints): Same.
	(extract_range_from_multiplicative_op): Same.
	(set_value_range_with_overflow): Same.
	(extract_range_from_binary_expr_1): Same.
	(extract_range_from_unary_expr): Same.
	(dump_value_range): Same.
	(debug_value_range): Same.
	(vrp_prop::check_array_ref): Same.
	(vrp_prop::check_mem_ref): Same.
	(vrp_prop::vrp_initialize): Same.
	(vrp_prop::visit_stmt): Same.
	(intersect_ranges): Same.
	(vrp_prop::visit_phi): Same.
	(vrp_prop::vrp_finalize): Same.
	(determine_value_range_1): Same.
	(determine_value_range): Same.
	(vrp_intersect_ranges_1): Rename to...
	(vrp_intersect_1): this.
	(vrp_intersect_ranges): Rename to...
	(value_range::intersect_helper): ...this.
	(vrp_meet_1): Rename to...
	(value_range::union_helper): ...this.
	(vrp_meet): Rename to...
	(value_range::union_): ...this.
	(copy_value_range): Remove.
	* tree-vrp.h (struct value_range): Rewrite into a proper class.
	(value_range::vrtype): New.
	(value_range::type): New.
	(value_range::equiv): New.
	(value_range::min): New.
	(value_range::max): New.
	(value_range::varying_p): New.
	(value_range::undefined_p): New.
	(value_range::null_p): New.
	(value_range::equiv_add): New.
	(copy_value_range): Remove.

2018-10-17  David Malcolm  <>

	(selftest) Change from s-selftest-c to $(SELFTEST_TARGETS).
	(C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb)
	(selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to
	(selftest-c++-gdb, selftest-c++-valgrind): Move to
	* configure: Regenerate.
	* (selftest_languages): New.

2018-10-17  Aldy Hernandez  <>

	* tree-vrp.c (extract_range_from_multiplicative_op): Remove
	overflow wraps argument.
	(extract_range_from_binary_expr_1): Do not pass overflow wraps to
	* (wide_int_range_mult_wrapping): Remove
	overflow wraps argument.
	(wide_int_range_multiplicative_op): Same.
	(wide_int_range_lshift): Same.
	(wide_int_range_div): Same.
	* wide-int-range.h (wide_int_range_multiplicative_op): Same.
	(wide_int_range_lshift): Same.
	(wide_int_range_div): Same.

2018-10-17  Aldy Hernandez  <>

	* wide-int-range.h (wide_int_range_shift_undefined_p): Adjust to
	use sign as argument.
	* tree-vrp.c (extract_range_from_binary_expr_1): Pass sign to

2018-10-16  Kyrylo Tkachov  <>

	* config/aarch64/ (despeculate_copy<ALLI_TI:mode>):
	Rename to...
	(@despeculate_copy<ALLI_TI:mode>): ... This.
	* config/aarch64/aarch64.c (aarch64_speculation_safe_value): Remove
	switch statement.

2018-10-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* config.gcc: Obsolete *-*-solaris2.10*.
	* doc/install.texi (Specific, *-*-solaris2*): Document it.

2018-10-12  Jeff Law  <>

	* config/ft32/ (ft32_general_movsrc_operand): Disable
	reg + sym +- const_int addressing modes.

2018-10-15  David Malcolm  <>

	* common.opt (fdiagnostics-minimum-margin-width=): New option.
	* diagnostic-show-locus.c (layout::layout): Apply the minimum
	margin width.
	(layout::start_annotation_line): Only print up to 3 of the
	margin character, to avoid touching the left-hand side.
	(selftest::test_diagnostic_show_locus_fixit_lines): Update for
	minimum margin width, as set by test_diagnostic_context's ctor.
	(selftest::test_fixit_insert_containing_newline): Likewise.
	(selftest::test_fixit_insert_containing_newline_2): Likewise.
	(selftest::test_line_numbers_multiline_range): Clear
	* diagnostic.c (diagnostic_initialize): Initialize
	* diagnostic.h (struct diagnostic_context): Add field
	* doc/invoke.texi: Add -fdiagnostics-minimum-margin-width=.
	* opts.c (common_handle_option): Handle
	* selftest-diagnostic.c
	Initialize min_margin_width to 6.
	* toplev.c (general_init): Initialize global_dc->min_margin_width.

2018-10-15  David Malcolm  <>

	* gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
	Fix usage of "error_at_rich_loc" in the comment.

2018-10-15  Renlin Li  <>

	PR target/87563
	* tree-vectorizer.c (try_vectorize_loop_1): Don't use
	if-conversioned loop when it contains ifn with types not
	supported by backend.
	* internal-fn.c (expand_direct_optab_fn): Add an assert.
	(direct_internal_fn_supported_p): New helper function.
	* internal-fn.h (direct_internal_fn_supported_p): Declare.

2018-10-15  Jakub Jelinek  <>

	PR target/87572
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET):

2018-10-15  Bin Cheng  <>

	PR tree-optimization/87022
	* tree-loop-distribution.c (pg_add_dependence_edges): Check all
	bits in dist vector rather than the first one.

2018-10-15  Richard Biener  <>

	PR middle-end/87610
	* tree-ssa-structalias.c (struct vls_data): Add escaped_p member.
	(visit_loadstore): When a used restrict tag escaped verify that
	the points-to solution of "other" pointers do not include
	(compute_dependence_clique): If a used restrict tag escaped
	communicated that down to visit_loadstore.

2018-10-15  Andreas Krebbel  <>

	* config/s390/s390.c (s390_expand_vec_init): Force vector element
	into reg if it isn't a general operand.

2018-10-14  H.J. Lu  <>

	PR target/87599
	* config/i386/ (*vec_dupv2di): Add register source to

2018-10-14  H.J. Lu  <>

	PR target/87572
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET):

2018-10-13  Eric Botcazou  <>

	* dwarf2cfi.c (struct dw_trace_info): Add args_size_defined_for_eh.
	(notice_args_size): Set it in the current trace if no insn that can
	throw internally has been seen yet.
	(connect_traces): When connecting args_size between traces, allow the
	incoming values not to match if there is an insn setting it before the
	first insn that can throw internally; in that case, force the creation
	of a CFI note on this latter insn.

2018-10-13  Jonathan Wakely  <>

	* opt-problem.h (opt_wrapper): Use template-argument-list when naming
	the base class, because using the injected-class-name was not clearly
	specified until DR 176.

2018-10-12  Paul Koning  <>

	* config/pdp11/ (doloop_end): New expander.
	(doloop_end_insn): renamed from "doloop_end".
	(addqi3): New pattern.
	(subqi3): New pattern.
	* config/pdp11/ (incdec_operand): New predicate.

2018-10-12  Yury Gribov  <>

	PR middle-end/81376
	* real.c (format_helper::can_represent_integral_type_p): New function
	* real.h (format_helper::can_represent_integral_type_p): Ditto.
	* match.pd: New pattern.

2018-10-12  Alexandre Oliva  <>

	* Introduce --enable-large-address-aware
	* doc/install.texi: Document it.
	* configure, Rebuilt.
	* config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Define,
	(LINK_SPEC): Insert it.
	* config/i386/mingw-w64.h: Likewise.

	* cygming.h (HAVE_GAS_ALIGNED_COMM): Fallback-define.

2018-10-12  Peter Bergner  <>

	PR rtl-optimization/87600
	* ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets.

2018-10-12  Paul Koning  <>

	* doc/md.texi (doloop_end): Document that the pattern code may
	need to check operand mode.

2018-10-12  Wilco Dijkstra  <>

	* config/aarch64/ (zero_extendsidi2_aarch64): Add alternatives
	to zero-extend between int and floating-point registers.
	(load_pair_zero_extendsidi2_aarch64): Add alternative for zero-extended
	ldp into floating-point registers.  Add type and arch attributes.
	(zero_extend<SHORT:mode><GPI:mode>2_aarch64): Add arch attribute.
	Use f_loads for type attribute.

2018-10-11  Martin Sebor  <>

	* doc/extend.texi (attribute packed): Correct typos.

2018-10-11  Martin Sebor  <>

	* doc/extend.texi (attribute flatten): Mention interaction with

2018-10-11  Jan Hubicka  <>

	PR target/87156
	* cgraphclones.c (cgraph_node::create_version_clone_with_body):
	Set new_decl virtual flag to zero.

2018-10-11  Martin Sebor  <>

	PR middle-end/87593
	* doc/extend.texi (attribute format_arg): Discuss using multiple
	attributes on a single function.

2018-10-11  Giuliano Belinassi  <>

	PR tree-optimization/86829
	* match.pd (sin (atan (x))): New simplification rules.
	(cos (atan (x))): Likewise.
	* real.c (build_sinatan_real): New function.
	* real.h (build_sinatan_real): Prototype.

2018-10-11  Will Schmidt  <>

	* config/rs6000/rs6000.c (map_to_integral_tree_type): New helper
	(fold_mergeeo_helper): New helper function.
	(rs6000_gimple_fold_builtin): Add hooks for vec_mergee and vec_mergeo
	intrinsics.  Correct some whitespace indentation issues.

2018-10-11  Wilco Dijkstra  <>

	PR target/87511
	* config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
	Use HOST_WIDE_INT_1U for shift.

2018-10-11  Doug Rupp  <>
	    Olivier Hainque  <>

	* config/rs6000/vxworks.h (VXWORKS_RELAX_LINK_SPEC): New macro.
	Pass --relax to the linker for RTPs.

2018-10-11  Andrew Stubbs  <>
	    Jan Hubicka  <>
	    Martin Jambor  <>

	* print-rtl.c (print_rtx_operand_codes_E_and_V): Print how many times
	the same elements are repeated rather than printing all of them.
	* read-rtl.c (rtx_reader::read_rtx_operand): Recognize and expand
	"repeated" elements.
	* read-rtl-function.c (test_loading_repeat): New function.
	(read_rtl_function_c_tests): Call test_loading_repeat.
	* rtl-tests.c (test_dumping_repeat): New function.
	(rtl_tests_c_tests): Call test_dumping_repeat.

2018-10-11  Richard Biener  <>

	* config/i386/x86-tune-costs.h (bdver?_memcpy, bdver?_memset,
	bdver?_cost): Unify to ...
	(bdver_memcpy, bdver_memset, bdver_cost): ... this.
	* config/i386/i386.c (processor_cost_table): Adjust.

2018-10-10  Eric Botcazou  <>

	PR middle-end/87574
	* cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on
	the thunk when expanding to GIMPLE.

2018-10-10  Bernd Edlinger  <>

	PR bootstrap/87551
	* varasm.c (mergeable_string_section): Don't try to move zero-length
	strings to the merge section.

2018-10-10  Uros Bizjak  <>

	PR target/87573
	* config/i386/ (const_vector 0 -> mem splitter): New splitter.

2018-10-10  Jakub Jelinek  <>

	PR target/87550
	* config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set
	to special_args set.

2018-10-10  Richard Biener  <>

	* config/i386/ (reduc_plus_scal_v8df, reduc_plus_scal_v4df,
	reduc_plus_scal_v2df, reduc_plus_scal_v16sf, reduc_plus_scal_v8sf,
	reduc_plus_scal_v4sf): Merge into pattern reducing to half width
	and recursing and pattern terminating the recursion on SSE
	vector width using ix86_expand_reduc.
	(reduc_sminmax_scal_<mode>): Split into part reducing to half
	width and recursing and SSE2 vector variant doing the final
	reduction with ix86_expand_reduc.
	(reduc_uminmax_scal_<mode>): Likewise for the AVX512 variants
	with terminating the recursion at AVX level, splitting that
	to SSE there.

2018-10-09  David Malcolm  <>

	* genmatch.c (error_cb): Rename to...
	(diagnostic_cb): ...this, converting int params to enums.
	(fatal_at): Update for renaming.
	(warning_at): Likewise.
	(main): Likewise.
	* input.c (selftest::ebcdic_execution_charset::apply):
	Update for renaming of...
	(selftest::ebcdic_execution_charset::on_error): ...this, renaming
	(selftest::ebcdic_execution_charset::on_diagnostic): ...this,
	converting level and reason to enums.
	(class selftest::lexer_error_sink): Rename to...
	(class selftest::lexer_test_options): ...this, renaming field
	"m_errors" to "m_diagnostics".
	(selftest::lexer_test_options::apply): Update for renaming of...
	(selftest::lexer_test_options::on_error): ...this, renaming to...
	(selftest::lexer_test_options::on_diagnostic): ...this
	converting level and reason to enums.
	Update for renamings.
	* opth-gen.awk (struct cpp_reason_option_codes_t): Use enum for

2018-10-09  Paul A. Clarke  <>

	* config.gcc (powerpc*-*-*): Add pmmintrin.h to extra_headers.
	* config/rs6000/pmmintrin.h: New file.

2018-10-09  Eric Botcazou  <>

	PR tree-optimization/86659
	* gimple-match.h (gimple_match_op constructors): Initialize reverse.

2018-10-09  Richard Biener  <>

	PR tree-optimization/63155
	* tree-ssa-structalias.c: Include tree-ssa.h.
	(get_constraint_for_ssa_var): For undefs return nothing_id.
	(find_func_aliases): Cleanup PHI handling.

2018-10-09  Richard Biener  <>

	* tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing

2018-10-09  Martin Liska  <>

	* asan.c (asan_emit_stack_protection): If a stack variable
	is located in a same file as current function, then emit
	line info into variable definition string.

2018-10-08  Eric Botcazou  <>

	* print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column

2018-10-08  Eric Botcazou  <>

	* cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P
	on the thunk.

2018-10-08  Eric Botcazou  <>

	PR tree-optimization/86659
	* gimple-match.h (struct gimple_match_op): Add reverse field.
	(gimple_match_op::set_op): New overloaded method.
	* gimple-match-head.c (maybe_build_generic_op) <BIT_FIELD_REF>: Set
	the REF_REVERSE_STORAGE_ORDER flag on the value.
	(gimple_simplify) <GIMPLE_ASSIGN>: For BIT_FIELD_REF, propagate the
	REF_REVERSE_STORAGE_ORDER flag and avoid simplifying if it is set.

2018-10-08  Richard Sandiford  <>

	PR middle-end/63155
	* gimple-ssa-backprop.c (backprop::intersect_uses): Use

2018-10-08  H.J. Lu  <>

	PR target/87517
	* config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd):
	Defined with __builtin_ia32_vfmaddsubpd512_mask.

2018-10-08  Richard Biener  <>

	* config/i386/x86-tune-costs.h (znver1_cost): Make AVX256 vector loads
	cost the same as AVX128 ones.

2018-10-08  Paul Koning  <>

	* config/pdp11/pdp11-protos.h (output_block_move): Remove.
	(expand_block_move): New function.
	* config/pdp11/pdp11.c (output_block_move): Remove.
	(expand_block_move): New function.
	* config/pdp11/pdp11.h (MOVE_RATIO): New definition.
	* config/pdp11/ (movmemhi): Use expand_block_move.
	(*movmemhi1): Remove.

2018-10-08  Robin Dapp  <>

	* config/s390/ Increase latencies for some FP instructions.

2018-10-08  Richard Biener  <>

	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
	Open a dump scope.
	* tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it.
	* tree-vectorizer.h (dump_stmt_cost): Adjust.
	(add_stmt_cost): Dump return value of the hook.

2018-10-08  Richard Biener  <>

	PR tree-optimization/63155
	* tree-ssa-propagate.c (add_ssa_edge): Do cheap check first.
	(ssa_propagation_engine::ssa_propagate): Remove redundant
	bitmap bit clearing.

2018-10-05  Peter Bergner  <>

	PR rtl-optimization/86939
	PR rtl-optimization/87479
	* ira.h (non_conflicting_reg_copy_p): New prototype.
	* ira-lives.c (ignore_reg_for_conflicts): New static variable.
	(make_hard_regno_dead): Don't add conflicts for register
	(make_object_dead): Likewise.
	(non_conflicting_reg_copy_p): New function.
	(process_bb_node_lives): Set ignore_reg_for_conflicts for copies.
	Remove special conflict handling of REAL_PIC_OFFSET_TABLE_REGNUM.
	* lra-lives.c (ignore_reg_for_conflicts): New static variable.
	(make_hard_regno_dead): Don't add conflicts for register
	ignore_reg_for_conflicts.  Remove special conflict handling of
	REAL_PIC_OFFSET_TABLE_REGNUM.  Remove now unused argument
	check_pic_pseudo_p and update callers.
	(mark_pseudo_dead): Don't add conflicts for register
	(process_bb_lives): Set ignore_reg_for_conflicts for copies.

2018-10-05  Andrew Waterman  <>
	    Jim Wilson  <>

	* config/riscv/ (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.

2018-10-05  Segher Boessenkool  <>

	* config/rs6000/ (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.

2018-10-05  David Malcolm  <>

	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,

2018-10-05  Paul Koning  <>

	* config/pdp11/pdp11.c (TARGET_CXX_GUARD_TYPE): Define.
	(pdp11_guard_type): New function.

2018-10-05  Paul Koning  <>

	* 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.

2018-10-05  Uros Bizjak  <>

	* config/i386/ (*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.

2018-10-05  Uros Bizjak  <>

	* config/i386/ (*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.

2018-10-05  Uros Bizjak  <>

	* config/i386/ ("C"): Do not depend on TARGET_SSE.
	* config/i386/ (nonimm_or_0_operand): Rename
	from vector_move_operand.  Update all uses.

2018-10-05  Martin Sebor  <>

	PR tree-optimization/87490
	* builtins.c (expand_builtin_strnlen): Handle a null data.decl

2018-10-05  Richard Biener  <>

	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.

2018-10-05  Richard Biener  <>

	* 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
	* 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.

2018-10-05   Richard Biener  <>

	* config/i386/i386.c (ix86_add_stmt_cost): When scalar cost
	is asked for initialize mode to the component mode of the
	vector type.

2018-10-05  H.J. Lu  <>

	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.

2018-10-05  Segher Boessenkool  <>

	PR target/87509
	* config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_SET_FPSCR_DRN): Use
	* config/rs6000/ (rs6000_set_fpscr_rn): Require the operand
	to be DImode.  When using mffscrn, force the operand to a register.

2018-10-04  Uros Bizjak  <>

	* config/i386/ (*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.

2018-10-04  Vinay Kumar  <>

	* doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning

2018-10-04  David Malcolm  <>

	* (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
	(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
	(ASSERT_DUMPED_TEXT_EQ): Move here from dumpfile.c.
	(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
	(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
	* New file.
	* opt-problem.h: New file.
	(selftest::test_building_json_from_dump_calls): Pass "true" for
	new param of temp_dump_context.
	* (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.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
	(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
	(runtime_alias_check_p): Likewise.
	* tree-predcom.c (find_looparound_phi): Pass "init_stmt" to
	* tree-vect-data-refs.c (vect_mark_for_runtime_alias_test):
	Convert return type from bool to opt_result, adding a message for
	(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_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
	(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
	* 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_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
	(vect_analyze_loop_form): Likewise.
	(vect_analyze_slp): Convert return type from bool to opt_result.

2018-10-04  David Malcolm  <>

	* doc/invoke.texi (-fopt-info): Document new "internals"
	* dump-context.h (dump_context::apply_dump_filter_p): New decl.
	* dumpfile.c (dump_options): Update for renaming of MSG_ALL to
	(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
	(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.
	(AUTO_DUMP_SCOPE): Add a note to the comment about the interaction
	* 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_*.

2018-10-04  Bernd Edlinger  <>

	* 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_regular_field): Adjust call to output_constant.
	(output_object_block): Adjust call to assemble_constant_contents
	and assemble_variable_contents.

2018-10-04  Martin Liska  <>

	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  <>

	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  David Malcolm  <>

	* dumpfile.c (gcc::dump_manager::dump_manager): Initialize new
	(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
	* 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.

2018-10-04  Peter Bergner  <>

	PR rtl-optimization/87466
	* target.def (setjmp_preserves_nonvolatile_regs_p): New target hook.
	* doc/tm.texi: Regenerate.
	* ira-lives.c (process_bb_node_lives): Use the new target hook.
	* lra-lives.c (process_bb_lives): Likewise.

2018-10-04  Tamar Christina  <>

	* params.c (add_params): Fix initialization.

2018-10-04  Martin Liska  <>

	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  Prathamesh Kulkarni  <>

	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.

2018-10-04  Martin Liska  <>

	PR ipa/87491
	* ipa-inline.c (inline_to_all_callers_1):
	Call ultimate_alias_target for node being inlined.

2018-10-03  Jeff Law  <>

	* 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.

2018-10-03  Uros Bizjak  <>

	* config/i386/ (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
	Change operand 2 predicate to nonimmediate_operand.
	(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.

2018-10-03  Martin Sebor  <>
	    Jeff Law  <>

	* gimple-ssa-sprintf.c (struct fmtresult): Add new member and
	initialize it.
	(get_string_length): Detect unterminated arrays.
	(format_string): Same.
	(format_directive): Warn about unterminated arrays.
	(handle_gimple_call): Mark statements with no_warning as needed.

2018-10-03  Jim Wilson  <>

	* config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): For ABI_ILP32E,
	also define __riscv_abi_rve.  Delete trailing white space.

2018-10-03  Paul Koning  <>

	Enable LRA register allocator for PDP11.
	* config/pdp11/ (Q): Use define_memory_constraint.
	(R): Likewise.
	(D): Likewise.
	* config/pdp11/pdp11.c (pdp11_lra_p): New function.
	* config/pdp11/pdp11.opt (-mlra): New option.
	* doc/invoke.texi (PDP-11 Options): Document -mlra.

2018-10-03  Uros Bizjak  <>

	* config/i386/ (*<absneg:code>extendsfdf2): Remove.
	(*<absneg:code>extend<mode>xf2): Ditto.

2018-10-03  Aldy Hernandez  <>

	PR tree-optimization/87415
	* tree-vrp.c (set_value_range_with_overflow): Special case one bit
	precision fields.

2018-10-02  Jeff Law  <>

	* gimple-fold.c (get_range_strlen): Only set *nonstr when
	an unterminated string is discovered.  Bubble up range
	even for unterminated strings.
	(gimple_fold_builtin_strlen): Do not fold if get_range_strlen
	indicates the string was not terminated via NONSTR.

2018-10-03  Aldy Hernandez  <>

	* tree-vrp.c (extract_range_from_unary_expr): Special case all
	pointer conversions.
	Do not do anything special for anti-ranges.

2018-10-03  Jérôme Lambourg  <>

	* config/arm/vxworks.h (ARM_TARGET2_DWARF_FORMAT): Adjust to
	DW_EH_PE_pcrel | DW_EH_PE_indirect for RTPs.

2018-10-03  Martin Liska  <>

	PR gcov-profile/86109
	* coverage.c (coverage_begin_function): Do not
	mark lambdas as artificial.
	* tree-core.h (struct GTY): Remove tm_clone_flag
	and introduce new lambda_function.
	* tree.h (DECL_LAMBDA_FUNCTION): New macro.

2018-10-02  Aaron Sawdey  <>

	PR target/87474
	* config/rs6000/rs6000-string.c (expand_strn_compare): Check that both
	P8_VECTOR and VSX are enabled.

2018-10-02  Andreas Krebbel  <>

	* config/s390/driver-native.c (s390_host_detect_local_cpu): Add
	0x3907 as CPU model number.

2018-10-02  Andreas Krebbel  <>

	* common/config/s390/s390-common.c: Rename PF_ARCH12 to PF_Z14.
	* config/s390/s390.h (enum processor_flags): Rename PF_ARCH12 to
	* config/s390/ Likewise. Rename also the cpu attribute
	value from arch12 to z14.

2018-10-02  Uros Bizjak  <>

	* config/i386/ (fxam<mode>2_i387_with_temp): Remove.
	(isinfxf2): Ditto.
	(isinf<mode>2): Ditto.

2018-10-02  Uros Bizjak  <>

	* config/i386/i386.c (ix86_emit_i387_round): Extend op1 to XFmode
	before emitting fxam.  Perform calculations in XFmode.

2018-10-02  Marc Glisse  <>

	* match.pd (((X /[ex] A) +- B) * A): New transformation.

2018-10-02  Marc Glisse  <>

	PR middle-end/87319
	* fold-const.c (fold_plusminus_mult_expr): Handle complex and vectors.
	* tree.c (signed_or_unsigned_type_for): Handle complex.

2018-10-02  Jeff Law  <>

	* gimple-fold.c (get_range_strlen): Remove dead code.

2018-10-02  Martin Sebor  <>
	    Jeff Law  <>

	* builtins.c (unterminated_array): Add new arguments.
	If argument is not terminated, bubble up size and exact
	state to callers.
	(expand_builtin_strnlen): Detect, avoid expanding
	and diagnose unterminated arrays.
	(c_strlen): Fill in offset of start of unterminated strings.
	* builtins.h (unterminated_array): Update prototype.

2018-10-02  Richard Biener  <>

	* config/i386/ (reduc_plus_scal_v4df): Avoid the use
	of haddv4df, first reduce to SSE width and exploit the fact
	that we only need element zero with the reduction result.
	(reduc_plus_scal_v2df): Likewise.

2018-10-02  Eric Botcazou  <>

	* dojump.h (do_jump): Delete.
	(do_jump_1): Likewise.
	(split_comparison): Move around.
	* dojump.c (do_jump): Make static.
	(do_jump_1): Likewise.
	(jumpifnot): Move around.
	(jumpifnot_1): Likewise.
	(jumpif): Likewise.
	(jumpif_1): Likewise.
	* expr.c (expand_expr_real_1): Call jumpif[not] instead of do_jump.

2018-10-02  Eric Botcazou  <>

	* reorg.c (make_return_insns): Use emit_copy_of_insn_after for the
	insns in the delay slot and add_insn_after for the jump insn.

2018-10-02  Richard Biener  <>

	* tree-inline.c (expand_call_inline): Use the location of
	the callee declaration for the inline-entry marker.
	* final.c (notice_source_line): Remove special-casing of

2018-10-01  Carl Love  <>

	PR 69431
	* config/rs6000/rs6000-builtin.def (__builtin_mffsl): New.
	(__builtin_mtfsb0): New.
	(__builtin_mtfsb1): New.
	( __builtin_set_fpscr_rn): New.
	(__builtin_set_fpscr_drn): New.
	* config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add.
	(rs6000_expand_set_fpscr_rn_builtin): Add.
	(rs6000_expand_set_fpscr_drn_builtin): Add.
	(rs6000_expand_builtin): Add case statement entries for
	(rs6000_init_builtins): Add ftype initialization and def_builtin
	calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1,
	__builtin_set_fpscr_rn, __builtin_set_fpscr_drn.
	* config/ (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn,
	rs6000_mffscdrn): Add define_insn.
	(rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand.
	* doc/extend.texi: Add documentation for the builtins.

2018-10-01  Richard Biener  <>

	PR tree-optimization/87465
	* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo
	causing branch miscounts.

2018-10-01  Tamar Christina  <>

	* common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM,
	aarch64_option_default_param):	New.
	(params.h): Include.
	(TARGET_OPTION_VALIDATE_PARAM, aarch64_option_validate_param): New.
	* config/aarch64/aarch64.c (aarch64_override_options_internal): Simplify
	stack-clash protection validation code.

2018-10-01  Tamar Christina  <>

	* params.c (validate_param): New.
	(add_params): Use it.
	(set_param_value): Refactor param validation into validate_param.
	(diagnostic.h): Include.
	* diagnostic.h (diagnostic_ready_p): New.

2018-10-01  Tamar Christina  <>

	* params.c (set_param_value):
	Add index of parameter being validated.
	* common/common-target.def (option_validate_param): New.
	* common/common-targhooks.h (default_option_validate_param): New.
	* common/common-targhooks.c (default_option_validate_param): New.
	* doc/tm.texi: Regenerate.

2018-10-01  Tamar Christina  <>

	PR target/86486
	* config/aarch64/aarch64.c (aarch64_override_options_internal):
	Add validation for stack-clash parameters and set defaults.

2018-10-01  Tamar Christina  <>

	PR target/86486
	* Add stack-clash-protection-guard-size.
	* doc/install.texi: Document it.
	* params.def: Update comment for guard-size.
	* configure: Regenerate.

2018-10-01  Tamar Christina  <>

	PR target/86486
	* config/aarch64/aarch64.h (STACK_CLASH_MIN_BYTES_OUTGOING_ARGS,
	* config/aarch64/aarch64.c (aarch64_layout_frame):
	Update outgoing args size.

2018-10-01  Tamar Christina  <>

	PR target/86486
	* explow.c (anti_adjust_stack_and_probe_stack_clash): Support custom
	probe ranges.
	* target.def (stack_clash_protection_alloca_probe_range): New.
	(stack_clash_protection_final_dynamic_probe): Remove.
	* targhooks.h (default_stack_clash_protection_alloca_probe_range) New.
	(default_stack_clash_protection_final_dynamic_probe): Remove.
	* targhooks.c: Likewise.
	* doc/tm.texi: Regenerate.

2018-10-01  Tamar Christina  <>

	PR target/86486
	* config/aarch64/aarch64-protos.h (aarch64_output_probe_sve_stack_clash): New.
	* config/aarch64/aarch64.c (aarch64_output_probe_sve_stack_clash,
	aarch64_clamp_to_uimm12_shift): New.
	(aarch64_allocate_and_probe_stack_space): Add SVE specific section.
	* config/aarch64/ (probe_sve_stack_clash): New.

2018-10-01  Tamar Christina  <>

	PR target/86486
	* config/aarch64/aarch64.c (aarch64_layout_frame): Add assert.

2018-10-01  Jeff Law  <>
	    Richard Sandiford  <>
	    Tamar Christina  <>

	PR target/86486
	* config/aarch64/
	(probe_stack_range): Add k (SP) constraint.
	* config/aarch64/aarch64.h (STACK_CLASH_CALLER_GUARD,
	* config/aarch64/aarch64.c (aarch64_output_probe_stack_range): Emit
	stack probes for stack clash.
	(aarch64_allocate_and_probe_stack_space): New.
	(aarch64_expand_prologue): Use it.
	(aarch64_expand_epilogue): Likewise and update IP regs re-use criteria.
	(aarch64_sub_sp): Add emit_move_imm optional param.

2018-10-01  MCC CS  <>

	PR tree-optimization/87261
	* match.pd: Remove trailing whitespace.
	Add (x & y) | ~(x | y) -> ~(x ^ y),
	(~x | y) ^ (x ^ y) -> x | ~y and (x ^ y) | ~(x | y) -> ~(x & y)

2018-10-01  Claudiu Zissulescu  <>

	* config/arc/ (*add_n): Clean up pattern, update instruction
	(ashlsi3_insn): Update instruction constraints.
	(ashrsi3_insn): Likewise.
	(rotrsi3): Likewise.
	(add_shift): Likewise.
	* config/arc/ (Csz): New 32 bit constraint. It
	avoids placing in the limm field small constants which, otherwise,
	could end into a small instruction.

2018-10-01  Claudiu Zissulescu  <>

	* config/arc/ (maddsidi4_split): Don't use dmac if the
	destination register is not odd-even.
	(umaddsidi4_split): Likewise.

2018-10-01  Richard Biener  <>

	* tree-inline.c (expand_call_inline): Store origin of fn
	* tree.c (block_ultimate_origin): Simplify and do some

2018-09-30  Uros Bizjak  <>

	* config/i386/ (EMMS): New int iterator.
	(emms): New int attribute.
	(mmx_<emms>): Macroize insn from *mmx_emms and *mmx_femms using
	EMMS int iterator.  Explicitly declare clobbers.
	(mmx_emms): Remove expander.
	(mmx_femms): Ditto.
	* config/i386/ (emms_operation): Remove predicate.
	(vzeroall_pattern): New predicate.
	(vzeroupper_pattern): Rename from vzeroupper_operation.
	* config/i386/i386.c (ix86_avx_u128_mode_after): Use
	vzeroupper_pattern and vzeroall_pattern predicates.

2018-09-30  Peter Bergner  <>

	PR rtl-optimization/86939
	* ira-lives.c (make_hard_regno_born): Rename from this...
	(make_hard_regno_live): ... to this.  Remove update to conflict
	information.  Update function comment.
	(make_hard_regno_dead): Add conflict information update.  Update
	function comment.
	(make_object_born): Rename from this...
	(make_object_live): ... to this.  Remove update to conflict information.
	Update function comment.
	(make_object_dead):  Add conflict information update.  Update function
	(mark_pseudo_regno_live): Call make_object_live.
	(mark_pseudo_regno_subword_live): Likewise.
	(mark_hard_reg_dead): Update function comment.
	(mark_hard_reg_live): Call make_hard_regno_live.
	(process_bb_node_lives): Likewise.
	* lra-lives.c (make_hard_regno_born): Rename from this...
	(make_hard_regno_live): ... to this.  Remove update to conflict
	information.  Remove now uneeded check_pic_pseudo_p argument.
	Update function comment.
	(make_hard_regno_dead): Add check_pic_pseudo_p argument and add update
	to conflict information.  Update function comment.
	(mark_pseudo_live): Remove update to conflict information.  Update
	function comment.
	(mark_pseudo_dead): Add conflict information update.
	(mark_regno_live): Call make_hard_regno_live.
	(mark_regno_dead): Call make_hard_regno_dead with new arguement.
	(process_bb_lives): Call make_hard_regno_live and make_hard_regno_dead.

2018-09-29  H.J. Lu  <>

	PR target/87370
	* config/i386/i386.c (construct_container): Use TImode for
	BLKmode values in 2 integer registers.

2018-09-29  Jeff Law  <>

	* builtins.c (unterminated_array): Pass in c_strlen_data * to
	c_strlen rather than just a tree *.
	(c_strlen): Change NONSTR argument to a c_strlen_data pointer.
	Update recursive calls appropriately.  If caller did not provide a
	suitable data pointer, create a local one.  When a non-terminated
	string is discovered, bubble up information about the string via the
	c_strlen_data object.
	* builtins.h (c_strlen): Update prototype.
	(c_strlen_data): New structure.
	* gimple-fold.c (get_range_strlen): Update calls to c_strlen.
	For a type 2 call, if c_strlen indicates a non-terminated string
	use the length of the non-terminated string.
	(gimple_fold_builtin_stpcpy): Update calls to c_strlen.

2018-09-29  Jakub Jelinek  <>

	PR target/87467
	* config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use
	__m512d type for __A argument rather than __m512.

2018-09-28  John David Anglin  <>

	* match.pd (simple_comparison): Don't optimize if either operand is
	a function pointer when target needs function pointer canonicalization.

2018-09-28  Segher Boessenkool  <>

	* config/rs6000/driver-rs6000.c (asm_names): Adjust the entries for
	power5 .. power9 to remove indirection.
	* config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC, ASM_CPU_POWER6_SPEC,
	ASM_CPU_476_SPEC): Delete.
	(ASM_CPU_SPEC): Adjust.
	(EXTRA_SPECS): Delete asm_cpu_power5, asm_cpu_power6, asm_cpu_power7,
	asm_cpu_power8, asm_cpu_power9, asm_cpu_476.

2018-09-28  Segher Boessenkool  <>

	* Delete HAVE_AS_DCI.
	* config/powerpcspe/powerpcspe.h: Treat HAVE_AS_DCI as always true.
	* config/rs6000/rs6000.h: Ditto.
	* Delete HAVE_AS_DCI.
	* configure: Regenerate.

2018-09-28  Segher Boessenkool  <>

	* (HAVE_AS_LWSYNC): Delete.
	* config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete.
	* config/powerpcspe/ (*lwsync): Always generate lwsync, never
	do it as a .long .
	* config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete.
	* config/rs6000/ (*lwsync): Always generate lwsync, never do it
	as a .long .
	* configure: Regenerate.

2018-09-28  Eric Botcazou  <>
	    Pierre-Marie de Rodat  <>

	* calls.c (expand_call): Try to do a tail call for thunks at -O0 too.
	* cgraph.h (struct cgraph_thunk_info): Add indirect_offset.
	(cgraph_node::create_thunk): Add indirect_offset parameter.
	(thunk_adjust): Likewise.
	* cgraph.c (cgraph_node::create_thunk): Add indirect_offset parameter
	and initialize the corresponding field with it.
	(cgraph_node::dump): Dump indirect_offset field.
	* cgraphclones.c (duplicate_thunk_for_node): Deal with indirect_offset.
	* cgraphunit.c (cgraph_node::analyze): Be prepared for external thunks.
	(thunk_adjust): Add indirect_offset parameter and deal with it.
	(cgraph_node::expand_thunk): Deal with the indirect_offset field and
	pass it to thunk_adjust.  Do not call the target hook if it's non-zero
	or if the thunk is external or local.  Fix formatting.  Do not chain
	the RESULT_DECL to BLOCK_VARS.  Pass the static chain to the target,
	if any, in the GIMPLE representation.
	* ipa-icf.c (sem_function::equals_wpa): Deal with indirect_offset.
	* lto-cgraph.c (lto_output_node): Write indirect_offset field.
	(input_node): Read indirect_offset field.
	* tree-inline.c (expand_call_inline): Pass indirect_offset field in the
	call to thunk_adjust.
	* tree-nested.c (struct nesting_info): Add thunk_p field.
	(create_nesting_tree): Set it.
	(convert_all_function_calls): Copy static chain from targets to thunks.
	(finalize_nesting_tree_1): Return early for thunks.
	(unnest_nesting_tree_1): Do not finalize thunks.
	(gimplify_all_functions): Do not gimplify thunks.

2018-09-28  David Malcolm  <>

	* opt-suggestions.c (option_proposer::build_option_suggestions):
	Release	"option_values".

2018-09-28  David Malcolm  <>

	* coverage.c (get_coverage_counts): Convert problem-reporting dump
	* dumpfile.c (kind_as_string): New function.
	(dump_loc): Rather than a hardcoded prefix of "note: ", use
	kind_as_string to vary the prefix based on dump_kind.
	(selftest::test_capture_of_dump_calls): Update for above.

2018-09-28  Uros Bizjak  <>

	* config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.
	(GET_SSE_REGNO): Rename from SSE_REGNO.  Update all uses for rename.

2018-09-28  Uros Bizjak  <>

	* config/i386/i386.h (CC_REGNO): Remove FPSR_REG.
	* config/i386/i386.c (ix86_fixed_condition_code_regs): Use
	(ix86_md_asm_adjust): Do not clobber FPSR_REG.
	* config/i386/ Update comment of FP compares.
	(fldenv): Do not clobber FPSR_REG.

2018-09-28  Richard Biener  <>

	* tree.h (BLOCK_ORIGIN): New.
	* omp-expand.c (grid_expand_target_grid_body): Assign
	* tree-inline.c (remap_block): Likewise.
	* auto-profile.c (get_function_decl_from_block): Simplify
	by eliding the BLOCK_ABSTRACT_ORIGIN chasing.
	* langhooks.c (lhd_print_error_function): Likewise.
	* (optrecord_json_writer::inlining_chain_to):
	* tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
	* tree.c (block_nonartificial_location): Likewise.
	(block_ultimate_origin): Likewise.
	* tree-pretty-print.c (percent_K_format): Likewise.  Remove
	no longer needed LTO case.

2018-09-28  Andrew Stubbs  <>
	    Jan Hubicka  <>
	    Martin Jambor  <>

	* simplify-rtx.c (simplify_merge_mask): New function.
	(simplify_ternary_operation): Use it, also see if VEC_MERGEs with the
	same masks are used in op1 or op2.
	(test_vec_merge): New function.
	(test_vector_ops): Call test_vec_merge.

2018-09-28  Eric Botcazou  <>

	* config/sparc/sparc-protos.h (sparc_branch_cost): Declare.
	* config/sparc/sparc.h (BRANCH_COST): Call sparc_branch_cost.
	* config/sparc/sparc.c (struct processor_costs): Add branch_cost field.
	(cypress_costs): Set it.
	(supersparc_costs): Likewise.
	(hypersparc_costs): Likewise.
	(leon_cost): Likewise.
	(leon3_costs): Likewise.
	(sparclet_costs): Likewise.
	(ultrasparc_costs): Likewise.
	(ultrasparc_costs): Likewise.
	(niagara_costs): Likewise.
	(niagara2_costs): Likewise.
	(niagara3_costs): Likewise.
	(niagara4_costs): Likewise.
	(niagara7_costs): Likewise.
	(m8_costs): Likewise.
	(pass_work_around_errata::gate): Minor tweak.
	(sparc_option_override): Remove MASK_FSMULD mask for V7 processors.
	Do not set both MASK_VIS4 and MASK_VIS4B for M8 processor.
	Automaitcally clear MASK_FSMULD mask for V7 processors.
	(sparc_can_follow_jump): New static function.
	(output_ubranch): Deal with CROSSING_JUMP_P.
	(sparc_use_sched_lookahead): Rewrite using switch statement.
	(sparc_issue_rate): Reorder.
	(sparc_branch_cost): New function.

2018-09-27  Martin Sebor  <>

	* tree.h (tree_to_shwi): Add attribute nonnull and pure.
	(tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same.
	(int_fits_type_p): Same.

2018-09-27  Uros Bizjak  <>

	* config/i386/ (FPCR_REG): Remove.
	(UNSPEC_FLDCW): Remove.
	(x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG.
	(x86_fldcw_1): Remove insn pattern.
	(fnstenv): Do not clobber FPCR_REG.
	(fldenv): Ditto.
	* config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register.
	(ADDITIONAL_REGISTER_NAMES): Use defines instead
	of numerical constants.
	* config/i386/i386.c (regclass_map): Remove fpsr register.
	(dbx_register_map): Ditto.
	(dbx64_register_map): Ditto.
	(svr4_dbx_register_map): Ditto.
	(print_reg): Do not handle FPCR_REG.

2018-09-27  Segher Boessenkool  <>

	PR target/87149
	Delete, always treat as true.
	* config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
	Ditto.  Simplify remaining code.
	* config/powerpcspe/powerpcspe.h: Ditto.
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto.
	Simplify remaining code.
	(rs6000_expand_builtin): Ditto.
	* config/rs6000/rs6000.h: Ditto.
	* Ditto.
	* configure: Regenerate.

2018-09-27  Martin Liska  <>

	* coverage.c (get_coverage_counts): Revert the formatting
	of missing profile opt info.

2018-09-27  Richard Biener  <>

	PR debug/37801
	PR debug/87440
	* dwarf2out.c (set_block_origin_self): Do not mark outermost
	block as we do not output that.
	(gen_inlined_subroutine_die): Elide the originally outermost
	block, matching what we do for concrete instances.
	(decls_for_scope): Add parameter specifying whether to recurse
	to subblocks.

2018-09-27  Andrew Stubbs  <>
	    Tom de Vries  <>

	PR 82089

	* expmed.c (emit_cstore): Fix handling of result_mode == BImode and

2018-09-27  Andreas Krebbel  <>

	* config/s390/ (PPA_TX_ABORT, PPA_OOO_BARRIER): New
	constant definitions.
	("tx_assist"): Replace magic number with PPA_TX_ABORT.
	("*ppa"): Enable pattern also for -march=zEC12 -mno-htm.
	("speculation_barrier"): New expander definition.

2018-09-26  Indu Bhagat  <>

	PR gcov-profile/86957
	* common.opt: New warning option -Wmissing-profile.
	* coverage.c (get_coverage_counts): Add warning for missing .gcda file.
	* doc/invoke.texi: Document -Wmissing-profile.

2018-09-26  Jim Wilson  <>

	* config/riscv/ (subsi3_extended2): Add J constraint.
	(negdi2, negsi2, negsi2_extended, negsi2_extended2): New.

2018-09-26  Martin Sebor  <>

	* tree.c (zerop): Change return type to bool.
	(integer_zerop, integer_onep, integer_each_onep): Same.
	(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
	(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
	(real_onep, real_minus_onep, chain_index): Same.
	(print_type_hash_statistics, type_list_equal): Same.
	* tree.h (zerop): Same.
	(zerop, integer_zerop, integer_onep, integer_each_onep): Same.
	(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
	(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
	(real_onep, real_minus_onep, chain_index): Same.
	(print_type_hash_statistics, type_list_equal): Same.

2018-09-26  Jim Wilson  <>

	* config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment.

2018-09-26  Jakub Jelinek  <>

	PR target/87414
	* config/i386/i386.c: Include debug.h and dwarf2out.h.
	(output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the

2018-09-25  Andrew Stubbs  <>

	* builtins.c (get_builtin_sync_mem): Force address mode conversion.

2018-09-26  Uros Bizjak  <>

	* config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS
	* config/i386/i386.c (ix86_preferred_reload_class) Do not handle
	(ix86_preferred_output_reload_class): Ditto.
	* config/i386/ (fix_trunc<mode>_i387_fisttp): Change "=&1f"
	clobber constraint to "=&f".
	(fix_truncdi_i387): Ditto.
	(lrintxfdi2): Ditto.
	(fistdi2_<rounding>): Ditto.
	(fpremxf4_i387): Change "=u" constraint to "=f".
	(fprem1xf4_i387): Ditto.
	(sincosxf3): Ditto.
	(fptanxf4_i387): Ditto.
	(fxtractxf3_i387): Ditto.
	(fscalexf4_i387): Ditto.
	(atan2xf3): Change "u" constraint to "f".
	(fyl2xxf3_i387): Ditto.
	(fyl2xp1xf3_i387): Ditto.

2018-09-26  Uros Bizjak  <>

	PR target/87439
	* config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update
	for removed I387_MASK_PM entity.

2018-09-26  Jeff Law  <>
	2018-09-26  Alexey Neyman  <>

	* graphite.h: Include <isl/id.h> and <isl/space.h>; these
	headers are no longer pulled in by <isl/val.h>.

2018-09-26  Richard Biener  <>

	PR debug/87443
	* dwarf2out.c (gen_lexical_block_die): Do not equate inline
	or concrete instance DIE to the tree.  Create abstract origin
	attributes also for concrete instances.

2018-09-26  Alexey Neyman  <>

	* graphite.h: Include <isl/id.h> and <isl/space.h>; these
	headers are no longer pulled in by <isl/val.h>.

2018-09-26  Matthew Malcomson  <>

	* config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op):
	Use new helper functions.
	* config/arm/ (atomic_load<mode>, atomic_store<mode>):
	Use new helper functions.
	* config/arm/aarch-common-protos.h (aarch_mm_needs_acquire,
	aarch_mm_needs_release): New declarations.
	* config/arm/aarch-common.c (aarch_mm_needs_acquire,
	aarch_mm_needs_release): New.

2018-09-26  Eric Botcazou  <>

	* config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks.
	(arm32_output_mi_thunk): Deal with long calls.

2018-09-26  Richard Biener  <>

	PR debug/87428
	PR debug/87362
	* tree-inline.c (expand_call_inline): When the location
	the inserted BLOCK to make inlined_function_outer_scope_p
	recognize it.
	* dwarf2out.c (add_call_src_coords_attributes): Do not add
	coords for reserved locations.

2018-09-25  Segher Boessenkool  <>

	* config/rs6000/ (*movcc_internal1): Use set_attr_alternative.
	(*call_indirect_nonlocal_sysv<mode>): Ditto.
	(*call_value_indirect_nonlocal_sysv<mode>): Ditto.
	(*sibcall_nonlocal_sysv<mode>): Ditto.
	(*sibcall_value_nonlocal_sysv<mode>): Ditto.
	(<bd>_<mode>): Ditto.
	(<bd>tf_<mode>): Ditto.

2018-09-25  Segher Boessenkool  <>

	* config/rs6000/ (*altivec_mov<mode>): Write the output
	control string as a list of templates instead of as C code.
	(*altivec_movti): Ditto.
	* config/rs6000/ (movdf_low_di): Ditto.

2018-09-25  Jim Wilson  <>

	* config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak
	when target symbol is weak.

2018-09-25  Bernd Edlinger  <>

	PR c/87387
	* builtins.c (unterminated_array): Simplify.
	* expr.c (string_constant): Handle SSA_NAME.  Add more exceptions
	where pointer arithmetic is safe.

2018-09-25  Segher Boessenkool  <>

	PR target/86987
	* config/rs6000/ (altivec_vspltb): Use
	const_0_to_15_operand instead of u5bit_cint_operand.
	(*altivec_vspltb_internal): Ditto.
	(altivec_vspltb_direct): Ditto.
	(altivec_vsplth): Use const_0_to_7_operand instead of
	(*altivec_vsplth_internal): Ditto.
	(altivec_vsplth_direct): Ditto.
	(altivec_vspltw): Use const_0_to_3_operand instead of
	(*altivec_vspltw_internal): Ditto.
	(altivec_vspltw_direct): Ditto.
	(altivec_vspltsf): Ditto.
	(*altivec_vspltsf_internal): Ditto.
	* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the
	various splats with the proper size immediate.  Reorder the various
	cases by ascending size of immediate, and put all such together.

2018-09-25  Richard Biener  <>

	PR debug/83941
	* dwarf2out.c (add_AT_external_die_ref): Remove now redundant
	(maybe_create_die_with_external_ref): Do not create
	DW_TAG_imported_unit here.
	(add_abstract_origin_attribute): Handle external BLOCK refs.
	(dwarf2out_abstract_function): Simplify LTO case.
	(dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely
	rather than using maybe_create_die_with_external_ref.

2018-09-25  Uros Bizjak  <>

	PR target/71278
	* config/i386/ (frndintxf2_mask_pm): Remove.
	(frndintxf2_mask_pm_i387): Ditto.
	(nearbyintxf2): Rewrite expander pattern to match rintxf2.
	Enable for !flag_trapping_math.
	(nearbyint<mode>2): Enable x87 modes for !flag_trapping_math.
	Enable SSE modes for TARGET_SSE4_1 and expand them with round insn.
	Change operand 1 predicate to nonimmediate_operand.
	(attr "i387_cw"): Remove mask_pm.
	* config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_CW_MASK_PM.
	(enum ix86_entity): Remove I387_MASK_PM.
	* config/i386/i386.c (ix86_i387_mode_needed): Do not
	handle I387_MASK_PM.
	(ix86_mode_needed): Ditto.
	(ix86_mode_after): Ditto.
	(ix86_mode_entry): Ditto.
	(ix86_mode_exit): Ditto.
	(emit_i387_cw_initialization): Do not handle I387_CW_MASK_PM.

2018-09-25  Jakub Jelinek  <>

	* vr-values.c (vr_values::vr_values): Initialize to_remove_edges and
	to_update_switch_stmts to vNULL instead of calling create on them

2018-09-25  Richard Biener  <>

	PR tree-optimization/87402
	* tree-ssa-sccvn.c (SSA_VISITED): Remove unused function.
	(visit_phi): Re-instantiate handling of supposed to be VARYING
	but non-VARYING backedge value.

2018-09-25  Richard Biener  <>

	PR debug/83941
	* dwarf2out.c (struct sym_off_pair): New.
	(external_die_map): New global.
	(lookup_decl_die): When in LTO create DIEs lazily from the
	(lookup_block_die): New function, create DIEs lazily in LTO.
	(equate_block_to_die): New function.
	(dwarf2out_die_ref_for_decl): During WPA get the association
	from the external DIE map.
	(dwarf2out_register_external_die): Record mapping into the
	external DIE map.
	(maybe_create_die_with_external_ref): New function split out from
	DIE generation part of old dwarf2out_register_external_die.
	(add_abstract_origin_attribute): Do not return the DIE.  When
	in LTO reference externals directly.
	(dwarf2out_abstract_function): When in LTO ignore calls for
	decls with external DIEs (already present abstract instances).
	(gen_call_site_die): Adjust.
	(add_high_low_attributes): Likewise.
	(gen_lexical_block_die): Likewise.
	(gen_inlined_subroutine_die): Likewie.
	(gen_block_die): Likewise.
	(dwarf2out_inline_entry): Likewise.
	(dwarf2out_early_finish): In LTRANS phase create DW_TAG_imported_unit

2018-09-25  Martin Liska  <>

	* ipa-fnsummary.c (estimate_node_size_and_time): Scale by two
	integers and not by a float value.

2018-09-25  Martin Liska  <>

	PR fortran/87394
	* dbgcnt.c (dbg_cnt_process_single_pair): Return false
	instead of NULL.
	* dumpfile.c (dump_enable_all): Remove extra parenthesis.
	* gcov-tool.c: Declare the function with ATTRIBUTE_NORETURN.
	* godump.c (go_format_type): Remove extra parenthesis.

2018-09-25  Martin Liska  <>

	* alias.c (set_dest_equal_p): Remove unused function.
	* config/i386/i386.c (def_builtin_pure2): Likewise.
	* diagnostic-show-locus.c (class layout): Remove
	unused field.
	(layout::layout): Likewise here.
	* dump-context.h (class temp_dump_context): Likewise.
	* dwarf2out.c (add_AT_fde_ref): Remove unused function.
	(add_AT_loclistsptr): Likewise.
	(add_AT_offset): Likewise.
	(get_AT_hi_pc): Likewise.
	(is_comdat_die): Likewise.
	(type_is_enum): Likewise.
	(ceiling): Likewise.
	(add_AT_vms_delta): Likewise.
	(is_class_die): Likewise.
	* edit-context.c (class line_event): Remove unused field.
	* graphite-sese-to-poly.c (tree_int_to_gmp): Remove
	unused function.
	* ipa-cp.c (ipa_get_vr_lat): Likewise.
	* lra-constraints.c (ok_for_index_p_nonstrict): Likewise.
	(ok_for_base_p_nonstrict): Likewise.
	* tree-chrec.c (is_not_constant_evolution): Likewise.
	(chrec_fold_poly_cst): Likewise.
	* tree-if-conv.c (has_pred_critical_p): Likewise.
	* tree-ssa-coalesce.c (print_exprs): Likewise.
	* tree-ssa-pre.c (bitmap_set_contains_expr): Likewise.
	* tree-ssa-uninit.c (is_and_or_or_p): Likewise.
	* tree-vrp.c (value_ranges_intersect_p): Likewise.
	(value_range_nonnegative_p): Likewise.

2018-09-25  Martin Liska  <>

	* config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue):
	Do not handle "GNU Pascal".
	* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
	* config/sparc/sparc.c (sparc_pass_by_reference): Remove Pascal
	from documentation. Likewise.
	* dbxout.c (dbxout_range_type): Likewise.
	* doc/cpp.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/frontends.texi: Likewise.
	* doc/invoke.texi: Remove Pascal entry.
	* tree.def (CLEANUP_POINT_EXPR): Likewise.
	* doc/rtl.texi (MODE_FUNCTION): Remove not used entry.

2018-09-25  Martin Liska  <>

	PR middle-end/86078
	* doc/invoke.texi: Document all parameters and remove default
	of the parameters.

2018-09-25  Ilya Leoshkevich  <>

	PR bootstrap/87417
	* rtl.c (rtx_code_size): Take into account that EQ_ATTR_ALT
	contains HOST_WIDE_INTs when computing its size.

2018-09-24  Jim Wilson  <>

	PR target/87391
	* config/riscv/riscv.h (STACK_BOUNDARY): Test riscv_abi == ABI_ILP32E

2018-09-24  Andrew Pinski  <>

	*  config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Don't
	access prev before checking it for NULLness in the

2018-09-24  H.J. Lu  <>

	PR target/82699
	* config/i386/i386.c (rest_of_insert_endbranch): Set
	endbr_queued_at_entrance to true and don't insert ENDBR if
	x86_function_profiler will be called.
	(x86_function_profiler): Insert ENDBR if endbr_queued_at_entrance
	is true.
	* config/i386/i386.h (machine_function): Add

2018-09-24  Ilya Leoshkevich  <>

	* genattrtab.c (mk_attr_alt): Use alternative_mask.
	(attr_rtx_1): Adjust caching to match the new EQ_ATTR_ALT field
	(check_attr_test): Use alternative_mask.
	(get_attr_value): Likewise.
	(compute_alternative_mask): Use alternative_mask and XWINT.
	(make_alternative_compare): Use alternative_mask.
	(attr_alt_subset_p): Use XWINT.
	(attr_alt_subset_of_compl_p): Likewise.
	(attr_alt_intersection): Use alternative_mask and XWINT.
	(attr_alt_union): Likewise.
	(attr_alt_complement): Use HOST_WIDE_INT and XWINT.
	(mk_attr_alt): Use alternative_mask and HOST_WIDE_INT.
	(simplify_test_exp): Use alternative_mask and XWINT.
	(write_test_expr): Use alternative_mask and XWINT, adjust bit
	number calculation to support 64 bits.  Generate code that
	checks 64-bit masks.
	(main): Use alternative_mask.
	* rtl.def (EQ_ATTR_ALT): Change field types from ii to ww.

2018-09-24  Ilya Leoshkevich  <>

	PR target/80080
	* config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL
	RETURN+USE when returning via %r14.

2018-09-24  Martin Liska  <>

	* gcov.c (output_lines): Print colorization legend
	for both flag_use_colors and flag_use_hotness_colors.
	Reword the help.

2018-09-24  Martin Liska  <>

	* coverage.c (get_coverage_counts): Use warning_at
	with current_function_decl location. Use %qD in warning

2018-09-24  Martin Liska  <>

	* memory-block.h (memory_block_pool::release): Annotate with
	valgrind that the memory is not accessible.

2018-09-24  Martin Liska  <>

	PR sanitizer/85774
	* asan.c: Make asan_handled_variables extern.
	* asan.h: Likewise.
	* cfgexpand.c (expand_stack_vars): Make sure
	a representative is unpoison if another
	variable in the partition is handled by
	use-after-scope sanitization.

2018-09-24  Richard Biener  <>

	PR tree-optimization/63155
	* tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to
	the worklist when the edge of the respective argument isn't

2018-09-23   Uros Bizjak  <>

	* config/i386/i386.h (enum reg_class): Rename MASK_REGS to
	(MASK_CLASS_P): Update for rename.
	* config/i386/i386.c (regclass_map): Update for MASK_REG
	and ALL_MASK_REGS rename.
	* config/i386/ (Yk): Update for rename.
	(k): Ditto.

2018-09-23   Uros Bizjak  <>

	* config/i386/i386.h (enum reg_class): Remove
	* config/i386/i386.c (regclass_map): Declare AVX-512 SSE
	registers as ALL_SSE_REGS.
	(ix86_additional_allocno_class_p): Remove.
	(ix86_register_priority): Lower priority of EVEX SSE registers.
	Use IN_RANGE macro where appropriate.
	(ix86_hard_regno_mode_ok): Merge AVX-5124FMAPS and
	AVX-5124VNNIW checks.
	(ix86_modes_tieable_p): Tie 512-bit SSE modes.
	* config/i386/ (avx5124fmaddps_4fmaddps)
	(avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddps_maskz)
	(avx5124fmaddps_4fmaddss, avx5124fmaddps_4fmaddss_mask)
	(avx5124fmaddps_4fmaddss_maskz, avx5124fmaddps_4fnmaddps)
	(avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddps_maskz)
	(avx5124fmaddps_4fnmaddss, avx5124fmaddps_4fnmaddss_mask)
	(avx5124fmaddps_4fnmaddss_maskz, avx5124vnniw_vp4dpwssd)
	(avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssd_maskz)
	(avx5124vnniw_vp4dpwssds, avx5124vnniw_vp4dpwssds_mask)
	(avx5124vnniw_vp4dpwssds_maskz): Use "v" instead of "Yh" constraint.
	* config/i386/ (Yh): Remove.

2018-09-23   Uros Bizjak  <>

	* config/i386/i386.c (regclass_map): Declare integer REX registers

2018-09-23  Gerald Pfeifer  <>

	* doc/service.texi (Service): Switch the link to https.

2018-09-22  Chung-Ju Wu  <>

	PR target/86798
	* config/nds32/nds32.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
	Define to speculation_safe_value_not_needed.

2018-09-21  Florian Weimer  <>

	PR middle-end/81035
	* doc/extend.texi (Common Function Attributes): Mention that
	noreturn suppresses tail call optimization.

2018-09-21  Jeff Law  <>

	* gimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call
	* tree-vrp.c (to_remove_edges, to_update_switch_stmts): Moved into
	vr_values class.
	(identify_jump_threads): Remove EDGE_IGNORE handling.
	(execute_vrp): Move handling of to_remove_edges and
	to_update_switch_stmts into vr_values class member functions.
	* tree-vrp.h (switch_update, to_remove_edges): Remove declarations.
	(to_update_switch_stmts): Likewise.
	* vr-values.c: Include cfghooks.h.
	(vr_values::vr_values): Initialize to_remove_edges and
	(vr_values::~vr_values): Verify to_remove_edges and
	to_update_switch_stmts are empty.
	(vr_values::simplify_switch_using_ranges): Set EDGE_IGNORE as needed.
	(vr_values::cleanup_edges_and_switches): New member function.
	* vr-values.h (vr_values): Add cleanup_edges_and_switches member
	function.  Add new data members.

2018-09-21  David Malcolm  <>

	PR tree-optimization/87309
	* dumpfile.c (dump_context::begin_scope): Filter the dump_loc
	calls with pflags and alt_flags.
	(selftest::test_capture_of_dump_calls): Add test of interaction of

2018-09-21  Olivier Hainque  <>

	* config.gcc: Factorize and comment inclusion of vxworks-dummy.h.

2018-09-21  Olivier Hainque  <>

	* config/vxworks.h (CLEAR_INSN_CACHE): #define to 1.

2018-09-21  Olivier Hainque  <>

	* config/vxworks.h (VXWORKS_LIBGCC_SPEC): Remove -lc_internal.
	Merge block comment with the one ahead of VXWORKS_LIBS_RTP. Then:
	(VXWORKS_LIBS_RTP): Minor reordering.

2018-09-21  Olivier Hainque  <>

	* config/vxworks.h (STARTFILE_PREFIX_SPEC): Define.
	(VXWORKS_LIBS_DIR_RTP): Remove definition and use.

2018-09-21  Olivier Hainque  <>

	* config/vxworks.h (SIZE_TYPE): Account for TARGET_VXWORKS64.
	(PTRDIFF_TYPE): Likewise.

2018-09-21  Olivier Hainque  <>

	* config.gcc: Enforce def of TARGET_VXWORKS64 to 1 from
	triplet, similar to support for VxWorks7.
	* config/vxworks-dummy.h: Provide a default definition
	of TARGET_VXWORKS64 to 0.

2018-09-21  Olivier Hainque  <>

	* config/vxworks.h (TARGET_VXWORKS7): Move default definition ...
	* config/vxworks-dummy.h: here.

2018-09-21  Olivier Hainque  <>

	* config.gcc: Prepend vxworks-dummy.h to tm_file for powerpc*

2018-09-21  Shaokun Zhang  <>
	    Bo Zhou  <>

	* config/aarch64/aarch64-cores.def (tsv110): New CPU.
	* config/aarch64/ Regenerated.
	* doc/invoke.texi (AArch64 Options/-mtune): Add "tsv110".
	* config/aarch64/aarch64.c (tsv110_tunings): New tuning table.
	* config/aarch64/aarch64-cost-tables.h: Add "tsv110" extra costs.

2018-09-21  Andrew Stubbs  <>
	    Julian Brown  <>

	* builtins.c (get_builtin_sync_mem): Handle address spaces.

2018-09-21  Eric Botcazou  <>

	* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false
	if the call takes a static chain.

2018-09-21  Martin Liska  <>

	* auto-profile.c (autofdo_source_profile::read): Do not
	set sum_all.
	(read_profile): Do not add working sets.
	(read_autofdo_file): Remove sum_all.
	(afdo_callsite_hot_enough_for_early_inline): Remove const
	* coverage.c (struct counts_entry): Remove gcov_summary.
	(read_counts_file): Read new GCOV_TAG_OBJECT_SUMMARY,
	(get_coverage_counts): Remove summary and expected
	* coverage.h (get_coverage_counts): Likewise.
	* doc/gcov-dump.texi: Remove -w option.
	* gcov-dump.c (dump_working_sets): Remove.
	(main): Do not support '-w' option.
	(print_usage): Likewise.
	(tag_summary): Likewise.
	* gcov-io.c (gcov_write_summary): Do not dump
	(gcov_read_summary): Likewise.
	(gcov_histo_index): Remove.
	(gcov_histogram_merge): Likewise.
	(compute_working_sets): Likewise.
	* gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Mark
	it not obsolete.
	(GCOV_TAG_PROGRAM_SUMMARY): Mark it obsolete.
	(struct gcov_summary): Simplify rapidly just
	to runs and sum_max fields.
	(gcov_histo_index): Remove.
	(compute_working_sets): Likewise.
	* gcov-tool.c (print_overlap_usage_message): Remove
	trailing empty line.
	* gcov.c (read_count_file): Read GCOV_TAG_OBJECT_SUMMARY.
	(output_lines): Remove program related line.
	* ipa-profile.c (ipa_profile): Do not consider GCOV histogram.
	* lto-cgraph.c (output_profile_summary): Do not stream GCOV
	(input_profile_summary): Do not read it.
	(merge_profile_summaries): And do not merge it.
	(input_symtab): Do not call removed function.
	* modulo-sched.c (sms_schedule): Do not print sum_max.
	* params.def (HOT_BB_COUNT_FRACTION): Reincarnate param that was
	removed when histogram method was invented.
	(HOT_BB_COUNT_WS_PERMILLE): Mention that it's used only in LTO
	* postreload-gcse.c (eliminate_partially_redundant_load): Fix
	GCOV coding style.
	* predict.c (get_hot_bb_threshold): Use HOT_BB_COUNT_FRACTION
	and dump selected value.
	* profile.c (add_working_set): Remove.
	(get_working_sets): Likewise.
	(find_working_set): Likewise.
	(get_exec_counts): Do not work with working sets.
	(read_profile_edge_counts): Do not inform as sum_max is removed.
	(compute_branch_probabilities): Likewise.
	(compute_value_histograms): Remove argument for call of
	* profile.h: Do not make gcov_summary const.

2018-09-21  Monk Chiang  <>

	* config.gcc (nds32*-*-*): Set TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0.

2018-09-21  Eric Botcazou  <>

	PR tree-optimization/86990
	* gimple-ssa-store-merging.c (imm_store_chain_info:coalesce_immediate):
	Check that the entire merged store group is made of constants only for
	overlapping stores.

2018-09-20  Allan Sandfeld Jensen  <>

	* gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib.
	(SANITIZER_SPEC): Likewise.
	* config/darwin.h (LINK_COMMAND_SPEC): Likewise.
	* doc/invoke.texi (Link Options): Document -r.

2018-09-20  Richard Biener  <>

	PR middle-end/87054
	* gimplify.c (gimplify_expr): Retain alignment of
	addressable lvalue in dereference.

2018-09-20  Alexandre Oliva  <>

	PR bootstrap/87013
	* Check for .loc is_stmt support.
	* configure, Rebuilt.
	* dwarf2out.c (dwarf2out_source_line): Skip is_stmt
	if not supported.

2018-09-20  Segher Boessenkool  <>

	* config/rs6000/rs6000.opt (misel=no, misel=yes): Delete.
	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -misel=yes and

2018-09-20  Segher Boessenkool  <>

	* config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
	* config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete

2018-09-20  Marek Polacek  <>

	* doc/invoke.texi: Add -Wno-init-list-lifetime to C++ Language Options.

2018-09-20  Richard Sandiford  <>

	PR tree-optimization/87288
	* tree-vect-loop.c (vect_analyze_loop_2): Take PEELING_FOR_GAPS
	into account when determining PEELING_FOR_NITERS.

2018-09-20  Richard Sandiford  <>

	PR tree-optimization/86877
	* tree-vect-loop.c (vect_analyze_loop_2): Call

2018-09-19  Marek Polacek  <>

	* doc/invoke.texi: Document -Wclass-conversion.

2018-09-19  John David Anglin  <>

	* config/pa/pa.c (pa_adjust_priority): Delete.

	* config/pa/ (atomic_storeqi): Restore deleted expander.
	(atomic_storehi): Likewise.
	(atomic_storesi): Likewise.
	(atomic_loaddi): Restore compare and swap exchange loop code.

2018-09-19  Segher Boessenkool  <>

	PR rtl-optimization/86902
	* combine.c (try_combine): When changing the CC mode used, don't change
	an unrelated mode in other_insn to that new CC mode.

2018-09-19  David Malcolm  <>

	* tree-data-ref.c (runtime_alias_check_p): Use formatted printing
	with %T in place of calls to dump_generic_expr.
	(prune_runtime_alias_test_list): Likewise.
	(create_runtime_alias_checks): Likewise.
	* tree-vect-data-refs.c (vect_check_nonzero_value): Likewise.
	(vect_analyze_data_ref_dependence): Likewise.
	(vect_slp_analyze_data_ref_dependence): Likewise.
	(vect_record_base_alignment): Likewise.  Use %G in place of call
	to dump_gimple_stmt.
	(vect_compute_data_ref_alignment): Likewise.
	(verify_data_ref_alignment): Likewise.
	(vect_find_same_alignment_drs): Likewise.
	(vect_analyze_group_access_1): Likewise.
	(vect_analyze_data_ref_accesses): Likewise.
	(dependence_distance_ge_vf): Likewise.
	(dump_lower_bound): Likewise.
	(vect_prune_runtime_alias_test_list): Likewise.
	(vect_find_stmt_data_reference): Likewise.
	(vect_analyze_data_refs): Likewise.
	(vect_create_addr_base_for_vector_ref): Likewise.
	(vect_create_data_ref_ptr): Likewise.
	* tree-vect-loop-manip.c (vect_set_loop_condition): Likewise.
	(vect_can_advance_ivs_p): Likewise.
	(vect_update_ivs_after_vectorizer): Likewise.
	(vect_gen_prolog_loop_niters): Likewise.
	(vect_prepare_for_masked_peels): Likewise.
	* tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
	(vect_determine_vectorization_factor): Likewise.
	(vect_is_simple_iv_evolution): Likewise.
	(vect_analyze_scalar_cycles_1): Likewise.
	(vect_analyze_loop_operations): Likewise.
	(report_vect_op): Likewise.
	(vect_is_slp_reduction): Likewise.
	(check_reduction_path): Likewise.
	(vect_is_simple_reduction): Likewise.
	(vect_create_epilog_for_reduction): Likewise.
	(vect_finalize_reduction:): Likewise.
	(vectorizable_induction): Likewise.
	(vect_transform_loop_stmt): Likewise.
	(vect_transform_loop): Likewise.
	(optimize_mask_stores): Likewise.
	* tree-vect-patterns.c (vect_pattern_detected): Likewise.
	(vect_split_statement): Likewise.
	(vect_recog_over_widening_pattern): Likewise.
	(vect_recog_average_pattern): Likewise.
	(vect_determine_min_output_precision_1): Likewise.
	(vect_determine_precisions_from_range): Likewise.
	(vect_determine_precisions_from_users): Likewise.
	(vect_mark_pattern_stmts): Likewise.
	(vect_pattern_recog_1): Likewise.
	* tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
	(vect_record_max_nunits): Likewise.
	(vect_build_slp_tree_1): Likewise.
	(vect_build_slp_tree_2): Likewise.
	(vect_print_slp_tree): Likewise.
	(vect_analyze_slp_instance): Likewise.
	(vect_detect_hybrid_slp_stmts): Likewise.
	(vect_detect_hybrid_slp_1): Likewise.
	(vect_slp_analyze_operations): Likewise.
	(vect_slp_analyze_bb_1): Likewise.
	(vect_transform_slp_perm_load): Likewise.
	(vect_schedule_slp_instance): Likewise.
	* tree-vect-stmts.c (vect_mark_relevant): Likewise.
	(vect_mark_stmts_to_be_vectorized): Likewise.
	(vect_init_vector_1): Likewise.
	(vect_get_vec_def_for_operand): Likewise.
	(vect_finish_stmt_generation_1): Likewise.
	(vect_check_load_store_mask): Likewise.
	(vectorizable_call): Likewise.
	(vectorizable_conversion): Likewise.
	(vectorizable_operation): Likewise.
	(vectorizable_load): Likewise.
	(vect_analyze_stmt): Likewise.
	(vect_is_simple_use): Likewise.
	(vect_get_vector_types_for_stmt): Likewise.
	(vect_get_mask_type_for_stmt): Likewise.
	* tree-vectorizer.c (increase_alignment): Likewise.

2018-09-19  Andrew Stubbs  <>

	* doc/rtl.texi: Adjust vec_select description.
	* simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use
	non-constant selectors.

2018-09-19  Matthew Malcomson  <>

	* config/aarch64/aarch64-protos.h
	(aarch64_offset_9bit_signed_unscaled_p): New declaration.
	* config/aarch64/ (arches): New "rcpc8_4" attribute value.
	(arch_enabled): Add check for "rcpc8_4" attribute value of "arch".
	* config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield.
	(AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4.
	(AARCH64_FL_PROFILE): Move index so flags are ordered.
	(AARCH64_ISA_RCPC8_4): New flag.
	* config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed
	to aarch64_offset_9bit_signed_unscaled_p.
	* config/aarch64/ (atomic_store<mode>): Allow offset
	and use stlur.
	* config/aarch64/ (Ust): New constraint.
	* config/aarch64/
	(aarch64_9bit_offset_memory_operand): New predicate.
	(aarch64_rcpc_memory_operand): New predicate.

2018-09-19  Eric Botcazou  <>

	PR rtl-optimization/87361
	* rtlanal.c (nonzero_bits1): Revert accidental change.

2018-09-19  Richard Biener  <>

	PR tree-optimization/87349
	PR tree-optimization/87342
	* tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation.

2018-09-18  Marek Polacek  <>

	P1064R0 - Allowing Virtual Function Calls in Constant Expressions
	* gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert.

2018-09-18  Segher Boessenkool  <>

	* config/rs6000/ Remove old "Cygnus sibcall" comment.

2018-09-18  Segher Boessenkool  <>

	PR rtl-optimization/86882
	* rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER.

2018-09-18  Uros Bizjak  <>

	* config/i386/ (*<code>extend<mode>xf2): Macroize insn from
	*<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode iterator.

2018-09-18  Jonathan Wakely  <>

	PR other/87353
	* doc/invoke.texi (Link Options): Fix formatting and grammar.

2018-09-18  Richard Biener  <>

	PR middle-end/63155
	* tree-ssa-coalesce.c (tree_int_map_hasher): Remove.
	(compute_samebase_partition_bases): Likewise.
	(coalesce_ssa_name): Always use compute_optimized_partition_bases.
	(gimple_can_coalesce_p): Simplify.

2018-09-18  Hans-Peter Nilsson  <>

	Handle a library implementation of ffs calling __builtin_ffs.
	* config/mmix/mmix.c (TARGET_INIT_LIBFUNCS): Override with...
	(mmix_init_libfuncs): New function: make __builtin_ffs expand
	to __ffsdi2.

2018-09-17  David Malcolm  <>

	* diagnostic-show-locus.c (class layout_range): Add field
	(layout_range::layout_range): Add "original_idx" param and use it
	to initialize new field.
	(make_range): Use 0 for original_idx.
	(layout::layout): Pass in index to calls to
	(layout::maybe_add_location_range): Add param "original_idx" and
	pass it on to layout_range.
	(layout::print_any_labels): Pass on range->m_original_idx to
	get_text call.
	(gcc_rich_location::add_location_if_nearby): Use 0 for
	* gcc-rich-location.h (text_range_label::get_text): Update for new
	(range_label_for_type_mismatch::get_text): Likewise.

2018-09-17  Uros Bizjak  <>

	* config/i386/i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.

2018-09-17  David Malcolm  <>

	* gimple-ssa-sprintf.c (fmtwarn): Update for introduction of
	(fmtwarn_n): Likewise.
	* substring-locations.c
	(format_string_diagnostic_t::format_string_diagnostic_t) New ctor.
	(format_warning_n_va): Convert to...
	(format_string_diagnostic_t::emit_warning_n_va): ...this.
	(format_warning_va): Convert to...
	(format_string_diagnostic_t::emit_warning_va): ...this.
	(format_warning_at_substring): Convert to...
	(format_string_diagnostic_t::emit_warning): ...this.
	(format_warning_at_substring_n): Convert to...
	(format_string_diagnostic_t::emit_warning_n): ...this.
	* substring-locations.h (class format_string_diagnostic_t): New
	(format_warning_va): Convert to
	(format_warning_n_va): Convert to
	(format_warning_at_substring): Convert to
	(format_warning_at_substring_n): Convert to

2018-09-17  Cesar Philippidis  <>
	    Bernd Schmidt  <>

	* config/nvptx/ (atomic_fetch_<logic><mode>): Enable with
	SImode args.

2018-09-17  Uros Bizjak  <>

	* config/i386/ (truncxf<mode>2_i387_noop_unspec): Change
	operand 0 predicate to nonimmediate operand.
	(rint<mode>2_frndint): Remove insn pattern.
	(rint<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate rintxf2 insn.
	(frndintxf2_<rounding>): Rename from frndint<mode>2_<rounding>.
	Do not use X87MODEF mode macro.
	(frndintxf2_<rounding>_i387): Rename from
	frndint<mode>2_<rounding>_i387.  Do not use X87MODEF mode macro.
	(<rounding_insn><mode>2): For non-SSE modes, extend operand 1
	to XFmode and generate significandxf3 insn.

2018-09-17  Richard Biener  <>

	PR tree-optimization/87328
	* tree-ssa-sccvn.c (process_bb): Remove assertion about not
	visiting unexecutable backedges when not iterating.
	(do_rpo_vn): Mark all edges not executable even when not

2018-09-17  Martin Jambor  <>

	PR c/63886
	* doc/invoke.texi (Warning Options): Likewise.

2018-09-17  Richard Biener  <>

	PR tree-optimization/87301
	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly
	clean EH info from leftover copy assignments.

2018-09-17  Martin Liska  <>

	PR gcov-profile/85871
	* gcov.c (output_intermediate_file): Fix out of bounds

2018-09-17  Vineet Gupta  <>

	* config/arc/arc.c: Object attributes for core4 not reflected
	* config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes

2018-09-17  Alexey Brodkin  <>

	* config/arc/linux.h (LINK_EH_SPEC): Add missing space.

2018-09-17  Martin Liska  <>

	* doc/gcov.texi: Document new option --use-hotness-colors.
	* gcov.c (struct source_info): Declare new field.
	(source_info::source_info): Set default for maximum_count.
	(print_usage): Add new -q option.
	(process_args): Process it.
	(accumulate_line_info): Save src->maximum_count.
	(output_line_beginning): Make color line number if
	flag_use_hotness_colors is set.
	(output_line_details): Pass default argument value.
	(output_lines): Pass src->maximum_count.

2018-09-17  Martin Liska  <>

	* common/config/i386/i386-common.c (ix86_get_valid_option_values):
	Use processor_names table.
	* config/i386/i386.c (ix86_default_align): Use
	processor_cost_table for alignment values.
	(ix86_option_override_internal): Use processor_names.
	(ix86_function_specific_print): Likewise.
	* config/i386/i386.h (struct processor_costs):
	Add alignment values.
	(struct ptt): Remove and replace with const char *.
	* config/i386/x86-tune-costs.h (struct processor_costs):
	Declare default alignments for all costs.

2018-09-17  Aldy Hernandez  <>

	* tree-vrp.c (extract_range_from_unary_expr): Do not special case
	symbolics or VR_VARYING ranges for ABS_EXPR.
	* (wide_int_range_abs): Return positive numbers
	when range will wrap.

2018-09-15  Eric Botcazou  <>

	PR middle-end/86864
	* cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER
	before and after a JUMP_TABLE_DATA.

2018-09-14  John David Anglin  <>

	PR middle-end/87188
	* dojump.c (do_compare_and_jump): Canonicalize function pointers
	when one operand is a function pointer.  Use POINTER_TYPE_P and
	* expr.c (do_store_flag): Use POINTER_TYPE_P and FUNC_OR_METHOD_TYPE_P.
	* fold-const.c (build_range_check): Likewise.
	* match.pd (simple_comparison): Likewise.

2018-09-14  David Malcolm  <>

	PR c/82967
	* spellcheck.c (get_edit_distance_cutoff): New function.
	(selftest::test_edit_distance_unit_test_oneway): Rename to...
	(selftest::test_get_edit_distance_one_way): ...this.
	(selftest::test_get_edit_distance_unit): Rename to...
	(selftest::test_get_edit_distance_both_ways): ...this.
	(selftest::test_edit_distances): Move tests to this new function,
	and test some more pairs of strings.  Update for above renaming.
	(selftest::get_old_cutoff): New function.
	(selftest::test_get_edit_distance_cutoff): New function.
	(selftest::assert_suggested_for): New function.
	(selftest::assert_not_suggested_for): New function.
	(selftest::test_suggestions): New function.
	(selftest::spellcheck_c_tests): Move test_get_edit_distance_unit
	tests to selftest::test_edit_distances and call it.  Add calls to
	selftest::test_get_edit_distance_cutoff and
	* spellcheck.h (get_edit_distance_cutoff): New function declaration.
	(best_match::consider): Replace hard-coded cutoff calculation with
	a call to...
	(best_match::get_cutoff): New declaration.
	(best_match::get_best_meaningful_candidate): Likewise.

2018-09-14  Bernd Edlinger  <>

	* builtins.c (fold_builtin_strlen): Remove TODO comment.

2018-09-14  Bernd Edlinger  <>

	2018-07-30  Bernd Edlinger  <>

	* tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
	terminated string literal.

2018-09-14  Martin Sebor  <>

	* builtins.c (unterminated_array): Handle ARRAY_REF.
	(expand_builtin_stpcpy_1): Detect unterminated char arrays.
	* builtins.h (unterminated_array): Declare extern.
	* gimple-fold.c (gimple_fold_builtin_stpcpy): Detect unterminated
	(gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed

2018-09-14  Martin Sebor  <>
	    Jeff Law  <>

	* builtins.c (unterminated_array): New.
	(expand_builtin_strcpy): Adjust.
	(expand_builtin_strcpy_args): Detect unterminated arrays.
	* gimple-fold.c (get_maxval_strlen): Add argument.  Detect
	unterminated arrays.
	* gimple-fold.h (get_maxval_strlen): Add argument.
	(gimple_fold_builtin_strcpy): Detec unterminated arrays.

	* gimple-fold.c (get_range_strlen): Add argument.
	(get_maxval_strlen): Adjust.
	* gimple-fold.h (get_range_strlen): Add argument.

2018-09-14  Wei Xiao  <>

	* config/i386/movdirintrin.h: Fix copyright year.

2018-09-14  Uros Bizjak  <>

	* reg-stack.c: Include regs.h.
	(replace_reg): Assert that mode is MODE_FLOAT or MODE_COMPLEX_FLOAT.
	(emit_pop_insn): Default pop insn mode to the reg_raw_mode of
	(emit_swap_insn): Default swap insn mode to the reg_raw_mode of
	FIRST_STACK_REG, not XFmode.  Explicitly construct swap RTX.
	(change stack): Default register mode to the reg_raw_mode of
	* config/i386/ (*swap<mode>): Remove insn pattern.
	(*swapxf): Rename from swapxf.

2018-09-14  Carl Love  <>

	* config/rs6000/emmintrin.h: Add _MM_SHUFFLE2.
	* config/rs6000/xmmintrin.h: Add _MM_SHUFFLE.

2018-09-14  Segher Boessenkool  <>

	PR target/87224
	* config/rs6000/ (*mov<mode>_hardfloat64): Add Z to the Y

2018-09-14  Sam Tebbs  <>

	PR target/85628
	* config/aarch64/ (*aarch64_bfxilsi_uxtw): Define.

2018-09-14  Jason Merrill  <>

	Fix --enable-gather-detailed-mem-stats.
	* hash-table.c (hash_table_usage): Change from variable to function.
	* hash-table.h: Adjust.
	* Add missing dependencies on hash-table.h.

2018-09-14  Kyrylo Tkachov  <>

	PR tree-optimization/87259
	PR lto/87283
	(pass_cse_reciprocals::execute): Run optimize_recip_sqrt after
	execute_cse_reciprocals_1 has tried transforming.

2018-09-14  Aldy Hernandez  <>

	* tree-vrp.c (extract_range_from_binary_expr_1): Normalize

2018-09-14  Ilya Leoshkevich  <>

	* config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve

2018-09-14  Richard Biener  <>

	PR middle-end/63155
	* tree-ssa-coalesce.c (ssa_conflicts_merge): Remove conflict
	bits for the merged partition.

2018-09-13  Martin Sebor  <>
	    Bernd Edlinger  <>

	* builtins.h (c_srlen): Add argument.
	* builtins.c (warn_string_no_nul): New function.
	(c_strlen): Add argument and use it.  Update recursive calls.
	Pass DECL argument to string_constant to get info on non
	terminated strings.  Update *NONSTR as needed.
	(fold_builtin_strlen): Add argument to calls to c_strlen.
	Warn for unterminated arrays.
	(warn_string_no_null): Add prototype.
	* expr.c (string_constant): Update arguments.  Update recursive
	calls appropriately.  Detect missing NUL terminator and outermost
	declaration its missing in.
	Improve checks for arrays with nonzero lower bound or elements
	that are not a single byte.  Simplify offset computation.
	Simplify checks for non-NUL terminated strings.
	* gimple-fold.c (get_range_strlen): Add argument to c_strlen call.
	* gimple-ssa-sprintf.c (get_string_length): Remove unnecessary code.

2018-09-13  Bernd Edlinger  <>

	* builtins.c (c_strlen): Handle not zero terminated STRING_CSTs
	* fold-const.c (c_getstr): Fix function comment.  Remove unused third
	argument.  Fix range checks.
	* fold-const.h (c_getstr): Adjust protoype.
	* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid folding when
	string is constant but contains no NUL byte.

	* expr.c (string_constant): Adjust function comment.
	Remove bogus check for zero termination.

	* fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE.

	* varasm.c (compare_constant): Compare type size of STRING_CSTs.
	(get_constant_size): Don't make STRING_CSTs larger than they are.
	(check_string_literal): New check function for STRING_CSTs.
	(output_constant): Use it.

2018-09-13  Eric Botcazou  <>

	PR target/86812
	* config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.

2018-09-13  Richard Biener  <>

	PR tree-optimization/87263
	* tree-ssa-sccvn.c (visit_phi): Revert some earlier changes.
	(struct unwind_state): Add max_rpo field.
	(do_rpo_vn): Allow up-to-date loop state to be used when not iterating.
	Compute max_rpo, the max RPO number a block can be backwards reached
	from.  Re-write non-iterating mode to a RPO ordered worklist approach,
	separating it from the iterating mode.

2018-09-13  Vlad Lazar  <>

	* haifa-sched.c (rank_for_schedule): Schedule by INSN_COST.
	(rfs_decision): New scheduling decision.

2018-09-13  Richard Biener  <>

	PR bootstrap/87134
	* tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert.
	(vn_nary_op_insert_pieces_predicated): Do not write useless
	valid_dominated_by_p entry outside of the allocated storage.

2018-09-13  Omar Sandoval  <>
	    Tom de Vries  <>

	PR debug/86985
	* dwarf2out.c (is_c): New function.
	(add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays.

2018-09-13  Sam Tebbs  <>

	PR target/85628
	* config/aarch64/ (*aarch64_bfxil):
	* config/aarch64/ (Ulc): Define.
	* config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p):
	* config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p):
	New function.

2018-09-13  Vlad Lazar  <>

	* config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define.
	* config/aarch64/aarch64.c (aarch64_expand_prologue): Remove
	aarch64_layout_frame call.
	(aarch64_expand_epilogue): Likewise.
	(aarch64_initial_elimination_offset): Likewise.
	(aarch64_get_separate_components): Likewise.
	(aarch64_use_return_insn_p): Likewise.
	(aarch64_layout_frame): Remove unneeded check.

2018-09-13  Jakub Jelinek  <>

	* Only append
	" : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to
	gcc_config_arguments if it was never reconfigured or last reconfigure
	was with different arguments.
	* configure: Regenerated.

2018-09-13  Jakub Jelinek  <>
	    Kyrylo Tkachov  <>

	PR middle-end/87290
	* expr.c (maybe_optimize_pow2p_mod_cmp): New function.
	(maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1.

2018-09-13  Jakub Jelinek  <>

	PR tree-optimization/87287
	* fold-const.c (fold_binary_loc) <case EQ_EXPR>: Move signed modulo
	X % C == 0 to X % (unsigned) C == 0 optimization to ...
	* match.pd (X % C == 0): ... here.  New optimization.

2018-09-12  Jakub Jelinek  <>

	PR middle-end/82853
	* expr.h (maybe_optimize_mod_cmp): Declare.
	* expr.c (mod_inv): New function.
	(maybe_optimize_mod_cmp): New function.
	(do_store_flag): Use it.
	* cfgexpand.c (expand_gimple_cond): Likewise.

2018-09-09  Cesar Philippidis  <>
	    Julian Brown  <>

	PR middle-end/86336
	* gimplify.c (gimplify_scan_omp_clauses): Set
	target_firstprivatize_array_bases in OpenACC parallel and kernels
	region contexts.  Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from
	OpenACC data regions.

2018-09-12  Uros Bizjak  <>

	* config/i386/ (sqrt_extend<mode>xf3_i387): Remove.
	(sqrt<mode>2): Extend operand 1 to XFmode and generate sqrtxf3 insn.

2018-09-12  Richard Biener  <>

	PR tree-optimization/87280
	* tree-ssa-sccvn.c (process_bb): Handle the case of executable
	edge but unreachable target.
	(do_rpo_vn): For conservatively handling a PHI only mark
	the backedge executable but not the block reachable.

2018-09-12  Richard Biener  <>

	PR tree-optimization/87266
	* tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet
	visited blocks.

2018-09-12  Andreas Krebbel  <>

	* config/s390/ (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New
	("extend<DFP_ALL:mode><BFP:mode>2"): Set proper rounding mode
	according to the target operand type.

2018-09-12  Jakub Jelinek  <>
	    Andreas Krebbel  <>

	PR tree-optimization/86844
	* gimple-ssa-store-merging.c
	(imm_store_chain_info::coalesce_immediate): For overlapping stores, if
	there are any overlapping stores in between them, make sure they are
	also coalesced or we give up completely.

2018-09-12  Jakub Jelinek  <>

	PR middle-end/87248
	* fold-const.c (fold_ternary_loc) <case COND_EXPR>: Verify also that
	BIT_AND_EXPR's second operand is a power of two.  Formatting fix.

2018-09-12  Tom de Vries  <>

	* common.opt (gdescribe-dies): Add option.
	* dwarf2out.c (add_name_and_src_coords_attributes): Add description
	attribute for artifical and nameless decls.
	(dwarf2out_register_external_die): Add description attribute to
	external reference die.
	(add_desc_attribute): New functions.
	(gen_subprogram_die): Add description attribute to
	* tree-pretty-print.c (print_generic_expr_to_str): New function.
	* tree-pretty-print.h (print_generic_expr_to_str): Declare.
	* doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and
	(@item -gdescribe-dies): Add.

2018-09-12  Aldy Hernandez  <>

	* tree-vrp.c (vrp_shift_undefined_p): Remove.
	(extract_range_from_binary_expr_1: Call
	wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p.
	* wide-int-range.h (wide_int_range_shift_undefined_p): Do not
	depend on sign.

2018-09-12  Aldy Hernandez  <>

	* gimple-ssa-warn-alloca.c
	(alloca_type_and_limit::alloca_type_and_limit): Initialize limit
	field for ALLOCA_BOUND_*_LARGE.

2018-09-11  Nathan Sidwell  <>

	* gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'.

2018-09-11  Uros Bizjak  <>

	* reg-stack.c (subst_asm_stack_regs): Call replace_reg also
	for clobbers.  Remove obsolete comment.

2018-09-11  Uros Bizjak  <>

	* config/i386/ (define_attr "type"): Remove mpxmov, mpxmk,
	mpxchk, mpxld and mpxst types.
	(define_attr length_immediate): Remove all processing of mpx types.
	(define_attr prefix_0f): Ditto.
	(define_attr memory): Ditto.

2018-09-11  Uros Bizjak  <>

	* config/i386/ (fyl2x_extend<mode>xf3_i387): Remove.
	(log<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate logxf3 insn.
	(log10<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate log10xf3 insn.
	(log2<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate log2xf3 insn.
	(fyl2xp1_extend<mode>xf3_i387): Remove.
	(log1p<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate log1pxf3 insn.
	(fxtract_extend<mode>xf3_i387): Remove.
	(logb<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate logbxf3 insn.
	(ilogb<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate fxtractxf3_i387 insn.
	(significand<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate significandxf3 insn.

2018-09-11  Nathan Sidwell  <>

	* gcc.c (perror_with_name, pfatal_with_name): Delete.
	(load_specs): Use fatal_error.
	(DELETE_IF_ORDINARY, process_command): Use error.
	(execute, run_attempt): Use fatal_error.

2018-09-11  Andrew Stubbs  <>

	* diagnostic-core.h (sorry_at): New prototype.
	* diagnostic.c (sorry_at): New function.

2018-09-11  Aldy Hernandez  <>

	* tree-vrp.c (extract_range_from_binary_expr_1): Treat all divisions
	by zero as VR_UNDEFINED.

2018-09-10  Uros Bizjak  <>

	* config/i386/ (<sincos>xf2): Rename from *<sincos>xf2_i387.
	(*<sincos>_extend<mode>xf2_i387): Remove insn pattern.
	(<sincos>mode2): New expander.
	(sincos_extend<mode>xf3_i387): Remove insn pattern.
	(sincos -> sin, cos splitters): Remove splitter patterns.
	(sincos<mode>3): Change operand 2 predicate to general_operand.
	Extend operand 2 to XFmode and generate sincosxf3 insn.
	(fptanxf4_i387): Change mode of operands 0 and 3 to SFmode.
	Change operand 3 predicate to const1_operand.
	(fptan_extend<mode>xf4_i387): Remove insn pattern.
	(tanxf2): Update operands in the call to fptanxf4_i387.
	(tan<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate tanxf3 insn.
	(atan2xf3): Rename from *fpatanxf3_i387.
	(fpatan_extend<mode>xf3_i387): Remove insn pattern.
	(atan2xf3): Remove expander.
	(atan2<mode<3):  Change operand 1 and 2 predicates to general_operand.
	Extend operands 1 and 2 to XFmode and generate atan2xf3 insn.
	(atan<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate atanxf3 insn.

2018-09-10  Uros Bizjak  <>

	* config/i386/ (x87/SSE constant load splitter): Use
	memory_operand instead of nonimmediate_operand for input operand

2018-09-09  Uros Bizjak  <>

	* config/i386/ (float partial SSE register stall splitter): Move
	splitter near its instruction pattern.
	(float_extend partial SSE register stall splitter): Ditto.
	(float_truncate partial SSE register stall splitter): Ditto.

2018-09-09  Hans-Peter Nilsson  <>

	PR target/86794
	* config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
	to speculation_safe_value_not_needed.

	PR target/85666
	* config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size
	non-CONST_INT rtx:es using assemble_integer_with_op ".byte".
	leaf_function_p, instead use has_hard_reg_initial_val.

2018-09-09  Nathan Sidwell  <>

	* gcc.h (pfatal_with_name): Don't declare here.
	* gcc.c (pfatal_with_name): Make static.

2018-09-09  Xianmiao Qu  <>

	* config/csky/ (*cskyv2_adddi3, *cskyv2_subdi3): Add

2018-09-08  John David Anglin  <>

	PR rtl-optimization/85458
	* sel-sched.c (sel_target_adjust_priority): Allow backend adjust
	priority hook to reduce the priority of EXPR.

2018-09-07  Uros Bizjak  <>

	* config/i386/ (float<SWI48x:mode><MODEF:mode>2) Enable
	DImode for x87 on 32bit targets.  Conditionally disable x87 modes
	with X87_ENABLE_FLOAT.  Remove preparation code.
	(*float<SWI48:mode><MODEF:mode>2): Rename from
	*float<SWI48:mode><MODEF:mode>2_mixed.  Handle x87, SSE and mixed
	math using "enabled" attribute.
	(*floatdi<MODEF:mode>2_i387): Rename from
	*float<SWI48x:mode><MODEF:mode>2_i387.  Handle only DImode and
	enable for 32bit targets only.
	(floatdi<X87MODEF:mode>2_i387_with_xmm pre-reload splitter): New
	(floatdi<X87MODEF:mode>2_i387_with_xmm): Use register_operand
	as operand 1 predicate.  Rewrite as define_insn_and_split.
	(floatdi<X87MODEF:mode>2_i387_with_xmm memory input splitter): Remove.

2018-09-06  Uros Bizjak  <>

	* reg-stack.c (get_true_reg) <case FLOAT_TRUNCATE>: Reorder
	to fallthru to FLOAT case.

2018-09-06  Will Schmidt  <>

	PR target/86731
	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Update logic
	around folding of vec_sl to handle out of range shift values.

2018-09-06  Uros Bizjak  <>

	* config/i386/ (fix_trunc<mode>_fisttp_i387_1): Remove.
	Update callers to gen_fix_trunc<mode>_i387_fisttp
	(fix_trunc<mode>_i387_fisttp): Change operand 0 predicate to
	(fix_trunc<mode>_i387_fisttp_with_temp): Remove insn pattern
	and corresponding splitters.
	(*fix_trunc<mode>_i387_1): Always expand with fix_trunc<mode>_i387.
	(fix_truncdi_i387): Change operand 0 predicate to nonimmediate_operand.
	(fix_truncdi_i387_with_temp): Remove insn pattern
	and corresponding splitters.
	(fix_trunc<mode>_i387): Change operand 0 predicate to
	(fix_trunc<mode>_i387_with_temp): Remove insn pattern
	and corresponding splitters.
	(*fistdi2_1): Remove.
	(fistdi2): Ditto.
	(fistdi2_with_temp): Remove insn pattern and corresponding splitters.
	(lrintxfdi2): Remove expander.  Reimplement as define_insn.
	(*fist<mode>2_1): Remove.
	(fist<mode>2): Ditto.
	(fist<mode>2_with_temp): Remove insn pattern and corresponding
	(lrintxf<mode>2): Remove expander.  Reimplement as define_insn.
	(*fist<mode>2_<rounding>_1): Always expand with fist<mode>2_<rounding>.
	(fistdi2_<rounding>): Change operand 0 predicate to
	(fistdi2_<rounding>_with_temp): Remove insn pattern
	and corresponding splitters.
	(fist<mode>2_<rounding>): Change operand 0 predicate to
	(fist<mode>2_<rounding>_with_temp): Remove insn pattern
	and corresponding splitters.

	(*fixuns_trunc<mode>si2_avx512f_zext): Depend on TARGET_SSE_MATH.

2018-09-06  Bernd Edlinger  <>

	* varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of
	the init value.

2018-09-06  Will Schmidt  <>

	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
	early gimple folding of vec_splat().
	* tree-vect-generic.c: Remove static from tree_vec_extract() definition.
	* gimple-fold.h: Add an extern define for tree_vec_extract().

2018-09-06  Will Schmidt  <>

	* config/rs6000/rs6000.c (fold_mergehl_helper): Add types_compatible_p
	wrappers around TREE_TYPE comparisons.

2018-09-06  Ilya Leoshkevich  <>

	PR target/80080
	* config/s390/ Add nonsym_memory_operand.
	* config/s390/s390.c (s390_legitimize_cs_operand): If operand
	contains a SYMBOL_REF, load it into an intermediate pseudo.
	(s390_emit_compare_and_swap): Legitimize operand.
	* config/s390/ Use the new nonsym_memory_operand
	with UNSPECV_CAS patterns.

2018-09-06  Ilya Leoshkevich  <>

	PR target/80080
	* config/s390/s390-passes.def: New file.
	* config/s390/s390-protos.h (class rtl_opt_pass): Add forward
	(make_pass_s390_early_mach): Add declaration.
	* config/s390/s390.c (make_pass_s390_early_mach):
	(s390_option_override): Remove dynamic registration.
	* config/s390/t-s390: Add s390-passes.def.

2018-09-06  Ilya Leoshkevich  <>

	* config/s390/s390.c (s390_decompose_constant_pool_ref):
	Remove UNSPEC_LTREL_BASE check.
	(annotate_constant_pool_refs): Likewise.
	(find_constant_pool_ref): Likewise.
	(find_ltrel_base): Removed.
	(replace_ltrel_base): Removed.
	(s390_mainpool_finish): Remove replace_ltrel_base call.
	(s390_chunkify_start): Remove pending LTREL_BASE logic.
	(s390_chunkify_finish): Remove replace_ltrel_base call.
	* config/s390/ Remove UNSPEC_LTREL_BASE.

2018-09-06  Hans-Peter Nilsson  <>

	PR target/86779
	* config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
	to speculation_safe_value_not_needed.

2018-09-05  Cesar Philippidis  <>
	    Bernd Schmidt  <>

	* config/nvptx/nvptx-opts.h: New file.
	* config/nvptx/nvptx.c (nvptx_file_start): Print the correct .target.
	* config/nvptx/nvptx.h: Include "nvptx-opts.h".
	(ASM_SPEC): Define.
	(TARGET_SM35): New macro.
	* config/nvptx/ (atomic_fetch_<logic><mode>): Enable with the
	correct predicate.
	* config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its
	(misa=): New option.
	* doc/invoke.texi (Nvidia PTX Options): Document -misa.

2018-09-05  Uros Bizjak  <>

	* config/i386/ (truncdfsf2): Remove expander.
	(truncdfsf2_with_temp): Ditto.
	(truncxf<mode>2): Ditto.
	(*truncdfsf_fast_mixed): Remove insn pattern.
	(*truncdfsf_fast_i387): Ditto.
	(*truncdfsf_mixed): Ditto.
	(*truncdfsf_i387): Ditto.
	(*truncdfsf2_i387_1): Ditto.
	(*truncxfsf2_mixed): Ditto.
	(*truncxfdf2_mixed): Ditto.
	(*truncxf<mode>2_i387_noop): Ditto. Update callers
	to call gen_truncxf<mode>2 instead.
	(*truncxf<mode>2_i387): Remove.
	(reg->reg splitters): Remove splitter pattern.
	(reg->mem splitters): Ditto.

	(truncdfsf2): New insn pattern.
	(truncxf<mode>2): Ditto.

2018-09-05  Kyrylo Tkachov  <>

	* tree-ssa-math-opts.c (is_mult_by): New function.
	(is_square_of): Use the above.
	(optimize_recip_sqrt): New function.
	(pass_cse_reciprocals::execute): Use the above.

2018-09-05  Richard Biener  <>

	PR bootstrap/87134
	* tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure
	to zero-init the emplaced vec.

2018-09-05  Martin Liska  <>

	PR tree-optimization/87205
	* tree-switch-conversion.c (pass_lower_switch::execute):
	Group cases for switch statements.

2018-09-05  Richard Biener  <>

	PR tree-optimization/87217
	* tree-ssa-sccvn.c (vuse_valueize): New.
	(vn_reference_lookup_pieces): Use it.
	(vn_reference_lookup): Likewise.

2018-09-05  Nathan Sidwell  <>

	PR c++/87137
	* stor-layout.c (place_field): Scan forwards to check last
	bitfield when ms_bitfield_placement is in effect.

2018-09-05  Richard Biener  <>

	PR bootstrap/87225
	* tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus

2018-09-05  Siddhesh Poyarekar  <>
	    Kugan Vivekanandarajah  <>

	* config/aarch64/falkor-tag-collision-avoidance.c: New file.
	* config.gcc (extra_objs): Build it.
	* config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o):
	* config/aarch64/aarch64-passes.def
	(pass_tag_collision_avoidance): New pass.
	* config/aarch64/aarch64.c (qdf24xx_tunings): Add
	(aarch64_classify_address): Remove static qualifier.
	(aarch64_address_info, aarch64_address_type): Move to...
	* config/aarch64/aarch64-protos.h: ... here.
	(make_pass_tag_collision_avoidance): New function.
	* config/aarch64/aarch64-tuning-flags.def (rename_load_regs):
	New tuning flag.

2018-09-05  Martin Liska  <>

	* doc/gcov.texi: Update documentation of humar
	readable mode.
	* gcov.c (format_count): Print one decimal place, it provides
	more fine number of situations like '1G' vs. '1.4G'.

2018-09-05  Martin Liska  <>

	PR target/87164
	* config/rs6000/rs6000.opt: Mark the option as Deprecated.
	* optc-gen.awk: Allow 'Var' for Deprecated options in order
	to generate a MASK value.

2018-09-04  H.J. Lu  <>

	PR debug/86593
	* dwarf2out.c (based_loc_descr): Allow hard frame pointer even
	if frame pointer isn't used.
	(compute_frame_pointer_to_fb_displacement): Likewise.

2018-09-04  Jakub Jelinek  <>

	PR target/87198
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET,

2018-09-04  Max Filippov  <>

	* config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
	XOR operations in NAND case.

2018-09-04  Aldy Hernandez  <>

	* (wide_int_range_convert): New.
	* wide-int-range.h (wide_int_range_convert): New.
	* tree-vrp.c (extract_range_from_unary_expr): Abstract wide int
	code into wide_int_range_convert.
	(extract_range_into_wide_ints): Do not munge anti range constants
	into the entire domain.  Just return the range back.

2018-09-04  Martin Liska  <>

	* genmatch.c (output_line_directive): Add new argument
	(dt_simplify::gen_1): Encapsulate dump within __builtin_expect.

2018-09-04  Jonathan Wakely  <>

	* doc/invoke.texi (Option Summary): Add whitespace.

	* doc/invoke.texi (Option Summary): Add -Waligned-new.

2018-09-04  Richard Biener  <>

	PR tree-optimization/87211
	* tree-ssa-sccvn.c (visit_phi): When value-numbering to a
	backedge value we're supposed to treat as VARYING also number
	the PHI to VARYING in case it got a different value-number already.

2018-09-04  Aldy Hernandez  <>

	* tree-vrp.c (vrp_can_optimize_bit_op): Remove.
	(extract_range_from_binary_expr_1): Do not call
	* (wide_int_range_can_optimize_bit_op): Make
	(wide_int_range_get_mask_and_bounds): New.
	(wide_int_range_optimize_bit_op): New.
	(wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op.
	(wide_int_range_bit_and): Same.
	* wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove.
	(wide_int_range_optimize_bit_op): New.
	(wide_int_range_get_mask_and_bounds): New.

2018-09-04  Richard Biener  <>

	PR tree-optimization/87176
	* tree-ssa-sccvn.c (visit_phi): Remove redundant allsame
	variable.  When value-numbering a virtual PHI node make sure
	to not value-number to the backedge value.

2018-09-04  Jonathan Wakely  <>

	* doc/extend.texi (Long Long, Hex Floats): Document support for
	long long and hex floats in more recent versions of ISO C++.

2018-09-03  Richard Biener  <>

	PR tree-optimization/87177
	* tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep

2018-09-03  Alexander Monakov  <>

	* bb-reorder.c (edge_order): Convert to C-qsort-style
	tri-state comparator.
	(reorder_basic_blocks_simple): Change std::stable_sort to

2018-09-03  Alexander Monakov  <>

	* tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style
	tri-state comparator.
	(fuse_memset_builtins): Change std::stable_sort to gcc_stablesort.

2018-09-03  Alexander Monakov  <>

	* (struct sort_ctx): New field 'nlim'.  Use it...
	(mergesort): ... here as maximum count for using netsort.
	(gcc_qsort): Set nlim to 3 if stable sort is requested.
	(gcc_stablesort): New.
	* system.h (gcc_stablesort): Declare.

2018-09-03  Alexander Monakov  <>

	* (gcc_qsort) [CHECKING_P]: Call qsort_chk.
	* system.h (qsort): Always redirect to gcc_qsort.  Update comment.
	* vec.c (qsort_chk): Do not call gcc_qsort.  Update comment.

2018-09-03  Segher Boessenkool  <>

	* config/rs6000/ (*mov<mode>_hardfloat32): Remove %U from the
	lxsdx and stxsdx alternatives.
	(*mov<mode>_hardfloat64): Ditto.
	* config/rs6000/ (*vsx_extract_<mode>_store): Ditto.

2018-09-03  Richard Biener  <>

	PR tree-optimization/87200
	* tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Valueize a
	simplify result.

2018-09-03  Martin Liska  <>

	PR tree-optimization/87201
	* tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
	Fix parenthesis in an expression.

2018-09-03  Richard Biener  <>

	PR tree-optimization/87197
	* tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Mark the new def
	visited.  CSE the VN_INFO hashtable lookup.

	PR tree-optimization/87169
	* tree-ssa-sccvn.c (do_rpo_vn): When marking loops for not
	iterating make sure there's no extra backedges from irreducible
	regions feeding the header.  Mark the destination block

2018-09-03  Martin Liska  <>

	PR driver/83193
	* common/common-target.def: Add TARGET_GET_VALID_OPTION_VALUES.
	* common/common-targhooks.c (default_get_valid_option_values):
	New function.
	* common/common-targhooks.h (default_get_valid_option_values):
	* common/config/i386/i386-common.c: Move processor_target_table
	from i386.c.
	(ix86_get_valid_option_values): New function.
	* config/i386/i386.c (struct ptt): Move to i386-common.c.
	(PTA_*): Move all defined masks into i386-common.c.
	(ix86_function_specific_restore): Use new processor_cost_table.
	* config/i386/i386.h (struct ptt): Moved from i386.c.
	(struct pta): Likewise.
	* doc/tm.texi: Document new TARGET_GET_VALID_OPTION_VALUES.
	* doc/ Likewise.
	* opt-suggestions.c (option_proposer::suggest_option):
	Pass prefix to build_option_suggestions.
	(option_proposer::get_completions): Likewise.
	(option_proposer::build_option_suggestions): Use the new target
	* opts.c (struct option_help_tuple): New struct.
	(print_filtered_help): Use the new target hook.

2018-09-03  Martin Liska  <>

	PR middle-end/59521
	* predict.c (set_even_probabilities): Add likely_edges
	argument and handle cases where we have precisely one
	likely edge.
	(combine_predictions_for_bb): Catch also likely_edges.
	(tree_predict_by_opcode): Handle gswitch statements.
	* tree-cfg.h (find_case_label_for_value): New declaration.
	(find_taken_edge_switch_expr): Likewise.
	* tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
	Find pivot in decision tree based on probabily, not by number of

2018-09-02  Gerald Pfeifer  <>

	* doc/standards.texi (Standards): Update Objective-C reference.

2018-09-01  Gerald Pfeifer  <>

	* doc/install.texi (Prerequisites): Update link for MPC.

2018-09-01  Michael Matz  <>

	PR tree-optimization/87074
	* gimple-loop-jam.c (unroll_jam_possible_p): Check loop exit
	PHIs for outer-loop uses.

2018-09-01  Gerald Pfeifer  <>

	* doc/generic.texi (OpenMP): Adjust link to
	* doc/invoke.texi (C Dialect Options): Ditto.

2018-09-01  Gerald Pfeifer  <>

	* doc/install.texi (Prerequisites): Adjust link

2018-08-31  Richard Biener  <>

	PR tree-optimization/87168
	* tree-ssa-sccvn.c (SSA_VAL): Add visited output parameter.
	(rpo_elim::eliminate_avail): When OP was not visited it must
	be available.

2018-08-31  David Malcolm  <>

	* tree-vrp.c (copy_value_range): Convert param "from" from
	"value_range *" to "const value_range *".
	(range_is_null): Likewise for param "vr".
	(range_int_cst_p): Likewise.
	(range_int_cst_singleton_p): Likewise.
	(symbolic_range_p): Likewise.
	(value_ranges_intersect_p): Likewise for both params.
	(value_range_nonnegative_p): Likewise for param "vr".
	(value_range_constant_singleton): Likewise.
	(vrp_set_zero_nonzero_bits): Likewise for param "ar".
	(extract_range_into_wide_ints): Likewise for param "vr".
	(extract_range_from_multiplicative_op): Likewise for params "vr0"
	and "vr1".
	(vrp_can_optimize_bit_op): Likewise.
	(extract_range_from_binary_expr_1): Likewise for params "vr0_" and
	(extract_range_from_unary_expr): Likewise.
	(debug_value_range): Likewise for param "vr".
	(value_range::dump): Add "const" qualifier.
	(vrp_prop::check_array_ref): Convert local "vr" from
	"value_range *" to "const value_range *".
	(vrp_prop::check_mem_ref): Likewise.
	(vrp_prop::visit_stmt): Likewise for local "old_vr".
	(vrp_intersect_ranges_1): Likewise for param "vr_1".
	(vrp_intersect_ranges): Likewise.
	(simplify_stmt_for_jump_threading): Likewise for local "vr".
	(vrp_prop::vrp_finalize): Likewise.
	* tree-vrp.h (value_range::dump): Add "const" qualifier.
	(vrp_intersect_ranges): Add "const" qualifier to params as above.
	(extract_range_from_unary_expr): Likewise.
	(value_range_constant_singleton): Likewise.
	(symbolic_range_p): Likewise.
	(copy_value_range): Likewise.
	(extract_range_from_binary_expr_1): Likewise.
	(range_int_cst_p): Likewise.
	(vrp_set_zero_nonzero_bits): Likewise.
	(range_int_cst_singleton_p): Likewise.

2018-08-31  Vlad Lazar  <>

	* config/aarch64/arm_neon.h (vabsd_s64): New.
	(vnegd_s64): Likewise.

2018-08-31  Martin Jambor  <>

	* ipa-cp.c (estimate_local_effects): Replace wrong MAX with MIN.

2018-08-31  Martin Liska  <>

	* ipa-icf.c (sem_item::add_type): Use
	* ipa-icf.h: Move the cache from sem_item_optimizer
	to sem_item.

2018-08-31  Nathan Sidwell  <>

	* doc/extend.texi (Backwards Compatibility): Remove implicit
	extern C leeway of () being (...).

2018-08-31  Kyrylo Tkachov  <>

	* ipa-inline.c (can_inline_edge_by_limits_p): Fix typos in comment.

2018-08-31  Segher Boessenkool  <>

	PR target/86684
	PR target/87149
	* config/rs6000/ (lround<mode>di2): Gate on TARGET_FPRND.

2018-08-31  Jakub Jelinek  <>

	PR middle-end/87138
	* expmed.c (expand_mult_const): Use immed_wide_int_const instead of
	gen_int_mode.  Formatting fixes.

2018-08-30  Sandra Loosemore  <>

	* target.def (custom_function_descriptors): Improve documentation.
	* doc/ (Trampolines): Expand discussion of function
	descriptors and move TARGET_CUSTOM_FUNCTION_DESCRIPTORS to the
	beginning of the section.
	* doc/tm.texi: Regenerated.

2018-08-30  Jose E. Marchesi  <>

	* cfg.h (class auto_edge_flag): Spell out the template-id of the
	base class in the initializer list.  This is a workaround for
	building with older GCC.
	(class auto_bb_flag): Likewise.

2018-08-30  Aaron Sawdey  <>

	* config/rs6000/ (altivec_eq<mode>): Remove star.
	(altivec_vcmpequ<VI_char>_p): Remove star.
	* config/rs6000/rs6000-string.c (do_load_for_compare): Support
	vector load modes.
	(expand_strncmp_vec_sequence): New function.
	(emit_final_str_compare_vec): New function.
	(expand_strn_compare): Add support for vector strncmp.
	* config/rs6000/rs6000.opt (-mstring-compare-inline-limit): Change
	length specification to bytes.
	* config/rs6000/ (vsx_ld_elemrev_v16qi_internal): Remove star.
	(vcmpnezb_p): New pattern.
	* doc/invoke.texi (RS/6000 and PowerPC Options): Update documentation
	for option -mstring-compare-inline-limit.

2018-08-30  Thiago Macieira  <>

	* config/i386/i386.c (PTA_WESTMERE): Remove PTA_AES.
	(PTA_GOLDMONT): Likewise.

2018-08-29  Jan Hubicka  <>

	PR lto/86517
	* lto-opts.c (lto_write_options): Always stream PIC/PIE mode.
	* lto-wrapper.c (merge_and_complain): Fix merging of PIC/PIE.

2018-08-29  Jan Hubicka  <>

	* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not follow
	(hash_tree): Do not visit TYPE_STUB_DECL.
	* tree-streamer-out.c (write_ts_type_common_tree_pointers): Do not
	* tree-streamer-in.c (lto_input_ts_type_common_tree_pointers): Likewise.
	* ipa-utils.h (type_with_linkage_p): Do not rely on TYPE_STUB_DECL
	after free_lang_data.
	(type_in_anonymous_namespace_p): Likewise.

2018-08-29  Jan Hubicka  <>

	* sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
	comment that it has to be even number.
	(class sreal): Change m_sig type to int32_t.
	* sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
	int64_t for temporary calculations.
	(sreal_verify_basics): Drop one bit from minimum and maximum.

2018-08-30  Richard Biener  <>

	PR tree-optimization/87147
	* tree-ssa-sccvn.c (SSA_VISITED): New function.
	(visit_phi): When the degenerate result is from the backedge and
	we didn't visit its definition yet drop to VARYING.
	(do_rpo_vn): Properly mark blocks with incoming backedges as executable.

2018-08-29  Jan Hubicka  <>

	* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not walk
	(hash_tree): Likewise.

2018-08-29  Jan Hubicka  <>

	* tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO

2018-08-29  Jan Hubicka  <>

	* sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
	comment that it has to be even number.
	(class sreal): Change m_sig type to int32_t.
	* sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
	int64_t for temporary calculations.
	(sreal_verify_basics): Drop one bit from minimum and maximum.

2018-08-30  Tamar Christina  <>

	* config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max.

2018-08-30  Vlad Lazar  <>

	PR middle-end/86995
	* expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add
	if to_add is negative.

2018-08-29  Bernd Edlinger  <>

	PR middle-end/87053
	* builtins.c (c_strlen): Improve range checks.

2018-08-29  Martin Sebor  <>
	    Jeff Law  <>

	PR tree-optimization/86714
	PR tree-optimization/86711
	* builtins.c (c_strlen): Add arguments to call to string_constant.
	* expr.c (string_constant): Add argument.  Detect missing nul
	terminator and outermost declaration it's missing in.
	* expr.h (string_constant): Add argument.
	* fold-const.c (read_from_constant_string): Add arguments to call to
	(c_getstr): Likewise.
	* tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
	to string_constant.
	* tree-ssa-strlen.c (get_stridx): Likewise.

2018-08-29  Jan Hubicka  <>

	* tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
	Do not stream DECL_VINDEX.
	* tree-streamer-out.c (write_ts_function_decl_tree_pointers): Likewise.
	* tree.c (free_lang_data_in_decl): Clear DECL_VINDEX.
	(decl_function_context): Use DECL_VIRTUAL_P rather than DECL_VINDEX.

2018-08-29  Richard Biener  <>

	* tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited
	virtual operands that are not default defs to honor region
	(rpo_vn_valueize): Remove ineffective code here.

2018-08-29  Richard Biener  <>

	PR tree-optimization/87132
	* tree-ssa-alias.c (get_continuation_for_phi): Do not translate
	when skipping defs reachable over backedges.

2018-08-29  Richard Biener  <>

	* tree-core.h: Document use of deprecated_flag in SSA_NAME.
	* tree-into-ssa.c (pass_build_ssa::execute): Initialize
	function parameters SSA_NAME_POINTS_TO_READONLY_MEMORY from fnspec.
	* tree-ssa-sccvn.c (const_parms, init_const_parms): Remove.
	(vn_reference_lookup_3): Remove use of const_parms.
	(free_rpo_vn): Do not free const_parms.
	(do_rpo_vn): Do not call init_const_parms.
	* tree-ssa-alias.c (refs_may_alias_p_1): Honor
	(call_may_clobber_ref_p_1): Likewise.

2018-08-29  Alexander Monakov  <>

	PR other/86726
	* invoke.texi (Optimization Options): List -ftree-scev-cprop.
	(-O): Ditto.
	(-ftree-scev-cprop): Document.

2018-08-29  Jan Hubicka  <>

	* sreal.h (normalize, normalize_up, normalize_down): Add new_sig/new_exp
	(sreal constructor): Update.
	* sreal.c (sreal:operator+, sreal:operator-, sreal:operator*,
	sreal:operator/): Update.

2018-08-29  Martin Liska  <>

	* tree-switch-conversion.c (switch_conversion::expand):
	Strenghten assumption about gswitch statements.

2018-08-29  Richard Biener  <>

	PR tree-optimization/87117
	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only
	re-value-number released SSA VDEFs.

2018-08-29  Richard Biener  <>

	PR tree-optimization/87126
	* tree-ssa-sccvn.c (vn_reference_insert): Remove assert.

2018-08-28  Jim Wilson  <>

	* config/riscv/ Rewrite.
	* config/riscv/riscv.c (riscv_address_insns): Return cost of 3 for
	invalid address.
	* config/riscv/ (ZERO_EXTEND_LOAD): Delete.
	(SOFTF, default_load, softload, softstore): New.

2018-08-28  Jeff Law  <>

	* fold-const.c (fold_binary_loc): Remove recently added assert.

2018-08-28  Joern Rennecke  <>

	* genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED
	to OP parmeter of generated function.

2018-08-28  MCC CS  <>

	PR tree-optimization/87009
	* match.pd: Add boolean optimizations.

2018-08-28  Martin Sebor  <>

	PR middle-end/86631
	* calls.c (alloc_max_size): Treat HOST_WIDE_INT special.
	* gimple-ssa-warn-alloca.c (adjusted_warn_limit): New function.
	(pass_walloca::gate): Use it.
	(alloca_call_type): Same.
	(pass_walloca::execute): Same.
	* stor-layout.c (layout_decl): Treat HOST_WIDE_INT special.

2018-08-28  David Malcolm  <>

	* dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): Change version check on
	GCC_VERSION for usage of "__gcc_dump_printf__" format from
	>= 3005 to >= 9000.

2018-08-28  Richard Biener  <>

	PR tree-optimization/87124
	* tree-ssa-sccvn.c (vn_lookup_simplify_result): Guard against
	constants before looking up avail.

2018-08-28  Jakub Jelinek  <>

	PR middle-end/87099
	* calls.c (maybe_warn_nonstring_arg): Punt early if
	warn_stringop_overflow is zero.  Don't call get_range_strlen
	on 3rd argument, keep iterating until lenrng[1] is INTEGER_CST.
	Swap comparison operands to have constants on rhs.  Only use
	lenrng[1] if non-NULL and INTEGER_CST.  Don't uselessly
	increment lenrng[0].

2018-08-28  Richard Sandiford  <>

	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Fix unguarded
	use of tree_to_shwi.  Remove duplicated test for the size being
	a whole number of bytes.

2018-08-28  Richard Biener  <>

	PR tree-optimization/87117
	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup):
	Handle removed stmt without LHS (GIMPLE_NOP).

2018-08-28  Richard Biener  <>

	PR tree-optimization/87117
	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude
	void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P.

2018-08-28  Richard Biener  <>

	PR tree-optimization/87117
	* tree-ssa-pre.c (compute_avail): Do not make expressions
	with predicated values available.
	(get_expr_value_id): Assert we do not run into predicated value

2018-08-28  Richard Biener  <>

	PR tree-optimization/87117
	* tree-ssa-operands.c (add_stmt_operand): STRING_CST may
	get virtual operands.
	(get_expr_operands): Handle STRING_CST like other decls.

2018-08-28  Martin Liska  <>

	* tree.h: Update documentation of fndecl_built_in_p

2018-08-27  Jeff Law  <>
	PR tree-optimization/87110
	* tree-ssa-dse.c (compute_trims): Handle non-constant

2018-08-27  Martin Sebor  <>

	PR tree-optimization/86914
	* tree-ssa-strlen.c (maybe_set_strlen_range): Avoid MEM_REF.

2018-08-27  Martin Sebor  <>

	PR tree-optimization/87112
	* builtins.c (expand_builtin_strnlen): Convert c_strlen result to
	the type of the bound argument.

2018-08-27  Jeff Law  <>

	* tree-ssa-dse.c (compute_trims): Handle case where the reference's
	type does not have a TYPE_SIZE_UNIT.

2018-08-27  Steve Ellcey  <>

	* config/aarch64/ Replace include of cfg.h
	with include of backend.h.

2018-08-27  Richard Biener  <>

	PR tree-optimization/86927
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Properly
	use const cond reduction code.

2018-08-27  Alexander Monakov  <>

	PR tree-optimization/85758
	* match.pd ((X & Y) ^ Y): Add :s qualifier to inner expression.

2018-08-27  David Malcolm  <>

	PR c++/87091
	* diagnostic-show-locus.c (class layout_range): Update for
	conversion of show_caret_p to a tri-state.
	(layout_range::layout_range): Likewise.
	(make_range): Likewise.
	(layout::maybe_add_location_range): Likewise.
	(layout::should_print_annotation_line_p): Don't show annotation
	lines for ranges that are SHOW_LINES_WITHOUT_RANGE.
	(layout::get_state_at_point): Update for conversion of
	show_caret_p to a tri-state.  Bail out early for
	SHOW_LINES_WITHOUT_RANGE, so that such ranges don't affect
	underlining or source colorization.
	(gcc_rich_location::add_location_if_nearby): Update for conversion
	of show_caret_p to a tri-state.
	(selftest::test_one_liner_multiple_carets_and_ranges): Likewise.
	(selftest::test_one_liner_labels): Likewise.
	* gcc-rich-location.c (gcc_rich_location::add_expr): Update for
	conversion of show_caret_p to a tri-state.
	* pretty-print.c (text_info::set_location): Likewise.
	* pretty-print.h (text_info::set_location): Likewise.
	* substring-locations.c (format_warning_n_va): Likewise.
	* tree-diagnostic.c (default_tree_printer): Likewise.
	* tree-pretty-print.c (newline_and_indent): Likewise.

2018-08-27  David Malcolm  <>

	PR c++/87091
	* diagnostic-show-locus.c (get_line_span_for_fixit_hint): Show the
	line above for line-insertion fix-it hints.
	(selftest::test_fixit_insert_containing_newline): Update the
	expected results, and add a test with line-numbering enabled.

2018-08-27  Martin Liska  <>

	PR sanitizer/86962
	* sanopt.c (sanitize_rewrite_addressable_params): Ignore
	params with DECL_HAS_VALUE_EXPR_P.

2018-08-27  Martin Liska  <>

	* config/i386/i386.c (ix86_expand_set_or_movmem): Dump
	selected expansion strategy.

2018-08-27  Martin Liska  <>

	* builtins.h (is_builtin_fn): Remove and fndecl_built_in_p.
	* builtins.c (is_builtin_fn): Likewise.
	* attribs.c (diag_attr_exclusions): Use new function
	fndecl_built_in_p and remove check for FUNCTION_DECL if
	(builtin_mathfn_code): Likewise.
	(fold_builtin_expect): Likewise.
	(fold_call_expr): Likewise.
	(fold_builtin_call_array): Likewise.
	(fold_call_stmt): Likewise.
	(set_builtin_user_assembler_name): Likewise.
	(is_simple_builtin): Likewise.
	* calls.c (gimple_alloca_call_p): Likewise.
	(maybe_warn_nonstring_arg): Likewise.
	* cfgexpand.c (expand_call_stmt): Likewise.
	* cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise.
	(cgraph_edge::verify_corresponds_to_fndecl): Likewise.
	(cgraph_node::verify_node): Likewise.
	* cgraphclones.c (build_function_decl_skip_args): Likewise.
	(cgraph_node::create_clone): Likewise.
	* config/arm/arm.c (arm_insert_attributes): Likewise.
	* config/i386/i386.c (ix86_gimple_fold_builtin): Likewise.
	* dse.c (scan_insn): Likewise.
	* expr.c (expand_expr_real_1): Likewise.
	* fold-const.c (operand_equal_p): Likewise.
	(fold_binary_loc): Likewise.
	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
	* gimple-low.c (lower_stmt): Likewise.
	* gimple-pretty-print.c (dump_gimple_call): Likewise.
	* gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
	* gimple.c (gimple_build_call_from_tree): Likewise.
	(gimple_call_builtin_p): Likewise.
	(gimple_call_combined_fn): Likewise.
	* gimplify.c (gimplify_call_expr): Likewise.
	(gimple_boolify): Likewise.
	(gimplify_modify_expr): Likewise.
	(gimplify_addr_expr): Likewise.
	* hsa-gen.c (gen_hsa_insns_for_call): Likewise.
	* ipa-cp.c (determine_versionability): Likewise.
	* ipa-fnsummary.c (compute_fn_summary): Likewise.
	* ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise.
	* ipa-split.c (visit_bb): Likewise.
	(split_function): Likewise.
	* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
	* lto-cgraph.c (input_node): Likewise.
	* lto-streamer-out.c (write_symbol): Likewise.
	* omp-low.c (setjmp_or_longjmp_p): Likewise.
	(lower_omp_1): Likewise.
	* predict.c (strip_predict_hints): Likewise.
	* print-tree.c (print_node): Likewise.
	* symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise.
	* trans-mem.c (is_tm_irrevocable): Likewise.
	(is_tm_load): Likewise.
	(is_tm_simple_load): Likewise.
	(is_tm_store): Likewise.
	(is_tm_simple_store): Likewise.
	(is_tm_abort): Likewise.
	(tm_region_init_1): Likewise.
	* tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise.
	* tree-cfg.c (verify_gimple_call): Likewise.
	(move_stmt_r): Likewise.
	(stmt_can_terminate_bb_p): Likewise.
	* tree-eh.c (lower_eh_constructs_2): Likewise.
	* tree-if-conv.c (if_convertible_stmt_p): Likewise.
	* tree-inline.c (remap_gimple_stmt): Likewise.
	(copy_bb): Likewise.
	(estimate_num_insns): Likewise.
	(fold_marked_statements): Likewise.
	* tree-sra.c (scan_function): Likewise.
	* tree-ssa-ccp.c (surely_varying_stmt_p): Likewise.
	(optimize_stack_restore): Likewise.
	(pass_fold_builtins::execute): Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
	(mark_all_reaching_defs_necessary_1): Likewise.
	* tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise.
	* tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
	(pass_forwprop::execute): Likewise.
	* tree-ssa-loop-im.c (stmt_cost): Likewise.
	* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise.
	* tree-ssa-strlen.c (get_string_length): Likewise.
	* tree-ssa-structalias.c (handle_lhs_call): Likewise.
	(find_func_aliases_for_call): Likewise.
	* tree-ssa-ter.c (find_replaceable_in_bb): Likewise.
	* tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise.
	* tree-tailcall.c (find_tail_calls): Likewise.
	* tree.c (need_assembler_name_p): Likewise.
	(free_lang_data_in_decl): Likewise.
	(get_call_combined_fn): Likewise.
	* ubsan.c (is_ubsan_builtin_p): Likewise.
	* varasm.c (incorporeal_function_p): Likewise.
	* tree.h (DECL_BUILT_IN): Remove and replace with
	(DECL_BUILT_IN_P): Transfort to fndecl_built_in_p.
	(fndecl_built_in_p): New.

2018-08-27  Martin Liska  <>

	PR tree-optimization/86847
	* tree-switch-conversion.c (switch_decision_tree::dump_case_nodes):
	Dump also subtree probability.
	(switch_decision_tree::do_jump_if_equal): New function.
	(switch_decision_tree::emit_case_nodes): Handle special
	situations in balanced tree that can be emitted much simpler.
	Fix calculation of probabilities that happen in tree expansion.
	* tree-switch-conversion.h (struct cluster): Add
	(struct simple_cluster): Likewise.
	(struct case_tree_node): Add new function has_child.
	(do_jump_if_equal): New.

2018-08-27  Martin Liska  <>

	* tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
	Add new argument to bit_test_cluster constructor.
	(bit_test_cluster::emit): Set bits really number of values
	handlel by a test.
	(bit_test_cluster::hoist_edge_and_branch_if_true): Add
	probability argument.
	* tree-switch-conversion.h (struct bit_test_cluster):
	Add m_handles_entire_switch.

2018-08-27  Martin Liska  <>

	PR tree-optimization/86702
	* tree-switch-conversion.c (jump_table_cluster::emit):
	Make probabilities even for values in jump table
	according to number of cases handled.
	(switch_decision_tree::compute_cases_per_edge): Pass
	argument to reset_out_edges_aux function.
	(switch_decision_tree::analyze_switch_statement): Likewise.
	* tree-switch-conversion.h (switch_decision_tree::reset_out_edges_aux):
	Make it static.

2018-08-27  Martin Liska  <>

	* cfgexpand.c (expand_asm_stmt): Use label_to_block and pass
	cfun argument explicitly.
	* gimple-pretty-print.c (dump_gimple_switch): Likewise.
	* hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new
	function gimple_switch_default_bb.
	* ipa-fnsummary.c (set_switch_stmt_execution_predicate):
	* stmt.c (label_to_block_fn): Use label_to_block and pass
	cfun argument explicitly and use gimple_switch_label_bb.
	(expand_case): Likewise.
	* tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass
	cfun argument explicitly. Likewise.
	(make_edges_bb): Likewise.
	(make_cond_expr_edges): Likewise.
	(get_cases_for_edge): Likewise.
	(make_gimple_switch_edges): Likewise.
	(label_to_block_fn): Likewise.
	(label_to_block): Likewise.
	(make_goto_expr_edges): Likewise.
	(make_gimple_asm_edges): Likewise.
	(main_block_label): Likewise.
	(group_case_labels_stmt): Likewise.
	(find_taken_edge_computed_goto): Likewise.
	(find_taken_edge_switch_expr): Likewise.
	(gimple_verify_flow_info): Likewise.
	(gimple_redirect_edge_and_branch): Likewise.
	(gimple_switch_label_bb): New function.
	(gimple_switch_default_bb): Likewise.
	(gimple_switch_edge): Likewise.
	(gimple_switch_default_edge): Likewise.
	* tree-cfg.h (label_to_block_fn): Remove and replace ...
	(label_to_block): ... with this.
	(gimple_switch_label_bb): New.
	(gimple_switch_default_bb): Likewise.
	(gimple_switch_edge): Likewise.
	(gimple_switch_default_edge): Likewise.
	* tree-cfgcleanup.c (convert_single_case_switch): Use
	new gimple functions and pass new argument to label_to_block.
	* tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass
	cfun argument explicitly.
	(make_eh_edges): Likewise.
	(redirect_eh_dispatch_edge): Likewise.
	(lower_resx): Likewise.
	(lower_eh_dispatch): Likewise.
	(maybe_remove_unreachable_handlers): Likewise.
	(unsplit_eh): Likewise.
	(cleanup_empty_eh): Likewise.
	(verify_eh_edges): Likewise.
	(verify_eh_dispatch_edge): Likewise.
	* tree-ssa-dom.c (record_edge_info): Likewise.
	* tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise.
	* tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise.
	(thread_through_normal_block): Likewise.
	* tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
	* tree-switch-conversion.c (switch_conversion::collect): Use new
	gimple functions.
	(switch_conversion::check_final_bb): Likewise.
	(switch_conversion::gather_default_values): Pass new argument
	to label_to_block.
	(switch_conversion::build_constructors): Likewise.
	(switch_decision_tree::compute_cases_per_edge): Use new
	gimple_switch_edge function.
	(switch_decision_tree::analyze_switch_statement): Pass new argument
	to label_to_block.
	(switch_decision_tree::try_switch_expansion): Use
	* tree-vrp.c (find_switch_asserts): Pass new argument
	to label_to_block.
	* vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise.
	(vr_values::simplify_switch_using_ranges): Likewise.

2018-08-27  Richard Biener  <>

	* cfganal.h (rev_post_order_and_mark_dfs_back_seme): Declare.
	* cfganal.c (rev_post_order_and_mark_dfs_back_seme): New function.

	* tree-ssa-sccvn.h (struct vn_pval): New structure.
	(struct vn_nary_op_s): Add unwind_to member.  Add
	predicated_values flag and put result into a union together
	with a linked list of vn_pval.
	(struct vn_ssa_aux): Add name member to make maintaining
	a map of SSA name to vn_ssa_aux possible.  Remove no longer
	needed info, dfsnum, low, visited, on_sccstack, use_processed
	and range_info_anti_range_p members.
	(run_scc_vn, vn_eliminate, free_scc_vn, vn_valueize): Remove.
	(do_rpo_vn, run_rpo_vn, eliminate_with_rpo_vn, free_rpo_vn):
	New functions.
	(vn_valueize): New global.
	(vn_context_bb): Likewise.
	* tree-ssa-sccvn.c: ... (rewrite)
	(pass_fre::execute): For -O2+ initialize loops and run
	RPO VN in optimistic mode (iterating).  For -O1 and -Og
	run RPO VN in non-optimistic mode.
	* params.def (PARAM_SCCVN_MAX_SCC_SIZE): Remove.
	* doc/invoke.texi (sccvn-max-scc-size): Remove.
	(rpo-vn-max-loop-depth): Document.
	* tree-ssa-alias.c (walk_non_aliased_vuses): Stop walking
	when valuezing the VUSE signals we walked out of the region.
	* tree-ssa-pre.c (phi_translate_1): Ignore predicated values.
	(phi_translate): Set VN context block to use for availability
	(compute_avail): Likewise.
	(pre_valueize): New function.
	(pass_pre::execute): Adjust to the RPO VN API.

	* tree-ssa-loop-ivcanon.c: Include tree-ssa-sccvn.h.
	(propagate_constants_for_unrolling): Remove.
	(tree_unroll_loops_completely): Perform value-numbering
	on the unrolled bodies loop parent.

2018-08-27  Richard Biener  <>

	* tree-ssa-pre.c (compute_antic): Re-use inverted postorder
	for partial antic compute.

2018-08-27  Jakub Jelinek  <>

	PR rtl-optimization/87065
	* combine.c (simplify_if_then_else): Formatting fix.
	(if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P
	(known_cond): Don't return const_true_rtx for vector modes.  Use
	CONST0_RTX instead of const0_rtx.  Formatting fixes.

2018-08-27  Martin Liska  <>

	PR gcov-profile/87069
	* gcov.c (process_file): Record files already processed
	and warn about a file being processed multiple times.

2018-08-27  Martin Liska  <>

	PR driver/83193
	* config/aarch64/aarch64.c (aarch64_override_options_internal):
	Set default values for x_aarch64_*_string strings.
	* config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
	prefix.  For -mabi do not print '=ABI' in help and use
	<option_value> format for -msve-vector-bits and -moverride

2018-08-26  Jeff Law  <>

	* config/mips/frame-header-opt.c: Include "backend.h" rather than

2018-08-26  Marek Polacek  <>

	PR c++/87029, Implement -Wredundant-move.
	* doc/invoke.texi: Document -Wredundant-move.

2018-08-25  Martin Sebor  <>

	PR tree-optimization/87059
	* builtins.c (expand_builtin_strncmp): Convert MIN_EXPR operand
	to the same type as the other.
	* fold-const.c (fold_binary_loc): Assert expectation.

2018-08-25  Iain Sandoe  <>

	* config/darwin.c (machopic_legitimize_pic_address): Clean up
	extraneous parentheses, dead code section and formatting.

2018-08-24  David Malcolm  <>

	PR c++/87091
	* diagnostic-show-locus.c (layout::layout): Ensure the margin is
	wide enough for jumps in the line-numbering to be visible.
	(layout::print_gap_in_line_numbering): New member function.
	(layout::calculate_line_spans): When using line numbering, merge
	line spans that are only 1 line apart.
	(diagnostic_show_locus): When printing line numbers, show gaps in
	line numbering directly, rather than printing headers.
	(selftest::test_diagnostic_show_locus_fixit_lines): Add test of
	line-numbering with multiple line spans.
	(selftest::test_fixit_insert_containing_newline_2): Add test of
	line-numbering, in which the spans are close enough to be merged.

2018-08-24  Aldy Hernandez  <>

	* gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range
	to range_includes_zero_p.  Do not special case VR_ANTI_RANGE.
	* tree-vrp.c (range_is_nonnull): Remove.
	(range_includes_zero_p): Accept value_range instead of min/max.
	(extract_range_from_binary_expr_1): Do not early bail on
	Use range_includes_zero_p instead of range_is_nonnull.
	(extract_range_from_unary_expr): Use range_includes_zero_p instead
	of range_is_nonnull.
	(vrp_meet_1): Pass value_range to range_includes_zero_p.  Do not
	special case VR_ANTI_RANGE.
	(vrp_finalize): Same.
	* tree-vrp.h (range_includes_zero_p): Pass value_range as argument
	instead of min/max.
	(range_is_nonnull): Remove.
	* vr-values.c (vrp_stmt_computes_nonzero): Use
	range_includes_zero_p instead of range_is_nonnull.
	(extract_range_basic): Pass value_range to range_includes_zero_p
	instead of range_is_nonnull.

2018-08-24  Uros Bizjak  <>

	* emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes.
	* emit-rtl.h (rtl_data): Remove return_bnd.
	* explow.c (trunc_int_for_mode): Do not handle POINTER_BOUNDS_MODE_P.
	* function.c (diddle_return_value): Do not handle crtl->return_bnd.
	* genmodes.c (complete_mode): Do not handle MODE_POINTER_BOUNDS.
	(POINTER_BOUNDS_MODE): Remove definition.
	(make_pointer_bounds_mode): Remove.
	(get_mode_class): Do not handle MODE_POINTER_BOUNDS.
	* machmode.h (POINTER_BOUNDS_MODE_P): Remove definition.
	(scalare_mode::includes_p): Do not handle MODE_POINTER_BOUNDS.
	* mode-classes.def: Do not define MODE_POINTER_BOUNDS.
	* stor-layout.c (int_mode_for_mode): Do not handle MODE_POINTER_BOUNDS.
	* tree-core.h (enum tree_index): Remove TI_POINTER_BOUNDS_TYPE.
	* varasm.c (output_constant_pool_2): Do not handle MODE_POINTER_BOUNDS.

	* config/i386/i386-modes.def (BND32, BND64): Remove.
	* config/i386/i386.c (dbx_register_map): Remove bound registers.
	(dbx64_register_map): Ditto.
	(svr4_dbx_register_map): Ditto.
	(indirect_thunk_bnd_needed): Remove.
	(indirect_thunks_bnd_used): Ditto.
	(indirect_return_bnd_needed): Ditto.
	(indirect_return_via_cx_bnd): Ditto.
	(enum indirect_thunk_prefix): Remove indirect_thunk_prefix_bnd.
	(indirect_thunk_name): Remove handling of indirect_thunk_prefix_bnd.
	(output_indirect_thunk): Ditto.  Remove need_prefix argument.
	(output_indirect_thunk_function): Remove handling of
	indirect_return_bnd_needed, indirect_return_via_cx_bnd,
	indirect_thunk_bnd_needed and indirect_thunks_bnd_used variables.
	(ix86_save_reg): Remove handling of crtl->return_bnd.
	(ix86_legitimate_constant_p): Remove handling of POINTER_BOUNDS_MODE_P.
	(ix86_print_operand_address_as): Remove handling of UNSPEC_BNDMK_ADDR
	(ix86_output_indirect_branch_via_reg): Remove handling of
	(ix86_output_indirect_branch_via_push): Ditto.
	(ix86_output_function_return): Ditto.
	(ix86_output_indirect_function_return): Ditto.
	(avoid_func_arg_motion): Do not handle UNSPEC_BNDSTX.
	* config/i386/i386.h (FIXED_REGISTERS): Remove bound registers.
	(REG_ALLOC_ORDER): Update for removal of bound registers.
	(BND): Remove mode iterator.
	* config/i386/ (bnd_mem_operator): Remove.

2018-08-24  Richard Sandiford  <>

	* tree-vect-stmts.c (vectorizable_bswap): Handle variable-length

2018-08-24  Richard Sandiford  <>

	* tree-vect-slp.c (vect_transform_slp_perm_load): Separate out
	the case in which the permute needs only a single element and
	repeats for every vector of the result.  Extend that case to
	handle variable-length vectors.
	* tree-vect-stmts.c (vectorizable_load): Update accordingly.

2018-08-24  H.J. Lu  <>

	PR debug/79342
	* dwarf2out.c (save_macinfo_strings): Call set_indirect_string
	on DW_MACINFO_start_file for -gsplit-dwarf -g3.

2018-08-24  Richard Biener  <>

	* cfg.h (struct control_flow_graph): Add edge_flags_allocated and
	bb_flags_allocated members.
	(auto_flag): New RAII class for allocating flags.
	(auto_edge_flag): New RAII class for allocating edge flags.
	(auto_bb_flag): New RAII class for allocating bb flags.
	* cfgloop.c (verify_loop_structure): Allocate temporary edge
	flag dynamically.
	* cfganal.c (dfs_enumerate_from): Remove use of visited sbitmap
	in favor of temporarily allocated BB flag.
	* hsa-brig.c: Re-order includes.
	* hsa-dump.c: Likewise.
	* hsa-regalloc.c: Likewise.
	* print-rtl.c: Likewise.
	* profile-count.c: Likewise.

2018-08-24  Segher Boessenkool  <>

	PR target/86989
	* config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is
	the TOC register.

2018-08-24  Aldy Hernandez  <>

	PR 87073/bootstrap
	* (wide_int_range_div): Do not ignore result
	from wide_int_range_multiplicative_op.

2018-08-23  Prathamesh Kulkarni  <>

	* tree-vect-data-refs.c (vect_grouped_store_supported): Fix typo

2018-08-23  Giuliano Belinassi  <>

	* genmatch.c (parser::parse_operation): Fix typo 'exapnded'
	to 'expanded'.

2018-08-23  Alexander Monakov  <>

	* tree-scalar-evolution.c (final_value_replacement_loop): Dump
	full GENERIC expression used for replacement.

2018-08-23  Aldy Hernandez  <>

	* tree-vrp.c (abs_extent_range): Remove.