blob: a6a4011b54c3c2782eef5d088628d0919c81846d [file] [log] [blame]
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.
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*,
(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
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.
(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.