From: Jakub Jelinek Date: Tue, 1 Jan 2019 11:34:49 +0000 (+0100) Subject: gcc.c (process_command): Update copyright notice dates. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3f27508ce4fa615a96f9a2e1bfa3c431879ac6ae;p=gcc.git gcc.c (process_command): Update copyright notice dates. * gcc.c (process_command): Update copyright notice dates. * gcov-dump.c (print_version): Ditto. * gcov.c (print_version): Ditto. * gcov-tool.c (print_version): Ditto. * gengtype.c (create_file): Ditto. * doc/cpp.texi: Bump @copying's copyright year. * doc/cppinternals.texi: Ditto. * doc/gcc.texi: Ditto. * doc/gccint.texi: Ditto. * doc/gcov.texi: Ditto. * doc/install.texi: Ditto. * doc/invoke.texi: Ditto. gcc/fortran/ * gfortranspec.c (lang_specific_driver): Update copyright notice dates. * gfc-internals.texi: Bump @copying's copyright year. * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. gcc/go/ * gccgo.texi: Bump @copyrights-go year. gcc/ada/ * gnat_ugn.texi: Bump @copying's copyright year. * gnat_rm.texi: Likewise. gcc/d/ * gdc.texi: Bump @copyrights-d year. libitm/ * libitm.texi: Bump @copying's copyright year. libgomp/ * libgomp.texi: Bump @copying's copyright year. libquadmath/ * libquadmath.texi: Bump @copying's copyright year. From-SVN: r267492 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ced3782493a..13b69d34155 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,35299 +1,4 @@ -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 - type+fuzzy. - (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 - d_target_objs. - (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 - bfield. - -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 - get_functions_at_location. - -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/aarch64-tune.md: 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 - parametrs. - -2018-12-24 Jan Hubicka - - PR lto/88140 - * tree.c (fld_simplified_type): Temporarily disable array - simplification. - -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 - - * configure.ac (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/vector.md ("floatv2div2df2", "floatunsv2div2df2") - ("fix_truncv2dfv2di2", "fixuns_truncv2dfv2di2"): New pattern - definitions. - -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) : Minor tweak. - -2018-12-21 Jakub Jelinek - - PR target/88522 - * config/i386/sse.md (*avx512pf_gatherpfsf_mask, - *avx512pf_gatherpfdf_mask, *avx512pf_scatterpfsf_mask, - *avx512pf_scatterpfdf_mask): Use %X5 instead of %5 for - -masm=intel. - (gatherq_mode): Remove mode iterator. - (*avx512f_gathersi, *avx512f_gathersi_2): Use X instead - of . - (*avx512f_gatherdi): Use X instead of . - (*avx512f_gatherdi_2, *avx512f_scattersi, - *avx512f_scatterdi): Use %X5 for -masm=intel. - - PR rtl-optimization/88563 - * expr.c (expand_expr_real_2) : 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/i386.md (sinhxf2): New expander. - (sinh2): Ditto. - (coshxf2): Ditto. - (cosh2): Ditto. - (tanhxf2): Ditto. - (tanh2): 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/sse.md (vaesdec_, vaesdeclast_): 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/iterators.md (SVE_INT_UNARY, fp_int_op): Add abs. - (SVE_FP_UNARY): Sort. - -2018-12-20 Richard Sandiford - - * config/aarch64/aarch64-sve.md (*cond__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 - parts. - (mem_ref_alloc): Take ao_ref parameter, initialize ref_canonical - member. - (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 - - * config.gcc: Enable TARGET_DEFAULT_ASYNC_UNWIND_TABLES on - aarch64*-*-freebsd* - -2018-12-19 Uros Bizjak - - * config/i386/i386.md (SWI1248_AVX512BWDQ_64): Rename from - SWI1248_AVX512BWDQ2_64. Unconditionally enable HImode. - (*cmp_ccz_1): Emit kortest instead of ktest insn. - Use SWI1248_AVX512BWDQ_64 mode iterator and enable only for - TARGET_AVX512F. - -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 - libgcc/config/arm/t-arm. - * 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 - directive. - -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 - c/c-typeck.c. - (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 - c/c-typeck.c. - (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 - wrappers. - (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 - wrappers. - (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 - using TREE_OVERFLOW. - (operand_equal_p): Strip any location wrappers. - (integer_valued_real_p): Strip any location wrapper. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::convert_c_tests. - * 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 - targets. - * 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.md (*vsx_extract___load): - Require TARGET_POWERPC64. - -2018-12-19 Richard Biener - - PR tree-optimization/88533 - Revert - 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 - ssa-iterators.h. - (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 - MAX. - -2018-12-19 Tom de Vries - - * config/nvptx/nvptx.c (nvptx_gen_wcast): Rename as - nvptx_gen_warp_bcast. - (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_gen_warp_bcast. - (nvptx_vpropagate): Rename to nvptx_warp_propagate, update call to - nvptx_propagate. - (wprop_gen): Rename to shared_prop_gen, update call to - nvptx_gen_shared_bcast. - (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_get_shared_red_addr. - (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 - oacc_bcast_size. - (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 - oacc_bcast_align. - (wprop_gen): Update type of data_ and usage of oacc_bcast_align. - (nvptx_wpropagate): Update type of data and usage of - oacc_bcast_{sym,size}. - (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.md (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_wsync. - (nvptx_process_pars): Likewise. - -2018-12-19 Tom de Vries - - * config/nvptx/nvptx.c (nvptx_previous_fndecl): Declare. - (nvptx_set_current_function): New function. - (TARGET_SET_CURRENT_FUNCTION): Define. - -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 - non_reload_pseudos. - -2018-12-18 Jakub Jelinek - - PR target/88464 - * config/i386/i386-builtin-types.def - (VOID_FTYPE_PDOUBLE_QI_V8SI_V4DF_INT, - VOID_FTYPE_PFLOAT_QI_V4DI_V8SF_INT, - VOID_FTYPE_PLONGLONG_QI_V8SI_V4DI_INT, - VOID_FTYPE_PINT_QI_V4DI_V8SI_INT, - VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT, - VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT, - VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT, - VOID_FTYPE_PINT_QI_V2DI_V4SI_INT): New builtin types. - * config/i386/i386.c (enum ix86_builtins): Add - IX86_BUILTIN_SCATTERALTSIV4DF, IX86_BUILTIN_SCATTERALTDIV8SF, - IX86_BUILTIN_SCATTERALTSIV4DI, IX86_BUILTIN_SCATTERALTDIV8SI, - IX86_BUILTIN_SCATTERALTSIV2DF, IX86_BUILTIN_SCATTERALTDIV4SF, - IX86_BUILTIN_SCATTERALTSIV2DI and IX86_BUILTIN_SCATTERALTDIV4SI. - (ix86_init_mmx_sse_builtins): Fix up names of IX86_BUILTIN_GATHERALT*, - IX86_BUILTIN_GATHER3ALT* and IX86_BUILTIN_SCATTERALT* builtins to - match the IX86_BUILTIN codes. Build IX86_BUILTIN_SCATTERALTSIV4DF, - IX86_BUILTIN_SCATTERALTDIV8SF, IX86_BUILTIN_SCATTERALTSIV4DI, - IX86_BUILTIN_SCATTERALTDIV8SI, IX86_BUILTIN_SCATTERALTSIV2DF, - IX86_BUILTIN_SCATTERALTDIV4SF, IX86_BUILTIN_SCATTERALTSIV2DI and - IX86_BUILTIN_SCATTERALTDIV4SI decls. - (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) : 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) - : Check for VECTOR_MODE_P - rather than non-VOIDmode. - * config/i386/sse.md (vec_pack_trunc_qi, vec_pack_trunc_): - 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 - HWI_COMPUTABLE. - (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/vsx.md (nW): New mode iterator. - (vsx_mov_64bit): Use it. Remove redundant GPR 0/-1 alternative. - Update length attribute for (, ) alternative. - (vsx_mov_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. - (TARGET_ATTRIBUTE_TABLE): New define. - * config/aarch64/aarch64.h (EPILOGUE_USES): Redefine. - (FP_SIMD_SAVED_REGNUM_P): New macro. - * config/aarch64/aarch64.md (simple_return): New define_expand. - (load_pair_dw_tftf): New instruction. - (store_pair_dw_tftf): Ditto. - (loadwb_pair_): Ditto. - (storewb_pair_): 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/i386.md (asinhxf2): New expander. - (asinh2): Ditto. - (acoshxf2): Ditto. - (acosh2): Ditto. - (atanhxf2): Ditto. - (atanh2): 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 - - * 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. - * Makefile.in (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. - * params.def (PARAM_LOOP_VERSIONING_GROUP_SIZE) - (PARAM_LOOP_VERSIONING_MAX_INNER_INSNS) - (PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS): New parameters. - * 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 - range_includes_p. - * tree-vrp.c (range_includes_p): New function, generalizing... - (range_includes_zero_p): ...this. - * tree-pass.h (make_pass_loop_versioning): Declare. - * gimple-loop-versioning.cc: 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 - size_time_table. - (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 - predicate. - -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) - : Use lowpart_subreg for masks. - : 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 - parameters. - (cgraph_build_static_cdtor): Update. - (build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor - callsed. - -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/sse.md (UNSPEC_SFIXUPIMM): New unspec enumerator. - (avx512f_sfixupimm): Use it - instead of UNSPEC_FIXUPIMM. - - PR rtl-optimization/88478 - * cselib.c (cselib_record_sets): Move sets[i].src_elt tests - after REG_P (dest) test. - -2018-12-14 Martin Sebor - - PR tree-optimization/88372 - * calls.c (maybe_warn_alloc_args_overflow): Handle function pointers. - * tree-object-size.c (alloc_object_size): Same. Simplify. - * doc/extend.texi (Object Size Checking): Update. - (Other Builtins): Add __builtin_object_size. - (Common Type Attributes): Add alloc_size. - (Common Variable Attributes): Ditto. - -2018-12-14 Martin Sebor - - PR rtl-optimization/87096 - * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Avoid - folding calls whose bound may exceed INT_MAX. Diagnose bound ranges - that exceed the limit. - -2018-12-14 Martin Sebor - - PR web/79738 - * doc/extend.texi (attribute const, pure): Clarify. - -2018-12-14 H.J. Lu - - * config/i386/i386.c (rest_of_insert_endbranch): Insert ENDBR - at the function entry only when -mmanual-endbr isn't used or - there is cf_check function attribute. - (ix86_attribute_table): Add cf_check. - * config/i386/i386.opt: Add -mmanual-endbr. - * doc/extend.texi: Document cf_check attribute. - * doc/invoke.texi: Document -mmanual-endbr. - -2018-12-14 Thomas Schwinge - Cesar Philippidis - - * omp-offload.c (inform_oacc_loop): New function. - (execute_oacc_device_lower): Use it to display loop parallelism. - -2018-12-14 Jakub Jelinek - - PR c++/82294 - PR c++/87436 - * expr.h (categorize_ctor_elements): Add p_unique_nz_elts argument. - * expr.c (categorize_ctor_elements_1): Likewise. Compute it like - p_nz_elts, except don't multiply it by mult. Adjust recursive call. - Fix up COMPLEX_CST handling. - (categorize_ctor_elements): Add p_unique_nz_elts argument, initialize - it and pass it through to categorize_ctor_elements_1. - (mostly_zeros_p, all_zeros_p): Adjust categorize_ctor_elements callers. - * gimplify.c (gimplify_init_constructor): Likewise. Don't force - ctor into readonly data section if num_unique_nonzero_elements is - smaller or equal to 1/8 of num_nonzero_elements and size is >= 64 - bytes. - -2018-12-14 Thomas Preud'homme - - * config/arm/arm.md (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 - insn. - (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/constraints.md (Pz): Document existing constraint. - (Ha): Define constraint. - (Tu): Likewise. - * config/arm/predicates.md (hard_sf_operand): New predicate. - (hard_df_operand): Likewise. - * config/arm/thumb2.md (thumb2_movsi_insn): Split if - -mslow-flash-data and constant would be loaded by literal pool. - * constant/arm/vfp.md (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 - reload. - -2018-12-14 Uros Bizjak - - PR target/88474 - * internal-fn.def (HYPOT): New. - * optabs.def (hypot_optab): New. - * config/i386/i386.md (hypot3): 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. - * doc/tm.texi.in (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 - lra_register_new_scratch_op. - * 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 - variable. - -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 - edge_info. - (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 - non-NULL. - (rs6000_arg_partial_bytes): Same. - -2018-12-13 Jason Merrill - - * gdbinit.in (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 - s390_vcdlgb. - -2018-12-13 Andreas Krebbel - - * config/s390/vx-builtins.md ("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 - behavior. - -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 - cascadelake. - * config/i386/i386.c (Add m_CASCADELAKE): New. - (processor_cost_table): Add cascadelake. - (get_builtin_code_for_version): Handle cascadelake. - * config/i386/i386.h (TARGET_CASCADELAKE, PROCESSOR_CASCADELAKE): New. - (PTA_CASCADELAKE): Ditto. - * doc/invoke.texi: Add -march=cascadelake. - -2018-12-13 Jakub Jelinek - - PR target/88465 - * config/i386/i386.md (*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/sse.md (VI1248_AVX512VLBW, AVX512ZEXTMASK): New - mode iterators. - (_testm3, - _testnm3): Merge patterns - with VI12_AVX512VL and VI48_AVX512VL iterators into ones with - VI1248_AVX512VLBW iterator. - (*_testm3_zext, - *_testm3_zext_mask, - *_testnm3_zext, - *_testnm3_zext_mask): New - define_insns. - - PR target/88461 - * config/i386/i386.md (*zero_extendsidi2, zero_extenddi2, - *zero_extendsi2, *zero_extendqihi2): Add =*k, *km alternatives. - -2018-12-12 Tom de Vries - Jakub Jelinek - - * omp-builtins.def (BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME, - BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME): Fix up - 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 - defined. - -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/sparc.md (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/rs6000.md (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/darwin.md (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/rs6000.md (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. - (STACK_DYNAMIC_OFFSET): Likewise. - -2018-12-11 Jakub Jelinek - - PR target/88425 - * config/i386/i386.md (*x86_movcc_0_m1_neg_leu): - 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 - change. - * 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/iterators.md (sizem1): Add sizes for SFmode and DFmode. - (Vbtype): Add SFmode mapping. - * config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete. - (copysign3): New expand pattern. - (copysign3_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 - target. - -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. - * config.host (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 libgcc-unwind.map if - ENABLE_SHARED_LIBGCC. - -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 - d_target_objs. - * 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 - lhs. - -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) : Call above - function with FAKE parameter set to true. - : 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): - Add SVE_NOT_IMPLEMENTED value. - * config/aarch64/aarch64-protos.h (struct tune_params): Add sve_width - field. - * 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. - (TARGET_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 - NO_REGS. - -2018-12-07 Richard Sandiford - - * config/aarch64/aarch64-sve.md (*mul3, *v3): - Split the patterns after reload if we don't need the predicate - operand. - (*post_ra_mul3, *post_ra_v3): New patterns. - -2018-12-07 Richard Sandiford - - * config/aarch64/iterators.md (SVE_UNPRED_FP_BINARY): New code - iterator. - (sve_fp_op): Handle minus and mult. - * config/aarch64/aarch64-sve.md (*add3, *sub3) - (*mul3): Split the patterns after reload if we don't - need the predicate operand. - (*post_ra_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 - change). - (_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 - default. - * 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 - bitmap_release. - * 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 - default. - -2018-12-05 Uros Bizjak - - * dwarf2out.c (field_byte_offset): Remove - #ifdef PCC_BITFIELD_TYPE_MATTERS check. - -2018-12-05 Richard Biener - Martin Sebor - - PR c/87028 - * calls.c (get_attr_nonstring_decl): Avoid setting *REF to - SSA_NAME_VAR. - * gcc/gimple-low.c (lower_stmt): Fold builtin calls here. - * gimplify (maybe_fold_stmt): Avoid folding builtin calls. - -2018-12-05 Iain Sandoe - - * configure.ac (gcc_cv_otool): Set. - * configure: Regenerate. - -2018-12-05 Uros Bizjak - - * config/i386/cygming.h (PCC_BITFIELD_TYPE_MATTERS): Remove. - (GROUP_BITFIELDS_BY_ALIGN): Ditto. - -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 - fixes. - (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 - failures. - (print_operand): Use REG_P instead of GET_CODE == REG. - : Also check CR_REGNO_P (REGNO (x)). - : Likewise. Remove GET_MODE check. - * config/rs6000/rs6000.md (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/sse.md (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/h8300.md (qi3_1): Add gcc_unreachable to keep - warnings quiet. - - * config/h8300/h8300.md (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 - anchors. - (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 - gcc_unreachable. - -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 - pass_postreload_cse. - * 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/sse.md (*vec_concatv4sf_0, *vec_concatv4si_0): New insns. - -2018-12-02 Jeff Law - - * config/h8300/h8300.md (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, - OMP_CLAUSE_TASK_REDUCTION and OMP_CLAUSE__SIMT_ clauses. - (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 - boundaries. - -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. - (RZ_BUFFER_SIZE): New. - (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/predicates.md (easy_fp_constant): Avoid long - dependent insn sequences. - * config/rs6000/rs6000.c (num_insns_constant): Support long - double constants. - * config/rs6000/rs6000.md (mov_softfloat ): 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 - TYPE_MIN/MAX_VALUE. - -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. - : 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.md (*_movmsk_lt, - *_movmsk_zext_lt, - *_movmsk_shift, - *_movmsk_zext_shift, - *_pmovmskb_lt, *_pmovmskb_zext_lt): New - define_insn_and_split patterns. - - PR target/54700 - * config/i386/sse.md - (*_blendv_lt, - *_blendv_ltint, - *_pblendvb_lt): Change define_insn into - define_insn_and_split. - -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/mmx.md (*mov_internal): Correct - TARGET_INTER_UNIT_MOVES_FROM_VEC and TARGET_INTER_UNIT_MOVES_TO_VEC - 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 - flag_live_patching. - -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/sse.md (ssebytemode): Add V16SI, V8SI and V4SI entries. - (ssefltmodesuffix, ssefltvecmode): New define_mode_attrs. - (*_blendv_lt, - *_blendv_ltint, - *_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 - clone_function_name_numbered. - -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/arm-cpus.in (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/rs6000.md (movdi_internal64): Correct lengths. - -2018-11-29 Alan Modra - - * config/rs6000/predicates.md (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 - const_double. - (rs6000_legitimate_constant_p): Likewise. - (output_toc): Formatting, use CONST_DOUBLE_P. - -2018-11-29 Alan Modra - - * config/rs6000/constraints.md (G, H): Comment on purpose of - constraint. Correct mode comments and "G" mode test. - * config/rs6000/rs6000.md (movdi_internal32): Remove "GH" from - alternative handling "F". Add length attr. Formatting. - (mov_softfloat ): Delete "GH" from - alternative, and move "F" to separate alternative. Correct - insn lengths. - -2018-11-29 Alan Modra - - * config/rs6000/predicates.md (easy_vector_constant): Don't call - easy_fp_constant. - -2018-11-29 Alan Modra - - * config.in (HAVE_AS_PLTSEQ): Add. - * config/rs6000/predicates.md (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 ): Handle UNSPEC_PLTSEQ. - (rs6000_indirect_call_template_1): Emit .reloc directives for - UNSPEC_PLTSEQ calls. - (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/rs6000.md (UNSPEC_PLTSEQ, UNSPEC_PLT16_HA, - UNSPEC_PLT16_LO): New. - (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. - * configure.ac: Check for gas plt sequence marker support. - * configure: Regenerate. - -2018-11-29 Alan Modra - - * config/rs6000/predicates.md (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 - handling. - (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/rs6000.md: 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/darwin.md (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/rs6000.md (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/rs6000.md (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/rs6000.md (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/rs6000.md (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/constraints.md: Add "C" constraint for call insns. - * config/h8300/h8300.md (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/predicates.md (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 - insns. - (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/sse.md (sse4_1_blendv): 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 - here. - (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 - `mno-fix-r5900'. - * 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) : Use - output_operand_lossage instead of gcc_assert. - : Likewise. - : Likewise. - : 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 - type. - * 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 ): 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 - locations. - (selftest::assert_impl_location_eq): New function. - (ASSERT_IMPL_LOCATION_EQ): New macro. - (selftest::test_impl_location): Update to use - ASSERT_IMPL_LOCATION_EQ. - (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 - locations. - (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.cc (opt_problem::opt_problem): Update for change to - dump_loc. - * optinfo-emit-json.cc - (selftest::test_building_json_from_dump_calls): Convert "loc" from - dump_location_t to dump_user_location_t. - * optinfo.cc (optinfo::emit_for_opt_problem): Update for change in - dump_loc_immediate. - * profile.c (compute_branch_probabilities): Update for change to - dump_printf_loc. - * selftest.h (ASSERT_STR_CONTAINS_AT): New macro. - * tree-vect-slp.c (vect_print_slp_tree): Update for change to - dump_printf_loc. - -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), - (LINK_GCC_C_SEQUENCE_SPEC): Undef. - (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), - (LINK_GCC_C_SEQUENCE_SPEC): Undef. - * config/rs6000/rtems.h (LINK_GCC_C_SEQUENCE_SPEC): Define. - * config/rs6000/sysv4.h (GNU_USER_TARGET_CRTI): Redefine. - (GNU_USER_TARGET_CRTN): Redefine. - (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC. - (LIB_LINUX_SPEC): Use GNU_USER_TARGET_LIB_SPEC. - (CRTOFFLOADBEGIN, CRTOFFLOADEND): Don't define. - (STARTFILE_LINUX_SPEC): Define as GNU_USER_TARGET_STARTFILE_SPEC. - (ENDFILE_LINUX_SPEC): Define as GNU_USER_TARGET_ENDFILE_SPEC. - (UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER): Don't define. - (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 - GNU_USER_TARGET_OS_CPP_BUILTINS. - (RS6000_ABI_NAME): Define. - * config/rs6000/linux64.h (TARGET_OS_CPP_BUILTINS): Use - GNU_USER_TARGET_OS_CPP_BUILTINS. - (MUSL_DYNAMIC_LINKER32): Undef before defining. - (UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64): Don't define. - (CHOOSE_DYNAMIC_LINKER): Don't define. - (GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64): Don't define. - * config/rs6000/sysv4.h (MUSL_DYNAMIC_LINKER): Undef before defining. - (CHOOSE_DYNAMIC_LINKER, GNU_USER_DYNAMIC_LINKER): Only define when - not already defined. - (CPP_OS_LINUX_SPEC): Remove defines and asserts handled by - TARGET_OS_CPP_BUILTINS. - -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 - * config.host (*-*-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/types.md (mul64): Rename to... - (widen_mul64): ... This. - * config/arm/arm-generic.md: Rename mul64 to widen_mul64. - * config/arm/cortex-a15.md: Likewise. - * config/arm/cortex-a5.md: Likewise. - * config/arm/cortex-a53.md: Likewise. - * config/arm/cortex-a57.md: Likewise. - * config/arm/cortex-a7.md: Likewise. - * config/arm/cortex-m4.md: Likewise. - * config/arm/exynos-m1.md: Likewise. - * config/arm/marvell-pj4.md: Likewise. - * config/arm/xgene1.md: 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 - - * 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/aarch64-tune.md: 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 - costs. - * 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 - gen_atomic_compare_swap_1. - (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 - checks. - * config/arm/arm.md (neon_vext), - (neon_vrev64, neon_vrev32), - (neon_vrev16, neon_vtrn_internal), - (neon_vzip_internal, neon_vuzp_internal): Add an '@'character - before the pattern name. - * config/arm/sync.md: - (atomic_compare_and_swap_1), - (atomic_compare_and_swap_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) : 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 - possible. - (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 - prototype. - (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 - change. - (arm_load_pic_register): Likewise. - * config/arm/predicated.md (guard_addr_operand): New predicate. - (guard_operand): New predicate. - * config/arm/arm.md (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.md (thumb1_stack_protect_test_insn): New insn pattern. - * config/arm/unspecs.md (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 - legal. - (stack_protect_combined_test): Document new standard pattern name. - (stack_protect_test): Clarify that the operand for guard's address is - legal. - -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 - CALL_EXPR_BY_DESCRIPTOR. - (streamer_read_tree_bitfields): Stream CALL_EXPR_IFN. - * tree-streamer-out.c (pack_ts_base_value_fields): Stream - CALL_EXPR_BY_DESCRIPTOR. - (streamer_write_tree_bitfields): Stream CALL_EXPR_IFN. - - Revert - 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/i386.md (stack_protect_set, stack_protect_set_, - stack_protect_test, stack_protect_test_): Use empty condition - instead of TARGET_SSP_TLS_GUARD. - -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 - - Revert: - 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 - DECL_ARTIFICIAL of TYPE_DECL; do not free TREE_TYPE of TYPE_DECL. - (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 - and TREE_TYPEs of 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/atomics.md (@aarch64_compare_and_swap): 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. - * Makefile.in (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/sse.md (sse4_1_v8qiv8hi2): Replace - nonimmediate_operand with register_operand. - (avx2_v8qiv8si2): Likewise. - (sse4_1_v4qiv4si2): Likewise. - (sse4_1_v4hiv4si2): Likewise. - (sse4_1_v2qiv2di2): Likewise. - (avx512f_v8qiv8di2): Likewise. - (avx2_v4qiv4di2): Likewise. - (avx2_v4hiv4di2): Likewise. - (sse4_1_v2hiv2di2): Likewise. - (sse4_1_v2siv2di2): Likewise. - (*sse4_1_v8qiv8hi2_1): New pattern. - (*sse4_1_v8qiv8hi2_2): Likewise. - (*avx2_v8qiv8si2_1): Likewise. - (*avx2_v8qiv8si2_2): Likewise. - (*sse4_1_v4qiv4si2_1): Likewise. - (*sse4_1_v4qiv4si2_2): Likewise. - (*sse4_1_v4hiv4si2_1): Likewise. - (*sse4_1_v4hiv4si2_2): Likewise. - (*avx512f_v8qiv8di2_1): Likewise. - (*avx512f_v8qiv8di2_2): Likewise. - (*avx2_v4qiv4di2_1): Likewise. - (*avx2_v4qiv4di2_2): Likewise. - (*avx2_v4hiv4di2_1): Likewise. - (*avx2_v4hiv4di2_2): Likewise. - (*sse4_1_v2hiv2di2_1): Likewise. - (*sse4_1_v2hiv2di2_2): Likewise. - (*sse4_1_v2siv2di2_1): Likewise. - (*sse4_1_v2siv2di2_2): Likewise. - -2018-11-21 H.J. Lu - - * read-rtl.c (apply_subst_iterator): Handle define_split and - define_insn_and_split. - -2018-11-21 Jakub Jelinek - - PR rtl-optimization/87817 - * config/i386/i386.md (bmi2_bzhi_3, *bmi2_bzhi_3, - *bmi2_bzhi_3_1, *bmi2_bzhi_3_1_ccz): Use IF_THEN_ELSE - in the pattern to avoid triggering UB when operands[2] is zero. - (tbm_bextri_): New expander. Renamed the old define_insn to ... - (*tbm_bextri_): ... this. - -2018-11-21 Tom de Vries - - PR driver/79855 - * params.def (HOT_BB_COUNT_FRACTION): Terminate help message with - period. - -2018-11-21 Andreas Krebbel - - * configure.ac: Add check for Binutils to determine whether vector - load/store alignments hints are being supported. - * config.in: Regenerate. - * configure: Regenerate. - * config/s390/s390.c (print_operand): Support new output - modifier A. - * config/s390/s390.md ("movti"): Append alignment hint output - using the new output modifier 'A'. - * config/s390/vector.md ("mov", "*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/s390.md ("clztidi2"): Swap the RTX's written to the - DImode parts of the target operand. - -2018-11-20 Nathan Sidwell - - PR 87926 - * Makefile.in (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 - backedges. - -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/s390.md: Skip LT(G) peephole when literal pool is - involved. - * 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. - * optinfo-emit-json.cc (optrecord_json_writer::pop_scope): Assert - that we're not popping the top-level records array. - * optinfo.cc (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 - function. - (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 - m_json_writer->pop_scope. - (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. - * optinfo-emit-json.cc (class optrecord_json_writer): Move to - optinfo-emit-json.h - (the_json_writer): Delete. - (optimization_records_start): Delete. - (optimization_records_finish): Delete. - (optimization_records_enabled_p): Delete, in favor of - dump_context::optimization_records_enabled_p. - (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-json.cc. - * optinfo.cc (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 - dump_context::optinfo_enabled_p. - (optinfo_wants_inlining_info_p): Update for conversion o - optimization_records_enabled_p to a member function of - dump_context. - * optinfo.h (optinfo_enabled_p): Delete, in favor of - dump_context::optinfo_enabled_p. - (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 - dump_context::finish_any_json_writer. - (do_compile): Replace call to optimization_records_start with - conditionally creating a optrecord_json_writer for the - dump_context. - -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 - adjust_context_and_scope. - * 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/visium.md (negsi2_insn_set_carry): Turn into... - (neg2_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. - (GNU_USER_TARGET_STARTFILE_SPEC): Use it here. - (GNU_USER_TARGET_CRTN): Define. - (GNU_USER_TARGET_ENDFILE_SPEC): Use it here. - (GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC): Define. - -2018-11-18 Alan Modra - - * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Delete - !HAVE_LD_PIE variant. - (GNU_USER_TARGET_ENDFILE_SPEC): Likewise. - -2018-11-17 Nick Clifton - Sandra Loosemore - - PR driver/31357 - * doc/invoke.texi (Overall Options): Document that --help and - --help= 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 - -fno-implicit-templates. - -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/mn10300.md (adddi3_degenerate): Remove bogus - gcc_assert. - -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/constraints.md (wF constraint): Remove power9 - fusion documentation. Just document wF's use for power8 fusion. - * config/rs6000/predicates.md (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 - 1's. - (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/rs6000.md (UNSPEC_FUSION_P9): Delete. - (GPR_FUSION): Delete. - (FPR_FUSION): Delete. - (power9 fusion peephole2s): Delete. - (fusion_gpr___load): Delete. - (fusion_gpr___store): Delete. - (fusion_vsx___load): Delete. - (fusion_vsx___store): Delete. - (fusion_p9__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 - CROSSING_JUMP_P insns. - (cfg_layout_redirect_edge_and_branch): Don't ICE if ret is NULL. - -2018-11-16 Uros Bizjak - - PR target/88051 - * config/i386/i386.md (floatunsdidf2): Allow only 64bit AVX512F targets. - * config/i386/sse.md (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/i386.md: 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/s390.md - (*rsbg__srl_bitmask): Do not delegate arithmetic to - assembler. - (*rsbg__sll): Likewise. - (*rsbg__srl): Likewise. - (*rsbg_sidi_srl): New pattern. - -2018-11-16 Jerome Lambourg - - * config/vxworks.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): New macro. - Default to TARGET_VXWORKS_RTP. - (SUPPORTS_INIT_PRIORITY): Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead - of TARGET_VXWORKS_RTP. - * 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 - * Makefile.in (OBJS): Move json.o to... - (OBJS-libcommon): ...here and add diagnostic-format-json.o. - * common.opt (fdiagnostics-format=): New option. - (diagnostics_output_format): New enum. - * diagnostic-format-json.cc: New file. - * diagnostic.c (default_diagnostic_final_cb): New function, taken - from start of diagnostic_finish. - (diagnostic_initialize): Initialize final_cb to - default_diagnostic_final_cb. - (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 - OPT_fdiagnostics_format_. - * 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. - (GLIBC_DYNAMIC_LINKER): Define. - (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 - - * Makefile.in (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 - ignore_equivs_equal_p. - * 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!=, - ignore_equivs_equal_p. - * 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 - MAX_OFILE_ALIGNMENT as needed. - -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. - (REG_CLASS_CONTENTS): Likewise. - (FIXED_REGISTERS): Make lp_count fixed. - (BASE_REG_CLASS): Remove ACC16_BASE_REGS reference. - (PROGRAM_COUNTER_REGNO): Remove. - * 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/constraints.md ("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. - ("W"): Choose between GENERAL_REGS and MPY_WRITABLE_CORE_REGS. - Former one will be used for LRA. - ("f"): Delete constraint. - ("k"): Likewise. - ("e"): Likewise. - ("l"): Change it from register constraint to constraint. - * config/arc/arc.md (movqi_insn): Remove unsed lp_count constraints. - (movhi_insn): Likewise. - (movsi_insn): Update pattern. - (arc_lp): Likewise. - (dbnz): Likewise. - (stack_tie): Remove 'b' constraint letter. - (R4_REG): Define. - (R9_REG, R15_REG, R16_REG, R25_REG): Likewise. - (R32_REG, R40_REG, R41_REG, R42_REG, R43_REG, R44_REG): Likewise. - (R57_REG, R59_REG, PCL_REG): Likewise. - (ILINK1_REGNUM): Renamed to ILINK1_REG. - (ILINK2_REGNUM): Renamed to ILINK2_REG. - (Rgp): Remove. - (SP_REGS): Likewise. - (Rcw): Remove unused reg classes. - * config/arc/predicates.md (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 - ignore_reg_for_conflicts. - (mark_regno_live): Use HARD_REGISTER_NUM_P macro. Remove return value - and do not guard call to mark_pseudo_live. - (mark_regno_dead): Use HARD_REGISTER_NUM_P macro. Remove return value - and do not guard call to mark_pseudo_dead. - (check_pseudos_live_through_calls): Use HARD_REGISTER_NUM_P macro. - (process_bb_lives): Use HARD_REGISTER_NUM_P and HARD_REGISTER_P macros. - Use new function update_pseudo_point. Handle register copies by - removing the source register from the live set. Handle INOUT operands. - Update to the next program point using the unused_set, dead_set and - start_dying sets. - (lra_create_live_ranges_1): Use HARD_REGISTER_NUM_P macro. - -2018-11-13 David Malcolm - - * builtins.c: Replace "source_location" with "location_t". - * diagnostic-show-locus.c: Likewise. - * diagnostic.c: Likewise. - * dumpfile.c: Likewise. - * gcc-rich-location.h: Likewise. - * genmatch.c: Likewise. - * gimple.h: Likewise. - * gimplify.c: Likewise. - * input.c: Likewise. - * input.h: Likewise. Eliminate the typedef. - * omp-expand.c: Likewise. - * selftest.h: Likewise. - * substring-locations.h (get_source_location_for_substring): - Rename to... - (get_location_within_string): ...this. - * tree-cfg.c: Replace "source_location" with "location_t". - * tree-cfgcleanup.c: Likewise. - * tree-diagnostic.c: Likewise. - * tree-into-ssa.c: Likewise. - * tree-outof-ssa.c: Likewise. - * tree-parloops.c: Likewise. - * tree-phinodes.c: Likewise. - * tree-phinodes.h: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-loop-manip.c: Likewise. - * tree-ssa-phiopt.c: Likewise. - * tree-ssa-phiprop.c: Likewise. - * tree-ssa-threadupdate.c: Likewise. - * tree-ssa.c: Likewise. - * tree-ssa.h: Likewise. - * tree-vect-loop-manip.c: Likewise. - -2018-11-13 Michael Ploujnikov - - * doc/extend.texi: Fix typo in the weakref description. - -2018-11-13 Richard Biener - - PR tree-optimization/86991 - * tree-vect-loop.c (vect_is_slp_reduction): Delay reduction - group building until we have successfully detected the SLP - reduction. - (vect_is_simple_reduction): Remove fixup code here. - -2018-11-13 David Malcolm - - * dumpfile.c (VERIFY_DUMP_ENABLED_P): New macro. - (dump_gimple_stmt): Use it. - (dump_gimple_stmt_loc): Likewise. - (dump_gimple_expr): Likewise. - (dump_gimple_expr_loc): Likewise. - (dump_generic_expr): Likewise. - (dump_generic_expr_loc): Likewise. - (dump_printf): Likewise. - (dump_printf_loc): Likewise. - (dump_dec): Likewise. - (dump_dec): Likewise. - (dump_hex): Likewise. - (dump_symtab_node): Likewise. - * gimple-loop-interchange.cc (tree_loop_interchange::interchange): - Guard dump call with dump_enabled_p. - * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Likewise. - * graphite-optimize-isl.c (optimize_isl): Likewise. - * graphite.c (graphite_transform_loops): Likewise. - * tree-loop-distribution.c (pass_loop_distribution::execute): Likewise. - * tree-parloops.c (parallelize_loops): Likewise. - * tree-ssa-loop-niter.c (number_of_iterations_exit): Likewise. - * tree-vect-data-refs.c (vect_analyze_group_access_1): Likewise. - (vect_prune_runtime_alias_test_list): Likewise. - * tree-vect-loop.c (vect_update_vf_for_slp): Likewise. - (vect_estimate_min_profitable_iters): Likewise. - * tree-vect-slp.c (vect_record_max_nunits): Likewise. - (vect_build_slp_tree_2): Likewise. - (vect_supported_load_permutation_p): Likewise. - (vect_slp_analyze_operations): Likewise. - (vect_slp_analyze_bb_1): Likewise. - (vect_slp_bb): Likewise. - * tree-vect-stmts.c (vect_analyze_stmt): Likewise. - * tree-vectorizer.c (try_vectorize_loop_1): Likewise. - (pass_slp_vectorize::execute): Likewise. - (increase_alignment): Likewise. - -2018-11-13 David Malcolm - - PR ipa/87955 - * ipa-inline.c (report_inline_failed_reason): Guard calls to - cl_target_option_print_diff and cl_optimization_print_diff with - if (dump_file). - -2018-11-13 David Malcolm - - * doc/invoke.texi (-fsave-optimization-record): Note that the - output is compressed. - * optinfo-emit-json.cc: Include . - (optrecord_json_writer::write): Compress the output. - -2018-11-13 Aldy Hernandez - - * tree-vrp.c (value_range_base::dump): Dump type. - Do not use INF nomenclature for 1-bit types. - (dump_value_range): Group all variants to common dumping code. - (debug): New overloaded functions for value_ranges. - (value_range_base::dump): Remove no argument version. - (value_range::dump): Same. - -2018-11-13 Richard Biener - - PR tree-optimization/87931 - * tree-vect-loop.c (vect_is_simple_reduction): Restrict - nested cycles we support to latch computations vectorizable_reduction - handles. - -2018-11-13 Martin Liska - - PR tree-optimization/87885 - * cfghooks.c (account_profile_record): Rename - to ... - (profile_record_check_consistency): ... this. - Calculate missing num_mismatched_freq_in. - (profile_record_account_profile): New function - that calculates time and size of a function. - * cfghooks.h (struct profile_record): Remove - all tuples. - (struct cfg_hooks): Remove after_pass flag. - (account_profile_record): Rename to ... - (profile_record_check_consistency): ... this. - (profile_record_account_profile): New. - * cfgrtl.c (rtl_account_profile_record): Remove - after_pass flag. - * passes.c (check_profile_consistency): Do only - checking. - (account_profile): Calculate size and time of - function only. - (pass_manager::dump_profile_report): Reformat - output. - (execute_one_ipa_transform_pass): Call - consistency check before clean upand call account_profile - after a clean up is done. - (execute_one_pass): Call check_profile_consistency and - account_profile instead of using after_pass flag.. - * tree-cfg.c (gimple_account_profile_record): Likewise. - -2018-11-13 Martin Liska - - PR sanitizer/87930 - * config/i386/i386.c (ix86_option_override_internal): Error - about usage -mabi=ms and -fsanitize={,kernel-}address. - -2018-11-13 Andre Vieira - - * config/aarch64/aarch64.c - (aarch64_vectorize_preferred_vector_alignment): Change return type to - poly_uint64. - (aarch64_simd_vector_alignment_reachable): Adapt to preferred vector - alignment being a poly int. - * doc/tm.texi (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Change - return type to poly_uint64. - * target.def (default_preferred_vector_alignment): Likewise. - * targhooks.c (default_preferred_vector_alignment): Likewise. - * targhooks.h (default_preferred_vector_alignment): Likewise. - * tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise. - (vect_compute_data_ref_alignment): Adapt to vector alignment being a - poly int. - (vect_update_misalignment_for_peel): Likewise. - (vect_enhance_data_refs_alignment): Likewise. - (vect_find_same_alignment_drs): Likewise. - (vect_duplicate_ssa_name_ptr_info): Likewise. - (vect_setup_realignment): Likewise. - (vect_can_force_dr_alignment_p): Change alignment parameter type to - poly_uint64. - * tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a - mask with a compile time variable vector alignment. - (vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly - int. - (vect_do_peeling): Exit early if vector alignment is not constant. - * tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being - a poly int. - (vectorizable_store): Likewise. - (vectorizable_load): Likweise. - * tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a - poly_uint64. - (vect_known_alignment_in_bytes): Adapt to vector alignment being a - poly int. - (vect_can_force_dr_alignment_p): Change alignment parameter type to - poly_uint64. - -2018-11-13 Richard Biener - - PR tree-optimization/87962 - * tree-vect-loop.c (vect_is_simple_reduction): More reliably - detect outer reduction for disqualifying in-loop uses. - -2018-11-13 Richard Biener - - PR tree-optimization/87967 - * tree-vect-loop.c (vect_transform_loop): Also copy PHIs - for constants for the scalar loop. - -2018-11-13 Alan Modra - - * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude - integer constants when -mcmodel=medium. - -2018-11-13 Claudiu Zissulescu - - * config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty. - * config/arc/elf.h (PROFILE_HOOK): Define. - * config/arc/linux.h (PROFILE_HOOK): Likewise. - -2018-11-13 Claudiu Zissulescu - - * config/arc/arc.c (hwloop_optimize): Bailout when detecting a - jump table data in the text section. - -2018-11-13 Claudiu Zissulescu - - * config/arc/arc.c (arc_eh_return_address_location): Repurpose it - to fit the eh_return pattern. - * config/arc/arc.md (eh_return): Define. - (VUNSPEC_ARC_EH_RETURN): Likewise. - * config/arc/arc-protos.h (arc_eh_return_address_location): Match - new implementation. - * config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it. - - -2018-11-13 Claudiu Zissulescu - - * common/config/arc/arc-common.c (arc_option_optimization_table): - Millicode optimization is default on for size optimizations. - * config/arc/arc-protos.h (arc_check_multi): New function. - * config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange. - (ENTER_LEAVE_START_REG): Define. - (ENTER_LEAVE_END_REG): Likewise. - (arc_override_options): Disable millicode when long calls option - is on. - (arc_frame_info): Change it from int to bool. - (arc_compute_frame_size): Clean up. - (arc_save_restore): Remove. - (frame_save_reg): New function. - (frame_restore_reg): Likewise. - (arc_enter_leave_p): Likewise. - (arc_save_callee_saves): Likewise. - (arc_restore_callee_saves): Likewise. - (arc_save_callee_enter): Likewise. - (arc_restore_callee_leave): Likewise. - (arc_save_callee_milli): Likewise. - (arc_restore_callee_milli): Likewise. - (arc_expand_prologue): Reimplement to emit enter/leave - instructions. - (arc_expand_epilogue): Likewise. - (arc_check_multi): New function. - * config/arc/arc.md (push_multi_fp): New pattern. - (push_multi_fp_blink): Likewise. - (pop_multi_fp): Likewise. - (pop_multi_fp_blink): Likewise. - (pop_multi_fp_ret): Likewise. - (pop_multi_fp_blink_ret): Likewise. - * config/arc/arc.opt (mmillicode): Update option. - (mcode-density-frame): New option. - * config/arc/predicates.md (push_multi_operand): New predicate. - (pop_multi_operand): Likewise. - * doc/invoke.texi (ARC): Update ARC options information. - - -2018-11-13 Claudiu Zissulescu - - * config/arc/arc-protos.h (gen_operands_ldd_std): Add. - * config/arc/arc.c (operands_ok_ldd_std): New function. - (mem_ok_for_ldd_std): Likewise. - (gen_operands_ldd_std): Likewise. - * config/arc/arc.md: Add peephole2 rules for std/ldd. - -2018-11-13 Eric Botcazou - - * toplev.c (output_stack_usage): Turn test on flag_stack_usage into - test on stack_usage_file. - (lang_dependent_init): Do not open the .su file if generating LTO. - -2018-11-13 Jakub Jelinek - - PR rtl-optimization/87918 - * simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use - simplify_gen_relational rather than simplify_gen_binary. - -2018-11-13 Richard Biener - - * tree-ssanames.h (set_range_info): Use value_range_base. - (get_range_info): Likewise. - * tree-ssanames.c (set_range_info): Likewise. - (get_range_info): Likewise. - * tree-vrp.c (value_range_base::union_helper): Split - out common parts of value_range[_base]::union_. - (value_range_base::union_): Update. - (value_range::union_): Likewise. - (determine_value_range_1): Use value_range_base. - (determine_value_range): Likewise. - * tree-vrp.h (value_range_base::union_helper): Move ... - (value_range::union_helper): ... from here. - -2018-11-13 Alan Modra - - * config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate - offset for PRE_DEC. - (rs6000_secondary_reload_gpr): Don't call find_replacement. - -2018-11-13 Sandra Loosemore - - PR middle-end/59634 - * doc/invoke.texi (Optimize Options): Clarify that the - l1-cache-line-size, l1-cache-size, and l2-cache-size parameters - apply to data cache size. - -2018-11-13 Alan Modra - - * config/rs6000/predicates.md (logical_const_operand), - (logical_operand): Correct comment. - * config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix. - -2018-11-13 Alan Modra - - * config/rs6000/rs6000.md (addsi3_high): Prefix with '*'. - -2018-11-13 Alan Modra - - * gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint - description. - * config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case - covered by alternative. - (movcc_internal1): Ignore h for register preference. - (mov_hardfloat64): Likewise. - (mov_softfloat): Ignore c, l, h for register preference. - -2018-11-12 Sandra Loosemore - - PR preprocessor/47823 - * doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once - documentation to... - (Pragmas): ...here. - * doc/extend.texi (Pragmas): Note additional pragmas documented - in the CPP manual. - -2018-11-13 Kugan Vivekanandarajah - - PR middle-end/86677 - PR middle-end/87528 - * tree-scalar-evolution.c (expression_expensive_p): Make - BUILTIN POPCOUNT as expensive when backend does not define it. - -2018-11-12 Fredrik Noring - - * config.gcc: Update with-llsc defaults for MIPS r5900. - -2018-11-12 Martin Liska - - PR gcov-profile/87442 - * common.opt: Add -fprofile-filter-files and -fprofile-exclude-files - options. - * doc/invoke.texi: Document them. - * tree-profile.c (parse_profile_filter): New. - (parse_profile_file_filtering): Likewise. - (release_profile_file_filtering): Likewise. - (include_source_file_for_profile): Likewise. - (tree_profiling): Filter source files based on the - newly added options. - -2018-11-12 Martin Liska - - PR target/87903 - * doc/extend.texi: Add missing values for __builtin_cpu_is and - __builtin_cpu_supports for x86 target. - -2018-11-12 Sandra Loosemore - - PR middle-end/21110 - * doc/rtl.texi (Constants): Clarify that mode of "high" doesn't - have to be Pmode. - (Arithmetic): Likewise for "lo_sum". - -2018-11-12 Renlin Li - - PR target/87815 - * dse.c (get_stored_val): Add check for compile-time constantness - of gap. - -2018-11-12 Sudakshina Das - - * config/arm/arm-cpus.in (armv8_5, sb, predres): New features. - (ARMv8_5a): New fgroup. - (armv8.5-a): New arch. - (armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options - sb and predres. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/t-aprofile: Add matching rules for -march=armv8.5-a - * config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a. - * config/arm/t-multilib (v8_5_a_simd_variants): New variable. - Add matching rules for -march=armv8.5-a and extensions. - * doc/invoke.texi (ARM options): Document -march=armv8.5-a. - Add sb and predres to all armv8-a except armv8.5-a. - -2018-11-12 Richard Biener - - * tree-vrp.h (value_range[_base]::set): Make public. Provide - overload for single value. - (value_range[_base]::set_nonnull): New. - (value_range[_base]::set_null): Likewise. - (value_range): Document bitmap copying behavior, mark - copy constructor and assignment operator deleted. - (value_range::move): New. - (value_range::set_and_canonicalize): Default bitmap to zero. - (set_value_range_to_nonnull): Remove. - (set_value_range_to_null): Likewise. - (set_value_range): Likewise. - (set_value_range_to_value): Likewise. - (extract_range_from_unary_expr): Work on value_range_base. - (extract_range_from_binary_expr_1): Likewise. Rename to... - (extract_range_from_binary_expr): ... this. - * tree-vrp.c (value_range::update): Clear equiv bitmap - if required. - (value_range::move): New, move equiv bitmap. - (value_range_base::set_undefined): Avoid assignment. - (value_range::set_undefined): Likewise. - (value_range_base::set_varying): Likewise. - (value_range::set_varying): Likewise. - (set_value_range): Remove. - (value_range_base::set): New overload for value. - (value_range::set): Likewise. - (set_value_range_to_nonnull): Remove. - (value_range_base::set_nonnull): New. - (value_range::set_nonnull): Likewise. - (set_value_range_to_null): Remove. - (value_range_base::set_null): New. - (value_range::set_null): Likewise. - (range_is_null): Work on value_range_base. - (range_is_nonnull): Likewise. - (ranges_from_anti_range): Likewise. - (extract_range_into_wide_ints): Likewise. - (extract_range_from_multiplicative_op): Likewise. - (extract_range_from_binary_expr): Likewise. Update for API changes. - (extract_range_from_unary_expr): Likewise. Remove OBJ_TYPE_REF - handling. - (value_range::intersect_helper): Avoid copy and assignment. - (value_range::union_helper): Likewise. - (determine_value_range_1): Adjust. - * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range): - Avoid assignment by using move. - (evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment. - * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): - Likewise. - * tree-ssanames.c (get_range_info): Likewise. - * vr-values.h (vr_values::get_vr_for_comparison): Adjust API. - * vr-values.c (vr_values::get_value_range): Adjust. - (vr_values::update_value_range): Likewise. - (symbolic_range_based_on_p): Work on value_range_base. - (vr_values::extract_range_from_binary_expr): Use value_range_base. - (vr_values::extract_range_from_unary_expr): Likewise. - (vr_values::extract_range_from_cond_expr): Avoid assignment. - (vr_values::extract_range_from_comparison): Adjust. - (vr_values::check_for_binary_op_overflow): Use value_range_base. - (vr_values::extract_range_basic): Adjust. - (vr_values::adjust_range_with_scev): Likewise. - (vr_values::vrp_visit_assignment_or_call): Likewise. - (vr_values::get_vr_for_comparison): Change API to avoid - assignment and copy construction. - (vr_values::compare_name_with_value): Adjust accordingly. - (vr_values::compare_names): Likewise. - (vr_values::extract_range_from_phi_node): Avoid assignment and - bogus in-place modify of equiv bitmap. - (vr_values::simplify_bit_ops_using_ranges): Use value_range_base. - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust - for extract_range_from_unary_expr API change. - * ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise. - -2018-11-12 Eric Botcazou - - * config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate. - -2018-11-12 Richard Biener - - * tree-vrp.h (value_range_base::symbolic_p, - value_range_base::constant_p, value_range_base::zero_p, - value_range_base::singleton_p): Move from value_range. - (value_range::dump): Add. - * gimple-ssa-evrp-analyze.c - (evrp_range_analyzer::record_ranges_from_phis): Use set_varying. - * ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range. - * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): - Use set_varying. - * tree-vrp.c (value_range::symbolic_p): Move to value_range_base. - (value_range::constant_p): Likewise. - (value_range::singleton_p): Likewise. - (value_range_base::dump): Add. - (set_value_range_to_undefined): Remove. - (set_value_range_to_varying): Likewise. - (range_int_cst_p): Take value_range_base argument. - (range_int_cst_singleton_p): Likewise. - (value_range_constant_singleton): Likewise. - (vrp_set_zero_nonzero_bits): Likewise. - (extract_range_from_multiplicative_op): Use set_varying. - (extract_range_from_binary_expr_1): Likewise. Use set_undefined. - (extract_range_from_unary_expr): Likewise. - (dump_value_range_base): Change to overload of dump_value_range. - (vrp_prop::vrp_initialize): Use set_varying and set_undefined. - (vrp_prop::visit_stmt): Likewise. - (value_range::intersect_helper): Likewise. - (value_range::union_helper): Likewise. - (determine_value_range_1): Likewise. - -2018-11-12 Richard Biener - - * tree-vrp.c (set_value_range_to_nonnull): Clear equiv. - (set_value_range_to_null): Likewise. - * vr-values.c (vr_values::extract_range_from_comparison): - Clear equiv for constant singleton ranges. - -2018-11-12 Wei Xiao - - * config/i386/sse.md: Combine VFIXUPIMM* patterns - (_fixupimm_maskz): Update. - (_fixupimm): Update. - (_fixupimm_mask): Remove. - (avx512f_sfixupimm_maskz): Update. - (avx512f_sfixupimm): Update. - (avx512f_sfixupimm_mask): Remove. - -2018-11-11 Sandra Loosemore - - PR c/69502 - * doc/extend.texi (Common Type Attributes): For the align type - attribute, copy language about decreasing alignment from the - corresponding variable attribute. - -2018-11-11 Xianmiao Qu - - * config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle - -frounding-math. - -2018-11-11 Sandra Loosemore - - PR c++/43105 - * doc/invoke.texi (C++ Dialect Options): Add warning about mixing - -frtti and -fno-rtti code. - -2018-11-11 Sandra Loosemore - - PR c/26366 - * doc/extend.texi (Other Builtins): Document probability associated - with __builtin_expect. - -2018-11-11 Uros Bizjak - - PR target/87928 - * config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI - instead of (TARGET_64BIT && ix86_abi == MS_ABI). - * config/i386/darwin.h (STACK_BOUNDARY): Ditto. - * config/i386/cygming.h (STACK_BOUNDARY): Remove. - -2018-11-11 Xianmiao Qu - - * config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile. - -2018-11-11 Xianmiao Qu - - * config/csky/csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. - -2018-11-11 Richard Biener - - * tree-vrp.h (class value_range_base): New base class for - value_range containing all but the m_equiv member. - (dump_value_range_base): Add. - (range_includes_zero_p): Work on value_range_base. - * tree-vrp.c (value_range_base::set): Split out base handling - from... - (value_range::set): this. - (value_range::set_equiv): New. - (value_range_base::value_range_base): New constructors. - (value_range_base::check): Split out base handling from... - (value_range::check): this. - (value_range::equal_p): Refactor in terms of - ignore_equivs_equal_p which is now member of the base. - (value_range_base::set_undefined): New. - (value_range_base::set_varying): Likewise. - (value_range_base::dump):Split out base handling from... - (value_range::dump): this. - (value_range_base::set_and_canonicalize): Split out base handling - from... - (value_range::set_and_canonicalize): this. - (value_range_base::union_): New. - * ipa-prop.h (struct ipa_jump_func): Use value_range_base * - for m_vr. - * ipa-cp.c (class ipcp_vr_lattice): Use value_range_base - instead of value_range everywhere. - (ipcp_vr_lattice::print): Use dump_value_range_base. - (ipcp_vr_lattice::meet_with): Adjust. - (ipcp_vr_lattice::meet_with_1): Likewise. - (ipa_vr_operation_and_type_effects): Likewise. - (propagate_vr_across_jump_function): Likewise. - * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Likewise. - (ipa_get_value_range): Likewise. - (ipa_set_jfunc_vr): Likewise. - (ipa_compute_jump_functions_for_edge): Likewise. - -2018-11-10 Sandra Loosemore - - PR middle-end/65703 - * doc/invoke.texi (Optimize Options): Add @opindex entries - for the positive forms of -fno-xxx and -mno-xxx options - that were lacking them. - -2018-11-10 Segher Boessenkool - - * combine.c (make_more_copies): Only make an intermediate copy if the - dest of a move is a pseudo. - -2018-11-09 Maya Rashish - - PR target/87221 - * config/netbsd-elf.h (NETBSD_STARTFILE_SPEC): Use crtbeginS.o for PIE. - (NETBSD_ENDFILE_SPEC): Use crtendS.o for PIE. - -2018-11-09 Sandra Loosemore - - PR driver/41179 - PR middle-end/65703 - * doc/invoke.texi (Optimize Options): Clarify default behavior - for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg. - -2018-11-09 Bernd Edlinger - - PR tree-optimization/87940 - * expr.c (string_constant): Don't strip NOPS in subexpressions. - Fold PLUS_EXPR correctly. - -2018-11-09 Ilya Leoshkevich - - PR target/87762 - * config/s390/s390.c (s390_safe_relative_long_p): New function. - (annotate_constant_pool_refs): Skip insns which support - relative addressing. - (annotate_constant_pool_refs_1): New helper function. - (find_constant_pool_ref): Skip insns which support relative - addression. - (find_constant_pool_ref_1): New helper function. - (replace_constant_pool_ref): Skip insns which support - relative addressing. - (replace_constant_pool_ref_1): New helper function. - (s390_mainpool_start): Adapt to the new signature. - (s390_mainpool_finish): Likewise. - (s390_chunkify_start): Likewise. - (s390_chunkify_finish): Likewise. - (pass_s390_early_mach::execute): Likewise. - (s390_prologue_plus_offset): Likewise. - (s390_emit_prologue): Likewise. - (s390_emit_epilogue): Likewise. - -2018-11-09 Jakub Jelinek - - * gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid - but unsupported lastprivate with conditional modifier. - -2018-11-09 Jeff Law - - * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle - unused argument better. Add gcc_unreachable to silence warning. - -2018-11-09 Martin Sebor - - PR middle-end/81824 - * attribs.c (has_attribute): New helper function. - (decls_mismatched_attributes, maybe_diag_alias_attributes): Same. - * attribs.h (decls_mismatched_attributes): Declare. - * cgraphunit.c (handle_alias_pairs): Call maybe_diag_alias_attributes. - (maybe_diag_incompatible_alias): Use OPT_Wattribute_alias_. - * common.opt (-Wattribute-alias): Take an argument. - (-Wno-attribute-alias): New option. - * doc/extend.texi (Common Function Attributes): Document copy. - (Common Variable Attributes): Same. - * doc/invoke.texi (-Wmissing-attributes): Document enhancement. - (-Wattribute-alias): Document new option argument. - -2018-11-09 Richard Earnshaw - - * config/arm/parsecpu.awk (/alias/): Tighten invisible alias - matching criteria. Remove unused array initializer. - -2018-11-09 Bill Schmidt - Jinsong Ji - - * config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix incorrect - constraints by introducing a new temporary. - (_mm_cvtss_si64): Likewise. - -2018-11-09 Martin Liska - - * common.opt: Add -fipa-stack-alignment flag. - * doc/invoke.texi: Document it. - * final.c (rest_of_clean_state): Guard stack - shrinking with flag. - -2018-11-09 Martin Liska - - * cgraph.h (ipa_discover_readonly_nonaddressable_vars): Rename - to ... - (ipa_discover_variable_flags): ... this. - * common.opt: Come up with new flag -fipa-reference-addressable. - * doc/invoke.texi: Document it. - * ipa-reference.c (propagate): Call the renamed fn. - * ipa-visibility.c (whole_program_function_and_variable_visibility): - Likewise. - * ipa.c (ipa_discover_readonly_nonaddressable_vars): Renamed to - ... - (ipa_discover_variable_flags): ... this. Discover - non-addressable variables only with the newly added flag. - * opts.c: Enable the newly added flag with -O1 and higher - optimization level. - -2018-11-09 David Malcolm - - * json.cc (selftest::test_writing_literals): Fix comment. - -2018-11-09 Martin Liska - - * config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy - string to a stack buffer. - (aarch64_parse_cpu): Likewise. - (aarch64_parse_tune): Likewise. - -2018-11-09 Richard Biener - - PR tree-optimization/87953 - * tree-vect-loop.c (vectorizable_reduction): For analysis - always pass ops[0] to vectorizable_condition. - -2018-11-09 Stafford Horne - Richard Henderson - Joel Sherrill - - * common/config/or1k/or1k-common.c: New file. - * config/or1k/*: New. - * config.gcc (or1k*-*-*): New. - * configure.ac (or1k*-*-*): New test for openrisc tls. - * configure: Regenerated. - * doc/install.texi: Document OpenRISC triplets. - * doc/invoke.texi: Document OpenRISC arguments. - * doc/md.texi: Document OpenRISC. - -2018-11-09 Richard Earnshaw - - * config/arm/arm-cpus.in (arm7tdmi): Add an alias for arm7tdmi-s. - (arm7tdmi-s): Delete CPU. - (arm710t): Add aliases for arm720t and arm740t. - (arm720t, arm740t): Delete CPUs. - (arm920t): Add aliases for arm920, arm922t and arm940t. - (arm920, arm922t, arm940t): Delete CPUs. - (arm10tdmi): Add alias for arm1020t. - (arm1020t): Delete CPU. - (arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s. - (arm946e-s, arm966e-s, arm968e-s): Delete CPUs. - (arm10e): Add aliases for arm1020e and arm1022e. - (arm1020e, arm1022e): Delete CPU. - * config/arm/arm.md (generic_sched): Remove entries that are now - handled by aliases. - (generic_vfp): Likewise. - * config/arm/arm1020e.md: Simplify tuning selection based on alias - changes. - * config/arm/arm-tune.md: Regenerated. - * config/arm/arm-tables.opt: Regenerated. - -2018-11-09 Richard Biener - - PR tree-optimization/87621 - * tree-vect-loop.c (vectorizable_reduction): Handle reduction - op with only phi inputs. - * tree-ssa-loop-ch.c: Include tree-ssa-sccvn.h. - (ch_base::copy_headers): Run CSE on copied loop headers. - (pass_ch_vect::process_loop_p): Simplify. - -2018-11-09 Alexandre Oliva - - * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust - for non-w64 x86_64 biarch. - -2018-11-09 Alexandre Oliva - - PR rtl-optimization/86438 - * compare-elim.c (try_eliminate_compare): Use SET_SRC instead - of in_b for the compare if in_b is SET_DEST. - - PR target/87793 - * config/i386/i386.c (ix86_const_not_ok_for_debug_p): Reject - non-toplevel UNSPEC. - -2018-11-08 Aldy Hernandez - - * tree-vrp.c (value_range::check): Do not access internals - directly. - (value_range::singleton_p): Same. - (value_range::type): Same. - (vrp_finalize): Use value_range API. - -2018-11-08 Aldy Hernandez - - * tree-vrp.c (may_contain_p): Do not access m_min/m_max directly. - -2018-11-08 Aldy Hernandez - - * vr-values.c (vr_values::get_value_range): Use value_range API - instead of piecing together ranges. - (vr_values::update_value_range): Same. - -2018-11-08 Aldy Hernandez - - * gimple-fold.c (size_must_be_zero_p): Use value_range API instead - of performing ad-hoc calculations. - * tree-ssanames.c (set_range_info): New overloaded function - accepting value_range &. - (get_range_info): Same. - * tree-ssanames.h (set_range_info_raw): Remove. - (set_range_info): New prototype. - (get_range_info): Same. - * tree-vrp.h (value_range::null_p): Rename to zero_p. - * tree-vrp.c (value_range::null_p): Same. - -2018-11-09 Jan Hubicka - - * tree.c (fld_type_variant_equal_p): Test user align flag. - (flt_type_variant): Copy user align flag. - (fld_incomplete_type_of): Clear it. - -2018-11-09 Prathamesh Kulkarni - - * config/arm/neon.md (div3): New pattern. - -2018-11-08 Andi Kleen - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET): New. - (OPTION_MASK_ISA_PTWRITE_UNSET): New. - (ix86_handle_option): Handle OPT_mptwrite. - * config/i386/cpuid.h (bit_PTWRITE): Add. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect ptwrite. - * config/i386/i386-builtin.def (BDESC): Add ptwrite32/64. - * config/i386/i386-c.c (ix86_target_macros_internal): Define __PTWRITE__. - * config/i386/i386.c (ix86_target_string): Handle ptwrite. - (ix86_option_override_internal): Handle PTA_PTWRITE. - (ix86_valid_target_attribute_inner_p): Define ptwrite. - (def_builtin2): Force UINT64 to be 64bit only. - * config/i386/i386.h (TARGET_PTWRITE): Add. - (TARGET_PTWRITE_P): Add. - (PTA_PTWRITE): Add. - * config/i386/i386.md: Define ptwrite. - * config/i386/i386.opt: Add -mptwrite. - * config/i386/immintrin.h (_ptwrite64): Add. - (_ptwrite32): Add - * doc/extend.texi: Document __builtin_ia32_ptwrite*. - * doc/invoke.texi: Document -mptwrite. - -2018-11-08 Peter Bergner - - PR rtl-optimization/87600 - * cfgexpand.c (expand_asm_stmt): Catch illegal asm constraint usage. - * lra-constraints.c (process_alt_operands): Skip illegal hard - register usage. Prefer reloading non hard register operands. - -2018-11-08 Sandra Loosemore - - PR other/36572 - * doc/invoke.texi (Optimize Options): Clarify default behavior - for -fno-sched-interblock and -fno-sched-spec. - -2018-11-08 Roman Geissler - - * collect2.c (linker_select): Add USE_LLD_LD. - (ld_suffixes): Add ld.lld. - (main): Handle -fuse-ld=lld. - * common.opt (-fuse-ld=lld): New option. - * doc/invoke.texi (-fuse-ld=lld): Document. - * opts.c (common_handle_option): Handle OPT_fuse_ld_lld. - -2018-11-08 Paul Koning - - * config/pdp11/constraints.md: Add "Z" series constraints for use - with pre-dec and post-inc addressing. - * config/pdp11/pdp11-protos.m (expand_block_move): Delete. - (pdp11_expand_operands): Add int argument (word count). - (pdp11_sp_frame_offset): Delete. - (pdp11_cmp_length): New function. - (pushpop_regeq): New function. - * config/pdp11/pdp11.c (TARGET_STACK_PROTECT_RUNTIME_ENABLED_P): - Add hook. - (pdp11_expand_prologue, pdp11_expand_epilogue): Rewrite for new - frame layout. - (pdp11_initial_elimination_offset): Ditto. - (pdp11_expand_operands): Add word count argument. Bugfixes. - (output_move_multiple): Change how pointer adjustment is done. - (pdp11_gen_int_label): Correct format. - (output_ascii): Ditto. - (pdp11_asm_output_var): Add code for DEC assembler case. - (pdp11_asm_print_operand): Bugfix for CONST_DOUBLE holding integer - value. - (legitimate_const_double_p): Ditto. - (pdp11_register_move_cost): Adjust for new register classes. - (pdp11_regno_reg_class): Ditto. - (expand_block_move): Delete. - (pushpop_regeq): New function. - (pdp11_legitimate_address_p): Bugfix in check for constant - offset. - (pdp11_sp_frame_offset): Delete. - (pdp11_reg_save_size): New helper function for new frame layout. - (output_addr_const_pdp11): Remove CONST_DOUBLE case. - (pdp11_expand_shift): Bugfix in check for constant shift count. - (pdp11_shift_length): Ditto. - (pdp11_assemble_shift): Copy input to pdp11_expand_operands. - (pdp11_cmp_length): New function. - * config/pdp11/pdp11.h (TARGET_CPU_CPP_BUILTINS): Add macros for - some compile options. - (FIXED_REGISTERS): Remove HARD_FRAME_POINTER_REGNUM. - (CALL_USED_REGISTERS): Ditto. - (ELIMINABLE_REGS): Ditto. - (REGISTER_NAMES): Ditto. - (reg_class): Add classes NOTR0_REG through NOTSP_REG for use by Z - constraints. - (REG_CLASS_NAMES): Ditto. - (REG_CLASS_CONTENTS): Ditto. Also remove - HARD_FRAME_POINTER_REGNUM. - (CPU_REG_CLASS): New macro. - (CLASS_MAX_NREGS): Adjust for new register classes. - (FUNCTION_PROFILER): Make no-op. - (may_call_alloca): Remove unused declaration. - (ASM_OUTPUT_ALIGN): Add workaround for PR87795. - (ASM_OUTPUT_SKIP): Fix format. - * config/pdp11/pdp11.md (unspecv): Add UNSPECV_MOVMEM. - (HARD_FRAME_POINTER_REGNUM): Remove. - (return): Delete. - (*rts): Rename. Remove epilogue related checks. - (cmpsi, cmpdi): New insn. - (cbranch4): Change to apply to SI and DI modes as well. - (mov): Change constraints to enforce that push/pop - destination cannot use the same register as source. - (*mov): Ditto. - (movmemhi, movmemhi1, movmemhi_nocc): Change to expand block move - at assembly output rather than as RTL expander. - (zero_extendqihi2): Bugfix in check for same registers. - (adddi3_nocc): Bugfix in check for constant operand. - (addsi3_nocc): Ditto. - (subdi3_nocc): Ditto. - (subsi3_nocc): Ditto. - (negdi2_nocc): Copy input to pdp11_expand_operands. - (negsi2_nocc): Ditto. - (bswap2_nocc): Ditto. - * config/pdp11/pdp11.opt (mlra): Fix documentation. - * config/pdp11/t-pdp11: Use -Os. - -2018-11-08 Richard Earnshaw - - * config/arm/parsecpu.awk (/alias/): New parsing rule. - (/begin cpu/): Check that the cpu name hasn't been previously defined. - (gen_comm_data): Print out CPU alias tables. - (check_cpu): Match aliases when checking the CPU name. - * config/arm/arm-protos.h (cpu_alias): New structure. - (cpu_option): Add entry for aliases. - * config/arm/arm-cpus.in (strongarm): Add aliases for strongarm110 - strongarm1100 and strongarm1110. - (strongarm110, strongarm1100, strongarm1110): Delete CPU entries. - (config/arm/arm-generic.md): Remove redundant references to - strongarm110, strongarm1100 and strongarm1110. - * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option): - Scan aliases for additional hints. - (arm_parse_cpu_option_name): Also match a cpu name against the list - of aliases. - * config/arm/arm-tables.opt: Regenerated. - * config/arm/arm-tune.md: Regenerated. - -2018-11-08 Jakub Jelinek - - * builtin-types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR, - BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT, - BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, - BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR, - BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, - BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New. - * gengtype.c (open_base_files): Add omp-general.h. - * gimple.c (gimple_build_omp_critical): - (gimple_build_omp_taskgroup): Add CLAUSES argument. Call - gimple_omp_taskgroup_set_clauses. - (gimple_build_omp_atomic_load): Add mo argument, call - gimple_omp_atomic_set_memory_order. - (gimple_build_omp_atomic_store): Likewise. - (gimple_copy): Adjust handling of GIMPLE_OMP_TASKGROUP. - * gimple.def (GIMPLE_OMP_TASKGROUP): Use GSS_OMP_SINGLE_LAYOUT - instead of GSS_OMP. - (GIMPLE_OMP_TEAMS): Use GSS_OMP_PARALLEL_LAYOUT instead - of GSS_OMP_SINGLE_LAYOUT, adjust comments. - * gimple.h (enum gf_mask): Add GF_OMP_TEAMS_HOST, GF_OMP_TASK_TASKWAIT - and GF_OMP_ATOMIC_MEMORY_ORDER. Remove GF_OMP_ATOMIC_SEQ_CST, use - different value for GF_OMP_ATOMIC_NEED_VALUE. - (struct gimple_statement_omp_taskreg): Add GIMPLE_OMP_TEAMS to - comments. - (struct gimple_statement_omp_single_layout): And remove here. - (struct gomp_teams): Inherit from gimple_statement_omp_taskreg rather - than gimple_statement_omp_single_layout. - (is_a_helper ::test): Allow - GIMPLE_OMP_TEAMS. - (is_a_helper ::test): Likewise. - (gimple_omp_subcode): Formatting fix. - (gimple_omp_teams_child_fn, gimple_omp_teams_child_fn_ptr, - gimple_omp_teams_set_child_fn, gimple_omp_teams_data_arg, - gimple_omp_teams_data_arg_ptr, gimple_omp_teams_set_data_arg, - gimple_omp_teams_host, gimple_omp_teams_set_host, - gimple_omp_task_taskwait_p, gimple_omp_task_set_taskwait_p, - gimple_omp_taskgroup_clauses, gimple_omp_taskgroup_clauses_ptr, - gimple_omp_taskgroup_set_clauses): New inline functions. - (gimple_build_omp_atomic_load): Add enum omp_memory_order argument. - (gimple_build_omp_atomic_store): Likewise. - (gimple_omp_atomic_seq_cst_p): Remove. - (gimple_omp_atomic_memory_order): New function. - (gimple_omp_atomic_set_seq_cst): Remove. - (gimple_omp_atomic_set_memory_order): New function. - (gimple_build_omp_taskgroup): Add clauses argument. - * gimple-pretty-print.c (dump_gimple_omp_taskgroup): New function. - (dump_gimple_omp_task): Print taskwait with depend clauses. - (dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Use - dump_omp_atomic_memory_order. - (pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP. - * gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP_ALLOC_ONLY, - GOVD_MAP_FROM_ONLY and GOVD_NONTEMPORAL. - (enum omp_region_type): Reserve bits 1 and 2 for auxiliary flags, - renumber values of most of ORT_* enumerators, add ORT_HOST_TEAMS, - ORT_COMBINED_HOST_TEAMS, ORT_TASKGROUP, ORT_TASKLOOP and - ORT_UNTIED_TASKLOOP enumerators. - (enum gimplify_defaultmap_kind): New. - (struct gimplify_omp_ctx): Remove target_map_scalars_firstprivate and - target_map_pointers_as_0len_arrays members, add defaultmap. - (new_omp_context): Initialize defaultmap member. - (gimple_add_tmp_var): Handle ORT_TASKGROUP like ORT_WORKSHARE. - (maybe_fold_stmt): Don't fold even in host teams regions. - (omp_firstprivatize_variable): Handle ORT_TASKGROUP like - ORT_WORKSHARE. Test ctx->defaultmap[GDMK_SCALAR] instead of - ctx->omp_firstprivatize_variable. - (omp_add_variable): Don't add private/firstprivate for VLAs in - ORT_TASKGROUP. - (omp_default_clause): Print "taskloop" rather than "task" if - ORT_*TASKLOOP. - (omp_notice_variable): Handle ORT_TASKGROUP like ORT_WORKSHARE. - Handle new defaultmap clause kinds. - (omp_is_private): Handle ORT_TASKGROUP like ORT_WORKSHARE. Allow simd - iterator to be lastprivate or private. Fix up diagnostics if linear - is used on collapse>1 simd iterator. - (omp_check_private): Handle ORT_TASKGROUP like ORT_WORKSHARE. - (gimplify_omp_depend): New function. - (gimplify_scan_omp_clauses): Add shared clause on parallel for - combined parallel master taskloop{, simd} if taskloop has - firstprivate, lastprivate or reduction clause. Handle - OMP_CLAUSE_REDUCTION_TASK diagnostics. Adjust tests for - ORT_COMBINED_TEAMS. Gimplify depend clauses with iterators. Handle - cancel and simd OMP_CLAUSE_IF_MODIFIERs. Handle - OMP_CLAUSE_NONTEMPORAL. Handle new defaultmap clause kinds. Handle - OMP_CLAUSE_{TASK,IN}_REDUCTION. Diagnose invalid conditional - lastprivate. - (gimplify_adjust_omp_clauses_1): Ignore GOVD_NONTEMPORAL. Handle - GOVD_MAP_ALLOC_ONLY and GOVD_MAP_FROM_ONLY. - (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_NONTEMPORAL. Handle - OMP_CLAUSE_{TASK,IN}_REDUCTION. - (gimplify_omp_task): Handle taskwait with depend clauses. - (gimplify_omp_for): Add shared clause on parallel for combined - parallel master taskloop{, simd} if taskloop has firstprivate, - lastprivate or reduction clause. Use ORT_TASKLOOP or - ORT_UNTIED_TASKLOOP instead of ORT_TASK or ORT_UNTIED_TASK. Adjust - tests for ORT_COMBINED_TEAMS. Handle C++ range for loops with - NULL TREE_PURPOSE in OMP_FOR_ORIG_DECLS. Firstprivatize - __for_end and __for_range temporaries on OMP_PARALLEL for - distribute parallel for{, simd}. Move OMP_CLAUSE_REDUCTION - and OMP_CLAUSE_IN_REDUCTION from taskloop to the task construct - sandwiched in between two taskloops. - (computable_teams_clause): Test ctx->defaultmap[GDMK_SCALAR] - instead of ctx->omp_firstprivatize_variable. - (gimplify_omp_workshare): Set ort to ORT_HOST_TEAMS or - ORT_COMBINED_HOST_TEAMS if not inside of target construct. If - host teams, use gimplify_and_return_first etc. for body like - for target or target data constructs, and at the end call - gimple_omp_teams_set_host on the GIMPLE_OMP_TEAMS object. - (gimplify_omp_atomic): Use OMP_ATOMIC_MEMORY_ORDER instead - of OMP_ATOMIC_SEQ_CST, pass it as new argument to - gimple_build_omp_atomic_load and gimple_build_omp_atomic_store, remove - gimple_omp_atomic_set_seq_cst calls. - (gimplify_expr) : Move handling into a separate - case, handle taskgroup clauses. - * lto-streamer-out.c (hash_tree): Handle - OMP_CLAUSE_{TASK,IN}_REDUCTION. - * Makefile.in (GTFILES): Add omp-general.h. - * omp-builtins.def (BUILT_IN_GOMP_TASKWAIT_DEPEND, - BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_LOOP_START, BUILT_IN_GOMP_LOOP_ORDERED_START, - BUILT_IN_GOMP_LOOP_DOACROSS_START, - BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_NEXT, - BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_NEXT, - BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START, - BUILT_IN_GOMP_LOOP_ULL_START, BUILT_IN_GOMP_LOOP_ULL_ORDERED_START, - BUILT_IN_GOMP_LOOP_ULL_DOACROSS_START, - BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_NEXT, - BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_NEXT, - BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME, - BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME, - BUILT_IN_GOMP_PARALLEL_REDUCTIONS, BUILT_IN_GOMP_SECTIONS2_START, - BUILT_IN_GOMP_TEAMS_REG, BUILT_IN_GOMP_TASKGROUP_REDUCTION_REGISTER, - BUILT_IN_GOMP_TASKGROUP_REDUCTION_UNREGISTER, - BUILT_IN_GOMP_TASK_REDUCTION_REMAP, - BUILT_IN_GOMP_WORKSHARE_TASK_REDUCTION_UNREGISTER): New builtins. - * omp-expand.c (workshare_safe_to_combine_p): Return false for - non-worksharing loops. - (omp_adjust_chunk_size): Don't adjust anything if chunk_size is zero. - (determine_parallel_type): Don't combine parallel with worksharing - which has _reductemp_ clause. - (expand_parallel_call): Emit the GOMP_*nonmonotonic_runtime* or - GOMP_*maybe_nonmonotonic_runtime* builtins instead of GOMP_*runtime* - if there is nonmonotonic modifier or if there is no modifier and no - ordered clause. For dynamic and guided schedule without monotonic - and nonmonotonic modifier, default to nonmonotonic. - (expand_omp_for): Likewise. Adjust expand_omp_for_generic caller, use - GOMP_loop{,_ull}{,_ordered,_doacross}_start builtins if there are - task reductions. - (expand_task_call): Add GOMP_TASK_FLAG_REDUCTION flag to flags if - there are any reduction clauses. - (expand_taskwait_call): New function. - (expand_teams_call): New function. - (expand_omp_taskreg): Allow GIMPLE_OMP_TEAMS and call - expand_teams_call for it. Formatting fix. Handle taskwait with - depend clauses. - (expand_omp_for_generic): Add SCHED_ARG argument. Handle expansion - of worksharing loops with task reductions. - (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle - expansion of worksharing loops with task reductions. - (expand_omp_sections): Handle expansion of sections with task - reductions. - (expand_omp_synch): For host teams call expand_omp_taskreg. - (omp_memory_order_to_memmodel): New function. - (expand_omp_atomic_load, expand_omp_atomic_store, - expand_omp_atomic_fetch_op): Use it and gimple_omp_atomic_memory_order - instead of gimple_omp_atomic_seq_cst_p. - (build_omp_regions_1, omp_make_gimple_edges): Treat taskwait with - depend clauses as a standalone directive. - * omp-general.c (enum omp_requires): New variable. - (omp_extract_for_data): Initialize have_reductemp member. Allow - NE_EXPR even in OpenMP loops, transform them into LT_EXPR or - GT_EXPR loops depending on incr sign. Formatting fixes. - * omp-general.h (struct omp_for_data): Add have_reductemp member. - (enum omp_requires): New enum. - (omp_requires_mask): Declare. - * omp-grid.c (grid_eliminate_combined_simd_part): Formatting fix. - Fix comment typos. - * omp-low.c (struct omp_context): Add task_reductions and - task_reduction_map fields. - (is_host_teams_ctx): New function. - (is_taskreg_ctx): Return true also if is_host_teams_ctx. - (use_pointer_for_field): Use is_global_var instead of - TREE_STATIC || DECL_EXTERNAL, and apply only if not privatized - in outer contexts. - (build_outer_var_ref): Ignore taskgroup outer contexts. - (delete_omp_context): Release task_reductions and task_reduction_map. - (scan_sharing_clauses): Don't add any fields for reduction clause on - taskloop. Handle OMP_CLAUSE__REDUCTEMP_. Handle - OMP_CLAUSE_{IN,TASK}_REDUCTION and OMP_CLAUSE_REDUCTION with task - modifier. Don't ignore shared clauses in is_host_teams_ctx contexts. - Handle OMP_CLAUSE_NONTEMPORAL. - (add_taskreg_looptemp_clauses): Add OMP_CLAUSE__REDUCTEMP_ clause if - needed. - (scan_omp_parallel): Add _reductemp_ clause if there are any reduction - clauses with task modifier. - (scan_omp_task): Handle taskwait with depend clauses. - (finish_taskreg_scan): Move field corresponding to _reductemp_ clause - first. Move also OMP_CLAUSE__REDUCTEMP_ clause in front if present. - Handle GIMPLE_OMP_TEAMS like GIMPLE_OMP_PARALLEL. - (scan_omp_for): Fix comment formatting. - (scan_omp_teams): Handle host teams constructs. - (check_omp_nesting_restrictions): Allow teams with no outer - OpenMP context. Adjust diagnostics for teams strictly nested into - some explicit OpenMP construct other than target. Allow OpenMP atomics - inside of simd regions. - (scan_omp_1_stmt): Call scan_sharing_clauses for taskgroups. - (scan_omp_1_stmt) : Temporarily bump - taskreg_nesting_level while scanning host teams construct. - (task_reduction_read): New function. - (lower_rec_input_clauses): Handle OMP_CLAUSE_REDUCTION on taskloop - construct. Handle OMP_CLAUSE_IN_REDUCTION and OMP_CLAUSE__REDUCTEMP_ - clauses. Handle OMP_CLAUSE_REDUCTION with task modifier. Remove - second argument create_tmp_var if it is NULL. Don't ignore shared - clauses in is_host_teams_ctx contexts. Handle - OMP_CLAUSE_FIRSTPRIVATE_NO_REFERENCE on OMP_CLAUSE_FIRSTPRIVATE - clauses. - (lower_reduction_clauses): Ignore reduction clauses with task - modifier. Remove second argument create_tmp_var if it is NULL. - Initialize OMP_ATOMIC_MEMORY_ORDER to relaxed. - (lower_send_clauses): Ignore reduction clauses with task modifier. - Handle OMP_CLAUSE__REDUCTEMP_. Don't send anything for - OMP_CLAUSE_REDUCTION on taskloop. Handle OMP_CLAUSE_IN_REDUCTION. - (maybe_add_implicit_barrier_cancel): Add OMP_RETURN argument, don't - rely that it is the last stmt in body so far. Ignore outer taskgroup - contexts. - (omp_task_reductions_find_first, omp_task_reduction_iterate, - lower_omp_task_reductions): New functions. - (lower_omp_sections): Handle reduction clauses with taskgroup - modifiers. Adjust maybe_add_implicit_barrier_cancel caller. - (lower_omp_single): Adjust maybe_add_implicit_barrier_cancel caller. - (lower_omp_for): Likewise. Handle reduction clauses with taskgroup - modifiers. - (lower_omp_taskgroup): Handle taskgroup reductions. - (create_task_copyfn): Copy over OMP_CLAUSE__REDUCTEMP_ pointer. - Handle OMP_CLAUSE_IN_REDUCTION and OMP_CLAUSE_REDUCTION clauses. - (lower_depend_clauses): If there are any - OMP_CLAUSE_DEPEND_DEPOBJ or OMP_CLAUSE_DEPEND_MUTEXINOUTSET - depend clauses, use a new array format. If OMP_CLAUSE_DEPEND_LAST is - seen, assume lowering is done already and return early. Set kind - on artificial depend clause to OMP_CLAUSE_DEPEND_LAST. - (lower_omp_taskreg): Handle reduction clauses with task modifier on - parallel construct. Handle reduction clause on taskloop construct. - Handle taskwait with depend clauses. - (lower_omp_1): Use lower_omp_taskreg instead of lower_omp_teams - for host teams constructs. - * tree.c (omp_clause_num_ops): Add in_reduction, task_reduction, - nontemporal and _reductemp_ clause entries. - (omp_clause_code_name): Likewise. - (walk_tree_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION, - OMP_CLAUSE_NONTEMPORAL and OMP_CLAUSE__REDUCTEMP_. - * tree-core.h (enum omp_clause_code): Add - OMP_CLAUSE_{{IN,TASK}_REDUCTION,NONTEMPORAL,_REDUCTEMP_}. - (enum omp_clause_defaultmap_kind, enum omp_memory_order): New. - (struct tree_base): Add omp_atomic_memory_order field into union. - Remove OMP_ATOMIC_SEQ_CST comment. - (enum omp_clause_depend_kind): Add OMP_CLAUSE_DEPEND_MUTEXINOUTSET - and OMP_CLAUSE_DEPEND_DEPOBJ. - (struct tree_omp_clause): Add subcode.defaultmap_kind. - * tree.def (OMP_TASKGROUP): Add another operand, move next to other - OpenMP constructs with body and clauses operands. - * tree.h (OMP_BODY): Use OMP_MASTER instead of OMP_TASKGROUP. - (OMP_CLAUSES): Use OMP_TASKGROUP instead of OMP_SINGLE. - (OMP_TASKGROUP_CLAUSES): Define. - (OMP_CLAUSE_DECL): Use OMP_CLAUSE__REDUCTEMP_ instead of - OMP_CLAUSE__LOOPTEMP_. - (OMP_ATOMIC_SEQ_CST): Remove. - (OMP_ATOMIC_MEMORY_ORDER, OMP_CLAUSE_FIRSTPRIVATE_NO_REFERENCE, - OMP_CLAUSE_LASTPRIVATE_CONDITIONAL): Define. - (OMP_CLAUSE_REDUCTION_CODE, OMP_CLAUSE_REDUCTION_INIT, - OMP_CLAUSE_REDUCTION_MERGE, OMP_CLAUSE_REDUCTION_PLACEHOLDER, - OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER, - OMP_CLAUSE_REDUCTION_OMP_ORIG_REF): Handle - OMP_CLAUSE_{,IN_,TASK_}REDUCTION. - (OMP_CLAUSE_REDUCTION_TASK, OMP_CLAUSE_REDUCTION_INSCAN, - OMP_CLAUSE_DEFAULTMAP_KIND, OMP_CLAUSE_DEFAULTMAP_CATEGORY, - OMP_CLAUSE_DEFAULTMAP_BEHAVIOR, OMP_CLAUSE_DEFAULTMAP_SET_KIND): - Define. - * tree-inline.c (remap_gimple_stmt): Remap taskgroup clauses. - * tree-nested.c (convert_nonlocal_omp_clauses): Handle - OMP_CLAUSE__REDUCTEMP_, OMP_CLAUSE_NONTEMPORAL. - (convert_local_omp_clauses): Likewise. Remove useless test. - * tree-parloops.c (create_call_for_reduction_1): Pass - OMP_MEMORY_ORDER_RELAXED as new argument to - dump_gimple_omp_atomic_load and dump_gimple_omp_atomic_store. - * tree-pretty-print.c (dump_omp_iterators): New function. - (dump_omp_clause): Handle OMP_CLAUSE__REDUCTEMP_, - OMP_CLAUSE_NONTEMPORAL, OMP_CLAUSE_{TASK,IN}_REDUCTION. Print - reduction modifiers. Handle OMP_CLAUSE_DEPEND_DEPOBJ and - OMP_CLAUSE_DEPEND_MUTEXINOUTSET. Print iterators in depend clauses. - Print __internal__ for OMP_CLAUSE_DEPEND_LAST. Handle cancel and - simd OMP_CLAUSE_IF_MODIFIERs. Handle new kinds of - OMP_CLAUSE_DEFAULTMAP. Print conditional: for - OMP_CLAUSE_LASTPRIVATE_CONDITIONAL. - (dump_omp_atomic_memory_order): New function. - (dump_generic_node): Use it. Print taskgroup clauses. Print - taskwait with depend clauses. - * tree-pretty-print.h (dump_omp_atomic_memory_order): Declare. - * tree-streamer-in.c (unpack_ts_omp_clause_value_fields): - Handle OMP_CLAUSE_{TASK,IN}_REDUCTION. - * tree-streamer-out.c (pack_ts_omp_clause_value_fields, - write_ts_omp_clause_tree_pointers): Likewise. - -2018-11-08 David Malcolm - - PR ipa/86395 - * doc/invoke.texi (-fdump-ipa-): Document the "-optimized", - "-missed", "-note", and "-all" sub-options. - * ipa-inline.c (caller_growth_limits): Port from fprintf to dump - API. - (can_early_inline_edge_p): Likewise. - (want_early_inline_function_p): Likewise. - (want_inline_self_recursive_call_p): Likewise. - (recursive_inlining): Likewise. - (inline_small_functions): Likewise. - (flatten_function): Likewise. - (ipa_inline): Likewise. - (inline_always_inline_functions): Likewise. - (early_inline_small_functions): Likewise. - (early_inliner): Likewise. - * tree-inline.c (expand_call_inline): Likewise. - -2018-11-08 David Malcolm - - * pretty-print.c (pp_format): Handle %f. - (selftest::test_pp_format): Add test of %f. - * pretty-print.h (pp_double): New macro. - -2018-11-08 David Malcolm - - * dump-context.h (ASSERT_IS_CGRAPH_NODE): New macro. - * dumpfile.c (make_item_for_dump_cgraph_node): Move to before... - (dump_pretty_printer::decode_format): Implement "%C" for - cgraph_node *. - (selftest::test_capture_of_dump_calls): Rename "where" to - "stmt_loc". Convert test_decl to a function decl and set its - location. Add a symbol_table_test RAII instance and a - cgraph_node, using it to test "%C" and dump_symtab_node. - -2018-11-08 Eric Botcazou - - PR middle-end/87916 - * cgraphclones.c (duplicate_thunk_for_node): Also set DECL_IGNORED_P. - -2018-11-08 David Malcolm - - * cgraph.c: Include "selftest.h". - (saved_symtab): New variable. - (selftest::symbol_table_test::symbol_table_test): New ctor. - (selftest::symbol_table_test::~symbol_table_test): New dtor. - (selftest::test_symbol_table_test): New test. - (selftest::cgraph_c_tests): New. - * cgraph.h (saved_symtab): New decl. - (selftest::symbol_table_test): New class. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::cgraph_c_tests. - * selftest.h (selftest::cgraph_c_tests): New decl. - -2018-11-08 Richard Biener - - * tree-data-ref.h (lambda_int): New typedef. - (lambda_vector_gcd): Adjust. - (lambda_vector_new): Likewise. - (lambda_matrix_new): Likewise. - * tree-data-ref.c (print_lambda_vector): Adjust. - -2018-11-08 Richard Biener - - PR tree-optimization/87929 - * tree-complex.c (expand_complex_comparison): Clean EH. - -2018-11-08 Martin Liska - - * doc/extend.texi: Reword. - * predict.c (expr_expected_value_1): Likewise. - -2018-11-08 Richard Biener - - PR tree-optimization/87913 - * tree-ssa-phiopt.c (minmax_replacement): Turn EQ/NE compares - of extreme values to ordered comparisons. - -2018-11-07 Sandra Loosemore - - PR middle-end/42726 - * doc/invoke.texi (Code Gen Options): Clarify -fno-common behavior. - -2018-11-07 Sandra Loosemore - - * doc/invoke.texi: Remove leading dash from @opindex entries - throughout the file. - -2018-11-07 Sandra Loosemore - - PR driver/80828 - * doc/invoke.texi (Option Summary): Add -e and --entry. - (Link Options): Likewise. - -2018-11-07 Nathan Sidwell - - PR 87926 - * Makefile.in (bitmap.o-warn): Add -Wno-error to unbreak - --disable-checking bootstrap. - -2018-11-07 Hafiz Abid Qadeer - - * configure: Regenerated. - -2018-11-07 Jozef Lawrynowicz - - PR c/87691 - * stor-layout.c (compute_record_mode): Set TYPE_MODE of UNION_TYPE - to the mode of the widest field iff the widest field has mode class - MODE_INT, or MODE_PARTIAL_INT and the union would be passed by - reference. - -2018-11-07 Nikolai Merinov - - * common.opt: Add -Wattribute-warning. - * doc/invoke.texi: Add documentation for -Wno-attribute-warning. - * expr.c (expand_expr_real_1): Add new attribute to warning_at - call to allow user configure behavior of "warning" attribute. - -2018-11-07 Segher Boessenkool - - * target.def: Put @: after every vs., e.g., and i.e. where it is - followed by whitespace. - * doc/extend.texi: Ditto. - * doc/fragments.texi: Ditto. - * doc/gimple.texi: Ditto. - * doc/implement-c.texi: Ditto. - * doc/install.texi: Ditto. - * doc/invoke.texi: Ditto. - * doc/md.texi: Ditto. - * doc/plugins.texi: Ditto. - * doc/rtl.texi: Ditto. - * doc/sourcebuild.texi: Ditto. - * doc/tm.texi.in: Ditto. - * doc/ux.texi: Ditto. - * doc/tm.texi: Regenerate. - -2018-11-07 Kyrylo Tkachov - - * config/arm/arm-cpus.in (ares): New entry. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Likewise. - * doc/invoke.texi (ARM Options): Document ares. - -2018-11-07 Kyrylo Tkachov - - * config/aarch64/aarch64-cores.def (ares): Define. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi (AArch64 Options): Document ares value for mtune. - -2018-11-07 Jan Hubicka - - * tree.c (fld_incomplete_type_of): Clear TREE_ADDRESSABLE. - (free_lang_data_in_decl): Set TREE_ADDRESSABLE for public vars and - functions; clear TYPE_DECL_SUPPRESS_DEBUG and DECL_MODE for - TYPE_DECL. - -2018-11-07 Richard Biener - - PR tree-optimization/87914 - * tree-vect-loop.c (vect_is_simple_reduction): Improve detection - of nested cycles. - (vectorizable_reduction): Handle shifts and rotates by dispatching - to vectorizable_shift. - * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Handle - in-loop uses of vect_nested_cycle defs. Merge cycle and internal - def cases. - (vectorizable_shift): Export and handle being called as - vect_nested_cycle. - (vect_analyze_stmt): Call vectorizable_shift after - vectorizable_reduction. - * tree-vectorizer.h (vectorizable_shift): Declare. - -2018-11-07 Jan Hubicka - - * ipa-devirt.c (odr_types_equivalent_p): Expect constants - than const decls in TREE_VALUE of enum. - (dump_type_inheritance_graph): Improve duplicate dumping. - (free_enum_values): New. - (build_type_inheritance_graph): Use it. - * tree.c (free_lang_data_in_type): Free TYPE_VALUES of enums - which are not main variants or not ODR types. - (verify_type_variant): Expect variants to have no TYPE_VALUES. - -2018-11-07 Richard Biener - - * ipa-inline.c (want_inline_small_function_p): Compute - big_speedup_p lazily and last. - -2018-11-07 Jan Hubicka - - * tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when - building incomplete variant of complete type. - (fld_type_variant): Do not copy TYPE_ALIGN when building incomplete - variant of complete type. - -2018-11-07 Chenghua Xu - - * config/mips/mips.c: Fix typo in documentation of - mips_loongson_ext2_prefetch_cookie. - (mips_option_override): fix brain twister logical. - * config/mips/mips.h: Fix typo in documentation of - ISA_HAS_CTZ_CTO and define pattern. - * config/mips/mips.md (prefetch): Hoist EXT2 above - the 2EF/EXT block. - (prefetch_indexed): Hoist EXT2 above the EXT block. - -2018-11-07 Jan Hubicka - - * tree.c (free_lang_data_in_type): Add fld parameter; simplify - return and parameter types of function and method types. - (free_lang_data_in_cgraph): Update. - -2018-11-07 Martin Liska - - PR rtl-optimization/87868 - * postreload-gcse.c (eliminate_partially_redundant_load): Set - threshold to max_count if we would overflow. - * profile-count.h: Make max_count a public constant. - -2018-11-07 Martin Liska - - * mem-stats.h: Fix GNU coding style. - -2018-11-07 Chenghua Xu - - * config/mips/gs264e.md: New. - * config/mips/mips-cpus.def: Define gs264e. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for - gs264e. - (mips_issue_rate): Add support for gs264e. - (mips_multipass_dfa_lookahead): Likewise. - * config/mips/mips.h: Define TARGET_GS264E and TUNE_GS264E. - (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs264e. - (MIPS_ASE_MSA_SPEC): New. - (BASE_DRIVER_SELF_SPECS): march=gs264e implies -mmsa. - (ISA_HAS_FUSED_MADD4): Enable for TARGET_GS264E. - (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_GS264E. - * config/mips/mips.md: Include gs264e.md. - (processor): Add gs264e. - * config/mips/mips.opt (MSA): Use Mask instead of Var. - * doc/invoke.texi: Add gs264e to supported architectures. - -2018-11-07 Chenghua Xu - - * config/mips/gs464e.md: New. - * config/mips/mips-cpus.def: Define gs464e. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for - gs464e. - (mips_issue_rate): Add support for gs464e. - (mips_multipass_dfa_lookahead): Likewise. - (mips_option_override): Enable MMI, EXT and EXT2 for gs464e. - * config/mips/mips.h: Define TARGET_GS464E and TUNE_GS464E. - (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464e. - (ISA_HAS_FUSED_MADD4): Enable for TARGET_GS464E. - (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_GS464E. - * config/mips/mips.md: Include gs464e.md. - (processor): Add gs464e. - * doc/invoke.texi: Add gs464e to supported architectures. - -2018-11-07 Chenghua Xu - - * config/mips/loongson3a.md: Rename to ... - * config/mips/gs464.md: ... here. - * config/mips/mips-cpus.def: Define gs464; Add loongson3a - as an alias of gs464 processor. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/mips.c (mips_issue_rate): Use PROCESSOR_GS464 - instead of PROCESSOR_LOONGSON_3A. - (mips_multipass_dfa_lookahead): Use TUNE_GS464 instead of - TUNE_LOONGSON_3A. - (mips_option_override): Enable MMI and EXT for gs464. - * config/mips/mips.h: Rename TARGET_LOONGSON_3A to TARGET_GS464; - Rename TUNE_LOONGSON_3A to TUNE_GS464. - (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464. - (ISA_HAS_ODD_SPREG, ISA_AVOID_DIV_HILO, ISA_HAS_FUSED_MADD4, - ISA_HAS_UNFUSED_MADD4): Use TARGET_GS464 instead of - TARGET_LOONGSON_3A. - * config/mips/mips.md: Include gs464.md instead of loongson3a.md. - (processor): Add gs464; - * doc/invoke.texi: Add gs464 to supported architectures. - -2018-11-07 Chenghua Xu - - * config/mips/mips-protos.h - (mips_loongson_ext2_prefetch_cookie): New prototype. - * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): New. - (mips_option_override): Enable TARGET_LOONGSON_EXT when - TARGET_LOONGSON_EXT2 is true. - * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define - __mips_loongson_ext2, __mips_loongson_ext_rev=2. - (ISA_HAS_CTZ_CTO): New, true if TARGET_LOONGSON_EXT2. - (ISA_HAS_PREFETCH): Include TARGET_LOONGSON_EXT and - TARGET_LOONGSON_EXT2. - (ASM_SPEC): Add mloongson-ext2 and mno-loongson-ext2. - (define_insn "ctz2"): New insn pattern. - (define_insn "prefetch"): Include TARGET_LOONGSON_EXT2. - (define_insn "prefetch_indexed_"): Include - TARGET_LOONGSON_EXT and TARGET_LOONGSON_EXT2. - * config/mips/mips.opt (-mloongson-ext2): Add option. - * gcc/doc/invoke.texi (-mloongson-ext2): Document. - -2018-11-07 Chenghua Xu - - * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add - __mips_loongson_ext. - (MIPS_ASE_LOONGSON_EXT_SPEC): New. - (BASE_DRIVER_SELF_SPECS): march=loongson3a implies - -mloongson-ext. - (ASM_SPEC): Add mloongson-ext and mno-loongson-ext. - * config/mips/mips.md (mul3, mul3_mul3_nohilo, - div3, mod3, prefetch): Use TARGET_LOONGSON_EXT - instead of TARGET_LOONGSON_3A. - * config/mips/mips.opt (-mloongson-ext): Add option. - * gcc/doc/invoke.texi (-mloongson-ext): Document. - -2018-11-07 Chenghua Xu - - * config.gcc (extra_headers): Add loongson-mmiintrin.h. - * config/mips/loongson.md: Move to ... - * config/mips/loongson-mmi.md: here; Adjustment. - * config/mips/loongson.h: Move to ... - State as deprecated. Include loongson-mmiintrin.h for back - compatibility and warning. - * config/mips/loongson-mmiintrin.h: ... here. - * config/mips/mips.c (mips_hard_regno_mode_ok_uncached, - mips_vector_mode_supported_p, AVAIL_NON_MIPS16): Use - TARGET_LOONGSON_MMI instead of TARGET_LOONGSON_VECTORS. - (mips_option_override): Make sure MMI use hard float; - (mips_shift_truncation_mask, mips_expand_vpc_loongson_even_odd, - mips_expand_vpc_loongson_pshufh, mips_expand_vpc_loongson_bcast, - mips_expand_vector_init): Use TARGET_LOONGSON_MMI instead of - TARGET_LOONGSON_VECTORS. - * gcc/config/mips/mips.h (TARGET_LOONGSON_VECTORS): Delete. - (TARGET_CPU_CPP_BUILTINS): Add __mips_loongson_mmi. - (MIPS_ASE_DSP_SPEC, MIPS_ASE_LOONGSON_MMI_SPEC): New. - (BASE_DRIVER_SELF_SPECS): march=loongson2e/2f/3a implies - -mloongson-mmi. - (SHIFT_COUNT_TRUNCATED): Use TARGET_LOONGSON_MMI instead of - TARGET_LOONGSON_VECTORS. - * gcc/config/mips/mips.md (MOVE64, MOVE128): Use - TARGET_LOONGSON_MMI instead of TARGET_LOONGSON_VECTORS. - (Loongson MMI patterns): Include loongson-mmi.md instead of - loongson.md. - * gcc/config/mips/mips.opt (-mloongson-mmi): New option. - * gcc/doc/invoke.texi (-mloongson-mmi): Document. - -2018-11-07 Richard Biener - - PR lto/87906 - * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Fixup - BLOCK_ABSTRACT_ORIGIN to be the ultimate origin. - -2018-11-07 Alexandre Oliva - - PR rtl-optimization/87874 - * lra.c (lra_substitute_pseudo): Do not create a subreg for - const wide ints. - -2018-11-06 Aaron Sawdey - - * config/rs6000/rs6000.md (bswap2): Force address into register - if not in indexed or indirect form. - (bswap2_load): Change predicate to indexed_or_indirect_operand. - (bswap2_store): Ditto. - -2018-11-06 Richard Earnshaw - - * config/aarch64/aarch64.md (speculation_tracker): Set the mode for - the UNSPEC. - -2018-11-06 Richard Biener - - PR tree-optimization/86850 - * vec.h (vec::splice): Check src.length () - instead of src.m_vec. - -2018-11-06 Jan Hubicka - - * tree.c (fld_simplified_type_name): Break out form ... - (free_lang_data_in_type): ... here. - (fld_type_variant_equal_p): Use it. - -2018-11-06 Rainer Orth - - * config/default-d.c: Include memmodel.h. - - * config/sol2-d.c: New file. - * config/t-sol2 (sol2-d.o): New rule. - * config.gcc <*-*-solaris2*>: Set d_target_objs, - target_has_targetdm. - -2018-11-06 Jan Hubicka - - * tree.c (fld_type_variant): Also copy alignment; be sure that - new variant is equal. - -2018-11-06 Ilya Leoshkevich - - PR target/87762 - * config/s390/s390.md: Add relative_long attribute. - -2018-11-06 Jan Hubicka - - * ipa-pure-const.c (check_decl): Do not test TYPE_NEEDS_CONSTRUCTING. - * lto-streamer-out.c (hash_tree): Do not hash TYPE_NEEDS_CONSTRUCTING. - * tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not - stream TYPE_NEEDS_CONSTRUCTING. - * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise. - * tree.c (free_lang_data_in_type): Clear TYPE_NEEDS_CONSTRUCTING. - -2018-11-06 Richard Biener - - * tree-vect-slp.c (vect_slp_bb): Move opening of vect_slp_analyze_bb - dump-scope ... - (vect_slp_analyze_bb_1): ... here to avoid hiding optimized locations. - -2018-11-06 Jozef Lawrynowicz - - * gcc/config/msp430/msp430.h (REG_CLASS_CONTENTS): Add R0 to - REG_CLASS_CONTENTS[GEN_REGS]. - (REGNO_REG_CLASS): Return NO_REGS for R2 and R3. - -2018-11-06 Jan Hubicka - - * tree.c (fld_simplified_type_of): Clear TYPELESS_STORAGE flag. - -2018-11-06 Rainer Orth - - PR sanitizer/80953 - * config/sol2.h (ASAN_CC1_SPEC): Define. - (LD_WHOLE_ARCHIVE_OPTION): Define. - (LD_NO_WHOLE_ARCHIVE_OPTION): Define. - (ASAN_REJECT_SPEC): Provide default. - (LIBASAN_EARLY_SPEC): Define. - (LIBTSAN_EARLY_SPEC): Define. - (LIBLSAN_EARLY_SPEC): Define. - * config/i386/sol2.h (CC1_SPEC): Redefine. - (ASAN_REJECT_SPEC): Define. - - * config/sparc/sparc.c (sparc_asan_shadow_offset): Declare. - (TARGET_ASAN_SHADOW_OFFSET): Define. - (sparc_asan_shadow_offset): New function. - * config/sparc/sol2.h (CC1_SPEC): Append ASAN_CC1_SPEC. - (ASAN_REJECT_SPEC): Define. - -2018-11-06 Jan Hubicka - - * tree.c (fld_type_variant): Copy canonical type. - (fld_incomplete_type_of): Check that canonical types looks sane; - copy canonical type. - (verify_type): Accept when incomplete type has complete canonical type. - -2018-11-06 Jan Hubicka - - * tree.c (free_lang_data): Reset overwite_assembler_name, - print_xnode, print_decl, print_type and print_identifier of - langhooks. - -2018-11-06 Richard Biener - - PR tree-optimization/87889 - * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): - Do nothing if old and new arg are the same - -2018-11-06 Andreas Krebbel - - PR target/87723 - * config/s390/s390.md ("*rsbg_di_rotl"): Remove mode - attributes for operands 3 and 4. - -2018-11-06 Richard Biener - - PR middle-end/18041 - * simplify-rtx.c (simplify_binary_operation_1): Add pattern - matching bitfield insertion. - -2018-11-06 Alexandre Oliva - - * auto-inc-dec.c: Include valtrack.h. Improve comments. - (reg_next_debug_use): New. - (attempt_change): Propagate adjusted expression into affected - debug insns. - (merge_in_block): Track uses in debug insns. - (pass_inc_dec::execute): Allocate and release - reg_next_debug_use. - -2018-11-06 Wei Xiao - - * config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics. - (_mm512_fixupimm_round_pd): Update parameters and builtin. - (_mm512_maskz_fixupimm_round_pd): Ditto. - (_mm512_fixupimm_round_ps): Ditto. - (_mm512_maskz_fixupimm_round_ps): Ditto. - (_mm_fixupimm_round_sd): Ditto. - (_mm_maskz_fixupimm_round_sd): Ditto. - (_mm_fixupimm_round_ss): Ditto. - (_mm_maskz_fixupimm_round_ss): Ditto. - (_mm512_fixupimm_pd): Ditto. - (_mm512_maskz_fixupimm_pd): Ditto. - (_mm512_fixupimm_ps): Ditto. - (_mm512_maskz_fixupimm_ps): Ditto. - (_mm_fixupimm_sd): Ditto. - (_mm_maskz_fixupimm_sd): Ditto. - (_mm_fixupimm_ss): Ditto. - (_mm_maskz_fixupimm_ss): Ditto. - (_mm512_mask_fixupimm_round_pd): Update builtin. - (_mm512_mask_fixupimm_round_ps): Ditto. - (_mm_mask_fixupimm_round_sd): Ditto. - (_mm_mask_fixupimm_round_ss): Ditto. - (_mm512_mask_fixupimm_pd): Ditto. - (_mm512_mask_fixupimm_ps): Ditto. - (_mm_mask_fixupimm_sd): Ditto. - (_mm_mask_fixupimm_ss): Ditto. - * config/i386/avx512vlintrin.h: - (_mm256_fixupimm_pd): Update parameters and builtin. - (_mm256_maskz_fixupimm_pd): Ditto. - (_mm256_fixupimm_ps): Ditto. - (_mm256_maskz_fixupimm_ps): Ditto. - (_mm_fixupimm_pd): Ditto. - (_mm_maskz_fixupimm_pd): Ditto. - (_mm_fixupimm_ps): Ditto. - (_mm_maskz_fixupimm_ps): Ditto. - (_mm256_mask_fixupimm_pd): Update builtin. - (_mm256_mask_fixupimm_ps): Ditto. - (_mm_mask_fixupimm_pd): Ditto. - (_mm_mask_fixupimm_ps): Ditto. - * config/i386/i386-builtin-types.def: Add new types and remove useless ones. - * config/i386/i386-builtin.def: Update builtin definitions. - * config/i386/i386.c: Handle new builtin types and remove useless ones. - * config/i386/sse.md: Update VFIXUPIMM* patterns. - (_fixupimm_maskz): Update. - (_fixupimm): Update. - (_fixupimm_mask): Update. - (avx512f_sfixupimm_maskz): Update. - (avx512f_sfixupimm): Update. - (avx512f_sfixupimm_mask): Update. - * config/i386/subst.md: - (round_saeonly_sd_mask_operand4): Add new subst_attr. - (round_saeonly_sd_mask_op4): Ditto. - (round_saeonly_expand_operand5): Ditto. - (round_saeonly_expand): Update. - -2018-11-05 Max Filippov - - * config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0. - -2018-11-05 Segher Boessenkool - - PR rtl-optimization/87871 - * combine.c (make_more_copies): Skip if dest is frame_pointer_rtx. - -2018-11-05 Paul Koning - - * doc/sourcebuild.texi (target attributes): Document new "inf" - effective target keyword. - -2018-11-05 Robin Dapp - - * config/s390/s390.c (s390_register_move_cost): Increase costs for - moves involving the CC reg. - -2018-11-05 Richard Biener - - PR tree-optimization/87873 - * tree-ssa-loop-manip.h (split_loop_exit_edge): Add copy_constants_p - argument. - * tree-ssa-loop-manip.c (split_loop_exit_edge): Likewise. - * tree-vect-loop.c (vect_transform_loop): When splitting the - loop exit also create forwarder PHIs for constants. - * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): - Handle constant to_arg, add extra checking we match up the correct - PHIs. - -2018-11-05 Robin Dapp - - * config/s390/s390.md: QImode and HImode for load on condition. - -2018-11-05 Robin Dapp - - * config/s390/predicates.md: Fix typo. - * config/s390/s390.md: Allow immediates for load on condition. - -2018-11-05 Martin Liska - - * alloc-pool.h (struct pool_usage): Use SIZE_AMOUNT. - * bitmap.h (struct bitmap_usage): Likewise. - * ggc-common.c (SCALE): Remove. - (LABEL): Likewise. - (struct ggc_usage): Use SIZE_AMOUNT. And update - compare method. - * ggc-page.c (SCALE): Remove. - (STAT_LABEL): Remove. - (ggc_print_statistics): Use SIZE_AMOUNT. - * gimple.h (SCALE): Remove. - (LABEL): Likewise. - * input.c (ONE_K): Remove. - (ONE_M): Likewise. - (SCALE): Likewise. - (STAT_LABEL): Likewise. - (FORMAT_AMOUNT): Likewise. - (dump_line_table_statistics): Use SIZE_AMOUNT. - * mem-stats.h (struct mem_usage): Likewise. - * rtl.c (dump_rtx_statistics): Likewise. - (rtx_alloc_counts): Change type to size_t. - (rtx_alloc_sizes): Likewise. - (rtx_count_cmp): New. - (dump_rtx_statistics): Sort first based on counts. - * tree.c (tree_nodes_cmp): New. - (tree_codes_cmp): New. - (dump_tree_statistics): Sort first based on counts. - * system.h (ONE_K): New. - (ONE_M): Likewise. - (SIZE_SCALE): Likewise. - (SIZE_LABEL): Likewise. - (SIZE_AMOUNT): Likewise. - * tree-cfg.c (dump_cfg_stats): Use SIZE_AMOUNT. - * tree-dfa.c (dump_dfa_stats): Likewise. - * tree-phinodes.c (phinodes_print_statistics): Likewise. - * tree-ssanames.c (ssanames_print_statistics): Likewise. - * tree.c (dump_tree_statistics): Likewise. - * vec.c (struct vec_usage): Likewise. - * trans-mem.c (tm_mangle): Enlarge buffer in order to not - trigger a -Werror=format-overflow with - --enable-gather-detailed-stats. - -2018-11-05 Martin Liska - - * mem-stats.h (mem_alloc_description::release_instance_overhead): - Return T *. - * vec.c (struct vec_usage): Register m_element_size. - (vec_prefix::register_overhead): New arguments: elements and - element_size. - (vec_prefix::release_overhead): Subtract elements. - * vec.h (struct vec_prefix): Change signature. - (va_heap::reserve): Pass proper arguments. - (va_heap::release): Likewise. - -2018-11-05 Martin Liska - - * mem-stats.h (mem_alloc_description::get_list): Fix GNU coding - style. - * vec.c: Likewise. - -2018-11-05 Richard Biener - - * tree-scalar-evolution.h (final_value_replacement_loop): Update - prototype. - * tree-scalar-evolution.c (final_value_replacement_loop): Return - whether anything was done. - (scev_const_prop): Remove constant propagation part, fold - remains into ... - * tree-ssa-loop.c (pass_scev_cprop::execute): ... here. - (pass_data_scev_cprop): TODO_cleanup_cfg is now done - conditionally. - -2018-11-05 Jakub Jelinek - - PR tree-optimization/87859 - * gimple-ssa-store-merging.c (struct merged_store_group): Add - only_constants and first_nonmergeable_order members. - (merged_store_group::merged_store_group): Initialize them. - (merged_store_group::do_merge): Clear only_constants member if - adding something other than INTEGER_CST store. - (imm_store_chain_info::coalesce_immediate_stores): Don't merge - stores with order >= first_nonmergeable_order. Use - merged_store->only_constants instead of always recomputing it. - Set merged_store->first_nonmergeable_order if we've skipped any - stores. Attempt to merge overlapping INTEGER_CST stores that - we would otherwise skip. - - PR sanitizer/87837 - * match.pd (X + Y < X): Don't optimize if TYPE_OVERFLOW_SANITIZED. - -2018-11-05 Xuepeng Guo - - PR target/87853 - * config/i386/emmintrin.h (__v16qs): New to cope with option - -funsigned-char. - (_mm_cmpeq_epi8): Replace __v16qi with __v16qs. - (_mm_cmplt_epi8): Likewise. - (_mm_cmpgt_epi8): Likewise. - -2018-11-05 Richard Biener - - PR rtl-optimization/87852 - * fwprop.c (use_killed_between): Only consider single-defs of the - use whose definition statement dominates the use. - -2018-11-05 Martin Liska - - PR web/87829 - * doc/invoke.texi: Remove options that are - not disabled with -Os. - -2018-11-05 Martin Liska - - PR c/87811 - * doc/extend.texi: Update constrain about the last argument - of __builtin_expect_with_probability. - -2018-11-05 Martin Liska - - PR c/87811 - * predict.c (expr_expected_value_1): Verify - that last argument is a real constants and emit - error. - -2018-11-05 Martin Liska - - PR gcov-profile/77698 - * ipa-profile.c (ipa_profile): Adjust hotness threshold - only in LTO mode. - -2018-11-04 Bernd Edlinger - - PR tree-optimization/86572 - * builtins.c (c_strlen): Handle negative offsets in a safe way. - -2018-11-04 Bernd Edlinger - - PR tree-optimization/87672 - * gimple-fold.c (gimple_fold_builtin_stxcpy_chk): Gimplify. - * tree-ssa-strlen.c (handle_builtin_strcat): Adjust object size. - -2018-11-04 Uros Bizjak - - PR middle-end/58372 - * cfgexpand.c (pass_expand::execute): Move the call to - finish_eh_generation in front of the call to expand_stack_alignment. - -2018-11-04 Venkataramanan Kumar - - * common/config/i386/i386-common.c (processor_alias_table): Add - znver2 entry. - * config.gcc (i[34567]86-*-linux* | ...): Add znver2. - (case ${target}): Add znver2. - * config/i386/driver-i386.c: (host_detect_local_cpu): Let - -march=native recognize znver2 processors. - * config/i386/i386-c.c (ix86_target_macros_internal): Add znver2. - * config/i386/i386.c (m_znver2): New definition. - (m_ZNVER): New definition. - (m_AMD_MULTIPLE): Includes m_znver2. - (processor_cost_table): Add znver2 entry. - (processor_target_table): Add znver2 entry. - (get_builtin_code_for_version): Set priority for - PROCESSOR_ZNVER2. - (processor_model): Add M_AMDFAM17H_ZNVER2. - (arch_names_table): Ditto. - (ix86_reassociation_width): Include znver2. - * config/i386/i386.h (TARGET_znver2): New definition. - (struct ix86_size_cost): Add TARGET_ZNVER2. - (enum processor_type): Add PROCESSOR_ZNVER2. - * config/i386/i386.md (define_attr "cpu"): Add znver2. - * config/i386/x86-tune-costs.h: (processor_costs) Add znver2 costs. - * config/i386/x86-tune-sched.c: (ix86_issue_rate): Add znver2. - (ix86_adjust_cost): Add znver2. - * config/i386/x86-tune.def: Replace m_ZNVER1 by m_ZNVER. - * gcc/doc/extend.texi: Add details about znver2. - * gcc/doc/invoke.texi: Add details about znver2. - -2018-11-03 Sandra Loosemore - - PR target/87079 - - * config/nios2/nios2.c (nios2_rtx_costs): Recognize sidi3 - pattern. - -2018-11-02 Aaron Sawdey - - * config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Pay - attention to TARGET_AVOID_XFORM and BYTES_BIG_ENDIAN. - -2018-11-02 Richard Earnshaw - - * config/aarch64/aarch64.c ((aarch64_override_options): Disable - shrink-wrapping when -mtrack-speculation. - -2018-11-02 Richard Biener - - * tree-ssa-coalesce.c (struct coalesce_list): Add obstack member. - (pop_cost_one_pair): Do not free pair. - (pop_best_coalesce): Likewise. - (create_coalesce_list): Initialize obstack. - (delete_coalesce_list): Free obstack. - (find_coalesce_pair): Obstack-allocate coalesce pairs. - (add_cost_one_coalesce): Likewise. - (struct live_track): Remove bitmap pointer indirections. - (new_live_track): Adjust. - (delete_live_track): Likewise. - (live_track_remove_partition): Likewise. - (live_track_add_partition): Likewise. - (live_track_live_p): Likewise. - (live_track_process_def): Likewise. - (live_track_clear_base_vars): Likewise. - -2018-11-02 Rainer Orth - - * configure.ac (gcc_cv_as_sparc_register_op): Remove. - * configure: Regenerate. - * config.in: Regenerate. - * config/sparc/sparc.c (sparc_output_scratch_registers): Remove - HAVE_AS_REGISTER_PSEUDO_OP guard. - * config/sparc/sparc.h (ASM_ARCH64_SPEC): Remove - !HAVE_AS_REGISTER_PSEUDO_OP support. - (ASM_DECLARE_REGISTER_GLOBAL): Remove HAVE_AS_REGISTER_PSEUDO_OP - guard. - -2018-11-02 Richard Biener - - * dwarf2out.c (build_abbrev_table): Guard lookup_external_ref call - with is_type_die. - -2018-11-02 Richard Biener - - PR tree-optimization/87776 - * tree-ssa-sccvn.c (do_rpo_vn): Do not mark backedges - executable when iterating but running into rpo-vn-max-loop-depth - and not eliding the iteration. - -2018-11-30 Jan Hubicka - - * tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of - TYPE_DECL. - -2018-11-01 Aaron Sawdey - - * config/rs6000/rs6000-protos.h (rs6000_address_for_fpconvert): Remove - prototype. - * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): - Combine with rs6000_address_for_fpconvert. - (rs6000_address_for_fpconvert): Combine with - rs6000_force_indexed_or_indirect_mem. - (rs6000_expand_vector_init): Change function call from - rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem. - * config/rs6000/rs6000.md (floatsi2_lfiwax): Change call from - rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem. - (floatsi2_lfiwax_mem): Ditto. - (floatunssi2_lfiwzx): Ditto. - (floatunssi2_lfiwzx_mem): Ditto. - (float2): Ditto. - (floatuns2): Ditto. - (fix_truncsi2_stfiwx): Ditto. - (fixuns_truncsi2_stfiwx): Ditto. - (float_si2_hw): Ditto. - (floatuns_si2_hw): Ditto. - * config/rs6000/vsx.md (*vsx_extract_si): Ditto. - (vsx_splat_): Ditto. - -2018-11-01 Joseph Myers - - * configure.ac (gcc_cv_as_ia64_ltoffx_ldxmov_relocs): Add newline - at end of assembler input text. - * configure: Regenerate. - -2018-11-01 Jakub Jelinek - - PR tree-optimization/87826 - * gimple-ssa-store-merging.c (do_shift_rotate): Punt if count is - negative or larger or equal to type's precision. - -2018-10-31 Alexandre Oliva - - * opts.c (default_options_table): Do not enable - OPT_fdelayed_branch at -Og. - * doc/invoke.texi (-fdelayed-branch): Document it. - -2018-10-31 Richard Henderson - - * optabs-libfuncs.c (build_libfunc_function_visibility): - New, split out from... - (build_libfunc_function): ... here. - (init_one_libfunc_visibility): New, split out from ... - (init_one_libfunc): ... here. - - * config/aarch64/atomics.md (aarch64_atomic__lse): - scratch register need not be early-clobber. Document the reason - why we cannot use ST. - -2018-10-31 Joseph Myers - - PR bootstrap/82856 - * configure.ac: Remove AC_PREREQ. Use AC_LANG_SOURCE. Use single - line for second argument of AC_DEFINE_UNQUOTED. - * doc/install.texi (Tools/packages necessary for modifying GCC): - Update to autoconf 2.69 and automake 1.15.1. - * aclocal.m4, config.in, configure: Regenerate. - -2018-10-31 Pat Haugen - - * tree-ssa-loop-ivcanon.c (try_peel_loop): Fix typo and remove dead - initialization. - -2018-10-31 Martin Liska - - PR driver/83193 - * common/config/aarch64/aarch64-common.c (aarch64_parse_extension): - Add new argument invalid_extension. - (aarch64_get_all_extension_candidates): New function. - (aarch64_rewrite_selected_cpu): Add NULL to function call. - * config/aarch64/aarch64-protos.h (aarch64_parse_extension): Add - new argument. - (aarch64_get_all_extension_candidates): New function. - * config/aarch64/aarch64.c (aarch64_parse_arch): Add new - argument invalid_extension. - (aarch64_parse_cpu): Likewise. - (aarch64_print_hint_for_extensions): New function. - (aarch64_validate_mcpu): Provide hint about invalid extension. - (aarch64_validate_march): Likewise. - (aarch64_handle_attr_arch): Pass new argument. - (aarch64_handle_attr_cpu): Provide hint about invalid extension. - (aarch64_handle_attr_isa_flags): Likewise. - -2018-10-31 Richard Biener - - PR middle-end/70359 - PR middle-end/86270 - * tree-outof-ssa.c (insert_backedge_copies): Restrict - copy generation to useful cases. Place the copy before - the definition of the backedge value when possible. - -2018-10-31 Claudiu Zissulescu - - * config/arc/arc-arch.h (ARC_TUNE_ARC7XX): New tune value. - * config/arc/arc.c (arc_active_insn): New function. - (check_store_cacheline_hazard): Likewise. - (workaround_arc_anomaly): Use check_store_cacheline_hazard. - (arc_override_options): Disable delay slot scheduler for older - A7. - (arc_store_addr_hazard_p): New implementation, old one renamed to - ... - (arc_store_addr_hazard_internal_p): Renamed. - (arc_reorg): Don't combine into brcc instructions which are part - of hardware hazard solution. - * config/arc/arc.md (attr tune): Consider new arc7xx tune value. - (tune_arc700): Likewise. - * config/arc/arc.opt (arc7xx): New tune value. - * config/arc/arc700.md: Improve A7 scheduler. - -2018-10-31 Claudiu Zissulescu - - * config/arc/arc.c (arc_override_options): Remove - TARGET_COMPACT_CASESI. - * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Update. - (CASE_VECTOR_MODE): Likewise. - (CASE_VECTOR_PC_RELATIVE): Likewise. - (CASE_VECTOR_SHORTEN_MODE): Likewise. - (CASE_VECTOR_SHORTEN_MODE1): Delete. - (ADDR_VEC_ALIGN): Update. - (ASM_OUTPUT_CASE_LABEL): Undefine. - (ASM_OUTPUT_BEFORE_CASE_LABEL): Undefine. - (TARGET_BI_BIH): Define. - (DEFAULT_BRANCH_INDEX): Likewise. - * config/arc/arc.md (casesi): Rework to accept BI/BIH - instructions, remove compact_casesi use case. - (casesi_compact_jump): Remove. - (casesi_dispatch): New pattern. - * config/arc/arc.opt: Add mbranch-index option. Deprecate - compact_casesi option. - * doc/invoke.texi: Document mbranch-index option. - -2018-10-31 Claudiu Zissulescu - - * config/arc/arc.c (arc_get_tp): Remove function. - (arc_emit_call_tls_get_addr): Likewise. - (arc_call_tls_get_addr): New function. - (arc_legitimize_tls_address): Make use of arc_call_tls_get_addr. - * config/arc/arc.md (tls_load_tp_soft): Remove. - (tls_gd_get_addr): Likewise. - -2018-10-31 Claudiu Zissulescu - - * config/arc/arc.md (mulsi3): Remove call to mulsi_600_lib. - (mulsi3_600_lib): Remove pattern. - (umulsi3_highpart_600_lib_le): Likewise. - (umulsi3_highpart): Remove call to umulsi3_highpart_600_lib_le. - (umulsidi3): Remove call to umulsidi3_600_lib. - (umulsidi3_600_lib): Remove pattern. - (peephole2): Remove peephole using the above deprecated patterns. - -2018-10-31 Thomas Preud'homme - - PR target/87374 - * config/arm/arm.c (arm_option_check_internal): Disable the combined - use of -mslow-flash-data and -mword-relocations. - (arm_option_override): Enable -mword-relocations if -fpic or -fPIC. - * config/arm/arm.md (SYMBOL_REF MOVT splitter): Stop checking for - flag_pic. - * doc/invoke.texi (-mword-relocations): Mention conflict with - -mslow-flash-data. - (-mslow-flash-data): Reciprocally. - -2018-10-31 Richard Henderson - - * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Force - 16-byte modes held in GP registers to use an even regno. - - * config/aarch64/aarch64.c (aarch64_emit_bic): Remove. - (aarch64_atomic_ldop_supported_p): Remove. - (aarch64_gen_atomic_ldop): Remove. - * config/aarch64/atomic.md (atomic_): - Fully expand LSE operations here. - (atomic_fetch_): Likewise. - (atomic__fetch): Likewise. - (aarch64_atomic__lse): Drop atomic_op iterator - and use ATOMIC_LDOP instead; use register_operand for the input; - drop the split and emit insns directly. - (aarch64_atomic_fetch__lse): Likewise. - (aarch64_atomic__fetch_lse): Remove. - (@aarch64_atomic_load): Remove. - - * config/aarch64/aarch64.c (aarch64_emit_atomic_swap): Remove. - (aarch64_gen_atomic_ldop): Don't call it. - * config/aarch64/atomics.md (atomic_exchange): - Use aarch64_reg_or_zero. - (aarch64_atomic_exchange): Likewise. - (aarch64_atomic_exchange_lse): Remove split; remove & from - operand 0; use aarch64_reg_or_zero for input; merge ... - (@aarch64_atomic_swp): ... this and remove. - - * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): New. - (aarch64_split_compare_and_swap): Use it. - (aarch64_expand_compare_and_swap): Likewise. Remove convert_modes; - test oldval against the proper predicate. - * config/aarch64/atomics.md (@atomic_compare_and_swap): - Use nonmemory_operand for expected. - (cas_short_expected_pred): New. - (@aarch64_compare_and_swap): Use it; use "rn" not "rI" to match. - (@aarch64_compare_and_swap): Use "rn" not "rI" for expected. - * config/aarch64/predicates.md (aarch64_plushi_immediate): New. - (aarch64_plushi_operand): New. - - * config/aarch64/aarch64.c (aarch64_expand_compare_and_swap): - Force oldval into the rval register for TARGET_LSE; emit the compare - during initial expansion so that it may be deleted if unused. - (aarch64_gen_atomic_cas): Remove. - * config/aarch64/atomics.md (@aarch64_compare_and_swap_lse): - Change =&r to +r for operand 0; use match_dup for operand 2; - remove is_weak and mod_f operands as unused. Drop the split - and merge with... - (@aarch64_atomic_cas): ... this pattern's output; remove. - (@aarch64_compare_and_swap_lse): Similarly. - (@aarch64_atomic_cas): Similarly. - -2018-10-31 Richard Biener - - * tree-eh.c (replace_trapping_overflow): Simplify ABS_EXPR case - using ABSU_EXPR. - -2018-10-31 Sameera Deshpande - - * config/aarch64/aarch64-cores.def (saphira): Use saphira pipeline. - * config/aarch64/aarch64.md: Include saphira.md - * config/aarch64/saphira.md: New file for pipeline description. - -2018-10-30 Martin Sebor - - PR middle-end/87041 - * gimple-ssa-sprintf.c (format_directive): Use %G to include - inlining context. - (sprintf_dom_walker::compute_format_length): - Avoid setting POSUNDER4K here. - (get_destination_size): Handle null argument values. - (get_user_idx_format): New function. - (sprintf_dom_walker::handle_gimple_call): Handle all printf-like - functions, including user-defined with attribute format printf. - Use %G to include inlining context. - Set POSUNDER4K here. - -2018-10-30 Jan Hubicka - - * params.def (lto-partitions): Bump from 32 to 128. - -2018-10-30 Jan Hubicka - - * tree.c - (free_lang_data_d, add_tree_to_fld_list, fld_worklist_push): Move - head in file. - (free_lang_data_in_type): Forward declare. - (fld_type_variant_equal_p): New function. - (fld_type_variant): New function - (fld_incomplete_types): New hash. - (fld_incomplete_type_of): New function - (fld_simplfied-type): New function. - (free_lang_data_in_decl): Add fld parameter; simplify type of FIELD_DECL - (free_lang_data): Allocate and free fld_incomplete_type; update call - of free_lang_data_in_decl. - -2018-10-30 Eric Botcazou - - * gcov.c (output_lines): Remove duplicate line. - -2018-10-30 Aaron Sawdey - - * config/rs6000/rs6000.md (bswapdi2): Force address into register - if not in indexed or indirect form. - (bswapdi2_load): Change predicate to indexed_or_indirect_operand. - (bswapdi2_store): Ditto. - * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): New - helper function. - * config/rs6000/rs6000-protos.h (rs6000_force_indexed_or_indirect_mem): - Prototype for helper function. - -2018-10-30 Martin Sebor - - * doc/extend.texi (optimize): Clarify/expand attribute documentation. - (target, pragma GCC optimize, pragma GCC target): Ditto. - -2018-10-30 Jonathan Wakely - - * doc/extend.texi: Fix prototype and description of - __builtin_expect_with_probability. - -2018-10-30 Michael Ploujnikov - - * cgraph.h (clone_function_name_1): Replaced by new - clone_function_name_numbered that takes name as string; for - privatize_symbol_name_1 use only. - (clone_function_name): Renamed to - clone_function_name_numbered to be explicit about numbering. - (clone_function_name): New two-argument function that does - not number its output. - (clone_function_name): New three-argument function that - takes a number to append to its output. - * cgraphclones.c (duplicate_thunk_for_node): - (clone_function_name_1): Renamed. - (clone_function_name_numbered): Two new functions. - (clone_function_name): Improved documentation. - (cgraph_node::create_virtual_clone): Use clone_function_name_numbered. - * config/rs6000/rs6000.c (make_resolver_func): Ditto. - * final.c (final_scan_insn_1): Use the new clone_function_name - without numbering. - * multiple_target.c (create_dispatcher_calls): Ditto. - (create_target_clone): Ditto. - * omp-expand.c (grid_expand_target_grid_body): Ditto. - * omp-low.c (create_omp_child_function_name): Ditto. - * omp-simd-clone.c (simd_clone_create): Ditto. - * symtab.c (simd_symtab_node::noninterposable_alias): Use the - new clone_function_name without numbering. - -2018-10-30 Richard Earnshaw - - * alloc-pool.h (base_pool_allocator ::initialize): - Assert that the allocation size is not zero. - -2018-10-30 Richard Biener - - PR tree-optimization/87800 - * tree-vect-slp.c (vect_build_slp_tree_2): Reject any - non-induction or reduction PHIs. - -2018-10-30 Sameera Deshpande - - * config/aarch64/falkor-tag-collision-avoidance.c - (execute_tag_collision_avoidance): Call df_note_add_problem. - -2018-10-30 Martin Liska - - * doc/extend.texi: Fix typo in documentation - of __builtin_expect_with_probability. - -2018-10-29 David Malcolm - - PR c++/87721 - * input.c (get_substring_ranges_for_loc): Detect if - linemap_resolve_location gives us a NULL map, and reject - this case. - -2018-10-29 Iain Buclaw - - * config.gcc (xstormy16-*-elf): Set tm_d_file. - -2018-10-29 David Malcolm - Martin Sebor - Manuel Lopez-Ibanez - - * doc/ux.texi (Quoting): New subsection, adapted from material at - https://gcc.gnu.org/wiki/DiagnosticsGuidelines written by - MartinSebor and ManuelLopezIbanez. - (Fix-it hints): Note that fix-it hints shouldn't be marked for - translation. - -2018-10-29 Kugan Vivekanandarajah - - PR middle-end/87469 - * tree-ssa-loop-niter.c (number_of_iterations_popcount): Fix niter - max value. - -2018-10-29 Paul A. Clarke - - * gcc.target/powerpc/ssse3-check.h: Remove inaccurate comment. - -2018-10-29 Paul Koning - - * doc/rtl.texi (CONST_WIDE_INT_ELT): Give correct macro name. - -2018-10-29 Paul A. Clarke - - * gcc/config/rs6000/mmintrin.h (_mm_packs_pi16, _mm_packs_pi32, - _mm_packs_pu16, _mm_unpackhi_pi8, _mm_unpacklo_pi8, _mm_add_pi8, - _mm_add_pi16, _mm_add_pi32, _mm_sub_pi8, _mm_sub_pi16, _mm_sub_pi32, - _mm_cmpgt_pi8, _mm_cmpeq_pi16, _mm_cmpgt_pi16, _mm_cmpeq_pi32, - _mm_cmpgt_pi32, _mm_adds_pi8, _mm_adds_pi16, _mm_adds_pu8, - _mm_adds_pu16, _mm_subs_pi8, _mm_subs_pi16, _mm_subs_pu8, - _mm_subs_pu16, _mm_madd_pi16, _mm_mulhi_pi16, _mm_mullo_pi16, - _mm_sll_pi16, _mm_sra_pi16, _mm_srl_pi16, _mm_set1_pi16, _mm_set1_pi8): - Change 'vector' to '__vector'. - * gcc/config/rs6000/xmmintrin.h (_mm_cvtps_pi32, _mm_cvttps_pi32, - _mm_cvtps_pi16, _mm_cvtps_pi8, _mm_max_pi16, _mm_max_pu8, _mm_min_pi16, - _mm_min_pu8, _mm_mulhi_pu16, _mm_shuffle_pi16, _mm_avg_pu8, - _mm_avg_pu16): Likewise. And, whitespace corrections. - -2018-10-29 Richard Biener - - PR tree-optimization/87785 - * tree-vect-slp.c (vect_gather_slp_loads): Only gather - internal defs. - -2018-10-29 Olivier Hainque - - * VXWORKS_NET_LIBS_RTP: New macro, network part of VXWORKS_LIBS_RTP. - -2018-10-29 Olivier Hainque - - * config/vxworks.h (VXWORKS_PERSONALITY): New VxWorks - ports configuration macro, defaults to "gnu". - (VXWORKS_OS_CPP_BUILTINS): Use it. Feed TOOL and - TOOL_FAMILY instead of _VX_TOOL/_VXTOOL_FAMILY. - -2018-10-29 Olivier Hainque - - * config/vxworks.h (CLEAR_INSN_CACHE): #undef before #define. - -2018-10-29 Richard Biener - - PR tree-optimization/87790 - * tree-vect-slp.c (vect_mark_slp_stmts): Simplify. - (vect_make_slp_decision): Adjust. - (vect_slp_analyze_bb_1): Likewise. - (vect_detect_hybrid_slp_stmts): Properly union SLP type over - edges. - -2018-10-29 Richard Biener - - PR tree-optimization/87785 - * tree-vect-slp.c (vect_build_slp_tree_2): Remove loads argument - and processing. - (vect_build_slp_tree): Likewise. - (vect_gather_slp_loads): New function. - (vect_analyze_slp_instance): Gather loads separately from the - SLP tree build. - -2018-10-29 Martin Liska - - * Makefile.in: Make dependency to json.o. - * doc/gcov.texi: Document new JSON format, remove - old intermediate format documentation. - * gcov.c (struct function_info): Come up with m_name and - m_demangled_name. - (function_info::function_info): Initialize it. - (function_info::~function_info): Release it. - (main): Rename flag_intermediate_format to flag_json_format. - (print_usage): Describe --json-format. - (process_args): Set flag_json_format. - (output_intermediate_line): Remove. - (output_intermediate_json_line): Likewise. - (get_gcov_intermediate_filename): Return new extension - ".gcov.json.gz". - (output_intermediate_file): Implement JSON emission. - (output_json_intermediate_file): Implement JSON emission. - (generate_results): Use ::get_name for function name. - Handle JSON output file. - (read_graph_file): Use ::get_name instead of cplus_demangle. - (read_count_file): Likewise. - (solve_flow_graph): Likewise. - (add_line_counts): Likewise. - (accumulate_line_counts): Use new flag_json_format. - (output_function_details): Use ::get_name instead of cplus_demangle. - (output_lines): Likewise. - * json.cc (test_writing_literals): Add new tests. - * json.h (class literal): Add new boolean constructor. - -2018-10-29 Segher Boessenkool - - PR rtl-optimization/87701 - PR rtl-optimization/87780 - * combine.c (make_more_copies): Rewrite. - -2018-10-28 Kugan Vivekanandarajah - - * doc/generic.texi (ABSU_EXPR): Document. - * match.pd (absu(x)*absu(x) -> x*x): Handle. - (absu(absu(X)) -> absu(X)): Likewise. - (absu(-X) -> absu(X)): Likewise. - (absu(X) where X is nonnegative -> X): Likewise. - -2018-10-28 Iain Buclaw - - * Makefile.in (tm_d_file_list, tm_d_include_list): New variables. - (TM_D_H, D_TARGET_DEF, D_TARGET_H, D_TARGET_OBJS): New variables. - (tm_d.h, cs-tm_d.h, default-d.o): New rules. - (d/d-target-hooks-def.h, s-d-target-hooks-def-h): New rules. - (s-tm-texi): Also check timestamp on d-target.def. - (generated_files): Add TM_D_H and d-target-hooks-def.h. - (build/genhooks.o): Also depend on D_TARGET_DEF. - * config.gcc (tm_d_file, d_target_objs, target_has_targetdm): New - variables. - * config/aarch64/aarch64-d.c: New file. - * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE): - Define. - * config/aarch64/aarch64-protos.h (aarch64_d_target_versions): New - prototype. - * config/aarch64/aarch64.h (TARGET_D_CPU_VERSIONS): Define. - * config/aarch64/t-aarch64 (aarch64-d.o): New rule. - * config/arm/arm-d.c: New file. - * config/arm/arm-protos.h (arm_d_target_versions): New prototype. - * config/arm/arm.h (TARGET_D_CPU_VERSIONS): Define. - * config/arm/linux-eabi.h (EXTRA_TARGET_D_OS_VERSIONS): Define. - * config/arm/t-arm (arm-d.o): New rule. - * config/default-d.c: New file. - * config/glibc-d.c: New file. - * config/gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/i386/i386-d.c: New file. - * config/i386/i386-protos.h (ix86_d_target_versions): New prototype. - * config/i386/i386.h (TARGET_D_CPU_VERSIONS): Define. - * config/i386/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define. - (GNU_USER_TARGET_D_CRITSEC_SIZE): Define. - * config/i386/t-i386 (i386-d.o): New rule. - * config/kfreebsd-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/kopensolaris-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/linux-android.h (ANDROID_TARGET_D_OS_VERSIONS): Define. - * config/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/mips/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define. - * config/mips/mips-d.c: New file. - * config/mips/mips-protos.h (mips_d_target_versions): New prototype. - * config/mips/mips.h (TARGET_D_CPU_VERSIONS): Define. - * config/mips/t-mips (mips-d.o): New rule. - * config/powerpcspe/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/powerpcspe/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/powerpcspe/powerpcspe-d.c: New file. - * config/powerpcspe/powerpcspe-protos.h (rs6000_d_target_versions): - New prototype. - * config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue): - Support GNU D by using 0 as the language type. - * config/powerpcspe/powerpcspe.h (TARGET_D_CPU_VERSIONS): Define. - * config/powerpcspe/t-powerpcspe (powerpcspe-d.o): New rule. - * config/riscv/riscv-d.c: New file. - * config/riscv/riscv-protos.h (riscv_d_target_versions): New - prototype. - * config/riscv/riscv.h (TARGET_D_CPU_VERSIONS): Define. - * config/riscv/t-riscv (riscv-d.o): New rule. - * config/rs6000/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/rs6000/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. - * config/rs6000/rs6000-d.c: New file. - * config/rs6000/rs6000-protos.h (rs6000_d_target_versions): New - prototype. - * config/rs6000/rs6000.c (rs6000_output_function_epilogue): - Support GNU D by using 0 as the language type. - * config/rs6000/rs6000.h (TARGET_D_CPU_VERSIONS): Define. - * config/rs6000/t-rs6000 (rs6000-d.o): New rule. - * config/s390/s390-d.c: New file. - * config/s390/s390-protos.h (s390_d_target_versions): New prototype. - * config/s390/s390.h (TARGET_D_CPU_VERSIONS): Define. - * config/s390/t-s390 (s390-d.o): New rule. - * config/sparc/sparc-d.c: New file. - * config/sparc/sparc-protos.h (sparc_d_target_versions): New - prototype. - * config/sparc/sparc.h (TARGET_D_CPU_VERSIONS): Define. - * config/sparc/t-sparc (sparc-d.o): New rule. - * config/t-glibc (glibc-d.o): New rule. - * configure: Regenerated. - * configure.ac (tm_d_file): New variable. - (tm_d_file_list, tm_d_include_list, d_target_objs): Add substitutes. - * doc/contrib.texi (Contributors): Add self for the D frontend. - * doc/frontends.texi (G++ and GCC): Mention D as a supported language. - * doc/install.texi (Configuration): Mention libphobos as an option for - --enable-shared. Mention d as an option for --enable-languages. - (Testing): Mention check-d as a target. - * doc/invoke.texi (Overall Options): Mention .d, .dd, and .di as file - name suffixes. Mention d as a -x option. - * doc/sourcebuild.texi (Top Level): Mention libphobos. - * doc/standards.texi (Standards): Add section on D language. - * doc/tm.texi: Regenerated. - * doc/tm.texi.in: Add @node for D language and ABI, and @hook for - TARGET_CPU_VERSIONS, TARGET_D_OS_VERSIONS, and TARGET_D_CRITSEC_SIZE. - * dwarf2out.c (is_dlang): New function. - (gen_compile_unit_die): Use DW_LANG_D for D. - (declare_in_namespace): Return module die for D, instead of adding - extra declarations into the namespace. - (gen_namespace_die): Generate DW_TAG_module for D. - (gen_decl_die): Handle CONST_DECLSs for D. - (dwarf2out_decl): Likewise. - (prune_unused_types_walk_local_classes): Handle DW_tag_interface_type. - (prune_unused_types_walk): Handle DW_tag_interface_type same as other - kinds of aggregates. - * gcc.c (default_compilers): Add entries for .d, .dd and .di. - * genhooks.c: Include d/d-target.def. - -2018-10-28 Iain Sandoe - - PR target/85669 - * config/rs6000/darwin.h (STACK_BOUNDARY): New. - (RS6000_STARTING_FRAME_OFFSET): Adjust to preserve 16byte alignment. - (STACK_DYNAMIC_OFFSET): Likewise. - -2018-10-27 Sandra Loosemore - - PR target/80024 - * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Fix - error message. - -2018-10-26 Tulio Magno Quites Machado Filho - - * doc/extend.texi (PowerPC builtins): Fix __builtin_unpack_ibm128 - return type and other typos. - -2018-10-26 Aaron Sawdey - - * config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Change to - a shorter sequence with fewer branches. - (emit_final_str_compare_gpr): Ditto. - -2018-10-26 Paul A. Clarke - - * config/rs6000/tmmintrin.h: New file. - * config.gcc (powerpc*-*-*): Add tmmintrin.h to extra_headers. - -2018-10-26 Paul A. Clarke - - * config/rs6000/mmintrin.h: Enable 32bit compilation. - * config/rs6000/xmmintrin.h: Likewise. - -2018-10-26 Paul A. Clarke - - * config/rs6000/xmmintrin.h (_mm_extract_pi16): Fix for big-endian. - -2018-10-26 Richard Biener - - * tree-vect-slp.c (vect_mark_slp_stmts): Add visited hash_set - and wrapper. - (vect_mark_slp_stmts_relevant): Likewise. - (vect_detect_hybrid_slp_stmts): Likewise. - (vect_bb_slp_scalar_cost): Likewise. - (vect_remove_slp_scalar_calls): Likewise. - -2018-10-26 Jan Hubicka - - * ipa-devirt.c (odr_subtypes_equivalent_p): Fix recursion. - (warn_types_mismatch): Fix walk of DECL_NAME. - (odr_types_equivalent_p): Fix overactive assert. - -2018-10-26 Richard Biener - - PR tree-optimization/87105 - * tree-vectorizer.h (_slp_tree::refcnt): New member. - * tree-vect-slp.c (vect_free_slp_tree): Decrement and honor - refcnt. - (vect_create_new_slp_node): Initialize refcnt to one. - (bst_traits): Move. - (scalar_stmts_set_t, bst_fail): Remove. - (vect_build_slp_tree_2): Add bst_map argument and adjust calls. - (vect_build_slp_tree): Add bst_map argument and lookup - already created SLP nodes. - (vect_print_slp_tree): Handle a SLP graph, print SLP node - addresses. - (vect_slp_rearrange_stmts): Handle a SLP graph. - (vect_analyze_slp_instance): Adjust and free SLP nodes from - the CSE map. Fix indenting. - (vect_schedule_slp_instance): Add short-cut. - -2018-10-26 Martin Liska - - PR testsuite/86158 - * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Hash with - addr_expr and not with pointers. - -2018-10-26 Jan Hubicka - - * tree.c (free_lang_data_in_type): Only check main variants. - * ipa-devirt.c (warn_odr): Make static. - (types_same_for_odr): Drop strict variant. - (types_odr_comparable): Likewise. - (odr_or_derived_type_p): Look for main variants. - (odr_name_hasher::equal): Cleanup comment. - (odr_subtypes_equivalent): Add warn and warned arguments; check main - variants. - (type_variants_equivalent_p): break out from ... - (odr_types_equivalent): ... here; go for main variants where needed. - (warn_odr): ... here; turn static. - (warn_types_mismatch): Compare mangled names of main variants. - * ipa-utils.h (types_odr_comparable): Drop strict parameter. - (type_with_linkage_p): Sanity check that we look at main variant. - * lto.c (lto_read_decls): Only consider main variant to be ODR type. - * tree.h (types_same_for_odr): Drop strict argument. - -2018-10-26 Richard Biener - - PR tree-optimization/87746 - * tree-vect-data-refs.c (vect_update_misalignment_for_peel): - Simplify and fix WRT strided store groups with size not - equal to step in element count. - (vect_analyze_group_access_1): Dump the whole group. - -2018-10-25 Carl Love - - * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_VSCEDPGT, - P9V_BUILTIN_VEC_VSCEDPLT, P9V_BUILTIN_VEC_VSCEDPEQ, - P9V_BUILTIN_VEC_VSCEDPUO): Rename base overloaded name. Add quad - precicion entry for each overloaded builtin. - * config/rs6000/rs6000-builtin.def (VSCEDPGT, VSCEDPLT, VSCEDPEQ, - VSCEDPUO): Rename overloaded name. - (VSCEDPGT, VSCEQPGT, VSCEDPLT, VSCEQPLT, VSCEDPEQ, VSCEQPEQ, - VSCEDPUO, VSCEQPUO): Add defitions for overloaded builtins. - * config/rs6000/vsx.md (xscmpexpqp__): Add - define_expand for xscmpexqp instruction. - (*xscmpexpqp): Add define_insn for the xscmpexqp instruction. - -2018-10-25 Bill Schmidt - Jinsong Ji - - * config/rs6000/emmintrin.h (_mm_slli_epi16): Replace deprecated - function with vec_sl. - (_mm_slli_epi32): Likewise. - (_mm_slli_epi64): Likewise. - (_mm_srai_epi16): Replace deprecated function with vec_sra. - (_mm_srai_epi32): Likewise. - (_mm_srli_epi16): Replace deprecated function with vec_sr. - (_mm_srli_epi32): Likewise. - (_mm_srli_epi64): Likewise. - (_mm_sll_epi16): Replace deprecated function with vec_sl. - (_mm_sll_epi32): Likewise. - (_mm_sll_epi64): Likewise. - (_mm_sra_epi16): Replace deprecated function with vec_sra. - (_mm_sra_epi32): Likewise. - (_mm_srl_epi16): Replace deprecated function with vec_sr. - (_mm_srl_epi32): Likewise. - (_mm_srl_epi64): Likewise. - -2018-10-25 Bill Schmidt - Jinsong Ji - - * gcc/config/rs6000/emmintrin.h (_mm_sll_epi16): Replace - comparison operators with vec_cmp* for compatibility due to - unfortunate history; clean up formatting and use types more - appropriately. - (_mm_sll_epi32): Likewise. - (_mm_sll_epi64): Likewise. - (_mm_srl_epi16): Likewise. - (_mm_srl_epi32): Likewise. - (_mm_srl_epi64): Likewise. - -2018-10-25 Bill Schmidt - Jinsong Ji - - * config/rs6000/emmintrin.h (_mm_sll_epi64): Remove wrong cast. - * config/rs6000/xmmintrin.h (_mm_min_ps): Change m's type to - __vector __bool int. Use vec_cmpgt in preference to deprecated - function vec_vcmpgtfp. - (_mm_max_ps): Likewise. - -2018-10-25 Jeff Law - - * config/rl78/rl78.c (insn_ok_now): Always re-recognize the insn - if returning false. - -2018-10-25 Martin Sebor - - * doc/extend.texi (aligned): Expand attribute description. - (Alignment): Rename section. Discuss function arguments. - -2018-10-25 Jan Hubicka - - * ipa-devirt.c (main_odr_variant): Remove. - (hash_odr_name, types_same_for_odr, types_odr_comparable, - odr_name_hasher::equal, odr_subtypes_equivalent_p): - Drop use of main_odr_variant. - (add_type_duplicate): Silence confused warnings on integer types. - (get_odr_type): Always look for main variant. - (register_odr_type): Simplify. - -2018-10-25 Richard Biener - - * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): - Initialize ng to silence error with release checking bootstrap. - -2018-10-25 Richard Biener - - * tree-if-conv.c: Include tree-ssa-sccvn.h. - (tree_if_conversion): Run CSE on the if-converted loop body. - -2018-10-25 Ilya Leoshkevich - - * config/s390/constraints.md (ZL): New constraint. - * config/s390/s390.c (legitimate_pic_operand_p): Accept LARL - operands. - * config/s390/s390.md (movdi_larl): Remove. - (movdi_64): Add the LARL alternative. - -2018-10-25 Ilya Leoshkevich - - PR bootstrap/87747 - * rtl.c (RTX_CODE_HWINT_P_1): New helper macro. - (RTX_CODE_HWINT_P): New macro. - (rtx_code_size): Use RTX_CODE_HWINT_P (). - -2018-10-25 Jan Hubicka - - * ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types - is anonymous. - -2018-10-25 Richard Biener - - PR tree-optimization/87665 - PR tree-optimization/87745 - * tree-vectorizer.h (get_earlier_stmt): Remove. - (get_later_stmt): Pick up UID from the original non-pattern stmt. - -2018-10-25 Sam Tebbs - - * options.texi (Deprecated): Move list to Var section. - -2018-10-24 Bill Schmidt - Jinsong Ji - - * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Change deprecated - __vector long to __vector long long. - (_mm_cvtpd_ps): Likewise. - (_mm_cvttpd_epi32): Likewise. - (_mm_cvtpi32_pd): Likewise. - (_mm_unpackhi_epi64): Likewise. - (_mm_unpacklo_epi64): Likewise. - -2018-10-24 Segher Boessenkool - - PR rtl-optimization/87720 - * combine.c (make_more_copies): Skip if the dest is pc_rtx. - -2018-10-24 Alexandre Oliva - - * gimple-ssa-isolate-paths.c - (find_implicit_erroneous_behavior): Do not change code if the - pass is running for warnings only. - (find_explicit_erroneous_behavior): Likewise. - -2018-10-24 Michael Meissner - - * config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME): - Define as rs6000_mangle_decl_assembler_name. - (rs6000_mangle_decl_assembler_name): If the user switched from IBM - long double to IEEE long double, switch the names of the long - double built-in functions to be f128 instead of l. - -2018-10-24 Martin Sebor - - * doc/extend.texi (nonnull): List no-argument form. Reference - -fno-delete-null-pointer-checks and -fisolate-erroneous-paths-attribute. - -2018-10-24 Richard Biener - - * tree-ssa-sccvn.c (do_rpo_vn): Free rpo_state. - -2018-10-24 Martin Liska - - PR tree-optimization/84436 - * tree-switch-conversion.c (switch_conversion::contains_same_values_p): - Remove. - (switch_conversion::contains_linear_function_p): New. - (switch_conversion::build_one_array): Support linear - transformation on input. - * tree-switch-conversion.h (struct switch_conversion): Add - contains_linear_function_p declaration. - -2018-10-24 Richard Biener - - * varasm.c (const_hash_1): Return hash of ADDR_EXPR - if its argument is CONSTANT_CLASS_P. - -2018-10-11 Jan Hubicka - - * ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL; - it is wrong for forward declarations. - -2018-10-24 Ilya Leoshkevich - - * config/s390/s390.c (s390_check_qrst_address): Add the missing - SYMBOL_REF_P () check. - -2018-10-24 Richard Biener - - PR tree-optimization/87105 - * tree-vect-data-refs.c (vect_analyze_group_access_1): Adjust - dump classification. - (vect_analyze_data_ref_accesses): Handle duplicate loads and - stores by splitting the affected group after the fact. - * tree-vect-slp.c (vect_build_slp_tree_2): Dump when we - fail the SLP build because of size constraints. - -2018-10-24 Rainer Orth - - * configure.ac (gcc_cv_ld_aligned_shf_merge): New test. - * configure: Regenerate. - * config.in: Regenerate. - * varasm.c (mergeable_string_section): Use readonly_data_section - if linker doesn't support SHF_MERGE with alignment > 8. - (mergeable_constant_section): Likewise. - -2018-10-24 Richard Biener - - PR tree-optimization/84013 - * tree-ssa-structalias.c (struct msdi_data): New struct for - marshalling data to walk_stmt_load_store_ops. - (maybe_set_dependence_info): Refactor as callback for - walk_stmt_load_store_ops. - (compute_dependence_clique): Set restrict info on all stmt kinds. - -2018-10-24 Martin Liska - - * cgraph.c (cgraph_node::dump): - Remove reduntant dumps and make tp_first_run dump more compact. - -2018-10-24 Richard Biener - - PR tree-optimization/87665 - * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust - to reflect reality. - -2018-10-12 Jeff Law - - * config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation - for H8/S. - -2018-10-23 Richard Biener - - * tree-vrp.c (add_assert_info): Guard dump_printf with - dump_enabled_p. - * gimple-ssa-evrp-analyze.c - (evrp_range_analyzer::record_ranges_from_incoming_edge): - Use value_range::ignore_equivs_equal_p. - -2018-10-23 Richard Biener - - PR tree-optimization/87105 - PR tree-optimization/87608 - * passes.def (pass_all_early_optimizations): Add early phi-opt - after dce. - * tree-ssa-phiopt.c (value_replacement): Ignore NOPs and predicts in - addition to debug stmts. - (tree_ssa_phiopt_worker): Add early_p argument, do only min/max - and abs replacement early. - * tree-cfg.c (gimple_empty_block_p): Likewise. - -2018-10-23 Richard Earnshaw - - PR target/86383 - * config.gcc (arm*-*-netbsdelf*): Default to StrongARM if no CPU - specified to configure. - (arm*-*-*): Use ARM7TDMI as the target CPU if no default provided. - -2018-10-23 Richard Biener - - PR tree-optimization/87700 - * tree-ssa-copy.c (set_copy_of_val): Fix change detection logic. - -2018-10-23 Jakub Jelinek - - PR target/87674 - * config/i386/avx512vlintrin.h (_mm_mask_mullo_epi32): Change type of - second argument from __mmask16 to __mmask8. - * config/i386/avx512vlbwintrin.h (_mm_mask_packus_epi32, - _mm_mask_packs_epi32): Likewise. - * config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i64scatter_ps): - Likewise. - (_mm512_mask_prefetch_i64scatter_pd): Likewise. Formatting fix. - -2018-10-23 Richard Biener - - * tree-vect-stmts.c (vect_analyze_stmt): Fix typo in comment. - -2018-10-23 Richard Biener - - PR tree-optimization/86144 - * tree-vect-stmts.c (vect_analyze_stmt): Prefer -mveclibabi - over simd attribute. - -2018-10-23 Richard Biener - - PR tree-optimization/87693 - * tree-ssa-threadedge.c (thread_around_empty_blocks): Handle - the case we do not find the taken edge. - -2018-10-22 Bill Schmidt - Jinsong Ji - - * config/rs6000/emmintrin.h (_MM_SHUFFLE2): Comment cleanup. - (_mm_store_pd): Use unaligned vector type for pointer cast. - (_mm_maskmoveu_si128): Likewise. - * config/rs6000/xmmintrin.h (__m128_u): New typedef. - (_mm_store_ps): Use unaligned vector type for pointer cast. - -2018-10-22 Paul Koning - - * symtab.c (symtab_node::increase_alignment): Correct max - alignment check. - -2018-10-22 Yury Gribov - - PR tree-optimization/87633 - * match.pd: Do not generate unordered integer comparisons. - -2018-10-22 Segher Boessenkool - - PR rtl-optimization/87600 - * combine.c: Add include of expr.h. - (cant_combine_insn_p): Do not combine moves from any hard non-fixed - register to a pseudo. - (make_more_copies): New function, add a copy to a new pseudo after - the moves from hard registers into pseudos. - (rest_of_handle_combine): Declare rebuild_jump_labels_after_combine - later. Call make_more_copies. - -2018-10-22 Andrew Stubbs - - * lra-constraints.c (process_alt_operands): New local array, - matching_early_clobber. Check matching_early_clobber before - decrementing reject, and set matching_early_clobber after. - -2018-10-22 Segher Boessenkool - - PR target/87598 - * config/rs6000/rs6000.c (print_operand_address): For unexpected RTL - call output_addr_const and hope for the best. - -2018-10-22 Richard Biener - - * gimple-ssa-evrp-analyze.c - (evrp_range_analyzer::record_ranges_from_incoming_edge): Be - smarter about what ranges to use. - * tree-vrp.c (add_assert_info): Dump here. - (register_edge_assert_for_2): Instead of here at multiple but - not all places. - - * gcc.dg/tree-ssa/evrp12.c: New testcase. - * gcc.dg/predict-6.c: Adjust. - * gcc.dg/tree-ssa/vrp33.c: Disable EVRP. - * gcc.dg/tree-ssa/vrp02.c: Likewise. - * gcc.dg/tree-ssa/cunroll-9.c: Likewise. - -2018-10-22 Steven Bosscher - Richard Biener - - * bitmap.h: Update data structure documentation, including a - description of bitmap views as either linked-lists or splay trees. - (struct bitmap_element_def): Update comments for splay tree bitmaps. - (struct bitmap_head_def): Likewise. - (bitmap_list_view, bitmap_tree_view): New prototypes. - (bitmap_initialize_stat): Initialize a bitmap_head's indx and - tree_form fields. - (bmp_iter_set_init): Assert the iterated bitmaps are in list form. - (bmp_iter_and_init, bmp_iter_and_compl_init): Likewise. - * bitmap.c (bitmap_elem_to_freelist): Unregister overhead of a - released bitmap element here. - (bitmap_element_free): Remove. - (bitmap_elt_clear_from): Work on splay tree bitmaps. - (bitmap_list_link_element): Renamed from bitmap_element_link. Move - this function similar ones such that linked-list bitmap implementation - functions are grouped. - (bitmap_list_unlink_element): Renamed from bitmap_element_unlink, - and moved for grouping. - (bitmap_list_insert_element_after): Renamed from - bitmap_elt_insert_after, and moved for grouping. - (bitmap_list_find_element): New function spliced from bitmap_find_bit. - (bitmap_tree_link_left, bitmap_tree_link_right, - bitmap_tree_rotate_left, bitmap_tree_rotate_right, bitmap_tree_splay, - bitmap_tree_link_element, bitmap_tree_unlink_element, - bitmap_tree_find_element): New functions for splay-tree bitmap - implementation. - (bitmap_element_link, bitmap_element_unlink, bitmap_elt_insert_after): - Renamed and moved, see above entries. - (bitmap_tree_listify_from): New function to convert part of a splay - tree bitmap to a linked-list bitmap. - (bitmap_list_view): Convert a splay tree bitmap to linked-list form. - (bitmap_tree_view): Convert a linked-list bitmap to splay tree form. - (bitmap_find_bit): Remove. - (bitmap_clear, bitmap_clear_bit, bitmap_set_bit, - bitmap_single_bit_set_p, bitmap_first_set_bit, bitmap_last_set_bit): - Handle splay tree bitmaps. - (bitmap_copy, bitmap_count_bits, bitmap_and, bitmap_and_into, - bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into, - bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior, bitmap_ior_into, - bitmap_xor, bitmap_xor_into, bitmap_equal_p, bitmap_intersect_p, - bitmap_intersect_compl_p, bitmap_ior_and_compl, - bitmap_ior_and_compl_into, bitmap_set_range, bitmap_clear_range, - bitmap_hash): Reject trying to act on splay tree bitmaps. Make - corresponding changes to use linked-list specific bitmap_element - manipulation functions as applicable for efficiency. - (bitmap_tree_to_vec): New function. - (debug_bitmap_elt_file): New function split out from ... - (debug_bitmap_file): ... here. Handle splay tree bitmaps. - (bitmap_print): Likewise. - - PR tree-optimization/63155 - * tree-ssa-propagate.c (ssa_prop_init): Use tree-view for the - SSA edge worklists. - * tree-ssa-coalesce.c (coalesce_ssa_name): Populate used_in_copies - in tree-view. - -2018-10-22 Martin Liska - - PR tree-optimization/87686 - Revert - 2018-08-29 Martin Liska - - * tree-switch-conversion.c (switch_conversion::expand): - Strenghten assumption about gswitch statements. - -2018-10-22 Martin Liska - - * ipa-icf.c (sem_item::compare_attributes): Remove. - (sem_item::compare_referenced_symbol_properties): Use - attribute_list_equal instead. - (sem_function::equals_wpa): Likewise. - * ipa-icf.h: Remove compare_attributes. - -2018-10-22 Richard Biener - - PR middle-end/87682 - * mem-stats.h (mem_usage::operator==): Fix pasto. - -2018-10-22 Richard Biener - - PR tree-optimization/87640 - * tree-vrp.c (set_value_range_with_overflow): Decompose - incomplete result. - (extract_range_from_binary_expr_1): Adjust. - -2018-10-22 Martin Jambor - - * tree-eh.h (stmt_could_throw_p): Add function parameter. - (stmt_can_throw_external): Likewise. - (stmt_can_throw_internal): Likewise. - * tree-eh.c (lower_eh_constructs_2): Pass cfun to stmt_could_throw_p. - (lower_eh_constructs_2): Likewise. - (stmt_could_throw_p): Add fun parameter, use it instead of cfun. - (stmt_can_throw_external): Likewise. - (stmt_can_throw_internal): Likewise. - (maybe_clean_eh_stmt_fn): Pass cfun to stmt_could_throw_p. - (maybe_clean_or_replace_eh_stmt): Pass cfun to stmt_could_throw_p. - (maybe_duplicate_eh_stmt_fn): Pass new_fun to stmt_could_throw_p. - (maybe_duplicate_eh_stmt): Pass cfun to stmt_could_throw_p. - (pass_lower_eh_dispatch::execute): Pass cfun to - stmt_can_throw_external. - (cleanup_empty_eh): Likewise. - (verify_eh_edges): Pass cfun to stmt_could_throw_p. - * cgraph.c (cgraph_edge::set_call_stmt): Pass a function to - stmt_can_throw_external instead of pushing it to cfun. - (symbol_table::create_edge): Likewise. - * gimple-fold.c (fold_builtin_atomic_compare_exchange): Pass cfun to - stmt_can_throw_internal. - * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Pass cfun - to stmt_could_throw_p. - * gimple-ssa-store-merging.c (handled_load): Pass cfun to - stmt_can_throw_internal. - (pass_store_merging::execute): Likewise. - * gimple-ssa-strength-reduction.c - (find_candidates_dom_walker::before_dom_children): Pass cfun to - stmt_could_throw_p. - * gimplify-me.c (gimple_regimplify_operands): Pass cfun to - stmt_can_throw_internal. - * ipa-pure-const.c (check_call): Pass cfun to stmt_could_throw_p and - to stmt_can_throw_external. - (check_stmt): Pass cfun to stmt_could_throw_p. - (check_stmt): Pass cfun to stmt_can_throw_external. - (pass_nothrow::execute): Likewise. - * trans-mem.c (expand_call_tm): Pass cfun to stmt_can_throw_internal. - * tree-cfg.c (is_ctrl_altering_stmt): Pass cfun to - stmt_can_throw_internal. - (verify_gimple_in_cfg): Pass cfun to stmt_could_throw_p. - (stmt_can_terminate_bb_p): Pass cfun to stmt_can_throw_external. - (gimple_purge_dead_eh_edges): Pass cfun to stmt_can_throw_internal. - * tree-complex.c (expand_complex_libcall): Pass cfun to - stmt_could_throw_p and to stmt_can_throw_internal. - (expand_complex_multiplication): Pass cfun to stmt_can_throw_internal. - * tree-inline.c (copy_edges_for_bb): Likewise. - (maybe_move_debug_stmts_to_successors): Likewise. - * tree-outof-ssa.c (ssa_is_replaceable_p): Pass cfun to - stmt_could_throw_p. - * tree-parloops.c (oacc_entry_exit_ok_1): Likewise. - * tree-sra.c (scan_function): Pass cfun to stmt_can_throw_external. - * tree-ssa-alias.c (stmt_kills_ref_p): Pass cfun to - stmt_can_throw_internal. - * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise. - * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Pass cfun to - stmt_could_throw_p. - (mark_aliased_reaching_defs_necessary_1): Pass cfun to - stmt_can_throw_internal. - * tree-ssa-forwprop.c (pass_forwprop::execute): Likewise. - * tree-ssa-loop-im.c (movement_possibility): Pass cfun to - stmt_could_throw_p. - * tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Likewise. - (add_autoinc_candidates): Pass cfun to stmt_can_throw_internal. - * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise. - (convert_mult_to_fma_1): Likewise. - (convert_to_divmod): Likewise. - * tree-ssa-phiprop.c (propagate_with_phi): Likewise. - * tree-ssa-pre.c (compute_avail): Pass cfun to stmt_could_throw_p. - * tree-ssa-propagate.c - (substitute_and_fold_dom_walker::before_dom_children): Likewise. - * tree-ssa-reassoc.c (suitable_cond_bb): Likewise. - (maybe_optimize_range_tests): Likewise. - (linearize_expr_tree): Likewise. - (reassociate_bb): Likewise. - * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise. - * tree-ssa-scopedtables.c (hashable_expr_equal_p): Likewise. - * tree-ssa-strlen.c (adjust_last_stmt): Likewise. - (handle_char_store): Likewise. - * tree-vect-data-refs.c (vect_find_stmt_data_reference): Pass cfun to - stmt_can_throw_internal. - * tree-vect-patterns.c (check_bool_pattern): Pass cfun to - stmt_could_throw_p. - * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise. - (vectorizable_call): Pass cfun to stmt_can_throw_internal. - (vectorizable_simd_clone_call): Likewise. - * value-prof.c (gimple_ic): Pass cfun to stmt_could_throw_p. - (gimple_stringop_fixed_value): Likewise. - -2018-10-22 Ilya Leoshkevich - - * config/s390/s390.c (s390_loadrelative_operand_p): Accept - literal pool references. - (s390_check_qrst_address): Adapt to the new behavior of - s390_loadrelative_operand_p (). - -2018-10-22 H.J. Lu - - PR target/72782 - * config/i386/sse.md (*andnot3_bcst): New. - -2018-10-22 H.J. Lu - - PR target/72782 - * config/i386/sse.md (*3_bcst): New. - -2018-10-22 H.J. Lu - - PR target/72782 - * config/i386/sse.md (avx512bcst): Updated for V4SI, V2DI, V8SI, - V4DI, V16SI and V8DI. - (*sub3_bcst): New. - (*add3_bcst): Likewise. - -2018-10-21 Bill Schmidt - Jinsong Ji - - * config/rs6000/emmintrin.h (_mm_movemask_pd): Replace __vector - __m64 with __vector unsigned long long for compatibility. - (_mm_movemask_epi8): Likewise. - * config/rs6000/xmmintrin.h (_mm_cvtps_pi32): Likewise. - (_mm_cvttps_pi32): Likewise. - (_mm_cvtpi32_ps): Likewise. - (_mm_cvtps_pi16): Likewise. - (_mm_loadh_pi): Likewise. - (_mm_storeh_pi): Likewise. - (_mm_movehl_ps): Likewise. - (_mm_movelh_ps): Likewise. - (_mm_loadl_pi): Likewise. - (_mm_storel_pi): Likewise. - (_mm_movemask_ps): Likewise. - (_mm_shuffle_pi16): Likewise. - -2018-10-21 H.J. Lu - - PR target/72782 - * config/i386/avx512fintrin.h (_mm512_fnmsub_round_pd): Use - __builtin_ia32_vfnmsubpd512_mask. - (_mm512_mask_fnmsub_round_pd): Likewise. - (_mm512_fnmsub_pd): Likewise. - (_mm512_mask_fnmsub_pd): Likewise. - (_mm512_maskz_fnmsub_round_pd): Use - __builtin_ia32_vfnmsubpd512_maskz. - (_mm512_maskz_fnmsub_pd): Likewise. - (_mm512_fnmsub_round_ps): Use __builtin_ia32_vfnmsubps512_mask. - (_mm512_mask_fnmsub_round_ps): Likewise. - (_mm512_fnmsub_ps): Likewise. - (_mm512_mask_fnmsub_ps): Likewise. - (_mm512_maskz_fnmsub_round_ps): Use - __builtin_ia32_vfnmsubps512_maskz. - (_mm512_maskz_fnmsub_ps): Likewise. - * config/i386/avx512vlintrin.h (_mm256_mask_fnmsub_pd): Use - __builtin_ia32_vfnmsubpd256_mask. - (_mm256_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256_maskz. - (_mm_mask_fnmsub_pd): Use __builtin_ia32_vfmaddpd128_mask - (_mm_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd128_maskz. - (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask. - (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask. - (_mm256_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_maskz. - (_mm_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_mask. - (_mm_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_maskz. - * config/i386/fmaintrin.h (_mm_fnmsub_pd): Use - __builtin_ia32_vfnmsubpd. - (_mm256_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256. - (_mm_fnmsub_ps): Use __builtin_ia32_vfnmsubps. - (_mm256_fnmsub_ps): Use __builtin_ia32_vfnmsubps256. - (_mm_fnmsub_sd): Use __builtin_ia32_vfnmsubsd3. - (_mm_fnmsub_ss): Use __builtin_ia32_vfnmsubss3. - * config/i386/i386-builtin.def: Add - __builtin_ia32_vfnmsubpd256_mask, - __builtin_ia32_vfnmsubpd256_maskz, - __builtin_ia32_vfnmsubpd128_mask, - __builtin_ia32_vfnmsubpd128_maskz, - __builtin_ia32_vfnmsubps256_mask, - __builtin_ia32_vfnmsubps256_maskz, - __builtin_ia32_vfnmsubps128_mask, - __builtin_ia32_vfnmsubps128_maskz, - __builtin_ia32_vfnmsubpd512_mask, - __builtin_ia32_vfnmsubpd512_maskz, - __builtin_ia32_vfnmsubps512_mask, - __builtin_ia32_vfnmsubps512_maskz, __builtin_ia32_vfnmsubss3, - __builtin_ia32_vfnmsubsd3, __builtin_ia32_vfnmsubps, - __builtin_ia32_vfnmsubpd, __builtin_ia32_vfnmsubps256 and. - __builtin_ia32_vfnmsubpd256. - * config/i386/sse.md (fma4i_fnmsub_): New. - (_fnmsub__maskz): Likewise. - (*fma_fnmsub__bcst_1): - Likewise. - (*fma_fnmsub__bcst_2): - Likewise. - (*fma_fnmsub__bcst_3): - Likewise. - (fmai_vmfnmsub_): Likewise. - -2018-10-21 H.J. Lu - - PR target/72782 - * config/i386/avx512fintrin.h (_mm512_fnmadd_round_pd): Use - __builtin_ia32_vfnmaddpd512_mask. - (_mm512_mask_fnmadd_round_pd): Likewise. - (_mm512_fnmadd_pd): Likewise. - (_mm512_mask_fnmadd_pd): Likewise. - (_mm512_maskz_fnmadd_round_pd): Use - __builtin_ia32_vfnmaddpd512_maskz. - (_mm512_maskz_fnmadd_pd): Likewise. - (_mm512_fnmadd_round_ps): Use __builtin_ia32_vfnmaddps512_mask. - (_mm512_mask_fnmadd_round_ps): Likewise. - (_mm512_fnmadd_ps): Likewise. - (_mm512_mask_fnmadd_ps): Likewise. - (_mm512_maskz_fnmadd_round_ps): Use - __builtin_ia32_vfnmaddps512_maskz. - (_mm512_maskz_fnmadd_ps): Likewise. - * config/i386/avx512vlintrin.h (_mm256_mask_fnmadd_pd): Use - __builtin_ia32_vfnmaddpd256_mask. - (_mm256_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256_maskz. - (_mm_mask_fnmadd_pd): Use __builtin_ia32_vfmaddpd128_mask - (_mm_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd128_maskz. - (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask. - (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask. - (_mm256_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_maskz. - (_mm_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_mask. - (_mm_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_maskz. - * config/i386/fmaintrin.h (_mm_fnmadd_pd): Use - __builtin_ia32_vfnmaddpd. - (_mm256_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256. - (_mm_fnmadd_ps): Use __builtin_ia32_vfnmaddps. - (_mm256_fnmadd_ps): Use __builtin_ia32_vfnmaddps256. - (_mm_fnmadd_sd): Use __builtin_ia32_vfnmaddsd3. - (_mm_fnmadd_ss): Use __builtin_ia32_vfnmaddss3. - * config/i386/i386-builtin.def: Add - __builtin_ia32_vfnmaddpd256_mask, - __builtin_ia32_vfnmaddpd256_maskz, - __builtin_ia32_vfnmaddpd128_mask, - __builtin_ia32_vfnmaddpd128_maskz, - __builtin_ia32_vfnmaddps256_mask, - __builtin_ia32_vfnmaddps256_maskz, - __builtin_ia32_vfnmaddps128_mask, - __builtin_ia32_vfnmaddps128_maskz, - __builtin_ia32_vfnmaddpd512_mask, - __builtin_ia32_vfnmaddpd512_maskz, - __builtin_ia32_vfnmaddps512_mask, - __builtin_ia32_vfnmaddps512_maskz, __builtin_ia32_vfnmaddss3, - __builtin_ia32_vfnmaddsd3, __builtin_ia32_vfnmaddps, - __builtin_ia32_vfnmaddpd, __builtin_ia32_vfnmaddps256 and. - __builtin_ia32_vfnmaddpd256. - * config/i386/sse.md (fma4i_fnmadd_): New. - (_fnmadd__maskz): Likewise. - (*fma_fnmadd__bcst_1): - Likewise. - (*fma_fnmadd__bcst_2): - Likewise. - (*fma_fnmadd__bcst_3): - Likewise. - (fmai_vmfnmadd_): Likewise. - -2018-10-21 H.J. Lu - - PR target/72782 - * config/i386/avx512fintrin.h (_mm512_fmsub_round_pd): Use - __builtin_ia32_vfmsubpd512_mask. - (_mm512_mask_fmsub_round_pd): Likewise. - (_mm512_fmsub_pd): Likewise. - (_mm512_mask_fmsub_pd): Likewise. - (_mm512_maskz_fmsub_round_pd): Use - __builtin_ia32_vfmsubpd512_maskz. - (_mm512_maskz_fmsub_pd): Likewise. - (_mm512_fmsub_round_ps): Use __builtin_ia32_vfmsubps512_mask. - (_mm512_mask_fmsub_round_ps): Likewise. - (_mm512_fmsub_ps): Likewise. - (_mm512_mask_fmsub_ps): Likewise. - (_mm512_maskz_fmsub_round_ps): Use - __builtin_ia32_vfmsubps512_maskz. - (_mm512_maskz_fmsub_ps): Likewise. - * config/i386/avx512vlintrin.h (_mm256_mask_fmsub_pd): Use - __builtin_ia32_vfmsubpd256_mask. - (_mm256_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd256_maskz. - (_mm_mask_fmsub_pd): Use __builtin_ia32_vfmaddpd128_mask - (_mm_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd128_maskz. - (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask. - (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask. - (_mm256_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps256_maskz. - (_mm_mask_fmsub_ps): Use __builtin_ia32_vfmsubps128_mask. - (_mm_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps128_maskz. - * config/i386/fmaintrin.h (_mm_fmsub_pd): Use - __builtin_ia32_vfmsubpd. - (_mm256_fmsub_pd): Use __builtin_ia32_vfmsubpd256. - (_mm_fmsub_ps): Use __builtin_ia32_vfmsubps. - (_mm256_fmsub_ps): Use __builtin_ia32_vfmsubps256. - (_mm_fmsub_sd): Use __builtin_ia32_vfmsubsd3. - (_mm_fmsub_ss): Use __builtin_ia32_vfmsubss3. - * config/i386/i386-builtin.def: Add - __builtin_ia32_vfmsubpd256_mask, - __builtin_ia32_vfmsubpd256_maskz, - __builtin_ia32_vfmsubpd128_mask, - __builtin_ia32_vfmsubpd128_maskz, - __builtin_ia32_vfmsubps256_mask, - __builtin_ia32_vfmsubps256_maskz, - __builtin_ia32_vfmsubps128_mask, - __builtin_ia32_vfmsubps128_maskz, - __builtin_ia32_vfmsubpd512_mask, - __builtin_ia32_vfmsubpd512_maskz, - __builtin_ia32_vfmsubps512_mask, - __builtin_ia32_vfmsubps512_maskz, __builtin_ia32_vfmsubss3, - __builtin_ia32_vfmsubsd3, __builtin_ia32_vfmsubps, - __builtin_ia32_vfmsubpd, __builtin_ia32_vfmsubps256 and. - __builtin_ia32_vfmsubpd256. - * config/i386/sse.md (fma4i_fmsub_): New. - (_fmsub__maskz): Likewise. - (*fma_fmsub__bcst_1): - Likewise. - (*fma_fmsub__bcst_2): - Likewise. - (*fma_fmsub__bcst_3): - Likewise. - (fmai_vmfmsub_): Likewise. - -2018-10-21 H.J. Lu - - * config/i386/sse.md (*3_bcst_1): - Remove plus. Renamed to ... - (*sub3_bcst): This. - (*add3_bcst_2): Renamede to ... - (*add3_bcst): This. - -2018-10-21 H.J. Lu - - PR target/72782 - * config/i386/sse.md (*mul3_bcst): New. - -2018-10-21 H.J. Lu - - PR target/87662 - * i386/avx512vlintrin.h (_mm256_or_epi32): New. - (_mm_or_epi32): Likewise. - (_mm256_xor_epi32): Likewise. - (_mm_xor_epi32): Likewise. - (_mm256_or_epi64): Likewise. - (_mm_or_epi64): Likewise. - (_mm256_xor_epi64): Likewise. - (_mm_xor_epi64): Likewise. - -2018-10-20 H.J. Lu - - PR target/72782 - * config/i386/sse.md (*_div3_bcst): New. - -2018-10-20 Jakub Jelinek - - PR middle-end/87647 - * varasm.c (decode_addr_const): Handle COMPOUND_LITERAL_EXPR. - -2018-10-20 Andreas Schwab - - * doc/ux.texi: Move @section directly after @node. - -2018-10-19 Jakub Jelinek - - PR middle-end/85488 - PR middle-end/87649 - * omp-low.c (check_omp_nesting_restrictions): Diagnose ordered without - depend closely nested inside of loop with ordered clause with - a parameter. - -2018-10-19 David Malcolm - - * Makefile.in (TEXI_GCCINT_FILES): Add ux.texi. - * doc/gccint.texi: Include ux.texi and use it in top-level menu. - * doc/ux.texi: New file. - -2018-10-19 Segher Boessenkool - - * config/rs6000/rs6000.h (REG_ALLOC_ORDER): Move 68 (that is, CR0) to - be the first CR field allocated. - -2018-10-19 Richard Biener - - PR target/87657 - * config/i386/i386.c (ix86_builtin_vectorization_cost): Use - TYPE_VECTOR_SUBPARTS and avoid relying on vector mode. - -2018-10-19 H.J. Lu - - PR target/72782 - * config/i386/sse.md - (*3_bcst_1): New. - (*add3_bcst_2): Likewise. - -2018-10-19 H.J. Lu - - * config/i386/sse.md - (*fma_fmadd__bcst_1): - Replace nonimmediate_operand with register_operand. - (*fma_fmadd__bcst_2): - Likewise. - (*fma_fmadd__bcst_3): - Likewise. - -2018-10-19 Ilya Leoshkevich - - PR rtl-optimization/87596 - * lra-constraints.c (spill_hard_reg_in_range): Use INSN_P () + - lra_get_insn_recog_data () instead of lra_insn_recog_data[] - for instructions in FROM..TO range. - -2018-10-19 Eric Botcazou - - * cfgexpand.c (expand_one_var): Use specific wording in error message - for non-local frame variables. - * stor-layout.c (layout_decl): Do not issue a warning for them. - -2018-10-19 Robin Dapp - - * haifa-sched.c (priority): Add force_recompute parameter. - (apply_replacement): Call priority () with force_recompute = true. - (restore_pattern): Likewise. - -2018-10-18 H.J. Lu - - * simplify-rtx.c (simplify_subreg): Limit mask of vec_merge to - HOST_BITS_PER_WIDE_INT. - (test_vector_ops_duplicate): Likewise. - -2018-10-18 H.J. Lu - - PR target/72782 - * config/i386/sse.md (VF_AVX512): New. - (avx512bcst): Likewise. - (*fma_fmadd__bcst_1): - Likewise. - (*fma_fmadd__bcst_2): - Likewise. - (*fma_fmadd__bcst_3): - Likewise. - -2018-10-18 Jonathan Wakely - - * doc/invoke.texi (-dumpversion): Improve grammar. - (-dumpfullversion): Make more consistent with -dumpversion. - -2018-10-18 Uros Bizjak - - * config/i386/i386.c (ix86_emit_fp_unordered_jump): - Set JUMP_LABEL to the jump insn. - (ix86_emit_i387_log1p): Use ix86_expand_branch to expand branch. - Predict emitted jump and add label to jump insn. - -2018-10-18 David Malcolm - - PR tree-optimization/87562 - * input.c (get_substring_ranges_for_loc): Use - LRK_SPELLING_LOCATION rather than LRK_MACRO_EXPANSION_POINT when - getting the linemap for the endpoint. Verify that it's either - in the same linemap as the start point's spelling location, or - at least in the same file. - -2018-10-18 Richard Biener - - * config/i386/i386.c (ix86_builtin_vectorization_cost): Do not - feed width-specific load/store costs through ix86_vec_cost. - * config/i386/x86-tune-costs.h (athlon_cost): Adjust. - (k8_cost): Likewise. - (bdver_cost): Likewise. - (znver1_cost): Likewise. - (btver1_cost): Likewise. - (btver2_cost): Likewise. - -2018-10-18 H.J. Lu - - * simplify-rtx.c (simplify_subreg): Call simplify_gen_subreg - to simplify subreg of vec_merge. - -2018-10-18 Richard Biener - - * config/i386/i386.c: Fix costing of vector FMA. - -2018-10-18 Richard Biener - - * config/i386/i386.c (ix86_vec_cost): Remove !parallel path - and argument. - (ix86_builtin_vectorization_cost): For vec_construct properly - cost insertion into SSE regs. - (...): Adjust calls to ix86_vec_cost. - -2018-10-18 Richard Biener - - PR middle-end/87087 - Revert - 2018-02-07 Richard Biener - - PR tree-optimization/84204 - * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in - this place. - -2018-10-18 H.J. Lu - - PR target/87537 - * simplify-rtx.c (simplify_subreg): Simplify subreg of vec_merge - of vec_duplicate. - (test_vector_ops_duplicate): Add test for a scalar subreg of a - VEC_MERGE of a VEC_DUPLICATE. - -2018-10-17 Joseph Myers - - * doc/cpp.texi (__STDC_VERSION__): Document C2X handling. - * doc/invoke.texi (-std=c2x, -std=gnu2x): Document new options. - * doc/standards.texi (C Language): Document C2X. - * dwarf2out.c (highest_c_language), config/rl78/rl78.c - (rl78_option_override): Handle "GNU C2X" language name. - -2018-10-17 Joseph Myers - - * doc/invoke.texi (-std=c17), doc/standards.texi (C Language): - Document C17 as published in 2018. - -2018-10-17 Eric Botcazou - - PR middle-end/87623 - * fold-const.c (fold_truth_andor_1): If the right side is not constant, - bail out if both sides do not have the same storage order. - -2018-10-17 Aldy Hernandez - - * bitmap.c (bitmap_head::dump): New. - * bitmap.h (bitmap_head): Add dump(). - * gimple-ssa-evrp-analyze.c - (evrp_range_analyzer::try_find_new_range): Adjust for value_range API. - (evrp_range_analyzer::set_ssa_range_info): Same. - (evrp_range_analyzer::record_ranges_from_phis): Same. - (evrp_range_analyzer::record_ranges_from_stmt): Same. - * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Same. - * gimple-ssa-sprintf.c (get_int_range): Same. - (format_integer): Same. - (sprintf_dom_walker::handle_gimple_call): Same. - * ipa-cp.c (ipcp_vr_lattice::meet_with_1): Same. - (ipcp_vr_lattice::top_p): Same. - (ipcp_vr_lattice::bottom_p): Same. - (ipcp_vr_lattice::set_to_bottom): Same. - (ipa_vr_operation_and_type_effects): Same. - (propagate_vr_across_jump_function): Same. - (ipcp_store_vr_results): Same. - * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Same. - (ipa_print_node_jump_functions_for_edge): Same. - (ipa_get_value_range): Same. - (ipa_compute_jump_functions_for_edge): Same. - (ipa_write_jump_function): Same. - * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Same. - * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): - Same. - * vr-values.c (set_value_range_to_nonnegative): Same. - (set_value_range_to_truthvalue): Same. - (vr_values::get_value_range): Same. - (vr_values::set_defs_to_varying): Same. - (vr_values::update_value_range): Same. - (symbolic_range_based_on_p): Same. - (vr_values::op_with_boolean_value_range_p): Same. - (vr_values::extract_range_for_var_from_comparison_expr): Same. - (vr_values::extract_range_from_ssa_name): Same. - (vr_values::extract_range_from_binary_expr): Same. - (vr_values::extract_range_from_unary_expr): Same. - (vr_values::extract_range_from_cond_expr): Same. - (vr_values::extract_range_from_comparison): Same. - (vr_values::check_for_binary_op_overflow): Same. - (vr_values::extract_range_basic): Same. - (vr_values::extract_range_from_assignment): Same. - (compare_ranges): Same. - (compare_range_with_value): Same. - (vr_values::adjust_range_with_scev): Same. - (vrp_valueize): Same. - (vrp_valueize_1): Same. - (vr_values::get_vr_for_comparison): Same. - (vr_values::compare_name_with_value): Same. - (vr_values::compare_names): Same. - (vr_values::vrp_evaluate_conditional): Same. - (find_case_label_ranges): Same. - (vr_values::vrp_visit_switch_stmt): Same. - (vr_values::extract_range_from_phi_node): Same. - (vr_values::simplify_div_or_mod_using_ranges): Same. - (vr_values::simplify_bit_ops_using_ranges): Same. - (test_for_singularity): Same. - (range_fits_type_p): Same. - (vr_values::simplify_cond_using_ranges_1): Same. - (vr_values::simplify_switch_using_ranges): Same. - (vr_values::simplify_float_conversion_using_ranges): Same. - (vr_values::two_valued_val_range_p): Same. - (vr_values::add_equivalence): Move to value_range::equiv_add. - * vr-values.h (vr_values::add_equivalence): Remove. - (VR_INITIALIZER): Remove. - * tree-vrp.c (value_range::set): New. - (value_range::equiv_add): New. - (value_range::value_range): New. - (value_range::deep_copy): New. - (value_range::check): New. - (value_range::equal_p): New. - (value_range::ignore_equivs_equal_p): New. - (value_range::operator==): New. - (value_range::operator!=): New. - (value_range::symbolic_p): New. - (value_range::numeric_p): New. - (value_range::set_undefined): New. - (value_range::set_varying): New. - (value_range::may_contain_p): New. - (value_range::equiv_clear): New. - (value_range::singleton_p): New. - (value_range::intersect): New. - (value_range::dump): New. - (value_range::set_and_canonicalize): New. - (set_value_range): Adjust for value_range API. - (set_value_range_to_undefined): Same. - (set_value_range_to_varying): Same. - (set_and_canonicalize_value_range): Same. - (set_value_range_to_nonnull): Same. - (set_value_range_to_null): Same. - (range_is_null): Same. - (range_is_nonnull): Same. - (range_int_cst_p): Same. - (range_int_cst_singleton_p): Same. - (symbolic_range_p): Same. - (range_includes_zero_p): Same. - (value_range_constant_singleton): Same. - (vrp_set_zero_nonzero_bits): Same. - (ranges_from_anti_range): Same. - (extract_range_into_wide_ints): Same. - (extract_range_from_multiplicative_op): Same. - (set_value_range_with_overflow): Same. - (extract_range_from_binary_expr_1): Same. - (extract_range_from_unary_expr): Same. - (dump_value_range): Same. - (debug_value_range): Same. - (vrp_prop::check_array_ref): Same. - (vrp_prop::check_mem_ref): Same. - (vrp_prop::vrp_initialize): Same. - (vrp_prop::visit_stmt): Same. - (intersect_ranges): Same. - (vrp_prop::visit_phi): Same. - (vrp_prop::vrp_finalize): Same. - (determine_value_range_1): Same. - (determine_value_range): Same. - (vrp_intersect_ranges_1): Rename to... - (vrp_intersect_1): this. - (vrp_intersect_ranges): Rename to... - (value_range::intersect_helper): ...this. - (vrp_meet_1): Rename to... - (value_range::union_helper): ...this. - (vrp_meet): Rename to... - (value_range::union_): ...this. - (copy_value_range): Remove. - * tree-vrp.h (struct value_range): Rewrite into a proper class. - (value_range::vrtype): New. - (value_range::type): New. - (value_range::equiv): New. - (value_range::min): New. - (value_range::max): New. - (value_range::varying_p): New. - (value_range::undefined_p): New. - (value_range::null_p): New. - (value_range::equiv_add): New. - (copy_value_range): Remove. - -2018-10-17 David Malcolm - - * Makefile.in (SELFTEST_TARGETS): New. - (selftest) Change from s-selftest-c to $(SELFTEST_TARGETS). - (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) - (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to - c/Make-lang.in. - (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) - (selftest-c++-gdb, selftest-c++-valgrind): Move to - cp/Make-lang.in. - * configure: Regenerate. - * configure.ac (selftest_languages): New. - -2018-10-17 Aldy Hernandez - - * tree-vrp.c (extract_range_from_multiplicative_op): Remove - overflow wraps argument. - (extract_range_from_binary_expr_1): Do not pass overflow wraps to - wide_int_range_multiplicative_op. - * wide-int-range.cc (wide_int_range_mult_wrapping): Remove - overflow wraps argument. - (wide_int_range_multiplicative_op): Same. - (wide_int_range_lshift): Same. - (wide_int_range_div): Same. - * wide-int-range.h (wide_int_range_multiplicative_op): Same. - (wide_int_range_lshift): Same. - (wide_int_range_div): Same. - -2018-10-17 Aldy Hernandez - - * wide-int-range.h (wide_int_range_shift_undefined_p): Adjust to - use sign as argument. - * tree-vrp.c (extract_range_from_binary_expr_1): Pass sign to - wide_int_range_shift_undefined_p. - -2018-10-16 Kyrylo Tkachov - - * config/aarch64/aarch64.md (despeculate_copy): - Rename to... - (@despeculate_copy): ... This. - * config/aarch64/aarch64.c (aarch64_speculation_safe_value): Remove - switch statement. - -2018-10-16 Rainer Orth - - * config.gcc: Obsolete *-*-solaris2.10*. - * doc/install.texi (Specific, *-*-solaris2*): Document it. - -2018-10-12 Jeff Law - - * config/ft32/ft32.md (ft32_general_movsrc_operand): Disable - reg + sym +- const_int addressing modes. - -2018-10-15 David Malcolm - - * common.opt (fdiagnostics-minimum-margin-width=): New option. - * diagnostic-show-locus.c (layout::layout): Apply the minimum - margin width. - (layout::start_annotation_line): Only print up to 3 of the - margin character, to avoid touching the left-hand side. - (selftest::test_diagnostic_show_locus_fixit_lines): Update for - minimum margin width, as set by test_diagnostic_context's ctor. - (selftest::test_fixit_insert_containing_newline): Likewise. - (selftest::test_fixit_insert_containing_newline_2): Likewise. - (selftest::test_line_numbers_multiline_range): Clear - dc.min_margin_width. - * diagnostic.c (diagnostic_initialize): Initialize - min_margin_width. - * diagnostic.h (struct diagnostic_context): Add field - "min_margin_width". - * doc/invoke.texi: Add -fdiagnostics-minimum-margin-width=. - * opts.c (common_handle_option): Handle - OPT_fdiagnostics_minimum_margin_width_. - * selftest-diagnostic.c - (selftest::test_diagnostic_context::test_diagnostic_context): - Initialize min_margin_width to 6. - * toplev.c (general_init): Initialize global_dc->min_margin_width. - -2018-10-15 David Malcolm - - * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby): - Fix usage of "error_at_rich_loc" in the comment. - -2018-10-15 Renlin Li - - PR target/87563 - * tree-vectorizer.c (try_vectorize_loop_1): Don't use - if-conversioned loop when it contains ifn with types not - supported by backend. - * internal-fn.c (expand_direct_optab_fn): Add an assert. - (direct_internal_fn_supported_p): New helper function. - * internal-fn.h (direct_internal_fn_supported_p): Declare. - -2018-10-15 Jakub Jelinek - - PR target/87572 - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET): - Remove OPTION_MASK_ISA_AVX5124FMAPS_UNSET and - OPTION_MASK_ISA_AVX5124VNNIW_UNSET. - -2018-10-15 Bin Cheng - - PR tree-optimization/87022 - * tree-loop-distribution.c (pg_add_dependence_edges): Check all - bits in dist vector rather than the first one. - -2018-10-15 Richard Biener - - PR middle-end/87610 - * tree-ssa-structalias.c (struct vls_data): Add escaped_p member. - (visit_loadstore): When a used restrict tag escaped verify that - the points-to solution of "other" pointers do not include - escaped. - (compute_dependence_clique): If a used restrict tag escaped - communicated that down to visit_loadstore. - -2018-10-15 Andreas Krebbel - - * config/s390/s390.c (s390_expand_vec_init): Force vector element - into reg if it isn't a general operand. - -2018-10-14 H.J. Lu - - PR target/87599 - * config/i386/sse.md (*vec_dupv2di): Add register source to - movddup. - -2018-10-14 H.J. Lu - - PR target/87572 - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET): - Add OPTION_MASK_ISA_AVX512IFMA_UNSET, - OPTION_MASK_ISA_AVX5124FMAPS_UNSET and - OPTION_MASK_ISA_AVX5124VNNIW_UNSET. - -2018-10-13 Eric Botcazou - - * dwarf2cfi.c (struct dw_trace_info): Add args_size_defined_for_eh. - (notice_args_size): Set it in the current trace if no insn that can - throw internally has been seen yet. - (connect_traces): When connecting args_size between traces, allow the - incoming values not to match if there is an insn setting it before the - first insn that can throw internally; in that case, force the creation - of a CFI note on this latter insn. - -2018-10-13 Jonathan Wakely - - * opt-problem.h (opt_wrapper): Use template-argument-list when naming - the base class, because using the injected-class-name was not clearly - specified until DR 176. - -2018-10-12 Paul Koning - - * config/pdp11/pdp11.md (doloop_end): New expander. - (doloop_end_insn): renamed from "doloop_end". - (addqi3): New pattern. - (subqi3): New pattern. - * config/pdp11/predicates.md (incdec_operand): New predicate. - -2018-10-12 Yury Gribov - - PR middle-end/81376 - * real.c (format_helper::can_represent_integral_type_p): New function - * real.h (format_helper::can_represent_integral_type_p): Ditto. - * match.pd: New pattern. - -2018-10-12 Alexandre Oliva - - * configure.ac: Introduce --enable-large-address-aware - to define MINGW_DEFAULT_LARGE_ADDR_AWARE. - * doc/install.texi: Document it. - * configure, config.in: Rebuilt. - * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Define, - based on MINGW_DEFAULT_LARGE_ADDR_AWARE. - (LINK_SPEC): Insert it. - * config/i386/mingw-w64.h: Likewise. - - * cygming.h (HAVE_GAS_ALIGNED_COMM): Fallback-define. - -2018-10-12 Peter Bergner - - PR rtl-optimization/87600 - * ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets. - -2018-10-12 Paul Koning - - * doc/md.texi (doloop_end): Document that the pattern code may - need to check operand mode. - -2018-10-12 Wilco Dijkstra - - * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Add alternatives - to zero-extend between int and floating-point registers. - (load_pair_zero_extendsidi2_aarch64): Add alternative for zero-extended - ldp into floating-point registers. Add type and arch attributes. - (zero_extend2_aarch64): Add arch attribute. - Use f_loads for type attribute. - -2018-10-11 Martin Sebor - - * doc/extend.texi (attribute packed): Correct typos. - -2018-10-11 Martin Sebor - - * doc/extend.texi (attribute flatten): Mention interaction with - noinline. - -2018-10-11 Jan Hubicka - - PR target/87156 - * cgraphclones.c (cgraph_node::create_version_clone_with_body): - Set new_decl virtual flag to zero. - -2018-10-11 Martin Sebor - - PR middle-end/87593 - * doc/extend.texi (attribute format_arg): Discuss using multiple - attributes on a single function. - -2018-10-11 Giuliano Belinassi - - PR tree-optimization/86829 - * match.pd (sin (atan (x))): New simplification rules. - (cos (atan (x))): Likewise. - * real.c (build_sinatan_real): New function. - * real.h (build_sinatan_real): Prototype. - -2018-10-11 Will Schmidt - - * config/rs6000/rs6000.c (map_to_integral_tree_type): New helper - function. - (fold_mergeeo_helper): New helper function. - (rs6000_gimple_fold_builtin): Add hooks for vec_mergee and vec_mergeo - intrinsics. Correct some whitespace indentation issues. - -2018-10-11 Wilco Dijkstra - - PR target/87511 - * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p): - Use HOST_WIDE_INT_1U for shift. - -2018-10-11 Doug Rupp - Olivier Hainque - - * config/rs6000/vxworks.h (VXWORKS_RELAX_LINK_SPEC): New macro. - Pass --relax to the linker for RTPs. - (LINK_SPEC): Append VXWORKS_RELAX_LINK_SPEC. - -2018-10-11 Andrew Stubbs - Jan Hubicka - Martin Jambor - - * print-rtl.c (print_rtx_operand_codes_E_and_V): Print how many times - the same elements are repeated rather than printing all of them. - * read-rtl.c (rtx_reader::read_rtx_operand): Recognize and expand - "repeated" elements. - * read-rtl-function.c (test_loading_repeat): New function. - (read_rtl_function_c_tests): Call test_loading_repeat. - * rtl-tests.c (test_dumping_repeat): New function. - (rtl_tests_c_tests): Call test_dumping_repeat. - -2018-10-11 Richard Biener - - * config/i386/x86-tune-costs.h (bdver?_memcpy, bdver?_memset, - bdver?_cost): Unify to ... - (bdver_memcpy, bdver_memset, bdver_cost): ... this. - * config/i386/i386.c (processor_cost_table): Adjust. - -2018-10-10 Eric Botcazou - - PR middle-end/87574 - * cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on - the thunk when expanding to GIMPLE. - -2018-10-10 Bernd Edlinger - - PR bootstrap/87551 - * varasm.c (mergeable_string_section): Don't try to move zero-length - strings to the merge section. - -2018-10-10 Uros Bizjak - - PR target/87573 - * config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter. - -2018-10-10 Jakub Jelinek - - PR target/87550 - * config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set - to special_args set. - -2018-10-10 Richard Biener - - * config/i386/sse.md (reduc_plus_scal_v8df, reduc_plus_scal_v4df, - reduc_plus_scal_v2df, reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, - reduc_plus_scal_v4sf): Merge into pattern reducing to half width - and recursing and pattern terminating the recursion on SSE - vector width using ix86_expand_reduc. - (reduc_sminmax_scal_): Split into part reducing to half - width and recursing and SSE2 vector variant doing the final - reduction with ix86_expand_reduc. - (reduc_uminmax_scal_): Likewise for the AVX512 variants - with terminating the recursion at AVX level, splitting that - to SSE there. - -2018-10-09 David Malcolm - - * genmatch.c (error_cb): Rename to... - (diagnostic_cb): ...this, converting int params to enums. - (fatal_at): Update for renaming. - (warning_at): Likewise. - (main): Likewise. - * input.c (selftest::ebcdic_execution_charset::apply): - Update for renaming of... - (selftest::ebcdic_execution_charset::on_error): ...this, renaming - to... - (selftest::ebcdic_execution_charset::on_diagnostic): ...this, - converting level and reason to enums. - (class selftest::lexer_error_sink): Rename to... - (class selftest::lexer_test_options): ...this, renaming field - "m_errors" to "m_diagnostics". - (selftest::lexer_test_options::apply): Update for renaming of... - (selftest::lexer_test_options::on_error): ...this, renaming to... - (selftest::lexer_test_options::on_diagnostic): ...this - converting level and reason to enums. - (selftest::test_lexer_string_locations_raw_string_unterminated): - Update for renamings. - * opth-gen.awk (struct cpp_reason_option_codes_t): Use enum for - "reason". - -2018-10-09 Paul A. Clarke - - * config.gcc (powerpc*-*-*): Add pmmintrin.h to extra_headers. - * config/rs6000/pmmintrin.h: New file. - -2018-10-09 Eric Botcazou - - PR tree-optimization/86659 - * gimple-match.h (gimple_match_op constructors): Initialize reverse. - -2018-10-09 Richard Biener - - PR tree-optimization/63155 - * tree-ssa-structalias.c: Include tree-ssa.h. - (get_constraint_for_ssa_var): For undefs return nothing_id. - (find_func_aliases): Cleanup PHI handling. - -2018-10-09 Richard Biener - - * tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing - replacements. - -2018-10-09 Martin Liska - - * asan.c (asan_emit_stack_protection): If a stack variable - is located in a same file as current function, then emit - line info into variable definition string. - -2018-10-08 Eric Botcazou - - * print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column - information. - -2018-10-08 Eric Botcazou - - * cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P - on the thunk. - -2018-10-08 Eric Botcazou - - PR tree-optimization/86659 - * gimple-match.h (struct gimple_match_op): Add reverse field. - (gimple_match_op::set_op): New overloaded method. - * gimple-match-head.c (maybe_build_generic_op) : Set - the REF_REVERSE_STORAGE_ORDER flag on the value. - (gimple_simplify) : For BIT_FIELD_REF, propagate the - REF_REVERSE_STORAGE_ORDER flag and avoid simplifying if it is set. - -2018-10-08 Richard Sandiford - - PR middle-end/63155 - * gimple-ssa-backprop.c (backprop::intersect_uses): Use - FOR_EACH_IMM_USE_FAST instead of FOR_EACH_IMM_USE_STMT. - -2018-10-08 H.J. Lu - - PR target/87517 - * config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd): - Defined with __builtin_ia32_vfmaddsubpd512_mask. - -2018-10-08 Richard Biener - - * config/i386/x86-tune-costs.h (znver1_cost): Make AVX256 vector loads - cost the same as AVX128 ones. - -2018-10-08 Paul Koning - - * config/pdp11/pdp11-protos.h (output_block_move): Remove. - (expand_block_move): New function. - * config/pdp11/pdp11.c (output_block_move): Remove. - (expand_block_move): New function. - * config/pdp11/pdp11.h (MOVE_RATIO): New definition. - * config/pdp11/pdp11.md (movmemhi): Use expand_block_move. - (*movmemhi1): Remove. - -2018-10-08 Robin Dapp - - * config/s390/2827.md: Increase latencies for some FP instructions. - -2018-10-08 Richard Biener - - * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): - Open a dump scope. - * tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it. - * tree-vectorizer.h (dump_stmt_cost): Adjust. - (add_stmt_cost): Dump return value of the hook. - -2018-10-08 Richard Biener - - PR tree-optimization/63155 - * tree-ssa-propagate.c (add_ssa_edge): Do cheap check first. - (ssa_propagation_engine::ssa_propagate): Remove redundant - bitmap bit clearing. - -2018-10-05 Peter Bergner - - PR rtl-optimization/86939 - PR rtl-optimization/87479 - * ira.h (non_conflicting_reg_copy_p): New prototype. - * ira-lives.c (ignore_reg_for_conflicts): New static variable. - (make_hard_regno_dead): Don't add conflicts for register - ignore_reg_for_conflicts. - (make_object_dead): Likewise. - (non_conflicting_reg_copy_p): New function. - (process_bb_node_lives): Set ignore_reg_for_conflicts for copies. - Remove special conflict handling of REAL_PIC_OFFSET_TABLE_REGNUM. - * lra-lives.c (ignore_reg_for_conflicts): New static variable. - (make_hard_regno_dead): Don't add conflicts for register - ignore_reg_for_conflicts. Remove special conflict handling of - REAL_PIC_OFFSET_TABLE_REGNUM. Remove now unused argument - check_pic_pseudo_p and update callers. - (mark_pseudo_dead): Don't add conflicts for register - ignore_reg_for_conflicts. - (process_bb_lives): Set ignore_reg_for_conflicts for copies. - -2018-10-05 Andrew Waterman - Jim Wilson - - * config/riscv/riscv.md (f_quiet4): - Add define_expand. Add ! HONOR_SNANS check to current pattern. Add - new pattern using HONOR_SNANS that emits one extra instruction. - -2018-10-05 Segher Boessenkool - - * config/rs6000/rs6000.md (unnamed mfcr scc_comparison_operator - patterns): Merge SI and DI patterns to a GPR pattern. - (unnamed define_insn and define_split for record form of that): Merge - to a single define_insn_and_split pattern. - -2018-10-05 David Malcolm - - PR c++/56856 - * input.c (expand_location_to_spelling_point): Add param "aspect" - and use rather than hardcoding LOCATION_ASPECT_CARET. - (get_substring_ranges_for_loc): Handle the case of a single token - within a macro expansion. - * input.h (expand_location_to_spelling_point): Add "aspect" param, - defaulting to LOCATION_ASPECT_CARET. - -2018-10-05 Paul Koning - - * config/pdp11/pdp11.c (TARGET_CXX_GUARD_TYPE): Define. - (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Define. - (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define. - (pdp11_guard_type): New function. - -2018-10-05 Paul Koning - - * config/pdp11/pdp11.h (FLOAT_TYPE_SIZE): Always 32. - * config/pdp11/pdp11.opt (mfloat32): Remove. - (mfloat64): Remove. - * doc/invoke.texi (pdp11 -mfloat32): Remove: - (pdp11 -mfloat64): Remove. - -2018-10-05 Uros Bizjak - - * config/i386/i386.md (*cmpxf_cc_i387): Remove pattern. - (*cmp_cc_i387): Ditto. - (*cmpu_cc_i387): Ditto. - (*cmp__cc_i387): Ditto. - * config/i386/i386.c (ix86_expand_fp_compare): Remove - "scratch" argument. - : Do not generate pattern with HImode clobber. - Emit x86_sahf_1 pattern. - (ix86_expand_compare): Update call to ix86_expand_fp_compare. - (ix86_expand_carry_flag_compare): Ditto. - -2018-10-05 Uros Bizjak - - * config/i386/i386.md (*cmpxf_i387): Change operand 2 predicate - to reg_or_0_operand. Add "C" constraint. - (*cmpxf_cc_i387): Ditto. - (*cmp_i387): Change operand 2 predicate - to nonimm_or_0_operand. Add "C" constraint. - (*cmp_cc_i387): Ditto. - (*cmp_0_i387): Remove insn pattern. - (*cmp_0_cc_i387): Ditto. - -2018-10-05 Uros Bizjak - - * config/i386/constraints.md ("C"): Do not depend on TARGET_SSE. - * config/i386/predicates.md (nonimm_or_0_operand): Rename - from vector_move_operand. Update all uses. - -2018-10-05 Martin Sebor - - PR tree-optimization/87490 - * builtins.c (expand_builtin_strnlen): Handle a null data.decl - consistently. - -2018-10-05 Richard Biener - - PR tree-optimization/63155 - * tree-ssa-ccp.c (ccp_propagate::visit_phi): Avoid excess - vertical space in dumpfiles. - * tree-ssa-propagate.h - (ssa_propagation_engine::process_ssa_edge_worklist): Remove. - * tree-ssa-propagate.c (cfg_blocks_back): New global. - (ssa_edge_worklist_back): Likewise. - (curr_order): Likewise. - (cfg_blocks_get): Remove abstraction. - (cfg_blocks_add): Likewise. - (cfg_blocks_empty_p): Likewise. - (add_ssa_edge): Add to current or next worklist based on - RPO index. - (add_control_edge): Likewise. - (ssa_propagation_engine::process_ssa_edge_worklist): Fold - into ... - (ssa_propagation_engine::ssa_propagate): ... here. Unify - iteration from CFG and SSA edge worklist so we process - everything in RPO order, prioritizing forward progress - over iteration. - (ssa_prop_init): Allocate new worklists, do not dump - immediate uses. - (ssa_prop_fini): Free new worklists. - -2018-10-05 Richard Biener - - * tree-core.h (tree_block::abstract_flag): Remove. - (tree_block::block_num): Make full 32bits. - * tree.def (BLOCK): Remove docs about BLOCK_ABSTRACT. - * tree.h (BLOCK_ABSTRACT): Remove. - * dwarf2out.c (gen_lexical_block_die): Remove dead code - resulting from BLOCK_ABSTRACT being always false. - (gen_inlined_subroutine_die): Likewise. - (gen_block_die): Likewise. - * tree.c (block_ultimate_origin): Likewise. - * tree-pretty-print.c (dump_block_node): Remove code dealing - with BLOCK_ABSTRACT. - * tree-ssa-live.c (dump_scope_block): Likewise. - * tree-streamer-in.c (unpack_ts_block_value_fields): Likewise. - * tree-streamer-out.c (pack_ts_block_value_fields): Likewise. - -2018-10-05 Richard Biener - - * config/i386/i386.c (ix86_add_stmt_cost): When scalar cost - is asked for initialize mode to the component mode of the - vector type. - -2018-10-05 H.J. Lu - - PR target/87522 - * config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to - assembler for -mavx. - * config/i386/gnu-user64.h (ASM_SPEC): Likewise. - -2018-10-05 Segher Boessenkool - - PR target/87509 - * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_SET_FPSCR_DRN): Use - RS6000_BTM_DFP. - * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Require the operand - to be DImode. When using mffscrn, force the operand to a register. - -2018-10-04 Uros Bizjak - - * config/i386/i386.md (*fop__2_i387): Macroize insn - from *fop__2_i387 and *fop_xf_2_i387 using - X87MODEF mode iterator. - (*fop__3_i387): Macroize insn from - *fop__3_i387 and *fop_xf_3_i387 using - X87MODEF mode iterator. - -2018-10-04 Vinay Kumar - - * doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning - -Wno-prio-ctor-dtor. - -2018-10-04 David Malcolm - - * Makefile.in (OBJS): Add opt-problem.o. - * dump-context.h: Include "selftest.h. - (selftest::temp_dump_context): New forward decl. - (class dump_context): Make friend of class - selftest::temp_dump_context. - (dump_context::dump_loc_immediate): New decl. - (class dump_pretty_printer): Move here from dumpfile.c. - (class temp_dump_context): Move to namespace selftest. - (temp_dump_context::temp_dump_context): Add param - "forcibly_enable_dumping". - (selftest::verify_dumped_text): - (ASSERT_DUMPED_TEXT_EQ): Move here from dumpfile.c. - (selftest::verify_item): - (ASSERT_IS_TEXT): Move here from dumpfile.c. - (ASSERT_IS_TREE): Likewise. - (ASSERT_IS_GIMPLE): Likewise. - * dumpfile.c (dump_context::dump_loc): Move immediate dumping - to... - (dump_context::dump_loc_immediate): ...this new function. - (class dump_pretty_printer): Move to dump-context.h. - (dump_switch_p_1): Don't enable MSG_PRIORITY_REEMITTED. - (opt_info_switch_p_1): Enable MSG_PRIORITY_REEMITTED. - (temp_dump_context::temp_dump_context): Move to "selftest" - namespace. Add param "forcibly_enable_dumping", and use it to - conditionalize the use of m_pp; - (selftest::verify_dumped_text): Make non-static. - (ASSERT_DUMPED_TEXT_EQ): Move to dump-context.h. - (selftest::verify_item): Make non-static. - (ASSERT_IS_TEXT): Move to dump-context.h. - (ASSERT_IS_TREE): Likewise. - (ASSERT_IS_GIMPLE): Likewise. - (selftest::test_capture_of_dump_calls): Pass "true" for new - param of temp_dump_context. - * dumpfile.h (enum dump_flag): Add MSG_PRIORITY_REEMITTED, adding - it to MSG_ALL_PRIORITIES. Update values of TDF_COMPARE_DEBUG and - TDF_COMPARE_DEBUG. - * opt-problem.cc: New file. - * opt-problem.h: New file. - * optinfo-emit-json.cc - (selftest::test_building_json_from_dump_calls): Pass "true" for - new param of temp_dump_context. - * optinfo.cc (optinfo_kind_to_dump_flag): New function. - (optinfo::emit_for_opt_problem): New function. - (optinfo::emit): Clarity which emit_item is used. - * optinfo.h (optinfo::get_dump_location): New accessor. - (optinfo::emit_for_opt_problem): New decl. - (optinfo::emit): Make const. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::opt_problem_cc_tests. - * selftest.h (selftest::opt_problem_cc_tests): New decl. - * tree-data-ref.c (dr_analyze_innermost): Convert return type from - bool to opt_result, converting fprintf messages to - opt_result::failure_at calls. Add "stmt" param for use by the - failure_at calls. - (create_data_ref): Pass "stmt" to the dr_analyze_innermost call. - (runtime_alias_check_p): Convert return type from bool to - opt_result, converting dump_printf calls to - opt_result::failure_at, using the statement DDR_A for their - location. - (find_data_references_in_stmt): Convert return type from bool to - opt_result, converting "return false" to opt_result::failure_at - with a new message. - * tree-data-ref.h: Include "opt-problem.h". - (dr_analyze_innermost): Convert return type from bool to opt_result, - and add a const gimple * param. - (find_data_references_in_stmt): Convert return type from bool to - opt_result. - (runtime_alias_check_p): Likewise. - * tree-predcom.c (find_looparound_phi): Pass "init_stmt" to - dr_analyze_innermost. - * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): - Convert return type from bool to opt_result, adding a message for - the PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS zero case. - (vect_analyze_data_ref_dependence): Convert return type from bool - to opt_result. Change sense of return type from "false" - effectively meaning "no problems" to "false" meaning a problem, - so that "return false" becomes "return opt_result::success". - Convert "return true" calls to opt_result::failure_at, using - the location of statement A rather than vect_location. - (vect_analyze_data_ref_dependences): Convert return type from bool - to opt_result. - (verify_data_ref_alignment): Likewise, converting dump_printf_loc - calls to opt_result::failure_at, using the stmt location rather - than vect_location. - (vect_verify_datarefs_alignment): Convert return type from bool - to opt_result. - (vect_enhance_data_refs_alignment): Likewise. Split local "stat" - into multiple more-tightly-scoped copies. - (vect_analyze_data_refs_alignment): Convert return type from bool - to opt_result. - (vect_analyze_data_ref_accesses): Likewise, converting a - "return false" to a "return opt_result::failure_at", adding a - new message. - (vect_prune_runtime_alias_test_list): Convert return type from - bool to opt_result, converting dump_printf_loc to - opt_result::failure_at. Add a %G to show the pertinent statement, - and use the stmt's location rather than vect_location. - (vect_find_stmt_data_reference): Convert return type from - bool to opt_result, converting dump_printf_loc to - opt_result::failure_at, using stmt's location. - (vect_analyze_data_refs): Convert return type from bool to - opt_result. Convert "return false" to "return - opt_result::failure_at", adding messages as needed. - * tree-vect-loop.c (vect_determine_vf_for_stmt_1): Convert return - type from bool to opt_result. - (vect_determine_vf_for_stmt): Likewise. - (vect_determine_vectorization_factor): Likewise, converting - dump_printf_loc to opt_result::failure_at, using location of phi - rather than vect_location. - (vect_analyze_loop_form_1): Convert return type from bool to - opt_result, converting dump_printf_loc calls, retaining the use of - vect_location. - (vect_analyze_loop_form): Convert return type from loop_vec_info - to opt_loop_vec_info. - (vect_analyze_loop_operations): Convert return type from bool to - opt_result, converting dump_printf_loc calls, using the location - of phi/stmt rather than vect_location where available. Convert - various "return false" to "return opt_result::failure_at" with - "unsupported phi" messages. - (vect_get_datarefs_in_loop): Convert return type from bool to - opt_result. Add a message for the - PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS failure. - (vect_analyze_loop_2): Convert return type from bool to - opt_result. Ensure "ok" is set to a opt_result::failure_at before - each "goto again;", adding new messages where needed. - Add "unsupported grouped {store|load}" messages. - (vect_analyze_loop): Convert return type from loop_vec_info to - opt_loop_vec_info. - * tree-vect-slp.c (vect_analyze_slp): Convert return type from - bool to opt_result. - * tree-vect-stmts.c (process_use): Likewise, converting - dump_printf_loc call and using stmt location, rather than - vect_location. - (vect_mark_stmts_to_be_vectorized): Likeise. - (vect_analyze_stmt): Likewise, adding a %G. - (vect_get_vector_types_for_stmt): Convert return type from bool to - opt_result, converting dump_printf_loc calls and using stmt - location, rather than vect_location. - (vect_get_mask_type_for_stmt): Convert return type from tree to - opt_tree, converting dump_printf_loc calls and using stmt location. - * tree-vectorizer.c: Include "opt-problem.h. - (try_vectorize_loop_1): Flag "Analyzing loop at" dump message as - MSG_PRIORITY_INTERNALS. Convert local "loop_vinfo" from - loop_vec_info to opt_loop_vec_info. If if fails, and dumping is - enabled, use it to report at the top level "couldn't vectorize - loop" followed by the problem. - * tree-vectorizer.h (opt_loop_vec_info): New typedef. - (vect_mark_stmts_to_be_vectorized): Convert return type from bool - to opt_result. - (vect_analyze_stmt): Likewise. - (vect_get_vector_types_for_stmt): Likewise. - (tree vect_get_mask_type_for_stmt): Likewise. - (vect_analyze_data_ref_dependences): Likewise. - (vect_enhance_data_refs_alignment): Likewise. - (vect_analyze_data_refs_alignment): Likewise. - (vect_verify_datarefs_alignment): Likewise. - (vect_analyze_data_ref_accesses): Likewise. - (vect_prune_runtime_alias_test_list): Likewise. - (vect_find_stmt_data_reference): Likewise. - (vect_analyze_data_refs): Likewise. - (vect_analyze_loop): Convert return type from loop_vec_info to - opt_loop_vec_info. - (vect_analyze_loop_form): Likewise. - (vect_analyze_slp): Convert return type from bool to opt_result. - -2018-10-04 David Malcolm - - * doc/invoke.texi (-fopt-info): Document new "internals" - sub-option. - * dump-context.h (dump_context::apply_dump_filter_p): New decl. - * dumpfile.c (dump_options): Update for renaming of MSG_ALL to - MSG_ALL_KINDS. - (optinfo_verbosity_options): Add "internals". - (kind_as_string): Update for renaming of MSG_ALL to MSG_ALL_KINDS. - (dump_context::apply_dump_filter_p): New member function. - (dump_context::dump_loc): Use apply_dump_filter_p rather than - explicitly masking the dump_kind. - (dump_context::begin_scope): Increment the scope depth first. Use - apply_dump_filter_p rather than explicitly masking the dump_kind. - (dump_context::emit_item): Use apply_dump_filter_p rather than - explicitly masking the dump_kind. - (dump_dec): Likewise. - (dump_hex): Likewise. - (dump_switch_p_1): Default to MSG_ALL_PRIORITIES. - (opt_info_switch_p_1): Default to MSG_PRIORITY_USER_FACING. - (opt_info_switch_p): Update handling of default - MSG_OPTIMIZED_LOCATIONS to cope with default of - MSG_PRIORITY_USER_FACING. - (dump_basic_block): Use apply_dump_filter_p rather than explicitly - masking the dump_kind. - (selftest::test_capture_of_dump_calls): Update test_dump_context - instances to use MSG_ALL_KINDS | MSG_PRIORITY_USER_FACING rather - than MSG_ALL. Generalize scope test to be run at all four - combinations of with/without MSG_PRIORITY_USER_FACING and - MSG_PRIORITY_INTERNALS, adding examples of explicit priority - for each of the two values. - * dumpfile.h (enum dump_flag): Add comment about the MSG_* flags. - Rename MSG_ALL to MSG_ALL_KINDS. Add MSG_PRIORITY_USER_FACING, - MSG_PRIORITY_INTERNALS, and MSG_ALL_PRIORITIES, updating the - values for TDF_COMPARE_DEBUG and TDF_ALL_VALUES. - (AUTO_DUMP_SCOPE): Add a note to the comment about the interaction - with MSG_PRIORITY_*. - * tree-vect-loop-manip.c (vect_loop_versioning): Mark versioning - dump messages as MSG_PRIORITY_USER_FACING. - * tree-vectorizer.h (DUMP_VECT_SCOPE): Add a note to the comment - about the interaction with MSG_PRIORITY_*. - -2018-10-04 Bernd Edlinger - - * varasm.c (output_constant): Add new parameter merge_strings. - Make strings properly zero terminated in merge string sections. - (mergeable_string_section): Don't fail if the last char is non-zero. - (assemble_variable_contents): Handle merge string sections. - (assemble_variable): Likewise. - (assemble_constant_contents): Likewise. - (output_constant_def_contents): Likewise. - (output_constructor_array_range, - output_constructor_regular_field): Adjust call to output_constant. - (output_object_block): Adjust call to assemble_constant_contents - and assemble_variable_contents. - -2018-10-04 Martin Liska - - PR c/87483 - * cgraphunit.c (process_function_and_variable_attributes): - Warn about a function with alias attribute and a body. - -2018-10-04 Martin Liska - - PR ipa/82625 - * multiple_target.c (redirect_to_specific_clone): New function. - (ipa_target_clone): Use it. - * tree-inline.c: Fix comment. - -2018-10-04 David Malcolm - - * dumpfile.c (gcc::dump_manager::dump_manager): Initialize new - fields. - (gcc::dump_manager::~dump_manager): Free m_optinfo_filename. - (gcc::dump_manager::register_pass): New member function, adapted - from loop body in gcc::pass_manager::register_pass, adding a - call to update_dfi_for_opt_info. - (gcc::dump_manager::opt_info_enable_passes): Store the - -fopt-info options into the new fields. Move the loop - bodies into... - (gcc::dump_manager::update_dfi_for_opt_info): ...this new member - function. - * dumpfile.h (struct opt_pass): New forward decl. - (gcc::dump_manager::register_pass): New decl. - (gcc::dump_manager::update_dfi_for_opt_info): New decl. - (class gcc::dump_manager): Add fields "m_optgroup_flags", - "m_optinfo_flags", and "m_optinfo_filename". - * passes.c (gcc::pass_manager::register_pass): Move all of the - dump-handling code to gcc::dump_manager::register_pass. - -2018-10-04 Peter Bergner - - PR rtl-optimization/87466 - * target.def (setjmp_preserves_nonvolatile_regs_p): New target hook. - * doc/tm.texi.in (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): New hook. - * doc/tm.texi: Regenerate. - * ira-lives.c (process_bb_node_lives): Use the new target hook. - * lra-lives.c (process_bb_lives): Likewise. - * config/rs6000/rs6000.c (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): - Define. - -2018-10-04 Tamar Christina - - * params.c (add_params): Fix initialization. - -2018-10-04 Martin Liska - - PR gcov-profile/84107 - * tree-profile.c (init_ic_make_global_vars): - Remove ic_void_ptr_var and ic_gcov_type_ptr_var. - Come up with new ic_tuple* variables. Emit - __gcov_indirect_call{,_topn} variables. - (gimple_gen_ic_profiler): Access the variable - and emit gimple. - (gimple_gen_ic_func_profiler): Access - __gcov_indirect_call.callee field. - (gimple_init_gcov_profiler): Use ptr_type_node. - * value-prof.c (gimple_ic): Use ptr_type_node. - -2018-10-04 Prathamesh Kulkarni - - PR tree-optimization/85787 - * ipa-pure-const.c (malloc_candidate_p_1): Move most of - malloc_candidate_p into this function and add support for - detecting multiple phis. - (DUMP_AND_RETURN): Move from malloc_candidate_p into top-level macro. - -2018-10-04 Martin Liska - - PR ipa/87491 - * ipa-inline.c (inline_to_all_callers_1): - Call ultimate_alias_target for node being inlined. - -2018-10-03 Jeff Law - - * gimple-ssa-sprintf.c (format_string): Do not hardcode size of - target's wchar_t. - * tree.c (get_typenode_from_name): Moved from fortran/trans-types.c. - * tree.h (get_typenode_from_name): Prototype. - -2018-10-03 Uros Bizjak - - * config/i386/i386.md (*cmp__i387): - Change operand 2 predicate to nonimmediate_operand. - (*cmp__cc_i387): Ditto. - -2018-10-03 Martin Sebor - Jeff Law - - * gimple-ssa-sprintf.c (struct fmtresult): Add new member and - initialize it. - (get_string_length): Detect unterminated arrays. - (format_string): Same. - (format_directive): Warn about unterminated arrays. - (handle_gimple_call): Mark statements with no_warning as needed. - -2018-10-03 Jim Wilson - - * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): For ABI_ILP32E, - also define __riscv_abi_rve. Delete trailing white space. - -2018-10-03 Paul Koning - - Enable LRA register allocator for PDP11. - * config/pdp11/constraints.md (Q): Use define_memory_constraint. - (R): Likewise. - (D): Likewise. - * config/pdp11/pdp11.c (pdp11_lra_p): New function. - * config/pdp11/pdp11.opt (-mlra): New option. - * doc/invoke.texi (PDP-11 Options): Document -mlra. - -2018-10-03 Uros Bizjak - - * config/i386/i386.md (*extendsfdf2): Remove. - (*extendxf2): Ditto. - -2018-10-03 Aldy Hernandez - - PR tree-optimization/87415 - * tree-vrp.c (set_value_range_with_overflow): Special case one bit - precision fields. - -2018-10-02 Jeff Law - - * gimple-fold.c (get_range_strlen): Only set *nonstr when - an unterminated string is discovered. Bubble up range - even for unterminated strings. - (gimple_fold_builtin_strlen): Do not fold if get_range_strlen - indicates the string was not terminated via NONSTR. - -2018-10-03 Aldy Hernandez - - * tree-vrp.c (extract_range_from_unary_expr): Special case all - pointer conversions. - Do not do anything special for anti-ranges. - -2018-10-03 Jérôme Lambourg - - * config/arm/vxworks.h (ARM_TARGET2_DWARF_FORMAT): Adjust to - DW_EH_PE_pcrel | DW_EH_PE_indirect for RTPs. - -2018-10-03 Martin Liska - - PR gcov-profile/86109 - * coverage.c (coverage_begin_function): Do not - mark lambdas as artificial. - * tree-core.h (struct GTY): Remove tm_clone_flag - and introduce new lambda_function. - * tree.h (DECL_LAMBDA_FUNCTION): New macro. - -2018-10-02 Aaron Sawdey - - PR target/87474 - * config/rs6000/rs6000-string.c (expand_strn_compare): Check that both - P8_VECTOR and VSX are enabled. - -2018-10-02 Andreas Krebbel - - * config/s390/driver-native.c (s390_host_detect_local_cpu): Add - 0x3907 as CPU model number. - -2018-10-02 Andreas Krebbel - - * common/config/s390/s390-common.c: Rename PF_ARCH12 to PF_Z14. - * config/s390/s390.h (enum processor_flags): Rename PF_ARCH12 to - PF_Z14. Rename TARGET_CPU_ARCH12 to TARGET_CPU_Z14, - TARGET_CPU_ARCH12_P to TARGET_CPU_Z14_P, TARGET_ARCH12 to - TARGET_Z14, and TARGET_ARCH12_P to TARGET_Z14_P. - * config/s390/s390.md: Likewise. Rename also the cpu attribute - value from arch12 to z14. - -2018-10-02 Uros Bizjak - - * config/i386/i386.md (fxam2_i387_with_temp): Remove. - (isinfxf2): Ditto. - (isinf2): Ditto. - -2018-10-02 Uros Bizjak - - * config/i386/i386.c (ix86_emit_i387_round): Extend op1 to XFmode - before emitting fxam. Perform calculations in XFmode. - -2018-10-02 Marc Glisse - - * match.pd (((X /[ex] A) +- B) * A): New transformation. - -2018-10-02 Marc Glisse - - PR middle-end/87319 - * fold-const.c (fold_plusminus_mult_expr): Handle complex and vectors. - * tree.c (signed_or_unsigned_type_for): Handle complex. - -2018-10-02 Jeff Law - - * gimple-fold.c (get_range_strlen): Remove dead code. - -2018-10-02 Martin Sebor - Jeff Law - - * builtins.c (unterminated_array): Add new arguments. - If argument is not terminated, bubble up size and exact - state to callers. - (expand_builtin_strnlen): Detect, avoid expanding - and diagnose unterminated arrays. - (c_strlen): Fill in offset of start of unterminated strings. - * builtins.h (unterminated_array): Update prototype. - -2018-10-02 Richard Biener - - * config/i386/sse.md (reduc_plus_scal_v4df): Avoid the use - of haddv4df, first reduce to SSE width and exploit the fact - that we only need element zero with the reduction result. - (reduc_plus_scal_v2df): Likewise. - -2018-10-02 Eric Botcazou - - * dojump.h (do_jump): Delete. - (do_jump_1): Likewise. - (split_comparison): Move around. - * dojump.c (do_jump): Make static. - (do_jump_1): Likewise. - (jumpifnot): Move around. - (jumpifnot_1): Likewise. - (jumpif): Likewise. - (jumpif_1): Likewise. - * expr.c (expand_expr_real_1): Call jumpif[not] instead of do_jump. - -2018-10-02 Eric Botcazou - - * reorg.c (make_return_insns): Use emit_copy_of_insn_after for the - insns in the delay slot and add_insn_after for the jump insn. - -2018-10-02 Richard Biener - - * tree-inline.c (expand_call_inline): Use the location of - the callee declaration for the inline-entry marker. - * final.c (notice_source_line): Remove special-casing of - NOTE_INSN_INLINE_ENTRY. - -2018-10-01 Carl Love - - PR 69431 - * config/rs6000/rs6000-builtin.def (__builtin_mffsl): New. - (__builtin_mtfsb0): New. - (__builtin_mtfsb1): New. - ( __builtin_set_fpscr_rn): New. - (__builtin_set_fpscr_drn): New. - * config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add. - (rs6000_expand_set_fpscr_rn_builtin): Add. - (rs6000_expand_set_fpscr_drn_builtin): Add. - (rs6000_expand_builtin): Add case statement entries for - RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1, - RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN, - RS6000_BUILTIN_MFFSL. - (rs6000_init_builtins): Add ftype initialization and def_builtin - calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1, - __builtin_set_fpscr_rn, __builtin_set_fpscr_drn. - * config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn, - rs6000_mffscdrn): Add define_insn. - (rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand. - * doc/extend.texi: Add documentation for the builtins. - -2018-10-01 Richard Biener - - PR tree-optimization/87465 - * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo - causing branch miscounts. - -2018-10-01 Tamar Christina - - * common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM, - aarch64_option_default_param): New. - (params.h): Include. - (TARGET_OPTION_VALIDATE_PARAM, aarch64_option_validate_param): New. - * config/aarch64/aarch64.c (aarch64_override_options_internal): Simplify - stack-clash protection validation code. - -2018-10-01 Tamar Christina - - * params.c (validate_param): New. - (add_params): Use it. - (set_param_value): Refactor param validation into validate_param. - (diagnostic.h): Include. - * diagnostic.h (diagnostic_ready_p): New. - -2018-10-01 Tamar Christina - - * params.c (set_param_value): - Add index of parameter being validated. - * common/common-target.def (option_validate_param): New. - * common/common-targhooks.h (default_option_validate_param): New. - * common/common-targhooks.c (default_option_validate_param): New. - * doc/tm.texi.in (TARGET_OPTION_VALIDATE_PARAM): New. - * doc/tm.texi: Regenerate. - -2018-10-01 Tamar Christina - - PR target/86486 - * config/aarch64/aarch64.c (aarch64_override_options_internal): - Add validation for stack-clash parameters and set defaults. - -2018-10-01 Tamar Christina - - PR target/86486 - * configure.ac: Add stack-clash-protection-guard-size. - * doc/install.texi: Document it. - * config.in (DEFAULT_STK_CLASH_GUARD_SIZE): New. - * params.def: Update comment for guard-size. - (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE, - PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Update description. - * configure: Regenerate. - -2018-10-01 Tamar Christina - - PR target/86486 - * config/aarch64/aarch64.h (STACK_CLASH_MIN_BYTES_OUTGOING_ARGS, - STACK_DYNAMIC_OFFSET): New. - * config/aarch64/aarch64.c (aarch64_layout_frame): - Update outgoing args size. - (aarch64_stack_clash_protection_alloca_probe_range, - TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New. - -2018-10-01 Tamar Christina - - PR target/86486 - * explow.c (anti_adjust_stack_and_probe_stack_clash): Support custom - probe ranges. - * target.def (stack_clash_protection_alloca_probe_range): New. - (stack_clash_protection_final_dynamic_probe): Remove. - * targhooks.h (default_stack_clash_protection_alloca_probe_range) New. - (default_stack_clash_protection_final_dynamic_probe): Remove. - * targhooks.c: Likewise. - * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New. - (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE): Remove. - * doc/tm.texi: Regenerate. - -2018-10-01 Tamar Christina - - PR target/86486 - * config/aarch64/aarch64-protos.h (aarch64_output_probe_sve_stack_clash): New. - * config/aarch64/aarch64.c (aarch64_output_probe_sve_stack_clash, - aarch64_clamp_to_uimm12_shift): New. - (aarch64_allocate_and_probe_stack_space): Add SVE specific section. - * config/aarch64/aarch64.md (probe_sve_stack_clash): New. - -2018-10-01 Tamar Christina - - PR target/86486 - * config/aarch64/aarch64.c (aarch64_layout_frame): Add assert. - -2018-10-01 Jeff Law - Richard Sandiford - Tamar Christina - - PR target/86486 - * config/aarch64/aarch64.md - (probe_stack_range): Add k (SP) constraint. - * config/aarch64/aarch64.h (STACK_CLASH_CALLER_GUARD, - STACK_CLASH_MAX_UNROLL_PAGES): New. - * config/aarch64/aarch64.c (aarch64_output_probe_stack_range): Emit - stack probes for stack clash. - (aarch64_allocate_and_probe_stack_space): New. - (aarch64_expand_prologue): Use it. - (aarch64_expand_epilogue): Likewise and update IP regs re-use criteria. - (aarch64_sub_sp): Add emit_move_imm optional param. - -2018-10-01 MCC CS - - PR tree-optimization/87261 - * match.pd: Remove trailing whitespace. - Add (x & y) | ~(x | y) -> ~(x ^ y), - (~x | y) ^ (x ^ y) -> x | ~y and (x ^ y) | ~(x | y) -> ~(x & y) - -2018-10-01 Claudiu Zissulescu - - * config/arc/arc.md (*add_n): Clean up pattern, update instruction - constraints. - (ashlsi3_insn): Update instruction constraints. - (ashrsi3_insn): Likewise. - (rotrsi3): Likewise. - (add_shift): Likewise. - * config/arc/constraints.md (Csz): New 32 bit constraint. It - avoids placing in the limm field small constants which, otherwise, - could end into a small instruction. - -2018-10-01 Claudiu Zissulescu - - * config/arc/arc.md (maddsidi4_split): Don't use dmac if the - destination register is not odd-even. - (umaddsidi4_split): Likewise. - -2018-10-01 Richard Biener - - * tree-inline.c (expand_call_inline): Store origin of fn - in BLOCK_ABSTRACT_ORIGIN for the inline BLOCK. - * tree.c (block_ultimate_origin): Simplify and do some - checking. - -2018-09-30 Uros Bizjak - - * config/i386/mmx.md (EMMS): New int iterator. - (emms): New int attribute. - (mmx_): Macroize insn from *mmx_emms and *mmx_femms using - EMMS int iterator. Explicitly declare clobbers. - (mmx_emms): Remove expander. - (mmx_femms): Ditto. - * config/i386/predicates.md (emms_operation): Remove predicate. - (vzeroall_pattern): New predicate. - (vzeroupper_pattern): Rename from vzeroupper_operation. - * config/i386/i386.c (ix86_avx_u128_mode_after): Use - vzeroupper_pattern and vzeroall_pattern predicates. - -2018-09-30 Peter Bergner - - PR rtl-optimization/86939 - * ira-lives.c (make_hard_regno_born): Rename from this... - (make_hard_regno_live): ... to this. Remove update to conflict - information. Update function comment. - (make_hard_regno_dead): Add conflict information update. Update - function comment. - (make_object_born): Rename from this... - (make_object_live): ... to this. Remove update to conflict information. - Update function comment. - (make_object_dead): Add conflict information update. Update function - comment. - (mark_pseudo_regno_live): Call make_object_live. - (mark_pseudo_regno_subword_live): Likewise. - (mark_hard_reg_dead): Update function comment. - (mark_hard_reg_live): Call make_hard_regno_live. - (process_bb_node_lives): Likewise. - * lra-lives.c (make_hard_regno_born): Rename from this... - (make_hard_regno_live): ... to this. Remove update to conflict - information. Remove now uneeded check_pic_pseudo_p argument. - Update function comment. - (make_hard_regno_dead): Add check_pic_pseudo_p argument and add update - to conflict information. Update function comment. - (mark_pseudo_live): Remove update to conflict information. Update - function comment. - (mark_pseudo_dead): Add conflict information update. - (mark_regno_live): Call make_hard_regno_live. - (mark_regno_dead): Call make_hard_regno_dead with new arguement. - (process_bb_lives): Call make_hard_regno_live and make_hard_regno_dead. - -2018-09-29 H.J. Lu - - PR target/87370 - * config/i386/i386.c (construct_container): Use TImode for - BLKmode values in 2 integer registers. - -2018-09-29 Jeff Law - - * builtins.c (unterminated_array): Pass in c_strlen_data * to - c_strlen rather than just a tree *. - (c_strlen): Change NONSTR argument to a c_strlen_data pointer. - Update recursive calls appropriately. If caller did not provide a - suitable data pointer, create a local one. When a non-terminated - string is discovered, bubble up information about the string via the - c_strlen_data object. - * builtins.h (c_strlen): Update prototype. - (c_strlen_data): New structure. - * gimple-fold.c (get_range_strlen): Update calls to c_strlen. - For a type 2 call, if c_strlen indicates a non-terminated string - use the length of the non-terminated string. - (gimple_fold_builtin_stpcpy): Update calls to c_strlen. - -2018-09-29 Jakub Jelinek - - PR target/87467 - * config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use - __m512d type for __A argument rather than __m512. - -2018-09-28 John David Anglin - - * match.pd (simple_comparison): Don't optimize if either operand is - a function pointer when target needs function pointer canonicalization. - -2018-09-28 Segher Boessenkool - - * config/rs6000/driver-rs6000.c (asm_names): Adjust the entries for - power5 .. power9 to remove indirection. - * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC, ASM_CPU_POWER6_SPEC, - ASM_CPU_POWER7_SPEC, ASM_CPU_POWER8_SPEC, ASM_CPU_POWER9_SPEC, - ASM_CPU_476_SPEC): Delete. - (ASM_CPU_SPEC): Adjust. - (EXTRA_SPECS): Delete asm_cpu_power5, asm_cpu_power6, asm_cpu_power7, - asm_cpu_power8, asm_cpu_power9, asm_cpu_476. - -2018-09-28 Segher Boessenkool - - * config.in: Delete HAVE_AS_DCI. - * config/powerpcspe/powerpcspe.h: Treat HAVE_AS_DCI as always true. - * config/rs6000/rs6000.h: Ditto. - * configure.ac: Delete HAVE_AS_DCI. - * configure: Regenerate. - -2018-09-28 Segher Boessenkool - - * config.in (HAVE_AS_LWSYNC): Delete. - * config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete. - * config/powerpcspe/sync.md (*lwsync): Always generate lwsync, never - do it as a .long . - * config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete. - * config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it - as a .long . - * configure.ac: Delete HAVE_AS_LWSYNC. - * configure: Regenerate. - -2018-09-28 Eric Botcazou - Pierre-Marie de Rodat - - * calls.c (expand_call): Try to do a tail call for thunks at -O0 too. - * cgraph.h (struct cgraph_thunk_info): Add indirect_offset. - (cgraph_node::create_thunk): Add indirect_offset parameter. - (thunk_adjust): Likewise. - * cgraph.c (cgraph_node::create_thunk): Add indirect_offset parameter - and initialize the corresponding field with it. - (cgraph_node::dump): Dump indirect_offset field. - * cgraphclones.c (duplicate_thunk_for_node): Deal with indirect_offset. - * cgraphunit.c (cgraph_node::analyze): Be prepared for external thunks. - (thunk_adjust): Add indirect_offset parameter and deal with it. - (cgraph_node::expand_thunk): Deal with the indirect_offset field and - pass it to thunk_adjust. Do not call the target hook if it's non-zero - or if the thunk is external or local. Fix formatting. Do not chain - the RESULT_DECL to BLOCK_VARS. Pass the static chain to the target, - if any, in the GIMPLE representation. - * ipa-icf.c (sem_function::equals_wpa): Deal with indirect_offset. - * lto-cgraph.c (lto_output_node): Write indirect_offset field. - (input_node): Read indirect_offset field. - * tree-inline.c (expand_call_inline): Pass indirect_offset field in the - call to thunk_adjust. - * tree-nested.c (struct nesting_info): Add thunk_p field. - (create_nesting_tree): Set it. - (convert_all_function_calls): Copy static chain from targets to thunks. - (finalize_nesting_tree_1): Return early for thunks. - (unnest_nesting_tree_1): Do not finalize thunks. - (gimplify_all_functions): Do not gimplify thunks. - -2018-09-28 David Malcolm - - * opt-suggestions.c (option_proposer::build_option_suggestions): - Release "option_values". - -2018-09-28 David Malcolm - - * coverage.c (get_coverage_counts): Convert problem-reporting dump - messages from MSG_OPTIMIZED_LOCATIONS to MSG_MISSED_OPTIMIZATION. - * dumpfile.c (kind_as_string): New function. - (dump_loc): Rather than a hardcoded prefix of "note: ", use - kind_as_string to vary the prefix based on dump_kind. - (selftest::test_capture_of_dump_calls): Update for above. - -2018-09-28 Uros Bizjak - - * config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG. - (GET_SSE_REGNO): Rename from SSE_REGNO. Update all uses for rename. - -2018-09-28 Uros Bizjak - - * config/i386/i386.h (CC_REGNO): Remove FPSR_REG. - * config/i386/i386.c (ix86_fixed_condition_code_regs): Use - INVALID_REGNUM instead of FPSR_REG. - (ix86_md_asm_adjust): Do not clobber FPSR_REG. - * config/i386/i386.md: Update comment of FP compares. - (fldenv): Do not clobber FPSR_REG. - -2018-09-28 Richard Biener - - * tree.h (BLOCK_ORIGIN): New. - * omp-expand.c (grid_expand_target_grid_body): Assign - BLOCK_ORIGIN to BLOCK_ABSTRACT_ORIGIN. - * tree-inline.c (remap_block): Likewise. - * auto-profile.c (get_function_decl_from_block): Simplify - by eliding the BLOCK_ABSTRACT_ORIGIN chasing. - * langhooks.c (lhd_print_error_function): Likewise. - * optinfo-emit-json.cc (optrecord_json_writer::inlining_chain_to): - Likewise. - * tree-ssa-live.c (remove_unused_scope_block_p): Likewise. - * tree.c (block_nonartificial_location): Likewise. - (block_ultimate_origin): Likewise. - * tree-pretty-print.c (percent_K_format): Likewise. Remove - no longer needed LTO case. - -2018-09-28 Andrew Stubbs - Jan Hubicka - Martin Jambor - - * simplify-rtx.c (simplify_merge_mask): New function. - (simplify_ternary_operation): Use it, also see if VEC_MERGEs with the - same masks are used in op1 or op2. - (test_vec_merge): New function. - (test_vector_ops): Call test_vec_merge. - -2018-09-28 Eric Botcazou - - * config/sparc/sparc-protos.h (sparc_branch_cost): Declare. - * config/sparc/sparc.h (BRANCH_COST): Call sparc_branch_cost. - * config/sparc/sparc.c (struct processor_costs): Add branch_cost field. - (cypress_costs): Set it. - (supersparc_costs): Likewise. - (hypersparc_costs): Likewise. - (leon_cost): Likewise. - (leon3_costs): Likewise. - (sparclet_costs): Likewise. - (ultrasparc_costs): Likewise. - (ultrasparc_costs): Likewise. - (niagara_costs): Likewise. - (niagara2_costs): Likewise. - (niagara3_costs): Likewise. - (niagara4_costs): Likewise. - (niagara7_costs): Likewise. - (m8_costs): Likewise. - (TARGET_CAN_FOLLOW_JUMP): Define. - (pass_work_around_errata::gate): Minor tweak. - (sparc_option_override): Remove MASK_FSMULD mask for V7 processors. - Do not set both MASK_VIS4 and MASK_VIS4B for M8 processor. - Automaitcally clear MASK_FSMULD mask for V7 processors. - (sparc_can_follow_jump): New static function. - (output_ubranch): Deal with CROSSING_JUMP_P. - (sparc_use_sched_lookahead): Rewrite using switch statement. - (sparc_issue_rate): Reorder. - (sparc_branch_cost): New function. - -2018-09-27 Martin Sebor - - * tree.h (tree_to_shwi): Add attribute nonnull and pure. - (tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same. - (int_fits_type_p): Same. - -2018-09-27 Uros Bizjak - - * config/i386/i386.md (FPCR_REG): Remove. - (UNSPEC_FLDCW): Remove. - (x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG. - (x86_fldcw_1): Remove insn pattern. - (fnstenv): Do not clobber FPCR_REG. - (fldenv): Ditto. - * config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register. - (CALL_USED_REGISTERS): Ditto. - (REG_ALLOC_ORDER): Ditto. - (REG_CLASS_CONTENTS): Ditto. - (HI_REGISTER_NAMES): Ditto. - (ADDITIONAL_REGISTER_NAMES): Use defines instead - of numerical constants. - * config/i386/i386.c (regclass_map): Remove fpsr register. - (dbx_register_map): Ditto. - (dbx64_register_map): Ditto. - (svr4_dbx_register_map): Ditto. - (print_reg): Do not handle FPCR_REG. - -2018-09-27 Segher Boessenkool - - PR target/87149 - * config.in (HAVE_AS_CMPB, HAVE_AS_DFP, HAVE_AS_FPRND, HAVE_AS_MFPGPR, - HAVE_AS_POPCNTB, HAVE_AS_POPCNTD, HAVE_AS_POWER8, HAVE_AS_POWER9): - Delete, always treat as true. - * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal): - Ditto. Simplify remaining code. - * config/powerpcspe/powerpcspe.h: Ditto. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto. - Simplify remaining code. - (rs6000_expand_builtin): Ditto. - * config/rs6000/rs6000.h: Ditto. - * configure.ac: Ditto. - * configure: Regenerate. - -2018-09-27 Martin Liska - - * coverage.c (get_coverage_counts): Revert the formatting - of missing profile opt info. - -2018-09-27 Richard Biener - - PR debug/37801 - PR debug/87440 - * dwarf2out.c (set_block_origin_self): Do not mark outermost - block as we do not output that. - (gen_inlined_subroutine_die): Elide the originally outermost - block, matching what we do for concrete instances. - (decls_for_scope): Add parameter specifying whether to recurse - to subblocks. - -2018-09-27 Andrew Stubbs - Tom de Vries - - PR 82089 - - * expmed.c (emit_cstore): Fix handling of result_mode == BImode and - STORE_FLAG_VALUE == 1. - -2018-09-27 Andreas Krebbel - - * config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New - constant definitions. - ("tx_assist"): Replace magic number with PPA_TX_ABORT. - ("*ppa"): Enable pattern also for -march=zEC12 -mno-htm. - ("speculation_barrier"): New expander definition. - -2018-09-26 Indu Bhagat - - PR gcov-profile/86957 - * common.opt: New warning option -Wmissing-profile. - * coverage.c (get_coverage_counts): Add warning for missing .gcda file. - * doc/invoke.texi: Document -Wmissing-profile. - -2018-09-26 Jim Wilson - - * config/riscv/riscv.md (subsi3_extended2): Add J constraint. - (negdi2, negsi2, negsi2_extended, negsi2_extended2): New. - -2018-09-26 Martin Sebor - - * tree.c (zerop): Change return type to bool. - (integer_zerop, integer_onep, integer_each_onep): Same. - (integer_all_onesp, integer_minus_onep, integer_pow2p): Same. - (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same. - (real_onep, real_minus_onep, chain_index): Same. - (print_type_hash_statistics, type_list_equal): Same. - * tree.h (zerop): Same. - (zerop, integer_zerop, integer_onep, integer_each_onep): Same. - (integer_all_onesp, integer_minus_onep, integer_pow2p): Same. - (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same. - (real_onep, real_minus_onep, chain_index): Same. - (print_type_hash_statistics, type_list_equal): Same. - -2018-09-26 Jim Wilson - - * config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment. - -2018-09-26 Jakub Jelinek - - PR target/87414 - * config/i386/i386.c: Include debug.h and dwarf2out.h. - (output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the - call. - -2018-09-25 Andrew Stubbs - - * builtins.c (get_builtin_sync_mem): Force address mode conversion. - -2018-09-26 Uros Bizjak - - * config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS - and FP_SECOND_SSE_REGS. - (REG_CLASS_NAMES): Ditto. - (REG_CLASS_CONTENTS): Ditto. - * config/i386/i386.c (ix86_preferred_reload_class) Do not handle - FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS classes. - (ix86_preferred_output_reload_class): Ditto. - * config/i386/i386.md (fix_trunc_i387_fisttp): Change "=&1f" - clobber constraint to "=&f". - (fix_truncdi_i387): Ditto. - (lrintxfdi2): Ditto. - (fistdi2_): Ditto. - (fpremxf4_i387): Change "=u" constraint to "=f". - (fprem1xf4_i387): Ditto. - (sincosxf3): Ditto. - (fptanxf4_i387): Ditto. - (fxtractxf3_i387): Ditto. - (fscalexf4_i387): Ditto. - (atan2xf3): Change "u" constraint to "f". - (fyl2xxf3_i387): Ditto. - (fyl2xp1xf3_i387): Ditto. - -2018-09-26 Uros Bizjak - - PR target/87439 - * config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update - for removed I387_MASK_PM entity. - - -2018-09-26 Jeff Law - Revert - 2018-09-26 Alexey Neyman - - * graphite.h: Include and ; these - headers are no longer pulled in by . - -2018-09-26 Richard Biener - - PR debug/87443 - * dwarf2out.c (gen_lexical_block_die): Do not equate inline - or concrete instance DIE to the tree. Create abstract origin - attributes also for concrete instances. - -2018-09-26 Alexey Neyman - - * graphite.h: Include and ; these - headers are no longer pulled in by . - -2018-09-26 Matthew Malcomson - - * config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op): - Use new helper functions. - * config/arm/sync.md (atomic_load, atomic_store): - Use new helper functions. - * config/arm/aarch-common-protos.h (aarch_mm_needs_acquire, - aarch_mm_needs_release): New declarations. - * config/arm/aarch-common.c (aarch_mm_needs_acquire, - aarch_mm_needs_release): New. - -2018-09-26 Eric Botcazou - - * config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks. - (arm32_output_mi_thunk): Deal with long calls. - -2018-09-26 Richard Biener - - PR debug/87428 - PR debug/87362 - * tree-inline.c (expand_call_inline): When the location - of the call is UNKNOWN_LOCATION use DECL_SOURCE_LOCATION - or BUILTINS_LOCATION for the BLOCK_SOURCE_LOCATION of - the inserted BLOCK to make inlined_function_outer_scope_p - recognize it. - * dwarf2out.c (add_call_src_coords_attributes): Do not add - coords for reserved locations. - -2018-09-25 Segher Boessenkool - - * config/rs6000/rs6000.md (*movcc_internal1): Use set_attr_alternative. - (*call_indirect_nonlocal_sysv): Ditto. - (*call_value_indirect_nonlocal_sysv): Ditto. - (*sibcall_nonlocal_sysv): Ditto. - (*sibcall_value_nonlocal_sysv): Ditto. - (_): Ditto. - (tf_): Ditto. - -2018-09-25 Segher Boessenkool - - * config/rs6000/altivec.md (*altivec_mov): Write the output - control string as a list of templates instead of as C code. - (*altivec_movti): Ditto. - * config/rs6000/darwin.md (movdf_low_di): Ditto. - -2018-09-25 Jim Wilson - - * config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak - when target symbol is weak. - -2018-09-25 Bernd Edlinger - - PR c/87387 - * builtins.c (unterminated_array): Simplify. - * expr.c (string_constant): Handle SSA_NAME. Add more exceptions - where pointer arithmetic is safe. - -2018-09-25 Segher Boessenkool - - PR target/86987 - * config/rs6000/altivec.md (altivec_vspltb): Use - const_0_to_15_operand instead of u5bit_cint_operand. - (*altivec_vspltb_internal): Ditto. - (altivec_vspltb_direct): Ditto. - (altivec_vsplth): Use const_0_to_7_operand instead of - u5bit_cint_operand. - (*altivec_vsplth_internal): Ditto. - (altivec_vsplth_direct): Ditto. - (altivec_vspltw): Use const_0_to_3_operand instead of - u5bit_cint_operand. - (*altivec_vspltw_internal): Ditto. - (altivec_vspltw_direct): Ditto. - (altivec_vspltsf): Ditto. - (*altivec_vspltsf_internal): Ditto. - * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the - various splats with the proper size immediate. Reorder the various - cases by ascending size of immediate, and put all such together. - -2018-09-25 Richard Biener - - PR debug/83941 - * dwarf2out.c (add_AT_external_die_ref): Remove now redundant - GC-ification. - (maybe_create_die_with_external_ref): Do not create - DW_TAG_imported_unit here. - (add_abstract_origin_attribute): Handle external BLOCK refs. - (dwarf2out_abstract_function): Simplify LTO case. - (dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely - rather than using maybe_create_die_with_external_ref. - -2018-09-25 Uros Bizjak - - PR target/71278 - * config/i386/i386.md (frndintxf2_mask_pm): Remove. - (frndintxf2_mask_pm_i387): Ditto. - (nearbyintxf2): Rewrite expander pattern to match rintxf2. - Enable for !flag_trapping_math. - (nearbyint2): Enable x87 modes for !flag_trapping_math. - Enable SSE modes for TARGET_SSE4_1 and expand them with round insn. - Change operand 1 predicate to nonimmediate_operand. - (attr "i387_cw"): Remove mask_pm. - * config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_CW_MASK_PM. - (enum ix86_entity): Remove I387_MASK_PM. - * config/i386/i386.c (ix86_i387_mode_needed): Do not - handle I387_MASK_PM. - (ix86_mode_needed): Ditto. - (ix86_mode_after): Ditto. - (ix86_mode_entry): Ditto. - (ix86_mode_exit): Ditto. - (emit_i387_cw_initialization): Do not handle I387_CW_MASK_PM. - -2018-09-25 Jakub Jelinek - - * vr-values.c (vr_values::vr_values): Initialize to_remove_edges and - to_update_switch_stmts to vNULL instead of calling create on them - immediately. - -2018-09-25 Richard Biener - - PR tree-optimization/87402 - * tree-ssa-sccvn.c (SSA_VISITED): Remove unused function. - (visit_phi): Re-instantiate handling of supposed to be VARYING - but non-VARYING backedge value. - -2018-09-25 Richard Biener - - PR debug/83941 - * dwarf2out.c (struct sym_off_pair): New. - (external_die_map): New global. - (lookup_decl_die): When in LTO create DIEs lazily from the - external_die_map. - (lookup_block_die): New function, create DIEs lazily in LTO. - (equate_block_to_die): New function. - (dwarf2out_die_ref_for_decl): During WPA get the association - from the external DIE map. - (dwarf2out_register_external_die): Record mapping into the - external DIE map. - (maybe_create_die_with_external_ref): New function split out from - DIE generation part of old dwarf2out_register_external_die. - (add_abstract_origin_attribute): Do not return the DIE. When - in LTO reference externals directly. - (dwarf2out_abstract_function): When in LTO ignore calls for - decls with external DIEs (already present abstract instances). - (gen_call_site_die): Adjust. - (add_high_low_attributes): Likewise. - (gen_lexical_block_die): Likewise. - (gen_inlined_subroutine_die): Likewie. - (gen_block_die): Likewise. - (dwarf2out_inline_entry): Likewise. - (dwarf2out_early_finish): In LTRANS phase create DW_TAG_imported_unit - DIEs. - -2018-09-25 Martin Liska - - * ipa-fnsummary.c (estimate_node_size_and_time): Scale by two - integers and not by a float value. - -2018-09-25 Martin Liska - - PR fortran/87394 - * dbgcnt.c (dbg_cnt_process_single_pair): Return false - instead of NULL. - * dumpfile.c (dump_enable_all): Remove extra parenthesis. - * gcov-tool.c: Declare the function with ATTRIBUTE_NORETURN. - * godump.c (go_format_type): Remove extra parenthesis. - -2018-09-25 Martin Liska - - * alias.c (set_dest_equal_p): Remove unused function. - * config/i386/i386.c (def_builtin_pure2): Likewise. - * diagnostic-show-locus.c (class layout): Remove - unused field. - (layout::layout): Likewise here. - * dump-context.h (class temp_dump_context): Likewise. - * dwarf2out.c (add_AT_fde_ref): Remove unused function. - (add_AT_loclistsptr): Likewise. - (add_AT_offset): Likewise. - (get_AT_hi_pc): Likewise. - (is_comdat_die): Likewise. - (type_is_enum): Likewise. - (ceiling): Likewise. - (add_AT_vms_delta): Likewise. - (is_class_die): Likewise. - * edit-context.c (class line_event): Remove unused field. - * graphite-sese-to-poly.c (tree_int_to_gmp): Remove - unused function. - * ipa-cp.c (ipa_get_vr_lat): Likewise. - * lra-constraints.c (ok_for_index_p_nonstrict): Likewise. - (ok_for_base_p_nonstrict): Likewise. - * tree-chrec.c (is_not_constant_evolution): Likewise. - (chrec_fold_poly_cst): Likewise. - * tree-if-conv.c (has_pred_critical_p): Likewise. - * tree-ssa-coalesce.c (print_exprs): Likewise. - * tree-ssa-pre.c (bitmap_set_contains_expr): Likewise. - * tree-ssa-uninit.c (is_and_or_or_p): Likewise. - * tree-vrp.c (value_ranges_intersect_p): Likewise. - (value_range_nonnegative_p): Likewise. - -2018-09-25 Martin Liska - - * config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue): - Do not handle "GNU Pascal". - * config/rs6000/rs6000.c (rs6000_output_function_epilogue): - Likewise. - * config/sparc/sparc.c (sparc_pass_by_reference): Remove Pascal - from documentation. Likewise. - * dbxout.c (dbxout_range_type): Likewise. - * doc/cpp.texi: Likewise. - * doc/extend.texi: Likewise. - * doc/frontends.texi: Likewise. - * doc/invoke.texi: Remove Pascal entry. - * tree.def (CLEANUP_POINT_EXPR): Likewise. - * doc/rtl.texi (MODE_FUNCTION): Remove not used entry. - -2018-09-25 Martin Liska - - PR middle-end/86078 - * doc/invoke.texi: Document all parameters and remove default - of the parameters. - -2018-09-25 Ilya Leoshkevich - - PR bootstrap/87417 - * rtl.c (rtx_code_size): Take into account that EQ_ATTR_ALT - contains HOST_WIDE_INTs when computing its size. - -2018-09-24 Jim Wilson - - PR target/87391 - * config/riscv/riscv.h (STACK_BOUNDARY): Test riscv_abi == ABI_ILP32E - not TARGET_RVE. - (ABI_STACK_BOUNDARY, MAX_ARGS_IN_REGISTERS): Likewise. - -2018-09-24 Andrew Pinski - - * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Don't - access prev before checking it for NULLness in the - AARCH64_FUSE_CMP_BRANCH case. - -2018-09-24 H.J. Lu - - PR target/82699 - * config/i386/i386.c (rest_of_insert_endbranch): Set - endbr_queued_at_entrance to true and don't insert ENDBR if - x86_function_profiler will be called. - (x86_function_profiler): Insert ENDBR if endbr_queued_at_entrance - is true. - * config/i386/i386.h (machine_function): Add - endbr_queued_at_entrance. - -2018-09-24 Ilya Leoshkevich - - * genattrtab.c (mk_attr_alt): Use alternative_mask. - (attr_rtx_1): Adjust caching to match the new EQ_ATTR_ALT field - types. - (check_attr_test): Use alternative_mask. - (get_attr_value): Likewise. - (compute_alternative_mask): Use alternative_mask and XWINT. - (make_alternative_compare): Use alternative_mask. - (attr_alt_subset_p): Use XWINT. - (attr_alt_subset_of_compl_p): Likewise. - (attr_alt_intersection): Use alternative_mask and XWINT. - (attr_alt_union): Likewise. - (attr_alt_complement): Use HOST_WIDE_INT and XWINT. - (mk_attr_alt): Use alternative_mask and HOST_WIDE_INT. - (simplify_test_exp): Use alternative_mask and XWINT. - (write_test_expr): Use alternative_mask and XWINT, adjust bit - number calculation to support 64 bits. Generate code that - checks 64-bit masks. - (main): Use alternative_mask. - * rtl.def (EQ_ATTR_ALT): Change field types from ii to ww. - -2018-09-24 Ilya Leoshkevich - - PR target/80080 - * config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL - RETURN+USE when returning via %r14. - -2018-09-24 Martin Liska - - * gcov.c (output_lines): Print colorization legend - for both flag_use_colors and flag_use_hotness_colors. - Reword the help. - -2018-09-24 Martin Liska - - * coverage.c (get_coverage_counts): Use warning_at - with current_function_decl location. Use %qD in warning - message. - -2018-09-24 Martin Liska - - * memory-block.h (memory_block_pool::release): Annotate with - valgrind that the memory is not accessible. - -2018-09-24 Martin Liska - - PR sanitizer/85774 - * asan.c: Make asan_handled_variables extern. - * asan.h: Likewise. - * cfgexpand.c (expand_stack_vars): Make sure - a representative is unpoison if another - variable in the partition is handled by - use-after-scope sanitization. - -2018-09-24 Richard Biener - - PR tree-optimization/63155 - * tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to - the worklist when the edge of the respective argument isn't - executable. - -2018-09-23 Uros Bizjak - - * config/i386/i386.h (enum reg_class): Rename MASK_REGS to - ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS. - (MASK_CLASS_P): Update for rename. - (MAYBE_MASK_CLASS_P): Ditto. - (REG_CLASS_NAMES): Update. - (REG_CLASS_CONTENT): Update. - * config/i386/i386.c (regclass_map): Update for MASK_REG - and ALL_MASK_REGS rename. - * config/i386/constraints.md (Yk): Update for rename. - (k): Ditto. - -2018-09-23 Uros Bizjak - - * config/i386/i386.h (enum reg_class): Remove - EVEX_SSE_REGS and MOD4_SSE_REGS. - (REG_CLASS_NAMES): Update. - (REG_CLASS_CONTENT): Update. - * config/i386/i386.c (regclass_map): Declare AVX-512 SSE - registers as ALL_SSE_REGS. - (ix86_additional_allocno_class_p): Remove. - (TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Remove. - (ix86_register_priority): Lower priority of EVEX SSE registers. - Use IN_RANGE macro where appropriate. - (ix86_hard_regno_mode_ok): Merge AVX-5124FMAPS and - AVX-5124VNNIW checks. - (ix86_modes_tieable_p): Tie 512-bit SSE modes. - * config/i386/sse.md (avx5124fmaddps_4fmaddps) - (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddps_maskz) - (avx5124fmaddps_4fmaddss, avx5124fmaddps_4fmaddss_mask) - (avx5124fmaddps_4fmaddss_maskz, avx5124fmaddps_4fnmaddps) - (avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddps_maskz) - (avx5124fmaddps_4fnmaddss, avx5124fmaddps_4fnmaddss_mask) - (avx5124fmaddps_4fnmaddss_maskz, avx5124vnniw_vp4dpwssd) - (avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssd_maskz) - (avx5124vnniw_vp4dpwssds, avx5124vnniw_vp4dpwssds_mask) - (avx5124vnniw_vp4dpwssds_maskz): Use "v" instead of "Yh" constraint. - * config/i386/constraints.md (Yh): Remove. - -2018-09-23 Uros Bizjak - - * config/i386/i386.c (regclass_map): Declare integer REX registers - as GENERAL_REGS. - -2018-09-23 Gerald Pfeifer - - * doc/service.texi (Service): Switch the fsf.org link to https. - -2018-09-22 Chung-Ju Wu - - PR target/86798 - * config/nds32/nds32.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - -2018-09-21 Florian Weimer - - PR middle-end/81035 - * doc/extend.texi (Common Function Attributes): Mention that - noreturn suppresses tail call optimization. - -2018-09-21 Jeff Law - - * gimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call - vr_values::cleanup_edges_and_switches. - * tree-vrp.c (to_remove_edges, to_update_switch_stmts): Moved into - vr_values class. - (identify_jump_threads): Remove EDGE_IGNORE handling. - (execute_vrp): Move handling of to_remove_edges and - to_update_switch_stmts into vr_values class member functions. - * tree-vrp.h (switch_update, to_remove_edges): Remove declarations. - (to_update_switch_stmts): Likewise. - * vr-values.c: Include cfghooks.h. - (vr_values::vr_values): Initialize to_remove_edges and - to_update_switch_stmts. - (vr_values::~vr_values): Verify to_remove_edges and - to_update_switch_stmts are empty. - (vr_values::simplify_switch_using_ranges): Set EDGE_IGNORE as needed. - (vr_values::cleanup_edges_and_switches): New member function. - * vr-values.h (vr_values): Add cleanup_edges_and_switches member - function. Add new data members. - -2018-09-21 David Malcolm - - PR tree-optimization/87309 - * dumpfile.c (dump_context::begin_scope): Filter the dump_loc - calls with pflags and alt_flags. - (selftest::test_capture_of_dump_calls): Add test of interaction of - MSG_OPTIMIZED_LOCATIONS with AUTO_DUMP_SCOPE. - -2018-09-21 Olivier Hainque - - * config.gcc: Factorize and comment inclusion of vxworks-dummy.h. - -2018-09-21 Olivier Hainque - - * config/vxworks.h (CLEAR_INSN_CACHE): #define to 1. - -2018-09-21 Olivier Hainque - - * config/vxworks.h (VXWORKS_LIBGCC_SPEC): Remove -lc_internal. - Merge block comment with the one ahead of VXWORKS_LIBS_RTP. Then: - (VXWORKS_LIBS_RTP): Minor reordering. - -2018-09-21 Olivier Hainque - - * config/vxworks.h (STARTFILE_PREFIX_SPEC): Define. - (VXWORKS_LIBS_DIR_RTP): Remove definition and use. - -2018-09-21 Olivier Hainque - - * config/vxworks.h (SIZE_TYPE): Account for TARGET_VXWORKS64. - (PTRDIFF_TYPE): Likewise. - -2018-09-21 Olivier Hainque - - * config.gcc: Enforce def of TARGET_VXWORKS64 to 1 from - triplet, similar to support for VxWorks7. - * config/vxworks-dummy.h: Provide a default definition - of TARGET_VXWORKS64 to 0. - -2018-09-21 Olivier Hainque - - * config/vxworks.h (TARGET_VXWORKS7): Move default definition ... - * config/vxworks-dummy.h: here. - -2018-09-21 Olivier Hainque - - * config.gcc: Prepend vxworks-dummy.h to tm_file for powerpc* - -2018-09-21 Shaokun Zhang - Bo Zhou - - * config/aarch64/aarch64-cores.def (tsv110): New CPU. - * config/aarch64/aarch64-tune.md: Regenerated. - * doc/invoke.texi (AArch64 Options/-mtune): Add "tsv110". - * config/aarch64/aarch64.c (tsv110_tunings): New tuning table. - * config/aarch64/aarch64-cost-tables.h: Add "tsv110" extra costs. - -2018-09-21 Andrew Stubbs - Julian Brown - - * builtins.c (get_builtin_sync_mem): Handle address spaces. - -2018-09-21 Eric Botcazou - - * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false - if the call takes a static chain. - -2018-09-21 Martin Liska - - * auto-profile.c (autofdo_source_profile::read): Do not - set sum_all. - (read_profile): Do not add working sets. - (read_autofdo_file): Remove sum_all. - (afdo_callsite_hot_enough_for_early_inline): Remove const - qualifier. - * coverage.c (struct counts_entry): Remove gcov_summary. - (read_counts_file): Read new GCOV_TAG_OBJECT_SUMMARY, - do not support GCOV_TAG_PROGRAM_SUMMARY. - (get_coverage_counts): Remove summary and expected - arguments. - * coverage.h (get_coverage_counts): Likewise. - * doc/gcov-dump.texi: Remove -w option. - * gcov-dump.c (dump_working_sets): Remove. - (main): Do not support '-w' option. - (print_usage): Likewise. - (tag_summary): Likewise. - * gcov-io.c (gcov_write_summary): Do not dump - histogram. - (gcov_read_summary): Likewise. - (gcov_histo_index): Remove. - (gcov_histogram_merge): Likewise. - (compute_working_sets): Likewise. - * gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Mark - it not obsolete. - (GCOV_TAG_PROGRAM_SUMMARY): Mark it obsolete. - (GCOV_TAG_SUMMARY_LENGTH): Adjust. - (GCOV_HISTOGRAM_SIZE): Remove. - (GCOV_HISTOGRAM_BITVECTOR_SIZE): Likewise. - (struct gcov_summary): Simplify rapidly just - to runs and sum_max fields. - (gcov_histo_index): Remove. - (NUM_GCOV_WORKING_SETS): Likewise. - (compute_working_sets): Likewise. - * gcov-tool.c (print_overlap_usage_message): Remove - trailing empty line. - * gcov.c (read_count_file): Read GCOV_TAG_OBJECT_SUMMARY. - (output_lines): Remove program related line. - * ipa-profile.c (ipa_profile): Do not consider GCOV histogram. - * lto-cgraph.c (output_profile_summary): Do not stream GCOV - histogram. - (input_profile_summary): Do not read it. - (merge_profile_summaries): And do not merge it. - (input_symtab): Do not call removed function. - * modulo-sched.c (sms_schedule): Do not print sum_max. - * params.def (HOT_BB_COUNT_FRACTION): Reincarnate param that was - removed when histogram method was invented. - (HOT_BB_COUNT_WS_PERMILLE): Mention that it's used only in LTO - mode. - * postreload-gcse.c (eliminate_partially_redundant_load): Fix - GCOV coding style. - * predict.c (get_hot_bb_threshold): Use HOT_BB_COUNT_FRACTION - and dump selected value. - * profile.c (add_working_set): Remove. - (get_working_sets): Likewise. - (find_working_set): Likewise. - (get_exec_counts): Do not work with working sets. - (read_profile_edge_counts): Do not inform as sum_max is removed. - (compute_branch_probabilities): Likewise. - (compute_value_histograms): Remove argument for call of - get_coverage_counts. - * profile.h: Do not make gcov_summary const. - -2018-09-21 Monk Chiang - - * config.gcc (nds32*-*-*): Set TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0. - -2018-09-21 Eric Botcazou - - PR tree-optimization/86990 - * gimple-ssa-store-merging.c (imm_store_chain_info:coalesce_immediate): - Check that the entire merged store group is made of constants only for - overlapping stores. - -2018-09-20 Allan Sandfeld Jensen - - * gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib. - (VTABLE_VERIFICATION_SPEC): Likewise. - (SANITIZER_EARLY_SPEC): Likewise. - (SANITIZER_SPEC): Likewise. - * config/darwin.h (LINK_COMMAND_SPEC): Likewise. - * doc/invoke.texi (Link Options): Document -r. - -2018-09-20 Richard Biener - - PR middle-end/87054 - * gimplify.c (gimplify_expr): Retain alignment of - addressable lvalue in dereference. - -2018-09-20 Alexandre Oliva - - PR bootstrap/87013 - * configure.ac: Check for .loc is_stmt support. - * configure, config.in: Rebuilt. - * dwarf2out.c (dwarf2out_source_line): Skip is_stmt - if not supported. - -2018-09-20 Segher Boessenkool - - * config/rs6000/rs6000.opt (misel=no, misel=yes): Delete. - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -misel=yes and - -misel=no. - -2018-09-20 Segher Boessenkool - - * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete - VECTOR_OTHER. - * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete - case VECTOR_OTHER. - -2018-09-20 Marek Polacek - - * doc/invoke.texi: Add -Wno-init-list-lifetime to C++ Language Options. - -2018-09-20 Richard Sandiford - - PR tree-optimization/87288 - * tree-vect-loop.c (vect_analyze_loop_2): Take PEELING_FOR_GAPS - into account when determining PEELING_FOR_NITERS. - -2018-09-20 Richard Sandiford - - PR tree-optimization/86877 - * tree-vect-loop.c (vect_analyze_loop_2): Call - vect_verify_datarefs_alignment. - -2018-09-19 Marek Polacek - - * doc/invoke.texi: Document -Wclass-conversion. - -2018-09-19 John David Anglin - - * config/pa/pa.c (pa_adjust_priority): Delete. - (TARGET_SCHED_ADJUST_PRIORITY): Delete define. - - * config/pa/pa.md (atomic_storeqi): Restore deleted expander. - (atomic_storehi): Likewise. - (atomic_storesi): Likewise. - (atomic_loaddi): Restore compare and swap exchange loop code. - -2018-09-19 Segher Boessenkool - - PR rtl-optimization/86902 - * combine.c (try_combine): When changing the CC mode used, don't change - an unrelated mode in other_insn to that new CC mode. - -2018-09-19 David Malcolm - - * tree-data-ref.c (runtime_alias_check_p): Use formatted printing - with %T in place of calls to dump_generic_expr. - (prune_runtime_alias_test_list): Likewise. - (create_runtime_alias_checks): Likewise. - * tree-vect-data-refs.c (vect_check_nonzero_value): Likewise. - (vect_analyze_data_ref_dependence): Likewise. - (vect_slp_analyze_data_ref_dependence): Likewise. - (vect_record_base_alignment): Likewise. Use %G in place of call - to dump_gimple_stmt. - (vect_compute_data_ref_alignment): Likewise. - (verify_data_ref_alignment): Likewise. - (vect_find_same_alignment_drs): Likewise. - (vect_analyze_group_access_1): Likewise. - (vect_analyze_data_ref_accesses): Likewise. - (dependence_distance_ge_vf): Likewise. - (dump_lower_bound): Likewise. - (vect_prune_runtime_alias_test_list): Likewise. - (vect_find_stmt_data_reference): Likewise. - (vect_analyze_data_refs): Likewise. - (vect_create_addr_base_for_vector_ref): Likewise. - (vect_create_data_ref_ptr): Likewise. - * tree-vect-loop-manip.c (vect_set_loop_condition): Likewise. - (vect_can_advance_ivs_p): Likewise. - (vect_update_ivs_after_vectorizer): Likewise. - (vect_gen_prolog_loop_niters): Likewise. - (vect_prepare_for_masked_peels): Likewise. - * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise. - (vect_determine_vectorization_factor): Likewise. - (vect_is_simple_iv_evolution): Likewise. - (vect_analyze_scalar_cycles_1): Likewise. - (vect_analyze_loop_operations): Likewise. - (report_vect_op): Likewise. - (vect_is_slp_reduction): Likewise. - (check_reduction_path): Likewise. - (vect_is_simple_reduction): Likewise. - (vect_create_epilog_for_reduction): Likewise. - (vect_finalize_reduction:): Likewise. - (vectorizable_induction): Likewise. - (vect_transform_loop_stmt): Likewise. - (vect_transform_loop): Likewise. - (optimize_mask_stores): Likewise. - * tree-vect-patterns.c (vect_pattern_detected): Likewise. - (vect_split_statement): Likewise. - (vect_recog_over_widening_pattern): Likewise. - (vect_recog_average_pattern): Likewise. - (vect_determine_min_output_precision_1): Likewise. - (vect_determine_precisions_from_range): Likewise. - (vect_determine_precisions_from_users): Likewise. - (vect_mark_pattern_stmts): Likewise. - (vect_pattern_recog_1): Likewise. - * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. - (vect_record_max_nunits): Likewise. - (vect_build_slp_tree_1): Likewise. - (vect_build_slp_tree_2): Likewise. - (vect_print_slp_tree): Likewise. - (vect_analyze_slp_instance): Likewise. - (vect_detect_hybrid_slp_stmts): Likewise. - (vect_detect_hybrid_slp_1): Likewise. - (vect_slp_analyze_operations): Likewise. - (vect_slp_analyze_bb_1): Likewise. - (vect_transform_slp_perm_load): Likewise. - (vect_schedule_slp_instance): Likewise. - * tree-vect-stmts.c (vect_mark_relevant): Likewise. - (vect_mark_stmts_to_be_vectorized): Likewise. - (vect_init_vector_1): Likewise. - (vect_get_vec_def_for_operand): Likewise. - (vect_finish_stmt_generation_1): Likewise. - (vect_check_load_store_mask): Likewise. - (vectorizable_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_load): Likewise. - (vect_analyze_stmt): Likewise. - (vect_is_simple_use): Likewise. - (vect_get_vector_types_for_stmt): Likewise. - (vect_get_mask_type_for_stmt): Likewise. - * tree-vectorizer.c (increase_alignment): Likewise. - -2018-09-19 Andrew Stubbs - - * doc/rtl.texi: Adjust vec_select description. - * simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use - non-constant selectors. - -2018-09-19 Matthew Malcomson - - * config/aarch64/aarch64-protos.h - (aarch64_offset_9bit_signed_unscaled_p): New declaration. - * config/aarch64/aarch64.md (arches): New "rcpc8_4" attribute value. - (arch_enabled): Add check for "rcpc8_4" attribute value of "arch". - * config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield. - (AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4. - (AARCH64_FL_PROFILE): Move index so flags are ordered. - (AARCH64_ISA_RCPC8_4): New flag. - * config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed - to aarch64_offset_9bit_signed_unscaled_p. - * config/aarch64/atomics.md (atomic_store): Allow offset - and use stlur. - * config/aarch64/constraints.md (Ust): New constraint. - * config/aarch64/predicates.md. - (aarch64_9bit_offset_memory_operand): New predicate. - (aarch64_rcpc_memory_operand): New predicate. - -2018-09-19 Eric Botcazou - - PR rtl-optimization/87361 - * rtlanal.c (nonzero_bits1): Revert accidental change. - -2018-09-19 Richard Biener - - PR tree-optimization/87349 - PR tree-optimization/87342 - * tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation. - -2018-09-18 Marek Polacek - - P1064R0 - Allowing Virtual Function Calls in Constant Expressions - * gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert. - -2018-09-18 Segher Boessenkool - - * config/rs6000/rs6000.md: Remove old "Cygnus sibcall" comment. - -2018-09-18 Segher Boessenkool - - PR rtl-optimization/86882 - * rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER. - -2018-09-18 Uros Bizjak - - * config/i386/i386.md (*extendxf2): Macroize insn from - *extendsfxf2 and *extenddfxf2 using MODEF mode iterator. - -2018-09-18 Jonathan Wakely - - PR other/87353 - * doc/invoke.texi (Link Options): Fix formatting and grammar. - -2018-09-18 Richard Biener - - PR middle-end/63155 - * tree-ssa-coalesce.c (tree_int_map_hasher): Remove. - (compute_samebase_partition_bases): Likewise. - (coalesce_ssa_name): Always use compute_optimized_partition_bases. - (gimple_can_coalesce_p): Simplify. - -2018-09-18 Hans-Peter Nilsson - - Handle a library implementation of ffs calling __builtin_ffs. - * config/mmix/mmix.c (TARGET_INIT_LIBFUNCS): Override with... - (mmix_init_libfuncs): New function: make __builtin_ffs expand - to __ffsdi2. - -2018-09-17 David Malcolm - - * diagnostic-show-locus.c (class layout_range): Add field - "m_original_idx". - (layout_range::layout_range): Add "original_idx" param and use it - to initialize new field. - (make_range): Use 0 for original_idx. - (layout::layout): Pass in index to calls to - maybe_add_location_range. - (layout::maybe_add_location_range): Add param "original_idx" and - pass it on to layout_range. - (layout::print_any_labels): Pass on range->m_original_idx to - get_text call. - (gcc_rich_location::add_location_if_nearby): Use 0 for - original_idx. - * gcc-rich-location.h (text_range_label::get_text): Update for new - param. - (range_label_for_type_mismatch::get_text): Likewise. - -2018-09-17 Uros Bizjak - - * config/i386/i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier. - -2018-09-17 David Malcolm - - * gimple-ssa-sprintf.c (fmtwarn): Update for introduction of - format_string_diagnostic_t. - (fmtwarn_n): Likewise. - * substring-locations.c - (format_string_diagnostic_t::format_string_diagnostic_t) New ctor. - (format_warning_n_va): Convert to... - (format_string_diagnostic_t::emit_warning_n_va): ...this. - (format_warning_va): Convert to... - (format_string_diagnostic_t::emit_warning_va): ...this. - (format_warning_at_substring): Convert to... - (format_string_diagnostic_t::emit_warning): ...this. - (format_warning_at_substring_n): Convert to... - (format_string_diagnostic_t::emit_warning_n): ...this. - * substring-locations.h (class format_string_diagnostic_t): New - class. - (format_warning_va): Convert to - format_string_diagnostic_t::emit_warning_va. - (format_warning_n_va): Convert to - format_string_diagnostic_t::emit_warning_n_va. - (format_warning_at_substring): Convert to - format_string_diagnostic_t::emit_warning. - (format_warning_at_substring_n): Convert to - format_string_diagnostic_t::emit_warning_n. - -2018-09-17 Cesar Philippidis - Bernd Schmidt - - * config/nvptx/nvptx.md (atomic_fetch_): Enable with - SImode args. - -2018-09-17 Uros Bizjak - - * config/i386/i386.md (truncxf2_i387_noop_unspec): Change - operand 0 predicate to nonimmediate operand. - (rint2_frndint): Remove insn pattern. - (rint2): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate rintxf2 insn. - (frndintxf2_): Rename from frndint2_. - Do not use X87MODEF mode macro. - (frndintxf2__i387): Rename from - frndint2__i387. Do not use X87MODEF mode macro. - (2): For non-SSE modes, extend operand 1 - to XFmode and generate significandxf3 insn. - -2018-09-17 Richard Biener - - PR tree-optimization/87328 - * tree-ssa-sccvn.c (process_bb): Remove assertion about not - visiting unexecutable backedges when not iterating. - (do_rpo_vn): Mark all edges not executable even when not - iterating. - -2018-09-17 Martin Jambor - - PR c/63886 - * doc/invoke.texi (Warning Options): Likewise. - -2018-09-17 Richard Biener - - PR tree-optimization/87301 - * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly - clean EH info from leftover copy assignments. - -2018-09-17 Martin Liska - - PR gcov-profile/85871 - * gcov.c (output_intermediate_file): Fix out of bounds - access. - -2018-09-17 Vineet Gupta - - * config/arc/arc.c: Object attributes for core4 not reflected - correctly. - * config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes - core3). - -2018-09-17 Alexey Brodkin - - * config/arc/linux.h (LINK_EH_SPEC): Add missing space. - -2018-09-17 Martin Liska - - * doc/gcov.texi: Document new option --use-hotness-colors. - * gcov.c (struct source_info): Declare new field. - (source_info::source_info): Set default for maximum_count. - (print_usage): Add new -q option. - (process_args): Process it. - (accumulate_line_info): Save src->maximum_count. - (output_line_beginning): Make color line number if - flag_use_hotness_colors is set. - (output_line_details): Pass default argument value. - (output_lines): Pass src->maximum_count. - -2018-09-17 Martin Liska - - * common/config/i386/i386-common.c (ix86_get_valid_option_values): - Use processor_names table. - * config/i386/i386.c (ix86_default_align): Use - processor_cost_table for alignment values. - (ix86_option_override_internal): Use processor_names. - (ix86_function_specific_print): Likewise. - * config/i386/i386.h (struct processor_costs): - Add alignment values. - (struct ptt): Remove and replace with const char *. - * config/i386/x86-tune-costs.h (struct processor_costs): - Declare default alignments for all costs. - -2018-09-17 Aldy Hernandez - - * tree-vrp.c (extract_range_from_unary_expr): Do not special case - symbolics or VR_VARYING ranges for ABS_EXPR. - * wide-int-range.cc (wide_int_range_abs): Return positive numbers - when range will wrap. - -2018-09-15 Eric Botcazou - - PR middle-end/86864 - * cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER - before and after a JUMP_TABLE_DATA. - -2018-09-14 John David Anglin - - PR middle-end/87188 - * dojump.c (do_compare_and_jump): Canonicalize function pointers - when one operand is a function pointer. Use POINTER_TYPE_P and - FUNC_OR_METHOD_TYPE_P. - * expr.c (do_store_flag): Use POINTER_TYPE_P and FUNC_OR_METHOD_TYPE_P. - * fold-const.c (build_range_check): Likewise. - * match.pd (simple_comparison): Likewise. - -2018-09-14 David Malcolm - - PR c/82967 - * spellcheck.c (get_edit_distance_cutoff): New function. - (selftest::test_edit_distance_unit_test_oneway): Rename to... - (selftest::test_get_edit_distance_one_way): ...this. - (selftest::test_get_edit_distance_unit): Rename to... - (selftest::test_get_edit_distance_both_ways): ...this. - (selftest::test_edit_distances): Move tests to this new function, - and test some more pairs of strings. Update for above renaming. - (selftest::get_old_cutoff): New function. - (selftest::test_get_edit_distance_cutoff): New function. - (selftest::assert_suggested_for): New function. - (ASSERT_SUGGESTED_FOR): New macro. - (selftest::assert_not_suggested_for): New function. - (ASSERT_NOT_SUGGESTED_FOR): New macro. - (selftest::test_suggestions): New function. - (selftest::spellcheck_c_tests): Move test_get_edit_distance_unit - tests to selftest::test_edit_distances and call it. Add calls to - selftest::test_get_edit_distance_cutoff and - selftest::test_suggestions. - * spellcheck.h (get_edit_distance_cutoff): New function declaration. - (best_match::consider): Replace hard-coded cutoff calculation with - a call to... - (best_match::get_cutoff): New declaration. - (best_match::get_best_meaningful_candidate): Likewise. - -2018-09-14 Bernd Edlinger - - * builtins.c (fold_builtin_strlen): Remove TODO comment. - -2018-09-14 Bernd Edlinger - - revert: - 2018-07-30 Bernd Edlinger - - * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL - terminated string literal. - -2018-09-14 Martin Sebor - - * builtins.c (unterminated_array): Handle ARRAY_REF. - (expand_builtin_stpcpy_1): Detect unterminated char arrays. - * builtins.h (unterminated_array): Declare extern. - * gimple-fold.c (gimple_fold_builtin_stpcpy): Detect unterminated - arrays. - (gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed - calls. - -2018-09-14 Martin Sebor - Jeff Law - - * builtins.c (unterminated_array): New. - (expand_builtin_strcpy): Adjust. - (expand_builtin_strcpy_args): Detect unterminated arrays. - * gimple-fold.c (get_maxval_strlen): Add argument. Detect - unterminated arrays. - * gimple-fold.h (get_maxval_strlen): Add argument. - (gimple_fold_builtin_strcpy): Detec unterminated arrays. - - * gimple-fold.c (get_range_strlen): Add argument. - (get_maxval_strlen): Adjust. - * gimple-fold.h (get_range_strlen): Add argument. - -2018-09-14 Wei Xiao - - * config/i386/movdirintrin.h: Fix copyright year. - -2018-09-14 Uros Bizjak - - * reg-stack.c: Include regs.h. - (replace_reg): Assert that mode is MODE_FLOAT or MODE_COMPLEX_FLOAT. - (emit_pop_insn): Default pop insn mode to the reg_raw_mode of - FIRST_STACK_REG, not DFmode. - (emit_swap_insn): Default swap insn mode to the reg_raw_mode of - FIRST_STACK_REG, not XFmode. Explicitly construct swap RTX. - (change stack): Default register mode to the reg_raw_mode of - FIRST_STACK_REG, not DFmode. - * config/i386/i386.md (*swap): Remove insn pattern. - (*swapxf): Rename from swapxf. - -2018-09-14 Carl Love - - * config/rs6000/emmintrin.h: Add _MM_SHUFFLE2. - * config/rs6000/xmmintrin.h: Add _MM_SHUFFLE. - -2018-09-14 Segher Boessenkool - - PR target/87224 - * config/rs6000/rs6000.md (*mov_hardfloat64): Add Z to the Y - alternatives. - -2018-09-14 Sam Tebbs - - PR target/85628 - * config/aarch64/aarch64.md (*aarch64_bfxilsi_uxtw): Define. - -2018-09-14 Jason Merrill - - Fix --enable-gather-detailed-mem-stats. - * hash-table.c (hash_table_usage): Change from variable to function. - * hash-table.h: Adjust. - * Makefile.in: Add missing dependencies on hash-table.h. - -2018-09-14 Kyrylo Tkachov - - PR tree-optimization/87259 - PR lto/87283 - (pass_cse_reciprocals::execute): Run optimize_recip_sqrt after - execute_cse_reciprocals_1 has tried transforming. - -2018-09-14 Aldy Hernandez - - * tree-vrp.c (extract_range_from_binary_expr_1): Normalize - VR_VARYING for PLUS/MINUS_EXPR. - -2018-09-14 Ilya Leoshkevich - - * config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve - formatting. - -2018-09-14 Richard Biener - - PR middle-end/63155 - * tree-ssa-coalesce.c (ssa_conflicts_merge): Remove conflict - bits for the merged partition. - -2018-09-13 Martin Sebor - Bernd Edlinger - - * builtins.h (c_srlen): Add argument. - * builtins.c (warn_string_no_nul): New function. - (c_strlen): Add argument and use it. Update recursive calls. - Pass DECL argument to string_constant to get info on non - terminated strings. Update *NONSTR as needed. - (fold_builtin_strlen): Add argument to calls to c_strlen. - Warn for unterminated arrays. - (warn_string_no_null): Add prototype. - * expr.c (string_constant): Update arguments. Update recursive - calls appropriately. Detect missing NUL terminator and outermost - declaration its missing in. - Improve checks for arrays with nonzero lower bound or elements - that are not a single byte. Simplify offset computation. - Simplify checks for non-NUL terminated strings. - * gimple-fold.c (get_range_strlen): Add argument to c_strlen call. - * gimple-ssa-sprintf.c (get_string_length): Remove unnecessary code. - -2018-09-13 Bernd Edlinger - - * builtins.c (c_strlen): Handle not zero terminated STRING_CSTs - correctly. - * fold-const.c (c_getstr): Fix function comment. Remove unused third - argument. Fix range checks. - * fold-const.h (c_getstr): Adjust protoype. - * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid folding when - string is constant but contains no NUL byte. - - * expr.c (string_constant): Adjust function comment. - Remove bogus check for zero termination. - - * fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE. - - * varasm.c (compare_constant): Compare type size of STRING_CSTs. - (get_constant_size): Don't make STRING_CSTs larger than they are. - (check_string_literal): New check function for STRING_CSTs. - (output_constant): Use it. - -2018-09-13 Eric Botcazou - - PR target/86812 - * config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define. - -2018-09-13 Richard Biener - - PR tree-optimization/87263 - * tree-ssa-sccvn.c (visit_phi): Revert some earlier changes. - (struct unwind_state): Add max_rpo field. - (do_rpo_vn): Allow up-to-date loop state to be used when not iterating. - Compute max_rpo, the max RPO number a block can be backwards reached - from. Re-write non-iterating mode to a RPO ordered worklist approach, - separating it from the iterating mode. - -2018-09-13 Vlad Lazar - - * haifa-sched.c (rank_for_schedule): Schedule by INSN_COST. - (rfs_decision): New scheduling decision. - -2018-09-13 Richard Biener - - PR bootstrap/87134 - * tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert. - (vn_nary_op_insert_pieces_predicated): Do not write useless - valid_dominated_by_p entry outside of the allocated storage. - -2018-09-13 Omar Sandoval - Tom de Vries - - PR debug/86985 - * dwarf2out.c (is_c): New function. - (add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays. - -2018-09-13 Sam Tebbs - - PR target/85628 - * config/aarch64/aarch64.md (*aarch64_bfxil): - Define. - * config/aarch64/constraints.md (Ulc): Define. - * config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p): - Define. - * config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p): - New function. - -2018-09-13 Vlad Lazar - - * config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define. - * config/aarch64/aarch64.c (aarch64_expand_prologue): Remove - aarch64_layout_frame call. - (aarch64_expand_epilogue): Likewise. - (aarch64_initial_elimination_offset): Likewise. - (aarch64_get_separate_components): Likewise. - (aarch64_use_return_insn_p): Likewise. - (aarch64_layout_frame): Remove unneeded check. - -2018-09-13 Jakub Jelinek - - * configure.ac: Only append - " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to - gcc_config_arguments if it was never reconfigured or last reconfigure - was with different arguments. - * configure: Regenerated. - -2018-09-13 Jakub Jelinek - Kyrylo Tkachov - - PR middle-end/87290 - * expr.c (maybe_optimize_pow2p_mod_cmp): New function. - (maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1. - -2018-09-13 Jakub Jelinek - - PR tree-optimization/87287 - * fold-const.c (fold_binary_loc) : Move signed modulo - X % C == 0 to X % (unsigned) C == 0 optimization to ... - * match.pd (X % C == 0): ... here. New optimization. - -2018-09-12 Jakub Jelinek - - PR middle-end/82853 - * expr.h (maybe_optimize_mod_cmp): Declare. - * expr.c (mod_inv): New function. - (maybe_optimize_mod_cmp): New function. - (do_store_flag): Use it. - * cfgexpand.c (expand_gimple_cond): Likewise. - -2018-09-09 Cesar Philippidis - Julian Brown - - PR middle-end/86336 - * gimplify.c (gimplify_scan_omp_clauses): Set - target_firstprivatize_array_bases in OpenACC parallel and kernels - region contexts. Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from - OpenACC data regions. - -2018-09-12 Uros Bizjak - - * config/i386/i386.md (sqrt_extendxf3_i387): Remove. - (sqrt2): Extend operand 1 to XFmode and generate sqrtxf3 insn. - -2018-09-12 Richard Biener - - PR tree-optimization/87280 - * tree-ssa-sccvn.c (process_bb): Handle the case of executable - edge but unreachable target. - (do_rpo_vn): For conservatively handling a PHI only mark - the backedge executable but not the block reachable. - -2018-09-12 Richard Biener - - PR tree-optimization/87266 - * tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet - visited blocks. - -2018-09-12 Andreas Krebbel - - * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New - constants. - ("trunc2") - ("trunc2") - ("extend2") - ("extend2"): Set proper rounding mode - according to the target operand type. - -2018-09-12 Jakub Jelinek - Andreas Krebbel - - PR tree-optimization/86844 - * gimple-ssa-store-merging.c - (imm_store_chain_info::coalesce_immediate): For overlapping stores, if - there are any overlapping stores in between them, make sure they are - also coalesced or we give up completely. - -2018-09-12 Jakub Jelinek - - PR middle-end/87248 - * fold-const.c (fold_ternary_loc) : Verify also that - BIT_AND_EXPR's second operand is a power of two. Formatting fix. - -2018-09-12 Tom de Vries - - * common.opt (gdescribe-dies): Add option. - * dwarf2out.c (add_name_and_src_coords_attributes): Add description - attribute for artifical and nameless decls. - (dwarf2out_register_external_die): Add description attribute to - external reference die. - (add_desc_attribute): New functions. - (gen_subprogram_die): Add description attribute to - DW_TAG_call_site_parameter. - * tree-pretty-print.c (print_generic_expr_to_str): New function. - * tree-pretty-print.h (print_generic_expr_to_str): Declare. - * doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and - -gno-describe-dies. - (@item -gdescribe-dies): Add. - -2018-09-12 Aldy Hernandez - - * tree-vrp.c (vrp_shift_undefined_p): Remove. - (extract_range_from_binary_expr_1: Call - wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p. - * wide-int-range.h (wide_int_range_shift_undefined_p): Do not - depend on sign. - -2018-09-12 Aldy Hernandez - - * gimple-ssa-warn-alloca.c - (alloca_type_and_limit::alloca_type_and_limit): Initialize limit - field for ALLOCA_BOUND_*_LARGE. - -2018-09-11 Nathan Sidwell - - * gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'. - -2018-09-11 Uros Bizjak - - * reg-stack.c (subst_asm_stack_regs): Call replace_reg also - for clobbers. Remove obsolete comment. - -2018-09-11 Uros Bizjak - - * config/i386/i386.md (define_attr "type"): Remove mpxmov, mpxmk, - mpxchk, mpxld and mpxst types. - (define_attr length_immediate): Remove all processing of mpx types. - (define_attr prefix_0f): Ditto. - (define_attr memory): Ditto. - -2018-09-11 Uros Bizjak - - * config/i386/i386.md (fyl2x_extendxf3_i387): Remove. - (log2): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate logxf3 insn. - (log102): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate log10xf3 insn. - (log22): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate log2xf3 insn. - (fyl2xp1_extendxf3_i387): Remove. - (log1p2): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate log1pxf3 insn. - (fxtract_extendxf3_i387): Remove. - (logb2): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate logbxf3 insn. - (ilogb2): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate fxtractxf3_i387 insn. - (significand2): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate significandxf3 insn. - -2018-09-11 Nathan Sidwell - - * gcc.c (perror_with_name, pfatal_with_name): Delete. - (load_specs): Use fatal_error. - (DELETE_IF_ORDINARY, process_command): Use error. - (execute, run_attempt): Use fatal_error. - -2018-09-11 Andrew Stubbs - - * diagnostic-core.h (sorry_at): New prototype. - * diagnostic.c (sorry_at): New function. - -2018-09-11 Aldy Hernandez - - * tree-vrp.c (extract_range_from_binary_expr_1): Treat all divisions - by zero as VR_UNDEFINED. - -2018-09-10 Uros Bizjak - - * config/i386/i386.md (xf2): Rename from *xf2_i387. - (*_extendxf2_i387): Remove insn pattern. - (mode2): New expander. - (sincos_extendxf3_i387): Remove insn pattern. - (sincos -> sin, cos splitters): Remove splitter patterns. - (sincos3): Change operand 2 predicate to general_operand. - Extend operand 2 to XFmode and generate sincosxf3 insn. - (fptanxf4_i387): Change mode of operands 0 and 3 to SFmode. - Change operand 3 predicate to const1_operand. - (fptan_extendxf4_i387): Remove insn pattern. - (tanxf2): Update operands in the call to fptanxf4_i387. - (tan2): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate tanxf3 insn. - (atan2xf3): Rename from *fpatanxf3_i387. - (fpatan_extendxf3_i387): Remove insn pattern. - (atan2xf3): Remove expander. - (atan22): Change operand 1 predicate to general_operand. - Extend operand 1 to XFmode and generate atanxf3 insn. - -2018-09-10 Uros Bizjak - - * config/i386/i386.md (x87/SSE constant load splitter): Use - memory_operand instead of nonimmediate_operand for input operand - predicate. - -2018-09-09 Uros Bizjak - - * config/i386/i386.md (float partial SSE register stall splitter): Move - splitter near its instruction pattern. - (float_extend partial SSE register stall splitter): Ditto. - (float_truncate partial SSE register stall splitter): Ditto. - -2018-09-09 Hans-Peter Nilsson - - PR target/86794 - * config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine - to speculation_safe_value_not_needed. - - PR target/85666 - * config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size - non-CONST_INT rtx:es using assemble_integer_with_op ".byte". - (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't call - leaf_function_p, instead use has_hard_reg_initial_val. - -2018-09-09 Nathan Sidwell - - * gcc.h (pfatal_with_name): Don't declare here. - * gcc.c (pfatal_with_name): Make static. - -2018-09-09 Xianmiao Qu - - * config/csky/csky.md (*cskyv2_adddi3, *cskyv2_subdi3): Add - earlyclobber. - -2018-09-08 John David Anglin - - PR rtl-optimization/85458 - * sel-sched.c (sel_target_adjust_priority): Allow backend adjust - priority hook to reduce the priority of EXPR. - -2018-09-07 Uros Bizjak - - * config/i386/i386.md (float2) Enable - DImode for x87 on 32bit targets. Conditionally disable x87 modes - with X87_ENABLE_FLOAT. Remove preparation code. - (*float2): Rename from - *float2_mixed. Handle x87, SSE and mixed - math using "enabled" attribute. - (*floatdi2_i387): Rename from - *float2_i387. Handle only DImode and - enable for 32bit targets only. - (floatdi2_i387_with_xmm pre-reload splitter): New - splitter. - (floatdi2_i387_with_xmm): Use register_operand - as operand 1 predicate. Rewrite as define_insn_and_split. - (floatdi2_i387_with_xmm memory input splitter): Remove. - -2018-09-06 Uros Bizjak - - * reg-stack.c (get_true_reg) : Reorder - to fallthru to FLOAT case. - -2018-09-06 Will Schmidt - - PR target/86731 - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Update logic - around folding of vec_sl to handle out of range shift values. - -2018-09-06 Uros Bizjak - - * config/i386/i386.md (fix_trunc_fisttp_i387_1): Remove. - Update callers to gen_fix_trunc_i387_fisttp - (fix_trunc_i387_fisttp): Change operand 0 predicate to - nonimmediate_operand. - (fix_trunc_i387_fisttp_with_temp): Remove insn pattern - and corresponding splitters. - (*fix_trunc_i387_1): Always expand with fix_trunc_i387. - (fix_truncdi_i387): Change operand 0 predicate to nonimmediate_operand. - (fix_truncdi_i387_with_temp): Remove insn pattern - and corresponding splitters. - (fix_trunc_i387): Change operand 0 predicate to - nonimmediate_operand. - (fix_trunc_i387_with_temp): Remove insn pattern - and corresponding splitters. - (*fistdi2_1): Remove. - (fistdi2): Ditto. - (fistdi2_with_temp): Remove insn pattern and corresponding splitters. - (lrintxfdi2): Remove expander. Reimplement as define_insn. - (*fist2_1): Remove. - (fist2): Ditto. - (fist2_with_temp): Remove insn pattern and corresponding - splitters. - (lrintxf2): Remove expander. Reimplement as define_insn. - (*fist2__1): Always expand with fist2_. - (fistdi2_): Change operand 0 predicate to - nonimmediate_operand. - (fistdi2__with_temp): Remove insn pattern - and corresponding splitters. - (fist2_): Change operand 0 predicate to - nonimmediate_operand. - (fist2__with_temp): Remove insn pattern - and corresponding splitters. - - (*fixuns_truncsi2_avx512f_zext): Depend on TARGET_SSE_MATH. - -2018-09-06 Bernd Edlinger - - * varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of - the init value. - -2018-09-06 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for - early gimple folding of vec_splat(). - * tree-vect-generic.c: Remove static from tree_vec_extract() definition. - * gimple-fold.h: Add an extern define for tree_vec_extract(). - -2018-09-06 Will Schmidt - - * config/rs6000/rs6000.c (fold_mergehl_helper): Add types_compatible_p - wrappers around TREE_TYPE comparisons. - -2018-09-06 Ilya Leoshkevich - - PR target/80080 - * config/s390/predicates.md: Add nonsym_memory_operand. - * config/s390/s390.c (s390_legitimize_cs_operand): If operand - contains a SYMBOL_REF, load it into an intermediate pseudo. - (s390_emit_compare_and_swap): Legitimize operand. - * config/s390/s390.md: Use the new nonsym_memory_operand - with UNSPECV_CAS patterns. - -2018-09-06 Ilya Leoshkevich - - PR target/80080 - * config/s390/s390-passes.def: New file. - * config/s390/s390-protos.h (class rtl_opt_pass): Add forward - declaration. - (make_pass_s390_early_mach): Add declaration. - * config/s390/s390.c (make_pass_s390_early_mach): - (s390_option_override): Remove dynamic registration. - * config/s390/t-s390: Add s390-passes.def. - -2018-09-06 Ilya Leoshkevich - - * config/s390/s390.c (s390_decompose_constant_pool_ref): - Remove UNSPEC_LTREL_BASE check. - (annotate_constant_pool_refs): Likewise. - (find_constant_pool_ref): Likewise. - (find_ltrel_base): Removed. - (replace_ltrel_base): Removed. - (s390_mainpool_finish): Remove replace_ltrel_base call. - (s390_chunkify_start): Remove pending LTREL_BASE logic. - (s390_chunkify_finish): Remove replace_ltrel_base call. - * config/s390/s390.md: Remove UNSPEC_LTREL_BASE. - -2018-09-06 Hans-Peter Nilsson - - PR target/86779 - * config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine - to speculation_safe_value_not_needed. - -2018-09-05 Cesar Philippidis - Bernd Schmidt - - * config/nvptx/nvptx-opts.h: New file. - * config/nvptx/nvptx.c (nvptx_file_start): Print the correct .target. - * config/nvptx/nvptx.h: Include "nvptx-opts.h". - (ASM_SPEC): Define. - (TARGET_SM35): New macro. - * config/nvptx/nvptx.md (atomic_fetch_): Enable with the - correct predicate. - * config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its - values. - (misa=): New option. - * doc/invoke.texi (Nvidia PTX Options): Document -misa. - -2018-09-05 Uros Bizjak - - * config/i386/i386.md (truncdfsf2): Remove expander. - (truncdfsf2_with_temp): Ditto. - (truncxf2): Ditto. - (*truncdfsf_fast_mixed): Remove insn pattern. - (*truncdfsf_fast_i387): Ditto. - (*truncdfsf_mixed): Ditto. - (*truncdfsf_i387): Ditto. - (*truncdfsf2_i387_1): Ditto. - (*truncxfsf2_mixed): Ditto. - (*truncxfdf2_mixed): Ditto. - (*truncxf2_i387_noop): Ditto. Update callers - to call gen_truncxf2 instead. - (*truncxf2_i387): Remove. - (reg->reg splitters): Remove splitter pattern. - (reg->mem splitters): Ditto. - - (truncdfsf2): New insn pattern. - (truncxf2): Ditto. - -2018-09-05 Kyrylo Tkachov - - * tree-ssa-math-opts.c (is_mult_by): New function. - (is_square_of): Use the above. - (optimize_recip_sqrt): New function. - (pass_cse_reciprocals::execute): Use the above. - -2018-09-05 Richard Biener - - PR bootstrap/87134 - * tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure - to zero-init the emplaced vec. - -2018-09-05 Martin Liska - - PR tree-optimization/87205 - * tree-switch-conversion.c (pass_lower_switch::execute): - Group cases for switch statements. - -2018-09-05 Richard Biener - - PR tree-optimization/87217 - * tree-ssa-sccvn.c (vuse_valueize): New. - (vn_reference_lookup_pieces): Use it. - (vn_reference_lookup): Likewise. - -2018-09-05 Nathan Sidwell - - PR c++/87137 - * stor-layout.c (place_field): Scan forwards to check last - bitfield when ms_bitfield_placement is in effect. - -2018-09-05 Richard Biener - - PR bootstrap/87225 - * tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus - return. - -2018-09-05 Siddhesh Poyarekar - Kugan Vivekanandarajah - - * config/aarch64/falkor-tag-collision-avoidance.c: New file. - * config.gcc (extra_objs): Build it. - * config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o): - Likewise. - * config/aarch64/aarch64-passes.def - (pass_tag_collision_avoidance): New pass. - * config/aarch64/aarch64.c (qdf24xx_tunings): Add - AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags. - (aarch64_classify_address): Remove static qualifier. - (aarch64_address_info, aarch64_address_type): Move to... - * config/aarch64/aarch64-protos.h: ... here. - (make_pass_tag_collision_avoidance): New function. - * config/aarch64/aarch64-tuning-flags.def (rename_load_regs): - New tuning flag. - -2018-09-05 Martin Liska - - * doc/gcov.texi: Update documentation of humar - readable mode. - * gcov.c (format_count): Print one decimal place, it provides - more fine number of situations like '1G' vs. '1.4G'. - -2018-09-05 Martin Liska - - PR target/87164 - * config/rs6000/rs6000.opt: Mark the option as Deprecated. - * optc-gen.awk: Allow 'Var' for Deprecated options in order - to generate a MASK value. - -2018-09-04 H.J. Lu - - PR debug/86593 - * dwarf2out.c (based_loc_descr): Allow hard frame pointer even - if frame pointer isn't used. - (compute_frame_pointer_to_fb_displacement): Likewise. - -2018-09-04 Jakub Jelinek - - PR target/87198 - * common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET, - OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use - OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE. - (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET - and OPTION_MASK_ISA_XSAVEC_UNSET. - -2018-09-04 Max Filippov - - * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and - XOR operations in NAND case. - -2018-09-04 Aldy Hernandez - - * wide-int-range.cc (wide_int_range_convert): New. - * wide-int-range.h (wide_int_range_convert): New. - * tree-vrp.c (extract_range_from_unary_expr): Abstract wide int - code into wide_int_range_convert. - (extract_range_into_wide_ints): Do not munge anti range constants - into the entire domain. Just return the range back. - -2018-09-04 Martin Liska - - * genmatch.c (output_line_directive): Add new argument - fnargs. - (dt_simplify::gen_1): Encapsulate dump within __builtin_expect. - -2018-09-04 Jonathan Wakely - - * doc/invoke.texi (Option Summary): Add whitespace. - - * doc/invoke.texi (Option Summary): Add -Waligned-new. - -2018-09-04 Richard Biener - - PR tree-optimization/87211 - * tree-ssa-sccvn.c (visit_phi): When value-numbering to a - backedge value we're supposed to treat as VARYING also number - the PHI to VARYING in case it got a different value-number already. - -2018-09-04 Aldy Hernandez - - * tree-vrp.c (vrp_can_optimize_bit_op): Remove. - (extract_range_from_binary_expr_1): Do not call - vrp_can_optimize_bit_op. - * wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make - static. - (wide_int_range_get_mask_and_bounds): New. - (wide_int_range_optimize_bit_op): New. - (wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op. - (wide_int_range_bit_and): Same. - * wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove. - (wide_int_range_optimize_bit_op): New. - (wide_int_range_get_mask_and_bounds): New. - -2018-09-04 Richard Biener - - PR tree-optimization/87176 - * tree-ssa-sccvn.c (visit_phi): Remove redundant allsame - variable. When value-numbering a virtual PHI node make sure - to not value-number to the backedge value. - -2018-09-04 Jonathan Wakely - - * doc/extend.texi (Long Long, Hex Floats): Document support for - long long and hex floats in more recent versions of ISO C++. - -2018-09-03 Richard Biener - - PR tree-optimization/87177 - * tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep - cleanup. - -2018-09-03 Alexander Monakov - - * bb-reorder.c (edge_order): Convert to C-qsort-style - tri-state comparator. - (reorder_basic_blocks_simple): Change std::stable_sort to - gcc_stablesort. - -2018-09-03 Alexander Monakov - - * tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style - tri-state comparator. - (fuse_memset_builtins): Change std::stable_sort to gcc_stablesort. - -2018-09-03 Alexander Monakov - - * sort.cc (struct sort_ctx): New field 'nlim'. Use it... - (mergesort): ... here as maximum count for using netsort. - (gcc_qsort): Set nlim to 3 if stable sort is requested. - (gcc_stablesort): New. - * system.h (gcc_stablesort): Declare. - -2018-09-03 Alexander Monakov - - * sort.cc (gcc_qsort) [CHECKING_P]: Call qsort_chk. - * system.h (qsort): Always redirect to gcc_qsort. Update comment. - * vec.c (qsort_chk): Do not call gcc_qsort. Update comment. - -2018-09-03 Segher Boessenkool - - * config/rs6000/rs6000.md (*mov_hardfloat32): Remove %U from the - lxsdx and stxsdx alternatives. - (*mov_hardfloat64): Ditto. - * config/rs6000/vsx.md (*vsx_extract__store): Ditto. - -2018-09-03 Richard Biener - - PR tree-optimization/87200 - * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Valueize a - simplify result. - -2018-09-03 Martin Liska - - PR tree-optimization/87201 - * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes): - Fix parenthesis in an expression. - -2018-09-03 Richard Biener - - PR tree-optimization/87197 - * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Mark the new def - visited. CSE the VN_INFO hashtable lookup. - - PR tree-optimization/87169 - * tree-ssa-sccvn.c (do_rpo_vn): When marking loops for not - iterating make sure there's no extra backedges from irreducible - regions feeding the header. Mark the destination block - executable. - -2018-09-03 Martin Liska - - PR driver/83193 - * common/common-target.def: Add TARGET_GET_VALID_OPTION_VALUES. - * common/common-targhooks.c (default_get_valid_option_values): - New function. - * common/common-targhooks.h (default_get_valid_option_values): - Likewise. - * common/config/i386/i386-common.c: Move processor_target_table - from i386.c. - (ix86_get_valid_option_values): New function. - (TARGET_GET_VALID_OPTION_VALUES): New macro. - * config/i386/i386.c (struct ptt): Move to i386-common.c. - (PTA_*): Move all defined masks into i386-common.c. - (ix86_function_specific_restore): Use new processor_cost_table. - * config/i386/i386.h (struct ptt): Moved from i386.c. - (struct pta): Likewise. - * doc/tm.texi: Document new TARGET_GET_VALID_OPTION_VALUES. - * doc/tm.texi.in: Likewise. - * opt-suggestions.c (option_proposer::suggest_option): - Pass prefix to build_option_suggestions. - (option_proposer::get_completions): Likewise. - (option_proposer::build_option_suggestions): Use the new target - hook. - * opts.c (struct option_help_tuple): New struct. - (print_filtered_help): Use the new target hook. - -2018-09-03 Martin Liska - - PR middle-end/59521 - * predict.c (set_even_probabilities): Add likely_edges - argument and handle cases where we have precisely one - likely edge. - (combine_predictions_for_bb): Catch also likely_edges. - (tree_predict_by_opcode): Handle gswitch statements. - * tree-cfg.h (find_case_label_for_value): New declaration. - (find_taken_edge_switch_expr): Likewise. - * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes): - Find pivot in decision tree based on probabily, not by number of - nodes. - -2018-09-02 Gerald Pfeifer - - * doc/standards.texi (Standards): Update Objective-C reference. - -2018-09-01 Gerald Pfeifer - - * doc/install.texi (Prerequisites): Update link for MPC. - -2018-09-01 Michael Matz - - PR tree-optimization/87074 - * gimple-loop-jam.c (unroll_jam_possible_p): Check loop exit - PHIs for outer-loop uses. - -2018-09-01 Gerald Pfeifer - - * doc/generic.texi (OpenMP): Adjust link to openmp.org. - * doc/invoke.texi (C Dialect Options): Ditto. - -2018-09-01 Gerald Pfeifer - - * doc/install.texi (Prerequisites): Adjust link mpfr.org. - -2018-08-31 Richard Biener - - PR tree-optimization/87168 - * tree-ssa-sccvn.c (SSA_VAL): Add visited output parameter. - (rpo_elim::eliminate_avail): When OP was not visited it must - be available. - -2018-08-31 David Malcolm - - * tree-vrp.c (copy_value_range): Convert param "from" from - "value_range *" to "const value_range *". - (range_is_null): Likewise for param "vr". - (range_int_cst_p): Likewise. - (range_int_cst_singleton_p): Likewise. - (symbolic_range_p): Likewise. - (value_ranges_intersect_p): Likewise for both params. - (value_range_nonnegative_p): Likewise for param "vr". - (value_range_constant_singleton): Likewise. - (vrp_set_zero_nonzero_bits): Likewise for param "ar". - (extract_range_into_wide_ints): Likewise for param "vr". - (extract_range_from_multiplicative_op): Likewise for params "vr0" - and "vr1". - (vrp_can_optimize_bit_op): Likewise. - (extract_range_from_binary_expr_1): Likewise for params "vr0_" and - "vr1_". - (extract_range_from_unary_expr): Likewise. - (debug_value_range): Likewise for param "vr". - (value_range::dump): Add "const" qualifier. - (vrp_prop::check_array_ref): Convert local "vr" from - "value_range *" to "const value_range *". - (vrp_prop::check_mem_ref): Likewise. - (vrp_prop::visit_stmt): Likewise for local "old_vr". - (vrp_intersect_ranges_1): Likewise for param "vr_1". - (vrp_intersect_ranges): Likewise. - (simplify_stmt_for_jump_threading): Likewise for local "vr". - (vrp_prop::vrp_finalize): Likewise. - * tree-vrp.h (value_range::dump): Add "const" qualifier. - (vrp_intersect_ranges): Add "const" qualifier to params as above. - (extract_range_from_unary_expr): Likewise. - (value_range_constant_singleton): Likewise. - (symbolic_range_p): Likewise. - (copy_value_range): Likewise. - (extract_range_from_binary_expr_1): Likewise. - (range_int_cst_p): Likewise. - (vrp_set_zero_nonzero_bits): Likewise. - (range_int_cst_singleton_p): Likewise. - -2018-08-31 Vlad Lazar - - * config/aarch64/arm_neon.h (vabsd_s64): New. - (vnegd_s64): Likewise. - -2018-08-31 Martin Jambor - - * ipa-cp.c (estimate_local_effects): Replace wrong MAX with MIN. - -2018-08-31 Martin Liska - - * ipa-icf.c (sem_item::add_type): Use - sem_item::m_type_hash_cache. - * ipa-icf.h: Move the cache from sem_item_optimizer - to sem_item. - -2018-08-31 Nathan Sidwell - - * doc/extend.texi (Backwards Compatibility): Remove implicit - extern C leeway of () being (...). - -2018-08-31 Kyrylo Tkachov - - * ipa-inline.c (can_inline_edge_by_limits_p): Fix typos in comment. - -2018-08-31 Segher Boessenkool - - PR target/86684 - PR target/87149 - * config/rs6000/rs6000.md (lrounddi2): Gate on TARGET_FPRND. - -2018-08-31 Jakub Jelinek - - PR middle-end/87138 - * expmed.c (expand_mult_const): Use immed_wide_int_const instead of - gen_int_mode. Formatting fixes. - -2018-08-30 Sandra Loosemore - - * target.def (custom_function_descriptors): Improve documentation. - * doc/tm.texi.in (Trampolines): Expand discussion of function - descriptors and move TARGET_CUSTOM_FUNCTION_DESCRIPTORS to the - beginning of the section. - * doc/tm.texi: Regenerated. - -2018-08-30 Jose E. Marchesi - - * cfg.h (class auto_edge_flag): Spell out the template-id of the - base class in the initializer list. This is a workaround for - building with older GCC. - (class auto_bb_flag): Likewise. - -2018-08-30 Aaron Sawdey - - * config/rs6000/altivec.md (altivec_eq): Remove star. - (altivec_vcmpequ_p): Remove star. - * config/rs6000/rs6000-string.c (do_load_for_compare): Support - vector load modes. - (expand_strncmp_vec_sequence): New function. - (emit_final_str_compare_vec): New function. - (expand_strn_compare): Add support for vector strncmp. - * config/rs6000/rs6000.opt (-mstring-compare-inline-limit): Change - length specification to bytes. - * config/rs6000/vsx.md (vsx_ld_elemrev_v16qi_internal): Remove star. - (vcmpnezb_p): New pattern. - * doc/invoke.texi (RS/6000 and PowerPC Options): Update documentation - for option -mstring-compare-inline-limit. - -2018-08-30 Thiago Macieira - - * config/i386/i386.c (PTA_WESTMERE): Remove PTA_AES. - (PTA_SKYLAKE): Add PTA_AES. - (PTA_GOLDMONT): Likewise. - -2018-08-29 Jan Hubicka - - PR lto/86517 - * lto-opts.c (lto_write_options): Always stream PIC/PIE mode. - * lto-wrapper.c (merge_and_complain): Fix merging of PIC/PIE. - -2018-08-29 Jan Hubicka - - * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not follow - TYPE_STUB_DECL. - (hash_tree): Do not visit TYPE_STUB_DECL. - * tree-streamer-out.c (write_ts_type_common_tree_pointers): Do not - stream TYPE_STUB_DECL. - * tree-streamer-in.c (lto_input_ts_type_common_tree_pointers): Likewise. - * ipa-utils.h (type_with_linkage_p): Do not rely on TYPE_STUB_DECL - after free_lang_data. - (type_in_anonymous_namespace_p): Likewise. - -2018-08-29 Jan Hubicka - - * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary - comment that it has to be even number. - (class sreal): Change m_sig type to int32_t. - * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use - int64_t for temporary calculations. - (sreal_verify_basics): Drop one bit from minimum and maximum. - -2018-08-30 Richard Biener - - PR tree-optimization/87147 - * tree-ssa-sccvn.c (SSA_VISITED): New function. - (visit_phi): When the degenerate result is from the backedge and - we didn't visit its definition yet drop to VARYING. - (do_rpo_vn): Properly mark blocks with incoming backedges as executable. - -2018-08-29 Jan Hubicka - - * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not walk - DECL_VINDEX. - (hash_tree): Likewise. - -2018-08-29 Jan Hubicka - - * tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO - and TYPE_NEXT_REF_TO. - -2018-08-29 Jan Hubicka - - * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary - comment that it has to be even number. - (class sreal): Change m_sig type to int32_t. - * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use - int64_t for temporary calculations. - (sreal_verify_basics): Drop one bit from minimum and maximum. - -2018-08-30 Tamar Christina - - * config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max. - -2018-08-30 Vlad Lazar - - PR middle-end/86995 - * expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add - if to_add is negative. - -2018-08-29 Bernd Edlinger - - PR middle-end/87053 - * builtins.c (c_strlen): Improve range checks. - -2018-08-29 Martin Sebor - Jeff Law - - PR tree-optimization/86714 - PR tree-optimization/86711 - * builtins.c (c_strlen): Add arguments to call to string_constant. - * expr.c (string_constant): Add argument. Detect missing nul - terminator and outermost declaration it's missing in. - * expr.h (string_constant): Add argument. - * fold-const.c (read_from_constant_string): Add arguments to call to - string_constant. - (c_getstr): Likewise. - * tree-ssa-forwprop.c (simplify_builtin_call): Likewise. - to string_constant. - * tree-ssa-strlen.c (get_stridx): Likewise. - -2018-08-29 Jan Hubicka - - * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): - Do not stream DECL_VINDEX. - * tree-streamer-out.c (write_ts_function_decl_tree_pointers): Likewise. - * tree.c (free_lang_data_in_decl): Clear DECL_VINDEX. - (decl_function_context): Use DECL_VIRTUAL_P rather than DECL_VINDEX. - -2018-08-29 Richard Biener - - * tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited - virtual operands that are not default defs to honor region - boundaries. - (rpo_vn_valueize): Remove ineffective code here. - -2018-08-29 Richard Biener - - PR tree-optimization/87132 - * tree-ssa-alias.c (get_continuation_for_phi): Do not translate - when skipping defs reachable over backedges. - -2018-08-29 Richard Biener - - * tree-core.h: Document use of deprecated_flag in SSA_NAME. - * tree.h (SSA_NAME_POINTS_TO_READONLY_MEMORY): Define. - * tree-into-ssa.c (pass_build_ssa::execute): Initialize - function parameters SSA_NAME_POINTS_TO_READONLY_MEMORY from fnspec. - * tree-ssa-sccvn.c (const_parms, init_const_parms): Remove. - (vn_reference_lookup_3): Remove use of const_parms. - (free_rpo_vn): Do not free const_parms. - (do_rpo_vn): Do not call init_const_parms. - * tree-ssa-alias.c (refs_may_alias_p_1): Honor - SSA_NAME_POINTS_TO_READONLY_MEMORY. - (call_may_clobber_ref_p_1): Likewise. - -2018-08-29 Alexander Monakov - - PR other/86726 - * invoke.texi (Optimization Options): List -ftree-scev-cprop. - (-O): Ditto. - (-ftree-scev-cprop): Document. - -2018-08-29 Jan Hubicka - - * sreal.h (normalize, normalize_up, normalize_down): Add new_sig/new_exp - parameters. - (sreal constructor): Update. - * sreal.c (sreal:operator+, sreal:operator-, sreal:operator*, - sreal:operator/): Update. - -2018-08-29 Martin Liska - - * tree-switch-conversion.c (switch_conversion::expand): - Strenghten assumption about gswitch statements. - -2018-08-29 Richard Biener - - PR tree-optimization/87117 - * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only - re-value-number released SSA VDEFs. - -2018-08-29 Richard Biener - - PR tree-optimization/87126 - * tree-ssa-sccvn.c (vn_reference_insert): Remove assert. - -2018-08-28 Jim Wilson - - * config/riscv/pic.md: Rewrite. - * config/riscv/riscv.c (riscv_address_insns): Return cost of 3 for - invalid address. - * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Delete. - (SOFTF, default_load, softload, softstore): New. - -2018-08-28 Jeff Law - - * fold-const.c (fold_binary_loc): Remove recently added assert. - -2018-08-28 Joern Rennecke - - * genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED - to OP parmeter of generated function. - -2018-08-28 MCC CS - - PR tree-optimization/87009 - * match.pd: Add boolean optimizations. - -2018-08-28 Martin Sebor - - PR middle-end/86631 - * calls.c (alloc_max_size): Treat HOST_WIDE_INT special. - * gimple-ssa-warn-alloca.c (adjusted_warn_limit): New function. - (pass_walloca::gate): Use it. - (alloca_call_type): Same. - (pass_walloca::execute): Same. - * stor-layout.c (layout_decl): Treat HOST_WIDE_INT special. - -2018-08-28 David Malcolm - - * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): Change version check on - GCC_VERSION for usage of "__gcc_dump_printf__" format from - >= 3005 to >= 9000. - -2018-08-28 Richard Biener - - PR tree-optimization/87124 - * tree-ssa-sccvn.c (vn_lookup_simplify_result): Guard against - constants before looking up avail. - -2018-08-28 Jakub Jelinek - - PR middle-end/87099 - * calls.c (maybe_warn_nonstring_arg): Punt early if - warn_stringop_overflow is zero. Don't call get_range_strlen - on 3rd argument, keep iterating until lenrng[1] is INTEGER_CST. - Swap comparison operands to have constants on rhs. Only use - lenrng[1] if non-NULL and INTEGER_CST. Don't uselessly - increment lenrng[0]. - -2018-08-28 Richard Sandiford - - * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Fix unguarded - use of tree_to_shwi. Remove duplicated test for the size being - a whole number of bytes. - -2018-08-28 Richard Biener - - PR tree-optimization/87117 - * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): - Handle removed stmt without LHS (GIMPLE_NOP). - -2018-08-28 Richard Biener - - PR tree-optimization/87117 - * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude - void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P. - -2018-08-28 Richard Biener - - PR tree-optimization/87117 - * tree-ssa-pre.c (compute_avail): Do not make expressions - with predicated values available. - (get_expr_value_id): Assert we do not run into predicated value - expressions. - -2018-08-28 Richard Biener - - PR tree-optimization/87117 - * tree-ssa-operands.c (add_stmt_operand): STRING_CST may - get virtual operands. - (get_expr_operands): Handle STRING_CST like other decls. - -2018-08-28 Martin Liska - - * tree.h: Update documentation of fndecl_built_in_p - functions. - - -2018-08-27 Jeff Law - PR tree-optimization/87110 - * tree-ssa-dse.c (compute_trims): Handle non-constant - TYPE_SIZE_UNIT. - -2018-08-27 Martin Sebor - - PR tree-optimization/86914 - * tree-ssa-strlen.c (maybe_set_strlen_range): Avoid MEM_REF. - -2018-08-27 Martin Sebor - - PR tree-optimization/87112 - * builtins.c (expand_builtin_strnlen): Convert c_strlen result to - the type of the bound argument. - -2018-08-27 Jeff Law - - * tree-ssa-dse.c (compute_trims): Handle case where the reference's - type does not have a TYPE_SIZE_UNIT. - -2018-08-27 Steve Ellcey - - * config/aarch64/aarch64-speculation.cc: Replace include of cfg.h - with include of backend.h. - -2018-08-27 Richard Biener - - PR tree-optimization/86927 - * tree-vect-loop.c (vect_create_epilog_for_reduction): Properly - use const cond reduction code. - -2018-08-27 Alexander Monakov - - PR tree-optimization/85758 - * match.pd ((X & Y) ^ Y): Add :s qualifier to inner expression. - -2018-08-27 David Malcolm - - PR c++/87091 - * diagnostic-show-locus.c (class layout_range): Update for - conversion of show_caret_p to a tri-state. - (layout_range::layout_range): Likewise. - (make_range): Likewise. - (layout::maybe_add_location_range): Likewise. - (layout::should_print_annotation_line_p): Don't show annotation - lines for ranges that are SHOW_LINES_WITHOUT_RANGE. - (layout::get_state_at_point): Update for conversion of - show_caret_p to a tri-state. Bail out early for - SHOW_LINES_WITHOUT_RANGE, so that such ranges don't affect - underlining or source colorization. - (gcc_rich_location::add_location_if_nearby): Update for conversion - of show_caret_p to a tri-state. - (selftest::test_one_liner_multiple_carets_and_ranges): Likewise. - (selftest::test_one_liner_fixit_replace_equal_secondary_range): - Likewise. - (selftest::test_one_liner_labels): Likewise. - * gcc-rich-location.c (gcc_rich_location::add_expr): Update for - conversion of show_caret_p to a tri-state. - * pretty-print.c (text_info::set_location): Likewise. - * pretty-print.h (text_info::set_location): Likewise. - * substring-locations.c (format_warning_n_va): Likewise. - * tree-diagnostic.c (default_tree_printer): Likewise. - * tree-pretty-print.c (newline_and_indent): Likewise. - -2018-08-27 David Malcolm - - PR c++/87091 - * diagnostic-show-locus.c (get_line_span_for_fixit_hint): Show the - line above for line-insertion fix-it hints. - (selftest::test_fixit_insert_containing_newline): Update the - expected results, and add a test with line-numbering enabled. - -2018-08-27 Martin Liska - - PR sanitizer/86962 - * sanopt.c (sanitize_rewrite_addressable_params): Ignore - params with DECL_HAS_VALUE_EXPR_P. - -2018-08-27 Martin Liska - - * config/i386/i386.c (ix86_expand_set_or_movmem): Dump - selected expansion strategy. - -2018-08-27 Martin Liska - - * builtins.h (is_builtin_fn): Remove and fndecl_built_in_p. - * builtins.c (is_builtin_fn): Likewise. - * attribs.c (diag_attr_exclusions): Use new function - fndecl_built_in_p and remove check for FUNCTION_DECL if - possible. - (builtin_mathfn_code): Likewise. - (fold_builtin_expect): Likewise. - (fold_call_expr): Likewise. - (fold_builtin_call_array): Likewise. - (fold_call_stmt): Likewise. - (set_builtin_user_assembler_name): Likewise. - (is_simple_builtin): Likewise. - * calls.c (gimple_alloca_call_p): Likewise. - (maybe_warn_nonstring_arg): Likewise. - * cfgexpand.c (expand_call_stmt): Likewise. - * cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise. - (cgraph_edge::verify_corresponds_to_fndecl): Likewise. - (cgraph_node::verify_node): Likewise. - * cgraphclones.c (build_function_decl_skip_args): Likewise. - (cgraph_node::create_clone): Likewise. - * config/arm/arm.c (arm_insert_attributes): Likewise. - * config/i386/i386.c (ix86_gimple_fold_builtin): Likewise. - * dse.c (scan_insn): Likewise. - * expr.c (expand_expr_real_1): Likewise. - * fold-const.c (operand_equal_p): Likewise. - (fold_binary_loc): Likewise. - * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise. - * gimple-low.c (lower_stmt): Likewise. - * gimple-pretty-print.c (dump_gimple_call): Likewise. - * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): - Likewise. - * gimple.c (gimple_build_call_from_tree): Likewise. - (gimple_call_builtin_p): Likewise. - (gimple_call_combined_fn): Likewise. - * gimplify.c (gimplify_call_expr): Likewise. - (gimple_boolify): Likewise. - (gimplify_modify_expr): Likewise. - (gimplify_addr_expr): Likewise. - * hsa-gen.c (gen_hsa_insns_for_call): Likewise. - * ipa-cp.c (determine_versionability): Likewise. - * ipa-fnsummary.c (compute_fn_summary): Likewise. - * ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise. - * ipa-split.c (visit_bb): Likewise. - (split_function): Likewise. - * ipa-visibility.c (cgraph_externally_visible_p): Likewise. - * lto-cgraph.c (input_node): Likewise. - * lto-streamer-out.c (write_symbol): Likewise. - * omp-low.c (setjmp_or_longjmp_p): Likewise. - (lower_omp_1): Likewise. - * predict.c (strip_predict_hints): Likewise. - * print-tree.c (print_node): Likewise. - * symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise. - * trans-mem.c (is_tm_irrevocable): Likewise. - (is_tm_load): Likewise. - (is_tm_simple_load): Likewise. - (is_tm_store): Likewise. - (is_tm_simple_store): Likewise. - (is_tm_abort): Likewise. - (tm_region_init_1): Likewise. - * tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise. - * tree-cfg.c (verify_gimple_call): Likewise. - (move_stmt_r): Likewise. - (stmt_can_terminate_bb_p): Likewise. - * tree-eh.c (lower_eh_constructs_2): Likewise. - * tree-if-conv.c (if_convertible_stmt_p): Likewise. - * tree-inline.c (remap_gimple_stmt): Likewise. - (copy_bb): Likewise. - (estimate_num_insns): Likewise. - (fold_marked_statements): Likewise. - * tree-sra.c (scan_function): Likewise. - * tree-ssa-ccp.c (surely_varying_stmt_p): Likewise. - (optimize_stack_restore): Likewise. - (pass_fold_builtins::execute): Likewise. - * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. - (mark_all_reaching_defs_necessary_1): Likewise. - * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise. - * tree-ssa-forwprop.c (simplify_builtin_call): Likewise. - (pass_forwprop::execute): Likewise. - * tree-ssa-loop-im.c (stmt_cost): Likewise. - * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise. - * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise. - * tree-ssa-strlen.c (get_string_length): Likewise. - * tree-ssa-structalias.c (handle_lhs_call): Likewise. - (find_func_aliases_for_call): Likewise. - * tree-ssa-ter.c (find_replaceable_in_bb): Likewise. - * tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise. - * tree-tailcall.c (find_tail_calls): Likewise. - * tree.c (need_assembler_name_p): Likewise. - (free_lang_data_in_decl): Likewise. - (get_call_combined_fn): Likewise. - * ubsan.c (is_ubsan_builtin_p): Likewise. - * varasm.c (incorporeal_function_p): Likewise. - * tree.h (DECL_BUILT_IN): Remove and replace with - fndecl_built_in_p. - (DECL_BUILT_IN_P): Transfort to fndecl_built_in_p. - (fndecl_built_in_p): New. - -2018-08-27 Martin Liska - - PR tree-optimization/86847 - * tree-switch-conversion.c (switch_decision_tree::dump_case_nodes): - Dump also subtree probability. - (switch_decision_tree::do_jump_if_equal): New function. - (switch_decision_tree::emit_case_nodes): Handle special - situations in balanced tree that can be emitted much simpler. - Fix calculation of probabilities that happen in tree expansion. - * tree-switch-conversion.h (struct cluster): Add - is_single_value_p. - (struct simple_cluster): Likewise. - (struct case_tree_node): Add new function has_child. - (do_jump_if_equal): New. - -2018-08-27 Martin Liska - - * tree-switch-conversion.c (bit_test_cluster::find_bit_tests): - Add new argument to bit_test_cluster constructor. - (bit_test_cluster::emit): Set bits really number of values - handlel by a test. - (bit_test_cluster::hoist_edge_and_branch_if_true): Add - probability argument. - * tree-switch-conversion.h (struct bit_test_cluster): - Add m_handles_entire_switch. - -2018-08-27 Martin Liska - - PR tree-optimization/86702 - * tree-switch-conversion.c (jump_table_cluster::emit): - Make probabilities even for values in jump table - according to number of cases handled. - (switch_decision_tree::compute_cases_per_edge): Pass - argument to reset_out_edges_aux function. - (switch_decision_tree::analyze_switch_statement): Likewise. - * tree-switch-conversion.h (switch_decision_tree::reset_out_edges_aux): - Make it static. - -2018-08-27 Martin Liska - - * cfgexpand.c (expand_asm_stmt): Use label_to_block and pass - cfun argument explicitly. - * gimple-pretty-print.c (dump_gimple_switch): Likewise. - * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new - function gimple_switch_default_bb. - (convert_switch_statements): - (expand_builtins): - * ipa-fnsummary.c (set_switch_stmt_execution_predicate): - * stmt.c (label_to_block_fn): Use label_to_block and pass - cfun argument explicitly and use gimple_switch_label_bb. - (expand_case): Likewise. - * tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass - cfun argument explicitly. Likewise. - (make_edges_bb): Likewise. - (make_cond_expr_edges): Likewise. - (get_cases_for_edge): Likewise. - (make_gimple_switch_edges): Likewise. - (label_to_block_fn): Likewise. - (label_to_block): Likewise. - (make_goto_expr_edges): Likewise. - (make_gimple_asm_edges): Likewise. - (main_block_label): Likewise. - (group_case_labels_stmt): Likewise. - (find_taken_edge_computed_goto): Likewise. - (find_taken_edge_switch_expr): Likewise. - (gimple_verify_flow_info): Likewise. - (gimple_redirect_edge_and_branch): Likewise. - (gimple_switch_label_bb): New function. - (gimple_switch_default_bb): Likewise. - (gimple_switch_edge): Likewise. - (gimple_switch_default_edge): Likewise. - * tree-cfg.h (label_to_block_fn): Remove and replace ... - (label_to_block): ... with this. - (gimple_switch_label_bb): New. - (gimple_switch_default_bb): Likewise. - (gimple_switch_edge): Likewise. - (gimple_switch_default_edge): Likewise. - * tree-cfgcleanup.c (convert_single_case_switch): Use - new gimple functions and pass new argument to label_to_block. - (cleanup_control_flow_bb): - * tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass - cfun argument explicitly. - (make_eh_edges): Likewise. - (redirect_eh_dispatch_edge): Likewise. - (lower_resx): Likewise. - (lower_eh_dispatch): Likewise. - (maybe_remove_unreachable_handlers): Likewise. - (unsplit_eh): Likewise. - (cleanup_empty_eh): Likewise. - (verify_eh_edges): Likewise. - (verify_eh_dispatch_edge): Likewise. - * tree-ssa-dom.c (record_edge_info): Likewise. - * tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise. - * tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise. - (thread_through_normal_block): Likewise. - * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. - * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): - * tree-switch-conversion.c (switch_conversion::collect): Use new - gimple functions. - (switch_conversion::check_final_bb): Likewise. - (switch_conversion::gather_default_values): Pass new argument - to label_to_block. - (switch_conversion::build_constructors): Likewise. - (switch_decision_tree::compute_cases_per_edge): Use new - gimple_switch_edge function. - (switch_decision_tree::analyze_switch_statement): Pass new argument - to label_to_block. - (switch_decision_tree::try_switch_expansion): Use - gimple_switch_default_edge. - * tree-vrp.c (find_switch_asserts): Pass new argument - to label_to_block. - * vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise. - (vr_values::simplify_switch_using_ranges): Likewise. - -2018-08-27 Richard Biener - - * cfganal.h (rev_post_order_and_mark_dfs_back_seme): Declare. - * cfganal.c (rev_post_order_and_mark_dfs_back_seme): New function. - - * tree-ssa-sccvn.h (struct vn_pval): New structure. - (struct vn_nary_op_s): Add unwind_to member. Add - predicated_values flag and put result into a union together - with a linked list of vn_pval. - (struct vn_ssa_aux): Add name member to make maintaining - a map of SSA name to vn_ssa_aux possible. Remove no longer - needed info, dfsnum, low, visited, on_sccstack, use_processed - and range_info_anti_range_p members. - (run_scc_vn, vn_eliminate, free_scc_vn, vn_valueize): Remove. - (do_rpo_vn, run_rpo_vn, eliminate_with_rpo_vn, free_rpo_vn): - New functions. - (vn_valueize): New global. - (vn_context_bb): Likewise. - (VN_INFO_RANGE_INFO, VN_INFO_ANTI_RANGE_P, VN_INFO_RANGE_TYPE, - VN_INFO_PTR_INFO): Remove. - * tree-ssa-sccvn.c: ... (rewrite) - (pass_fre::execute): For -O2+ initialize loops and run - RPO VN in optimistic mode (iterating). For -O1 and -Og - run RPO VN in non-optimistic mode. - * params.def (PARAM_SCCVN_MAX_SCC_SIZE): Remove. - (PARAM_RPO_VN_MAX_LOOP_DEPTH): Add. - * doc/invoke.texi (sccvn-max-scc-size): Remove. - (rpo-vn-max-loop-depth): Document. - * tree-ssa-alias.c (walk_non_aliased_vuses): Stop walking - when valuezing the VUSE signals we walked out of the region. - * tree-ssa-pre.c (phi_translate_1): Ignore predicated values. - (phi_translate): Set VN context block to use for availability - lookup. - (compute_avail): Likewise. - (pre_valueize): New function. - (pass_pre::execute): Adjust to the RPO VN API. - - * tree-ssa-loop-ivcanon.c: Include tree-ssa-sccvn.h. - (propagate_constants_for_unrolling): Remove. - (tree_unroll_loops_completely): Perform value-numbering - on the unrolled bodies loop parent. - -2018-08-27 Richard Biener - - * tree-ssa-pre.c (compute_antic): Re-use inverted postorder - for partial antic compute. - -2018-08-27 Jakub Jelinek - - PR rtl-optimization/87065 - * combine.c (simplify_if_then_else): Formatting fix. - (if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P - check. - (known_cond): Don't return const_true_rtx for vector modes. Use - CONST0_RTX instead of const0_rtx. Formatting fixes. - -2018-08-27 Martin Liska - - PR gcov-profile/87069 - * gcov.c (process_file): Record files already processed - and warn about a file being processed multiple times. - -2018-08-27 Martin Liska - - PR driver/83193 - * config/aarch64/aarch64.c (aarch64_override_options_internal): - Set default values for x_aarch64_*_string strings. - * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}== - prefix. For -mabi do not print '=ABI' in help and use - format for -msve-vector-bits and -moverride - options. - -2018-08-26 Jeff Law - - * config/mips/frame-header-opt.c: Include "backend.h" rather than - "cfg.h" - -2018-08-26 Marek Polacek - - PR c++/87029, Implement -Wredundant-move. - * doc/invoke.texi: Document -Wredundant-move. - -2018-08-25 Martin Sebor - - PR tree-optimization/87059 - * builtins.c (expand_builtin_strncmp): Convert MIN_EXPR operand - to the same type as the other. - * fold-const.c (fold_binary_loc): Assert expectation. - -2018-08-25 Iain Sandoe - - * config/darwin.c (machopic_legitimize_pic_address): Clean up - extraneous parentheses, dead code section and formatting. - -2018-08-24 David Malcolm - - PR c++/87091 - * diagnostic-show-locus.c (layout::layout): Ensure the margin is - wide enough for jumps in the line-numbering to be visible. - (layout::print_gap_in_line_numbering): New member function. - (layout::calculate_line_spans): When using line numbering, merge - line spans that are only 1 line apart. - (diagnostic_show_locus): When printing line numbers, show gaps in - line numbering directly, rather than printing headers. - (selftest::test_diagnostic_show_locus_fixit_lines): Add test of - line-numbering with multiple line spans. - (selftest::test_fixit_insert_containing_newline_2): Add test of - line-numbering, in which the spans are close enough to be merged. - -2018-08-24 Aldy Hernandez - - * gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range - to range_includes_zero_p. Do not special case VR_ANTI_RANGE. - * tree-vrp.c (range_is_nonnull): Remove. - (range_includes_zero_p): Accept value_range instead of min/max. - (extract_range_from_binary_expr_1): Do not early bail on - POINTER_PLUS_EXPR. - Use range_includes_zero_p instead of range_is_nonnull. - (extract_range_from_unary_expr): Use range_includes_zero_p instead - of range_is_nonnull. - (vrp_meet_1): Pass value_range to range_includes_zero_p. Do not - special case VR_ANTI_RANGE. - (vrp_finalize): Same. - * tree-vrp.h (range_includes_zero_p): Pass value_range as argument - instead of min/max. - (range_is_nonnull): Remove. - * vr-values.c (vrp_stmt_computes_nonzero): Use - range_includes_zero_p instead of range_is_nonnull. - (extract_range_basic): Pass value_range to range_includes_zero_p - instead of range_is_nonnull. - -2018-08-24 Uros Bizjak - - * emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes. - * emit-rtl.h (rtl_data): Remove return_bnd. - * explow.c (trunc_int_for_mode): Do not handle POINTER_BOUNDS_MODE_P. - * function.c (diddle_return_value): Do not handle crtl->return_bnd. - * genmodes.c (complete_mode): Do not handle MODE_POINTER_BOUNDS. - (POINTER_BOUNDS_MODE): Remove definition. - (make_pointer_bounds_mode): Remove. - (get_mode_class): Do not handle MODE_POINTER_BOUNDS. - * machmode.h (POINTER_BOUNDS_MODE_P): Remove definition. - (scalare_mode::includes_p): Do not handle MODE_POINTER_BOUNDS. - * mode-classes.def: Do not define MODE_POINTER_BOUNDS. - * stor-layout.c (int_mode_for_mode): Do not handle MODE_POINTER_BOUNDS. - * tree-core.h (enum tree_index): Remove TI_POINTER_BOUNDS_TYPE. - * varasm.c (output_constant_pool_2): Do not handle MODE_POINTER_BOUNDS. - - * config/i386/i386-modes.def (BND32, BND64): Remove. - * config/i386/i386.c (dbx_register_map): Remove bound registers. - (dbx64_register_map): Ditto. - (svr4_dbx_register_map): Ditto. - (indirect_thunk_bnd_needed): Remove. - (indirect_thunks_bnd_used): Ditto. - (indirect_return_bnd_needed): Ditto. - (indirect_return_via_cx_bnd): Ditto. - (enum indirect_thunk_prefix): Remove indirect_thunk_prefix_bnd. - (indirect_thunk_name): Remove handling of indirect_thunk_prefix_bnd. - (output_indirect_thunk): Ditto. Remove need_prefix argument. - (output_indirect_thunk_function): Remove handling of - indirect_return_bnd_needed, indirect_return_via_cx_bnd, - indirect_thunk_bnd_needed and indirect_thunks_bnd_used variables. - (ix86_save_reg): Remove handling of crtl->return_bnd. - (ix86_legitimate_constant_p): Remove handling of POINTER_BOUNDS_MODE_P. - (ix86_print_operand_address_as): Remove handling of UNSPEC_BNDMK_ADDR - and UNSPEC_BNDLX_ADDR. - (ix86_output_indirect_branch_via_reg): Remove handling of - indirect_thunk_prefix_bnd. - (ix86_output_indirect_branch_via_push): Ditto. - (ix86_output_function_return): Ditto. - (ix86_output_indirect_function_return): Ditto. - (avoid_func_arg_motion): Do not handle UNSPEC_BNDSTX. - * config/i386/i386.h (FIXED_REGISTERS): Remove bound registers. - (CALL_USED_REGISTERS): Ditto. - (REG_ALLOC_ORDER): Update for removal of bound registers. - (HI_REGISTER_NAMES): Ditto. - * config/i386/i386.md (UNSPEC_BNDMK, UNSPEC_BNDMK_ADDR, UNSPEC_BNDSTX) - (UNSPEC_BNDLDX, UNSPEC_BNDLDX_ADDR, UNSPEC_BNDCL, UNSPEC_BNDCU) - (UNSPEC_BNDCN, UNSPEC_MPX_FENCE): Remove. - (BND0_REG, BND1_REG, BND2_REG, BND3_REG): Remove - (FIRST_PSEUDO_REG): Update. - (BND): Remove mode iterator. - * config/i386/predicates.md (bnd_mem_operator): Remove. - -2018-08-24 Richard Sandiford - - * tree-vect-stmts.c (vectorizable_bswap): Handle variable-length - vectors. - -2018-08-24 Richard Sandiford - - * tree-vect-slp.c (vect_transform_slp_perm_load): Separate out - the case in which the permute needs only a single element and - repeats for every vector of the result. Extend that case to - handle variable-length vectors. - * tree-vect-stmts.c (vectorizable_load): Update accordingly. - -2018-08-24 H.J. Lu - - PR debug/79342 - * dwarf2out.c (save_macinfo_strings): Call set_indirect_string - on DW_MACINFO_start_file for -gsplit-dwarf -g3. - -2018-08-24 Richard Biener - - * cfg.h (struct control_flow_graph): Add edge_flags_allocated and - bb_flags_allocated members. - (auto_flag): New RAII class for allocating flags. - (auto_edge_flag): New RAII class for allocating edge flags. - (auto_bb_flag): New RAII class for allocating bb flags. - * cfgloop.c (verify_loop_structure): Allocate temporary edge - flag dynamically. - * cfganal.c (dfs_enumerate_from): Remove use of visited sbitmap - in favor of temporarily allocated BB flag. - * hsa-brig.c: Re-order includes. - * hsa-dump.c: Likewise. - * hsa-regalloc.c: Likewise. - * print-rtl.c: Likewise. - * profile-count.c: Likewise. - -2018-08-24 Segher Boessenkool - - PR target/86989 - * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is - the TOC register. - -2018-08-24 Aldy Hernandez - - PR 87073/bootstrap - * wide-int-range.cc (wide_int_range_div): Do not ignore result - from wide_int_range_multiplicative_op. - -2018-08-23 Prathamesh Kulkarni - - * tree-vect-data-refs.c (vect_grouped_store_supported): Fix typo - "permutaion". - -2018-08-23 Giuliano Belinassi - - * genmatch.c (parser::parse_operation): Fix typo 'exapnded' - to 'expanded'. - -2018-08-23 Alexander Monakov - - * tree-scalar-evolution.c (final_value_replacement_loop): Dump - full GENERIC expression used for replacement. - -2018-08-23 Aldy Hernandez - - * tree-vrp.c (abs_extent_range): Remove. - (extract_range_into_wide_ints): Pass wide ints by reference. - (extract_range_from_binary_expr_1): Rewrite the *DIV_EXPR code. - Pass wide ints by reference in all calls to - extract_range_into_wide_ints. - * wide-int-range.cc (wide_int_range_div): New. - * wide-int-range.h (wide_int_range_div): New. - (wide_int_range_includes_zero_p): New. - (wide_int_range_zero_p): New. - -2018-08-23 Matthew Malcomson - - * config/aarch64/aarch64.md (arches): New enum. - (arch): New enum attr. - (arch_enabled): New attr. - (enabled): Now uses arch_enabled only. - (simd, sve, fp16): Removed attribute. - (fp): Attr now defined in terms of 'arch'. - (*mov_aarch64, *movsi_aarch64, *movdi_aarch64, *movti_aarch64, - *movhf_aarch64, 2, - 3, - 3): Merge 'fp' and 'simd' - attributes into 'arch'. - (*movsf_aarch64, *movdf_aarch64, *movtf_aarch64, *add3_aarch64, - subdi3, neg2, 3, one_cmpl2, - *_one_cmpl3, *xor_one_cmpl3, - *aarch64_ashl_sisd_or_int_3, *aarch64_lshr_sisd_or_int_3, - *aarch64_ashr_sisd_or_int_3, *aarch64_sisd_ushl): Convert use of - 'simd' attribute into 'arch'. - (load_pair_sw_, load_pair_dw_, - store_pair_sw_, store_pair_dw_): - Convert use of 'fp' attribute to 'arch'. - * config/aarch64/aarch64-simd.md (move_lo_quad_internal_, - move_lo_quad_internal_): (different modes) Merge 'fp' and 'simd' - into 'arch'. - (move_lo_quad_internal_be_, move_lo_quad_internal_be_): - (different modes) Merge 'fp' and 'simd' into 'arch'. - (*aarch64_combinez, *aarch64_combinez_be): Merge 'fp' and - 'simd' into 'arch'. - -2018-08-23 Segher Boessenkool - - PR rtl-optimization/87026 - * expmed.c (canonicalize_comparison): If we can no longer create - pseudoregisters, don't. - -2018-08-23 Richard Earnshaw - - PR target/86951 - * config/arm/arm-protos.h (arm_emit_speculation_barrier): New - prototype. - * config/arm/arm.c (speculation_barrier_libfunc): New static - variable. - (arm_init_libfuncs): Initialize it. - (arm_emit_speculation_barrier): New function. - * config/arm/arm.md (speculation_barrier): Call - arm_emit_speculation_barrier for architectures that do not have - DSB or ISB. - (speculation_barrier_insn): Only match on Armv7 or later. - -2018-08-23 Richard Biener - - PR middle-end/87024 - * tree-inline.c (copy_bb): Drop unused __builtin_va_arg_pack_len - calls. - -2018-08-23 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_evpc_sve_tbl): Fix handling - of single-vector TBLs. - (aarch64_vectorize_vec_perm_const): Set one_vector_p when only - one input is given. - -2018-08-23 Richard Sandiford - - PR target/85910 - * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Fix - aarch64_evpc_tbl guard. - -2018-08-22 Bernd Edlinger - - * tree-ssa-dse.c (compute_trims): Avoid folding away undefined - behaviour. - -2018-08-22 Martin Sebor - - PR middle-end/87052 - * tree-pretty-print.c (pretty_print_string): Add argument. - (dump_generic_node): Call to pretty_print_string with string size. - -2018-08-22 Segher Boessenkool - - PR rtl-optimization/86771 - * combine.c (try_combine): Do not allow splitting a resulting PARALLEL - of two SETs into those two SETs, one to be placed at i2, if that SETs - destination is modified between i2 and i3. - -2018-08-22 Richard Sandiford - - PR tree-optimization/86725 - * tree-vect-loop.c (vect_inner_phi_in_double_reduction_p): New - function. - (vect_analyze_scalar_cycles_1): Check it. - -2018-08-22 Richard Sandiford - - PR tree-optimization/86725 - * tree-vect-loop.c (vect_is_simple_reduction): When treating - an outer loop phi as a double reduction, make sure that the - single user of the phi result is an inner loop phi. - -2018-08-22 Richard Sandiford - - * tree-vect-data-refs.c (vect_analyze_group_access_1): Convert - grouped stores with gaps to a strided group. - -2018-08-22 Richard Sandiford - - * tree-vect-stmts.c (get_group_load_store_type) - (get_load_store_type): Only test STMT_VINFO_STRIDED_P for the - first statement in a group. - -2018-08-22 Iain Sandoe - - * config/darwin.h (LINK_COMMAND_SPEC_A): Sync LTO options with - the sequence used in gcc/gcc.c. - -2018-08-22 Iain Sandoe - - PR other/704 - * gcc-ar.c (main): Don’t try to invoke the plug-in if we’re not - building it. - -2018-08-22 Iain Sandoe - - * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Adjust to use the - Darwin10-specific unwinder-shim. - * config/darwin12.h (LINK_GCC_C_SEQUENCE_SPEC): Remove. - * config/rs6000/darwin.h (DARWIN_CRT1_SPEC, DARWIN_DYLIB1_SPEC): - New to cater for Darwin10 Rosetta. - -2018-08-22 Iain Sandoe - - * config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O - specific test before the one for HAVE_AS_GOTOFF_IN_DATA. - -2018-08-22 Iain Sandoe - - PR bootstrap/81033 - PR target/81733 - PR target/52795 - * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New. - (dwarf2out_switch_text_section): Generate a local label for the - second function sub-section and apply it as the second FDE start - label. - * gcc/final.c (final_scan_insn_1): Emit second FDE label after the - second sub-section start. - -2018-08-22 Richard Biener - - PR tree-optimization/86988 - * tree-vrp.c (vrp_prop::check_mem_ref): Bail out on VLAs. - -2018-08-22 Richard Biener - - PR tree-optimization/86945 - * tree-cfg.c (generate_range_test): Use unsigned arithmetic. - -2018-08-22 Alexandre Oliva - - * config/rs6000/rs6000.c (SMALL_DATA_RELOC, SMALL_DATA_REG): Add - a comment about how uses of r2 for .sdata2 come about. - -2018-08-22 Alexandre Oliva - - * tree-ssa-reassoc.c (is_reassociable_op): Fix cut&pasto. - -2018-08-21 Marek Polacek - - PR c++/86981, Implement -Wpessimizing-move. - * doc/invoke.texi: Document -Wpessimizing-move. - -2018-08-21 Jan Hubicka - - * tree.c (find_decls_types_r): Do not check for redundant typedefs. - * tree.h (is_redundant_typedef): Remove. - * dwarf2out.c (is_redundant_typedef): Turn into static function. - -2018-08-21 Jan Hubicka - - * tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT - when possible. - -2018-08-21 Tamar Christina - - * expmed.c (extract_low_bits): Reject invalid subregs early. - -2018-08-21 Bernd Edlinger - - PR middle-end/86121 - * tree-ssa-strlen.c (adjust_last_stmt): Avoid folding away undefined - behaviour. - -2018-08-21 Rasmus Villemoes - - * config/vxworks.h: Guard vxworks_asm_out_constructor and - vxworks_asm_out_destructor by !HAVE_INITFINI_ARRAY_SUPPORT - * config/vxworks.c: Likewise. - -2018-08-21 Rasmus Villemoes - - * config/vxworks.c: Set targetm.have_ctors_dtors - if HAVE_INITFINI_ARRAY_SUPPORT. - * config/vxworks.h: Set SUPPORTS_INIT_PRIORITY - if HAVE_INITFINI_ARRAY_SUPPORT. - -2018-08-21 Rasmus Villemoes - - * config/vxworks.h: Add $(WIND_BASE)/target/h/wrn/coreip to - default search path for VxWorks < 7. - -2018-08-21 Bernd Edlinger - - * gimple-ssa-sprintf.c (decl_constant_value): Remove. - (get_format_string): Refer to c_getstr. - -2018-08-21 Tom de Vries - - * cgraph.h (debuginfo_early_init, debuginfo_init, debuginfo_fini) - (debuginfo_start, debuginfo_stop, debuginfo_early_start) - (debuginfo_early_stop): Declare. - * cgraphunit.c (debuginfo_early_init, debuginfo_init, debuginfo_fini) - (debuginfo_start, debuginfo_stop, debuginfo_early_start) - (debuginfo_early_stop): New function. - (symbol_table::finalize_compilation_unit): Call debuginfo_early_start - and debuginfo_early_stop. - * dwarf2out.c (dwarf2out_finish, dwarf2out_early_finish): Dump dwarf. - * toplev.c (compile_file): Call debuginfo_start and debuginfo_stop. - (general_init): Call debuginfo_early_init. - (finalize): Call debuginfo_fini. - (do_compile): Call debuginfo_init. - * doc/invoke.texi (@gccoptlist): Add -fdump-debug and - -fdump-early-debug. - (@item -fdump-debug, @item -fdump-earlydebug): Add. - -2018-08-21 Tom de Vries - - * dwarf2out.c (print_dw_val, print_loc_descr, print_die): Handle - flag_dump_noaddr and flag_dump_unnumbered. - -2018-08-21 Aldy Hernandez - - * wide-int-range.cc (wide_int_range_abs): New. - (wide_int_range_order_set): Rename from wide_int_range_min_max. - * wide-int-range.h (wide_int_range_abs): New. - (wide_int_range_min_max): New. - * tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR - case to call wide_int_range_abs. - Rewrite MIN/MAX_EXPR to call wide_int_range_min_max. - (extract_range_from_abs_expr): Delete. - -2018-08-20 Michael Meissner - - PR target/87033 - * config/rs6000/rs6000.md (extendsi2): Change constraints - from 'Y' to 'YZ' to enable the LWAX instruction to be generated - for indexed loads. - -2018-08-20 Nathan Sidwell - Jeff Law - - * config/s390/s390-c (s390_macro_to_expand): Use cpp_macro_p. - * config/spu/spu-c.c (spu_macro_to_expand): Likewise. - -2018-08-20 David Malcolm - - PR other/84889 - * attribs.c (diag_attr_exclusions): Add auto_diagnostic_group instance. - (decl_attributes): Likewise. - * calls.c (maybe_warn_nonstring_arg): Add auto_diagnostic_group - instance. - * cgraphunit.c (maybe_diag_incompatible_alias): Likewise. - * diagnostic-core.h (class auto_diagnostic_group): New class. - * diagnostic.c (diagnostic_initialize): Initialize the new fields. - (diagnostic_report_diagnostic): Handle the first diagnostics within - a group. - (emit_diagnostic): Add auto_diagnostic_group instance. - (inform): Likewise. - (inform_n): Likewise. - (warning): Likewise. - (warning_at): Likewise. - (warning_n): Likewise. - (pedwarn): Likewise. - (permerror): Likewise. - (error): Likewise. - (error_n): Likewise. - (error_at): Likewise. - (sorry): Likewise. - (fatal_error): Likewise. - (internal_error): Likewise. - (internal_error_no_backtrace): Likewise. - (auto_diagnostic_group::auto_diagnostic_group): New ctor. - (auto_diagnostic_group::~auto_diagnostic_group): New dtor. - * diagnostic.h (struct diagnostic_context): Add fields - "diagnostic_group_nesting_depth", - "diagnostic_group_emission_count", "begin_group_cb", - "end_group_cb". - * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): - Add auto_diagnostic_group instance(s). - (find_explicit_erroneous_behavior): Likewise. - * gimple-ssa-warn-alloca.c (pass_walloca::execute): Likewise. - * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Likewise. - * gimplify.c (warn_implicit_fallthrough_r): Likewise. - (gimplify_va_arg_expr): Likewise. - * hsa-gen.c (HSA_SORRY_ATV): Likewise. - (HSA_SORRY_AT): Likewise. - * ipa-devirt.c (compare_virtual_tables): Likewise. - (warn_odr): Likewise. - * multiple_target.c (expand_target_clones): Likewise. - * opts-common.c (cmdline_handle_error): Likewise. - * reginfo.c (globalize_reg): Likewise. - * substring-locations.c (format_warning_n_va): Likewise. - * tree-inline.c (expand_call_inline): Likewise. - * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise. - * tree-ssa-loop-niter.c - (do_warn_aggressive_loop_optimizations): Likewise. - * tree-ssa-uninit.c (warn_uninit): Likewise. - * tree.c (warn_deprecated_use): Likewise. - -2018-08-20 H.J. Lu - - PR target/87014 - * config/i386/i386.md (eh_return): Always update EH return - address in word_mode. - -2018-08-20 Chung-Lin Tang - - * targhooks.c (std_gimplify_va_arg_expr): Properly handle case of when - TARGET_SPLIT_COMPLEX_ARG is defined. - -2018-08-20 Bernd Edlinger - - * expr.c (store_field): Change gcc_assert to gcc_checking_assert. - -2018-08-20 Bernd Edlinger - - PR target/86984 - * expr.c (expand_assignment): Assert that bitpos is positive. - (store_field): Likewise - (expand_expr_real_1): Make sure that bitpos is positive. - * config/alpha/alpha.h (CONSTANT_ADDRESS_P): Avoid signed - integer overflow. - -2018-08-20 Nathan Sidwell - - * Makefile.in (CPP_ID_DATA_H): Delete. - (CPP_INTERNAL_H): Don't add it. - (GTFILES): Replace CPP_ID_DATA_H with CPPLIB_H. - * gengtype.c (open_base_files): Replace cpp-id-data.h with cpplib.h - -2018-08-20 Richard Biener - - PR tree-optimization/78655 - * tree-vrp.c (extract_range_from_binary_expr_1): Make - pointer + offset nonnull if either operand is nonnull work. - -2018-08-20 Tom de Vries - - * dwarf2out.c (add_scalar_info): Don't add reference to existing die - unless the referenced die describes the added property using - DW_AT_location or DW_AT_const_value. Fall back to exprloc case. - Otherwise, add a DW_AT_location to the referenced die. - -2018-08-19 Uros Bizjak - - PR target/86994 - * config/i386/i386.c (ix86_rtx_costs) [case SET]: Check source for - register_operand when calling ix86_set_reg_reg_cost. - [case CONST_INT, case CONST, case LABEL_REF, case SYMBOL_REF]: - Set *total to 0 for operands that satisfy x86_64_immediate_operand - predicate and to 1 otherwise. - -2018-08-18 Iain Sandoe - - * config/darwin.c (darwin_override_options): If -gsplit-dwarf is set, - emit a diagnostic that it is not supported and reset the option. - * config/darwin.h (DRIVER_SELF_SPECS): Note that gsplit-dwarf is not - supported and consume the option. (ASM_FINAL_SPEC): New. - -2018-08-17 Segher Boessenkool - - * doc/md.texi (Patterns): Use @ref instead of @xref in the middle of - a sentence. - -2018-08-17 Sandra Loosemore - - C-SKY port: Documentation - - * doc/extend.texi (C-SKY Function Attributes): New section. - * doc/invoke.texi (Option Summary): Add C-SKY options. - (C-SKY Options): New section. - * doc/md.texi (Machine Constraints): Document C-SKY constraints. - -2018-08-17 Jojo - Huibin Wang - Sandra Loosemore - Chung-Lin Tang - - C-SKY port: Backend implementation - - * config/csky/*: New. - * common/config/csky/*: New. - -2018-08-17 Jojo - Huibin Wang - Sandra Loosemore - Chung-Lin Tang - Andrew Jenner - - C-SKY port: Configury - - * config.gcc (csky-*-*): New. - * configure.ac: Add csky to targets for dwarf2 debug_line support. - * configure: Regenerated. - -2018-08-17 David Malcolm - - * dump-context.h: Include "dumpfile.h". - (dump_context::dump_printf_va): Convert final param from va_list - to va_list *. Convert from ATTRIBUTE_PRINTF to - ATTRIBUTE_GCC_DUMP_PRINTF. - (dump_context::dump_printf_loc_va): Likewise. - * dumpfile.c: Include "stringpool.h". - (make_item_for_dump_printf_va): Delete. - (make_item_for_dump_printf): Delete. - (class dump_pretty_printer): New class. - (dump_pretty_printer::dump_pretty_printer): New ctor. - (dump_pretty_printer::emit_items): New member function. - (dump_pretty_printer::emit_any_pending_textual_chunks): New member - function. - (dump_pretty_printer::emit_item): New member function. - (dump_pretty_printer::stash_item): New member function. - (dump_pretty_printer::format_decoder_cb): New member function. - (dump_pretty_printer::decode_format): New member function. - (dump_context::dump_printf_va): Reimplement in terms of - dump_pretty_printer. - (dump_context::dump_printf_loc_va): Convert final param from va_list - to va_list *. - (dump_context::begin_scope): Reimplement call to - make_item_for_dump_printf. - (dump_printf): Update for change to dump_printf_va. - (dump_printf_loc): Likewise. - (selftest::test_capture_of_dump_calls): Convert "stmt" from - greturn * to gimple *. Add a test_decl. Add tests of dump_printf - with %T, %E, and %G. - * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): New macro. - (dump_printf): Replace ATTRIBUTE_PRINTF_2 with - ATTRIBUTE_GCC_DUMP_PRINTF (2, 3). - (dump_printf_loc): Replace ATTRIBUTE_PRINTF_3 with - ATTRIBUTE_GCC_DUMP_PRINTF (3, 0). - * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Convert - use of HOST_WIDE_INT_PRINT_DEC on unsigned HOST_WIDE_INT "count" - within a dump_printf_loc call to "%wu". - (vector_alignment_reachable_p): Merge two dump_printf[_loc] calls, - converting a use of HOST_WIDE_INT_PRINT_DEC to "%wd". Add a - missing space after "=". - * tree-vect-loop.c (vect_analyze_loop_2) Within a dump_printf - call, convert use of HOST_WIDE_INT_PRINT_DEC to "%wd". - * tree-vect-slp.c (vect_slp_bb): Within a dump_printf_loc call, - convert use of HOST_WIDE_INT_PRINT_UNSIGNED to "%wu". - * tree-vectorizer.c (try_vectorize_loop_1): Likewise. Remove - duplicate "vectorized" from message. - -2018-08-17 Szabolcs Nagy - - * config/arm/arm-builtins.c (arm_init_simd_builtin_types): Clear - polyNxK_t element's TYPE_STRING_FLAG. - -2018-08-17 Segher Boessenkool - - * config/rs6000/rs6000.md (*cbranch, *creturn): Name these patterns - (they were unnamed before). Fix comments. - -2018-08-17 Nathan Sidwell - - * cppbuiltin.c: Include "cpplib.h", not "cpp-id-data.h". - -2018-08-17 Richard Biener - - PR tree-optimization/86841 - * wide-int-range.cc (wide_int_range_lshift): Use to_uhwi. - -2018-08-17 Martin Liska - - * common.opt: Remove Warn, Init and Report for options with - Ignore/Deprecated flag. Warning is done automatically for - Deprecated flags. - * config/i386/i386.opt: Likewise. - * config/ia64/ia64.opt: Likewise. - * config/rs6000/rs6000.opt: Likewise. - * cppbuiltin.c (define_builtin_macros_for_compilation_flags): - Remove usage of flag_check_pointer_bounds. - * lto-wrapper.c (merge_and_complain): Do not handle - OPT_fcheck_pointer_bounds. - (append_compiler_options): Likewise. - * opt-functions.awk: Do not handle Deprecated. - * optc-gen.awk: Check that Var, Report and Init are not - used for an option with Ignore/Deprecated flag. - * opts-common.c (decode_cmdline_option): Do not report - CL_ERR_DEPRECATED. - (read_cmdline_option): Report warning for OPT_SPECIAL_deprecated - options. - * opts.h (struct cl_option): Remove cl_deprecated flag. - (CL_ERR_DEPRECATED): Remove error enum value. - -2018-08-17 Richard Biener - - PR middle-end/86505 - * tree-inline.c (copy_bb): When inlining __builtin_va_arg_pack_len () - across a va-arg-pack using call adjust its return value accordingly. - -2018-08-16 Martin Sebor - - PR tree-optimization/86853 - * gimple-ssa-sprintf.c (struct format_result): Rename member. - (struct fmtresult): Add member and initialize it in ctors. - (format_character): Handle %C. Extend range to NUL. Set MAYFAIL. - (format_string): Handle %S the same as %ls. Set MAYFAIL. - (format_directive): Set POSUNDER4K when MAYFAIL is set. - (parse_directive): Handle %C same as %c. - (sprintf_dom_walker::compute_format_length): Adjust. - (is_call_safe): Adjust. - -2018-08-16 Bernd Edlinger - - * builtins.c (c_strlen): Add new parameter eltsize. Use it - for determining how to count the elements. - * builtins.h (c_strlen): Adjust prototype. - * expr.c (string_constant): Add new parameter mem_size. - Set *mem_size appropriately. - * expr.h (string_constant): Adjust protoype. - * gimple-fold.c (get_range_strlen): Add new parameter eltsize. - * gimple-fold.h (get_range_strlen): Adjust prototype. - * gimple-ssa-sprintf.c (get_string_length): Add new parameter eltsize. - (format_string): Call get_string_length with eltsize. - -2018-08-16 David Malcolm - - * diagnostic.c (default_diagnostic_start_span_fn): Call pp_string - to emit the span, rather than setting it as the prefix. - -2018-08-16 David Malcolm - - * diagnostic-show-locus.c (layout::start_annotation_line): Add - "margin_char" parameter, defaulting to space. Use it in place - of pp_space for the initial part of the margin. - (layout::print_leading_fixits): Use '+' when filling the margin - of line-insertion fix-it hints. - -2018-08-16 Segher Boessenkool - - * config/rs6000/rs6000.md (two unnamed define_insn and define_split): - Delete. - -2018-08-16 Segher Boessenkool - - * config/rs6000/altivec.md: Don't set length attribute to the default - value. - * config/rs6000/darwin.md: Ditto. - * config/rs6000/dfp.md: Ditto. - * config/rs6000/htm.md: Ditto. - * config/rs6000/rs6000.md: Ditto. - * config/rs6000/sync.md: Ditto. - * config/rs6000/vsx.md: Ditto. - -2018-08-16 Segher Boessenkool - - * config/rs6000/altivec.md: Don't set length attribute to the default - value, for branch instructions. - * config/rs6000/darwin.md: Ditto. - * config/rs6000/rs6000.md: Ditto. - -2018-08-16 Segher Boessenkool - - * config/rs6000/rs6000.md (length): Always define as const_int 4. - (unnamed conditional branch define_insn): Set length to 4 or 8 - depending on offset. - (_): Similar, for alternative 0. - (tf_): Ditto. - -2018-08-16 Tamar Christina - - * expr.c (copy_blkmode_to_reg): Perform larger copies when safe. - -2018-08-16 Matthew Malcomson - - * doc/rtl.texi: Replace old RTX class names with new names. - - -2018-08-16 Vlad Lazar - - * expmed.h (canonicalize_comparison): New declaration. - * expmed.c (canonicalize_comparison, equivalent_cmp_code): New function. - * expmed.c (emit_store_flag_1): Add call to canonicalize_comparison. - * optabs.c (prepare_cmp_insn): Likewise. - * rtl.h (unsigned_condition_p): New function which checks if a - comparison operator is unsigned. - -2018-08-16 Nathan Sidwell - - * config/rs6000/rs6000-c.c (rs6000_macro_to_expend): Use cpp_macro_p. - * config/powerpcspc/powerpcspe-c.c (rs6000_macro_to_expend): Likewise. - -2018-08-16 Tamar Christina - - PR target/84711 - * config/arm/arm.c (arm_can_change_mode_class): Disallow subreg. - * config/arm/neon.md (movv4hf, movv8hf): Refactored to.. - (mov): ..this and enable unconditionally. - -2018-08-16 Tamar Christina - - * config/arm/neon.md (*neon_mov): Remove reg-to-reg alternative. - -2018-08-16 Sam Tebbs - - * config/aarch64/aarch64.opt (mlow-precision-recip-sqrt) - (mlow-precision-sqrt, mlow-precision-div, mverbose-cost-dump): Replace - "Common" with "Target". - -2018-08-15 Uros Bizjak - - * config/i386/i386.opt (mmitigate-rop): Mark as deprecated. - * doc/invoke.texi (mmitigate-rop): Remove. - * config/i386/i386.c: Do not include "regrename.h". - (ix86_rop_should_change_byte_p, reg_encoded_number) - (ix86_get_modrm_for_rop, set_rop_modrm_reg_bits, ix86_mitigate_rop): - Remove. - (ix86_reorg): Remove call to ix86_mitigate_rop. - * config/i386/i386.md (attr "modrm_class"): Remove. - (cmp_ccno_1, mov_xor, movstrict_xor) - (x86_movcc_0_m1. x86_movcc_0_m1_se) - (x86_movcc_0_m1_neg): Remove modrm_class attribute override. - -2018-08-15 Will Schmidt - - * config/rs6000/rs600.c (rs6000_gimple_fold_builtin): Add entries to - allow folding of mergeh() and mergel() for the float and double types. - (fold_mergehl_helper): Rework to handle building a permute tree - for float vectors. - -2018-08-15 Uros Bizjak - - * config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode - for TARGET_SSE. - -2018-08-15 David Malcolm - - * common.opt (fdiagnostics-show-labels): New option. - * diagnostic-show-locus.c (class layout_range): Add field - "m_label". - (class layout): Add field "m_show_labels_p". - (layout_range::layout_range): Add param "label" and use it to - initialize m_label. - (make_range): Pass in NULL for new "label" param of layout_range's - ctor. - (layout::layout): Initialize m_show_labels_p. - (layout::maybe_add_location_range): Pass in loc_range->m_label - when constructing layout_range instances. - (struct line_label): New struct. - (layout::print_any_labels): New member function. - (layout::print_line): Call it if label-printing is enabled. - (selftest::test_one_liner_labels): New test. - (selftest::test_diagnostic_show_locus_one_liner): Call it. - * diagnostic.c (diagnostic_initialize): Initialize - context->show_labels_p. - * diagnostic.h (struct diagnostic_context): Add field - "show_labels_p". - * doc/invoke.texi (Diagnostic Message Formatting Options): Add - -fno-diagnostics-show-labels. - * dwarf2out.c (gen_producer_string): Add - OPT_fdiagnostics_show_labels to the ignored options. - * gcc-rich-location.c (gcc_rich_location::add_expr): Add "label" - param. - (gcc_rich_location::maybe_add_expr): Likewise. - * gcc-rich-location.h (gcc_rich_location::gcc_rich_location): Add - label" param, defaulting to NULL. - (gcc_rich_location::add_expr): Add "label" param. - (gcc_rich_location::maybe_add_expr): Likewise. - (class text_range_label): New class. - (class range_label_for_type_mismatch): New class. - * gimple-ssa-sprintf.c (fmtwarn): Pass NULL for new label params - of format_warning_va. - (fmtwarn_n): Likewise for new params of format_warning_n_va. - * lto-wrapper.c (merge_and_complain): Add - OPT_fdiagnostics_show_labels to the "pick one setting" options. - (append_compiler_options): Likewise to the dropped options. - (append_diag_options): Likewise to the passed-on options. - * opts.c (common_handle_option): Handle the new option. - * selftest-diagnostic.c - (test_diagnostic_context::test_diagnostic_context): Enable - show_labels_p. - * substring-locations.c: Include "gcc-rich-location.h". - (format_warning_n_va): Add "fmt_label" and "param_label" params - and use them as appropriate. - (format_warning_va): Add "fmt_label" and "param_label" params, - passing them on to format_warning_n_va. - (format_warning_at_substring): Likewise. - (format_warning_at_substring_n): Likewise. - * substring-locations.h (format_warning_va): Add "fmt_label" and - "param_label" params. - (format_warning_n_va): Likewise. - (format_warning_at_substring): Likewise. - (format_warning_at_substring_n): Likewise. - * toplev.c (general_init): Initialize global_dc->show_labels_p. - -2018-08-15 Qing Zhao - - PR testsuite/86519 - * builtins.c (expand_builtin_memcmp): Do not expand the call - when overflow is detected. - -2018-08-15 Martin Sebor - - PR tree-optimization/71625 - * config/aarch64/aarch64-builtins.c - (aarch64_init_simd_builtin_types): Clear Poly8_t's TYPE_STRING_FLAG. - -2018-08-15 Ilya Leoshkevich - - * config/s390/s390.c (s390_reorg): Remove loop. - -2018-08-15 Iain Sandoe - - * config/darwin.c - (darwin_function_switched_text_sections): Delete. - * gcc/config/darwin.h - (TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS): Likewise. - -2018-08-15 Iain Sandoe - - PR target/81685 - * config/darwin.h: (DEBUG_STR_OFFSETS_SECTION, DEBUG_LOCLISTS_SECTION, - DEBUG_RNGLISTS_SECTION) new macros. (DEBUG_PUBNAMES_SECTION, - DEBUG_PUBTYPES_SECTION) update to include GNU variant. - -2018-08-15 Martin Liska - - PR tree-optimization/86925 - * predict.c (expr_expected_value_1): When taking - later predictor, assign also probability. - Use fold_build2_initializer_loc in order to fold - the expression in -frounding-math. - -2018-08-14 Allan Sandfeld Jensen - - * config/i386/i386.c (expand_vec_perm_movs): New method matching movs - patterns. - (expand_vec_perm_1): Try the new method. - -2018-08-14 Ilya Leoshkevich - - PR target/86547 - * lra-lives.c (remove_some_program_points_and_update_live_ranges): - Check whether lra_live_max_point is 0 before dividing. - -2018-08-14 Martin Sebor - - PR tree-optimization/86650 - * tree-vrp.c (vrp_prop::check_array_ref): Print an inform message. - (vrp_prop::check_mem_ref): Same. - -2018-08-13 Liu Hao - - * pretty-print.c (eat_esc_sequence): Swap the foreground and - background colors if the COMMON_LVB_REVERSE_VIDEO flag is set, - and clear it thereafter, as it only works for DBCS. - -2018-08-13 Liu Hao - - * pretty-print.c (mingw_ansi_fputs): Do not call _close() on the - handle returned by _get_osf_handle(). - -2018-08-13 Will Schmidt - - * gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support - for folding vec_perm. - -2018-08-13 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): - Add support for gimple-folding of vec_pack() and vec_unpack() - intrinsics. - -2018-08-13 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_builtin_valid_without_lhs): Add - vec_xst variants to the list. - (rs6000_gimple_fold_builtin): Add support for folding unaligned - vector loads and stores. - -2018-08-13 David Edelsohn - - * config.gcc (rs6000-ibm-aix4.x): Delete. - (rs6000-ibm-aix5.1): Delete. - (rs6000-ibm-aix5.2): Delete. - (rs6000-ibm-aix5.3): Delete. - * config/rs6000/aix43.h: Delete. - * config/rs6000/aix51.h: Delete. - * config/rs6000/aix52.h: Delete. - * config/rs6000/t-aix43: Delete. - -2018-08-13 Ilya Leoshkevich - - * config/s390/s390.c (s390_decompose_constant_pool_ref): - New function. - (s390_decompose_address): Factor out constant pool ref - decomposition. - -2018-08-12 Chung-Ju Wu - - * config/nds32/nds32-predicates.c - (nds32_can_use_bclr_p): Change return type as bool. - (nds32_can_use_bset_p): Ditto. - (nds32_can_use_btgl_p): Ditto. - (nds32_can_use_bitci_p): Ditto. - * config/nds32/nds32-protos.h - (nds32_can_use_bclr_p): Change declaration. - (nds32_can_use_bset_p): Ditto. - (nds32_can_use_btgl_p): Ditto. - (nds32_can_use_bitci_p): Ditto. - -2018-08-12 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_expand_prologue, nds32_expand_epilogue): - Support -msched-prolog-epilog option. - * config/nds32/nds32.opt (msched-prolog-epilog): New option. - -2018-08-12 Chung-Ju Wu - - * common/config/nds32/nds32-common.c - (nds32_option_optimization_table): Enalbe -malways-align. - -2018-08-12 Chung-Ju Wu - - * config.gcc (nds32*): Add nds32_isr.h and nds32_init.inc in - extra_headers. - * common/config/nds32/nds32-common.c (nds32_handle_option): Handle - OPT_misr_secure_ case. - * config/nds32/nds32-isr.c: Implementation of backward compatibility. - * config/nds32/nds32-protos.h (nds32_isr_function_critical_p): New. - * config/nds32/nds32.c (nds32_attribute_table): Add critical and - secure attribute. - * config/nds32/nds32.h (nds32_isr_nested_type): Add NDS32_CRITICAL. - (nds32_isr_info): New field security_level. - (TARGET_ISR_VECTOR_SIZE_4_BYTE): New macro. - * config/nds32/nds32.md (return_internal): Consider critical attribute. - * config/nds32/nds32.opt (misr-secure): New option. - * config/nds32/nds32_init.inc: New file. - * config/nds32/nds32_isr.h: New file. - -2018-08-11 John David Anglin - - * config/pa/pa.md (UNSPEC_MEMORY_BARRIER): New unspec enum. - Update comment for atomic instructions. - (atomic_storeqi, atomic_storehi, atomic_storesi, atomic_storesf, - atomic_loaddf, atomic_loaddf_1, atomic_storedf, atomic_storedf_1): - Remove. - (atomic_loaddi): Revise fence expansion to only emit fence prior to - load for __ATOMIC_SEQ_CST model. - (atomic_loaddi_1): Remove float register target. - (atomic_storedi): Handle CONST_INT values. - (atomic_storedi_1): Remove float register source. Add special case - for zero value. - (memory_barrier): New expander and insn. - -2018-08-11 Jakub Jelinek - - PR tree-optimization/86835 - * tree-ssa-math-opts.c (insert_reciprocals): Even when inserting - new_stmt after def_gsi, make sure to insert new_square_stmt after - that stmt, not 2 stmts before it. - -2018-08-10 Alexander Monakov - - PR target/82418 - * config/i386/i386.md (mul3_highpart): Use DWIH mode iterator - instead of SWI48. - -2018-08-10 Martin Liska - - PR target/83610 - * builtin-types.def (BT_FN_LONG_LONG_LONG_DOUBLE): Add new - function type. - * builtins.c (expand_builtin_expect_with_probability): - New function. - (expand_builtin_expect_with_probability): New function. - (build_builtin_expect_predicate): Add new argumnet probability - for BUILT_IN_EXPECT_WITH_PROBABILITY. - (fold_builtin_expect): - (fold_builtin_2): - (fold_builtin_3): - * builtins.def (BUILT_IN_EXPECT_WITH_PROBABILITY): - * builtins.h (fold_builtin_expect): Set new argument. - * doc/extend.texi: Document __builtin_expect_with_probability. - * doc/invoke.texi: Likewise. - * gimple-fold.c (gimple_fold_call): Pass new argument. - * ipa-fnsummary.c (find_foldable_builtin_expect): Handle - also BUILT_IN_EXPECT_WITH_PROBABILITY. - * predict.c (get_predictor_value): New function. - (expr_expected_value): Add new argument probability. Assume - that predictor and probability are always non-null. - (expr_expected_value_1): Likewise. For __builtin_expect and - __builtin_expect_with_probability set probability. Handle - combination in binary expressions. - (tree_predict_by_opcode): Simplify code by simply calling - get_predictor_value. - (pass_strip_predict_hints::execute): Add handling of - BUILT_IN_EXPECT_WITH_PROBABILITY. - * predict.def (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Add - new predictor. - * tree.h (DECL_BUILT_IN_P): New function. - -2018-08-10 Martin Liska - - PR tree-optimization/85799 - * passes.def: Add argument for pass_strip_predict_hints. - * predict.c (class pass_strip_predict_hints): Add new argument - early_p. - (strip_predictor_early): New function. - (pass_strip_predict_hints::execute): Call the function to - strip predictors. - (strip_predict_hints): New function. - * predict.def: Fix comment. - -2018-08-10 Thomas Preud'homme - - * Makefile.in: Clarify which tm.texi to copy over to assert the - right to grant a GFDL license for all. - -2018-08-09 Jeff Law - - * config/m68k/m68k.c (m68k_adjust_decorated_operand): Remove - unused variable. - -2018-08-09 Andreas Schwab - - * config/m68k/m68k-protos.h (m68k_final_prescan_insn): Remove - prototype. - -2018-08-09 Richard Sandiford - - * tree-vect-loop.c (vectorizable_reduction): Allow inner-loop - reductions for variable-length vectors. - -2018-08-09 David Malcolm - - PR other/84889 - * common.opt (fdiagnostics-show-line-numbers): New option. - * diagnostic-show-locus.c (class layout): Add fields - "m_show_line_numbers_p" and "m_linenum_width"; - (num_digits): New function. - (test_num_digits): New function. - (layout::layout): Initialize new fields. Update m_x_offset - logic to handle any left margin. - (layout::print_source_line): Print line number when requested. - (layout::start_annotation_line): New member function. - (layout::print_annotation_line): Call it. - (layout::print_leading_fixits): Likewise. - (layout::print_trailing_fixits): Likewise. Update calls to - move_to_column for new parameter. - (layout::get_x_bound_for_row): Add "add_left_margin" param and use - it to potentially call start_annotation_line. - (layout::show_ruler): Call start_annotation_line. - (selftest::test_line_numbers_multiline_range): New selftest. - (selftest::diagnostic_show_locus_c_tests): Call test_num_digits - and selftest::test_line_numbers_multiline_range. - * diagnostic.c (diagnostic_initialize): Initialize - show_line_numbers_p. - * diagnostic.h (struct diagnostic_context): Add field - "show_line_numbers_p". - * doc/invoke.texi (Diagnostic Message Formatting Options): Add - -fno-diagnostics-show-line-numbers. - * dwarf2out.c (gen_producer_string): Add - OPT_fdiagnostics_show_line_numbers to the ignored options. - * lto-wrapper.c (merge_and_complain): Likewise to the "pick - one setting" options. - (append_compiler_options): Likewise to the dropped options. - (append_diag_options): Likewise to the passed-on options. - * opts.c (common_handle_option): Handle the new option. - * toplev.c (general_init): Set up global_dc->show_line_numbers_p. - -2018-08-09 Kelvin Nilsen - - * doc/extend.texi (PowerPC AltiVec Built-in Functions Available on - ISA 2.07): Correct spelling of bcdsub to be __builtin_bcdsub. Add - third argument of type "const signed char" to descriptions of - __builtin_bcdadd, __builtin_bcdadd_lt, __builtin_bcdadd_eq, - __builtin_bcdadd_gt, __builtin_bcdadd_ov, __builtin_bcdsub, - __builtin_bcdsub_lt, __builtin_bcdsub_eq, __builtin_bcdsub_gt, - __builtin_bcdsub_ov functions. - -2018-08-09 Richard Sandiford - - PR tree-optimization/86858 - * tree-vect-loop.c (vect_is_simple_reduction): Restore - flow_bb_inside_loop_p calls. - -2018-08-09 Richard Sandiford - - PR tree-optimization/86871 - * tree-vect-stmts.c (vect_transform_stmt): Use gimple_get_lhs - instead of gimple_assign_lhs. - -2018-08-09 Richard Earnshaw - - PR target/86887 - * config/aarch64/aarch64.md (add3_carryinC_zero): Add missing - register constraint to operand 0. - (add3_carryinC): Likewise. - (add3_carryinV_zero, add3_carryinV): Likewise. - -2018-08-09 Martin Liska - - PR c/86895 - * common.opt: Remove extra line. - -2018-08-09 Martin Liska - - * params.def (PARAM_ALIGN_LOOP_ITERATIONS): Remove double dots - at the end of a line, make first letter capital and end up - a sentence with a dot. - (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): Likewise. - (PARAM_LOOP_BLOCK_TILE_SIZE): Likewise. - (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Likewise. - (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP): Likewise. - (PARAM_MAX_ISL_OPERATIONS): Likewise. - (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): Likewise. - (PARAM_PROFILE_FUNC_INTERNAL_ID): Likewise. - (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise. - (PARAM_SLP_MAX_INSNS_IN_BB): Likewise. - (PARAM_IPA_CP_EVAL_THRESHOLD): Likewise. - (PARAM_IPA_CP_RECURSION_PENALTY): Likewise. - (PARAM_IPA_CP_SINGLE_CALL_PENALTY): Likewise. - (PARAM_IPA_CP_LOOP_HINT_BONUS): Likewise. - (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): Likewise. - (PARAM_TREE_REASSOC_WIDTH): Likewise. - (PARAM_HSA_GEN_DEBUG_STORES): Likewise. - (PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS): Likewise. - (PARAM_MAX_VRP_SWITCH_ASSERTIONS): Likewise. - -2018-08-09 Andreas Krebbel - - PR target/84332 - * config/s390/s390.c (s390_option_override_internal): Reduce the - stack-clash-protection-probe-interval param if it would be too big - for z900. - -2018-08-08 Andreas Schwab - - PR target/46179 - * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Don't define. - * config/m68k/m68k.c (handle_move_double): Don't call - m68k_final_prescan_insn. - (m68k_adjust_decorated_operand): Renamed from - m68k_final_prescan_insn, remove first and third operand and - simplify. - (print_operand): Call it. - (print_operand_address): Call it. - -2018-08-08 Nathan Sidwell - - * diagnostic.c (diagnostic_report_current_module): Use - linemap_included_from & linemap_included_from_linemap. - -2018-08-08 Hongbo Zhang - - * config/aarch64/aarch64-cores.def: Add phecda core. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi: Add phecda core. - -2018-08-08 Andreas Krebbel - - PR target/85295 - * config/s390/constraints.md ("NxHD0", "NxSD0"): New constraint - definitions. - * config/s390/s390.md ("movti"): Add more alternatives for - constant to GPR copies. - -2018-08-08 Andreas Krebbel - - * config/s390/s390.c: Fix whitespace damage throughout the file. - * config/s390/s390.h: Likewise. - * config/s390/tpf.h: Likewise. - -2018-08-08 Ilya Leoshkevich - - * config/s390/s390.c (s390_loadrelative_operand_p): - Remove TARGET_CPU_ZARCH usages. - (s390_rtx_costs): Likewise. - (s390_legitimate_constant_p): Likewise. - (s390_cannot_force_const_mem): Likewise. - (legitimate_reload_constant_p): Likewise. - (s390_preferred_reload_class): Likewise. - (legitimize_pic_address): Likewise. - (legitimize_tls_address): Likewise. - (s390_split_branches): Removed. - (s390_add_execute): Removed. - (s390_dump_pool): Remove TARGET_CPU_ZARCH usages. - (s390_mainpool_start): Likewise. - (s390_mainpool_finish): Likewise. - (s390_mainpool_cancel): Removed. - (s390_chunkify_start): Remove TARGET_CPU_ZARCH usages. - (s390_chunkify_cancel): Likewise. - (s390_return_addr_rtx): Likewise. - (s390_register_info): Remove split_branches_pending_p uages. - (s390_optimize_register_info): Likewise. - (s390_init_frame_layout): Remove TARGET_CPU_ZARCH and - split_branches_pending_p usages. - (s390_can_eliminate): Remove TARGET_CPU_ZARCH usages. - (s390_load_got): Likewise. - (s390_expand_split_stack_prologue): Likewise. - (output_asm_nops): Likewise. - (s390_function_profiler): Likewise. - (s390_emit_call): Likewise. - (s390_conditional_register_usage): Likewise. - (s390_optimize_prologue): Likewise. - (s390_reorg): Remove TARGET_CPU_ZARCH and - split_branches_pending_p usages. - (s390_option_override_internal): Remove TARGET_CPU_ZARCH - usages. - (s390_output_indirect_thunk_function): Likewise. - * config/s390/s390.h (TARGET_CPU_ZARCH): Removed. - (TARGET_CPU_ZARCH_P): Removed. - (struct machine_function): Remove split_branches_pending_p. - * config/s390/s390.md: Remove TARGET_CPU_ZARCH usages. - -2018-08-08 Ilya Leoshkevich - - * common/config/s390/s390-common.c (processor_flags_table): - Remove flags. - * config.gcc: Remove with_arch/with_tune support. - * config/s390/2064.md: Remove cpu attribute comparisons. - * config/s390/driver-native.c (s390_host_detect_local_cpu): - Remove MTN. - * config/s390/linux.h (ASM_SPEC): - Remove -march support. - * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): - Use a table to get an arch level. - * config/s390/s390-opts.h (enum processor_type): - Remove enum values. - * config/s390/s390.c - (processor_table): Remove entries, add arch_level values. - (s390_issue_rate): Remove cases. - (s390_option_override): Adjust - s390_option_override_internal() call. - (s390_option_override_internal): Remove deprecation warning. - (s390_valid_target_attribute_tree): Adjust - s390_option_override_internal() call. - * config/s390/s390.h (struct s390_processor): - Share with s390-c.c, add arch_level field. - * config/s390/s390.md: - Remove occurrences in cpu attribute. - * config/s390/s390.opt: Remove -march/-mtune support. - * config/s390/tpf.h (ASM_SPEC): Remove -march support. - * doc/invoke.texi: Remove deprecation warning. - -2018-08-08 Luis Machado - - * config/aarch64/aarch64.c (qdf24xx_vector_cost): New static - global. - (qdf24xx_tunings): Set vector cost structure to - qdf24xx_vector_cost. - - * config/aarch64/aarch64.c (qdf24xx_addrcost_table) - : Set to 3. - -2018-08-07 Richard Sandiford - - PR target/86838 - * config/aarch64/iterators.md (FRECP, frecp_suffix): Delete. - * config/aarch64/aarch64-simd.md - (aarch64_frecp): Fold FRECPE into... - (@aarch64_frecpe): ...here and the move FRECPX to... - (aarch64_frecpx): ...this new pattern. - * config/aarch64/aarch64-simd-builtins.def: Remove comment - about aarch64_frecp. - -2018-08-07 Martin Liska - - PR middle-end/83023 - * predict.c (expr_expected_value_1): Handle DECL_IS_MALLOC, - BUILT_IN_REALLOC and DECL_IS_OPERATOR_NEW. - * predict.def (PRED_MALLOC_NONNULL): New predictor. - * doc/extend.texi: Document that malloc attribute adds - hit to compiler. - -2018-08-06 John David Anglin - - PR target/86785 - * config/pa/pa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - -2018-08-06 Jeff Law - - * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Pass down - the vr_values instance to cprop_into_stmt. - (cprop_into_stmt): Pass vr_values instance down to cprop_operand. - (cprop_operand): Also query EVRP to determine if OP is a constant. - -2018-08-06 Nathan Sidwell - - * diagnostic.c (diagnostic_report_current_module): Reroll - included-at loop. Translate text. - -2018-08-06 David Malcolm - - * function-tests.c (selftest::test_expansion_to_rtl): Call - free_after_compilation. - -2018-08-06 Alan Hayward - - * config/aarch64/aarch64.md: Add clobber highs to tls_desc. - -2018-08-06 Andreas Krebbel - - * config/s390/s390.c (s390_loop_unroll_adjust): Prevent small - loops with memory block operations from getting unrolled. - -2018-08-06 Ulrich Weigand - - PR target/86807 - * config/spu/spu.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - -2018-08-06 Jeff Law - - * reload1.c (forget_old_reloads_1): Adjust CLOBBER_HIGH - assert. - -2018-08-06 Jozef Lawrynowicz - - PR target/86662 - * gcc/tree.c (build_common_tree_nodes): Initialize integer_types array - with all enabled __intN types. - - * gcc/testsuite/gcc.target/msp430/pr86662.c: New test. - -2018-08-06 Alan Hayward - - * alias.c (record_set): Check for clobber high. - * cfgexpand.c (expand_gimple_stmt): Likewise. - * combine-stack-adj.c (single_set_for_csa): Likewise. - * combine.c (find_single_use_1): Likewise. - (set_nonzero_bits_and_sign_copies): Likewise. - (get_combine_src_dest): Likewise. - (is_parallel_of_n_reg_sets): Likewise. - (try_combine): Likewise. - (record_dead_and_set_regs_1): Likewise. - (reg_dead_at_p_1): Likewise. - (reg_dead_at_p): Likewise. - * dce.c (deletable_insn_p): Likewise. - (mark_nonreg_stores_1): Likewise. - (mark_nonreg_stores_2): Likewise. - * df-scan.c (df_find_hard_reg_defs): Likewise. - (df_uses_record): Likewise. - (df_get_call_refs): Likewise. - * dwarf2out.c (mem_loc_descriptor): Likewise. - * haifa-sched.c (haifa_classify_rtx): Likewise. - * ira-build.c (create_insn_allocnos): Likewise. - * ira-costs.c (scan_one_insn): Likewise. - * ira.c (equiv_init_movable_p): Likewise. - (rtx_moveable_p): Likewise. - (interesting_dest_for_shprep): Likewise. - * jump.c (mark_jump_label_1): Likewise. - * postreload-gcse.c (record_opr_changes): Likewise. - * postreload.c (reload_cse_simplify): Likewise. - (struct reg_use): Add source expr. - (reload_combine): Check for clobber high. - (reload_combine_note_use): Likewise. - (reload_cse_move2add): Likewise. - (move2add_note_store): Likewise. - * print-rtl.c (print_pattern): Likewise. - * recog.c (decode_asm_operands): Likewise. - (store_data_bypass_p): Likewise. - (if_test_bypass_p): Likewise. - * regcprop.c (kill_clobbered_value): Likewise. - (kill_set_value): Likewise. - * reginfo.c (reg_scan_mark_refs): Likewise. - * reload1.c (maybe_fix_stack_asms): Likewise. - (eliminate_regs_1): Likewise. - (elimination_effects): Likewise. - (mark_not_eliminable): Likewise. - (scan_paradoxical_subregs): Likewise. - (forget_old_reloads_1): Likewise. - * reorg.c (find_end_label): Likewise. - (try_merge_delay_insns): Likewise. - (redundant_insn): Likewise. - (own_thread_p): Likewise. - (fill_simple_delay_slots): Likewise. - (fill_slots_from_thread): Likewise. - (dbr_schedule): Likewise. - * resource.c (update_live_status): Likewise. - (mark_referenced_resources): Likewise. - (mark_set_resources): Likewise. - * rtl.c (copy_rtx): Likewise. - * rtlanal.c (reg_referenced_p): Likewise. - (single_set_2): Likewise. - (noop_move_p): Likewise. - (note_stores): Likewise. - * sched-deps.c (sched_analyze_reg): Likewise. - (sched_analyze_insn): Likewise. - -2018-08-06 Alan Hayward - - * cse.c (invalidate_reg): New function extracted from... - (invalidate): ...here. - (canonicalize_insn): Check for clobber high. - (invalidate_from_clobbers): invalidate clobber highs. - (invalidate_from_sets_and_clobbers): Likewise. - (count_reg_usage): Check for clobber high. - (insn_live_p): Likewise. - * cselib.c (cselib_expand_value_rtx_1):Likewise. - (cselib_invalidate_regno): Check for clobber in setter. - (cselib_invalidate_rtx): Pass through setter. - (cselib_invalidate_rtx_note_stores): - (cselib_process_insn): Check for clobber high. - * cselib.h (cselib_invalidate_rtx): Add operand. - -2018-08-06 Alan Hayward - - * lra-eliminations.c (lra_eliminate_regs_1): Check for clobber high. - (mark_not_eliminable): Likewise. - * lra-int.h (struct lra_insn_reg): Add clobber high marker. - * lra-lives.c (process_bb_lives): Check for clobber high. - * lra.c (new_insn_reg): Remember clobber highs. - (collect_non_operand_hard_regs): Check for clobber high. - (lra_set_insn_recog_data): Likewise. - (add_regs_to_insn_regno_info): Likewise. - (lra_update_insn_regno_info): Likewise. - -2018-08-06 Alan Hayward - - * rtl.h (reg_is_clobbered_by_clobber_high): Add declarations. - * rtlanal.c (reg_is_clobbered_by_clobber_high): Add function. - -2018-08-06 Alan Hayward - - * emit-rtl.c (verify_rtx_sharing): Check for CLOBBER_HIGH. - (copy_insn_1): Likewise. - (gen_hard_reg_clobber_high): New gen function. - * genconfig.c (walk_insn_part): Check for CLOBBER_HIGH. - * genemit.c (gen_exp): Likewise. - (gen_emit_seq): Pass through info. - (gen_insn): Check for CLOBBER_HIGH. - (gen_expand): Pass through info. - (gen_split): Likewise. - (output_add_clobbers): Likewise. - * genrecog.c (validate_pattern): Check for CLOBBER_HIGH. - (remove_clobbers): Likewise. - * rtl.h (gen_hard_reg_clobber_high): New declaration. - -2018-08-06 Alan Hayward - - * doc/rtl.texi (clobber_high): Add. - (parallel): Add in clobber high - * rtl.c (rtl_check_failed_code3): Add function. - * rtl.def (CLOBBER_HIGH): Add expression. - * rtl.h (RTL_CHECKC3): Add macro. - (rtl_check_failed_code3): Add declaration. - (XC3EXP): Add macro. - -2018-08-05 H.J. Lu - - PR target/86386 - * config/i386/i386.c (ix86_finalize_stack_frame_flags): Set - cfun->machine->max_used_stack_alignment if needed. - -2018-08-04 Martin Sebor - - PR tree-optimization/86571 - * gimple-ssa-sprintf.c (format_floating): Extend upper bound of - NaN output to 4. - -2018-08-03 Sandra Loosemore - - PR target/86799 - * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define. - -2018-08-03 Jeff Law - - PR target/86795 - * config/mn10300/mn10300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - -2018-08-03 David Malcolm - - * doc/gcov.texi (-x): Remove duplicate "to". - * doc/invoke.texi (-Wnoexcept-type): Remove duplicate "calls". - (-Wif-not-aligned): Remove duplicate "is". - (-flto): Remove duplicate "the". - (MicroBlaze Options): In examples of "-mcpu=cpu-type", remove - duplicate "v5.00.b". - (MSP430 Options): Remove duplicate "and" from the description - of "-mgprel-sec=regexp". - (x86 Options): Remove duplicate copies of "vmldLog102" and - vmlsLog104 from description of "-mveclibabi=type". - -2018-08-03 Richard Sandiford - - * internal-fn.h (first_commutative_argument): Declare. - * internal-fn.c (first_commutative_argument): New function. - * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove extra - restrictions for pattern statements. Use first_commutative_argument - to look for commutative operands in calls to internal functions. - -2018-08-03 Aldy Hernandez - - * Makefile.in (wide-int-range.o): New. - * tree-vrp.c: Move all the wide_int_* functions to... - * wide-int-range.cc: ...here. - * tree-vrp.h: Move all the wide_int_* prototypes to... - * wide-int-range.h: ...here. - -2018-08-03 Tom de Vries - - * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): Return - UI_NONE. - * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Remove define. - * except.c (output_function_exception_table): Do early exit if - targetm_common.except_unwind_info (&global_options) == UI_NONE. - -2018-08-03 Martin Liska - - * predict.c (dump_prediction): Change to 2 digits - in fraction part. - -2018-08-03 Siddhesh Poyarekar - - * config/aarch64/falkor.md (falkor_am_1_vxvy_vxvy): Move - neon_dup_q to... - (falkor_am_1_gtov_gtov): ... a new insn reservation. - -2018-07-19 Ilya Leoshkevich - - * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Replace > with >=. - * df-problems.c (df_remove_dead_eq_notes): Replace > with >=. - * dwarf2out.c (mem_loc_descriptor): Replace > with >=. - * lra-constraints.c (spill_hard_reg_in_range): Replace <= with <. - * lra-remat.c (call_used_input_regno_present_p): Replace <= with <. - -2018-08-02 David Malcolm - - * diagnostic-show-locus.c (diagnostic_show_locus): Use - pp_take_prefix when saving the existing prefix. - * diagnostic.c (diagnostic_append_note): Likewise. - * langhooks.c (lhd_print_error_function): Likewise. - * pretty-print.c (pp_set_prefix): Drop the "const" from "prefix" - param's type. Free the existing prefix. - (pp_take_prefix): New function. - (pretty_printer::pretty_printer): Drop the prefix parameter. - Rename the length parameter to match the comment. - (pretty_printer::~pretty_printer): Free the prefix. - * pretty-print.h (pretty_printer::pretty_printer): Drop the prefix - parameter. - (struct pretty_printer): Drop the "const" from "prefix" field's - type and clarify memory management. - (pp_set_prefix): Drop the "const" from the 2nd param. - (pp_take_prefix): New decl. - -2018-08-02 Aaron Sawdey - - * config/rs6000/rs6000-string.c (select_block_compare_mode): Move test - for word_mode_ok here instead of passing as argument. - (expand_block_compare): Change select_block_compare_mode() call. - (expand_strncmp_gpr_sequence): New function. - (expand_strn_compare): Make use of expand_strncmp_gpr_sequence. - -2018-08-02 Jeff Law - - PR target/86790 - * config/m68k/m68k.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86784 - * config/h8300/h8300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - -2018-08-02 Tom de Vries - - PR target/86660 - * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): New - function. Return UI_TARGET unconditionally. - (TARGET_EXCEPT_UNWIND_INFO): Redefine to nvptx_except_unwind_info. - * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Emit commented out '.byte'. - -2018-08-02 Richard Sandiford - - * genemit.c (print_overload_test): Fix typo. - -2018-08-02 Richard Biener - - PR tree-optimization/86816 - * tree-ssa-tail-merge.c (tail_merge_valueize): New function - which checks for value availability before querying it. - (gvn_uses_equal): Use it. - (same_succ_hash): Likewise. - (gimple_equal_p): Likewise. - -2018-08-02 Nick Clifton - - PR target/86813 - * config/stormy16/stormy16.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86810 - * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86810 - * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86803 - * config/rx/rx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86797 - * config/msp430/msp430.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86791 - * config/mcore/mcore.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86789 - * config/m32r/m32r.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86787 - * config/iq2000/iq2000.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): - Define to speculation_safe_value_not_needed. - - PR target/86782 - * config/frv/frv.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to - speculation_safe_value_not_needed. - - PR target/86781 - * config/fr30/fr30.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define - to speculation_safe_value_not_needed. - -2018-08-02 Richard Sandiford - - * doc/md.texi: Expand the documentation of instruction names - to mention port-local uses. Document '@' in pattern names. - * read-md.h (overloaded_instance, overloaded_name): New structs. - (mapping): Declare. - (md_reader::handle_overloaded_name): New member function. - (md_reader::get_overloads): Likewise. - (md_reader::m_first_overload): New member variable. - (md_reader::m_next_overload_ptr): Likewise. - (md_reader::m_overloads_htab): Likewise. - * read-md.c (md_reader::md_reader): Initialize m_first_overload, - m_next_overload_ptr and m_overloads_htab. - * read-rtl.c (iterator_group): Add "type" and "get_c_token" fields. - (get_mode_token, get_code_token, get_int_token): New functions. - (map_attr_string): Add an optional argument that passes back - the associated iterator. - (overloaded_name_hash, overloaded_name_eq_p, named_rtx_p): - (md_reader::handle_overloaded_name, add_overload_instance): New - functions. - (apply_iterators): Handle '@' names. Report an error if '@' - is used without iterators. - (initialize_iterators): Initialize the new iterator_group fields. - * genopinit.c (handle_overloaded_code_for) - (handle_overloaded_gen): New functions. - (main): Use them to print declarations of maybe_code_for_* and - maybe_gen_* functions, and inline definitions of code_for_* and gen_*. - * genemit.c (print_overload_arguments, print_overload_test) - (handle_overloaded_code_for, handle_overloaded_gen): New functions. - (main): Use it to print definitions of maybe_code_for_* and - maybe_gen_* functions. - * config/aarch64/aarch64.c (aarch64_split_128bit_move): Use - gen_aarch64_mov{low,high}_di and gen_aarch64_movdi_{low,high} - instead of explicit mode checks. - (aarch64_split_simd_combine): Likewise gen_aarch64_simd_combine. - (aarch64_split_simd_move): Likewise gen_aarch64_split_simd_mov. - (aarch64_emit_load_exclusive): Likewise gen_aarch64_load_exclusive. - (aarch64_emit_store_exclusive): Likewise gen_aarch64_store_exclusive. - (aarch64_expand_compare_and_swap): Likewise - gen_aarch64_compare_and_swap and gen_aarch64_compare_and_swap_lse - (aarch64_gen_atomic_cas): Likewise gen_aarch64_atomic_cas. - (aarch64_emit_atomic_swap): Likewise gen_aarch64_atomic_swp. - (aarch64_constant_pool_reload_icode): Delete. - (aarch64_secondary_reload): Use code_for_aarch64_reload_movcp - instead of aarch64_constant_pool_reload_icode. Use - code_for_aarch64_reload_mov instead of explicit mode checks. - (rsqrte_type, get_rsqrte_type, rsqrts_type, get_rsqrts_type): Delete. - (aarch64_emit_approx_sqrt): Use gen_aarch64_rsqrte instead of - get_rsqrte_type and gen_aarch64_rsqrts instead of gen_rqrts_type. - (recpe_type, get_recpe_type, recps_type, get_recps_type): Delete. - (aarch64_emit_approx_div): Use gen_aarch64_frecpe instead of - get_recpe_type and gen_aarch64_frecps instead of get_recps_type. - (aarch64_atomic_load_op_code): Delete. - (aarch64_emit_atomic_load_op): Likewise. - (aarch64_gen_atomic_ldop): Use UNSPECV_ATOMIC_* instead of - aarch64_atomic_load_op_code. Use gen_aarch64_atomic_load - instead of aarch64_emit_atomic_load_op. - * config/aarch64/aarch64.md (aarch64_reload_movcp) - (aarch64_reload_movcp, aarch64_reload_mov) - (aarch64_movdi_low, aarch64_movdi_high) - (aarch64_movhigh_di, aarch64_movlow_di): Add a '@' - character before the pattern name. - * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov) - (aarch64_rsqrte, aarch64_rsqrts) - (aarch64_simd_combine, aarch64_frecpe) - (aarch64_frecps): Likewise. - * config/aarch64/atomics.md (atomic_compare_and_swap) - (aarch64_compare_and_swap, aarch64_compare_and_swap_lse) - (aarch64_load_exclusive, aarch64_store_exclusive) - (aarch64_atomic_swp, aarch64_atomic_cas) - (aarch64_atomic_load): Likewise. - -2018-08-02 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_float_const_representable_p): - Allow HFmode constants if TARGET_FP_F16INST. - -2018-08-02 Jackson Woodruff - - PR target/86014 - * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): - No longer check last store for clobber of address register. - -2018-08-02 Martin Liska - - PR gcov-profile/86817 - * gcov.c (process_all_functions): New function. - (main): Call it. - (process_file): Move functions processing to - process_all_functions. - -2018-08-02 David Malcolm - - * dumpfile.c (dump_user_location_t::dump_user_location_t): Add - "const" to the "gimple *" and "rtx_insn *" parameters. - * dumpfile.h (dump_user_location_t::dump_user_location_t): - Likewise. - (dump_location_t::dump_location_t): Likewise. - -2018-08-01 Martin Sebor - - PR tree-optimization/86650 - * gimple-pretty-print.c (percent_G_format): Accept a "gimple *" - rather than a "gcall *". Directly pass the data of interest - to percent_K_format, rather than building a temporary CALL_EXPR - to hold it. - * gimple-fold.c (gimple_fold_builtin_strncpy): Adjust. - (gimple_fold_builtin_strncat): Adjust. - * gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Replace - gcall* argument with gimple*. - * gimple-ssa-warn-restrict.c (check_call): Same. - (wrestrict_dom_walker::before_dom_children): Same. - (builtin_access::builtin_access): Same. - (check_bounds_or_overlap): Same - (maybe_diag_overlap): Same. - (maybe_diag_offset_bounds): Same. - * tree-diagnostic.c (default_tree_printer): Move usage of - EXPR_LOCATION (t) and TREE_BLOCK (t) from within percent_K_format - to this callsite. - * tree-pretty-print.c (percent_K_format): Add argument. - * tree-pretty-print.h: Add argument. - * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Adjust. - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Adjust. - (maybe_diag_stxncpy_trunc): Same. - (handle_builtin_stxncpy): Same. - (handle_builtin_strcat): Same. - -2018-08-01 Richard Sandiford - - * match.pd: Optimise pointer range checks. - -2018-08-01 Richard Sandiford - - PR tree-optimization/86758 - * tree-vect-stmts.c (vectorizable_simd_clone_call): Don't try - to remove pattern statements. - -2018-08-01 Richard Sandiford - - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Use the - result of dfs_enumerate_from when constructing stmt_vec_infos, - instead of additionally calling get_loop_body. - -2018-08-01 Richard Sandiford - - * tree-vectorizer.h (vect_create_data_ref_ptr): Remove inv_p - parameter. - * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise. - When creating an iv, assert that the step is not known to be zero. - (vect_setup_realignment): Update call accordingly. - * tree-vect-stmts.c (vectorizable_store): Likewise. - (vectorizable_load): Likewise. Handle VMAT_INVARIANT separately. - -2018-08-01 Richard Sandiford - - * tree-vectorizer.h (vect_stmt_to_vectorize): New function. - * tree-vect-loop.c (vect_update_vf_for_slp): Use it. - (vectorizable_reduction): Likewise. - * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. - (vect_detect_hybrid_slp_stmts): Likewise. - * tree-vect-stmts.c (vect_is_simple_use): Likewise. - -2018-08-01 Aldy Hernandez - - * tree-vrp (zero_nonzero_bits_from_bounds): Rename to... - (wide_int_set_zero_nonzero_bits): ...this. - (zero_nonzero_bits_from_vr): Rename to... - (vrp_set_zero_nonzero_bits): ...this. - (extract_range_from_multiplicative_op_1): Abstract wide int - code... - (wide_int_range_multiplicative_op): ...here. - (extract_range_from_binary_expr_1): Extract wide int binary - operations into their own functions. - (wide_int_range_lshift): New. - (wide_int_range_can_optimize_bit_op): New. - (wide_int_range_shift_undefined_p): New. - (wide_int_range_bit_xor): New. - (wide_int_range_bit_ior): New. - (wide_int_range_bit_and): New. - (wide_int_range_trunc_mod): New. - (extract_range_into_wide_ints): New. - (vrp_shift_undefined_p): New. - (extract_range_from_multiplicative_op): New. - (vrp_can_optimize_bit_op): New. - * tree-vrp.h (value_range::dump): New. - (wide_int_range_multiplicative_op): New. - (wide_int_range_lshift):New. - (wide_int_range_shift_undefined_p): New. - (wide_int_range_bit_xor): New. - (wide_int_range_bit_ior): New. - (wide_int_range_bit_and): New. - (wide_int_range_trunc_mod): New. - (zero_nonzero_bits_from_bounds): Rename to... - (wide_int_set_zero_nonzero_bits): ...this. - (zero_nonzero_bits_from_vr): Rename to... - (vrp_set_zero_nonzero_bits): ...this. - (range_easy_mask_min_max): Rename to... - (wide_int_range_can_optimize_bit_op): this. - * vr-values.c (simplify_bit_ops_using_ranges): Rename - zero_nonzero_bits_from_vr into vrp_set_zero_nonzero_bits. - -2018-08-01 Richard Sandiford - - * tree-vectorizer.h (vect_orig_stmt): New function. - * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Use it. - * tree-vect-loop.c (vect_model_reduction_cost): Likewise. - (vect_create_epilog_for_reduction): Likewise. - (vectorizable_live_operation): Likewise. - * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise. - (vect_detect_hybrid_slp_stmts, vect_schedule_slp): Likewise. - * tree-vect-stmts.c (vectorizable_call): Likewise. - (vectorizable_simd_clone_call, vect_remove_stores): Likewise. - -2018-08-01 Richard Sandiford - - * tree-vectorizer.h (vect_transform_stmt): Remove grouped_store - argument. - * tree-vect-stmts.c (vect_transform_stmt): Likewise. - * tree-vect-loop.c (vect_transform_loop_stmt): Update call accordingly. - (vect_transform_loop): Likewise. - * tree-vect-slp.c (vect_schedule_slp_instance): Likewise. - -2018-08-01 Richard Sandiford - - * tree-vectorizer.h (vect_schedule_slp): Return void. - * tree-vect-slp.c (vect_schedule_slp_instance): Likewise. - (vect_schedule_slp): Likewise. - -2018-08-01 Richard Sandiford - - * tree-vect-loop.c (vect_transform_loop_stmt): Remove slp_scheduled - argument. - (vect_transform_loop): Update calls accordingly. Schedule SLP - instances before the main loop, if any exist. - -2018-08-01 Richard Sandiford - - PR tree-optimization/86749 - * tree-vect-patterns.c (vect_determine_min_output_precision_1): - If the lhs is used in a COND_EXPR, check that it is being used - as the "then" or "else" value. - -2018-08-01 Tom de Vries - - PR target/86800 - * config/nvptx/nvptx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to - speculation_safe_value_not_needed. - -2018-08-01 Richard Biener - - * tree-ssa-sccvn.c (visit_phi): Compare invariant addresses - as base and offset. - -2018-08-01 Martin Liska - - * value-prof.c (gimple_divmod_fixed_value_transform): Unify - format how successful transformation is dumped. - (gimple_mod_pow2_value_transform): Likewise. - (gimple_mod_subtract_transform): Likewise. - (gimple_stringops_transform): Likewise. - -2018-08-01 Martin Liska - - PR value-prof/35543 - * value-prof.c (interesting_stringop_to_profile_p): - Simplify the code and add BUILT_IN_MEMMOVE. - (gimple_stringops_transform): Likewise. - -2018-08-01 Sam Tebbs - - * config/aarch64/aarch64-simd.md - (*aarch64_get_lane_zero_extendsi): Rename to... - (*aarch64_get_lane_zero_extend): ... This and - use GPI iterator instead of SI mode. - -2018-08-01 Richard Earnshaw - - * config/rs6000/rs6000.md (speculation_barrier): Renamed from - rs6000_speculation_barrier. - * config/rs6000/rs6000.c (rs6000_expand_builtin): Adjust for - new barrier pattern name. - -2018-08-01 Richard Earnshaw - - * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER. - (speculation_barrier): New insn. - -2018-08-01 Richard Biener - - PR bootstrap/86724 - * graphite.h: Include isl/id.h and isl/space.h to allow build - with ISL 0.20. - -2018-08-01 Jan Willem Jagersma - - PR target/86651 - * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO - mode for COFF targets. - * defaults.h (TARGET_COFF): Define. - * config/i386/djgpp.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END, - TARGET_COFF): Define. - (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): Declare. - * config/i386/djgpp.c (saved_debug_info_level): New static variable. - (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): New functions. - -2018-07-31 Alexandre Oliva - - * gimple-streamer-in.c (input_bb): Restore BB discriminator. - * gimple-streamer-out.c (output_bb): Save it. - * lto-streamer-in.c (input_struct_function_base): Restore - instance discriminator if available. Create map on demand. - * lto-streamer-out.c (output_struct_function_base): Save it if - available. - * final.c (decl_to_instance_map): Document LTO strategy. - -2018-07-31 Alexandre Oliva - Olivier Hainque - - * debug.h (decl_to_instance_map_t): New type. - (decl_to_instance_map): Declare. - (maybe_create_decl_to_instance_map): New inline function. - * final.c (bb_discriminator, last_bb_discriminator): New statics, - to track basic block discriminators. - (final_start_function_1): Initialize them. - (final_scan_insn_1): On NOTE_INSN_BASIC_BLOCK, track - bb_discriminator. - (decl_to_instance_map): New variable. - (map_decl_to_instance, maybe_set_discriminator): New functions. - (notice_source_line): Set discriminator. - -2018-07-31 Ian Lance Taylor - - * targhooks.c (default_have_speculation_safe_value): Add - ATTRIBUTE_UNUSED. - -2018-07-31 David Malcolm - - * dump-context.h: Include "pretty-print.h". - (dump_context::refresh_dumps_are_enabled): New decl. - (dump_context::emit_item): New decl. - (class dump_context): Add fields "m_test_pp" and - "m_test_pp_flags". - (temp_dump_context::temp_dump_context): Add param "test_pp_flags". - (temp_dump_context::get_dumped_text): New decl. - (class temp_dump_context): Add field "m_pp". - * dumpfile.c (refresh_dumps_are_enabled): Convert to... - (dump_context::refresh_dumps_are_enabled): ...and add a test for - m_test_pp. - (set_dump_file): Update for above change. - (set_alt_dump_file): Likewise. - (dump_loc): New overload, taking a pretty_printer *. - (dump_context::dump_loc): Call end_any_optinfo. Dump the location - to any test pretty-printer. - (make_item_for_dump_gimple_stmt): New function, adapted from - optinfo::add_gimple_stmt. - (dump_context::dump_gimple_stmt): Call it, and use the result, - eliminating the direct usage of dump_file and alt_dump_file in - favor of indirectly using them via emit_item. - (make_item_for_dump_gimple_expr): New function, adapted from - optinfo::add_gimple_expr. - (dump_context::dump_gimple_expr): Call it, and use the result, - eliminating the direct usage of dump_file and alt_dump_file in - favor of indirectly using them via emit_item. - (make_item_for_dump_generic_expr): New function, adapted from - optinfo::add_tree. - (dump_context::dump_generic_expr): Call it, and use the result, - eliminating the direct usage of dump_file and alt_dump_file in - favor of indirectly using them via emit_item. - (make_item_for_dump_printf_va): New function, adapted from - optinfo::add_printf_va. - (make_item_for_dump_printf): New function. - (dump_context::dump_printf_va): Call make_item_for_dump_printf_va, - and use the result, eliminating the direct usage of dump_file and - alt_dump_file in favor of indirectly using them via emit_item. - (make_item_for_dump_dec): New function. - (dump_context::dump_dec): Call it, and use the result, - eliminating the direct usage of dump_file and alt_dump_file in - favor of indirectly using them via emit_item. - (make_item_for_dump_symtab_node): New function, adapted from - optinfo::add_symtab_node. - (dump_context::dump_symtab_node): Call it, and use the result, - eliminating the direct usage of dump_file and alt_dump_file in - favor of indirectly using them via emit_item. - (dump_context::begin_scope): Reimplement, avoiding direct usage - of dump_file and alt_dump_file in favor of indirectly using them - via emit_item. - (dump_context::emit_item): New member function. - (temp_dump_context::temp_dump_context): Add param "test_pp_flags". - Set up test pretty-printer on the underlying context. Call - refresh_dumps_are_enabled. - (temp_dump_context::~temp_dump_context): Call - refresh_dumps_are_enabled. - (temp_dump_context::get_dumped_text): New member function. - (selftest::verify_dumped_text): New function. - (ASSERT_DUMPED_TEXT_EQ): New macro. - (selftest::test_capture_of_dump_calls): Run all tests twice, with - and then without optinfo enabled. Add uses of - ASSERT_DUMPED_TEXT_EQ to all tests. Add test of nested scopes. - * dumpfile.h: Update comment for the dump_* API. - * optinfo-emit-json.cc - (selftest::test_building_json_from_dump_calls): Update for new - param for temp_dump_context ctor. - * optinfo.cc (optinfo_item::optinfo_item): Remove "owned" param - and "m_owned" field. - (optinfo_item::~optinfo_item): Likewise. - (optinfo::add_item): New member function. - (optinfo::emit): Update comment. - (optinfo::add_string): Delete. - (optinfo::add_printf): Delete. - (optinfo::add_printf_va): Delete. - (optinfo::add_gimple_stmt): Delete. - (optinfo::add_gimple_expr): Delete. - (optinfo::add_tree): Delete. - (optinfo::add_symtab_node): Delete. - (optinfo::add_dec): Delete. - * optinfo.h (class dump_context): New forward decl. - (optinfo::add_item): New decl. - (optinfo::add_string): Delete. - (optinfo::add_printf): Delete. - (optinfo::add_printf_va): Delete. - (optinfo::add_gimple_stmt): Delete. - (optinfo::add_gimple_expr): Delete. - (optinfo::add_tree): Delete. - (optinfo::add_symtab_node): Delete. - (optinfo::add_dec): Delete. - (optinfo::add_poly_int): Delete. - (optinfo_item::optinfo_item): Remove "owned" param. - (class optinfo_item): Remove field "m_owned". - -2018-07-31 Jozef Lawrynowicz - - PR middle-end/86705 - * gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when - MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the - requested variable alignment. - (expand_one_ssa_partition): Likewise. - (expand_one_var): Likewise. - -2018-07-31 Richard Earnshaw - - * config/pdp11/pdp11.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine - to speculation_safe_value_not_needed. - -2018-07-31 Richard Earnshaw - - * targhooks.h (speculation_safe_value_not_needed): New prototype. - * targhooks.c (speculation_safe_value_not_needed): New function. - * target.def (have_speculation_safe_value): Update documentation. - * doc/tm.texi: Regenerated. - -2018-07-31 Richard Earnshaw - - * config/aarch64/iterators.md (ALLI_TI): New iterator. - * config/aarch64/aarch64.md (despeculate_copy): New - expand. - (despeculate_copy_insn): New insn. - (despeculate_copyti_insn): New insn. - (despeculate_simple): New insn - (despeculate_simpleti): New insn. - * config/aarch64/aarch64.c (aarch64_speculation_safe_value): New - function. - (TARGET_SPECULATION_SAFE_VALUE): Redefine to - aarch64_speculation_safe_value. - (aarch64_print_operand): Handle const0_rtx in modifier 'H'. - -2018-07-31 Richard Earnshaw - - * config/aarch64/aarch64-speculation.cc: New file. - * config/aarch64/aarch64-passes.def (pass_track_speculation): Add - before pass_reorder_blocks. - * config/aarch64/aarch64-protos.h (make_pass_track_speculation): Add - prototype. - * config/aarch64/aarch64.c (aarch64_conditional_register_usage): Fix - X14 and X15 when tracking speculation. - * config/aarch64/aarch64.md (register name constants): Add - SPECULATION_TRACKER_REGNUM and SPECULATION_SCRATCH_REGNUM. - (unspec): Add UNSPEC_SPECULATION_TRACKER. - (speculation_barrier): New insn attribute. - (cmp): Allow SP in comparisons. - (speculation_tracker): New insn. - (speculation_barrier): Add speculation_barrier attribute. - * config/aarch64/t-aarch64: Add make rule for aarch64-speculation.o. - * config.gcc (aarch64*-*-*): Add aarch64-speculation.o to extra_objs. - * doc/invoke.texi (AArch64 Options): Document -mtrack-speculation. - -2018-07-31 Richard Earnshaw - - * config/aarch64/aarch64.md (cb1): Disable when - aarch64_track_speculation is true. - (tb1): Likewise. - * config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not - generate CB[N]Z when tracking speculation. - (aarch64_split_compare_and_swap): Likewise. - (aarch64_split_atomic_op): Likewise. - -2018-07-31 Richard Earnshaw - - * config/aarch64/aarch64.opt (mtrack-speculation): New target option. - -2018-07-31 Richard Earnshaw - - * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER. - (speculation_barrier): New insn. - -2018-07-31 Richard Earnshaw - - * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER. - * config/arm/arm.md (speculation_barrier): New expand. - (speculation_barrier_insn): New pattern. - -2018-07-31 Richard Earnshaw - - * builtin-types.def (BT_FN_PTR_PTR_VAR): New function type. - (BT_FN_I1_I1_VAR, BT_FN_I2_I2_VAR, BT_FN_I4_I4_VAR): Likewise. - (BT_FN_I8_I8_VAR, BT_FN_I16_I16_VAR): Likewise. - * builtin-attrs.def (ATTR_NOVOPS_NOTHROW_LEAF_LIST): New attribute - list. - * builtins.def (BUILT_IN_SPECULATION_SAFE_VALUE_N): New builtin. - (BUILT_IN_SPECULATION_SAFE_VALUE_PTR): New internal builtin. - (BUILT_IN_SPECULATION_SAFE_VALUE_1): Likewise. - (BUILT_IN_SPECULATION_SAFE_VALUE_2): Likewise. - (BUILT_IN_SPECULATION_SAFE_VALUE_4): Likewise. - (BUILT_IN_SPECULATION_SAFE_VALUE_8): Likewise. - (BUILT_IN_SPECULATION_SAFE_VALUE_16): Likewise. - * builtins.c (expand_speculation_safe_value): New function. - (expand_builtin): Call it. - * doc/cpp.texi: Document predefine __HAVE_SPECULATION_SAFE_VALUE. - * doc/extend.texi: Document __builtin_speculation_safe_value. - * doc/md.texi: Document "speculation_barrier" pattern. - * doc/tm.texi.in: Pull in TARGET_SPECULATION_SAFE_VALUE and - TARGET_HAVE_SPECULATION_SAFE_VALUE. - * doc/tm.texi: Regenerated. - * target.def (have_speculation_safe_value, speculation_safe_value): New - hooks. - * targhooks.c (default_have_speculation_safe_value): New function. - (default_speculation_safe_value): New function. - * targhooks.h (default_have_speculation_safe_value): Add prototype. - (default_speculation_safe_value): Add prototype. - -2018-07-31 David Malcolm - - * dump-context.h (dump_context::dump_loc): New decl. - * dumpfile.c (dump_context::dump_loc): New member function. - (dump_context::dump_gimple_stmt_loc): Reimplement using dump_loc - and dump_gimple_stmt. - (dump_context::dump_gimple_expr_loc): Likewise, using - dump_gimple_expr. - (dump_context::dump_generic_expr_loc): Likewise, using - dump_generic_expr. - (dump_context::dump_printf_loc_va): Likewise, using - dump_printf_va. - (dump_context::begin_scope): Explicitly using the global function - "dump_loc", rather than the member function. - -2018-07-31 Martin Sebor - - PR tree-optimization/86741 - * tree-vrp.c (vrp_prop::check_mem_ref): Avoid incomplete types. - -2018-07-31 Andreas Krebbel - - * config/s390/s390.c (s390_expand_setmem): Make the unrolling to - depend on whether prefetch instructions will be emitted or not. - Use TARGET_SETMEM_PFD for checking whether prefetch instructions - will be emitted or not. - * config/s390/s390.h (TARGET_SETMEM_PREFETCH_DISTANCE) - (TARGET_SETMEM_PFD): New macros. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (stmt_vec_info): Turn back into a typedef. - (NULL_STMT_VEC_INFO): Delete. - (stmt_vec_info::operator*): Likewise. - (stmt_vec_info::operator gimple *): Likewise. - * tree-vect-loop.c (vectorizable_reduction): Use NULL instead - of NULL_STMT_VEC_INFO. - * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. - (vect_reassociating_reduction_p): Likewise. - * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise. - (vectorizable_store): Likewise. - * tree-vectorizer.c (vec_info::set_vinfo_for_stmt): Likewise. - (vec_info::free_stmt_vec_infos): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vect_stmt_in_region_p): Delete. - * tree-vectorizer.c (vect_stmt_in_region_p): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::new_vinfo_for_stmt) - (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos) - (vec_info::free_stmt_vec_info): New private member functions. - (set_stmt_vec_info_vec, free_stmt_vec_infos, vinfo_for_stmt) - (set_vinfo_for_stmt, new_stmt_vec_info, free_stmt_vec_info): Delete. - * tree-parloops.c (gather_scalar_reductions): Remove calls to - set_stmt_vec_info_vec and free_stmt_vec_infos. - * tree-vect-loop.c (_loop_vec_info): Remove call to - set_stmt_vec_info_vec. - * tree-vect-stmts.c (new_stmt_vec_info, set_stmt_vec_info_vec) - (free_stmt_vec_infos, free_stmt_vec_info): Delete in favor of... - * tree-vectorizer.c (vec_info::new_stmt_vec_info) - (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos) - (vec_info::free_stmt_vec_info): ...these new functions. Remove - assignments in {vec_info::,}new_stmt_vec_info that are redundant - with the clearing in the xcalloc. - (stmt_vec_info_vec): Delete. - (vec_info::vec_info): Don't call set_stmt_vec_info_vec. - (vectorize_loops): Likewise. - (vec_info::~vec_info): Remove argument from call to - free_stmt_vec_infos. - (vec_info::add_stmt): Remove vinfo argument from call to - new_stmt_vec_info. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (free_stmt_vec_info): Take a stmt_vec_info - rather than a gimple stmt. - * tree-vect-stmts.c (free_stmt_vec_info): Likewise. Don't free - information for pattern statements when passed the original - statement; instead wait to be passed the pattern statement itself. - Don't call set_vinfo_for_stmt here. - (free_stmt_vec_infos): Update call to free_stmt_vec_info. - * tree-vect-loop.c (_loop_vec_info::~loop_vec_info): Don't free - stmt_vec_infos here. - * tree-vect-slp.c (_bb_vec_info::~bb_vec_info): Likewise. - * tree-vectorizer.c (vec_info::remove_stmt): Nullify the statement's - stmt_vec_infos entry. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::replace_stmt): Declare. - * tree-vectorizer.c (vec_info::replace_stmt): New function. - * tree-vect-slp.c (vect_remove_slp_scalar_calls): Use it. - * tree-vect-stmts.c (vectorizable_call): Likewise. - (vectorizable_simd_clone_call): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::remove_stmt): Declare. - * tree-vectorizer.c (vec_info::remove_stmt): New function. - * tree-vect-loop-manip.c (vect_set_loop_condition): Use it. - * tree-vect-loop.c (vect_transform_loop): Likewise. - * tree-vect-slp.c (vect_schedule_slp): Likewise. - * tree-vect-stmts.c (vect_remove_stores): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::lookup_dr): New member function. - (vect_dr_stmt): Delete. - * tree-vectorizer.c (vec_info::lookup_dr): New function. - * tree-vect-loop-manip.c (vect_update_inits_of_drs): Use it instead - of DR_VECT_AUX. - * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr) - (vect_analyze_data_ref_dependence, vect_record_base_alignments) - (vect_verify_datarefs_alignment, vect_peeling_supportable) - (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list) - (vect_analyze_data_refs): Likewise. - (vect_slp_analyze_data_ref_dependence): Likewise. Take a vec_info - argument. - (vect_find_same_alignment_drs): Likewise. - (vect_slp_analyze_node_dependences): Update calls accordingly. - (vect_analyze_data_refs_alignment): Likewise. Use vec_info::lookup_dr - instead of DR_VECT_AUX. - (vect_get_peeling_costs_all_drs): Take a loop_vec_info instead - of a vector data references. Use vec_info::lookup_dr instead of - DR_VECT_AUX. - (vect_peeling_hash_get_lowest_cost): Update calls accordingly. - (vect_enhance_data_refs_alignment): Likewise. Use vec_info::lookup_dr - instead of DR_VECT_AUX. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_loop_vec_info::unaligned_dr): Change to - dr_vec_info. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update - accordingly. - * tree-vect-loop.c (vect_analyze_loop_2): Likewise. - * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise. - (vect_gen_prolog_loop_niters): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (set_dr_misalignment, dr_misalignment) - (DR_TARGET_ALIGNMENT, aligned_access_p, known_alignment_for_access_p) - (vect_known_alignment_in_bytes, vect_dr_behavior) - (vect_get_scalar_dr_size): Take references as dr_vec_infos - instead of data_references. Update calls to other routines for - which the same change has been made. - * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Take - dr_vec_infos instead of stmt_vec_infos. - (vect_analyze_data_ref_dependence): Update call accordingly. - (vect_slp_analyze_data_ref_dependence) - (vect_record_base_alignments): Use DR_VECT_AUX. - (vect_calculate_target_alignment, vect_compute_data_ref_alignment) - (vect_update_misalignment_for_peel, verify_data_ref_alignment) - (vector_alignment_reachable_p, vect_get_data_access_cost) - (vect_peeling_supportable, vect_analyze_group_access_1) - (vect_analyze_group_access, vect_analyze_data_ref_access) - (vect_vfa_segment_size, vect_vfa_access_size, vect_vfa_align) - (vect_compile_time_alias, vect_small_gap_p) - (vectorizable_with_step_bound_p, vect_duplicate_ssa_name_ptr_info): - (vect_supportable_dr_alignment): Take references as dr_vec_infos - instead of data_references. Update calls to other routines for - which the same change has been made. - (vect_verify_datarefs_alignment, vect_get_peeling_costs_all_drs) - (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment) - (vect_slp_analyze_and_verify_node_alignment) - (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list) - (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr) - (vect_setup_realignment): Use dr_vec_infos. Update calls after - above changes. - (_vect_peel_info::dr): Replace with... - (_vect_peel_info::dr_info): ...this new field. - (vect_peeling_hash_get_most_frequent) - (vect_peeling_hash_choose_best_peeling): Update accordingly. - (vect_peeling_hash_get_lowest_cost): - (vect_enhance_data_refs_alignment): Likewise. Update calls to other - routines for which the same change has been made. - (vect_peeling_hash_insert): Likewise. Take a dr_vec_info instead of a - data_reference. - * tree-vect-loop-manip.c (get_misalign_in_elems) - (vect_gen_prolog_loop_niters): Use dr_vec_infos. Update calls after - above changes. - * tree-vect-loop.c (vect_analyze_loop_2): Likewise. - * tree-vect-stmts.c (vect_get_store_cost, vect_get_load_cost) - (vect_truncate_gather_scatter_offset, compare_step_with_zero) - (get_group_load_store_type, get_negative_load_store_type) - (vect_get_data_ptr_increment, vectorizable_store) - (vectorizable_load): Likewise. - (ensure_base_align): Take a dr_vec_info instead of a data_reference. - Update calls to other routines for which the same change has been made. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::move_dr): New member function. - (dataref_aux): Rename to... - (dr_vec_info): ...this and add "dr" and "stmt" fields. - (_stmt_vec_info::dr_aux): Update accordingly. - (_stmt_vec_info::data_ref_info): Delete. - (STMT_VINFO_GROUPED_ACCESS, DR_GROUP_FIRST_ELEMENT) - (DR_GROUP_NEXT_ELEMENT, DR_GROUP_SIZE, DR_GROUP_STORE_COUNT) - (DR_GROUP_GAP, DR_GROUP_SAME_DR_STMT, REDUC_GROUP_FIRST_ELEMENT): - (REDUC_GROUP_NEXT_ELEMENT, REDUC_GROUP_SIZE): Use dr_aux.dr instead - of data_ref. - (STMT_VINFO_DATA_REF): Likewise. Turn into an lvalue. - (STMT_VINFO_DR_INFO): New macro. - (DR_VECT_AUX): Use STMT_VINFO_DR_INKFO and vect_dr_stmt. - (set_dr_misalignment): Update after rename of dataref_aux. - (vect_dr_stmt): Move earlier in file. Return dr_aux.stmt. - * tree-vect-stmts.c (new_stmt_vec_info): Remove redundant - initialization of STMT_VINFO_DATA_REF. - * tree-vectorizer.c (vec_info::move_dr): New function. - * tree-vect-patterns.c (vect_recog_bool_pattern) - (vect_recog_mask_conversion_pattern) - (vect_recog_gather_scatter_pattern): Use it. - * tree-vect-data-refs.c (vect_analyze_data_refs): Initialize - the "dr" and "stmt" fields of dr_vec_info instead of - STMT_VINFO_DATA_REF. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info::pattern_stmt_p): New field. - (is_pattern_stmt_p): Use it. - * tree-vect-patterns.c (vect_init_pattern_stmt): Set pattern_stmt_p - on pattern statements. - -2018-07-31 Richard Sandiford - - * tree-vect-patterns.c (vect_mark_pattern_stmts): Take the - original stmt as a stmt_vec_info rather than a gimple stmt. - (vect_pattern_recog_1): Take the statement directly as a - stmt_vec_info, rather than via a gimple_stmt_iterator. - Update call to vect_mark_pattern_stmts. - (vect_pattern_recog): Update calls accordingly. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vect_get_vec_defs_for_stmt_copy) - (vect_get_vec_def_for_stmt_copy): Take a vec_info rather than - a vect_def_type for the first argument. - * tree-vect-stmts.c (vect_get_vec_defs_for_stmt_copy): Likewise. - (vect_get_vec_def_for_stmt_copy): Likewise. Return the original - operand if it isn't defined by a vectorized statement. - (vect_build_gather_load_calls): Remove the mask_dt argument and - update calls to vect_get_vec_def_for_stmt_copy. - (vectorizable_bswap): Likewise the dt argument. - (vectorizable_call): Update calls to vectorizable_bswap and - vect_get_vec_def_for_stmt_copy. - (vectorizable_simd_clone_call, vectorizable_assignment) - (vectorizable_shift, vectorizable_operation, vectorizable_condition) - (vectorizable_comparison): Update calls to - vect_get_vec_def_for_stmt_copy. - (vectorizable_store): Likewise. Remove now-unnecessary calls to - vect_is_simple_use. - (vect_get_loop_based_defs): Remove dt argument and update call - to vect_get_vec_def_for_stmt_copy. - (vectorizable_conversion): Update calls to vect_get_loop_based_defs - and vect_get_vec_def_for_stmt_copy. - (vectorizable_load): Update calls to vect_build_gather_load_calls - and vect_get_vec_def_for_stmt_copy. - * tree-vect-loop.c (vect_create_epilog_for_reduction) - (vectorizable_reduction, vectorizable_live_operation): Update calls - to vect_get_vec_def_for_stmt_copy. - -2018-07-31 Richard Sandiford - - * tree-vect-data-refs.c (vect_record_base_alignment): Replace vec_info - and gimple stmt arguments with a stmt_vec_info. - (vect_record_base_alignments): Update calls accordingly. - * tree-vect-slp.c (vect_record_max_nunits): Replace vec_info - and gimple stmt arguments with a stmt_vec_info. - (vect_build_slp_tree_1): Remove vinfo argument and update call - to vect_record_max_nunits. - (vect_build_slp_tree_2): Update calls to vect_build_slp_tree_1 - and vect_record_max_nunits. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (nested_in_vect_loop_p): Move further down - file and take a stmt_vec_info instead of a gimple stmt. - (supportable_widening_operation, vect_finish_replace_stmt) - (vect_finish_stmt_generation, vect_get_store_rhs) - (vect_get_vec_def_for_operand_1, vect_get_vec_def_for_operand) - (vect_get_vec_defs, vect_init_vector, vect_transform_stmt) - (vect_remove_stores, vect_analyze_stmt, vectorizable_condition) - (vect_get_smallest_scalar_type, vect_check_gather_scatter) - (vect_create_data_ref_ptr, bump_vector_ptr) - (vect_permute_store_chain, vect_setup_realignment) - (vect_transform_grouped_load, vect_record_grouped_load_vectors) - (vect_create_addr_base_for_vector_ref, vectorizable_live_operation) - (vectorizable_reduction, vectorizable_induction) - (get_initial_def_for_reduction, is_simple_and_all_uses_invariant) - (vect_get_place_in_interleaving_chain): Take stmt_vec_infos rather - than gimple stmts as arguments. - * tree-vect-data-refs.c (vect_get_smallest_scalar_type) - (vect_preserves_scalar_order_p, vect_slp_analyze_node_dependences) - (can_group_stmts_p, vect_check_gather_scatter) - (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr) - (bump_vector_ptr, vect_permute_store_chain, vect_setup_realignment) - (vect_permute_load_chain, vect_shift_permute_load_chain) - (vect_transform_grouped_load) - (vect_record_grouped_load_vectors): Likewise. - * tree-vect-loop.c (vect_fixup_reduc_chain) - (get_initial_def_for_reduction, vect_create_epilog_for_reduction) - (vectorize_fold_left_reduction, is_nonwrapping_integer_induction) - (vectorizable_reduction, vectorizable_induction) - (vectorizable_live_operation, vect_loop_kill_debug_uses): Likewise. - * tree-vect-patterns.c (type_conversion_p, adjust_bool_stmts) - (vect_get_load_store_mask): Likewise. - * tree-vect-slp.c (vect_get_place_in_interleaving_chain) - (vect_analyze_slp_instance, vect_mask_constant_operand_p): Likewise. - * tree-vect-stmts.c (vect_mark_relevant) - (is_simple_and_all_uses_invariant) - (exist_non_indexing_operands_for_use_p, process_use) - (vect_init_vector_1, vect_init_vector, vect_get_vec_def_for_operand_1) - (vect_get_vec_def_for_operand, vect_get_vec_defs) - (vect_finish_stmt_generation_1, vect_finish_replace_stmt) - (vect_finish_stmt_generation, vect_truncate_gather_scatter_offset) - (compare_step_with_zero, vect_get_store_rhs, get_group_load_store_type) - (get_negative_load_store_type, get_load_store_type) - (vect_check_load_store_mask, vect_check_store_rhs) - (vect_build_gather_load_calls, vect_get_strided_load_store_ops) - (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call) - (vect_create_vectorized_demotion_stmts, vectorizable_conversion) - (vectorizable_assignment, vectorizable_shift, vectorizable_operation) - (get_group_alias_ptr_type, vectorizable_store, hoist_defs_of_uses) - (vectorizable_load, vectorizable_condition, vectorizable_comparison) - (vect_analyze_stmt, vect_transform_stmt, vect_remove_stores) - (supportable_widening_operation): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vect-data-refs.c (vect_describe_gather_scatter_call): Take - a stmt_vec_info instead of a gcall. - (vect_check_gather_scatter): Update call accordingly. - * tree-vect-loop-manip.c (iv_phi_p): Take a stmt_vec_info instead - of a gphi. - (vect_can_advance_ivs_p, vect_update_ivs_after_vectorizer) - (slpeel_update_phi_nodes_for_loops):): Update calls accordingly. - * tree-vect-loop.c (vect_transform_loop_stmt): Take a stmt_vec_info - instead of a gimple stmt. - (vect_transform_loop): Update calls accordingly. - * tree-vect-slp.c (vect_split_slp_store_group): Take and return - stmt_vec_infos instead of gimple stmts. - (vect_analyze_slp_instance): Update use accordingly. - * tree-vect-stmts.c (read_vector_array, write_vector_array) - (vect_clobber_variable, vect_stmt_relevant_p, permute_vec_elements) - (vect_use_strided_gather_scatters_p, vect_build_all_ones_mask) - (vect_build_zero_merge_argument, vect_get_gather_scatter_ops) - (vect_gen_widened_results_half, vect_get_loop_based_defs) - (vect_create_vectorized_promotion_stmts, can_vectorize_live_stmts): - Take a stmt_vec_info instead of a gimple stmt and pass stmt_vec_infos - down to subroutines. - -2018-07-31 Richard Sandiford - - * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type - of the worklist from a vector of gimple stmts to a vector of - stmt_vec_infos. - * tree-vect-stmts.c (vect_mark_relevant, process_use) - (vect_mark_stmts_to_be_vectorized): Likewise - -2018-07-31 Richard Sandiford - - * tree-vect-loop.c (vect_analyze_loop_operations): Look up the - statement before passing it to vect_analyze_stmt. - (vect_create_epilog_for_reduction): Use a stmt_vec_info to walk - the chain of phi vector definitions. Track the exit phi via its - stmt_vec_info. - (vectorizable_reduction): Set cond_stmt_vinfo directly from the - STMT_VINFO_REDUC_DEF. - * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Use - stmt_vec_infos to handle the statement chains. - (vect_get_slp_defs): Record the first statement in the node - using a stmt_vec_info. - * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Look up - statements here and pass their stmt_vec_info down to subroutines. - (vect_init_vector_1): Hoist call to vinfo_for_stmt and pass it - down to vect_finish_stmt_generation. - (vect_init_vector, vect_get_vec_defs, vect_finish_replace_stmt) - (vect_finish_stmt_generation): Call vinfo_for_stmt and pass - stmt_vec_infos to subroutines. - (vect_remove_stores): Use stmt_vec_infos to handle the statement - chains. - -2018-07-31 Richard Sandiford - - * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): - (vect_check_gather_scatter, vect_create_data_ref_ptr, bump_vector_ptr) - (vect_permute_store_chain, vect_setup_realignment) - (vect_permute_load_chain, vect_shift_permute_load_chain) - (vect_transform_grouped_load): Use stmt_vec_info rather than gimple - stmts internally, and when passing values to other vectorizer routines. - * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise. - * tree-vect-loop.c (vect_analyze_scalar_cycles_1) - (vect_analyze_loop_operations, get_initial_def_for_reduction) - (vect_create_epilog_for_reduction, vectorize_fold_left_reduction) - (vectorizable_reduction, vectorizable_induction) - (vectorizable_live_operation, vect_transform_loop_stmt) - (vect_transform_loop): Likewise. - * tree-vect-patterns.c (vect_reassociating_reduction_p) - (vect_recog_widen_op_pattern, vect_recog_mixed_size_cond_pattern) - (vect_recog_bool_pattern, vect_recog_gather_scatter_pattern): Likewise. - * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. - (vect_slp_analyze_node_operations_1): Likewise. - * tree-vect-stmts.c (vect_mark_relevant, process_use) - (exist_non_indexing_operands_for_use_p, vect_init_vector_1) - (vect_mark_stmts_to_be_vectorized, vect_get_vec_def_for_operand) - (vect_finish_stmt_generation_1, get_group_load_store_type) - (get_load_store_type, vect_build_gather_load_calls) - (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call) - (vect_create_vectorized_demotion_stmts, vectorizable_conversion) - (vectorizable_assignment, vectorizable_shift, vectorizable_operation) - (vectorizable_store, vectorizable_load, vectorizable_condition) - (vectorizable_comparison, vect_analyze_stmt, vect_transform_stmt) - (supportable_widening_operation): Likewise. - (vect_get_vector_types_for_stmt): Likewise. - * tree-vectorizer.h (vect_dr_behavior): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence) - (vect_slp_analyze_node_dependences, vect_analyze_data_ref_accesses) - (vect_permute_store_chain, vect_permute_load_chain) - (vect_shift_permute_load_chain, vect_transform_grouped_load): Avoid - repeated stmt_vec_info lookups. - * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise. - (vect_update_ivs_after_vectorizer): Likewise. - * tree-vect-loop.c (vect_is_simple_reduction): Likewise. - (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise. - * tree-vect-patterns.c (adjust_bool_stmts): Likewise. - * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. - (vect_bb_slp_scalar_cost): Likewise. - * tree-vect-stmts.c (get_group_alias_ptr_type): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vect-data-refs.c (vect_check_gather_scatter): Pass the - gcall rather than the generic gimple stmt to gimple_call_internal_fn. - (vect_get_smallest_scalar_type, can_group_stmts_p): Use dyn_cast - to get gassigns and gcalls, rather than operating on generc gimple - stmts. - * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p) - (vect_mark_stmts_to_be_vectorized, vectorizable_store) - (vectorizable_load, vect_analyze_stmt): Likewise. - * tree-vect-loop.c (vectorizable_reduction): Likewise gphi. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (get_earlier_stmt, get_later_stmt): Take and - return stmt_vec_infos rather than gimple stmts. Do not accept - null arguments. - (vect_find_last_scalar_stmt_in_slp): Return a stmt_vec_info instead - of a gimple stmt. - * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise. - Update use of get_later_stmt. - (vect_get_constant_vectors): Update call accordingly. - (vect_schedule_slp_instance): Likewise - * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Likewise. - (vect_slp_analyze_instance_dependence): Likewise. - (vect_preserves_scalar_order_p): Update use of get_earlier_stmt. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (stmt_info_for_cost::stmt): Replace with... - (stmt_info_for_cost::stmt_info): ...this new field. - (add_stmt_costs): Update accordingly. - * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost) - (vect_get_known_peeling_cost): Likewise. - (vect_estimate_min_profitable_iters): Likewise. - * tree-vect-stmts.c (record_stmt_cost): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_loop_vec_info::may_misalign_stmts): Change - from an auto_vec to an auto_vec. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update - accordingly. - * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info::same_dr_stmt): Change from - a gimple stmt to a stmt_vec_info. - * tree-vect-stmts.c (vectorizable_load): Update accordingly. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::grouped_stores): Change from - an auto_vec to an auto_vec. - (_loop_vec_info::reduction_chains): Likewise. - * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update - accordingly. - * tree-vect-slp.c (vect_analyze_slp): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info::first_element): Change from - a gimple stmt to a stmt_vec_info. - (_stmt_vec_info::next_element): Likewise. - * tree-vect-data-refs.c (vect_update_misalignment_for_peel) - (vect_slp_analyze_and_verify_node_alignment) - (vect_analyze_group_access_1, vect_analyze_group_access) - (vect_small_gap_p, vect_prune_runtime_alias_test_list) - (vect_create_data_ref_ptr, vect_record_grouped_load_vectors) - (vect_supportable_dr_alignment): Update accordingly. - * tree-vect-loop.c (vect_fixup_reduc_chain): Likewise. - (vect_fixup_scalar_cycles_with_patterns, vect_is_slp_reduction) - (vect_is_simple_reduction, vectorizable_reduction): Likewise. - * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise. - * tree-vect-slp.c (vect_build_slp_tree_1) - (vect_attempt_slp_rearrange_stmts, vect_supported_load_permutation_p) - (vect_split_slp_store_group, vect_analyze_slp_instance) - (vect_analyze_slp, vect_transform_slp_perm_load): Likewise. - * tree-vect-stmts.c (vect_model_store_cost, vect_model_load_cost) - (get_group_load_store_type, get_load_store_type) - (get_group_alias_ptr_type, vectorizable_store, vectorizable_load) - (vect_transform_stmt, vect_remove_stores): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vect_dr_stmt): Return a stmt_vec_info rather - than a gimple stmt. - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence) - (vect_slp_analyze_data_ref_dependence, vect_record_base_alignments) - (vect_calculate_target_alignmentm, vect_compute_data_ref_alignment) - (vect_update_misalignment_for_peel, vect_verify_datarefs_alignment) - (vector_alignment_reachable_p, vect_get_data_access_cost) - (vect_get_peeling_costs_all_drs, vect_peeling_hash_get_lowest_cost) - (vect_peeling_supportable, vect_enhance_data_refs_alignment) - (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment) - (vect_analyze_group_access_1, vect_analyze_group_access) - (vect_analyze_data_ref_access, vect_analyze_data_ref_accesses) - (vect_vfa_access_size, vect_small_gap_p, vect_analyze_data_refs) - (vect_supportable_dr_alignment): Remove vinfo_for_stmt from the - result of vect_dr_stmt and use the stmt_vec_info instead of - the associated gimple stmt. - * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise. - (vect_gen_prolog_loop_niters): Likewise. - * tree-vect-loop.c (vect_analyze_loop_2): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_slp_tree::stmts): Change from a vec - to a vec. - * tree-vect-slp.c (vect_free_slp_tree): Update accordingly. - (vect_create_new_slp_node): Take a vec instead of a - vec. - (_slp_oprnd_info::def_stmts): Change from a vec - to a vec. - (bst_traits::value_type, bst_traits::value_type): Likewise. - (bst_traits::hash): Update accordingly. - (vect_get_and_check_slp_defs): Change the stmts parameter from - a vec to a vec. - (vect_two_operations_perm_ok_p, vect_build_slp_tree_1): Likewise. - (vect_build_slp_tree): Likewise. - (vect_build_slp_tree_2): Likewise. Update uses of - SLP_TREE_SCALAR_STMTS. - (vect_print_slp_tree): Update uses of SLP_TREE_SCALAR_STMTS. - (vect_mark_slp_stmts, vect_mark_slp_stmts_relevant) - (vect_slp_rearrange_stmts, vect_attempt_slp_rearrange_stmts) - (vect_supported_load_permutation_p, vect_find_last_scalar_stmt_in_slp) - (vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations_1) - (vect_slp_analyze_node_operations, vect_slp_analyze_operations) - (vect_bb_slp_scalar_cost, vect_slp_analyze_bb_1) - (vect_get_constant_vectors, vect_get_slp_defs) - (vect_transform_slp_perm_load, vect_schedule_slp_instance) - (vect_remove_slp_scalar_calls, vect_schedule_slp): Likewise. - (vect_analyze_slp_instance): Build up a vec of stmt_vec_infos - instead of gimple stmts. - * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Change - the stores parameter for a vec to a vec. - (vect_slp_analyze_instance_dependence): Update uses of - SLP_TREE_SCALAR_STMTS. - (vect_slp_analyze_and_verify_node_alignment): Likewise. - (vect_slp_analyze_and_verify_instance_alignment): Likewise. - * tree-vect-loop.c (neutral_op_for_slp_reduction): Likewise. - (get_initial_defs_for_reduction): Likewise. - (vect_create_epilog_for_reduction): Likewise. - (vectorize_fold_left_reduction): Likewise. - * tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Likewise. - (vect_model_simple_cost, vectorizable_shift, vectorizable_load) - (can_vectorize_live_stmts): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_loop_vec_info::reductions): Change from an - auto_vec to an auto_vec. - (vect_force_simple_reduction): Take and return stmt_vec_infos rather - than gimple stmts. - * tree-parloops.c (valid_reduction_p): Take a stmt_vec_info instead - of a gimple stmt. - (gather_scalar_reductions): Update after above interface changes. - * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise. - (vect_is_simple_reduction): Take and return stmt_vec_infos rather - than gimple stmts. - (vect_force_simple_reduction): Likewise. - * tree-vect-patterns.c (vect_pattern_recog_1): Update use of - LOOP_VINFO_REDUCTIONS. - * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info::reduc_def): Change from - a gimple stmt to a stmt_vec_info. - * tree-vect-loop.c (vect_active_double_reduction_p) - (vect_force_simple_reduction, vectorizable_reduction): Update - accordingly. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_slp_tree::vec_stmts): Change from a - vec to a vec. - * tree-vect-loop.c (vect_create_epilog_for_reduction): Change - the reduction_phis argument from a vec to a - vec. - (vectorizable_reduction): Likewise the phis local variable that - is passed to vect_create_epilog_for_reduction. Update for new type - of SLP_TREE_VEC_STMTS. - (vectorizable_induction): Update for new type of SLP_TREE_VEC_STMTS. - (vectorizable_live_operation): Likewise. - * tree-vect-slp.c (vect_get_slp_vect_defs): Likewise. - (vect_transform_slp_perm_load, vect_schedule_slp_instance): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Change from - a gimple stmt to a stmt_vec_info. - (vectorizable_condition, vectorizable_live_operation) - (vectorizable_reduction, vectorizable_induction): Pass back the - vectorized statement as a stmt_vec_info. - * tree-vect-data-refs.c (vect_record_grouped_load_vectors): Update - use of STMT_VINFO_VEC_STMT. - * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise, - accumulating the inner phis that feed the STMT_VINFO_VEC_STMT - as stmt_vec_infos rather than gimple stmts. - (vectorize_fold_left_reduction): Change vec_stmt from a gimple stmt - to a stmt_vec_info. - (vectorizable_live_operation): Likewise. - (vectorizable_reduction, vectorizable_induction): Likewise, - updating use of STMT_VINFO_VEC_STMT. - * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Update use - of STMT_VINFO_VEC_STMT. - (vect_build_gather_load_calls, vectorizable_bswap, vectorizable_call) - (vectorizable_simd_clone_call, vectorizable_conversion) - (vectorizable_assignment, vectorizable_shift, vectorizable_operation) - (vectorizable_store, vectorizable_load, vectorizable_condition) - (vectorizable_comparison, can_vectorize_live_stmts): Change vec_stmt - from a gimple stmt to a stmt_vec_info. - (vect_transform_stmt): Update use of STMT_VINFO_VEC_STMT. Pass a - pointer to a stmt_vec_info to the vectorizable_* routines. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info::related_stmt): Change from - a gimple stmt to a stmt_vec_info. - (is_pattern_stmt_p): Update accordingly. - * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Likewise. - (vect_record_grouped_load_vectors): Likewise. - * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise. - (vect_fixup_reduc_chain, vect_update_vf_for_slp): Likewise. - (vect_model_reduction_cost): Likewise. - (vect_create_epilog_for_reduction): Likewise. - (vectorizable_reduction, vectorizable_induction): Likewise. - * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. - Return the stmt_vec_info for the pattern statement. - (vect_set_pattern_stmt): Update use of STMT_VINFO_RELATED_STMT. - (vect_split_statement, vect_mark_pattern_stmts): Likewise. - * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise. - (vect_detect_hybrid_slp, vect_get_slp_defs): Likewise. - * tree-vect-stmts.c (vect_mark_relevant): Likewise. - (vect_get_vec_def_for_operand_1, vectorizable_call): Likewise. - (vectorizable_simd_clone_call, vect_analyze_stmt, new_stmt_vec_info) - (free_stmt_vec_info, vect_is_simple_use): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vect_finish_replace_stmt): Return a stmt_vec_info - (vect_finish_stmt_generation): Likewise. - * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise. - (vect_finish_replace_stmt, vect_finish_stmt_generation): Likewise. - (vect_build_gather_load_calls): Use the return value of the above - functions instead of a separate call to vinfo_for_stmt. Use narrow - scopes for the input gimple stmt and wider scopes for the associated - stmt_vec_info. Use vec_info::lookup_def when setting these - stmt_vec_infos from an SSA_NAME definition. - (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call) - (vect_create_vectorized_demotion_stmts, vectorizable_conversion) - (vectorizable_assignment, vectorizable_shift, vectorizable_operation) - (vectorizable_store, vectorizable_load, vectorizable_condition) - (vectorizable_comparison): Likewise. - * tree-vect-loop.c (vectorize_fold_left_reduction): Likewise. - (vectorizable_reduction): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vect_is_simple_use): Add an optional - stmt_vec_info * parameter before the optional gimple **. - * tree-vect-stmts.c (vect_is_simple_use): Likewise. - (process_use, vect_get_vec_def_for_operand_1): Update callers. - (vect_get_vec_def_for_operand, vectorizable_shift): Likewise. - * tree-vect-loop.c (vectorizable_reduction): Likewise. - (vectorizable_live_operation): Likewise. - * tree-vect-patterns.c (type_conversion_p): Likewise. - (vect_look_through_possible_promotion): Likewise. - (vect_recog_rotate_pattern): Likewise. - * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (stmt_vec_info): Temporarily change from - a typedef to a wrapper class. - (NULL_STMT_VEC_INFO): New macro. - (vec_info::stmt_infos): Change to vec. - (stmt_vec_info::operator*): New function. - (stmt_vec_info::operator gimple *): Likewise. - (set_vinfo_for_stmt): Use NULL_STMT_VEC_INFO. - (add_stmt_costs): Likewise. - * tree-vect-loop-manip.c (iv_phi_p): Likewise. - * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost) - (vect_get_known_peeling_cost): Likewise. - (vect_estimate_min_profitable_iters): Likewise. - * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. - * tree-vect-slp.c (vect_remove_slp_scalar_calls): Likewise. - * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise. - (vectorizable_store, free_stmt_vec_infos): Likewise. - (new_stmt_vec_info): Change return type of xcalloc to - _stmt_vec_info *. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::lookup_single_use): Declare. - * tree-vectorizer.c (vec_info::lookup_single_use): New function. - * tree-vect-loop.c (vectorizable_reduction): Use it instead of - a single_imm_use-based sequence. - * tree-vect-stmts.c (supportable_widening_operation): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::lookup_def): Declare. - * tree-vectorizer.c (vec_info::lookup_def): New function. - * tree-vect-patterns.c (vect_get_internal_def): Use it. - (vect_widened_op_tree): Likewise. - * tree-vect-stmts.c (vect_is_simple_use): Likewise. - * tree-vect-loop.c (vect_analyze_loop_operations): Likewise. - (vectorizable_reduction): Likewise. - (vect_valid_reduction_input_p): Take a stmt_vec_info instead - of a gimple *. - (vect_is_slp_reduction): Update calls accordingly. Use - vec_info::lookup_def. - (vect_is_simple_reduction): Likewise - * tree-vect-slp.c (vect_detect_hybrid_slp_1): Use vec_info::lookup_def. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vec_info::lookup_stmt): Declare. - * tree-vectorizer.c (vec_info::lookup_stmt): New function. - * tree-vect-loop.c (vect_determine_vf_for_stmt): Use it instead - of vinfo_for_stmt. - (vect_determine_vectorization_factor, vect_analyze_scalar_cycles_1) - (vect_compute_single_scalar_iteration_cost, vect_analyze_loop_form) - (vect_update_vf_for_slp, vect_analyze_loop_operations) - (vect_is_slp_reduction, vectorizable_induction) - (vect_transform_loop_stmt, vect_transform_loop): Likewise. - * tree-vect-patterns.c (vect_init_pattern_stmt): - (vect_determine_min_output_precision_1, vect_determine_precisions) - (vect_pattern_recog): Likewise. - * tree-vect-stmts.c (vect_analyze_stmt, vect_transform_stmt): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_density_test): Likewise. - * config/rs6000/rs6000.c (rs6000_density_test): Likewise. - * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise. - (vect_detect_hybrid_slp_1, vect_detect_hybrid_slp_2) - (vect_detect_hybrid_slp): Likewise. Change the walk_stmt_info - info field from a loop to a loop_vec_info. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (stmt_vec_info): Move typedef earlier in file. - (vec_info::add_stmt): Declare. - * tree-vectorizer.c (vec_info::add_stmt): New function. - * tree-vect-data-refs.c (vect_create_data_ref_ptr): Use it. - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Likewise. - (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise. - (vectorizable_induction): Likewise. - * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Likewise. - * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise. - (vectorizable_simd_clone_call, vectorizable_store): Likewise. - (vectorizable_load): Likewise. - * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. - (vect_recog_bool_pattern, vect_recog_mask_conversion_pattern) - (vect_recog_gather_scatter_pattern): Likewise. - (append_pattern_def_seq): Likewise. Remove a check that is - performed by add_stmt itself. - -2018-07-31 Richard Sandiford - - * tree-vect-loop.c (vectorizable_reduction): Fix an instance in - which make_ssa_name was called with new_stmt before new_stmt - had been created. - -2018-07-31 Richard Sandiford - - * tree-vect-loop.c (vect_valid_reduction_input_p): New function, - split out from... - (vect_is_slp_reduction): ...here... - (vect_is_simple_reduction): ...and here. Remove repetition of tests - that are already known to be false. - -2018-07-31 Richard Sandiford - - * tree-vectorizer.h (vect_free_slp_instance): Add a final_p parameter. - * tree-vect-slp.c (vect_free_slp_tree): Likewise. Don't update - STMT_VINFO_NUM_SLP_USES when it's true. - (vect_free_slp_instance): Add a final_p parameter and pass it to - vect_free_slp_tree. - (vect_build_slp_tree_2): Update call to vect_free_slp_instance. - (vect_analyze_slp_instance): Likewise. - (vect_slp_analyze_operations): Likewise. - (vect_slp_analyze_bb_1): Likewise. - * tree-vectorizer.c (vec_info): Likewise. - * tree-vect-loop.c (vect_transform_loop): Likewise. - -2018-07-31 Richard Sandiford - - * tree-vect-loop.c (vectorizable_reduction): Assert that the - function is not called for second and subsequent members of - a reduction group. - -2018-07-31 Richard Sandiford - - * tree-vect-loop.c (get_initial_def_for_reduction): Move special - cases for nested loops from here to ... - (vect_create_epilog_for_reduction): ...here. Only call - vect_is_simple_use for inner-loop reductions. - -2018-07-31 Martin Liska - - PR gcov-profile/85338 - PR gcov-profile/85350 - PR gcov-profile/85372 - * profile.c (struct location_triplet): New. - (struct location_triplet_hash): Likewise. - (output_location): Do not output a BB that - is already recorded for a line. - (branch_prob): Use streamed_locations. - -2018-07-31 Martin Liska - - PR gcov-profile/85370 - * coverage.c (coverage_begin_function): Do not mark target - clones as artificial functions. - -2018-07-31 Martin Liska - - PR gcov-profile/83813 - PR gcov-profile/84758 - PR gcov-profile/85217 - PR gcov-profile/85332 - * profile.c (branch_prob): Do not record GOTO expressions - for GIMPLE statements which locations are already streamed. - -2018-07-31 Olivier Hainque - - * gcc.c (handle_spec_function): Accept a soft_matched_part - argument, as do_spec_1. Pass it down to ... - (eval_spec_function): Accept a soft_matched_part argument, - and pass it down to ... - (do_spec_2): Accept a soft_matched_part argument, and pass - it down to do_spec_1. - (do_spec_1): Pass soft_matched_part to handle_spec_function. - (handle_braces): Update call to handle_spec_function. - (driver::set_up_specs): Update calls to do_spec_2. - (compare_debug_dump_opt_spec_function): Likewise. - (compare_debug_self_opt_spec_function): Likewise. - -2018-07-31 Olivier Hainque - - * common.opt (nolibc): New option. - * doc/invoke.texi (Link Options): Document it. - * gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc. - * config/alpha/linux.h: Likewise. - * config/arc/elf.h: Likewise. - * config/arm/uclinux-elf.h: Likewise. - * config/arm/unknown-elf.h: Likewise. - * config/avr/avrlibc.h: Likewise. - * config/bfin/bfin.h: Likewise. - * config/bfin/linux.h: Likewise. - * config/bfin/uclinux.h: Likewise. - * config/darwin.h: Likewise. - * config/darwin10.h: Likewise. - * config/darwin12.h: Likewise. - * config/gnu-user.h: Likewise. - * config/lm32/uclinux-elf.h: Likewise. - * config/pa/pa-hpux11.h: Likewise. - * config/pa/pa64-hpux.h: Likewise. - * config/sparc/sparc.h: Likewise. - -2018-07-31 Olivier Hainque - - * gcc.c (getenv_spec_function): Prepend '/' to value for allowed - undefined variables. - -2018-07-30 Segher Boessenkool - - PR target/86640 - * config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode - instead of GEN_INT. - -2018-07-30 Bernd Edlinger - - * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL - terminated string literal. - -2018-07-30 Segher Boessenkool - - PR rtl-optimization/85160 - * combine.c (is_just_move): New function. - (try_combine): Allow combining two instructions into two if neither of - the original instructions was a move. - -2018-07-30 Alexander Monakov - - PR target/86673 - * doc/extend.texi (Global Register Variables): Discourage use of type - qualifiers. - (Local Register Variables): Likewise. - -2018-07-30 Richard Sandiford - - PR tree-optimization/86506 - * hwint.h (ceil_log2): Resync with hwint.c implementation. - -2018-07-30 Ilya Leoshkevich - - PR target/86547 - * lra-constraints.c (spill_hard_reg_in_range): When selecting the - hard_regno, make sure no insn between `from` and `to` clobbers it. - -2018-07-30 Cesar Philippidis - Tom de Vries - - * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ... - (PTX_DEFAULT_RUNTIME_DIM): ... this. - (nvptx_goacc_validate_dims): Set default worker and gang dims to - PTX_DEFAULT_RUNTIME_DIM. - (nvptx_dim_limit): Ignore GOMP_DIM_WORKER. - -2018-07-29 John David Anglin - - * config/pa/pa.c (pa_output_addr_vec): Align address table. - * config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment. - * config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define. - -2018-07-27 Michael Meissner - - * config/rs6000/constraints.md (wG constraint): Delete, no longer - used. - * config/rs6000/predicates.md (p9_fusion_reg_operand): Rename - predicate to reflect toc fusion has been deleted. - (toc_fusion_mem_raw): Delete, no longer used. - (toc_fusion_mem_wrapped): Likewise. - * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete toc - fusion mask bit. - * config/rs6000/rs6000-protos.h (fusion_wrap_memory_address): - Delete, no longer used. - * config/rs6000/rs6000.c (struct rs6000_reg_addr): Delete fields - meant to be used for toc fusion. - (rs6000_debug_print_mode): Delete toc fusion debugging. - (rs6000_debug_reg_global): Likewise. - (rs6000_init_hard_regno_mode_ok): Delete setting up fields for toc - fusion and secondary reload support that were never used. - (rs6000_option_override_internal): Delete TOC fusion, that was only - partially defined, and it did not work unless you also used the - -mcmodel= switch. - (rs6000_legitimate_address_p): Delete TOC fusion support. - (rs6000_opt_masks): Likewise. - (fusion_wrap_memory_address): Delete function, no longer used. - (fusion_split_address); Delete TOC fusion support. - * config/rs6000/rs6000.h (TARGET_TOC_FUSION_INT): Delete, no - longer used with toc fusion being deleted. - (TARGET_TOC_FUSION_FP): Likewise. - * config/rs6000/rs6000.md (UNSPEC_FUSION_ADDIS): Delete TOC fusion - UNSPEC. - (toc fusion spliter): Delete TOC fusion support. - (toc_fusionload_): Likewise. - (toc_fusionload_di): Likewise. - (fusion_gpr_load_): Delete generator function, this insn no - longer needs to be named. Rename predicate to delete TOC fusion. - (fusion_gpr___load): Likewise. - (fusion_gpr___store): Likewise. - (fusion_vsx___load): Likewise. - (fusion_vsx___store): Likewise. - (p9 fusion peephole2s): Rename predicate to delete TOC fusion. - -2018-07-27 Kelvin Nilsen - - * doc/extend.texi (Basic PowerPC Built-in Functions Available on - ISA 2.05): Replace __uint128_t with __uint128 and __int128_t with - __int128 in built-in function prototypes. - (PowerPC AltiVec Built-in Functions on ISA 2.07): Likewise. - (PowerPC AltiVec Built-in Functions on ISA 3.0): Likewise. - -2018-07-27 Martin Sebor - - PR tree-optimization/86696 - * tree-ssa-strlen.c (get_min_string_length): Handle all integer - types, including enums. - (handle_char_store): Be prepared for the above function to fail. - -2018-07-26 Qing Zhao - - * builtins.c (inline_expand_builtin_string_cmp): Disable inlining - when optimization level is lower than 2 or optimize for size. - -2018-07-26 Martin Sebor - - PR tree-optimization/86043 - PR tree-optimization/86042 - * tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps. - (get_string_cst_length): Rename... - (get_min_string_length): ...to this. Add argument. - (handle_char_store): Extend to handle multi-character stores by - MEM_REF. - * tree.c (initializer_zerop): Use new argument. Handle MEM_REF. - * tree.h (initializer_zerop): Add argument. - -2018-07-26 Jakub Jelinek - - PR middle-end/86660 - * omp-low.c (scan_sharing_clauses): Don't ignore map clauses for - declare target to variables if they have always,{to,from,tofrom} map - kinds. - -2018-07-26 Martin Liska - - PR lto/86548 - * lto-wrapper.c: Add linker_output as prefix - for ltrans_output_file. - -2018-07-26 Segher Boessenkool - - PR rtl-optimization/85805 - * combine.c (reg_nonzero_bits_for_combine): Only use the last set - value for hard registers if that was written in the same mode. - -2018-07-26 Martin Liska - - PR gcov-profile/86536 - * gcov.c (format_gcov): Use printf format %.*f directly - and do not handle special values. - -2018-07-25 Claudiu Zissulescu - - * common/config/arc/arc-common.c (arc_option_optimization_table): - Update default optimizations for size. - -2018-07-25 Claudiu Zissulescu - - * config/arc/arc.md (movsf_insn): Add short instruction selection. - * config/arc/constraints.md (CfZ): New constraint. - * config/arc/fpu.md (addssf3_fpu): Use CfZ constraint. - (subsf3_fpu): Likewise. - (cmpsf_fpu): Likewise. - (cmpsf_fpu_uneq): Likewise. - -2018-07-25 Claudiu Zissulescu - - * config/arc/arc.c (compact_memory_operand_p): Check for uncached - accesses as well. - (arc_is_uncached_mem_p): uncached applies to both the variable and - the pointer. - -2018-07-25 Claudiu Zissulescu - - * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional - register names. - -2018-07-25 David Malcolm - - * optinfo-emit-json.cc (class optrecord_json_writer): Convert - field "m_scopes" from vec to auto_vec. - -2018-07-25 Martin Liska - - * config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix - return type. - -2018-07-25 Richard Biener - - PR debug/86654 - * dwarf2out.c (dwarf2out_decl): Do not handle nested functions - special wrt context_die late. - (gen_subprogram_die): Re-use DIEs in local scope. - -2018-07-25 Richard Sandiford - - PR tree-optimization/86644 - * hwint.c (ceil_log2): Fix comment. Return 0 for 0. - -2018-07-25 Martin Liska - - PR middle-end/86645 - * dumpfile.c: And excluded values with TDF_ALL_VALUES. - * dumpfile.h (enum dump_flag): Defince TDF_ALL_VALUES. - -2018-07-25 Martin Liska - - PR sanitizer/79635 - * params.def: Explain ASan abbreviation and provide - a documentation link. - -2018-07-24 Martin Sebor - - PR tree-optimization/86622 - PR tree-optimization/86532 - * builtins.h (string_length): Declare. - * builtins.c (c_strlen): Correct handling of non-constant offsets. - (check_access): Be prepared for non-constant length ranges. - (string_length): Make extern. - * expr.c (string_constant): Only handle the minor non-constant - array index. Use string_constant to compute the length of - a generic string constant. - -2018-07-24 Richard Sandiford - - PR tree-optimization/86618 - * tree-vect-stmts.c (vectorizable_call): Don't take the address - of LOOP_VINFO_MASKS (loop_vinfo) when loop_vinfo is null. - -2018-07-24 David Malcolm - - PR tree-optimization/86636 - * json.cc (json::object::set): Fix comment. Add assertions. - (json::array::append): Move here from json.h. Add comment and an - assertion. - (json::string::string): Likewise. - * json.h (json::array::append): Move to json.cc. - (json::string::string): Likewise. - * optinfo-emit-json.cc - (optrecord_json_writer::impl_location_to_json): Assert that we - aren't attempting to write out UNKNOWN_LOCATION, or an ad-hoc - wrapper around it. Expand the location once, rather than three - times. - (optrecord_json_writer::inlining_chain_to_json): Fix the check for - UNKNOWN_LOCATION, to use LOCATION_LOCUS to look through ad-hoc - wrappers. - (optrecord_json_writer::optinfo_to_json): Likewise, in four - places. Fix some overlong lines. - -2018-07-24 Matthew Malcomson - - * config/aarch64/aarch64-simd.md - (aarch64_w): Split into... - (aarch64_subw): ... This... - (aarch64_addw): ... And this. - (aarch64_w_internal): Split into... - (aarch64_subw_internal): ... This... - (aarch64_addw_internal): ... And this. - (aarch64_w2_internal): Split into... - (aarch64_subw2_internal): ... This... - (aarch64_addw2_internal): ... And this. - -2018-07-24 Jakub Jelinek - - PR middle-end/86627 - * expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN - and size > HOST_BITS_PER_WIDE_INT. For size > HOST_BITS_PER_WIDE_INT - and abs_d == d, do the power of two handling if profitable. - -2018-07-24 Richard Biener - - * match.pd: Add BIT_FIELD_REF canonicalizations. - -2018-07-23 Bernd Edlinger - - PR c/86617 - * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values. - -2018-07-23 Bernd Edlinger - - * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL - terminated STRING_CST object. - -2018-07-23 Bernd Edlinger - - hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf. - -2018-07-23 Segher Boessenkool - - * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Adjust. - * config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Delete. - * config/rs6000/rs6000.c (rs6000_expand_vector_init): Always force - the elements into a register. - (rs6000_split_v4si_init_di_reg): Delete. - (rs6000_split_v4si_init): Delete. - * config/rs6000/vsx.md (unspec): Delete UNSPEC_VSX_VEC_INIT. - (vsx_init_v4si): Rewrite as a define_expand. - -2018-07-23 Segher Boessenkool - - * config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the - zero_extend argument from memory): New. - -2018-07-22 Martin Sebor - - PR bootstrap/86621 - * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Avoid - diagnosing calls with unknown arguments unless -Walloca-larger-than - is restricted to less than PTRDIFF_MAX bytes. - -2018-07-22 Gerald Pfeifer - - * doc/gcov.texi (Invoking Gcov): Editorial changes. - -2018-07-20 David Malcolm - - * pretty-print.c (text_info::set_location): Remove redundant - "line_table" parameter from call to rich_location::set_range. - -2018-07-20 Martin Sebor - - PR middle-end/82063 - * builtins.c (expand_builtin_alloca): Adjust. - * calls.c (alloc_max_size): Simplify. - * cgraphunit.c (cgraph_node::expand): Adjust. - * common.opt (larger_than_size, warn_frame_larger_than): Remove - variables. - (frame_larger_than_size): Same. - (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options - to take a HOST_WIDE_INT argument and accept a byte-size suffix. - Initialize. - * doc/invoke.texi (GCC Command Options): Document option arguments. - Explain byte-size arguments and suffixes. - (-Wvla-larger-than, -Wno-alloc-size-larger-than): Update. - (-Wno-alloca-larger-than, -Wno-vla-larger-than): Same. - (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same. - * doc/options.texi (UInteger): Expand. - (Host_Wide_Int, ByteSize): Document new properties. - * final.c (final_start_function_1): Include sizes in an error message. - * function.c (frame_offset_overflow): Same. - * gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust. - (alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT. - Diagnose unbounded alloca calls only for limits of less than - PTRDIFF_MAX. - (alloca_call_type): Adjust. Diagnose possibly out-of-bounds alloca - calls and VLA size only for limits of less than PTRDIFF_MAX. Same - for alloca(0). - (pass_walloca::execute): Adjust. Diagnose alloca calls in loops - only for limits of less than PTRDIFF_MAX. - * langhooks-def.h (lhd_handle_option): Change function argument - to HOST_WIDE_INT. - * langhooks.c (lhd_handle_option): Same. - * langhooks.h (handle_option): Same. - * opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and - ByteSize flags. - (var_type, var_type_struct): Same. - (var_set): Handle ByteSize flag. - * optc-gen.awk: Add comments to output to ease debugging. Make - use of HOST_WIDE_INT where appropriate. - * opts-gen-save.awk: Use %lx to format unsigned long. - * opth-gen.awk: Change function argument to HOST_WIDE_INT. - * opts-common.c (integral_argument): Return HOST_WIDE_INT and add - arguments. Parse bytes-size suffixes. - (enum_arg_to_value): Change function argument to HOST_WIDE_INT. - (enum_value_to_arg): Same. - (decode_cmdline_option): Handle cl_host_wide_int. Adjust. - (handle_option): Adjust. - (generate_option): Change function argument to HOST_WIDE_INT. - (cmdline_handle_error): Adjust. - (read_cmdline_option): Change function argument to HOST_WIDE_INT. - (set_option): Change function argument to HOST_WIDE_INT. - (option_enabled): Handle cl_host_wide_int. - (get_option_state): Handle CLVC_SIZE. - (control_warning_option): Same. - * opts.c (common_handle_option): Change function argument to - HOST_WIDE_INT. Remove handling of OPT_Walloca_larger_than_ and - OPT_Wvla_larger_than_. - * opts.h (enum cl_var_type): Add an enumerator. - * stor-layout.c (layout_decl): Print a more meaningful warning. - * toplev.c (output_stack_usage): Adjust. - -2018-07-20 Qing Zhao - - * builtins.c (expand_builtin_memcmp): Delete the last parameter for - call to inline_expand_builtin_string_cmp. - (expand_builtin_strcmp): Likewise. - (expand_builtin_strncmp): Likewise. - (inline_string_cmp): Delete the last parameter, change char_type_node - to unsigned_char_type_node for strcmp/strncmp, add conversions to the - two operands. - (inline_expand_builtin_string_cmp): Delete the last parameter, give up - the inlining expansion on target where the type of the call has same or - narrower precision than unsigned char. - -2018-07-20 David Malcolm - - * Makefile.in (OBJS): Add json.o and optinfo-emit-json.o. - (CFLAGS-optinfo-emit-json.o): Define TARGET_NAME. - * common.opt (fsave-optimization-record): New option. - * coretypes.h (struct kv_pair): Move here from dumpfile.c. - * doc/invoke.texi (-fsave-optimization-record): New option. - * dumpfile.c: Include "optinfo-emit-json.h". - (struct kv_pair): Move to coretypes.h. - (optgroup_options): Make non-static. - (dump_context::end_scope): Call - optimization_records_maybe_pop_dump_scope. - * dumpfile.h (optgroup_options): New decl. - * json.cc: New file. - * json.h: New file. - * optinfo-emit-json.cc: New file. - * optinfo-emit-json.h: New file. - * optinfo.cc: Include "optinfo-emit-json.h". - (optinfo::emit): Call optimization_records_maybe_record_optinfo. - (optinfo_enabled_p): Check optimization_records_enabled_p. - (optinfo_wants_inlining_info_p): Likewise. - * optinfo.h: Update comment. - * profile-count.c (profile_quality_as_string): New function. - * profile-count.h (profile_quality_as_string): New decl. - (profile_count::quality): New accessor. - * selftest-run-tests.c (selftest::run_tests): Call json_cc_tests - and optinfo_emit_json_cc_tests. - * selftest.h (selftest::json_cc_tests): New decl. - (selftest::optinfo_emit_json_cc_tests): New decl. - * toplev.c: Include "optinfo-emit-json.h". - (compile_file): Call optimization_records_finish. - (do_compile): Call optimization_records_start. - * tree-ssa-live.c: Include optinfo.h. - (remove_unused_scope_block_p): Retain inlining information if - optinfo_wants_inlining_info_p returns true. - -2018-07-20 Richard Biener - - PR debug/86585 - * dwarf2out.c (dwarf2out_die_ref_for_decl): Test in_lto_p - to cover -flto-partition=none. - -2018-07-20 Martin Liska - - * tree.h (DECL_LOCATION_RANGE): Remove unused macro. - (get_decl_source_range): Remove unused function. - -2018-07-20 Richard Biener - - * tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member. - (struct vn_phi_s): Likewise. - (struct vn_reference_s): Likewise. - * tree-ssa-sccvn.c (vn_nary_op_hasher::equal): Add shortcut - for searching the slot of an entry known to be in the hash itself. - (vn_phi_hasher::equal): Likewise. - (vn_reference_hasher::equal): Likewise. - (last_inserted_ref, last_inserted_phi, last_inserted_nary): New - globals. - (optimistic_info, current_info): Remove, keeping only valid_info. - (vn_reference_lookup_1): Remove fallback lookup. - (vn_reference_lookup_2): Likewise. - (vn_nary_op_lookup_1): Likewise. - (vn_phi_lookup): Likewise. - (vn_nary_build_or_lookup_1): Make sure to not chain the built - hash element. - (vn_reference_insert): Adjust, chain the inserted hash element - at last_inserted_ref. - (vn_reference_insert_pieces): Likewise. - (visit_reference_op_call): Likewise. - (vn_nary_op_insert_into): Chain the inserted hash element at - last_inserted_nary. - (vn_nary_op_insert_pieces): Adjust. - (vn_nary_op_insert): Likewise. - (vn_nary_op_insert_stmt): Likewise. - (vn_phi_insert): Adjust, chain the inserted hash element at - last_inserted_phi. - (process_scc): Remove clearing and copying the optimistic - table. Instead remove elements inserted during an optimistic - iteration from the single table we maintain. - (init_scc_vn): Adjust. - (free_scc_vn): Likewise. - (sccvn_dom_walker::record_cond): Likewise. - (sccvn_dom_walker::after_dom_children): Likewise. - -2018-07-19 Martin Sebor - - PR tree-optimization/84047 - PR tree-optimization/83776 - * tree-vrp.c (vrp_prop::check_mem_ref): New function. - (check_array_bounds): Call it. - -2018-07-19 Martin Sebor - - * align.h (align_flags): Use member initialization. - -2018-07-19 David Malcolm - - * Makefile.in (OBJS): Add optinfo.o. - * coretypes.h (class symtab_node): New forward decl. - (struct cgraph_node): New forward decl. - (class varpool_node): New forward decl. - * dump-context.h: New file. - * dumpfile.c: Include "optinfo.h", "dump-context.h", "cgraph.h", - "tree-pass.h". - (refresh_dumps_are_enabled): Use optinfo_enabled_p. - (set_dump_file): Call dumpfile_ensure_any_optinfo_are_flushed. - (set_alt_dump_file): Likewise. - (dump_context::~dump_context): New dtor. - (dump_gimple_stmt): Move implementation to... - (dump_context::dump_gimple_stmt): ...this new member function. - Add the stmt to any pending optinfo, creating one if need be. - (dump_gimple_stmt_loc): Move implementation to... - (dump_context::dump_gimple_stmt_loc): ...this new member function. - Start a new optinfo and add the stmt to it. - (dump_gimple_expr): Move implementation to... - (dump_context::dump_gimple_expr): ...this new member function. - Add the stmt to any pending optinfo, creating one if need be. - (dump_gimple_expr_loc): Move implementation to... - (dump_context::dump_gimple_expr_loc): ...this new member function. - Start a new optinfo and add the stmt to it. - (dump_generic_expr): Move implementation to... - (dump_context::dump_generic_expr): ...this new member function. - Add the tree to any pending optinfo, creating one if need be. - (dump_generic_expr_loc): Move implementation to... - (dump_context::dump_generic_expr_loc): ...this new member - function. Add the tree to any pending optinfo, creating one if - need be. - (dump_printf): Move implementation to... - (dump_context::dump_printf_va): ...this new member function. Add - the text to any pending optinfo, creating one if need be. - (dump_printf_loc): Move implementation to... - (dump_context::dump_printf_loc_va): ...this new member function. - Start a new optinfo and add the stmt to it. - (dump_dec): Move implementation to... - (dump_context::dump_dec): ...this new member function. Add the - value to any pending optinfo, creating one if need be. - (dump_context::dump_symtab_node): New member function. - (dump_context::get_scope_depth): New member function. - (dump_context::begin_scope): New member function. - (dump_context::end_scope): New member function. - (dump_context::ensure_pending_optinfo): New member function. - (dump_context::begin_next_optinfo): New member function. - (dump_context::end_any_optinfo): New member function. - (dump_context::s_current): New global. - (dump_context::s_default): New global. - (dump_scope_depth): Delete global. - (dumpfile_ensure_any_optinfo_are_flushed): New function. - (dump_symtab_node): New function. - (get_dump_scope_depth): Reimplement in terms of dump_context. - (dump_begin_scope): Likewise. - (dump_end_scope): Likewise. - (selftest::temp_dump_context::temp_dump_context): New ctor. - (selftest::temp_dump_context::~temp_dump_context): New dtor. - (selftest::verify_item): New function. - (ASSERT_IS_TEXT): New macro. - (ASSERT_IS_TREE): New macro. - (ASSERT_IS_GIMPLE): New macro. - (selftest::test_capture_of_dump_calls): New test. - (selftest::dumpfile_c_tests): Call it. - * dumpfile.h (dump_printf, dump_printf_loc, dump_basic_block) - (dump_generic_expr_loc, dump_generic_expr, dump_gimple_stmt_loc) - (dump_gimple_stmt, dump_dec): Gather these related decls and add a - descriptive comment. - (dump_function, print_combine_total_stats, enable_rtl_dump_file) - (dump_node, dump_bb): Move these unrelated decls. - (class dump_manager): Add leading comment. - * optinfo.cc: New file. - * optinfo.h: New file. - -2018-07-19 Michael Collison - Richard Henderson - - * config/aarch64/aarch64.md (subv4, usubv4): New patterns. - (subti): Handle op1 zero. - (subvti4, usub4ti4): New. - (*sub3_compare1_imm): New. - (sub3_carryinCV): New. - (*sub3_carryinCV_z1_z2, *sub3_carryinCV_z1): New. - (*sub3_carryinCV_z2, *sub3_carryinCV): New. - -2018-07-19 Michael Collison - Richard Henderson - - * config/aarch64/aarch64.md: (addv4, uaddv4): New. - (addti3): Create simpler code if low part is already known to be 0. - (addvti4, uaddvti4): New. - (*add3_compareC_cconly_imm): New. - (*add3_compareC_cconly): New. - (*add3_compareC_imm): New. - (*add3_compareC): Rename from add3_compare1; do not - handle constants within this pattern.. - (*add3_compareV_cconly_imm): New. - (*add3_compareV_cconly): New. - (*add3_compareV_imm): New. - (add3_compareV): New. - (add3_carryinC, add3_carryinV): New. - (*add3_carryinC_zero, *add3_carryinV_zero): New. - (*add3_carryinC, *add3_carryinV): New. - ((*add3_compareC_cconly_imm): Replace 'ne' operator - with 'comparison' operator. - (*add3_compareV_cconly_imm): Ditto. - (*add3_compareV_cconly): Ditto. - (*add3_compareV_imm): Ditto. - (add3_compareV): Ditto. - (add3_carryinC): Ditto. - (*add3_carryinC_zero): Ditto. - (*add3_carryinC): Ditto. - (add3_carryinV): Ditto. - (*add3_carryinV_zero): Ditto. - (*add3_carryinV): Ditto. - -2018-07-19 Michael Collison - Richard Henderson - - * config/aarch64/aarch64-modes.def (CC_V): New. - * config/aarch64/aarch64-protos.h - (aarch64_addti_scratch_regs): Declare - (aarch64_subvti_scratch_regs): Declare. - (aarch64_expand_subvti): Declare. - (aarch64_gen_unlikely_cbranch): Declare - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Test - for signed overflow using CC_Vmode. - (aarch64_get_condition_code_1): Handle CC_Vmode. - (aarch64_gen_unlikely_cbranch): New function. - (aarch64_addti_scratch_regs): New function. - (aarch64_subvti_scratch_regs): New function. - (aarch64_expand_subvti): New function. - -2018-07-19 Andre Vieira - - * config/aarch64/aarch64-option-extensions.def: New entry for profile - extension. - * config/aarch64/aarch64.h (AARCH64_FL_PROFILE): New. - * doc/invoke.texi (aarch64-feature-modifiers): New entry for profile - extension. - -2018-07-19 Andre Vieira - - PR target/83009 - * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make - address check not strict. - -2018-07-19 Andre Vieira - - * config/aarch64/aarch64-simd.md (aarch64_simd_mov): Replace - Umq with Umn. - (store_pair_lanes): Likewise. - * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): Add new - enum value 'ADDR_QUERY_LDP_STP_N'. - * config/aarch64/aarch64.c (aarch64_addr_query_type): Likewise. - (aarch64_print_address_internal): Add declaration. - (aarch64_print_ldpstp_address): Remove. - (aarch64_classify_address): Adapt mode for 'ADDR_QUERY_LDP_STP_N'. - (aarch64_print_operand): Change printing of 'y'. - * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Use - new enum value 'ADDR_QUERY_LDP_STP_N', don't hardcode mode and use - 'true' rather than '1'. - * config/aarch64/constraints.md (Uml): Likewise. - (Uml): Rename to Umn. - (Umq): Remove. - -2018-07-19 Richard Biener - - * tree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member - a trailing array. - * tree-ssa-sccvn.c: Remove alloc-pool.h use. - (vn_phi_hasher): Derive from nofree_ptr_hash and remove remove method. - (vn_reference_hasher): Likewise. - (struct vn_tables_s): Remove obstack and alloc-pool members. - (vn_tables_obstack, vn_tables_insert_obstack): New global obstacks. - (vn_nary_build_or_lookup_1): Manually build in vn_tables_insert_obstack. - (vn_reference_insert): Allocate from obstack instead of from alloc-pool. - (vn_reference_insert_pieces): Likewise. - (alloc_vn_nary_op_noinit): Adjust. - (vn_nary_op_insert_stmt): Allocate phiargs in-place. - (vn_phi_eq): Adjust. - (shared_lookup_phiargs): Remove. - (vn_phi_lookup): Allocate temporary vn_phi_s on the stack. - (vn_phi_insert): Allocate from obstack instead of from alloc-pool. - (visit_reference_op_call): Likewise. - (copy_nary, copy_phi, copy_reference): Remove. - (process_scc): Rewind the obstack when iterating. Do not - copy the elements to valid_info but just move them from one - hashtable to the other. - (allocate_vn_table): Adjust. - (free_vn_table): Likewise. - (init_scc_vn): Likewise. - (free_scc_vn): Likewise. - -2018-07-19 H.J. Lu - - PR target/86560 - * config/i386/i386.c (rest_of_insert_endbranch): Lookup - indirect_return as function type attribute. - (ix86_attribute_table): Change indirect_return to function - type attribute. - * doc/extend.texi: Update indirect_return attribute. - -2018-07-19 Aldy Hernandez - - * wide-int.h (widest2_int): New. - * gimple-fold.c (arith_overflowed_p): Use it. - * tree.h (widest2_int_cst): New. - * tree-vrp.c (wide_int_binop_overflow): Rename from - vrp_int_const_binop. - Rewrite to work on trees. - (extract_range_from_multiplicative_op_1): Abstract code to... - (wide_int_range_min_max): ...here. - (wide_int_range_cross_product): ...and here. - (extract_range_from_binary_expr_1): Abstract overflow code to... - (wide_int_range_mult_wrapping): ...here. - * tree-vrp.h (wide_int_range_cross_product): New. - (wide_int_range_mult_wrapping): New. - -2018-07-19 Andrew Senkevich - Julia Koval - - * config/i386/x86-tune-costs.h (skylake_memcpy, - skylake_memset): Replace rep_prefix with unrolling for size 512. - -2018-07-18 Kugan Vivekanandarajah - - PR middle-end/86544 - * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): Handle - comparision with EQ_EXPR in last stmt. - -2018-07-18 Kelvin Nilsen - - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Rename - this subsection to "PowerPC AltiVec/VSX Built-in Functions". - (PowerPC AltiVec/VSX Built-in Functions): New name for subsection - previously known as "PowerPC AltiVec Built-in Functions". Move - some material to new subsubsections "PowerPC AltiVec Built-in - Functions on ISA 2.06" and "PowerPC AltiVec Built-in Functions on - ISA 2.07". - (PowerPC Altivec Built-in Functions on ISA 2.05): New subsubsection. - (PowerPC Altivec Built-in Functions on ISA 2.06): Likewise. - (PowerPC Altivec Built-in Functions on ISA 2.07): Likewise. - (PowerPC Altivec Built-in Functions on ISA 3.0): Likewise. - -2018-07-18 Richard Biener - - PR tree-optimization/86557 - * tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle - EXACT_DIV_EXPR. - -2018-07-18 Ilya Leoshkevich - - * config/s390/s390.c (s390_function_profiler): Generate CFI. - -2018-07-17 Jeff Law - - * config/arm/arm.c (get_label_padding): Update for recent - changes to label_to_alignment. - - PR tree-optimization/86010 - * tree-ssa-dse.c (compute_trims): Fix typo/thinko. - - * config/mips/mips.c (vr4130_align_insns): Update for recent - changes to label_to_alignment. - - * config/frv/frv.c (frv_label_align): Update for recent changes - to label_to_alignment. - - * config/nios2/nios2.c (nios2_label_align): Update for recent - changes which dropped ALIGN_LABELS_LOG. - -2018-07-17 Andreas Schwab - - * config/m68k/m68k.md (umulsi3_highpart+1, const_umulsi3_highpart) - (smulsi3_highpart+1, const_smulsi3_highpart): Add CC_STATUS_INIT. - -2018-07-17 Claudiu Zissulescu - - * config/arc/arc.c (arc_label_align): Use align_labels instead of - deprecated align_labels_log. - -2018-07-17 Richard Biener - - PR lto/86456 - * dwarf2out.c (init_sections_and_labels): Always generate - a debug_line_str_section for early LTO debug. - (dwarf2out_finish): Reset debug_line_str_hash output early. - Bump counter for extra dwarf5 .debug_loc labels to not conflict - with fat LTO part. - (dwarf2out_early_finish): Output debug_line_str. - -2018-07-17 Robin Dapp - - * config/s390/s390.c (preferred_la_operand_p): Do not use LA with - index register on z196 or later. - -2018-07-17 Robin Dapp - - * config/s390/s390.c (s390_default_align): Set default function - alignment to 16. - (s390_override_options_after_change): Call s390_default align. - (s390_option_override_internal): Call s390_default_align. - (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define. - -2018-07-17 Jakub Jelinek - - PR middle-end/86542 - * omp-low.c (create_task_copyfn): Copy over also fields corresponding - to _looptemp_ clauses, other than the first two. - -2018-07-17 Martin Liska - - * opts.c: Do not enable OPT_falign_* for -Os. - -2018-07-17 Martin Liska - - * align.h (MAX_CODE_ALIGN): New. - (MAX_CODE_ALIGN_VALUE): New. - * common/config/i386/i386-common.c (ix86_handle_option): - (MAX_CODE_ALIGN): Moved to align.h. - * final.c (MAX_CODE_ALIGN): Likewise. - * opts.c (parse_and_check_align_values): - (MAX_CODE_ALIGN): Likewise. - (MAX_CODE_ALIGN_VALUE): Likewise. - -2018-07-17 Martin Liska - - * config/i386/att.h (ASM_OUTPUT_ALIGN): Fix spacing - in order to fulfil coding style. - * config/i386/cygming.h (ASM_OUTPUT_ALIGN): Likewise. - * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise. - * config/iq2000/iq2000.h (ASM_OUTPUT_ALIGN): Likewise. - * config/pa/pa.h (ASM_OUTPUT_ALIGN): Likewise. - * config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): Likewise. - * config/sparc/sparc.h (ASM_OUTPUT_ALIGN): Likewise. - * config/visium/visium.h (ASM_OUTPUT_ALIGN): Likewise. - (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - -2018-07-17 Martin Liska - - * align.h: New file. - * config/alpha/alpha.c (alpha_align_insns_1): Use align_functions - directly. - * config/i386/i386.c (ix86_avoid_jump_mispredicts): Use new return type - align_flags of label_to_alignment. - * config/m32r/m32r.h (LOOP_ALIGN): Wrap returned values into - align_flags class. - * config/m68k/m68k.c: Do not use removed align_labels_value and - align_loops_value. - * config/nds32/nds32.h (JUMP_ALIGN): Wrap result into align_flags class. - (LOOP_ALIGN): Likewise. - (LABEL_ALIGN): Likewise. - * config/powerpcspe/powerpcspe.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP): - Remove not used macro. - (rs6000_loop_align): Change return type to align_flags. - (rs6000_loop_align_max_skip): Remove. - * config/rs6000/rs6000-protos.h (rs6000_loop_align): - Change return type to align_flags. - * config/rs6000/rs6000.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP): - Remove not used macro. - (rs6000_loop_align): Change return type to align_flags. - (rs6000_loop_align_max_skip): Remove. - * config/rx/rx.h (JUMP_ALIGN): Wrap integer values - * config/rx/rx-protos.h (rx_align_for_label): Make it - static function. - * config/rx/rx.c (rx_align_for_label): Change return type - to align_flags. - (rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP - macro definitions. - into align_flags class. - (LABEL_ALIGN): Likewise. - (LOOP_ALIGN): Likewise. - * config/s390/s390.c (s390_label_align): Use align_flags - class member. - (s390_asm_output_function_label): Likewise. - * config/sh/sh.c (sh_override_options_after_change): - Use align_flags class directly without macros. - (find_barrier): Likewise. - (barrier_align): Likewise. - (sh_loop_align): Likewise. - * config/spu/spu.c (spu_option_override): - Use align_flags_tuple::get_value instead of removed macros. - (spu_sched_init): Likewise. - * config/spu/spu.h (GTY): Likewise. - * config/visium/visium.c (visium_option_override): - Set "8" as default secondary alignment. - * config/visium/visium.h (SUBALIGN_LOG): Define to 3 - in order to guarantee secondary alignment of 8. - * coretypes.h: Include align.h header file. - * doc/tm.texi: Remove TARGET_ASM_JUMP_ALIGN_MAX_SKIP, - TARGET_ASM_LOOP_ALIGN_MAX_SKIP, TARGET_ASM_LABEL_ALIGN_MAX_SKIP - and TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP macros. - * doc/tm.texi.in: Likewise. - * final.c (struct label_alignment): Remove not used structure. - (LABEL_ALIGN): Change type to align_flags. - (LOOP_ALIGN): Likewise. - (JUMP_ALIGN): Likewise. - (default_loop_align_max_skip): Remove. - (default_label_align_max_skip): Likewise. - (default_jump_align_max_skip): Likewise. - (default_label_align_after_barrier_max_skip): - (LABEL_TO_ALIGNMENT): Change to access label_align vector. - (LABEL_TO_MAX_SKIP): Remove. - (label_to_alignment): Return align_flags type instead of integer. - (label_to_max_skip): Remove. - (align_fuzz): Use align_flags type. - (compute_alignments): Use align_flags type and use align_flags::max - to combine multiple alignments. - (grow_label_align): Grow vec instead of C array. - (update_alignments): Assign just LABEL_TO_ALIGNMENT. - (shorten_branches): Use align_flags type and use align_flags::max - to combine multiple alignments. - (final_scan_insn_1): Remove usage of secondary alignment that comes - from label alignment, but instead use proper secondary alignment - which is computed in grow_label_align. - * flags.h (struct align_flags_tuple): Move to align.h. - (struct align_flags): Likewise. - (state_align_loops): Rename to align_loops. - (state_align_jumps): Rename to align_jumps. - (state_align_labels): Rename to align_labels. - (state_align_functions): Rename to align_functions. - (align_loops_log): Remove. - (align_jumps_log): Remove. - (align_labels_log): Remove. - (align_functions_log): Remove. - (align_loops_max_skip): Remove. - (align_jumps_max_skip): Remove. - (align_labels_max_skip): Remove. - (align_functions_max_skip): Remove. - (align_loops_value): Remove. - (align_jumps_value): Remove. - (align_labels_value): Remove. - (align_functions_value): Remove. - * output.h (label_to_alignment): Change return type to align_flags. - (label_to_max_skip): Remove. - * target.def: Remove loop_align_max_skip, label_align_max_skip, - jump_align_max_skip macros. - * targhooks.h (default_loop_align_max_skip): Remove. - (default_label_align_max_skip): Likewise. - (default_jump_align_max_skip): Likewise. - (default_label_align_after_barrier_max_skip): Remove. - * toplev.c (read_log_maxskip): Use ::normalize function. - (parse_N_M): Remove not used argument and also call ::normalize. - (parse_alignment_opts): Do not pass unused arguments. - * varasm.c (assemble_start_function): Use directly align_functions - instead of removed macros. - * system.h: Do not poison removed macros. - -2018-07-17 Jakub Jelinek - - PR middle-end/86539 - * gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init - and cond temporaries don't have reference type if iterator has - pointer type. For init use &for_pre_body instead of pre_p if - for_pre_body is non-empty. - -2018-07-16 Segher Boessenkool - - * config/rs6000/rs6000.md (truncsf2): Expand truncates of - double-double modes to SFmode directly directly. - (truncsf2_fprs): Delete. - -2018-07-16 Segher Boessenkool - - * config/rs6000/rs6000.c (init_float128_ibm): Use the correct names - for conversions between IFmode and the decimal floating point modes. - (init_float128_ieee): Use the correct names for conversions between - KFmode and the decimal floating point modes. - -2018-07-16 Segher Boessenkool - - * config/rs6000/rs6000.c (init_float128_ibm): Use more correct names - for the conversions between TDmode and IFmode. - (init_float128_ieee): Use more correct names for the conversions - between TDmode and KFmode. - -2018-07-16 Jakub Jelinek - - PR tree-optimization/86526 - * builtins.c (expand_builtin_memcmp): Formatting fixes. - (inline_expand_builtin_string_cmp): Likewise. - (inline_string_cmp): Likewise. Use c_readstr instead of - builtin_memcpy_read_str. Add unit_mode temporary. - -2018-07-16 Bernd Edlinger - - PR middle-end/86528 - * builtins.c (check_access): Bail out if range[0] is no INTEGER_CST. - * expr.c (string_constant): Fix the element size of ARRAY_TYPE. - -2018-07-16 Kelvin Nilsen - - * doc/extend.texi (PowerPC AltiVec Built-in Functions): - Alphabetize prototypes of built-in functions, separating out - built-in functions that are listed in this section but should be - described elsewhere. - -2018-07-16 Uros Bizjak - - PR target/86511 - * expmed.c (emit_store_flag): Do not emit setcc followed by a - conditional move when trapping comparison was split to a - non-trapping one (and vice versa). - -2018-07-16 Ilya Leoshkevich - - * config/s390/s390.c (s390_function_profiler): Generate nops - instead of profiler call sequences. - * config/s390/s390.opt: Add the new option. - -2018-07-16 Ilya Leoshkevich - - * config/s390/s390.c (s390_function_profiler): Generate - __mcount_loc section. - * config/s390/s390.opt: Add the new option. - -2018-07-16 Ilya Leoshkevich - - * common.opt: Add the new warning. - * config/s390/s390.c (s390_function_profiler): Emit "brasl - %r0,__fentry__" when -mfentry is specified. - (s390_option_override_internal): Disallow -mfentry for 31-bit - CPUs. - * config/s390/s390.opt: Add the new option. - -2018-07-16 Richard Biener - - PR lto/86523 - * dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents - for function-local FUNCTION_DECL and RESULT_DECL immediately. - -2018-07-16 Martin Liska - - PR ipa/86529 - * ipa-pure-const.c (malloc_candidate_p): Revert ::get - to ::get_create. - -2017-07-16 Claudiu Zissulescu - - * config/arc/arcHS.md: Update ARCHS scheduling rules. - -2017-07-16 Claudiu Zissulescu - - * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters - for ARCHS4x. - * config/arc/arc-cpus.def (hs4x): New cpu. - (hs4xd): Likewise. - * config/arc/arc-tables.opt: Regenerate. - * config/arc/arc.c (arc_sched_issue_rate): New function. - (TARGET_SCHED_ISSUE_RATE): Define. - (TARGET_SCHED_EXPOSED_PIPELINE): Likewise. - * config/arc/arc.md (attr type): Add fpu_fuse, fpu_sdiv, fpu_ddiv, - fpu_cvt. - (attr tune): Add ARCHS4x tune values. - (attr tune_dspmpy): Define. - (*tst): Correct instruction type. - * config/arc/arcHS.md: Don't use this automaton for ARCHS4x cpus. - * config/arc/arcHS4x.md: New file. - * config/arc/fpu.md: Update instruction type attributes. - * config/arc/t-multilib: Regenerate. - -2018-07-16 Tom de Vries - - PR debug/86455 - * var-tracking.c (vt_initialize): Fix pre_dec handling. - -2018-07-16 Ramana Radhakrishnan - - * config/aarch64/atomics.md (aarch64_store_execlusive): Add - early clobber. - -2018-07-16 Eric Botcazou - - PR tree-optimization/86514 - * tree-ssa-reassoc.c (init_range_entry) : Return for a - conversion to a boolean type from a type with greater precision. - -2018-07-16 Tom de Vries - - * var-tracking.c (vt_initialize): Print adjusted insn slim if - dump_flags request TDF_SLIM. - -2018-07-16 Aldy Hernandez - - * fold-const.c (int_const_binop_1): Abstract... - (wide_int_binop): ...wide int code here. - (poly_int_binop): ...poly int code here. - Abstract the rest of int_const_binop_1 into int_const_binop. - * fold-const.h (wide_int_binop): New. - * tree-vrp.c (vrp_int_const_binop): Call wide_int_binop. - Remove useless PLUS/MINUS_EXPR case. - (zero_nonzero_bits_from_vr): Move wide int code... - (zero_nonzero_bits_from_bounds): ...here. - (extract_range_from_binary_expr_1): Move mask optimization code... - (range_easy_mask_min_max): ...here. - * tree-vrp.h (zero_nonzero_bits_from_bounds): New. - (range_easy_mask_min_max): New. - -2018-07-15 Jeff Law - - PR target/85993 - * config/sh/sh.c (output_mi_thunk): Remove dead conditional - block. - -2018-07-14 Jim Wilson - - * config/riscv/linux.h (TARGET_ASM_FILE_END): New. - -2018-07-14 Paul Koning - - * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes. - -2018-07-13 Jan Hubicka - - * lto-streamer-out.c (copy_function_or_variable): Dump info about - copying section. - -2018-07-13 Bill Schmidt - Steve Munroe - - * config/rs6000/emmintrin.h (_mm_and_si128): New function. - (_mm_andnot_si128): Likewise. - (_mm_or_si128): Likewise. - (_mm_xor_si128): Likewise. - -2018-07-13 Qing Zhao - - PR middle-end/78809 - * builtins.c (expand_builtin_memcmp): Inline the calls first - when result_eq is false. - (expand_builtin_strcmp): Inline the calls first. - (expand_builtin_strncmp): Likewise. - (inline_string_cmp): New routine. Expand a string compare - call by using a sequence of char comparison. - (inline_expand_builtin_string_cmp): New routine. Inline expansion - a call to str(n)cmp/memcmp. - * doc/invoke.texi (--param builtin-string-cmp-inline-length): - New option. - * params.def (BUILTIN_STRING_CMP_INLINE_LENGTH): New. - -2018-07-13 Richard Earnshaw - - * config/arm/driver-arm.c: Include arm-native.h. - (host_detect_local_cpu): Use auto-generated data tables. - (vendors, arm_cpu_table): Delete. Move part information to ... - * config/arm/arm-cpus.in: ... here. - * config/arm/parsecpu.awk (gen_native): New function. - (vendor, part): New CPU fields. - (END): Add support for building the native CPU detection tables. - * config/arm/t-arm (arm-native.h): Add build rule. - (driver-arm.o): Add dependency on arm-native.h. - -2018-07-13 Richard Biener - - PR middle-end/85974 - * match.pd (addr1 - addr2): Allow either of the operand to - have a conversion. - -2018-07-13 Tom de Vries - - * tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated - in remap_ssa_name. - -2018-07-13 Jackson Woodruff - - * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use - arrays instead of numbered variables. - -2018-07-13 Eric Botcazou - - * config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete. - * config/sparc/sparc.c (sparc_compute_frame_size): Make static. - -2018-07-13 Richard Biener - - PR debug/86452 - * dwarf2out.c (gen_type_die_with_usage): Use scope_die_for - instead of get_context_die. - -2018-07-13 Kugan Vivekanandarajah - Richard Biener - - PR middle-end/86489 - * tree-ssa-loop-niter.c (number_of_iterations_popcount): Check - that the loop latch destination where phi is defined. - -2018-07-12 Kito Cheng - - * config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE. - (riscv_expand_epilogue): Add assertion to check interrupt mode. - (riscv_set_current_function): Extract getting interrupt type to new - function. - (riscv_get_interrupt_type): New function. - (riscv_merge_decl_attributes): New function, checking interrupt type is - same. - (TARGET_MERGE_DECL_ATTRIBUTES): Define. - -2018-07-12 Paul Koning - - * config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set - directive. - -2018-07-12 Paul Koning - - * doc/rtl.texi (REG_NONNEG): Remove decrement and branch until - zero reference, add doloop_end instead. - * doc/md.texi (decrement_and_branch_until_zero): Remove. - (Looping patterns): Remove decrement_and_branch_until_zero. Add - detail for doloop_end. - -2018-07-12 Martin Sebor - - PR c/86453 - * attribs.c (decl_attributes): Reject conflicting attributes before - calling attribute handlers. - -2018-07-12 Jan Hubicka - - * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART - parameter. - (gcc::dump_manager::get_dump_file_name): likewise. - (dump_begin): Likewise. - * dumpfile.h (dump_begin): Update prototype. - (gcc::dump_manager::get_dump_file_name, - gcc::dump_manager::get_dump_file_name): Update prototype. - -2018-07-12 Richard Sandiford - - * internal-fn.h (vectorizable_internal_fn_p): New function. - * tree-vect-slp.c (compatible_calls_p): Likewise. - (vect_build_slp_tree_1): Remove nops argument. Handle calls - to internal functions. - (vect_build_slp_tree_2): Update call to vect_build_slp_tree_1. - -2018-07-12 Richard Sandiford - - * fold-const.h (inverse_conditions_p): Declare. - * fold-const.c (inverse_conditions_p): New function. - * match.pd: Use inverse_conditions_p. Add folds of view_converts - that test the inverse condition of a conditional internal function. - * internal-fn.h (vectorized_internal_fn_supported_p): Declare. - * internal-fn.c (internal_fn_mask_index): Handle conditional - internal functions. - (vectorized_internal_fn_supported_p): New function. - * tree-if-conv.c: Include internal-fn.h and fold-const.h. - (any_pred_load_store): Replace with... - (need_to_predicate): ...this new variable. - (redundant_ssa_names): New variable. - (ifcvt_can_use_mask_load_store): Move initial checks to... - (ifcvt_can_predicate): ...this new function. Handle tree codes - for which a conditional internal function exists. - (if_convertible_gimple_assign_stmt_p): Use ifcvt_can_predicate - instead of ifcvt_can_use_mask_load_store. Update after variable - name change. - (predicate_load_or_store): New function, split out from - predicate_mem_writes. - (check_redundant_cond_expr): New function. - (value_available_p): Likewise. - (predicate_rhs_code): Likewise. - (predicate_mem_writes): Rename to... - (predicate_statements): ...this. Use predicate_load_or_store - and predicate_rhs_code. - (combine_blocks, tree_if_conversion): Update after above name changes. - (ifcvt_local_dce): Handle redundant_ssa_names. - * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Handle - general conditional functions. - * tree-vect-stmts.c (vectorizable_call): Likewise. - -2018-07-12 Richard Sandiford - Alan Hayward - David Sherwood - - * internal-fn.h (can_interpret_as_conditional_op_p): Declare. - * internal-fn.c (can_interpret_as_conditional_op_p): New function. - * tree-ssa-math-opts.c (convert_mult_to_fma_1): Handle conditional - plus and minus and convert them into IFN_COND_FMA-based sequences. - (convert_mult_to_fma): Handle conditional plus and minus. - -2018-07-12 Richard Sandiford - - * doc/md.texi (cond_fma, cond_fms, cond_fnma, cond_fnms): Document. - * optabs.def (cond_fma_optab, cond_fms_optab, cond_fnma_optab) - (cond_fnms_optab): New optabs. - * internal-fn.def (COND_FMA, COND_FMS, COND_FNMA, COND_FNMS): New - internal functions. - (FMA): Use DEF_INTERNAL_FLT_FN rather than DEF_INTERNAL_FLT_FLOATN_FN. - * internal-fn.h (get_conditional_internal_fn): Declare. - (get_unconditional_internal_fn): Likewise. - * internal-fn.c (cond_ternary_direct): New macro. - (expand_cond_ternary_optab_fn): Likewise. - (direct_cond_ternary_optab_supported_p): Likewise. - (FOR_EACH_COND_FN_PAIR): Likewise. - (get_conditional_internal_fn): New function. - (get_unconditional_internal_fn): Likewise. - * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 5. - (gimple_match_op::gimple_match_op): Add a new overload for 5 - operands. - (gimple_match_op::set_op): Likewise. - (gimple_resimplify5): Declare. - * genmatch.c (decision_tree::gen): Generate simplifications for - 5 operands. - * gimple-match-head.c (gimple_simplify): Define an overload for - 5 operands. Handle calls with 5 arguments in the top-level overload. - (convert_conditional_op): Handle conversions from unconditional - internal functions to conditional ones. - (gimple_resimplify5): New function. - (build_call_internal): Pass a fifth operand. - (maybe_push_res_to_seq): Likewise. - (try_conditional_simplification): Try converting conditional - internal functions to unconditional internal functions. - Handle 3-operand unconditional forms. - * match.pd (UNCOND_TERNARY, COND_TERNARY): Operator lists. - Define ternary equivalents of the current rules for binary conditional - internal functions. - * config/aarch64/aarch64.c (aarch64_preferred_else_value): Handle - ternary operations. - * config/aarch64/iterators.md (UNSPEC_COND_FMLA, UNSPEC_COND_FMLS) - (UNSPEC_COND_FNMLA, UNSPEC_COND_FNMLS): New unspecs. - (optab): Handle them. - (SVE_COND_FP_TERNARY): New int iterator. - (sve_fmla_op, sve_fmad_op): New int attributes. - * config/aarch64/aarch64-sve.md (cond_) - (*cond__2, *cond__any): New SVE_COND_FP_TERNARY patterns. - -2018-07-12 Richard Sandiford - - * target.def (preferred_else_value): New target hook. - * doc/tm.texi.in (TARGET_PREFERRED_ELSE_VALUE): New hook. - * doc/tm.texi: Regenerate. - * targhooks.h (default_preferred_else_value): Declare. - * targhooks.c (default_preferred_else_value): New function. - * internal-fn.h (conditional_internal_fn_code): Declare. - * internal-fn.c (FOR_EACH_CODE_MAPPING): New macro. - (get_conditional_internal_fn): Use it. - (conditional_internal_fn_code): New function. - * gimple-match.h (gimple_match_cond): New struct. - (gimple_match_op): Add a cond member function. - (gimple_match_op::gimple_match_op): Update all forms to take a - gimple_match_cond. - * genmatch.c (expr::gen_transform): Use the same condition as res_op - for the suboperation, but don't specify a particular else_value. - * tree-ssa-sccvn.c (vn_nary_simplify, vn_reference_lookup_3) - (visit_nary_op, visit_reference_op_load): Pass - gimple_match_cond::UNCOND to the gimple_match_op constructor. - * gimple-match-head.c: Include tree-eh.h - (convert_conditional_op): New function. - (maybe_resimplify_conditional_op): Likewise. - (gimple_resimplify1): Call maybe_resimplify_conditional_op. - (gimple_resimplify2): Likewise. - (gimple_resimplify3): Likewise. - (gimple_resimplify4): Likewise. - (maybe_push_res_to_seq): Return null for conditional operations. - (try_conditional_simplification): New function. - (gimple_simplify): Call it. Pass conditions to the gimple_match_op - constructor. - * match.pd: Fold VEC_COND_EXPRs of an IFN_COND_* call to a new - IFN_COND_* call. - * config/aarch64/aarch64.c (aarch64_preferred_else_value): New - function. - (TARGET_PREFERRED_ELSE_VALUE): Redefine. - -2018-07-12 Jan Hubicka - - * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream - DECL_FCONTEXT - (hash_tree): Do not hash DECL_FCONTEXT - * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers): - Do not stream DECL_FCONTEXT. - * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise. - * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT. - -2018-07-12 Richard Biener - - PR debug/86462 - * dwarf2out.c (gen_block_die): Only output blocks when they have - at least one !DECL_IGNORED_P variable. - -2018-07-12 Richard Biener - - PR target/84829 - * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC): - Remove -mieee-fp handling. - -2018-07-12 Richard Biener - - * tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus - left-over from last patch. - -2018-07-12 Jakub Jelinek - - PR tree-optimization/86492 - * gimple-ssa-store-merging.c - (imm_store_chain_info::coalesce_immediate_stores): Call - check_no_overlap even for the merge_overlapping case. Formatting fix. - -2018-07-12 Richard Biener - - PR middle-end/86479 - * fold-const.c (fold_binary_op_with_conditional_arg): Do not - move possibly trapping operations into the conditional. - -2018-07-12 Richard Biener - - * tree-ssa-sccvn.c (mprts_hook_cnt): Remove. - (vn_lookup_simplify_result): Remove recursion limit applied - here. - (vn_nary_build_or_lookup_1): Adjust. - (try_to_simplify): Likewise. - * gimple-match-head.c (gimple_resimplify1): Instead apply one - here. - (gimple_resimplify2): Likewise. - (gimple_resimplify3): Likewise. - (gimple_resimplify4): Likewise. - -2018-07-11 Jakub Jelinek - - * config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask): - Use __mmask64 type instead of __mmask8 for __M argument. - * config/i386/avx512fintrin.h (_mm512_mask_xor_epi64, - _mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for - __U argument. - (_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of - __mmask16 for __M argument. - (_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4, - _mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument - to __mmask16 instead of __mmask8. - * config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps, - _mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps, - _mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps, - _mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type - instead of __mmask16 for __U argument. - * config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use - __mmask16 instead of __mmask8 for __U argument. - (_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for - __U argument. - (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of - __mmask16. - (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U - argument. - (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for - __U argument. - (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of - __mmask16. - (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead - of __mmask16. - (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for - __U argument. - (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for - __U argument. - (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for - __U argument. - (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for - __U argument. - (_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask, - _mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change - return type as well as __M argument type and all casts from __mmask8 - to __mmask32. - (_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask, - _mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change - return type as well as __M argument type and all casts from __mmask8 - to __mmask16. - (_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask, - _mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change - return type as well as __M argument type and all casts from __mmask8 - to __mmask32. - (_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask, - _mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change - return type as well as __M argument type and all casts from __mmask8 - to __mmask16. - * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32, - _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of - __mmask16. - -2018-07-11 Grazvydas Ignotas - - * config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask, - _mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32 - for __U argument. - -2018-07-11 Paul Koning - - * doc/md.texi (define_subst): Document how multiple occurrences of - the same argument in the replacement pattern are handled. - -2018-07-11 Paul Koning - - * doc/extend.texi (Common Variable Attributes): Move "mode" into - alphabetical order. - (Common Type Attributes): Add "mode" attribute. - -2018-07-11 Jan Hubicka - - * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not - stream DECL_ORIGINAL_TYPE. - (DFS::DFS_write_tree_body): Drop hack handling local external decls. - (hash_tree): Do not walk DECL_ORIGINAL_TYPE. - * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers): - Do not walk original type. - * tree-streamer-out.c (streamer_write_chain): Drop hack handling - external decls. - (write_ts_decl_non_common_tree_pointers): Do not stream - DECL_ORIGINAL_TYPE - * tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE. - (find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE. - -2018-07-11 Aldy Hernandez - - * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump - thread twice from the same starting edge. - -2018-07-11 Aldy Hernandez - - * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to... - * gimple.c (gimple_call_nonnull_result_p): ...here... - (gimple_call_nonnull_arg): ...and here. - * gimple.h (gimple_call_nonnull_result_p): New. - (gimple_call_nonnull_arg): New. - -2018-07-11 Richard Earnshaw - - * config/arm/arm-cpus.in: Move information from fpu field of each - cpu definition to the isa field. - * config/arm/parsecpu.awk (fpu): Delete match rule. - (gen_comm_data): Don't add bits from the CPU's FPU entry. - -2018-07-11 Richard Biener - - PR debug/86457 - * dwarf2out.c (init_sections_and_labels): Use - output_asm_line_debug_info consistently. - (dwarf2out_early_finish): Likewise. - (dwarf2out_finish): Remove DW_AT_stmt_list from early generated - type units. - -2018-07-11 Richard Biener - - * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): - Rework father_bb setting in a way to avoid propagating constants - multiple times on a loop body. - -2018-07-10 Mark Wielaard - - PR debug/86459 - * dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert. - -2018-07-10 Richard Biener - - * hash-map.h (hash_map::iterator::operator*): Return - references to key and value. - -2018-07-10 Jakub Jelinek - - PR c++/86443 - * gimplify.c (find_combined_omp_for): Add DATA argument, in addition - to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers, - BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between. - (gimplify_omp_for): For composite loops, move outer - OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost - OMP_FOR/OMP_SIMD if there are any non-trivial wrappers. For class - iterators add any needed clauses. Allow OMP_FOR_ORIG_DECLS to contain - TREE_LIST for both the original class iterator and the "last" helper - var. Gimplify OMP_FOR_PRE_BODY before the outermost composite - loop, remember has_decl_expr from outer composite loops for the - innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT. - -2018-07-09 Martin Sebor - - PR middle-end/77357 - PR middle-end/86428 - * builtins.c (c_strlen): Avoid out-of-bounds warnings when - accessing implicitly initialized array elements. - * expr.c (string_constant): Handle string initializers of - character arrays within aggregates. - * gimple-fold.c (fold_array_ctor_reference): Add argument. - Store element offset. As a special case, handle zero size. - (fold_nonarray_ctor_reference): Same. - (fold_ctor_reference): Add argument. Store subobject offset. - * gimple-fold.h (fold_ctor_reference): Add argument. - -2018-07-09 Paul Koning - - * config/pdp11/pdp11.c (pdp11_addr_cost): New function. - (pdp11_insn_cost): New function. - (pdp11_md_asm_adjust): New function. - (TARGET_INVALID_WITHIN_DOLOOP): Define. - (pdp11_rtx_costs): Update to match machine better. - (output_addr_const_pdp11): Correct format mismatch warnings. - * config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition. - * config/pdp11/pdp11.md: General change to add base_cost and/or - length attributes for use by new pdp11_insn_cost function. - (MIN_BRANCH): Correct definition. - (MIN_SOB): Ditto. - (doloop_end): Use standard pattern name for looping pattern. - (doloop_end_nocc): New. - (movsf): Add another constraint alternative. - (zero_extendqihi2): Add constraint alternatives for not in place - extend. - (zero_extendhisi2): Remove. - (shift patterns): Add CC handling variants. - (bswaphi2): New. - (bswapsi2): New. - (rothi3): New. - (define_peephole2): New peephole to recognize mov that sets CC for - subsequent test. - -2018-07-09 Rainer Orth - - * config/sparc/sparc.c (sparc_fold_builtin) : Adapt for signature change of wi::neg, - wi::add. - -2018-07-09 Jakub Jelinek - - PR c/86420 - * real.c (real_nextafter): Return true if result is denormal. - -2018-07-09 Martin Liska - - * common.opt: Add back wrongly removed attribute. - -2018-07-09 Richard Biener - - PR debug/86413 - * dwarf2out.c (gen_block_die): For an early generated DIE - always output high/low PC attributes. - -2018-07-09 Tom de Vries - - * cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL. - * tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping - onto VAR_DECL with abstract origin. - -2018-07-07 Jim Wilson - - * config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New. - -2018-07-07 Tom de Vries - - * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL. - -2018-07-07 Aldy Hernandez - - * tree-vrp.c (vrp_int_const_binop): Change overflow type to - overflow_type. - (combine_bound): Use wide-int overflow calculation instead of - rolling our own. - * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to - overflow_type. - * fold-const.c (int_const_binop_2): Same. - (extract_muldiv_1): Same. - (fold_div_compare): Same. - (fold_abs_const): Same. - * match.pd: Same. - * poly-int.h (add): Same. - (sub): Same. - (neg): Same. - (mul): Same. - * predict.c (predict_iv_comparison): Same. - * profile-count.c (slow_safe_scale_64bit): Same. - * simplify-rtx.c (simplify_const_binary_operation): Same. - * tree-chrec.c (tree_fold_binomial): Same. - * tree-data-ref.c (split_constant_offset_1): Same. - * tree-if-conv.c (idx_within_array_bound): Same. - * tree-scalar-evolution.c (iv_can_overflow_p): Same. - * tree-ssa-phiopt.c (minmax_replacement): Same. - * tree-vect-loop.c (is_nonwrapping_integer_induction): Same. - * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same. - * vr-values.c (vr_values::adjust_range_with_scev): Same. - * wide-int.cc (wi::add_large): Same. - (wi::mul_internal): Same. - (wi::sub_large): Same. - (wi::divmod_internal): Same. - * wide-int.h: Change overflow type to overflow_type for neg, add, - mul, smul, umul, div_trunc, div_floor, div_ceil, div_round, - mod_trunc, mod_ceil, mod_round, add_large, sub_large, - mul_internal, divmod_internal. - (overflow_type): New enum. - (accumulate_overflow): New. - -2018-07-06 Kugan Vivekanandarajah - - * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New. - (tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern. - -2018-07-06 Kugan Vivekanandarajah - - * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount - argument is checked for zero before entering loop, avoid checking again. - -2018-07-06 Kugan Vivekanandarajah - - * gimplify.h (generic_expr_could_trap_p): Set as global function. - * gimplify.h (generic_expr_could_trap_p): Likwise. - * tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR. - -2018-07-06 Jakub Jelinek - - PR tree-optimization/86401 - * fold-const.c (fold_binary_loc) : Move the - ((A & N) + B) & M -> (A + B) & M etc. optimization into ... - (fold_bit_and_mask): ... here. New helper function for match.pd. - * fold-const.h (fold_bit_and_mask): Declare. - * match.pd (((A & N) + B) & M -> (A + B) & M): New optimization. - -2018-07-06 Peter Bergner - - PR target/86324 - * target.def (translate_mode_attribute): New hook. - * targhooks.h (default_translate_mode_attribute): Declare. - * targhooks.c (default_translate_mode_attribute): New function. - * doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook. - * doc/tm.texi: Regenerate. - * config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define. - (rs6000_translate_mode_attribute): New function. - -2018-07-06 Paul Koning - - * doc/md.texi (define_split): Document DONE and FAIL. - (define_peephole2): Ditto. - -2018-07-05 Jeff Law - - PR tree-optimization/86010 - * tree-ssa-dse.c (compute_trims): More aggressively trim at - both the head and tail of mem* and str* calls. - -2018-07-05 Jim Wilson - - * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*. - -2018-07-05 Indu Bhagat - - * config/aarch64/aarch64-simd.md: correct flags text for - MIN_EXPR replacement. - -2018-07-05 James Clarke - - * configure: Regenerated. - -2018-07-05 Carl Love - - * config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for - float argument to VSX_BUILTIN_DOUBLEH_V4SF. - Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to - VSX_BUILTIN_DOUBLEL_V4SF. - -2018-07-05 Martin Sebor - - PR c++/86400 - * tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather - than its domain to compute its the upper bound of a char array. - -2018-07-05 Nathan Sidwell - - Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C. - * doc/cpp.texi: Update comment. - * doc/tm.texi: Rebuilt. - * doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ... - (SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense. - * doc/extend.texi (Backwards Compatibility): Clarify it is system - headers affected by extern "C". - * system.h: Poison NO_IMPLICIT_EXTERN_C. - * config/alpha/alpha.h, config/arm/uclinux-elf.h, - config/bfin/elf.h, config/cris/cris.h, config/darwin.h, - config/dragonfly.h, config/freebsd.h, config/gnu-user.h, - config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h, - config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h, - config/lynx.h, config/mips/elf.h, config/mmix/mmix.h, - config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h, - config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h, - config/s390/tpf.h, config/sh/newlib.h, config/sol2.h, - config/sparc/openbsd64.h, config/sparc/sp-elf.h, - config/sparc/sp64-elf.h, config/spu/spu.h, - config/stormy16/stormy16.h, config/v850/v850.h, - config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't - define NO_IMPLICIT_EXTERN_C. - * config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C. - -2018-07-05 Tamar Christina - - PR target/84711 - * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE - instead of GET_MODE_SIZE when comparing Units. - -2018-07-05 Tamar Christina - - PR target/84711 - * rtlanal.c (set_noop_p): Constrain on mode change, - include hard-reg-set.h - -2018-07-05 Tamar Christina - - * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size. - -2018-07-05 Jakub Jelinek - - Revert - 2018-07-04 Maxim Ostapenko - - PR sanitizer/84250 - * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static - libasan. - * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan. - -2018-07-04 Maxim Ostapenko - - PR sanitizer/84250 - * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static - libasan. - * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan. - -2018-07-04 Eric Botcazou - - PR middle-end/86380 - * expmed.c (choose_multiplier): Fix incorrect comparison with mask. - -2018-07-04 Aldy Hernandez - - * tree-vrp.c (extract_range_from_binary_expr_1): Initialize - neg_*_op* variables. - -2018-07-04 Martin Liska - - * tree-switch-conversion.c: Define - max_ratio_for_speed and max_ratio_for_size constants. - -2018-07-04 Denys Vlasenko - Martin Liska - - PR middle-end/66240 - PR target/45996 - PR c/84100 - * common.opt: Rename align options with 'str_' prefix. - * common/config/i386/i386-common.c (set_malign_value): New - function. - (ix86_handle_option): Use it to set -falign-* options/ - * config/aarch64/aarch64-protos.h (struct tune_params): Change - type from int to string. - * config/aarch64/aarch64.c: Update default values from int - to string. - * config/alpha/alpha.c (alpha_override_options_after_change): - Likewise. - * config/arm/arm.c (arm_override_options_after_change_1): Likewise. - * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print - max skip conditionally. - * config/i386/freebsd.h (SUBALIGN_LOG): New. - (ASM_OUTPUT_MAX_SKIP_ALIGN): Print - max skip conditionally. - * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print - max skip conditionally. - * config/i386/gnu-user.h (SUBALIGN_LOG): New. - (ASM_OUTPUT_MAX_SKIP_ALIGN): Print - max skip conditionally. - * config/i386/i386.c (struct ptt): Change type from int to - string. - (ix86_default_align): Set default values. - * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print - max skip conditionally. - * config/i386/iamcu.h (SUBALIGN_LOG): New. - (ASM_OUTPUT_MAX_SKIP_ALIGN): - * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): - * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print - max skip conditionally. - * config/i386/openbsdelf.h (SUBALIGN_LOG): New. - (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.: - * config/i386/x86-64.h (SUBALIGN_LOG): New. - (ASM_OUTPUT_MAX_SKIP_ALIGN): Print - max skip conditionally. - (ASM_OUTPUT_MAX_SKIP_PAD): Likewise. - * config/ia64/ia64.c (ia64_option_override): Set default values - for alignment options. - * config/m68k/m68k.c: Handle new str_align_* options. - * config/mips/mips.c (mips_set_compression_mode): Change - type of constants. - (mips_option_override): Set default values for options. - * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal): - Likewise. - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Likewise. - * config/rx/rx.c (rx_option_override): Likewise. - * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log. - (LABEL_ALIGN): Use align_labels_log. - (LOOP_ALIGN): Use align_loops_align. - * config/s390/s390.c (s390_asm_output_function_label): Use new - macros. - * config/sh/sh.c (sh_override_options_after_change): - Change type of constants. - * config/spu/spu.c (spu_sched_init): Likewise. - * config/sparc/sparc.c (sparc_option_override): Set default - values for options. - * config/visium/visium.c (visium_option_override): Likewise. - * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not - emit p2align format with last argument if it's not needed. - * doc/invoke.texi: Document extended format of -falign-*. - * final.c: Use align_labels alignment. - * flags.h (struct target_flag_state): Change type to use - align_flags. - (struct align_flags_tuple): New. - (struct align_flags): Likewise. - (align_loops_log): Redefine macro to use new types. - (align_loops_max_skip): Redefine macro to use new types. - (align_jumps_log): Redefine macro to use new types. - (align_jumps_max_skip): Redefine macro to use new types. - (align_labels_log): Redefine macro to use new types. - (align_labels_max_skip): Redefine macro to use new types. - (align_functions_log): Redefine macro to use new types. - (align_loops): Redefine macro to use new types. - (align_jumps): Redefine macro to use new types. - (align_labels): Redefine macro to use new types. - (align_functions): Redefine macro to use new types. - (align_functions_max_skip): Redefine macro to use new types. - (align_loops_value): New macro. - (align_jumps_value): New macro. - (align_labels_value): New macro. - (align_functions_value): New macro. - * function.c (invoke_set_current_function_hook): Propagate - alignment values from flags to global variables default in - topleev.h. - * ipa-icf.c (sem_function::equals_wpa): Use - cl_optimization_option_eq instead of memcmp. - * lto-streamer.h (cl_optimization_stream_out): Support streaming - of string types. - (cl_optimization_stream_in): Likewise. - * optc-save-gen.awk: Support strings in cl_optimization. - * opth-gen.awk: Likewise. - * opts.c (finish_options): Remove error checking of invalid - value ranges. - (MAX_CODE_ALIGN): Remove. - (MAX_CODE_ALIGN_VALUE): Likewise. - (parse_and_check_align_values): New function. - (check_alignment_argument): Likewise. - (common_handle_option): Use check_alignment_argument. - * opts.h (parse_and_check_align_values): Declare. - * toplev.c (init_alignments): Remove. - (read_log_maxskip): New. - (parse_N_M): Likewise. - (parse_alignment_opts): Likewise. - (backend_init_target): Remove usage of init_alignments. - * toplev.h (parse_alignment_opts): Declare. - * tree-streamer-in.c (streamer_read_tree_bitfields): Add new - argument. - * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise. - * tree.c (cl_option_hasher::equal): New. - * varasm.c: Use new global macros. - -2018-07-04 Denys Vlasenko - - * config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN): - Use a simpler align directive also if MAXSKIP = ALIGN-1. - * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise. - * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N - is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG - define. Use a simpler align directive also if MAXSKIP = ALIGN-1. - * config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - * config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - * config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. - -2018-07-04 Martin Liska - Jonathan Wakely - - * coverage.c: Use correct type. - * doc/invoke.texi: Language correction. - -2018-07-03 H.J. Lu - - PR target/85620 - * config/i386/i386.c (rest_of_insert_endbranch): Also generate - ENDBRANCH for non-tail call which may return via indirect branch. - * doc/extend.texi: Document indirect_return attribute. - -2018-07-03 Martin Sebor - - PR tree-optimization/86274 - * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify - precondition. - (format_floating): Correct handling of infinities and NaNs. - -2018-07-03 Martin Sebor - - * print-tree.c (print_real_cst): New function. - (print_node_brief): Call it. - (print_node): Ditto. - -2018-07-03 Jeff Law - - * config/h8300/h8300.md (logical3_sn, logical3): Merge - into a single pattern. - - * config/h8300/h8300.md (ors code_iterator): New. - (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into - a single pattern and single splitter. - (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern. - (iorqi3_1, xorqi3_1): Likewise. - (iorqi3, xorqi3 expanders): Similarly. - - * config/h8300/h8300.md (movmd_internal_normal): Consolidated with - (movmd_internal) into a single pattern using the P mode iterator. - (movmd splitters): Similarly. - (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns. - (movsd splitters): Similarly. - - * config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate - ADDB, ADDW and ADDL into a single ADD attribute which selects the - right table based on the size of the operand. - * config/h8300/h8300.md (length_table): Corresponding changes. All - references to "addb", "addw" and "addl" changed to "add". - (btst patterns): Merge two variants into a single pattern. - (tstqi, tsthi): Likewise. - (addhi3_incdec, addsi3_incdec): Likewise. - (subhi3_h8300hs, subsi3_h8300hs): Likewise. - (mulhi3, mulsi3): Likewise. - (udivhi3, udivsi3): Likewise. - (divhi3, divsi3): Likewise. - (andorqi3, andorhi3, andorsi3): Likewise. - -2018-07-03 Uros Bizjak - - PR target/85694 - * config/i386/sse.md (uavg3_ceil): New expander. - (_uavg3): Simplify expander. - -2018-07-03 Richard Sandiford - - PR tree-optimization/85694 - * config/aarch64/iterators.md (HADD, RHADD): New int iterators. - (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and - UNSPEC_URHADD. - * config/aarch64/aarch64-simd.md (avg3_floor) - (avg3_ceil): New patterns. - -2018-07-03 David Malcolm - - * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from - scan-tree-dump directive. - * gcc.dg/vect/slp-perm-2.c: Likewise. - * gcc.dg/vect/slp-perm-3.c: Likewise. - * gcc.dg/vect/slp-perm-5.c: Likewise. - * gcc.dg/vect/slp-perm-6.c: Likewise. - * gcc.dg/vect/slp-perm-7.c: Likewise. - * gcc.dg/vect/slp-perm-8.c: Likewise. - -2018-07-03 Marek Polacek - - PR middle-end/86202 - * gimple-fold.c (size_must_be_zero_p): Check the type of the size. - -2018-07-03 Richard Biener - - PR ipa/86389 - * tree-ssa-structalias.c (find_func_clobbers): Properly - handle indirect calls. - -2018-07-03 Jeff Law - - * config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators. - (shifts): New code iterator. - (movqi, movhi, movsi, movsf expanders): Consolidate into a single - expander. Fix HImode handling on H8/SX. - (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander. - (subqi3, subhi3, subsi3 expanders): Likewise. - (andqi3, andhi3, andsi3 expanders): Likewise. - (iorqi3, iorhi3, iorsi3 expanders): Likewise. - (xorqi3, xorhi3, xorsi3 expanders): Likewise. - (negqi2, neghi2, negsi2, negsf2 expanders): Likewise. - (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise. - (zero_extendqihi2, zero_extendqisi2): Likewise. - (extendqihi2, extendqisi2): Likewise. - (rotlqi3, rotlhi3, rotlsi3): Likewise. - (neghi2_h8300, negsi2_h8300): Likewise for these patterns. - (rotlqi3_1, rotlhi3_1): Likewise. - (logicalhi3_sn, logicalsi3_sn): Likewise. - (logicalhi3, logicalsi3): Likewise. - -2018-07-03 Richard Sandiford - - * tree-vect-patterns.c (vect_recog_rotate_pattern) - (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern) - (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast) - (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector - type to append_pattern_def_seq instead of creating a stmt_vec_info - directly. - (build_mask_conversion): Likewise. Remove vinfo argument. - (vect_add_conversion_to_patterm): Likewise, renaming to... - (vect_add_conversion_to_pattern): ...this. - (vect_recog_mask_conversion_pattern): Update call to - build_mask_conversion. Pass the vector type to - append_pattern_def_seq here too. - (vect_recog_gather_scatter_pattern): Update call to - vect_add_conversion_to_pattern. - -2018-07-03 Richard Sandiford - - * tree-vect-patterns.c (new_pattern_def_seq): Delete. - (vect_recog_dot_prod_pattern, vect_recog_sad_pattern) - (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern) - (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set - STMT_VINFO_PATTERN_DEF_SEQ to null here. - (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern) - (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use - append_pattern_def_seq instead of new_pattern_def_seq. - (vect_recog_divmod_pattern): Do both of the above. - (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ - is null. - -2018-07-03 Richard Sandiford - - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): - (vect_recog_sad_pattern, vect_recog_widen_op_pattern) - (vect_recog_widen_mult_pattern, vect_recog_pow_pattern): - (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern) - (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern) - (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern) - (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant) - (vect_recog_mult_pattern, vect_recog_divmod_pattern) - (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern) - (vect_recog_mask_conversion_pattern): Replace vec - parameter with a single stmt_vec_info. - (vect_recog_func_ptr): Likewise. - (vect_recog_gather_scatter_pattern): Likewise, folding in... - (vect_try_gather_scatter_pattern): ...this. - (vect_pattern_recog_1): Remove stmts_to_replace and just pass - the stmt_vec_info of the statement to be matched. Don't clear - STMT_VINFO_RELATED_STMT. - (vect_pattern_recog): Update call accordingly. - -2018-07-03 Richard Sandiford - - PR tree-optimization/85694 - * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil) - (uavgM3_ceil): Document new optabs. - * doc/sourcebuild.texi (vect_avg_qi): Document new target selector. - * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal - functions. - * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab) - (savg_ceil_optab): New optabs. - * tree-vect-patterns.c (vect_recog_average_pattern): New function. - (vect_vect_recog_func_ptrs): Add it. - * tree-vect-stmts.c (vectorizable_call): Get the type of the zero - constant directly from the associated lhs. - -2018-07-03 Richard Sandiford - - * tree-vect-patterns.c (vect_split_statement): New function. - (vect_convert_input): Use it to try to split an existing cast. - -2018-07-03 Richard Sandiford - - * poly-int.h (print_hex): New function. - * dumpfile.h (dump_dec, dump_hex): Declare. - * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions. - * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision, - min_input_precision, operation_precision and operation_sign. - * tree-vect-patterns.c (vect_get_range_info): New function. - (vect_same_loop_or_bb_p, vect_single_imm_use) - (vect_operation_fits_smaller_type): Delete. - (vect_look_through_possible_promotion): Add an optional - single_use_p parameter. - (vect_recog_over_widening_pattern): Rewrite to use new - stmt_vec_info infomration. Handle one operation at a time. - (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p) - (vect_truncatable_operation_p, vect_set_operation_type) - (vect_set_min_input_precision): New functions. - (vect_determine_min_output_precision_1): Likewise. - (vect_determine_min_output_precision): Likewise. - (vect_determine_precisions_from_range): Likewise. - (vect_determine_precisions_from_users): Likewise. - (vect_determine_stmt_precisions, vect_determine_precisions): Likewise. - (vect_vect_recog_func_ptrs): Put over_widening first. - Add cast_forwprop. - (vect_pattern_recog): Call vect_determine_precisions. - -2018-07-03 Richard Sandiford - - * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern - statements that have been replaced by further pattern statements. - (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure. - -2018-07-03 Richard Biener - - * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping, - always set *dt. Dump vectype in vectype overload. - * dumpfile.h (dump_gimple_expr): New function. - (dump_gimple_expr_loc): Likewise. - * dumpfile.c (dump_gimple_expr): New function. - (dump_gimple_expr_loc): Likewise. - -2018-07-02 Jeff Law - - * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate - the H8/300, H8/300H and H8/S variants into a single pattern. - (movhi_h8300, movqi_h8300hs): Similarly. - (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern. - (QHI mode iterator): New. - - * config/h8300/h8300.md: Remove trailing whitespace. - -2018-07-02 Jim Wilson - - * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn - instead of emit_insn for interrupt returns. - * config/riscv/riscv.md (riscv_met): Add (return) to rtl. - (riscv_sret, riscv_uret): Likewise. - -2018-07-02 David Malcolm - - * pretty-print.c (selftest::test_pp_format): Move save and restore - of quotes to class auto_fix_quotes, and add an instance. - * selftest.c: Include "intl.h". - (selftest::auto_fix_quotes::auto_fix_quotes): New ctor. - (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor. - * selftest.h (selftest::auto_fix_quotes): New class. - -2018-07-02 Richard Henderson - - * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c - (aarch64_sve_prepare_conditional_op): Remove. - * config/aarch64/aarch64-sve.md (cond_): - Allow aarch64_simd_reg_or_zero as select operand; remove - the aarch64_sve_prepare_conditional_op call. - (cond_): Likewise. - (cond_): Likewise. - (*cond__z): New pattern. - (*cond__z): New pattern. - (*cond__z): New pattern. - (*cond__any): New pattern. - (*cond__any): New pattern. - (*cond__any): New pattern - and a splitters to match all of the *_any patterns. - * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New. - - * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove. - (SVE_COND_FP_BINARY_REV): Remove. - (sve_int_op_rev, sve_fp_op_rev): New. - * config/aarch64/aarch64-sve.md (*cond__0): New. - (*cond__0): New. - (*cond__0): New. - (*cond__2): Rename, add movprfx alternative. - (*cond__2): Similarly. - (*cond__2): Similarly. - (*cond__3): Similarly; use sve_int_op_rev. - (*cond__3): Similarly. - (*cond__3): Similarly; use sve_fp_op_rev. - - * config/aarch64/aarch64-sve.md (cond_): - Remove match_dup 1 from the inner unspec. - (*cond_): Likewise. - - * config/aarch64/aarch64.md (movprfx): New attr. - (length): Default movprfx to 8. - * config/aarch64/aarch64-sve.md (*mul3): Add movprfx alt. - (*madd, *msubmul3_highpart): Likewise. - (*3): Likewise. - (*v3): Likewise. - (*3): Likewise. - (*3): Likewise. - (*fma4, *fnma4): Likewise. - (*fms4, *fnms4): Likewise. - (*div4): Likewise. - -2018-07-02 Richard Sandiford - - * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo - in dump string. - -2018-07-02 Richard Biener - - PR tree-optimization/86363 - * tree-ssa-sccvn.c (vn_reference_lookup_3): Check the - memset argument refers to a non-variable address. - -2018-07-02 Aldy Hernandez - - * tree-vrp.c (extract_range_from_binary_expr_1): Abstract a lot of the - {PLUS,MINUS}_EXPR code to... - (adjust_symbolic_bound): ...here, - (combine_bound): ...here, - (set_value_range_with_overflow): ...and here. - -2018-07-02 Aldy Hernandez - - * tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR - code... - (extract_range_from_abs_expr): ...here. - -2018-07-02 Eric Botcazou - - * config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule - -fno-omit-frame-pointer when not optimizing. - -2018-07-02 Martin Liska - - PR ipa/86279 - * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get. - (propagate_nothrow): Likewise. - -2018-07-02 Martin Liska - - PR ipa/86323 - * ipa-inline.c (early_inliner): Revert wrongly added ::get call. - -2018-07-02 David Malcolm - - * dumpfile.c (dump_generic_expr_loc): Undo removal of this - function in r262149, changing "loc" param from source_location to - const dump_location_t &. - * dumpfile.h (dump_generic_expr_loc): Undo removal of this - declaration, as above. - -2018-07-01 Paul Koning - - * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle - -munit-asm, -mgnu-asm, -mdec-asm. - * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New. - (pdp11_output_labelref): New. - (pdp11_output_def): New. - (pdp11_output_addr_vec_elt): New. - * config/pdp11/pdp11.c: Use tab between opcode and operands. Use - %# and %@ format codes. - (pdp11_option_override): New. - (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define. - (pdp11_output_ident): New. - (pdp11_asm_named_section): New. - (pdp11_asm_init_sections): New. - (pdp11_file_start): New. - (pdp11_file_end): New. - (output_ascii): Use .ascii/.asciz for -mdec-asm. - (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm. Add - %o, like %c but octal. - (pdp11_option_override): New. - * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for - -mdec-asm. - (DATA_SECTION_ASM_OP): Ditto. - (READONLY_DATA_SECTION_ASM_OP): New. - (IS_ASM_LOGICAL_LINE_SEPARATOR): New. - (ASM_GENERATE_INTERNAL_LABEL): Use new function. - (ASM_OUTPUT_LABELREF): Ditto. - (ASM_OUTPUT_DEF): Ditto. - (ASM_OUTPUT_EXTERNAL): New. - (ASM_OUTPUT_SOURCE_FILENAME): New. - (ASM_OUTPUT_ADDR_VEC_ELT): Use new function. - (ASM_OUTPUT_SKIP): Update for -mdec-asm. - * config/pdp11/pdp11.md: Use tab between opcode and operands. Use - %# and %@ format codes. - * config/pdp11/pdp11.opt (mgnu-asm): New. - (mdec-asm): Conflicts with -mgnu-asm and -munix-asm. - (munix-asm): Conflicts with -mdec-asm and -mgnu-asm. - * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm. - -2018-07-01 Aldy Hernandez - - * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid - dereferencing path[] beyond its length. - (debug_path): New. - (debug_all_paths): New. - (rewire_first_differing_edge): New. - (adjust_paths_after_duplication): New. - (duplicate_thread_path): Call adjust_paths_after_duplication. - Add new argument. - (thread_through_all_blocks): Add new argument to - duplicate_thread_path. - -2018-06-30 Jim Wilson - - * config/riscv/predicates.md (p2m1_shift_operand): New. - (high_mask_shift_operand): New. - * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner - pattern using p2m1_shift_operand. - (lshsi3_zero_extend_3+2): New combiner pattern using - high_mask_shift_operand. - -2018-06-30 Richard Sandiford - - * tree-vect-patterns.c (vect_get_external_def_edge): New function, - split out from... - (vect_recog_rotate_pattern): ...here. - (vect_convert_input): Try to insert casts of invariants in the - preheader. - * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the - preheader to be empty. - -2018-06-30 Richard Sandiford - - * tree-vect-patterns.c (append_pattern_def_seq): Take an optional - vector type. If given, install it in the new statement's - STMT_VINFO_VECTYPE. - (vect_element_precision): New function. - (vect_unpromoted_value): New struct. - (vect_unpromoted_value::vect_unpromoted_value): New function. - (vect_unpromoted_value::set_op): Likewise. - (vect_look_through_possible_promotion): Likewise. - (vect_joust_widened_integer, vect_joust_widened_type): Likewise. - (vect_widened_op_tree, vect_convert_input): Likewise. - (vect_convert_inputs, vect_convert_output): Likewise. - (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion - to handle the optional cast of the multiplication result and - vect_widened_op_tree to detect the widened multiplication itself. - Do not require the input and output of promotion casts to have - the same sign, but base the signedness of the operation on the - input rather than the result. If the pattern includes two - promotions, check that those promotions have the same sign. - Do not restrict the MULT_EXPR handling to a double-width result; - handle quadruple-width results and wider. Use vect_convert_inputs - to convert the inputs to the common type. - (vect_recog_sad_pattern): Use vect_look_through_possible_promotion - to handle the optional cast of the ABS result. Also allow a sign - change or a sign extension between the ABS and MINUS. - Use vect_widened_op_tree to detect the widened subtraction and use - vect_convert_inputs to convert the inputs to the common type. - (vect_handle_widen_op_by_const): Delete. - (vect_recog_widen_op_pattern): New function. - (vect_recog_widen_mult_pattern): Use it. - (vect_recog_widen_shift_pattern): Likewise. - (vect_recog_widen_sum_pattern): Use - vect_look_through_possible_promotion to handle the promoted - PLUS_EXPR operand. - -2018-06-30 Richard Sandiford - - * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes - the containing gimple_seq *. - * gimple-iterator.h (gsi_for_stmt): Declare it. - * tree-vect-patterns.c (vect_recog_dot_prod_pattern) - (vect_recog_sad_pattern, vect_recog_widen_sum_pattern) - (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern) - (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern) - (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P - checks. - (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions, - split out from... - (vect_mark_pattern_stmts): ...here. Handle cases in which the - statement being replaced is part of an existing pattern - definition sequence, inserting the new pattern statements before - the original one. - (vect_pattern_recog_1): Don't return a bool. If the statement - is already part of a pattern, instead apply pattern matching - to the pattern definition statements. Don't clear the - STMT_VINFO_RELATED_STMT if is_pattern_stmt_p. - (vect_pattern_recog): Don't break after the first match; - continue processing the pattern definition statements instead. - Don't bail out for STMT_VINFO_IN_PATTERN_P here. - -2018-06-30 Richard Sandiford - - * tree-vect-patterns.c (vect_reassociating_reduction_p): New function. - (vect_recog_dot_prod_pattern, vect_recog_sad_pattern) - (vect_recog_widen_sum_pattern): Use it. - -2018-06-30 Richard Sandiford - - * tree-vect-loop.c (vectorizable_reduction): Assert that the - phi is not a pattern statement and has not been replaced by - a pattern statement. - * tree-vect-patterns.c (type_conversion_p): Don't check - STMT_VINFO_IN_PATTERN_P. - (vect_recog_vector_vector_shift_pattern): Likewise. - (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return - the pattern statement rather than the original statement; check - directly for a WIDEN_MULT_EXPR here. - * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect - vect_is_simple_use to return the pattern statement rather - than the original statement; use is_pattern_stmt_p to check - for such a pattern statement. - * tree-vect-stmts.c (process_use): Expect vect_is_simple_use - to return the pattern statement rather than the original statement; - don't do the same transformation here. - (vect_is_simple_use): If the defining statement has been replaced - by a pattern statement, return the pattern statement instead. - Remove the corresponding (local) transformation from the vectype - overload. - -2018-06-30 Richard Sandiford - - * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the - end and default to null. - * tree-vect-loop.c (vect_create_epilog_for_reduction) - (vectorizable_reduction): Update calls accordingly, dropping the - gimple ** argument if the passed-back statement isn't needed. - * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p) - (vect_recog_rotate_pattern): Likewise. - (vect_recog_mask_conversion_pattern): Likewise. - * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. - (vect_mask_constant_operand_p): Likewise. - * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use): - (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise. - (get_group_load_store_type, get_load_store_type): Likewise. - (vect_check_load_store_mask, vect_check_store_rhs): Likewise. - (vectorizable_call, vectorizable_simd_clone_call): Likewise. - (vectorizable_conversion, vectorizable_assignment): Likewise. - (vectorizable_shift, vectorizable_operation): Likewise. - (vectorizable_store, vect_is_simple_cond): Likewise. - (vectorizable_condition, vectorizable_comparison): Likewise. - (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise. - (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out - and move it to the end. Cope with null def_stmt_outs. - -2018-06-30 Bernd Edlinger - - * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET. - -2018-06-29 Jeff Law - - * config/v850/v850.c (v850_legitimate_address_p): Handle large - displacements for TARGET_V850E2V3 and newer. - (TARGET_LRA_P): Remove. Defaults to LRA now. - * config/v850/v850.md (sign23byte_load): Remove. - (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise. - (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise. - -2018-06-29 Martin Liska - - PR lto/85759 - * coverage.c (coverage_init): Mangle full path name. - * doc/invoke.texi: Document the change. - * gcov-io.c (mangle_path): New. - * gcov-io.h (mangle_path): Likewise. - * gcov.c (mangle_name): Use mangle_path for path mangling. - -2018-06-29 Kyrylo Tkachov - - * config/arm/arm.c (output_move_double): Don't allow STRD instructions - if starting source register is not even. - -2018-06-29 Martin Liska - - PR tree-optimization/86263 - * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion): - Make edge redirection. - -2018-06-29 David Malcolm - - * dumpfile.c (dump_loc): Add indentation based on scope depth. - (dump_scope_depth): New variable. - (get_dump_scope_depth): New function. - (dump_begin_scope): New function. - (dump_end_scope): New function. - * dumpfile.h (get_dump_scope_depth): New declaration. - (dump_begin_scope): New declaration. - (dump_end_scope): New declaration. - (class auto_dump_scope): New class. - (AUTO_DUMP_SCOPE): New macro. - * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of - AUTO_DUMP_SCOPE. - -2018-06-29 Richard Biener - - * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert - compute_all_dependences succeeds. - * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we - exceed --param loop-max-datarefs-for-datadeps. - -2018-06-29 Jakub Jelinek - - * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H. - -2018-06-28 Uros Bizjak - - PR target/86348 - * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use - alternative 0 in preferred_for_speed attribute. - -2018-06-28 Paul Koning - - * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function. - * config/pdp11/pdp11.c (pdp11_shift_length): New function. - * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove. - * config/pdp11/pdp11.md: Correct "length" attribute calculation - for shift insn patterns. - -2018-06-28 David Malcolm - - * cgraph.c (cgraph_node::get_body): Replace assignments to - "dump_file" with calls to set_dump_file. - * dumpfile.c (alt_dump_file): Make static, and group with... - (alt_flags): ...this definition. - (dumps_are_enabled): New variable. - (refresh_dumps_are_enabled): New function. - (set_dump_file): New function. - (set_alt_dump_file): New function. - (gcc::dump_manager::dump_start): Replace assignments to - "dump_file" and "alt_dump_file" with calls to set_dump_file and - set_alt_dump_file. - (gcc::dump_manager::dump_finish): Likewise. - * dumpfile.h (alt_dump_file): Delete decl. - (dumps_are_enabled): New variable decl. - (set_dump_file): New function decl. - (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled" - global. - * tree-nested.c (lower_nested_functions): Replace assignments to - "dump_file" with calls to set_dump_file. - -2018-06-28 Eric Botcazou - - * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the - goto_locus of each outgoing edge of each basic block. - -2018-06-28 Richard Biener - - * dwarf2out.c (decl_scope_table): Remove. - (push_decl_scope): Likewise. - (pop_decl_scope): Likewise. - (gen_type_die_for_member): Do not call push/pop_decl_scope. - (gen_struct_or_union_type_die): Likewise. - (gen_tagged_type_die): Likewise. - (dwarf2out_init): Do not initialize decl_scope_table. - (dwarf2out_c_finalize): Do not free it. - -2018-06-28 Richard Biener - - * dwarf2out.c (gen_subprogram_die): Use is_unit_die when - deciding whether to not re-use a DIE. - -2018-06-28 Richard Biener - - * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an - DW_AT_abstract_origin attribute. - -2018-06-28 Martin Liska - - * tree-switch-conversion.c (jump_table_cluster::can_be_handled): - Use newly introduced constants. - * tree-switch-conversion.h (struct jump_table_cluster): - Define max_ratio_for_size and max_ratio_for_speed. - -2018-06-28 Martin Liska - - * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): - Add new checking assert to catch invalid state. - (jump_table_cluster::can_be_handled): Handle single case - clusters. - (jump_table_cluster::is_beneficial): Bail out for such case. - (bit_test_cluster::find_bit_tests): - Add new checking assert to catch invalid state. - (bit_test_cluster::can_be_handled): Handle single case - clusters. - (bit_test_cluster::is_beneficial): Bail out for such case. - (switch_decision_tree::analyze_switch_statement): - Fix comment. - -2018-06-28 Martin Liska - - * common.opt: Introduce -completion option. - * gcc.c (driver_handle_option): Handle it. - (driver::main): Print completions if completion - is set. - * opt-suggestions.c (option_proposer::get_completions): - New function. - (option_proposer::suggest_completion): Likewise. - (option_proposer::find_param_completions): Likewise. - (verify_autocompletions): Likewise. - (test_completion_valid_options): Likewise. - (test_completion_valid_params): Likewise. - (in_completion_p): Likewise. - (empty_completion_p): Likewise. - (test_completion_partial_match): Likewise. - (test_completion_garbage): Likewise. - (opt_proposer_c_tests): Likewise. - * opt-suggestions.h: Declare new functions. - * opts.c (common_handle_option): Handle OPT__completion_. - * selftest-run-tests.c (selftest::run_tests): Add - opt_proposer_c_tests. - * selftest.c (assert_str_startswith): New. - * selftest.h (assert_str_startswith): Likewise. - (opt_proposer_c_tests): New. - (ASSERT_STR_STARTSWITH): Likewise. - -2018-06-28 Martin Liska - - * Makefile.in: Add opt-suggestions.o. - * gcc-main.c: Include opt-suggestions.h. - * gcc.c (driver::driver): Likewise. - (driver::~driver): Remove m_option_suggestions. - (driver::build_option_suggestions): Moved to option_proposer. - (driver::suggest_option): Likewise. - (driver::handle_unrecognized_options): Use option_proposer. - * gcc.h (class driver): Add new memver m_option_proposer. - * opt-suggestions.c: New file. - * opt-suggestions.h: New file. - -2018-06-28 Martin Liska - - * vec.h (class auto_string_vec): New (moved from auto_argvec). - (auto_string_vec::~auto_string_vec): Likewise. - -2018-06-28 Eric Botcazou - - * tree-inline.h (struct copy_body_data): Move remapping_type_depth and - prevent_decl_creation_for_types fields up and add reset_location field. - * tree-inline.c (remap_gimple_stmt): Force input_location on the new - statement if id->reset_location is true. - (copy_edges_for_bb): Do not set goto_locus on the new edges if - id->reset_location is true. - (copy_phis_for_bb): Force input_location on the arguments if - id->reset_location is true. - (expand_call_inline): Set id->reset_location if DECL_IGNORED_P - is set on the function to be inlined. - -2018-06-27 Stephan Bergmann - - * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf. - -2018-06-27 Dimitar Dimitrov - - * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard - registers for Pmode. - * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning - hard registers for the clobbered pseudo. - -2018-06-27 Paul Koning - - * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle - mutually exclusive options. - * config/pdp11/constraints.md (h): New constraint. - (O): Update definition to match shift code generation. - (D): New constraint. - * config/pdp11/pdp11-modes.def (CCNZ): Define mode. - (CCFP): Remove. - * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New - function. - (output_jump): Change arguments. - (pdp11_fixed_cc_regs): New function. - (pdp11_cc_mode): Ditto. - (pdp11_expand_shift): Ditto. - (pdp11_assemble_shift): Ditto. - (pdp11_small_shift): Ditto. - (pdp11_branch_cost): Remove. - * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments - from output. - (pdp11_register_move_cost): Update for CC registers. - (pdp11_rtx_costs): Add case for LSHIFTRT. - (pdp11_output_jump): Add CCNZ mode conditional branches. - (notice_update_cc_on_set): Remove. - (pdp11_cc_mode): New function. - (simple_memory_operand): Correct pre/post decrement case. - (no_side_effect_operand): New function. - (pdp11_regno_reg_class): Add CC_REGS class. - (pdp11_fixed_cc_regs): New function. - (pdp11_small_shift): New function. - (pdp11_expand_shift): New function to expand shift insns. - (pdp11_assemble_shift): New function to output shifts. - (pdp11_branch_cost): Remove. - (pdp11_modes_tieable_p): Make QI/HI modes tieable. - * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type. - (WCHAR_TYPE): Ditto. - (PTRDIFF_TYPE): Ditto. - (ADJUST_INSN_LENGTH): New macro. - (FIXED_REGISTERS): Add CC registers. - (CALL_USED_REGISTERS): Ditto. - (reg_class): Ditto. - (REG_CLASS_NAMES): Ditto. - (REG_CLASS_CONTENTS): Ditto. - (SELECT_CC_MODE): Use new function. - (TARGET_FLAGS_REGNUM): New macro. - (TARGET_FIXED_CONDITION_CODE_REGS): Ditto. - (cc0_reg_rtx): Remove. - (CC_STATUS_MDEP): Remove. - (CC_STATUS_MDEFP_INIT): Remove. - (CC_IN_FPU): Remove. - (NOTICE_UPDATE_CC): Remove. - (REGISTER_NAMES): Add CC registers. - (BRANCH_COST): Change to constant 1. - * config/pdp11/pdp11.md: Rewrite for CCmode condition code - handling. - * config/pdp11/pdp11.opt (mbcopy): Remove. - (mbcopy-builtin): Remove. - (mbranch-cheap): Remove. - (mbranch-expensive): Remove. - * config/pdp11/predicates.md (expand_shift_operand): Update to - match shift code generation. - (ccnz_operator): New predicate. - * doc/invoke.texi (PDP-11 Options): Remove deleted options - -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive. - Remove non-existent option -mabshi, -mno-abshi. Document mutually - exclusive options. - * doc/md.texi (PDP-11): Document new D and h constraints. Update - description of O constraint. - -2018-06-27 Jeff Law - Austin Law - - * config/v850/v850.md (addsi3_set_flags): New pattern. - (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise. - (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise. - (zero_extendhisi2_v850_set_flags): Likewise. - (zero_extendqisi2_v850_set_flags): Likewise. - (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise. - (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise. - (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise. - - * config/v850/v850-protos.h (notice_update_cc): Remove. - * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove. - (v850_print_operand): Handle 'D' and "d". - (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument. - Add handling of arithmetic/logical operations compared against zero. - (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument. - Do not look at v850_compare_op, instead get mode from last argument. - (v850_gen_compare): Remove - (increment_stack): Use addsi3_clobber_flags to avoid splitting failure - after reload for prologue insns. - (expand_prologue): Account for CLOBBER of CC_REGNUM in various - patterns. - (construct_save_jarl): Likewise. - (TARGET_FLAGS_REGNUM): Define. - * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove. - (NOTICE_UPDATE_CC): Remove. - * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather - than cc0. Conditionalize on reload_completed. - (cmpsi_insn, setfcc_insn): Likewise. - (tst1 splitter): Turn into define_and_split which sets the flags - after reload. - (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise. - (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here. - (cstoresf4, cstoredf4): Clobber the flags. - (cmpsi, cmpsf, cmpdf): Remove expanders. - (setf_insn): Remove pattern. - (addsi3): Turn into define_and_split which clobbers the flags after - reload and a suitable pattern (addsi3_clobber_flags) for use after - reload. - (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise. - (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise. - (ashrsi3, ashrsi3_v850e2): Likewise. - (bins): Clobber the flags. - (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise. - (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise. - (fix_loop_counter, call_internal_short, call_internal_long): Likewise. - (call_value_internal_short, call_value_internal_long): Likewise. - (callt_save_interrupt, callt_return_interrupt): Likewise. - (save_interrupt, return_interrupt): Likewise. - (callt_save_all_interrupt, save_all_interrupt): Likewise. - (_save_all_interrupt, callt_restore_all_interrupt): Likewise. - (restore_all_interrupt, _restore_all_interrupt): Likewise. - (All FP comparisons): Only allow after reload has completed. - (trfsr): Likewise. - (divh, divhu): Tweak output template. - (branch_z_normal, branch_z_invert): Remove - (branch_nz_normal, branch_nz_invert): Likewise. - (extendhisi_insn, extendqisi_insn): Do not clobber flags. - - * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes. - * config/v850/v850.c (notice_update_cc): Remove. - * config/v850/v850.h (CC_OVERFLOW_UNUSABLE): Remove - (CC_NO_CARRY): Likewise. - (NOTICE_UPDATE_CC): Define to nothing. - * config/v850/v850.md: Remove block comment on cc0 handling - Remove "cc" attribute from all patterns. Remove cc_status handling - from all patterns. Minor formatting fixes. - -2018-06-27 Kyrylo Tkachov - - * config/aarch64/aarch64-cores.def (cortex-a76): New entry. - (cortex-a76.cortex-a55): Likewise. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi (AArch64 Options): Document cortex-a76 and - cortex-a76.cortex-a55. - -2018-06-27 Jeff Law - - * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align. - (MULTILIB_DIRNAMES): Similarly. - -2018-06-27 Eric Botcazou - - * gimple.h (gimple_return_retbnd): Delete. - (gimple_return_set_retbnd): Likewise. - * cgraphunit.c (cgraph_node::expand_thunk): Remove call to - gimple_return_set_retbnd. - * gimple-pretty-print.c (dump_gimple_return): Remove call to - gimple_return_retbnd and adjust. - * tree-inline.h (struct copy_body_data): Remove retbnd field. - * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd. - Explicitly return NULL in a couple more cases. Move assertion - on debug statements and remove unreachable code. - (reset_debug_binding): Do not test id->retbnd. - (expand_call_inline): Do not set it. - -2018-06-27 Rasmus Villemoes - - * configure.ac: Add --disable-gcov option. - * configure: Regenerate. - * Makefile.in: Honour @enable_gcov@. - * doc/install.texi: Document --disable-gcov. - -2018-06-27 Kyrylo Tkachov - - * config/arm/arm-cpus.in (cortex-a76): New entry. - (cortex-a76.cortex-a55): Likewise. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Likewise. - * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry. - * doc/invoke.texi (ARM Options): Document cortex-a76 and - cortex-a76.cortex-a55. - -2018-06-27 Tamar Christina - - PR target/85769 - * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern. - -2018-06-27 Siddhesh Poyarekar - - * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete - comment. - (EPILOGUE_USES): Likewise. - -2018-06-26 Eric Botcazou - - * tree-inline.c (remap_location): New function extracted from... - (copy_edges_for_bb): Add ID parameter. Remap goto_locus. - (copy_phis_for_bb): ...here. Call remap_location. - (copy_cfg_body): Adjust call to copy_edges_for_bb. - -2018-06-26 Aaron Sawdey - - * config/rs6000/rs6000-string.c (expand_block_clear): Don't use - unaligned vsx for 16B memset. - -2018-06-26 Segher Boessenkool - - PR target/86285 - * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set - ieee128_float_type_node to long_double_type_node unless - TARGET_LONG_DOUBLE_128 is set. - -2018-06-26 David Malcolm - - * cfgloop.c (get_loop_location): Convert return type from - location_t to dump_user_location_t, replacing INSN_LOCATION lookups - by implicit construction from rtx_insn *, and using - dump_user_location_t::from_function_decl for the fallback case. - * cfgloop.h (get_loop_location): Convert return type from - location_t to dump_user_location_t. - * cgraphunit.c (walk_polymorphic_call_targets): Update call to - dump_printf_loc to pass in a dump_location_t rather than a - location_t, via the gimple stmt. - * coverage.c (get_coverage_counts): Update calls to - dump_printf_loc to pass in dump_location_t rather than a - location_t. - * doc/optinfo.texi (Dump types): Convert example of - dump_printf_loc from taking "locus" to taking "insn". Update - description of the "_loc" calls to cover dump_location_t. - * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and - "selftest.h". - (dump_user_location_t::dump_user_location_t): New constructors, - from gimple *stmt and rtx_insn *. - (dump_user_location_t::from_function_decl): New function. - (dump_loc): Make static. - (dump_gimple_stmt_loc): Convert param "loc" from location_t to - const dump_location_t &. - (dump_generic_expr_loc): Delete. - (dump_printf_loc): Convert param "loc" from location_t to - const dump_location_t &. - (selftest::test_impl_location): New function. - (selftest::dumpfile_c_tests): New function. - * dumpfile.h: Include "profile-count.h". - (class dump_user_location_t): New class. - (struct dump_impl_location_t): New struct. - (class dump_location_t): New class. - (dump_printf_loc): Convert 2nd param from source_location to - const dump_location_t &. - (dump_generic_expr_loc): Delete. - (dump_gimple_stmt_loc): Convert 2nd param from source_location to - const dump_location_t &. - * gimple-fold.c (fold_gimple_assign): Update call to - dump_printf_loc to pass in a dump_location_t rather than a - location_t, via the gimple stmt. - (gimple_fold_call): Likewise. - * gimple-loop-interchange.cc - (loop_cand::analyze_iloop_reduction_var): Update for change to - check_reduction_path. - (tree_loop_interchange::interchange): Update for change to - find_loop_location. - * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for - change in return-type of find_loop_location. - (graphite_regenerate_ast_isl): Likewise. - * graphite-optimize-isl.c (optimize_isl): Likewise. - * graphite.c (graphite_transform_loops): Likewise. - * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to - pass in a dump_location_t rather than a location_t, via the - gimple stmt. - * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. - * ipa.c (walk_polymorphic_call_targets): Likewise. - * loop-unroll.c (report_unroll): Convert "locus" param from - location_t to dump_location_t. - (decide_unrolling): Update for change to get_loop_location's - return type. - * omp-grid.c (struct grid_prop): Convert field "target_loc" from - location_t to dump_user_location_t. - (grid_find_single_omp_among_assignments_1): Updates calls to - dump_printf_loc to pass in a dump_location_t rather than a - location_t, via the gimple stmt. - (grid_parallel_clauses_gridifiable): Convert "tloc" from - location_t to dump_location_t. Updates calls to dump_printf_loc - to pass in a dump_location_t rather than a location_t, via the - gimple stmt. - (grid_inner_loop_gridifiable_p): Likewise. - (grid_dist_follows_simple_pattern): Likewise. - (grid_gfor_follows_tiling_pattern): Likewise. - (grid_target_follows_gridifiable_pattern): Likewise. - (grid_attempt_target_gridification): Convert initialization - of local "grid" from memset to zero-initialization; FIXME: does - this require C++11? Update call to dump_printf_loc to pass in a - optinfo_location rather than a location_t, via the gimple stmt. - * profile.c (read_profile_edge_counts): Updates call to - dump_printf_loc to pass in a dump_location_t rather than a - location_t - (compute_branch_probabilities): Likewise. - * selftest-run-tests.c (selftest::run_tests): Call - dumpfile_c_tests. - * selftest.h (dumpfile_c_tests): New decl. - * tree-loop-distribution.c (pass_loop_distribution::execute): - Update for change in return type of find_loop_location. - * tree-parloops.c (parallelize_loops): Likewise. - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert - "locus" from location_t to dump_user_location_t. - (canonicalize_loop_induction_variables): Likewise. - * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update - for change in return type of find_loop_location. - * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call - to dump_printf_loc to pass in a dump_location_t rather than a - location_t, via the stmt. - * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children): - Likewise. - * tree-vect-loop-manip.c (find_loop_location): Convert return - type from source_location to dump_user_location_t. - (vect_do_peeling): Update for above change. - (vect_loop_versioning): Update for change in type of - vect_location. - * tree-vect-loop.c (check_reduction_path): Convert "loc" param - from location_t to dump_user_location_t. - (vect_estimate_min_profitable_iters): Update for change in type - of vect_location. - * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from - location_t to dump_location_t. - (vect_slp_bb): Update for change in type of vect_location. - * tree-vectorizer.c (vect_location): Convert from source_location - to dump_user_location_t. - (try_vectorize_loop_1): Update for change in vect_location's type. - (vectorize_loops): Likewise. - (increase_alignment): Likewise. - * tree-vectorizer.h (vect_location): Convert from source_location - to dump_user_location_t. - (find_loop_location): Convert return type from source_location to - dump_user_location_t. - (check_reduction_path): Convert 1st param from location_t to - dump_user_location_t. - * value-prof.c (check_counter): Update call to dump_printf_loc to - pass in a dump_user_location_t rather than a location_t; update - call to error_at for change in type of "locus". - (check_ic_target): Update call to dump_printf_loc to - pass in a dump_user_location_t rather than a location_t, via the - call_stmt. - -2018-06-26 Robin Dapp - - * config/s390/s390.h (enum processor_flags): Do not use - default tune parameter when -march was specified. - -2018-06-26 Jakub Jelinek - - PR target/86314 - * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s): - Check reg_overlap_mentioned_p in addition to reg_set_p with the same - operands. - -2018-06-26 Richard Biener - - PR tree-optimization/86287 - PR bootstrap/86316 - * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free. - (vect_analyze_loop): Initialize n_stmts. - -2018-06-26 Richard Biener - - PR middle-end/86271 - * fold-const.c (fold_convertible_p): Pointer extension - isn't valid. - -2018-06-26 Alexandre Oliva - - PR debug/86064 - * dwarf2out.c (loc_list_has_views): Adjust comments. - (dw_loc_list): Split single cross-partition range with - nonzero locview. - -2018-06-25 Jeff Law - - * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn - on -mbig-switch by default. - - * config/v850/predicates.md (const_float_1_operand): Fix match_code - test. - (const_float_0_operand): Remove unused predicate. - * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP. - (define_c_enum unspec): Add LOOP, RCP and RSQRT constants. - (recipsf2): New expander. Original pattern now called - (recipsf2_insn). - (recipdf2, recipdf2_insn): Similarly. - (rsqrtsf2, rsqrtsf2_insn): Similarly - (rsqrtdf2, rsqrtdf2_insn): Similarly - -2018-06-26 Gerald Pfeifer - - * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5. - Simplify logic for FreeBSD (twice). - -2018-06-25 Martin Sebor - - PR tree-optimization/86204 - * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing - a strnlen result if it's less than the length of the string. - -2018-06-25 Martin Sebor - - PR tree-optimization/85700 - * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment. - * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction. - (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy. - -2018-06-25 Martin Sebor - - * doc/extend.texi (Zero-length arrays): Update and clarify. - -2018-06-25 Michael Meissner - - * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that - added IEEE/IBM long double multilib support on PowerPC little - endian Linux systems. - * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise. - (MULTILIB_DEFAULTS): Likewise. - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Likewise. - * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise. - * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used. - * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used. - -2018-06-25 Alexander Monakov - - PR middle-end/86311 - * sort.cc (REORDER_23): Avoid memcpy with same destination and source. - (REORDER_45): Likewise. - -2018-06-25 Jeff Law - - * config/v850/v850.md (divmodhi4): Make sure to sign extend the - dividend to 32 bits. Adjust length. - (udivmodhi4): Cleanup output template. Fix length. - -2018-06-25 Carl Love - - * config/rs6000/vsx.md: Change word selector to prefered location. - -2018-06-25 Richard Biener - - PR tree-optimization/86304 - * tree-vectorizer.c (vectorize_loops): Walk over new possibly - epilogue-if-converted loops as well. - -2018-06-25 Jan Hubicka - - * lto-section-out.c (lto_begin_section): Do not print section - name for noaddr and unnumbered dumps. - -2018-06-25 Richard Biener - - * tree-vectorizer.h (struct vec_info_shared): New structure - with parts split out from struct vec_info and loop_nest from - struct _loop_vec_info. - (struct vec_info): Adjust accordingly. - (struct _loop_vec_info): Likewise. - (LOOP_VINFO_LOOP_NEST): Adjust. - (LOOP_VINFO_DATAREFS): Likewise. - (LOOP_VINFO_DDRS): Likewise. - (struct _bb_vec_info): Likewise. - (BB_VINFO_DATAREFS): Likewise. - (BB_VINFO_DDRS): Likewise. - (struct _stmt_vec_info): Add dr_aux member. - (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo. - (DR_MISALIGNMENT_UNINITIALIZED): New. - (set_dr_misalignment): Adjust. - (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED. - (vect_analyze_loop): Adjust prototype. - (vect_analyze_loop_form): Likewise. - * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): - Compute dependences lazily. - (vect_record_base_alignments): Use shared datarefs/ddrs. - (vect_verify_datarefs_alignment): Likewise. - (vect_analyze_data_refs_alignment): Likewise. - (vect_analyze_data_ref_accesses): Likewise. - (vect_analyze_data_refs): Likewise. - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add - constructor parameter for shared part. - (vect_analyze_loop_form): Pass in shared part and adjust. - (vect_analyze_loop_2): Pass in storage for the number of - stmts. Move loop nest finding to the caller. Compute - datarefs lazily. - (vect_analyze_loop): Pass in shared part. - (vect_transform_loop): Verify shared datarefs are unchanged. - * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add - constructor parameter for shared part. - (vect_slp_analyze_bb_1): Pass in shared part and adjust. - (vect_slp_bb): Verify shared datarefs are unchanged before - transform. - * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX - change. - (new_stmt_vec_info): Initialize DR_AUX misalignment to - DR_MISALIGNMENT_UNINITIALIZED. - * tree-vectorizer.c (vec_info::vec_info): Add constructor - parameter for shared part. - (vec_info::~vec_info): Adjust. - (vec_info_shared::vec_info_shared): New. - (vec_info_shared::~vec_info_shared): Likewise. - (vec_info_shared::save_datarefs): Likewise. - (vec_info_shared::check_datarefs): Likewise. - (try_vectorize_loop_1): Construct shared part live for analyses - of a single loop for multiple vector sizes. - * tree-parloops.c (gather_scalar_reductions): Adjust. - -2018-06-25 Richard Biener - - * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify - DR for SIMD lane accesses here and mark DR with (void *)-1 aux. - (vect_analyze_data_refs): Remove similar code from here and - simplify accordingly. - -2018-06-25 Richard Biener - - * tree-vect-data-refs.c (vect_check_gather_scatter): Fail - for reverse storage order accesses rather than asserting - they cannot happen here. - -2018-06-25 Tom de Vries - - PR debug/86257 - * config/i386/i386.md (define_insn "*tls_global_dynamic_64_"): - Use data16 instead of .byte for insn prefix. - -2018-06-25 Andreas Krebbel - - PR C++/86082 - * parser.c (make_char_string_pack): Pass this literal chars - through cpp_interpret_string. - (cp_parser_userdef_numeric_literal): Check the result of - make_char_string_pack. - -2018-06-24 Maya Rashish - - * ginclude/stddef.h: Simplify conditions around avoiding - re-definition of __size_t. - -2018-06-22 Jan Hubicka - - * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable - unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL. - -2018-06-22 Maya Rashish - - * doc/invoke.texi (mno-fancy-math-387): Update for changes - made to OpenBSD and NetBSD through the years. - -2018-06-22 Kelvin Nilsen - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change - behavior of vec_pack (vector double, vector double) to match - behavior of vec_float2 (vector double, vector double). - -2018-06-22 Olivier Hainque - - * gimplify.c (gimplify_function_tree): Prevent creation - of a trampoline for the address of the current function - passed to entry/exit instrumentation hooks. - -2018-06-22 Aaron Sawdey - - PR target/86222 - * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32 - correctly. - -2018-06-22 Martin Liska - - PR tree-optimization/86263 - * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): - Bail out if is_enabled is false. - * tree-switch-conversion.h (jump_table_cluster::is_enabled): - New declaration. - (jump_table_cluster::is_enabled): New function. - -2018-06-22 Jan Hubicka - - * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream - BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD. - * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise. - (lto_input_ts_binfo_tree_pointers): Likewise. - * tree-streamer-out.c (streamer_write_tree_bitfields, - write_ts_binfo_tree_pointers): Likewise. - * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD. - -2018-06-22 Jan Hubicka - - * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs. - -2018-06-22 Martin Liska - - * symbol-summary.h (get): Make it pure and inline move - functionality from ::get function. - (get): Remove and inline into ::get and ::get_create. - (get_create): Move code from ::get function. - -2018-06-22 Rainer Orth - - PR target/85994 - * config/i386/sol2.h (CPP_SPEC): Don't pass -P for - -x assembler-with-cpp. - -2018-06-22 Rainer Orth - - * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define - _FILE_OFFSET_BITS=64 for C++. - -2018-06-21 Michael Meissner - - * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit - conversion insn that shows up when pr85657-3.c is compiled using - IEEE 128-bit long double. - (neg2_internal): Use the correct mode to check whether the - mode is IBM extended. - * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex - multiply and divide external functions from being created more - than once. - -2018-06-21 Eric Botcazou - - * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P - functions. - (rtl_merge_blocks): Likewise. Do not emit a NOP if the location of - the edge can be forwarded. - (cfg_layout_merge_blocks): Likewise. - -2018-06-21 Eric Botcazou - - * except.c (finish_eh_generation): Commit edge insertions only after - the EH edges have been redirected from post-landing to landing pads. - -2018-06-21 Eric Botcazou - - * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of - create_tmp_var_for to create the FRAME decl. - (finalize_nesting_tree_1): Do not unchain the FRAME decl. - -2018-06-21 Eric Botcazou - - * tree-inline.c (copy_edges_for_bb): Minor tweak. - (maybe_move_debug_stmts_to_successors): Also reset the locus of the - debug statement when resetting its value. - (expand_call_inline): Copy the locus of the call onto the assignment - of the return value, if any. Use local variable in more cases. - -2018-06-21 Martin Liska - - * ipa-pure-const.c (propagate_nothrow): Use - funct_state_summaries->get. - (dump_malloc_lattice): Likewise. - (propagate_malloc): Likewise. - -2018-06-21 Richard Biener - - * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated - comment. Follow BLOCK_ABSTRACT_ORIGIN unconditionally. - * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update - comment. - * tree-streamer-out.c (write_ts_block_tree_pointers): Stream - BLOCK_ABSTRACT_ORIGIN unconditionally. - -2018-06-21 David Malcolm - - * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after - deleting it. - * ipa-reference.c (ipa_reference_c_finalize): Delete - ipa_ref_opt_sum_summaries and set it to NULL. - -2018-06-21 Tom de Vries - - PR tree-optimization/85859 - * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call - test with comment from bb_no_side_effects_p. - -2018-06-21 Richard Biener - - PR tree-optimization/86232 - * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust - max for constant niter. - -2018-06-21 Andre Vieira - - * config/aarch64/aarch64-simd.md - (*aarch64_crypto_aesv16qi_xor_combine): New. - -2018-06-21 Andre Vieira - - * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi): - Make opernads of the unspec commutative. - -2018-06-21 Richard Biener - - * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP. - * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr): - Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters. - (vect_analyze_data_ref_dependence): Re-order checks to deal with - NULL DR_STEP. - (vect_record_base_alignments): Do not record base alignment - for gathers or scatters. - (vect_compute_data_ref_alignment): Drop return value that is always - true. Bail out early for gathers or scatters. - (vect_enhance_data_refs_alignment): Bail out early for gathers - or scatters. - (vect_find_same_alignment_drs): Likewise. - (vect_analyze_data_refs_alignment): Remove dead code. - (vect_slp_analyze_and_verify_node_alignment): Likewise. - (vect_analyze_data_refs): For possible gathers or scatters do - not create an alternate DR, just check their possible validity - and mark them. Adjust DECL_NONALIASED handling to not rely - on DR_BASE_ADDRESS. - * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not - update inits of gathers or scatters. - * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): - Also copy gather/scatter flag to pattern vinfo. - -2018-06-20 Kelvin Nilsen - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change - behavior of vec_packsu (vector unsigned long long, vector unsigned - long long) to match behavior of vec_packs with same signature. - -2018-06-20 Chung-Lin Tang - Thomas Schwinge - Cesar Philippidis - - * gimplify.c (gimplify_scan_omp_clauses): Add support for - OMP_CLAUSE_{IF_PRESENT,FINALIZE}. - (gimplify_adjust_omp_clauses): Likewise. - (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove - support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}. - (gimplify_omp_target_update): Update handling of acc update and - enter/exit data. - * omp-low.c (install_var_field): Remove unused parameter - base_pointers_restrict. - (scan_sharing_clauses): Remove base_pointers_restrict parameter. - Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT, - FINALIZE} - (omp_target_base_pointers_restrict_p): Delete. - (scan_omp_target): Update call to scan_sharing_clauses. - * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT, - FINALIZE}. - * tree-nested.c (convert_nonlocal_omp_clauses): Handle - OMP_CLAUSE_{IF_PRESENT,FINALIZE}. - (convert_local_omp_clauses): Likewise. - * tree-pretty-print.c (dump_omp_clause): Likewise. - * tree.c (omp_clause_num_ops): Add entries for OMP_CLAUSE_{IF_PRESENT, - FINALIZE}. - (omp_clause_code_name): Likewise. - -2018-06-20 Jakub Jelinek - - PR debug/86194 - * var-tracking.c (use_narrower_mode_test): Check if shift amount can - be narrowed. - - PR tree-optimization/86231 - * tree-vrp.c (union_ranges): For ( [ ) ] or ( )[ ] range and - anti-range don't overwrite *vr0min before using it to compute *vr0max. - -2018-06-20 Tom de Vries - - PR tree-optimization/86097 - * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to - iv type if signedness of iv type is not the same as that of *nit. - -2018-06-20 Jakub Jelinek - - * cfgrtl.c (rtl_verify_edges): Formatting fix. If bb->preds has any - EDGE_EH edges, verify they are all EDGE_EH. - -2018-06-20 Maya Rashish - - * ginclude/stddef.h: Limit #include to NetBSD. - -2018-06-20 Kyrylo Tkachov - - * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New. - * config/aarch64/aarch64.c (xgene1_tunings): Add - AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags. - (aarch64_mode_valid_for_sched_fusion_p): - Allow 16-byte modes. - (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p. - * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of - 128-bit modes. - * config/aarch64/aarch64-simd.md (load_pair): - New pattern. - (vec_store_pair): Likewise. - * config/aarch64/iterators.md (VQ2): New mode iterator. - -2018-06-20 Martin Liska - - * tree-switch-conversion.c (jump_table_cluster::can_be_handled): - Change default ratio from 10 to 8. - -2018-06-20 Martin Liska - - * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): - New. - (bit_test_cluster::find_bit_tests): Likewise. - (switch_decision_tree::analyze_switch_statement): Find clusters. - * tree-switch-conversion.h (struct jump_table_cluster): Document - hierarchy. - -2018-06-20 Martin Liska - - * tree-switch-conversion.c (switch_conversion::collect): - Record m_uniq property. - (switch_conversion::expand): Bail out for special conditions. - (group_cluster::~group_cluster): New. - (group_cluster::group_cluster): Likewise. - (group_cluster::dump): Likewise. - (jump_table_cluster::emit): New. - (switch_decision_tree::fix_phi_operands_for_edges): New. - (struct case_node): Remove struct. - (jump_table_cluster::can_be_handled): New. - (case_values_threshold): Moved to header. - (reset_out_edges_aux): Likewise. - (jump_table_cluster::is_beneficial): New. - (bit_test_cluster::can_be_handled): Likewise. - (add_case_node): Remove. - (bit_test_cluster::is_beneficial): New. - (case_bit_test::cmp): New. - (bit_test_cluster::emit): New. - (expand_switch_as_decision_tree_p): Remove. - (bit_test_cluster::hoist_edge_and_branch_if_true): New. - (fix_phi_operands_for_edge): Likewise. - (switch_decision_tree::analyze_switch_statement): New. - (compute_cases_per_edge): Move ... - (switch_decision_tree::compute_cases_per_edge): ... here. - (try_switch_expansion): Likewise. - (switch_decision_tree::try_switch_expansion): Likewise. - (record_phi_operand_mapping): Likewise. - (switch_decision_tree::record_phi_operand_mapping): Likewise. - (emit_case_decision_tree): Likewise. - (switch_decision_tree::emit): Likewise. - (balance_case_nodes): Likewise. - (switch_decision_tree::balance_case_nodes): Likewise. - (dump_case_nodes): Likewise. - (switch_decision_tree::dump_case_nodes): Likewise. - (emit_jump): Likewise. - (switch_decision_tree::emit_jump): Likewise. - (emit_cmp_and_jump_insns): Likewise. - (switch_decision_tree::emit_cmp_and_jump_insns): Likewise. - (emit_case_nodes): Likewise. - (switch_decision_tree::emit_case_nodes): Likewise. - (conditional_probability): Remove. - * tree-switch-conversion.h (enum cluster_type): New. - (PRINT_CASE): New. - (struct cluster): Likewise. - (cluster::cluster): Likewise. - (struct simple_cluster): Likewise. - (simple_cluster::simple_cluster): Likewise. - (struct group_cluster): Likewise. - (struct jump_table_cluster): Likewise. - (struct bit_test_cluster): Likewise. - (struct min_cluster_item): Likewise. - (struct case_tree_node): Likewise. - (case_tree_node::case_tree_node): Likewise. - (jump_table_cluster::case_values_threshold): Likewise. - (struct case_bit_test): Likewise. - (struct switch_decision_tree): Likewise. - (struct switch_conversion): Likewise. - (switch_decision_tree::reset_out_edges_aux): Likewise. - -2018-06-20 Martin Liska - - * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove. - (hoist_edge_and_branch_if_true): Likewise. - (expand_switch_using_bit_tests_p): Likewise. - (struct case_bit_test): Likewise. - (case_bit_test_cmp): Likewise. - (emit_case_bit_tests): Likewise. - (switch_conversion::switch_conversion): New class. - (struct switch_conv_info): Remove old struct. - (collect_switch_conv_info): More to ... - (switch_conversion::collect): ... this. - (check_range): Likewise. - (switch_conversion::check_range): Likewise. - (check_all_empty_except_final): Likewise. - (switch_conversion::check_all_empty_except_final): Likewise. - (check_final_bb): Likewise. - (switch_conversion::check_final_bb): Likewise. - (create_temp_arrays): Likewise. - (switch_conversion::create_temp_arrays): Likewise. - (free_temp_arrays): Likewise. - (gather_default_values): Likewise. - (switch_conversion::gather_default_values): Likewise. - (build_constructors): Likewise. - (switch_conversion::build_constructors): Likewise. - (constructor_contains_same_values_p): Likewise. - (switch_conversion::contains_same_values_p): Likewise. - (array_value_type): Likewise. - (switch_conversion::array_value_type): Likewise. - (build_one_array): Likewise. - (switch_conversion::build_one_array): Likewise. - (build_arrays): Likewise. - (switch_conversion::build_arrays): Likewise. - (gen_def_assigns): Likewise. - (switch_conversion::gen_def_assigns): Likewise. - (prune_bbs): Likewise. - (switch_conversion::prune_bbs): Likewise. - (fix_phi_nodes): Likewise. - (switch_conversion::fix_phi_nodes): Likewise. - (gen_inbound_check): Likewise. - (switch_conversion::gen_inbound_check): Likewise. - (process_switch): Use the newly created class. - (switch_conversion::expand): New. - (switch_conversion::~switch_conversion): New. - * tree-switch-conversion.h: New file. - -2018-06-20 Richard Sandiford - - * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to - tree-vect-patterns.c. - * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function. - (vect_recog_dot_prod_pattern): Use it. Remove the type_in argument. - (vect_recog_sad_pattern): Likewise. - (vect_recog_widen_sum_pattern): Likewise. - (vect_recog_pow_pattern): Likewise. Check for a null vectype. - (vect_recog_widen_shift_pattern): Remove the type_in argument. - (vect_recog_rotate_pattern): Likewise. - (vect_recog_mult_pattern): Likewise. - (vect_recog_vector_vector_shift_pattern): Likewise. - (vect_recog_divmod_pattern): Likewise. - (vect_recog_mixed_size_cond_pattern): Likewise. - (vect_recog_bool_pattern): Likewise. - (vect_recog_mask_conversion_pattern): Likewise. - (vect_try_gather_scatter_pattern): Likewise. - (vect_recog_widen_mult_pattern): Likewise. Check for a null vectype. - (vect_recog_over_widening_pattern): Likewise. - (vect_recog_gather_scatter_pattern): Likewise. - (vect_recog_func_ptr): Move from tree-vectorizer.h - (vect_vect_recog_func_ptrs): Move further down the file. - (vect_recog_func): Likewise. Remove the third argument. - (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs. - (vect_pattern_recog_1): Expect the pattern function to do any - necessary target tests. Also expect it to provide a vector type. - Remove the type_in handling. - -2018-06-20 Richard Sandiford - - * tree-vect-patterns.c (vect_pattern_detected): New function. - (vect_recog_dot_prod_patternm, vect_recog_sad_pattern) - (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern) - (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern - (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern) - (vect_recog_mult_pattern, vect_recog_divmod_pattern) - (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern) - (vect_recog_mask_conversion_pattern) - (vect_try_gather_scatter_pattern): Likewise. - -2018-06-20 Richard Sandiford - - * tree-vect-patterns.c (vect_get_internal_def): New function. - (vect_recog_dot_prod_pattern, vect_recog_sad_pattern) - (vect_recog_vector_vector_shift_pattern, check_bool_pattern) - (search_type_for_mask_1): Use it. - -2018-06-20 Richard Sandiford - - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove - redundant WIDEN_SUM_EXPR handling. - (vect_recog_sad_pattern): Likewise. - -2018-06-20 Richard Sandiford - - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove - redundant check that the types of a PLUS_EXPR or MULT_EXPR agree. - (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR. - (vect_recog_widen_mult_pattern): Likewise MULT_EXPR. - (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR. - -2018-06-20 Richard Sandiford - - * tree-vect-stmts.c (vectorizable_call): Make sure that we - use the stmt_vec_info of the original bb statement for the - new zero assignment, even if the call is part of a pattern. - -2018-06-20 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq - that the sequence is attached to the original statement rather - than the pattern statement. - * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the - PATTERN_DEF_SEQ from the original statement rather than - the main pattern statement. - * tree-vect-stmts.c (free_stmt_vec_info): Likewise. - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise. - (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ. - -2018-06-20 Richard Sandiford - - * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern - definition statements before the early exit for statements that aren't - live or relevant. - * tree-vect-loop.c (vect_transform_loop_stmt): New function, - split out from... - (vect_transform_loop): ...here. Process pattern definition - statements without first checking whether the main pattern - statement is live or relevant. - -2018-06-19 Eric Botcazou - - * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at - -O0 if the locus represent UNKNOWN_LOCATION but have different values. - -2018-06-19 Aaron Sawdey - - * config/rs6000/rs6000-string.c (select_block_compare_mode): Check - TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller. - (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions. - (expand_block_compare): Change select_block_compare_mode call. - (expand_strncmp_align_check): Use new functions, fix comment. - (emit_final_str_compare_gpr): New function. - (expand_strn_compare): Refactor and clean up code. - * config/rs6000/vsx.md (vsx_mov_64bit): Remove *. - -2018-06-19 Tony Reix - Damien Bergamini - David Edelsohn - - * collect2.c (static_obj): New variable. - (static_libs): New variable. - (is_in_list): Uncomment declaration. - (main): Track AIX libraries linked statically. - (is_in_list): Uncomment definition. - (scan_prog_file): Don't add AIX shared libraries initializer - to constructor list if linking statically. - -2018-06-19 Max Filippov - - * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec - constant. - (allocate_stack, frame_blockage, *frame_blockage): New patterns. - -2018-06-19 Jan Hubicka - - * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from - blocks. - -2018-06-19 Martin Liska - - * config/i386/i386.c (ix86_can_inline_p): Do not use - ipa_fn_summaries::get_create. - * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with - get. - (devirtualization_time_bonus): Likewise. - (ipcp_propagate_stage): Likewise. - * ipa-fnsummary.c (redirect_to_unreachable): Likewise. - (edge_set_predicate): Likewise. - (evaluate_conditions_for_known_args): Likewise. - (evaluate_properties_for_edge): Likewise. - (ipa_call_summary::reset): Tranform to ... - (ipa_call_summary::~ipa_call_summary): ... this. - (ipa_fn_summary::reset): Transform to ... - (ipa_fn_summary::~ipa_fn_summary): ... this. - (ipa_fn_summary_t::remove): Rename to ... - (ipa_fn_summary_t::remove_callees): ... this. - (ipa_fn_summary_t::duplicate): Use placement new - instead of memory copy. - (ipa_call_summary_t::duplicate): Likewise. - (ipa_call_summary_t::remove): Remove. - (dump_ipa_call_summary): Change get_create to get. - (ipa_dump_fn_summary): Dump only when summary exists. - (analyze_function_body): Use symbol_summary::get instead - of get_create. - (compute_fn_summary): Likewise. - (estimate_edge_devirt_benefit): Likewise. - (estimate_edge_size_and_time): Likewise. - (inline_update_callee_summaries): Likewise. - (remap_edge_change_prob): Likewise. - (remap_edge_summaries): Likewise. - (ipa_merge_fn_summary_after_inlining): Likewise. - (write_ipa_call_summary): Likewise. - (ipa_fn_summary_write): Likewise. - (ipa_free_fn_summary): Likewise. - * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor. - (struct ipa_call_summary): Likewise. - * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead - of get_create. - * ipa-inline-analysis.c (do_estimate_edge_time): Likewise. - (estimate_size_after_inlining): Likewise. - (estimate_growth): Likewise. - (growth_likely_positive): Likewise. - * ipa-inline-transform.c (clone_inlined_nodes): Likewise. - (inline_call): Likewise. - * ipa-inline.c (caller_growth_limits): Likewise. - (can_inline_edge_p): Likewise. - (can_inline_edge_by_limits_p): Likewise. - (compute_uninlined_call_time): Likewise. - (compute_inlined_call_time): Likewise. - (want_inline_small_function_p): Likewise. - (edge_badness): Likewise. - (update_caller_keys): Likewise. - (update_callee_keys): Likewise. - (inline_small_functions): Likewise. - (inline_to_all_callers_1): Likewise. - (dump_overall_stats): Likewise. - (early_inline_small_functions): Likewise. - (early_inliner): Likewise. - * ipa-profile.c (ipa_propagate_frequency_1): Likewise. - * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. - * ipa-pure-const.c (malloc_candidate_p): Likewise. - * ipa-split.c (execute_split_functions): Likewise. - * symbol-summary.h: Likewise. - * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise. - -2018-06-19 Richard Biener - - * tree-vectorizer.c (try_vectorize_loop_1): Split out of ... - (vectorize_loops): ... here. Fix dbgcnt handling. - (try_vectorize_loop): Wrap try_vectorize_loop_1. - -2018-06-19 Segher Boessenkool - - PR target/86197 - * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An - ieee128 argument takes up only one (vector) register, not two (floating - point) registers. - -2018-06-19 Eric Botcazou - - * gimplify.c (gimplify_init_constructor): Really never clear for an - incomplete constructor if CONSTRUCTOR_NO_CLEARING is set. - -2018-06-19 Richard Biener - - PR tree-optimization/86179 - * tree-vect-patterns.c (vect_pattern_recog_1): Clean up - after failed recognition. - -2018-06-18 Martin Sebor - - PR middle-end/85602 - * calls.c (maybe_warn_nonstring_arg): Handle strncat. - * tree-ssa-strlen.c (is_strlen_related_p): Make extern. - Handle integer subtraction. - (maybe_diag_stxncpy_trunc): Handle nonstring source arguments. - * tree-ssa-strlen.h (is_strlen_related_p): Declare. - -2018-06-18 David Malcolm - - * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd - param from rtx to rtx_insn *. - * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn" - param. - (frv_ifcvt_modify_insn): Likwise. - (frv_ifcvt_modify_final): Likwise for local "existing_insn", - adding an as_a cast. Likewise for local "insn". - * config/mips/mips.c (r10k_insert_cache_barriers): Add an - as_a cast to local "unprotected_region" once - it's been established that it's not NULL or pc_rtx. - * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen - param "sethi" from rtx to rtx_insn *. - (nds32_group_float_insns): Likewise for param "insn". - * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st - param. - (vax_output_int_subtract): Likewise. - * config/vax/vax.c (vax_output_int_add): Likewise for param - "insn". - (vax_output_int_subtract): Likewise. - * emit-rtl.c (set_insn_deleted): Likewise, removing cast. - (emit_pattern_after): Likewise for param "after". - (emit_insn_after): Likewise. - (emit_jump_insn_after): Likewise. - (emit_call_insn_after): Likewise. - (emit_debug_insn_after): Likewise. - (emit_pattern_before): Likewise for param "before". - (emit_insn_before): Likewise. - (emit_jump_insn_before): Likewise. - * final.c (get_insn_template): Likewise for param "insn", removing - a cast. - * output.h (get_insn_template): Likewise for 2nd param. - * rtl.h (emit_insn_before): Likewise. - (emit_jump_insn_before): Likewise. - (emit_debug_insn_before_noloc): Likewise. - (emit_insn_after): Likewise. - (emit_jump_insn_after): Likewise. - (emit_call_insn_after): Likewise. - (emit_debug_insn_after): Likewise. - (set_insn_deleted): Likewise for param. - -2018-06-18 Michael Meissner - - PR target/85358 - * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit - floating point modes, so that IFmode is numerically greater than - TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE - to declare the ordering. This prevents IFmode from being - converted to TFmode when long double is IEEE 128-bit on an ISA 3.0 - machine. Include rs6000-modes.h to share the fractional values - between genmodes* and the rest of the compiler. - (IFmode): Likewise. - (KFmode): Likewise. - (TFmode): Likewise. - * config/rs6000/rs6000-modes.h: New file. - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the - meaning of rs6000_long_double_size so that 126..128 selects an - appropriate 128-bit floating point type. - (rs6000_option_override_internal): Likewise. - * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h. - (TARGET_LONG_DOUBLE_128): Change the meaning of - rs6000_long_double_size so that 126..128 selects an appropriate - 128-bit floating point type. - (LONG_DOUBLE_TYPE_SIZE): Update comment. - * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the - source and destination to match the standard usage. - (truncifkf2): Likewise. - (copysign3, IEEE iterator): Rework copysign of float128 on - ISA 2.07 to use an explicit clobber, instead of passing in a - temporary. - (copysign3_soft): Likewise. - -2018-06-18 David Malcolm - - * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): - Replace dump_printf_loc call with DUMP_VECT_SCOPE. - (vect_slp_analyze_instance_dependence): Likewise. - (vect_enhance_data_refs_alignment): Likewise. - (vect_analyze_data_refs_alignment): Likewise. - (vect_slp_analyze_and_verify_instance_alignment - (vect_analyze_data_ref_accesses): Likewise. - (vect_prune_runtime_alias_test_list): Likewise. - (vect_analyze_data_refs): Likewise. - * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise. - * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. - (vect_analyze_scalar_cycles_1): Likewise. - (vect_get_loop_niters): Likewise. - (vect_analyze_loop_form_1): Likewise. - (vect_update_vf_for_slp): Likewise. - (vect_analyze_loop_operations): Likewise. - (vect_analyze_loop): Likewise. - (vectorizable_induction): Likewise. - (vect_transform_loop): Likewise. - * tree-vect-patterns.c (vect_pattern_recog): Likewise. - * tree-vect-slp.c (vect_analyze_slp): Likewise. - (vect_make_slp_decision): Likewise. - (vect_detect_hybrid_slp): Likewise. - (vect_slp_analyze_operations): Likewise. - (vect_slp_bb): Likewise. - * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise. - (vectorizable_bswap): Likewise. - (vectorizable_call): Likewise. - (vectorizable_simd_clone_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro. - -2018-06-18 Martin Sebor - - PR tree-optimization/81384 - * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New. - * builtins.c (expand_builtin_strnlen): New function. - (expand_builtin): Call it. - (fold_builtin_n): Avoid setting TREE_NO_WARNING. - * builtins.def (BUILT_IN_STRNLEN): New. - * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN. - Warn for bounds in excess of maximum object size. - * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing - single-value ranges. Handle strnlen. - (handle_builtin_strlen): Handle strnlen. - (strlen_check_and_optimize_stmt): Same. - * doc/extend.texi (Other Builtins): Document strnlen. - -2018-06-18 Maya Rashish - - * config/alpha/openbsd.h (TARGET_DEFAULT): Define. - (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise. - (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise. - - * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from - here to ... - * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here. - -2018-06-18 Prathamesh Kulkarni - - * tree.c (escaped_string::escape): Replace cast to char * by - const_cast (unescaped). - -2018-06-18 Nick Clifton - - PR 84195 - * tree.c (escaped_string): New class. Converts an unescaped - string into its escaped equivalent. - (warn_deprecated_use): Use the new class to convert the - deprecation message, if present. - (test_escaped_strings): New self test. - (test_c_tests): Add test_escaped_strings. - * doc/extend.texi (deprecated): Add a note that the - deprecation message is affected by the -fmessage-length - option, and that control characters will be escaped. - (#pragma GCC error): Document this pragma. - (#pragma GCC warning): Likewise. - * doc/invoke.texi (-fmessage-length): Document this option's - effect on the #warning and #error preprocessor directives and - the deprecated attribute. - -2018-06-18 Eric Botcazou - - * tree.c (decl_value_expr_lookup): Revert latest change. - (decl_value_expr_insert): Likewise. - -2018-06-17 Eric Botcazou - - * gimplify.c (nonlocal_vlas): Delete. - (nonlocal_vla_vars): Likewise. - (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local - referenced VLAs. - (gimplify_body): Do not create and destroy nonlocal_vlas. - * tree-nested.c: Include diagnostic.h. - (use_pointer_in_frame): Tweak. - (lookup_field_for_decl): Add assertion and declare the transformation. - (convert_nonlocal_reference_op) : Rework and issue an - internal error when the reference is in a wrong context. Do not - create a debug decl by default. - (note_nonlocal_block_vlas): Delete. - (convert_nonlocal_reference_stmt) : Do not call it. - (convert_local_reference_op) : Skip the frame decl. Do not - create a debug decl by default. - (convert_gimple_call) : Issue an internal error when the - call is in a wrong context. - (fixup_vla_decls): New function. - (finalize_nesting_tree_1): Adjust comment. Call fixup_vla_decls if no - debug variables were created. - * tree.c (decl_value_expr_lookup): Add checking assertion. - (decl_value_expr_insert): Likewise. - -2018-06-16 Kugan Vivekanandarajah - - PR middle-end/82479 - * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR. - * tree-scalar-evolution.c (interpret_expr): Likewise. - (expression_expensive_p): Likewise. - * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise. - * tree-ssa-loop-niter.c (number_of_iterations_popcount): New. - (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount. - (ssa_defined_by_minus_one_stmt_p): New. - -2018-06-16 Kugan Vivekanandarajah - - PR middle-end/64946 - * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR. - * config/i386/i386.c (ix86_add_stmt_cost): Likewise. - * dojump.c (do_jump): Likewise. - * expr.c (expand_expr_real_2): Check operand type's sign. - * fold-const.c (const_unop): Handle ABSU_EXPR. - (fold_abs_const): Likewise. - * gimple-pretty-print.c (dump_unary_rhs): Likewise. - * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie. - (strip_sign_op_1): Likesise. - * match.pd: Add new pattern to generate ABSU_EXPR. - * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR. - * tree-cfg.c (verify_gimple_assign_unary): Likewise. - * tree-eh.c (operation_could_trap_helper_p): Likewise. - * tree-inline.c (estimate_operator_cost): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise. - * tree.def (ABSU_EXPR): New. - -2018-06-16 Jakub Jelinek - - PR middle-end/86095 - * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var, - documented as preserved for backward compatibility only. - * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation. - - PR rtl-optimization/86108 - * bb-reorder.c (create_forwarder_block): Renamed to ... - (create_eh_forwarder_block): ... this. Split OLD_BB after labels and - jump from new landing pad to the second part. - (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad): - Adjust callers. - -2018-06-15 Jakub Jelinek - - PR middle-end/85878 - * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P - check from first store_expr, use to_mode instead of GET_MODE (to_rtx). - Only call store_expr for halves if the mode is the same. - - PR middle-end/86123 - * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions. - Fix up comment formatting. - -2018-06-15 Bernd Edlinger - - * typed-splay-tree.h (typed_splay_tree::remove): New function. - (typed_splay_tree::closure, - typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted. - (typed_splay_tree::typed_splay_tree, - typed_splay_tree::operator =): Declared private. - (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value, - typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL, - typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper, - typed_splay_tree::rotate_left, typed_splay_tree::rotate_right, - typed_splay_tree::splay_tree_splay, - typed_splay_tree::splay_tree_foreach_helper, - typed_splay_tree::splay_tree_insert, - typed_splay_tree::splay_tree_remove, - typed_splay_tree::splay_tree_lookup, - typed_splay_tree::splay_tree_predecessor, - typed_splay_tree::splay_tree_successor, - typed_splay_tree::splay_tree_min, - typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h. - (typed_splay_tree::root, typed_splay_tree::comp, - typed_splay_tree::delete_key, - typed_splay_tree::delete_value): New data members. - * typed-splay-tree.c (selftest::test_str_to_int): Add a test for - typed_splay_tree::remove. - -2018-06-15 Matthew Fortune - - * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc, - -mginv and -mno-ginv to the assembler. - * config/mips/mips.opt (-mcrc): New option. - (-mginv): Likewise. - * doc/invoke.text (-mcrc): Document. - (-mginv): Likewise. - -2018-06-15 Nick Clifton - - PR 84195 - * tree.c (escaped_string): New class. Converts an unescaped - string into its escaped equivalent. - (warn_deprecated_use): Use the new class to convert the - deprecation message, if present. - (test_escaped_strings): New self test. - (test_c_tests): Add test_escaped_strings. - * doc/extend.texi (deprecated): Add a note that the - deprecation message is affected by the -fmessage-length - option, and that control characters will be escaped. - (#pragma GCC error): Document this pragma. - (#pragma GCC warning): Likewise. - * doc/invoke.texi (-fmessage-length): Document this option's - effect on the #warning and #error preprocessor directives and - the deprecated attribute. - -2018-06-15 Richard Biener - - * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS - here, also noting vector size used. - * tree-vectorizer.c (vectorize_loops): Adjust. Note vector - size used in MSG_OPTIMIZED_LOCATIONS dump. - (pass_slp_vectorize::execute): Adjust. - -2018-06-15 Claudiu Zissulescu - - PR target/85968 - * config/arc/arc.c (arc_return_address_register): Fix - if-condition. - -2018-06-15 Richard Biener - - PR middle-end/86159 - * tree-cfg.c (gimplify_build3): Do not strip sign conversions, - leave useless conversion stripping to force_gimple_operand_gsi. - (gimplify_build2): Likewise. - (gimplify_build1): Likewise. - -2018-06-15 Richard Biener - - PR middle-end/86076 - * tree-cfg.c (move_stmt_op): unshare invariant addresses - before adjusting their block. - -2018-06-15 Sebastian Huber - - * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom - multilibs for *-*-rtems*. - * config/riscv/t-rtems: New file. - -2018-06-14 Jakub Jelinek - - PR middle-end/86122 - * match.pd ((A +- CST1) +- CST2): Punt if last resort - unsigned_type_for returns NULL. - - PR target/85945 - * lower-subreg.c (find_decomposable_subregs): Don't decompose float - subregs of multi-word pseudos unless the float mode has word size. - -2018-06-14 Richard Biener - - PR middle-end/86139 - * tree-vect-generic.c (build_word_mode_vector_type): Remove - duplicate and harmful type_hash_canon. - * tree.c (type_hash_canon): Assert we didn't find ourselves. - -2018-06-14 Richard Biener - - PR ipa/86124 - * tree-ssa-struct-alias.c (create_variable_info_for): Handle - NULL cgraph_node. - -2018-06-14 Sebastian Huber - - * config/rtems.h (STDINT_LONG32): Define. - -2018-06-13 Matthew Fortune - Prachi Godbole - - * config/mips/mips-cpus.def: Define P6600. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/mips.c (mips_ucbranch_type): New enum. - (mips_rtx_cost_data): Add support for P6600. - (mips_issue_rate): Likewise. - (mips_multipass_dfa_lookahead): Likewise. - (mips_avoid_hazard): Likewise. - (mips_reorg_process_insns): Likewise. - (mips_classify_branch_p6600): New function. - * config/mips/mips.h (TUNE_P6600): New define. - (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600. - (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600. - * config/mips/mips.md: Include p6600.md. - (processor): Add p6600. - * config/mips/p6600.md: New file. - * doc/invoke.texi: Add p6600 to supported architectures. - -2018-06-13 Martin Sebor - - PR tree-optimization/86114 - * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS - of integer types. - * tree-ssa-strlen.c (maybe_set_strlen_range): Same. - -2018-06-13 Richard Biener - - * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern): - Properly set vector type of the intermediate stmt. - * tree-vect-stmts.c (vectorizable_operation): The destination - var always has vectype_out type. - -2018-06-13 Jeff Law - - * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than - integer 0 for argument to print_rtl_with_bb. - (rl78_reorg): Likewise. - -2018-06-13 David Malcolm - - * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label" - from rtx to rtx_insn *. - * config/bfin/bfin.c (hwloop_optimize): Likewise for local - "label". - (add_sched_insns_for_speculation): Likewise for local "target", - converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN. - * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels" - from rtx_insn ** to rtx_code_label **. - (reorg_emit_nops): Likewise. - (c6x_reorg): Likewise for local "call_labels". - * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from - rtx to rtx_insn *. - * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to - rtx_code_label *, adding safe_as_a casts to - the loops over LABEL_REFS. - (fixup_addr_diff_vecs): Add as_a to usage of - braf_label. - (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN. - (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *. - (split_branches): Strengthen local "olabel" from rtx to - rtx_insn *, adding a safe_as_a cast. - * emit-rtl.c (next_real_insn): Strengthen param from "rtx" - to "rtx_insn *". - (add_insn_after): Likewise for first two params. - (add_insn_before): Likewise. - (remove_insn): Likewise for param. - (emit_pattern_before_noloc): Likewise for second and third params. - (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL. - (emit_call_insn_before_noloc): Likewise. - (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx" - to "rtx_insn *". - (emit_barrier_before): Likewise. - (emit_label_before): Strengthen "label" param from "rtx" to - "rtx_code_label *". Strengthen "before" param from "rtx" to - "rtx_insn *". - (emit_insn_after_1): Strengthen "after" param from "rtx" to - "rtx_insn *". - (emit_pattern_after_noloc): Likewise. - (emit_insn_after_noloc): Likewise. - (emit_jump_insn_after_noloc): Likewise. - (emit_call_insn_after_noloc): Likewise. - (emit_debug_insn_after_noloc): Likewise. - (emit_barrier_after): Likewise. - (emit_label_after): Likewise for both params. - (emit_pattern_after_setloc): Likewise for "after" param. Convert - "loc" param from "int" to "location_t". - (emit_insn_after_setloc): Likewise. - (emit_jump_insn_after_setloc): Likewise. - (emit_call_insn_after_setloc): Likewise. - (emit_debug_insn_after_setloc): Likewise. - (emit_pattern_before_setloc): Likewise for "before" param. Convert - "loc" param from "int" to "location_t". - (emit_pattern_before): Convert NULL_RTX to NULL. - (emit_insn_before_setloc): Convert "loc" param from "int" to - "location_t". - (emit_jump_insn_before_setloc): Likewise. - (emit_call_insn_before_setloc): Likewise. - (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to - rtx_insn *. Convert "loc" param from "int" to "location_t". - * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc, - emit_call_insn_before_setloc, emit_debug_insn_before_setloc): - Convert 3rd param from "int" to "location_t". - (emit_barrier_before, emit_barrier_after, next_real_insn): - Strengthen param from rtx to rtx_insn *. - (emit_label_before): Strengthen 1st param from "rtx" to - "rtx_code_label *". Strengthen 2nd param from "rtx" to - "rtx_insn *". - (emit_insn_after_noloc, emit_jump_insn_after_noloc, - emit_call_insn_after_noloc, emit_debug_insn_after_noloc): - Strengthen 2nd param from "rtx" to "rtx_insn *". - (emit_insn_after_setloc, emit_jump_insn_after_setloc) - emit_call_insn_after_setloc, emit_debug_insn_after_setloc): - Likewise. Convert 3rd param from "int" to "location_t". - (emit_label_after): Strengthen 1st param from "rtx" to - "rtx_code_label *". - (next_real_insn, remove_insn): Strengthen param from "rtx" to - "rtx_insn *". - (add_insn_before, add_insn_after): Strengthen 1st and 2nd params - from "rtx" to "rtx_insn *". - -2018-06-13 Jan Hubicka - - * cgraph.c (cgraph_node::get_untransformed_body): Dump function - bodies streamed in with -Q. - * dumpfile.c (dump_files): Add lto-stream-out dump file. - * dumpfile.h (tree_dump_index): Add lto_stream_out. - * gimple-streamer-out.c: Include gimple-pretty-print.h - (output_bb): Dump stmts streamed. - * lto-section-out.c: Include print-tree.h - (lto_begin_section): Dump sections created. - (lto_output_decl_index): Dump decl encoded. - * lto-streamer-out.c: Include print-tree.h - (create_output_block): Dump output block created. - (DFS::DFS_write_tree_body): Dump DFS SCCs streamed. - (output_function): Dump function output. - (output_constructor): Dump constructor streamed. - (write_global_stream): Output indexes encoded. - (produce_asm_for_decls): Dump streams encoded. - * lto-streamer.c (streamer_dump_file): New global var. - * lto-streamer.h (streamer_dump_file): Declare. - * passes.c (ipa_write_summaries): Initialize streamer dump. - * varpool.c (varpool_node::get_constructor): Dump constructors streamed - in. - -2018-06-13 Eric Botcazou - - PR target/86048 - * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative - offsets for register save directives. Emit a second batch of save - directives, if need be, when the function accesses prior frames. - -2018-06-12 Claudiu Zissulescu - - * config/arc/fpu.md (fmasf4): Force operand to register. - (fnmasf4): Likewise. - -2018-06-12 Claudiu Zissulescu - - * config/arc/arc-protos.h (arc_pad_return): Remove. - * config/arc/arc.c (machine_function): Remove force_short_suffix - and size_reason. - (arc_print_operand): Adjust printing of '&'. - (arc_verify_short): Remove conditional printing of short suffix. - (arc_final_prescan_insn): Remove reference to size_reason. - (pad_return): New function. - (arc_reorg): Call pad_return. - (arc_pad_return): Remove. - (arc_init_machine_status): Remove reference to force_short_suffix. - * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE. - (attr length): When attribute iscompact is true force to 2 - regardless; in the case of maybe check if we want to force the - instruction to have 4 bytes length. - (nopv): Change it to generate 4 byte long nop as well. - (blockage): New pattern. - (simple_return): Remove call to arc_pad_return. - (p_return_i): Likewise. - -2018-06-12 Claudiu Zissulescu - - * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define. - -2018-06-12 Claudiu Zissulescu - - * config/arc/builtins.def (SYNC): SYNC instruction is valid on all - ARC cores. - -2018-06-12 Claudiu Zissulescu - - * config/arc/arc.c (atomic_exchangesi): EX instruction is default - for ARC700 and ARCv2. - -2018-06-13 Chenghua Xu - - PR target/86076 - * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for - operands[2] instead of operands[1]. - - -2018-06-12 Richard Sandiford - - * lra-constraints.c (simplify_operand_subreg): In the paradoxical - case, check whether the outer register overlaps an unallocatable - register, not just whether it fits the required class. - -2018-06-12 Richard Sandiford - - * poly-int.h (can_div_trunc_p): Add new overload in which all values - are poly_ints. - * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p. - (memrefs_conflict_p): Likewise. - (init_alias_analysis): Likewise. - * cfgexpand.c (expand_debug_expr): Likewise. - * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise. - * cse.c (fold_rtx): Likewise. - * explow.c (adjust_stack, anti_adjust_stack): Likewise. - * expr.c (emit_block_move_hints): Likewise. - (clear_storage_hints, push_block, emit_push_insn): Likewise. - (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise. - (emit_group_load_1): Use rtx_to_poly_int64 for group offsets. - (emit_group_store): Likewise. - (find_args_size_adjust): Use strip_offset. Use rtx_to_poly_int64 - to read the PRE/POST_MODIFY increment. - * calls.c (store_one_arg): Use strip_offset. - * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to - poly_int_rtx_p. - (set_noop_p): Use rtx_to_poly_int64 for the elements selected - by a VEC_SELECT. - * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset. - (simplify_binary_operation_1): Extend CONST_INT handling to - poly_int_rtx_p. - * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather - than a HOST_WIDE_INT. - (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to - poly_int64. - (adjust_mems, add_stores): Update accodingly. - (vt_canonicalize_addr): Track polynomial offsets. - (emit_note_insn_var_location): Likewise. - (vt_add_function_parameter): Likewise. - (vt_initialize): Likewise. - -2018-06-12 Jeff Law - - * config.gcc (alpha*-*-freebsd*): Remove. - * config/alpha/freebsd.h: Remove. - -2018-06-12 David Malcolm - - PR other/69968 - * spellcheck-tree.c (levenshtein_distance): Rename to... - (get_edit_distance): ...this, and update for underlying renaming. - * spellcheck-tree.h (levenshtein_distance): Rename to... - (get_edit_distance): ...this. - * spellcheck.c (levenshtein_distance): Rename to... - (get_edit_distance): ...this. Convert from Levenshtein distance - to Damerau-Levenshtein distance by supporting transpositions of - adjacent characters. Rename "v1" to "v_next" and "v0" to - "v_one_ago". - (selftest::levenshtein_distance_unit_test_oneway): Rename to... - (selftest::test_edit_distance_unit_test_oneway): ...this, and - update for underlying renaming. - (selftest::levenshtein_distance_unit_test): Rename to... - (selftest::test_get_edit_distance_unit): ...this, and update for - underlying renaming. - (selftest::test_find_closest_string): Add example from PR 69968 - where transposition helps - (selftest::test_metric_conditions): Update for renaming. - (selftest::test_metric_conditions): Likewise. - (selftest::spellcheck_c_tests): Likewise. - * spellcheck.h (levenshtein_distance): Rename both overloads to... - (get_edit_distance): ...this. - (best_match::consider): Update for renaming. - -2018-06-12 Martin Sebor - - PR tree-optimization/85259 - * builtins.c (compute_objsize): Handle constant offsets. - * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return - true iff a warning has been issued. - * gimple.h (gimple_nonartificial_location): New function. - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call - gimple_nonartificial_location and handle -Wno-system-headers. - (handle_builtin_stxncpy): Same. - -2018-06-12 Martin Sebor - - PR c/85931 - * fold-const.c (operand_equal_p): Handle SAVE_EXPR. - -2018-06-12 Will Schmidt - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - BUILTIN_VEC_XST entries for pointer to double and long long. - -2018-06-12 H.J. Lu - - PR target/85990 - * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET): - Update comments. - * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET): - Likewise. - -2018-06-12 Martin Liska - - * doc/options.texi: Document IntegerRange. - -2018-06-12 Martin Liska - - * config/i386/i386.opt: Make MPX-related options as Deprecated. - * opt-functions.awk: Handle Deprecated flag. - * opts-common.c (decode_cmdline_option): Handle cl_deprecated - and report error. - (read_cmdline_option): Report warning for a deprecated option. - * opts.h (struct cl_option): Add new field cl_deprecated. - (CL_ERR_DEPRECATED): New. - -2018-06-12 Martin Liska - - * doc/options.texi: Document Deprecated option flag. - -2018-06-12 Claudiu Zissulescu - - * config/arc/arc-arch.h (arc_extras): New enum. - (arc_cpu_t):Add field extra. - (arc_cpu_types): Consider the extras. - * config/arc/arc-cpus.def: Add extras info. - * config/arc/arc-opts.h (processor_type): Consider extra field. - * config/arc/arc.c (arc_override_options): Handle extra field. - -2018-06-12 Claudiu Zissulescu - - * config/arc/arc-arch.h: Update ARC_OPTX macro. - * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc - field. - * config/arc/arc.c (arc_init): Update pic warning. - (irq_range): Update irq range parsing warnings. - (arc_override_options): Update various warning messages. - (arc_handle_aux_attribute): Likewise. - -2018-06-12 Robert Suchanek - - * config/mips/i6400.md (i6400_fpu_fadd): Remove frint. - -2018-06-12 Jozef Lawrynowicz - - * doc/sourcebuild.texi: Document usage of line number 0 in verify - compiler messages directives. - -2018-06-12 Matthew Fortune - - * config/mips/mips-cpus.def: New MIPS_CPU for i6500. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as - mips64r6. - * doc/invoke.texi: Document -march=i6500. - -2018-06-12 Prachi Godbole - - * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit. - (i6400_gpmul): Add cpu_unit. - (i6400_gpdiv): Likewise. - (i6400_msa_add_d): Update reservations. - (i6400_msa_int_add) Likewise. - (i6400_msa_short_logic3) Likewise. - (i6400_msa_short_logic2) Likewise. - (i6400_msa_short_logic) Likewise. - (i6400_msa_move) Likewise. - (i6400_msa_cmp) Likewise. - (i6400_msa_short_float2) Likewise. - (i6400_msa_div_d) Likewise. - (i6400_msa_long_logic1) Likewise. - (i6400_msa_long_logic2) Likewise. - (i6400_msa_mult) Likewise. - (i6400_msa_long_float2) Likewise. - (i6400_msa_long_float4) Likewise. - (i6400_msa_long_float5) Likewise. - (i6400_msa_long_float8) Likewise. - (i6400_fpu_fadd): Include frint type. - (i6400_fpu_store): New define_insn_reservation. - (i6400_fpu_load): Likewise. - (i6400_fpu_move): Likewise. - (i6400_fpu_fcmp): Likewise. - (i6400_fpu_fmadd): Likewise. - (i6400_int_mult): Include imul3nc type and update reservation. - (i6400_int_div): Include idiv3 type and update reservation. - (i6400_int_load): Update to check type not move_type. - (i6400_int_store): Likewise. - (i6400_int_prefetch): Set zero latency. - -2018-06-12 Eric Botcazou - - * gcc.c: Document new %@{...} sequence. - (LINK_COMMAND_SPEC): Use it for the -L switches. - (cpp_unique_options): Use it for the -I switches. - (at_file_argbuf): New global variable. - (in_at_file): Likewise. - (alloc_args): Create at_file_argbuf. - (clear_args): Truncate at_file_argbuf. - (store_arg): If in_at_file, push the argument onto at_file_argbuf. - (open_at_file): New function. - (close_at_file): Likewise. - (create_at_file): Delete. - (do_spec_1) <'i'>: Use open_at_file/close_at_file. - <'o'>: Likewise. - <'@'>: New case. - (validate_switches_from_spec): Deal with %@{...} sequence. - (validate_switches): Likewise. - (driver::finalize): Call clear_args. - -2018-06-11 Rasmus Villemoes - - * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0. - -2018-06-11 Martin Sebor - - * doc/invoke.texi (-Wall): List -Wc++17-compat. - (Wno-class-memaccess): Add @opindex. - (Wno-templates, Wno-multiple-inheritance): Same. - (Wno-virtual-inheritance, Wno-namespaces): Same. - (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same. - (Wno-format-overflow, Wno-format-truncation): Same. - (Wno-unused-local-typedefs, Walloc-size-larger-than): Same. - (Wno-alloc-size-larger-than, Wframe-larger-than): Same - (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same. - (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same. - (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same. - (Wno-misspelled-isr): Same. - -2018-06-11 Martin Sebor - - * PR tree-optimization/86083 - * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p. - -2018-06-11 Zhouyi Zhou - - * tree-eh.c (lower_eh_constructs_2): Add a comma to comment. - -2018-06-11 Segher Boessenkool - - PR target/85755 - * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers - on the correct operand. - (*movdi_internal64): Ditto. - -2018-06-11 Martin Liska - - PR tree-optimization/86089 - * tree-ssa-strlen.c (get_string_length): Move back removed hunk. - -2018-06-11 Julia Koval - - * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128) - _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove. - * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove. - -2018-06-11 Olivier Hainque - - * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83 - for Ada with strict dwarf2. - -2018-06-08 Peter Bergner - - PR target/85755 - * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC - addresses. - -2018-06-08 Jan Hubicka - - * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4. - -2018-06-08 David Edelsohn - - * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if - TARGET_ELF. - -2018-06-08 Martin Liska - - * tree-cfg.h (debug_function): Fix argument type to match - implementation. - -2018-06-08 Martin Liska - - * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility): - Remove usage of MPX-related (and removed) fields. - * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise. - -2018-06-08 David Malcolm - - * cfg.c (debug): Use TDF_NONE rather than 0. - * cfghooks.c (debug): Likewise. - * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP. - (struct dump_option_value_info): Convert to... - (struct kv_pair): ...this template type. - (dump_options): Convert to kv_pair; use TDF_NONE - rather than 0. - (optinfo_verbosity_options): Likewise. - (optgroup_options): Convert to kv_pair; use - OPTGROUP_NONE. - (gcc::dump_manager::dump_register): Use optgroup_flags_t rather - than int for "optgroup_flags" param. - (dump_generic_expr_loc): Use dump_flags_t rather than int for - "dump_kind" param. - (dump_dec): Likewise. - (dump_finish): Use TDF_NONE rather than 0. - (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t - rather than int for "optgroup_flags" param. Use TDF_NONE rather - than 0. Update for change to option_ptr. - (opt_info_switch_p_1): Convert "optgroup_flags" param from int * - to optgroup_flags_t *. Use TDF_NONE and OPTGROUP_NONE rather than - 0. Update for changes to optinfo_verbosity_options and - optgroup_options. - (opt_info_switch_p): Convert optgroup_flags from int to - optgroup_flags_t. - (dump_basic_block): Use dump_flags_t rather than int - for "dump_kind" param. - * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS, - TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID) - TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME, - TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB, - TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS, - MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG, - TDF_NONE): Convert from macros to... - (enum dump_flag): ...this new enum. - (dump_flags_t): Update to use enum. - (operator|, operator&, operator~, operator|=, operator&=): - Implement for dump_flags_t. - (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE, - OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL): - Convert from macros to... - (enum optgroup_flag): ...this new enum. - (optgroup_flags_t): New typedef. - (operator|, operator|=): Implement for optgroup_flags_t. - (struct dump_file_info): Convert field "alt_flags" to - dump_flags_t. Convert field "optgroup_flags" to - optgroup_flags_t. - (dump_basic_block): Use dump_flags_t rather than int for param. - (dump_generic_expr_loc): Likewise. - (dump_dec): Likewise. - (dump_register): Convert param "optgroup_flags" to - optgroup_flags_t. - (opt_info_enable_passes): Likewise. - * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather - than 0. - * gimple-pretty-print.c (debug): Likewise. - * gimple-ssa-store-merging.c (bswap_replace): Likewise. - (merged_store_group::apply_stores): Likewise. - * gimple-ssa-strength-reduction.c (insert_initializers): Likewise. - * gimple.c (verify_gimple_pp): Likewise. - * graphite-poly.c (print_pbb_body): Likewise. - * passes.c (pass_manager::register_one_dump_file): Convert - local "optgroup_flags" to optgroup_flags_t. - * print-tree.c (print_node): Use TDF_NONE rather than 0. - (debug): Likewise. - (debug_body): Likewise. - * tree-pass.h (struct pass_data): Convert field "optgroup_flags" - to optgroup_flags_t. - * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather - than 0. - * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise. - (convert_mult_to_fma): Likewise. - * tree-ssa-reassoc.c (undistribute_ops_list): Likewise. - * tree-ssa-sccvn.c (vn_eliminate): Likewise. - * tree-vect-data-refs.c (dump_lower_bound): Convert param - "dump_kind" to dump_flags_t. - -2018-06-08 Segher Boessenkool - - * config/rs6000/rs6000.c (min, max): Delete. - -2018-06-08 Segher Boessenkool - - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of - -mabi=spe and -mabi=no-spe. - -2018-06-08 Martin Liska - - * ipa-pure-const.c (propagate_pure_const): Use ::get at places - where we expect an existing summary. - -2018-06-08 Martin Liska - - * ipa-inline-analysis.c (simple_edge_hints): Use ::get method. - * ipa-inline.h (estimate_edge_growth): Likewise. - -2018-06-08 Martin Liska - - * cgraph.c (function_version_hasher::hash): Use - cgraph_node::get_uid (). - (function_version_hasher::equal): - * cgraph.h (cgraph_node::get_uid): New method. - * ipa-inline.c (update_caller_keys): Use - cgraph_node::get_uid (). - (update_callee_keys): Likewise. - * ipa-utils.c (searchc): Likewise. - (ipa_reduced_postorder): Likewise. - * lto-cgraph.c (input_node): Likewise. - * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise. - * symbol-summary.h (symtab_insertion): Likewise. - (symtab_removal): Likewise. - (symtab_duplication): Likewise. - * tree-pretty-print.c (dump_function_header): Likewise. - * tree-sra.c (convert_callers_for_node): Likewise. - -2018-06-08 Martin Liska - - * cgraph.c (symbol_table::create_edge): Always assign a new - unique number. - (symbol_table::free_edge): Do not recycle numbers. - * cgraph.h (cgraph_edge::get): New method. - * symbol-summary.h (symtab_removal): Use it. - (symtab_duplication): Likewise. - (call_summary::hashable_uid): Remove. - -2018-06-08 Martin Liska - - * ipa-inline-analysis.c (inline_edge_removal_hook): Remove. - (initialize_growth_caches): Remove. - (free_growth_caches): Likewise. - (do_estimate_edge_time): Use edge_growth_cache. - (do_estimate_edge_size): Likewise. - (do_estimate_edge_hints): Likewise. - * ipa-inline.c (reset_edge_caches): Likewise. - (recursive_inlining): Likewise. - (inline_small_functions): Likewise. - * ipa-inline.h (initialize_growth_caches): Remove. - (estimate_edge_size): Likewise. - (estimate_edge_time): Likewise. - (estimate_edge_hints): Likewise. - (reset_edge_growth_cache): Likewise. - * symbol-summary.h (call_summary::remove): New method. - -2018-06-08 Martin Liska - - * ipa-cp.c (class edge_clone_summary): New summary. - (grow_edge_clone_vectors): Remove. - (ipcp_edge_duplication_hook): Remove. - (class edge_clone_summary_t): New call_summary class. - (ipcp_edge_removal_hook): Remove. - (edge_clone_summary_t::duplicate): New function. - (get_next_cgraph_edge_clone): Use edge_clone_summaries. - (create_specialized_node): Likewise. - (ipcp_driver): Initialize edge_clone_summaries and do not - register hooks. - -2018-06-08 Martin Liska - - * symbol-summary.h (get): New function. - (call_summary::m_initialize_when_cloning): New class member. - -2018-06-08 Martin Liska - - * cgraph.c (cgraph_node::remove): Do not recycle uid. - * cgraph.h (symbol_table::release_symbol): Do not pass uid. - (symbol_table::allocate_cgraph_symbol): Do not set uid. - * passes.c (uid_hash_t): Record removed_nodes by their uids. - (remove_cgraph_node_from_order): Use the removed_nodes set. - (do_per_function_toporder): Likwise. - * symbol-summary.h (symtab_insertion): Use cgraph_node::uid - instead of summary_uid. - (symtab_removal): Likewise. - (symtab_duplication): Likewise. - -2018-06-08 Martin Liska - - * ipa-cp.c (ipcp_store_bits_results): Use - ipcp_transformation_sum. - (ipcp_store_vr_results): Likewise. - * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed - to ... - (ipcp_transformation_initialize): ... this. - (ipa_set_node_agg_value_chain): - (ipa_node_params_t::duplicate): Use ipcp_transformation_sum. - (write_ipcp_transformation_info): Likewise. - (read_ipcp_transformation_info): Likewise. - (ipcp_update_bits): Likewise. - (ipcp_update_vr): Likewise. - (ipcp_transform_function): Likewise. - * ipa-prop.h: Rename ipcp_transformation_summary to - ipcp_transformation. - (class ipcp_transformation_t): New function summary. - (ipcp_get_transformation_summary): Use ipcp_transformation_sum. - (ipa_get_agg_replacements_for_node): Likewise. - -2018-06-08 Martin Liska - - * ipa-pure-const.c (struct funct_state_d): Do it class instead - of struct. - (class funct_state_summary_t): New function_summary class. - (has_function_state): Remove. - (get_function_state): Likewise. - (set_function_state): Likewise. - (add_new_function): Likewise. - (funct_state_summary_t::insert): New function. - (duplicate_node_data): Remove. - (remove_node_data): Remove. - (funct_state_summary_t::duplicate): New function. - (register_hooks): Create new funct_state_summaries. - (pure_const_generate_summary): Use it. - (pure_const_write_summary): Likewise. - (pure_const_read_summary): Likewise. - (propagate_pure_const): Likewise. - (propagate_nothrow): Likewise. - (dump_malloc_lattice): Likewise. - (propagate_malloc): Likewise. - (execute): Do not register hooks, just remove summary - instead. - (pass_ipa_pure_const::pass_ipa_pure_const): Simplify - constructor. - -2018-06-08 Martin Liska - - * ipa-reference.c (remove_node_data): Remove. - (duplicate_node_data): Likewise. - (class ipa_ref_var_info_summary_t): New class. - (class ipa_ref_opt_summary_t): Likewise. - (get_reference_vars_info): Use ipa_ref_var_info_summaries. - (get_reference_optimization_summary): Use - ipa_ref_opt_sum_summaries. - (set_reference_vars_info): Remove. - (set_reference_optimization_summary): Likewise. - (ipa_init): Create summaries. - (init_function_info): Use function summary. - (ipa_ref_opt_summary_t::duplicate): New function. - (ipa_ref_opt_summary_t::remove): New function. - (get_read_write_all_from_node): Fix GNU coding style. - (propagate): Use function summary. - (write_node_summary_p): Fix GNU coding style. - (stream_out_bitmap): Likewise. - (ipa_reference_read_optimization_summary): Use function summary. - (ipa_reference_c_finalize): Do not release hooks. - -2018-06-08 Martin Liska - - * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method. - (analyze_function_body): Extract multiple calls of get_create. - * ipa-inline-analysis.c (simple_edge_hints): Likewise. - * ipa-inline.c (recursive_inlining): Use ::get method. - * ipa-inline.h (estimate_edge_growth): Likewise. - -2018-06-08 Martin Liska - - * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to - HSA_INVALID. - (hsa_function_summary::hsa_function_summary): Use the new enum - value. - (hsa_gpu_implementation_p): Use hsa_summaries::get. - * hsa-gen.c (hsa_get_host_function): Likewise. - (get_brig_function_name): Likewise. - * ipa-hsa.c (process_hsa_functions): Likewise. - (ipa_hsa_write_summary): Likewise. - * symbol-summary.h (symtab_duplication): Use ::get function/ - (get): New function. - -2018-06-08 Martin Liska - - * config/i386/i386.c (ix86_can_inline_p): Use get_create instead - of get. - * hsa-common.c (hsa_summary_t::link_functions): Likewise. - (hsa_register_kernel): Likewise. - * hsa-common.h (hsa_gpu_implementation_p): Likewise. - * hsa-gen.c (hsa_get_host_function): Likewise. - (get_brig_function_name): Likewise. - (generate_hsa): Likewise. - (pass_gen_hsail::execute): Likewise. - * ipa-cp.c (ipcp_cloning_candidate_p): Likewise. - (devirtualization_time_bonus): Likewise. - (ipcp_propagate_stage): Likewise. - * ipa-fnsummary.c (redirect_to_unreachable): Likewise. - (edge_set_predicate): Likewise. - (evaluate_conditions_for_known_args): Likewise. - (evaluate_properties_for_edge): Likewise. - (ipa_fn_summary::reset): Likewise. - (ipa_fn_summary_t::duplicate): Likewise. - (dump_ipa_call_summary): Likewise. - (ipa_dump_fn_summary): Likewise. - (analyze_function_body): Likewise. - (compute_fn_summary): Likewise. - (estimate_edge_devirt_benefit): Likewise. - (estimate_edge_size_and_time): Likewise. - (estimate_calls_size_and_time): Likewise. - (estimate_node_size_and_time): Likewise. - (inline_update_callee_summaries): Likewise. - (remap_edge_change_prob): Likewise. - (remap_edge_summaries): Likewise. - (ipa_merge_fn_summary_after_inlining): Likewise. - (ipa_update_overall_fn_summary): Likewise. - (read_ipa_call_summary): Likewise. - (inline_read_section): Likewise. - (write_ipa_call_summary): Likewise. - (ipa_fn_summary_write): Likewise. - (ipa_free_fn_summary): Likewise. - * ipa-hsa.c (process_hsa_functions): Likewise. - (ipa_hsa_write_summary): Likewise. - (ipa_hsa_read_section): Likewise. - * ipa-icf.c (sem_function::merge): Likewise. - * ipa-inline-analysis.c (simple_edge_hints): Likewise. - (do_estimate_edge_time): Likewise. - (estimate_size_after_inlining): Likewise. - (estimate_growth): Likewise. - (growth_likely_positive): Likewise. - * ipa-inline-transform.c (clone_inlined_nodes): Likewise. - (inline_call): Likewise. - * ipa-inline.c (caller_growth_limits): Likewise. - (can_inline_edge_p): Likewise. - (can_inline_edge_by_limits_p): Likewise. - (compute_uninlined_call_time): Likewise. - (compute_inlined_call_time): Likewise. - (want_inline_small_function_p): Likewise. - (edge_badness): Likewise. - (update_caller_keys): Likewise. - (update_callee_keys): Likewise. - (recursive_inlining): Likewise. - (inline_small_functions): Likewise. - (inline_to_all_callers_1): Likewise. - (dump_overall_stats): Likewise. - (early_inline_small_functions): Likewise. - (early_inliner): Likewise. - * ipa-inline.h (estimate_edge_growth): Likewise. - * ipa-profile.c (ipa_propagate_frequency_1): Likewise. - * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. - * ipa-prop.h (IPA_NODE_REF): Likewise. - (IPA_EDGE_REF): Likewise. - * ipa-pure-const.c (malloc_candidate_p): Likewise. - (propagate_malloc): Likewise. - * ipa-split.c (execute_split_functions): Likewise. - * symbol-summary.h: Rename get to get_create. - (get): Likewise. - (get_create): Likewise. - * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise. - -2018-06-08 Martin Liska - - * symbol-summary.h (release): Move definition out of class - declaration. - (symtab_removal): Likewise. - (symtab_duplication): Likewise. - -2018-06-08 Martin Liska - - * symbol-summary.h (function_summary): Move constructor - implementation out of class declaration. - (release): Likewise. - (symtab_insertion): Likewise. - (symtab_removal): Likewise. - (symtab_duplication): Likewise. - (get): Likewise. - -2018-06-08 Martin Liska - - * Makefile.in: Remove support for MPX (macros, related functions, - fields in cgraph_node, ...). - * builtin-types.def (BT_BND): Likewise. - (BT_FN_BND_CONST_PTR): Likewise. - (BT_FN_CONST_PTR_BND): Likewise. - (BT_FN_VOID_PTR_BND): Likewise. - (BT_FN_BND_CONST_PTR_SIZE): Likewise. - (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise. - * builtins.c (expand_builtin_memcpy_with_bounds): Likewise. - (expand_builtin_mempcpy_with_bounds): Likewise. - (expand_builtin_memset_with_bounds): Likewise. - (expand_builtin_memset_args): Likewise. - (std_expand_builtin_va_start): Likewise. - (expand_builtin): Likewise. - (expand_builtin_with_bounds): Likewise. - * builtins.def (DEF_BUILTIN_CHKP): Likewise. - (DEF_LIB_BUILTIN_CHKP): Likewise. - (DEF_EXT_LIB_BUILTIN_CHKP): Likewise. - (DEF_CHKP_BUILTIN): Likewise. - (BUILT_IN_MEMCPY): Likewise. - (BUILT_IN_MEMMOVE): Likewise. - (BUILT_IN_MEMPCPY): Likewise. - (BUILT_IN_MEMSET): Likewise. - (BUILT_IN_STPCPY): Likewise. - (BUILT_IN_STRCAT): Likewise. - (BUILT_IN_STRCHR): Likewise. - (BUILT_IN_STRCPY): Likewise. - (BUILT_IN_STRLEN): Likewise. - (BUILT_IN_MEMCPY_CHK): Likewise. - (BUILT_IN_MEMMOVE_CHK): Likewise. - (BUILT_IN_MEMPCPY_CHK): Likewise. - (BUILT_IN_MEMSET_CHK): Likewise. - (BUILT_IN_STPCPY_CHK): Likewise. - (BUILT_IN_STRCAT_CHK): Likewise. - (BUILT_IN_STRCPY_CHK): Likewise. - * calls.c (store_bounds): Likewise. - (emit_call_1): Likewise. - (special_function_p): Likewise. - (maybe_warn_nonstring_arg): Likewise. - (initialize_argument_information): Likewise. - (finalize_must_preallocate): Likewise. - (compute_argument_addresses): Likewise. - (expand_call): Likewise. - * cfgexpand.c (expand_call_stmt): Likewise. - (expand_return): Likewise. - (expand_gimple_stmt_1): Likewise. - (pass_expand::execute): Likewise. - * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise. - (cgraph_node::remove): Likewise. - (cgraph_node::dump): Likewise. - (cgraph_node::verify_node): Likewise. - * cgraph.h (chkp_function_instrumented_p): Likewise. - (symtab_node::get_alias_target): Likewise. - (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise. - (cgraph_local_p): Likewise. - * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise. - (cgraph_edge::rebuild_references): Likewise. - * cgraphunit.c (varpool_node::finalize_decl): Likewise. - (walk_polymorphic_call_targets): Likewise. - (cgraph_node::expand_thunk): Likewise. - (symbol_table::output_weakrefs): Likewise. - * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise. - (ix86_handle_option): Likewise. - * config/i386/constraints.md: Likewise. - * config/i386/i386-builtin-types.def (BND): Likewise. - (VOID): Likewise. - (PVOID): Likewise. - (ULONG): Likewise. - * config/i386/i386-builtin.def (BDESC_END): Likewise. - (BDESC_FIRST): Likewise. - (BDESC): Likewise. - * config/i386/i386-c.c (ix86_target_macros_internal): Likewise. - * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise. - * config/i386/i386.c (enum reg_class): Likewise. - (ix86_target_string): Likewise. - (ix86_option_override_internal): Likewise. - (ix86_conditional_register_usage): Likewise. - (ix86_valid_target_attribute_inner_p): Likewise. - (ix86_set_indirect_branch_type): Likewise. - (ix86_set_current_function): Likewise. - (ix86_function_arg_regno_p): Likewise. - (init_cumulative_args): Likewise. - (ix86_function_arg_advance): Likewise. - (ix86_function_arg): Likewise. - (ix86_pass_by_reference): Likewise. - (ix86_function_value_regno_p): Likewise. - (ix86_function_value_1): Likewise. - (ix86_function_value_bounds): Likewise. - (ix86_return_in_memory): Likewise. - (ix86_setup_incoming_vararg_bounds): Likewise. - (ix86_va_start): Likewise. - (indirect_thunk_need_prefix): Likewise. - (print_reg): Likewise. - (ix86_print_operand): Likewise. - (ix86_expand_call): Likewise. - (ix86_output_function_return): Likewise. - (reg_encoded_number): Likewise. - (BDESC_VERIFYS): Likewise. - (ix86_init_mpx_builtins): Likewise. - (ix86_init_builtins): Likewise. - (ix86_emit_cmove): Likewise. - (ix86_emit_move_max): Likewise. - (ix86_expand_builtin): Likewise. - (ix86_builtin_mpx_function): Likewise. - (ix86_get_arg_address_for_bt): Likewise. - (ix86_load_bounds): Likewise. - (ix86_store_bounds): Likewise. - (ix86_load_returned_bounds): Likewise. - (ix86_store_returned_bounds): Likewise. - (ix86_class_likely_spilled_p): Likewise. - (ix86_hard_regno_mode_ok): Likewise. - (x86_order_regs_for_local_alloc): Likewise. - (ix86_mitigate_rop): Likewise. - (ix86_bnd_prefixed_insn_p): Likewise. - (ix86_mpx_bound_mode): Likewise. - (ix86_make_bounds_constant): Likewise. - (ix86_initialize_bounds): Likewise. - (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise. - (TARGET_STORE_BOUNDS_FOR_ARG): Likewise. - (TARGET_LOAD_RETURNED_BOUNDS): Likewise. - (TARGET_STORE_RETURNED_BOUNDS): Likewise. - (TARGET_CHKP_BOUND_MODE): Likewise. - (TARGET_BUILTIN_CHKP_FUNCTION): Likewise. - (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise. - (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise. - (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise. - * config/i386/i386.h (TARGET_MPX): Likewise. - (TARGET_MPX_P): Likewise. - (VALID_BND_REG_MODE): Likewise. - (FIRST_BND_REG): Likewise. - (LAST_BND_REG): Likewise. - (enum reg_class): Likewise. - (BND_REG_P): Likewise. - (BND_REGNO_P): Likewise. - (BNDmode): Likewise. - (ADJUST_INSN_LENGTH): Likewise. - * config/i386/i386.md: Likewise. - * config/i386/i386.opt: Likewise. - * config/i386/linux-common.h (LIBMPX_LIBS): Likewise. - (defined): Likewise. - (LINK_MPX): Likewise. - (MPX_SPEC): Likewise. - (LIBMPX_SPEC): Likewise. - (LIBMPXWRAPPERS_SPEC): Likewise. - (CHKP_SPEC): Likewise. - * config/i386/predicates.md: Likewise. - * dbxout.c (dbxout_type): Likewise. - * doc/extend.texi: Likewise. - * doc/invoke.texi: Likewise. - * doc/md.texi: Likewise. - * doc/tm.texi: Likewise. - * doc/tm.texi.in: Likewise. - * dwarf2out.c (is_base_type): Likewise. - (gen_formal_types_die): Likewise. - (gen_subprogram_die): Likewise. - (gen_type_die_with_usage): Likewise. - (gen_decl_die): Likewise. - (dwarf2out_late_global_decl): Likewise. - * expr.c (expand_assignment): Likewise. - (emit_storent_insn): Likewise. - (store_expr_with_bounds): Likewise. - (store_expr): Likewise. - (expand_expr_real_1): Likewise. - * expr.h (store_expr_with_bounds): Likewise. - * function.c (use_register_for_decl): Likewise. - (struct bounds_parm_data): Likewise. - (assign_parms_augmented_arg_list): Likewise. - (assign_parm_find_entry_rtl): Likewise. - (assign_parm_is_stack_parm): Likewise. - (assign_parm_load_bounds): Likewise. - (assign_bounds): Likewise. - (assign_parms): Likewise. - (expand_function_start): Likewise. - * gcc.c (CHKP_SPEC): Likewise. - * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise. - * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise. - (wrestrict_dom_walker::check_call): Likewise. - * gimple.c (gimple_build_call_from_tree): Likewise. - * gimple.h (enum gf_mask): Likewise. - (gimple_call_with_bounds_p): Likewise. - (gimple_call_set_with_bounds): Likewise. - * gimplify.c (gimplify_init_constructor): Likewise. - * ipa-cp.c (initialize_node_lattices): Likewise. - (propagate_constants_across_call): Likewise. - (find_more_scalar_values_for_callers_subset): Likewise. - * ipa-hsa.c (process_hsa_functions): Likewise. - * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise. - * ipa-icf.c (sem_function::merge): Likewise. - * ipa-inline.c (early_inliner): Likewise. - * ipa-pure-const.c (warn_function_noreturn): Likewise. - (warn_function_cold): Likewise. - (propagate_pure_const): Likewise. - * ipa-ref.h (enum GTY): Likewise. - * ipa-split.c (find_retbnd): Likewise. - (consider_split): Likewise. - (split_function): Likewise. - * ipa-visibility.c (cgraph_externally_visible_p): Likewise. - * ipa.c (walk_polymorphic_call_targets): Likewise. - (symbol_table::remove_unreachable_nodes): Likewise. - (process_references): Likewise. - (cgraph_build_static_cdtor_1): Likewise. - * lto-cgraph.c (lto_output_node): Likewise. - (output_refs): Likewise. - (compute_ltrans_boundary): Likewise. - (input_overwrite_node): Likewise. - (input_node): Likewise. - (input_cgraph_1): Likewise. - * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise. - * passes.c (pass_manager::execute_early_local_passes): Likewise. - (class pass_chkp_instrumentation_passes): Likewise. - (make_pass_chkp_instrumentation_passes): Likewise. - * passes.def: Likewise. - * rtl.h (struct GTY): Likewise. - (CALL_EXPR_WITH_BOUNDS_P): Likewise. - * stor-layout.c (layout_type): Likewise. - * symtab.c: Likewise. - * target.def: Likewise. - * targhooks.c (default_chkp_bound_type): Likewise. - (default_chkp_bound_mode): Likewise. - (default_builtin_chkp_function): Likewise. - (default_chkp_function_value_bounds): Likewise. - (default_chkp_make_bounds_constant): Likewise. - (default_chkp_initialize_bounds): Likewise. - * targhooks.h (default_chkp_bound_type): Likewise. - (default_chkp_bound_mode): Likewise. - (default_builtin_chkp_function): Likewise. - (default_chkp_function_value_bounds): Likewise. - (default_chkp_make_bounds_constant): Likewise. - (default_chkp_initialize_bounds): Likewise. - * toplev.c (compile_file): Likewise. - (process_options): Likewise. - * tree-core.h (DEF_BUILTIN): Likewise. - (DEF_BUILTIN_CHKP): Likewise. - * tree-inline.c (declare_return_variable): Likewise. - (remap_gimple_stmt): Likewise. - (copy_bb): Likewise. - (initialize_inlined_parameters): Likewise. - (expand_call_inline): Likewise. - * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise. - (make_pass_ipa_chkp_early_produce_thunks): Likewise. - (make_pass_ipa_chkp_produce_thunks): Likewise. - (make_pass_chkp): Likewise. - (make_pass_chkp_opt): Likewise. - (make_pass_chkp_instrumentation_passes): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise. - * tree-ssa-dce.c (propagate_necessity): Likewise. - (eliminate_unnecessary_stmts): Likewise. - * tree-ssa-pre.c (create_expression_by_pieces): Likewise. - * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise. - * tree-ssa-sccvn.h: Likewise. - * tree-ssa-strlen.c (get_string_length): Likewise. - (valid_builtin_call): Likewise. - (adjust_last_stmt): Likewise. - (handle_builtin_strchr): Likewise. - (handle_builtin_strcpy): Likewise. - (handle_builtin_stxncpy): Likewise. - (handle_builtin_memcpy): Likewise. - (handle_builtin_strcat): Likewise. - (strlen_check_and_optimize_stmt): Likewise. - * tree-stdarg.c (expand_ifn_va_arg_1): Likewise. - * tree-streamer-in.c: Likewise. - * tree-streamer.c (record_common_node): Likewise. - * tree.c (tree_code_size): Likewise. - (wide_int_to_tree_1): Likewise. - (type_contains_placeholder_1): Likewise. - (build_common_tree_nodes): Likewise. - * tree.def (POINTER_BOUNDS_TYPE): Likewise. - * tree.h (POINTER_BOUNDS_TYPE_P): Likewise. - (POINTER_BOUNDS_P): Likewise. - (BOUNDED_TYPE_P): Likewise. - (BOUNDED_P): Likewise. - (CALL_WITH_BOUNDS_P): Likewise. - (pointer_bounds_type_node): Likewise. - * value-prof.c (gimple_ic): Likewise. - * var-tracking.c (vt_add_function_parameters): Likewise. - * varasm.c (make_decl_rtl): Likewise. - (assemble_start_function): Likewise. - (output_constant): Likewise. - (maybe_assemble_visibility): Likewise. - * varpool.c (ctor_for_folding): Likewise. - * chkp-builtins.def: Remove. - * ipa-chkp.c: Remove. - * ipa-chkp.h: Remove. - * rtl-chkp.c: Remove. - * rtl-chkp.h: Remove. - * tree-chkp-opt.c: Remove. - * tree-chkp.c: Remove. - * tree-chkp.h: Remove. - -2018-06-07 Carl Love - - * config/rs6000/vsx.md (vextract_fp_from_shorth, - vextract_fp_from_shortl): Add BE support. - -2018-06-07 Paul Koning - - * compare-elim.c (try_merge_compare): Don't merge compare if - address contains a side effect. - (try_eliminate_compare): Likewise. - -2018-06-07 Olga Makhotina - - * config.gcc: Support "tremont". - * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont". - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - PROCESSOR_TREMONT. - * config/i386/i386.c (m_TREMONT): Define. - (processor_target_table): Add "tremont". - (PTA_TREMONT): Define. - (ix86_lea_outperforms): Add TARGET_TREMONT. - (get_builtin_code_for_version): Handle PROCESSOR_TREMONT. - (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT - and M_INTEL_GOLDMONT_PLUS. - (fold_builtin_cpu): Add "tremont". - (ix86_add_stmt_cost): Add TARGET_TREMONT. - (ix86_option_override_internal): Add "tremont". - * config/i386/i386.h (processor_costs): Define TARGET_TREMONT. - (processor_type): Add PROCESSOR_TREMONT. - * config/i386/x86-tune.def: Add m_TREMONT. - * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type. - -2018-06-07 Jozef Lawrynowicz - - * config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the - symbol defined for msp430i* devices to be lower case. - -2018-06-07 Richard Biener - - * graphite-sese-to-poly.c (extract_affine): Avoid unneded - wrapping. Properly wrap the result of a BIT_NOT_EXPR. - Properly wrap signed arithmetic if overflow wraps. - -2018-06-07 Jakub Jelinek - - PR tree-optimization/69615 - * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs - of a cast from a same precision integral SSA_NAME in a bb dominated - by first_bb, retry with rhs2 set to the rhs1 of the cast. Don't emit - cast to utype if rhs2 has already a compatible type. - -2018-06-07 Richard Biener - - PR tree-optimization/85935 - * graphite-scop-detection.c (find_params_in_bb): Analyze - condition operands with respect to the correct loop. Assert - the analysis doesn't fail. - -2018-06-04 Carl Love - - * config/rs6000/vsx.md (first_match_index_): Calculate index - using natural element order. Use gen_lshrsi3 instead of gen_ashrsi3 - as it is slightly cheaper. - (first_match_or_eos_index_): - Calculate index using natural element order. - (first_match_index_): - Calculate index using natural element order. - (first_match_or_eos_index_): - Calculate index using natural order. - (define_insn vclzlsbb): Change to define_insn vclzlsbb_. - for BE and LE modes. - * config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB, - P9V_BUILTIN_VCLZLSBB_V16QI. - * config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode - specific. - -2018-06-06 Kelvin Nilsen - - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust - indentation and line wrap for many prototypes. Add missing - @smallexample directives around block of prototypes for vec_xl and - vec_xst. - -2018-06-05 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to - track if we pass or return IEEE 128-bit floating point. - (ieee128_mangling_gcc_8_1): New boolean to say whether to generate - C++ mangling that is compatible with GCC 8.1. - (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook. - (init_cumulative_args): Note if we pass or return IEEE 128-bit - floating point types. - (rs6000_function_arg_advance_1): Likewise. - (rs6000_mangle_type): Optionally generate mangled names that match - what GCC 8.1 generated for IEEE 128-bit floating point types. - (rs6000_globalize_decl_name): If we have an external function that - passes or returns IEEE 128-bit types, generate a weak reference - from the mangled name used in GCC 8.1 to the current mangled - name. - (rs6000_init_builtins): Make __ibm128 use the long double type if - long double is IBM extended double. Make __float128 use the long - double type if long double is IEEE 128-bit. - - PR target/85657 - * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper - macro for __ibm128 built-in functions. - (PACK_IF): Add __ibm128 pack/unpack functions. - (UNPACK_IF): Likewise. - * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not - enable long double built-in functions if long double is IEEE - 128-bit floating point. - (rs6000_invalid_builtin): Update long double built-in function - error message. - (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in - functions, adjust the built-in function to use the long double - built-in function if __ibm128 and long double are the same type. - * doc/extend.texi (PowerPC builtins): Update documention for - __builtin_{,un}pack_longdouble. Add documentation for - __builtin_{,un}pack_ibm128. - -2018-06-06 Jim Wilson - - * config/riscv/riscv.c (enum riscv_privilege_levels): New. - (struct machine_function): New field interrupt_mode. - (riscv_handle_type_attribute): New function. Add forward declaration. - (riscv_attribute_table) : Use riscv_handle_type_attribute. - (riscv_expand_epilogue): Check interrupt_mode field. - (riscv_set_current_function): Check interrupt attribute args and - set interrupt_mode field. - * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New. - (riscv_sret, riscv_uret): New. - * doc/extend.texi (RISC-V Function Attributes) : Document - new arguments to interrupt attribute. - -2018-06-06 Peter Bergner - - PR target/63177 - * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9. - Don't handle -mcpu=power8 if -mpower9-vector is also used. - -2018-06-06 Kelvin Nilsen - - * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD, - VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove - several redundant entries. - -2018-06-06 David Malcolm - - * config/i386/i386-protos.h (ix86_expand_call): Strengthen return - type from "rtx" to "rtx_insn *". - * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise - for local "call_insn", removing cast. - (ix86_expand_call): Likewise, introducing a "call_insn" local. - -2018-06-06 Eric Botcazou - - PR tree-optimization/86066 - * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR - for BIT_INSERT_EXPR stores. - -2018-06-06 Richard Biener - - PR tree-optimization/86062 - * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary - component refs ontop - of to be offsetted base. - -2018-06-06 Jozef Lawrynowicz - - * config/msp430/msp430.c (msp430_attr): Allow interrupt handlers - to be static and remove check on interrupt attribute name. - -2018-06-05 Kelvin Nilsen - - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove - volatile qualifier from vec_lvsl and vec_lvsr argument prototypes. - -2018-06-05 Steve Ellcey - - PR target/79924 - * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove - second argument. - * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd): - Remove second argument, change how error is called. - (aarch64_layout_arg): Remove second argument from - aarch64_err_no_fpadvsimd call. - (aarch64_init_cumulative_args): Ditto. - (aarch64_gimplify_va_arg_expr): Ditto. - * config/aarch64/aarch64.md (mov): Ditto. - -2018-06-05 Uros Bizjak - - * config/i386/i386.md (simple_return_indirect_internal): New expander. - (*simple_return_indirect_internal): Rename from - simple_return_indirect_internal. Use W mode iterator. - (rstorssp): New expander. - (*rstorssp): Rename from rstorssp. Use P mode iterator. - (clrssbsy): New expander. - (*clrssbsy): Rename from clrssbsy. Use P mode iterator. - -2018-06-05 Andre Vieira - - * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to - __typeof__. - (cmse_check_pointed_object): Likewise. - -2018-06-05 Martin Liska - - PR gcov-profile/47618 - * doc/invoke.texi: Document how -fprofile-dir format - is extended. - -2018-06-05 Richard Biener - - * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge - removal pretend DOM info isn't available so we do not update - it and only remove edges, not dominated blocks. Actually free - DOM info in case we removed something. Remove unreachable blocks. - (mfb_keep_latches): Work with either DOM info or marked backedges. - (cleanup_tree_cfg_noloop): Do not remove unreachable blocks - first. Mark backedges if DOM info isn't available. - (Re-)compute DOM info after cleanup_control_flow_pre. - -2018-06-05 Richard Biener - - * tree-cfg.c (struct locus_discrim_map): Store line, not location. - (locus_discrim_hasher::hash): Adjust. - (locus_discrim_hasher::equal): Likewise. - (next_discriminator_for_locus): Work on line directly. - (same_line_p): Pass in expanded locus1 as well. - (assign_discriminators): Avoid redundant location expansions. - -2018-06-05 Richard Biener - - PR tree-optimization/86046 - * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P - if required after clearing TREE_ADDRESSABLE. - -2018-06-05 Richard Biener - - PR tree-optimization/86047 - * tree-ssa-loop.c (for_each_index): Glob handling of all - decls and constants and really handle all of them. - -2018-06-05 Kyrylo Tkachov - - PR target/81497 - * config/arm/arm-builtins.c (arm_type_qualifiers): Add - qualifier_void_pointer and qualifier_const_void_pointer. - (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above. - (arm_init_builtins): Handle the above. - * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc, - __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2, - __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for - void intrinsics. - -2018-06-05 Martin Liska - - * auto-profile.c (read_autofdo_file): Do not use - gcov_ctr_summary struct. - (afdo_callsite_hot_enough_for_early_inline): Likewise. - * coverage.c (struct counts_entry): Likewise. - (read_counts_file): Read just single summary entry. - (get_coverage_counts): Use gcov_summary struct. - * coverage.h (get_coverage_counts): Likewise. - * gcov-dump.c (dump_working_sets): Likewise. - (tag_summary): Dump just single summary. - * gcov-io.c (gcov_write_summary): Write just histogram - summary. - (gcov_read_summary): Read just single summary. - (compute_working_sets): Use gcov_summary struct. - * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage - of GCOV_COUNTERS_SUMMABLE. - (GCOV_COUNTERS_SUMMABLE): Remove. - (GCOV_FIRST_VALUE_COUNTER): Replace with - GCOV_COUNTER_V_INTERVAL. - (struct gcov_ctr_summary): Remove. - (struct gcov_summary): Directly use fields of former - gcov_ctr_summary. - (compute_working_sets): Use gcov_summary struct. - * gcov.c (read_count_file): Do not use ctrs fields. - * lto-cgraph.c (merge_profile_summaries): Use gcov_summary - struct. - * lto-streamer.h (struct GTY): Make profile_info gcov_summary - struct. - * profile.c: Likewise. - * profile.h: Likewise. - -2018-06-05 Martin Liska - - PR gcov-profile/84846 - * gcov.c (output_lines): Print working directory only - in intermediate format. - -2018-06-05 Andreas Krebbel - - * config/s390/s390-builtin-types.def: Add void function type. - * config/s390/s390-builtins.def: Use the function type for the - tbeginc builtin. - -2018-06-04 Jim Wilson - - * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg - to int. - * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue - and maybe_eh_return. Change regno to unsigned int. Use new args to - handle EH_RETURN_DATA_REGNO registers properly. - (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg. - (riscv_expand_epilogue): Update comment. Change argument name and - type. Update code to use new name and type. Pass new args to - riscv_for_each_saved_reg. Only use EH_RETURN_STACKADJ_RTX when - EXCEPTION_RETURN. - * config/riscv/riscv.md (NORMAL_RETURN): New. - (SIBCALL_RETURN, EXCEPTION_RETURN): New. - (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg. - (eh_return): Call gen_eh_return_internal and emit barrier. - (eh_return_internal): Call riscv_expand_epilogue. - -2018-06-04 Eric Botcazou - - * gimple-ssa-store-merging.c (struct merged_store_group): Move up - bit_insertion field and declare can_be_merged_into method. - (merged_store_group::can_be_merged_into): New method. - (imm_store_chain_info::coalesce_immediate): Call it to decide whether - consecutive non-overlapping stores can be merged. Turn MEM_REF stores - into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store. - -2018-06-04 Richard Biener - - PR tree-optimization/85955 - * builtins.c (fold_builtin_sincos): Convert pointers to - destination to appropriate type before dereferencing. - -2018-06-04 Segher Boessenkool - - * config/rs6000/rs6000.md (abs2 for FLOAT128): Handle IFmode. - -2018-06-04 Richard Sandiford - - * expr.c (expand_expr_real_1): Force the operand into memory if - its TYPE_MODE is BLKmode and if there is no integer mode for - the number of bits being extracted. - -2018-06-04 Jakub Jelinek - - PR target/85832 - PR target/86036 - * config/i386/sse.md (_eq3_1): - Use vptestnm rather than vptestm in (=Yc,v,C) variant. - -2018-06-04 Richard Biener - - * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into... - (cleanup_tree_cfg_noloop): ... single caller. Do - start_recording_case_labels later. - -2018-06-04 Sebastian Peryt - - * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED - to _IMMINTRIN_H_INCLUDED. - * config/i386/pconfigintrin.h: Ditto. - * config/i386/waitpkgintrin.h: Ditto. - * config/i386/immintrin.h: Add includes for sgxintrin.h, - pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h. - * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h, - emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h, - bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h, - waitpkgintrin.h and cldemoteintrin.h. - -2018-06-04 Richard Biener - - PR tree-optimization/86038 - * tracer.c (find_best_successor): Check probability for - being initialized, bail out if not. - -2018-06-04 Richard Earnshaw - - PR target/86003 - * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list - of bits to ignore when comparing architectures. - -2018-06-04 Jakub Jelinek - - PR tree-optimization/69615 - * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the - maximum or minimum of the type, try to merge it also as if - range1 is + [-, x - 1] or + [x + 1, -]. - - PR c++/86025 - * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. - -2018-06-03 Eric Botcazou - - PR tree-optimization/86034 - * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to - the unsigned bitfield type in a bit insertion sequence if it does not - have a larger precision than the bitfield size. - (process_store): Also bypass widening conversions for BIT_INSERT_EXPR. - -2018-06-03 Kito Cheng - - * config/nds32/nds32-peephole2.md: Add new patterns for code size. - -2018-06-03 Chung-Ju Wu - - * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J. - * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J. - * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking. - * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J). - -2018-06-03 Chung-Ju Wu - - * common/config/nds32/nds32-common.c (nds32_option_optimization_table): - Disable -fdelete-null-pointer-checks for ELF toolchain. - -2018-06-02 Chung-Ju Wu - Kito Cheng - - * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt. - (nds32le-*-*, nds32be-*-*): Integrate checking process. - (nds32*-*-*): Add glibc and uclibc conditions. - * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New. - (TARGET_EXCEPT_UNWIND_INFO): Define. - * config/nds32/elf.h: New file. - * config/nds32/linux.h: New file. - * config/nds32/nds32-elf.opt: New file. - * config/nds32/nds32-linux.opt: New file. - * config/nds32/nds32-fp-as-gp.c - (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI. - * config/nds32/nds32.c (nds32_conditional_register_usage): Consider - TARGET_LINUX_ABI. - (nds32_asm_file_end): Ditto. - (nds32_print_operand): Ditto. - (nds32_insert_attributes): Ditto. - (nds32_init_libfuncs): New function. - (TARGET_HAVE_TLS): Define. - (TARGET_INIT_LIBFUNCS): Define. - * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax - spec content. - (TARGET_ELF): Apply different mcmodel setting. - (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has - been migrated into elf.h and linux.h files. - * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI. - * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI. - (mcmodel): The content has been migrated into nds32-elf.opt and - nds32-linux.opt files. - * config/nds32/t-elf: New file. - * config/nds32/t-linux: New file. - -2018-06-02 Chung-Ju Wu - Shiva Chen - - * config/nds32/constants.md (unspec_volatile_element): Add - UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END. - * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp - optimization. - * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare. - (make_pass_nds32_fp_as_gp): Declare. - * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one - optmization pass. - (nds32_asm_function_end_prologue): Remove unused asm output. - (nds32_asm_function_begin_epilogue): Remove unused asm output. - (nds32_asm_file_start): Output necessary fp_as_gp information. - (nds32_option_override): Adjust register usage. - (nds32_expand_prologue): Consider fp_as_gp situation. - (nds32_expand_prologue_v3push): Consider fp_as_gp situation. - * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p. - (epilogue): Ditto. - (return): Ditto. - (simple_return): Ditto. - (omit_fp_begin): Output special directive for fp_as_gp. - (omit_fp_end): Output special directive for fp_as_gp. - * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp, - mforbid-fp-as-gp): New options. - -2018-06-01 Mark Wielaard - - * dwarf2out.c (dwarf2out_finish): Remove generation of - DW_AT_loclists_base. - -2018-06-01 Eric Botcazou - - * gimple-ssa-store-merging.c: Include gimple-fold.h. - (struct store_immediate_info): Document BIT_INSERT_EXPR stores. - (struct merged_store_group): Add bit_insertion field. - (dump_char_array): Use standard hexadecimal format. - (merged_store_group::merged_store_group): Set bit_insertion to false. - (merged_store_group::apply_stores): Use optimal buffer size. Deal - with BIT_INSERT_EXPR stores. Move up code updating the mask and - also print the mask in the dump file. - (pass_store_merging::gate): Minor tweak. - (imm_store_chain_info::coalesce_immediate): Fix wrong association - of stores with groups in dump. Allow coalescing of BIT_INSERT_EXPR - stores with INTEGER_CST stores. - (count_multiple_uses) : New case. - (imm_store_chain_info::output_merged_store): Add try_bitpos variable - and use it throughout. Generate bit insertion sequences if need be. - (pass_store_merging::process_store): Remove redundant condition. - Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR. - -2018-06-01 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of - the 128-bit floating point types. Fix function comment. - -2018-06-01 Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md - (aarch64_simd_vec_unpack_lo_): Use UXTL and SXTL assembler - mnemonics. - (aarch64_simd_vec_unpack_hi_): Use UXTL2 and SXTL2 assembler - mnemonics. - -2018-06-01 Richard Sandiford - - PR tree-optimization/85989 - * gimple-ssa-backprop.c (backprop::m_visited_phis): New member - variable. - (backprop::intersect_uses): Check it when deciding whether this - is a backedge reference. - (backprop::process_block): Add each phi to m_visited_phis - after visiting it, then clear it at the end. - -2018-06-01 Richard Biener - - * tree-vectorizer.h (vect_dr_stmt): New function. - (vect_get_load_cost): Adjust. - (vect_get_store_cost): Likewise. - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): - Use vect_dr_stmt instead of DR_SMTT. - (vect_record_base_alignments): Likewise. - (vect_calculate_target_alignment): Likewise. - (vect_compute_data_ref_alignment): Likewise and make static. - (vect_update_misalignment_for_peel): Likewise. - (vect_verify_datarefs_alignment): Likewise. - (vector_alignment_reachable_p): Likewise. - (vect_get_data_access_cost): Likewise. Pass down - vinfo to vect_get_load_cost/vect_get_store_cost instead of DR. - (vect_get_peeling_costs_all_drs): Likewise. - (vect_peeling_hash_get_lowest_cost): Likewise. - (vect_enhance_data_refs_alignment): Likewise. - (vect_find_same_alignment_drs): Likewise. - (vect_analyze_data_refs_alignment): Likewise. - (vect_analyze_group_access_1): Likewise. - (vect_analyze_group_access): Likewise. - (vect_analyze_data_ref_access): Likewise. - (vect_analyze_data_ref_accesses): Likewise. - (vect_vfa_segment_size): Likewise. - (vect_small_gap_p): Likewise. - (vectorizable_with_step_bound_p): Likewise. - (vect_prune_runtime_alias_test_list): Likewise. - (vect_analyze_data_refs): Likewise. - (vect_supportable_dr_alignment): Likewise. - * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise. - (vect_gen_prolog_loop_niters): Likewise. - * tree-vect-loop.c (vect_analyze_loop_2): Likewise. - * tree-vect-patterns.c (vect_recog_bool_pattern): Do not - modify DR_STMT. - (vect_recog_mask_conversion_pattern): Likewise. - (vect_try_gather_scatter_pattern): Likewise. - * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info - to vect_get_store_cost. - (vect_get_store_cost): Get stmt_info instead of DR. - (vect_model_load_cost): Pass stmt_info to vect_get_load_cost. - (vect_get_load_cost): Get stmt_info instead of DR. - -2018-06-01 Richard Biener - - PR middle-end/86017 - * gimple-fold.c (var_decl_component_p): Also allow offsetted - vars wrapped in MEM_REFs. - -2018-06-01 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class): - Fix subreg tests so that we only return a choice between - GENERAL_REGS and FP_REGS if the original classes included both. - -2018-06-01 Richard Biener - - PR ipa/85960 - * tree-ssa-structalias.c (get_function_part_constraint): - Handle NULL fi->decl. - (find_func_aliases_for_call): Properly handle indirect - fi from direct call. - (find_func_clobbers): Likewise. - (ipa_pta_execute): Likewise. - (create_variable_info_for): For functions that are ifunc_resolver - resolve to a varinfo that contains the result of the resolver call. - (associate_varinfo_to_alias): Do not treat ifunc resolvers as - aliases. - -2018-05-31 Michael Collison - - * config/aarch64/aarch64.md: - (*fix_to_zero_extenddfdi2): New pattern. - * gcc.target/aarch64/fix_extend1.c: New testcase. - -2018-05-31 Qing Zhao - - PR middle-end/78809 - PR middle-end/83026 - * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ - and BUILT_IN_STRNCMP_EQ. - * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and - BUILT_IN_STRNCMP_EQ. - * gimple-fold.c (gimple_fold_builtin_string_compare): Add the - handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ. - (gimple_fold_builtin): Likewise. - * tree-ssa-strlen.c (compute_string_length): New function. - (determine_min_obsize): New function. - (handle_builtin_string_cmp): New function to handle calls to - string compare functions. - (strlen_optimize_stmt): Add handling to builtin string compare - calls. - * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): - Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ. - * tree.c (build_common_builtin_nodes): Add new defines of - BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ. - -2018-05-31 Jakub Jelinek - - PR target/85984 - * bb-reorder.c (pass_partition_blocks::gate): Return false for - functions with naked attribute. - -2018-05-31 Uros Bizjak - - * config/i386/sse.md (avx_vec_concat): - Substitute concat_tg_mode mode attribute with xtg_mode. - (avx512dq_broadcast_1): Ditto. - (concat_tg_mode): Remove mode attribute. - -2018-05-31 Martin Sebor - - PR c/82063 - * calls.c (alloc_max_size): Correct a logic error/typo. - Treat excessive arguments as infinite. Warn for invalid arguments. - * doc/invoke.texi (-Walloc-size-larger-than): Update. - -2018-05-31 H.J. Lu - - PR target/85829 - * config/i386/x86-tune.def: Re-enable partial_reg_dependency - and movx for Haswell. - -2018-05-31 Chung-Lin Tang - Cesar Philippidis - - PR middle-end/85879 - * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true' - when emitting error on private/firstprivate reductions. - * omp-low.c (lower_omp_target): Avoid reference-type processing - on pointers for firstprivate clause. - -2018-05-31 Sameera Deshpande - - * config/aarch64/aarch64-simd-builtins.def (ld1x3): New. - (st1x2): Likewise. - (st1x3): Likewise. - * config/aarch64/aarch64-simd.md - (aarch64_ld1x3): New pattern. - (aarch64_ld1_x3_): Likewise - (aarch64_st1x2): Likewise - (aarch64_st1_x2_): Likewise - (aarch64_st1x3): Likewise - (aarch64_st1_x3_): Likewise - * config/aarch64/arm_neon.h (vld1_u8_x3): New function. - (vld1_s8_x3): Likewise. - (vld1_u16_x3): Likewise. - (vld1_s16_x3): Likewise. - (vld1_u32_x3): Likewise. - (vld1_s32_x3): Likewise. - (vld1_u64_x3): Likewise. - (vld1_s64_x3): Likewise. - (vld1_f16_x3): Likewise. - (vld1_f32_x3): Likewise. - (vld1_f64_x3): Likewise. - (vld1_p8_x3): Likewise. - (vld1_p16_x3): Likewise. - (vld1_p64_x3): Likewise. - (vld1q_u8_x3): Likewise. - (vld1q_s8_x3): Likewise. - (vld1q_u16_x3): Likewise. - (vld1q_s16_x3): Likewise. - (vld1q_u32_x3): Likewise. - (vld1q_s32_x3): Likewise. - (vld1q_u64_x3): Likewise. - (vld1q_s64_x3): Likewise. - (vld1q_f16_x3): Likewise. - (vld1q_f32_x3): Likewise. - (vld1q_f64_x3): Likewise. - (vld1q_p8_x3): Likewise. - (vld1q_p16_x3): Likewise. - (vld1q_p64_x3): Likewise. - (vst1_s64_x2): Likewise. - (vst1_u64_x2): Likewise. - (vst1_f64_x2): Likewise. - (vst1_s8_x2): Likewise. - (vst1_p8_x2): Likewise. - (vst1_s16_x2): Likewise. - (vst1_p16_x2): Likewise. - (vst1_s32_x2): Likewise. - (vst1_u8_x2): Likewise. - (vst1_u16_x2): Likewise. - (vst1_u32_x2): Likewise. - (vst1_f16_x2): Likewise. - (vst1_f32_x2): Likewise. - (vst1_p64_x2): Likewise. - (vst1q_s8_x2): Likewise. - (vst1q_p8_x2): Likewise. - (vst1q_s16_x2): Likewise. - (vst1q_p16_x2): Likewise. - (vst1q_s32_x2): Likewise. - (vst1q_s64_x2): Likewise. - (vst1q_u8_x2): Likewise. - (vst1q_u16_x2): Likewise. - (vst1q_u32_x2): Likewise. - (vst1q_u64_x2): Likewise. - (vst1q_f16_x2): Likewise. - (vst1q_f32_x2): Likewise. - (vst1q_f64_x2): Likewise. - (vst1q_p64_x2): Likewise. - (vst1_s64_x3): Likewise. - (vst1_u64_x3): Likewise. - (vst1_f64_x3): Likewise. - (vst1_s8_x3): Likewise. - (vst1_p8_x3): Likewise. - (vst1_s16_x3): Likewise. - (vst1_p16_x3): Likewise. - (vst1_s32_x3): Likewise. - (vst1_u8_x3): Likewise. - (vst1_u16_x3): Likewise. - (vst1_u32_x3): Likewise. - (vst1_f16_x3): Likewise. - (vst1_f32_x3): Likewise. - (vst1_p64_x3): Likewise. - (vst1q_s8_x3): Likewise. - (vst1q_p8_x3): Likewise. - (vst1q_s16_x3): Likewise. - (vst1q_p16_x3): Likewise. - (vst1q_s32_x3): Likewise. - (vst1q_s64_x3): Likewise. - (vst1q_u8_x3): Likewise. - (vst1q_u16_x3): Likewise. - (vst1q_u32_x3): Likewise. - (vst1q_u64_x3): Likewise. - (vst1q_f16_x3): Likewise. - (vst1q_f32_x3): Likewise. - (vst1q_f64_x3): Likewise. - (vst1q_p64_x3): Likewise. - -2018-05-30 Jozef Lawrynowicz - - * config/msp430/msp430.c (msp430_output_labelref): Prepend - user_label_prefix to name. - - * tree-core.h: Update comment about the format of NAME string - passed to handler in attribute_spec. - - * config/msp430/msp430.md: Remove erroneous subreg expression from - zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on - zero_extend{q,h}isi2. - -2018-05-30 Borislav Petkov - - * doc/extend.texi: Document some architecture specific - constraints and sort entries. - -2018-05-30 Martin Sebor - - PR middle-end/85369 - * builtins.c (expand_builtin_stpcpy_1): New function. - (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg - only if the former succeeds. - -2018-05-31 Sameera Deshpande - - * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4 - in saphira. - -2018-05-30 Jan Hubicka - - * doc/invoke.texi (-flinker-output): Document - -2018-05-30 Jan Hubicka - - * passes.c (ipa_write_summaries): Only modify statements if body - is in memory. - * cgraphunit.c (ipa_passes): Also produce intermeidate code when - incrementally linking. - (ipa_passes): Likewise. - * lto-cgraph.c (lto_output_node): When incrementally linking do not - pass down resolution info. - * common.opt (flag_incremental_link): Update info. - * gcc.c (plugin specs): Turn flinker-output=* to - -plugin-opt=-linker-output-known - * toplev.c (compile_file): Also cut compilation when doing incremental - link. - * flag-types. (enum lto_partition_model): Add - LTO_LINKER_OUTPUT_NOLTOREL. - (invoke.texi): Add -flinker-output docs. - * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental - link same way as WPA; do not stream in dead initializers. - - * dwarf2out.c (dwarf2out_die_ref_for_decl, - darf2out_register_external_decl): Support incremental link. - -2018-05-30 Jan Hubicka - - * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_. - -2018-05-30 Jan Hubicka - - * lto-wrapper.c (debug_objcopy): Add rename parameter; pass - it down to simple_object_copy_lto_debug_sections. - (run_gcc): Determine incremental LTO link time and configure - lto1 into non-wpa mode, disable renaming of debug sections. - -2018-05-30 Kelvin Nilsen - - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove - descriptions of various incorrectly documented functions. - -2018-05-30 Andre Vieira - - Revert: - * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make - address check not strict. - -2018-05-30 Richard Biener - - PR tree-optimization/85964 - * tracer.c (better_p): Drop initialized count check, we only - call the function with initialized counts now. - (find_best_successor): Do find a best edge if one - has uninitialized count. - (find_best_predecessor): Likewise. Do BB frequency check only - if count is initialized. - -2017-05-30 Jackson Woodruff - - * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New. - (aarch64_ldrstr_offset_compare): New. - (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all - load/store orderings. - (aarch64_gen_adjusted_ldpstp): Likewise. - -2018-05-30 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class): - Check for subset of GENERAL_REGS and FP_REGS. - * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of - r=w alternative. - -2018-05-30 Richard Sandiford - - * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p - and wi::to_poly_offset. Add the current offset and then check - whether the sum fits, rather than using an unchecked addition of - a checked term. Check for a shwi rather than a uhwi. - * expr.c (get_bit_range): Use tree_to_poly_uint64. - (store_constructor): Use poly_int_tree_p. - (expand_expr_real_1): Likewise. - * function.c (assign_temp): Likewise. - * fold-const.c (const_binop): Use poly_int_tree_p and - wi::to_poly_offset. - (fold_indirect_ref_1): Likewise. Use multiple_p to attempt an exact - division. - * ipa-icf-gimple.c (func_checker::compare_operand): Use - to_poly_offset for MEM offsets. - * ipa-icf.c (sem_variable::equals): Likewise. - * stor-layout.c (compute_record_mode): Use poly_int_tree_p. - * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use - wi::to_poly_offset for BIT_FIELD_REF offsets. - (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and - wi::to_poly_offset. - * var-tracking.c (emit_note_insn_var_location): Use - tree_to_poly_uint64. - -2018-05-29 Jim Wilson - - * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo. - -2018-05-29 Uros Bizjak - - PR target/85950 - * config/i386/i386.md (l2): - Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q} - sequence. - (sse4_1_round2): Use nonimmediate_operand - for operand 1 predicate. - -2018-05-29 Martin Sebor - Richard Biener - - PR testsuite/85888 - * calls.c (get_size_range): Call determine_value_range instead - of get_value_range.. - * tree-vrp.h (determine_value_range): Declared new function. - * tree-vrp.c (determine_value_range_1, determine_value_range): New. - -2018-05-29 Richard Biener - - * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make - sure to use non-pattern stmts for get_earlier_stmt arguments. - * tree-vectorizer.h (get_earlier_stmt): Assert we do not get - called on pattern stmts. - (get_later_stmt): Likewise. - -2018-05-29 Martin Liska - - PR gcov-profile/85759 - * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR - env variables. - -2018-05-29 Jakub Jelinek - - * tree-cfg.c (verify_gimple_assign_unary): Add checking for - VEC_UNPACK_*_EXPR. - (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for - VEC_PACK_*_EXPR. - - PR target/85918 - * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR, - VEC_PACK_FLOAT_EXPR): New tree codes. - * tree-pretty-print.c (op_code_prio): Handle - VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR. - (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR, - VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR. - * tree-inline.c (estimate_operator_cost): Likewise. - * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR. - * fold-const.c (const_binop): Likewise. - (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and - VEC_UNPACK_FIX_TRUNC_LO_EXPR. - * tree-cfg.c (verify_gimple_assign_unary): Likewise. - (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR. - * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR, - VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR. - * expr.c (expand_expr_real_2): Likewise. - * optabs.def (vec_packs_float_optab, vec_packu_float_optab, - vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab, - vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New - optabs. - * optabs.c (expand_widen_pattern_expr): For - VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use - sign from result type rather than operand's type. - (expand_binop_directly): For vec_packu_float_optab and - vec_packs_float_optab allow result type to be different from operand's - type. - * optabs-tree.c (optab_for_tree_code): Handle - VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and - VEC_PACK_FLOAT_EXPR. Formatting fixes. - * tree-vect-generic.c (expand_vector_operations_1): Handle - VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and - VEC_PACK_FLOAT_EXPR. - * tree-vect-stmts.c (supportable_widening_operation): Handle - FIX_TRUNC_EXPR. - (supportable_narrowing_operation): Handle FLOAT_EXPR. - * config/i386/i386.md (fixprefix, floatprefix): New code attributes. - * config/i386/sse.md (*floatv2div2sf2): Rename to ... - (floatv2div2sf2): ... this. Formatting fix. - (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New - mode attributes. - (vec_pack_float_): New expander. - (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode - attributes. - (vec_unpack_fix_trunc_lo_, - vec_unpack_fix_trunc_hi_): New expanders. - * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m}, - vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m}, - vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}): - Document. - * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR, - VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description. - (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR, - VEC_PACK_FLOAT_EXPR): Document. - -2018-05-29 Richard Biener - - * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos - member. - (stmt_vec_info_vec): Make pointer. - (init_stmt_vec_info_vec): Remove. - (free_stmt_vec_info_vec): Likewise. - (set_stmt_vec_info_vec): New function. - (free_stmt_vec_infos): Likewise. - (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection. - (set_vinfo_for_stmt): Likewise. - (get_earlier_stmt): Likewise. - (get_later_stmt): Likewise. - * tree-vectorizer.c (stmt_vec_info_vec): Make pointer. - (vec_info::vec_info): Allocate stmt_vec_infos and set the global. - (vec_info::~vec_info): Free stmt_vec_infos. - (vectorize_loops): Set the global stmt_vec_info_vec to NULL. - Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls. - (pass_slp_vectorize::execute): Likewise. - * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove. - (free_stmt_vec_info_vec): Likewise. - (set_stmt_vec_info_vec): New function. - (free_stmt_vec_infos): Likewise. - * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set - the global stmt_vec_info_vec. - * tree-parloops.c (gather_scalar_reductions): Use - set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local - vector. - -2018-05-29 Richard Biener - - * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE. - -2018-05-29 Martin Liska - David Malcolm - - * vec.c (test_reverse): New. - (vec_c_tests): Add new test. - * vec.h (vl_ptr>::reverse): New function. - -2018-05-29 Gerald Pfeifer - - * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported. - - * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5 - and later. - -2018-05-28 Bernd Edlinger - - * tree-dump.c (dump_node): Use splay_tree_delete_pointers. - -2018-05-28 Richard Biener - - PR tree-optimization/85933 - * tree-vect-data-refs.c (vect_record_base_alignments): Only - look at stmts marked as vectorizable. - -2018-05-28 Richard Biener - - PR tree-optimization/85934 - * tree-vect-generic.c (expand_vector_operations_1): Hoist - vector boolean check before scalar optimization. - -2018-05-28 Jakub Jelinek - - * doc/invoke.texi (ARM Options): Use @item instead of @itemx - for armv5te. - -2018-05-28 Mark Wielaard - - * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2 - if it is an expression containing a minus sign. - -2018-05-27 John David Anglin - - * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0. - -2018-05-27 Paul Koning - - * config/pdp11/pdp11.md (truncsihi2): Remove. - -2018-05-27 Monk Chiang - Chung-Ju Wu - - * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns - implementation. - (unaligned_store_dw): Ditto. - * config/nds32/nds32-memory-manipulation.c - (nds32_expand_movmemsi_loop_known_size): Refactoring implementation. - (nds32_gen_dup_4_byte_to_word_value): Rename to ... - (nds32_gen_dup_4_byte_to_word_value_aux): ... this. - (emit_setmem_word_loop): Rename to ... - (emit_setmem_doubleword_loop): ... this. - (nds32_gen_dup_4_byte_to_word_value): New function. - (nds32_gen_dup_8_byte_to_double_word_value): New function. - (nds32_expand_setmem_loop): Refine implementation. - (nds32_expand_setmem_loop_v3m): Ditto. - * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New - pattern. - -2018-05-27 Chung-Ju Wu - - * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns. - -2018-05-27 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue". - (nds32_init_machine_status): Initialize machine->attr_naked_p and - machine->attr_no_prologue_p. - (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes. - (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes. - (nds32_expand_epilogue): Consider attr_naked_p. - (nds32_expand_epilogue_v3pop): Likewise. - (nds32_can_use_return_insn): Likewise. - * config/nds32/nds32.h (machine_function): Add attr_naked_p and - attr_no_prologue_p fields. - * config/nds32/nds32.opt (mret-in-naked-func): New option. - -2018-05-27 Jakub Jelinek - - PR target/85918 - * config/i386/i386.md (fixunssuffix, floatunssuffix): New code - attributes. - * config/i386/sse.md - (float2): - Rename to ... - (float2): - ... this. - (float2): - Rename to ... - (float2): - ... this. - (*floatv2div2sf2): Rename to ... - (*floatv2div2sf2): ... this. - (floatv2div2sf2_mask): Rename to ... - (floatv2div2sf2_mask): ... this. - (*floatv2div2sf2_mask_1): Rename to ... - (*floatv2div2sf2_mask_1): ... this. - (fix_truncv8dfv8si2): Rename - to ... - (fix_truncv8dfv8si2): - ... this. - (fix_trunc2): - Rename to ... - (fix_trunc2): - ... this. - (fix_trunc2): - Rename to ... - (fix_trunc2): - ... this. - (fix_truncv2sfv2di2): Rename to ... - (fix_truncv2sfv2di2): ... this. - (vec_pack_ufix_trunc_): Use gen_fixuns_truncv8dfv8si2 instead of - gen_ufix_truncv8dfv8si2. - * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask, - __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask, - __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask, - __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask, - __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask, - __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask, - __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask): - Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names. - -2018-05-24 H.J. Lu - - PR target/85900 - PR target/85345 - * varasm.c (assemble_alias): Lookup ifunc attribute on error. - -2018-05-25 Jim Wilson - - * config/riscv/riscv-protos.h (riscv_epilogue_uses): New. - * config/riscv/riscv.c (struct machine_function): Add - interrupt_handler_p and attribute_checked_p fields. - (riscv_attribute_table): Add interrupt. - (riscv_interrupt_type_p): New. - (riscv_save_reg_p): Save extra regs for interrupt handler. - (riscv_use_save_libcall): Return false for interrupt handler. - (riscv_first_stack_step): Add forward declaration. - (riscv_compute_frame_info): New local interrupt_save_t1. Set it - for interrupt handler with large frame. Use it for saved reg list. - (riscv_expand_prologue): Move flag_stack_usage_info support to - eliminate duplication. - (riscv_expand_epilogue): Generate mret for interrupt handler. - (riscv_epilogue_uses): New. - (riscv_can_use_return_insn): Return false for interrupt handler. - (riscv_function_ok_for_sibcall): Likewise. - (riscv_set_current_function): Add interrupt handler support. - * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses. - * config/riscv/riscv.md (UNSPECV_MRET): New. - (GP_REGNUM): New. - (riscv_frflags, riscv_fsflags): Use tab after opcode. - (riscv_mret): New. - * doc/extend.texi (RISC-V Function Attributes) : New. - -2018-05-25 Bill Schmidt - - PR tree-optimization/85712 - * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if - this candidate has already been replaced in-situ by a copy. - -2018-05-25 Jason Merrill - - PR c++/80485 - inline function non-zero address. - * symtab.c (nonzero_address): Check DECL_COMDAT. - -2018-05-25 Uros Bizjak - - PR target/83628 - * config/alpha/alpha.md (ashlsi3): New insn pattern. - (*ashlsi_se): Rename from *ashldi_se. Define as sign - extension of SImode operation. Use const123_operand predicate. - (*saddsi_1): Remove. - (*saddl_se_1): Ditto. - (*ssubsi_1): Ditto. - (*ssubl_se_1): Ditto. - * config/alpha/predicates.md (const123_operand): New predicate. - * config/alpha/constraints.md (P): Use IN_RANGE. - -2018-05-25 Richard Biener - - * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter, - defaulted to true. - (ref_maybe_used_by_stmt_p): Likewise. - (stmt_may_clobber_ref_p): Likewise. - (stmt_may_clobber_ref_p_1): Likewise. - * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter - and pass it along. - (ref_maybe_used_by_stmt_p): Likewise. - (stmt_may_clobber_ref_p): Likewise. - (stmt_may_clobber_ref_p_1): Likewise. - * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use - the alias oracle to disambiguate DRs with stmts DR analysis - couldn't handle. - (vect_analyze_data_refs): Do not give up on not analyzable - DRs for BB vectorization. Remove code truncating the dataref - vector. - -2018-05-25 Jakub Jelinek - - PR target/85832 - * config/i386/sse.md (_eq3_1): - Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW - in test instead of TARGET_AVX512F for VI12_AVX512VL iterator. - -2018-05-25 Richard Biener - - * tree-vect-data-refs.c (vect_find_stmt_data_reference): New - function, combining stmt data ref gathering and fatal analysis - parts. - (vect_analyze_data_refs): Remove now redudnant code and simplify. - * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from - vect_analyze_loop_2 and use vect_find_stmt_data_reference. - * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference. - * tree-vectorizer.h (vect_find_stmt_data_reference): Declare. - -2018-05-25 Bin Cheng - - PR tree-optimization/85720 - * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge - SCC if all partitions are builtins. - (version_loop_by_alias_check): New parameter. Generate cancelable - runtime alias check if all partitions are builtins. - (distribute_loop): Update call to above function. - -2018-05-25 Bin Cheng - - * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files. - (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c. - (parm_default_def_partition_arg): Ditto. - (set_parm_default_def_partition): Ditto. - (get_parm_default_def_partitions): Ditto and make it static. - (get_undefined_value_partitions): Ditto and make it static. - (remove_ssa_form): Refactor call to init_var_map here. - * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range - computation for loop region. - (coalesce_partitions, compute_optimized_partition_bases): Ditto. - (register_default_def): Delete. - (for_all_parms, create_default_def): Move to tree-outof-ssa.c. - (parm_default_def_partition_arg): Ditto. - (set_parm_default_def_partition): Ditto. - (get_parm_default_def_partitions): Ditto and make it static. - (get_undefined_value_partitions): Ditto and make it static. - (coalesce_with_default, coalesce_with_default): Update comment. - (create_coalesce_list_for_region): New func factored out from - create_outofssa_var_map. - (populate_coalesce_list_for_outofssa): New func factored out from - create_outofssa_var_map and coalesce_ssa_name. - (create_outofssa_var_map): Delete. - (coalesce_ssa_name): Refactor to support live range computation. - * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl. - (get_parm_default_def_partitions): Delete. - (get_undefined_value_partitions): Ditto. - * tree-ssa-live.c (init_var_map, delete_var_map): Support live range - computation for loop region. - (new_tree_live_info, loe_visit_block): Ditto. - (live_worklist, set_var_live_on_entry): Ditto. - (calculate_live_on_exit, verify_live_on_entry): Ditto. - * tree-ssa-live.h (struct _var_map): New fields. - (init_var_map): Change decl. - (region_contains_p): New. - -2018-05-25 Bin Cheng - - * tree-ssa-live.h (live_merge_and_clear): Delete. - -2018-05-25 Richard Biener - - PR c++/85912 - * tree-dump.c (dequeue_and_dump): Remove access to removed - operand 2 of a SWITCH_EXPR. - -2018-05-25 Richard Sandiford - - * doc/sourcebuild.texi (vect_double_cond_arith): Include - multiplication and division. - * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m}) - (cond_udiv@var{m}, cond_umod@var{m}): Document. - * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab) - (cond_udiv_optab, cond_umod_optab): New optabs. - * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD) - (IFN_COND_RDIV): New internal functions. - * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR, - TRUNC_MOD_EXPR and RDIV_EXPR. - * match.pd (UNCOND_BINARY, COND_BINARY): Handle them. - * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV): - New unspecs. - (SVE_INT_BINARY): Include mult. - (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV. - (optab, sve_int_op): Handle mult. - (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and - UNSPEC_COND_DIV. - * config/aarch64/aarch64-sve.md (cond_): New pattern - for SVE_INT_BINARY_SD. - -2018-05-25 Richard Sandiford - - * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator. - (optab, sve_int_op): Handle div and udiv. - * config/aarch64/aarch64-sve.md (3): New expander - for SVE_INT_BINARY_SD. - (*3): New insn for the same. - -2018-05-25 Richard Sandiford - - * tree-vect-patterns.c: Include predict.h. - (vect_recog_divmod_pattern): Restrict check for division support - to when optimizing for size. - -2018-05-25 Richard Sandiford - - * doc/sourcebuild.texi (vect_double_cond_arith: Document. - * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4. - (gimple_match_op::gimple_match_op): Add an overload for 4 operands. - (gimple_match_op::set_op): Likewise. - (gimple_resimplify4): Declare. - * genmatch.c (get_operand_type): Handle CFN_COND_* functions. - (expr::gen_transform): Likewise. - (decision_tree::gen): Generate a simplification routine for 4 operands. - * gimple-match-head.c (gimple_simplify): Add an overload for - 4 operands. In the top-level function, handle up to 4 call - arguments and call gimple_resimplify4. - (gimple_resimplify4): New function. - (build_call_internal): Pass a fourth operand. - (maybe_push_to_seq): Likewise. - * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists. - Fold VEC_COND_EXPRs of an operation and a default value into - an IFN_COND_* function if possible. - * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN): - New unspecs. - (SVE_COND_FP_BINARY): Include them. - (optab, sve_fp_op): Handle them. - (SVE_INT_BINARY_REV): New code iterator. - (SVE_COND_FP_BINARY_REV): New int iterator. - (commutative): New int attribute. - * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op): - Declare. - * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New - function. - * config/aarch64/aarch64-sve.md (cond_): Use it. - (*cond_): New patterns for reversed operands. - -2018-05-25 Richard Biener - - * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove. - (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info. - (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info. - (STMT_VINFO_GROUPED_ACCESS): Adjust. - * tree-vect-data-refs.c (everywhere): Adjust users. - * tree-vect-loop.c (everywhere): Likewise. - * tree-vect-slp.c (everywhere): Likewise. - * tree-vect-stmts.c (everywhere): Likewise. - * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise. - -2018-05-25 Rainer Orth - - * configure.ac (gcc_cv_as_section_has_e): Move to common section. - Rename to... - (gcc_cv_as_section_exclude): ... this. - Try Solaris as #exclude syntax. - * configure: Regenerate. - * config.in: Regenerate. - * config/i386/i386.c (i386_solaris_elf_named_section): Handle - SECTION_EXCLUDE. - * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section) - [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE. - - * varasm.c (default_elf_asm_named_section): Don't check if - HAVE_GAS_SECTION_EXCLUDE is defined. - -2018-05-25 Richard Sandiford - - * doc/md.texi: Update the documentation of the cond_* optabs - to mention the new final operand. Fix GET_MODE_NUNITS call. - Describe the scalar case too. - * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left. - * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands - instead of 2. - (expand_cond_binary_optab_fn): Expect 4 operands instead of 3. - (get_conditional_internal_fn): Update comment. - * tree-vect-loop.c (vectorizable_reduction): Pass the original - accumulator value as a final argument to conditional functions. - * config/aarch64/aarch64-sve.md (cond_): Turn into - a define_expand and add an "else" operand. Assert for now that - the else operand is equal to operand 2. Use SVE_INT_BINARY and - SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP. - (*cond_): New patterns. - * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX) - (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR) - (UNSPEC_COND_EOR): Delete. - (optab): Remove associated mappings. - (SVE_INT_BINARY): New code iterator. - (sve_int_op): Remove int attribute and add "minus" to the code - attribute. - (SVE_COND_INT_OP): Delete. - (SVE_COND_FP_OP): Rename to... - (SVE_COND_FP_BINARY): ...this. - -2018-05-25 Richard Sandiford - - * optabs.c (can_reuse_operands_p): New function. - (maybe_legitimize_operands): Try to reuse the results for - earlier operands. - -2018-05-24 Uros Bizjak - - * config/i386/sse.md (cvtusi264): - Add {q} suffix to insn mnemonic. - -2018-05-23 Jozef Lawrynowicz - - * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define. - (msp430_warn_func_return): New. - -2018-05-24 Roger Sayle - - * fold-const.c (tree_nonzero_bits): New function. - * fold-const.h (tree_nonzero_bits): Likewise. - * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and - friends. POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc. - -2018-05-24 H.J. Lu - - PR target/85900 - PR target/85345 - * varasm.c (assemble_alias): Check ifunc_resolver only on - FUNCTION_DECL. - -2018-05-24 Uros Bizjak - - PR target/85903 - * config/i386/sse.md (movdi_to_sse): Do not generate pseudo - when memory input operand is handled. - -2018-05-24 Luis Machado - - * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static - global. - (qdf24xx_tunings) : Set to qdf24xx_addrcost_table. - -2018-05-24 Richard Sandiford - - * match.pd: Delay FMA folds until after vectorization. - -2018-05-24 Andre Vieira - - PR target/83009 - * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make - address check not strict. - -2018-05-24 Richard Sandiford - - * gimple-match.h (gimple_match_op): New class. - (mprts_hook): Replace parameters with a gimple_match_op *. - (maybe_build_generic_op): Likewise. - (gimple_simplified_result_is_gimple_val): Replace parameters with - a const gimple_match_op *. - (gimple_simplify): Replace code_helper * and tree * parameters with - a gimple_match_op * parameter. - (gimple_resimplify1): Replace code_helper *, tree and tree * - parameters with a gimple_match_op * parameter. - (gimple_resimplify2): Likewise. - (gimple_resimplify3): Likewise. - (maybe_push_res_to_seq): Replace code_helper, tree and tree * - parameters with a gimple_match_op * parameter. - * gimple-match-head.c (gimple_simplify): Change prototypes of - auto-generated functions to take a gimple_match_op * instead of - separate code_helper * and tree * parameters. Make the same - change in the top-level overload and update calls to the - gimple_resimplify routines. Update calls to the auto-generated - functions and to maybe_push_res_to_seq in the publicly-facing - operation-specific gimple_simplify overloads. - (gimple_match_op::MAX_NUM_OPS): Define. - (gimple_resimplify1): Replace rcode and ops with a single res_op - parameter. Update call to gimple_simplify. - (gimple_resimplify2): Likewise. - (gimple_resimplify3): Likewise. - (mprts_hook): Replace parameters with a gimple_match_op *. - (maybe_build_generic_op): Likewise. - (build_call_internal): Replace type, nargs and ops with - a gimple_match_op *. - (maybe_push_res_to_seq): Replace res_code, type and ops parameters - with a single gimple_match_op *. Update calls to mprts_hook, - build_call_internal and gimple_simplified_result_is_gimple_val. - Factor out code that is common to the tree_code and combined_fn cases. - * genmatch.c (expr::gen_transform): Replace tem_code and - tem_ops with a gimple_match_op called tem_op. Update calls - to the gimple_resimplify functions and maybe_push_res_to_seq. - (dt_simplify::gen_1): Manipulate res_op instead of res_code and - res_ops. Update call to the gimple_resimplify functions. - (dt_simplify::gen): Pass res_op instead of res_code and res_ops. - (decision_tree::gen): Make the functions take a gimple_match_op * - called res_op instead of separate res_code and res_ops parameters. - Update call accordingly. - * gimple-fold.c (replace_stmt_with_simplification): Replace rcode - and ops with a single res_op parameter. Update calls to - maybe_build_generic_op and maybe_push_res_to_seq. - (fold_stmt_1): Update calls to gimple_simplify and - replace_stmt_with_simplification. - (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify - and gimple_simplified_result_is_gimple_val. - * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to - gimple_simplify. - * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters - with a gimple_match_op *. - (vn_nary_build_or_lookup): Likewise. Update call to - vn_nary_build_or_lookup_1. - (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a - gimple_match_op *. Update calls to the gimple_resimplify routines - and to gimple_simplified_result_is_gimple_val. - (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1. - Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3. - (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup. - (visit_nary_op): Likewise. - (visit_reference_op_load): Likewise. - -2018-05-23 Luis Machado - - * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type - modifier for printing the step amount. - -2018-05-23 Jozef Lawrynowicz - - PR target/78849 - * tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN - types. - -2018-05-23 Segher Boessenkool - - * doc/sourcebuild.texi (Endianness): New subsubsection. - -2018-05-23 Luis Machado - - * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) - : New const bool field. - * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include - prefetch_dynamic_strides. - (exynosm1_prefetch_tune): Likewise. - (thunderxt88_prefetch_tune): Likewise. - (thunderx_prefetch_tune): Likewise. - (thunderx2t99_prefetch_tune): Likewise. - (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to - false. - (aarch64_override_options_internal): Update to set - PARAM_PREFETCH_DYNAMIC_STRIDES. - * doc/invoke.texi (prefetch-dynamic-strides): Document new option. - * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New. - * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define. - * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for - prefetch-dynamic-strides setting. - -2018-05-23 Luis Machado - - * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) - : New const int field. - * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include - minimum_stride field defaulting to -1. - (exynosm1_prefetch_tune): Likewise. - (thunderxt88_prefetch_tune): Likewise. - (thunderx_prefetch_tune): Likewise. - (thunderx2t99_prefetch_tune): Likewise. - (qdf24xx_prefetch_tune) : Set to 2048. - : Set to 3. - (aarch64_override_options_internal): Update to set - PARAM_PREFETCH_MINIMUM_STRIDE. - * doc/invoke.texi (prefetch-minimum-stride): Document new option. - * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New. - * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define. - * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if - stride is constant and is below the minimum stride threshold. - -2018-05-23 Kyrylo Tkachov - - * config/arm/arm-cpus.in (mode26): Delete. - (armv4): Delete mode26 reference. - * config/arm/arm.c (arm_configure_build_target): Delete use of - isa_bit_mode26. - -2018-05-23 Uros Bizjak - - * config/i386/i386.md (*floatuns2_avx512): - New insn pattern. - (floatunssi2): Also enable for AVX512F and TARGET_SSE_MATH. - Rewrite expander pattern. Emit gen_floatunssi2_i387_with_xmm - for non-SSE modes. - (floatunsdisf2): Rewrite expander pattern. Hanlde TARGET_AVX512F. - (floatunsdidf2): Ditto. - -2018-05-23 Uros Bizjak - - * config/i386/i386.md (fixuns_truncdi2): New insn pattern. - (fixuns_truncsi2_avx512f): Ditto. - (*fixuns_truncsi2_avx512f_zext): Ditto. - (fixuns_truncsi2): Also enable for AVX512F and TARGET_SSE_MATH. - Emit fixuns_truncsi2_avx512f for AVX512F targets. - -2018-05-23 Alexander Monakov - - PR rtl-optimization/79985 - * df-scan.c (df_insn_refs_collect): Remove special case for - global registers and asm statements. - -2018-05-23 Alexander Monakov - - * extend.texi (Global Register Variables): Rewrite the bullet list. - Note that the register is available for allocation. Note that access - via inline asm must use constraints. Add note about async-signal - handlers. Remove paragraph about automagic register selection. - -2018-05-23 Richard Biener - - * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction - of fixed offset from memset VN. - -2018-05-23 Bill Schmidt - - * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add - first_interp field. - (alloc_cand_and_find_basis): Initialize first_interp field. - (slsr_process_mul): Modify first_interp field. - (slsr_process_add): Likewise. - (slsr_process_cast): Modify first_interp field for each new - interpretation. - (slsr_process_copy): Likewise. - (dump_candidate): Dump first_interp field. - (replace_mult_candidate): Process all interpretations, not just - subsequent ones. - (replace_rhs_if_not_dup): Likewise. - (replace_one_candidate): Likewise. - -2018-05-23 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_use_frame_pointer): - Add new boolean. - (aarch64_needs_frame_chain): New function. - (aarch64_parse_override_string): Set aarch64_use_frame_pointer. - -2018-05-23 Sudakshina Das - - PR target/84882 - * common/config/aarch64/aarch64-common.c (aarch64_handle_option): - Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags. - * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative. - * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg - as true for strict-align. - (aarch64_can_inline_p): Perform checks even when callee has no - attributes to check for strict alignment. - * doc/extend.texi (AArch64 Function Attributes): Document - no-strict-align. - * doc/invoke.texi: (AArch64 Options): Likewise. - -2018-05-23 Richard Sandiford - - PR tree-optimization/85853 - * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out - the handling of the root of the node to... - (vect_slp_analyze_node_operations_1): ...this new function, - and run the whole thing with the child nodes' def types - set according to their SLP node's def type. - -2018-05-23 Richard Biener - - PR middle-end/85874 - * tree-data-ref.c (create_runtime_alias_checks): Defer - and ignore overflow warnings. - -2018-05-23 Yury Gribov - - PR tree-optimization/85822 - * tree-vrp.c (is_masked_range_test): Fix handling of negative - constants. - -2018-05-23 Richard Biener - - * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary - memset constants via native_interpret_expr. - -2018-05-22 H.J. Lu - - PR target/85345 - * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc - attribute. - (cgraph_node::create_alias): Likewise. - (cgraph_node::get_availability): Check ifunc_resolver instead - of looking up ifunc attribute. - * cgraphunit.c (maybe_diag_incompatible_alias): Likewise. - * varasm.c (do_assemble_alias): Likewise. - (assemble_alias): Likewise. - (default_binds_local_p_3): Likewise. - * cgraph.h (cgraph_node): Add ifunc_resolver. - (cgraph_node::only_called_directly_or_aliased_p): Return false - for IFUNC resolver. - * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc - attribute. - * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver - is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)). - (symtab_node::binds_to_current_def_p): Check ifunc_resolver - instead of looking up ifunc attribute. - -2018-05-22 Luis Machado - - * config/aarch64/aarch64.md (*ashift_extv_bfiz): New pattern. - -2018-05-22 Martin Sebor - - PR middle-end/85359 - * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg - only when expasion succeeds. - (expand_builtin_strcmp): Same. - (expand_builtin_strncmp): Same. - -2018-05-22 Martin Sebor - - * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment. - -2018-05-22 Jackson Woodruff - Kyrylo Tkachov - - * config/aarch64/aarch64-ldpstp.md: Replace uses of - aarch64_mem_pair_operand with memory_operand and delete operand swapping - code. - * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp): - Add check for legitimate_address. - (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate. - (aarch64_swap_ldrstr_operands): New. - * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands): - Define prototype. - -2018-05-22 Jackson Woodruff - Kyrylo Tkachov - - * config/aarch64/aarch64.md: New patterns to generate stp - and ldp. - (store_pair_sw, store_pair_dw): New patterns to generate stp for - single words and double words. - (load_pair_sw, load_pair_dw): Likewise. - (store_pair_sf, store_pair_df, store_pair_si, store_pair_di): - Delete. - (load_pair_sf, load_pair_df, load_pair_si, load_pair_di): - Delete. - * config/aarch64/aarch64-ldpstp.md: Modify peephole - for different mode ldpstp and add peephole for merged zero stores. - Likewise for loads. - * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp): - Add size check. - (aarch64_gen_store_pair): Rename calls to match new patterns. - (aarch64_gen_load_pair): Rename calls to match new patterns. - * config/aarch64/aarch64-simd.md (load_pair): Rename to... - (load_pair): ... This. - (store_pair): Rename to... - (vec_store_pair): ... This. - * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX): - New mode iterators. - (V_INT_EQUIV): Handle SImode. - * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero): - New predicate. - -2018-05-22 Martin Sebor - - PR c/85623 - * calls.c (maybe_warn_nonstring_arg): Use string length to set - or ajust the presumed bound on an operation to avoid unnecessary - warnings. - -2018-05-22 Martin Sebor - - PR tree-optimization/85826 - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid - assuming that a DECL necesarily has a constant size. - -2018-05-22 Richard Sandiford - - PR middle-end/85862 - * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs. - -2018-05-22 Richard Biener - - PR tree-optimization/85834 - * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle - non-constant and non-zero memset arguments. - -2018-05-22 Martin Liska - - PR ipa/85607 - * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types. - -2018-05-22 Richard Biener - - PR tree-optimization/85863 - * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant - comparisons when vectype is specified. - (vectorizable_condition): Do not specify vectype for - vect_is_simple_cond when SLP vectorizing. - -2018-05-21 Michael Meissner - - PR target/85657 - * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not - define __ibm128 as long double. - * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128 - as a distinct type when IEEE 128-bit support is enabled. - (init_float128_ieee): Fix up conversions between IFmode and IEEE - 128-bit types to use the correct functions. - (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to - convert between 128-bit floating point types that have different - modes but the same representation, instead of using gen_lowpart to - makean alias. - * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and - KFmode. - (IFKF_reg): New attributes to give the register constraints for - IFmode and KFmode. - (extendtf2_internal): New insns to mark an explicit - conversion between 128-bit floating point types that have a - different mode but share the same representation. - -2018-05-21 Richard Sandiford - - PR tree-optimization/85814 - * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with - a null return from get_strinfo when unsharing the next - strinfo in the chain. - -2018-05-21 Vladimir Mezentsev - - PR gcc/84923 - * varasm.c (weak_finish): Clean up weak_decls. - -2018-05-21 Kyrylo Tkachov - - * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL, - UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2, - UNSPEC_UADALP values. - * config/aarch64/iterators.md (ABAL): New int iterator. - (ABDL2): Likewise. - (ADALP): Likewise. - (sur): Add mappings for the above. - * config/aarch64/aarch64-simd.md (aarch64_abdl2_3): - New define_insn. - (aarch64_abal_4): Likewise. - (aarch64_adalp_3): Likewise. - (sadv16qi): New define_expand. - -2018-05-21 Alexander Nesterovskiy - - * config/i386/i386.md (*movsf_internal): AVX falsedep fix. - (*movdf_internal): Ditto. - (*rcpsf2_sse): Ditto. - (*rsqrtsf2_sse): Ditto. - (*sqrt2_sse): Ditto. - -2018-05-21 Tamar Christina - - * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to - eor3q4. - (aarch64_bcaxqv8hi): Change to bcaxq4. - * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32, - veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8, - vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32, - vbcaxq_s64): New. - * config/aarch64/arm_neon.h: Likewise. - * config/aarch64/iterators.md (VQ_I): New. - -2018-05-21 Alexey Brodkin - - * config.gcc: Add arc/t-multilib-linux to tmake_file for - arc*-*-linux*. - * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and - MULTILIB_DIRNAMES - -2018-05-20 Chung-Ju Wu - - * config/nds32/constraints.md (S): New constraint. - * config/nds32/nds32.md (call_internal): Use constraint S. - (call_value_internal): Likewise. - (sibcall_internal): Likewise. - (sibcall_value_internal): Likewise. - -2018-05-20 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu - into consideration. - -2018-05-20 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure. - (insn_size_16bit, insn_size_32bit): New variables for cost evaluation. - (nds32_rtx_costs_impl): Simplify. - (nds32_address_cost_impl): Simplify. - (nds32_init_rtx_costs): New function. - (nds32_rtx_costs_speed_prefer): Likewise. - (nds32_rtx_costs_size_prefer): Likewise. - (nds32_address_cost_speed_prefer): Likewise. - (nds32_address_cost_speed_fwprop): Likewise. - (nds32_address_cost_size_prefer): Likewise. - * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare. - * config/nds32/nds32.c (nds32_option_override): Use - nds32_init_rtx_costs function. - -2018-05-20 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model. - * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define. - (TARGET_PIPELINE_N8): Likewise. - (TARGET_PIPELINE_N10): Likewise. - (TARGET_PIPELINE_N13): Likewise. - (TARGET_PIPELINE_GRAYWOLF): Likewise. - -2018-05-19 Monk Chiang - - * config/nds32/nds32-fpu.md: Update copyright year. - -2018-05-19 Chung-Ju Wu - - * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule. - -2018-05-19 Chung-Ju Wu - - * config/nds32/nds32.c - (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable. - * config/nds32/nds32.opt (minline-asm-r15): New option. - -2018-05-19 Chung-Ju Wu - - * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add - MASK_HW_ABS. - * config/nds32/nds32.md (abssi2): New pattern. - -2018-05-19 Uros Bizjak - - * config/i386/i386.md (rex64namesuffix): New mode attribute. - * config/i386/sse.md (sse_cvtsi2ss): - Merge insn pattern from sse_cvtsi2ss and - sse_cvtsi2ssq using SWI48 mode iterator. - (sse_cvtss2si): Merge insn pattern - from sse_cvtss2si and sse_cvtss2siq - using SWI48 mode iterator. - (sse_cvtss2si_2): Merge insn pattern from - sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator. - (sse_cvttss2si): Merge insn - pattern from sse_cvttss2si - and sse_cvttss2siq using SWI48 mode iterator. - (avx512f_vcvtss2usi): Merge insn pattern - from avx512f_vcvtss2usi and avx512f_vcvtss2usiq - using SWI48 mode iterator. - (avx512f_vcvttss2usi): Merge - insn pattern from avx512f_vcvttss2usi and - avx512f_vcvttss2usiq using SWI48 mode iterator. - (avx512f_vcvtsd2usi): Merge insn pattern - from avx512f_vcvtsd2usi and avx512f_vcvtsd2usiq - using SWI48 mode iterator. - (avx512f_vcvttsd2usi): Merge - insn pattern from avx512f_vcvttsd2usi and - avx512f_vcvttsd2usiq using SWI48 mode iterator. - (sse2_cvtsd2si): Merge insn pattern from - sse2_cvtsd2si and sse2_cvtsd2siq using - SWI48 mode iterator. - (sse2_cvtsd2si_2): Merge insn pattern from - sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator. - (sse_cvttsd2si): Merge insn - pattern from sse_cvttsd2si - and sse_cvttsd2siq using SWI48 mode iterator. - -2018-05-19 Chung-Ju Wu - - * config/nds32/nds32-md-auxiliary.c - (nds32_valid_smw_lwm_base_p): Refine. - (nds32_output_smw_single_word): Refine. - (nds32_output_smw_double_word): New. - * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New. - -2018-05-19 Chung-Ju Wu - - * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine. - (nds32_output_stack_pop): Refine. - (nds32_expand_unaligned_load): Refine. - (nds32_expand_unaligned_store): Refine. - -2018-05-19 Kuan-Lin Chen - Chung-Ju Wu - - * config/nds32/constants.md: Add TP_REGNUM constant. - (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF, - UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and - UNSPEC_ADD32. - * config/nds32/nds32-doubleword.md: Consider flag_pic. - * config/nds32/nds32-dspext.md (mov): Expand TLS and PIC cases. - * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New. - * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS - and PIC code generation. - * config/nds32/nds32-protos.h: Declarations that support TLS and PIC - code generation. - * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax - optimization. - * config/nds32/nds32.md: Support TLS and PIC. - * config/nds32/nds32.c: Support TLS and PIC. - * config/nds32/nds32.h (nds32_relax_insn_type): New enum type. - * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New - predicate. - -2018-05-19 Chung-Ju Wu - - * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine - mode with E_ prefix. - -2018-05-19 Kuan-Lin Chen - Chung-Ju Wu - - * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT. - * config/nds32/nds32-md-auxiliary.c - (symbolic_reference_mentioned_p): New. - (nds32_legitimize_ict_address): New. - (nds32_expand_ict_move): New. - (nds32_indirect_call_referenced_p): New. - (nds32_symbol_binds_local_p): Delete. - (nds32_long_call_p): Modify. - * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type. - * config/nds32/nds32-protos.h - (symbolic_reference_mentioned_p): Declare. - (nds32_legitimize_ict_address): Declare. - (nds32_expand_ict_move): Declare. - (nds32_indirect_call_referenced_p): Declare. - * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New. - (nds32_relax_group): Use nds32_ict_const_p as condition. - * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call". - (nds32_asm_file_start): Output ict_model directive in asm code. - (nds32_legitimate_address_p): Consider indirect call. - (nds32_print_operand): Consider indirect call. - (nds32_print_operand_address): Consider indirect call. - (nds32_insert_attributes): Handle "indirect_call" attribute. - (TARGET_LEGITIMATE_ADDRESS_P): Define. - (TARGET_LEGITIMATE_CONSTANT_P): Define. - (TARGET_CANNOT_FORCE_CONST_MEM): Define. - (TARGET_DELEGITIMIZE_ADDRESS): Define. - (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define. - * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define. - (TARGET_ICT_MODEL_SMALL): Define. - (TARGET_ICT_MODEL_LARGE): Define. - * config/nds32/nds32.md (movsi): Consider ict model. - (call, call_value): Consider ict model. - (sibcall, sibcall_value): Consider ict model. - * config/nds32/nds32.opt (mict-model): New option. - * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict - model. - -2018-05-18 Kito Cheng - Monk Chiang - Jim Wilson - - * common/config/riscv/riscv-common.c (riscv_parse_arch_string): - Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i. - * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e. - * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define - __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI. - * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E. - * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE, - compute save_libcall_adjustment properly. - (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E. - (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E. - * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E. - (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE. - (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise. - (ABI_SPEC): Handle mabi=ilp32e. - * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E. - (RVE): Add RVE mask. - * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info. - <-march>: Add rv32e as an example. - -2018-05-18 Marc Glisse - - PR c++/82899 - * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument. - (intra_create_variable_infos): Handle C++ constructors. - -2018-05-18 Martin Liska - - * passes.def: Remove a redundant pass. - -2018-05-18 Eric Botcazou - - PR bootstrap/85838 - * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0]. - -2018-05-18 Kyrylo Tkachov - - * config/arm/arm-cpus.in (armv3m, mode32): Delete features. - (ARMv4): Update. - (ARMv2, ARMv3, ARMv3m): Delete fgroups. - (ARMv6m): Update. - (armv2, armv2a, armv3, armv3m): Delete architectures. - (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620, - arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720, - arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi): - Delete cpus. - * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m. - (*mulsidi3adddi): Likewise. - (mulsidi3): Likewise. - (*mulsidi3_nov6): Likewise. - (umulsidi3): Likewise. - (umulsidi3_nov6): Likewise. - (umaddsidi4): Likewise. - (*umulsidi3adddi): Likewise. - (smulsi3_highpart): Likewise. - (*smulsi3_highpart_nov6): Likewise. - (umulsi3_highpart): Likewise. - (*umulsi3_highpart_nov6): Likewise. - * config/arm/arm.h (arm_arch3m): Delete. - * config/arm/arm.c (arm_arch3m): Delete. - (arm_option_override_internal): Update armv3-related comment. - (arm_configure_build_target): Delete use of isa_bit_mode32. - (arm_option_reconfigure_globals): Delete set of arm_ach3m. - (arm_rtx_costs_internal): Delete check of arm_arch3m. - * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m. - (mulsa3): Likewise. - (mulusa3): Likewise. - * config/arm/arm-protos.h (arm_arch3m): Delete. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Likewise. - * config/arm/t-arm-elf (all_early_nofp): Delete mentions of - deleted architectures. - -2018-05-18 Kyrylo Tkachov - - * config/arm/arm-cpus.in (armv5, armv5e): Delete features. - (armv5t, armv5te): New features. - (ARMv5, ARMv5e): Delete fgroups. - (ARMv5t, ARMv5te): Adjust for above changes. - (ARMv6m): Likewise. - (armv5, armv5e): Delete arches. - * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of - arm_arch5. - (*call_reg_arm): Likewise. - (*call_value_reg_armv5): Likewise. - (*call_value_reg_arm): Likewise. - (*call_symbol): Likewise. - (*call_value_symbol): Likewise. - (*sibcall_insn): Likewise. - (*sibcall_value_insn): Likewise. - (clzsi2): Likewise. - (prefetch): Likewise. - (define_split and define_peephole2 dependent on arm_arch5): - Likewise. - * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of - arm_arch5e. - (TARGET_ARM_QBIT): Likewise. - (TARGET_DSP_MULTIPLY): Likewise. - (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E. - (arm_arch5, arm_arch5e): Delete. - (arm_arch5t, arm_arch5te): Declare. - * config/arm/arm.c (arm_arch5, arm_arch5e): Delete. - (arm_arch5t): Declare. - (arm_option_reconfigure_globals): Update for the above. - (arm_options_perform_arch_sanity_checks): Update comment, replace - use of arm_arch5 with arm_arch5t. - (use_return_insn): Likewise. - (arm_emit_call_insn): Likewise. - (output_return_instruction): Likewise. - (arm_final_prescan_insn): Likewise. - (arm_coproc_builtin_available): Likewise. - * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and - arm_arch5e with arm_arch5t and arm_arch5te. - * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete. - (arm_arch5t, arm_arch5te): Declare. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/t-arm-elf: Remove references to armv5, armv5e. - * config/arm/t-multilib: Likewise. - * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t - instead of arm_arch5. - (*call_reg_thumb1): Likewise. - (*call_value_reg_thumb1_v5): Likewise. - (*call_value_reg_thumb1): Likewise. - * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now - unreachable path. - * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e. - -2018-05-18 Martin Liska - - PR gcov-profile/84846 - * doc/gcov.texi: Document -t option of gcov tool. - -2018-05-18 Martin Liska - - PR gcov-profile/84846 - * gcov.c (print_usage): Add new -t option. - (process_args): Handle the option. - (generate_results): Use stdout as output when requested by - the option. - -2018-05-18 Martin Liska - - PR gcov-profile/84846 - * coverage.c (coverage_init): Write PWD to .gcno file. - * doc/gcov.texi: Document how working directory is printed. - * gcov-dump.c (dump_gcov_file): Print PWD. - * gcov.c (output_intermediate_file): Likewise. - (read_graph_file): Read PWD string. - (output_lines): Print PWD. - -2018-05-18 Prathamesh Kulkarni - - PR middle-end/85817 - * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop - for retval and return false if all args to phi are zero. - -2018-05-18 Richard Biener - - * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges - method. - (evrp_dom_walker::before_dom_children): Call it. - -2018-05-18 Richard Biener - - * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine - results when processing array refs with variable index. - -2018-05-18 Toon Moene - - * doc/invoke.texi: Move -floop-unroll-and-jam documentation - directly after that of -floop-interchange. Indicate that both - options are enabled by default when specifying -O3. - -2018-05-18 Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md (vec_set): Use VALL_F16 mode - iterator. Delete separate integer-mode vec_set expander. - (aarch64_simd_vec_setv2di): Delete. - (vec_setv2di): Delete. - (aarch64_simd_vec_set): Delete all other patterns with that name. - Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for - the "w, r" alternative. - -2018-05-18 Martin Liska - - * passes.def: Add pass_lower_switch and pass_lower_switch_O0. - * tree-pass.h (make_pass_lower_switch_O0): New function. - * tree-switch-conversion.c (node_has_low_bound): Remove. - (node_has_high_bound): Likewise. - (node_is_bounded): Likewise. - (class pass_lower_switch): Make it a template type and create - two instances. - (pass_lower_switch::execute): Add template argument. - (make_pass_lower_switch): New function. - (make_pass_lower_switch_O0): New function. - (do_jump_if_equal): Remove. - (emit_case_nodes): Simplify to just handle all 3 cases and leave - all the hard work to tree optimization passes. - -2018-05-18 Martin Liska - - * dbgcnt.c (limit_low): Renamed from limit. - (limit_high): New variable. - (dbg_cnt_is_enabled): Check for upper limit. - (dbg_cnt): Adjust dumping. - (dbg_cnt_set_limit_by_index): Add new argument for high - value. - (dbg_cnt_set_limit_by_name): Likewise. - (dbg_cnt_process_single_pair): Parse new format. - (dbg_cnt_process_opt): Use strtok. - (dbg_cnt_list_all_counters): Remove 'value' and add - 'limit_high'. - * doc/invoke.texi: Document changes. - -2018-05-18 Richard Sandiford - - * doc/sourcebuild.texi (scalar_all_fma): Document. - * tree.def (FMA_EXPR): Delete. - * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions. - * internal-fn.c (ternary_direct): New macro. - (expand_ternary_optab_fn): Likewise. - (direct_ternary_optab_supported_p): Likewise. - * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h. - * builtins.c (fold_builtin_fma): Delete. - (fold_builtin_3): Don't call it. - * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling. - * expr.c (expand_expr_real_2): Likewise. - * fold-const.c (operand_equal_p): Likewise. - (fold_ternary_loc): Likewise. - * gimple-pretty-print.c (dump_ternary_rhs): Likewise. - * gimple.c (DEFTREECODE): Likewise. - * gimplify.c (gimplify_expr): Likewise. - * optabs-tree.c (optab_for_tree_code): Likewise. - * tree-cfg.c (verify_gimple_assign_ternary): Likewise. - * tree-eh.c (operation_could_trap_p): Likewise. - (stmt_could_throw_1_p): Likewise. - * tree-inline.c (estimate_operator_cost): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - (op_code_prio): Likewise. - * tree-ssa-loop-im.c (stmt_cost): Likewise. - * tree-ssa-operands.c (get_expr_operands): Likewise. - * tree.c (commutative_ternary_tree_code, add_expr): Likewise. - * fold-const-call.h (fold_fma): Delete. - * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS, - CFN_FNMA and CFN_FNMS. - (fold_fma): Delete. - * genmatch.c (combined_fn): New enum. - (commutative_ternary_tree_code): Remove FMA_EXPR handling. - (commutative_op): New function. - (commutate): Use it. Handle more than 2 operands. - (dt_operand::gen_gimple_expr): Use commutative_op. - (parser::parse_expr): Allow :c to be used with non-binary - operators if the commutative operand is known. - * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle - CFN_FMS, CFN_FNMA and CFN_FNMS. - (backprop::process_assign_use): Remove FMA_EXPR handling. - * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise. - (gen_hsa_fma): New function. - (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS, - IFN_FNMA and IFN_FNMS. - * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS. - * gimple-fold.h (follow_all_ssa_edges): Declare. - * gimple-fold.c (follow_all_ssa_edges): New function. - * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the - gimple_build interface and use follow_all_ssa_edges to fold the result. - (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p - instead of checking for optabs directly. - * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls - rather than FMA_EXPRs. - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a - call to IFN_FMA instead of an FMA_EXPR. - -2018-05-17 Jim Wilson - - * expr.c (do_tablejump): When converting index to Pmode, if we have a - sign extended promoted subreg, and the range does not have the sign bit - set, then do a sign extend. - - * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode - test, check for sign extended subreg and/or constant operands, and - do a sign extend in that case. - -2018-05-17 Steve Ellcey - - * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete. - (thunderx2t99_multiple): Delete psuedo-units from used cpus. - Add untyped. - (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg. - Change logics_shift_reg to logics_shift_imm. - (thunderx2t99_fp_loadpair_basic): Delete. - (thunderx2t99_fp_storepair_basic): Delete. - (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types. - (thunderx2t99_asimd_polynomial): Delete. - (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q - and neon_fp_mul_d_scalar_q. - (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types. - (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q. - (thunderx2t99_asimd_recip_step): Add missing *sqrt* types. - (thunderx2t99_asimd_lut): Add missing tbl types. - (thunderx2t99_asimd_ext): Delete. - (thunderx2t99_asimd_load1_1_mult): Delete. - (thunderx2t99_asimd_load1_2_mult): Delete. - (thunderx2t99_asimd_load1_ldp): New. - (thunderx2t99_asimd_load1): New. - (thunderx2t99_asimd_load2): Add missing *load2* types. - (thunderx2t99_asimd_load3): New. - (thunderx2t99_asimd_load4): New. - (thunderx2t99_asimd_store1_1_mult): Delete. - (thunderx2t99_asimd_store1_2_mult): Delete. - (thunderx2t99_asimd_store2_mult): Delete. - (thunderx2t99_asimd_store2_onelane): Delete. - (thunderx2t99_asimd_store_stp): New. - (thunderx2t99_asimd_store1): New. - (thunderx2t99_asimd_store2): New. - (thunderx2t99_asimd_store3): New. - (thunderx2t99_asimd_store4): New. - -2018-05-17 Jerome Lambourg - - * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove - #include . Replace intptr_t with __INTPTR_TYPE__. - -2018-05-17 Pat Haugen - Segher Boessenkool - - PR target/85698 - * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest - operand. - -2018-05-17 Richard Biener - - * tree-ssa-dse.c (dse_classify_store): Fix iterator increment - for pruning loop and prune defs feeding only already visited PHIs. - -2018-05-17 Richard Biener - - * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling. - -2018-05-17 Bin Cheng - Richard Biener - - PR tree-optimization/85793 - * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load - for VMAT_ELEMENTWISE. - -2018-05-17 Richard Sandiford - - * internal-fn.h (lookup_internal_fn): Declare - * internal-fn.c (lookup_internal_fn): New function. - * gimple.c (gimple_build_call_from_tree): Handle calls to - internal functions. - * gimple-pretty-print.c (dump_gimple_call): Print "." before - internal function names. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise. - -2018-05-17 Richard Sandiford - - * gimple-fold.h (gimple_build): Make the function forms take - combined_fn rather than built_in_function. - (gimple_simplify): Likewise. - * gimple-match-head.c (gimple_simplify): Likewise. - * gimple-fold.c (gimple_build): Likewise. - * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build - rather than gimple_build_call_internal. - (get_initial_defs_for_reduction): Likewise. - (vect_create_epilog_for_reduction): Likewise. - (vectorizable_live_operation): Likewise. - -2018-05-17 Martin Liska - - * gimple-ssa-sprintf.c (format_directive): Do not use - space in between 'G_' and '('. - -2018-05-17 Jakub Jelinek - - PR target/85323 - * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts - even if the mask is not all ones. - - PR target/85323 - * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by - vector. - (ix86_gimple_fold_builtin): Likewise. - - PR target/85323 - * config/i386/i386.c: Include tree-vector-builder.h. - (ix86_vector_shift_count): New function. - (ix86_fold_builtin): Fold shift builtins by scalar count. - (ix86_gimple_fold_builtin): Likewise. - - * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8, - _mm512_setzero): New intrinsics. - -2018-05-17 James Greenhalgh - Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify - code generation for cases where splatting a value is not useful. - * simplify-rtx.c (simplify_ternary_operation): Simplify - vec_merge across a vec_duplicate and a paradoxical subreg forming - a vector mode to a vec_concat. - -2018-05-17 Olga Makhotina - - * config.gcc: Support "goldmont-plus". - * config/i386/driver-i386.c (host_detect_local_cpu): Detect - "goldmont-plus". - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - PROCESSOR_GOLDMONT_PLUS. - * config/i386/i386.c (m_GOLDMONT_PLUS): Define. - (processor_target_table): Add "goldmont-plus". - (PTA_GOLDMONT_PLUS): Define. - (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS. - (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS. - (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS. - (fold_builtin_cpu): Add "goldmont-plus". - (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS. - (ix86_option_override_internal): Add "goldmont-plus". - * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS. - (processor_type): Add PROCESSOR_GOLDMONT_PLUS. - * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS. - * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type. - -2018-05-17 Richard Biener - - PR tree-optimization/85757 - * tree-ssa-dse.c (dse_classify_store): Record a PHI def and - remove defs that only feed that PHI from further processing. - -2018-05-16 Jim Wilson - - * config/riscv/riscv.md (si3_mask, si3_mask_1): Prepend - asterisk to name. - (di3_mask, di3_mask_1): Likewise. - -2018-05-16 Mark Wielaard - - * dwarf2out.c (count_index_strings): New function. - (output_indirect_strings): Call count_index_strings and generate - header for dwarf_version >= 5. - -2018-05-16 Mark Wielaard - - * dwarf2out.c (dwarf_FORM): New function. - (set_indirect_string): Use dwarf_FORM. - (reset_indirect_string): Likewise. - (size_of_die): Likewise. - (value_format): Likewise. - (output_die): Likewise. - (add_skeleton_AT_string): Likewise. - (output_macinfo_op): Likewise. - (index_string): Likewise. - (output_index_string_offset): Likewise. - (output_index_string): Likewise. - (count_index_strings): Likewise. - -2018-05-16 Carl Love - - * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions - dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer. - -2018-05-16 Martin Jambor - - * ipa-prop.c (ipa_free_all_edge_args): Remove. - * ipa-prop.h (ipa_free_all_edge_args): Likewise. - -2018-05-16 Wilco Dijkstra - - * config/aarch64/aarch64.md (fma4): Change into expand pattern. - (fnma4): Likewise. - (fms4): Likewise. - (fnms4): Likewise. - (aarch64_fma4): Rename insn, reorder accumulator operand. - (aarch64_fnma4): Likewise. - (aarch64_fms4): Likewise. - (aarch64_fnms4): Likewise. - (aarch64_fnmadd4): Likewise. - -2018-05-16 Jason Merrill - - * tree.c (warn_deprecated_use): Return bool. Simplify logic. - -2018-05-16 Richard Biener - - * tree-vectorizer.h (struct stmt_info_for_cost): Add where member. - (dump_stmt_cost): Declare. - (add_stmt_cost): Dump cost we add. - (add_stmt_costs): New function. - (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost): - No longer exported. - (vect_analyze_stmt): Adjust prototype. - (vectorizable_condition): Likewise. - (vectorizable_live_operation): Likewise. - (vectorizable_reduction): Likewise. - (vectorizable_induction): Likewise. - * tree-vect-loop.c (vect_analyze_loop_operations): Create local - cost vector to pass to vectorizable_ and record afterwards. - (vect_model_reduction_cost): Take cost vector argument and adjust. - (vect_model_induction_cost): Likewise. - (vectorizable_reduction): Likewise. - (vectorizable_induction): Likewise. - (vectorizable_live_operation): Likewise. - * tree-vect-slp.c (vect_create_new_slp_node): Initialize - SLP_TREE_NUMBER_OF_VEC_STMTS. - (vect_analyze_slp_cost_1): Remove. - (vect_analyze_slp_cost): Likewise. - (vect_slp_analyze_node_operations): Take visited args and - a target cost vector. Avoid processing already visited stmt sets. - (vect_slp_analyze_operations): Use a local cost vector to gather - costs and register those of non-discarded instances. - (vect_bb_vectorization_profitable_p): Use add_stmt_costs. - (vect_schedule_slp_instance): Remove copying of - SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not - zero. - * tree-vect-stmts.c (record_stmt_cost): Remove path directly - adding cost. Record cost entry location. - (vect_prologue_cost_for_slp_op): Function to compute cost of - a constant or invariant generated for SLP vect in the prologue, - split out from vect_analyze_slp_cost_1. - (vect_model_simple_cost): Make static. Adjust for SLP costing. - (vect_model_promotion_demotion_cost): Likewise. - (vect_model_store_cost): Likewise, make static. - (vect_model_load_cost): Likewise. - (vectorizable_bswap): Add cost vector arg and adjust. - (vectorizable_call): Likewise. - (vectorizable_simd_clone_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - (vectorizable_condition): Likewise. - (vectorizable_comparison): Likewise. - (can_vectorize_live_stmts): Likewise. - (vect_analyze_stmt): Likewise. - (vect_transform_stmt): Adjust calls to vectorizable_*. - * tree-vectorizer.c: Include gimple-pretty-print.h. - (dump_stmt_cost): New function. - -2018-05-16 Richard Biener - - * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param. - * doc/invoke.texi (dse-max-alias-queries-per-store): Document. - * tree-ssa-dse.c: Include tree-ssa-loop.h. - (check_name): New callback. - (dse_classify_store): Track cycles via a visited bitmap of PHI - defs and simplify handling of in-loop and across loop dead stores - and properly fail for loop-variant refs. Handle byte-tracking with - multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for - limiting the walk. - -2018-05-16 Richard Sandiford - - * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare. - (vect_get_mask_type_for_stmt): Likewise. - * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function, - split out from... - (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt - to determine the statement's vector type and the vector type that - should be used for calculating nunits. Deal with cases in which - the type has to be deferred. - (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt - and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE. - * tree-vect-loop.c (vect_determine_vf_for_stmt_1) - (vect_determine_vf_for_stmt): New functions, split out from... - (vect_determine_vectorization_factor): ...here. - * tree-vect-stmts.c (vect_get_vector_types_for_stmt) - (vect_get_mask_type_for_stmt): New functions, split out from - vect_determine_vectorization_factor. - -2018-05-16 Richard Biener - - * tree-cfg.c (verify_gimple_assign_ternary): Properly - verify the [VEC_]COND_EXPR embedded comparison. - -2018-05-15 Martin Sebor - - PR tree-optimization/85753 - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle - RECORD_TYPE in addition to ARRAY_TYPE. - -2018-05-15 Martin Sebor - - PR middle-end/85643 - * calls.c (get_attr_nonstring_decl): Handle MEM_REF. - -2018-05-15 Richard Biener - - * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter, - add by_clobber_p one. Change algorithm to collect all defs - representing uses we need to walk and try reducing them to - a single one before failing. - (dse_dom_walker::dse_optimize_stmt): Adjust. - -2018-05-13 Mark Wielaard - - * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx. - (size_of_loc_descr): Likewise. - (output_loc_operands): Likewise. - (output_loc_operands_raw): Likewise. - (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx. - (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx. - (hash_loc_operands): Likewise. - (compare_loc_operands): Likewise. - -2018-05-14 Mark Wielaard - - * dwarf2out.c (count_index_addrs): New function. - (dwarf2out_finish): Use count_index_addrs to calculate addrs_length. - -2018-05-15 Prathamesh Kulkarni - - PR tree-optimization/83648 - * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL - return value as malloc candidate. - -2018-05-15 Prathamesh Kulkarni - - PR ipa/85734 - * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite - param as true in call to suggest_attribute. - -2018-05-14 Segher Boessenkool - - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for - -mreadonly-in-sdata. - -2018-05-14 Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused): - New pattern. - (aarch64_crypto_aesd_fused): Likewise. - -2018-05-14 Wilco Dijkstra - - * config/aarch64/aarch64.md (mov): Remove '*' in alternatives. - (movsi_aarch64): Likewise. - (load_pairsi): Likewise. - (load_pairdi): Likewise. - (store_pairsi): Likewise. - (store_pairdi): Likewise. - (load_pairsf): Likewise. - (load_pairdf): Likewise. - (store_pairsf): Likewise. - (store_pairdf): Likewise. - (zero_extend): Likewise. - (trunc): Swap alternatives. - (fcvt_target): Add '?' to prefer w over r. - -2018-05-14 Jakub Jelinek - - PR target/85756 - * config/i386/i386.md: Disallow non-commutative arithmetics in - last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim - optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS - in the peephole2 before it. - -2018-05-14 Sebastian Peryt - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET, - OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines. - (ix86_handle_option): Handle -mcldemote. - * config.gcc: New header. - * config/i386/cldemoteintrin.h: New file. - * config/i386/cpuid.h (bit_CLDEMOTE): New bit. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect - -mcldemote. - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - OPTION_MASK_ISA_CLDEMOTE. - * config/i386/i386.c (ix86_target_string): Add -mcldemote. - (ix86_valid_target_attribute_inner_p): Ditto. - (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE. - (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote. - (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE. - * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New. - * config/i386/i386.md (UNSPECV_CLDEMOTE): New. - (cldemote): New. - * config/i386/i386.opt: Add -mcldemote. - * config/i386/x86intrin.h: New header. - * doc/invoke.texi: Add -mcldemote. - -2018-05-14 Richard Biener - - * doc/match-and-simplify.texi: Adjust :s documentation. - -2018-05-14 Alexander Monakov - - * sort.cc (REORDER_23): Pass the type for the temporaries instead of - intended memcpy size. - (REORDER_45): Likewise. - -2018-05-13 Alexander Monakov - - * sort.cc: New file. - * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort. - * vec.c (qsort_chk): Use gcc_qsort. - * Makefile.in (OBJS-libcommon): Add sort.o. - (build/sort.o): New target. Use it... - (BUILD_RTL): ... here, and... - (build/gencfn-macros): ... here, and... - (build/genmatch): ... here. - -2018-05-13 Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu. - * config/nds32/nds32-graywolf.md: New file. - * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF. - * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15 - pipeline. - * config/nds32/nds32-protos.h: More declarations for n15 pipeline. - * config/nds32/nds32-utils.c: More implementations for n15 pipeline. - * config/nds32/nds32.md (pipeline_model): Add graywolf. - * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus. - * config/nds32/pipelines.md: Include n15 settings. - -2018-05-13 Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu. - * config/nds32/nds32-n13.md: New file. - * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13. - * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13 - pipeline. - * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline. - * config/nds32/nds32.md (pipeline_model): Add n13. - * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus. - * config/nds32/pipelines.md: Include n13 settings. - -2018-05-13 Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu. - * config/nds32/nds32-n10.md: New file. - * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10. - * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10 - pipeline. - * config/nds32/nds32-protos.h: More declarations for n10 pipeline. - * config/nds32/nds32-utils.c: More implementations for n10 pipeline. - * config/nds32/nds32.md (pipeline_model): Add n10. - * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus. - * config/nds32/pipelines.md: Include n10 settings. - -2018-05-13 Monk Chiang - Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32be-*-*): Handle --with-ext-dsp. - * config/nds32/constants.md (unspec_element, unspec_volatile_element): - Add enum values for DSP extension instructions. - * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi): - New constraints. - * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus, - sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max): - New code iterators. - (su, zs, uk, opcode, add_rsub, add_sub): New code attributes. - * config/nds32/nds32-dspext.md: New file for DSP implementation. - * config/nds32/nds32-intrinsic.c: Implementation of DSP extension. - * config/nds32/nds32-intrinsic.md: Likewise. - * config/nds32/nds32_intrinsic.h: Likewise. - * config/nds32/nds32-md-auxiliary.c: Likewise. - * config/nds32/nds32-memory-manipulation.c: Consider DSP extension. - * config/nds32/nds32-predicates.c (const_vector_to_hwint): New. - (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New. - (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New. - * config/nds32/nds32-protos.h: New declarations for DSP extension. - * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case - TYPE_DMAC in switch statement. - * config/nds32/nds32.c: New checking and implementation for DSP - extension instructions. - * config/nds32/nds32.h: Likewise. - * config/nds32/nds32.md: Likewise. - * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options. - * config/nds32/predicates.md: Implement new predicates for DSP - extension. - -2018-05-11 Michael Meissner - - * config/rs6000/rs6000.md (mov_softfloat, FMOVE32): - Reformat alternatives and attributes so it is easier to identify - which constraints/attributes go with which instruction. - (mov_hardfloat32, FMOVE64): Likewise. - (mov_softfloat32, FMOVE64): Likewise. - (mov_hardfloat64, FMOVE64): Likewise. - (mov_softfloat64, FMOVE64): Likewise. - -2018-05-11 Kelvin Nilsen - - * doc/extend.texi (PowerPC Built-in Functions): Rename this - subsection. - (Basic PowerPC Built-in Functions): The new name of the - subsection previously known as "PowerPC Built-in Functions". - (Basic PowerPC Built-in Functions Available on all Configurations): - New subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise. - (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise. - (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise. - (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise. - -2018-05-11 Martin Jambor - - PR ipa/85655 - * ipa-cp.c (intersect_with_plats): Check that the lattice contains - single const. - -2018-05-11 Richard Earnshaw - - PR target/85733 - * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature. - -2018-05-11 Sebastian Peryt - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET, - OPTION_MASK_ISA_WAITPKG_UNSET): New defines. - (ix86_handle_option): Handle -mwaitpkg. - * config.gcc: New header. - * config/i386/cpuid.h (bit_WAITPKG): New bit. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg. - * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New - function type. - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - OPTION_MASK_ISA_WAITPKG. - * config/i386/i386.c (ix86_target_string): Add -mwaitpkg. - (ix86_option_override_internal): Add PTA_WAITPKG. - (ix86_valid_target_attribute_inner_p): Add -mwaitpkg. - (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT, - IX86_BUILTIN_TPAUSE. - (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor, - __builtin_ia32_umwait and __builtin_ia32_tpause. - (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR, - IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE. - * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New. - * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR, - UNSPECV_TPAUSE): New. - (umwait, umwait_rex64, umonitor_, tpause, tpause_rex64): New. - * config/i386/i386.opt: Add -mwaitpkg. - * config/i386/waitpkgintrin.h: New file. - * config/i386/x86intrin.h: New header. - * doc/invoke.texi: Add -mwaitpkg. - -2018-05-11 Richard Earnshaw - - PR target/85606 - * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now - equivalent. - (cortex-m0): Use armv6s-m isa. - (cortex-m0plus): Likewise. - (cortex-m1): Likewise. - (cortex-m0.small-multiply): Likewise. - (cortex-m0plus.small-multiply): Likewise. - (cortex-m1.small-multiply): Likewise. - -2018-05-11 Allan Sandfeld Jensen - Jakub Jelinek - - PR tree-optimization/85692 - * tree-ssa-forwprop.c (simplify_vector_constructor): Try two - source permute as well. - -2018-05-11 Martin Liska - - PR sanitizer/85556 - * doc/extend.texi: Document LLVM style format for no_sanitize - attribute. - -2018-05-10 Michael Meissner - - * config/rs6000/rs6000.c (mode_supports_dq_form): Rename - mode_supports_vsx_dform_quad to mode_supports_dq_form. - (mode_supports_vsx_dform_quad): Likewise. - (mode_supports_vmx_dform): Move these functions to be next to the - other mode_supports functions. - (mode_supports_dq_form): Likewise. - (quad_address_p): Change calls of mode_supports_vsx_dform_quad to - mode_supports_dq_form. - (reg_offset_addressing_ok_p): Likewise. - (offsettable_ok_by_alignment): Likewise. - (rs6000_legitimate_offset_address_p): Likewise. - (legitimate_lo_sum_address_p): Likewise. - (rs6000_legitimize_address): Likewise. - (rs6000_legitimize_reload_address): Likewise. - (rs6000_secondary_reload_inner): Likewise. - (rs6000_preferred_reload_class): Likewise. - (rs6000_output_move_128bit): Likewise. - -2018-05-10 Uros Bizjak - - * config/i386/i386.c (ix86_expand_builtin) : - Generate SImode target register for null target. - : Ditto. - : Optimize LSHIFTRT generation. - * config/i386/xsaveintrin.h (_xgetbv): Add missing return. - -2018-05-10 Carl Love - - * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions - dcbtt and dcbtstt if operands[2] is 0. - -2018-05-10 Uros Bizjak - - PR target/85693 - * config/i386/sse.md (usadv64qi): New expander. - -2018-05-10 Segher Boessenkool - - * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh, - altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove - -maltivec=be support. - (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi, - vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi, - vec_widen_umult_even_v4si, vec_widen_smult_even_v4si, - vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi, - vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi, - vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx, - altivec_vpksss, altivec_vpksus, - altivec_vpkuus, altivec_vpkuum, altivec_vsum2sws, - altivec_vsumsws): Adjust. - (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth, - *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal, - altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be - support. - (altivec_vperm_, altivec_vperm__uns, - altivec_vupkhs, altivec_vupkls, altivec_vupkhpx, - altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust. - (altivec_lvex): Delete expand. - (*altivec_lvex_internal): Rename to... - (altivec_lvex): ... this. - (altivec_lvxl_): Delete expand. - (*altivec_lvxl__internal): Rename to ... - (altivec_lvxl_): ... this. - (altivec_stvxl_): Delete expand. - (*altivec_stvxl__internal): Rename to ... - (altivec_stvxl_): ... this. - (altivec_stvex): Delete expand. - (*altivec_stvex_internal): Rename to ... - (altivec_stvex): ... this. - (doublee2, unsdoubleev4si2, doubleo2, unsdoubleov4si2, - doubleh2, unsdoublehv4si2, doublel2, unsdoublelv4si2, - reduc_plus_scal_): Adjust. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust - comment. - (rs6000_cpu_cpp_builtins): Adjust. - (altivec_resolve_overloaded_builtin): Remove -maltivec=be support. - * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be, - altivec_expand_stvx_be, altivec_expand_stvex_be): Delete. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove - -maltivec=be support. - (rs6000_split_vec_extract_var): Adjust. - (rs6000_split_v4si_init): Adjust. - (swap_selector_for_mode): Delete. - (altivec_expand_lvx_be, altivec_expand_stvx_be, - altivec_expand_stvex_be): Delete. - (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove - -maltivec=be support. - (rs6000_gimple_fold_builtin): Ditto. - (rs6000_generate_float2_double_code, rs6000_generate_float2_code): - Adjust. - * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete. - (TARGET_DIRECT_MOVE_64BIT): Adjust. - * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust. - * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete. - * config/rs6000/vsx.md (floate, unsfloatev2di, floato, - unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df, - vunsignede_v2df, vsx_extract__p9, *vsx_extract_si, - *vsx_extract__p8, *vsx_extract_si_float_df, - *vsx_extract_si_float_, vsx_set__p9, vsx_set_v4sf_p9, - *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an - anonymous split): Adjust. - (vsx_mergel_, vsx_mergeh_): Remove -maltivec=be support. - (vsx_xxspltd_, extract4b, insert4b): Adjust. - -2018-05-10 Eric Botcazou - - * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only - when --with-gxx-include-dir is also specified. - * configure: Regenerate. - -2018-05-09 Jim Wilson - - PR target/84797 - * config.gcc (riscv*-*-*): Handle --with-multilib-list. - * config/riscv/t-withmultilib: New. - * config/riscv/withmultilib.h: New. - * doc/install.texi: Document RISC-V --with-multilib-list support. - -2018-05-09 Richard Biener - - * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost - vector. - (vect_bb_vectorization_profitable_p): Adjust. Compute - actual scalar cost using the cost vector and the add_stmt_cost - machinery. - -2018-05-09 Segher Boessenkool - - PR rtl-optimization/85645 - * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET - in the REG_CFA_REGISTER note for LR, don't leave it empty. - -2018-05-09 Segher Boessenkool - - PR rtl-optimization/85645 - * shrink-wrap.c (spread_components): Return a boolean saying if - anything was changed. - (try_shrink_wrapping_separate): Iterate spread_components until - nothing changes anymore. - -2018-05-09 Segher Boessenkool - - PR rtl-optimization/85645 - * regrename.c (build_def_use): Also kill the chains that include the - destination of a REG_CFA_REGISTER note. - -2018-05-09 Segher Boessenkool - - PR rtl-optimization/85645 - * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an - insn that has a REG_CFA_REGISTER note. - -2018-05-09 Richard Sandiford - - * cfgexpand.c (expand_clobber): New function. - (expand_gimple_stmt_1): Use it. - * tree-vect-stmts.c (vect_clobber_variable): New function, - split out from... - (vectorizable_simd_clone_call): ...here. - (vectorizable_store): Emit a clobber either side of an - IFN_STORE_LANES sequence. - (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence. - -2018-05-09 Tom de Vries - - PR target/85626 - * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true") - (define_insn "trap_if_false"): Add exit after trap. - -2018-05-09 Eric Botcazou - - PR rtl-optimization/85638 - * bb-reorder.c: Include common/common-target.h. - (create_forwarder_block): New function extracted from... - (fix_up_crossing_landing_pad): ...here. Rename into... - (dw2_fix_up_crossing_landing_pad): ...this. - (sjlj_fix_up_crossing_landing_pad): New function. - (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode, - call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges - from both partitions and exit the loop after one iteration. - -2018-05-08 Kelvin Nilsen - - Revert: - * doc/extend.texi (PowerPC Built-in Functions): Rename this - subsection. - (Basic PowerPC Built-in Functions): The new name of the - subsection previously known as "PowerPC Built-in Functions". - (Basic PowerPC Built-in Functions Available on all Configurations): - New subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 2.05): New - subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 2.06): New - subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 2.07): New - subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 3.0): New - subsubsection. - -2018-05-08 Jim Wilson - - * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash. - (LD_EMUL_SUFFIX): New. - (LINK_SPEC): Use it. - -2018-05-08 Kelvin Nilsen - - * doc/extend.texi (PowerPC Built-in Functions): Rename this - subsection. - (Basic PowerPC Built-in Functions): The new name of the - subsection previously known as "PowerPC Built-in Functions". - (Basic PowerPC Built-in Functions Available on all Configurations): - New subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 2.05): New - subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 2.06): New - subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 2.07): New - subsubsection. - (Basic PowerPC Built-in Functions Available on ISA 3.0): New - subsubsection. - -2018-05-08 Jakub Jelinek - - PR target/85683 - * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0 - after cmpelim optimization. - -2018-05-08 Olga Makhotina - - * config.gcc: Support "goldmont". - * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont". - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - PROCESSOR_GOLDMONT. - * config/i386/i386.c (m_GOLDMONT): Define. - (processor_target_table): Add "goldmont". - (PTA_GOLDMONT): Define. - (ix86_lea_outperforms): Add TARGET_GOLDMONT. - (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT. - (fold_builtin_cpu): Add M_INTEL_GOLDMONT. - (fold_builtin_cpu): Add "goldmont". - (ix86_add_stmt_cost): Add TARGET_GOLDMONT. - (ix86_option_override_internal): Add "goldmont". - * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT. - (processor_type): Add PROCESSOR_GOLDMONT. - * config/i386/i386.md: Add CPU "glm". - * config/i386/glm.md: New file. - * config/i386/x86-tune.def: Add m_GOLDMONT. - * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type. - -2018-05-08 Jakub Jelinek - - PR target/85572 - * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and - E_V4DImode. - * config/i386/sse.md (abs2): Use VI_AVX2 iterator instead of - VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not - TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes. - - PR target/85317 - * config/i386/i386.c (ix86_fold_builtin): Handle - IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}. - - PR target/85480 - * config/i386/sse.md (ssequaterinsnmode): New mode attribute. - (*_vinsert_0): New pattern. - -2018-05-08 Richard Earnshaw - - PR target/85658 - * config/arm/parsecpu.awk (check_cpu): Fix operator precedence. - (check_arch): Likewise. - (check_fpu): Return the result rather than printing it. - (end arch): Fix operator precedence. - (end cpu): Likewise. - (END): Print the result from check_fpu. - -2018-05-08 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-sve.md (*pred_cmp_combine) - (*pred_cmp, *fcm_and_combine) - (*fcmuo_and_combine, *fcm_and) - (*fcmuo_and): New patterns. - -2018-05-08 Richard Sandiford - - * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS) - (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete. - (SVE_INT_CMP, SVE_FP_CMP): New code iterators. - (cmp_op, sve_imm_con): New code attributes. - (SVE_COND_INT_CMP, imm_con): Delete. - (cmp_op): Remove above unspecs from int attribute. - * config/aarch64/aarch64-sve.md (*vec_cmp_): Rename - to... - (*cmp): ...this. Use UNSPEC_MERGE_PTRUE instead of - comparison-specific unspecs. - (*vec_cmp__ptest): Rename to... - (*cmp_ptest): ...this and adjust likewise. - (*vec_cmp__cc): Rename to... - (*cmp_cc): ...this and adjust likewise. - (*vec_fcm): Rename to... - (*fcm): ...this and adjust likewise. - (*vec_fcmuo): Rename to... - (*fcmuo): ...this and adjust likewise. - (*pred_fcm): New pattern. - * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop) - (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New - functions. - (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU - and UNORDERED. - (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete. - (aarch64_emit_sve_predicated_cond): New function. - (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc. - (aarch64_emit_unspec_cond_or): Replace with... - (aarch64_emit_sve_or_conds): ...this new function. Use - aarch64_emit_sve_ptrue_op for the individual comparisons and - aarch64_emit_binop to OR them together. - (aarch64_emit_inverted_unspec_cond): Replace with... - (aarch64_emit_sve_inverted_cond): ...this new function. Use - aarch64_emit_sve_ptrue_op for the comparison and - aarch64_emit_unop to invert the result. - (aarch64_expand_sve_vec_cmp_float): Update after the above - changes. Use aarch64_emit_sve_ptrue_op for native comparisons. - -2018-05-07 Nathan Sidwell - - * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope. - * doc/extend.texi (Deprecated Features): Remove -fno-for-scope - (Backwards Compatibility): Likewise. - -2018-05-07 Luis Machado - - PR bootstrap/85681 - Revert: - 2018-05-07 Luis Machado - - * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) - : New const bool field. - * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include - prefetch_dynamic_strides. - (exynosm1_prefetch_tune): Likewise. - (thunderxt88_prefetch_tune): Likewise. - (thunderx_prefetch_tune): Likewise. - (thunderx2t99_prefetch_tune): Likewise. - (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides - to false. - (aarch64_override_options_internal): Update to set - PARAM_PREFETCH_DYNAMIC_STRIDES. - * doc/invoke.texi (prefetch-dynamic-strides): Document new option. - * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New. - * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define. - * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for - prefetch-dynamic-strides setting. - - 2018-05-07 Luis Machado - - * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) - : New const int field. - * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include - minimum_stride field. - (exynosm1_prefetch_tune): Likewise. - (thunderxt88_prefetch_tune): Likewise. - (thunderx_prefetch_tune): Likewise. - (thunderx2t99_prefetch_tune): Likewise. - (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048. - (aarch64_override_options_internal): Update to set - PARAM_PREFETCH_MINIMUM_STRIDE. - * doc/invoke.texi (prefetch-minimum-stride): Document new option. - * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New. - * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define. - * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if - stride is constant and is below the minimum stride threshold. - -2018-05-07 Luis Machado - - * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) : Set - to 512. - -2018-05-07 Luis Machado - - * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) - : New const bool field. - * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include - prefetch_dynamic_strides. - (exynosm1_prefetch_tune): Likewise. - (thunderxt88_prefetch_tune): Likewise. - (thunderx_prefetch_tune): Likewise. - (thunderx2t99_prefetch_tune): Likewise. - (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides - to false. - (aarch64_override_options_internal): Update to set - PARAM_PREFETCH_DYNAMIC_STRIDES. - * doc/invoke.texi (prefetch-dynamic-strides): Document new option. - * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New. - * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define. - * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for - prefetch-dynamic-strides setting. - -2018-05-07 Luis Machado - - * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) - : New const int field. - * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include - minimum_stride field. - (exynosm1_prefetch_tune): Likewise. - (thunderxt88_prefetch_tune): Likewise. - (thunderx_prefetch_tune): Likewise. - (thunderx2t99_prefetch_tune): Likewise. - (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048. - (aarch64_override_options_internal): Update to set - PARAM_PREFETCH_MINIMUM_STRIDE. - * doc/invoke.texi (prefetch-minimum-stride): Document new option. - * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New. - * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define. - * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if - stride is constant and is below the minimum stride threshold. - -2018-05-06 Jakub Jelinek - - PR c++/85659 - * cfgexpand.c (expand_asm_stmt): Don't create a temporary if - the type is addressable. Don't force op into register if it has - BLKmode. - -2018-05-05 Roland McGrath - - PR other/77609 - * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for - any section for which we don't know a specific type it should have, - regardless of name. Previously this was done only for the exact - names ".init_array", ".fini_array", and ".preinit_array". - (default_elf_asm_named_section): Add comment about - relationship with default_section_type_flags and SECTION_NOTYPE. - (get_section): Don't consider it a type conflict if one side has - SECTION_NOTYPE and the other doesn't, as long as neither has the - SECTION_BSS et al used in the default_section_type_flags logic. - -2018-05-05 Tom de Vries - - PR target/85653 - * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define. - (workaround_barsyncs): New function. - (nvptx_reorg): Use workaround_barsyncs. - * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR. - (define_expand "nvptx_membar_cta"): New define_expand. - (define_insn "*nvptx_membar_cta"): New insn. - -2018-05-04 Pekka Jääskeläinen - - * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs. - To improve optimization opportunities. - * builtin-types.def: The new needed builtin types for the above. - -2018-05-04 Richard Biener - - * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check. - * gimple-ssa-store-merging.c - (imm_store_chain_info::output_merged_store): Remove redundant create, - release split_store vector contents on failure. - * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking - scalar stmt vector on cache hit. - -2018-05-04 Segher Boessenkool - - * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove - Xilinx FP support. - * config.gcc (powerpc-xilinx-eabi*): Remove. - * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP - support. - (fusion_addis_mem_combo_load): Ditto. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx - FP support. - (rs6000_cpu_cpp_builtins): Ditto. - * config/rs6000/rs6000-linux.c - (rs6000_linux_float_exceptions_rounding_supported_p): Ditto. - * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete. - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP - support. - (rs6000_setup_reg_addr_masks): Ditto. - (rs6000_init_hard_regno_mode_ok): Ditto. - (rs6000_option_override_internal): Ditto. - (legitimate_lo_sum_address_p): Ditto. - (rs6000_legitimize_address): Ditto. - (rs6000_legitimize_reload_address): Ditto. - (rs6000_legitimate_address_p): Ditto. - (abi_v4_pass_in_fpr): Ditto. - (setup_incoming_varargs): Ditto. - (rs6000_gimplify_va_arg): Ditto. - (rs6000_split_multireg_move): Ditto. - (rs6000_savres_strategy): Ditto. - (rs6000_emit_prologue_components): Ditto. - (rs6000_emit_epilogue_components): Ditto. - (rs6000_emit_prologue): Ditto. - (rs6000_emit_epilogue): Ditto. - (rs6000_elf_file_end): Ditto. - (rs6000_function_value): Ditto. - (rs6000_libcall_value): Ditto. - * config/rs6000/rs6000.h: Ditto. - (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ... - (TARGET_MINMAX): ... this. New. - (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete. - * config/rs6000/rs6000.md: Remove Xilinx FP support. - (*movsi_internal1_single): Delete. - * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu, - mfpu=, mxilinx-fpu): Delete. - * config/rs6000/singlefp.h: Delete. - * config/rs6000/sysv4.h: Remove Xilinx FP support. - * config/rs6000/t-rs6000: Ditto. - * config/rs6000/t-xilinx: Delete. - * config/rs6000/titan.md: Adjust for fp_type removal. - * config/rs6000/vsx.md: Remove Xilinx FP support. - (VStype_simple): Delete. - (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete. - * config/rs6000/xfpu.h: Delete. - * config/rs6000/xfpu.md: Delete. - * config/rs6000/xilinx.h: Delete. - * config/rs6000/xilinx.opt: Delete. - * doc/invoke.texi (RS/6000 and PowerPC Options): Remove - -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu. - -2018-05-04 Tom de Vries - - PR libgomp/85639 - * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target - if ignore == 0. - -2018-05-04 Richard Biener - - PR middle-end/85627 - * tree-complex.c (update_complex_assignment): We are always in SSA form. - (expand_complex_div_wide): Likewise. - (expand_complex_operations_1): Likewise. - (expand_complex_libcall): Preserve EH info of the original stmt. - (tree_lower_complex): Handle removed blocks. - * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW - on complex multiplication and division libcall builtins. - -2018-05-04 Richard Biener - - PR middle-end/85574 - * fold-const.c (negate_expr_p): Restrict negation of operand - zero of a division to when we know that can happen without - overflow. - (fold_negate_expr_1): Likewise. - -2018-05-04 Jakub Jelinek - - PR libstdc++/85466 - * real.h (real_nextafter): Declare. - * real.c (real_nextafter): New function. - * fold-const-call.c (fold_const_nextafter): New function. - (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and - CASE_CFN_NEXTTOWARD. - (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss - even when arg1_mode is different from arg0_mode. - -2018-05-03 Nathan Sidwell - - * doc/extend.texi (Deprecated Features): Remove - -ffriend-injection. - (Backwards Compatibility): Likewise. - * doc/invoke.texi (C++ Language Options): Likewise. - (C++ Dialect Options): Likewise. - -2018-05-03 Jakub Jelinek - - PR target/85530 - * config/i386/avx512fintrin.h (_mm512_mullox_epi64, - _mm512_mask_mullox_epi64): New intrinsics. - -2018-05-03 Tom de Vries - - PR testsuite/85106 - * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization - dump files): Add offload-tree. - -2018-05-03 Richard Biener - - PR tree-optimization/85615 - * tree-ssa-threadupdate.c (thread_block_1): Only allow exits - to loops not nested in BBs loop father to avoid creating multi-entry - loops. - -2018-05-03 Kyrylo Tkachov - - PR tree-optimization/70291 - * tree-complex.c (expand_complex_libcall): Add type, inplace_p - arguments. Change return type to tree. Emit libcall as a new - statement rather than replacing existing one when inplace_p is true. - (expand_complex_multiplication_components): New function. - (expand_complex_multiplication): Expand floating-point complex - multiplication using the above. - (expand_complex_division): Rename inner_type parameter to type. - Update expand_complex_libcall call-site. - (expand_complex_operations_1): Update expand_complex_multiplication - and expand_complex_division call-sites. - -2018-05-02 Jakub Jelinek - - PR target/85582 - * config/i386/i386.md (*ashl3_doubleword_mask, - *ashl3_doubleword_mask_1, *3_doubleword_mask, - *3_doubleword_mask_1): In condition require that - the highest significant bit of the shift count mask is clear. In - check whether and[sq]i3 is needed verify that all significant bits - of the shift count other than the highest are set. - -2018-05-02 Tom de Vries - - PR libgomp/82428 - * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define. - * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID) - (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin. - * builtins.c (expand_builtin_goacc_parlevel_id_size): New function. - (expand_builtin): Call expand_builtin_goacc_parlevel_id_size. - * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and - __builtin_goacc_parlevel_size. - -2018-05-02 Richard Biener - - PR tree-optimization/85597 - * tree-vect-stmts.c (vectorizable_operation): For ternary SLP - do not use split vect_get_vec_defs call but call vect_get_slp_defs - directly. - -2018-05-02 Tom de Vries - - PR testsuite/85106 - * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization - dump files): Add ltrans-tree. - -2018-05-02 Tom de Vries - - PR testsuite/85106 - * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization - dump files): Add wpa-ipa. - -2018-05-02 Segher Boessenkool - - * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the - powerpc*-*-linux*paired* target. - * config/rs6000/750cl.h: Delete. - * config/rs6000/paired.h: Delete. - * config/rs6000/paired.md: Delete. - * config/rs6000/predicates.md (easy_vector_constant): Remove paired - float support. - * config/rs6000/rs6000-builtin.def: Remove paired float support. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update - comment. Remove paired float support. - * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI. - * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete - VECTOR_PAIRED. - * config/rs6000/rs6000-protos.h (paired_expand_vector_init, - paired_emit_vector_cond_expr, paired_expand_vector_move): Delete - declarations. - * config/rs6000/rs6000.c: Remove paired float support. - (paired_expand_vector_init, paired_expand_vector_move, - paired_emit_vector_compare, paired_emit_vector_cond_expr, - (paired_expand_lv_builtin, paired_expand_stv_builtin, - paired_expand_builtin, paired_expand_predicate_builtin, - paired_init_builtins): Delete. - * config/rs6000/rs6000.h: Remove paired float support. - * config/rs6000/rs6000.md: Remove paired float support. - (move_from_CR_ov_bit): Delete. - * config/rs6000/rs6000.opt (mpaired): Delete. - * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES. - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired. - -2018-05-02 Richard Biener - - PR middle-end/85567 - * gimplify.c (gimplify_save_expr): When in SSA form allow - SAVE_EXPRs to compute to SSA vars. - -2018-05-02 Jakub Jelinek - - PR target/85582 - * config/i386/i386.md (*ashl3_doubleword_mask, - *ashl3_doubleword_mask_1, *3_doubleword_mask, - *3_doubleword_mask_1): If and[sq]i3 is needed, don't - clobber operands[2], instead use a new pseudo. Formatting fixes. - -2018-05-02 Richard Sandiford - - PR tree-optimization/85586 - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only - exit early for statements in the same group if the accesses are - not strided. - -2018-05-02 Tom de Vries - - PR lto/85451 - * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload" - error message. - -2018-05-01 Marc Glisse - - PR tree-optimization/85143 - * match.pd (A - - PR lto/85451 - * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler - not found" error message. - -2018-05-01 Tom de Vries - - PR other/83786 - * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define. - * vec.c (test_ordered_remove_if): New function. - (vec_c_tests): Call test_ordered_remove_if. - * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO. - * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF. - * tree-vect-patterns.c (vect_pattern_recog_1): Use - VEC_ORDERED_REMOVE_IF. - -2018-05-01 Prathamesh Kulkarni - - PR tree-optimization/82665 - * vr-values.c (vr_values::extract_range_from_binary_expr): Handle - pointer subtraction where arguments come from a memchr call. - -2018-05-01 Jakub Jelinek - - * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use - --push-state --as-needed and --pop-state instead of --as-needed and - --no-as-needed if ld supports it. - * configure: Regenerated. - - PR web/85578 - * doc/install.texi2html: Replace _002d with - and _002a with * in - generated html files using sed. - -2018-04-30 David Malcolm - - PR c++/85523 - * gcc-rich-location.c (blank_line_before_p): New function. - (use_new_line): New function. - (gcc_rich_location::add_fixit_insert_formatted): New function. - * gcc-rich-location.h - (gcc_rich_location::add_fixit_insert_formatted): New function. - -2018-04-30 David Malcolm - - * selftest.c (assert_streq): Rename "expected" and "actual" to - "val1" and "val2". Extend NULL-handling to cover both inputs - symmetrically, while still requiring both to be non-NULL for a pass. - * selftest.h (assert_streq): Rename "expected" and "actual" to - "val1" and "val2". - (ASSERT_EQ): Likewise. - (ASSERT_EQ_AT): Likewise. - (ASSERT_KNOWN_EQ): Likewise. - (ASSERT_KNOWN_EQ_AT): Likewise. - (ASSERT_NE): Likewise. - (ASSERT_MAYBE_NE): Likewise. - (ASSERT_MAYBE_NE_AT): Likewise. - (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for - the assertion to pass. - (ASSERT_STREQ_AT): Likewise. - -2018-04-30 Jonathan Wakely - - * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify - interaction with -pie. - -2018-04-30 David Malcolm - - * selftest.h: Fix alphabetization of per-source-file selftest - declarations. - -2018-04-30 Jason Merrill - - PR c++/61982 - dead stores to destroyed objects. - * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS - of clobber. - -2018-04-30 Jason Merrill - - * tree.c (build_clobber): New. - * tree.h: Declare it. - * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it. - -2018-04-30 David Malcolm - - * diagnostic-show-locus.c (layout::layout): Update for - location_get_source_line returning a char_span. - (struct char_span): Move to input.h. - (struct correction): Update for fields in char_span becoming - private. - (struct source_line): Update for location_get_source_line - returning a char_span. - (layout::print_line): Likewise. - * edit-context.c (edited_file::print_content): Likewise. - (edited_file::print_diff_hunk): Likewise. - (edited_file::print_run_of_changed_lines): Likewise. - (edited_file::get_num_lines): Likewise. - (edited_line::edited_line): Likewise. - * final.c (asm_show_source): Likewise. - * input.c (location_get_source_line): Convert return type - from const char * to char_span, losing the final "line_len" - param. - (dump_location_info): Update for the above. - (get_substring_ranges_for_loc): Likewise. Use a char_span - when handling the literal within the line. - (test_reading_source_line): Update for location_get_source_line - returning a char_span. - * input.h (class char_span): Move here from - diagnostic-show-locus.c, converting from a struct to a class. - Make data members private. - (char_span::operator bool): New. - (char_span::length): New. - (char_span::get_buffer): New. - (char_span::operator[]): New. - (char_span::subspan): Make const. - (char_span::xstrdup): New. - (location_get_source_line): Convert return type from const char * - to char_span, losing the final "line_size" param. - -2018-04-30 Jan Hubicka - - * lto-wrapper.c (ltrans_priorities): New static var. - (cmp_priority): New. - (run_gcc): Read priorities and if doing parallel build order - the Makefile by them. - -2018-04-30 David Malcolm - - * input.h (builtins_location_check): Convert to a STATIC_ASSERT. - -2018-04-30 Richard Biener - - * tree-cfg.c (verify_address): Remove base argument, add - flag whether to check TREE_ADDRESSABLE and do that. - (verify_expr): Remove. - (verify_types_in_gimple_reference): Add pieces from verify_expr. - (verify_gimple_assign_single): Likewise. - (verify_gimple_switch): Likewise. - (verify_expr_location_1): Dereference tp once. Add (disabled) - piece from verify_expr. - (verify_gimple_in_cfg): Do not call verify_expr on all ops. - -2018-04-30 Claudiu Zissulescu - - * config/arc/linux.h (CLEAR_INSN_CACHE): Define. - -2018-04-30 Claudiu Zissulescu - - * config/arc/arc-protos.h (prepare_extend_operands): Remove. - (small_data_pattern): Likewise. - (arc_rewrite_small_data): Likewise. - * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove. - (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise. - (get_symbol_alignment): New function. - (legitimate_small_data_address_p): Likewise. - (legitimate_scaled_address): Update, call - legitimate_small_data_address_p. - (output_sdata): New static variable. - (arc_print_operand): Update how we handle small data operands. - (arc_print_operand_address): Likewise. - (arc_legitimate_address_p): Update, use - legitimate_small_data_address_p. - (arc_rewrite_small_data_p): Remove. - (arc_rewrite_small_data_1): Likewise. - (arc_rewrite_small_data): Likewise. - (small_data_pattern): Likewise. - (compact_sda_memory_operand): Update to use - legitimate_small_data_address_p and get_symbol_alignment. - (prepare_move_operands): Don't rewite sdata pattern. - (prepare_extend_operands): Remove. - * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata - pattern. - (zero_extendqisi2): Likewise. - (zero_extendhisi2): Likewise. - (extendqihi2): Likewise. - (extendqisi2): Likewise. - (extendhisi2): Likewise. - (addsi3): Likewise. - (subsi3): Likewise. - (andsi3): Likewise. - * config/arc/constraints.md (Usd): Change it to memory constraint. - -2018-04-30 Claudiu Zissulescu - - * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants - as source of std instructions. - * config/arc/arc.md (movsi_insn): Update pattern predicate to - allow 6-bit constants as source for store instructions. - (movdi_insn): Update instruction pattern to allow 6-bit constants - as source for store instructions. - -2018-04-30 Jonathan Wakely - - * doc/invoke.texi (-fdebug-types-section): Fix grammar. - -2018-04-30 Nathan Sidwell - Sandra Loosemore - - * dumpfile.c (dump_open): Allow '-' for stdout. - * doc/invoke.texi (Developer Options): Document dump filename - determination early. Document stdin/stdout selection. - -2018-04-30 Andrew Sadek - - Microblaze Target: PIC data text relative - - * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel. - * config/microblaze/microblaze-protos.h (microblaze_constant_address_p): - Add declaration. - * config/microblaze/microblaze.h (microblaze_constant_address_p): - CONSTANT_ADDRESS_P definition to microblaze_constant_address_p. - * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL): - New addressing mode for data-text relative position indepenedent code. - (microblaze_classify_unspec): add 'UNSPEC_TEXT' case -> - 'ADDRESS_SYMBOLIC_TXT_REL'. - (microblaze_classify_address): Add handling for UNSPEC + CONST_INT. - (microblaze_legitimate_pic_operand): Exclude function calls from - pic operands in case of TARGET_PIC_DATA_TEXT_REL option. - (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible - addresses cases. - (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case. - (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case. - (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling - for 'address + offset'. - (microblaze_expand_prologue): Add new function prologue call for - 'r20' assignation. - (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook - 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector - table in case of TARGET_PIC_DATA_TEXT_REL. - (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'. - * config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL): - Add new macros 'UNSPEC_TEXT', - 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue - + exclude function calls from 'UNSPEC_PLT' in case of data text - relative mode. - * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add - new target hook for generating address diff vector tables in case of - flag_pic. - * doc/tm.texi : Regenerate. - * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition - 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case - of addr diff vector generation. - * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add - target hook definition. - * targhooks.h, targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): - Add default function for generate_pic_addr_diff_vec -> flag_pic. - * doc/invoke.texi (Add new pic option): Add new microblaze pic - option for data text relative. - -2018-04-30 Richard Biener - - * tree-chrec.h (evolution_function_is_constant_p): Remove - redundant check. - * tree-cfg.c (tree_node_can_be_shared): Re-order checks. - -2018-04-30 Richard Biener - - PR bootstrap/85571 - * dwarf2out.c (gen_producer_string): Ignore -fchecking[=]. - -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. - -2018-04-28 Mark Wielaard - - * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for - dwarf_version >= 5. - (dwarf_AT): Handle DW_AT_addr_base. - (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base. - -2018-04-28 Uros Bizjak - - PR target/84431 - * config/i386/i386.md (*ashl3_doubleword_mask): New pattern. - (*ashl3_doubleword_mask_1): Ditto. - (*3_doubleword_mask): Ditto. - (*3_doubleword_mask_1): Ditto. - -2018-04-28 Richard Biener - - * tree-cfg.c (verify_gimple_phi): Take a gphi * argument. - (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts - to reflect use. Only add interesting stmts. - -2018-04-27 Martin Jambor - - PR ipa/85549 - * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure - the jump function allows for passing through aggregate values. - -2018-04-27 David Malcolm - - * input.h (in_system_header_at): Convert from macro to inline - function. - (from_macro_expansion_at): Likewise. - (from_macro_definition_at): Likewise. - -2018-04-27 Jeff Law - - * config.gcc: Mark tile* targets as deprecated/obsolete. - -2018-04-27 Richard Biener - - * config/aarch64/aarch64.c: Simplify ap.__stack advance and - fix for ILP32. - -2018-04-27 Richard Biener - - * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable. - -2018-04-27 Uros Bizjak - - * config/i386/i386.md (*movti_internal): Substitute Ye constraint - with Yd constraint. Set "preferred_for_speed" attribute from - TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives - with Yd constraint. - (*movdi_internal): Ditto. - (movti_interunit splitters): Remove - TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition. - (movdi_interunit splitters): Ditto. - * config/i386/constraints.md (Ye): Remove. - (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC. - -2018-04-27 Kyrylo Tkachov - - PR target/85512 - * config/aarch64/constraints.md (Usg): Limit to 31. - (Usj): Limit to 63. - -2018-04-27 Jakub Jelinek - - PR tree-optimization/85529 - * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB - argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE, - rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious - zero extension or masking of the MSB bit. - (optimize_range_tests): Add FIRST_BB argument, pass it through - to optimize_range_tests_var_bound. - (maybe_optimize_range_tests, reassociate_bb): Adjust - optimize_range_tests callers. - -2018-04-26 Richard Biener - Jakub Jelinek - - * cgraph.h (symbol_table): Just declare debug method here. - * symtab.c (symbol_table::debug): Define. - -2018-04-26 Eric Botcazou - - * loop-invariant.c (may_assign_reg_p): Return false for frame pointer. - -2018-04-26 Uros Bizjak - - * config/i386/i386.md ("isa" attribute): Add x64_sse2. - ("enabled" attribute): Handle x64_sse2 "isa" attribute. - (*movdi_internal): Substitute Yi and Yj constraint with x - and Ym and Yn constraint with y constraint. Update "isa" - attribute and set "preferred_for_speed" attribute from - TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives. - (*movsi_internal): Ditto. - (*movdf_internal): Ditto. - (*movsf_internal): Ditto. - (*zero_extendsidi2): Ditto. - * config/i386/sse.md (vec_set_0): Ditto. - (sse2_loadld): Ditto. - (*vec_extract_0): Ditto. - (*vec_extractv4si_0_zext_sse4): Ditto. - (vec_concatv2di): Ditto. - (*vec_dup): Ditto. - * config/i386/mmx.md (*mov_internal): Ditto. - * config/i386/constraints.md (Yi): Remove. - (Yj): Remove. - (Ym): Remove. - (Yn): Remove. - -2018-04-26 Nathan Sidwell - - * dumpfile.c (dump_open): New. - (dump_open_alternate_stream, dump_start, dump_begin): Call it. - (dump_finish): Detect stdio/stderr by value not name. - -2018-04-26 Jonathan Wakely - - * doc/invoke.texi (-Wreturn-type): Document default status for C++. - -2018-04-26 Tom de Vries - - PR target/84952 - * config/nvptx/nvptx.c (verify_neutering_jumps) - (verify_neutering_labels): New function - (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels. - -2018-04-26 Tom de Vries - - PR target/84025 - * config/nvptx/nvptx.c (needs_neutering_p): New function. - (nvptx_single): Use needs_neutering_p to skip over insns that do not - need neutering. - -2018-04-26 Richard Biener - Tom de Vries - - PR lto/85422 - * lto-streamer-out.c (output_function): Fixup loops if required to match - discovery done in the reader. - -2018-04-26 Richard Biener - - PR tree-optimization/85116 - * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should - have a loop exit from the single latch predecessor. Remove - case of header with just condition. - (ch_base::copy_headers): Exclude infinite loops from any - processing. - (pass_ch::execute): Record exits. - -2018-04-26 Richard Biener - - * tree-vect-data-refs.c (vect_get_data_access_cost): Get - prologue cost vector and pass it to vect_get_load_cost. - (vect_get_peeling_costs_all_drs): Likewise. - (vect_peeling_hash_get_lowest_cost): Likewise. - (vect_enhance_data_refs_alignment): Likewise. - -2018-04-26 Richard Biener - - PR middle-end/85450 - * tree-cfg.c (verify_gimple_assign_unary): Restore proper - checking of integer<->pointer conversions. - * omp-expand.c (expand_omp_for_static_nochunk): Avoid - sign-/zero-extending pointer types. - (expand_omp_for_static_chunk): Likewise. - -2018-03-22 Hans-Peter Nilsson - Jean Lee - - * config/mips/mips.c (mips_asan_shadow_offset): New function. - (TARGET_ASAN_SHADOW_OFFSET): Define. - * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be - true for -fsanitize=address. - -2018-04-25 Mark Wielaard - - * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before - shorter ones. - -2018-04-25 Jakub Jelinek - - * config/i386/i386.md (*x86_movcc_0_m1): Use type "alu1" rather - than "alu", remove explicit "memory" and "imm_disp" attributes. - (*x86_movcc_0_m1_se, *x86_movcc_0_m1_neg): Likewise. - - PR middle-end/85414 - * simplify-rtx.c (simplify_unary_operation_1) : Pass SUBREG_REG (op) rather than op to - gen_lowpart_no_emit. - -2018-04-25 Sebastian Peryt - - PR target/85473 - * config/i386/i386.c (ix86_expand_builtin): Change memory - operand to XI, extend p0 to Pmode. - * config/i386/i386.md: Change unspec volatile and operand - 1 mode to XI, change operand 0 mode to P. - -2018-04-25 Chung-Ju Wu - - * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with - GET_MODE_MASK before any checking. - (nds32_can_use_bset_p): Likewise. - (nds32_can_use_btgl_p): Likewise. - -2018-04-25 Chung-Ju Wu - - * config/nds32/nds32-doubleword.md: New define_split pattern for - illegal register number. - -2018-04-25 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier. - -2018-04-25 Chung-Ju Wu - - * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character. - -2018-04-25 Richard Biener - - * lto-streamer.h (LTO_major_version): Bump to 8. - -2018-04-25 Jakub Jelinek - - * BASE-VER: Set to 9.0.0. - -2018-04-24 Segher Boessenkool - - * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes - in __abskf2 and __powikf2. - -2018-04-24 Kyrylo Tkachov - - PR target/85512 - * config/aarch64/constraints.md (Usg, Usj): New constraints. - * config/aarch64/iterators.md (cmode_simd): New mode attribute. - * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_3): - Use the above on operand 2. Reindent. - (*aarch64_lshr_sisd_or_int_3): Likewise. - -2018-04-24 H.J. Lu - - PR target/85485 - * common/config/i386/i386-common.c (ix86_handle_option): Don't - handle OPT_mcet. - * config/i386/i386.opt (mcet): Removed. - * doc/install.texi: Remove -mcet documentation. - * doc/invoke.texi: Likewise. - -2018-04-24 H.J. Lu - - PR target/85485 - * doc/install.texi: Remove -mcet from bootstrap-cet. - -2018-04-24 Jakub Jelinek - - PR target/85511 - * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define - __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32 - if TARGET_64BIT. - - PR target/85503 - * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if - const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool - containing a CONST_VECTOR. - -2018-04-24 Cesar Philippidis - - * doc/install.texi: Update newlib dependency for nvptx. - -2018-04-24 Jakub Jelinek - - PR target/85508 - * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL - instead of INTVAL when shifting x left. - -2018-04-24 Andreas Krebbel - - PR tree-optimization/85478 - * tree-vect-loop.c (vect_analyze_loop_2): Do not call - vect_grouped_store_supported for single element vectors. - -2018-04-24 Richard Biener - - PR target/85491 - * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided - load cost increase to the case of non-constant step. - -2018-04-24 Jakub Jelinek - - PR target/84828 - * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead - destination if any_malformed_asm. - -2018-04-23 Eric Botcazou - - PR middle-end/85496 - * expr.c (store_field): In the bitfield case, if the value comes from - a function call and is returned in registers by means of a PARALLEL, - do not change the mode of the temporary unless BLKmode and VOIDmode. - -2018-04-23 Andrey Belevantsev - - PR rtl-optimization/85423 - * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard - dependencies to debug insns when the previous insn is non-debug. - -2018-04-23 Claudiu Zissulescu - - * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec - enums into a single definition. - (fls): Fix predicates and printing. - (seti): Likewise. - -2018-04-23 Claudiu Zissulescu - - * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove. - * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers - and short u6 immediate. - (check_if_valid_sleep_operand): Remove. - * config/arc/arc.md (Sleep): Accepts registers and u6 immediates. - -2018-04-22 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_compute_stack_frame): Consider - flag_always_save_lp condition. - * config/nds32/nds32.opt (malways-save-lp): New option. - -2018-04-22 Shiva Chen - - * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare. - * config/nds32/nds32.c (nds32_use_load_post_increment): New. - * config/nds32/nds32.h - (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define. - (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define. - -2018-04-22 Shiva Chen - - * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove. - * config/nds32/nds32.c (nds32_ls_333_p): Remove. - -2018-04-22 Shiva Chen - Chung-Ju Wu - - * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode): - Declare. - * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function. - * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify. - -2018-04-22 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value. - -2018-04-22 Chung-Ju Wu - - * config/nds32/nds32-protos.h (nds32_data_alignment, - nds32_local_alignment): Declare. - * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment, - nds32_local_alignment): New functions. - (TARGET_CONSTANT_ALIGNMENT): Define. - * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define. - -2018-04-22 Chung-Ju Wu - - * config/nds32/nds32.c - (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file. - (TARGET_MODES_TIEABLE_P): Likewise. - -2018-04-22 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_asm_file_start): Display optimization - level Ofast and Og. - -2018-04-22 Monk Chiang - Chung-Ju Wu - - * config/nds32/constants.md (unspec_volatile_element): Add enum values - for unaligned access. - * config/nds32/nds32-intrinsic.c: Implementation of expanding - unaligned access. - * config/nds32/nds32-intrinsic.md: Likewise. - * config/nds32/nds32_intrinsic.h: Likewise. - * config/nds32/nds32.h (nds32_builtins): Likewise. - * config/nds32/nds32.opt (munaligned-access): New option. - * config/nds32/nds32.c (nds32_asm_file_start): Display - flag_unaligned_access status. - -2018-04-20 Kito Cheng - - * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if - -mno-relax is present. - * config/riscv/linux.h (LINK_SPEC): Ditto. - -2018-04-20 Martin Sebor - - PR c/85365 - * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict - for null pointers. - (gimple_fold_builtin_stxcpy_chk): Same. - * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same. - -2018-04-20 Michael Meissner - - PR target/85456 - * config/rs6000/rs6000.c (init_float128_ieee): Add support to call - __powikf2 when long double is IEEE 128-bit. - -2018-04-20 Kito Cheng - - * config/riscv/riscv.c (riscv_first_stack_step): Round up min - step to make sure stack always aligned. - -2018-04-20 Carl Love - - PR target/83402 - * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add - size check for arg0. - -2018-04-20 Nathan Sidwell - Tom de Vries - - PR target/85445 - * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining): - Emit insns for calls too. - (nvptx_find_par): Always look for worker-level predecessor insn. - (nvptx_propagate): Add is_call parm, return bool. Copy frame for - calls. - (nvptx_vpropagate, nvptx_wpropagate): Adjust. - (nvptx_process_pars): Propagate frames for calls. - -2018-04-20 H.J. Lu - - PR target/85469 - * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): - Removed. - (OPTION_MASK_ISA_IBT_UNSET): Likewise. - (ix86_handle_option): Don't handle OPT_mibt. - * config/i386/cet.h: Check __CET__ instead of __IBT__ and - __SHSTK__. - * config/i386/driver-i386.c (host_detect_local_cpu): Remove - has_ibt and ibt. - * config/i386/i386-c.c (ix86_target_macros_internal): Don't - check OPTION_MASK_ISA_IBT nor flag_cf_protection. - (ix86_target_macros): Define __CET__ with flag_cf_protection - for -fcf-protection. - * config/i386/i386.c (isa2_opts): Remove -mibt. - * config/i386/i386.h (TARGET_IBT): Removed. - (TARGET_IBT_P): Likewise. - (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt. - * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT. - * config/i386/i386.opt (mcet): Update help message. - (mshstk): Likewise. - (mibt): Removed. - * doc/invoke.texi: Remove -mibt. Document __CET__. Document - -mcet as an alias for -mshstk. - -2018-04-20 Richard Biener - - PR middle-end/85475 - * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential - complexity by forcing a single use of the multiply operand. - -2018-04-20 Martin Jambor - - ipa/85449 - * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding - recursion dependency to only apply to non-clones. - -2018-04-20 Martin Jambor - - ipa/85447 - * ipa-cp.c (create_specialized_node): Check that clones of - self-recursive edges exist during IPA-CP. - -2018-04-19 Toon Moene - - * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled - by -O3. - -2018-04-19 Jakub Jelinek - - PR tree-optimization/85467 - * fold-const.c (fold_ternary_loc) : Use - VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the - VECTOR_CST element to type. - -2018-04-19 H.J. Lu - - PR target/85397 - * config/i386/i386.h (STACK_SAVEAREA_MODE): New. - * config/i386/i386.md (builtin_setjmp_setup): Removed. - (builtin_longjmp): Likewise. - (save_stack_nonlocal): New pattern. - (restore_stack_nonlocal): Likewise. - -2018-04-19 H.J. Lu - - PR target/85404 - * config/i386/cet.c (file_end_indicate_exec_stack_and_cet): - Replace ASM_OUTPUT_LABEL with fprintf. - -2018-04-19 H.J. Lu - - PR target/85417 - * config/i386/cet.c (file_end_indicate_exec_stack_and_cet): - Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK. - * config/i386/i386-c.c (ix86_target_macros_internal): Also - define __IBT__ and __SHSTK__ for -fcf-protection. - * config/i386/i386.c (pass_insert_endbranch::gate): Don't check - TARGET_IBT. - (ix86_trampoline_init): Likewise. - (x86_output_mi_thunk): Likewise. - (ix86_notrack_prefixed_insn_p): Likewise. - (ix86_option_override_internal): Don't disallow -fcf-protection. - * config/i386/i386.md (rdssp): Also enable for - -fcf-protection. - (incssp): Likewise. - (nop_endbr): Likewise. - * config/i386/i386.opt (mcet): Change help message to built-in - functions only. - (mibt): Likewise. - (mshstk): Likewise. - * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition - on -fcf-protection. Change -mcet, -mibt and -mshstk to only - enable CET built-in functions. - -2018-04-19 Sebastian Peryt - - * common/config/i386/i386-common.c - (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET, - OPTION_MASK_ISA_MOVDIRI_UNSET, - OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines. - (ix86_handle_option): Handle -mmovdiri and -mmovdir64b. - * config.gcc (movdirintrin.h): New header. - * config/i386/cpuid.h (bit_MOVDIRI, - bit_MOVDIR64B): New bits. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri - and -mmvodir64b. - * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED), - (VOID, PVOID, PCVOID)): New function types. - * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32, - __builtin_ia32_directstoreu_u64, - __builtin_ia32_movdir64b): New builtins. - * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New. - * config/i386/i386.c (ix86_target_string): Added -mmovdir64b - and -mmovdiri. - (ix86_valid_target_attribute_inner_p): Ditto. - (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED - and VOID_FTYPE_PUNSIGNED_UNSIGNED. - (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B. - * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P, - TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New. - * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New. - (movdiri, movdir64b_): New. - * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b. - * config/i386/immintrin.h: Include movdirintrin.h. - * config/i386/movdirintrin.h: New file. - * doc/invoke.texi: Added -mmovdiri and -mmovdir64b. - -2018-04-19 Richard Biener - - PR middle-end/85455 - * cfg.c (clear_bb_flags): When loop state says we have - marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP. - -2018-04-19 Richard Biener - - PR tree-optimization/84737 - * tree-vect-data-refs.c (vect_copy_ref_info): New function - copying restrict info. - (vect_setup_realignment): Use it. - * tree-vectorizer.h (vect_copy_ref_info): Declare. - * tree-vect-stmts.c (vectorizable_store): Copy ref info from - the first DR to all generated stores. - (vectorizable_load): Likewise for loads. - -2018-04-19 Jakub Jelinek - - PR tree-optimization/85446 - * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require - the integral and pointer types to have the same precision. - - * doc/install.texi: Document --disable-cet being the default and - --enable-cet=auto. - -2018-04-18 Martin Liska - - * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding - style. - -2018-04-18 Martin Liska - - Revert - 2018-03-02 Eric Botcazou - - PR ipa/83983 - * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both - arguments if they are comparable. - -2018-04-18 Martin Liska - - Revert - 2018-03-13 Eric Botcazou - - PR lto/84805 - * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of - incomplete types. - -2018-04-18 H.J. Lu - - PR target/85388 - * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert - ENDBR after calling __morestack. - -2018-04-18 David Malcolm - - PR jit/85384 - * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version - by using gcc_base_ver to generate a gcc_driver_version, and use - it when generating GCC_DRIVER_NAME. - * configure: Regenerate. - -2018-04-18 Jakub Jelinek - - PR target/81084 - * config.gcc: Obsolete powerpc*-*-*spe*. - -2018-04-17 Jakub Jelinek - - PR debug/84637 - * dbxout.c (dbxout_int): Perform negation in unsigned int type. - (stabstr_D): Change type of unum from unsigned int to - unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT - type. - -2018-04-17 Jim Wilson - - PR 84856 - * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to - RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size. - Set arg_pointer_offset after using pretend_args_size. - -2018-04-17 Jakub Jelinek - - PR rtl-optimization/85431 - * dse.c (record_store): Ignore zero width stores. - - PR sanitizer/85230 - * asan.c (handle_builtin_stack_restore): Adjust comment. Emit - __asan_allocas_unpoison call and last_alloca_addr = new_sp before - __builtin_stack_restore rather than after it. - * builtins.c (expand_asan_emit_allocas_unpoison): Pass - arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second - argument instead of virtual_dynamic_stack_rtx. - -2018-04-17 Kelvin Nilsen - - * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p): - New prototype. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Add note to error message to explain internal mapping of overloaded - built-in function name to non-overloaded built-in function name. - * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New - function. - -2018-04-17 Michael Meissner - - PR target/85424 - * config/rs6000/rs6000.md (pack): Do not try handle a pack - where the inputs overlap with the output. - -2018-04-17 Jakub Jelinek - - * config/i386/sse.md (vec_extract_lo_): Add - (=v, v) alternative and explicit "memory" attribute. - (vec_extract_lo_): Likewise. Also add - "type", "prefix", "prefix_extra", "length_immediate" and "mode" - attributes. - (vec_extract_lo_): Add (=v, v) alternative and use - "sselog1" type instead of "sselog". - (vec_extract_hi_): Use "sselog1" type instead of - "sselog". Remove explicit "memory" attribute. - (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory", - "type", "prefix", "prefix_extra", "length_immediate" and "mode" - attributes. - (vec_extract_hi_v32hi): Merge all alternatives into one, use - "sselog1" type instead of "sselog". Remove explicit "memory" - attribute. - (vec_extract_hi_v16hi): Merge each pair of alternatives into one, - use "sselog1" type instead of "sselog". Remove explicit "memory" - attribute. - (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory", - "type", "prefix", "prefix_extra", "length_immediate" and "mode" - attributes. - (vec_extract_hi_v64qi): Merge all alternatives into one, use - "sselog1" type instead of "sselog". Remove explicit "memory" - attribute. - (vec_extract_hi_v32qi): Merge each pair of alternatives into one, - use "sselog1" type instead of "sselog". Remove explicit "memory" - attribute. - - PR target/85430 - * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu. - - PR middle-end/85414 - * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG - on a SUBREG. - -2018-04-17 Martin Jambor - - PR ipa/85421 - * ipa-cp.c (create_specialized_node): Call - expand_all_artificial_thunks if necessary. - -2018-04-17 Martin Liska - - PR lto/85405 - * ipa-devirt.c (odr_types_equivalent_p): Remove trailing - in message, remote space in between '_G' and '('. - -2018-04-17 Jakub Jelinek - - PR target/85281 - * config/i386/sse.md (reduces, - avx512f_vmcmp3, - avx512f_vmcmp3_mask, - avx512f_sgetexp, - avx512f_rndscale, - avx512dq_ranges, - avx512f_vgetmant): - Use %2 instead of %2 for -masm=intel. - (avx512f_vcvtss2usi, avx512f_vcvtss2usiq, - avx512f_vcvttss2usi, - avx512f_vcvttss2usiq): Use %k1 instead of %1 for - -masm=intel. - (avx512f_vcvtsd2usi, avx512f_vcvtsd2usiq, - avx512f_vcvttsd2usi, - avx512f_vcvttsd2usiq, ufloatv2siv2df2): - Use %q1 instead of %1 for -masm=intel. - (avx512f_sfixupimm, - avx512f_sfixupimm_mask): Use %3 instead - of %3 for -masm=intel. - (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for - -masm=intel. - (*avx512vl_v2div2qi2_store): Use %w0 instead of %0 for - -masm=intel. - (*avx512vl_v4qi2_store): Use %k0 instead of %0 for - -masm=intel. - (avx512vl_v4qi2_mask_store): Use a single pattern with - %k0 and %1 for -masm=intel rather than two patterns, one with %0 and - %g1. - (*avx512vl_v8qi2_store): Use %q0 instead of %0 for - -masm=intel. - (avx512vl_v8qi2_mask_store): Use a single pattern with - %q0 and %1 for -masm=intel rather than two patterns, one with %0 and - %g1 and one with %0 and %1. - (avx512er_vmrcp28, - avx512er_vmrsqrt28): Use %1 instead of - %1 for -masm=intel. - (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask, - avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask, - avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order - of %0 and %{%4%} for -masm=intel. - (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz, - avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz, - avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap - order of %0 and %{%5%}%{z%} for -masm=intel. - -2018-04-17 Jan Hubicka - - PR lto/85405 - * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields. - -2018-04-17 Martin Liska - - PR ipa/85329 - * multiple_target.c (create_dispatcher_calls): Set apostrophes - for target_clone error message. Make default implementation - clone to be a local declaration. - (separate_attrs): Add new argument and check for an empty - string. - (expand_target_clones): Handle it. - (ipa_target_clone): Make redirection just for target_clones - functions. - -2018-04-16 Cesar Philippidis - Tom de Vries - - PR middle-end/84955 - * omp-expand.c (expand_oacc_for): Add dummy false branch for - tiled basic blocks without omp continue statements. - -2018-04-16 Aaron Sawdey - - PR target/83660 - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark - vec_extract expression as having side effects to make sure it gets - a cleanup point. - -2018-04-16 H.J. Lu - - PR target/85403 - * config/i386/i386.c (get_builtin_code_for_version): Check - error_mark_node. - -2018-04-16 Olga Makhotina - - PR target/84331 - * config.gcc: Support "skylake". - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - PROCESSOR_SKYLAKE. - * config/i386/i386.c (m_SKYLAKE): Define. - (processor_target_table): Add "skylake". - (ix86_option_override_internal): Add "skylake". - (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE, - PROCESSOR_CANNONLAKE. - (get_builtin_code_for_version): Fix priority for - PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER, - PROCESSOR_SKYLAKE-AVX512. - * config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE. - (processor_type): Add PROCESSOR_SKYLAKE. - -2018-04-16 Paolo Carlini - Jason Merrill - - PR c++/85112 - * convert.c (convert_to_integer_1): Use direct recursion for - enumeral types and types with a precision less than the number - of bits in their mode. - -2018-04-16 Julia Koval - - PR target/84413 - * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, - X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512 - -2018-04-14 Segher Boessenkool - - PR target/85293 - * config/rs6000/rs6000.opt (mdirect-move): Make deprecated. - * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move - and -mno-direct-move. - -2018-04-13 Paul A. Clarke - - PR target/83402 - * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}): - Ensure that vec_splat_s32 is only called with 0 <= shift < 16. - Ensure negative shifts result in {0}. - -2018-04-13 Vladimir Makarov - - PR rtl-optimization/79916 - * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard - regs (if any) to define how to gnerate SD moves when LRA is in - progress. - -2018-04-13 Jakub Jelinek - - PR rtl-optimization/85393 - * except.h (expand_dw2_landing_pad_for_region): Remove declaration. - * except.c (expand_dw2_landing_pad_for_region): Make static. - * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just - a label and unconditional jump to old_bb, rather than - expand_dw2_landing_pad_for_region insn(s) and jump to single_succ - basic block. - - PR rtl-optimization/85376 - * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and - zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX - instead of a specific value. - -2018-04-13 Jan Hubicka - Bin Cheng - - PR tree-optimization/82965 - PR tree-optimization/83991 - * cfgloopanal.c (expected_loop_iterations_unbounded): Add - by_profile_only parameter. - * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile - information if the loop was predicted to iterate too many times. - * cfgloop.h (expected_loop_iterations_unbounded): Update prototype - -2018-04-13 Jan Hubicka - - PR lto/71991 - * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for - always inline. - -2018-04-13 Martin Liska - Jakub Jelinek - - PR middle-end/81657 - * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET. - * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET. - * builtins.c (expand_builtin_memory_copy_args): Use - BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target, - handle dest_addr == pc_rtx. - -2018-04-12 Segher Boessenkool - - PR target/85291 - * config/rs6000/rs6000.md (fix_truncsi2): Use legacy code if - asked to not generate direct moves. - (fix_truncsi2_stfiwx): Similar. - (fix_truncsi2_internal): Similar. - -2018-04-12 Jakub Jelinek - - PR debug/83157 - * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST. - * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest, - lookup if dest in some wider mode is known to be const0_rtx and - if so, record permanent equivalence for it to be ZERO_EXTEND of - the narrower mode destination. - -2018-04-12 Cesar Philippidis - - * lto-streamer-out.c (output_function): Revert 259346. - * omp-expand.c (expand_oacc_for): Likewise. - -2018-04-12 Alexander Monakov - - PR rtl-optimization/85354 - * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call... - * sel-sched.c (sel_global_init): ... here. - -2018-04-12 Eric Botcazou - - PR target/85238 - * lto-wrapper.c (debug_objcopy): Open the files in binary mode. - * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO - mode for PE-COFF targets. - * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare. - (i386_pe_asm_lto_end): Likewise. - * config/i386/cygming.h (TARGET_ASM_LTO_START): Define. - (TARGET_ASM_LTO_END): Likewise. - * config/i386/winnt.c (saved_debug_info_level): New static variable. - (i386_pe_asm_lto_start): New function. - (i386_pe_asm_lto_end): Likewise. - -2018-04-12 Cesar Philippidis - Richard Biener - - PR middle-end/84955 - * lto-streamer-out.c (output_function): Fix CFG loop state before - streaming out. - * omp-expand.c (expand_oacc_for): Handle calls to internal - functions like regular functions. - -2018-04-12 Richard Biener - - PR lto/85371 - * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label] - for the early LTO debug to properly generate references to it - during DIE emission. Do not re-use that for the skeleton for - split-dwarf. - (dwarf2out_early_finish): Likewise. - -2018-04-12 Jakub Jelinek - - PR target/85328 - * config/i386/sse.md - (avx512dq_vextract64x2_1 split, - avx512f_vextract32x4_1 split, - vec_extract_lo_ split, vec_extract_lo_v32hi, - vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg - and output is a reg, avoid creating invalid lowpart subreg, but - instead split into a 512-bit move. Don't split if not AVX512VL, - input is xmm16+ reg and output is a mem. - (vec_extract_lo_, vec_extract_lo_v32hi, - vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is - xmm16+ reg and output is a mem. - -2018-04-12 Andreas Krebbel - - * config/s390/s390.c (s390_output_indirect_thunk_function): Check - also for flag_dwarf2_cfi_asm. - -2018-04-12 Jakub Jelinek - - PR rtl-optimization/85342 - * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use - a bool scalar var inside of the loop instead. Don't try to update - recog_data.operand after failed apply_change_group. - -2018-04-12 Tom de Vries - - PR target/85296 - * config/nvptx/nvptx.c (flexible_array_member_type_p): New function. - (nvptx_assemble_decl_begin): Add undefined param. Declare undefined - array with flexible array member as array without given dimension. - (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call - argument for undefined param to true. - -2018-04-11 Aaron Sawdey - - PR target/85321 - * doc/invoke.texi (RS/6000 and PowerPC Options): Document options - -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe - from PowerPC section. - * config/rs6000/sysv4.opt (mcall-): Improve help text. - * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim - help text that is too long. - * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim - help text that is too long. - * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim - help text that is too long. - -2018-04-11 Uros Bizjak - - * config/alpha/alpha.md (stack_probe_internal): Rename - from "probe_stack". Update all callers. - -2018-04-11 Alexander Monakov - - PR rtl-optimization/84566 - * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking - sched_macro_fuse_insns. - -2018-04-11 Alexander Monakov - - PR target/84301 - * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here... - (compute_block_dependences): ... from here. - -2018-04-11 Jakub Jelinek - - PR tree-optimization/85331 - * vec-perm-indices.h (vec_perm_indices::clamp): Change input type - from int to HOST_WIDE_INT. - -2018-04-11 Martin Jambor - - PR ipa/84149 - * ipa-cp.c (propagate_vals_across_pass_through): Expand comment. - (cgraph_edge_brings_value_p): New parameter dest_val, check if it is - not the same as the source val. - (cgraph_edge_brings_value_p): New parameter. - (gather_edges_for_value): Pass destination value to - cgraph_edge_brings_value_p. - (perhaps_add_new_callers): Likewise. - (get_info_about_necessary_edges): Likewise and exclude values brought - only by self-recursive edges. - (create_specialized_node): Redirect only clones of self-calling edges. - (+self_recursive_pass_through_p): New function. - (find_more_scalar_values_for_callers_subset): Use it. - (find_aggregate_values_for_callers_subset): Likewise. - (known_aggs_to_agg_replacement_list): Removed. - (decide_whether_version_node): Re-calculate known constants for all - remaining context clones. - -2018-04-11 Richard Biener - - PR lto/85339 - * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute - from early DWARF output. - (dwarf2out_early_finish): Output line info unconditionally into - early DWARF and add reference to it. - -2018-04-11 Jakub Jelinek - - PR target/85281 - * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases. - (_vec_dup): Use a single pattern for modes - other than V2DFmode using iptr mode attribute. - (_vec_dup): Use iptr mode attribute. - -2018-04-11 Alexander Monakov - - PR rtl-optimization/84659 - * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg. - -2018-04-11 Jakub Jelinek - - PR debug/85302 - * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if - SIZEP is NULL. - (output_loc_list): Pass address of a dummy size variable even in the - locview handling loop. - (index_location_lists): Add comment on why skip_loc_list_entry can't - call size_of_locs. - -2018-04-11 Thomas Preud'homme - - PR target/85261 - * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand - into register. - -2018-04-10 Aaron Sawdey - - PR target/85321 - * doc/invoke.texi (RS/6000 and PowerPC Options): Document options - -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit, - and -mstring-compare-inline-limit. - -2018-04-10 Segher Boessenkool - - PR target/85287 - * config/rs6000/rs6000.md (allocate_stack): Put the residual size - for stack clash protection in a register whenever we need it to be in - a register. - -2018-04-10 Segher Boessenkool - - * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct): - Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF. - -2018-04-10 Segher Boessenkool - - PR target/85321 - * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in - the help text. - (mlong-double-): Ditto. - * config/rs6000/sysv4.opt (msdata=): Ditto. - (mtls-size=): Ditto. - -2018-04-10 Kelvin Nilsen - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove - erroneous entries for - "vector int vec_ldl (int, long int *)", and - "vector unsigned int vec_ldl (int, unsigned long int *)". - Add comments and entries for - "vector bool char vec_ldl (int, bool char *)", - "vector bool short vec_ldl (int, bool short *)", - "vector bool int vec_ldl (int, bool int *)", - "vector bool long long vec_ldl (int, bool long long *)", - "vector pixel vec_ldl (int, pixel *)", - "vector long long vec_ldl (int, long long *)", - "vector unsigned long long vec_ldl (int, unsigned long long *)". - * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new - type tree bool_long_long_type_node and correct definition of - bool_V2DI_type_node to make reference to this new type tree. - (rs6000_mangle_type): Replace erroneous reference to - bool_long_type_node with bool_long_long_type_node. - * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add - comments to emphasize sign distinctions for char and int types and - replace RS6000_BTI_bool_long constant with - RS6000_BTI_bool_long_long constant. Also add comment to restrict - use of RS6000_BTI_pixel. - (bool_long_type_node): Remove this macro definition. - (bool_long_long_type_node): New macro definition - -2018-04-10 Jakub Jelinek - - PR rtl-optimization/85300 - * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also - into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if - simplify_unary_operation fails. - -2018-04-10 Martin Liska - - * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node, - cgraph_edge and ipa_ref. - -2018-04-10 Jakub Jelinek - - PR target/85177 - PR target/85255 - * config/i386/sse.md - (_vinsert_mask): Fix - computation of the VEC_MERGE selector from mask. - (_vinsert_1): - Fix decoding of the VEC_MERGE selector into mask. - -2018-04-10 Richard Sandiford - - PR tree-optimization/85286 - * tree-vect-data-refs.c (vect_get_smallest_scalar_type): - -2018-04-10 Richard Sandiford - - * final.c (final_1): Set insn_last_address as well as - insn_current_address. - -2018-04-10 Kyrylo Tkachov - - PR target/85173 - * explow.c (emit_stack_probe): Call validize_mem on memory location - before passing it to gen_probe_stack. Create address operand and - legitimize it for the probe_stack_address case. - -2018-04-09 Jan Hubicka - - PR lto/85078 - * ipa-devirt.c (rebuild_type_inheritance-hash): New. - * ipa-utils.h (rebuild_type_inheritance-hash): Declare. - * tree.c (free_lang_data_in_type): Fix handling of binfos; - walk basetypes. - (free_lang_data): Rebuild type inheritance graph. - -2018-04-09 Martin Sebor - - * invoke.texi (-finline-small-functions): Mention other optimization - options. - (-findirect-inlining, -fpartial-inlining): Same. - (-finline-functions-called-once): Same. - (-freorder-blocks-and-partition): Same. - -2018-04-09 Jan Hubicka - - PR rtl/84058 - * cfgcleanup.c (try_forward_edges): Do not give up on crossing - jumps; choose last target that matches the criteria (i.e. - no partition changes for non-crossing jumps). - * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic - support for redirecting crossing jumps to non-crossing. - -2018-04-09 Alexey Brodkin - - * config/arc/arc.c (arc_expand_prologue): Set stack usage info - also for naked functions. - -2018-04-09 Claudiu Zissulescu - - * config/arc/arc.md (add_shift): New pattern. - (add_shift2): Likewise. - (sub_shift): Likewise. - (sub_shift_cmp0_noout): Likewise. - (compare_si_ashiftsi): Likewise. - (xbfu_cmp0_noout): New combine pattern. - (xbfu_cmp0"): Likewise. - (movsi_set_cc_insn): Place the predicable variant first. - (commutative_binary_cmp0_noout): Remove clobber. - (commutative_binary_cmp0): New pattern. - (noncommutative_binary_cmp0): Likewise. - (noncommutative_binary_cmp0_noout): Likewise. - (noncommutative_binary_comparison_result_used): Removed. - (rsub_cmp0): New pattern. - (rsub_cmp0_noout): Likewise. - (extzvsi): Changed, keep only meaningful variants. - (SQH, SEZ): New iterators. - (SQH_postfix): New mode attribute. - (SEZ_prefix): New code attribute. - (xt_cmp0_noout): New instruction pattern. - (xt_cmp0): Likewise. - * config/arc/predicates.md (cc_set_register): Use CC_REG instead - of numerical value. - (noncommutative_operator): Check the availability of barrel - shifter option. - -2018-04-09 Richard Biener - - PR tree-optimization/85284 - * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions): - Only use the niter constraining form of simple_iv when the exit - is always executed. - -2018-04-09 Tom de Vries - - PR target/84041 - * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR. - (define_expand "*memory_barrier"): New define_expand. - (define_insn "memory_barrier"): New insn. - -2018-04-09 Andrey Belevantsev - - PR rtl-optimization/80463 - PR rtl-optimization/83972 - PR rtl-optimization/83480 - - * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the - correct producer for the insn. - (tidy_control_flow): Fixup seqnos in case of debug insns. - -2018-04-09 Andrey Belevantsev - - PR rtl-optimization/83913 - - * sel-sched-ir.c (merge_expr_data): Choose the middle between two - different sched-times when merging exprs. - -2018-04-09 Andrey Belevantsev - - PR rtl-optimization/83962 - - * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call - tidy_fallthru_edge and tidy_control_flow. - -2018-04-09 Andrey Belevantsev - - PR rtl-optimization/83530 - - * sel-sched.c (force_next_insn): New global variable. - (remove_insn_for_debug): When force_next_insn is true, also leave only - next insn in the ready list. - (sel_sched_region): When the region wasn't scheduled, make another pass - over it with force_next_insn set to 1. - -2018-04-08 Monk Chiang - - * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h - into tm_file. - * config/nds32/constants.md (unspec_volatile_element): Add enum values - for interrupt control. - * config/nds32/nds32-intrinsic.c: Implementation of intrinsic - functions for interrupt control. - * config/nds32/nds32-intrinsic.md: Likewise. - * config/nds32/nds32_intrinsic.h: Likewise. - * config/nds32/nds32.h (nds32_builtins): Likewise. - -2018-04-08 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_init_machine_status, - nds32_legitimate_index_p, nds32_legitimate_address_p): Consider - strict_aligned_p field. - (nds32_expand_to_rtl_hook): New function. - (TARGET_EXPAND_TO_RTL_HOOK): Define. - * config/nds32/nds32.h (machine_function): Add strict_aligned_p field. - -2018-04-08 Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu. - * config/nds32/nds32-n7.md: New file. - * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7. - * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7 - pipeline. - * config/nds32/nds32-protos.h: More declarations for n7 pipeline. - * config/nds32/nds32.md (pipeline_model): Add n7. - * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus. - * config/nds32/pipelines.md: Include n7 settings. - -2018-04-08 Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu. - * config/nds32/nds32-e8.md: New file. - * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8. - * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8 - pipeline. - * config/nds32/nds32-protos.h: More declarations for e8 pipeline. - * config/nds32/nds32.md (pipeline_model): Add e8. - * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus. - * config/nds32/pipelines.md: Include e8 settings. - -2018-04-08 Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu. - * config/nds32/nds32-n8.md: New file. - * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8. - * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8 - pipeline. - * config/nds32/nds32-protos.h: More declarations for n8 pipeline. - * config/nds32/nds32-utils.c: More implementations for n8 pipeline. - * config/nds32/nds32.md (pipeline_model): Add n8. - * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus. - * config/nds32/pipelines.md: Include n8 settings. - -2018-04-08 Kito Cheng - Chung-Ju Wu - - * config.gcc (nds32*): Add nds32-utils.o into extra_objs. - * config/nds32/nds32-n9-2r1w.md: New file. - * config/nds32/nds32-n9-3r2w.md: New file. - * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type, - nds32_register_ports): New or modify for cpu n9. - * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9 - pipeline. - * config/nds32/nds32-protos.h: More declarations for n9 pipeline. - * config/nds32/nds32-utils.c: New file. - * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE, - TARGET_MUL_SLOW): Define. - * config/nds32/nds32.md (pipeline_model): New attribute. - * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports): - New options that support cpu n9. - * config/nds32/pipelines.md: Include n9 settings. - * config/nds32/t-nds32 (nds32-utils.o): Add dependency. - -2018-04-08 Chung-Ju Wu - - * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align - information if necessary. - (output_cond_branch_compare_zero): Likewise. - * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case. - (nds32_target_alignment): Refine for alignment. - * config/nds32/nds32.h (NDS32_ALIGN_P): Define. - (FUNCTION_BOUNDARY): Modify. - * config/nds32/nds32.md (call_internal, call_value_internal): Consider - align case. - * config/nds32/nds32.opt (malways-align, malign-functions): New. - -2018-04-08 Monk Chiang - - * config/nds32/constants.md (unspec_volatile_element): Add values for - TLB operation and data prefetch. - * config/nds32/nds32-intrinsic.c: Implementation of intrinsic - functions for TLB operation and data prefetch. - * config/nds32/nds32-intrinsic.md: Likewise. - * config/nds32/nds32_intrinsic.h: Likewise. - * config/nds32/nds32.c (nds32_dpref_names): Likewise. - (nds32_print_operand): Likewise. - * config/nds32/nds32.h (nds32_builtins): Likewise. - -2018-04-07 Thomas Koenig - Andrew Pinski - - PR middle-end/82976 - * match.pd: Use constant_boolean_node of correct type instead of - boolean_true_node or boolean_false_node for simplifying - pointer comparisons to zero. - -2018-04-07 Jakub Jelinek - - PR tree-optimization/80021 - * tree.c (verify_type_variant): Make error call in verify_variant_match - translatable and remove final full stop. - -2018-04-07 Chung-Ju Wu - - * config/nds32/constants.md (unspec_volatile_element): Add - UNSPEC_VOLATILE_EH_RETURN. - * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push, - nds32_output_stack_pop): Support dwarf exception handling process. - * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare. - * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf - exception handling process. - (nds32_compute_stack_frame): Likewise. - (nds32_return_addr_rtx): Likewise. - (nds32_initial_elimination_offset): Likewise. - (nds32_expand_prologue): Likewise. - (nds32_expand_epilogue): Likewise. - (nds32_dynamic_chain_address): New function. - * config/nds32/nds32.h (machine_function): Add fields for dwarf - exception handling. - (DYNAMIC_CHAIN_ADDRESS): Define. - (EH_RETURN_DATA_REGNO): Define. - (EH_RETURN_STACKADJ_RTX): Define. - * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement - patterns for dwarf exception handling. - -2018-04-07 Chung-Ju Wu - - * config/nds32/nds32.h: Clean up obsolete macros. - -2018-04-07 Monk Chiang - - * config/nds32/constants.md (unspec_element, unspec_volatile_element): - Add enum values for particular instructions. - * config/nds32/nds32-intrinsic.c: Implementation of expanding - particular intrinsic functions. - * config/nds32/nds32-intrinsic.md: Likewise. - * config/nds32/nds32_intrinsic.h: Likewise. - * config/nds32/nds32.h (nds32_builtins): Likewise. - * config/nds32/nds32.md (type): Add pbsad and pbsada. - (btst, ave): New patterns for particular instructions. - -2018-04-07 Monk Chiang - - * config/nds32/constants.md (unspec_element, unspec_volatile_element): - Add enum values for atomic load/store and memory sync. - * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store - and memory sync. - * config/nds32/nds32-intrinsic.md: Likewise. - * config/nds32/nds32_intrinsic.h: Likewise. - * config/nds32/nds32.h (nds32_builtins): Likewise. - -2018-04-07 Jakub Jelinek - - PR tree-optimization/85257 - * fold-const.c (native_encode_vector): If not all elts could fit - and off is -1, return 0 rather than offset. - * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass - (offseti - offset2) / BITS_PER_UNIT as 4th argument to - native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't - adjust buffer in native_interpret_expr call. - -2018-04-07 Monk Chiang - - * config/nds32/constants.md (unspec_volatile_element): Add cache - control enum values. - * config/nds32/nds32-intrinsic.c: Add cache control expand functions. - * config/nds32/nds32-intrinsic.md: Add cache control patterns. - * config/nds32/nds32.c (nds32_cctl_names): New. - (nds32_print_operand): Handle cache control register names. - * config/nds32/nds32.h (nds32_builtins): New enum values. - * config/nds32/nds32_intrinsic.h: Add cache control enum types and - macros. - * config/nds32/nds32.md (type): Add mmu. - * config/nds32/pipelines.md (simple_insn): Add mmu. - -2018-04-07 Chung-Ju Wu - - * config/nds32/nds32.md (type): Remove call. - * config/nds32/pipelines.md (simple_insn): Likewise. - -2018-04-07 Monk Chiang - - * config/nds32/constants.md (unspec_volatile_element): Add - UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and - UNSPEC_VOLATILE_FMFCFG. - * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin - description for fmfcfg and fmfcsr. - (bdesc_1arg): Add fmtcsr. - (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd. - (nds32_expand_builtin_impl): Deal with FPU intrinsic functions. - * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd, - unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr, - unspec_fmfcfg): New patterns. - * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG, - NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS, - NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD. - * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss, - __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr, - __nds32__fmfcfg): Define. - -2018-04-07 Monk Chiang - - * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more - intrinsic register names. - * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more - intrinsic register enum values and macros. - -2018-04-07 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition - for load/store addressing form. - (nds32_print_operand_address): Likewise. - -2018-04-06 Eric Botcazou - - PR target/85196 - * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands - based on LABEL_REF. Remove useless assertion. - (pic_address_needs_scratch): Fix formatting. - (sparc_legitimize_pic_address): Minor tweaks. - (sparc_delegitimize_address): Adjust assertion accordingly. - * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand - into symbolic_operand. - (movsi_high_pic_label_ref): Likewise. - (movsi_lo_sum_pic_label_ref): Likewise. - (movdi_pic_label_ref): Likewise. - (movdi_high_pic_label_ref): Likewise. - (movdi_lo_sum_pic_label_ref): Likewise. - -2018-04-06 Amaan Cheval - - * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for - custom LIB_SPEC setup. - -2018-04-06 Ruslan Bukin - Kito Cheng - - * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support. - * config/riscv/freebsd.h: New. - -2018-04-06 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_adjust_insn_length): Refine. - * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in - file. - -2018-04-06 Chung-Ju Wu - Kito Cheng - - * config/nds32/nds32-md-auxiliary.c (nds32_output_return, - nds32_output_call, nds32_symbol_binds_local_p): New functions. - * config/nds32/nds32-protos.h (nds32_output_call, - nds32_output_return): Declare. - * config/nds32/nds32.md: Refine all the call and return patterns. - -2018-04-06 Jakub Jelinek - - PR debug/85252 - * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only - build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST. - - PR rtl-optimization/84872 - * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if - nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is - EDGE_CROSSING edge. - -2018-04-06 Tamar Christina - - * expr.c (copy_blkmode_to_reg): Revert 254862. - * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise. - -2018-04-06 Richard Biener - - PR middle-end/85244 - * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref - after seeing a component reference with an adjacent field. Treat - refs to arrays at struct end of external decls similar to - refs to unconstrained commons. - -2018-04-06 Jakub Jelinek - - PR sanitizer/85213 - * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't - look through SAVE_EXPRs with non-side-effects argument. Adjust - recursive calls. - (fold_comparison): Adjust twoval_comparison_p caller, don't handle - save_p here. - -2018-04-06 Richard Biener - - PR middle-end/85180 - * alias.c (find_base_term): New wrapper around find_base_term - unwinding CSELIB_VAL_PTR changes. - (find_base_term): Do not restore CSELIB_VAL_PTR during the - recursion. - -2018-04-06 Andreas Krebbel - - * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP - instructions. - * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New - constant definitions. - ("nop"): lr 0,0 -> nopr r0 - ("nop_lr0", "nop_lr1"): New insn definitions. - -2018-04-06 Chung-Ju Wu - - * config/nds32/nds32.md (*stack_push, *stack_pop): Use - NDS32_V3PUSH_AVAILABLE_P macro. - -2018-04-06 Monk Chiang - Chung-Ju Wu - - * config.gcc (nds32*-*-*): Add v2j v3f v3s checking. - (nds32*-*-*): Add float and fpu_config into supported_defaults. - * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): - Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA. - * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN, - UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS. - * config/nds32/constraints.md: New constraints and checking for hard - float configuration. - * config/nds32/iterators.md: New mode iterator and attribute for hard - float configuration. - * config/nds32/nds32-doubleword.md: Use hard float alternatives and - patterns. - * config/nds32/nds32-fpu.md: New file. - * config/nds32/nds32-md-auxiliary.c: New functions and checkings to - deal with hard float code generation. - * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and - ARCH_V3S. - (abi_type, float_reg_number): New enum type. - * config/nds32/nds32-predicates.c: New predicates for hard float. - * config/nds32/nds32-protos.h: Declare functions for hard float. - * config/nds32/nds32.c: Implementation for hard float configuration. - * config/nds32/nds32.h: Definitions for hard float configuration. - * config/nds32/nds32.md: Include hard float machine description and - modify patterns for hard float configuration. - * config/nds32/nds32.opt: New options for hard float configuration. - * config/nds32/predicates.md: New predicates for hard float - configuration. - -2018-04-06 Kuan-Lin Chen - - * common/config/nds32/nds32-common.c - (nds32_option_optimization_table): Enable -mreleax-hint by default. - -2018-04-05 Jakub Jelinek - - PR middle-end/85195 - * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around - CONSTRUCTOR_ELT (ctor, ...)->value. - -2018-04-05 Uros Bizjak - - PR target/85193 - * config/i386/i386.md (define_attr "memory"): Handle rotate1 type. - -2018-04-05 Tom de Vries - - PR target/85204 - * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only - cond jump. - -2018-04-05 Shiva Chen - Kito Cheng - - * config/nds32/constraints.md (U33): Fine-tune checking condition. - * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto. - * config/nds32/nds32.h (nds32_16bit_address_type): Add - ADDRESS_POST_MODIFY_LO_REG_IMM3U. - -2018-04-05 Shiva Chen - Kito Cheng - - * config/nds32/constraints.md (Ufe): New memory constraint. - * config/nds32/nds32-md-auxiliary.c (nds32_mem_format, - nds32_output_16bit_load): Consider r8 register for lwi45.fe format. - * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe - operands. - * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U. - * config/nds32/nds32.md (*mov): Adjust pattern. - -2018-04-05 Chung-Ju Wu - - * config/nds32/nds32.md: Use optimize_size in the condition for - alu-shift instructions. - -2018-04-05 Chung-Ju Wu - - * config/nds32/nds32.md (divsi4, udivsi4): New patterns. - -2018-04-05 Chung-Ju Wu - - * config/nds32/nds32.md (negsi2): Refine pattern. - -2018-04-05 Kito Cheng - Chung-Ju Wu - - * config/nds32/iterators.md (shift_rotate): New code iterator. - (shift): New code attribute. - * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New. - * config/nds32/nds32-protos.h (nds32_expand_constant): Declare. - * config/nds32/nds32.c (nds32_print_operand): Deal with more cases. - * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for - bit-wise operations. - (andsi3, *andsi3): Ditto. - (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto. - (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto. - (si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto. - * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand, - nds32_ior_operand, nds32_xor_operand): New predicates. - -2018-04-05 Chung-Ju Wu - - * config/nds32/nds32.md (add3, sub3): Rename to ... - (addsi3, subsi3): ... this. - -2018-04-05 Chung-Ju Wu - - * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator. - -2018-04-05 Chung-Ju Wu - - * config/nds32/nds32.md: Adjust indention. - -2018-04-05 Kito Cheng - - * config/nds32/nds32.md (feature): New attribute. - -2018-04-05 Chung-Ju Wu - - * config/nds32/nds32.md (subtype): New attribute. - -2018-04-04 Thomas Preud'homme - - PR target/85203 - * config/arm/arm-builtins.c (arm_expand_builtin): Change - expansion to perform a bitwise AND of the argument followed by a - boolean negation of the result. - -2018-04-04 Peter Bergner - - PR rtl-optimization/84878 - * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine - the basic block. Assert the use reference is not artificial and that - it has an associated insn. - -2018-04-04 Michael Matz - - * builtins.c (compute_objsize): Pass correct operand - to array_at_struct_end_p. - -2018-04-04 Richard Biener - - PR lto/85176 - * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces - from contexts for DINFO_LEVEL_TERSE and below. - -2018-04-04 Kito Cheng - - * config/nds32/nds32-doubleword.md (move_): Require - resiter_operand condition. - * config/nds32/nds32.md (*move): Ditto. - -2018-04-04 Kito Cheng - Monk Chiang - - * config/nds32/nds32.md (movmisalign): New pattern. - -2018-04-04 Chung-Ju Wu - - * config/nds32/nds32.md (movqi, movhi): Merge into mov. - -2018-04-04 Chung-Ju Wu - Kito Cheng - - * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code, - nds32_cond_code_str, output_cond_branch, - output_cond_branch_compare_zero, nds32_expand_cbranch, - nds32_expand_cstore, nds32_expand_movcc, - nds32_output_cbranchsi4_equality_zero, - nds32_output_cbranchsi4_equality_reg, - nds32_output_cbranchsi4_equality_reg_or_const_int, - nds32_output_cbranchsi4_greater_less_zero: New functions. - * config/nds32/nds32-protos.h (nds32_expand_cbranch, - nds32_expand_cstore, nds32_expand_movcc, - nds32_output_cbranchsi4_equality_zero, - nds32_output_cbranchsi4_equality_reg, - nds32_output_cbranchsi4_equality_reg_or_const_int, - nds32_output_cbranchsi4_greater_less_zero): Declare. - * config/nds32/predicates.md (nds32_movecc_comparison_operator, - nds32_rimm11s_operand): New predicates. - * config/nds32/nds32.h (nds32_expand_result_type): New enum type. - * config/nds32/nds32.md: Rewrite all the branch and conditional move - patterns. - -2018-04-04 Kito Cheng - - * config/nds32/nds32-doubleword.md: Refine all the instruction type. - * config/nds32/nds32.md: Ditto. - * config/nds32/pipelines.md: Ditto. - -2018-04-04 Richard Biener - - PR tree-optimization/85168 - * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid - propagating abnormals. - -2018-04-04 Chung-Ju Wu - - * config/nds32/nds32.md (enabled): Use yes/no for this attribute. - -2018-04-04 Chung-Ju Wu - Kito Cheng - - * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function. - * config/nds32/nds32-protos.h (nds32_long_call_p): Declare. - * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function. - (TARGET_FUNCTION_OK_FOR_SIBCALL): Define. - * config/nds32/nds32.md (sibcall_internal): New. - (sibcall_register): Remove. - (sibcall_immediate): Remove. - (sibcall_value_internal): New. - (sibcall_value_register): Remove. - (sibcall_value_immediate): Remove. - * config/nds32/predicates.md (nds32_general_register_operand): New. - (nds32_call_address_operand): New. - -2018-04-03 Jakub Jelinek - - PR rtl-optimization/85167 - * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and - bb_defs if *split_p, instead preinitialize it to NULL. - - PR tree-optimization/85156 - * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid - evaluating the argument multiple times. - -2018-04-03 Bill Schmidt - - * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather - than vector. - (_mm_cvtpd_ps): Likewise. - (_mm_cvttpd_epi32): Likewise. - * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise. - * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine - vector, pixel, and bool following altivec.h include. - -2018-04-03 Martin Sebor - - * doc/extend.texi (Common Function Attributes): Clarify. - (const attribute): Likewise. - (pure attribute): Likewise. - -2018-04-03 Jakub Jelinek - - PR target/85169 - * config/i386/i386.c (ix86_expand_vector_set): Use - HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix. - -2018-04-03 Uros Bizjak - - * config/i386/i386.c (emit_i387_cw_initialization): Always use logic - instructions when changing rounding bits to preserve precision bits - in the x87 control word. - -2018-04-03 Martin Liska - - PR tree-optimization/82491 - * rtl.h (strip_offset_and_add): Replace += suboffset with - poly_uint64 () + suboffset. - -2018-03-29 Martin Liska - Martin Jambor - - PR ipa/84947 - * ipa-cp.c (propagate_bits_across_jump_function): Bail out if - param_type is not an integral or pointer type. - -2018-04-03 Richard Biener - - * sese.h (recompute_all_dominators): Remove. - -2018-04-02 Martin Sebor - - * doc/invoke.texi (-Wrestrict): Fix typos. - -2018-04-02 Jim Wilson - - * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero. - * config/riscv/riscv.md (si3): Use QImode shift count. - (di3, si3_extend): Likewise. - (si3_mask, si3_mask_1): New. - (di3_mask, di3_mask_1): New. - (si3_extend_mask, si3_extend_mask_1): New. - (lshrsi3_zero_extend_1): Use VOIDmode shift count. - * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count. - -2018-04-02 Gerald Pfeifer - - * doc/cpp.texi (Variadic Macros): Fix line continuation in an - example. - -2018-04-02 Chung-Ju Wu - - * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define. - (nds32_canonicalize_comparison): New function. - -2018-04-01 Chung-Ju Wu - Kito Cheng - Kuan-Lin Chen - - * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs. - * config/nds32/constants.md (unspec_volatile_element): Add - UNSPEC_VOLATILE_RELAX_GROUP. - * config/nds32/nds32-relax-opt.c: New file. - * config/nds32/nds32-predicates.c - (nds32_symbol_load_store_p): New function. - * config/nds32/nds32-protos.h - (nds32_symbol_load_store_p): Declare function. - (make_pass_nds32_relax_opt): Declare new rtl pass function. - * config/nds32/nds32.c - (nds32_register_pass): New function to register pass. - (nds32_register_passes): New function to register passes. - * config/nds32/nds32.md (relax_group): New pattern. - * config/nds32/nds32.opt (mrelax-hint): New option. - * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency. - -2018-04-01 Kito Cheng - - * config/nds32/t-nds32: Modify files dependency. - -2018-04-01 Chung-Ju Wu - - * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character. - (PROFILE_HOOK): Define its implementation. - -2018-04-01 Chung-Ju Wu - - * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int - type and 32-bit size. - -2018-04-01 Jakub Jelinek - - PR middle-end/85090 - * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F. - (V_128_256): New mode iterator. - (*avx512dq_vextract64x2_1 splitter): New define_split. - (*avx512f_vextract32x4_1 splitter): Likewise. - (xop_pcmov_): Use V_128_256 mode iterator instead - of V. - * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and - V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F. - -2018-03-31 Segher Boessenkool - - PR target/83315 - * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet) - NaN inputs correctly. - -2018-03-30 Peter Bergner - - PR target/80546 - * config/rs6000/vsx.md (??r): New mode attribute. - (*vsx_mov_64bit): Use it. - (*vsx_mov_32bit): Likewise. - -2018-03-30 Martin Sebor - - PR tree-optimization/84818 - * builtins.c (check_access): Use warning_n. - -2018-03-30 Aaron Sawdey - - PR target/83822 - * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant - condition. - * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant - condition. - -2018-03-30 Julia Koval - - PR target/84413 - * x86-tune.def (movx, partial_reg_dependency): Enable for - m_SKYLAKE_AVX512. - -2018-03-29 Vladimir Makarov - - PR inline-asm/84985 - * lra-constraints.c (process_alt_operands): Move setting - this_alternative_matches below. - -2018-03-29 Martin Liska - - PR lto/84995. - * doc/invoke.texi: Document how LTO works with debug info. - Describe auto-load support of binutils. Mention 'x86-64' - as valid option value of -march option. - -2018-03-29 Jakub Jelinek - - * config/i386/sse.md (_blendm): Use . - - PR c/85094 - * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT. - For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe - OEP_NO_HASH_CHECK for recursive call, to avoid exponential - checking. - -2018-03-28 Peter Bergner - - PR target/84912 - * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define. - (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64. - * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support - for RS6000_BTM_POWERPC64. - (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64 - (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64. - * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro - definition. - (DIVDE): Use it. - (DIVDEU): Likewise. - -2018-03-28 Carl Love - - Revert - 2017-09-27 Carl Love - - * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro. - (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins. - * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the - fctiw instruction. - -2018-03-28 Bill Schmidt - - * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool - instead of __vector bool. - (_mm_max_pu8): Likewise. - (_mm_min_pi16): Likewise. - -2018-03-28 Peter Bergner - - PR target/84912 - * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion. - (DIVWEUO): Likewise. - (DIVDEO): Likewise. - (DIVDEUO): Likewise. - * config/rs6000/rs6000.c (builtin_function_type): Remove support for - DIVWEUO and DIVDEUO. - * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs. - (UNSPEC_DIV_EXTEND): Remove deleted unspecs. - (div_extend): Likewise. - * doc/extend.texi (__builtin_divweo): Remove documentation for deleted - builtin function. - (__builtin_divweuo): Likewise. - (__builtin_divdeo): Likewise. - (__builtin_divdeuo): Likewise. - -2018-03-28 Jakub Jelinek - - PR target/85095 - * config/i386/i386.md (*add3_carry_0, *addsi3_carry_zext_0, - *sub3_carry_0, *subsi3_carry_zext_0): New patterns. - - PR tree-optimization/82004 - * gimple-match-head.c (optimize_pow_to_exp): New function. - * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE. - Don't fold to exp if optimize_pow_to_exp is false. - -2018-03-28 Martin Liska - - PR other/84819 - * calls.c (initialize_argument_information): Fix trailing space. - * common.opt: Fix typo and provide better explanation for - -fsanitize-coverage option. - * config/i386/i386.opt: Fix typo. - -2018-03-28 Jakub Jelinek - Martin Liska - - PR sanitizer/85081 - * gimplify.c (asan_poison_variable): Don't do the check for - gimplify_omp_ctxp here. - (gimplify_decl_expr): Do it here. - (gimplify_target_expr): Likewise. - -2018-03-28 Martin Liska - - PR target/84988 - * config/i386/i386.c (ix86_function_arg_advance): Do not call - chkp_type_bounds_count if MPX is not enabled. - -2018-03-27 Chung-Ju Wu - - * config/nds32/nds32.h (BRANCH_COST): Adjust cost. - -2018-03-27 Michael Meissner - - PR target/84914 - * config/rs6000/rs6000.c (create_complex_muldiv): New helper - function to create the function decl for complex long double - multiply and divide for -mabi=ieeelongdouble. - (init_float128_ieee): Call it. - -2018-03-27 H.J. Lu - - PR target/85044 - * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for - -fcf-protection=branch -mibt. - * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes. - -2018-03-27 Ramana Radhakrishnan - - PR target/81863 - * config/arm/arm.c (arm_valid_symbolic_address): Handle - arm_word_relocations. - -2018-03-27 Cesar Philippidis - - PR target/85056 - * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to - extern array declarations. - -2018-03-27 Richard Biener - - PR middle-end/84067 - * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with - explicit single_use checks. - -2018-03-27 Richard Biener - - PR tree-optimization/85082 - * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces): - Valueize the VUSE. - -2018-03-27 Ramana Radhakrishnan - - * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES - * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]): - Turn on fasynchronous-unwind-tables and funwind-tables. - -2018-03-26 Uros Bizjak - - PR target/85073 - * config/i386/i386.md (*bmi_blsr__cmp): New insn pattern. - (*bmi_blsr__ccz): Ditto. - -2018-03-26 Tom de Vries - - PR tree-optimization/85063 - * omp-general.c (offloading_function_p): New function. Factor out - of ... - * omp-offload.c (pass_omp_target_link::gate): ... here. - * omp-general.h (offloading_function_p): Declare. - * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable - with attribute omp declare target for offloading functions. - -2018-03-24 Richard Sandiford - - PR tree-optimization/84005 - * tree-data-ref.h (get_base_for_alignment): Declare. - * tree-data-ref.c (get_base_for_alignment_1): New function. - (get_base_for_alignment): Likewise. - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use - get_base_for_alignment to find a suitable base object, instead - of always using drb->base_address. - -2018-03-23 Jakub Jelinek - - PR inline-asm/85022 - * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have - known size by default. - -2018-03-23 Vladimir Makarov - - PR inline-asm/85030 - * lra-constraints.c (process_alt_operands): Don't match BLKmode - and non BLKmode operands. - -2018-03-23 Kyrylo Tkachov - - PR target/85026 - * config/arm/arm.md (unaligned_loadhis): Remove first alternative. - Clean up attributes. - -2018-03-23 Richard Biener - - PR debug/85020 - * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when - we are going to emit early debug for LTO. - -2018-03-23 Jakub Jelinek - - PR inline-asm/85034 - * function.c (match_asm_constraints_1): Don't optimize if input - doesn't satisfy general_operand predicate for output's mode. - - PR inline-asm/85022 - * alias.c (write_dependence_p): Don't require for x_canonicalized - non-VOIDmode if x has VOIDmode. - - PR sanitizer/85029 - * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base), - just don't try to optimize it rather than assert it never happens. - -2018-03-22 Kelvin Nilsen - - * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X - macro expansions for definition of ST_INTERNAL_ and - LD_INTERNAL_ builtins. - * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec): - Remove prototype. - * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this - function. - (altivec_expand_st_builtin): Likewise. - (altivec_expand_builtin): Remove calls to deleted functions. - (rs6000_address_for_altivec): Delete this function. - * config/rs6000/vector.md: Remove expands for - vector_altivec_load_ and vector_altivec_store_. - -2018-03-22 Sudakshina Das - - PR target/84826 - * config/arm/arm.h (machine_function): Add static_chain_stack_bytes. - * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid - re-computing once computed. - (arm_expand_prologue): Compute machine->static_chain_stack_bytes. - (arm_init_machine_status): Initialize - machine->static_chain_stack_bytes. - -2018-03-22 Kelvin Nilsen - - PR target/84760 - * doc/extend.texi: Add four new prototypes for vec_ld. - * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol - definitions for more logical presentation. - * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add - entries for V1TI variants of __builtin_altivec_ld builtin. - * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and - handling of V1TI variant of LVX icode pattern. - (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI. - (rs6000_gimple_fold_builtin): Likewise. - (altivec_init_builtins): Add code to define - __builtin_altivec_lvx_v1ti function. - -2018-03-22 Jakub Jelinek - - PR inline-asm/84941 - * function.c (match_asm_constraints_1): Don't do the optimization - if input isn't a REG, SUBREG, MEM or constant. - -2018-03-22 Tom de Vries - - PR tree-optimization/84956 - * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with - bb_has_abnormal_pred. - -2018-03-22 Jakub Jelinek - - PR sanitizer/85018 - * dwarf2asm.c (dw2_output_indirect_constant_1): Set - DECL_INITIAL (decl) to decl at the end. - * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change, - adjust the comment. - -2018-03-21 Joseph Myers - - * doc/extend.texi (__builtin_tgmath): Document when complex - integer types are treated as _Complex _Float64. - -2018-03-21 Tom de Vries - - * doc/extend.texi (__builtin_extend_pointer): Remove pasto. - -2018-03-21 Jakub Jelinek - - PR tree-optimization/84960 - * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb - if it is ENTRY block, move them into single succ of ENTRY in that case. - -2018-03-21 Richard Sandiford - - PR tree-optimization/84811 - * poly-int.h (poly_span_traits): Remove the T3 parameter and - promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT. - (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p): - (known_subrange_p): Update accordingly. Cast each value involved - in the size comparison, rather than casting the result of the - subtraction. - -2018-03-21 Jakub Jelinek - - PR tree-optimization/84982 - * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion - by flipping the least significant bit rather than all bits from - bitpos to bitpos + bitsize - 1. - -2018-03-21 Nathan Sidwell - - * doc/extend.texi (Deprecated Features): Remove mention of - long-deleted deprecations. - -2018-03-21 Rainer Orth - - PR jit/84288 - * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set. - * configure: Regenerate. - -2018-03-21 Tom de Vries - - PR tree-optimization/83126 - * tree-parloops.c (num_phis): New function. - (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure. - -2018-03-21 Nathan Sidwell - - * doc/extend.texi (Deprecated Features): Update deprecated flags, - mention anon-struct/union members and trailing attributes. - -2018-03-21 Bin Cheng - - PR tree-optimization/84969 - * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder - builtin memset partitions if they set different rhs values. - -2018-03-21 Jakub Jelinek - - PR rtl-optimization/84989 - * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify - VEC_DUPLICATE with scalar result mode. - -2018-03-21 Martin Liska - - PR ipa/84963 - * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove - not intended return statement. - -2018-03-21 Martin Liska - - PR target/84988 - * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. - (chkp_find_bound_slots_1): Limit number of iterations. - -2018-03-20 David H. Gutteridge - - PR target/84838 - * Minor grammar fixes for x86 options. - -2018-03-20 Jakub Jelinek - - PR debug/84875 - * dce.c (delete_unmarked_insns): Don't remove frame related noop moves - holding REG_CFA_RESTORE notes, instead turn them into a USE. - -2018-03-20 Peter Bergner - - PR target/83789 - * config/rs6000/altivec.md (altivec_lvx__2op): Delete define_insn. - (altivec_lvx__1op): Likewise. - (altivec_stvx__2op): Likewise. - (altivec_stvx__1op): Likewise. - (altivec_lvx_): New define_expand. - (altivec_stvx_): Likewise. - (altivec_lvx__2op_): New define_insn. - (altivec_lvx__1op_): Likewise. - (altivec_stvx__2op_): Likewise. - (altivec_stvx__1op_): Likewise. - * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders. - (rs6000_gen_lvx): Likewise. - * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise. - (altivec_expand_stv_builtin): Likewise. - (altivec_expand_builtin): Likewise. - * config/rs6000/vector.md: Likewise. - -2018-03-20 Kyrylo Tkachov - - PR target/82518 - * config/arm/arm.c (arm_array_mode_supported_p): Return false for - BYTES_BIG_ENDIAN. - -2018-03-20 Richard Biener - - PR target/84986 - * config/i386/i386.c (ix86_add_stmt_cost): Only cost - sign-conversions as zero, fall back to standard scalar_stmt - cost for the rest. - -2018-03-20 Martin Liska - - PR ipa/84825 - * predict.c (rebuild_frequencies): Handle case when we have - PROFILE_ABSENT, but flag_guess_branch_prob is false. - -2018-03-20 Jakub Jelinek - - PR target/84990 - * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off - flag_section_anchors. - * varasm.c (use_blocks_for_decl_p): Remove hack for - dw2_force_const_mem. - - PR target/84845 - * config/aarch64/aarch64.md (*aarch64_reg_3_neg_mask2): Rename - to ... - (*aarch64__reg_3_neg_mask2): ... this. If pseudos can't - be created, use lowpart_subreg of operands[0] rather than operands[0] - itself. - (*aarch64_reg_3_minus_mask): Rename to ... - (*aarch64_ashl_reg_3_minus_mask): ... this. - (*aarch64__reg_di3_mask2): Use const_int_operand predicate - and n constraint instead of aarch64_shift_imm_di and Usd. - (*aarch64_reg__minus3): Rename to ... - (*aarch64__reg_minus3): ... this. - -2018-03-20 Sudakshina Das - - PR target/82989 - * config/arm/neon.md (ashldi3_neon): Update ?s for constraints - to favor GPR over NEON registers. - (di3_neon): Likewise. - -2018-03-20 Tom de Vries - - PR target/84952 - * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync. - (nvptx_process_pars): Emit bar.sync asap and alap. - -2018-03-20 Tom de Vries - - PR target/84954 - * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update - seen_label if seen_label is already set. - -2018-03-20 Jakub Jelinek - - PR target/84945 - * config/i386/i386.c (fold_builtin_cpu): For features above 31 - use __cpu_features2 variable instead of __cpu_model.__cpu_features[0]. - Use 1U instead of 1. Formatting fixes. - - PR c/84953 - * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type - instead of TREE_TYPE (s1) for the return value. - -2018-03-19 Jakub Jelinek - - PR tree-optimization/84946 - * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute - bitsize + bitsize in poly_uint64 rather than poly_int64. - - PR sanitizer/78651 - * dwarf2asm.c: Include fold-const.c. - (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR - of decl rather than decl itself. - - PR rtl-optimization/84643 - * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator. - -2018-03-19 Maxim Ostapenko - - PR sanitizer/78651 - * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before - calling assemble_variable. - -2018-03-19 Sudakshina Das - - PR target/81647 - * config/aarch64/aarch64-simd.md (vec_cmp): Modify - instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED. - -2018-03-19 Jim Wilson - - PR bootstrap/84856 - * config/riscv/riscv.c (riscv_function_arg_boundary): Use - PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY. - (riscv_first_stack_step): Likewise. - (riscv_option_override): Use STACK_BOUNDARY instead of - MIN_STACK_BOUNDARY. - * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from - MIN_STACK_BOUNDARY. - (BIGGEST_ALIGNMENT): Set to 128. - (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY. - (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of - STACK_BOUNDARY. - -2018-03-19 Richard Biener - - PR tree-optimization/84933 - * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound - values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE. - -2018-03-19 Richard Biener - - PR tree-optimization/84859 - * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function. - (cond_if_else_store_replacement): Perform sinking operation on - single-store BBs regardless of MAX_STORES_TO_SINK setting. - Generalize what a BB with a single eligible store is. - -2018-03-19 Richard Biener - - PR tree-optimization/84929 - * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard - chrec_is_positive against non-chrec arg. - -2018-03-19 Tamar Christina - - PR target/84711 - * config/arm/arm.c (arm_can_change_mode_class): revert r258554. - -2018-03-18 Martin Liska - - PR rtl-optimization/84635 - * regrename.c (build_def_use): Use matches_mode only when - matches >= 0. - -2018-03-18 Richard Sandiford - - PR tree-optimization/84913 - * tree-vect-loop.c (vectorizable_reduction): Don't try to - vectorize chains of COND_EXPRs. - -2018-03-18 Chung-Ju Wu - - * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value. - -2018-03-18 Chung-Ju Wu - - * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define. - -2018-03-18 Chung-Ju Wu - - * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define. - -2018-03-17 Chung-Ju Wu - Kito Cheng - - * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare. - * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array. - (nds32_adjust_reg_alloc_order): New function. - * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define. - -2018-03-17 Kito Cheng - - * config/nds32/nds32.c (nds32_asm_output_mi_thunk, - nds32_print_operand, nds32_print_operand_address): Use - HOST_WIDE_INT_PRINT_DEC instead. - -2018-03-17 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_register_priority): Modify cost. - -2018-03-17 Jakub Jelinek - - PR target/84902 - * config/i386/i386.c (initial_ix86_tune_features, - initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than - unsigned long long. - (set_ix86_tune_features): Change ix86_tune_mask from unsigned int - to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune - rather than 1u << ix86_tune. Formatting fix. - (ix86_option_override_internal): Change ix86_arch_mask from - unsigned int to unsigned HOST_WIDE_INT, initialize to - HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch. - (ix86_function_specific_restore): Likewise. - -2018-03-16 Jakub Jelinek - - PR target/84899 - * postreload.c (reload_combine_recognize_pattern): Perform - INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and - truncate_int_for_mode the result for the destination's mode. - - PR c/84909 - * hsa-gen.c (mem_type_for_type): Fix comment typo. - * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks): - Likewise. - * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset): - Likewise. - -2018-03-16 Vladimir Makarov - - PR target/84876 - * lra-assigns.c (lra_split_hard_reg_for): Don't use - regno_allocno_class_array and sorted_pseudos. - * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in - insns where regno is used. - -2018-03-16 Martin Liska - - PR ipa/84833 - * multiple_target.c (create_dispatcher_calls): Redirect - reference in the symbol table. - -2018-03-16 Martin Liska - - PR ipa/84722 - * multiple_target.c (create_dispatcher_calls): Redirect also - an alias. - -2018-03-16 Jakub Jelinek - - PR c++/79937 - PR c++/82410 - * tree.h (TARGET_EXPR_NO_ELIDE): Define. - * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with - TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR. - -2018-03-16 Julia Koval - - * doc/invoke.texi (Skylake Server): Add CLWB. - Cannonlake): Remove CLWB. - -2018-03-16 Jakub Jelinek - - PR tree-optimization/84841 - * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from - 1 << 3. - (FLOAT_ONE_CONST_TYPE): Define. - (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0. - (sort_by_operand_rank): Put entries with higher constant_type last - rather than first to match comments. - -2018-03-15 Sandra Loosemore - - * config/nios2/nios2.md (movsi_internal): Fix thinko in - split predicate. - -2018-03-15 Jakub Jelinek - - PR c++/79085 - * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment - check and use address of target always. - -2018-03-15 H.J. Lu - - PR target/84574 - * config/i386/i386.c (indirect_thunk_needed): Update comments. - (indirect_thunk_bnd_needed): Likewise. - (indirect_thunks_used): Likewise. - (indirect_thunks_bnd_used): Likewise. - (indirect_return_needed): New. - (indirect_return_bnd_needed): Likewise. - (output_indirect_thunk_function): Add a bool argument for - function return. - (output_indirect_thunk_function): Don't generate alias for - function return thunk. - (ix86_code_end): Call output_indirect_thunk_function to generate - function return thunks. - (ix86_output_function_return): Set indirect_return_bnd_needed - and indirect_return_needed instead of indirect_thunk_bnd_needed - and indirect_thunk_needed. - -2018-03-15 Olga Makhotina - - * config/i386/sgxintrin.h (_enclv_u32): New intrinsic. - (__enclv_bc, __enclv_cd, __enclv_generic): New definitions. - (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves. - -2018-03-15 David Malcolm - Paul Hua - - PR c/84852 - * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp. - -2018-03-15 Segher Boessenkool - - * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the - TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode - resp. SFmode cases. - -2018-03-15 Tamar Christina - - PR target/84711 - * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE - instead of GET_MODE_SIZE when comparing Units. - -2018-03-15 Vladimir Mezentsev - - PR target/68256 - * varasm.c (hash_section): Return an unchangeble hash value - * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p): - Return !aarch64_can_use_per_function_literal_pools_p (). - -2018-03-15 Jakub Jelinek - - PR target/84860 - * optabs.c (emit_conditional_move): Pass address of cmode's copy - rather than address of cmode as last argument to prepare_cmp_insn. - -2018-03-15 Julia Koval - - * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ, - F_AVX512VNNI, F_AVX512BITALG): New. - -2018-03-14 John David Anglin - - PR target/83451 - * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload - insn for floating-point loads and stores. - -2018-03-14 Carl Love - - * config/rs6000/rs6000-c.c: Add macro definitions for - ALTIVEC_BUILTIN_VEC_PERMXOR. - * config/rs6000/rs6000.h: Add #define for vec_permxor builtin. - * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR. - * config/rs6000/altivec.md (altivec_vpermxor): New define expand. - * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case - UNSPEC_VPERMXOR. - * config/doc/extend.texi: Add prototypes for vec_permxor. - -2018-03-14 David Malcolm - - PR c/84852 - * diagnostic-show-locus.c (class layout_point): Convert m_line - from int to linenum_type. - (line_span::comparator): Use linenum "compare" function when - comparing line numbers. - (test_line_span): New function. - (layout_range::contains_point): Convert param "row" from int to - linenum_type. - (layout_range::intersects_line_p): Likewise. - (layout::will_show_line_p): Likewise. - (layout::print_source_line): Likewise. - (layout::should_print_annotation_line_p): Likewise. - (layout::print_annotation_line): Likewise. - (layout::print_leading_fixits): Likewise. - (layout::annotation_line_showed_range_p): Likewise. - (struct line_corrections): Likewise for field m_row. - (line_corrections::line_corrections): Likewise for param "row". - (layout::print_trailing_fixits): Likewise. - (layout::get_state_at_point): Likewise. - (layout::get_x_bound_for_row): Likewise. - (layout::print_line): Likewise. - (diagnostic_show_locus): Likewise for locals "last_line" and "row". - (selftest::diagnostic_show_locus_c_tests): Call test_line_span. - * input.c (selftest::test_linenum_comparisons): New function. - (selftest::input_c_tests): Call it. - * selftest.c (selftest::test_assertions): Test ASSERT_GT, - ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT. - * selftest.h (ASSERT_GT): New macro. - (ASSERT_GT_AT): New macro. - (ASSERT_LT): New macro. - (ASSERT_LT_AT): New macro. - -2018-03-14 Segher Boessenkool - - PR rtl-optimization/84780 - * combine.c (distribute_links): Don't make a link based on pc_rtx. - -2018-03-14 Martin Liska - - * tree.c (record_node_allocation_statistics): Use - get_stats_node_kind. - (get_stats_node_kind): New function extracted from - record_node_allocation_statistics. - (free_node): Use get_stats_node_kind. - -2018-03-14 Richard Biener - - * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts - that the value-set of ANTIC_IN doesn't grow. - - Revert - * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs - member. - (BB_VISITED_WITH_VISITED_SUCCS): New define. - (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS. - -2018-03-14 Julia Koval - - * config.gcc (icelake-client, icelake-server): New. - (icelake): Remove. - * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit. - (initial_ix86_arch_features): Ditto. - (PTA_SKYLAKE): Add SGX. - (PTA_ICELAKE): Remove. - (PTA_ICELAKE_CLIENT): New. - (PTA_ICELAKE_SERVER): New. - (ix86_option_override_internal): Split up icelake on icelake client and - icelake server. - (get_builtin_code_for_version): Ditto. - (fold_builtin_cpu): Ditto. - * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto. - * config/i386/i386-c.c (ix86_target_macros_internal): Ditto - * config/i386/i386.h (processor_type): Ditto. - * doc/invoke.texi: Ditto. - -2018-03-14 Jakub Jelinek - - PR sanitizer/83392 - * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also - INTEGER_CST offset, add it together with bitpos / 8 and - sign extend based on POINTER_SIZE. - - PR target/84844 - Revert - 2017-04-20 Uros Bizjak - - PR target/78090 - * config/i386/constraints.md (Yc): New register constraint. - * config/i386/i386.md (*float2_mixed): - Use Yc constraint for alternative 2 of operand 0. Remove - preferred_for_speed attribute. - -2018-03-14 Richard Biener - - PR tree-optimization/84830 - * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN - with the old one to avoid oscillations. - -2018-03-13 Vladimir Makarov - - PR target/83712 - * lra-assigns.c (find_all_spills_for): Ignore uninteresting - pseudos. - (assign_by_spills): Return a flag of reload assignment failure. - Do not process the reload assignment failures. Do not spill other - reload pseudos if they has the same reg class. Update n if - necessary. - (lra_assign): Add a return arg. Set up from the result of - assign_by_spills call. - (find_reload_regno_insns, lra_split_hard_reg_for): New functions. - * lra-constraints.c (split_reg): Add a new arg. Use it instead of - usage_insns if it is not NULL. - (spill_hard_reg_in_range): New function. - (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg. - * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New - function prototypes. - (lra_assign): Change prototype. - * lra.c (lra): Add code to deal with fails by splitting hard reg - live ranges. - -2018-03-01 Palmer Dabbelt - - * config/riscv/riscv.opt (mrelax): New option. - * config/riscv/riscv.c (riscv_file_start): Emit ".option - "norelax" when riscv_mrelax is disabled. - * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax". - -2018-03-13 Aaron Sawdey - - PR target/84743 - * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel - reassociation for int modes. - -2018-03-13 Richard Sandiford - - * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks): - Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR - for big-endian. - * config/aarch64/iterators.md (hi_lanes_optab): New int attribute. - * config/aarch64/aarch64-sve.md - (*aarch64_sve_): Rename to... - (aarch64_sve_): ...this. - (*extend2): Rename to... - (aarch64_sve_extend2): ...this. - (vec_unpack__): Turn into a define_expand, - renaming the old pattern to... - (aarch64_sve_punpk_): ...this. Only define - unsigned packs. - (vec_unpack__): Turn into a - define_expand, renaming the old pattern to... - (aarch64_sve_unpk_): ...this. - (*vec_unpacku___no_convert): Delete. - (vec_unpacks__): Take BYTES_BIG_ENDIAN into - account when deciding which SVE instruction the optab should use. - (vec_unpack_float__vnx4si): Likewise. - -2018-03-13 Richard Sandiford - - * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM) - (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM) - (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM) - (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants. - (tlsdesc_small_): Turn a define_expand and use - tlsdesc_small_sve_ for SVE. Rename original define_insn to... - (tlsdesc_small_advsimd_): ...this. - (tlsdesc_small_sve_): New pattern. - -2018-03-13 Richard Sandiford - - * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART) - (UNSPEC_UMUL_HIGHPART): New constants. - (MUL_HIGHPART): New int iteraor. - (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART. - * config/aarch64/aarch64-sve.md (mul3_highpart): New - define_expand. - (*mul3_highpart): New define_insn. - -2018-03-13 Eric Botcazou - - PR lto/84805 - * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of - incomplete types. - -2018-03-13 Martin Liska - - PR ipa/84658. - * (sem_item_optimizer::sem_item_optimizer): Initialize new - vector. - (sem_item_optimizer::~sem_item_optimizer): Release it. - (sem_item_optimizer::merge_classes): Register variable aliases. - (sem_item_optimizer::fixup_pt_set): New function. - (sem_item_optimizer::fixup_points_to_sets): Likewise. - * ipa-icf.h: Declare new variables and functions. - -2018-03-13 Jakub Jelinek - - PR middle-end/84834 - * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of - integer_pow2p@2 and test integer_pow2p in condition. - (A < 0 ? C : 0): Similarly for @1. - - PR middle-end/84831 - * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p) - characters starting at p contain '\0' character, don't look beyond - that. - - PR target/84827 - * config/i386/i386.md (round2): For 387 fancy math, disable - pattern if -ftrapping-math -fno-fp-int-builtin-inexact. - - PR target/84828 - * reg-stack.c (change_stack): Change update_end var from int to - rtx_insn *, if non-NULL don't update just BB_END (current_block), but - also call set_block_for_insn on the newly added insns and rescan. - - PR target/84786 - * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v - on the last operand. - - PR c++/84704 - * tree.c (stabilize_reference_1): Return save_expr (e) for - STATEMENT_LIST even if it doesn't have side-effects. - -2018-03-12 Jonathan Wakely - - * doc/invoke.texi (-mclflushopt): Fix spelling of option. - -2018-03-12 Renlin Li - - * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to - aarch64_output_scalar_simd_mov_immediate. - -2018-03-12 Martin Sebor - - PR tree-optimization/83456 - * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning - for perfectly overlapping calls to memcpy. - (gimple_fold_builtin_memory_chk): Same. - (gimple_fold_builtin_strcpy): Handle no-warning. - (gimple_fold_builtin_stxcpy_chk): Same. - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning. - -2018-03-12 Segher Boessenkool - - * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named" - parameter. Use it for SFmode. - (rs6000_function_arg_advance_1): Adjust. - (rs6000_function_arg): Adjust. - (rs6000_gimplify_va_arg): Pass false for that new parameter. - -2018-03-12 Segher Boessenkool - - PR rtl-optimization/84169 - PR rtl-optimization/84780 - * combine.c (can_combine_p): Check for a 2-insn combination whether - the destination register is used between the two insns, too. - -2018-03-12 Richard Biener - - PR tree-optimization/84803 - * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything - for refs DR analysis didn't process. - -2018-03-12 Richard Biener - - PR tree-optimization/84777 - * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For - force-vectorize loops ignore whether we are optimizing for size. - -2018-03-12 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_md_asm_adjust): New function. - (TARGET_MD_ASM_ADJUST): Define. - -2018-03-12 Monk Chiang - Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32.c (nds32_compute_stack_frame, - nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple, - nds32_emit_stack_v3push, nds32_emit_stack_v3pop, - nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue, - nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine. - * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM, - NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New. - * config/nds32/nds32.md (prologue, epilogue): Use macro - NDS32_V3PUSH_AVAILABLE_P to do checking. - -2018-03-11 Jakub Jelinek - - PR debug/58150 - * dwarf2out.c (gen_enumeration_type_die): Don't guard adding - DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf, - but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating - a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard - addition of most attributes on !orig_type_die or the attribute not - being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE. - -2018-03-11 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define - __NDS32_VH__ macro. - * config/nds32/nds32.opt (mvh): New option. - -2018-03-11 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare - function. - * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function. - * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its - definition. - -2018-03-11 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New - function. - * config/nds32/nds32-multiple.md (strlensi): New pattern. - * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function. - -2018-03-11 Monk Chiang - Kito Cheng - Chung-Ju Wu - - * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB, - UNSPEC_FFMISM and UNSPEC_FLMISM. - * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description - for ffb, ffmism and flmism. - * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern. - (unspec_ffmism): Ditto. - (unspec_flmism): Ditto. - (nds32_expand_builtin_impl): Check if string extension is available. - * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB, - NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM. - -2018-03-10 Vladimir Makarov - - Reverting patch: - 2018-03-09 Vladimir Makarov - - PR target/83712 - * lra-assigns.c (assign_by_spills): Return a flag of reload - assignment failure. Do not process the reload assignment - failures. Do not spill other reload pseudos if they has the same - reg class. - (lra_assign): Add a return arg. Set up from the result of - assign_by_spills call. - (find_reload_regno_insns, lra_split_hard_reg_for): New functions. - * lra-constraints.c (split_reg): Add a new arg. Use it instead of - usage_insns if it is not NULL. - (spill_hard_reg_in_range): New function. - (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg. - * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New - function prototypes. - (lra_assign): Change prototype. - * lra.c (lra): Add code to deal with fails by splitting hard reg - live ranges. - -2018-03-10 H.J. Lu - - PR target/84807 - * config/i386/i386.opt: Replace Enforcment with Enforcement. - -2018-03-10 Alexandre Oliva - - PR debug/84620 - * dwarf2out.h (dw_val_class): Add dw_val_class_symview. - (dw_val_node): Add val_symbolic_view. - * dwarf2out.c (dw_line_info_table): Add symviews_since_reset. - (symview_upper_bound): New. - (new_line_info_table): Initialize symviews_since_reset. - (dwarf2out_source_line): Count symviews_since_reset and set - symview_upper_bound. - (dw_val_equal_p): Handle symview. - (add_AT_symview): New. - (print_dw_val): Handle symview. - (attr_checksum, attr_checksum_ordered): Likewise. - (same_dw_val_p, size_of_die): Likewise. - (value_format, output_die): Likewise. - (add_high_low_attributes): Use add_AT_symview for entry_view. - (dwarf2out_finish): Reset symview_upper_bound, clear - zero_view_p. - -2018-03-09 Peter Bergner - - PR target/83969 - * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype. - Add strict argument and use it. - (rs6000_split_multireg_move): Update for new strict argument. - (mem_operand_gpr): Disallow all non-offsettable addresses. - * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint. - -2018-03-09 Jakub Jelinek - - PR target/84772 - * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp - temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY. - * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise. - - PR c++/84767 - * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped - decl, use remap_type if we want to use the type. - -2018-03-09 Martin Sebor - - PR tree-optimization/84526 - * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset): - Remove dead code. - (builtin_access::generic_overlap): Be prepared to handle non-array - base objects. - -2018-03-09 Alexandre Oliva - - PR rtl-optimization/84682 - * lra-constraints.c (process_address_1): Check is_address flag - for address constraints. - (process_alt_operands): Likewise. - * lra.c (lra_set_insn_recog_data): Pass asm operand locs to - preprocess_constraints. - * recog.h (preprocess_constraints): Add oploc parameter. - Adjust callers. - * recog.c (preprocess_constraints): Test address_operand for - CT_ADDRESS constraints. - -2018-03-09 Vladimir Makarov - - PR target/83712 - * lra-assigns.c (assign_by_spills): Return a flag of reload - assignment failure. Do not process the reload assignment - failures. Do not spill other reload pseudos if they has the same - reg class. - (lra_assign): Add a return arg. Set up from the result of - assign_by_spills call. - (find_reload_regno_insns, lra_split_hard_reg_for): New functions. - * lra-constraints.c (split_reg): Add a new arg. Use it instead of - usage_insns if it is not NULL. - (spill_hard_reg_in_range): New function. - (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg. - * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New - function prototypes. - (lra_assign): Change prototype. - * lra.c (lra): Add code to deal with fails by splitting hard reg - live ranges. - -2018-03-09 Kyrylo Tkachov - - PR target/83193 - * common/config/arm/arm-common.c (arm_parse_arch_option_name): - Accept complain bool parameter. Only emit errors if it is true. - (arm_parse_cpu_option_name): Likewise. - (arm_target_thumb_only): Adjust callers of the above. - * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust - prototype to take a default true bool parameter. - (arm_parse_arch_option_name): Likewise. - -2018-03-09 David Malcolm - Francois-Xavier Coudert - - PR jit/64089 - PR jit/84288 - * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New. - * configure: Regenerate. - * configure.ac ("linker --version-script option"): New. - ("linker soname option"): New. - -2018-03-09 Richard Biener - - PR tree-optimization/84775 - * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink - immediate uses of predicate stmts and mark them modified. - - Revert - PR tree-optimization/84178 - * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates - to caller. - (version_loop_for_if_conversion): Delay update_ssa call. - (tree_if_conversion): Delay update_ssa until after predicate - insertion. - -2018-03-09 Eric Botcazou - - PR target/84763 - * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation - when the function accesses prior frames. - -2018-03-08 Jakub Jelinek - - PR debug/84456 - * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call - gen_llsym, otherwise call maybe_gen_llsym. - - PR inline-asm/84742 - * recog.c (asm_operand_ok): Return 0 if multi-character constraint - has ',' character inside of it. - -2018-03-08 Kyrylo Tkachov - - PR target/84748 - * config/aarch64/aarch64.md (*compare_cstore_insn): Mark pattern - as clobbering CC_REGNUM. - -2018-03-08 Richard Biener - - PR middle-end/84552 - * tree-scalar-evolution.c: Include tree-into-ssa.h. - (follow_copies_to_constant): Do not follow SSA names registered - for update. - -2018-03-08 Richard Biener - - PR tree-optimization/84178 - * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates - to caller. - (version_loop_for_if_conversion): Delay update_ssa call. - (tree_if_conversion): Delay update_ssa until after predicate - insertion. - -2018-03-08 David Malcolm - - PR tree-optimization/84178 - * tree-if-conv.c (release_bb_predicate): Remove the - the assertion that the stmts have NULL use_ops. - Discard the statements, asserting that they haven't - yet been added to a BB. - -2018-03-08 Richard Biener - - PR tree-optimization/84746 - * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL. - (phi_translate): Pass in destination ANTIC_OUT set. - (phi_translate_1): Likewise. For a simplified result lookup - a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets. - (phi_translate_set): Adjust. - (do_pre_regular_insertion): Likewise. - (do_pre_partial_partial_insertion): Likewise. - -2018-03-08 Martin Liska - - PR gcov-profile/84735 - * doc/gcov.texi: Document usage of profile files. - * gcov-io.h: Document changes in the format. - -2018-03-08 Alexandre Oliva - - PR debug/84404 - PR debug/84408 - * dwarf2out.c (struct dw_line_info_table): Update comments for - view == -1. - (FORCE_RESET_NEXT_VIEW): New. - (FORCE_RESETTING_VIEW_P): New. - (RESETTING_VIEW_P): Check for -1 too. - (ZERO_VIEW_P): Likewise. - (new_line_info_table): Force-reset next view. - (dwarf2out_begin_function): Likewise. - (dwarf2out_source_line): Simplify zero_view_p initialization. - Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of - view directly. Omit view when omitting .loc at line 0. - -2018-03-08 Jakub Jelinek - - PR tree-optimization/84740 - * tree-switch-conversion.c (process_switch): Call build_constructors - only if info.phi_count is non-zero. - - PR tree-optimization/84739 - * tree-tailcall.c (find_tail_calls): Check call arguments against - DECL_ARGUMENTS (current_function_decl) rather than - DECL_ARGUMENTS (func) when checking for tail recursion. - -2018-03-07 Jakub Jelinek - - * doc/contrib.texi: Add entries for Martin Liska, David Malcolm, - Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and - Volker Reichelt's entry and add entries for people that perform - GCC fuzzy testing and report numerous bugs. - -2018-03-07 Segher Boessenkool - - PR target/82411 - * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put - readonly data in sdata, if that is disabled. - * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option. - * doc/invoke.texi (RS/6000 and PowerPC Options): Document - -mreadonly-in-sdata option. - -2018-03-07 Martin Sebor - - PR tree-optimization/84468 - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor - basic block when looking for nul assignment. - -2018-03-07 Eric Botcazou - - PR target/84277 - * except.h (output_function_exception_table): Adjust prototype. - * except.c (output_function_exception_table): Remove FNNAME parameter - and add SECTION parameter. Ouput one part of the table at a time. - * final.c (final_scan_insn_1) : Output - the first part of the exception table and emit unwind directives. - * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare. - (i386_pe_seh_cold_init): Likewise. - * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro. - (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise. - * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment. - (ix86_output_call_insn): Emit a nop in one more case for SEH. - * config/i386/winnt.c: Include except.h. - (struct seh_frame_state): Add reg_offset, after_prologue and - in_cold_section fields. - (i386_pe_seh_end_prologue): Set seh->after_prologue. - (i386_pe_seh_cold_init): New function. - (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal - to seh->in_cold_section. - (seh_emit_push): Record the offset of the push. - (seh_emit_save): Record the offet of the save. - (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS. - Test seh->after_prologue to disregard the epilogue. - (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini. - (i386_pe_end_cold_function): New function. - -2018-03-07 Jakub Jelinek - - PR fortran/84565 - * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use - aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero. - - PR c++/84704 - * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag - on tmp_var. - * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG, - don't print names of DECL_NAMELESS DECL_IGNORED_P decls. - - PR middle-end/84723 - * multiple_target.c: Include tree-inline.h and intl.h. - (expand_target_clones): Diagnose and fail if node->definition and - !tree_versionable_function_p (node->decl). - -2018-03-06 John David Anglin - - * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use - sprint_ul. - (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change. - (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above. - -2018-03-06 Jakub Jelinek - - PR target/84710 - * combine.c (try_combine): Use reg_or_subregno instead of handling - just paradoxical SUBREGs and REGs. - -2018-03-06 Claudiu Zissulescu - - * config/arc/arc.c (arc_finalize_pic): Remove function. - (arc_must_save_register): We use single base PIC register, remove - checks to save/restore the PIC register. - (arc_expand_prologue): Likewise. - * config/arc/arc-protos.h (arc_set_default_type_attributes): - Remove. - (arc_verify_short): Likewise. - (arc_attr_type): Likewise. - * config/arc/arc.c (arc_set_default_type_attributes): Remove. - (walk_stores): Likewise. - (arc_address_cost): Make it static. - (arc_verify_short): Likewise. - (branch_dest): Likewise. - (arc_attr_type): Likewise. - * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove. - (TARGET_INSN_LENGTH_PARAMETERS): Likewise. - (arc_final_prescan_insn): Remove inserting the nops due to - hardware hazards. It is done in reorg step. - (insn_length_variant_t): Remove. - (insn_length_parameters_t): Likewise. - (arc_insn_length_parameters): Likewise. - (arc_get_insn_variants): Likewise. - * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove. - -2018-03-06 Jakub Jelinek - - PR inline-asm/84683 - * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid - assertion failure. - - PR tree-optimization/84687 - * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS - on new_node->decl. - * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization. - -2018-03-05 Bill Schmidt - - * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier): - Rename to ppc_speculation_barrier. - * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to - __builtin_ppc_speculation_barrier. - -2018-03-05 Jakub Jelinek - - PR target/84700 - * combine.c (combine_simplify_rtx): Don't try to simplify if - if_then_else_cond returned non-NULL, but either true_rtx or false_rtx - are equal to x. - -2018-03-05 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops - to 32 bytes when compiling for POWER9. - -2018-03-05 Jakub Jelinek - - PR target/84564 - * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for - regparm >= 3 with no arg reg available also for calls with - flag_force_indirect_call. Pass decl to ix86_function_regparm. - - PR target/84524 - * config/i386/sse.md (*3): Replace with - orig,vex. - (*3): Likewise. Remove uses. - -2018-03-05 Peter Bergner - - PR target/84264 - * config/rs6000/vector.md (mov): Disallow altivec memory operands. - -2018-03-05 Richard Biener - - PR tree-optimization/84486 - * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code. - When inserting a __builtin_assume_aligned call set the LHS - SSA name alignment info accordingly. - -2018-03-05 Wilco Dijkstra - - PR tree-optimization/84114 - * config/aarch64/aarch64.c (aarch64_reassociation_width) - Avoid reassociation of FLOAT_MODE addition. - -2018-03-05 Olga Makhotina - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET, - OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET, - OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions. - (ix86_handle_option): Handle -mpconfig and -mwbnoinvd. - * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers. - * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig - and -mwbnoinvd. - * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd, - __builtin_ia32_wbinvd): New builtins. - (SPECIAL_ARGS2): New. - * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New. - (SPECIAL_ARGS2): New. - * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd. - (ix86_valid_target_attribute_inner_p): Ditto. - (ix86_init_mmx_sse_builtins): Add special_args2. - * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD, - TARGET_WBNOINVD_P): New. - * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New. - (define_insn "wbinvd", define_insn "wbnoinvd"): New. - * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd. - * config/i386/immintrin.h (_wbinvd): New intrinsic. - * config/i386/pconfigintrin.h: New file. - * config/i386/wbnoinvdintrin.h: Ditto. - * config/i386/x86intrin.h: Add headers pconfigintrin.h and - wbnoinvdintrin.h. - * doc/invoke.texi (-mpconfig, -mwbnoinvd): New. - -2018-03-05 Richard Biener - - PR tree-optimization/84670 - * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs - member. - (BB_VISITED_WITH_VISITED_SUCCS): New define. - (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS. - (compute_antic_aux): Only assert the number of values in ANTIC_IN - doesn't grow if all successors (recursively) were visited at least - once. - -2018-03-05 Richard Biener - - PR tree-optimization/84650 - * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache - if executed in the loop pipeline. - -2018-03-05 Sandra Loosemore - - * doc/configfiles.texi (Configuration Files): Move info about - conditionalizing $target-protos.h to... - * doc/sourcebuild.texi (Back End): Here. Explain how $target.h - differs from $target-protos.h. - -2018-03-05 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare. - * config/nds32/nds32-multiple.md (setmemsi): Define. - * config/nds32/nds32-memory-manipulation.c - (nds32_gen_dup_4_byte_to_word_value): New. - (emit_setmem_word_loop): New. - (emit_setmem_byte_loop): New. - (nds32_expand_setmem_loop): New. - (nds32_expand_setmem_loop_v3m): New. - (nds32_expand_setmem_unroll): New. - (nds32_expand_setmem): New. - -2018-03-04 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32-memory-manipulation.c - (nds32_emit_load_store): New. - (nds32_emit_post_inc_load_store): New. - (nds32_emit_mem_move): New. - (nds32_emit_mem_move_block): New. - (nds32_expand_movmemsi_loop_unknown_size): New. - (nds32_expand_movmemsi_loop_known_size): New. - (nds32_expand_movmemsi_loop): New. - (nds32_expand_movmemsi_unroll): New. - (nds32_expand_movmemqi): Rename ... - (nds32_expand_movmemsi): ... to this. - * config/nds32/nds32-multiple.md (movmemqi): Rename ... - (movmemsi): ... to this. - * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ... - (nds32_expand_movmemsi): ... to this. - -2018-03-04 Kito Cheng - Monk Chiang - Chung-Ju Wu - - * config/nds32/nds32-protos.h - (nds32_expand_load_multiple): New arguments. - (nds32_expand_store_multiple): Ditto. - (nds32_valid_multiple_load_store): Rename ... - (nds32_valid_multiple_load_store_p): ... to this. - * config/nds32/nds32-memory-manipulation.c - (nds32_expand_load_multiple): Refine implementation. - (nds32_expand_store_multiple): Ditto. - * config/nds32/nds32-multiple.md - (load_multiple): Update nds32_expand_load_multiple interface. - (store_multiple): Update nds32_expand_store_multiple interface. - * config/nds32/nds32-predicates.c - (nds32_valid_multiple_load_store): Rename ... - (nds32_valid_multiple_load_store_p): ... to this and refine - implementation. - * config/nds32/predicates.md - (nds32_load_multiple_and_update_address_operation): New predicate. - (nds32_store_multiple_and_update_address_operation): New predicate. - -2018-03-04 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32.md (type): Add load_multiple and store_multiple. - (combo): New attribute. - * config/nds32/nds32-multiple.md: Refine patterns with new attributes. - -2018-03-03 Chung-Ju Wu - - * config/nds32/nds32.opt: Change -mcmodel= default value. - -2018-03-03 Kito Cheng - Monk Chiang - Chung-Ju Wu - - * config/nds32/constants.md (unspec_element): New enum. - * config/nds32/constraints.md (Umw): New constraint. - * config/nds32/nds32-intrinsic.c: Add more builtin functions. - * config/nds32/nds32-intrinsic.md: Likewise. - * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New. - (nds32_valid_smw_lwm_base_p): New. - (nds32_output_smw_single_word): New. - (nds32_output_lmw_single_word): New. - (nds32_expand_unaligned_load): New. - (nds32_expand_unaligned_store): New. - * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare. - (nds32_output_smw_single_word): Declare. - (nds32_output_lmw_single_word): Declare. - (nds32_expand_unaligned_load): Declare. - (nds32_expand_unaligned_store): Declare. - * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW, - NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW, - NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W, - NDS32_BUILTIN_UASTORE_DW. - * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New - predicate. - -2018-03-03 Monk Chiang - Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32-intrinsic.c - (nds32_expand_builtin_null_ftype_reg): Delete. - (nds32_expand_builtin_reg_ftype_imm): Ditto. - (nds32_expand_builtin_null_ftype_reg_imm): Ditto. - (nds32_read_argument): New. - (nds32_legitimize_target): Ditto. - (nds32_legitimize_argument): Ditto. - (nds32_check_constant_argument): Ditto. - (nds32_expand_unop_builtin): Ditto. - (nds32_expand_unopimm_builtin): Ditto. - (nds32_expand_binop_builtin): Ditto. - (nds32_builtin_decl_impl): Ditto. - (builtin_description): Ditto. - (nds32_expand_builtin_impl): Rewrite with new infrastructure. - (nds32_init_builtins_impl): Ditto. - * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define. - (nds32_builtin_decl): New. - * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT. - * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare. - -2018-03-02 Jeff Law - - * reorg.c (stop_search_p): Handle DEBUG_INSN. - (redundant_insn, fill_simple_delay_slots): Likewise. - (fill_slots_from_thread): Likewise. - * resource.c (mark_referenced_resources): Likewise. - (mark_set_resources, find_dead_or_set_registers): Likewise. - -2018-03-02 Jakub Jelinek - - * substring-locations.h (format_warning_va): Formatting fix for - ATTRIBUTE_GCC_DIAG. - (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second - argument. - (format_warning_n_va, format_warning_at_substring_n): New prototypes. - * substring-locations.c: Include intl.h. - (format_warning_va): Turned into small wrapper around - format_warning_n_va, renamed to ... - (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments, - rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID, - use ngettext. - (format_warning_at_substring_n): New function. - * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma. - (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of - format_warning_at_substring with just a shorter name instead of - const function pointer. - (fmtwarn_n): New function. - (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where - appropriate, get rid of all the fmtstr temporaries, move conditionals - with G_() wrapped string literals directly into fmtwarn arguments, - cast dir.len to (int), formatting fixes. - -2018-03-02 Thomas Schwinge - - * doc/invoke.texi: Remove "Cilk Plus" references. - -2018-03-02 Jakub Jelinek - Richard Biener - - PR ipa/84628 - * expr.c (expand_expr_real_1) : Don't emit diagnostics - for error or warning attributes if CALL_FROM_THUNK_P is set. - Formatting fixes. - -2018-03-02 Jakub Jelinek - - PR target/56540 - * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine - __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY. - - PR target/56540 - * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine - __SIZEOF_{FPREG,FLOAT{80,128}}__ macros. - - * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED - instead of -1U in last predictors element's probability member. - -2018-03-02 Eric Botcazou - - PR ipa/83983 - * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both - arguments if they are comparable. - -2018-03-02 Richard Sandiford - - PR tree-optimization/84634 - * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace - masks and masked_loop_p with a single loop_masks, making sure it's - null for bb vectorization. - -2018-03-02 Richard Sandiford - - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence) - (vect_analyze_data_ref_access): Use loop->safe_len rather than - loop->force_vectorize to check whether there is no alias. - -2018-03-02 Jakub Jelinek - - PR target/84614 - * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New - prototypes. - * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function - comments. - (next_real_nondebug_insn, prev_real_nondebug_insn): New functions. - * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn - instead of a loop around prev_real_insn. - * combine.c (move_deaths): Use prev_real_nondebug_insn instead of - prev_real_insn. - - PR inline-asm/84625 - * config/i386/i386.c (ix86_print_operand): Use conditional - output_operand_lossage instead of gcc_assert if CONST_VECTOR is not - zero vector. - -2018-03-02 Richard Biener - - PR tree-optimization/84427 - * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove. - (bitmap_set_subtract_values): Rewrite to handle multiple - exprs per value. - (clean): Likewise. - (prune_clobbered_mems): Likewise. - (phi_translate): Take edge instead of pred/phiblock. - (phi_translate_1): Likewise. - (phi_translate_set): Likewise. Insert all translated - exprs for a value into the set, keeping possibly multiple - expressions per value. - (compute_antic_aux): Adjust for phi_translate changes. - When intersecting union the expressions and prune those - not in the final value set, keeping possibly multiple - expressions per value. Do not use value-insertion - for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge - all expressions. Add verification that the value-sets - only shrink during iteration. - (compute_partial_antic_aux): Adjust for the phi_translate changes. - (do_pre_regular_insertion): Likewise. - (do_pre_partial_partial_insertion): Likewise. - -2018-03-02 Richard Biener - - PR target/82005 - * config/darwin.c (saved_debug_info_level): New static global. - (darwin_asm_lto_start): Disable debug info generation for LTO out. - (darwin_asm_lto_end): Restore debug info generation settings. - -2018-03-01 Martin Liska - - PR sanitizer/82484 - * sanopt.c (sanitize_rewrite_addressable_params): Do not handle - volatile arguments. - -2018-03-01 Richard Biener - - PR debug/84645 - * dwarf2out.c (gen_variable_die): Properly handle late VLA - type annotation with LTO when debug was disabled at compile-time. - -2018-03-01 Matthew Fortune - - * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect - XINT with INTVAL. - (mips_final_postscan_insn): Likewise. - -2018-03-01 Richard Sandiford - - PR rtl-optimization/84528 - * alias.c (init_alias_target): Add commentary. - (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM - a unique base value if the frame pointer is not eliminated - to the stack pointer. - -2018-03-01 Tom de Vries - - PR rtl-optimization/83327 - * lra-int.h (hard_regs_spilled_into): Declare. - * lra.c (hard_regs_spilled_into): Define. - (init_reg_info): Init hard_regs_spilled_into. - * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into. - * lra-lives.c (make_hard_regno_born, make_hard_regno_dead) - (process_bb_lives): Handle hard_regs_spilled_into. - (lra_create_live_ranges_1): Before doing liveness propagation, clear - regs in all_hard_regs_bitmap if set in hard_regs_spilled_into. - -2018-02-28 David Edelsohn - - * config.gcc (powerpc-ibm-aix7.1.*): New stanza. - (powerpc-ibm-aix[789]*): Default to AIX 7.2. - * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA. - * config/rs6000/aix72.h: New file. - -2018-02-28 Jakub Jelinek - - * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n - instead of warning_at with conditional singular and plural messages - where possible. - - PR target/52991 - * stor-layout.c (update_alignment_for_field): For - targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield - && !DECL_PACKED (field), do the alignment update, just use - only desired_align instead of MAX (type_align, desired_align) - as the alignment. - (place_field): Don't do known_align < desired_align handling - early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field - is non-NULL, instead do it after rli->prev_field handling and - only if not within a bitfield word. For DECL_PACKED (field) - use type_align of BITS_PER_UNIT. - -2018-02-28 Eric Botcazou - - * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove - superfluous parentheses and trailing spaces. - -2018-02-28 Richard Biener - - PR tree-optimization/84584 - * graphite-scop-detection.c (scop_detection::add_scop): Discard - SCoPs with fake exit edge. - -2018-02-28 Martin Liska - - PR testsuite/84597 - * timevar.c (timer::print): Fix format to properly print 100% - values. - -2018-02-28 Richard Biener - - PR middle-end/84607 - * genmatch.c (capture_info::walk_match): Do not mark - captured expressions without operands as expr_p given - they act more like predicates and should be subject to - "lost tail" side-effect preserving. - -2018-02-28 Alexandre Oliva - - PR rtl-optimization/81611 - * auto-inc-dec.c (attempt_change): Move dead note from - mem_insn if it's the next use of regno - (find_address): Take address use of reg holding - non-incremented value. Add parm to limit search to the named - reg only. - (merge_in_block): Attempt to use a mem insn that is the next - use of the original regno. - -2018-02-27 Martin Sebor - - PR c++/83871 - * doc/invoke.texi (-Wmissing-attributes): New option. - * print-tree.c (print_node): Handle DECL_UNINLINABLE. - -2018-02-27 Martin Sebor - - PR translation/84207 - * diagnostic-core.h (warning_n, error_n, inform_n): Change - n argument to unsigned HOST_WIDE_INT. - * diagnostic.c (warning_n, error_n, inform_n): Ditto. - (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX. - * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call. - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n. - -2018-02-27 Richard Biener - - PR tree-optimization/84512 - * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): - Do not use the estimate returned from record_stmt_cost for - the scalar iteration cost but sum properly using add_stmt_cost. - -2018-02-27 Richard Biener - - PR tree-optimization/84466 - * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): - Adjust last change to less strictly validate use operands. - -2018-02-27 Martin Liska - - PR gcov-profile/84548 - * gcov.c (process_file): Allow partial overlap and consider it - also as group functions. - (output_lines): Properly calculate range of lines for a group. - -2018-02-27 Martin Liska - - * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and - 'ggc' suffixes. Change first column width. - (timer::print): Fix formatting of the column. - -2018-02-27 Alexandre Oliva - - * tree-ssa-live.c (remove_unused_scope_block_p): Do not - preserve inline entry blocks for the sake of debug inline - entry point markers alone. - (remove_unused_locals): Suggest in comments a better place to - force the preservation of inline entry blocks that are - otherwise unused, but do not preserve them. - -2018-02-26 H.J. Lu - - * config/i386/i386.c (ix86_output_indirect_jmp): Update comments. - -2018-02-26 H.J. Lu - - PR target/84039 - * config/i386/constraints.md (Bs): Replace - ix86_indirect_branch_register with - TARGET_INDIRECT_BRANCH_REGISTER. - (Bw): Likewise. - * config/i386/i386.md (indirect_jump): Likewise. - (tablejump): Likewise. - (*sibcall_memory): Likewise. - (*sibcall_value_memory): Likewise. - Peepholes of indirect call and jump via memory: Likewise. - (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER. - (*sibcall_value_GOT_32): Likewise. - * config/i386/predicates.md (indirect_branch_operand): Likewise. - (GOT_memory_operand): Likewise. - (call_insn_operand): Likewise. - (sibcall_insn_operand): Likewise. - (GOT32_symbol_operand): Likewise. - * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New. - -2018-02-26 Eric Botcazou - - PR rtl-optimization/83496 - * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from - booleans to RTXes. Call fix_reg_dead_note on every non-null element. - (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a - redundant insn, if any. - (relax_delay_slots): Likewise. - (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN. - -2018-02-26 Richard Sandiford - - PR tree-optimization/83965 - * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume - that grouped statements are part of a reduction chain. Return - true if the statement is not marked as a reduction itself but - is part of a group. - (vect_recog_dot_prod_pattern): Don't check whether the statement - is part of a group here. - (vect_recog_sad_pattern): Likewise. - (vect_recog_widen_sum_pattern): Likewise. - -2018-02-26 Eric Botcazou - - PR debug/84545 - * final.c (rest_of_clean_state): Also look for calls inside sequences. - -2018-02-26 H.J. Lu - - PR target/84530 - * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove - the bool argument. - (ix86_output_indirect_function_return): New prototype. - (ix86_split_simple_return_pop_internal): Likewise. - * config/i386/i386.c (indirect_return_via_cx): New. - (indirect_return_via_cx_bnd): Likewise. - (indirect_thunk_name): Handle return va CX_REG. - (output_indirect_thunk_function): Create alias for - __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd. - (ix86_output_indirect_jmp): Remove the bool argument. - (ix86_output_indirect_function_return): New function. - (ix86_split_simple_return_pop_internal): Likewise. - * config/i386/i386.md (*indirect_jump): Don't pass false - to ix86_output_indirect_jmp. - (*tablejump_1): Likewise. - (simple_return_pop_internal): Change it to define_insn_and_split. - Call ix86_split_simple_return_pop_internal to split it for - -mfunction-return=. - (simple_return_indirect_internal): Call - ix86_output_indirect_function_return instead of - ix86_output_indirect_jmp. - -2018-02-26 Jakub Jelinek - - PR bootstrap/84405 - * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use - memset and value initialization afterwards. - -2018-02-26 Christophe Lyon - - * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS. - -2018-02-26 Ramana Radhakrishnan - - PR target/84521 - * common/config/aarch64/aarch64-common.c - (aarch_option_optimization_table[]): Switch - off fomit-frame-pointer - -2018-02-26 Kito Cheng - Chung-Ju Wu - - * config/nds32/nds32-multiple.md (load_multiple): Disallow - volatile memory. - (store_multiple): Ditto. - -2018-02-26 Kito Cheng - - * config.gcc: Add --with-cpu support for nds32 target. - * config/nds32/nds32-opts.h (nds32_cpu_type): New. - * config/nds32/nds32.opt: Add -mcpu= option. - -2018-02-25 Segher Boessenkool - - * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no, - isel=yes): Warn for these deprecated options. - -2018-02-23 David Edelsohn - - * config/rs6000/aix71.h (TARGET_DEFAULT): Change to - ISA_2_5_MASKS_EMBEDDED. - -2018-02-23 Jakub Jelinek - - * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and - p->max as pointers rather than using iterative_hash_expr. - -2018-02-23 Carl Love - - * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2 - macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to - BU_P8V_OVERLOAD_2. - * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to - P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to - P8V_BUILTIN_VEC_VUNSIGNED2. - -2018-02-22 Vladimir Makarov - - PR target/81572 - * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros. - * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use - LRA_UNKNOWN_ALT. - * lra-constraints.c (curr_insn_transform): Set up - LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use - LRA_UNKNOWN_ALT. - (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT. - * lra-eliminations.c (spill_pseudos): Ditto. - (process_insn_for_elimination): Ditto. - * lra-lives.c (reg_early_clobber_p): Use the new macros. - * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and - LRA_NON_CLOBBERED_ALT. - -2018-02-22 Martin Sebor - - PR tree-optimization/84480 - * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings - to maybe_diag_stxncpy_trunc. Call it. - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings - from gimple_fold_builtin_strcpy. Print inlining stack. - (handle_builtin_stxncpy): Print inlining stack. - * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare. - -2018-02-22 H.J. Lu - - PR target/84176 - * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an - error when -mindirect-branch=thunk-extern, -fcf-protection=branch - and -fcheck-pointer-bounds are used together. - (indirect_thunk_prefix): New enum. - (indirect_thunk_need_prefix): New function. - (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use - "_nt" instead of "_bnd" for NOTRACK prefix. - (output_indirect_thunk): Replace need_bnd_p with need_prefix. - (output_indirect_thunk_function): Likewise. - (): Likewise. - (ix86_code_end): Update output_indirect_thunk_function calls. - (ix86_output_indirect_branch_via_reg): Replace - ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix. - (ix86_output_indirect_branch_via_push): Likewise. - (ix86_output_function_return): Likewise. - * doc/invoke.texi: Document -mindirect-branch=thunk-extern is - incompatible with -fcf-protection=branch and - -fcheck-pointer-bounds. - -2018-02-22 Steve Ellcey - - PR target/83335 - * config/aarch64/aarch64.c (aarch64_print_address_internal): - Change gcc_assert call to output_operand_lossage. - -2018-02-22 Steve Ellcey - - * doc/extend.texi (__builtin_extend_pointer): Document builtin. - -2018-02-22 DJ Delorie - Sebastian Perta - Oleg Endo - - * config/rx/rx.c (rx_rtx_costs): New function. - (TARGET_RTX_COSTS): Override to use rx_rtx_costs. - -2018-02-22 Thomas Preud'homme - - * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs. - -2018-02-22 Martin Liska - - PR driver/83193 - * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option): - Add "native" as a possible value. - -2018-02-22 Martin Liska - - PR driver/83193 - * config/i386/i386.c (ix86_option_override_internal): - Add "native" as a possible value for -march and -mtune. - -2018-02-22 Jakub Jelinek - - PR target/84502 - * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag - to all type variants. - - PR tree-optimization/84503 - * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute - width as info->bitpos + info->bitsize - start. - (merged_store_group::merge_overlapping): Simplify width computation. - (check_no_overlap): New function. - (imm_store_chain_info::try_coalesce_bswap): Compute expected - start + width and last_order of the group, fail if check_no_overlap - fails. - (imm_store_chain_info::coalesce_immediate_stores): Don't merge info - to group if check_no_overlap fails. - -2018-02-21 Segher Boessenkool - - * config/rs6000/altivec.md: Delete contraint arguments to - define_expand, define_split, and define_peephole2, and in - define_insn_and_split if always unused. - * config/rs6000/darwin.md: Ditto. - * config/rs6000/dfp.md: Ditto. - * config/rs6000/rs6000.md: Ditto. - * config/rs6000/sync.md: Ditto. - * config/rs6000/vector.md: Ditto. - * config/rs6000/vsx.md: Ditto. - -2018-02-21 Segher Boessenkool - - * config/rs6000/altivec.md: Write output control strings as braced - blocks instead of double-quoted strings. - * config/rs6000/darwin.md: Ditto. - * config/rs6000/rs6000.md: Ditto. - * config/rs6000/vector.md: Ditto. - * config/rs6000/vsx.md: Ditto. - -2018-02-21 Jason Merrill - - PR c++/84314 - ICE with templates and fastcall attribute. - * attribs.c (build_type_attribute_qual_variant): Remove assert. - -2018-02-21 Jan Hubicka - - * ipa-cp.c (determine_versionability): Fix comment typos. - -2018-02-21 Jan Hubicka - - PR c/84229 - * ipa-cp.c (determine_versionability): Do not version functions caling - va_arg_pack. - -2018-02-21 Martin Liska - - PR driver/83193 - * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): - Add "native" as a possible value. - * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define - the macro when native cpu detection is available. - -2018-02-21 Martin Liska - - PR driver/83193 - * common/config/arm/arm-common.c (arm_print_hint_for_arch_option): - Add "native" as a possible value. - * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro - when native cpu detection is available. - -2018-02-21 Jakub Jelinek - Martin Sebor - - PR tree-optimization/84478 - * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to - false. - * gimple-fold.c (get_range_strlen): Make minlen const and assume it - can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR - support which is conservatively correct, for 2 only stay conservative - for maxlen. Formatting and comment capitalization fixes. Add STRICT - argument to the 2 argument get_range_strlen, adjust 6 arg - get_range_strlen caller and clear minmaxlen[0] and [1] if it returned - false. - (get_maxval_strlen): Adjust 6 arg get_range_strlen caller. - (gimple_fold_builtin_strlen): Pass true as last argument to - get_range_strlen. - -2018-02-20 Martin Sebor - - PR middle-end/84095 - * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New. - (builtin_memref::set_base_and_offset): Same. Handle inner references. - (builtin_memref::builtin_memref): Factor out parts into - set_base_and_offset and call it. - -2018-02-20 Richard Sandiford - - PR middle-end/84406 - * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode - is a scalar_int_mode, assert that to_mode is a scalar_int_mode with - greater precision. If to_mode is a MODE_PARTIAL_INT, stop the - search at the associated MODE_INT. - -2018-02-20 Jeff Law - - PR middle-end/82123 - PR tree-optimization/81592 - PR middle-end/79257 - * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer - for range data rather than using global data. - * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for - range data rather than using global data. - * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter - pass it to children as needed. - (struct directive::fmtresult): Similarly. - (struct directive::set_width): Similarly. - (struct directive::set_precision): Similarly. - (format_integer, format_directive, parse_directive): Similarly. - (format_none): Accept unnamed vr_values parameter. - (format_percent, format_floating, format_character): Similarly. - (format_string, format_plain): Similarly. - * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query - the EVRP range analyzer for range data rather than using global data. - * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and - gimple-ssa-evrp-analyze.h - (class sprintf_dom_walker): Add after_dom_children member function. - Add evrp_range_analyzer member. - (sprintf_dom_walker::before_dom_children): Call into the EVRP - range analyzer as needed. - (sprintf_dom_walker::after_dom_children): New member function. - * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing - if not optimizing. - (evrp_range_analyzer::record_ranges_from_stmt): Likewise. - (evrp_range_analyzer::pop_to_marker): Likewise. - -2018-02-20 Richard Sandiford - - PR tree-optimization/84419 - * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF - with the required type if its current type is compatible but - different. - -2018-02-20 Jakub Jelinek - - PR middle-end/82004 - * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until - after vectorization. - -2018-02-20 Martin Liska - - PR driver/83193 - * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print - possible values if we don't have a hint. - -2018-02-20 Martin Liska - - PR c/84310 - PR target/79747 - * final.c (shorten_branches): Build align_tab array with one - more element. - * opts.c (finish_options): Add alignment option limit check. - (MAX_CODE_ALIGN): Likewise. - (MAX_CODE_ALIGN_VALUE): Likewise. - * doc/invoke.texi: Document maximum allowed option value for - all -falign-* options. - -2018-02-19 Jakub Jelinek - - PR target/84146 - * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note. - * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove. - * var-tracking.c (emit_note_insn_var_location): Remove all references - to NOTE_INSN_CALL_ARG_LOCATION. - (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on - the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note. - Use copy_rtx_if_shared. - * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of - NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note. - (dwarf2out_var_location): Remove handling of - NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note - on call_insn. - * final.c (final_scan_insn): Remove all references to - NOTE_INSN_CALL_ARG_LOCATION. - (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes - before dumping final insns. - * except.c (emit_note_eh_region_end): Remove all references to - NOTE_INSN_CALL_ARG_LOCATION. - * config/alpha/alpha.c (alpha_pad_function_end): Likewise. - * config/c6x/c6x.c (c6x_gen_bundles): Likewise. - * config/arc/arc.c (hwloop_optimize): Likewise. - * config/arm/arm.c (create_fix_barrier): Likewise. - * config/s390/s390.c (s390_chunkify_start): Likewise. - * config/sh/sh.c (find_barrier): Likewise. - * config/i386/i386.c (rest_of_insert_endbranch, - ix86_seh_fixup_eh_fallthru): Likewise. - * config/xtensa/xtensa.c (hwloop_optimize): Likewise. - * config/iq2000/iq2000.c (final_prescan_insn): Likewise. - * config/frv/frv.c (frv_function_prologue): Likewise. - * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION - reg note. - (note_outside_basic_block_p): Remove all references to - NOTE_INSN_CALL_ARG_LOCATION. - * gengtype.c (adjust_field_rtx_def): Likewise. - * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn): - Likewise. - * jump.c (cleanup_barriers, delete_related_insns): Likewise. - * cfgrtl.c (force_nonfallthru_and_redirect): Likewise. - - PR c++/84444 - * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t) - is ADDR_EXPR. - - PR tree-optimization/84452 - * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call - expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen - is NULL. - -2018-02-19 Martin Liska - - PR sanitizer/82183 - * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0. - -2018-02-19 Martin Liska - Richard Sandiford - - PR tree-optimization/82491 - * gimple-fold.c (get_base_constructor): Make earlier bail out - to prevent ubsan. - -2018-02-19 Carl Love - - * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from - BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to - BU_P8V_OVERLOAD_1. - * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to - P8V_BUILTIN_VEC_NEG. - -2018-02-19 Sebastian Perta - - * config/rl78/rl78.md (movdf): New define expand. - -2018-02-19 Martin Liska - - PR other/80589 - * doc/invoke.texi: Fix typo. - * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise. - -2018-02-18 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't - handle rs6000_single_float and rs6000_double_float specially for - e500 family CPUs. - -2018-02-16 Jeff Law - - * config/rx/rx.c (add_pop_cfi_notes): New function.; - (pop_regs): Use it. - -2018-02-16 Jakub Jelinek - - PR ipa/84425 - * ipa-inline.c (inline_small_functions): Fix a typo. - -2018-02-16 Nathan Sidwell - - * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'. - -2018-02-16 Carl Love - - * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition. - Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and - from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2. - * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2 - expansion to P8V_BUILTIN_VEC_FLOAT2. - -2018-02-16 Vladimir Makarov - - PR rtl-optimization/70023 - * lra-constraints.c (inherit_in_ebb): Take hard reg mode of - src_regno into account. - -2018-02-16 Carl Love - - * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b. - * config/rs6000/rs6000-builtin.def: Remove macro expansion for - VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B. - * config/rs6000/rs6000.c: Remove case statements for - P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B, - P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, - and P9V_BUILTIN_VEC_VINSERT4B. - * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for - P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B. - * config/rs6000/vsx.md: - * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for - vec_insert4b. - -2018-02-16 Carl Love - - * config/rs6000/altivec.h: Add builtin names vec_extract4b - vec_insert4b. - * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B - definitions. - * config/rs6000/rs6000-c.c: Add the definitions for - P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B. - * config/rs6000/rs6000.c (altivec_expand_builtin): Add - P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements. - * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand - definition for insert4b and define insn *insert3b_internal. - * doc/extend.texi: Add documentation for vec_extract4b. - -2018-02-16 Nathan Sidwell - - * doc/extend.texi (Backwards Compatibility): Mention friend - injection. Note for-scope is deprecated. - * doc/invoke.texi (-ffriend-injection): Deprecate. - -2018-02-16 Segher Boessenkool - - * combine.c (try_combine): When adjusting LOG_LINKS for the destination - that moved to I2, also allow destinations that are a paradoxical - subreg (instead of a normal reg). - -2018-02-16 Oleg Endo - - PR target/83831 - * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand - to QImode. - -2018-02-16 Richard Biener - - PR tree-optimization/84037 - PR tree-optimization/84016 - PR target/82862 - * config/i386/i386.c (ix86_builtin_vectorization_cost): - Adjust vec_construct for the fact we need additional higher latency - 128bit inserts for AVX256 and AVX512 vector builds. - (ix86_add_stmt_cost): Scale vector construction cost for - elementwise loads. - -2018-02-16 Richard Biener - - PR tree-optimization/84417 - * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain - the MEM_REF offset when conversion to BIT_FIELD_REF is desired. - (non_rewritable_lvalue_p): Likewise, use poly-ints. - -2018-02-16 Martin Liska - - PR sanitizer/84307 - * internal-fn.def (ASAN_CHECK): Set proper flags. - (ASAN_MARK): Likewise. - -2018-02-16 Julia Koval - - * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB - from PTA_CANNONLAKE. - -2018-02-16 Jakub Jelinek - - PR target/84272 - * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest): - Use ++iter rather than iter++ for std::list iterators. - (func_fma_steering::dfs): Likewise. Don't delete nodes right away, - defer deleting them until all nodes in the forest are processed. Do - free even leaf nodes. Change to_process into auto_vec. - - PR bootstrap/84405 - * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3. - * vec.h (vec_default_construct): Use memset instead of placement new - if BROKEN_VALUE_INITIALIZATION is defined. - * hash-table.h (hash_table::empty_slow): Use - memset instead of value initialization if BROKEN_VALUE_INITIALIZATION - is defined. - - PR rtl-optimization/83723 - * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument. - * lra.c (lra_substitute_pseudo): Likewise. If true, use - gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to - recursive calls. - (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo - callers. - * lra-constraints.c (inherit_reload_reg, split_reg): Likewise. - -2018-02-16 Eric Botcazou - - PR rtl-optimization/81443 - * rtlanal.c (num_sign_bit_copies1) : Do not propagate results - from inner REGs to paradoxical SUBREGs. - -2018-02-16 Richard Biener - - PR tree-optimization/84399 - * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): - For operands we can analyze at their definition make sure we can - analyze them at each use as well. - -2018-02-16 Richard Biener - - PR tree-optimization/84190 - * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch - volatile accesses if the decl isn't volatile. - -2018-02-15 Jason Merrill - - PR c++/84314 - ICE with templates and fastcall attribute. - * attribs.c (build_type_attribute_qual_variant): Don't clobber - TYPE_CANONICAL on an existing type. - -2018-02-15 Jakub Jelinek - - PR tree-optimization/84383 - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at - dstoff nor call operand_equal_p if dstbase is NULL. - - PR tree-optimization/84334 - * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is - also a CONSTANT_CLASS_P, punt. - -2018-02-14 Jim Wilson - - * config/riscv/riscv.c (riscv_first_stack_step): Move locals after - first SMALL_OPERAND check. New local min_second_step. Move assert - to where locals are set. Add TARGET_RVC support. - * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New. - -2018-02-14 Indu Bhagat - - * doc/invoke.texi: Correct -Wformat-overflow code sample. - -2018-02-14 Martin Sebor - - PR tree-optimization/83698 - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For - arrays constrain the offset range to their bounds. - (builtin_access::strcat_overlap): Adjust the bounds of overlap offset. - (builtin_access::overlap): Avoid setting the size of overlap if it's - already been set. - (maybe_diag_overlap): Also consider arrays when deciding what values - of offsets to include in diagnostics. - -2018-02-14 Martin Sebor - - PR c/84108 - * attribs.c (diag_attr_exclusions): Consider the exclusion(s) - that correspond to the kind of a declaration. - -2018-02-14 John David Anglin - - PR target/83984 - * config/pa/pa.md: Load address of PIC label using the linkage table - if the label is nonlocal. - -2018-02-14 Kelvin Nilsen - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue - warning message if user requests -maltivec=be. - * doc/invoke.texi: Document deprecation of -maltivec=be. - -2018-02-14 Will Schmidt - - PR target/84220 - * config/rs6000/rs6000-c.c: Update definitions for - ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW, - VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins. - -2018-02-14 Igor Tsimbalist - - PR target/84239 - * config/i386/cetintrin.h: Remove _rdssp[d|q] and - add _get_ssp intrinsics. Remove argument from - __builtin_ia32_rdssp[d|q]. - * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID. - * config/i386/i386-builtin.def: Remove argument from - __builtin_ia32_rdssp[d|q]. - * config/i386/i386.c: Use UINT_FTYPE_VOID. Use - ix86_expand_special_args_builtin for _rdssp[d|q]. - * config/i386/i386.md: Remove argument from rdssp[si|di] insn. - Clear register before usage. - * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q]. - Add documentation for new _get_ssp and _inc_ssp intrinsics. - -2018-02-14 Richard Sandiford - - PR tree-optimization/84357 - * tree-data-ref.c (object_address_invariant_in_loop_p): Check - operand 1 of an ARRAY_REF too. - -2018-02-14 Oleg Endo - - PR target/83831 - * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn, - rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New - declarations. - (set_of_reg): New struct. - (rx_find_set_of_reg, rx_find_use_of_reg): New functions. - * config/rx/rx.c (rx_reg_dead_or_unused_after_insn, - rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New - functions. - * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split. - Split into bitclr, bitset, bitinvert patterns if appropriate. - (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and - use rx_fuse_in_memory_bitop. - (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert - to named insn, correct maximum insn length. - -2018-02-14 Jozef Lawrynowicz - - PR target/79242 - * machmode.def: Define a complex mode for PARTIAL_INT. - * genmodes.c (complex_class): Return MODE_COMPLEX_INT for - MODE_PARTIAL_INT. - * doc/rtl.texi: Document CSPImode. - * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode - handling. - (msp430_hard_regno_nregs_with_padding): Likewise. - -2018-02-13 Peter Bergner - - PR target/84279 - * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses. - -2018-02-13 Segher Boessenkool - - PR rtl-optimization/84169 - * combine.c (try_combine): New variable split_i2i3. Set it to true if - we generated a parallel as new i3 and we split that to new i2 and i3 - instructions. Handle split_i2i3 similar to swap_i2i3: scan the - LOG_LINKs of i3 to see which of those need to link to i2 now. Link - those to i2, not i1. Partially rewrite this scan code. - -2018-02-13 Jakub Jelinek - - PR c/82210 - * stor-layout.c (place_field): For variable length fields, adjust - offset_align afterwards not just based on the field's alignment, - but also on the size. - - PR middle-end/84309 - * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead - of exps and logs in the use_exp2 case. - -2018-02-13 Jeff Law - - * config/rl/rl78.c (rl78_attribute_table): Fix terminator and - entry for "vector". - - * config/rl78/rl78.c (rl78_handle_func_attribute): Mark - ARGS as unused. - -2018-02-13 Alexandre Oliva - - PR debug/84342 - PR debug/84319 - * common.opt (gas-loc-support, gas-locview-support): New. - (ginline-points, ginternal-reset-location-views): New. - * doc/invoke.texi: Document them. Use @itemx where intended. - (gvariable-location-views): Adjust. - * target.def (reset_location_view): New. - * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New. - (TARGET_RESET_LOCATION_VIEW): New. - * doc/tm.texi: Rebuilt. - * dwarf2out.c (dwarf2out_default_as_loc_support): New. - (dwarf2out_default_as_locview_support): New. - (output_asm_line_debug_info): Use option variables. - (dwarf2out_maybe_output_loclist_view_pair): Likewise. - (output_loc_list): Likewise. - (add_high_low_attributes): Check option variables. - Don't output entry view attribute in strict mode. - (gen_inlined_subroutine_die): Check option variables. - (dwarf2out_inline_entry): Likewise. - (init_sections_and_labels): Likewise. - (dwarf2out_early_finish): Likewise. - (maybe_reset_location_view): New, from... - (dwarf2out_var_location): ... here. Call it. - * debug.h (dwarf2out_default_as_loc_support): Declare. - (dwarf2out_default_as_locview_support): Declare. - * hooks.c (hook_int_rtx_insn_0): New. - * hooks.h (hook_int_rtx_insn_0): Declare. - * toplev.c (process_options): Take -gas-loc-support and - -gas-locview-support from dwarf2out. Enable - -gvariable-location-views by default only with locview - assembler support. Enable -ginternal-reset-location-views by - default only if the target defines the corresponding hook. - Enable -ginline-points by default if location views are - enabled; force it disabled if statement frontiers are - disabled. - * tree-inline.c (expand_call_inline): Check option variables. - * tree-ssa-live.c (remove_unused_scope_block_p): Likewise. - -2018-02-13 Richard Sandiford - - PR tree-optimization/84321 - * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE - handling. Also check whether the anti-range contains any values - that satisfy the mask; switch to a VR_RANGE if not. - -2018-02-13 Paolo Bonzini - - PR sanitizer/84340 - * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec. - -2018-02-13 Martin Jambor - - PR c++/83990 - * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location - of call statements, also set location of a load to a temporary. - -2018-02-13 Sebastian Perta - - * config/rl78/rl78.c (add_vector_labels): New function. - * config/rl78/rl78.c (rl78_handle_vector_attribute): New function. - * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels. - * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert - which checks that no arguments are passed. - * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute. - * doc/extend.texi: Documentation for the new attribute. - -2018-02-13 Andreas Schwab - - * config/riscv/linux.h (CPP_SPEC): Define. - -2018-02-13 Jakub Jelinek - - PR target/84335 - * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass - OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of - OPTION_MASK_ISA_AES as first argument to def_builtin_const - for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2 - instead of OPTION_MASK_ISA_PCLMUL as first argument to - def_builtin_const for __builtin_ia32_pclmulqdq128 builtin. - * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it - temporarily for AES and PCLMUL builtins. - - PR tree-optimization/84339 - * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling - ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF. - Formatting fixes. - - PR middle-end/84309 - * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into - exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available. - * generic-match-head.c (canonicalize_math_after_vectorization_p): New - inline function. - * gimple-match-head.c (canonicalize_math_after_vectorization_p): New - inline function. - * omp-simd-clone.h: New file. - * omp-simd-clone.c: Include omp-simd-clone.h. - (expand_simd_clones): No longer static. - * tree-vect-patterns.c: Include fold-const-call.h, attribs.h, - cgraph.h and omp-simd-clone.h. - (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x). - (vect_recog_widen_shift_pattern): Formatting fix. - (vect_pattern_recog_1): Don't check optab for calls. - - PR target/84336 - * config/i386/sse.md (_vpermi2var3_mask): Force - operands[2] into a REG before using gen_lowpart on it. - -2018-02-12 Jeff Law - - PR target/83760 - * config/sh/sh.c (find_barrier): Consider a sibling call - a barrier as well. - - * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when - successfully back substituting a reg. - -2018-02-12 Richard Biener - - PR tree-optimization/84037 - * tree-vect-slp.c (vect_analyze_slp_cost): Add visited - parameter, move visited init to caller. - (vect_slp_analyze_operations): Separate cost from validity - check, initialize visited once for all instances. - (vect_schedule_slp): Analyze map to CSE vectorized nodes once - for all instances. - * tree-vect-stmts.c (vect_model_simple_cost): Make early - out an assert. - (vect_model_promotion_demotion_cost): Likewise. - (vectorizable_bswap): Guard cost modeling with !slp_node - instead of !PURE_SLP_STMT to avoid double-counting on hybrid - SLP stmts. - (vectorizable_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - (vectorizable_condition): Likewise. - (vectorizable_comparison): Likewise. - -2018-02-12 Paolo Bonzini - - PR sanitizer/84307 - * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value. - (ASAN_MARK): Fix fnspec to account for return value, change pointer - argument from 'R' to 'W' so that the pointed-to datum is clobbered. - -2018-02-08 Jan Hubicka - - PR middle-end/83665 - * params.def (inline-min-speedup): Increase from 8 to 15. - (max-inline-insns-auto): Decrease from 40 to 30. - * ipa-split.c (consider_split): Add some buffer for function to - be considered inlining candidate. - * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate - default values. - -2018-02-12 Richard Biener - - PR tree-optimization/84037 - * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the - matched stmts if we cannot swap the non-matched ones. - -2018-02-12 Olga Makhotina - - * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd, - _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss, - _mm_maskz_scalef_round_ss): New intrinsics. - (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix. - * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round, - __builtin_ia32_scalefss_round): Remove. - (__builtin_ia32_scalefsd_mask_round, - __builtin_ia32_scalefss_mask_round): New intrinsics. - * config/i386/sse.md (vmscalef): Renamed to ... - (vmscalef): ... this. - ((match_operand:VF_128 2 "" - "")): Changed to ... - ((match_operand:VF_128 2 "" - "")): ... this. - ("vscalef\t{%2, %1, %0| - %0, %1, %2}"): Changed to ... - ("vscalef\t{%2, %1, - %0|%0, %1, - %2}"): ... this. - * config/i386/subst.md (round_scalar_nimm_predicate): New. - -2018-02-12 Olga Makhotina - - * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd) - (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss) - (_mm_maskz_sqrt_round_ss): New intrinsics. - (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove. - (__builtin_ia32_sqrtsd_mask_round) - (__builtin_ia32_sqrtss_mask_round): New builtins. - * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round) - (__builtin_ia32_sqrtss_round): Remove. - (__builtin_ia32_sqrtsd_mask_round) - (__builtin_ia32_sqrtss_mask_round): New builtins. - * config/i386/sse.md (vmsqrt2): Renamed to ... - (vmsqrt2): ... this. - ((match_operand:VF_128 1 "vector_operand" - "xBm,")): Changed to ... - ((match_operand:VF_128 1 "vector_operand" - "xBm,")): ... this. - (vsqrt\t{%1, %2, %0| - %0, %2, %1}): Changed to ... - (vsqrt\t{%1, %2, - %0|%0, %2, - %1}): ... this. - ((set_attr "prefix" "")): Changed to ... - ((set_attr "prefix" "")): ... this. - -2018-02-11 Steven Munroe - - PR target/84266 - * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]): - Cast vec_cmpeq result to correct type. - * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]): - Cast vec_cmpgt result to correct type. - -2018-02-11 Alexandre Oliva - - * final.c (final_scan_insn_1): Renamed from... - (final_scan_insn): ... this. New wrapper, to recover - seen from the outermost call in recursive ones. - * config/sparc/sparc.c (output_return): Drop seen from call. - (output_sibcall): Likewise. - * config/visium/visium.c (output_branch): Likewise. - -2018-02-10 John David Anglin - - * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as - function label. - -2018-02-10 Alan Modra - - PR target/84300 - * config/rs6000/rs6000.md (split_stack_return): Remove (use ..). - Specify LR as an input. - -2018-02-10 Jakub Jelinek - - PR sanitizer/83987 - * omp-low.c (maybe_remove_omp_member_access_dummy_vars, - remove_member_access_dummy_vars): New functions. - (lower_omp_for, lower_omp_taskreg, lower_omp_target, - lower_omp_1, execute_lower_omp): Use them. - - PR rtl-optimization/84308 - * shrink-wrap.c (spread_components): Release todo vector. - -2018-02-09 Vladimir Makarov - - PR rtl-optimization/57193 - * ira-color.c (struct allocno_color_data): Add member - conflict_allocno_hard_prefs. - (update_conflict_allocno_hard_prefs): New. - (bucket_allocno_compare_func): Add a preference based on - conflict_allocno_hard_prefs. - (push_allocno_to_stack): Update conflict_allocno_hard_prefs. - (color_allocnos): Remove a dead code. Initiate - conflict_allocno_hard_prefs. Call update_costs_from_prefs. - -2018-02-09 Jakub Jelinek - - PR target/84226 - * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand - constraint from =wa to wa. Avoid a subreg on the output operand, - instead use a pseudo and subreg it in a move. - (p9_xxbrd_): Changed to ... - (p9_xxbrd_v2di): ... this insn, without VSX_D iterator. - (p9_xxbrd_v2df): New expander. - (p9_xxbrw_): Changed to ... - (p9_xxbrw_v4si): ... this insn, without VSX_W iterator. - (p9_xxbrw_v4sf): New expander. - -2018-02-09 Sebastian Perta - - * config/rx/rx.md (movsicc): Update expander to be matched by GCC. - -2018-02-09 Peter Bergner - - PR target/83926 - * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit - multiply in 32-bit mode. - (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode. - (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit - mode. - -2018-02-09 Sebastian Perta - - * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint - to allow or block "symbol_ref" depending on the value of TARGET_JSR. - * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF. - * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF. - -2018-02-09 Pierre-Marie de Rodat - - PR lto/84213 - * dwarf2out.c (is_trivial_indirect_ref): New function. - (dwarf2out_late_global_decl): Do not generate a location - attribute for variables that have a non-trivial DECL_VALUE_EXPR - and that are not defined in the current unit. - -2018-02-09 Eric Botcazou - - * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison - instead of a libcall for UNORDERED. - -2018-02-09 Tamar Christina - - PR target/82641 - * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX, - __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP. - -2018-02-09 Andreas Krebbel - - PR target/PR84295 - * config/s390/s390.c (s390_set_current_function): Invoke - s390_indirect_branch_settings also if fndecl didn't change. - -2018-02-09 Alexandre Oliva - - * config/rs6000/rs6000.md (blockage): Set length to zero. - -2018-02-09 Eric Botcazou - - * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion. - -2018-02-09 Jakub Jelinek - - PR sanitizer/84285 - * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS, - STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like - -static-lib*san. - - PR debug/84252 - * var-tracking.c (vt_add_function_parameter): Punt for non-onepart - PARALLEL incoming that failed vt_get_decl_and_offset check. - - PR middle-end/84237 - * output.h (bss_initializer_p): Add NAMED argument, defaulted to false. - * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore - TREE_READONLY bit. - (get_variable_section): For decls in named .bss* sections pass true as - second argument to bss_initializer_p. - -2018-02-09 Marek Polacek - Jakub Jelinek - - PR c++/83659 - * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro. - Formatting fixes. Verify first that tree_fits_poly_int64_p (op01). - Sync some changes from cxx_fold_indirect_ref. - -2018-02-09 Alexandre Oliva - - * cfgexpand.c (expand_gimple_basic_block): Handle inline entry - markers. - * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook. - (BLOCK_INLINE_ENTRY_LABEL): New. - (dwarf2out_var_location): Disregard inline entry markers. - (inline_entry_data): New struct. - (inline_entry_data_hasher): New hashtable type. - (inline_entry_data_hasher::hash): New. - (inline_entry_data_hasher::equal): New. - (inline_entry_data_table): New variable. - (add_high_low_attributes): Add DW_AT_entry_pc and - DW_AT_GNU_entry_view attributes if a pending entry is found - in inline_entry_data_table. Add old entry_pc attribute only - if debug nonbinding markers are disabled. - (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding - markers are enabled. - (block_within_block_p, dwarf2out_inline_entry): New. - (dwarf2out_finish): Check that no entries remained in - inline_entry_data_table. - * final.c (reemit_insn_block_notes): Handle inline entry notes. - (final_scan_insn, notice_source_line): Likewise. - (rest_of_clean_state): Skip inline entry markers. - * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry - markers. - * gimple.c (gimple_build_debug_inline_entry): New. - * gimple.h (enum gimple_debug_subcode): Add - GIMPLE_DEBUG_INLINE_ENTRY. - (gimple_build_debug_inline_entry): Declare. - (gimple_debug_inline_entry_p): New. - (gimple_debug_nonbind_marker_p): Adjust. - * insn-notes.def (INLINE_ENTRY): New. - * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle - inline entry marker notes. - (print_insn): Likewise. - * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support. - (INSN_DEBUG_MARKER_KIND): Likewise. - (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New. - * tree-inline.c (expand_call_inline): Build and insert - debug_inline_entry stmt. - * tree-ssa-live.c (remove_unused_scope_block_p): Preserve - inline entry blocks early, if nonbind markers are enabled. - (dump_scope_block): Dump fragment info. - * var-tracking.c (reemit_marker_as_note): Handle inline entry note. - * doc/gimple.texi (gimple_debug_inline_entry_p): New. - (gimple_build_debug_inline_entry): New. - * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): - Enable/disable inline entry points too. - * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New. - (DEBUG_INSN): Describe inline entry markers. - - * common.opt (gvariable-location-views): New. - (gvariable-location-views=incompat5): New. - * config.in: Rebuilt. - * configure: Rebuilt. - * configure.ac: Test assembler for view support. - * dwarf2asm.c (dw2_asm_output_symname_uleb128): New. - * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare. - * dwarf2out.c (var_loc_view): New typedef. - (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend. - (dwarf2out_locviews_in_attribute): New. - (dwarf2out_locviews_in_loclist): New. - (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists. - (enum dw_line_info_opcode): Add LI_adv_address. - (struct dw_line_info_table): Add view. - (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros. - (DWARF2_ASM_VIEW_DEBUG_INFO): Define default. - (zero_view_p): New variable. - (ZERO_VIEW_P): New macro. - (output_asm_line_debug_info): New. - (struct var_loc_node): Add view. - (add_AT_view_list, AT_loc_list): New. - (add_var_loc_to_decl): Add view param. Test it against last. - (new_loc_list): Add view params. Record them. - (AT_loc_list_ptr): Handle loc and view lists. - (view_list_to_loc_list_val_node): New. - (print_dw_val): Handle dw_val_class_view_list. - (size_of_die): Likewise. - (value_format): Likewise. - (loc_list_has_views): New. - (gen_llsym): Set vl_symbol too. - (maybe_gen_llsym, skip_loc_list_entry): New. - (dwarf2out_maybe_output_loclist_view_pair): New. - (output_loc_list): Output view list or entries too. - (output_view_list_offset): New. - (output_die): Handle dw_val_class_view_list. - (output_dwarf_version): New. - (output_compilation_unit_header): Use it. - (output_skeleton_debug_sections): Likewise. - (output_rnglists, output_line_info): Likewise. - (output_pubnames, output_aranges): Update version comments. - (output_one_line_info_table): Output view numbers in asm comments. - (dw_loc_list): Determine current endview, pass it to new_loc_list. - Call maybe_gen_llsym. - (loc_list_from_tree_1): Adjust. - (add_AT_location_description): Create view list attribute if - needed, check it's absent otherwise. - (convert_cfa_to_fb_loc_list): Adjust. - (maybe_emit_file): Call output_asm_line_debug_info for test. - (dwarf2out_var_location): Reset views as needed. Precompute - add_var_loc_to_decl args. Call get_attr_min_length only if we have the - attribute. Set view. - (new_line_info_table): Reset next view. - (set_cur_line_info_table): Call output_asm_line_debug_info for test. - (dwarf2out_source_line): Likewise. Output view resets and labels to - the assembler, or select appropriate line info opcodes. - (prune_unused_types_walk_attribs): Handle dw_val_class_view_list. - (optimize_string_length): Catch it. Adjust. - (resolve_addr): Copy vl_symbol along with ll_symbol. Handle - dw_val_class_view_list, and remove it if no longer needed. - (hash_loc_list): Hash view numbers. - (loc_list_hasher::equal): Compare them. - (optimize_location_lists): Check whether a view list symbol is - needed, and whether the locview attribute is present, and - whether they match. Remove the locview attribute if no longer - needed. - (index_location_lists): Call skip_loc_list_entry for test. - (dwarf2out_finish): Call output_asm_line_debug_info for test. - Use output_dwarf_version. - * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list. - (struct dw_val_node): Add val_view_list. - * final.c (SEEN_NEXT_VIEW): New. - (set_next_view_needed): New. - (clear_next_view_needed): New. - (maybe_output_next_view): New. - (final_start_function): Rename to... - (final_start_function_1): ... this. Take pointer to FIRST, - add SEEN parameter. Emit param bindings in the initial view. - (final_start_function): Reintroduce SEEN-less interface. - (final): Rename to... - (final_1): ... this. Take SEEN parameter. Output final pending - next view at the end. - (final): Reintroduce seen-less interface. - (final_scan_insn): Output pending next view before switching - sections or ending a block. Mark the next view as needed when - outputting variable locations. Notify debug backend of section - changes, and of location view changes. - (rest_of_handle_final): Adjust. - * toplev.c (process_options): Autodetect value for debug variable - location views option. Warn on incompat5 without -gdwarf-5. - * doc/invoke.texi (gvariable-location-views): New. - (gvariable-location-views=incompat5): New. - (gno-variable-location-views): New. - -2018-02-08 David Malcolm - - PR tree-optimization/84136 - * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion - that the result of find_edge is non-NULL. - -2018-02-08 Sergey Shalnov - - PR target/83008 - * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of - storing integer register in SImode. Fix cost of 256 and 512 - byte aligned SSE register store. - -2018-02-08 Sergey Shalnov - - * config/i386/i386.c (ix86_multiplication_cost): Fix - multiplication cost for TARGET_AVX512DQ. - -2018-02-08 Marek Polacek - - PR tree-optimization/84238 - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of - get_range_strlen. - -2018-02-08 Richard Sandiford - - PR tree-optimization/84265 - * tree-vect-stmts.c (vectorizable_store): Don't treat - VMAT_CONTIGUOUS accesses as grouped. - (vectorizable_load): Likewise. - -2018-02-08 Richard Sandiford - - PR tree-optimization/81635 - * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare. - * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask) - (test_round_for_mask): New functions. - (wide_int_cc_tests): Call test_round_for_mask. - * tree-vrp.h (intersect_range_with_nonzero_bits): Declare. - * tree-vrp.c (intersect_range_with_nonzero_bits): New function. - * tree-data-ref.c (split_constant_offset_1): Use it to refine the - range returned by get_range_info. - -2018-02-08 Jan Hubicka - - PR ipa/81360 - * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare - * symtab.c: Include builtins.h - (symtab_node::output_to_lto_symbol_table_p): Move here - from lto-streamer-out.c:output_symbol_p. - * lto-streamer-out.c (write_symbol): Turn early exit to assert. - (output_symbol_p): Move all logic to symtab.c - (produce_symtab): Update. - -2018-02-08 Andreas Krebbel - - * config/s390/s390-opts.h (enum indirect_branch): Define. - * config/s390/s390-protos.h (s390_return_addr_from_memory) - (s390_indirect_branch_via_thunk) - (s390_indirect_branch_via_inline_thunk): Add function prototypes. - (enum s390_indirect_branch_type): Define. - * config/s390/s390.c (struct s390_frame_layout, struct - machine_function): Remove. - (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask) - (indirect_branch_table_label_no, indirect_branch_table_name): - Define variables. - (INDIRECT_BRANCH_NUM_OPTIONS): Define macro. - (enum s390_indirect_branch_option): Define. - (s390_return_addr_from_memory): New function. - (s390_handle_string_attribute): New function. - (s390_attribute_table): Add new attribute handler. - (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns. - (s390_indirect_branch_via_thunk): New function. - (s390_indirect_branch_via_inline_thunk): New function. - (s390_function_ok_for_sibcall): When jumping via thunk disallow - sibling call optimization for non z10 compiles. - (s390_emit_call): Force indirect branch target to be a single - register. Add r1 clobber for non-z10 compiles. - (s390_emit_epilogue): Emit return jump via return_use expander. - (s390_reorg): Handle JUMP_INSNs as execute targets. - (s390_option_override_internal): Perform validity checks for the - new command line options. - (s390_indirect_branch_attrvalue): New function. - (s390_indirect_branch_settings): New function. - (s390_set_current_function): Invoke s390_indirect_branch_settings. - (s390_output_indirect_thunk_function): New function. - (s390_code_end): Implement target hook. - (s390_case_values_threshold): Implement target hook. - (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target - macros. - * config/s390/s390.h (struct s390_frame_layout) - (struct machine_function): Move here from s390.c. - (TARGET_INDIRECT_BRANCH_NOBP_RET) - (TARGET_INDIRECT_BRANCH_NOBP_JUMP) - (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK) - (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK) - (TARGET_INDIRECT_BRANCH_NOBP_CALL) - (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE) - (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL) - (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX) - (TARGET_INDIRECT_BRANCH_TABLE): Define macros. - * config/s390/s390.md (UNSPEC_EXECUTE_JUMP) - (INDIRECT_BRANCH_THUNK_REGNUM): Define constants. - (mnemonic attribute): Add values which aren't recognized - automatically. - ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable - pattern for branch conversion. Fix mnemonic attribute. - ("*c", "*sibcall_br", "*sibcall_value_br", "*return"): Emit - indirect branch via thunk if requested. - ("indirect_jump", ""): Expand patterns for branch conversion. - ("*indirect_jump"): Disable for branch conversion using out of - line thunks. - ("indirect_jump_via_thunk_z10") - ("indirect_jump_via_thunk") - ("indirect_jump_via_inlinethunk_z10") - ("indirect_jump_via_inlinethunk", "*casesi_jump") - ("casesi_jump_via_thunk_z10", "casesi_jump_via_thunk") - ("casesi_jump_via_inlinethunk_z10") - ("casesi_jump_via_inlinethunk", "*basr_via_thunk_z10") - ("*basr_via_thunk", "*basr_r_via_thunk_z10") - ("*basr_r_via_thunk", "return_prez10"): New pattern. - ("*indirect2_jump"): Disable for branch conversion. - ("casesi_jump"): Turn into expander and expand patterns for branch - conversion. - ("return_use"): New expander. - ("*return"): Emit return via thunk and rename it to ... - ("*return"): ... this one. - * config/s390/s390.opt: Add new options and and enum for the - option values. - -2018-02-08 Richard Sandiford - - * lra-constraints.c (match_reload): Unconditionally use - gen_lowpart_SUBREG, rather than selecting between that - and equivalent gen_rtx_SUBREG code. - -2018-02-08 Richard Biener - - PR tree-optimization/84233 - * tree-ssa-phiprop.c (propagate_with_phi): Use separate - changed flag instead of boguously re-using phi_inserted. - -2018-02-08 Martin Jambor - - * hsa-gen.c (get_symbol_for_decl): Set program allocation for - static local variables. - -2018-02-08 Richard Biener - - PR tree-optimization/84278 - * tree-vect-stmts.c (vectorizable_store): When looking for - smaller vector types to perform grouped strided loads/stores - make sure the mode is supported by the target. - (vectorizable_load): Likewise. - -2018-02-08 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_components_for_bb): - Increase LDP/STP opportunities by adding adjacent callee-saves. - -2018-02-08 Wilco Dijkstra - - PR rtl-optimization/84068 - PR rtl-optimization/83459 - * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting. - -2018-02-08 Aldy Hernandez - - PR tree-optimization/84224 - * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert. - * calls.c (gimple_alloca_call_p): Only return TRUE when we have - non-zero arguments. - -2018-02-07 Iain Sandoe - - PR target/84113 - * config/rs6000/altivec.md (*restore_world): Remove LR use. - * config/rs6000/predicates.md (restore_world_operation): Adjust op - count, remove one USE. - -2018-02-07 Michael Meissner - - * doc/install.texi (Configuration): Document the - --with-long-double-format={ibm,ieee} PowerPC configuration - options. - - PR target/84154 - * config/rs6000/rs6000.md (fix_trunc2): - Convert from define_expand to be define_insn_and_split. Rework - float/double/_Float128 conversions to QI/HI/SImode to work with - both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where - conversions to QI/HImode types did a store and then a load to - truncate the value. For conversions to VSX registers, don't split - the insn, instead emit the code directly. Use the code iterator - any_fix to combine signed and unsigned conversions. - (fix_truncsi2_p8): Likewise. - (fixuns_trunc2): Likewise. - (fix_trunc2): Likewise. - (fix_trunc2): Likewise. - (fix_di2_hw): Likewise. - (fixuns_di2_hw): Likewise. - (fix_si2_hw): Likewise. - (fixuns_si2_hw): Likewise. - (fix_2_hw): Likewise. - (fix_trunc2): Likewise. - (fctiwz__smallint): Rename fctiwz__smallint to - fix_truncsi2_p8. - (fix_trunc2_internal): Delete, no longer used. - (fixuns_trunc2_internal): Likewise. - (fix__mem): Likewise. - (fctiwz__mem): Likewise. - (fix__mem): Likewise. - (fix_trunc2_mem): On ISA 3.0, prevent - the register allocator from doing a direct move to the GPRs to do - a store, and instead use the ISA 3.0 store byte/half-word from - vector register instruction. For IEEE 128-bit floating point, - also optimize stores of 32-bit ints. - (fix_trunc2_mem): Likewise. - -2018-02-07 Alan Hayward - - * genextract.c (push_pathstr_operand): New function to support - [a-zA-Z]. - (walk_rtx): Call push_pathstr_operand. - (print_path): Support [a-zA-Z]. - -2018-02-07 Richard Biener - - PR tree-optimization/84037 - * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member. - (cse_and_gimplify_to_preheader): Declare. - (vect_get_place_in_interleaving_chain): Likewise. - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize - ivexpr_map. - (_loop_vec_info::~_loop_vec_info): Delete it. - (cse_and_gimplify_to_preheader): New function. - * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export. - * tree-vect-stmts.c (vectorizable_store): CSE base and steps. - (vectorizable_load): Likewise. For grouped stores always base - the IV on the first element. - * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning - condition before gimplifying. - -2018-02-07 Jakub Jelinek - - * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for - *DIV_EXPR and *MOD_EXPR. - -2018-02-07 H.J. Lu - - PR target/84248 - * config/i386/i386.c (ix86_option_override_internal): Mask out - the CF_SET bit when checking -fcf-protection. - -2018-02-07 Tom de Vries - - PR libgomp/84217 - * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large - enough. - -2018-02-07 Richard Biener - - PR tree-optimization/84204 - * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in - this place. - - PR tree-optimization/84205 - * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also - special-case isl_ast_op_zdiv_r. - - PR tree-optimization/84223 - * graphite-scop-detection.c (gather_bbs::before_dom_children): - Only add conditions from within the region. - (gather_bbs::after_dom_children): Adjust. - -2018-02-07 Georg-Johann Lay - - PR target/84209 - * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros. - * config/avr/avr.md: Only post-reload split REG-REG moves if - either register is GENERAL_REG_P. - -2018-02-07 Jakub Jelinek - - PR tree-optimization/84235 - * tree-ssa-scopedtables.c - (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt - if the subtraction is performed in floating point type where NaNs are - honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't - build 1. Formatting fix. - -2018-02-06 Jakub Jelinek - - PR target/84146 - * config/i386/i386.c (rest_of_insert_endbranch): Only skip - NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else, - and skip it regardless of bb boundaries. Use CALL_P macro, - don't test INSN_P (insn) together with CALL_P or JUMP_P check - unnecessarily, formatting fix. - -2018-02-06 Michael Collison - - * config/arm/thumb2.md: - (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it. - (*thumb_mov_notscc): Ditto. - -2018-02-06 Michael Meissner - - PR target/84154 - * config/rs6000/rs6000.md (su code attribute): Use "u" for - unsigned_fix, not "s". - -2018-02-06 Rainer Orth - - * configure.ac (gcc_fn_eh_frame_ro): New function. - (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for - correct .eh_frame permissions. - * configure: Regenerate. - -2018-02-06 Andrew Jenner - - * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove - irrelevant options. - -2018-02-06 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Display warning message for -mno-speculate-indirect-jumps. - -2018-02-06 Andrew Jenner - - * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add - Undocumented. - * config/powerpcspe/sysv4.opt (mbit-align): Likewise. - -2018-02-06 Aldy Hernandez - - PR tree-optimization/84225 - * tree-eh.c (find_trapping_overflow): Only call - operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P. - -2018-02-06 Igor Tsimbalist - - PR target/84145 - * config/i386/i386.c: Reimplement the check of possible options - -mibt/-mshstk conbination. Change error messages. - * doc/invoke.texi: Fix a typo: remove extra '='. - -2018-02-06 Marek Polacek - - PR tree-optimization/84228 - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements. - -2018-02-06 Tamar Christina - - PR target/82641 - * config/arm/arm.c (arm_print_asm_arch_directives): Record already - emitted arch directives. - * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and - __ARM_FEATURE_COPROC before changing architectures. - -2018-02-06 Richard Biener - - * config/i386/i386.c (print_reg): Fix typo. - (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll. - -2018-02-06 Eric Botcazou - - * configure: Regenerate. - -2018-02-05 Martin Sebor - - PR tree-optimization/83369 - * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print - inlining context. - -2018-02-05 Martin Liska - - * doc/invoke.texi: Cherry-pick upstream r323995. - -2018-02-05 Richard Sandiford - - * ira.c (ira_init_register_move_cost): Adjust comment. - -2018-02-05 Martin Liska - - PR gcov-profile/84137 - * doc/gcov.texi: Fix typo in documentation. - -2018-02-05 Martin Liska - - PR gcov-profile/83879 - * doc/gcov.texi: Document necessity of --dynamic-list-data when - using dlopen functionality. - -2018-02-05 Olga Makhotina - - * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd, - _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss, - _mm_maskz_range_ss, _mm_mask_range_round_ss, - _mm_maskz_range_round_ss): New intrinsics. - (__builtin_ia32_rangesd128_round) - (__builtin_ia32_rangess128_round): Remove. - (__builtin_ia32_rangesd128_mask_round, - __builtin_ia32_rangess128_mask_round): New builtins. - * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round, - __builtin_ia32_rangess128_round): Remove. - (__builtin_ia32_rangesd128_mask_round, - __builtin_ia32_rangess128_mask_round): New builtins. - * config/i386/sse.md (ranges): Renamed to ... - (ranges): ... this. - ((match_operand:VF_128 2 "" - "")): Changed to ... - ((match_operand:VF_128 2 "" - "")): ... this. - ("vrange\t{%3, %2, %1, %0| - %0, %1, %2, %3}"): Changed to ... - ("vrange\t{%3, %2, - %1, %0|%0, %1, - %2, %3}"): ... this. - -2018-02-02 Andrew Jenner - - * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant - options. - * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value): - Remove all values except native, 8540 and 8548. - -2018-02-02 H.J. Lu - - * config/i386/i386.c (ix86_output_function_return): Pass - INVALID_REGNUM, instead of -1, as invalid register number to - indirect_thunk_name and output_indirect_thunk. - -2018-02-02 Julia Koval - - * config.gcc: Add -march=icelake. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake. - * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake. - * config/i386/i386.c (processor_costs): Add m_ICELAKE. - (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2, - PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New. - (processor_target_table): Add icelake. - (ix86_option_override_internal): Handle new PTAs. - (get_builtin_code_for_version): Handle icelake. - (M_INTEL_COREI7_ICELAKE): New. - (fold_builtin_cpu): Handle icelake. - * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New. - * doc/invoke.texi: Add -march=icelake. - -2018-02-02 Julia Koval - - * config/i386/i386.c (ix86_option_override_internal): Change flags type - to wide_int_bitmask. - * wide-int-bitmask.h: New. - -2018-02-02 Igor Tsimbalist - - PR target/84066 - * config/i386/i386.md: Replace Pmode with word_mode in - builtin_setjmp_setup and builtin_longjmp to support x32. - -2018-02-01 Peter Bergner - - PR target/56010 - PR target/83743 - * config/rs6000/driver-rs6000.c: #include "diagnostic.h". - #include "opts.h". - (rs6000_supported_cpu_names): New static variable. - (linux_cpu_translation_table): Likewise. - (elf_platform) : Define new static variable and use it. - Translate kernel AT_PLATFORM name to canonical name if needed. - Error if platform name is unknown. - -2018-02-01 Aldy Hernandez - - PR target/84089 - * config/pa/predicates.md (base14_operand): Handle E_VOIDmode. - -2018-02-01 Jeff Law - - PR target/84128 - * config/i386/i386.c (release_scratch_register_on_entry): Add new - OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore - the scratch if RELEASE_VIA_POP is false. - (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE. - If we have to save a temporary register, decrement SIZE appropriately. - Pass new arguments to release_scratch_register_on_entry. - (ix86_adjust_stack_and_probe): Likewise. - (ix86_emit_probe_stack_range): Pass new arguments to - release_scratch_register_on_entry. - -2018-02-01 Uros Bizjak - - PR rtl-optimization/84157 - * combine.c (change_zero_ext): Use REG_P predicate in - front of HARD_REGISTER_P predicate. - -2018-02-01 Georg-Johann Lay - - * config/avr/avr.c (avr_option_override): Move disabling of - -fdelete-null-pointer-checks to... - * common/config/avr/avr-common.c (avr_option_optimization_table): - ...here. - -2018-02-01 Richard Sandiford - - PR tree-optimization/81635 - * tree-data-ref.c (split_constant_offset_1): For types that - wrap on overflow, try to use range info to prove that wrapping - cannot occur. - -2018-02-01 Renlin Li - - PR target/83370 - * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle - TAILCALL_ADDR_REGS. - (aarch64_register_move_cost): Likewise. - * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to - TAILCALL_ADDR_REGS. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to - TAILCALL_ADDR_REGS. Remove IP registers. - * config/aarch64/aarch64.md (Ucs): Update register constraint. - -2018-02-01 Richard Biener - - * domwalk.h (dom_walker::dom_walker): Add additional constructor - for specifying RPO order and allow NULL for that. - * domwalk.c (dom_walker::dom_walker): Likewise. - (dom_walker::walk): Handle NULL RPO order. - * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children - in RPO order. - (rewrite_update_dom_walker): Likewise. - (mark_def_dom_walker): Likewise. - -2018-02-01 Richard Sandiford - - * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move) - (aarch64_maybe_expand_sve_subreg_move): Declare. - * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec. - * config/aarch64/predicates.md (aarch64_any_register_operand): New - predicate. - * config/aarch64/aarch64-sve.md (mov): Optimize subreg moves - that are semantically a reverse operation. - (*aarch64_sve_mov_subreg_be): New pattern. - * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move): - (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New - functions. - (aarch64_can_change_mode_class): For big-endian, forbid changes - between two SVE modes if they have different element sizes. - -2018-02-01 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer - the TImode handling for big-endian targets. - -2018-02-01 Richard Sandiford - - * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with... - (*sve_ld1rq): ... this new pattern. Handle all element sizes, - not just bytes. - * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate): - Remove BSWAP handing for big-endian targets and use the form of - LD1RQ appropariate for the mode. - -2018-02-01 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle - all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single - duplicated element. - -2018-02-01 Richard Sandiford - - PR tearget/83845 - * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten - check for operands that need to go through aarch64_sve_reload_be. - -2018-02-01 Jakub Jelinek - - PR tree-optimization/81661 - PR tree-optimization/84117 - * tree-eh.h (rewrite_to_non_trapping_overflow): Declare. - * tree-eh.c: Include gimplify.h. - (find_trapping_overflow, replace_trapping_overflow, - rewrite_to_non_trapping_overflow): New functions. - * tree-vect-loop.c: Include tree-eh.h. - (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow. - * tree-data-ref.c: Include tree-eh.h. - (get_segment_min_max): Use rewrite_to_non_trapping_overflow. - -2018-01-31 Uros Bizjak - - PR rtl-optimization/84123 - * combine.c (change_zero_ext): Check if hard register satisfies - can_change_dest_mode before calling gen_lowpart_SUBREG. - -2018-01-31 Vladimir Makarov - - PR target/82444 - * ira.c (ira_init_register_move_cost): Remove assert. - -2018-01-31 Eric Botcazou - - PR rtl-optimization/84071 - * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case. - * doc/tm.texi: Regenerate. - -2018-01-31 Richard Biener - - PR tree-optimization/84132 - * tree-data-ref.c (analyze_miv_subscript): Properly - check whether evolution_function_is_affine_multivariate_p - before calling gcd_of_steps_may_divide_p. - -2018-01-31 Julia Koval - - PR target/83618 - * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID. - * config/i386/i386.md (rdpid_rex64) New. - (rdpid): Make 32bit only. - -2018-01-29 Aldy Hernandez - - PR lto/84105 - * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with - an IDENTIFIER_NODE for FUNCTION_TYPE's. - -2018-01-31 Eric Botcazou - - Revert - 2018-01-12 Eric Botcazou - - * config/sparc/sparc.md (vxworks_load_got): Set the GOT register. - -2018-01-31 Eric Botcazou - - PR rtl-optimization/84071 - * combine.c (record_dead_and_set_regs_1): Record the source unmodified - for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target. - -2018-01-31 Claudiu Zissulescu - - * config/arc/arc.c (arc_handle_aux_attribute): New function. - (arc_attribute_table): Add 'aux' attribute. - (arc_in_small_data_p): Consider aux like variables. - (arc_is_aux_reg_p): New function. - (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables. - (arc_get_aux_arg): New function. - (prepare_move_operands): Handle aux-register access. - (arc_handle_aux_attribute): New function. - * doc/extend.texi (ARC Variable attributes): Add subsection. - -2018-01-31 Claudiu Zissulescu - - * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto. - * config/arc/arc.c (arc_handle_uncached_attribute): New function. - (arc_attribute_table): Add 'uncached' attribute. - (arc_print_operand): Print '.di' flag for uncached memory - accesses. - (arc_in_small_data_p): Do not consider for small data the uncached - types. - (arc_is_uncached_mem_p): New function. - * config/arc/predicates.md (compact_store_memory_operand): Check - for uncached memory accesses. - (nonvol_nonimm_operand): Likewise. - * doc/extend.texi (ARC Type Attribute): New subsection. - -2018-01-31 Jakub Jelinek - - PR c/84100 - * common.opt (falign-functions=, falign-jumps=, falign-labels=, - falign-loops=): Add Optimization flag. - -2018-01-30 Jeff Law - - PR target/84064 - * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument - INT_REGISTERS_SAVED. Check it prior to calling - get_scratch_register_on_entry. - (ix86_adjust_stack_and_probe): Similarly. - (ix86_emit_probe_stack_range): Similarly. - (ix86_expand_prologue): Corresponding changes. - -2018-01-30 Rainer Orth - - PR target/40411 - * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*, - -std=iso9899:199409 instead of -pedantic to select values-Xc.o. - -2018-01-30 Vladimir Makarov - - PR target/84112 - * lra-constraints.c (curr_insn_transform): Process AND in the - address. - -2018-01-30 Jakub Jelinek - - PR rtl-optimization/83986 - * sched-deps.c (sched_analyze_insn): For frame related insns, add anti - dependence against last_pending_memory_flush in addition to - pending_jump_insns. - -2018-01-30 Alexandre Oliva - - PR tree-optimization/81611 - * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening - copies. - -2018-01-30 Aaron Sawdey - - PR target/83758 - * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return - a reg rtx. - -2018-01-30 Richard Biener - Jakub Jelinek - - PR tree-optimization/84111 - * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip - inner loops added during recursion, as they don't have up-to-date - SSA form. - -2018-01-30 Jan Hubicka - - PR ipa/81360 - * ipa-inline.c (can_inline_edge_p): Break out late tests to... - (can_inline_edge_by_limits_p): ... here. - (can_early_inline_edge_p, check_callers, - update_caller_keys, update_callee_keys, recursive_inlining, - add_new_edges_to_heap, speculation_useful_p, - inline_small_functions, - inline_small_functions, flatten_function, - inline_to_all_callers_1): Update. - -2018-01-30 Jan Hubicka - - * profile-count.c (profile_count::combine_with_ipa_count): Handle - zeros correctly. - -2018-01-30 Richard Biener - - PR tree-optimization/83008 - * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost - invariant and constant vector uses in stmts when they need - more than one stmt. - -2018-01-30 Rainer Orth - - PR bootstrap/84017 - * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86. - * configure: Regenerate. - -2018-01-30 Richard Sandiford - - * config/aarch64/aarch64-sve.md (*vec_extract_0): New - pattern. - (*vec_extract_v128): Require a nonzero lane number. - Use gen_rtx_REG rather than gen_lowpart. - -2018-01-30 Richard Sandiford - - * lra-constraints.c (match_reload): Use subreg_lowpart_offset - rather than 0 when creating partial subregs. - -2018-01-30 Richard Sandiford - - * vec-perm-indices.c (vec_perm_indices::series_p): Give examples - of usage. - -2018-01-29 Michael Meissner - - PR target/81550 - * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode - and SFmode can go in Altivec registers (-mcpu=power7 for DFmode, - -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY - flags. This restores the settings used before the 2017-07-24. - Turning off pre increment/decrement/modify allows IVOPTS to - optimize DF/SF loops where the index is an int. - -2018-01-29 Richard Biener - Kelvin Nilsen - - PR bootstrap/80867 - * tree-vect-stmts.c (vectorizable_call): Don't call - targetm.vectorize_builtin_md_vectorized_function if callee is - NULL. - -2018-01-22 Carl Love - - * doc/extend.tex: Fix typo in second arg in - __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}. - -2018-01-29 Richard Biener - - PR tree-optimization/84086 - * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h. - (flush_ssaname_freelist): When SSA names were released reset - the SCEV hash table. - -2018-01-29 Richard Biener - - PR tree-optimization/84057 - * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already - removed paths when removing edges. - -2018-01-27 H.J. Lu - - * doc/invoke.texi: Replace -mfunction-return==@var{choice} with - -mfunction-return=@var{choice}. - -2018-01-27 Bernd Edlinger - - PR diagnostic/84034 - * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace): - Handle CR like TAB. - (layout::print_source_line): Likewise. - (test_get_line_width_without_trailing_whitespace): Add test cases. - -2018-01-27 Jakub Jelinek - - PR middle-end/84040 - * sched-deps.c (sched_macro_fuse_insns): Return immediately for - debug insns. - -2018-01-26 Jim Wilson - - * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New. - - * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs - specified. - -2018-01-26 Kyrylo Tkachov - - * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS - and CMP + SUB-immediate -> SUBS. - -2018-01-26 Martin Sebor - - PR tree-optimization/83896 - * tree-ssa-strlen.c (get_string_len): Rename... - (get_string_cst_length): ...to this. Return HOST_WIDE_INT. - Avoid assuming length is constant. - (handle_char_store): Use HOST_WIDE_INT for string length. - -2018-01-26 Uros Bizjak - - PR target/81763 - * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber - to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives. - -2018-01-26 Richard Biener - - PR rtl-optimization/84003 - * dse.c (record_store): Only record redundant stores when - the earlier store aliases at least all accesses the later one does. - -2018-01-26 Jakub Jelinek - - PR rtl-optimization/83985 - * dce.c (deletable_insn_p): Return false for separate shrink wrapping - REG_CFA_RESTORE insns. - (delete_unmarked_insns): Don't ignore separate shrink wrapping - REG_CFA_RESTORE insns here. - - PR c/83989 - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't - use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR. - -2018-01-26 Claudiu Zissulescu - - * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3. - * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... . - (arc_init): Likewise. - (arc_override_options): Likewise. - (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune - value. - (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn - support. - * config/arc/arc.h (TARGET_DBNZ): Define. - * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to - properly set the tune attribute. - (dbnz): Use TARGET_DBNZ guard. - * config/arc/arc.opt (mtune): Add core3 option. - -2018-01-26 Claudiu Zissulescu - - * config/arc/arc.c (arc_delegitimize_address_0): Refactored to - recognize new pic like addresses. - (arc_delegitimize_address): Clean up. - -2018-01-26 Claudiu Zissulescu - - * config/arc/arc-arches.def: Option mrf16 valid for all - architectures. - * config/arc/arc-c.def (__ARC_RF16__): New predefined macro. - * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on. - * config/arc/arc-options.def (FL_RF16): Add mrf16 option. - * config/arc/arc-tables.opt: Regenerate. - * config/arc/arc.c (arc_conditional_register_usage): Handle - reduced register file case. - (arc_file_start): Set must have build attributes. - * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using - mrf16 option value. - * config/arc/arc.opt (mrf16): Add new option. - * config/arc/elf.h (ATTRIBUTE_PCS): Define. - * config/arc/genmultilib.awk: Handle new mrf16 option. - * config/arc/linux.h (ATTRIBUTE_PCS): Define. - * config/arc/t-multilib: Regenerate. - * doc/invoke.texi (ARC Options): Document mrf16 option. - -2018-01-26 Claudiu Zissulescu - - * config/arc/arc-protos.h: Add arc_is_secure_call_p proto. - * config/arc/arc.c (arc_handle_secure_attribute): New function. - (arc_attribute_table): Add 'secure_call' attribute. - (arc_print_operand): Print secure call operand. - (arc_function_ok_for_sibcall): Don't optimize tail calls when - secure. - (arc_is_secure_call_p): New function. * config/arc/arc.md - (call_i): Add support for sjli instruction. - (call_value_i): Likewise. - * config/arc/constraints.md (Csc): New constraint. - -2018-01-26 Claudiu Zissulescu - John Eric Martin - - * config/arc/arc-protos.h: Add arc_is_jli_call_p proto. - * config/arc/arc.c (_arc_jli_section): New struct. - (arc_jli_section): New type. - (rc_jli_sections): New static variable. - (arc_handle_jli_attribute): New function. - (arc_attribute_table): Add jli_always and jli_fixed attribute. - (arc_file_end): New function. - (TARGET_ASM_FILE_END): Define. - (arc_print_operand): Reuse 'S' letter for JLI output instruction. - (arc_add_jli_section): New function. - (jli_call_scan): Likewise. - (arc_reorg): Call jli_call_scan. - (arc_output_addsi): Remove 'S' from printing asm operand. - (arc_is_jli_call_p): New function. - * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm - operand. - (movhi_insn): Likewise. - (movsi_insn): Likewise. - (movsi_set_cc_insn): Likewise. - (loadqi_update): Likewise. - (load_zeroextendqisi_update): Likewise. - (load_signextendqisi_update): Likewise. - (loadhi_update): Likewise. - (load_zeroextendhisi_update): Likewise. - (load_signextendhisi_update): Likewise. - (loadsi_update): Likewise. - (loadsf_update): Likewise. - (movsicc_insn): Likewise. - (bset_insn): Likewise. - (bxor_insn): Likewise. - (bclr_insn): Likewise. - (bmsk_insn): Likewise. - (bicsi3_insn): Likewise. - (cmpsi_cc_c_insn): Likewise. - (movsi_ne): Likewise. - (movsi_cond_exec): Likewise. - (clrsbsi2): Likewise. - (norm_f): Likewise. - (normw): Likewise. - (swap): Likewise. - (divaw): Likewise. - (flag): Likewise. - (sr): Likewise. - (kflag): Likewise. - (ffs): Likewise. - (ffs_f): Likewise. - (fls): Likewise. - (call_i): Remove 'S' asm letter, add jli instruction. - (call_value_i): Likewise. - * config/arc/arc.op (mjli-always): New option. - * config/arc/constraints.md (Cji): New constraint. - * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm - operand. - (subsf3_fpx): Likewise. - (mulsf3_fpx): Likewise. - * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing - asm operand. - * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed' - function attrbutes. - * doc/invoke.texi (ARC): Document mjli-always option. - -2018-01-26 Sebastian Perta - - * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const - avoid addition with 0 and use incw and decw where possible. - -2018-01-26 Richard Biener - - PR tree-optimization/81082 - * fold-const.c (fold_plusminus_mult_expr): Do not perform the - association if it requires casting to unsigned. - * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived - from fold_plusminus_mult_expr to catch important cases late when - range info is available. - -2018-01-26 Rainer Orth - - * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove. - * configure.ac (hidden_linkonce): New test. - * configure: Regenerate. - * config.in: Regenerate. - -2018-01-26 Julia Koval - - * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask, - _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask, - _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask, - _mm_mask_bitshuffle_epi64_mask): Fix type. - * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI, - USI_FTYPE_V4DI_V4DI_USI): Remove. - * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask, - __builtin_ia32_vpshufbitqmb256_mask, - __builtin_ia32_vpshufbitqmb128_mask): Fix types. - * config/i386/i386.c (ix86_expand_args_builtin): Remove old types. - * config/i386/sse.md (VI1_AVX512VLBW): Change types. - -2018-01-26 Alan Modra - - PR target/84033 - * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude - UNSPEC_VBPERMQ. Sort other unspecs. - -2018-01-25 David Edelsohn - - * doc/invoke.texi (PowerPC Options): Document 'native' cpu type. - -2018-01-25 Jan Hubicka - - PR middle-end/83055 - * predict.c (drop_profile): Do not push/pop cfun; update also - node->count. - (handle_missing_profiles): Fix logic looking for zero profiles. - -2018-01-25 Jakub Jelinek - - PR middle-end/83977 - * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature - on functions with #pragma omp declare simd or functions with simd - attribute. - * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change. - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): - Remove trailing \n from warning_at calls. - -2018-01-25 Tom de Vries - - PR target/84028 - * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call - for neutered workers. - -2018-01-24 Joseph Myers - - PR target/68467 - * config/m68k/m68k.c (m68k_promote_function_mode): New function. - (TARGET_PROMOTE_FUNCTION_MODE): New macro. - -2018-01-24 Jeff Law - - PR target/83994 - * i386.c (get_probe_interval): Move to earlier point. - (ix86_compute_frame_layout): If -fstack-clash-protection and - the frame is larger than the probe interval, then use pushes - to save registers rather than reg->mem moves. - (ix86_expand_prologue): Remove conditional for int_registers_saved - assertion. - -2018-01-24 Vladimir Makarov - - PR target/84014 - * ira-build.c (setup_min_max_allocno_live_range_point): Set up - min/max for never referenced object. - -2018-01-24 Jakub Jelinek - - PR middle-end/83977 - * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN - here. - * omp-low.c (create_omp_child_function): Remove "omp declare simd" - attributes from DECL_ATTRIBUTES (decl) without affecting - DECL_ATTRIBUTES (current_function_decl). - * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL - functions with non-NULL DECL_ABSTRACT_ORIGIN. - -2018-01-24 Richard Sandiford - - PR tree-optimization/83979 - * fold-const.c (fold_comparison): Use constant_boolean_node - instead of boolean_{true,false}_node. - -2018-01-24 Jan Hubicka - - * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls - with zero counts. - -2018-01-24 Bill Schmidt - - * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv): - Simplify the clause that sets the length attribute. - (*call_value_indirect_nonlocal_sysv): Likewise. - (*sibcall_nonlocal_sysv): Clean up code block; simplify the - clause that sets the length attribute. - (*sibcall_value_nonlocal_sysv): Likewise. - -2018-01-24 Tom de Vries - - PR target/83589 - * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1. - (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c. - Add strict parameter. - (prevent_branch_around_nothing): Insert dummy insn between branch to - label and label with no ptx insn inbetween. - * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn. - -2018-01-24 Tom de Vries - - PR target/81352 - * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call - for neutered threads in warp. - * config/nvptx/nvptx.md (define_insn "exit"): New insn. - -2018-01-24 Richard Biener - - PR tree-optimization/83176 - * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. } - operands. - -2018-01-24 Richard Biener - - PR tree-optimization/82819 - * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid - code generating pluses that are no-ops in the target precision. - -2018-01-24 Richard Biener - - PR middle-end/84000 - * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind. - -2018-01-23 Jan Hubicka - - * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count - to merge probabilities. - * predict.c (probably_never_executed): Also mark as cold functions - with global 0 profile and guessed local profile. - * profile-count.c (profile_probability::combine_with_count): New - member function. - * profile-count.h (profile_probability::operator*, - profile_probability::operator*=, profile_probability::operator/, - profile_probability::operator/=): Reduce precision to adjusted - and set value to guessed on contradictory divisions. - (profile_probability::combine_with_freq): Remove. - (profile_probability::combine_wiht_count): Declare. - (profile_count::force_nonzero):: Set to adjusted. - (profile_count::probability_in):: Set quality to adjusted. - * tree-ssa-tail-merge.c (replace_block_by): Use - combine_with_count. - -2018-01-23 Andrew Waterman - Jim Wilson - - * config/riscv/riscv.c (riscv_stack_boundary): New. - (riscv_option_override): Set riscv_stack_boundary. Handle - riscv_preferred_stack_boundary_arg. - * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New. - (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY. - (STACK_BOUNDARY): Set to riscv_stack_boundary. - (RISCV_STACK_ALIGN): Use STACK_BOUNDARY. - * config/riscv/riscv.opt (mpreferred-stack-boundary): New. - * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary. - -2018-01-23 H.J. Lu - - PR target/83905 - * config/i386/i386.c (ix86_expand_prologue): Use cost reference - of struct ix86_frame. - (ix86_expand_epilogue): Likewise. Add a local variable for - the reg_save_offset field in struct ix86_frame. - -2018-01-23 Bin Cheng - - PR tree-optimization/82604 - * tree-loop-distribution.c (enum partition_kind): New enum item - PKIND_PARTIAL_MEMSET. - (partition_builtin_p): Support above new enum item. - (generate_code_for_partition): Ditto. - (compute_access_range): Differentiate cases that equality can be - proven at all loops, the innermost loops or no loops. - (classify_builtin_st, classify_builtin_ldst): Adjust call to above - function. Set PKIND_PARTIAL_MEMSET for partition appropriately. - (finalize_partitions, distribute_loop): Don't fuse partition of - PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest. - (prepare_perfect_loop_nest): Distribute 3-level loop nest only if - parloop is enabled. - -2018-01-23 Martin Liska - - * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in - order to ignore the predictor. - (PRED_POLYMORPHIC_CALL): Likewise. - (PRED_RECURSIVE_CALL): Likewise. - -2018-01-23 Martin Liska - - * tree-profile.c (tree_profiling): Print function header to - aware reader which function we are working on. - * value-prof.c (gimple_find_values_to_profile): Do not print - not interesting value histograms. - -2018-01-23 Martin Liska - - * profile-count.h (enum profile_quality): Add - profile_uninitialized as the first value. Do not number values - as they are zero based. - (profile_count::verify): Update sanity check. - (profile_probability::verify): Likewise. - -2018-01-23 Nathan Sidwell - - * doc/invoke.texi (ffor-scope): Deprecate. - -2018-01-23 David Malcolm - - PR tree-optimization/83510 - * domwalk.c (set_all_edges_as_executable): New function. - (dom_walker::dom_walker): Convert bool param - "skip_unreachable_blocks" to enum reachability. Move setup of - edge flags to set_all_edges_as_executable and only do it when - reachability is REACHABLE_BLOCKS. - * domwalk.h (enum dom_walker::reachability): New enum. - (dom_walker::dom_walker): Convert bool param - "skip_unreachable_blocks" to enum reachability. - (set_all_edges_as_executable): New decl. - * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert - from false for "skip_unreachable_blocks" to ALL_BLOCKS for - "reachability". - * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise, - but converting true to REACHABLE_BLOCKS. - * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise. - * tree-vrp.c - (check_array_bounds_dom_walker::check_array_bounds_dom_walker): - Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS. - (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to - REACHABLE_BLOCKS. - (vrp_prop::vrp_finalize): Call set_all_edges_as_executable - if check_all_array_refs will be called. - -2018-01-23 David Malcolm - - * tree.c (selftest::test_location_wrappers): Add more test - coverage. - -2018-01-23 David Malcolm - - * sbitmap.c (selftest::test_set_range): Fix memory leaks. - (selftest::test_bit_in_range): Likewise. - -2018-01-23 Richard Sandiford - - PR testsuite/83888 - * doc/sourcebuild.texi (vect_float): Say that the selector - only describes the situation when -funsafe-math-optimizations is on. - (vect_float_strict): Document. - -2018-01-23 Richard Sandiford - - PR tree-optimization/83965 - * tree-vect-patterns.c (vect_reassociating_reduction_p): New function. - (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it - instead of checking only for a reduction. - (vect_recog_widen_sum_pattern): Likewise. - -2018-01-23 Jan Hubicka - - * predict.c (probably_never_executed): Only use precise profile info. - (compute_function_frequency): Skip after inlining hack since we now - have quality checking. - -2018-01-23 Jan Hubicka - - * profile-count.h (profile_probability::very_unlikely, - profile_probability::unlikely, profile_probability::even): Set - precision to guessed. - -2018-01-23 Richard Biener - - PR tree-optimization/83963 - * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): - Properly terminate dominator walk when crossing the exit edge not - when visiting its source block. - -2018-01-23 Jakub Jelinek - - PR c++/83918 - * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than - VIEW_CONVERT_EXPR to wrap CONST_DECLs. - -2018-01-22 Jakub Jelinek - - PR tree-optimization/83957 - * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove - semicolon after for body surrounded by braces. - - PR tree-optimization/83081 - * profile-count.h (profile_probability::split): New method. - * dojump.c (do_jump_1) : - Use profile_probability::split. - (do_compare_rtx_and_jump): Fix adjustment of probabilities - when splitting a single conditional jump into 2. - -2018-01-22 David Malcolm - - PR tree-optimization/69452 - * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove - decl. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78-expand.md (bswaphi2): New define_expand. - * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn. - * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78-protos.h (rl78_split_movdi): New function - declaration. - * config/rl78/rl78.md (movdi): New define_expand. - * config/rl78/rl78.c (rl78_split_movdi): New function. - -2018-01-22 Michael Meissner - - PR target/83862 - * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete, - no longer used. - * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise. - * config/rs6000/rs6000.md (signbit2): Change code for IEEE - 128-bit to produce an UNSPEC move to get the double word with the - signbit and then a shift directly to do signbit. - (signbit2_dm): Replace old IEEE 128-bit signbit - implementation with a new version that just does either a direct - move or a regular move. Move memory interface to separate insns. - Move insns so they are next to the expander. - (signbit2_dm_mem_be): New combiner insns to combine load - with signbit move. Split big and little endian case. - (signbit2_dm_mem_le): Likewise. - (signbit2_dm_ext): Delete, no longer used. - (signbit2_dm2): Likewise. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78.md (anddi3): New define_expand. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78.md (umindi3): New define_expand. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78.md (smindi3): New define_expand. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78.md (smaxdi3): New define_expand. - -2018-01-22 Carl Love - - * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI, - LVX_V1TI): Add macro expansion. - * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument - definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST, - VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins. - * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p); - Change check to determine if the instruction is a byte reversing - entry. Fix typo in comment. - * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry - for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI. - Add def_builtin calls for new builtins. - * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti): - Add define_insn expansion. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78.md (umaxdi3): New define_expand. - -2018-01-22 Sebastian Perta - - * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check - for non-QImode registers. - -2018-01-22 Richard Biener - - PR tree-optimization/83963 - * graphite-scop-detection.c (scop_detection::get_sese): Delay - including the loop exit block. - (scop_detection::merge_sese): Likewise. - (scop_detection::add_scop): Do it here instead. - -2018-01-22 Kyrylo Tkachov - - * doc/sourcebuild.texi (arm_softfloat): Document. - -2018-01-21 John David Anglin - - PR gcc/77734 - * config/pa/pa.c (pa_function_ok_for_sibcall): Use - targetm.binds_local_p instead of TREE_PUBLIC to check local binding. - Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check. - -2018-01-21 Bill Schmidt - David Edelsohn - - PR target/83946 - * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv): - Change "crset eq" to "crset 2". - (*call_value_indirect_nonlocal_sysv): Likewise. - (*call_indirect_aix_nospec): Likewise. - (*call_value_indirect_aix_nospec): Likewise. - (*call_indirect_elfv2_nospec): Likewise. - (*call_value_indirect_elfv2_nospec): Likewise. - (*sibcall_nonlocal_sysv): Change "crset eq" to "crset 2"; - change assembly output from . to $. - (*sibcall_value_nonlocal_sysv): Likewise. - (indirect_jump_nospec): Change assembly output from . to $. - (*tablejump_internal1_nospec): Likewise. - -2018-01-21 Oleg Endo - - PR target/80870 - * config/sh/sh_optimize_sett_clrt.cc: - Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes. - -2018-01-20 Richard Sandiford - - PR tree-optimization/83940 - * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set - offset_dt to vect_constant_def rather than vect_unknown_def_type. - (vect_check_load_store_mask): Add a mask_dt_out parameter and - use it to pass back the definition type. - (vect_check_store_rhs): Likewise rhs_dt_out. - (vect_build_gather_load_calls): Add a mask_dt argument and use - it instead of a call to vect_is_simple_use. - (vectorizable_store): Update calls to vect_check_load_store_mask - and vect_check_store_rhs. Use the dt returned by the latter instead - of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt - instead of calls to vect_is_simple_use. Pass the scalar rather - than the vector operand to vect_is_simple_use when handling - second and subsequent copies of an rhs value. - (vectorizable_load): Update calls to vect_check_load_store_mask - and vect_build_gather_load_calls. Use the cached mask_dt and - gs_info.offset_dt instead of calls to vect_is_simple_use. - -2018-01-20 Jakub Jelinek - - PR middle-end/83945 - * tree-emutls.c: Include gimplify.h. - (lower_emutls_2): New function. - (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree - with lower_emutls_2 callback finds some TLS decl in it, unshare_expr - it before further processing. - - PR target/83930 - * simplify-rtx.c (simplify_binary_operation_1) : Use - UINTVAL (trueop1) instead of INTVAL (op1). - -2018-01-19 Jakub Jelinek - - PR debug/81570 - PR debug/83728 - * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to - INCOMING_FRAME_SP_OFFSET if not defined. - (scan_trace): Add ENTRY argument. If true and - DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET, - emit a note to adjust the CFA offset. - (create_cfi_notes): Adjust scan_trace callers. - (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than - INCOMING_FRAME_SP_OFFSET in the CIE. - * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define. - * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): - Likewise. - * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document. - * doc/tm.texi: Regenerated. - -2018-01-19 Andreas Krebbel - - PR rtl-optimization/83147 - * lra-constraints.c (remove_inheritance_pseudos): Use - lra_substitute_pseudo_within_insn. - -2018-01-19 Tom de Vries - Cesar Philippidis - - PR target/83920 - * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround. - -2018-01-19 Cesar Philippidis - - PR target/83790 - * config/nvptx/nvptx.c (output_init_frag): Don't use generic address - spaces for function labels. - -2018-01-19 Martin Liska - - * predict.def (PRED_LOOP_EXIT): Change from 85 to 89. - (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78. - (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67. - (PRED_OPCODE_POSITIVE): Change from 64 to 59. - (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59. - (PRED_CONST_RETURN): Change from 69 to 65. - (PRED_NULL_RETURN): Change from 91 to 71. - (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64. - (PRED_LOOP_GUARD): Change from 66 to 73. - -2018-01-19 Martin Liska - - * predict.c (predict_insn_def): Add new assert. - (struct branch_predictor): Change type to signed integer. - (test_prediction_value_range): Amend test to cover - PROB_UNINITIALIZED. - * predict.def (PRED_LOOP_ITERATIONS): Use the new constant. - (PRED_LOOP_ITERATIONS_GUESSED): Likewise. - (PRED_LOOP_ITERATIONS_MAX): Likewise. - (PRED_LOOP_IV_COMPARE): Likewise. - * predict.h (PROB_UNINITIALIZED): Define new constant. - -2018-01-19 Martin Liska - - * predict.c (dump_prediction): Add new format for - analyze_brprob.py script which is enabled with -details - suboption. - * profile-count.h (precise_p): New function. - -2018-01-19 Richard Sandiford - - PR tree-optimization/83922 - * tree-vect-loop.c (vect_verify_full_masking): Return false if - there are no statements that need masking. - (vect_active_double_reduction_p): New function. - (vect_analyze_loop_operations): Use it when handling phis that - are not in the loop header. - -2018-01-19 Richard Sandiford - - PR tree-optimization/83914 - * tree-vect-loop.c (vectorizable_induction): Don't convert - init_expr or apply the peeling adjustment for inductions - that are nested within the vectorized loop. - -2018-01-19 Kyrylo Tkachov - - * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic - instead of NEG. - -2018-01-18 Jakub Jelinek - - PR sanitizer/81715 - PR testsuite/83882 - * function.h (gimplify_parameters): Add gimple_seq * argument. - * function.c: Include gimple.h and options.h. - (gimplify_parameters): Add cleanup argument, add CLOBBER stmts - for the added local temporaries if needed. - * gimplify.c (gimplify_body): Adjust gimplify_parameters caller, - if there are any parameter cleanups, wrap whole body into a - try/finally with the cleanups. - -2018-01-18 Wilco Dijkstra - - PR target/82964 - * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): - Use GET_MODE_CLASS for scalar floating point. - -2018-01-18 Jan Hubicka - - PR ipa/82256 - patch by PaX Team - * cgraphclones.c (cgraph_node::create_version_clone_with_body): - Fix call of call_cgraph_insertion_hooks. - -2018-01-18 Martin Sebor - - * doc/invoke.texi (-Wclass-memaccess): Tweak text. - -2018-01-18 Jan Hubicka - - PR ipa/83619 - * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge - frequencies. - -2018-01-18 Boris Kolpackov - - PR other/70268 - * common.opt: (-ffile-prefix-map): New option. - * opts.c (common_handle_option): Defer it. - * opts-global.c (handle_common_deferred_options): Handle it. - * debug.h (remap_debug_filename, add_debug_prefix_map): Move to... - * file-prefix-map.h: New file. - (remap_debug_filename, add_debug_prefix_map): ...here. - (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New. - * final.c (debug_prefix_map, add_debug_prefix_map - remap_debug_filename): Move to... - * file-prefix-map.c: New file. - (file_prefix_map, add_prefix_map, remap_filename) ...here and rename, - generalize, get rid of alloca(), use strrchr() instead of strchr(). - (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map): - Implement in terms of add_prefix_map(). - (remap_macro_filename, remap_debug_filename): Implement in term of - remap_filename(). - * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files. - * builtins.c (fold_builtin_FILE): Call remap_macro_filename(). - * dbxout.c: Include file-prefix-map.h. - * varasm.c: Likewise. - * vmsdbgout.c: Likewise. - * xcoffout.c: Likewise. - * dwarf2out.c: Likewise plus omit new options from DW_AT_producer. - * doc/cppopts.texi (-fmacro-prefix-map): Document. - * doc/invoke.texi (-ffile-prefix-map): Document. - (-fdebug-prefix-map): Update description. - -2018-01-18 Martin Liska - - * config/i386/i386.c (indirect_thunk_name): Document that also - lfence is emitted. - (output_indirect_thunk): Document why both instructions - (pause and lfence) are generated. - -2018-01-18 Richard Biener - - PR tree-optimization/83887 - * graphite-scop-detection.c - (scop_detection::get_nearest_dom_with_single_entry): Remove. - (scop_detection::get_nearest_pdom_with_single_exit): Likewise. - (scop_detection::merge_sese): Re-implement with a flood-fill - algorithm that properly finds a SESE region if it exists. - -2018-01-18 Jakub Jelinek - - PR c/61240 - * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For - pointer_diff optimizations use view_convert instead of convert. - -2018-01-17 Bill Schmidt - - * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv): - Generate different code for -mno-speculate-indirect-jumps. - (*call_value_indirect_nonlocal_sysv): Likewise. - (*call_indirect_aix): Disable for - -mno-speculate-indirect-jumps. - (*call_indirect_aix_nospec): New define_insn. - (*call_value_indirect_aix): Disable for - -mno-speculate-indirect-jumps. - (*call_value_indirect_aix_nospec): New define_insn. - (*sibcall_nonlocal_sysv): Generate different code for - -mno-speculate-indirect-jumps. - (*sibcall_value_nonlocal_sysv): Likewise. - -2018-01-17 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a - long double type, set the flags for noting the default long double - type, even if we don't pass or return a long double type. - -2018-01-17 Jan Hubicka - - PR ipa/83051 - * ipa-inline.c (flatten_function): Do not overwrite final inlining - failure. - -2018-01-17 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding - support for merge[hl]. - (fold_mergehl_helper): New helper function. - (tree-vector-builder.h): New #include for tree_vector_builder usage. - * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn. - (altivec_vmrglw_direct): Add xxmrglw insn. - -2018-01-17 Andrew Waterman - - * config/riscv/riscv.c (riscv_conditional_register_usage): If - UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs. - -2018-01-17 David Malcolm - - PR lto/83121 - * ipa-devirt.c (add_type_duplicate): When comparing memory layout, - call the lto_location_cache before reading the - DECL_SOURCE_LOCATION of the types. - -2018-01-17 Wilco Dijkstra - Richard Sandiford - - * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint. - * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function. - (aarch64_legitimate_constant_p): Just support CONST_DOUBLE - SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates. - * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate): - Add declaration. - * config/aarch64/constraints.md (aarch64_movti_operand): - Limit immediates. - * config/aarch64/predicates.md (Uti): Add new constraint. - -2018-01-17 Carl Love - - * config/rs6000/vsx.md (define_expand xl_len_r, - define_expand stxvl, define_expand *stxvl): Add match_dup argument. - (define_insn): Add, match_dup 1 argument to define_insn stxvll and - lxvll. - (define_expand, define_insn): Move the shift left from the - define_insn to the define_expand for lxvl and stxvl instructions. - * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL - and XL_LEN_R definitions to PURE. - -2018-01-17 Uros Bizjak - - * config/i386/i386.c (indirect_thunk_name): Declare regno - as unsigned int. Compare regno with INVALID_REGNUM. - (output_indirect_thunk): Ditto. - (output_indirect_thunk_function): Ditto. - (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM - in the call to output_indirect_thunk_function. - -2018-01-17 Richard Sandiford - - PR middle-end/83884 - * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0) - rather than the size of inner_type to determine the stack slot size - when handling VIEW_CONVERT_EXPRs on strict-alignment targets. - -2018-01-16 Sebastian Peryt - - PR target/83546 - * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND - to PTA_SILVERMONT. - -2018-01-16 Michael Meissner - - * config.gcc (powerpc*-linux*-*): Add support for 64-bit little - endian Linux systems to optionally enable multilibs for selecting - the long double type if the user configured an explicit type. - * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we - have no long double multilibs if not defined. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not - warn if the user used -mabi={ieee,ibm}longdouble and we built - multilibs for long double. - * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the - appropriate multilib option. - (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default - multilib options. - * config/rs6000/t-ldouble-linux64le-ibm: New configuration files - for building long double multilibs. - * config/rs6000/t-ldouble-linux64le-ieee: Likewise. - -2018-01-16 John David Anglin - - * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller - copies. - - * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to - 64 bits. - * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to - 128 bits. - - * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode - variables. - - * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE - return value. - -2018-01-16 Eric Botcazou - - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an - ADDR_EXPR, do not count the offset of a COMPONENT_REF twice. - -2018-01-16 Kelvin Nilsen - - * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate - different rtl trees depending on TARGET_64BIT. - (rs6000_gen_lvx): Likewise. - -2018-01-16 Eric Botcazou - - * config/visium/visium.md (nop): Tweak comment. - (hazard_nop): Likewise. - -2018-01-16 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for - -mspeculate-indirect-jumps. - * config/rs6000/rs6000.md (*call_indirect_elfv2): Disable - for -mno-speculate-indirect-jumps. - (*call_indirect_elfv2_nospec): New define_insn. - (*call_value_indirect_elfv2): Disable for - -mno-speculate-indirect-jumps. - (*call_value_indirect_elfv2_nospec): New define_insn. - (indirect_jump): Emit different RTL for - -mno-speculate-indirect-jumps. - (*indirect_jump): Disable for - -mno-speculate-indirect-jumps. - (*indirect_jump_nospec): New define_insn. - (tablejump): Emit different RTL for - -mno-speculate-indirect-jumps. - (tablejumpsi): Disable for -mno-speculate-indirect-jumps. - (tablejumpsi_nospec): New define_expand. - (tablejumpdi): Disable for -mno-speculate-indirect-jumps. - (tablejumpdi_nospec): New define_expand. - (*tablejump_internal1): Disable for - -mno-speculate-indirect-jumps. - (*tablejump_internal1_nospec): New define_insn. - * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New - option. - -2018-01-16 Artyom Skrobov tyomitch@gmail.com - - * caller-save.c (insert_save): Drop unnecessary parameter. All - callers updated. - -2018-01-16 Jakub Jelinek - Richard Biener - - PR libgomp/83590 - * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr) - return early, inline manually is_gimple_sizepos. Make sure if we - call gimplify_expr we don't end up with a gimple constant. - * tree.c (variably_modified_type_p): Don't return true for - is_gimple_constant (_t). Inline manually is_gimple_sizepos. - * gimplify.h (is_gimple_sizepos): Remove. - -2018-01-16 Richard Sandiford - - PR tree-optimization/83857 - * tree-vect-loop.c (vect_analyze_loop_operations): Don't call - vectorizable_live_operation for pure SLP statements. - (vectorizable_live_operation): Handle PHIs. - -2018-01-16 Richard Biener - - PR tree-optimization/83867 - * tree-vect-stmts.c (vect_transform_stmt): Precompute - nested_in_vect_loop_p since the scalar stmt may get invalidated. - -2018-01-16 Jakub Jelinek - - PR c/83844 - * stor-layout.c (handle_warn_if_not_align): Use byte_position and - multiple_of_p instead of unchecked tree_to_uhwi and UHWI check. - If off is not INTEGER_CST, issue a may not be aligned warning - rather than isn't aligned. Use isn%'t rather than isn't. - * fold-const.c (multiple_of_p) : Don't fall through - into MULT_EXPR. - : Improve the case when bottom and one of the - MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that - operand, in that case check if the other operand is multiple of - bottom divided by the INTEGER_CST operand. - -2018-01-16 Richard Sandiford - - PR target/83858 - * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete. - * config/pa/pa-protos.h (pa_function_arg_size): Declare. - * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use - pa_function_arg_size instead of FUNCTION_ARG_SIZE. - * config/pa/pa.c (pa_function_arg_advance): Likewise. - (pa_function_arg, pa_arg_partial_bytes): Likewise. - (pa_function_arg_size): New function. - -2018-01-16 Richard Sandiford - - * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices - in a separate statement. - -2018-01-16 Richard Sandiford - - PR tree-optimization/83847 - * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't - group gathers and scatters. - -2018-01-16 Jakub Jelinek - - PR rtl-optimization/86620 - * params.def (max-sched-ready-insns): Bump minimum value to 1. - - PR rtl-optimization/83213 - * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn - to last if both are JUMP_INSNs. - - PR tree-optimization/83843 - * gimple-ssa-store-merging.c - (imm_store_chain_info::output_merged_store): Handle bit_not_p on - store_immediate_info for bswap/nop orig_stores. - -2018-01-15 Andrew Waterman - - * config/riscv/riscv.c (riscv_rtx_costs) : Increase cost if - !TARGET_MUL. - : Increase cost if !TARGET_DIV. - -2018-01-15 Segher Boessenkool - - * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr. - (define_attr "cr_logical_3op"): New. - (cceq_ior_compare): Adjust. - (cceq_ior_compare_complement): Adjust. - (*cceq_rev_compare): Adjust. - * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust. - (is_cracked_insn): Adjust. - (insn_must_be_first_in_group): Adjust. - * config/rs6000/40x.md: Adjust. - * config/rs6000/440.md: Adjust. - * config/rs6000/476.md: Adjust. - * config/rs6000/601.md: Adjust. - * config/rs6000/603.md: Adjust. - * config/rs6000/6xx.md: Adjust. - * config/rs6000/7450.md: Adjust. - * config/rs6000/7xx.md: Adjust. - * config/rs6000/8540.md: Adjust. - * config/rs6000/cell.md: Adjust. - * config/rs6000/e300c2c3.md: Adjust. - * config/rs6000/e500mc.md: Adjust. - * config/rs6000/e500mc64.md: Adjust. - * config/rs6000/e5500.md: Adjust. - * config/rs6000/e6500.md: Adjust. - * config/rs6000/mpc.md: Adjust. - * config/rs6000/power4.md: Adjust. - * config/rs6000/power5.md: Adjust. - * config/rs6000/power6.md: Adjust. - * config/rs6000/power7.md: Adjust. - * config/rs6000/power8.md: Adjust. - * config/rs6000/power9.md: Adjust. - * config/rs6000/rs64.md: Adjust. - * config/rs6000/titan.md: Adjust. - -2018-01-15 H.J. Lu - - * config/i386/predicates.md (indirect_branch_operand): Rewrite - ix86_indirect_branch_register logic. - -2018-01-15 H.J. Lu - - * config/i386/constraints.md (Bs): Update - ix86_indirect_branch_register check. Don't check - ix86_indirect_branch_register with GOT_memory_operand. - (Bw): Likewise. - * config/i386/predicates.md (GOT_memory_operand): Don't check - ix86_indirect_branch_register here. - (GOT32_symbol_operand): Likewise. - -2018-01-15 H.J. Lu - - * config/i386/predicates.md (constant_call_address_operand): - Rewrite ix86_indirect_branch_register logic. - (sibcall_insn_operand): Likewise. - -2018-01-15 H.J. Lu - - * config/i386/constraints.md (Bs): Replace - ix86_indirect_branch_thunk_register with - ix86_indirect_branch_register. - (Bw): Likewise. - * config/i386/i386.md (indirect_jump): Likewise. - (tablejump): Likewise. - (*sibcall_memory): Likewise. - (*sibcall_value_memory): Likewise. - Peepholes of indirect call and jump via memory: Likewise. - * config/i386/i386.opt: Likewise. - * config/i386/predicates.md (indirect_branch_operand): Likewise. - (GOT_memory_operand): Likewise. - (call_insn_operand): Likewise. - (sibcall_insn_operand): Likewise. - (GOT32_symbol_operand): Likewise. - -2018-01-15 Jakub Jelinek - - PR middle-end/83837 - * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val - type rather than type addr's type points to. - (expand_omp_atomic_mutex): Likewise. - (expand_omp_atomic): Likewise. - -2018-01-15 H.J. Lu - - PR target/83839 - * config/i386/i386.c (output_indirect_thunk_function): Use - ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO - for __x86_return_thunk. - -2018-01-15 Richard Biener - - PR middle-end/83850 - * expmed.c (extract_bit_field_1): Fix typo. - -2018-01-15 Kyrylo Tkachov - - PR target/83687 - * config/arm/iterators.md (VF): New mode iterator. - * config/arm/neon.md (neon_vabd_2): Use the above. - Remove integer-related logic from pattern. - (neon_vabd_3): Likewise. - -2018-01-15 Jakub Jelinek - - PR middle-end/82694 - * common.opt (fstrict-overflow): No longer an alias. - (fwrapv-pointer): New option. - * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define - also for pointer types based on flag_wrapv_pointer. - * opts.c (common_handle_option) : Set - opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if - opts->x_flag_wrapv got set. - * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01 - changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of - POINTER_TYPE_OVERFLOW_UNDEFINED. - * match.pd: Likewise in address comparison pattern. - * doc/invoke.texi: Document -fwrapv and -fstrict-overflow. - -2018-01-15 Richard Biener - - PR lto/83804 - * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs - from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization. - Reset type names to their identifier if their TYPE_DECL doesn't - have linkage (and thus is used for ODR and devirt). - (save_debug_info_for_decl): Remove. - (save_debug_info_for_type): Likewise. - (add_tree_to_fld_list): Adjust. - * tree-pretty-print.c (dump_generic_node): Make dumping of - type names more robust. - -2018-01-15 Richard Biener - - * BASE-VER: Bump to 8.0.1. - -2018-01-14 Martin Sebor - - PR other/83508 - * builtins.c (check_access): Avoid warning when the no-warning bit - is set. - -2018-01-14 Cory Fields - - * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort. - * ira-color (allocno_hard_regs_compare): Likewise. - -2018-01-14 Nathan Rossi - - PR target/83013 - * config/microblaze/microblaze.c (microblaze_asm_output_ident): - Use .pushsection/.popsection. - -2018-01-14 Martin Sebor - - PR c++/81327 - * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting. - -2018-01-14 Jakub Jelinek - - * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h - entry from extra_headers. - (x86_64-*-*): Remove two duplicate gfniintrin.h entries from - extra_headers, make the list bitwise identical to the i?86-*-* one. - -2018-01-14 H.J. Lu - - * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow - -mcmodel=large with -mindirect-branch=thunk, - -mindirect-branch=thunk-extern, -mfunction-return=thunk and - -mfunction-return=thunk-extern. - * doc/invoke.texi: Document -mcmodel=large is incompatible with - -mindirect-branch=thunk, -mindirect-branch=thunk-extern, - -mfunction-return=thunk and -mfunction-return=thunk-extern. - -2018-01-14 H.J. Lu - - * config/i386/i386.c (print_reg): Print the name of the full - integer register without '%'. - (ix86_print_operand): Handle 'V'. - * doc/extend.texi: Document 'V' modifier. - -2018-01-14 H.J. Lu - - * config/i386/constraints.md (Bs): Disallow memory operand for - -mindirect-branch-register. - (Bw): Likewise. - * config/i386/predicates.md (indirect_branch_operand): Likewise. - (GOT_memory_operand): Likewise. - (call_insn_operand): Likewise. - (sibcall_insn_operand): Likewise. - (GOT32_symbol_operand): Likewise. - * config/i386/i386.md (indirect_jump): Call convert_memory_address - for -mindirect-branch-register. - (tablejump): Likewise. - (*sibcall_memory): Likewise. - (*sibcall_value_memory): Likewise. - Disallow peepholes of indirect call and jump via memory for - -mindirect-branch-register. - (*call_pop): Replace m with Bw. - (*call_value_pop): Likewise. - (*sibcall_pop_memory): Replace m with Bs. - * config/i386/i386.opt (mindirect-branch-register): New option. - * doc/invoke.texi: Document -mindirect-branch-register option. - -2018-01-14 H.J. Lu - - * config/i386/i386-protos.h (ix86_output_function_return): New. - * config/i386/i386.c (ix86_set_indirect_branch_type): Also - set function_return_type. - (indirect_thunk_name): Add ret_p to indicate thunk for function - return. - (output_indirect_thunk_function): Pass false to - indirect_thunk_name. - (ix86_output_indirect_branch_via_reg): Likewise. - (ix86_output_indirect_branch_via_push): Likewise. - (output_indirect_thunk_function): Create alias for function - return thunk if regno < 0. - (ix86_output_function_return): New function. - (ix86_handle_fndecl_attribute): Handle function_return. - (ix86_attribute_table): Add function_return. - * config/i386/i386.h (machine_function): Add - function_return_type. - * config/i386/i386.md (simple_return_internal): Use - ix86_output_function_return. - (simple_return_internal_long): Likewise. - * config/i386/i386.opt (mfunction-return=): New option. - (indirect_branch): Mention -mfunction-return=. - * doc/extend.texi: Document function_return function attribute. - * doc/invoke.texi: Document -mfunction-return= option. - -2018-01-14 H.J. Lu - - * config/i386/i386-opts.h (indirect_branch): New. - * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise. - * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone - with local indirect jump when converting indirect call and jump. - (ix86_set_indirect_branch_type): New. - (ix86_set_current_function): Call ix86_set_indirect_branch_type. - (indirectlabelno): New. - (indirect_thunk_needed): Likewise. - (indirect_thunk_bnd_needed): Likewise. - (indirect_thunks_used): Likewise. - (indirect_thunks_bnd_used): Likewise. - (INDIRECT_LABEL): Likewise. - (indirect_thunk_name): Likewise. - (output_indirect_thunk): Likewise. - (output_indirect_thunk_function): Likewise. - (ix86_output_indirect_branch_via_reg): Likewise. - (ix86_output_indirect_branch_via_push): Likewise. - (ix86_output_indirect_branch): Likewise. - (ix86_output_indirect_jmp): Likewise. - (ix86_code_end): Call output_indirect_thunk_function if needed. - (ix86_output_call_insn): Call ix86_output_indirect_branch if - needed. - (ix86_handle_fndecl_attribute): Handle indirect_branch. - (ix86_attribute_table): Add indirect_branch. - * config/i386/i386.h (machine_function): Add indirect_branch_type - and has_local_indirect_jump. - * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump - to true. - (tablejump): Likewise. - (*indirect_jump): Use ix86_output_indirect_jmp. - (*tablejump_1): Likewise. - (simple_return_indirect_internal): Likewise. - * config/i386/i386.opt (mindirect-branch=): New option. - (indirect_branch): New. - (keep): Likewise. - (thunk): Likewise. - (thunk-inline): Likewise. - (thunk-extern): Likewise. - * doc/extend.texi: Document indirect_branch function attribute. - * doc/invoke.texi: Document -mindirect-branch= option. - -2018-01-14 Jan Hubicka - - PR ipa/83051 - * ipa-inline.c (edge_badness): Tolerate roundoff errors. - -2018-01-14 Richard Sandiford - - * ipa-inline.c (want_inline_small_function_p): Return false if - inlining has already failed with CIF_FINAL_ERROR. - (update_caller_keys): Call want_inline_small_function_p before - can_inline_edge_p. - (update_callee_keys): Likewise. - -2018-01-10 Kelvin Nilsen - - * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p): - New function. - (rs6000_quadword_masked_address_p): Likewise. - (quad_aligned_load_p): Likewise. - (quad_aligned_store_p): Likewise. - (const_load_sequence_p): Add comment to describe the outer-most loop. - (mimic_memory_attributes_and_flags): New function. - (rs6000_gen_stvx): Likewise. - (replace_swapped_aligned_store): Likewise. - (rs6000_gen_lvx): Likewise. - (replace_swapped_aligned_load): Likewise. - (replace_swapped_load_constant): Capitalize argument name in - comment describing this function. - (rs6000_analyze_swaps): Add a third pass to search for vector loads - and stores that access quad-word aligned addresses and replace - with stvx or lvx instructions when appropriate. - * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p): - New function prototype. - (rs6000_quadword_masked_address_p): Likewise. - (rs6000_gen_lvx): Likewise. - (rs6000_gen_stvx): Likewise. - * config/rs6000/vsx.md (*vsx_le_perm_load_): For modes - VSX_D (V2DF, V2DI), modify this split to select lvx instruction - when memory address is aligned. - (*vsx_le_perm_load_): For modes VSX_W (V4SF, V4SI), modify - this split to select lvx instruction when memory address is aligned. - (*vsx_le_perm_load_v8hi): Modify this split to select lvx - instruction when memory address is aligned. - (*vsx_le_perm_load_v16qi): Likewise. - (four unnamed splitters): Modify to select the stvx instruction - when memory is aligned. - -2018-01-13 Jan Hubicka - - * predict.c (determine_unlikely_bbs): Handle correctly BBs - which appears in the queue multiple times. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (vec_lower_bound): New structure. - (_loop_vec_info): Add check_nonzero and lower_bounds. - (LOOP_VINFO_CHECK_NONZERO): New macro. - (LOOP_VINFO_LOWER_BOUNDS): Likewise. - (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too. - * tree-data-ref.h (dr_with_seg_len): Add access_size and align - fields. Make seg_len the distance travelled, not including the - access size. - (dr_direction_indicator): Declare. - (dr_zero_step_indicator): Likewise. - (dr_known_forward_stride_p): Likewise. - * tree-data-ref.c: Include stringpool.h, tree-vrp.h and - tree-ssanames.h. - (runtime_alias_check_p): Allow runtime alias checks with - variable strides. - (operator ==): Compare access_size and align. - (prune_runtime_alias_test_list): Rework for new distinction between - the access_size and seg_len. - (create_intersect_range_checks_index): Likewise. Cope with polynomial - segment lengths. - (get_segment_min_max): New function. - (create_intersect_range_checks): Use it. - (dr_step_indicator): New function. - (dr_direction_indicator): Likewise. - (dr_zero_step_indicator): Likewise. - (dr_known_forward_stride_p): Likewise. - * tree-loop-distribution.c (data_ref_segment_size): Return - DR_STEP * (niters - 1). - (compute_alias_check_pairs): Update call to the dr_with_seg_len - constructor. - * tree-vect-data-refs.c (vect_check_nonzero_value): New function. - (vect_preserves_scalar_order_p): New function, split out from... - (vect_analyze_data_ref_dependence): ...here. Check for zero steps. - (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1). - (vect_vfa_access_size): New function. - (vect_vfa_align): Likewise. - (vect_compile_time_alias): Take access_size_a and access_b arguments. - (dump_lower_bound): New function. - (vect_check_lower_bound): Likewise. - (vect_small_gap_p): Likewise. - (vectorizable_with_step_bound_p): Likewise. - (vect_prune_runtime_alias_test_list): Ignore cross-iteration - depencies if the vectorization factor is 1. Convert the checks - for nonzero steps into checks on the bounds of DR_STEP. Try using - a bunds check for variable steps if the minimum required step is - relatively small. Update calls to the dr_with_seg_len - constructor and to vect_compile_time_alias. - * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New - function. - (vect_loop_versioning): Call it. - * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS - when retrying. - (vect_estimate_min_profitable_iters): Account for any bounds checks. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_scatter_store): Document. - * optabs.def (scatter_store_optab, mask_scatter_store_optab): New - optabs. - * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}): - Document. - * genopinit.c (main): Add supports_vec_scatter_store and - supports_vec_scatter_store_cached to target_optabs. - * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and - IFN_MASK_SCATTER_STORE. - * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal - functions. - * internal-fn.h (internal_store_fn_p): Declare. - (internal_fn_stored_value_index): Likewise. - * internal-fn.c (scatter_store_direct): New macro. - (expand_scatter_store_optab_fn): New function. - (direct_scatter_store_optab_supported_p): New macro. - (internal_store_fn_p): New function. - (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and - IFN_MASK_SCATTER_STORE. - (internal_fn_mask_index): Likewise. - (internal_fn_stored_value_index): New function. - (internal_gather_scatter_fn_supported_p): Adjust operand numbers - for scatter stores. - * optabs-query.h (supports_vec_scatter_store_p): Declare. - * optabs-query.c (supports_vec_scatter_store_p): New function. - * tree-vectorizer.h (vect_get_store_rhs): Declare. - * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return - true for scatter stores. - (vect_gather_scatter_fn_p): Handle scatter stores too. - (vect_check_gather_scatter): Consider using scatter stores if - supports_vec_scatter_store_p. - * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle - scatter stores too. - * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use - internal_fn_stored_value_index. - (check_load_store_masking): Handle scatter stores too. - (vect_get_store_rhs): Make public. - (vectorizable_call): Use internal_store_fn_p. - (vectorizable_store): Handle scatter store internal functions. - (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE - when deciding whether the end of the group has been reached. - * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec. - * config/aarch64/aarch64-sve.md (scatter_store): New expander. - (mask_scatter_store): New insns. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare. - * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public. - * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New - function. - (vect_use_strided_gather_scatters_p): Take a masked_p argument. - Use vect_truncate_gather_scatter_offset if we can't treat the - operation as a normal gather load or scatter store. - (get_group_load_store_type): Take the gather_scatter_info - as argument. Try using a gather load or scatter store for - single-element groups. - (get_load_store_type): Update calls to get_group_load_store_type - and vect_use_strided_gather_scatters_p. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra - optional tree argument. - * tree-vect-data-refs.c (vect_check_gather_scatter): Check for - null target hooks. - (vect_create_data_ref_ptr): Take the iv_step as an optional argument, - but continue to use the current value as a fallback. - (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare - to compare the updates. - * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function. - (get_load_store_type): Use it when handling a strided access. - (vect_get_strided_load_store_ops): New function. - (vect_get_data_ptr_increment): Likewise. - (vectorizable_load): Handle strided gather loads. Always pass - a step to vect_create_data_ref_ptr and bump_vector_ptr. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/md.texi (gather_load@var{m}): Document. - (mask_gather_load@var{m}): Likewise. - * genopinit.c (main): Add supports_vec_gather_load and - supports_vec_gather_load_cached to target_optabs. - * optabs-tree.c (init_tree_optimization_optabs): Use - ggc_cleared_alloc to allocate target_optabs. - * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs. - * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal - functions. - * internal-fn.h (internal_load_fn_p): Declare. - (internal_gather_scatter_fn_p): Likewise. - (internal_fn_mask_index): Likewise. - (internal_gather_scatter_fn_supported_p): Likewise. - * internal-fn.c (gather_load_direct): New macro. - (expand_gather_load_optab_fn): New function. - (direct_gather_load_optab_supported_p): New macro. - (direct_internal_fn_optab): New function. - (internal_load_fn_p): Likewise. - (internal_gather_scatter_fn_p): Likewise. - (internal_fn_mask_index): Likewise. - (internal_gather_scatter_fn_supported_p): Likewise. - * optabs-query.c (supports_at_least_one_mode_p): New function. - (supports_vec_gather_load_p): Likewise. - * optabs-query.h (supports_vec_gather_load_p): Declare. - * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type - and memory_type field. - (NUM_PATTERNS): Bump to 15. - * tree-vect-data-refs.c: Include internal-fn.h. - (vect_gather_scatter_fn_p): New function. - (vect_describe_gather_scatter_call): Likewise. - (vect_check_gather_scatter): Try using internal functions for - gather loads. Recognize existing calls to a gather load function. - (vect_analyze_data_refs): Consider using gather loads if - supports_vec_gather_load_p. - * tree-vect-patterns.c (vect_get_load_store_mask): New function. - (vect_get_gather_scatter_offset_type): Likewise. - (vect_convert_mask_for_vectype): Likewise. - (vect_add_conversion_to_patterm): Likewise. - (vect_try_gather_scatter_pattern): Likewise. - (vect_recog_gather_scatter_pattern): New pattern recognizer. - (vect_vect_recog_func_ptrs): Add it. - * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use - internal_fn_mask_index and internal_gather_scatter_fn_p. - (check_load_store_masking): Take the gather_scatter_info as an - argument and handle gather loads. - (vect_get_gather_scatter_ops): New function. - (vectorizable_call): Check internal_load_fn_p. - (vectorizable_load): Likewise. Handle gather load internal - functions. - (vectorizable_store): Update call to check_load_store_masking. - * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec. - * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators. - * config/aarch64/predicates.md (aarch64_gather_scale_operand_w) - (aarch64_gather_scale_operand_d): New predicates. - * config/aarch64/aarch64-sve.md (gather_load): New expander. - (mask_gather_load): New insns. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs.def (fold_left_plus_optab): New optab. - * doc/md.texi (fold_left_plus_@var{m}): Document. - * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function. - * internal-fn.c (fold_left_direct): Define. - (expand_fold_left_optab_fn): Likewise. - (direct_fold_left_optab_supported_p): Likewise. - * fold-const-call.c (fold_const_fold_left): New function. - (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS. - * tree-parloops.c (valid_reduction_p): New function. - (gather_scalar_reductions): Use it. - * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type. - (vect_finish_replace_stmt): Declare. - * tree-vect-loop.c (fold_left_reduction_fn): New function. - (needs_fold_left_reduction_p): New function, split out from... - (vect_is_simple_reduction): ...here. Accept reductions that - forbid reassociation, but give them type FOLD_LEFT_REDUCTION. - (vect_force_simple_reduction): Also store the reduction type in - the assignment's STMT_VINFO_REDUC_TYPE. - (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION. - (merge_with_identity): New function. - (vect_expand_fold_left): Likewise. - (vectorize_fold_left_reduction): Likewise. - (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the - scalar phi in place for it. Check for target support and reject - cases that would reassociate the operation. Defer the transform - phase to vectorize_fold_left_reduction. - * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec. - * config/aarch64/aarch64-sve.md (fold_left_plus_): New expander. - (*fold_left_plus_, *pred_fold_left_plus_): New insns. - -2018-01-13 Richard Sandiford - - * tree-if-conv.c (predicate_mem_writes): Remove redundant - call to ifc_temp_var. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (legitimize_address_displacement): Take the original - offset as a poly_int. - * targhooks.h (default_legitimize_address_displacement): Update - accordingly. - * targhooks.c (default_legitimize_address_displacement): Likewise. - * doc/tm.texi: Regenerate. - * lra-constraints.c (base_plus_disp_to_reg): Take the displacement - as an argument, moving assert of ad->disp == ad->disp_term to... - (process_address_1): ...here. Update calls to base_plus_disp_to_reg. - Try calling targetm.legitimize_address_displacement before expanding - the address rather than afterwards, and adjust for the new interface. - * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement): - Match the new hook interface. Handle SVE addresses. - * config/sh/sh.c (sh_legitimize_address_displacement): Make the - new hook interface. - -2018-01-13 Richard Sandiford - - * Makefile.in (OBJS): Add early-remat.o. - * target.def (select_early_remat_modes): New hook. - * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook. - * doc/tm.texi: Regenerate. - * targhooks.h (default_select_early_remat_modes): Declare. - * targhooks.c (default_select_early_remat_modes): New function. - * timevar.def (TV_EARLY_REMAT): New timevar. - * passes.def (pass_early_remat): New pass. - * tree-pass.h (make_pass_early_remat): Declare. - * early-remat.c: New file. - * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New - function. - (TARGET_SELECT_EARLY_REMAT_MODES): Define. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace - vfm1 with a bound_epilog parameter. - (vect_do_peeling): Update calls accordingly, and move the prologue - call earlier in the function. Treat the base bound_epilog as 0 for - fully-masked loops and retain vf - 1 for other loops. Add 1 to - this base when peeling for gaps. - * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps - with fully-masked loops. - (vect_estimate_min_profitable_iters): Handle the single peeled - iteration in that case. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow - single-element interleaving even if the size is not a power of 2. - * tree-vect-stmts.c (get_load_store_type): Disallow elementwise - accesses for single-element interleaving if the group size is - not a power of 2. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/md.texi (fold_extract_last_@var{m}): Document. - * doc/sourcebuild.texi (vect_fold_extract_last): Likewise. - * optabs.def (fold_extract_last_optab): New optab. - * internal-fn.def (FOLD_EXTRACT_LAST): New internal function. - * internal-fn.c (fold_extract_direct): New macro. - (expand_fold_extract_optab_fn): Likewise. - (direct_fold_extract_optab_supported_p): Likewise. - * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type. - * tree-vect-loop.c (vect_model_reduction_cost): Handle - EXTRACT_LAST_REDUCTION. - (get_initial_def_for_reduction): Do not create an initial vector - for EXTRACT_LAST_REDUCTION reductions. - (vectorizable_reduction): Leave the scalar phi in place for - EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION - ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an - epilogue code for EXTRACT_LAST_REDUCTION and defer the - transform phase to vectorizable_condition. - * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function, - split out from... - (vect_finish_stmt_generation): ...here. - (vect_finish_replace_stmt): New function. - (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION. - * config/aarch64/aarch64-sve.md (fold_extract_last_): New - pattern. - * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/md.texi (extract_last_@var{m}): Document. - * optabs.def (extract_last_optab): New optab. - * internal-fn.def (EXTRACT_LAST): New internal function. - * internal-fn.c (cond_unary_direct): New macro. - (expand_cond_unary_optab_fn): Likewise. - (direct_cond_unary_optab_supported_p): Likewise. - * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked - loops using EXTRACT_LAST. - * config/aarch64/aarch64-sve.md (aarch64_sve_lastb): Rename to... - (extract_last_): ...this optab. - (vec_extract): Update accordingly. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (empty_mask_is_expensive): New hook. - * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook. - * doc/tm.texi: Regenerate. - * targhooks.h (default_empty_mask_is_expensive): Declare. - * targhooks.c (default_empty_mask_is_expensive): New function. - * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores - if the target says that empty masks are expensive. - * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive): - New function. - (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field. - (LOOP_VINFO_MASK_SKIP_NITERS): New macro. - (vect_use_loop_mask_for_alignment_p): New function. - (vect_prepare_for_masked_peels, vect_gen_while_not): Declare. - * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an - niters_skip argument. Make sure that the first niters_skip elements - of the first iteration are inactive. - (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS. - Update call to vect_set_loop_masks_directly. - (get_misalign_in_elems): New function, split out from... - (vect_gen_prolog_loop_niters): ...here. - (vect_update_init_of_dr): Take a code argument that specifies whether - the adjustment should be added or subtracted. - (vect_update_init_of_drs): Likewise. - (vect_prepare_for_masked_peels): New function. - (vect_do_peeling): Skip prologue peeling if we're using a mask - instead. Update call to vect_update_inits_of_drs. - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize - mask_skip_niters. - (vect_analyze_loop_2): Allow fully-masked loops with peeling for - alignment. Do not include the number of peeled iterations in - the minimum threshold in that case. - (vectorizable_induction): Adjust the start value down by - LOOP_VINFO_MASK_SKIP_NITERS iterations. - (vect_transform_loop): Call vect_prepare_for_masked_peels. - Take the number of skipped iterations into account when calculating - the loop bounds. - * tree-vect-stmts.c (vect_gen_while_not): New function. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_fully_masked): Document. - * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and - default value to 0. - * tree-vect-loop.c (vect_analyze_loop_costing): New function, - split out from... - (vect_analyze_loop_2): ...here. Don't check the vectorization - factor against the number of loop iterations if the loop is - fully-masked. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into... - (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types. - (dump_groups): Update accordingly. - (iv_use::mem_type): New member variable. - (address_p): New function. - (record_use): Add a mem_type argument and initialize the new - mem_type field. - (record_group_use): Add a mem_type argument. Use address_p. - Remove obsolete null checks of base_object. Update call to record_use. - (find_interesting_uses_op): Update call to record_group_use. - (find_interesting_uses_cond): Likewise. - (find_interesting_uses_address): Likewise. - (get_mem_type_for_internal_fn): New function. - (find_address_like_use): Likewise. - (find_interesting_uses_stmt): Try find_address_like_use before - calling find_interesting_uses_op. - (addr_offset_valid_p): Use the iv mem_type field as the type - of the addressed memory. - (add_autoinc_candidates): Likewise. - (get_address_cost): Likewise. - (split_small_address_groups_p): Use address_p. - (split_address_groups): Likewise. - (add_iv_candidate_for_use): Likewise. - (autoinc_possible_for_pair): Likewise. - (rewrite_groups): Likewise. - (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS. - (determine_group_iv_cost): Update after split of USE_ADDRESS. - (get_alias_ptr_type_for_ptr_address): New function. - (rewrite_use_address): Rewrite address uses in calls that were - identified by find_address_like_use. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of - TARGET_MEM_REFs. - * gimple-expr.h (is_gimple_addressable: Likewise. - * gimple-expr.c (is_gimple_address): Likewise. - * internal-fn.c (expand_call_mem_ref): New function. - (expand_mask_load_optab_fn): Use it. - (expand_mask_store_optab_fn): Likewise. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode}) - (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode}) - (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode}) - (cond_umax@var{mode}): Document. - * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab) - (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab) - (cond_umin_optab, cond_umax_optab): New optabs. - * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND) - (COND_IOR, COND_XOR): New internal functions. - * internal-fn.h (get_conditional_internal_fn): Declare. - * internal-fn.c (cond_binary_direct): New macro. - (expand_cond_binary_optab_fn): Likewise. - (direct_cond_binary_optab_supported_p): Likewise. - (get_conditional_internal_fn): New function. - * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops. - Cope with reduction statements that are vectorized as calls rather - than assignments. - * config/aarch64/aarch64-sve.md (cond_): New insns. - * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB) - (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN) - (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR) - (UNSPEC_COND_EOR): New unspecs. - (optab): Add mappings for them. - (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators. - (sve_int_op, sve_fp_op): New int attributes. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs.def (while_ult_optab): New optab. - * doc/md.texi (while_ult@var{m}@var{n}): Document. - * internal-fn.def (WHILE_ULT): New internal function. - * internal-fn.h (direct_internal_fn_supported_p): New override - that takes two types as argument. - * internal-fn.c (while_direct): New macro. - (expand_while_optab_fn): New function. - (convert_optab_supported_p): Likewise. - (direct_while_optab_supported_p): New macro. - * wide-int.h (wi::udiv_ceil): New function. - * tree-vectorizer.h (rgroup_masks): New structure. - (vec_loop_masks): New typedef. - (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p - and fully_masked_p. - (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P) - (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros. - (vect_max_vf): New function. - (slpeel_make_loop_iterate_ntimes): Delete. - (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while) - (vect_halve_mask_nunits, vect_double_mask_nunits): Declare. - (vect_record_loop_mask, vect_get_loop_mask): Likewise. - * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h, - internal-fn.h, stor-layout.h and optabs-query.h. - (vect_set_loop_mask): New function. - (add_preheader_seq): Likewise. - (add_header_seq): Likewise. - (interleave_supported_p): Likewise. - (vect_maybe_permute_loop_masks): Likewise. - (vect_set_loop_masks_directly): Likewise. - (vect_set_loop_condition_masked): Likewise. - (vect_set_loop_condition_unmasked): New function, split out from - slpeel_make_loop_iterate_ntimes. - (slpeel_make_loop_iterate_ntimes): Rename to.. - (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked - for fully-masked loops and vect_set_loop_condition_unmasked otherwise. - (vect_do_peeling): Update call accordingly. - (vect_gen_vector_loop_niters): Use VF as the step for fully-masked - loops. - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize - mask_compare_type, can_fully_mask_p and fully_masked_p. - (release_vec_loop_masks): New function. - (_loop_vec_info): Use it to free the loop masks. - (can_produce_all_loop_masks_p): New function. - (vect_get_max_nscalars_per_iter): Likewise. - (vect_verify_full_masking): Likewise. - (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around - retries, and free the mask rgroups before retrying. Check loop-wide - reasons for disallowing fully-masked loops. Make the final decision - about whether use a fully-masked loop or not. - (vect_estimate_min_profitable_iters): Do not assume that peeling - for the number of iterations will be needed for fully-masked loops. - (vectorizable_reduction): Disable fully-masked loops. - (vectorizable_live_operation): Likewise. - (vect_halve_mask_nunits): New function. - (vect_double_mask_nunits): Likewise. - (vect_record_loop_mask): Likewise. - (vect_get_loop_mask): Likewise. - (vect_transform_loop): Handle the case in which the final loop - iteration might handle a partial vector. Call vect_set_loop_condition - instead of slpeel_make_loop_iterate_ntimes. - * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h. - (check_load_store_masking): New function. - (prepare_load_store_mask): Likewise. - (vectorizable_store): Handle fully-masked loops. - (vectorizable_load): Likewise. - (supportable_widening_operation): Use vect_halve_mask_nunits for - booleans. - (supportable_narrowing_operation): Likewise vect_double_mask_nunits. - (vect_gen_while): New function. - * config/aarch64/aarch64.md (umax3): New expander. - (aarch64_uqdec): New insn. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab) - (reduc_xor_scal_optab): New optabs. - * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m}) - (reduc_xor_scal_@var{m}): Document. - * doc/sourcebuild.texi (vect_logical_reduc): Likewise. - * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New - internal functions. - * fold-const-call.c (fold_const_call): Handle them. - * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new - internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR. - * config/aarch64/aarch64-sve.md (reduc__scal_): - (*reduc__scal_): New patterns. - * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV) - (UNSPEC_XORV): New unspecs. - (optab): Add entries for them. - (BITWISEV): New int iterator. - (bit_reduc_op): New int attributes. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/md.texi (vec_shl_insert_@var{m}): New optab. - * internal-fn.def (VEC_SHL_INSERT): New internal function. - * optabs.def (vec_shl_insert_optab): New optab. - * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare. - (duplicate_and_interleave): Likewise. - * tree-vect-loop.c: Include internal-fn.h. - (neutral_op_for_slp_reduction): New function, split out from - get_initial_defs_for_reduction. - (get_initial_def_for_reduction): Handle option 2 for variable-length - vectors by loading the neutral value into a vector and then shifting - the initial value into element 0. - (get_initial_defs_for_reduction): Replace the code argument with - the neutral value calculated by neutral_op_for_slp_reduction. - Use gimple_build_vector for constant-length vectors. - Use IFN_VEC_SHL_INSERT for variable-length vectors if all - but the first group_size elements have a neutral value. - Use duplicate_and_interleave otherwise. - (vect_create_epilog_for_reduction): Take a neutral_op parameter. - Update call to get_initial_defs_for_reduction. Handle SLP - reductions for variable-length vectors by creating one vector - result for each scalar result, with the elements associated - with other scalar results stubbed out with the neutral value. - (vectorizable_reduction): Call neutral_op_for_slp_reduction. - Require IFN_VEC_SHL_INSERT for double reductions on - variable-length vectors, or SLP reductions that have - a neutral value. Require can_duplicate_and_interleave_p - support for variable-length unchained SLP reductions if there - is no neutral value, such as for MIN/MAX reductions. Also require - the number of vector elements to be a multiple of the number of - SLP statements when doing variable-length unchained SLP reductions. - Update call to vect_create_epilog_for_reduction. - * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public - and remove initial values. - (duplicate_and_interleave): Make public. - * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec. - * config/aarch64/aarch64-sve.md (vec_shl_insert_): New insn. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h - (can_duplicate_and_interleave_p): New function. - (vect_get_and_check_slp_defs): Take the vector of statements - rather than just the current one. Remove excess parentheses. - Restriction rejectinon of vect_constant_def and vect_external_def - for variable-length vectors to boolean types, or types for which - can_duplicate_and_interleave_p is false. - (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs. - (duplicate_and_interleave): New function. - (vect_get_constant_vectors): Use gimple_build_vector for - constant-length vectors and suitable variable-length constant - vectors. Use duplicate_and_interleave for other variable-length - vectors. Don't defer the update when inserting new statements. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure - min_profitable_iters doesn't go negative. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document. - (vec_mask_store_lanes@var{m}@var{n}): Likewise. - * optabs.def (vec_mask_load_lanes_optab): New optab. - (vec_mask_store_lanes_optab): Likewise. - * internal-fn.def (MASK_LOAD_LANES): New internal function. - (MASK_STORE_LANES): Likewise. - * internal-fn.c (mask_load_lanes_direct): New macro. - (mask_store_lanes_direct): Likewise. - (expand_mask_load_optab_fn): Handle masked operations. - (expand_mask_load_lanes_optab_fn): New macro. - (expand_mask_store_optab_fn): Handle masked operations. - (expand_mask_store_lanes_optab_fn): New macro. - (direct_mask_load_lanes_optab_supported_p): Likewise. - (direct_mask_store_lanes_optab_supported_p): Likewise. - * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p - parameter. - (vect_load_lanes_supported): Likewise. - * tree-vect-data-refs.c (strip_conversion): New function. - (can_group_stmts_p): Likewise. - (vect_analyze_data_ref_accesses): Use it instead of checking - for a pair of assignments. - (vect_store_lanes_supported): Take a masked_p parameter. - (vect_load_lanes_supported): Likewise. - * tree-vect-loop.c (vect_analyze_loop_2): Update calls to - vect_store_lanes_supported and vect_load_lanes_supported. - * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. - * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p - parameter. Don't allow gaps for masked accesses. - Use vect_get_store_rhs. Update calls to vect_store_lanes_supported - and vect_load_lanes_supported. - (get_load_store_type): Take a masked_p parameter and update - call to get_group_load_store_type. - (vectorizable_store): Update call to get_load_store_type. - Handle IFN_MASK_STORE_LANES. - (vectorizable_load): Update call to get_load_store_type. - Handle IFN_MASK_LOAD_LANES. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector - modes for SVE. - * config/aarch64/aarch64-protos.h - (aarch64_sve_struct_memory_operand_p): Declare. - * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator. - (vector_count, insn_length, VSINGLE, vsingle): New mode attributes. - (VPRED, vpred): Handle SVE structure modes. - * config/aarch64/constraints.md (Utx): New constraint. - * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand) - (aarch64_sve_struct_nonimmediate_operand): New predicates. - * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs. - * config/aarch64/aarch64-sve.md (mov, *aarch64_sve_mov_le) - (*aarch64_sve_mov_be, pred_mov): New patterns for - structure modes. Split into pieces after RA. - (vec_load_lanes, vec_mask_load_lanes) - (vec_store_lanes, vec_mask_store_lanes): - New patterns. - * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle - SVE structure modes. - (aarch64_classify_address): Likewise. - (sizetochar): Move earlier in file. - (aarch64_print_operand): Handle SVE register lists. - (aarch64_array_mode): New function. - (aarch64_sve_struct_memory_operand_p): Likewise. - (TARGET_ARRAY_MODE): Redefine. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (array_mode): New target hook. - * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook. - * doc/tm.texi: Regenerate. - * hooks.h (hook_optmode_mode_uhwi_none): Declare. - * hooks.c (hook_optmode_mode_uhwi_none): New function. - * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use - targetm.array_mode. - * stor-layout.c (mode_for_array): Likewise. Support polynomial - type sizes. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * fold-const.c (fold_binary_loc): Check the argument types - rather than the result type when testing for a vector operation. - -2018-01-13 Richard Sandiford - - * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document. - * doc/tm.texi: Regenerate. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/invoke.texi (-msve-vector-bits=): Document new option. - (sve): Document new AArch64 extension. - * doc/md.texi (w): Extend the description of the AArch64 - constraint to include SVE vectors. - (Upl, Upa): Document new AArch64 predicate constraints. - * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New - enum. - * config/aarch64/aarch64.opt (sve_vector_bits): New enum. - (msve-vector-bits=): New option. - * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable - SVE when these are disabled. - (sve): New extension. - * config/aarch64/aarch64-modes.def: Define SVE vector and predicate - modes. Adjust their number of units based on aarch64_sve_vg. - (MAX_BITSIZE_MODE_ANY_MODE): Define. - * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New - aarch64_addr_query_type. - (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode) - (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p) - (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries) - (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate) - (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate) - (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare. - (aarch64_simd_imm_zero_p): Delete. - (aarch64_check_zero_based_sve_index_immediate): Declare. - (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p) - (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p) - (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p) - (aarch64_sve_float_mul_immediate_p): Likewise. - (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT - rather than an rtx. - (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare. - (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback. - (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare. - (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float) - (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare. - (aarch64_regmode_natural_size): Likewise. - * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro. - (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift - left one place. - (AARCH64_ISA_SVE, TARGET_SVE): New macros. - (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries - for VG and the SVE predicate registers. - (V_ALIASES): Add a "z"-prefixed alias. - (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1. - (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros. - (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise. - (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes. - (REG_CLASS_NAMES): Add entries for them. - (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG - and the predicate registers. - (aarch64_sve_vg): Declare. - (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED) - (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros. - (REGMODE_NATURAL_SIZE): Define. - * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle - SVE macros. - * config/aarch64/aarch64.c: Include cfgrtl.h. - (simd_immediate_info): Add a constructor for series vectors, - and an associated step field. - (aarch64_sve_vg): New variable. - (aarch64_dbx_register_number): Handle VG and the predicate registers. - (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete. - (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE) - (VEC_ANY_DATA, VEC_STRUCT): New constants. - (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p) - (aarch64_classify_vector_mode, aarch64_vector_data_mode_p) - (aarch64_sve_data_mode_p, aarch64_sve_pred_mode) - (aarch64_get_mask_mode): New functions. - (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS - and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS. - (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE - predicate modes and predicate registers. Explicitly restrict - GPRs to modes of 16 bytes or smaller. Only allow FP registers - to store a vector mode if it is recognized by - aarch64_classify_vector_mode. - (aarch64_regmode_natural_size): New function. - (aarch64_hard_regno_caller_save_mode): Return the original mode - for predicates. - (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate) - (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl) - (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate) - (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New - functions. - (aarch64_add_offset): Add a temp2 parameter. Assert that temp1 - does not overlap dest if the function is frame-related. Handle - SVE constants. - (aarch64_split_add_offset): New function. - (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass - them aarch64_add_offset. - (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter - and update call to aarch64_sub_sp. - (aarch64_add_cfa_expression): New function. - (aarch64_expand_prologue): Pass extra temporary registers to the - functions above. Handle the case in which we need to emit new - DW_CFA_expressions for registers that were originally saved - relative to the stack pointer, but now have to be expressed - relative to the frame pointer. - (aarch64_output_mi_thunk): Pass extra temporary registers to the - functions above. - (aarch64_expand_epilogue): Likewise. Prevent inheritance of - IP0 and IP1 values for SVE frames. - (aarch64_expand_vec_series): New function. - (aarch64_expand_sve_widened_duplicate): Likewise. - (aarch64_expand_sve_const_vector): Likewise. - (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter. - Handle SVE constants. Use emit_move_insn to move a force_const_mem - into the register, rather than emitting a SET directly. - (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move) - (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p) - (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p) - (offset_9bit_signed_scaled_p): New functions. - (aarch64_replicate_bitmask_imm): New function. - (aarch64_bitmask_imm): Use it. - (aarch64_cannot_force_const_mem): Reject expressions involving - a CONST_POLY_INT. Update call to aarch64_classify_symbol. - (aarch64_classify_index): Handle SVE indices, by requiring - a plain register index with a scale that matches the element size. - (aarch64_classify_address): Handle SVE addresses. Assert that - the mode of the address is VOIDmode or an integer mode. - Update call to aarch64_classify_symbol. - (aarch64_classify_symbolic_expression): Update call to - aarch64_classify_symbol. - (aarch64_const_vec_all_in_range_p): New function. - (aarch64_print_vector_float_operand): Likewise. - (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than - "vN" for FP registers with SVE modes. Handle (const ...) vectors - and the FP immediates 1.0 and 0.5. - (aarch64_print_address_internal): Handle SVE addresses. - (aarch64_print_operand_address): Use ADDR_QUERY_ANY. - (aarch64_regno_regclass): Handle predicate registers. - (aarch64_secondary_reload): Handle big-endian reloads of SVE - data modes. - (aarch64_class_max_nregs): Handle SVE modes and predicate registers. - (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions. - (aarch64_convert_sve_vector_bits): New function. - (aarch64_override_options): Use it to handle -msve-vector-bits=. - (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT - rather than an rtx. - (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode. - Handle SVE vector and predicate modes. Accept VL-based constants - that need only one temporary register, and VL offsets that require - no temporary registers. - (aarch64_conditional_register_usage): Mark the predicate registers - as fixed if SVE isn't available. - (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode. - Return true for SVE vector and predicate modes. - (aarch64_simd_container_mode): Take the number of bits as a poly_int64 - rather than an unsigned int. Handle SVE modes. - (aarch64_preferred_simd_mode): Update call accordingly. Handle - SVE modes. - (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR - if SVE is enabled. - (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p) - (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p) - (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p) - (aarch64_sve_float_mul_immediate_p): New functions. - (aarch64_sve_valid_immediate): New function. - (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors. - Explicitly reject structure modes. Check for INDEX constants. - Handle PTRUE and PFALSE constants. - (aarch64_check_zero_based_sve_index_immediate): New function. - (aarch64_simd_imm_zero_p): Delete. - (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for - vector modes. Accept constants in the range of CNT[BHWD]. - (aarch64_simd_scalar_immediate_valid_for_move): Explicitly - ask for an Advanced SIMD mode. - (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions. - (aarch64_simd_vector_alignment): Handle SVE predicates. - (aarch64_vectorize_preferred_vector_alignment): New function. - (aarch64_simd_vector_alignment_reachable): Use it instead of - the vector size. - (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p. - (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New - functions. - (MAX_VECT_LEN): Delete. - (expand_vec_perm_d): Add a vec_flags field. - (emit_unspec2, aarch64_expand_sve_vec_perm): New functions. - (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip) - (aarch64_evpc_ext): Don't apply a big-endian lane correction - for SVE modes. - (aarch64_evpc_rev): Rename to... - (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE. - (aarch64_evpc_rev_global): New function. - (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP. - (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of - MAX_VECT_LEN. - (aarch64_evpc_sve_tbl): New function. - (aarch64_expand_vec_perm_const_1): Update after rename of - aarch64_evpc_rev. Handle SVE permutes too, trying - aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather - than aarch64_evpc_tbl. - (aarch64_vectorize_vec_perm_const): Initialize vec_flags. - (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code) - (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int) - (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or) - (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float) - (aarch64_expand_sve_vcond): New functions. - (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead - of aarch64_vector_mode_p. - (aarch64_dwarf_poly_indeterminate_value): New function. - (aarch64_compute_pressure_classes): Likewise. - (aarch64_can_change_mode_class): Likewise. - (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine. - (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise. - (TARGET_VECTORIZE_GET_MASK_MODE): Likewise. - (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise. - (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise. - (TARGET_CAN_CHANGE_MODE_CLASS): Likewise. - * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr) - (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New - constraints. - (Dn, Dl, Dr): Accept const as well as const_vector. - (Dz): Likewise. Compare against CONST0_RTX. - * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead - of "vector" where appropriate. - (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD) - (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators. - (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT) - (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE) - (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS) - (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs. - (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV) - (v_int_equiv): Extend to SVE modes. - (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New - mode attributes. - (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators. - (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt. - (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs. - (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP) - (SVE_COND_FP_CMP): New int iterators. - (perm_hilo): Handle the new unpack unspecs. - (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int - attributes. - * config/aarch64/predicates.md (aarch64_sve_cnt_immediate) - (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate) - (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand) - (aarch64_equality_operator, aarch64_constant_vector_operand) - (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates. - (aarch64_sve_nonimmediate_operand): Likewise. - (aarch64_sve_general_operand): Likewise. - (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise. - (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate) - (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise. - (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise. - (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise. - (aarch64_sve_float_arith_immediate): Likewise. - (aarch64_sve_float_arith_with_sub_immediate): Likewise. - (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise. - (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise. - (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise. - (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise. - (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise. - (aarch64_sve_float_arith_operand): Likewise. - (aarch64_sve_float_arith_with_sub_operand): Likewise. - (aarch64_sve_float_mul_operand): Likewise. - (aarch64_sve_vec_perm_operand): Likewise. - (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate. - (aarch64_mov_operand): Accept const_poly_int and const_vector. - (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const - as well as const_vector. - (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier - in file. Use CONST0_RTX and CONSTM1_RTX. - (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes. - (aarch64_simd_reg_or_zero): Accept const as well as const_vector. - Use aarch64_simd_imm_zero. - * config/aarch64/aarch64-sve.md: New file. - * config/aarch64/aarch64.md: Include it. - (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers. - (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE) - (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI) - (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK) - (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants. - (sve): New attribute. - (enabled): Disable instructions with the sve attribute unless - TARGET_SVE. - (movqi, movhi): Pass CONST_POLY_INT operaneds through - aarch64_expand_mov_immediate. - (*mov_aarch64, *movsi_aarch64, *movdi_aarch64): Handle - CNT[BHSD] immediates. - (movti): Split CONST_POLY_INT moves into two halves. - (add3): Accept aarch64_pluslong_or_poly_operand. - Split additions that need a temporary here if the destination - is the stack pointer. - (*add3_aarch64): Handle ADDVL and ADDPL immediates. - (*add3_poly_1): New instruction. - (set_clobber_cc): New expander. - -2018-01-13 Richard Sandiford - - * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes - parameter and use it instead of GET_MODE_SIZE (innermode). Use - inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode). - Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of - GET_MODE_NUNITS (innermode). Also add a first_elem parameter. - Change innermode from fixed_mode_size to machine_mode. - (simplify_subreg): Update call accordingly. Handle a constant-sized - subreg of a variable-length CONST_VECTOR. - -2018-01-13 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function. - (add_offset_to_base): New function, split out from... - (create_mem_ref): ...here. When handling a scale other than 1, - check first whether the address is valid without the offset. - Add it into the base if so, leaving the index and scale as-is. - -2018-01-12 Jakub Jelinek - - PR c++/83778 - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call - fold_for_warn before checking if arg2 is INTEGER_CST. - -2018-01-12 Segher Boessenkool - - * config/rs6000/predicates.md (load_multiple_operation): Delete. - (store_multiple_operation): Delete. - * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING. - * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete. - * config/rs6000/rs6000-string.c (expand_block_move): Delete everything - guarded by TARGET_STRING. - (rs6000_output_load_multiple): Delete. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete - OPTION_MASK_STRING / TARGET_STRING handling. - (print_operand) <'N', 'O'>: Add comment that these are unused now. - (const rs6000_opt_masks) <"string">: Change mask to 0. - * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING. - (MASK_STRING): Delete. - * config/rs6000/rs6000.md (*mov_string): Delete TARGET_STRING - parts. Simplify. - (load_multiple): Delete. - (*ldmsi8): Delete. - (*ldmsi7): Delete. - (*ldmsi6): Delete. - (*ldmsi5): Delete. - (*ldmsi4): Delete. - (*ldmsi3): Delete. - (store_multiple): Delete. - (*stmsi8): Delete. - (*stmsi7): Delete. - (*stmsi6): Delete. - (*stmsi5): Delete. - (*stmsi4): Delete. - (*stmsi3): Delete. - (movmemsi_8reg): Delete. - (corresponding unnamed define_insn): Delete. - (movmemsi_6reg): Delete. - (corresponding unnamed define_insn): Delete. - (movmemsi_4reg): Delete. - (corresponding unnamed define_insn): Delete. - (movmemsi_2reg): Delete. - (corresponding unnamed define_insn): Delete. - (movmemsi_1reg): Delete. - (corresponding unnamed define_insn): Delete. - * config/rs6000/rs6000.opt (mno-string): New. - (mstring): Replace by deprecation warning stub. - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring. - -2018-01-12 Jakub Jelinek - - * regrename.c (regrename_do_replace): If replacing the same - reg multiple times, try to reuse last created gen_raw_REG. - - PR debug/81155 - * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition - main to workaround a bug in GDB. - -2018-01-12 Tom de Vries - - PR target/83737 - * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap. - -2018-01-12 Vladimir Makarov - - PR rtl-optimization/80481 - * ira-color.c (get_cap_member): New function. - (allocnos_conflict_by_live_ranges_p): Use it. - (slot_coalesced_allocno_live_ranges_intersect_p): Add assert. - (setup_slot_coalesced_allocno_live_ranges): Ditto. - -2018-01-12 Uros Bizjak - - PR target/83628 - * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern. - (*saddl_se_1): Ditto. - (*ssubsi_1): Ditto. - (*ssubl_se_1): Ditto. - -2018-01-12 Richard Sandiford - - * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest - rather than wi::to_widest for DR_INITs. - * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use - wi::to_poly_offset rather than wi::to_offset for DR_INIT. - (vect_analyze_data_ref_accesses): Require both DR_INITs to be - INTEGER_CSTs. - (vect_analyze_group_access_1): Note that here. - -2018-01-12 Richard Sandiford - - * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle - polynomial type sizes. - -2018-01-12 Richard Sandiford - - * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a - poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size. - (gimple_add_tmp_var): Likewise. - -2018-01-12 Martin Liska - - * gimple.c (gimple_alloc_counts): Use uint64_t instead of int. - (gimple_alloc_sizes): Likewise. - (dump_gimple_statistics): Use PRIu64 in printf format. - * gimple.h: Change uint64_t to int. - -2018-01-12 Martin Liska - - * tree-core.h: Use uint64_t instead of int. - * tree.c (tree_node_counts): Likewise. - (tree_node_sizes): Likewise. - (dump_tree_statistics): Use PRIu64 in printf format. - -2018-01-12 Martin Liska - - * Makefile.in: As qsort_chk is implemented in vec.c, add - vec.o to linkage of gencfn-macros. - * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's - passing the info to record_node_allocation_statistics. - (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration - and pass the info. - * ggc-common.c (struct ggc_usage): Add operator== and use - it in operator< and compare function. - * mem-stats.h (struct mem_usage): Likewise. - * vec.c (struct vec_usage): Remove operator< and compare - function. Can be simply inherited. - -2018-01-12 Martin Jambor - - PR target/81616 - * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS. - * tree-ssa-math-opts.c: Include domwalk.h. - (convert_mult_to_fma_1): New function. - (fma_transformation_info): New type. - (fma_deferring_state): Likewise. - (cancel_fma_deferring): New function. - (result_of_phi): Likewise. - (last_fma_candidate_feeds_initial_phi): Likewise. - (convert_mult_to_fma): Added deferring logic, split actual - transformation to convert_mult_to_fma_1. - (math_opts_dom_walker): New type. - (math_opts_dom_walker::after_dom_children): New method, body moved - here from pass_optimize_widening_mul::execute, added deferring logic - bits. - (pass_optimize_widening_mul::execute): Moved most of code to - math_opts_dom_walker::after_dom_children. - * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New. - * config/i386/i386.c (ix86_option_override_internal): Added - maybe_setting of PARAM_AVOID_FMA_MAX_BITS. - -2018-01-12 Richard Biener - - PR debug/83157 - * dwarf2out.c (gen_variable_die): Do not reset old_die for - inline instance vars. - -2018-01-12 Oleg Endo - - PR target/81819 - * config/rx/rx.c (rx_is_restricted_memory_address): - Handle SUBREG case. - -2018-01-12 Richard Biener - - PR tree-optimization/80846 - * target.def (split_reduction): New target hook. - * targhooks.c (default_split_reduction): New function. - * targhooks.h (default_split_reduction): Declare. - * tree-vect-loop.c (vect_create_epilog_for_reduction): If the - target requests first reduce vectors by combining low and high - parts. - * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust. - (get_vectype_for_scalar_type_and_size): Export. - * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare. - * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document. - * doc/tm.texi: Regenerate. - * config/i386/i386.c (ix86_split_reduction): Implement - TARGET_VECTORIZE_SPLIT_REDUCTION. - -2018-01-12 Eric Botcazou - - PR target/83368 - * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM - in PIC mode except for TARGET_VXWORKS_RTP. - * config/sparc/sparc.c: Include cfgrtl.h. - (TARGET_INIT_PIC_REG): Define. - (TARGET_USE_PSEUDO_PIC_REG): Likewise. - (sparc_pic_register_p): New predicate. - (sparc_legitimate_address_p): Use it. - (sparc_legitimize_pic_address): Likewise. - (sparc_delegitimize_address): Likewise. - (sparc_mode_dependent_address_p): Likewise. - (gen_load_pcrel_sym): Remove 4th parameter. - (load_got_register): Adjust call to above. Remove obsolete stuff. - (sparc_expand_prologue): Do not call load_got_register here. - (sparc_flat_expand_prologue): Likewise. - (sparc_output_mi_thunk): Set the pic_offset_table_rtx object. - (sparc_use_pseudo_pic_reg): New function. - (sparc_init_pic_reg): Likewise. - * config/sparc/sparc.md (vxworks_load_got): Set the GOT register. - (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP. - -2018-01-12 Christophe Lyon - - * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): - Add item for branch_cost. - -2018-01-12 Eric Botcazou - - PR rtl-optimization/83565 - * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do - not extend the result to a larger mode for rotate operations. - (num_sign_bit_copies1): Likewise. - -2018-01-12 Rainer Orth - - PR target/40411 - * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or - -symbolic. - Use values-Xc.o for -pedantic. - Link with values-xpg4.o for C90, values-xpg6.o otherwise. - -2018-01-12 Martin Liska - - PR ipa/83054 - * ipa-devirt.c (final_warning_record::grow_type_warnings): - New function. - (possible_polymorphic_call_targets): Use it. - (ipa_devirt): Likewise. - -2018-01-12 Martin Liska - - * profile-count.h (enum profile_quality): Use 0 as invalid - enum value of profile_quality. - -2018-01-12 Chung-Ju Wu - - * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and - -mext-string options. - -2018-01-12 Richard Biener - - * lto-streamer-out.c (DFS::DFS_write_tree_body): Process - DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P. - * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers): - Likewise. - * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise. - -2018-01-11 Michael Meissner - - * configure.ac (--with-long-double-format): Add support for the - configuration option to change the default long double format on - PowerPC systems. - * config.gcc (powerpc*-linux*-*): Likewise. - * configure: Regenerate. - * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long - double is IEEE, define __KC__ and __KF__ to allow floatn.h to be - used without modification. - -2018-01-11 Bill Schmidt - - * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define. - (SPEC_BARRIER): New instantiation of BU_P7_MISC_X. - * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle - MISC_BUILTIN_SPEC_BARRIER. - (rs6000_init_builtins): Likewise. - * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV - enum value. - (speculation_barrier): New define_insn. - * doc/extend.texi: Document __builtin_speculation_barrier. - -2018-01-11 Jakub Jelinek - - PR target/83203 - * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var - is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set_0. - * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode - iterators. - (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for - integral modes instead of "ss" and "sd". - (vec_set_0): New define_insns for 256-bit and 512-bit - vectors with 32-bit and 64-bit elements. - (vecdupssescalarmodesuffix): New mode attribute. - (vec_dup): Use it. - -2018-01-11 H.J. Lu - - PR target/83330 - * config/i386/i386.c (ix86_compute_frame_layout): Align stack - frame if argument is passed on stack. - -2018-01-11 Jakub Jelinek - - PR target/82682 - * ree.c (combine_reaching_defs): Optimize also - reg2=exp; reg1=reg2; reg2=any_extend(reg1); into - reg2=any_extend(exp); reg1=reg2;, formatting fix. - -2018-01-11 Jan Hubicka - - PR middle-end/83189 - * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update. - -2018-01-11 Jan Hubicka - - PR middle-end/83718 - * tree-inline.c (copy_cfg_body): Adjust num&den for scaling - after they are computed. - -2018-01-11 Bin Cheng - - PR tree-optimization/83695 - * gimple-loop-linterchange.cc - (tree_loop_interchange::interchange_loops): Call scev_reset_htab to - reset cached scev information after interchange. - (pass_linterchange::execute): Remove call to scev_reset_htab. - -2018-01-11 Kyrylo Tkachov - - * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32, - vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32, - vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32, - vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32, - vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32, - vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define. - * config/arm/arm_neon_builtins.def (vfmal_lane_low, - vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high, - vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low, - vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high, - vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins. - * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes. - (V_lane_reg): Likewise. - * config/arm/neon.md (neon_vfml_lane_): - New define_expand. - (neon_vfml_lane_): Likewise. - (vfmal_lane_low_intrinsic, - vfmal_lane_low_intrinsic, - vfmal_lane_high_intrinsic, - vfmal_lane_high_intrinsic, vfmsl_lane_low_intrinsic, - vfmsl_lane_low_intrinsic, - vfmsl_lane_high_intrinsic, - vfmsl_lane_high_intrinsic): New define_insns. - -2018-01-11 Kyrylo Tkachov - - * config/arm/arm-cpus.in (fp16fml): New feature. - (ALL_SIMD): Add fp16fml. - (armv8.2-a): Add fp16fml as an option. - (armv8.3-a): Likewise. - (armv8.4-a): Add fp16fml as part of fp16. - * config/arm/arm.h (TARGET_FP16FML): Define. - * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML - when appropriate. - * config/arm/arm-modes.def (V2HF): Define. - * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32, - vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32, - vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define. - * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high, - vfmsl_low, vfmsl_high): New set of builtins. - * config/arm/iterators.md (PLUSMINUS): New code iterator. - (vfml_op): New code attribute. - (VFMLHALVES): New int iterator. - (VFML, VFMLSEL): New mode attributes. - (V_reg): Define mapping for V2HF. - (V_hi, V_lo): New mode attributes. - (VF_constraint): Likewise. - (vfml_half, vfml_half_selector): New int attributes. - * config/arm/neon.md (neon_vfml_): New - define_expand. - (vfmal_low_intrinsic, vfmsl_high_intrinsic, - vfmal_high_intrinsic, vfmsl_low_intrinsic): - New define_insn. - * config/arm/t-arm-elf (v8_fps): Add fp16fml. - * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml. - * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs. - * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a - documentation. - * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon): - Document new effective target and option set. - -2018-01-11 Kyrylo Tkachov - - * config/arm/arm-cpus.in (armv8_4): New feature. - (ARMv8_4a): New fgroup. - (armv8.4-a): New arch. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a. - * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a. - * config/arm/t-multilib (v8_4_a_simd_variants): New variable. - Add matching rules for -march=armv8.4-a and extensions. - * doc/invoke.texi (ARM Options): Document -march=armv8.4-a. - -2018-01-11 Oleg Endo - - PR target/81821 - * config/rx/rx.md (BW): New mode attribute. - (sync_lock_test_and_setsi): Add mode suffix to insn output. - -2018-01-11 Richard Biener - - PR tree-optimization/83435 - * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges. - * graphite-scop-detection.c (scop_detection::get_sese): Likewise. - * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear. - -2018-01-11 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset - field. - (aarch64_classify_address): Initialize it. Track polynomial offsets. - (aarch64_print_address_internal): Use it to check for a zero offset. - -2018-01-11 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2. - * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset): - Return a poly_int64 rather than a HOST_WIDE_INT. - (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64 - rather than a HOST_WIDE_INT. - * config/aarch64/aarch64.h (aarch64_frame): Protect with - HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset, - hard_fp_offset, frame_size, initial_adjust, callee_offset and - final_offset from HOST_WIDE_INT to poly_int64. - * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use - to_constant when getting the number of units in an Advanced SIMD - mode. - (aarch64_builtin_vectorized_function): Check for a constant number - of units. - * config/aarch64/aarch64-simd.md (mov): Handle polynomial - GET_MODE_SIZE. - (aarch64_ld_lane): Use the nunits - attribute instead of GET_MODE_NUNITS. - * config/aarch64/aarch64.c (aarch64_hard_regno_nregs) - (aarch64_class_max_nregs): Use the constant_lowest_bound of the - GET_MODE_SIZE for fixed-size registers. - (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p. - (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index) - (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address) - (aarch64_legitimize_address_displacement, aarch64_secondary_reload) - (aarch64_print_operand, aarch64_print_address_internal) - (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost) - (aarch64_short_vector_p, aapcs_vfp_sub_candidate) - (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp): - Handle polynomial GET_MODE_SIZE. - (aarch64_hard_regno_caller_save_mode): Likewise. Return modes - wider than SImode without modification. - (tls_symbolic_operand_type): Use strip_offset instead of split_const. - (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward) - (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle - passing and returning SVE modes. - (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode - rather than GEN_INT. - (aarch64_emit_probe_stack_range): Take the size as a poly_int64 - rather than a HOST_WIDE_INT, but call sorry if it isn't constant. - (aarch64_allocate_and_probe_stack_space): Likewise. - (aarch64_layout_frame): Cope with polynomial offsets. - (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the - start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track - polynomial offsets. - (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p) - (aarch64_offset_7bit_signed_scaled_p): Take the offset as a - poly_int64 rather than a HOST_WIDE_INT. - (aarch64_get_separate_components, aarch64_process_components) - (aarch64_expand_prologue, aarch64_expand_epilogue) - (aarch64_use_return_insn_p): Handle polynomial frame offsets. - (aarch64_anchor_offset): New function, split out from... - (aarch64_legitimize_address): ...here. - (aarch64_builtin_vectorization_cost): Handle polynomial - TYPE_VECTOR_SUBPARTS. - (aarch64_simd_check_vect_par_cnst_half): Handle polynomial - GET_MODE_NUNITS. - (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the - number of elements from the PARALLEL rather than the mode. - (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE - rather than GET_MODE_BITSIZE. - (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext) - (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip) - (aarch64_expand_vec_perm_const_1): Handle polynomial - d->perm.length () and d->perm elements. - (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS. - Apply to_constant to d->perm elements. - (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle - polynomial CONST_VECTOR_NUNITS. - (aarch64_move_pointer): Take amount as a poly_int64 rather - than an int. - (aarch64_progress_pointer): Avoid temporary variable. - * config/aarch64/aarch64.md (aarch64_): Use - the mode attribute instead of GET_MODE. - -2018-01-11 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that - x exists before using it. - (aarch64_add_constant_internal): Rename to... - (aarch64_add_offset_1): ...this. Replace regnum with separate - src and dest rtxes. Handle the case in which they're different, - including when the offset is zero. Replace scratchreg with an rtx. - Use 2 additions if there is no spare register into which we can - move a 16-bit constant. - (aarch64_add_constant): Delete. - (aarch64_add_offset): Replace reg with separate src and dest - rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT. - Use aarch64_add_offset_1. - (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as - an rtx rather than an int. Take the delta as a poly_int64 - rather than a HOST_WIDE_INT. Use aarch64_add_offset. - (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset. - (aarch64_expand_prologue): Update calls to aarch64_sub_sp, - aarch64_allocate_and_probe_stack_space and aarch64_add_offset. - (aarch64_expand_epilogue): Update calls to aarch64_add_offset - and aarch64_add_sp. - (aarch64_output_mi_thunk): Use aarch64_add_offset rather than - aarch64_add_constant. - -2018-01-11 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int): - Use scalar_float_mode. - -2018-01-11 Richard Sandiford - - * config/aarch64/aarch64-simd.md - (aarch64_fmll_low): Avoid GET_MODE_NUNITS. - (aarch64_fmll_high): Likewise. - (aarch64_fmll_lane_lowv2sf): Likewise. - (aarch64_fmll_lane_highv2sf): Likewise. - (aarch64_fmllq_laneq_lowv4sf): Likewise. - (aarch64_fmllq_laneq_highv4sf): Likewise. - (aarch64_fmll_laneq_lowv2sf): Likewise. - (aarch64_fmll_laneq_highv2sf): Likewise. - (aarch64_fmllq_lane_lowv4sf): Likewise. - (aarch64_fmllq_lane_highv4sf): Likewise. - -2018-01-11 Prathamesh Kulkarni - - PR target/83514 - * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if - targ_options->x_arm_arch_string is non NULL. - -2018-01-11 Tamar Christina - - * config/aarch64/aarch64.h - (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD. - -2018-01-11 Sudakshina Das - - PR target/82096 - * expmed.c (emit_store_flag_force): Swap if const op0 - and change VOIDmode to mode of op0. - -2018-01-11 Richard Sandiford - - PR rtl-optimization/83761 - * caller-save.c (replace_reg_with_saved_mem): Pass bits rather - than bytes to mode_for_size. - -2018-01-10 Jan Hubicka - - PR middle-end/83189 - * gfortran.fortran-torture/compile/pr83189.f90: New testcase. - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero - profile. - -2018-01-10 Jan Hubicka - - PR middle-end/83575 - * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition - when in layout mode. - (cfg_layout_finalize): Do not verify cfg before we are out of layout. - * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing - partition fixup. - -2018-01-10 Michael Collison - - * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE. - * config/aarch64/aarch64-option-extension.def: Add - AARCH64_OPT_EXTENSION of 'fp16fml'. - * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): - (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true. - * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate. - * config/aarch64/constraints.md (Ui7): New constraint. - * config/aarch64/iterators.md (VFMLA_W): New mode iterator. - (VFMLA_SEL_W): Ditto. - (f16quad): Ditto. - (f16mac1): Ditto. - (VFMLA16_LOW): New int iterator. - (VFMLA16_HIGH): Ditto. - (UNSPEC_FMLAL): New unspec. - (UNSPEC_FMLSL): Ditto. - (UNSPEC_FMLAL2): Ditto. - (UNSPEC_FMLSL2): Ditto. - (f16mac): New code attribute. - * config/aarch64/aarch64-simd-builtins.def - (aarch64_fmlal_lowv2sf): Ditto. - (aarch64_fmlsl_lowv2sf): Ditto. - (aarch64_fmlalq_lowv4sf): Ditto. - (aarch64_fmlslq_lowv4sf): Ditto. - (aarch64_fmlal_highv2sf): Ditto. - (aarch64_fmlsl_highv2sf): Ditto. - (aarch64_fmlalq_highv4sf): Ditto. - (aarch64_fmlslq_highv4sf): Ditto. - (aarch64_fmlal_lane_lowv2sf): Ditto. - (aarch64_fmlsl_lane_lowv2sf): Ditto. - (aarch64_fmlal_laneq_lowv2sf): Ditto. - (aarch64_fmlsl_laneq_lowv2sf): Ditto. - (aarch64_fmlalq_lane_lowv4sf): Ditto. - (aarch64_fmlsl_lane_lowv4sf): Ditto. - (aarch64_fmlalq_laneq_lowv4sf): Ditto. - (aarch64_fmlsl_laneq_lowv4sf): Ditto. - (aarch64_fmlal_lane_highv2sf): Ditto. - (aarch64_fmlsl_lane_highv2sf): Ditto. - (aarch64_fmlal_laneq_highv2sf): Ditto. - (aarch64_fmlsl_laneq_highv2sf): Ditto. - (aarch64_fmlalq_lane_highv4sf): Ditto. - (aarch64_fmlsl_lane_highv4sf): Ditto. - (aarch64_fmlalq_laneq_highv4sf): Ditto. - (aarch64_fmlsl_laneq_highv4sf): Ditto. - * config/aarch64/aarch64-simd.md: - (aarch64_fmll_low): New pattern. - (aarch64_fmll_high): Ditto. - (aarch64_simd_fmll_low): Ditto. - (aarch64_simd_fmll_high): Ditto. - (aarch64_fmll_lane_lowv2sf): Ditto. - (aarch64_fmll_lane_highv2sf): Ditto. - (aarch64_simd_fmll_lane_lowv2sf): Ditto. - (aarch64_simd_fmll_lane_highv2sf): Ditto. - (aarch64_fmllq_laneq_lowv4sf): Ditto. - (aarch64_fmllq_laneq_highv4sf): Ditto. - (aarch64_simd_fmllq_laneq_lowv4sf): Ditto. - (aarch64_simd_fmllq_laneq_highv4sf): Ditto. - (aarch64_fmll_laneq_lowv2sf): Ditto. - (aarch64_fmll_laneq_highv2sf): Ditto. - (aarch64_simd_fmll_laneq_lowv2sf): Ditto. - (aarch64_simd_fmll_laneq_highv2sf): Ditto. - (aarch64_fmllq_lane_lowv4sf): Ditto. - (aarch64_fmllq_lane_highv4sf): Ditto. - (aarch64_simd_fmllq_lane_lowv4sf): Ditto. - (aarch64_simd_fmllq_lane_highv4sf): Ditto. - * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic. - (vfmlsl_low_u32): Ditto. - (vfmlalq_low_u32): Ditto. - (vfmlslq_low_u32): Ditto. - (vfmlal_high_u32): Ditto. - (vfmlsl_high_u32): Ditto. - (vfmlalq_high_u32): Ditto. - (vfmlslq_high_u32): Ditto. - (vfmlal_lane_low_u32): Ditto. - (vfmlsl_lane_low_u32): Ditto. - (vfmlal_laneq_low_u32): Ditto. - (vfmlsl_laneq_low_u32): Ditto. - (vfmlalq_lane_low_u32): Ditto. - (vfmlslq_lane_low_u32): Ditto. - (vfmlalq_laneq_low_u32): Ditto. - (vfmlslq_laneq_low_u32): Ditto. - (vfmlal_lane_high_u32): Ditto. - (vfmlsl_lane_high_u32): Ditto. - (vfmlal_laneq_high_u32): Ditto. - (vfmlsl_laneq_high_u32): Ditto. - (vfmlalq_lane_high_u32): Ditto. - (vfmlslq_lane_high_u32): Ditto. - (vfmlalq_laneq_high_u32): Ditto. - (vfmlslq_laneq_high_u32): Ditto. - * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag. - (AARCH64_FL_FOR_ARCH8_4): New. - (AARCH64_ISA_F16FML): New ISA flag. - (TARGET_F16FML): New feature flag for fp16fml. - (doc/invoke.texi): Document new fp16fml option. - -2018-01-10 Michael Collison - - * config/aarch64/aarch64-builtins.c: - (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New. - * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): - (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true. - * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags. - (AARCH64_ISA_SHA3): New ISA flag. - (TARGET_SHA3): New feature flag for sha3. - * config/aarch64/iterators.md (sha512_op): New int attribute. - (CRYPTO_SHA512): New int iterator. - (UNSPEC_SHA512H): New unspec. - (UNSPEC_SHA512H2): Ditto. - (UNSPEC_SHA512SU0): Ditto. - (UNSPEC_SHA512SU1): Ditto. - * config/aarch64/aarch64-simd-builtins.def - (aarch64_crypto_sha512hqv2di): New builtin. - (aarch64_crypto_sha512h2qv2di): Ditto. - (aarch64_crypto_sha512su0qv2di): Ditto. - (aarch64_crypto_sha512su1qv2di): Ditto. - (aarch64_eor3qv8hi): Ditto. - (aarch64_rax1qv2di): Ditto. - (aarch64_xarqv2di): Ditto. - (aarch64_bcaxqv8hi): Ditto. - * config/aarch64/aarch64-simd.md: - (aarch64_crypto_sha512hqv2di): New pattern. - (aarch64_crypto_sha512su0qv2di): Ditto. - (aarch64_crypto_sha512su1qv2di): Ditto. - (aarch64_eor3qv8hi): Ditto. - (aarch64_rax1qv2di): Ditto. - (aarch64_xarqv2di): Ditto. - (aarch64_bcaxqv8hi): Ditto. - * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic. - (vsha512h2q_u64): Ditto. - (vsha512su0q_u64): Ditto. - (vsha512su1q_u64): Ditto. - (veor3q_u16): Ditto. - (vrax1q_u64): Ditto. - (vxarq_u64): Ditto. - (vbcaxq_u16): Ditto. - * config/arm/types.md (crypto_sha512): New type attribute. - (crypto_sha3): Ditto. - (doc/invoke.texi): Document new sha3 option. - -2018-01-10 Michael Collison - - * config/aarch64/aarch64-builtins.c: - (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New. - * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): - (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true. - (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true. - * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags. - (AARCH64_ISA_SM4): New ISA flag. - (TARGET_SM4): New feature flag for sm4. - * config/aarch64/aarch64-simd-builtins.def - (aarch64_sm3ss1qv4si): Ditto. - (aarch64_sm3tt1aq4si): Ditto. - (aarch64_sm3tt1bq4si): Ditto. - (aarch64_sm3tt2aq4si): Ditto. - (aarch64_sm3tt2bq4si): Ditto. - (aarch64_sm3partw1qv4si): Ditto. - (aarch64_sm3partw2qv4si): Ditto. - (aarch64_sm4eqv4si): Ditto. - (aarch64_sm4ekeyqv4si): Ditto. - * config/aarch64/aarch64-simd.md: - (aarch64_sm3ss1qv4si): Ditto. - (aarch64_sm3ttqv4si): Ditto. - (aarch64_sm3partwqv4si): Ditto. - (aarch64_sm4eqv4si): Ditto. - (aarch64_sm4ekeyqv4si): Ditto. - * config/aarch64/iterators.md (sm3tt_op): New int iterator. - (sm3part_op): Ditto. - (CRYPTO_SM3TT): Ditto. - (CRYPTO_SM3PART): Ditto. - (UNSPEC_SM3SS1): New unspec. - (UNSPEC_SM3TT1A): Ditto. - (UNSPEC_SM3TT1B): Ditto. - (UNSPEC_SM3TT2A): Ditto. - (UNSPEC_SM3TT2B): Ditto. - (UNSPEC_SM3PARTW1): Ditto. - (UNSPEC_SM3PARTW2): Ditto. - (UNSPEC_SM4E): Ditto. - (UNSPEC_SM4EKEY): Ditto. - * config/aarch64/constraints.md (Ui2): New constraint. - * config/aarch64/predicates.md (aarch64_imm2): New predicate. - * config/arm/types.md (crypto_sm3): New type attribute. - (crypto_sm4): Ditto. - * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic. - (vsm3tt1aq_u32): Ditto. - (vsm3tt1bq_u32): Ditto. - (vsm3tt2aq_u32): Ditto. - (vsm3tt2bq_u32): Ditto. - (vsm3partw1q_u32): Ditto. - (vsm3partw2q_u32): Ditto. - (vsm4eq_u32): Ditto. - (vsm4ekeyq_u32): Ditto. - (doc/invoke.texi): Document new sm4 option. - -2018-01-10 Michael Collison - - * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture. - * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag. - (AARCH64_FL_FOR_ARCH8_4): New. - (AARCH64_FL_V8_4): New flag. - (doc/invoke.texi): Document new armv8.4-a option. - -2018-01-10 Michael Collison - - * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): - (__ARM_FEATURE_AES): Define if TARGET_AES is true. - (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true. - * config/aarch64/aarch64-option-extension.def: Add - AARCH64_OPT_EXTENSION of 'sha2'. - (aes): Add AARCH64_OPT_EXTENSION of 'aes'. - (crypto): Disable sha2 and aes if crypto disabled. - (crypto): Enable aes and sha2 if enabled. - (simd): Disable sha2 and aes if simd disabled. - * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2): - New flags. - (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags. - (TARGET_SHA2): New feature flag for sha2. - (TARGET_AES): New feature flag for aes. - * config/aarch64/aarch64-simd.md: - (aarch64_crypto_aesv16qi): Make pattern - conditional on TARGET_AES. - (aarch64_crypto_aesv16qi): Ditto. - (aarch64_crypto_sha1hsi): Make pattern conditional - on TARGET_SHA2. - (aarch64_crypto_sha1hv4si): Ditto. - (aarch64_be_crypto_sha1hv4si): Ditto. - (aarch64_crypto_sha1su1v4si): Ditto. - (aarch64_crypto_sha1v4si): Ditto. - (aarch64_crypto_sha1su0v4si): Ditto. - (aarch64_crypto_sha256hv4si): Ditto. - (aarch64_crypto_sha256su0v4si): Ditto. - (aarch64_crypto_sha256su1v4si): Ditto. - (doc/invoke.texi): Document new aes and sha2 options. - -2018-01-10 Martin Sebor - - PR tree-optimization/83781 - * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers - as string arrays. - -2018-01-11 Martin Sebor - Prathamesh Kulkarni - - PR tree-optimization/83501 - PR tree-optimization/81703 - - * tree-ssa-strlen.c (get_string_cst): Rename... - (get_string_len): ...to this. Handle global constants. - (handle_char_store): Adjust. - -2018-01-10 Kito Cheng - Jim Wilson - - * config/riscv/riscv-protos.h (riscv_output_return): New. - * config/riscv/riscv.c (struct machine_function): New naked_p field. - (riscv_attribute_table, riscv_output_return), - (riscv_handle_fndecl_attribute, riscv_naked_function_p), - (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New. - (riscv_compute_frame_info): Only compute frame->mask if not a naked - function. - (riscv_expand_prologue): Add early return for naked function. - (riscv_expand_epilogue): Likewise. - (riscv_function_ok_for_sibcall): Return false for naked function. - (riscv_set_current_function): New. - (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS), - (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New. - * config/riscv/riscv.md (simple_return): Call riscv_output_return. - * doc/extend.texi (RISC-V Function Attributes): New. - -2018-01-10 Michael Meissner - - * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly - check for 128-bit long double before checking TCmode. - * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for - 128-bit long doubles before checking TFmode or TCmode. - (FLOAT128_IBM_P): Likewise. - -2018-01-10 Martin Sebor - - PR tree-optimization/83671 - * builtins.c (c_strlen): Unconditionally return zero for the empty - string. - Use -Warray-bounds for warnings. - * gimple-fold.c (get_range_strlen): Handle non-constant lengths - for non-constant array indices with COMPONENT_REF, arrays of - arrays, and pointers to arrays. - (gimple_fold_builtin_strlen): Determine and set length range for - non-constant character arrays. - -2018-01-10 Aldy Hernandez - - PR middle-end/81897 - * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip - empty blocks. - -2018-01-10 Eric Botcazou - - * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf. - -2018-01-10 Peter Bergner - - PR target/83399 - * config/rs6000/rs6000.c (print_operand) <'y'>: Use - VECTOR_MEM_ALTIVEC_OR_VSX_P. - * config/rs6000/vsx.md (*vsx_le_perm_load_ for VSX_D): Use - indexed_or_indirect_operand predicate. - (*vsx_le_perm_load_ for VSX_W): Likewise. - (*vsx_le_perm_load_v8hi): Likewise. - (*vsx_le_perm_load_v16qi): Likewise. - (*vsx_le_perm_store_ for VSX_D): Likewise. - (*vsx_le_perm_store_ for VSX_W): Likewise. - (*vsx_le_perm_store_v8hi): Likewise. - (*vsx_le_perm_store_v16qi): Likewise. - (eight unnamed splitters): Likewise. - -2018-01-10 Peter Bergner - - * config/rs6000/x86intrin.h: Change #warning to #error. Update message. - * config/rs6000/emmintrin.h: Likewise. - * config/rs6000/mmintrin.h: Likewise. - * config/rs6000/xmmintrin.h: Likewise. - -2018-01-10 David Malcolm - - PR c++/43486 - * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of - "public_flag". - * tree.c (tree_nop_conversion): Return true for location wrapper - nodes. - (maybe_wrap_with_location): New function. - (selftest::check_strip_nops): New function. - (selftest::test_location_wrappers): New function. - (selftest::tree_c_tests): Call it. - * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro. - (maybe_wrap_with_location): New decl. - (EXPR_LOCATION_WRAPPER_P): New macro. - (location_wrapper_p): New inline function. - (tree_strip_any_location_wrapper): New inline function. - -2018-01-10 H.J. Lu - - PR target/83735 - * config/i386/i386.c (ix86_compute_frame_layout): Always adjust - stack_realign_offset for the largest alignment of stack slot - actually used. - (ix86_find_max_used_stack_alignment): New function. - (ix86_finalize_stack_frame_flags): Use it. Set - max_used_stack_alignment if we don't realign stack. - * config/i386/i386.h (machine_function): Add - max_used_stack_alignment. - -2018-01-10 Christophe Lyon - - * config/arm/arm.opt (-mbranch-cost): New option. - * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into - account. - -2018-01-10 Segher Boessenkool - - PR target/83629 - * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b, - load_toc_v4_PIC_3c): Wrap const term in CONST RTL. - -2018-01-10 Richard Biener - - PR debug/83765 - * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration - early out so it also covers the case where we have a non-NULL - origin. - -2018-01-10 Richard Sandiford - - PR tree-optimization/83753 - * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS - for non-strided grouped accesses if the number of elements is 1. - -2018-01-10 Jan Hubicka - - PR target/81616 - * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER. - * i386.h (TARGET_USE_GATHER): Define. - * x86-tune.def (X86_TUNE_USE_GATHER): New. - -2018-01-10 Martin Liska - - PR bootstrap/82831 - * basic-block.h (CLEANUP_NO_PARTITIONING): New define. - * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up - partitioning. - * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if - CLEANUP_NO_PARTITIONING is not set. - -2018-01-10 Richard Sandiford - - * doc/rtl.texi: Remove documentation of (const ...) wrappers - for vectors, as a partial revert of r254296. - * rtl.h (const_vec_p): Delete. - (const_vec_duplicate_p): Don't test for vector CONSTs. - (unwrap_const_vec_duplicate, const_vec_series_p): Likewise. - * expmed.c (make_tree): Likewise. - - Revert: - * common.md (E, F): Use CONSTANT_P instead of checking for - CONST_VECTOR. - * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of - checking for CONST_VECTOR. - -2018-01-09 Jan Hubicka - - PR middle-end/83575 - * predict.c (force_edge_cold): Handle in more sane way edges - with no prediction. - -2018-01-09 Carl Love - - * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF, - V4SI, V4SF types. - (p8_vmrgew): Add support for V2DI, V2DF, V4SF types. - * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF, - VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF, - VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW. - * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2, - P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions. - * config/rs6000/rs6000-protos.h: Add extern defition for - rs6000_generate_float2_double_code. - * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add - function. - * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn. - (float2_v2df): Add define_expand. - -2018-01-09 Uros Bizjak - - PR target/83628 - * combine.c (force_int_to_mode) : Use mode instead of - op_mode in the force_to_mode call. - -2018-01-09 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p - instead of checking each element individually. - (aarch64_evpc_uzp): Likewise. - (aarch64_evpc_zip): Likewise. - (aarch64_evpc_ext): Likewise. - (aarch64_evpc_rev): Likewise. - (aarch64_evpc_dup): Test the encoding for a single duplicated element, - instead of checking each element individually. Return true without - generating rtl if - (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test - whether all selected elements come from the same input, instead of - checking each element individually. Remove calls to gen_rtx_REG, - start_sequence and end_sequence and instead assert that no rtl is - generated. - -2018-01-09 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix - order of HIGH and CONST checks. - -2018-01-09 Richard Sandiford - - * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable - if the destination isn't an SSA_NAME. - -2018-01-09 Richard Biener - - PR tree-optimization/83668 - * graphite.c (canonicalize_loop_closed_ssa): Add edge argument, - move prologue... - (canonicalize_loop_form): ... here, renamed from ... - (canonicalize_loop_closed_ssa_form): ... this and amended to - swap successor edges for loop exit blocks to make us use - the RPO order we need for initial schedule generation. - -2018-01-09 Joseph Myers - - PR tree-optimization/64811 - * match.pd: When optimizing comparisons with Inf, avoid - introducing or losing exceptions from comparisons with NaN. - -2018-01-09 Martin Liska - - PR sanitizer/82517 - * asan.c (shadow_mem_size): Add gcc_assert. - -2018-01-09 Georg-Johann Lay - - Don't save registers in main(). - - PR target/83738 - * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it. - * config/avr/avr.opt (-mmain-is-OS_task): New target option. - * config/avr/avr.c (avr_set_current_function): Don't error if - naked, OS_task or OS_main are specified at the same time. - (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task, - OS_main. - (avr_insert_attributes) [-mmain-is-OS_task]
: Add OS_task - attribute. - * common/config/avr/avr-common.c (avr_option_optimization_table): - Switch on -mmain-is-OS_task for optimizing compilations. - -2018-01-09 Richard Biener - - PR tree-optimization/83572 - * graphite.c: Include cfganal.h. - (graphite_transform_loops): Connect infinite loops to exit - and remove fake edges at the end. - -2018-01-09 Jan Hubicka - - * ipa-inline.c (edge_badness): Revert accidental checkin. - -2018-01-09 Jan Hubicka - - PR ipa/80763 - * ipa-comdats.c (set_comdat_group): Only set comdat group of real - symbols; not inline clones. - -2018-01-09 Jakub Jelinek - - PR target/83507 - * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move - hard registers. Formatting fixes. - - PR preprocessor/83722 - * gcc.c (try_generate_repro): Pass - &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than - &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to - do_report_bug. - -2018-01-08 Monk Chiang - Kito Cheng - - * config/riscv/riscv.c (machine_function::is_leaf): Remove field. - (riscv_leaf_function_p): Delete. - (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE. - -2018-01-08 Aaron Sawdey - - * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New - function. - (do_ifelse): New function. - (do_isel): New function. - (do_sub3): New function. - (do_add3): New function. - (do_load_mask_compare): New function. - (do_overlap_load_compare): New function. - (expand_compare_loop): New function. - (expand_block_compare): Call expand_compare_loop() when appropriate. - * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change - option description. - (-mblock-compare-inline-loop-limit): New option. - -2018-01-08 Bill Schmidt - - PR target/83677 - * config/rs6000/altivec.md (*altivec_vpermr__internal): - Reverse order of second and third operands in first alternative. - * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order - of first and second elements in UNSPEC_VPERMR vector. - (altivec_expand_vec_perm_le): Likewise. - -2018-01-08 Jeff Law - - PR rtl-optimizatin/81308 - * tree-switch-conversion.c (cfg_altered): New file scoped static. - (process_switch): If group_case_labels makes a change, then set - cfg_altered. - (pass_convert_switch::execute): If a switch is converted, then - set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true. - - PR rtl-optimization/81308 - * recog.c (split_all_insns): Conditionally cleanup the CFG after - splitting insns. - -2018-01-08 Vidya Praveen - - PR target/83663 - Revert r255946 - * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code - generation for cases where splatting a value is not useful. - * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge - across a vec_duplicate and a paradoxical subreg forming a vector - mode to a vec_concat. - -2018-01-08 Kyrylo Tkachov - - * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for - -march=armv8.3-a variants. - * config/arm/t-multilib: Likewise. - * config/arm/t-arm-elf: Likewise. Handle dotprod extension. - -2018-01-08 Aaron Sawdey - - * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it - to generate rtl. - (cceq_ior_compare_complement): Give it a name so I can use it, and - change boolean_or_operator predicate to boolean_operator so it can - be used to generate a crand. - (eqne): New code iterator. - (bd/bd_neg): New code_attrs. - (_): New name for ctr_internal[12] now combined into - a single define_insn. - (tf_): A new insn pattern for the conditional form branch - decrement (bdnzt/bdnzf/bdzt/bdzf). - * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated - with the new names of the branch decrement patterns, and added the - names of the branch decrement conditional patterns. - -2018-01-08 Richard Biener - - PR tree-optimization/83563 - * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV - cache. - -2018-01-08 Richard Biener - - PR middle-end/83713 - * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks. - -2018-01-08 Richard Biener - - PR tree-optimization/83685 - * tree-ssa-pre.c (create_expression_by_pieces): Do not insert - references to abnormals. - -2018-01-08 Richard Biener - - PR lto/83719 - * dwarf2out.c (output_indirect_strings): Handle empty - skeleton_debug_str_hash. - (dwarf2out_early_finish): Index strings for -gsplit-dwarf. - -2018-01-08 Claudiu Zissulescu - - * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete. - (emit_store_direct): Likewise. - (arc_trampoline_adjust_address): Likewise. - (arc_asm_trampoline_template): New function. - (arc_initialize_trampoline): Use asm_trampoline_template. - (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define. - * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16. - * config/arc/arc.md (flush_icache): Delete pattern. - -2018-01-08 Claudiu Zissulescu - - * config/arc/arc-c.def (__ARC_UNALIGNED__): New define. - * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using - munaligned-access. - -2018-01-08 Sebastian Huber - - PR target/83681 - * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard - by not USED_FOR_TARGET. - (make_pass_resolve_sw_modes): Likewise. - -2018-01-08 Sebastian Huber - - * config/nios2/nios2.h (nios2_section_threshold): Guard by not - USED_FOR_TARGET. - -2018-01-08 Richard Biener - - PR middle-end/83580 - * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS. - -2018-01-08 Richard Biener - - PR middle-end/83517 - * match.pd ((t * 2) / 2) -> t): Add missing :c. - -2018-01-06 Aldy Hernandez - - PR middle-end/81897 - * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on - basic blocks with a small number of successors. - (convert_control_dep_chain_into_preds): Improve handling of - forwarder blocks. - (dump_predicates): Split apart into... - (dump_pred_chain): ...here... - (dump_pred_info): ...and here. - (can_one_predicate_be_invalidated_p): Add debugging printfs. - (can_chain_union_be_invalidated_p): Improve check for invalidation - of paths. - (uninit_uses_cannot_happen): Avoid unnecessary if - convert_control_dep_chain_into_preds yielded nothing. - -2018-01-06 Martin Sebor - - PR tree-optimization/83640 - * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid - subtracting negative offset from size. - (builtin_access::overlap): Adjust offset bounds of the access to fall - within the size of the object if possible. - -2018-01-06 Richard Sandiford - - PR rtl-optimization/83699 - * expmed.c (extract_bit_field_1): Restrict the vector usage of - extract_bit_field_as_subreg to cases in which the extracted - value is also a vector. - - * lra-constraints.c (process_alt_operands): Test for the equivalence - substitutions when detecting a possible reload cycle. - -2018-01-06 Jakub Jelinek - - PR debug/83480 - * toplev.c (process_options): Don't enable debug_nonbind_markers_p - by default if flag_selective_schedling{,2}. Formatting fixes. - - PR rtl-optimization/83682 - * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE - if it has non-VECTOR_MODE element mode. - (vec_duplicate_p): Likewise. - - PR middle-end/83694 - * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode - and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT. - -2018-01-05 Jakub Jelinek - - PR target/83604 - * config/i386/i386-builtin.def - (__builtin_ia32_vgf2p8affineinvqb_v64qi, - __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi): - Require also OPTION_MASK_ISA_AVX512F in addition to - OPTION_MASK_ISA_GFNI. - (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask, - __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require - OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition - to OPTION_MASK_ISA_GFNI. - (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require - OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and - OPTION_MASK_ISA_AVX512BW. - (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require - OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in - addition to OPTION_MASK_ISA_GFNI. - (__builtin_ia32_vgf2p8affineinvqb_v16qi, - __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi): - Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition - to OPTION_MASK_ISA_GFNI. - * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being - a requirement for all ISAs rather than any of them with a few - exceptions. - (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before - processing. - (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2 - bitmasks to be enabled with 3 exceptions, instead of requiring any - enabled ISA with lots of exceptions. - * config/i386/sse.md (vgf2p8affineinvqb_, - vgf2p8affineqb_, vgf2p8mulb_): - Change avx512bw in isa attribute to avx512f. - * config/i386/sgxintrin.h: Add license boilerplate. - * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F - to __AVX512F__ and __AVX512VL to __AVX512VL__. - (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128, - _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not - defined. - * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, - _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable - temporarily sse2 rather than sse if not enabled already. - - PR target/83604 - * config/i386/sse.md (VI248_VLBW): Rename to ... - (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW. - (vpshrd_, vpshld_, - vpshrdv_, vpshrdv__mask, vpshrdv__maskz, - vpshrdv__maskz_1, vpshldv_, vpshldv__mask, - vpshldv__maskz, vpshldv__maskz_1): Use VI248_AVX512VL - mode iterator instead of VI248_VLBW. - -2018-01-05 Jan Hubicka - - * ipa-fnsummary.c (record_modified_bb_info): Add OP. - (record_modified): Skip clobbers; add debug output. - (param_change_prob): Use sreal frequencies. - -2018-01-05 Richard Sandiford - - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't - punt for user-aligned variables. - -2018-01-05 Richard Sandiford - - * tree-chrec.c (chrec_contains_symbols): Return true for - POLY_INT_CST. - -2018-01-05 Sudakshina Das - - PR target/82439 - * simplify-rtx.c (simplify_relational_operation_1): Add simplifications - of (x|y) == x for BICS pattern. - -2018-01-05 Jakub Jelinek - - PR tree-optimization/83605 - * gimple-ssa-strength-reduction.c: Include tree-eh.h. - (find_candidates_dom_walker::before_dom_children): Ignore stmts that - can throw. - -2018-01-05 Sebastian Huber - - * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration. - * config/epiphany/rtems.h: New file. - -2018-01-04 Jakub Jelinek - Uros Bizjak - - PR target/83554 - * config/i386/i386.md (*hi3_1 splitter): Use - QIreg_operand instead of register_operand predicate. - * config/i386/i386.c (ix86_rop_should_change_byte_p, - set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in - comments instead of -fmitigate[-_]rop. - -2018-01-04 Rainer Orth - - PR bootstrap/81926 - * cgraphunit.c (symbol_table::compile): Switch to text_section - before calling assembly_start debug hook. - * run-rtl-passes.c (run_rtl_passes): Likewise. - Include output.h. - -2018-01-04 Richard Sandiford - - * tree-vrp.c (extract_range_from_binary_expr_1): Check - range_int_cst_p rather than !symbolic_range_p before calling - extract_range_from_multiplicative_op_1. - -2018-01-04 Jeff Law - - * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove - redundant test in assertion. - -2018-01-04 Richard Sandiford - - * doc/rtl.texi: Document machine_mode wrapper classes. - -2018-01-04 Richard Sandiford - - * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before - using tree_to_uhwi. - -2018-01-04 Richard Sandiford - - * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow - the VEC_PERM_EXPR fold to fail. - -2018-01-04 Jakub Jelinek - - PR debug/83585 - * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition - to switched_sections. - -2018-01-04 Richard Sandiford - - PR target/83680 - * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted - test for d.testing. - -2018-01-04 Peter Bergner - - PR target/83387 - * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not - allow arguments in FP registers if TARGET_HARD_FLOAT is false. - -2018-01-04 Jakub Jelinek - - PR debug/83666 - * cfgexpand.c (expand_debug_expr) : Punt if mode - is BLKmode and bitpos not zero or mode change is needed. - -2018-01-04 Richard Sandiford - - PR target/83675 - * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require - TARGET_VIS2. - -2018-01-04 Uros Bizjak - - PR target/83628 - * config/alpha/alpha.md (*sadd): Use ASHIFT - instead of MULT rtx. Update all corresponding splitters. - (*saddl_se): Ditto. - (*ssub): Ditto. - (*ssubl_se): Ditto. - (*cmp_sadd_di): Update split patterns. - (*cmp_sadd_si): Ditto. - (*cmp_sadd_sidi): Ditto. - (*cmp_ssub_di): Ditto. - (*cmp_ssub_si): Ditto. - (*cmp_ssub_sidi): Ditto. - * config/alpha/predicates.md (const23_operand): New predicate. - * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]: - Look for ASHIFT, not MULT inner operand. - (alpha_split_conditional_move): Update for *sadd change. - -2018-01-04 Martin Liska - - PR gcov-profile/83669 - * gcov.c (output_intermediate_file): Add version to intermediate - gcov file. - * doc/gcov.texi: Document new field 'version' in intermediate - file format. Fix location of '-k' option of gcov command. - -2018-01-04 Martin Liska - - PR ipa/82352 - * ipa-icf.c (sem_function::merge): Do not cross comdat boundary. - -2018-01-04 Jakub Jelinek - - * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi. - -2018-01-03 Martin Sebor - - PR tree-optimization/83655 - * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid - checking calls with invalid arguments. - -2018-01-03 Richard Sandiford - - * tree-vect-stmts.c (vect_get_store_rhs): New function. - (vectorizable_mask_load_store): Delete. - (vectorizable_call): Return false for masked loads and stores. - (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs - instead of gimple_assign_rhs1. - (vectorizable_load): Handle IFN_MASK_LOAD. - (vect_transform_stmt): Don't set is_store for call_vec_info_type. - -2018-01-03 Richard Sandiford - - * tree-vect-stmts.c (vect_build_gather_load_calls): New function, - split out from.., - (vectorizable_mask_load_store): ...here. - (vectorizable_load): ...and here. - -2018-01-03 Richard Sandiford - - * tree-vect-stmts.c (vect_build_all_ones_mask) - (vect_build_zero_merge_argument): New functions, split out from... - (vectorizable_load): ...here. - -2018-01-03 Richard Sandiford - - * tree-vect-stmts.c (vect_check_store_rhs): New function, - split out from... - (vectorizable_mask_load_store): ...here. - (vectorizable_store): ...and here. - -2018-01-03 Richard Sandiford - - * tree-vect-stmts.c (vect_check_load_store_mask): New function, - split out from... - (vectorizable_mask_load_store): ...here. - -2018-01-03 Richard Sandiford - - * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c - (vect_model_store_cost): Take a vec_load_store_type instead of a - vect_def_type. - * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h. - (vect_model_store_cost): Take a vec_load_store_type instead of a - vect_def_type. - (vectorizable_mask_load_store): Update accordingly. - (vectorizable_store): Likewise. - * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly. - -2018-01-03 Richard Sandiford - - * tree-vect-loop.c (vect_transform_loop): Stub out scalar - IFN_MASK_LOAD calls here rather than... - * tree-vect-stmts.c (vectorizable_mask_load_store): ...here. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * expmed.c (extract_bit_field_1): For vector extracts, - fall back to extract_bit_field_as_subreg if vec_extract - isn't available. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether - they are variable or constant sized. - (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized - slots for constant-sized data. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When - handling COND_EXPRs with boolean comparisons, try to find a better - basis for the mask type than the boolean itself. - -2018-01-03 Richard Sandiford - - * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default - is calculated and how it can be overridden. - * genmodes.c (max_bitsize_mode_any_mode): New variable. - (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE, - if defined. - (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE, - if nonzero. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate): - Remove the mode argument. - (aarch64_simd_valid_immediate): Remove the mode and inverse - arguments. - * config/aarch64/iterators.md (bitsize): New iterator. - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov, and3) - (ior3): Update calls to aarch64_output_simd_mov_immediate. - * config/aarch64/constraints.md (Do, Db, Dn): Update calls to - aarch64_simd_valid_immediate. - * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise. - (aarch64_reg_or_bic_imm): Likewise. - * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn - with an insn_type enum and msl with a modifier_type enum. - Replace element_width with a scalar_mode. Change the shift - to unsigned int. Add constructors for scalar_float_mode and - scalar_int_mode elements. - (aarch64_vect_float_const_representable_p): Delete. - (aarch64_can_const_movi_rtx_p) - (aarch64_simd_scalar_immediate_valid_for_move) - (aarch64_simd_make_constant): Update call to - aarch64_simd_valid_immediate. - (aarch64_advsimd_valid_immediate_hs): New function. - (aarch64_advsimd_valid_immediate): Likewise. - (aarch64_simd_valid_immediate): Remove mode and inverse - arguments. Rewrite to use the above. Use const_vec_duplicate_p - to detect duplicated constants and use aarch64_float_const_zero_rtx_p - and aarch64_float_const_representable_p on the result. - (aarch64_output_simd_mov_immediate): Remove mode argument. - Update call to aarch64_simd_valid_immediate and use of - simd_immediate_info. - (aarch64_output_scalar_simd_mov_immediate): Update call - accordingly. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION. - (mode_nunits): Likewise CONST_MODE_NUNITS. - * machmode.def (ADJUST_NUNITS): Document. - * genmodes.c (mode_data::need_nunits_adj): New field. - (blank_mode): Update accordingly. - (adj_nunits): New variable. - (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ - parameter. - (emit_mode_size_inline): Set need_bytesize_adj for all modes - listed in adj_nunits. - (emit_mode_nunits_inline): Set need_nunits_adj for all modes - listed in adj_nunits. Don't emit case statements for such modes. - (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS - and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to - nothing if adj_nunits is nonnull. - (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl. - (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit) - (emit_mode_fbit): Update use of print_maybe_const_decl. - (emit_move_size): Likewise. Treat the array as non-const - if adj_nunits. - (emit_mode_adjustments): Handle adj_nunits. - -2018-01-03 Richard Sandiford - - * machmode.def (VECTOR_MODES_WITH_PREFIX): Document. - * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro. - (VECTOR_MODES): Use it. - (make_vector_modes): Take the prefix as an argument. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * mode-classes.def (MODE_VECTOR_BOOL): New mode class. - * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true - for MODE_VECTOR_BOOL. - * machmode.def (VECTOR_BOOL_MODE): Document. - * genmodes.c (VECTOR_BOOL_MODE): New macro. - (make_vector_bool_mode): New function. - (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle - MODE_VECTOR_BOOL. - * lto-streamer-in.c (lto_input_mode_table): Likewise. - * rtx-vector-builder.c (rtx_vector_builder::find_cached_value): - Likewise. - * stor-layout.c (int_mode_for_mode): Likewise. - * tree.c (build_vector_type_for_mode): Likewise. - * varasm.c (output_constant_pool_2): Likewise. - * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and - CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx - for MODE_VECTOR_BOOL. - * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list - of mode class checks. - * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P - instead of a list of mode class checks. - (expand_vector_scalar_condition): Likewise. - (type_for_widest_vector_mode): Handle BImode as an inner mode. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_size): Change from unsigned short to - poly_uint16_pod. - (mode_to_bytes): Return a poly_uint16 rather than an unsigned short. - (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES, - or if measurement_type is not polynomial. - (fixed_size_mode::includes_p): Check for constant-sized modes. - * genmodes.c (emit_mode_size_inline): Make mode_size_inline - return a poly_uint16 rather than an unsigned short. - (emit_mode_size): Change the type of mode_size from unsigned short - to poly_uint16_pod. Use ZERO_COEFFS for the initializer. - (emit_mode_adjustments): Cope with polynomial vector sizes. - * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value - for GET_MODE_SIZE. - * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value - for GET_MODE_SIZE. - * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial. - * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise. - * caller-save.c (setup_save_areas): Likewise. - (replace_reg_with_saved_mem): Likewise. - * calls.c (emit_library_call_value_1): Likewise. - * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise. - * combine.c (simplify_set, make_extraction, simplify_shift_const_1) - (gen_lowpart_for_combine): Likewise. - * convert.c (convert_to_integer_1): Likewise. - * cse.c (equiv_constant, cse_insn): Likewise. - * cselib.c (autoinc_split, cselib_hash_rtx): Likewise. - (cselib_subst_to_values): Likewise. - * dce.c (word_dce_process_block): Likewise. - * df-problems.c (df_word_lr_mark_ref): Likewise. - * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise. - * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor) - (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor) - (rtl_for_decl_location): Likewise. - * emit-rtl.c (gen_highpart, widen_memory_access): Likewise. - * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise. - * expr.c (emit_group_load_1, clear_storage_hints): Likewise. - (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise. - (expand_expr_real_1): Likewise. - * function.c (assign_parm_setup_block_p, assign_parm_setup_block) - (pad_below): Likewise. - * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise. - * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise. - * ira.c (get_subreg_tracking_sizes): Likewise. - * ira-build.c (ira_create_allocno_objects): Likewise. - * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise. - (ira_sort_regnos_for_alter_reg): Likewise. - * ira-costs.c (record_operand_costs): Likewise. - * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn) - (resolve_simple_move): Likewise. - * lra-constraints.c (get_reload_reg, operands_match_p): Likewise. - (process_addr_reg, simplify_operand_subreg, curr_insn_transform) - (lra_constraints): Likewise. - (CONST_POOL_OK_P): Reject variable-sized modes. - * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare) - (add_pseudo_to_slot, lra_spill): Likewise. - * omp-low.c (omp_clause_aligned_alignment): Likewise. - * optabs-query.c (get_best_extraction_insn): Likewise. - * optabs-tree.c (expand_vec_cond_expr_p): Likewise. - * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise. - (expand_mult_highpart, valid_multiword_target_p): Likewise. - * recog.c (offsettable_address_addr_space_p): Likewise. - * regcprop.c (maybe_mode_change): Likewise. - * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise. - * regrename.c (build_def_use): Likewise. - * regstat.c (dump_reg_info): Likewise. - * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload) - (find_reloads, find_reloads_subreg_address): Likewise. - * reload1.c (eliminate_regs_1): Likewise. - * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise. - * simplify-rtx.c (avoid_constant_pool_reference): Likewise. - (simplify_binary_operation_1, simplify_subreg): Likewise. - * targhooks.c (default_function_arg_padding): Likewise. - (default_hard_regno_nregs, default_class_max_nregs): Likewise. - * tree-cfg.c (verify_gimple_assign_binary): Likewise. - (verify_gimple_assign_ternary): Likewise. - * tree-inline.c (estimate_move_cost): Likewise. - * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. - * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise. - (get_address_cost_ainc): Likewise. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise. - (vect_supportable_dr_alignment): Likewise. - * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. - (vectorizable_reduction): Likewise. - * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift) - (vectorizable_operation, vectorizable_load): Likewise. - * tree.c (build_same_sized_truth_vector_type): Likewise. - * valtrack.c (cleanup_auto_inc_dec): Likewise. - * var-tracking.c (emit_note_insn_var_location): Likewise. - * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a . - (ADDR_VEC_ALIGN): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_to_bits): Return a poly_uint16 rather than an - unsigned short. - (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES, - or if measurement_type is polynomial. - * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial. - * combine.c (make_extraction): Likewise. - * dse.c (find_shift_sequence): Likewise. - * dwarf2out.c (mem_loc_descriptor): Likewise. - * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise. - (extract_bit_field, extract_low_bits): Likewise. - * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise. - (optimize_bitfield_assignment_op, expand_assignment): Likewise. - (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise. - * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise. - * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise. - * reload.c (find_reloads): Likewise. - * reload1.c (alter_reg): Likewise. - * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise. - * targhooks.c (default_secondary_memory_needed_mode): Likewise. - * tree-if-conv.c (predicate_mem_writes): Likewise. - * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise. - * tree-vect-patterns.c (adjust_bool_pattern): Likewise. - * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. - * valtrack.c (dead_debug_insert_temp): Likewise. - * varasm.c (mergeable_constant_section): Likewise. - * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a . - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (expand_assignment): Cope with polynomial mode sizes - when assigning to a CONCAT. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_precision): Change from unsigned short to - poly_uint16_pod. - (mode_to_precision): Return a poly_uint16 rather than an unsigned - short. - (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES, - or if measurement_type is not polynomial. - (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case - in which the mode is already known to be a scalar_int_mode. - * genmodes.c (emit_mode_precision): Change the type of mode_precision - from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the - initializer. - * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value - for GET_MODE_PRECISION. - * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value - for GET_MODE_PRECISION. - * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION - as polynomial. - (try_combine, find_split_point, combine_simplify_rtx): Likewise. - (expand_field_assignment, make_extraction): Likewise. - (make_compound_operation_int, record_dead_and_set_regs_1): Likewise. - (get_last_value): Likewise. - * convert.c (convert_to_integer_1): Likewise. - * cse.c (cse_insn): Likewise. - * expr.c (expand_expr_real_1): Likewise. - * lra-constraints.c (simplify_operand_subreg): Likewise. - * optabs-query.c (can_atomic_load_p): Likewise. - * optabs.c (expand_atomic_load): Likewise. - (expand_atomic_store): Likewise. - * ree.c (combine_reaching_defs): Likewise. - * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise. - * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise. - * tree.h (type_has_mode_precision_p): Likewise. - * ubsan.c (instrument_si_overflow): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle - polynomial numbers of units. - (SET_TYPE_VECTOR_SUBPARTS): Likewise. - (valid_vector_subparts_p): New function. - (build_vector_type): Remove temporary shim and take the number - of units as a poly_uint64 rather than an int. - (build_opaque_vector_type): Take the number of units as a - poly_uint64 rather than an int. - * tree.c (build_vector_from_ctor): Handle polynomial - TYPE_VECTOR_SUBPARTS. - (type_hash_canon_hash, type_cache_hasher::equal): Likewise. - (uniform_vector_p, vector_type_mode, build_vector): Likewise. - (build_vector_from_val): If the number of units is variable, - use build_vec_duplicate_cst for constant operands and - VEC_DUPLICATE_EXPR otherwise. - (make_vector_type): Remove temporary is_constant (). - (build_vector_type, build_opaque_vector_type): Take the number of - units as a poly_uint64 rather than an int. - (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and - VECTOR_CST_NELTS. - * cfgexpand.c (expand_debug_expr): Likewise. - * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise. - (store_constructor, expand_expr_real_1): Likewise. - (const_scalar_mask_from_tree): Likewise. - * fold-const-call.c (fold_const_reduction): Likewise. - * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise. - (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise. - (native_encode_vector, vec_cst_ctor_to_array): Likewise. - (fold_relational_const): Likewise. - (native_interpret_vector): Likewise. Change the size from an - int to an unsigned int. - * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial - TYPE_VECTOR_SUBPARTS. - (gimple_fold_indirect_ref, gimple_build_vector): Likewise. - (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when - duplicating a non-constant operand into a variable-length vector. - * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial - TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS. - * ipa-icf.c (sem_variable::equals): Likewise. - * match.pd: Likewise. - * omp-simd-clone.c (simd_clone_subparts): Likewise. - * print-tree.c (print_node): Likewise. - * stor-layout.c (layout_type): Likewise. - * targhooks.c (default_builtin_vectorization_cost): Likewise. - * tree-cfg.c (verify_gimple_comparison): Likewise. - (verify_gimple_assign_binary): Likewise. - (verify_gimple_assign_ternary): Likewise. - (verify_gimple_assign_single): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. - (simplify_bitfield_ref, is_combined_permutation_identity): Likewise. - * tree-vect-data-refs.c (vect_permute_store_chain): Likewise. - (vect_grouped_load_supported, vect_permute_load_chain): Likewise. - (vect_shift_permute_load_chain): Likewise. - * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise. - (expand_vector_condition, optimize_vector_constructor): Likewise. - (lower_vec_perm, get_compute_type): Likewise. - * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. - (get_initial_defs_for_reduction, vect_transform_loop): Likewise. - * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise. - (vect_recog_mask_conversion_pattern): Likewise. - * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise. - (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise. - * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. - (get_group_load_store_type, vectorizable_mask_load_store): Likewise. - (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment) - (vectorizable_shift, vectorizable_operation, vectorizable_store) - (vectorizable_load, vect_is_simple_cond, vectorizable_comparison) - (supportable_widening_operation): Likewise. - (supportable_narrowing_operation): Likewise. - * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts): - Likewise. - * varasm.c (output_constant): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize - so that both the length == 3 and length != 3 cases set up their - own permute vectors. Add comments explaining why we know the - number of elements is constant. - (vect_permute_load_chain): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_nunits): Change from unsigned char to - poly_uint16_pod. - (ONLY_FIXED_SIZE_MODES): New macro. - (pod_mode::measurement_type, scalar_int_mode::measurement_type) - (scalar_float_mode::measurement_type, scalar_mode::measurement_type) - (complex_mode::measurement_type, fixed_size_mode::measurement_type): - New typedefs. - (mode_to_nunits): Return a poly_uint16 rather than an unsigned short. - (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES, - or if measurement_type is not polynomial. - * genmodes.c (ZERO_COEFFS): New macro. - (emit_mode_nunits_inline): Make mode_nunits_inline return a - poly_uint16. - (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod. - Use ZERO_COEFFS when emitting initializers. - * data-streamer.h (bp_pack_poly_value): New function. - (bp_unpack_poly_value): Likewise. - * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value - for GET_MODE_NUNITS. - * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value - for GET_MODE_NUNITS. - * tree.c (make_vector_type): Remove temporary shim and make - the real function take the number of units as a poly_uint64 - rather than an int. - (build_vector_type_for_mode): Handle polynomial nunits. - * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise. - * emit-rtl.c (const_vec_series_p_1): Likewise. - (gen_rtx_CONST_VECTOR): Likewise. - * fold-const.c (test_vec_duplicate_folding): Likewise. - * genrecog.c (validate_pattern): Likewise. - * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise. - * optabs-tree.c (expand_vec_cond_expr_p): Likewise. - * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise. - (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise. - (expand_vec_cond_expr, expand_mult_highpart): Likewise. - * rtlanal.c (subreg_get_info): Likewise. - * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. - (vect_grouped_load_supported): Likewise. - * tree-vect-generic.c (type_for_widest_vector_mode): Likewise. - * tree-vect-loop.c (have_whole_vector_shift): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - (simplify_const_unary_operation, simplify_binary_operation_1) - (simplify_const_binary_operation, simplify_ternary_operation) - (test_vector_ops_duplicate, test_vector_ops): Likewise. - (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode - instead of CONST_VECTOR_NUNITS. - * varasm.c (output_constant_pool_2): Likewise. - * rtx-vector-builder.c (rtx_vector_builder::build): Only include the - explicit-encoded elements in the XVEC for variable-length vectors. - -2018-01-03 Richard Sandiford - - * lra-constraints.c (curr_insn_transform): Use partial_subreg_p. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (fixed_size_mode): Declare. - (fixed_size_mode_pod): New typedef. - * builtins.h (target_builtins::x_apply_args_mode) - (target_builtins::x_apply_result_mode): Change type to - fixed_size_mode_pod. - * builtins.c (apply_args_size, apply_result_size, result_vector) - (expand_builtin_apply_args_1, expand_builtin_apply) - (expand_builtin_return): Update accordingly. - -2018-01-03 Richard Sandiford - - * cse.c (hash_rtx_cb): Hash only the encoded elements. - * cselib.c (cselib_hash_rtx): Likewise. - * expmed.c (make_tree): Build VECTOR_CSTs directly from the - CONST_VECTOR encoding. - -2018-01-03 Jakub Jelinek - Jeff Law - - PR target/83641 - * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For - noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop, - only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp - and add REG_CFA_ADJUST_CFA notes in that case to both insns. - - PR target/83641 - * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not - explicitly probe *sp in a noreturn function if there were any callee - register saves or frame pointer is needed. - -2018-01-03 Jakub Jelinek - - PR debug/83621 - * cfgexpand.c (expand_debug_expr): Return NULL if mode is - BLKmode for ternary, binary or unary expressions. - - PR debug/83645 - * var-tracking.c (delete_vta_debug_insn): New inline function. - (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just - insns from get_insns () to NULL instead of each bb separately. - Use delete_vta_debug_insn. No longer static. - (vt_debug_insns_local, variable_tracking_main_1): Adjust - delete_vta_debug_insns callers. - * rtl.h (delete_vta_debug_insns): Declare. - * final.c (rest_of_handle_final): Call delete_vta_debug_insns - instead of variable_tracking_main. - -2018-01-03 Martin Sebor - - PR tree-optimization/83603 - * calls.c (maybe_warn_nonstring_arg): Avoid accessing function - arguments past the endof the argument list in functions declared - without a prototype. - * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): - Avoid checking when arguments are null. - -2018-01-03 Martin Sebor - - PR c/83559 - * doc/extend.texi (attribute const): Fix a typo. - * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid - issuing -Wsuggest-attribute for void functions. - -2018-01-03 Martin Sebor - - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use - offset_int::from instead of wide_int::to_shwi. - (maybe_diag_overlap): Remove assertion. - Use HOST_WIDE_INT_PRINT_DEC instead of %lli. - * gimple-ssa-sprintf.c (format_directive): Same. - (parse_directive): Same. - (sprintf_dom_walker::compute_format_length): Same. - (try_substitute_return_value): Same. - -2018-01-03 Jeff Law - - PR middle-end/83654 - * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a - non-constant residual for zero at runtime and avoid probing in - that case. Reorganize code for trailing problem to mirror handling - of the residual. - -2018-01-03 Prathamesh Kulkarni - - PR tree-optimization/83501 - * tree-ssa-strlen.c (get_string_cst): New. - (handle_char_store): Call get_string_cst. - -2018-01-03 Martin Liska - - PR tree-optimization/83593 - * tree-ssa-strlen.c: Include tree-cfg.h. - (strlen_check_and_optimize_stmt): Add new argument cleanup_eh. - (strlen_dom_walker): Add new member variable m_cleanup_cfg. - (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg - to false. - (strlen_dom_walker::before_dom_children): Call - gimple_purge_dead_eh_edges. Dump tranformation with details - dump flags. - (strlen_dom_walker::before_dom_children): Update call by adding - new argument cleanup_eh. - (pass_strlen::execute): Return TODO_cleanup_cfg if needed. - -2018-01-03 Martin Liska - - PR ipa/83549 - * cif-code.def (VARIADIC_THUNK): New enum value. - * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic - thunks. - -2018-01-03 Jan Beulich - - * sse.md (mov_internal): Tighten condition for when to use - vmovdqu for TI and OI modes. - -2018-01-03 Jakub Jelinek - - Update copyright years. - -2018-01-03 Martin Liska - - PR ipa/83594 - * ipa-visibility.c (function_and_variable_visibility): Skip - functions with noipa attribure. - -2018-01-03 Jakub Jelinek +2019-01-01 Jakub Jelinek * gcc.c (process_command): Update copyright notice dates. * gcov-dump.c (print_version): Ditto. @@ -35307,996 +12,8 @@ * doc/gcov.texi: Ditto. * doc/install.texi: Ditto. * doc/invoke.texi: Ditto. - -2018-01-03 Richard Sandiford - - * vector-builder.h (vector_builder::m_full_nelts): Change from - unsigned int to poly_uint64. - (vector_builder::full_nelts): Update prototype accordingly. - (vector_builder::new_vector): Likewise. - (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts. - (vector_builder::operator ==): Likewise. - (vector_builder::finalize): Likewise. - * int-vector-builder.h (int_vector_builder::int_vector_builder): - Take the number of elements as a poly_uint64 rather than an - unsigned int. - * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change - from unsigned int to poly_uint64. - (vec_perm_indices::vec_perm_indices): Update prototype accordingly. - (vec_perm_indices::new_vector): Likewise. - (vec_perm_indices::length): Likewise. - (vec_perm_indices::nelts_per_input): Likewise. - (vec_perm_indices::input_nelts): Likewise. - * vec-perm-indices.c (vec_perm_indices::new_vector): Take the - number of elements per input as a poly_uint64 rather than an - unsigned int. Use the original encoding for variable-length - vectors, rather than clamping each individual element. - For the second and subsequent elements in each pattern, - clamp the step and base before clamping their sum. - (vec_perm_indices::series_p): Handle polynomial element counts. - (vec_perm_indices::all_in_range_p): Likewise. - (vec_perm_indices_to_tree): Likewise. - (vec_perm_indices_to_rtx): Likewise. - * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise. - * tree-vector-builder.c (tree_vector_builder::new_unary_operation) - (tree_vector_builder::new_binary_operation): Handle polynomial - element counts. Return false if we need to know the number - of elements at compile time. - * fold-const.c (fold_vec_perm): Punt if the number of elements - isn't known at compile time. - -2018-01-03 Richard Sandiford - - * vec-perm-indices.h (vec_perm_builder): Change element type - from HOST_WIDE_INT to poly_int64. - (vec_perm_indices::element_type): Update accordingly. - (vec_perm_indices::clamp): Handle polynomial element_types. - * vec-perm-indices.c (vec_perm_indices::series_p): Likewise. - (vec_perm_indices::all_in_range_p): Likewise. - (tree_to_vec_perm_builder): Check for poly_int64 trees rather - than shwi trees. - * vector-builder.h (vector_builder::stepped_sequence_p): Handle - polynomial vec_perm_indices element types. - * int-vector-builder.h (int_vector_builder::equal_p): Likewise. - * fold-const.c (fold_vec_perm): Likewise. - * optabs.c (shift_amt_for_vec_perm_mask): Likewise. - * tree-vect-generic.c (lower_vec_perm): Likewise. - * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise. - * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm - element type to HOST_WIDE_INT. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * alias.c (addr_side_effect_eval): Take the size as a poly_int64 - rather than an int. Use plus_constant. - (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints. - Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * calls.c (emit_call_1, expand_call): Change struct_value_size from - a HOST_WIDE_INT to a poly_int64. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * calls.c (load_register_parameters): Cope with polynomial - mode sizes. Require a constant size for BLKmode parameters - that aren't described by a PARALLEL. If BLOCK_REG_PADDING - forces a parameter to be padded at the lsb end in order to - fill a complete number of words, require the parameter size - to be ordered wrt UNITS_PER_WORD. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * reload1.c (spill_stack_slot_width): Change element type - from unsigned int to poly_uint64_pod. - (alter_reg): Treat mode sizes as polynomial. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * reload.c (complex_word_subreg_p): New function. - (reload_inner_reg_of_subreg, push_reload): Use it. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * lra-constraints.c (process_alt_operands): Reject matched - operands whose sizes aren't ordered. - (match_reload): Refer to this check here. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert - that the mode size is in the set {1, 2, 4, 8, 16}. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * var-tracking.c (adjust_mems): Treat mode sizes as polynomial. - Use plus_constant instead of gen_rtx_PLUS. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * config/cr16/cr16-protos.h (cr16_push_rounding): Declare. - * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to... - * config/cr16/cr16.c (cr16_push_rounding): ...this new function. - * config/h8300/h8300-protos.h (h8300_push_rounding): Declare. - * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to... - * config/h8300/h8300.c (h8300_push_rounding): ...this new function. - * config/i386/i386-protos.h (ix86_push_rounding): Declare. - * config/i386/i386.h (PUSH_ROUNDING): Move implementation to... - * config/i386/i386.c (ix86_push_rounding): ...this new function. - * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return - a poly_int64. - * config/m32c/m32c.c (m32c_push_rounding): Likewise. - * config/m68k/m68k-protos.h (m68k_push_rounding): Declare. - * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to... - * config/m68k/m68k.c (m68k_push_rounding): ...this new function. - * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare. - * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to... - * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function. - * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare. - * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to... - * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new - function. - * expr.c (emit_move_resolve_push): Treat the input and result - of PUSH_ROUNDING as a poly_int64. - (emit_move_complex_push, emit_single_push_insn_1): Likewise. - (emit_push_insn): Likewise. - * lra-eliminations.c (mark_not_eliminable): Likewise. - * recog.c (push_operand): Likewise. - * reload1.c (elimination_effects): Likewise. - * rtlanal.c (nonzero_bits1): Likewise. - * calls.c (store_one_arg): Likewise. Require the padding to be - known at compile time. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial. - Use plus_constant instead of gen_rtx_PLUS. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64 - rather than an int. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (expand_expr_real_1): Use tree_to_poly_uint64 - instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs - via stack temporaries. Treat the mode size as polynomial too. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (expand_expr_real_2): When handling conversions involving - unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than - multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE - as a poly_uint64 too. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * rtlanal.c (subreg_get_info): Handle polynomial mode sizes. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (can_change_dest_mode): Handle polynomial - REGMODE_NATURAL_SIZE. - * expmed.c (store_bit_field_1): Likewise. - * expr.c (store_constructor): Likewise. - * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes - and polynomial REGMODE_NATURAL_SIZE. - (gen_lowpart_common): Likewise. - * reginfo.c (record_subregs_of_mode): Likewise. - * rtlanal.c (read_modify_subreg_p): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial - numbers of elements. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * match.pd: Cope with polynomial numbers of vector elements. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets - in a POINTER_PLUS_EXPR. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * omp-simd-clone.c (simd_clone_subparts): New function. - (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS. - (ipa_simd_modify_function_body): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-generic.c (nunits_for_known_piecewise_op): New function. - (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS. - (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise. - (expand_vector_condition, vector_element): Likewise. - (subparts_gt): New function. - (get_compute_type): Use subparts_gt. - (count_type_subparts): Delete. - (expand_vector_operations_1): Use subparts_gt instead of - count_type_subparts. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-data-refs.c (vect_no_alias_p): Replace with... - (vect_compile_time_alias): ...this new function. Do the calculation - on poly_ints rather than trees. - (vect_prune_runtime_alias_test_list): Update call accordingly. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial - numbers of units. - (vect_schedule_slp_instance): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject - constant and extern definitions for variable-length vectors. - (vect_get_constant_vectors): Note that the number of units - is known to be constant. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-stmts.c (vectorizable_conversion): Treat the number - of units as polynomial. Choose between WIDE and NARROW based - on multiple_p. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-stmts.c (simd_clone_subparts): New function. - (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-stmts.c (vectorizable_call): Treat the number of - vectors as polynomial. Use build_index_vector for - IFN_GOMP_SIMD_LANE. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-stmts.c (get_load_store_type): Treat the number of - units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP - for variable-length vectors. - (vectorizable_mask_load_store): Treat the number of units as - polynomial, asserting that it is constant if the condition has - already been enforced. - (vectorizable_store, vectorizable_load): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-loop.c (vectorizable_live_operation): Treat the number - of units as polynomial. Punt if we can't tell at compile time - which vector contains the final result. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-loop.c (vectorizable_induction): Treat the number - of units as polynomial. Punt on SLP inductions. Use an integer - VEC_SERIES_EXPR for variable-length integer reductions. Use a - cast of such a series for variable-length floating-point - reductions. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (build_index_vector): Declare. - * tree.c (build_index_vector): New function. - * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number - of units as polynomial, forcibly converting it to a constant if - vectorizable_reduction has already enforced the condition. - (vect_create_epilog_for_reduction): Likewise. Use build_index_vector - to create a {1,2,3,...} vector. - (vectorizable_reduction): Treat the number of units as polynomial. - Choose vectype_in based on the largest scalar element size rather - than the smallest number of units. Enforce the restrictions - relied on above. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the - number of units as polynomial. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * target.h (vector_sizes, auto_vector_sizes): New typedefs. - * target.def (autovectorize_vector_sizes): Return the vector sizes - by pointer, using vector_sizes rather than a bitmask. - * targhooks.h (default_autovectorize_vector_sizes): Update accordingly. - * targhooks.c (default_autovectorize_vector_sizes): Likewise. - * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes): - Likewise. - * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise. - * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise. - * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise. - * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise. - * omp-general.c (omp_max_vf): Likewise. - * omp-low.c (omp_clause_aligned_alignment): Likewise. - * optabs-query.c (can_vec_mask_load_store_p): Likewise. - * tree-vect-loop.c (vect_analyze_loop): Likewise. - * tree-vect-slp.c (vect_slp_bb): Likewise. - * doc/tm.texi: Regenerate. - * tree-vectorizer.h (current_vector_size): Change from an unsigned int - to a poly_uint64. - * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take - the vector size as a poly_uint64 rather than an unsigned int. - (current_vector_size): Change from an unsigned int to a poly_uint64. - (get_vectype_for_scalar_type): Update accordingly. - * tree.h (build_truth_vector_type): Take the size and number of - units as a poly_uint64 rather than an unsigned int. - (build_vector_type): Add a temporary overload that takes - the number of units as a poly_uint64 rather than an unsigned int. - * tree.c (make_vector_type): Likewise. - (build_truth_vector_type): Take the number of units as a poly_uint64 - rather than an unsigned int. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (get_mask_mode): Take the number of units and length - as poly_uint64s rather than unsigned ints. - * targhooks.h (default_get_mask_mode): Update accordingly. - * targhooks.c (default_get_mask_mode): Likewise. - * config/i386/i386.c (ix86_get_mask_mode): Likewise. - * doc/tm.texi: Regenerate. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int. - * omp-general.c (omp_max_vf): Likewise. - * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf. - (expand_omp_simd): Handle polynomial safelen. - * omp-low.c (omplow_simd_context): Add a default constructor. - (omplow_simd_context::max_vf): Change from int to poly_uint64. - (lower_rec_simd_input_clauses): Update accordingly. - (lower_rec_input_clauses): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (vect_nunits_for_cost): New function. - * tree-vect-loop.c (vect_model_reduction_cost): Use it. - * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise. - (vect_analyze_slp_cost): Likewise. - * tree-vect-stmts.c (vect_model_store_cost): Likewise. - (vect_model_load_cost): Likewise. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1) - (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits - from an unsigned int * to a poly_uint64_pod *. - (calculate_unrolling_factor): New function. - (vect_analyze_slp_instance): Use it. Track polynomial max_nunits. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (_slp_instance::unrolling_factor): Change - from an unsigned int to a poly_uint64. - (_loop_vec_info::slp_unrolling_factor): Likewise. - (_loop_vec_info::vectorization_factor): Change from an int - to a poly_uint64. - (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX. - (vect_get_num_vectors): New function. - (vect_update_max_nunits, vect_vf_for_cost): Likewise. - (vect_get_num_copies): Use vect_get_num_vectors. - (vect_analyze_data_ref_dependences): Change max_vf from an int * - to an unsigned int *. - (vect_analyze_data_refs): Change min_vf from an int * to a - poly_uint64 *. - (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather - than an unsigned HOST_WIDE_INT. - * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr) - (vect_analyze_data_ref_dependence): Change max_vf from an int * - to an unsigned int *. - (vect_analyze_data_ref_dependences): Likewise. - (vect_compute_data_ref_alignment): Handle polynomial vf. - (vect_enhance_data_refs_alignment): Likewise. - (vect_prune_runtime_alias_test_list): Likewise. - (vect_shift_permute_load_chain): Likewise. - (vect_supportable_dr_alignment): Likewise. - (dependence_distance_ge_vf): Take the vectorization factor as a - poly_uint64 rather than an unsigned HOST_WIDE_INT. - (vect_analyze_data_refs): Change min_vf from an int * to a - poly_uint64 *. - * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take - vfm1 as a poly_uint64 rather than an int. Make the same change - for the returned bound_scalar. - (vect_gen_vector_loop_niters): Handle polynomial vf. - (vect_do_peeling): Likewise. Update call to - vect_gen_scalar_loop_niters and handle polynomial bound_scalars. - (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must - be constant. - * tree-vect-loop.c (vect_determine_vectorization_factor) - (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf. - (vect_get_known_peeling_cost): Likewise. - (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise. - (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise. - (vect_transform_loop): Likewise. Use the lowest possible VF when - updating the upper bounds of the loop. - (vect_min_worthwhile_factor): Make static. Return an unsigned int - rather than an int. - * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with - polynomial unroll factors. - (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise. - (vect_make_slp_decision): Likewise. - (vect_supported_load_permutation_p): Likewise, and polynomial - vf too. - (vect_analyze_slp_cost): Handle polynomial vf. - (vect_slp_analyze_node_operations): Likewise. - (vect_slp_analyze_bb_1): Likewise. - (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather - than an unsigned HOST_WIDE_INT. - * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store) - (vectorizable_load): Handle polynomial vf. - * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to - a poly_uint64. - (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * match.pd: Handle bit operations involving three constants - and try to fold one pair. - -2018-01-03 Richard Sandiford - - * tree-vect-loop-manip.c: Include gimple-fold.h. - (slpeel_make_loop_iterate_ntimes): Add step, final_iv and - niters_maybe_zero parameters. Handle other cases besides a step of 1. - (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter. - Add a path that uses a step of VF instead of 1, but disable it - for now. - (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var - and niters_no_overflow parameters. Update calls to - slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters. - Create a new SSA name if the latter choses to use a ste other - than zero, and return it via niters_vector_mult_vf_var. - * tree-vect-loop.c (vect_transform_loop): Update calls to - vect_do_peeling, vect_gen_vector_loop_niters and - slpeel_make_loop_iterate_ntimes. - * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling) - (vect_gen_vector_loop_niters): Update declarations after above changes. - -2018-01-02 Michael Meissner - - * config/rs6000/rs6000.md (floor2): Add support for IEEE - 128-bit round to integer instructions. - (ceil2): Likewise. - (btrunc2): Likewise. - (round2): Likewise. - -2018-01-02 Aaron Sawdey - - * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of - unaligned VSX load/store on P8/P9. - (expand_block_clear): Allow the use of unaligned VSX - load/store on P8/P9. - -2018-01-02 Bill Schmidt - - * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store): - New function. - (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a - swap associated with both a load and a store. - -2018-01-02 Andrew Waterman - - * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New. - * config/riscv/riscv.md (clear_cache): Use it. - -2018-01-02 Artyom Skrobov - - * web.c: Remove out-of-date comment. - -2018-01-02 Richard Sandiford - - * expr.c (fixup_args_size_notes): Check that any existing - REG_ARGS_SIZE notes are correct, and don't try to re-add them. - (emit_single_push_insn_1): Move stack_pointer_delta adjustment to... - (emit_single_push_insn): ...here. - -2018-01-02 Richard Sandiford - - * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt. - (const_vector_encoded_nelts): New function. - (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS. - (const_vector_int_elt, const_vector_elt): Declare. - * emit-rtl.c (const_vector_int_elt_1): New function. - (const_vector_elt): Likewise. - * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address - of CONST_VECTOR_ELT. - -2018-01-02 Richard Sandiford - - * expr.c: Include rtx-vector-builder.h. - (const_vector_mask_from_tree): Use rtx_vector_builder and operate - directly on the tree encoding. - (const_vector_from_tree): Likewise. - * optabs.c: Include rtx-vector-builder.h. - (expand_vec_perm_var): Use rtx_vector_builder and create a repeating - sequence of "u" values. - * vec-perm-indices.c: Include rtx-vector-builder.h. - (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate - directly on the vec_perm_indices encoding. - -2018-01-02 Richard Sandiford - - * doc/rtl.texi (const_vector): Describe new encoding scheme. - * Makefile.in (OBJS): Add rtx-vector-builder.o. - * rtx-vector-builder.h: New file. - * rtx-vector-builder.c: Likewise. - * rtl.h (rtx_def::u2): Add a const_vector field. - (CONST_VECTOR_NPATTERNS): New macro. - (CONST_VECTOR_NELTS_PER_PATTERN): Likewise. - (CONST_VECTOR_DUPLICATE_P): Likewise. - (CONST_VECTOR_STEPPED_P): Likewise. - (CONST_VECTOR_ENCODED_ELT): Likewise. - (const_vec_duplicate_p): Check for a duplicated vector encoding. - (unwrap_const_vec_duplicate): Likewise. - (const_vec_series_p): Check for a non-duplicated vector encoding. - Say that the function only returns true for integer vectors. - * emit-rtl.c: Include rtx-vector-builder.h. - (gen_const_vec_duplicate_1): Delete. - (gen_const_vector): Call gen_const_vec_duplicate instead of - gen_const_vec_duplicate_1. - (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding. - (gen_const_vec_duplicate): Use rtx_vector_builder. - (gen_const_vec_series): Likewise. - (gen_rtx_CONST_VECTOR): Likewise. - * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h. - (swap_const_vector_halves): Take an rtx pointer rather than rtx. - Build a new vector rather than modifying a CONST_VECTOR in-place. - (handle_special_swappables): Update call accordingly. - * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h. - (swap_const_vector_halves): Take an rtx pointer rather than rtx. - Build a new vector rather than modifying a CONST_VECTOR in-place. - (handle_special_swappables): Update call accordingly. - -2018-01-02 Richard Sandiford - - * simplify-rtx.c (simplify_const_binary_operation): Use - CONST_VECTOR_ELT instead of XVECEXP. - -2018-01-02 Richard Sandiford - - * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of - the selector elements to be different from the data elements - if the selector is a VECTOR_CST. - * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of - ssizetype for the selector. - -2018-01-02 Richard Sandiford - - * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p - before testing each element individually. - * tree-vect-generic.c (lower_vec_perm): Likewise. - -2018-01-02 Richard Sandiford - - * selftest.h (selftest::vec_perm_indices_c_tests): Declare. - * selftest-run-tests.c (selftest::run_tests): Call it. - * vector-builder.h (vector_builder::operator ==): New function. - (vector_builder::operator !=): Likewise. - * vec-perm-indices.h (vec_perm_indices::series_p): Declare. - (vec_perm_indices::all_from_input_p): New function. - * vec-perm-indices.c (vec_perm_indices::series_p): Likewise. - (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise. - * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder - instead of reading the VECTOR_CST directly. Detect whether both - vector inputs are the same before constructing the vec_perm_indices, - and update the number of inputs argument accordingly. Use the - utility functions added above. Only construct sel2 if we need to. - -2018-01-02 Richard Sandiford - - * optabs.c (expand_vec_perm_var): Use an explicit encoding for - the broadcast of the low byte. - (expand_mult_highpart): Use an explicit encoding for the permutes. - * optabs-query.c (can_mult_highpart_p): Likewise. - * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise. - * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. - (vectorizable_bswap): Likewise. - * tree-vect-data-refs.c (vect_grouped_store_supported): Use an - explicit encoding for the power-of-2 permutes. - (vect_permute_store_chain): Likewise. - (vect_grouped_load_supported): Likewise. - (vect_permute_load_chain): Likewise. - -2018-01-02 Richard Sandiford - - * vec-perm-indices.h (vec_perm_indices_to_tree): Declare. - * vec-perm-indices.c (vec_perm_indices_to_tree): New function. - * tree-ssa-forwprop.c (simplify_vector_constructor): Use it. - * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise. - * tree-vect-stmts.c (vectorizable_bswap): Likewise. - (vect_gen_perm_mask_any): Likewise. - -2018-01-02 Richard Sandiford - - * int-vector-builder.h: New file. - * vec-perm-indices.h: Include int-vector-builder.h. - (vec_perm_indices): Redefine as an int_vector_builder. - (auto_vec_perm_indices): Delete. - (vec_perm_builder): Redefine as a stand-alone class. - (vec_perm_indices::vec_perm_indices): New function. - (vec_perm_indices::clamp): Likewise. - * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h. - (vec_perm_indices::new_vector): New function. - (vec_perm_indices::new_expanded_vector): Update for new - vec_perm_indices class. - (vec_perm_indices::rotate_inputs): New function. - (vec_perm_indices::all_in_range_p): Operate directly on the - encoded form, without computing elided elements. - (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST - encoding. Update for new vec_perm_indices class. - * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for - the given vec_perm_builder. - (expand_vec_perm_var): Update vec_perm_builder constructor. - (expand_mult_highpart): Use vec_perm_builder instead of - auto_vec_perm_indices. - * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and - vec_perm_indices instead of auto_vec_perm_indices. Use a single - or double series encoding as appropriate. - * fold-const.c (fold_ternary_loc): Use vec_perm_builder and - vec_perm_indices instead of auto_vec_perm_indices. - * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. - * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. - (vect_permute_store_chain): Likewise. - (vect_grouped_load_supported): Likewise. - (vect_permute_load_chain): Likewise. - (vect_shift_permute_load_chain): Likewise. - * tree-vect-slp.c (vect_build_slp_tree_1): Likewise. - (vect_transform_slp_perm_load): Likewise. - (vect_schedule_slp_instance): Likewise. - * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. - (vectorizable_mask_load_store): Likewise. - (vectorizable_bswap): Likewise. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and - vec_perm_indices instead of auto_vec_perm_indices. Use - tree_to_vec_perm_builder to read the vector from a tree. - * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a - vec_perm_builder instead of a vec_perm_indices. - (have_whole_vector_shift): Use vec_perm_builder and - vec_perm_indices instead of auto_vec_perm_indices. Leave the - truncation to calc_vec_perm_mask_for_shift. - (vect_create_epilog_for_reduction): Likewise. - * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change - from auto_vec_perm_indices to vec_perm_indices. - (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm - instead of changing individual elements. - (aarch64_vectorize_vec_perm_const): Use new_vector to install - the vector in d.perm. - * config/arm/arm.c (expand_vec_perm_d::perm): Change - from auto_vec_perm_indices to vec_perm_indices. - (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm - instead of changing individual elements. - (arm_vectorize_vec_perm_const): Use new_vector to install - the vector in d.perm. - * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even): - Update vec_perm_builder constructor. - (rs6000_expand_interleave): Likewise. - * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise. - (rs6000_expand_interleave): Likewise. - -2018-01-02 Richard Sandiford - - * optabs-query.c (can_vec_perm_var_p): Check whether lowering - to qimode could truncate the indices. - * optabs.c (expand_vec_perm_var): Likewise. - -2018-01-02 Richard Sandiford - - * Makefile.in (OBJS): Add vec-perm-indices.o. - * vec-perm-indices.h: New file. - * vec-perm-indices.c: Likewise. - * target.h (vec_perm_indices): Replace with a forward class - declaration. - (auto_vec_perm_indices): Move to vec-perm-indices.h. - * optabs.h: Include vec-perm-indices.h. - (expand_vec_perm): Delete. - (selector_fits_mode_p, expand_vec_perm_var): Declare. - (expand_vec_perm_const): Declare. - * target.def (vec_perm_const_ok): Replace with... - (vec_perm_const): ...this new hook. - * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with... - (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook. - * doc/tm.texi: Regenerate. - * optabs.def (vec_perm_const): Delete. - * doc/md.texi (vec_perm_const): Likewise. - (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST. - * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than - expand_vec_perm for constant permutation vectors. Assert that - the mode of variable permutation vectors is the integer equivalent - of the mode that is being permuted. - * optabs-query.h (selector_fits_mode_p): Declare. - * optabs-query.c: Include vec-perm-indices.h. - (selector_fits_mode_p): New function. - (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const - is defined, instead of checking whether the vec_perm_const_optab - exists. Use targetm.vectorize.vec_perm_const instead of - targetm.vectorize.vec_perm_const_ok. Check whether the indices - fit in the vector mode before using a variable permute. - * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a - vec_perm_indices instead of an rtx. - (expand_vec_perm): Replace with... - (expand_vec_perm_const): ...this new function. Take the selector - as a vec_perm_indices rather than an rtx. Also take the mode of - the selector. Update call to shift_amt_for_vec_perm_mask. - Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab. - Use vec_perm_indices::new_expanded_vector to expand the original - selector into bytes. Check whether the indices fit in the vector - mode before using a variable permute. - (expand_vec_perm_var): Make global. - (expand_mult_highpart): Use expand_vec_perm_const. - * fold-const.c: Includes vec-perm-indices.h. - * tree-ssa-forwprop.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * tree-vect-generic.c: Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-slp.c: Likewise. - * tree-vect-stmts.c: Likewise. - * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const): - Delete. - * config/aarch64/aarch64-simd.md (vec_perm_const): Delete. - * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const) - (aarch64_vectorize_vec_perm_const_ok): Fuse into... - (aarch64_vectorize_vec_perm_const): ...this new function. - (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete. - (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. - * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete. - * config/arm/vec-common.md (vec_perm_const): Delete. - * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete. - (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. - (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge - into... - (arm_vectorize_vec_perm_const): ...this new function. Explicitly - check for NEON modes. - * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete. - * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const): Delete. - * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment. - (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge - into... - (ix86_vectorize_vec_perm_const): ...this new function. Incorporate - the old VEC_PERM_CONST conditions. - * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete. - * config/ia64/vect.md (vec_perm_const): Delete. - * config/ia64/ia64.c (ia64_expand_vec_perm_const) - (ia64_vectorize_vec_perm_const_ok): Merge into... - (ia64_vectorize_vec_perm_const): ...this new function. - * config/mips/loongson.md (vec_perm_const): Delete. - * config/mips/mips-msa.md (vec_perm_const): Delete. - * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete. - * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete. - * config/mips/mips.c (mips_expand_vec_perm_const) - (mips_vectorize_vec_perm_const_ok): Merge into... - (mips_vectorize_vec_perm_const): ...this new function. - * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete. - * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete. - * config/powerpcspe/spe.md (vec_perm_constv2si): Delete. - * config/powerpcspe/vsx.md (vec_perm_const): Delete. - * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const) - (rs6000_expand_vec_perm_const): Delete. - * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): - Delete. - (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. - (altivec_expand_vec_perm_const_le): Take each operand individually. - Operate on constant selectors rather than rtxes. - (altivec_expand_vec_perm_const): Likewise. Update call to - altivec_expand_vec_perm_const_le. - (rs6000_expand_vec_perm_const): Delete. - (rs6000_vectorize_vec_perm_const_ok): Delete. - (rs6000_vectorize_vec_perm_const): New function. - (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of - an element count and rtx array. - (rs6000_expand_extract_even): Update call accordingly. - (rs6000_expand_interleave): Likewise. - * config/rs6000/altivec.md (vec_perm_constv16qi): Delete. - * config/rs6000/paired.md (vec_perm_constv2sf): Delete. - * config/rs6000/vsx.md (vec_perm_const): Delete. - * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const) - (rs6000_expand_vec_perm_const): Delete. - * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete. - (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. - (altivec_expand_vec_perm_const_le): Take each operand individually. - Operate on constant selectors rather than rtxes. - (altivec_expand_vec_perm_const): Likewise. Update call to - altivec_expand_vec_perm_const_le. - (rs6000_expand_vec_perm_const): Delete. - (rs6000_vectorize_vec_perm_const_ok): Delete. - (rs6000_vectorize_vec_perm_const): New function. Remove stray - reference to the SPE evmerge intructions. - (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of - an element count and rtx array. - (rs6000_expand_extract_even): Update call accordingly. - (rs6000_expand_interleave): Likewise. - * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of... - * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this - new function. - (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. - -2018-01-02 Richard Sandiford - - * optabs.c (expand_vec_perm_1): Assert that SEL has an integer - vector mode and that that mode matches the mode of the data - being permuted. - (expand_vec_perm): Split handling of non-CONST_VECTOR selectors - out into expand_vec_perm_var. Do all CONST_VECTOR handling here, - directly using expand_vec_perm_1 when forcing selectors into - registers. - (expand_vec_perm_var): New function, split out from expand_vec_perm. - -2018-01-02 Richard Sandiford - - * optabs-query.h (can_vec_perm_p): Delete. - (can_vec_perm_var_p, can_vec_perm_const_p): Declare. - * optabs-query.c (can_vec_perm_p): Split into... - (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions. - (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a - particular selector is valid. - * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. - * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. - (vect_grouped_load_supported): Likewise. - (vect_shift_permute_load_chain): Likewise. - * tree-vect-slp.c (vect_build_slp_tree_1): Likewise. - (vect_transform_slp_perm_load): Likewise. - * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. - (vectorizable_bswap): Likewise. - (vect_gen_perm_mask_checked): Likewise. - * fold-const.c (fold_ternary_loc): Likewise. Don't take - implementations of variable permutation vectors into account - when deciding which selector to use. - * tree-vect-loop.c (have_whole_vector_shift): Don't check whether - vec_perm_const_optab is supported; instead use can_vec_perm_const_p - with a false third argument. - * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p - to test whether the constant selector is valid and can_vec_perm_var_p - to test whether a variable selector is valid. - -2018-01-02 Richard Sandiford - - * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *. - * optabs-query.c (can_vec_perm_p): Likewise. - * fold-const.c (fold_vec_perm): Take a const vec_perm_indices & - instead of vec_perm_indices. - * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise, - (vect_gen_perm_mask_checked): Likewise, - * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise, - (vect_gen_perm_mask_checked): Likewise, - -2018-01-02 Richard Sandiford - - * optabs-query.h (qimode_for_vec_perm): Declare. - * optabs-query.c (can_vec_perm_p): Split out qimode search to... - (qimode_for_vec_perm): ...this new function. - * optabs.c (expand_vec_perm): Use qimode_for_vec_perm. - -2018-01-02 Aaron Sawdey - - * rtlanal.c (canonicalize_condition): Return 0 if final rtx - does not have a conditional at the top. - -2018-01-02 Richard Biener - - * ipa-inline.c (big_speedup_p): Fix expression. - -2018-01-02 Jan Hubicka - - PR target/81616 - * config/i386/x86-tune-costs.h: Increase cost of integer load costs - for generic 4->6. - -2018-01-02 Jan Hubicka - - PR target/81616 - Generic tuning. - * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17, - cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14 - and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase - cond_taken_branch_cost 3->4. - -2018-01-01 Jakub Jelinek - - PR tree-optimization/83581 - * tree-loop-distribution.c (pass_loop_distribution::execute): Return - TODO_cleanup_cfg if any changes have been made. - - PR middle-end/83608 - * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of - convert_modes if target mode has the right side, but different mode - class. - - PR middle-end/83609 - * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg - last argument when extracting from CONCAT. If either from_real or - from_imag is NULL, use expansion through memory. If result is not - a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg - the parts directly to inner mode, if even that fails, use expansion - through memory. - - PR middle-end/83623 - * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT, - check for bswap in mode rather than HImode and use that in expand_unop - too. -Copyright (C) 2018 Free Software Foundation, Inc. +Copyright (C) 2019 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/ChangeLog-2018 b/gcc/ChangeLog-2018 new file mode 100644 index 00000000000..ced3782493a --- /dev/null +++ b/gcc/ChangeLog-2018 @@ -0,0 +1,36303 @@ +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 + type+fuzzy. + (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 + d_target_objs. + (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 + bfield. + +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 + get_functions_at_location. + +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/aarch64-tune.md: 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 + parametrs. + +2018-12-24 Jan Hubicka + + PR lto/88140 + * tree.c (fld_simplified_type): Temporarily disable array + simplification. + +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 + + * configure.ac (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/vector.md ("floatv2div2df2", "floatunsv2div2df2") + ("fix_truncv2dfv2di2", "fixuns_truncv2dfv2di2"): New pattern + definitions. + +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) : Minor tweak. + +2018-12-21 Jakub Jelinek + + PR target/88522 + * config/i386/sse.md (*avx512pf_gatherpfsf_mask, + *avx512pf_gatherpfdf_mask, *avx512pf_scatterpfsf_mask, + *avx512pf_scatterpfdf_mask): Use %X5 instead of %5 for + -masm=intel. + (gatherq_mode): Remove mode iterator. + (*avx512f_gathersi, *avx512f_gathersi_2): Use X instead + of . + (*avx512f_gatherdi): Use X instead of . + (*avx512f_gatherdi_2, *avx512f_scattersi, + *avx512f_scatterdi): Use %X5 for -masm=intel. + + PR rtl-optimization/88563 + * expr.c (expand_expr_real_2) : 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/i386.md (sinhxf2): New expander. + (sinh2): Ditto. + (coshxf2): Ditto. + (cosh2): Ditto. + (tanhxf2): Ditto. + (tanh2): 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/sse.md (vaesdec_, vaesdeclast_): 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/iterators.md (SVE_INT_UNARY, fp_int_op): Add abs. + (SVE_FP_UNARY): Sort. + +2018-12-20 Richard Sandiford + + * config/aarch64/aarch64-sve.md (*cond__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 + parts. + (mem_ref_alloc): Take ao_ref parameter, initialize ref_canonical + member. + (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 + + * config.gcc: Enable TARGET_DEFAULT_ASYNC_UNWIND_TABLES on + aarch64*-*-freebsd* + +2018-12-19 Uros Bizjak + + * config/i386/i386.md (SWI1248_AVX512BWDQ_64): Rename from + SWI1248_AVX512BWDQ2_64. Unconditionally enable HImode. + (*cmp_ccz_1): Emit kortest instead of ktest insn. + Use SWI1248_AVX512BWDQ_64 mode iterator and enable only for + TARGET_AVX512F. + +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 + libgcc/config/arm/t-arm. + * 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 + directive. + +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 + c/c-typeck.c. + (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 + c/c-typeck.c. + (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 + wrappers. + (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 + wrappers. + (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 + using TREE_OVERFLOW. + (operand_equal_p): Strip any location wrappers. + (integer_valued_real_p): Strip any location wrapper. + * selftest-run-tests.c (selftest::run_tests): Call + selftest::convert_c_tests. + * 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 + targets. + * 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.md (*vsx_extract___load): + Require TARGET_POWERPC64. + +2018-12-19 Richard Biener + + PR tree-optimization/88533 + Revert + 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 + ssa-iterators.h. + (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 + MAX. + +2018-12-19 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_gen_wcast): Rename as + nvptx_gen_warp_bcast. + (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_gen_warp_bcast. + (nvptx_vpropagate): Rename to nvptx_warp_propagate, update call to + nvptx_propagate. + (wprop_gen): Rename to shared_prop_gen, update call to + nvptx_gen_shared_bcast. + (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_get_shared_red_addr. + (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 + oacc_bcast_size. + (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 + oacc_bcast_align. + (wprop_gen): Update type of data_ and usage of oacc_bcast_align. + (nvptx_wpropagate): Update type of data and usage of + oacc_bcast_{sym,size}. + (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.md (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_wsync. + (nvptx_process_pars): Likewise. + +2018-12-19 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_previous_fndecl): Declare. + (nvptx_set_current_function): New function. + (TARGET_SET_CURRENT_FUNCTION): Define. + +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 + non_reload_pseudos. + +2018-12-18 Jakub Jelinek + + PR target/88464 + * config/i386/i386-builtin-types.def + (VOID_FTYPE_PDOUBLE_QI_V8SI_V4DF_INT, + VOID_FTYPE_PFLOAT_QI_V4DI_V8SF_INT, + VOID_FTYPE_PLONGLONG_QI_V8SI_V4DI_INT, + VOID_FTYPE_PINT_QI_V4DI_V8SI_INT, + VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT, + VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT, + VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT, + VOID_FTYPE_PINT_QI_V2DI_V4SI_INT): New builtin types. + * config/i386/i386.c (enum ix86_builtins): Add + IX86_BUILTIN_SCATTERALTSIV4DF, IX86_BUILTIN_SCATTERALTDIV8SF, + IX86_BUILTIN_SCATTERALTSIV4DI, IX86_BUILTIN_SCATTERALTDIV8SI, + IX86_BUILTIN_SCATTERALTSIV2DF, IX86_BUILTIN_SCATTERALTDIV4SF, + IX86_BUILTIN_SCATTERALTSIV2DI and IX86_BUILTIN_SCATTERALTDIV4SI. + (ix86_init_mmx_sse_builtins): Fix up names of IX86_BUILTIN_GATHERALT*, + IX86_BUILTIN_GATHER3ALT* and IX86_BUILTIN_SCATTERALT* builtins to + match the IX86_BUILTIN codes. Build IX86_BUILTIN_SCATTERALTSIV4DF, + IX86_BUILTIN_SCATTERALTDIV8SF, IX86_BUILTIN_SCATTERALTSIV4DI, + IX86_BUILTIN_SCATTERALTDIV8SI, IX86_BUILTIN_SCATTERALTSIV2DF, + IX86_BUILTIN_SCATTERALTDIV4SF, IX86_BUILTIN_SCATTERALTSIV2DI and + IX86_BUILTIN_SCATTERALTDIV4SI decls. + (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) : 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) + : Check for VECTOR_MODE_P + rather than non-VOIDmode. + * config/i386/sse.md (vec_pack_trunc_qi, vec_pack_trunc_): + 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 + HWI_COMPUTABLE. + (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/vsx.md (nW): New mode iterator. + (vsx_mov_64bit): Use it. Remove redundant GPR 0/-1 alternative. + Update length attribute for (, ) alternative. + (vsx_mov_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. + (TARGET_ATTRIBUTE_TABLE): New define. + * config/aarch64/aarch64.h (EPILOGUE_USES): Redefine. + (FP_SIMD_SAVED_REGNUM_P): New macro. + * config/aarch64/aarch64.md (simple_return): New define_expand. + (load_pair_dw_tftf): New instruction. + (store_pair_dw_tftf): Ditto. + (loadwb_pair_): Ditto. + (storewb_pair_): 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/i386.md (asinhxf2): New expander. + (asinh2): Ditto. + (acoshxf2): Ditto. + (acosh2): Ditto. + (atanhxf2): Ditto. + (atanh2): 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 + + * 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. + * Makefile.in (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. + * params.def (PARAM_LOOP_VERSIONING_GROUP_SIZE) + (PARAM_LOOP_VERSIONING_MAX_INNER_INSNS) + (PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS): New parameters. + * 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 + range_includes_p. + * tree-vrp.c (range_includes_p): New function, generalizing... + (range_includes_zero_p): ...this. + * tree-pass.h (make_pass_loop_versioning): Declare. + * gimple-loop-versioning.cc: 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 + size_time_table. + (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 + predicate. + +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) + : Use lowpart_subreg for masks. + : 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 + parameters. + (cgraph_build_static_cdtor): Update. + (build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor + callsed. + +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/sse.md (UNSPEC_SFIXUPIMM): New unspec enumerator. + (avx512f_sfixupimm): Use it + instead of UNSPEC_FIXUPIMM. + + PR rtl-optimization/88478 + * cselib.c (cselib_record_sets): Move sets[i].src_elt tests + after REG_P (dest) test. + +2018-12-14 Martin Sebor + + PR tree-optimization/88372 + * calls.c (maybe_warn_alloc_args_overflow): Handle function pointers. + * tree-object-size.c (alloc_object_size): Same. Simplify. + * doc/extend.texi (Object Size Checking): Update. + (Other Builtins): Add __builtin_object_size. + (Common Type Attributes): Add alloc_size. + (Common Variable Attributes): Ditto. + +2018-12-14 Martin Sebor + + PR rtl-optimization/87096 + * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Avoid + folding calls whose bound may exceed INT_MAX. Diagnose bound ranges + that exceed the limit. + +2018-12-14 Martin Sebor + + PR web/79738 + * doc/extend.texi (attribute const, pure): Clarify. + +2018-12-14 H.J. Lu + + * config/i386/i386.c (rest_of_insert_endbranch): Insert ENDBR + at the function entry only when -mmanual-endbr isn't used or + there is cf_check function attribute. + (ix86_attribute_table): Add cf_check. + * config/i386/i386.opt: Add -mmanual-endbr. + * doc/extend.texi: Document cf_check attribute. + * doc/invoke.texi: Document -mmanual-endbr. + +2018-12-14 Thomas Schwinge + Cesar Philippidis + + * omp-offload.c (inform_oacc_loop): New function. + (execute_oacc_device_lower): Use it to display loop parallelism. + +2018-12-14 Jakub Jelinek + + PR c++/82294 + PR c++/87436 + * expr.h (categorize_ctor_elements): Add p_unique_nz_elts argument. + * expr.c (categorize_ctor_elements_1): Likewise. Compute it like + p_nz_elts, except don't multiply it by mult. Adjust recursive call. + Fix up COMPLEX_CST handling. + (categorize_ctor_elements): Add p_unique_nz_elts argument, initialize + it and pass it through to categorize_ctor_elements_1. + (mostly_zeros_p, all_zeros_p): Adjust categorize_ctor_elements callers. + * gimplify.c (gimplify_init_constructor): Likewise. Don't force + ctor into readonly data section if num_unique_nonzero_elements is + smaller or equal to 1/8 of num_nonzero_elements and size is >= 64 + bytes. + +2018-12-14 Thomas Preud'homme + + * config/arm/arm.md (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 + insn. + (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/constraints.md (Pz): Document existing constraint. + (Ha): Define constraint. + (Tu): Likewise. + * config/arm/predicates.md (hard_sf_operand): New predicate. + (hard_df_operand): Likewise. + * config/arm/thumb2.md (thumb2_movsi_insn): Split if + -mslow-flash-data and constant would be loaded by literal pool. + * constant/arm/vfp.md (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 + reload. + +2018-12-14 Uros Bizjak + + PR target/88474 + * internal-fn.def (HYPOT): New. + * optabs.def (hypot_optab): New. + * config/i386/i386.md (hypot3): 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. + * doc/tm.texi.in (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 + lra_register_new_scratch_op. + * 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 + variable. + +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 + edge_info. + (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 + non-NULL. + (rs6000_arg_partial_bytes): Same. + +2018-12-13 Jason Merrill + + * gdbinit.in (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 + s390_vcdlgb. + +2018-12-13 Andreas Krebbel + + * config/s390/vx-builtins.md ("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 + behavior. + +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 + cascadelake. + * config/i386/i386.c (Add m_CASCADELAKE): New. + (processor_cost_table): Add cascadelake. + (get_builtin_code_for_version): Handle cascadelake. + * config/i386/i386.h (TARGET_CASCADELAKE, PROCESSOR_CASCADELAKE): New. + (PTA_CASCADELAKE): Ditto. + * doc/invoke.texi: Add -march=cascadelake. + +2018-12-13 Jakub Jelinek + + PR target/88465 + * config/i386/i386.md (*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/sse.md (VI1248_AVX512VLBW, AVX512ZEXTMASK): New + mode iterators. + (_testm3, + _testnm3): Merge patterns + with VI12_AVX512VL and VI48_AVX512VL iterators into ones with + VI1248_AVX512VLBW iterator. + (*_testm3_zext, + *_testm3_zext_mask, + *_testnm3_zext, + *_testnm3_zext_mask): New + define_insns. + + PR target/88461 + * config/i386/i386.md (*zero_extendsidi2, zero_extenddi2, + *zero_extendsi2, *zero_extendqihi2): Add =*k, *km alternatives. + +2018-12-12 Tom de Vries + Jakub Jelinek + + * omp-builtins.def (BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME, + BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME): Fix up + 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 + defined. + +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/sparc.md (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/rs6000.md (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/darwin.md (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/rs6000.md (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. + (STACK_DYNAMIC_OFFSET): Likewise. + +2018-12-11 Jakub Jelinek + + PR target/88425 + * config/i386/i386.md (*x86_movcc_0_m1_neg_leu): + 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 + change. + * 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/iterators.md (sizem1): Add sizes for SFmode and DFmode. + (Vbtype): Add SFmode mapping. + * config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete. + (copysign3): New expand pattern. + (copysign3_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 + target. + +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. + * config.host (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 libgcc-unwind.map if + ENABLE_SHARED_LIBGCC. + +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 + d_target_objs. + * 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 + lhs. + +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) : Call above + function with FAKE parameter set to true. + : 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): + Add SVE_NOT_IMPLEMENTED value. + * config/aarch64/aarch64-protos.h (struct tune_params): Add sve_width + field. + * 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. + (TARGET_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 + NO_REGS. + +2018-12-07 Richard Sandiford + + * config/aarch64/aarch64-sve.md (*mul3, *v3): + Split the patterns after reload if we don't need the predicate + operand. + (*post_ra_mul3, *post_ra_v3): New patterns. + +2018-12-07 Richard Sandiford + + * config/aarch64/iterators.md (SVE_UNPRED_FP_BINARY): New code + iterator. + (sve_fp_op): Handle minus and mult. + * config/aarch64/aarch64-sve.md (*add3, *sub3) + (*mul3): Split the patterns after reload if we don't + need the predicate operand. + (*post_ra_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 + change). + (_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 + default. + * 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 + bitmap_release. + * 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 + default. + +2018-12-05 Uros Bizjak + + * dwarf2out.c (field_byte_offset): Remove + #ifdef PCC_BITFIELD_TYPE_MATTERS check. + +2018-12-05 Richard Biener + Martin Sebor + + PR c/87028 + * calls.c (get_attr_nonstring_decl): Avoid setting *REF to + SSA_NAME_VAR. + * gcc/gimple-low.c (lower_stmt): Fold builtin calls here. + * gimplify (maybe_fold_stmt): Avoid folding builtin calls. + +2018-12-05 Iain Sandoe + + * configure.ac (gcc_cv_otool): Set. + * configure: Regenerate. + +2018-12-05 Uros Bizjak + + * config/i386/cygming.h (PCC_BITFIELD_TYPE_MATTERS): Remove. + (GROUP_BITFIELDS_BY_ALIGN): Ditto. + +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 + fixes. + (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 + failures. + (print_operand): Use REG_P instead of GET_CODE == REG. + : Also check CR_REGNO_P (REGNO (x)). + : Likewise. Remove GET_MODE check. + * config/rs6000/rs6000.md (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/sse.md (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/h8300.md (qi3_1): Add gcc_unreachable to keep + warnings quiet. + + * config/h8300/h8300.md (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 + anchors. + (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 + gcc_unreachable. + +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 + pass_postreload_cse. + * 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/sse.md (*vec_concatv4sf_0, *vec_concatv4si_0): New insns. + +2018-12-02 Jeff Law + + * config/h8300/h8300.md (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, + OMP_CLAUSE_TASK_REDUCTION and OMP_CLAUSE__SIMT_ clauses. + (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 + boundaries. + +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. + (RZ_BUFFER_SIZE): New. + (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/predicates.md (easy_fp_constant): Avoid long + dependent insn sequences. + * config/rs6000/rs6000.c (num_insns_constant): Support long + double constants. + * config/rs6000/rs6000.md (mov_softfloat ): 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 + TYPE_MIN/MAX_VALUE. + +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. + : 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.md (*_movmsk_lt, + *_movmsk_zext_lt, + *_movmsk_shift, + *_movmsk_zext_shift, + *_pmovmskb_lt, *_pmovmskb_zext_lt): New + define_insn_and_split patterns. + + PR target/54700 + * config/i386/sse.md + (*_blendv_lt, + *_blendv_ltint, + *_pblendvb_lt): Change define_insn into + define_insn_and_split. + +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/mmx.md (*mov_internal): Correct + TARGET_INTER_UNIT_MOVES_FROM_VEC and TARGET_INTER_UNIT_MOVES_TO_VEC + 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 + flag_live_patching. + +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/sse.md (ssebytemode): Add V16SI, V8SI and V4SI entries. + (ssefltmodesuffix, ssefltvecmode): New define_mode_attrs. + (*_blendv_lt, + *_blendv_ltint, + *_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 + clone_function_name_numbered. + +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/arm-cpus.in (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/rs6000.md (movdi_internal64): Correct lengths. + +2018-11-29 Alan Modra + + * config/rs6000/predicates.md (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 + const_double. + (rs6000_legitimate_constant_p): Likewise. + (output_toc): Formatting, use CONST_DOUBLE_P. + +2018-11-29 Alan Modra + + * config/rs6000/constraints.md (G, H): Comment on purpose of + constraint. Correct mode comments and "G" mode test. + * config/rs6000/rs6000.md (movdi_internal32): Remove "GH" from + alternative handling "F". Add length attr. Formatting. + (mov_softfloat ): Delete "GH" from + alternative, and move "F" to separate alternative. Correct + insn lengths. + +2018-11-29 Alan Modra + + * config/rs6000/predicates.md (easy_vector_constant): Don't call + easy_fp_constant. + +2018-11-29 Alan Modra + + * config.in (HAVE_AS_PLTSEQ): Add. + * config/rs6000/predicates.md (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 ): Handle UNSPEC_PLTSEQ. + (rs6000_indirect_call_template_1): Emit .reloc directives for + UNSPEC_PLTSEQ calls. + (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/rs6000.md (UNSPEC_PLTSEQ, UNSPEC_PLT16_HA, + UNSPEC_PLT16_LO): New. + (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. + * configure.ac: Check for gas plt sequence marker support. + * configure: Regenerate. + +2018-11-29 Alan Modra + + * config/rs6000/predicates.md (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 + handling. + (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/rs6000.md: 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/darwin.md (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/rs6000.md (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/rs6000.md (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/rs6000.md (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/rs6000.md (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/constraints.md: Add "C" constraint for call insns. + * config/h8300/h8300.md (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/predicates.md (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 + insns. + (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/sse.md (sse4_1_blendv): 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 + here. + (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 + `mno-fix-r5900'. + * 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) : Use + output_operand_lossage instead of gcc_assert. + : Likewise. + : Likewise. + : 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 + type. + * 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 ): 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 + locations. + (selftest::assert_impl_location_eq): New function. + (ASSERT_IMPL_LOCATION_EQ): New macro. + (selftest::test_impl_location): Update to use + ASSERT_IMPL_LOCATION_EQ. + (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 + locations. + (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.cc (opt_problem::opt_problem): Update for change to + dump_loc. + * optinfo-emit-json.cc + (selftest::test_building_json_from_dump_calls): Convert "loc" from + dump_location_t to dump_user_location_t. + * optinfo.cc (optinfo::emit_for_opt_problem): Update for change in + dump_loc_immediate. + * profile.c (compute_branch_probabilities): Update for change to + dump_printf_loc. + * selftest.h (ASSERT_STR_CONTAINS_AT): New macro. + * tree-vect-slp.c (vect_print_slp_tree): Update for change to + dump_printf_loc. + +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), + (LINK_GCC_C_SEQUENCE_SPEC): Undef. + (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), + (LINK_GCC_C_SEQUENCE_SPEC): Undef. + * config/rs6000/rtems.h (LINK_GCC_C_SEQUENCE_SPEC): Define. + * config/rs6000/sysv4.h (GNU_USER_TARGET_CRTI): Redefine. + (GNU_USER_TARGET_CRTN): Redefine. + (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC. + (LIB_LINUX_SPEC): Use GNU_USER_TARGET_LIB_SPEC. + (CRTOFFLOADBEGIN, CRTOFFLOADEND): Don't define. + (STARTFILE_LINUX_SPEC): Define as GNU_USER_TARGET_STARTFILE_SPEC. + (ENDFILE_LINUX_SPEC): Define as GNU_USER_TARGET_ENDFILE_SPEC. + (UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER): Don't define. + (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 + GNU_USER_TARGET_OS_CPP_BUILTINS. + (RS6000_ABI_NAME): Define. + * config/rs6000/linux64.h (TARGET_OS_CPP_BUILTINS): Use + GNU_USER_TARGET_OS_CPP_BUILTINS. + (MUSL_DYNAMIC_LINKER32): Undef before defining. + (UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64): Don't define. + (CHOOSE_DYNAMIC_LINKER): Don't define. + (GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64): Don't define. + * config/rs6000/sysv4.h (MUSL_DYNAMIC_LINKER): Undef before defining. + (CHOOSE_DYNAMIC_LINKER, GNU_USER_DYNAMIC_LINKER): Only define when + not already defined. + (CPP_OS_LINUX_SPEC): Remove defines and asserts handled by + TARGET_OS_CPP_BUILTINS. + +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 + * config.host (*-*-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/types.md (mul64): Rename to... + (widen_mul64): ... This. + * config/arm/arm-generic.md: Rename mul64 to widen_mul64. + * config/arm/cortex-a15.md: Likewise. + * config/arm/cortex-a5.md: Likewise. + * config/arm/cortex-a53.md: Likewise. + * config/arm/cortex-a57.md: Likewise. + * config/arm/cortex-a7.md: Likewise. + * config/arm/cortex-m4.md: Likewise. + * config/arm/exynos-m1.md: Likewise. + * config/arm/marvell-pj4.md: Likewise. + * config/arm/xgene1.md: 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 + + * 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/aarch64-tune.md: 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 + costs. + * 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 + gen_atomic_compare_swap_1. + (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 + checks. + * config/arm/arm.md (neon_vext), + (neon_vrev64, neon_vrev32), + (neon_vrev16, neon_vtrn_internal), + (neon_vzip_internal, neon_vuzp_internal): Add an '@'character + before the pattern name. + * config/arm/sync.md: + (atomic_compare_and_swap_1), + (atomic_compare_and_swap_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) : 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 + possible. + (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 + prototype. + (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 + change. + (arm_load_pic_register): Likewise. + * config/arm/predicated.md (guard_addr_operand): New predicate. + (guard_operand): New predicate. + * config/arm/arm.md (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.md (thumb1_stack_protect_test_insn): New insn pattern. + * config/arm/unspecs.md (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 + legal. + (stack_protect_combined_test): Document new standard pattern name. + (stack_protect_test): Clarify that the operand for guard's address is + legal. + +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 + CALL_EXPR_BY_DESCRIPTOR. + (streamer_read_tree_bitfields): Stream CALL_EXPR_IFN. + * tree-streamer-out.c (pack_ts_base_value_fields): Stream + CALL_EXPR_BY_DESCRIPTOR. + (streamer_write_tree_bitfields): Stream CALL_EXPR_IFN. + + Revert + 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/i386.md (stack_protect_set, stack_protect_set_, + stack_protect_test, stack_protect_test_): Use empty condition + instead of TARGET_SSP_TLS_GUARD. + +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 + + Revert: + 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 + DECL_ARTIFICIAL of TYPE_DECL; do not free TREE_TYPE of TYPE_DECL. + (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 + and TREE_TYPEs of 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/atomics.md (@aarch64_compare_and_swap): 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. + * Makefile.in (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/sse.md (sse4_1_v8qiv8hi2): Replace + nonimmediate_operand with register_operand. + (avx2_v8qiv8si2): Likewise. + (sse4_1_v4qiv4si2): Likewise. + (sse4_1_v4hiv4si2): Likewise. + (sse4_1_v2qiv2di2): Likewise. + (avx512f_v8qiv8di2): Likewise. + (avx2_v4qiv4di2): Likewise. + (avx2_v4hiv4di2): Likewise. + (sse4_1_v2hiv2di2): Likewise. + (sse4_1_v2siv2di2): Likewise. + (*sse4_1_v8qiv8hi2_1): New pattern. + (*sse4_1_v8qiv8hi2_2): Likewise. + (*avx2_v8qiv8si2_1): Likewise. + (*avx2_v8qiv8si2_2): Likewise. + (*sse4_1_v4qiv4si2_1): Likewise. + (*sse4_1_v4qiv4si2_2): Likewise. + (*sse4_1_v4hiv4si2_1): Likewise. + (*sse4_1_v4hiv4si2_2): Likewise. + (*avx512f_v8qiv8di2_1): Likewise. + (*avx512f_v8qiv8di2_2): Likewise. + (*avx2_v4qiv4di2_1): Likewise. + (*avx2_v4qiv4di2_2): Likewise. + (*avx2_v4hiv4di2_1): Likewise. + (*avx2_v4hiv4di2_2): Likewise. + (*sse4_1_v2hiv2di2_1): Likewise. + (*sse4_1_v2hiv2di2_2): Likewise. + (*sse4_1_v2siv2di2_1): Likewise. + (*sse4_1_v2siv2di2_2): Likewise. + +2018-11-21 H.J. Lu + + * read-rtl.c (apply_subst_iterator): Handle define_split and + define_insn_and_split. + +2018-11-21 Jakub Jelinek + + PR rtl-optimization/87817 + * config/i386/i386.md (bmi2_bzhi_3, *bmi2_bzhi_3, + *bmi2_bzhi_3_1, *bmi2_bzhi_3_1_ccz): Use IF_THEN_ELSE + in the pattern to avoid triggering UB when operands[2] is zero. + (tbm_bextri_): New expander. Renamed the old define_insn to ... + (*tbm_bextri_): ... this. + +2018-11-21 Tom de Vries + + PR driver/79855 + * params.def (HOT_BB_COUNT_FRACTION): Terminate help message with + period. + +2018-11-21 Andreas Krebbel + + * configure.ac: Add check for Binutils to determine whether vector + load/store alignments hints are being supported. + * config.in: Regenerate. + * configure: Regenerate. + * config/s390/s390.c (print_operand): Support new output + modifier A. + * config/s390/s390.md ("movti"): Append alignment hint output + using the new output modifier 'A'. + * config/s390/vector.md ("mov", "*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/s390.md ("clztidi2"): Swap the RTX's written to the + DImode parts of the target operand. + +2018-11-20 Nathan Sidwell + + PR 87926 + * Makefile.in (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 + backedges. + +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/s390.md: Skip LT(G) peephole when literal pool is + involved. + * 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. + * optinfo-emit-json.cc (optrecord_json_writer::pop_scope): Assert + that we're not popping the top-level records array. + * optinfo.cc (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 + function. + (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 + m_json_writer->pop_scope. + (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. + * optinfo-emit-json.cc (class optrecord_json_writer): Move to + optinfo-emit-json.h + (the_json_writer): Delete. + (optimization_records_start): Delete. + (optimization_records_finish): Delete. + (optimization_records_enabled_p): Delete, in favor of + dump_context::optimization_records_enabled_p. + (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-json.cc. + * optinfo.cc (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 + dump_context::optinfo_enabled_p. + (optinfo_wants_inlining_info_p): Update for conversion o + optimization_records_enabled_p to a member function of + dump_context. + * optinfo.h (optinfo_enabled_p): Delete, in favor of + dump_context::optinfo_enabled_p. + (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 + dump_context::finish_any_json_writer. + (do_compile): Replace call to optimization_records_start with + conditionally creating a optrecord_json_writer for the + dump_context. + +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 + adjust_context_and_scope. + * 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/visium.md (negsi2_insn_set_carry): Turn into... + (neg2_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. + (GNU_USER_TARGET_STARTFILE_SPEC): Use it here. + (GNU_USER_TARGET_CRTN): Define. + (GNU_USER_TARGET_ENDFILE_SPEC): Use it here. + (GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC): Define. + +2018-11-18 Alan Modra + + * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Delete + !HAVE_LD_PIE variant. + (GNU_USER_TARGET_ENDFILE_SPEC): Likewise. + +2018-11-17 Nick Clifton + Sandra Loosemore + + PR driver/31357 + * doc/invoke.texi (Overall Options): Document that --help and + --help= 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 + -fno-implicit-templates. + +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/mn10300.md (adddi3_degenerate): Remove bogus + gcc_assert. + +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/constraints.md (wF constraint): Remove power9 + fusion documentation. Just document wF's use for power8 fusion. + * config/rs6000/predicates.md (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 + 1's. + (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/rs6000.md (UNSPEC_FUSION_P9): Delete. + (GPR_FUSION): Delete. + (FPR_FUSION): Delete. + (power9 fusion peephole2s): Delete. + (fusion_gpr___load): Delete. + (fusion_gpr___store): Delete. + (fusion_vsx___load): Delete. + (fusion_vsx___store): Delete. + (fusion_p9__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 + CROSSING_JUMP_P insns. + (cfg_layout_redirect_edge_and_branch): Don't ICE if ret is NULL. + +2018-11-16 Uros Bizjak + + PR target/88051 + * config/i386/i386.md (floatunsdidf2): Allow only 64bit AVX512F targets. + * config/i386/sse.md (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/i386.md: 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/s390.md + (*rsbg__srl_bitmask): Do not delegate arithmetic to + assembler. + (*rsbg__sll): Likewise. + (*rsbg__srl): Likewise. + (*rsbg_sidi_srl): New pattern. + +2018-11-16 Jerome Lambourg + + * config/vxworks.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): New macro. + Default to TARGET_VXWORKS_RTP. + (SUPPORTS_INIT_PRIORITY): Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead + of TARGET_VXWORKS_RTP. + * 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 + * Makefile.in (OBJS): Move json.o to... + (OBJS-libcommon): ...here and add diagnostic-format-json.o. + * common.opt (fdiagnostics-format=): New option. + (diagnostics_output_format): New enum. + * diagnostic-format-json.cc: New file. + * diagnostic.c (default_diagnostic_final_cb): New function, taken + from start of diagnostic_finish. + (diagnostic_initialize): Initialize final_cb to + default_diagnostic_final_cb. + (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 + OPT_fdiagnostics_format_. + * 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. + (GLIBC_DYNAMIC_LINKER): Define. + (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 + + * Makefile.in (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 + ignore_equivs_equal_p. + * 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!=, + ignore_equivs_equal_p. + * 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 + MAX_OFILE_ALIGNMENT as needed. + +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. + (REG_CLASS_CONTENTS): Likewise. + (FIXED_REGISTERS): Make lp_count fixed. + (BASE_REG_CLASS): Remove ACC16_BASE_REGS reference. + (PROGRAM_COUNTER_REGNO): Remove. + * 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/constraints.md ("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. + ("W"): Choose between GENERAL_REGS and MPY_WRITABLE_CORE_REGS. + Former one will be used for LRA. + ("f"): Delete constraint. + ("k"): Likewise. + ("e"): Likewise. + ("l"): Change it from register constraint to constraint. + * config/arc/arc.md (movqi_insn): Remove unsed lp_count constraints. + (movhi_insn): Likewise. + (movsi_insn): Update pattern. + (arc_lp): Likewise. + (dbnz): Likewise. + (stack_tie): Remove 'b' constraint letter. + (R4_REG): Define. + (R9_REG, R15_REG, R16_REG, R25_REG): Likewise. + (R32_REG, R40_REG, R41_REG, R42_REG, R43_REG, R44_REG): Likewise. + (R57_REG, R59_REG, PCL_REG): Likewise. + (ILINK1_REGNUM): Renamed to ILINK1_REG. + (ILINK2_REGNUM): Renamed to ILINK2_REG. + (Rgp): Remove. + (SP_REGS): Likewise. + (Rcw): Remove unused reg classes. + * config/arc/predicates.md (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 + ignore_reg_for_conflicts. + (mark_regno_live): Use HARD_REGISTER_NUM_P macro. Remove return value + and do not guard call to mark_pseudo_live. + (mark_regno_dead): Use HARD_REGISTER_NUM_P macro. Remove return value + and do not guard call to mark_pseudo_dead. + (check_pseudos_live_through_calls): Use HARD_REGISTER_NUM_P macro. + (process_bb_lives): Use HARD_REGISTER_NUM_P and HARD_REGISTER_P macros. + Use new function update_pseudo_point. Handle register copies by + removing the source register from the live set. Handle INOUT operands. + Update to the next program point using the unused_set, dead_set and + start_dying sets. + (lra_create_live_ranges_1): Use HARD_REGISTER_NUM_P macro. + +2018-11-13 David Malcolm + + * builtins.c: Replace "source_location" with "location_t". + * diagnostic-show-locus.c: Likewise. + * diagnostic.c: Likewise. + * dumpfile.c: Likewise. + * gcc-rich-location.h: Likewise. + * genmatch.c: Likewise. + * gimple.h: Likewise. + * gimplify.c: Likewise. + * input.c: Likewise. + * input.h: Likewise. Eliminate the typedef. + * omp-expand.c: Likewise. + * selftest.h: Likewise. + * substring-locations.h (get_source_location_for_substring): + Rename to... + (get_location_within_string): ...this. + * tree-cfg.c: Replace "source_location" with "location_t". + * tree-cfgcleanup.c: Likewise. + * tree-diagnostic.c: Likewise. + * tree-into-ssa.c: Likewise. + * tree-outof-ssa.c: Likewise. + * tree-parloops.c: Likewise. + * tree-phinodes.c: Likewise. + * tree-phinodes.h: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * tree-ssa-phiopt.c: Likewise. + * tree-ssa-phiprop.c: Likewise. + * tree-ssa-threadupdate.c: Likewise. + * tree-ssa.c: Likewise. + * tree-ssa.h: Likewise. + * tree-vect-loop-manip.c: Likewise. + +2018-11-13 Michael Ploujnikov + + * doc/extend.texi: Fix typo in the weakref description. + +2018-11-13 Richard Biener + + PR tree-optimization/86991 + * tree-vect-loop.c (vect_is_slp_reduction): Delay reduction + group building until we have successfully detected the SLP + reduction. + (vect_is_simple_reduction): Remove fixup code here. + +2018-11-13 David Malcolm + + * dumpfile.c (VERIFY_DUMP_ENABLED_P): New macro. + (dump_gimple_stmt): Use it. + (dump_gimple_stmt_loc): Likewise. + (dump_gimple_expr): Likewise. + (dump_gimple_expr_loc): Likewise. + (dump_generic_expr): Likewise. + (dump_generic_expr_loc): Likewise. + (dump_printf): Likewise. + (dump_printf_loc): Likewise. + (dump_dec): Likewise. + (dump_dec): Likewise. + (dump_hex): Likewise. + (dump_symtab_node): Likewise. + * gimple-loop-interchange.cc (tree_loop_interchange::interchange): + Guard dump call with dump_enabled_p. + * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Likewise. + * graphite-optimize-isl.c (optimize_isl): Likewise. + * graphite.c (graphite_transform_loops): Likewise. + * tree-loop-distribution.c (pass_loop_distribution::execute): Likewise. + * tree-parloops.c (parallelize_loops): Likewise. + * tree-ssa-loop-niter.c (number_of_iterations_exit): Likewise. + * tree-vect-data-refs.c (vect_analyze_group_access_1): Likewise. + (vect_prune_runtime_alias_test_list): Likewise. + * tree-vect-loop.c (vect_update_vf_for_slp): Likewise. + (vect_estimate_min_profitable_iters): Likewise. + * tree-vect-slp.c (vect_record_max_nunits): Likewise. + (vect_build_slp_tree_2): Likewise. + (vect_supported_load_permutation_p): Likewise. + (vect_slp_analyze_operations): Likewise. + (vect_slp_analyze_bb_1): Likewise. + (vect_slp_bb): Likewise. + * tree-vect-stmts.c (vect_analyze_stmt): Likewise. + * tree-vectorizer.c (try_vectorize_loop_1): Likewise. + (pass_slp_vectorize::execute): Likewise. + (increase_alignment): Likewise. + +2018-11-13 David Malcolm + + PR ipa/87955 + * ipa-inline.c (report_inline_failed_reason): Guard calls to + cl_target_option_print_diff and cl_optimization_print_diff with + if (dump_file). + +2018-11-13 David Malcolm + + * doc/invoke.texi (-fsave-optimization-record): Note that the + output is compressed. + * optinfo-emit-json.cc: Include . + (optrecord_json_writer::write): Compress the output. + +2018-11-13 Aldy Hernandez + + * tree-vrp.c (value_range_base::dump): Dump type. + Do not use INF nomenclature for 1-bit types. + (dump_value_range): Group all variants to common dumping code. + (debug): New overloaded functions for value_ranges. + (value_range_base::dump): Remove no argument version. + (value_range::dump): Same. + +2018-11-13 Richard Biener + + PR tree-optimization/87931 + * tree-vect-loop.c (vect_is_simple_reduction): Restrict + nested cycles we support to latch computations vectorizable_reduction + handles. + +2018-11-13 Martin Liska + + PR tree-optimization/87885 + * cfghooks.c (account_profile_record): Rename + to ... + (profile_record_check_consistency): ... this. + Calculate missing num_mismatched_freq_in. + (profile_record_account_profile): New function + that calculates time and size of a function. + * cfghooks.h (struct profile_record): Remove + all tuples. + (struct cfg_hooks): Remove after_pass flag. + (account_profile_record): Rename to ... + (profile_record_check_consistency): ... this. + (profile_record_account_profile): New. + * cfgrtl.c (rtl_account_profile_record): Remove + after_pass flag. + * passes.c (check_profile_consistency): Do only + checking. + (account_profile): Calculate size and time of + function only. + (pass_manager::dump_profile_report): Reformat + output. + (execute_one_ipa_transform_pass): Call + consistency check before clean upand call account_profile + after a clean up is done. + (execute_one_pass): Call check_profile_consistency and + account_profile instead of using after_pass flag.. + * tree-cfg.c (gimple_account_profile_record): Likewise. + +2018-11-13 Martin Liska + + PR sanitizer/87930 + * config/i386/i386.c (ix86_option_override_internal): Error + about usage -mabi=ms and -fsanitize={,kernel-}address. + +2018-11-13 Andre Vieira + + * config/aarch64/aarch64.c + (aarch64_vectorize_preferred_vector_alignment): Change return type to + poly_uint64. + (aarch64_simd_vector_alignment_reachable): Adapt to preferred vector + alignment being a poly int. + * doc/tm.texi (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Change + return type to poly_uint64. + * target.def (default_preferred_vector_alignment): Likewise. + * targhooks.c (default_preferred_vector_alignment): Likewise. + * targhooks.h (default_preferred_vector_alignment): Likewise. + * tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise. + (vect_compute_data_ref_alignment): Adapt to vector alignment being a + poly int. + (vect_update_misalignment_for_peel): Likewise. + (vect_enhance_data_refs_alignment): Likewise. + (vect_find_same_alignment_drs): Likewise. + (vect_duplicate_ssa_name_ptr_info): Likewise. + (vect_setup_realignment): Likewise. + (vect_can_force_dr_alignment_p): Change alignment parameter type to + poly_uint64. + * tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a + mask with a compile time variable vector alignment. + (vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly + int. + (vect_do_peeling): Exit early if vector alignment is not constant. + * tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being + a poly int. + (vectorizable_store): Likewise. + (vectorizable_load): Likweise. + * tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a + poly_uint64. + (vect_known_alignment_in_bytes): Adapt to vector alignment being a + poly int. + (vect_can_force_dr_alignment_p): Change alignment parameter type to + poly_uint64. + +2018-11-13 Richard Biener + + PR tree-optimization/87962 + * tree-vect-loop.c (vect_is_simple_reduction): More reliably + detect outer reduction for disqualifying in-loop uses. + +2018-11-13 Richard Biener + + PR tree-optimization/87967 + * tree-vect-loop.c (vect_transform_loop): Also copy PHIs + for constants for the scalar loop. + +2018-11-13 Alan Modra + + * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude + integer constants when -mcmodel=medium. + +2018-11-13 Claudiu Zissulescu + + * config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty. + * config/arc/elf.h (PROFILE_HOOK): Define. + * config/arc/linux.h (PROFILE_HOOK): Likewise. + +2018-11-13 Claudiu Zissulescu + + * config/arc/arc.c (hwloop_optimize): Bailout when detecting a + jump table data in the text section. + +2018-11-13 Claudiu Zissulescu + + * config/arc/arc.c (arc_eh_return_address_location): Repurpose it + to fit the eh_return pattern. + * config/arc/arc.md (eh_return): Define. + (VUNSPEC_ARC_EH_RETURN): Likewise. + * config/arc/arc-protos.h (arc_eh_return_address_location): Match + new implementation. + * config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it. + + +2018-11-13 Claudiu Zissulescu + + * common/config/arc/arc-common.c (arc_option_optimization_table): + Millicode optimization is default on for size optimizations. + * config/arc/arc-protos.h (arc_check_multi): New function. + * config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange. + (ENTER_LEAVE_START_REG): Define. + (ENTER_LEAVE_END_REG): Likewise. + (arc_override_options): Disable millicode when long calls option + is on. + (arc_frame_info): Change it from int to bool. + (arc_compute_frame_size): Clean up. + (arc_save_restore): Remove. + (frame_save_reg): New function. + (frame_restore_reg): Likewise. + (arc_enter_leave_p): Likewise. + (arc_save_callee_saves): Likewise. + (arc_restore_callee_saves): Likewise. + (arc_save_callee_enter): Likewise. + (arc_restore_callee_leave): Likewise. + (arc_save_callee_milli): Likewise. + (arc_restore_callee_milli): Likewise. + (arc_expand_prologue): Reimplement to emit enter/leave + instructions. + (arc_expand_epilogue): Likewise. + (arc_check_multi): New function. + * config/arc/arc.md (push_multi_fp): New pattern. + (push_multi_fp_blink): Likewise. + (pop_multi_fp): Likewise. + (pop_multi_fp_blink): Likewise. + (pop_multi_fp_ret): Likewise. + (pop_multi_fp_blink_ret): Likewise. + * config/arc/arc.opt (mmillicode): Update option. + (mcode-density-frame): New option. + * config/arc/predicates.md (push_multi_operand): New predicate. + (pop_multi_operand): Likewise. + * doc/invoke.texi (ARC): Update ARC options information. + + +2018-11-13 Claudiu Zissulescu + + * config/arc/arc-protos.h (gen_operands_ldd_std): Add. + * config/arc/arc.c (operands_ok_ldd_std): New function. + (mem_ok_for_ldd_std): Likewise. + (gen_operands_ldd_std): Likewise. + * config/arc/arc.md: Add peephole2 rules for std/ldd. + +2018-11-13 Eric Botcazou + + * toplev.c (output_stack_usage): Turn test on flag_stack_usage into + test on stack_usage_file. + (lang_dependent_init): Do not open the .su file if generating LTO. + +2018-11-13 Jakub Jelinek + + PR rtl-optimization/87918 + * simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use + simplify_gen_relational rather than simplify_gen_binary. + +2018-11-13 Richard Biener + + * tree-ssanames.h (set_range_info): Use value_range_base. + (get_range_info): Likewise. + * tree-ssanames.c (set_range_info): Likewise. + (get_range_info): Likewise. + * tree-vrp.c (value_range_base::union_helper): Split + out common parts of value_range[_base]::union_. + (value_range_base::union_): Update. + (value_range::union_): Likewise. + (determine_value_range_1): Use value_range_base. + (determine_value_range): Likewise. + * tree-vrp.h (value_range_base::union_helper): Move ... + (value_range::union_helper): ... from here. + +2018-11-13 Alan Modra + + * config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate + offset for PRE_DEC. + (rs6000_secondary_reload_gpr): Don't call find_replacement. + +2018-11-13 Sandra Loosemore + + PR middle-end/59634 + * doc/invoke.texi (Optimize Options): Clarify that the + l1-cache-line-size, l1-cache-size, and l2-cache-size parameters + apply to data cache size. + +2018-11-13 Alan Modra + + * config/rs6000/predicates.md (logical_const_operand), + (logical_operand): Correct comment. + * config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix. + +2018-11-13 Alan Modra + + * config/rs6000/rs6000.md (addsi3_high): Prefix with '*'. + +2018-11-13 Alan Modra + + * gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint + description. + * config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case + covered by alternative. + (movcc_internal1): Ignore h for register preference. + (mov_hardfloat64): Likewise. + (mov_softfloat): Ignore c, l, h for register preference. + +2018-11-12 Sandra Loosemore + + PR preprocessor/47823 + * doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once + documentation to... + (Pragmas): ...here. + * doc/extend.texi (Pragmas): Note additional pragmas documented + in the CPP manual. + +2018-11-13 Kugan Vivekanandarajah + + PR middle-end/86677 + PR middle-end/87528 + * tree-scalar-evolution.c (expression_expensive_p): Make + BUILTIN POPCOUNT as expensive when backend does not define it. + +2018-11-12 Fredrik Noring + + * config.gcc: Update with-llsc defaults for MIPS r5900. + +2018-11-12 Martin Liska + + PR gcov-profile/87442 + * common.opt: Add -fprofile-filter-files and -fprofile-exclude-files + options. + * doc/invoke.texi: Document them. + * tree-profile.c (parse_profile_filter): New. + (parse_profile_file_filtering): Likewise. + (release_profile_file_filtering): Likewise. + (include_source_file_for_profile): Likewise. + (tree_profiling): Filter source files based on the + newly added options. + +2018-11-12 Martin Liska + + PR target/87903 + * doc/extend.texi: Add missing values for __builtin_cpu_is and + __builtin_cpu_supports for x86 target. + +2018-11-12 Sandra Loosemore + + PR middle-end/21110 + * doc/rtl.texi (Constants): Clarify that mode of "high" doesn't + have to be Pmode. + (Arithmetic): Likewise for "lo_sum". + +2018-11-12 Renlin Li + + PR target/87815 + * dse.c (get_stored_val): Add check for compile-time constantness + of gap. + +2018-11-12 Sudakshina Das + + * config/arm/arm-cpus.in (armv8_5, sb, predres): New features. + (ARMv8_5a): New fgroup. + (armv8.5-a): New arch. + (armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options + sb and predres. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/t-aprofile: Add matching rules for -march=armv8.5-a + * config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a. + * config/arm/t-multilib (v8_5_a_simd_variants): New variable. + Add matching rules for -march=armv8.5-a and extensions. + * doc/invoke.texi (ARM options): Document -march=armv8.5-a. + Add sb and predres to all armv8-a except armv8.5-a. + +2018-11-12 Richard Biener + + * tree-vrp.h (value_range[_base]::set): Make public. Provide + overload for single value. + (value_range[_base]::set_nonnull): New. + (value_range[_base]::set_null): Likewise. + (value_range): Document bitmap copying behavior, mark + copy constructor and assignment operator deleted. + (value_range::move): New. + (value_range::set_and_canonicalize): Default bitmap to zero. + (set_value_range_to_nonnull): Remove. + (set_value_range_to_null): Likewise. + (set_value_range): Likewise. + (set_value_range_to_value): Likewise. + (extract_range_from_unary_expr): Work on value_range_base. + (extract_range_from_binary_expr_1): Likewise. Rename to... + (extract_range_from_binary_expr): ... this. + * tree-vrp.c (value_range::update): Clear equiv bitmap + if required. + (value_range::move): New, move equiv bitmap. + (value_range_base::set_undefined): Avoid assignment. + (value_range::set_undefined): Likewise. + (value_range_base::set_varying): Likewise. + (value_range::set_varying): Likewise. + (set_value_range): Remove. + (value_range_base::set): New overload for value. + (value_range::set): Likewise. + (set_value_range_to_nonnull): Remove. + (value_range_base::set_nonnull): New. + (value_range::set_nonnull): Likewise. + (set_value_range_to_null): Remove. + (value_range_base::set_null): New. + (value_range::set_null): Likewise. + (range_is_null): Work on value_range_base. + (range_is_nonnull): Likewise. + (ranges_from_anti_range): Likewise. + (extract_range_into_wide_ints): Likewise. + (extract_range_from_multiplicative_op): Likewise. + (extract_range_from_binary_expr): Likewise. Update for API changes. + (extract_range_from_unary_expr): Likewise. Remove OBJ_TYPE_REF + handling. + (value_range::intersect_helper): Avoid copy and assignment. + (value_range::union_helper): Likewise. + (determine_value_range_1): Adjust. + * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range): + Avoid assignment by using move. + (evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment. + * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): + Likewise. + * tree-ssanames.c (get_range_info): Likewise. + * vr-values.h (vr_values::get_vr_for_comparison): Adjust API. + * vr-values.c (vr_values::get_value_range): Adjust. + (vr_values::update_value_range): Likewise. + (symbolic_range_based_on_p): Work on value_range_base. + (vr_values::extract_range_from_binary_expr): Use value_range_base. + (vr_values::extract_range_from_unary_expr): Likewise. + (vr_values::extract_range_from_cond_expr): Avoid assignment. + (vr_values::extract_range_from_comparison): Adjust. + (vr_values::check_for_binary_op_overflow): Use value_range_base. + (vr_values::extract_range_basic): Adjust. + (vr_values::adjust_range_with_scev): Likewise. + (vr_values::vrp_visit_assignment_or_call): Likewise. + (vr_values::get_vr_for_comparison): Change API to avoid + assignment and copy construction. + (vr_values::compare_name_with_value): Adjust accordingly. + (vr_values::compare_names): Likewise. + (vr_values::extract_range_from_phi_node): Avoid assignment and + bogus in-place modify of equiv bitmap. + (vr_values::simplify_bit_ops_using_ranges): Use value_range_base. + * ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust + for extract_range_from_unary_expr API change. + * ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise. + +2018-11-12 Eric Botcazou + + * config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate. + +2018-11-12 Richard Biener + + * tree-vrp.h (value_range_base::symbolic_p, + value_range_base::constant_p, value_range_base::zero_p, + value_range_base::singleton_p): Move from value_range. + (value_range::dump): Add. + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::record_ranges_from_phis): Use set_varying. + * ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range. + * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): + Use set_varying. + * tree-vrp.c (value_range::symbolic_p): Move to value_range_base. + (value_range::constant_p): Likewise. + (value_range::singleton_p): Likewise. + (value_range_base::dump): Add. + (set_value_range_to_undefined): Remove. + (set_value_range_to_varying): Likewise. + (range_int_cst_p): Take value_range_base argument. + (range_int_cst_singleton_p): Likewise. + (value_range_constant_singleton): Likewise. + (vrp_set_zero_nonzero_bits): Likewise. + (extract_range_from_multiplicative_op): Use set_varying. + (extract_range_from_binary_expr_1): Likewise. Use set_undefined. + (extract_range_from_unary_expr): Likewise. + (dump_value_range_base): Change to overload of dump_value_range. + (vrp_prop::vrp_initialize): Use set_varying and set_undefined. + (vrp_prop::visit_stmt): Likewise. + (value_range::intersect_helper): Likewise. + (value_range::union_helper): Likewise. + (determine_value_range_1): Likewise. + +2018-11-12 Richard Biener + + * tree-vrp.c (set_value_range_to_nonnull): Clear equiv. + (set_value_range_to_null): Likewise. + * vr-values.c (vr_values::extract_range_from_comparison): + Clear equiv for constant singleton ranges. + +2018-11-12 Wei Xiao + + * config/i386/sse.md: Combine VFIXUPIMM* patterns + (_fixupimm_maskz): Update. + (_fixupimm): Update. + (_fixupimm_mask): Remove. + (avx512f_sfixupimm_maskz): Update. + (avx512f_sfixupimm): Update. + (avx512f_sfixupimm_mask): Remove. + +2018-11-11 Sandra Loosemore + + PR c/69502 + * doc/extend.texi (Common Type Attributes): For the align type + attribute, copy language about decreasing alignment from the + corresponding variable attribute. + +2018-11-11 Xianmiao Qu + + * config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle + -frounding-math. + +2018-11-11 Sandra Loosemore + + PR c++/43105 + * doc/invoke.texi (C++ Dialect Options): Add warning about mixing + -frtti and -fno-rtti code. + +2018-11-11 Sandra Loosemore + + PR c/26366 + * doc/extend.texi (Other Builtins): Document probability associated + with __builtin_expect. + +2018-11-11 Uros Bizjak + + PR target/87928 + * config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI + instead of (TARGET_64BIT && ix86_abi == MS_ABI). + * config/i386/darwin.h (STACK_BOUNDARY): Ditto. + * config/i386/cygming.h (STACK_BOUNDARY): Remove. + +2018-11-11 Xianmiao Qu + + * config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile. + +2018-11-11 Xianmiao Qu + + * config/csky/csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. + +2018-11-11 Richard Biener + + * tree-vrp.h (class value_range_base): New base class for + value_range containing all but the m_equiv member. + (dump_value_range_base): Add. + (range_includes_zero_p): Work on value_range_base. + * tree-vrp.c (value_range_base::set): Split out base handling + from... + (value_range::set): this. + (value_range::set_equiv): New. + (value_range_base::value_range_base): New constructors. + (value_range_base::check): Split out base handling from... + (value_range::check): this. + (value_range::equal_p): Refactor in terms of + ignore_equivs_equal_p which is now member of the base. + (value_range_base::set_undefined): New. + (value_range_base::set_varying): Likewise. + (value_range_base::dump):Split out base handling from... + (value_range::dump): this. + (value_range_base::set_and_canonicalize): Split out base handling + from... + (value_range::set_and_canonicalize): this. + (value_range_base::union_): New. + * ipa-prop.h (struct ipa_jump_func): Use value_range_base * + for m_vr. + * ipa-cp.c (class ipcp_vr_lattice): Use value_range_base + instead of value_range everywhere. + (ipcp_vr_lattice::print): Use dump_value_range_base. + (ipcp_vr_lattice::meet_with): Adjust. + (ipcp_vr_lattice::meet_with_1): Likewise. + (ipa_vr_operation_and_type_effects): Likewise. + (propagate_vr_across_jump_function): Likewise. + * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Likewise. + (ipa_get_value_range): Likewise. + (ipa_set_jfunc_vr): Likewise. + (ipa_compute_jump_functions_for_edge): Likewise. + +2018-11-10 Sandra Loosemore + + PR middle-end/65703 + * doc/invoke.texi (Optimize Options): Add @opindex entries + for the positive forms of -fno-xxx and -mno-xxx options + that were lacking them. + +2018-11-10 Segher Boessenkool + + * combine.c (make_more_copies): Only make an intermediate copy if the + dest of a move is a pseudo. + +2018-11-09 Maya Rashish + + PR target/87221 + * config/netbsd-elf.h (NETBSD_STARTFILE_SPEC): Use crtbeginS.o for PIE. + (NETBSD_ENDFILE_SPEC): Use crtendS.o for PIE. + +2018-11-09 Sandra Loosemore + + PR driver/41179 + PR middle-end/65703 + * doc/invoke.texi (Optimize Options): Clarify default behavior + for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg. + +2018-11-09 Bernd Edlinger + + PR tree-optimization/87940 + * expr.c (string_constant): Don't strip NOPS in subexpressions. + Fold PLUS_EXPR correctly. + +2018-11-09 Ilya Leoshkevich + + PR target/87762 + * config/s390/s390.c (s390_safe_relative_long_p): New function. + (annotate_constant_pool_refs): Skip insns which support + relative addressing. + (annotate_constant_pool_refs_1): New helper function. + (find_constant_pool_ref): Skip insns which support relative + addression. + (find_constant_pool_ref_1): New helper function. + (replace_constant_pool_ref): Skip insns which support + relative addressing. + (replace_constant_pool_ref_1): New helper function. + (s390_mainpool_start): Adapt to the new signature. + (s390_mainpool_finish): Likewise. + (s390_chunkify_start): Likewise. + (s390_chunkify_finish): Likewise. + (pass_s390_early_mach::execute): Likewise. + (s390_prologue_plus_offset): Likewise. + (s390_emit_prologue): Likewise. + (s390_emit_epilogue): Likewise. + +2018-11-09 Jakub Jelinek + + * gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid + but unsupported lastprivate with conditional modifier. + +2018-11-09 Jeff Law + + * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle + unused argument better. Add gcc_unreachable to silence warning. + +2018-11-09 Martin Sebor + + PR middle-end/81824 + * attribs.c (has_attribute): New helper function. + (decls_mismatched_attributes, maybe_diag_alias_attributes): Same. + * attribs.h (decls_mismatched_attributes): Declare. + * cgraphunit.c (handle_alias_pairs): Call maybe_diag_alias_attributes. + (maybe_diag_incompatible_alias): Use OPT_Wattribute_alias_. + * common.opt (-Wattribute-alias): Take an argument. + (-Wno-attribute-alias): New option. + * doc/extend.texi (Common Function Attributes): Document copy. + (Common Variable Attributes): Same. + * doc/invoke.texi (-Wmissing-attributes): Document enhancement. + (-Wattribute-alias): Document new option argument. + +2018-11-09 Richard Earnshaw + + * config/arm/parsecpu.awk (/alias/): Tighten invisible alias + matching criteria. Remove unused array initializer. + +2018-11-09 Bill Schmidt + Jinsong Ji + + * config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix incorrect + constraints by introducing a new temporary. + (_mm_cvtss_si64): Likewise. + +2018-11-09 Martin Liska + + * common.opt: Add -fipa-stack-alignment flag. + * doc/invoke.texi: Document it. + * final.c (rest_of_clean_state): Guard stack + shrinking with flag. + +2018-11-09 Martin Liska + + * cgraph.h (ipa_discover_readonly_nonaddressable_vars): Rename + to ... + (ipa_discover_variable_flags): ... this. + * common.opt: Come up with new flag -fipa-reference-addressable. + * doc/invoke.texi: Document it. + * ipa-reference.c (propagate): Call the renamed fn. + * ipa-visibility.c (whole_program_function_and_variable_visibility): + Likewise. + * ipa.c (ipa_discover_readonly_nonaddressable_vars): Renamed to + ... + (ipa_discover_variable_flags): ... this. Discover + non-addressable variables only with the newly added flag. + * opts.c: Enable the newly added flag with -O1 and higher + optimization level. + +2018-11-09 David Malcolm + + * json.cc (selftest::test_writing_literals): Fix comment. + +2018-11-09 Martin Liska + + * config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy + string to a stack buffer. + (aarch64_parse_cpu): Likewise. + (aarch64_parse_tune): Likewise. + +2018-11-09 Richard Biener + + PR tree-optimization/87953 + * tree-vect-loop.c (vectorizable_reduction): For analysis + always pass ops[0] to vectorizable_condition. + +2018-11-09 Stafford Horne + Richard Henderson + Joel Sherrill + + * common/config/or1k/or1k-common.c: New file. + * config/or1k/*: New. + * config.gcc (or1k*-*-*): New. + * configure.ac (or1k*-*-*): New test for openrisc tls. + * configure: Regenerated. + * doc/install.texi: Document OpenRISC triplets. + * doc/invoke.texi: Document OpenRISC arguments. + * doc/md.texi: Document OpenRISC. + +2018-11-09 Richard Earnshaw + + * config/arm/arm-cpus.in (arm7tdmi): Add an alias for arm7tdmi-s. + (arm7tdmi-s): Delete CPU. + (arm710t): Add aliases for arm720t and arm740t. + (arm720t, arm740t): Delete CPUs. + (arm920t): Add aliases for arm920, arm922t and arm940t. + (arm920, arm922t, arm940t): Delete CPUs. + (arm10tdmi): Add alias for arm1020t. + (arm1020t): Delete CPU. + (arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s. + (arm946e-s, arm966e-s, arm968e-s): Delete CPUs. + (arm10e): Add aliases for arm1020e and arm1022e. + (arm1020e, arm1022e): Delete CPU. + * config/arm/arm.md (generic_sched): Remove entries that are now + handled by aliases. + (generic_vfp): Likewise. + * config/arm/arm1020e.md: Simplify tuning selection based on alias + changes. + * config/arm/arm-tune.md: Regenerated. + * config/arm/arm-tables.opt: Regenerated. + +2018-11-09 Richard Biener + + PR tree-optimization/87621 + * tree-vect-loop.c (vectorizable_reduction): Handle reduction + op with only phi inputs. + * tree-ssa-loop-ch.c: Include tree-ssa-sccvn.h. + (ch_base::copy_headers): Run CSE on copied loop headers. + (pass_ch_vect::process_loop_p): Simplify. + +2018-11-09 Alexandre Oliva + + * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust + for non-w64 x86_64 biarch. + +2018-11-09 Alexandre Oliva + + PR rtl-optimization/86438 + * compare-elim.c (try_eliminate_compare): Use SET_SRC instead + of in_b for the compare if in_b is SET_DEST. + + PR target/87793 + * config/i386/i386.c (ix86_const_not_ok_for_debug_p): Reject + non-toplevel UNSPEC. + +2018-11-08 Aldy Hernandez + + * tree-vrp.c (value_range::check): Do not access internals + directly. + (value_range::singleton_p): Same. + (value_range::type): Same. + (vrp_finalize): Use value_range API. + +2018-11-08 Aldy Hernandez + + * tree-vrp.c (may_contain_p): Do not access m_min/m_max directly. + +2018-11-08 Aldy Hernandez + + * vr-values.c (vr_values::get_value_range): Use value_range API + instead of piecing together ranges. + (vr_values::update_value_range): Same. + +2018-11-08 Aldy Hernandez + + * gimple-fold.c (size_must_be_zero_p): Use value_range API instead + of performing ad-hoc calculations. + * tree-ssanames.c (set_range_info): New overloaded function + accepting value_range &. + (get_range_info): Same. + * tree-ssanames.h (set_range_info_raw): Remove. + (set_range_info): New prototype. + (get_range_info): Same. + * tree-vrp.h (value_range::null_p): Rename to zero_p. + * tree-vrp.c (value_range::null_p): Same. + +2018-11-09 Jan Hubicka + + * tree.c (fld_type_variant_equal_p): Test user align flag. + (flt_type_variant): Copy user align flag. + (fld_incomplete_type_of): Clear it. + +2018-11-09 Prathamesh Kulkarni + + * config/arm/neon.md (div3): New pattern. + +2018-11-08 Andi Kleen + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET): New. + (OPTION_MASK_ISA_PTWRITE_UNSET): New. + (ix86_handle_option): Handle OPT_mptwrite. + * config/i386/cpuid.h (bit_PTWRITE): Add. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect ptwrite. + * config/i386/i386-builtin.def (BDESC): Add ptwrite32/64. + * config/i386/i386-c.c (ix86_target_macros_internal): Define __PTWRITE__. + * config/i386/i386.c (ix86_target_string): Handle ptwrite. + (ix86_option_override_internal): Handle PTA_PTWRITE. + (ix86_valid_target_attribute_inner_p): Define ptwrite. + (def_builtin2): Force UINT64 to be 64bit only. + * config/i386/i386.h (TARGET_PTWRITE): Add. + (TARGET_PTWRITE_P): Add. + (PTA_PTWRITE): Add. + * config/i386/i386.md: Define ptwrite. + * config/i386/i386.opt: Add -mptwrite. + * config/i386/immintrin.h (_ptwrite64): Add. + (_ptwrite32): Add + * doc/extend.texi: Document __builtin_ia32_ptwrite*. + * doc/invoke.texi: Document -mptwrite. + +2018-11-08 Peter Bergner + + PR rtl-optimization/87600 + * cfgexpand.c (expand_asm_stmt): Catch illegal asm constraint usage. + * lra-constraints.c (process_alt_operands): Skip illegal hard + register usage. Prefer reloading non hard register operands. + +2018-11-08 Sandra Loosemore + + PR other/36572 + * doc/invoke.texi (Optimize Options): Clarify default behavior + for -fno-sched-interblock and -fno-sched-spec. + +2018-11-08 Roman Geissler + + * collect2.c (linker_select): Add USE_LLD_LD. + (ld_suffixes): Add ld.lld. + (main): Handle -fuse-ld=lld. + * common.opt (-fuse-ld=lld): New option. + * doc/invoke.texi (-fuse-ld=lld): Document. + * opts.c (common_handle_option): Handle OPT_fuse_ld_lld. + +2018-11-08 Paul Koning + + * config/pdp11/constraints.md: Add "Z" series constraints for use + with pre-dec and post-inc addressing. + * config/pdp11/pdp11-protos.m (expand_block_move): Delete. + (pdp11_expand_operands): Add int argument (word count). + (pdp11_sp_frame_offset): Delete. + (pdp11_cmp_length): New function. + (pushpop_regeq): New function. + * config/pdp11/pdp11.c (TARGET_STACK_PROTECT_RUNTIME_ENABLED_P): + Add hook. + (pdp11_expand_prologue, pdp11_expand_epilogue): Rewrite for new + frame layout. + (pdp11_initial_elimination_offset): Ditto. + (pdp11_expand_operands): Add word count argument. Bugfixes. + (output_move_multiple): Change how pointer adjustment is done. + (pdp11_gen_int_label): Correct format. + (output_ascii): Ditto. + (pdp11_asm_output_var): Add code for DEC assembler case. + (pdp11_asm_print_operand): Bugfix for CONST_DOUBLE holding integer + value. + (legitimate_const_double_p): Ditto. + (pdp11_register_move_cost): Adjust for new register classes. + (pdp11_regno_reg_class): Ditto. + (expand_block_move): Delete. + (pushpop_regeq): New function. + (pdp11_legitimate_address_p): Bugfix in check for constant + offset. + (pdp11_sp_frame_offset): Delete. + (pdp11_reg_save_size): New helper function for new frame layout. + (output_addr_const_pdp11): Remove CONST_DOUBLE case. + (pdp11_expand_shift): Bugfix in check for constant shift count. + (pdp11_shift_length): Ditto. + (pdp11_assemble_shift): Copy input to pdp11_expand_operands. + (pdp11_cmp_length): New function. + * config/pdp11/pdp11.h (TARGET_CPU_CPP_BUILTINS): Add macros for + some compile options. + (FIXED_REGISTERS): Remove HARD_FRAME_POINTER_REGNUM. + (CALL_USED_REGISTERS): Ditto. + (ELIMINABLE_REGS): Ditto. + (REGISTER_NAMES): Ditto. + (reg_class): Add classes NOTR0_REG through NOTSP_REG for use by Z + constraints. + (REG_CLASS_NAMES): Ditto. + (REG_CLASS_CONTENTS): Ditto. Also remove + HARD_FRAME_POINTER_REGNUM. + (CPU_REG_CLASS): New macro. + (CLASS_MAX_NREGS): Adjust for new register classes. + (FUNCTION_PROFILER): Make no-op. + (may_call_alloca): Remove unused declaration. + (ASM_OUTPUT_ALIGN): Add workaround for PR87795. + (ASM_OUTPUT_SKIP): Fix format. + * config/pdp11/pdp11.md (unspecv): Add UNSPECV_MOVMEM. + (HARD_FRAME_POINTER_REGNUM): Remove. + (return): Delete. + (*rts): Rename. Remove epilogue related checks. + (cmpsi, cmpdi): New insn. + (cbranch4): Change to apply to SI and DI modes as well. + (mov): Change constraints to enforce that push/pop + destination cannot use the same register as source. + (*mov): Ditto. + (movmemhi, movmemhi1, movmemhi_nocc): Change to expand block move + at assembly output rather than as RTL expander. + (zero_extendqihi2): Bugfix in check for same registers. + (adddi3_nocc): Bugfix in check for constant operand. + (addsi3_nocc): Ditto. + (subdi3_nocc): Ditto. + (subsi3_nocc): Ditto. + (negdi2_nocc): Copy input to pdp11_expand_operands. + (negsi2_nocc): Ditto. + (bswap2_nocc): Ditto. + * config/pdp11/pdp11.opt (mlra): Fix documentation. + * config/pdp11/t-pdp11: Use -Os. + +2018-11-08 Richard Earnshaw + + * config/arm/parsecpu.awk (/alias/): New parsing rule. + (/begin cpu/): Check that the cpu name hasn't been previously defined. + (gen_comm_data): Print out CPU alias tables. + (check_cpu): Match aliases when checking the CPU name. + * config/arm/arm-protos.h (cpu_alias): New structure. + (cpu_option): Add entry for aliases. + * config/arm/arm-cpus.in (strongarm): Add aliases for strongarm110 + strongarm1100 and strongarm1110. + (strongarm110, strongarm1100, strongarm1110): Delete CPU entries. + (config/arm/arm-generic.md): Remove redundant references to + strongarm110, strongarm1100 and strongarm1110. + * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option): + Scan aliases for additional hints. + (arm_parse_cpu_option_name): Also match a cpu name against the list + of aliases. + * config/arm/arm-tables.opt: Regenerated. + * config/arm/arm-tune.md: Regenerated. + +2018-11-08 Jakub Jelinek + + * builtin-types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR, + BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT, + BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, + BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR, + BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, + BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New. + * gengtype.c (open_base_files): Add omp-general.h. + * gimple.c (gimple_build_omp_critical): + (gimple_build_omp_taskgroup): Add CLAUSES argument. Call + gimple_omp_taskgroup_set_clauses. + (gimple_build_omp_atomic_load): Add mo argument, call + gimple_omp_atomic_set_memory_order. + (gimple_build_omp_atomic_store): Likewise. + (gimple_copy): Adjust handling of GIMPLE_OMP_TASKGROUP. + * gimple.def (GIMPLE_OMP_TASKGROUP): Use GSS_OMP_SINGLE_LAYOUT + instead of GSS_OMP. + (GIMPLE_OMP_TEAMS): Use GSS_OMP_PARALLEL_LAYOUT instead + of GSS_OMP_SINGLE_LAYOUT, adjust comments. + * gimple.h (enum gf_mask): Add GF_OMP_TEAMS_HOST, GF_OMP_TASK_TASKWAIT + and GF_OMP_ATOMIC_MEMORY_ORDER. Remove GF_OMP_ATOMIC_SEQ_CST, use + different value for GF_OMP_ATOMIC_NEED_VALUE. + (struct gimple_statement_omp_taskreg): Add GIMPLE_OMP_TEAMS to + comments. + (struct gimple_statement_omp_single_layout): And remove here. + (struct gomp_teams): Inherit from gimple_statement_omp_taskreg rather + than gimple_statement_omp_single_layout. + (is_a_helper ::test): Allow + GIMPLE_OMP_TEAMS. + (is_a_helper ::test): Likewise. + (gimple_omp_subcode): Formatting fix. + (gimple_omp_teams_child_fn, gimple_omp_teams_child_fn_ptr, + gimple_omp_teams_set_child_fn, gimple_omp_teams_data_arg, + gimple_omp_teams_data_arg_ptr, gimple_omp_teams_set_data_arg, + gimple_omp_teams_host, gimple_omp_teams_set_host, + gimple_omp_task_taskwait_p, gimple_omp_task_set_taskwait_p, + gimple_omp_taskgroup_clauses, gimple_omp_taskgroup_clauses_ptr, + gimple_omp_taskgroup_set_clauses): New inline functions. + (gimple_build_omp_atomic_load): Add enum omp_memory_order argument. + (gimple_build_omp_atomic_store): Likewise. + (gimple_omp_atomic_seq_cst_p): Remove. + (gimple_omp_atomic_memory_order): New function. + (gimple_omp_atomic_set_seq_cst): Remove. + (gimple_omp_atomic_set_memory_order): New function. + (gimple_build_omp_taskgroup): Add clauses argument. + * gimple-pretty-print.c (dump_gimple_omp_taskgroup): New function. + (dump_gimple_omp_task): Print taskwait with depend clauses. + (dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Use + dump_omp_atomic_memory_order. + (pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP. + * gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP_ALLOC_ONLY, + GOVD_MAP_FROM_ONLY and GOVD_NONTEMPORAL. + (enum omp_region_type): Reserve bits 1 and 2 for auxiliary flags, + renumber values of most of ORT_* enumerators, add ORT_HOST_TEAMS, + ORT_COMBINED_HOST_TEAMS, ORT_TASKGROUP, ORT_TASKLOOP and + ORT_UNTIED_TASKLOOP enumerators. + (enum gimplify_defaultmap_kind): New. + (struct gimplify_omp_ctx): Remove target_map_scalars_firstprivate and + target_map_pointers_as_0len_arrays members, add defaultmap. + (new_omp_context): Initialize defaultmap member. + (gimple_add_tmp_var): Handle ORT_TASKGROUP like ORT_WORKSHARE. + (maybe_fold_stmt): Don't fold even in host teams regions. + (omp_firstprivatize_variable): Handle ORT_TASKGROUP like + ORT_WORKSHARE. Test ctx->defaultmap[GDMK_SCALAR] instead of + ctx->omp_firstprivatize_variable. + (omp_add_variable): Don't add private/firstprivate for VLAs in + ORT_TASKGROUP. + (omp_default_clause): Print "taskloop" rather than "task" if + ORT_*TASKLOOP. + (omp_notice_variable): Handle ORT_TASKGROUP like ORT_WORKSHARE. + Handle new defaultmap clause kinds. + (omp_is_private): Handle ORT_TASKGROUP like ORT_WORKSHARE. Allow simd + iterator to be lastprivate or private. Fix up diagnostics if linear + is used on collapse>1 simd iterator. + (omp_check_private): Handle ORT_TASKGROUP like ORT_WORKSHARE. + (gimplify_omp_depend): New function. + (gimplify_scan_omp_clauses): Add shared clause on parallel for + combined parallel master taskloop{, simd} if taskloop has + firstprivate, lastprivate or reduction clause. Handle + OMP_CLAUSE_REDUCTION_TASK diagnostics. Adjust tests for + ORT_COMBINED_TEAMS. Gimplify depend clauses with iterators. Handle + cancel and simd OMP_CLAUSE_IF_MODIFIERs. Handle + OMP_CLAUSE_NONTEMPORAL. Handle new defaultmap clause kinds. Handle + OMP_CLAUSE_{TASK,IN}_REDUCTION. Diagnose invalid conditional + lastprivate. + (gimplify_adjust_omp_clauses_1): Ignore GOVD_NONTEMPORAL. Handle + GOVD_MAP_ALLOC_ONLY and GOVD_MAP_FROM_ONLY. + (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_NONTEMPORAL. Handle + OMP_CLAUSE_{TASK,IN}_REDUCTION. + (gimplify_omp_task): Handle taskwait with depend clauses. + (gimplify_omp_for): Add shared clause on parallel for combined + parallel master taskloop{, simd} if taskloop has firstprivate, + lastprivate or reduction clause. Use ORT_TASKLOOP or + ORT_UNTIED_TASKLOOP instead of ORT_TASK or ORT_UNTIED_TASK. Adjust + tests for ORT_COMBINED_TEAMS. Handle C++ range for loops with + NULL TREE_PURPOSE in OMP_FOR_ORIG_DECLS. Firstprivatize + __for_end and __for_range temporaries on OMP_PARALLEL for + distribute parallel for{, simd}. Move OMP_CLAUSE_REDUCTION + and OMP_CLAUSE_IN_REDUCTION from taskloop to the task construct + sandwiched in between two taskloops. + (computable_teams_clause): Test ctx->defaultmap[GDMK_SCALAR] + instead of ctx->omp_firstprivatize_variable. + (gimplify_omp_workshare): Set ort to ORT_HOST_TEAMS or + ORT_COMBINED_HOST_TEAMS if not inside of target construct. If + host teams, use gimplify_and_return_first etc. for body like + for target or target data constructs, and at the end call + gimple_omp_teams_set_host on the GIMPLE_OMP_TEAMS object. + (gimplify_omp_atomic): Use OMP_ATOMIC_MEMORY_ORDER instead + of OMP_ATOMIC_SEQ_CST, pass it as new argument to + gimple_build_omp_atomic_load and gimple_build_omp_atomic_store, remove + gimple_omp_atomic_set_seq_cst calls. + (gimplify_expr) : Move handling into a separate + case, handle taskgroup clauses. + * lto-streamer-out.c (hash_tree): Handle + OMP_CLAUSE_{TASK,IN}_REDUCTION. + * Makefile.in (GTFILES): Add omp-general.h. + * omp-builtins.def (BUILT_IN_GOMP_TASKWAIT_DEPEND, + BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_LOOP_START, BUILT_IN_GOMP_LOOP_ORDERED_START, + BUILT_IN_GOMP_LOOP_DOACROSS_START, + BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_NEXT, + BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_NEXT, + BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START, + BUILT_IN_GOMP_LOOP_ULL_START, BUILT_IN_GOMP_LOOP_ULL_ORDERED_START, + BUILT_IN_GOMP_LOOP_ULL_DOACROSS_START, + BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_NEXT, + BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_NEXT, + BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME, + BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME, + BUILT_IN_GOMP_PARALLEL_REDUCTIONS, BUILT_IN_GOMP_SECTIONS2_START, + BUILT_IN_GOMP_TEAMS_REG, BUILT_IN_GOMP_TASKGROUP_REDUCTION_REGISTER, + BUILT_IN_GOMP_TASKGROUP_REDUCTION_UNREGISTER, + BUILT_IN_GOMP_TASK_REDUCTION_REMAP, + BUILT_IN_GOMP_WORKSHARE_TASK_REDUCTION_UNREGISTER): New builtins. + * omp-expand.c (workshare_safe_to_combine_p): Return false for + non-worksharing loops. + (omp_adjust_chunk_size): Don't adjust anything if chunk_size is zero. + (determine_parallel_type): Don't combine parallel with worksharing + which has _reductemp_ clause. + (expand_parallel_call): Emit the GOMP_*nonmonotonic_runtime* or + GOMP_*maybe_nonmonotonic_runtime* builtins instead of GOMP_*runtime* + if there is nonmonotonic modifier or if there is no modifier and no + ordered clause. For dynamic and guided schedule without monotonic + and nonmonotonic modifier, default to nonmonotonic. + (expand_omp_for): Likewise. Adjust expand_omp_for_generic caller, use + GOMP_loop{,_ull}{,_ordered,_doacross}_start builtins if there are + task reductions. + (expand_task_call): Add GOMP_TASK_FLAG_REDUCTION flag to flags if + there are any reduction clauses. + (expand_taskwait_call): New function. + (expand_teams_call): New function. + (expand_omp_taskreg): Allow GIMPLE_OMP_TEAMS and call + expand_teams_call for it. Formatting fix. Handle taskwait with + depend clauses. + (expand_omp_for_generic): Add SCHED_ARG argument. Handle expansion + of worksharing loops with task reductions. + (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle + expansion of worksharing loops with task reductions. + (expand_omp_sections): Handle expansion of sections with task + reductions. + (expand_omp_synch): For host teams call expand_omp_taskreg. + (omp_memory_order_to_memmodel): New function. + (expand_omp_atomic_load, expand_omp_atomic_store, + expand_omp_atomic_fetch_op): Use it and gimple_omp_atomic_memory_order + instead of gimple_omp_atomic_seq_cst_p. + (build_omp_regions_1, omp_make_gimple_edges): Treat taskwait with + depend clauses as a standalone directive. + * omp-general.c (enum omp_requires): New variable. + (omp_extract_for_data): Initialize have_reductemp member. Allow + NE_EXPR even in OpenMP loops, transform them into LT_EXPR or + GT_EXPR loops depending on incr sign. Formatting fixes. + * omp-general.h (struct omp_for_data): Add have_reductemp member. + (enum omp_requires): New enum. + (omp_requires_mask): Declare. + * omp-grid.c (grid_eliminate_combined_simd_part): Formatting fix. + Fix comment typos. + * omp-low.c (struct omp_context): Add task_reductions and + task_reduction_map fields. + (is_host_teams_ctx): New function. + (is_taskreg_ctx): Return true also if is_host_teams_ctx. + (use_pointer_for_field): Use is_global_var instead of + TREE_STATIC || DECL_EXTERNAL, and apply only if not privatized + in outer contexts. + (build_outer_var_ref): Ignore taskgroup outer contexts. + (delete_omp_context): Release task_reductions and task_reduction_map. + (scan_sharing_clauses): Don't add any fields for reduction clause on + taskloop. Handle OMP_CLAUSE__REDUCTEMP_. Handle + OMP_CLAUSE_{IN,TASK}_REDUCTION and OMP_CLAUSE_REDUCTION with task + modifier. Don't ignore shared clauses in is_host_teams_ctx contexts. + Handle OMP_CLAUSE_NONTEMPORAL. + (add_taskreg_looptemp_clauses): Add OMP_CLAUSE__REDUCTEMP_ clause if + needed. + (scan_omp_parallel): Add _reductemp_ clause if there are any reduction + clauses with task modifier. + (scan_omp_task): Handle taskwait with depend clauses. + (finish_taskreg_scan): Move field corresponding to _reductemp_ clause + first. Move also OMP_CLAUSE__REDUCTEMP_ clause in front if present. + Handle GIMPLE_OMP_TEAMS like GIMPLE_OMP_PARALLEL. + (scan_omp_for): Fix comment formatting. + (scan_omp_teams): Handle host teams constructs. + (check_omp_nesting_restrictions): Allow teams with no outer + OpenMP context. Adjust diagnostics for teams strictly nested into + some explicit OpenMP construct other than target. Allow OpenMP atomics + inside of simd regions. + (scan_omp_1_stmt): Call scan_sharing_clauses for taskgroups. + (scan_omp_1_stmt) : Temporarily bump + taskreg_nesting_level while scanning host teams construct. + (task_reduction_read): New function. + (lower_rec_input_clauses): Handle OMP_CLAUSE_REDUCTION on taskloop + construct. Handle OMP_CLAUSE_IN_REDUCTION and OMP_CLAUSE__REDUCTEMP_ + clauses. Handle OMP_CLAUSE_REDUCTION with task modifier. Remove + second argument create_tmp_var if it is NULL. Don't ignore shared + clauses in is_host_teams_ctx contexts. Handle + OMP_CLAUSE_FIRSTPRIVATE_NO_REFERENCE on OMP_CLAUSE_FIRSTPRIVATE + clauses. + (lower_reduction_clauses): Ignore reduction clauses with task + modifier. Remove second argument create_tmp_var if it is NULL. + Initialize OMP_ATOMIC_MEMORY_ORDER to relaxed. + (lower_send_clauses): Ignore reduction clauses with task modifier. + Handle OMP_CLAUSE__REDUCTEMP_. Don't send anything for + OMP_CLAUSE_REDUCTION on taskloop. Handle OMP_CLAUSE_IN_REDUCTION. + (maybe_add_implicit_barrier_cancel): Add OMP_RETURN argument, don't + rely that it is the last stmt in body so far. Ignore outer taskgroup + contexts. + (omp_task_reductions_find_first, omp_task_reduction_iterate, + lower_omp_task_reductions): New functions. + (lower_omp_sections): Handle reduction clauses with taskgroup + modifiers. Adjust maybe_add_implicit_barrier_cancel caller. + (lower_omp_single): Adjust maybe_add_implicit_barrier_cancel caller. + (lower_omp_for): Likewise. Handle reduction clauses with taskgroup + modifiers. + (lower_omp_taskgroup): Handle taskgroup reductions. + (create_task_copyfn): Copy over OMP_CLAUSE__REDUCTEMP_ pointer. + Handle OMP_CLAUSE_IN_REDUCTION and OMP_CLAUSE_REDUCTION clauses. + (lower_depend_clauses): If there are any + OMP_CLAUSE_DEPEND_DEPOBJ or OMP_CLAUSE_DEPEND_MUTEXINOUTSET + depend clauses, use a new array format. If OMP_CLAUSE_DEPEND_LAST is + seen, assume lowering is done already and return early. Set kind + on artificial depend clause to OMP_CLAUSE_DEPEND_LAST. + (lower_omp_taskreg): Handle reduction clauses with task modifier on + parallel construct. Handle reduction clause on taskloop construct. + Handle taskwait with depend clauses. + (lower_omp_1): Use lower_omp_taskreg instead of lower_omp_teams + for host teams constructs. + * tree.c (omp_clause_num_ops): Add in_reduction, task_reduction, + nontemporal and _reductemp_ clause entries. + (omp_clause_code_name): Likewise. + (walk_tree_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION, + OMP_CLAUSE_NONTEMPORAL and OMP_CLAUSE__REDUCTEMP_. + * tree-core.h (enum omp_clause_code): Add + OMP_CLAUSE_{{IN,TASK}_REDUCTION,NONTEMPORAL,_REDUCTEMP_}. + (enum omp_clause_defaultmap_kind, enum omp_memory_order): New. + (struct tree_base): Add omp_atomic_memory_order field into union. + Remove OMP_ATOMIC_SEQ_CST comment. + (enum omp_clause_depend_kind): Add OMP_CLAUSE_DEPEND_MUTEXINOUTSET + and OMP_CLAUSE_DEPEND_DEPOBJ. + (struct tree_omp_clause): Add subcode.defaultmap_kind. + * tree.def (OMP_TASKGROUP): Add another operand, move next to other + OpenMP constructs with body and clauses operands. + * tree.h (OMP_BODY): Use OMP_MASTER instead of OMP_TASKGROUP. + (OMP_CLAUSES): Use OMP_TASKGROUP instead of OMP_SINGLE. + (OMP_TASKGROUP_CLAUSES): Define. + (OMP_CLAUSE_DECL): Use OMP_CLAUSE__REDUCTEMP_ instead of + OMP_CLAUSE__LOOPTEMP_. + (OMP_ATOMIC_SEQ_CST): Remove. + (OMP_ATOMIC_MEMORY_ORDER, OMP_CLAUSE_FIRSTPRIVATE_NO_REFERENCE, + OMP_CLAUSE_LASTPRIVATE_CONDITIONAL): Define. + (OMP_CLAUSE_REDUCTION_CODE, OMP_CLAUSE_REDUCTION_INIT, + OMP_CLAUSE_REDUCTION_MERGE, OMP_CLAUSE_REDUCTION_PLACEHOLDER, + OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER, + OMP_CLAUSE_REDUCTION_OMP_ORIG_REF): Handle + OMP_CLAUSE_{,IN_,TASK_}REDUCTION. + (OMP_CLAUSE_REDUCTION_TASK, OMP_CLAUSE_REDUCTION_INSCAN, + OMP_CLAUSE_DEFAULTMAP_KIND, OMP_CLAUSE_DEFAULTMAP_CATEGORY, + OMP_CLAUSE_DEFAULTMAP_BEHAVIOR, OMP_CLAUSE_DEFAULTMAP_SET_KIND): + Define. + * tree-inline.c (remap_gimple_stmt): Remap taskgroup clauses. + * tree-nested.c (convert_nonlocal_omp_clauses): Handle + OMP_CLAUSE__REDUCTEMP_, OMP_CLAUSE_NONTEMPORAL. + (convert_local_omp_clauses): Likewise. Remove useless test. + * tree-parloops.c (create_call_for_reduction_1): Pass + OMP_MEMORY_ORDER_RELAXED as new argument to + dump_gimple_omp_atomic_load and dump_gimple_omp_atomic_store. + * tree-pretty-print.c (dump_omp_iterators): New function. + (dump_omp_clause): Handle OMP_CLAUSE__REDUCTEMP_, + OMP_CLAUSE_NONTEMPORAL, OMP_CLAUSE_{TASK,IN}_REDUCTION. Print + reduction modifiers. Handle OMP_CLAUSE_DEPEND_DEPOBJ and + OMP_CLAUSE_DEPEND_MUTEXINOUTSET. Print iterators in depend clauses. + Print __internal__ for OMP_CLAUSE_DEPEND_LAST. Handle cancel and + simd OMP_CLAUSE_IF_MODIFIERs. Handle new kinds of + OMP_CLAUSE_DEFAULTMAP. Print conditional: for + OMP_CLAUSE_LASTPRIVATE_CONDITIONAL. + (dump_omp_atomic_memory_order): New function. + (dump_generic_node): Use it. Print taskgroup clauses. Print + taskwait with depend clauses. + * tree-pretty-print.h (dump_omp_atomic_memory_order): Declare. + * tree-streamer-in.c (unpack_ts_omp_clause_value_fields): + Handle OMP_CLAUSE_{TASK,IN}_REDUCTION. + * tree-streamer-out.c (pack_ts_omp_clause_value_fields, + write_ts_omp_clause_tree_pointers): Likewise. + +2018-11-08 David Malcolm + + PR ipa/86395 + * doc/invoke.texi (-fdump-ipa-): Document the "-optimized", + "-missed", "-note", and "-all" sub-options. + * ipa-inline.c (caller_growth_limits): Port from fprintf to dump + API. + (can_early_inline_edge_p): Likewise. + (want_early_inline_function_p): Likewise. + (want_inline_self_recursive_call_p): Likewise. + (recursive_inlining): Likewise. + (inline_small_functions): Likewise. + (flatten_function): Likewise. + (ipa_inline): Likewise. + (inline_always_inline_functions): Likewise. + (early_inline_small_functions): Likewise. + (early_inliner): Likewise. + * tree-inline.c (expand_call_inline): Likewise. + +2018-11-08 David Malcolm + + * pretty-print.c (pp_format): Handle %f. + (selftest::test_pp_format): Add test of %f. + * pretty-print.h (pp_double): New macro. + +2018-11-08 David Malcolm + + * dump-context.h (ASSERT_IS_CGRAPH_NODE): New macro. + * dumpfile.c (make_item_for_dump_cgraph_node): Move to before... + (dump_pretty_printer::decode_format): Implement "%C" for + cgraph_node *. + (selftest::test_capture_of_dump_calls): Rename "where" to + "stmt_loc". Convert test_decl to a function decl and set its + location. Add a symbol_table_test RAII instance and a + cgraph_node, using it to test "%C" and dump_symtab_node. + +2018-11-08 Eric Botcazou + + PR middle-end/87916 + * cgraphclones.c (duplicate_thunk_for_node): Also set DECL_IGNORED_P. + +2018-11-08 David Malcolm + + * cgraph.c: Include "selftest.h". + (saved_symtab): New variable. + (selftest::symbol_table_test::symbol_table_test): New ctor. + (selftest::symbol_table_test::~symbol_table_test): New dtor. + (selftest::test_symbol_table_test): New test. + (selftest::cgraph_c_tests): New. + * cgraph.h (saved_symtab): New decl. + (selftest::symbol_table_test): New class. + * selftest-run-tests.c (selftest::run_tests): Call + selftest::cgraph_c_tests. + * selftest.h (selftest::cgraph_c_tests): New decl. + +2018-11-08 Richard Biener + + * tree-data-ref.h (lambda_int): New typedef. + (lambda_vector_gcd): Adjust. + (lambda_vector_new): Likewise. + (lambda_matrix_new): Likewise. + * tree-data-ref.c (print_lambda_vector): Adjust. + +2018-11-08 Richard Biener + + PR tree-optimization/87929 + * tree-complex.c (expand_complex_comparison): Clean EH. + +2018-11-08 Martin Liska + + * doc/extend.texi: Reword. + * predict.c (expr_expected_value_1): Likewise. + +2018-11-08 Richard Biener + + PR tree-optimization/87913 + * tree-ssa-phiopt.c (minmax_replacement): Turn EQ/NE compares + of extreme values to ordered comparisons. + +2018-11-07 Sandra Loosemore + + PR middle-end/42726 + * doc/invoke.texi (Code Gen Options): Clarify -fno-common behavior. + +2018-11-07 Sandra Loosemore + + * doc/invoke.texi: Remove leading dash from @opindex entries + throughout the file. + +2018-11-07 Sandra Loosemore + + PR driver/80828 + * doc/invoke.texi (Option Summary): Add -e and --entry. + (Link Options): Likewise. + +2018-11-07 Nathan Sidwell + + PR 87926 + * Makefile.in (bitmap.o-warn): Add -Wno-error to unbreak + --disable-checking bootstrap. + +2018-11-07 Hafiz Abid Qadeer + + * configure: Regenerated. + +2018-11-07 Jozef Lawrynowicz + + PR c/87691 + * stor-layout.c (compute_record_mode): Set TYPE_MODE of UNION_TYPE + to the mode of the widest field iff the widest field has mode class + MODE_INT, or MODE_PARTIAL_INT and the union would be passed by + reference. + +2018-11-07 Nikolai Merinov + + * common.opt: Add -Wattribute-warning. + * doc/invoke.texi: Add documentation for -Wno-attribute-warning. + * expr.c (expand_expr_real_1): Add new attribute to warning_at + call to allow user configure behavior of "warning" attribute. + +2018-11-07 Segher Boessenkool + + * target.def: Put @: after every vs., e.g., and i.e. where it is + followed by whitespace. + * doc/extend.texi: Ditto. + * doc/fragments.texi: Ditto. + * doc/gimple.texi: Ditto. + * doc/implement-c.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + * doc/md.texi: Ditto. + * doc/plugins.texi: Ditto. + * doc/rtl.texi: Ditto. + * doc/sourcebuild.texi: Ditto. + * doc/tm.texi.in: Ditto. + * doc/ux.texi: Ditto. + * doc/tm.texi: Regenerate. + +2018-11-07 Kyrylo Tkachov + + * config/arm/arm-cpus.in (ares): New entry. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Likewise. + * doc/invoke.texi (ARM Options): Document ares. + +2018-11-07 Kyrylo Tkachov + + * config/aarch64/aarch64-cores.def (ares): Define. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi (AArch64 Options): Document ares value for mtune. + +2018-11-07 Jan Hubicka + + * tree.c (fld_incomplete_type_of): Clear TREE_ADDRESSABLE. + (free_lang_data_in_decl): Set TREE_ADDRESSABLE for public vars and + functions; clear TYPE_DECL_SUPPRESS_DEBUG and DECL_MODE for + TYPE_DECL. + +2018-11-07 Richard Biener + + PR tree-optimization/87914 + * tree-vect-loop.c (vect_is_simple_reduction): Improve detection + of nested cycles. + (vectorizable_reduction): Handle shifts and rotates by dispatching + to vectorizable_shift. + * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Handle + in-loop uses of vect_nested_cycle defs. Merge cycle and internal + def cases. + (vectorizable_shift): Export and handle being called as + vect_nested_cycle. + (vect_analyze_stmt): Call vectorizable_shift after + vectorizable_reduction. + * tree-vectorizer.h (vectorizable_shift): Declare. + +2018-11-07 Jan Hubicka + + * ipa-devirt.c (odr_types_equivalent_p): Expect constants + than const decls in TREE_VALUE of enum. + (dump_type_inheritance_graph): Improve duplicate dumping. + (free_enum_values): New. + (build_type_inheritance_graph): Use it. + * tree.c (free_lang_data_in_type): Free TYPE_VALUES of enums + which are not main variants or not ODR types. + (verify_type_variant): Expect variants to have no TYPE_VALUES. + +2018-11-07 Richard Biener + + * ipa-inline.c (want_inline_small_function_p): Compute + big_speedup_p lazily and last. + +2018-11-07 Jan Hubicka + + * tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when + building incomplete variant of complete type. + (fld_type_variant): Do not copy TYPE_ALIGN when building incomplete + variant of complete type. + +2018-11-07 Chenghua Xu + + * config/mips/mips.c: Fix typo in documentation of + mips_loongson_ext2_prefetch_cookie. + (mips_option_override): fix brain twister logical. + * config/mips/mips.h: Fix typo in documentation of + ISA_HAS_CTZ_CTO and define pattern. + * config/mips/mips.md (prefetch): Hoist EXT2 above + the 2EF/EXT block. + (prefetch_indexed): Hoist EXT2 above the EXT block. + +2018-11-07 Jan Hubicka + + * tree.c (free_lang_data_in_type): Add fld parameter; simplify + return and parameter types of function and method types. + (free_lang_data_in_cgraph): Update. + +2018-11-07 Martin Liska + + PR rtl-optimization/87868 + * postreload-gcse.c (eliminate_partially_redundant_load): Set + threshold to max_count if we would overflow. + * profile-count.h: Make max_count a public constant. + +2018-11-07 Martin Liska + + * mem-stats.h: Fix GNU coding style. + +2018-11-07 Chenghua Xu + + * config/mips/gs264e.md: New. + * config/mips/mips-cpus.def: Define gs264e. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for + gs264e. + (mips_issue_rate): Add support for gs264e. + (mips_multipass_dfa_lookahead): Likewise. + * config/mips/mips.h: Define TARGET_GS264E and TUNE_GS264E. + (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs264e. + (MIPS_ASE_MSA_SPEC): New. + (BASE_DRIVER_SELF_SPECS): march=gs264e implies -mmsa. + (ISA_HAS_FUSED_MADD4): Enable for TARGET_GS264E. + (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_GS264E. + * config/mips/mips.md: Include gs264e.md. + (processor): Add gs264e. + * config/mips/mips.opt (MSA): Use Mask instead of Var. + * doc/invoke.texi: Add gs264e to supported architectures. + +2018-11-07 Chenghua Xu + + * config/mips/gs464e.md: New. + * config/mips/mips-cpus.def: Define gs464e. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for + gs464e. + (mips_issue_rate): Add support for gs464e. + (mips_multipass_dfa_lookahead): Likewise. + (mips_option_override): Enable MMI, EXT and EXT2 for gs464e. + * config/mips/mips.h: Define TARGET_GS464E and TUNE_GS464E. + (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464e. + (ISA_HAS_FUSED_MADD4): Enable for TARGET_GS464E. + (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_GS464E. + * config/mips/mips.md: Include gs464e.md. + (processor): Add gs464e. + * doc/invoke.texi: Add gs464e to supported architectures. + +2018-11-07 Chenghua Xu + + * config/mips/loongson3a.md: Rename to ... + * config/mips/gs464.md: ... here. + * config/mips/mips-cpus.def: Define gs464; Add loongson3a + as an alias of gs464 processor. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/mips.c (mips_issue_rate): Use PROCESSOR_GS464 + instead of PROCESSOR_LOONGSON_3A. + (mips_multipass_dfa_lookahead): Use TUNE_GS464 instead of + TUNE_LOONGSON_3A. + (mips_option_override): Enable MMI and EXT for gs464. + * config/mips/mips.h: Rename TARGET_LOONGSON_3A to TARGET_GS464; + Rename TUNE_LOONGSON_3A to TUNE_GS464. + (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464. + (ISA_HAS_ODD_SPREG, ISA_AVOID_DIV_HILO, ISA_HAS_FUSED_MADD4, + ISA_HAS_UNFUSED_MADD4): Use TARGET_GS464 instead of + TARGET_LOONGSON_3A. + * config/mips/mips.md: Include gs464.md instead of loongson3a.md. + (processor): Add gs464; + * doc/invoke.texi: Add gs464 to supported architectures. + +2018-11-07 Chenghua Xu + + * config/mips/mips-protos.h + (mips_loongson_ext2_prefetch_cookie): New prototype. + * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): New. + (mips_option_override): Enable TARGET_LOONGSON_EXT when + TARGET_LOONGSON_EXT2 is true. + * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define + __mips_loongson_ext2, __mips_loongson_ext_rev=2. + (ISA_HAS_CTZ_CTO): New, true if TARGET_LOONGSON_EXT2. + (ISA_HAS_PREFETCH): Include TARGET_LOONGSON_EXT and + TARGET_LOONGSON_EXT2. + (ASM_SPEC): Add mloongson-ext2 and mno-loongson-ext2. + (define_insn "ctz2"): New insn pattern. + (define_insn "prefetch"): Include TARGET_LOONGSON_EXT2. + (define_insn "prefetch_indexed_"): Include + TARGET_LOONGSON_EXT and TARGET_LOONGSON_EXT2. + * config/mips/mips.opt (-mloongson-ext2): Add option. + * gcc/doc/invoke.texi (-mloongson-ext2): Document. + +2018-11-07 Chenghua Xu + + * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add + __mips_loongson_ext. + (MIPS_ASE_LOONGSON_EXT_SPEC): New. + (BASE_DRIVER_SELF_SPECS): march=loongson3a implies + -mloongson-ext. + (ASM_SPEC): Add mloongson-ext and mno-loongson-ext. + * config/mips/mips.md (mul3, mul3_mul3_nohilo, + div3, mod3, prefetch): Use TARGET_LOONGSON_EXT + instead of TARGET_LOONGSON_3A. + * config/mips/mips.opt (-mloongson-ext): Add option. + * gcc/doc/invoke.texi (-mloongson-ext): Document. + +2018-11-07 Chenghua Xu + + * config.gcc (extra_headers): Add loongson-mmiintrin.h. + * config/mips/loongson.md: Move to ... + * config/mips/loongson-mmi.md: here; Adjustment. + * config/mips/loongson.h: Move to ... + State as deprecated. Include loongson-mmiintrin.h for back + compatibility and warning. + * config/mips/loongson-mmiintrin.h: ... here. + * config/mips/mips.c (mips_hard_regno_mode_ok_uncached, + mips_vector_mode_supported_p, AVAIL_NON_MIPS16): Use + TARGET_LOONGSON_MMI instead of TARGET_LOONGSON_VECTORS. + (mips_option_override): Make sure MMI use hard float; + (mips_shift_truncation_mask, mips_expand_vpc_loongson_even_odd, + mips_expand_vpc_loongson_pshufh, mips_expand_vpc_loongson_bcast, + mips_expand_vector_init): Use TARGET_LOONGSON_MMI instead of + TARGET_LOONGSON_VECTORS. + * gcc/config/mips/mips.h (TARGET_LOONGSON_VECTORS): Delete. + (TARGET_CPU_CPP_BUILTINS): Add __mips_loongson_mmi. + (MIPS_ASE_DSP_SPEC, MIPS_ASE_LOONGSON_MMI_SPEC): New. + (BASE_DRIVER_SELF_SPECS): march=loongson2e/2f/3a implies + -mloongson-mmi. + (SHIFT_COUNT_TRUNCATED): Use TARGET_LOONGSON_MMI instead of + TARGET_LOONGSON_VECTORS. + * gcc/config/mips/mips.md (MOVE64, MOVE128): Use + TARGET_LOONGSON_MMI instead of TARGET_LOONGSON_VECTORS. + (Loongson MMI patterns): Include loongson-mmi.md instead of + loongson.md. + * gcc/config/mips/mips.opt (-mloongson-mmi): New option. + * gcc/doc/invoke.texi (-mloongson-mmi): Document. + +2018-11-07 Richard Biener + + PR lto/87906 + * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Fixup + BLOCK_ABSTRACT_ORIGIN to be the ultimate origin. + +2018-11-07 Alexandre Oliva + + PR rtl-optimization/87874 + * lra.c (lra_substitute_pseudo): Do not create a subreg for + const wide ints. + +2018-11-06 Aaron Sawdey + + * config/rs6000/rs6000.md (bswap2): Force address into register + if not in indexed or indirect form. + (bswap2_load): Change predicate to indexed_or_indirect_operand. + (bswap2_store): Ditto. + +2018-11-06 Richard Earnshaw + + * config/aarch64/aarch64.md (speculation_tracker): Set the mode for + the UNSPEC. + +2018-11-06 Richard Biener + + PR tree-optimization/86850 + * vec.h (vec::splice): Check src.length () + instead of src.m_vec. + +2018-11-06 Jan Hubicka + + * tree.c (fld_simplified_type_name): Break out form ... + (free_lang_data_in_type): ... here. + (fld_type_variant_equal_p): Use it. + +2018-11-06 Rainer Orth + + * config/default-d.c: Include memmodel.h. + + * config/sol2-d.c: New file. + * config/t-sol2 (sol2-d.o): New rule. + * config.gcc <*-*-solaris2*>: Set d_target_objs, + target_has_targetdm. + +2018-11-06 Jan Hubicka + + * tree.c (fld_type_variant): Also copy alignment; be sure that + new variant is equal. + +2018-11-06 Ilya Leoshkevich + + PR target/87762 + * config/s390/s390.md: Add relative_long attribute. + +2018-11-06 Jan Hubicka + + * ipa-pure-const.c (check_decl): Do not test TYPE_NEEDS_CONSTRUCTING. + * lto-streamer-out.c (hash_tree): Do not hash TYPE_NEEDS_CONSTRUCTING. + * tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not + stream TYPE_NEEDS_CONSTRUCTING. + * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise. + * tree.c (free_lang_data_in_type): Clear TYPE_NEEDS_CONSTRUCTING. + +2018-11-06 Richard Biener + + * tree-vect-slp.c (vect_slp_bb): Move opening of vect_slp_analyze_bb + dump-scope ... + (vect_slp_analyze_bb_1): ... here to avoid hiding optimized locations. + +2018-11-06 Jozef Lawrynowicz + + * gcc/config/msp430/msp430.h (REG_CLASS_CONTENTS): Add R0 to + REG_CLASS_CONTENTS[GEN_REGS]. + (REGNO_REG_CLASS): Return NO_REGS for R2 and R3. + +2018-11-06 Jan Hubicka + + * tree.c (fld_simplified_type_of): Clear TYPELESS_STORAGE flag. + +2018-11-06 Rainer Orth + + PR sanitizer/80953 + * config/sol2.h (ASAN_CC1_SPEC): Define. + (LD_WHOLE_ARCHIVE_OPTION): Define. + (LD_NO_WHOLE_ARCHIVE_OPTION): Define. + (ASAN_REJECT_SPEC): Provide default. + (LIBASAN_EARLY_SPEC): Define. + (LIBTSAN_EARLY_SPEC): Define. + (LIBLSAN_EARLY_SPEC): Define. + * config/i386/sol2.h (CC1_SPEC): Redefine. + (ASAN_REJECT_SPEC): Define. + + * config/sparc/sparc.c (sparc_asan_shadow_offset): Declare. + (TARGET_ASAN_SHADOW_OFFSET): Define. + (sparc_asan_shadow_offset): New function. + * config/sparc/sol2.h (CC1_SPEC): Append ASAN_CC1_SPEC. + (ASAN_REJECT_SPEC): Define. + +2018-11-06 Jan Hubicka + + * tree.c (fld_type_variant): Copy canonical type. + (fld_incomplete_type_of): Check that canonical types looks sane; + copy canonical type. + (verify_type): Accept when incomplete type has complete canonical type. + +2018-11-06 Jan Hubicka + + * tree.c (free_lang_data): Reset overwite_assembler_name, + print_xnode, print_decl, print_type and print_identifier of + langhooks. + +2018-11-06 Richard Biener + + PR tree-optimization/87889 + * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): + Do nothing if old and new arg are the same + +2018-11-06 Andreas Krebbel + + PR target/87723 + * config/s390/s390.md ("*rsbg_di_rotl"): Remove mode + attributes for operands 3 and 4. + +2018-11-06 Richard Biener + + PR middle-end/18041 + * simplify-rtx.c (simplify_binary_operation_1): Add pattern + matching bitfield insertion. + +2018-11-06 Alexandre Oliva + + * auto-inc-dec.c: Include valtrack.h. Improve comments. + (reg_next_debug_use): New. + (attempt_change): Propagate adjusted expression into affected + debug insns. + (merge_in_block): Track uses in debug insns. + (pass_inc_dec::execute): Allocate and release + reg_next_debug_use. + +2018-11-06 Wei Xiao + + * config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics. + (_mm512_fixupimm_round_pd): Update parameters and builtin. + (_mm512_maskz_fixupimm_round_pd): Ditto. + (_mm512_fixupimm_round_ps): Ditto. + (_mm512_maskz_fixupimm_round_ps): Ditto. + (_mm_fixupimm_round_sd): Ditto. + (_mm_maskz_fixupimm_round_sd): Ditto. + (_mm_fixupimm_round_ss): Ditto. + (_mm_maskz_fixupimm_round_ss): Ditto. + (_mm512_fixupimm_pd): Ditto. + (_mm512_maskz_fixupimm_pd): Ditto. + (_mm512_fixupimm_ps): Ditto. + (_mm512_maskz_fixupimm_ps): Ditto. + (_mm_fixupimm_sd): Ditto. + (_mm_maskz_fixupimm_sd): Ditto. + (_mm_fixupimm_ss): Ditto. + (_mm_maskz_fixupimm_ss): Ditto. + (_mm512_mask_fixupimm_round_pd): Update builtin. + (_mm512_mask_fixupimm_round_ps): Ditto. + (_mm_mask_fixupimm_round_sd): Ditto. + (_mm_mask_fixupimm_round_ss): Ditto. + (_mm512_mask_fixupimm_pd): Ditto. + (_mm512_mask_fixupimm_ps): Ditto. + (_mm_mask_fixupimm_sd): Ditto. + (_mm_mask_fixupimm_ss): Ditto. + * config/i386/avx512vlintrin.h: + (_mm256_fixupimm_pd): Update parameters and builtin. + (_mm256_maskz_fixupimm_pd): Ditto. + (_mm256_fixupimm_ps): Ditto. + (_mm256_maskz_fixupimm_ps): Ditto. + (_mm_fixupimm_pd): Ditto. + (_mm_maskz_fixupimm_pd): Ditto. + (_mm_fixupimm_ps): Ditto. + (_mm_maskz_fixupimm_ps): Ditto. + (_mm256_mask_fixupimm_pd): Update builtin. + (_mm256_mask_fixupimm_ps): Ditto. + (_mm_mask_fixupimm_pd): Ditto. + (_mm_mask_fixupimm_ps): Ditto. + * config/i386/i386-builtin-types.def: Add new types and remove useless ones. + * config/i386/i386-builtin.def: Update builtin definitions. + * config/i386/i386.c: Handle new builtin types and remove useless ones. + * config/i386/sse.md: Update VFIXUPIMM* patterns. + (_fixupimm_maskz): Update. + (_fixupimm): Update. + (_fixupimm_mask): Update. + (avx512f_sfixupimm_maskz): Update. + (avx512f_sfixupimm): Update. + (avx512f_sfixupimm_mask): Update. + * config/i386/subst.md: + (round_saeonly_sd_mask_operand4): Add new subst_attr. + (round_saeonly_sd_mask_op4): Ditto. + (round_saeonly_expand_operand5): Ditto. + (round_saeonly_expand): Update. + +2018-11-05 Max Filippov + + * config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0. + +2018-11-05 Segher Boessenkool + + PR rtl-optimization/87871 + * combine.c (make_more_copies): Skip if dest is frame_pointer_rtx. + +2018-11-05 Paul Koning + + * doc/sourcebuild.texi (target attributes): Document new "inf" + effective target keyword. + +2018-11-05 Robin Dapp + + * config/s390/s390.c (s390_register_move_cost): Increase costs for + moves involving the CC reg. + +2018-11-05 Richard Biener + + PR tree-optimization/87873 + * tree-ssa-loop-manip.h (split_loop_exit_edge): Add copy_constants_p + argument. + * tree-ssa-loop-manip.c (split_loop_exit_edge): Likewise. + * tree-vect-loop.c (vect_transform_loop): When splitting the + loop exit also create forwarder PHIs for constants. + * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): + Handle constant to_arg, add extra checking we match up the correct + PHIs. + +2018-11-05 Robin Dapp + + * config/s390/s390.md: QImode and HImode for load on condition. + +2018-11-05 Robin Dapp + + * config/s390/predicates.md: Fix typo. + * config/s390/s390.md: Allow immediates for load on condition. + +2018-11-05 Martin Liska + + * alloc-pool.h (struct pool_usage): Use SIZE_AMOUNT. + * bitmap.h (struct bitmap_usage): Likewise. + * ggc-common.c (SCALE): Remove. + (LABEL): Likewise. + (struct ggc_usage): Use SIZE_AMOUNT. And update + compare method. + * ggc-page.c (SCALE): Remove. + (STAT_LABEL): Remove. + (ggc_print_statistics): Use SIZE_AMOUNT. + * gimple.h (SCALE): Remove. + (LABEL): Likewise. + * input.c (ONE_K): Remove. + (ONE_M): Likewise. + (SCALE): Likewise. + (STAT_LABEL): Likewise. + (FORMAT_AMOUNT): Likewise. + (dump_line_table_statistics): Use SIZE_AMOUNT. + * mem-stats.h (struct mem_usage): Likewise. + * rtl.c (dump_rtx_statistics): Likewise. + (rtx_alloc_counts): Change type to size_t. + (rtx_alloc_sizes): Likewise. + (rtx_count_cmp): New. + (dump_rtx_statistics): Sort first based on counts. + * tree.c (tree_nodes_cmp): New. + (tree_codes_cmp): New. + (dump_tree_statistics): Sort first based on counts. + * system.h (ONE_K): New. + (ONE_M): Likewise. + (SIZE_SCALE): Likewise. + (SIZE_LABEL): Likewise. + (SIZE_AMOUNT): Likewise. + * tree-cfg.c (dump_cfg_stats): Use SIZE_AMOUNT. + * tree-dfa.c (dump_dfa_stats): Likewise. + * tree-phinodes.c (phinodes_print_statistics): Likewise. + * tree-ssanames.c (ssanames_print_statistics): Likewise. + * tree.c (dump_tree_statistics): Likewise. + * vec.c (struct vec_usage): Likewise. + * trans-mem.c (tm_mangle): Enlarge buffer in order to not + trigger a -Werror=format-overflow with + --enable-gather-detailed-stats. + +2018-11-05 Martin Liska + + * mem-stats.h (mem_alloc_description::release_instance_overhead): + Return T *. + * vec.c (struct vec_usage): Register m_element_size. + (vec_prefix::register_overhead): New arguments: elements and + element_size. + (vec_prefix::release_overhead): Subtract elements. + * vec.h (struct vec_prefix): Change signature. + (va_heap::reserve): Pass proper arguments. + (va_heap::release): Likewise. + +2018-11-05 Martin Liska + + * mem-stats.h (mem_alloc_description::get_list): Fix GNU coding + style. + * vec.c: Likewise. + +2018-11-05 Richard Biener + + * tree-scalar-evolution.h (final_value_replacement_loop): Update + prototype. + * tree-scalar-evolution.c (final_value_replacement_loop): Return + whether anything was done. + (scev_const_prop): Remove constant propagation part, fold + remains into ... + * tree-ssa-loop.c (pass_scev_cprop::execute): ... here. + (pass_data_scev_cprop): TODO_cleanup_cfg is now done + conditionally. + +2018-11-05 Jakub Jelinek + + PR tree-optimization/87859 + * gimple-ssa-store-merging.c (struct merged_store_group): Add + only_constants and first_nonmergeable_order members. + (merged_store_group::merged_store_group): Initialize them. + (merged_store_group::do_merge): Clear only_constants member if + adding something other than INTEGER_CST store. + (imm_store_chain_info::coalesce_immediate_stores): Don't merge + stores with order >= first_nonmergeable_order. Use + merged_store->only_constants instead of always recomputing it. + Set merged_store->first_nonmergeable_order if we've skipped any + stores. Attempt to merge overlapping INTEGER_CST stores that + we would otherwise skip. + + PR sanitizer/87837 + * match.pd (X + Y < X): Don't optimize if TYPE_OVERFLOW_SANITIZED. + +2018-11-05 Xuepeng Guo + + PR target/87853 + * config/i386/emmintrin.h (__v16qs): New to cope with option + -funsigned-char. + (_mm_cmpeq_epi8): Replace __v16qi with __v16qs. + (_mm_cmplt_epi8): Likewise. + (_mm_cmpgt_epi8): Likewise. + +2018-11-05 Richard Biener + + PR rtl-optimization/87852 + * fwprop.c (use_killed_between): Only consider single-defs of the + use whose definition statement dominates the use. + +2018-11-05 Martin Liska + + PR web/87829 + * doc/invoke.texi: Remove options that are + not disabled with -Os. + +2018-11-05 Martin Liska + + PR c/87811 + * doc/extend.texi: Update constrain about the last argument + of __builtin_expect_with_probability. + +2018-11-05 Martin Liska + + PR c/87811 + * predict.c (expr_expected_value_1): Verify + that last argument is a real constants and emit + error. + +2018-11-05 Martin Liska + + PR gcov-profile/77698 + * ipa-profile.c (ipa_profile): Adjust hotness threshold + only in LTO mode. + +2018-11-04 Bernd Edlinger + + PR tree-optimization/86572 + * builtins.c (c_strlen): Handle negative offsets in a safe way. + +2018-11-04 Bernd Edlinger + + PR tree-optimization/87672 + * gimple-fold.c (gimple_fold_builtin_stxcpy_chk): Gimplify. + * tree-ssa-strlen.c (handle_builtin_strcat): Adjust object size. + +2018-11-04 Uros Bizjak + + PR middle-end/58372 + * cfgexpand.c (pass_expand::execute): Move the call to + finish_eh_generation in front of the call to expand_stack_alignment. + +2018-11-04 Venkataramanan Kumar + + * common/config/i386/i386-common.c (processor_alias_table): Add + znver2 entry. + * config.gcc (i[34567]86-*-linux* | ...): Add znver2. + (case ${target}): Add znver2. + * config/i386/driver-i386.c: (host_detect_local_cpu): Let + -march=native recognize znver2 processors. + * config/i386/i386-c.c (ix86_target_macros_internal): Add znver2. + * config/i386/i386.c (m_znver2): New definition. + (m_ZNVER): New definition. + (m_AMD_MULTIPLE): Includes m_znver2. + (processor_cost_table): Add znver2 entry. + (processor_target_table): Add znver2 entry. + (get_builtin_code_for_version): Set priority for + PROCESSOR_ZNVER2. + (processor_model): Add M_AMDFAM17H_ZNVER2. + (arch_names_table): Ditto. + (ix86_reassociation_width): Include znver2. + * config/i386/i386.h (TARGET_znver2): New definition. + (struct ix86_size_cost): Add TARGET_ZNVER2. + (enum processor_type): Add PROCESSOR_ZNVER2. + * config/i386/i386.md (define_attr "cpu"): Add znver2. + * config/i386/x86-tune-costs.h: (processor_costs) Add znver2 costs. + * config/i386/x86-tune-sched.c: (ix86_issue_rate): Add znver2. + (ix86_adjust_cost): Add znver2. + * config/i386/x86-tune.def: Replace m_ZNVER1 by m_ZNVER. + * gcc/doc/extend.texi: Add details about znver2. + * gcc/doc/invoke.texi: Add details about znver2. + +2018-11-03 Sandra Loosemore + + PR target/87079 + + * config/nios2/nios2.c (nios2_rtx_costs): Recognize sidi3 + pattern. + +2018-11-02 Aaron Sawdey + + * config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Pay + attention to TARGET_AVOID_XFORM and BYTES_BIG_ENDIAN. + +2018-11-02 Richard Earnshaw + + * config/aarch64/aarch64.c ((aarch64_override_options): Disable + shrink-wrapping when -mtrack-speculation. + +2018-11-02 Richard Biener + + * tree-ssa-coalesce.c (struct coalesce_list): Add obstack member. + (pop_cost_one_pair): Do not free pair. + (pop_best_coalesce): Likewise. + (create_coalesce_list): Initialize obstack. + (delete_coalesce_list): Free obstack. + (find_coalesce_pair): Obstack-allocate coalesce pairs. + (add_cost_one_coalesce): Likewise. + (struct live_track): Remove bitmap pointer indirections. + (new_live_track): Adjust. + (delete_live_track): Likewise. + (live_track_remove_partition): Likewise. + (live_track_add_partition): Likewise. + (live_track_live_p): Likewise. + (live_track_process_def): Likewise. + (live_track_clear_base_vars): Likewise. + +2018-11-02 Rainer Orth + + * configure.ac (gcc_cv_as_sparc_register_op): Remove. + * configure: Regenerate. + * config.in: Regenerate. + * config/sparc/sparc.c (sparc_output_scratch_registers): Remove + HAVE_AS_REGISTER_PSEUDO_OP guard. + * config/sparc/sparc.h (ASM_ARCH64_SPEC): Remove + !HAVE_AS_REGISTER_PSEUDO_OP support. + (ASM_DECLARE_REGISTER_GLOBAL): Remove HAVE_AS_REGISTER_PSEUDO_OP + guard. + +2018-11-02 Richard Biener + + * dwarf2out.c (build_abbrev_table): Guard lookup_external_ref call + with is_type_die. + +2018-11-02 Richard Biener + + PR tree-optimization/87776 + * tree-ssa-sccvn.c (do_rpo_vn): Do not mark backedges + executable when iterating but running into rpo-vn-max-loop-depth + and not eliding the iteration. + +2018-11-30 Jan Hubicka + + * tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of + TYPE_DECL. + +2018-11-01 Aaron Sawdey + + * config/rs6000/rs6000-protos.h (rs6000_address_for_fpconvert): Remove + prototype. + * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): + Combine with rs6000_address_for_fpconvert. + (rs6000_address_for_fpconvert): Combine with + rs6000_force_indexed_or_indirect_mem. + (rs6000_expand_vector_init): Change function call from + rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem. + * config/rs6000/rs6000.md (floatsi2_lfiwax): Change call from + rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem. + (floatsi2_lfiwax_mem): Ditto. + (floatunssi2_lfiwzx): Ditto. + (floatunssi2_lfiwzx_mem): Ditto. + (float2): Ditto. + (floatuns2): Ditto. + (fix_truncsi2_stfiwx): Ditto. + (fixuns_truncsi2_stfiwx): Ditto. + (float_si2_hw): Ditto. + (floatuns_si2_hw): Ditto. + * config/rs6000/vsx.md (*vsx_extract_si): Ditto. + (vsx_splat_): Ditto. + +2018-11-01 Joseph Myers + + * configure.ac (gcc_cv_as_ia64_ltoffx_ldxmov_relocs): Add newline + at end of assembler input text. + * configure: Regenerate. + +2018-11-01 Jakub Jelinek + + PR tree-optimization/87826 + * gimple-ssa-store-merging.c (do_shift_rotate): Punt if count is + negative or larger or equal to type's precision. + +2018-10-31 Alexandre Oliva + + * opts.c (default_options_table): Do not enable + OPT_fdelayed_branch at -Og. + * doc/invoke.texi (-fdelayed-branch): Document it. + +2018-10-31 Richard Henderson + + * optabs-libfuncs.c (build_libfunc_function_visibility): + New, split out from... + (build_libfunc_function): ... here. + (init_one_libfunc_visibility): New, split out from ... + (init_one_libfunc): ... here. + + * config/aarch64/atomics.md (aarch64_atomic__lse): + scratch register need not be early-clobber. Document the reason + why we cannot use ST. + +2018-10-31 Joseph Myers + + PR bootstrap/82856 + * configure.ac: Remove AC_PREREQ. Use AC_LANG_SOURCE. Use single + line for second argument of AC_DEFINE_UNQUOTED. + * doc/install.texi (Tools/packages necessary for modifying GCC): + Update to autoconf 2.69 and automake 1.15.1. + * aclocal.m4, config.in, configure: Regenerate. + +2018-10-31 Pat Haugen + + * tree-ssa-loop-ivcanon.c (try_peel_loop): Fix typo and remove dead + initialization. + +2018-10-31 Martin Liska + + PR driver/83193 + * common/config/aarch64/aarch64-common.c (aarch64_parse_extension): + Add new argument invalid_extension. + (aarch64_get_all_extension_candidates): New function. + (aarch64_rewrite_selected_cpu): Add NULL to function call. + * config/aarch64/aarch64-protos.h (aarch64_parse_extension): Add + new argument. + (aarch64_get_all_extension_candidates): New function. + * config/aarch64/aarch64.c (aarch64_parse_arch): Add new + argument invalid_extension. + (aarch64_parse_cpu): Likewise. + (aarch64_print_hint_for_extensions): New function. + (aarch64_validate_mcpu): Provide hint about invalid extension. + (aarch64_validate_march): Likewise. + (aarch64_handle_attr_arch): Pass new argument. + (aarch64_handle_attr_cpu): Provide hint about invalid extension. + (aarch64_handle_attr_isa_flags): Likewise. + +2018-10-31 Richard Biener + + PR middle-end/70359 + PR middle-end/86270 + * tree-outof-ssa.c (insert_backedge_copies): Restrict + copy generation to useful cases. Place the copy before + the definition of the backedge value when possible. + +2018-10-31 Claudiu Zissulescu + + * config/arc/arc-arch.h (ARC_TUNE_ARC7XX): New tune value. + * config/arc/arc.c (arc_active_insn): New function. + (check_store_cacheline_hazard): Likewise. + (workaround_arc_anomaly): Use check_store_cacheline_hazard. + (arc_override_options): Disable delay slot scheduler for older + A7. + (arc_store_addr_hazard_p): New implementation, old one renamed to + ... + (arc_store_addr_hazard_internal_p): Renamed. + (arc_reorg): Don't combine into brcc instructions which are part + of hardware hazard solution. + * config/arc/arc.md (attr tune): Consider new arc7xx tune value. + (tune_arc700): Likewise. + * config/arc/arc.opt (arc7xx): New tune value. + * config/arc/arc700.md: Improve A7 scheduler. + +2018-10-31 Claudiu Zissulescu + + * config/arc/arc.c (arc_override_options): Remove + TARGET_COMPACT_CASESI. + * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Update. + (CASE_VECTOR_MODE): Likewise. + (CASE_VECTOR_PC_RELATIVE): Likewise. + (CASE_VECTOR_SHORTEN_MODE): Likewise. + (CASE_VECTOR_SHORTEN_MODE1): Delete. + (ADDR_VEC_ALIGN): Update. + (ASM_OUTPUT_CASE_LABEL): Undefine. + (ASM_OUTPUT_BEFORE_CASE_LABEL): Undefine. + (TARGET_BI_BIH): Define. + (DEFAULT_BRANCH_INDEX): Likewise. + * config/arc/arc.md (casesi): Rework to accept BI/BIH + instructions, remove compact_casesi use case. + (casesi_compact_jump): Remove. + (casesi_dispatch): New pattern. + * config/arc/arc.opt: Add mbranch-index option. Deprecate + compact_casesi option. + * doc/invoke.texi: Document mbranch-index option. + +2018-10-31 Claudiu Zissulescu + + * config/arc/arc.c (arc_get_tp): Remove function. + (arc_emit_call_tls_get_addr): Likewise. + (arc_call_tls_get_addr): New function. + (arc_legitimize_tls_address): Make use of arc_call_tls_get_addr. + * config/arc/arc.md (tls_load_tp_soft): Remove. + (tls_gd_get_addr): Likewise. + +2018-10-31 Claudiu Zissulescu + + * config/arc/arc.md (mulsi3): Remove call to mulsi_600_lib. + (mulsi3_600_lib): Remove pattern. + (umulsi3_highpart_600_lib_le): Likewise. + (umulsi3_highpart): Remove call to umulsi3_highpart_600_lib_le. + (umulsidi3): Remove call to umulsidi3_600_lib. + (umulsidi3_600_lib): Remove pattern. + (peephole2): Remove peephole using the above deprecated patterns. + +2018-10-31 Thomas Preud'homme + + PR target/87374 + * config/arm/arm.c (arm_option_check_internal): Disable the combined + use of -mslow-flash-data and -mword-relocations. + (arm_option_override): Enable -mword-relocations if -fpic or -fPIC. + * config/arm/arm.md (SYMBOL_REF MOVT splitter): Stop checking for + flag_pic. + * doc/invoke.texi (-mword-relocations): Mention conflict with + -mslow-flash-data. + (-mslow-flash-data): Reciprocally. + +2018-10-31 Richard Henderson + + * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Force + 16-byte modes held in GP registers to use an even regno. + + * config/aarch64/aarch64.c (aarch64_emit_bic): Remove. + (aarch64_atomic_ldop_supported_p): Remove. + (aarch64_gen_atomic_ldop): Remove. + * config/aarch64/atomic.md (atomic_): + Fully expand LSE operations here. + (atomic_fetch_): Likewise. + (atomic__fetch): Likewise. + (aarch64_atomic__lse): Drop atomic_op iterator + and use ATOMIC_LDOP instead; use register_operand for the input; + drop the split and emit insns directly. + (aarch64_atomic_fetch__lse): Likewise. + (aarch64_atomic__fetch_lse): Remove. + (@aarch64_atomic_load): Remove. + + * config/aarch64/aarch64.c (aarch64_emit_atomic_swap): Remove. + (aarch64_gen_atomic_ldop): Don't call it. + * config/aarch64/atomics.md (atomic_exchange): + Use aarch64_reg_or_zero. + (aarch64_atomic_exchange): Likewise. + (aarch64_atomic_exchange_lse): Remove split; remove & from + operand 0; use aarch64_reg_or_zero for input; merge ... + (@aarch64_atomic_swp): ... this and remove. + + * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): New. + (aarch64_split_compare_and_swap): Use it. + (aarch64_expand_compare_and_swap): Likewise. Remove convert_modes; + test oldval against the proper predicate. + * config/aarch64/atomics.md (@atomic_compare_and_swap): + Use nonmemory_operand for expected. + (cas_short_expected_pred): New. + (@aarch64_compare_and_swap): Use it; use "rn" not "rI" to match. + (@aarch64_compare_and_swap): Use "rn" not "rI" for expected. + * config/aarch64/predicates.md (aarch64_plushi_immediate): New. + (aarch64_plushi_operand): New. + + * config/aarch64/aarch64.c (aarch64_expand_compare_and_swap): + Force oldval into the rval register for TARGET_LSE; emit the compare + during initial expansion so that it may be deleted if unused. + (aarch64_gen_atomic_cas): Remove. + * config/aarch64/atomics.md (@aarch64_compare_and_swap_lse): + Change =&r to +r for operand 0; use match_dup for operand 2; + remove is_weak and mod_f operands as unused. Drop the split + and merge with... + (@aarch64_atomic_cas): ... this pattern's output; remove. + (@aarch64_compare_and_swap_lse): Similarly. + (@aarch64_atomic_cas): Similarly. + +2018-10-31 Richard Biener + + * tree-eh.c (replace_trapping_overflow): Simplify ABS_EXPR case + using ABSU_EXPR. + +2018-10-31 Sameera Deshpande + + * config/aarch64/aarch64-cores.def (saphira): Use saphira pipeline. + * config/aarch64/aarch64.md: Include saphira.md + * config/aarch64/saphira.md: New file for pipeline description. + +2018-10-30 Martin Sebor + + PR middle-end/87041 + * gimple-ssa-sprintf.c (format_directive): Use %G to include + inlining context. + (sprintf_dom_walker::compute_format_length): + Avoid setting POSUNDER4K here. + (get_destination_size): Handle null argument values. + (get_user_idx_format): New function. + (sprintf_dom_walker::handle_gimple_call): Handle all printf-like + functions, including user-defined with attribute format printf. + Use %G to include inlining context. + Set POSUNDER4K here. + +2018-10-30 Jan Hubicka + + * params.def (lto-partitions): Bump from 32 to 128. + +2018-10-30 Jan Hubicka + + * tree.c + (free_lang_data_d, add_tree_to_fld_list, fld_worklist_push): Move + head in file. + (free_lang_data_in_type): Forward declare. + (fld_type_variant_equal_p): New function. + (fld_type_variant): New function + (fld_incomplete_types): New hash. + (fld_incomplete_type_of): New function + (fld_simplfied-type): New function. + (free_lang_data_in_decl): Add fld parameter; simplify type of FIELD_DECL + (free_lang_data): Allocate and free fld_incomplete_type; update call + of free_lang_data_in_decl. + +2018-10-30 Eric Botcazou + + * gcov.c (output_lines): Remove duplicate line. + +2018-10-30 Aaron Sawdey + + * config/rs6000/rs6000.md (bswapdi2): Force address into register + if not in indexed or indirect form. + (bswapdi2_load): Change predicate to indexed_or_indirect_operand. + (bswapdi2_store): Ditto. + * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): New + helper function. + * config/rs6000/rs6000-protos.h (rs6000_force_indexed_or_indirect_mem): + Prototype for helper function. + +2018-10-30 Martin Sebor + + * doc/extend.texi (optimize): Clarify/expand attribute documentation. + (target, pragma GCC optimize, pragma GCC target): Ditto. + +2018-10-30 Jonathan Wakely + + * doc/extend.texi: Fix prototype and description of + __builtin_expect_with_probability. + +2018-10-30 Michael Ploujnikov + + * cgraph.h (clone_function_name_1): Replaced by new + clone_function_name_numbered that takes name as string; for + privatize_symbol_name_1 use only. + (clone_function_name): Renamed to + clone_function_name_numbered to be explicit about numbering. + (clone_function_name): New two-argument function that does + not number its output. + (clone_function_name): New three-argument function that + takes a number to append to its output. + * cgraphclones.c (duplicate_thunk_for_node): + (clone_function_name_1): Renamed. + (clone_function_name_numbered): Two new functions. + (clone_function_name): Improved documentation. + (cgraph_node::create_virtual_clone): Use clone_function_name_numbered. + * config/rs6000/rs6000.c (make_resolver_func): Ditto. + * final.c (final_scan_insn_1): Use the new clone_function_name + without numbering. + * multiple_target.c (create_dispatcher_calls): Ditto. + (create_target_clone): Ditto. + * omp-expand.c (grid_expand_target_grid_body): Ditto. + * omp-low.c (create_omp_child_function_name): Ditto. + * omp-simd-clone.c (simd_clone_create): Ditto. + * symtab.c (simd_symtab_node::noninterposable_alias): Use the + new clone_function_name without numbering. + +2018-10-30 Richard Earnshaw + + * alloc-pool.h (base_pool_allocator ::initialize): + Assert that the allocation size is not zero. + +2018-10-30 Richard Biener + + PR tree-optimization/87800 + * tree-vect-slp.c (vect_build_slp_tree_2): Reject any + non-induction or reduction PHIs. + +2018-10-30 Sameera Deshpande + + * config/aarch64/falkor-tag-collision-avoidance.c + (execute_tag_collision_avoidance): Call df_note_add_problem. + +2018-10-30 Martin Liska + + * doc/extend.texi: Fix typo in documentation + of __builtin_expect_with_probability. + +2018-10-29 David Malcolm + + PR c++/87721 + * input.c (get_substring_ranges_for_loc): Detect if + linemap_resolve_location gives us a NULL map, and reject + this case. + +2018-10-29 Iain Buclaw + + * config.gcc (xstormy16-*-elf): Set tm_d_file. + +2018-10-29 David Malcolm + Martin Sebor + Manuel Lopez-Ibanez + + * doc/ux.texi (Quoting): New subsection, adapted from material at + https://gcc.gnu.org/wiki/DiagnosticsGuidelines written by + MartinSebor and ManuelLopezIbanez. + (Fix-it hints): Note that fix-it hints shouldn't be marked for + translation. + +2018-10-29 Kugan Vivekanandarajah + + PR middle-end/87469 + * tree-ssa-loop-niter.c (number_of_iterations_popcount): Fix niter + max value. + +2018-10-29 Paul A. Clarke + + * gcc.target/powerpc/ssse3-check.h: Remove inaccurate comment. + +2018-10-29 Paul Koning + + * doc/rtl.texi (CONST_WIDE_INT_ELT): Give correct macro name. + +2018-10-29 Paul A. Clarke + + * gcc/config/rs6000/mmintrin.h (_mm_packs_pi16, _mm_packs_pi32, + _mm_packs_pu16, _mm_unpackhi_pi8, _mm_unpacklo_pi8, _mm_add_pi8, + _mm_add_pi16, _mm_add_pi32, _mm_sub_pi8, _mm_sub_pi16, _mm_sub_pi32, + _mm_cmpgt_pi8, _mm_cmpeq_pi16, _mm_cmpgt_pi16, _mm_cmpeq_pi32, + _mm_cmpgt_pi32, _mm_adds_pi8, _mm_adds_pi16, _mm_adds_pu8, + _mm_adds_pu16, _mm_subs_pi8, _mm_subs_pi16, _mm_subs_pu8, + _mm_subs_pu16, _mm_madd_pi16, _mm_mulhi_pi16, _mm_mullo_pi16, + _mm_sll_pi16, _mm_sra_pi16, _mm_srl_pi16, _mm_set1_pi16, _mm_set1_pi8): + Change 'vector' to '__vector'. + * gcc/config/rs6000/xmmintrin.h (_mm_cvtps_pi32, _mm_cvttps_pi32, + _mm_cvtps_pi16, _mm_cvtps_pi8, _mm_max_pi16, _mm_max_pu8, _mm_min_pi16, + _mm_min_pu8, _mm_mulhi_pu16, _mm_shuffle_pi16, _mm_avg_pu8, + _mm_avg_pu16): Likewise. And, whitespace corrections. + +2018-10-29 Richard Biener + + PR tree-optimization/87785 + * tree-vect-slp.c (vect_gather_slp_loads): Only gather + internal defs. + +2018-10-29 Olivier Hainque + + * VXWORKS_NET_LIBS_RTP: New macro, network part of VXWORKS_LIBS_RTP. + +2018-10-29 Olivier Hainque + + * config/vxworks.h (VXWORKS_PERSONALITY): New VxWorks + ports configuration macro, defaults to "gnu". + (VXWORKS_OS_CPP_BUILTINS): Use it. Feed TOOL and + TOOL_FAMILY instead of _VX_TOOL/_VXTOOL_FAMILY. + +2018-10-29 Olivier Hainque + + * config/vxworks.h (CLEAR_INSN_CACHE): #undef before #define. + +2018-10-29 Richard Biener + + PR tree-optimization/87790 + * tree-vect-slp.c (vect_mark_slp_stmts): Simplify. + (vect_make_slp_decision): Adjust. + (vect_slp_analyze_bb_1): Likewise. + (vect_detect_hybrid_slp_stmts): Properly union SLP type over + edges. + +2018-10-29 Richard Biener + + PR tree-optimization/87785 + * tree-vect-slp.c (vect_build_slp_tree_2): Remove loads argument + and processing. + (vect_build_slp_tree): Likewise. + (vect_gather_slp_loads): New function. + (vect_analyze_slp_instance): Gather loads separately from the + SLP tree build. + +2018-10-29 Martin Liska + + * Makefile.in: Make dependency to json.o. + * doc/gcov.texi: Document new JSON format, remove + old intermediate format documentation. + * gcov.c (struct function_info): Come up with m_name and + m_demangled_name. + (function_info::function_info): Initialize it. + (function_info::~function_info): Release it. + (main): Rename flag_intermediate_format to flag_json_format. + (print_usage): Describe --json-format. + (process_args): Set flag_json_format. + (output_intermediate_line): Remove. + (output_intermediate_json_line): Likewise. + (get_gcov_intermediate_filename): Return new extension + ".gcov.json.gz". + (output_intermediate_file): Implement JSON emission. + (output_json_intermediate_file): Implement JSON emission. + (generate_results): Use ::get_name for function name. + Handle JSON output file. + (read_graph_file): Use ::get_name instead of cplus_demangle. + (read_count_file): Likewise. + (solve_flow_graph): Likewise. + (add_line_counts): Likewise. + (accumulate_line_counts): Use new flag_json_format. + (output_function_details): Use ::get_name instead of cplus_demangle. + (output_lines): Likewise. + * json.cc (test_writing_literals): Add new tests. + * json.h (class literal): Add new boolean constructor. + +2018-10-29 Segher Boessenkool + + PR rtl-optimization/87701 + PR rtl-optimization/87780 + * combine.c (make_more_copies): Rewrite. + +2018-10-28 Kugan Vivekanandarajah + + * doc/generic.texi (ABSU_EXPR): Document. + * match.pd (absu(x)*absu(x) -> x*x): Handle. + (absu(absu(X)) -> absu(X)): Likewise. + (absu(-X) -> absu(X)): Likewise. + (absu(X) where X is nonnegative -> X): Likewise. + +2018-10-28 Iain Buclaw + + * Makefile.in (tm_d_file_list, tm_d_include_list): New variables. + (TM_D_H, D_TARGET_DEF, D_TARGET_H, D_TARGET_OBJS): New variables. + (tm_d.h, cs-tm_d.h, default-d.o): New rules. + (d/d-target-hooks-def.h, s-d-target-hooks-def-h): New rules. + (s-tm-texi): Also check timestamp on d-target.def. + (generated_files): Add TM_D_H and d-target-hooks-def.h. + (build/genhooks.o): Also depend on D_TARGET_DEF. + * config.gcc (tm_d_file, d_target_objs, target_has_targetdm): New + variables. + * config/aarch64/aarch64-d.c: New file. + * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE): + Define. + * config/aarch64/aarch64-protos.h (aarch64_d_target_versions): New + prototype. + * config/aarch64/aarch64.h (TARGET_D_CPU_VERSIONS): Define. + * config/aarch64/t-aarch64 (aarch64-d.o): New rule. + * config/arm/arm-d.c: New file. + * config/arm/arm-protos.h (arm_d_target_versions): New prototype. + * config/arm/arm.h (TARGET_D_CPU_VERSIONS): Define. + * config/arm/linux-eabi.h (EXTRA_TARGET_D_OS_VERSIONS): Define. + * config/arm/t-arm (arm-d.o): New rule. + * config/default-d.c: New file. + * config/glibc-d.c: New file. + * config/gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/i386/i386-d.c: New file. + * config/i386/i386-protos.h (ix86_d_target_versions): New prototype. + * config/i386/i386.h (TARGET_D_CPU_VERSIONS): Define. + * config/i386/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define. + (GNU_USER_TARGET_D_CRITSEC_SIZE): Define. + * config/i386/t-i386 (i386-d.o): New rule. + * config/kfreebsd-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/kopensolaris-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/linux-android.h (ANDROID_TARGET_D_OS_VERSIONS): Define. + * config/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/mips/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define. + * config/mips/mips-d.c: New file. + * config/mips/mips-protos.h (mips_d_target_versions): New prototype. + * config/mips/mips.h (TARGET_D_CPU_VERSIONS): Define. + * config/mips/t-mips (mips-d.o): New rule. + * config/powerpcspe/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/powerpcspe/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/powerpcspe/powerpcspe-d.c: New file. + * config/powerpcspe/powerpcspe-protos.h (rs6000_d_target_versions): + New prototype. + * config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue): + Support GNU D by using 0 as the language type. + * config/powerpcspe/powerpcspe.h (TARGET_D_CPU_VERSIONS): Define. + * config/powerpcspe/t-powerpcspe (powerpcspe-d.o): New rule. + * config/riscv/riscv-d.c: New file. + * config/riscv/riscv-protos.h (riscv_d_target_versions): New + prototype. + * config/riscv/riscv.h (TARGET_D_CPU_VERSIONS): Define. + * config/riscv/t-riscv (riscv-d.o): New rule. + * config/rs6000/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/rs6000/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define. + * config/rs6000/rs6000-d.c: New file. + * config/rs6000/rs6000-protos.h (rs6000_d_target_versions): New + prototype. + * config/rs6000/rs6000.c (rs6000_output_function_epilogue): + Support GNU D by using 0 as the language type. + * config/rs6000/rs6000.h (TARGET_D_CPU_VERSIONS): Define. + * config/rs6000/t-rs6000 (rs6000-d.o): New rule. + * config/s390/s390-d.c: New file. + * config/s390/s390-protos.h (s390_d_target_versions): New prototype. + * config/s390/s390.h (TARGET_D_CPU_VERSIONS): Define. + * config/s390/t-s390 (s390-d.o): New rule. + * config/sparc/sparc-d.c: New file. + * config/sparc/sparc-protos.h (sparc_d_target_versions): New + prototype. + * config/sparc/sparc.h (TARGET_D_CPU_VERSIONS): Define. + * config/sparc/t-sparc (sparc-d.o): New rule. + * config/t-glibc (glibc-d.o): New rule. + * configure: Regenerated. + * configure.ac (tm_d_file): New variable. + (tm_d_file_list, tm_d_include_list, d_target_objs): Add substitutes. + * doc/contrib.texi (Contributors): Add self for the D frontend. + * doc/frontends.texi (G++ and GCC): Mention D as a supported language. + * doc/install.texi (Configuration): Mention libphobos as an option for + --enable-shared. Mention d as an option for --enable-languages. + (Testing): Mention check-d as a target. + * doc/invoke.texi (Overall Options): Mention .d, .dd, and .di as file + name suffixes. Mention d as a -x option. + * doc/sourcebuild.texi (Top Level): Mention libphobos. + * doc/standards.texi (Standards): Add section on D language. + * doc/tm.texi: Regenerated. + * doc/tm.texi.in: Add @node for D language and ABI, and @hook for + TARGET_CPU_VERSIONS, TARGET_D_OS_VERSIONS, and TARGET_D_CRITSEC_SIZE. + * dwarf2out.c (is_dlang): New function. + (gen_compile_unit_die): Use DW_LANG_D for D. + (declare_in_namespace): Return module die for D, instead of adding + extra declarations into the namespace. + (gen_namespace_die): Generate DW_TAG_module for D. + (gen_decl_die): Handle CONST_DECLSs for D. + (dwarf2out_decl): Likewise. + (prune_unused_types_walk_local_classes): Handle DW_tag_interface_type. + (prune_unused_types_walk): Handle DW_tag_interface_type same as other + kinds of aggregates. + * gcc.c (default_compilers): Add entries for .d, .dd and .di. + * genhooks.c: Include d/d-target.def. + +2018-10-28 Iain Sandoe + + PR target/85669 + * config/rs6000/darwin.h (STACK_BOUNDARY): New. + (RS6000_STARTING_FRAME_OFFSET): Adjust to preserve 16byte alignment. + (STACK_DYNAMIC_OFFSET): Likewise. + +2018-10-27 Sandra Loosemore + + PR target/80024 + * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Fix + error message. + +2018-10-26 Tulio Magno Quites Machado Filho + + * doc/extend.texi (PowerPC builtins): Fix __builtin_unpack_ibm128 + return type and other typos. + +2018-10-26 Aaron Sawdey + + * config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Change to + a shorter sequence with fewer branches. + (emit_final_str_compare_gpr): Ditto. + +2018-10-26 Paul A. Clarke + + * config/rs6000/tmmintrin.h: New file. + * config.gcc (powerpc*-*-*): Add tmmintrin.h to extra_headers. + +2018-10-26 Paul A. Clarke + + * config/rs6000/mmintrin.h: Enable 32bit compilation. + * config/rs6000/xmmintrin.h: Likewise. + +2018-10-26 Paul A. Clarke + + * config/rs6000/xmmintrin.h (_mm_extract_pi16): Fix for big-endian. + +2018-10-26 Richard Biener + + * tree-vect-slp.c (vect_mark_slp_stmts): Add visited hash_set + and wrapper. + (vect_mark_slp_stmts_relevant): Likewise. + (vect_detect_hybrid_slp_stmts): Likewise. + (vect_bb_slp_scalar_cost): Likewise. + (vect_remove_slp_scalar_calls): Likewise. + +2018-10-26 Jan Hubicka + + * ipa-devirt.c (odr_subtypes_equivalent_p): Fix recursion. + (warn_types_mismatch): Fix walk of DECL_NAME. + (odr_types_equivalent_p): Fix overactive assert. + +2018-10-26 Richard Biener + + PR tree-optimization/87105 + * tree-vectorizer.h (_slp_tree::refcnt): New member. + * tree-vect-slp.c (vect_free_slp_tree): Decrement and honor + refcnt. + (vect_create_new_slp_node): Initialize refcnt to one. + (bst_traits): Move. + (scalar_stmts_set_t, bst_fail): Remove. + (vect_build_slp_tree_2): Add bst_map argument and adjust calls. + (vect_build_slp_tree): Add bst_map argument and lookup + already created SLP nodes. + (vect_print_slp_tree): Handle a SLP graph, print SLP node + addresses. + (vect_slp_rearrange_stmts): Handle a SLP graph. + (vect_analyze_slp_instance): Adjust and free SLP nodes from + the CSE map. Fix indenting. + (vect_schedule_slp_instance): Add short-cut. + +2018-10-26 Martin Liska + + PR testsuite/86158 + * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Hash with + addr_expr and not with pointers. + +2018-10-26 Jan Hubicka + + * tree.c (free_lang_data_in_type): Only check main variants. + * ipa-devirt.c (warn_odr): Make static. + (types_same_for_odr): Drop strict variant. + (types_odr_comparable): Likewise. + (odr_or_derived_type_p): Look for main variants. + (odr_name_hasher::equal): Cleanup comment. + (odr_subtypes_equivalent): Add warn and warned arguments; check main + variants. + (type_variants_equivalent_p): break out from ... + (odr_types_equivalent): ... here; go for main variants where needed. + (warn_odr): ... here; turn static. + (warn_types_mismatch): Compare mangled names of main variants. + * ipa-utils.h (types_odr_comparable): Drop strict parameter. + (type_with_linkage_p): Sanity check that we look at main variant. + * lto.c (lto_read_decls): Only consider main variant to be ODR type. + * tree.h (types_same_for_odr): Drop strict argument. + +2018-10-26 Richard Biener + + PR tree-optimization/87746 + * tree-vect-data-refs.c (vect_update_misalignment_for_peel): + Simplify and fix WRT strided store groups with size not + equal to step in element count. + (vect_analyze_group_access_1): Dump the whole group. + +2018-10-25 Carl Love + + * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_VSCEDPGT, + P9V_BUILTIN_VEC_VSCEDPLT, P9V_BUILTIN_VEC_VSCEDPEQ, + P9V_BUILTIN_VEC_VSCEDPUO): Rename base overloaded name. Add quad + precicion entry for each overloaded builtin. + * config/rs6000/rs6000-builtin.def (VSCEDPGT, VSCEDPLT, VSCEDPEQ, + VSCEDPUO): Rename overloaded name. + (VSCEDPGT, VSCEQPGT, VSCEDPLT, VSCEQPLT, VSCEDPEQ, VSCEQPEQ, + VSCEDPUO, VSCEQPUO): Add defitions for overloaded builtins. + * config/rs6000/vsx.md (xscmpexpqp__): Add + define_expand for xscmpexqp instruction. + (*xscmpexpqp): Add define_insn for the xscmpexqp instruction. + +2018-10-25 Bill Schmidt + Jinsong Ji + + * config/rs6000/emmintrin.h (_mm_slli_epi16): Replace deprecated + function with vec_sl. + (_mm_slli_epi32): Likewise. + (_mm_slli_epi64): Likewise. + (_mm_srai_epi16): Replace deprecated function with vec_sra. + (_mm_srai_epi32): Likewise. + (_mm_srli_epi16): Replace deprecated function with vec_sr. + (_mm_srli_epi32): Likewise. + (_mm_srli_epi64): Likewise. + (_mm_sll_epi16): Replace deprecated function with vec_sl. + (_mm_sll_epi32): Likewise. + (_mm_sll_epi64): Likewise. + (_mm_sra_epi16): Replace deprecated function with vec_sra. + (_mm_sra_epi32): Likewise. + (_mm_srl_epi16): Replace deprecated function with vec_sr. + (_mm_srl_epi32): Likewise. + (_mm_srl_epi64): Likewise. + +2018-10-25 Bill Schmidt + Jinsong Ji + + * gcc/config/rs6000/emmintrin.h (_mm_sll_epi16): Replace + comparison operators with vec_cmp* for compatibility due to + unfortunate history; clean up formatting and use types more + appropriately. + (_mm_sll_epi32): Likewise. + (_mm_sll_epi64): Likewise. + (_mm_srl_epi16): Likewise. + (_mm_srl_epi32): Likewise. + (_mm_srl_epi64): Likewise. + +2018-10-25 Bill Schmidt + Jinsong Ji + + * config/rs6000/emmintrin.h (_mm_sll_epi64): Remove wrong cast. + * config/rs6000/xmmintrin.h (_mm_min_ps): Change m's type to + __vector __bool int. Use vec_cmpgt in preference to deprecated + function vec_vcmpgtfp. + (_mm_max_ps): Likewise. + +2018-10-25 Jeff Law + + * config/rl78/rl78.c (insn_ok_now): Always re-recognize the insn + if returning false. + +2018-10-25 Martin Sebor + + * doc/extend.texi (aligned): Expand attribute description. + (Alignment): Rename section. Discuss function arguments. + +2018-10-25 Jan Hubicka + + * ipa-devirt.c (main_odr_variant): Remove. + (hash_odr_name, types_same_for_odr, types_odr_comparable, + odr_name_hasher::equal, odr_subtypes_equivalent_p): + Drop use of main_odr_variant. + (add_type_duplicate): Silence confused warnings on integer types. + (get_odr_type): Always look for main variant. + (register_odr_type): Simplify. + +2018-10-25 Richard Biener + + * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): + Initialize ng to silence error with release checking bootstrap. + +2018-10-25 Richard Biener + + * tree-if-conv.c: Include tree-ssa-sccvn.h. + (tree_if_conversion): Run CSE on the if-converted loop body. + +2018-10-25 Ilya Leoshkevich + + * config/s390/constraints.md (ZL): New constraint. + * config/s390/s390.c (legitimate_pic_operand_p): Accept LARL + operands. + * config/s390/s390.md (movdi_larl): Remove. + (movdi_64): Add the LARL alternative. + +2018-10-25 Ilya Leoshkevich + + PR bootstrap/87747 + * rtl.c (RTX_CODE_HWINT_P_1): New helper macro. + (RTX_CODE_HWINT_P): New macro. + (rtx_code_size): Use RTX_CODE_HWINT_P (). + +2018-10-25 Jan Hubicka + + * ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types + is anonymous. + +2018-10-25 Richard Biener + + PR tree-optimization/87665 + PR tree-optimization/87745 + * tree-vectorizer.h (get_earlier_stmt): Remove. + (get_later_stmt): Pick up UID from the original non-pattern stmt. + +2018-10-25 Sam Tebbs + + * options.texi (Deprecated): Move list to Var section. + +2018-10-24 Bill Schmidt + Jinsong Ji + + * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Change deprecated + __vector long to __vector long long. + (_mm_cvtpd_ps): Likewise. + (_mm_cvttpd_epi32): Likewise. + (_mm_cvtpi32_pd): Likewise. + (_mm_unpackhi_epi64): Likewise. + (_mm_unpacklo_epi64): Likewise. + +2018-10-24 Segher Boessenkool + + PR rtl-optimization/87720 + * combine.c (make_more_copies): Skip if the dest is pc_rtx. + +2018-10-24 Alexandre Oliva + + * gimple-ssa-isolate-paths.c + (find_implicit_erroneous_behavior): Do not change code if the + pass is running for warnings only. + (find_explicit_erroneous_behavior): Likewise. + +2018-10-24 Michael Meissner + + * config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME): + Define as rs6000_mangle_decl_assembler_name. + (rs6000_mangle_decl_assembler_name): If the user switched from IBM + long double to IEEE long double, switch the names of the long + double built-in functions to be f128 instead of l. + +2018-10-24 Martin Sebor + + * doc/extend.texi (nonnull): List no-argument form. Reference + -fno-delete-null-pointer-checks and -fisolate-erroneous-paths-attribute. + +2018-10-24 Richard Biener + + * tree-ssa-sccvn.c (do_rpo_vn): Free rpo_state. + +2018-10-24 Martin Liska + + PR tree-optimization/84436 + * tree-switch-conversion.c (switch_conversion::contains_same_values_p): + Remove. + (switch_conversion::contains_linear_function_p): New. + (switch_conversion::build_one_array): Support linear + transformation on input. + * tree-switch-conversion.h (struct switch_conversion): Add + contains_linear_function_p declaration. + +2018-10-24 Richard Biener + + * varasm.c (const_hash_1): Return hash of ADDR_EXPR + if its argument is CONSTANT_CLASS_P. + +2018-10-11 Jan Hubicka + + * ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL; + it is wrong for forward declarations. + +2018-10-24 Ilya Leoshkevich + + * config/s390/s390.c (s390_check_qrst_address): Add the missing + SYMBOL_REF_P () check. + +2018-10-24 Richard Biener + + PR tree-optimization/87105 + * tree-vect-data-refs.c (vect_analyze_group_access_1): Adjust + dump classification. + (vect_analyze_data_ref_accesses): Handle duplicate loads and + stores by splitting the affected group after the fact. + * tree-vect-slp.c (vect_build_slp_tree_2): Dump when we + fail the SLP build because of size constraints. + +2018-10-24 Rainer Orth + + * configure.ac (gcc_cv_ld_aligned_shf_merge): New test. + * configure: Regenerate. + * config.in: Regenerate. + * varasm.c (mergeable_string_section): Use readonly_data_section + if linker doesn't support SHF_MERGE with alignment > 8. + (mergeable_constant_section): Likewise. + +2018-10-24 Richard Biener + + PR tree-optimization/84013 + * tree-ssa-structalias.c (struct msdi_data): New struct for + marshalling data to walk_stmt_load_store_ops. + (maybe_set_dependence_info): Refactor as callback for + walk_stmt_load_store_ops. + (compute_dependence_clique): Set restrict info on all stmt kinds. + +2018-10-24 Martin Liska + + * cgraph.c (cgraph_node::dump): + Remove reduntant dumps and make tp_first_run dump more compact. + +2018-10-24 Richard Biener + + PR tree-optimization/87665 + * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust + to reflect reality. + +2018-10-12 Jeff Law + + * config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation + for H8/S. + +2018-10-23 Richard Biener + + * tree-vrp.c (add_assert_info): Guard dump_printf with + dump_enabled_p. + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::record_ranges_from_incoming_edge): + Use value_range::ignore_equivs_equal_p. + +2018-10-23 Richard Biener + + PR tree-optimization/87105 + PR tree-optimization/87608 + * passes.def (pass_all_early_optimizations): Add early phi-opt + after dce. + * tree-ssa-phiopt.c (value_replacement): Ignore NOPs and predicts in + addition to debug stmts. + (tree_ssa_phiopt_worker): Add early_p argument, do only min/max + and abs replacement early. + * tree-cfg.c (gimple_empty_block_p): Likewise. + +2018-10-23 Richard Earnshaw + + PR target/86383 + * config.gcc (arm*-*-netbsdelf*): Default to StrongARM if no CPU + specified to configure. + (arm*-*-*): Use ARM7TDMI as the target CPU if no default provided. + +2018-10-23 Richard Biener + + PR tree-optimization/87700 + * tree-ssa-copy.c (set_copy_of_val): Fix change detection logic. + +2018-10-23 Jakub Jelinek + + PR target/87674 + * config/i386/avx512vlintrin.h (_mm_mask_mullo_epi32): Change type of + second argument from __mmask16 to __mmask8. + * config/i386/avx512vlbwintrin.h (_mm_mask_packus_epi32, + _mm_mask_packs_epi32): Likewise. + * config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i64scatter_ps): + Likewise. + (_mm512_mask_prefetch_i64scatter_pd): Likewise. Formatting fix. + +2018-10-23 Richard Biener + + * tree-vect-stmts.c (vect_analyze_stmt): Fix typo in comment. + +2018-10-23 Richard Biener + + PR tree-optimization/86144 + * tree-vect-stmts.c (vect_analyze_stmt): Prefer -mveclibabi + over simd attribute. + +2018-10-23 Richard Biener + + PR tree-optimization/87693 + * tree-ssa-threadedge.c (thread_around_empty_blocks): Handle + the case we do not find the taken edge. + +2018-10-22 Bill Schmidt + Jinsong Ji + + * config/rs6000/emmintrin.h (_MM_SHUFFLE2): Comment cleanup. + (_mm_store_pd): Use unaligned vector type for pointer cast. + (_mm_maskmoveu_si128): Likewise. + * config/rs6000/xmmintrin.h (__m128_u): New typedef. + (_mm_store_ps): Use unaligned vector type for pointer cast. + +2018-10-22 Paul Koning + + * symtab.c (symtab_node::increase_alignment): Correct max + alignment check. + +2018-10-22 Yury Gribov + + PR tree-optimization/87633 + * match.pd: Do not generate unordered integer comparisons. + +2018-10-22 Segher Boessenkool + + PR rtl-optimization/87600 + * combine.c: Add include of expr.h. + (cant_combine_insn_p): Do not combine moves from any hard non-fixed + register to a pseudo. + (make_more_copies): New function, add a copy to a new pseudo after + the moves from hard registers into pseudos. + (rest_of_handle_combine): Declare rebuild_jump_labels_after_combine + later. Call make_more_copies. + +2018-10-22 Andrew Stubbs + + * lra-constraints.c (process_alt_operands): New local array, + matching_early_clobber. Check matching_early_clobber before + decrementing reject, and set matching_early_clobber after. + +2018-10-22 Segher Boessenkool + + PR target/87598 + * config/rs6000/rs6000.c (print_operand_address): For unexpected RTL + call output_addr_const and hope for the best. + +2018-10-22 Richard Biener + + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::record_ranges_from_incoming_edge): Be + smarter about what ranges to use. + * tree-vrp.c (add_assert_info): Dump here. + (register_edge_assert_for_2): Instead of here at multiple but + not all places. + + * gcc.dg/tree-ssa/evrp12.c: New testcase. + * gcc.dg/predict-6.c: Adjust. + * gcc.dg/tree-ssa/vrp33.c: Disable EVRP. + * gcc.dg/tree-ssa/vrp02.c: Likewise. + * gcc.dg/tree-ssa/cunroll-9.c: Likewise. + +2018-10-22 Steven Bosscher + Richard Biener + + * bitmap.h: Update data structure documentation, including a + description of bitmap views as either linked-lists or splay trees. + (struct bitmap_element_def): Update comments for splay tree bitmaps. + (struct bitmap_head_def): Likewise. + (bitmap_list_view, bitmap_tree_view): New prototypes. + (bitmap_initialize_stat): Initialize a bitmap_head's indx and + tree_form fields. + (bmp_iter_set_init): Assert the iterated bitmaps are in list form. + (bmp_iter_and_init, bmp_iter_and_compl_init): Likewise. + * bitmap.c (bitmap_elem_to_freelist): Unregister overhead of a + released bitmap element here. + (bitmap_element_free): Remove. + (bitmap_elt_clear_from): Work on splay tree bitmaps. + (bitmap_list_link_element): Renamed from bitmap_element_link. Move + this function similar ones such that linked-list bitmap implementation + functions are grouped. + (bitmap_list_unlink_element): Renamed from bitmap_element_unlink, + and moved for grouping. + (bitmap_list_insert_element_after): Renamed from + bitmap_elt_insert_after, and moved for grouping. + (bitmap_list_find_element): New function spliced from bitmap_find_bit. + (bitmap_tree_link_left, bitmap_tree_link_right, + bitmap_tree_rotate_left, bitmap_tree_rotate_right, bitmap_tree_splay, + bitmap_tree_link_element, bitmap_tree_unlink_element, + bitmap_tree_find_element): New functions for splay-tree bitmap + implementation. + (bitmap_element_link, bitmap_element_unlink, bitmap_elt_insert_after): + Renamed and moved, see above entries. + (bitmap_tree_listify_from): New function to convert part of a splay + tree bitmap to a linked-list bitmap. + (bitmap_list_view): Convert a splay tree bitmap to linked-list form. + (bitmap_tree_view): Convert a linked-list bitmap to splay tree form. + (bitmap_find_bit): Remove. + (bitmap_clear, bitmap_clear_bit, bitmap_set_bit, + bitmap_single_bit_set_p, bitmap_first_set_bit, bitmap_last_set_bit): + Handle splay tree bitmaps. + (bitmap_copy, bitmap_count_bits, bitmap_and, bitmap_and_into, + bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into, + bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior, bitmap_ior_into, + bitmap_xor, bitmap_xor_into, bitmap_equal_p, bitmap_intersect_p, + bitmap_intersect_compl_p, bitmap_ior_and_compl, + bitmap_ior_and_compl_into, bitmap_set_range, bitmap_clear_range, + bitmap_hash): Reject trying to act on splay tree bitmaps. Make + corresponding changes to use linked-list specific bitmap_element + manipulation functions as applicable for efficiency. + (bitmap_tree_to_vec): New function. + (debug_bitmap_elt_file): New function split out from ... + (debug_bitmap_file): ... here. Handle splay tree bitmaps. + (bitmap_print): Likewise. + + PR tree-optimization/63155 + * tree-ssa-propagate.c (ssa_prop_init): Use tree-view for the + SSA edge worklists. + * tree-ssa-coalesce.c (coalesce_ssa_name): Populate used_in_copies + in tree-view. + +2018-10-22 Martin Liska + + PR tree-optimization/87686 + Revert + 2018-08-29 Martin Liska + + * tree-switch-conversion.c (switch_conversion::expand): + Strenghten assumption about gswitch statements. + +2018-10-22 Martin Liska + + * ipa-icf.c (sem_item::compare_attributes): Remove. + (sem_item::compare_referenced_symbol_properties): Use + attribute_list_equal instead. + (sem_function::equals_wpa): Likewise. + * ipa-icf.h: Remove compare_attributes. + +2018-10-22 Richard Biener + + PR middle-end/87682 + * mem-stats.h (mem_usage::operator==): Fix pasto. + +2018-10-22 Richard Biener + + PR tree-optimization/87640 + * tree-vrp.c (set_value_range_with_overflow): Decompose + incomplete result. + (extract_range_from_binary_expr_1): Adjust. + +2018-10-22 Martin Jambor + + * tree-eh.h (stmt_could_throw_p): Add function parameter. + (stmt_can_throw_external): Likewise. + (stmt_can_throw_internal): Likewise. + * tree-eh.c (lower_eh_constructs_2): Pass cfun to stmt_could_throw_p. + (lower_eh_constructs_2): Likewise. + (stmt_could_throw_p): Add fun parameter, use it instead of cfun. + (stmt_can_throw_external): Likewise. + (stmt_can_throw_internal): Likewise. + (maybe_clean_eh_stmt_fn): Pass cfun to stmt_could_throw_p. + (maybe_clean_or_replace_eh_stmt): Pass cfun to stmt_could_throw_p. + (maybe_duplicate_eh_stmt_fn): Pass new_fun to stmt_could_throw_p. + (maybe_duplicate_eh_stmt): Pass cfun to stmt_could_throw_p. + (pass_lower_eh_dispatch::execute): Pass cfun to + stmt_can_throw_external. + (cleanup_empty_eh): Likewise. + (verify_eh_edges): Pass cfun to stmt_could_throw_p. + * cgraph.c (cgraph_edge::set_call_stmt): Pass a function to + stmt_can_throw_external instead of pushing it to cfun. + (symbol_table::create_edge): Likewise. + * gimple-fold.c (fold_builtin_atomic_compare_exchange): Pass cfun to + stmt_can_throw_internal. + * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Pass cfun + to stmt_could_throw_p. + * gimple-ssa-store-merging.c (handled_load): Pass cfun to + stmt_can_throw_internal. + (pass_store_merging::execute): Likewise. + * gimple-ssa-strength-reduction.c + (find_candidates_dom_walker::before_dom_children): Pass cfun to + stmt_could_throw_p. + * gimplify-me.c (gimple_regimplify_operands): Pass cfun to + stmt_can_throw_internal. + * ipa-pure-const.c (check_call): Pass cfun to stmt_could_throw_p and + to stmt_can_throw_external. + (check_stmt): Pass cfun to stmt_could_throw_p. + (check_stmt): Pass cfun to stmt_can_throw_external. + (pass_nothrow::execute): Likewise. + * trans-mem.c (expand_call_tm): Pass cfun to stmt_can_throw_internal. + * tree-cfg.c (is_ctrl_altering_stmt): Pass cfun to + stmt_can_throw_internal. + (verify_gimple_in_cfg): Pass cfun to stmt_could_throw_p. + (stmt_can_terminate_bb_p): Pass cfun to stmt_can_throw_external. + (gimple_purge_dead_eh_edges): Pass cfun to stmt_can_throw_internal. + * tree-complex.c (expand_complex_libcall): Pass cfun to + stmt_could_throw_p and to stmt_can_throw_internal. + (expand_complex_multiplication): Pass cfun to stmt_can_throw_internal. + * tree-inline.c (copy_edges_for_bb): Likewise. + (maybe_move_debug_stmts_to_successors): Likewise. + * tree-outof-ssa.c (ssa_is_replaceable_p): Pass cfun to + stmt_could_throw_p. + * tree-parloops.c (oacc_entry_exit_ok_1): Likewise. + * tree-sra.c (scan_function): Pass cfun to stmt_can_throw_external. + * tree-ssa-alias.c (stmt_kills_ref_p): Pass cfun to + stmt_can_throw_internal. + * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise. + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Pass cfun to + stmt_could_throw_p. + (mark_aliased_reaching_defs_necessary_1): Pass cfun to + stmt_can_throw_internal. + * tree-ssa-forwprop.c (pass_forwprop::execute): Likewise. + * tree-ssa-loop-im.c (movement_possibility): Pass cfun to + stmt_could_throw_p. + * tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Likewise. + (add_autoinc_candidates): Pass cfun to stmt_can_throw_internal. + * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise. + (convert_mult_to_fma_1): Likewise. + (convert_to_divmod): Likewise. + * tree-ssa-phiprop.c (propagate_with_phi): Likewise. + * tree-ssa-pre.c (compute_avail): Pass cfun to stmt_could_throw_p. + * tree-ssa-propagate.c + (substitute_and_fold_dom_walker::before_dom_children): Likewise. + * tree-ssa-reassoc.c (suitable_cond_bb): Likewise. + (maybe_optimize_range_tests): Likewise. + (linearize_expr_tree): Likewise. + (reassociate_bb): Likewise. + * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise. + * tree-ssa-scopedtables.c (hashable_expr_equal_p): Likewise. + * tree-ssa-strlen.c (adjust_last_stmt): Likewise. + (handle_char_store): Likewise. + * tree-vect-data-refs.c (vect_find_stmt_data_reference): Pass cfun to + stmt_can_throw_internal. + * tree-vect-patterns.c (check_bool_pattern): Pass cfun to + stmt_could_throw_p. + * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise. + (vectorizable_call): Pass cfun to stmt_can_throw_internal. + (vectorizable_simd_clone_call): Likewise. + * value-prof.c (gimple_ic): Pass cfun to stmt_could_throw_p. + (gimple_stringop_fixed_value): Likewise. + +2018-10-22 Ilya Leoshkevich + + * config/s390/s390.c (s390_loadrelative_operand_p): Accept + literal pool references. + (s390_check_qrst_address): Adapt to the new behavior of + s390_loadrelative_operand_p (). + +2018-10-22 H.J. Lu + + PR target/72782 + * config/i386/sse.md (*andnot3_bcst): New. + +2018-10-22 H.J. Lu + + PR target/72782 + * config/i386/sse.md (*3_bcst): New. + +2018-10-22 H.J. Lu + + PR target/72782 + * config/i386/sse.md (avx512bcst): Updated for V4SI, V2DI, V8SI, + V4DI, V16SI and V8DI. + (*sub3_bcst): New. + (*add3_bcst): Likewise. + +2018-10-21 Bill Schmidt + Jinsong Ji + + * config/rs6000/emmintrin.h (_mm_movemask_pd): Replace __vector + __m64 with __vector unsigned long long for compatibility. + (_mm_movemask_epi8): Likewise. + * config/rs6000/xmmintrin.h (_mm_cvtps_pi32): Likewise. + (_mm_cvttps_pi32): Likewise. + (_mm_cvtpi32_ps): Likewise. + (_mm_cvtps_pi16): Likewise. + (_mm_loadh_pi): Likewise. + (_mm_storeh_pi): Likewise. + (_mm_movehl_ps): Likewise. + (_mm_movelh_ps): Likewise. + (_mm_loadl_pi): Likewise. + (_mm_storel_pi): Likewise. + (_mm_movemask_ps): Likewise. + (_mm_shuffle_pi16): Likewise. + +2018-10-21 H.J. Lu + + PR target/72782 + * config/i386/avx512fintrin.h (_mm512_fnmsub_round_pd): Use + __builtin_ia32_vfnmsubpd512_mask. + (_mm512_mask_fnmsub_round_pd): Likewise. + (_mm512_fnmsub_pd): Likewise. + (_mm512_mask_fnmsub_pd): Likewise. + (_mm512_maskz_fnmsub_round_pd): Use + __builtin_ia32_vfnmsubpd512_maskz. + (_mm512_maskz_fnmsub_pd): Likewise. + (_mm512_fnmsub_round_ps): Use __builtin_ia32_vfnmsubps512_mask. + (_mm512_mask_fnmsub_round_ps): Likewise. + (_mm512_fnmsub_ps): Likewise. + (_mm512_mask_fnmsub_ps): Likewise. + (_mm512_maskz_fnmsub_round_ps): Use + __builtin_ia32_vfnmsubps512_maskz. + (_mm512_maskz_fnmsub_ps): Likewise. + * config/i386/avx512vlintrin.h (_mm256_mask_fnmsub_pd): Use + __builtin_ia32_vfnmsubpd256_mask. + (_mm256_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256_maskz. + (_mm_mask_fnmsub_pd): Use __builtin_ia32_vfmaddpd128_mask + (_mm_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd128_maskz. + (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask. + (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask. + (_mm256_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_maskz. + (_mm_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_mask. + (_mm_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_maskz. + * config/i386/fmaintrin.h (_mm_fnmsub_pd): Use + __builtin_ia32_vfnmsubpd. + (_mm256_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256. + (_mm_fnmsub_ps): Use __builtin_ia32_vfnmsubps. + (_mm256_fnmsub_ps): Use __builtin_ia32_vfnmsubps256. + (_mm_fnmsub_sd): Use __builtin_ia32_vfnmsubsd3. + (_mm_fnmsub_ss): Use __builtin_ia32_vfnmsubss3. + * config/i386/i386-builtin.def: Add + __builtin_ia32_vfnmsubpd256_mask, + __builtin_ia32_vfnmsubpd256_maskz, + __builtin_ia32_vfnmsubpd128_mask, + __builtin_ia32_vfnmsubpd128_maskz, + __builtin_ia32_vfnmsubps256_mask, + __builtin_ia32_vfnmsubps256_maskz, + __builtin_ia32_vfnmsubps128_mask, + __builtin_ia32_vfnmsubps128_maskz, + __builtin_ia32_vfnmsubpd512_mask, + __builtin_ia32_vfnmsubpd512_maskz, + __builtin_ia32_vfnmsubps512_mask, + __builtin_ia32_vfnmsubps512_maskz, __builtin_ia32_vfnmsubss3, + __builtin_ia32_vfnmsubsd3, __builtin_ia32_vfnmsubps, + __builtin_ia32_vfnmsubpd, __builtin_ia32_vfnmsubps256 and. + __builtin_ia32_vfnmsubpd256. + * config/i386/sse.md (fma4i_fnmsub_): New. + (_fnmsub__maskz): Likewise. + (*fma_fnmsub__bcst_1): + Likewise. + (*fma_fnmsub__bcst_2): + Likewise. + (*fma_fnmsub__bcst_3): + Likewise. + (fmai_vmfnmsub_): Likewise. + +2018-10-21 H.J. Lu + + PR target/72782 + * config/i386/avx512fintrin.h (_mm512_fnmadd_round_pd): Use + __builtin_ia32_vfnmaddpd512_mask. + (_mm512_mask_fnmadd_round_pd): Likewise. + (_mm512_fnmadd_pd): Likewise. + (_mm512_mask_fnmadd_pd): Likewise. + (_mm512_maskz_fnmadd_round_pd): Use + __builtin_ia32_vfnmaddpd512_maskz. + (_mm512_maskz_fnmadd_pd): Likewise. + (_mm512_fnmadd_round_ps): Use __builtin_ia32_vfnmaddps512_mask. + (_mm512_mask_fnmadd_round_ps): Likewise. + (_mm512_fnmadd_ps): Likewise. + (_mm512_mask_fnmadd_ps): Likewise. + (_mm512_maskz_fnmadd_round_ps): Use + __builtin_ia32_vfnmaddps512_maskz. + (_mm512_maskz_fnmadd_ps): Likewise. + * config/i386/avx512vlintrin.h (_mm256_mask_fnmadd_pd): Use + __builtin_ia32_vfnmaddpd256_mask. + (_mm256_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256_maskz. + (_mm_mask_fnmadd_pd): Use __builtin_ia32_vfmaddpd128_mask + (_mm_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd128_maskz. + (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask. + (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask. + (_mm256_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_maskz. + (_mm_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_mask. + (_mm_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_maskz. + * config/i386/fmaintrin.h (_mm_fnmadd_pd): Use + __builtin_ia32_vfnmaddpd. + (_mm256_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256. + (_mm_fnmadd_ps): Use __builtin_ia32_vfnmaddps. + (_mm256_fnmadd_ps): Use __builtin_ia32_vfnmaddps256. + (_mm_fnmadd_sd): Use __builtin_ia32_vfnmaddsd3. + (_mm_fnmadd_ss): Use __builtin_ia32_vfnmaddss3. + * config/i386/i386-builtin.def: Add + __builtin_ia32_vfnmaddpd256_mask, + __builtin_ia32_vfnmaddpd256_maskz, + __builtin_ia32_vfnmaddpd128_mask, + __builtin_ia32_vfnmaddpd128_maskz, + __builtin_ia32_vfnmaddps256_mask, + __builtin_ia32_vfnmaddps256_maskz, + __builtin_ia32_vfnmaddps128_mask, + __builtin_ia32_vfnmaddps128_maskz, + __builtin_ia32_vfnmaddpd512_mask, + __builtin_ia32_vfnmaddpd512_maskz, + __builtin_ia32_vfnmaddps512_mask, + __builtin_ia32_vfnmaddps512_maskz, __builtin_ia32_vfnmaddss3, + __builtin_ia32_vfnmaddsd3, __builtin_ia32_vfnmaddps, + __builtin_ia32_vfnmaddpd, __builtin_ia32_vfnmaddps256 and. + __builtin_ia32_vfnmaddpd256. + * config/i386/sse.md (fma4i_fnmadd_): New. + (_fnmadd__maskz): Likewise. + (*fma_fnmadd__bcst_1): + Likewise. + (*fma_fnmadd__bcst_2): + Likewise. + (*fma_fnmadd__bcst_3): + Likewise. + (fmai_vmfnmadd_): Likewise. + +2018-10-21 H.J. Lu + + PR target/72782 + * config/i386/avx512fintrin.h (_mm512_fmsub_round_pd): Use + __builtin_ia32_vfmsubpd512_mask. + (_mm512_mask_fmsub_round_pd): Likewise. + (_mm512_fmsub_pd): Likewise. + (_mm512_mask_fmsub_pd): Likewise. + (_mm512_maskz_fmsub_round_pd): Use + __builtin_ia32_vfmsubpd512_maskz. + (_mm512_maskz_fmsub_pd): Likewise. + (_mm512_fmsub_round_ps): Use __builtin_ia32_vfmsubps512_mask. + (_mm512_mask_fmsub_round_ps): Likewise. + (_mm512_fmsub_ps): Likewise. + (_mm512_mask_fmsub_ps): Likewise. + (_mm512_maskz_fmsub_round_ps): Use + __builtin_ia32_vfmsubps512_maskz. + (_mm512_maskz_fmsub_ps): Likewise. + * config/i386/avx512vlintrin.h (_mm256_mask_fmsub_pd): Use + __builtin_ia32_vfmsubpd256_mask. + (_mm256_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd256_maskz. + (_mm_mask_fmsub_pd): Use __builtin_ia32_vfmaddpd128_mask + (_mm_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd128_maskz. + (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask. + (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask. + (_mm256_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps256_maskz. + (_mm_mask_fmsub_ps): Use __builtin_ia32_vfmsubps128_mask. + (_mm_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps128_maskz. + * config/i386/fmaintrin.h (_mm_fmsub_pd): Use + __builtin_ia32_vfmsubpd. + (_mm256_fmsub_pd): Use __builtin_ia32_vfmsubpd256. + (_mm_fmsub_ps): Use __builtin_ia32_vfmsubps. + (_mm256_fmsub_ps): Use __builtin_ia32_vfmsubps256. + (_mm_fmsub_sd): Use __builtin_ia32_vfmsubsd3. + (_mm_fmsub_ss): Use __builtin_ia32_vfmsubss3. + * config/i386/i386-builtin.def: Add + __builtin_ia32_vfmsubpd256_mask, + __builtin_ia32_vfmsubpd256_maskz, + __builtin_ia32_vfmsubpd128_mask, + __builtin_ia32_vfmsubpd128_maskz, + __builtin_ia32_vfmsubps256_mask, + __builtin_ia32_vfmsubps256_maskz, + __builtin_ia32_vfmsubps128_mask, + __builtin_ia32_vfmsubps128_maskz, + __builtin_ia32_vfmsubpd512_mask, + __builtin_ia32_vfmsubpd512_maskz, + __builtin_ia32_vfmsubps512_mask, + __builtin_ia32_vfmsubps512_maskz, __builtin_ia32_vfmsubss3, + __builtin_ia32_vfmsubsd3, __builtin_ia32_vfmsubps, + __builtin_ia32_vfmsubpd, __builtin_ia32_vfmsubps256 and. + __builtin_ia32_vfmsubpd256. + * config/i386/sse.md (fma4i_fmsub_): New. + (_fmsub__maskz): Likewise. + (*fma_fmsub__bcst_1): + Likewise. + (*fma_fmsub__bcst_2): + Likewise. + (*fma_fmsub__bcst_3): + Likewise. + (fmai_vmfmsub_): Likewise. + +2018-10-21 H.J. Lu + + * config/i386/sse.md (*3_bcst_1): + Remove plus. Renamed to ... + (*sub3_bcst): This. + (*add3_bcst_2): Renamede to ... + (*add3_bcst): This. + +2018-10-21 H.J. Lu + + PR target/72782 + * config/i386/sse.md (*mul3_bcst): New. + +2018-10-21 H.J. Lu + + PR target/87662 + * i386/avx512vlintrin.h (_mm256_or_epi32): New. + (_mm_or_epi32): Likewise. + (_mm256_xor_epi32): Likewise. + (_mm_xor_epi32): Likewise. + (_mm256_or_epi64): Likewise. + (_mm_or_epi64): Likewise. + (_mm256_xor_epi64): Likewise. + (_mm_xor_epi64): Likewise. + +2018-10-20 H.J. Lu + + PR target/72782 + * config/i386/sse.md (*_div3_bcst): New. + +2018-10-20 Jakub Jelinek + + PR middle-end/87647 + * varasm.c (decode_addr_const): Handle COMPOUND_LITERAL_EXPR. + +2018-10-20 Andreas Schwab + + * doc/ux.texi: Move @section directly after @node. + +2018-10-19 Jakub Jelinek + + PR middle-end/85488 + PR middle-end/87649 + * omp-low.c (check_omp_nesting_restrictions): Diagnose ordered without + depend closely nested inside of loop with ordered clause with + a parameter. + +2018-10-19 David Malcolm + + * Makefile.in (TEXI_GCCINT_FILES): Add ux.texi. + * doc/gccint.texi: Include ux.texi and use it in top-level menu. + * doc/ux.texi: New file. + +2018-10-19 Segher Boessenkool + + * config/rs6000/rs6000.h (REG_ALLOC_ORDER): Move 68 (that is, CR0) to + be the first CR field allocated. + +2018-10-19 Richard Biener + + PR target/87657 + * config/i386/i386.c (ix86_builtin_vectorization_cost): Use + TYPE_VECTOR_SUBPARTS and avoid relying on vector mode. + +2018-10-19 H.J. Lu + + PR target/72782 + * config/i386/sse.md + (*3_bcst_1): New. + (*add3_bcst_2): Likewise. + +2018-10-19 H.J. Lu + + * config/i386/sse.md + (*fma_fmadd__bcst_1): + Replace nonimmediate_operand with register_operand. + (*fma_fmadd__bcst_2): + Likewise. + (*fma_fmadd__bcst_3): + Likewise. + +2018-10-19 Ilya Leoshkevich + + PR rtl-optimization/87596 + * lra-constraints.c (spill_hard_reg_in_range): Use INSN_P () + + lra_get_insn_recog_data () instead of lra_insn_recog_data[] + for instructions in FROM..TO range. + +2018-10-19 Eric Botcazou + + * cfgexpand.c (expand_one_var): Use specific wording in error message + for non-local frame variables. + * stor-layout.c (layout_decl): Do not issue a warning for them. + +2018-10-19 Robin Dapp + + * haifa-sched.c (priority): Add force_recompute parameter. + (apply_replacement): Call priority () with force_recompute = true. + (restore_pattern): Likewise. + +2018-10-18 H.J. Lu + + * simplify-rtx.c (simplify_subreg): Limit mask of vec_merge to + HOST_BITS_PER_WIDE_INT. + (test_vector_ops_duplicate): Likewise. + +2018-10-18 H.J. Lu + + PR target/72782 + * config/i386/sse.md (VF_AVX512): New. + (avx512bcst): Likewise. + (*fma_fmadd__bcst_1): + Likewise. + (*fma_fmadd__bcst_2): + Likewise. + (*fma_fmadd__bcst_3): + Likewise. + +2018-10-18 Jonathan Wakely + + * doc/invoke.texi (-dumpversion): Improve grammar. + (-dumpfullversion): Make more consistent with -dumpversion. + +2018-10-18 Uros Bizjak + + * config/i386/i386.c (ix86_emit_fp_unordered_jump): + Set JUMP_LABEL to the jump insn. + (ix86_emit_i387_log1p): Use ix86_expand_branch to expand branch. + Predict emitted jump and add label to jump insn. + +2018-10-18 David Malcolm + + PR tree-optimization/87562 + * input.c (get_substring_ranges_for_loc): Use + LRK_SPELLING_LOCATION rather than LRK_MACRO_EXPANSION_POINT when + getting the linemap for the endpoint. Verify that it's either + in the same linemap as the start point's spelling location, or + at least in the same file. + +2018-10-18 Richard Biener + + * config/i386/i386.c (ix86_builtin_vectorization_cost): Do not + feed width-specific load/store costs through ix86_vec_cost. + * config/i386/x86-tune-costs.h (athlon_cost): Adjust. + (k8_cost): Likewise. + (bdver_cost): Likewise. + (znver1_cost): Likewise. + (btver1_cost): Likewise. + (btver2_cost): Likewise. + +2018-10-18 H.J. Lu + + * simplify-rtx.c (simplify_subreg): Call simplify_gen_subreg + to simplify subreg of vec_merge. + +2018-10-18 Richard Biener + + * config/i386/i386.c: Fix costing of vector FMA. + +2018-10-18 Richard Biener + + * config/i386/i386.c (ix86_vec_cost): Remove !parallel path + and argument. + (ix86_builtin_vectorization_cost): For vec_construct properly + cost insertion into SSE regs. + (...): Adjust calls to ix86_vec_cost. + +2018-10-18 Richard Biener + + PR middle-end/87087 + Revert + 2018-02-07 Richard Biener + + PR tree-optimization/84204 + * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in + this place. + +2018-10-18 H.J. Lu + + PR target/87537 + * simplify-rtx.c (simplify_subreg): Simplify subreg of vec_merge + of vec_duplicate. + (test_vector_ops_duplicate): Add test for a scalar subreg of a + VEC_MERGE of a VEC_DUPLICATE. + +2018-10-17 Joseph Myers + + * doc/cpp.texi (__STDC_VERSION__): Document C2X handling. + * doc/invoke.texi (-std=c2x, -std=gnu2x): Document new options. + * doc/standards.texi (C Language): Document C2X. + * dwarf2out.c (highest_c_language), config/rl78/rl78.c + (rl78_option_override): Handle "GNU C2X" language name. + +2018-10-17 Joseph Myers + + * doc/invoke.texi (-std=c17), doc/standards.texi (C Language): + Document C17 as published in 2018. + +2018-10-17 Eric Botcazou + + PR middle-end/87623 + * fold-const.c (fold_truth_andor_1): If the right side is not constant, + bail out if both sides do not have the same storage order. + +2018-10-17 Aldy Hernandez + + * bitmap.c (bitmap_head::dump): New. + * bitmap.h (bitmap_head): Add dump(). + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::try_find_new_range): Adjust for value_range API. + (evrp_range_analyzer::set_ssa_range_info): Same. + (evrp_range_analyzer::record_ranges_from_phis): Same. + (evrp_range_analyzer::record_ranges_from_stmt): Same. + * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Same. + * gimple-ssa-sprintf.c (get_int_range): Same. + (format_integer): Same. + (sprintf_dom_walker::handle_gimple_call): Same. + * ipa-cp.c (ipcp_vr_lattice::meet_with_1): Same. + (ipcp_vr_lattice::top_p): Same. + (ipcp_vr_lattice::bottom_p): Same. + (ipcp_vr_lattice::set_to_bottom): Same. + (ipa_vr_operation_and_type_effects): Same. + (propagate_vr_across_jump_function): Same. + (ipcp_store_vr_results): Same. + * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Same. + (ipa_print_node_jump_functions_for_edge): Same. + (ipa_get_value_range): Same. + (ipa_compute_jump_functions_for_edge): Same. + (ipa_write_jump_function): Same. + * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Same. + * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): + Same. + * vr-values.c (set_value_range_to_nonnegative): Same. + (set_value_range_to_truthvalue): Same. + (vr_values::get_value_range): Same. + (vr_values::set_defs_to_varying): Same. + (vr_values::update_value_range): Same. + (symbolic_range_based_on_p): Same. + (vr_values::op_with_boolean_value_range_p): Same. + (vr_values::extract_range_for_var_from_comparison_expr): Same. + (vr_values::extract_range_from_ssa_name): Same. + (vr_values::extract_range_from_binary_expr): Same. + (vr_values::extract_range_from_unary_expr): Same. + (vr_values::extract_range_from_cond_expr): Same. + (vr_values::extract_range_from_comparison): Same. + (vr_values::check_for_binary_op_overflow): Same. + (vr_values::extract_range_basic): Same. + (vr_values::extract_range_from_assignment): Same. + (compare_ranges): Same. + (compare_range_with_value): Same. + (vr_values::adjust_range_with_scev): Same. + (vrp_valueize): Same. + (vrp_valueize_1): Same. + (vr_values::get_vr_for_comparison): Same. + (vr_values::compare_name_with_value): Same. + (vr_values::compare_names): Same. + (vr_values::vrp_evaluate_conditional): Same. + (find_case_label_ranges): Same. + (vr_values::vrp_visit_switch_stmt): Same. + (vr_values::extract_range_from_phi_node): Same. + (vr_values::simplify_div_or_mod_using_ranges): Same. + (vr_values::simplify_bit_ops_using_ranges): Same. + (test_for_singularity): Same. + (range_fits_type_p): Same. + (vr_values::simplify_cond_using_ranges_1): Same. + (vr_values::simplify_switch_using_ranges): Same. + (vr_values::simplify_float_conversion_using_ranges): Same. + (vr_values::two_valued_val_range_p): Same. + (vr_values::add_equivalence): Move to value_range::equiv_add. + * vr-values.h (vr_values::add_equivalence): Remove. + (VR_INITIALIZER): Remove. + * tree-vrp.c (value_range::set): New. + (value_range::equiv_add): New. + (value_range::value_range): New. + (value_range::deep_copy): New. + (value_range::check): New. + (value_range::equal_p): New. + (value_range::ignore_equivs_equal_p): New. + (value_range::operator==): New. + (value_range::operator!=): New. + (value_range::symbolic_p): New. + (value_range::numeric_p): New. + (value_range::set_undefined): New. + (value_range::set_varying): New. + (value_range::may_contain_p): New. + (value_range::equiv_clear): New. + (value_range::singleton_p): New. + (value_range::intersect): New. + (value_range::dump): New. + (value_range::set_and_canonicalize): New. + (set_value_range): Adjust for value_range API. + (set_value_range_to_undefined): Same. + (set_value_range_to_varying): Same. + (set_and_canonicalize_value_range): Same. + (set_value_range_to_nonnull): Same. + (set_value_range_to_null): Same. + (range_is_null): Same. + (range_is_nonnull): Same. + (range_int_cst_p): Same. + (range_int_cst_singleton_p): Same. + (symbolic_range_p): Same. + (range_includes_zero_p): Same. + (value_range_constant_singleton): Same. + (vrp_set_zero_nonzero_bits): Same. + (ranges_from_anti_range): Same. + (extract_range_into_wide_ints): Same. + (extract_range_from_multiplicative_op): Same. + (set_value_range_with_overflow): Same. + (extract_range_from_binary_expr_1): Same. + (extract_range_from_unary_expr): Same. + (dump_value_range): Same. + (debug_value_range): Same. + (vrp_prop::check_array_ref): Same. + (vrp_prop::check_mem_ref): Same. + (vrp_prop::vrp_initialize): Same. + (vrp_prop::visit_stmt): Same. + (intersect_ranges): Same. + (vrp_prop::visit_phi): Same. + (vrp_prop::vrp_finalize): Same. + (determine_value_range_1): Same. + (determine_value_range): Same. + (vrp_intersect_ranges_1): Rename to... + (vrp_intersect_1): this. + (vrp_intersect_ranges): Rename to... + (value_range::intersect_helper): ...this. + (vrp_meet_1): Rename to... + (value_range::union_helper): ...this. + (vrp_meet): Rename to... + (value_range::union_): ...this. + (copy_value_range): Remove. + * tree-vrp.h (struct value_range): Rewrite into a proper class. + (value_range::vrtype): New. + (value_range::type): New. + (value_range::equiv): New. + (value_range::min): New. + (value_range::max): New. + (value_range::varying_p): New. + (value_range::undefined_p): New. + (value_range::null_p): New. + (value_range::equiv_add): New. + (copy_value_range): Remove. + +2018-10-17 David Malcolm + + * Makefile.in (SELFTEST_TARGETS): New. + (selftest) Change from s-selftest-c to $(SELFTEST_TARGETS). + (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) + (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to + c/Make-lang.in. + (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) + (selftest-c++-gdb, selftest-c++-valgrind): Move to + cp/Make-lang.in. + * configure: Regenerate. + * configure.ac (selftest_languages): New. + +2018-10-17 Aldy Hernandez + + * tree-vrp.c (extract_range_from_multiplicative_op): Remove + overflow wraps argument. + (extract_range_from_binary_expr_1): Do not pass overflow wraps to + wide_int_range_multiplicative_op. + * wide-int-range.cc (wide_int_range_mult_wrapping): Remove + overflow wraps argument. + (wide_int_range_multiplicative_op): Same. + (wide_int_range_lshift): Same. + (wide_int_range_div): Same. + * wide-int-range.h (wide_int_range_multiplicative_op): Same. + (wide_int_range_lshift): Same. + (wide_int_range_div): Same. + +2018-10-17 Aldy Hernandez + + * wide-int-range.h (wide_int_range_shift_undefined_p): Adjust to + use sign as argument. + * tree-vrp.c (extract_range_from_binary_expr_1): Pass sign to + wide_int_range_shift_undefined_p. + +2018-10-16 Kyrylo Tkachov + + * config/aarch64/aarch64.md (despeculate_copy): + Rename to... + (@despeculate_copy): ... This. + * config/aarch64/aarch64.c (aarch64_speculation_safe_value): Remove + switch statement. + +2018-10-16 Rainer Orth + + * config.gcc: Obsolete *-*-solaris2.10*. + * doc/install.texi (Specific, *-*-solaris2*): Document it. + +2018-10-12 Jeff Law + + * config/ft32/ft32.md (ft32_general_movsrc_operand): Disable + reg + sym +- const_int addressing modes. + +2018-10-15 David Malcolm + + * common.opt (fdiagnostics-minimum-margin-width=): New option. + * diagnostic-show-locus.c (layout::layout): Apply the minimum + margin width. + (layout::start_annotation_line): Only print up to 3 of the + margin character, to avoid touching the left-hand side. + (selftest::test_diagnostic_show_locus_fixit_lines): Update for + minimum margin width, as set by test_diagnostic_context's ctor. + (selftest::test_fixit_insert_containing_newline): Likewise. + (selftest::test_fixit_insert_containing_newline_2): Likewise. + (selftest::test_line_numbers_multiline_range): Clear + dc.min_margin_width. + * diagnostic.c (diagnostic_initialize): Initialize + min_margin_width. + * diagnostic.h (struct diagnostic_context): Add field + "min_margin_width". + * doc/invoke.texi: Add -fdiagnostics-minimum-margin-width=. + * opts.c (common_handle_option): Handle + OPT_fdiagnostics_minimum_margin_width_. + * selftest-diagnostic.c + (selftest::test_diagnostic_context::test_diagnostic_context): + Initialize min_margin_width to 6. + * toplev.c (general_init): Initialize global_dc->min_margin_width. + +2018-10-15 David Malcolm + + * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby): + Fix usage of "error_at_rich_loc" in the comment. + +2018-10-15 Renlin Li + + PR target/87563 + * tree-vectorizer.c (try_vectorize_loop_1): Don't use + if-conversioned loop when it contains ifn with types not + supported by backend. + * internal-fn.c (expand_direct_optab_fn): Add an assert. + (direct_internal_fn_supported_p): New helper function. + * internal-fn.h (direct_internal_fn_supported_p): Declare. + +2018-10-15 Jakub Jelinek + + PR target/87572 + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET): + Remove OPTION_MASK_ISA_AVX5124FMAPS_UNSET and + OPTION_MASK_ISA_AVX5124VNNIW_UNSET. + +2018-10-15 Bin Cheng + + PR tree-optimization/87022 + * tree-loop-distribution.c (pg_add_dependence_edges): Check all + bits in dist vector rather than the first one. + +2018-10-15 Richard Biener + + PR middle-end/87610 + * tree-ssa-structalias.c (struct vls_data): Add escaped_p member. + (visit_loadstore): When a used restrict tag escaped verify that + the points-to solution of "other" pointers do not include + escaped. + (compute_dependence_clique): If a used restrict tag escaped + communicated that down to visit_loadstore. + +2018-10-15 Andreas Krebbel + + * config/s390/s390.c (s390_expand_vec_init): Force vector element + into reg if it isn't a general operand. + +2018-10-14 H.J. Lu + + PR target/87599 + * config/i386/sse.md (*vec_dupv2di): Add register source to + movddup. + +2018-10-14 H.J. Lu + + PR target/87572 + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET): + Add OPTION_MASK_ISA_AVX512IFMA_UNSET, + OPTION_MASK_ISA_AVX5124FMAPS_UNSET and + OPTION_MASK_ISA_AVX5124VNNIW_UNSET. + +2018-10-13 Eric Botcazou + + * dwarf2cfi.c (struct dw_trace_info): Add args_size_defined_for_eh. + (notice_args_size): Set it in the current trace if no insn that can + throw internally has been seen yet. + (connect_traces): When connecting args_size between traces, allow the + incoming values not to match if there is an insn setting it before the + first insn that can throw internally; in that case, force the creation + of a CFI note on this latter insn. + +2018-10-13 Jonathan Wakely + + * opt-problem.h (opt_wrapper): Use template-argument-list when naming + the base class, because using the injected-class-name was not clearly + specified until DR 176. + +2018-10-12 Paul Koning + + * config/pdp11/pdp11.md (doloop_end): New expander. + (doloop_end_insn): renamed from "doloop_end". + (addqi3): New pattern. + (subqi3): New pattern. + * config/pdp11/predicates.md (incdec_operand): New predicate. + +2018-10-12 Yury Gribov + + PR middle-end/81376 + * real.c (format_helper::can_represent_integral_type_p): New function + * real.h (format_helper::can_represent_integral_type_p): Ditto. + * match.pd: New pattern. + +2018-10-12 Alexandre Oliva + + * configure.ac: Introduce --enable-large-address-aware + to define MINGW_DEFAULT_LARGE_ADDR_AWARE. + * doc/install.texi: Document it. + * configure, config.in: Rebuilt. + * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Define, + based on MINGW_DEFAULT_LARGE_ADDR_AWARE. + (LINK_SPEC): Insert it. + * config/i386/mingw-w64.h: Likewise. + + * cygming.h (HAVE_GAS_ALIGNED_COMM): Fallback-define. + +2018-10-12 Peter Bergner + + PR rtl-optimization/87600 + * ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets. + +2018-10-12 Paul Koning + + * doc/md.texi (doloop_end): Document that the pattern code may + need to check operand mode. + +2018-10-12 Wilco Dijkstra + + * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Add alternatives + to zero-extend between int and floating-point registers. + (load_pair_zero_extendsidi2_aarch64): Add alternative for zero-extended + ldp into floating-point registers. Add type and arch attributes. + (zero_extend2_aarch64): Add arch attribute. + Use f_loads for type attribute. + +2018-10-11 Martin Sebor + + * doc/extend.texi (attribute packed): Correct typos. + +2018-10-11 Martin Sebor + + * doc/extend.texi (attribute flatten): Mention interaction with + noinline. + +2018-10-11 Jan Hubicka + + PR target/87156 + * cgraphclones.c (cgraph_node::create_version_clone_with_body): + Set new_decl virtual flag to zero. + +2018-10-11 Martin Sebor + + PR middle-end/87593 + * doc/extend.texi (attribute format_arg): Discuss using multiple + attributes on a single function. + +2018-10-11 Giuliano Belinassi + + PR tree-optimization/86829 + * match.pd (sin (atan (x))): New simplification rules. + (cos (atan (x))): Likewise. + * real.c (build_sinatan_real): New function. + * real.h (build_sinatan_real): Prototype. + +2018-10-11 Will Schmidt + + * config/rs6000/rs6000.c (map_to_integral_tree_type): New helper + function. + (fold_mergeeo_helper): New helper function. + (rs6000_gimple_fold_builtin): Add hooks for vec_mergee and vec_mergeo + intrinsics. Correct some whitespace indentation issues. + +2018-10-11 Wilco Dijkstra + + PR target/87511 + * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p): + Use HOST_WIDE_INT_1U for shift. + +2018-10-11 Doug Rupp + Olivier Hainque + + * config/rs6000/vxworks.h (VXWORKS_RELAX_LINK_SPEC): New macro. + Pass --relax to the linker for RTPs. + (LINK_SPEC): Append VXWORKS_RELAX_LINK_SPEC. + +2018-10-11 Andrew Stubbs + Jan Hubicka + Martin Jambor + + * print-rtl.c (print_rtx_operand_codes_E_and_V): Print how many times + the same elements are repeated rather than printing all of them. + * read-rtl.c (rtx_reader::read_rtx_operand): Recognize and expand + "repeated" elements. + * read-rtl-function.c (test_loading_repeat): New function. + (read_rtl_function_c_tests): Call test_loading_repeat. + * rtl-tests.c (test_dumping_repeat): New function. + (rtl_tests_c_tests): Call test_dumping_repeat. + +2018-10-11 Richard Biener + + * config/i386/x86-tune-costs.h (bdver?_memcpy, bdver?_memset, + bdver?_cost): Unify to ... + (bdver_memcpy, bdver_memset, bdver_cost): ... this. + * config/i386/i386.c (processor_cost_table): Adjust. + +2018-10-10 Eric Botcazou + + PR middle-end/87574 + * cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on + the thunk when expanding to GIMPLE. + +2018-10-10 Bernd Edlinger + + PR bootstrap/87551 + * varasm.c (mergeable_string_section): Don't try to move zero-length + strings to the merge section. + +2018-10-10 Uros Bizjak + + PR target/87573 + * config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter. + +2018-10-10 Jakub Jelinek + + PR target/87550 + * config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set + to special_args set. + +2018-10-10 Richard Biener + + * config/i386/sse.md (reduc_plus_scal_v8df, reduc_plus_scal_v4df, + reduc_plus_scal_v2df, reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, + reduc_plus_scal_v4sf): Merge into pattern reducing to half width + and recursing and pattern terminating the recursion on SSE + vector width using ix86_expand_reduc. + (reduc_sminmax_scal_): Split into part reducing to half + width and recursing and SSE2 vector variant doing the final + reduction with ix86_expand_reduc. + (reduc_uminmax_scal_): Likewise for the AVX512 variants + with terminating the recursion at AVX level, splitting that + to SSE there. + +2018-10-09 David Malcolm + + * genmatch.c (error_cb): Rename to... + (diagnostic_cb): ...this, converting int params to enums. + (fatal_at): Update for renaming. + (warning_at): Likewise. + (main): Likewise. + * input.c (selftest::ebcdic_execution_charset::apply): + Update for renaming of... + (selftest::ebcdic_execution_charset::on_error): ...this, renaming + to... + (selftest::ebcdic_execution_charset::on_diagnostic): ...this, + converting level and reason to enums. + (class selftest::lexer_error_sink): Rename to... + (class selftest::lexer_test_options): ...this, renaming field + "m_errors" to "m_diagnostics". + (selftest::lexer_test_options::apply): Update for renaming of... + (selftest::lexer_test_options::on_error): ...this, renaming to... + (selftest::lexer_test_options::on_diagnostic): ...this + converting level and reason to enums. + (selftest::test_lexer_string_locations_raw_string_unterminated): + Update for renamings. + * opth-gen.awk (struct cpp_reason_option_codes_t): Use enum for + "reason". + +2018-10-09 Paul A. Clarke + + * config.gcc (powerpc*-*-*): Add pmmintrin.h to extra_headers. + * config/rs6000/pmmintrin.h: New file. + +2018-10-09 Eric Botcazou + + PR tree-optimization/86659 + * gimple-match.h (gimple_match_op constructors): Initialize reverse. + +2018-10-09 Richard Biener + + PR tree-optimization/63155 + * tree-ssa-structalias.c: Include tree-ssa.h. + (get_constraint_for_ssa_var): For undefs return nothing_id. + (find_func_aliases): Cleanup PHI handling. + +2018-10-09 Richard Biener + + * tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing + replacements. + +2018-10-09 Martin Liska + + * asan.c (asan_emit_stack_protection): If a stack variable + is located in a same file as current function, then emit + line info into variable definition string. + +2018-10-08 Eric Botcazou + + * print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column + information. + +2018-10-08 Eric Botcazou + + * cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P + on the thunk. + +2018-10-08 Eric Botcazou + + PR tree-optimization/86659 + * gimple-match.h (struct gimple_match_op): Add reverse field. + (gimple_match_op::set_op): New overloaded method. + * gimple-match-head.c (maybe_build_generic_op) : Set + the REF_REVERSE_STORAGE_ORDER flag on the value. + (gimple_simplify) : For BIT_FIELD_REF, propagate the + REF_REVERSE_STORAGE_ORDER flag and avoid simplifying if it is set. + +2018-10-08 Richard Sandiford + + PR middle-end/63155 + * gimple-ssa-backprop.c (backprop::intersect_uses): Use + FOR_EACH_IMM_USE_FAST instead of FOR_EACH_IMM_USE_STMT. + +2018-10-08 H.J. Lu + + PR target/87517 + * config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd): + Defined with __builtin_ia32_vfmaddsubpd512_mask. + +2018-10-08 Richard Biener + + * config/i386/x86-tune-costs.h (znver1_cost): Make AVX256 vector loads + cost the same as AVX128 ones. + +2018-10-08 Paul Koning + + * config/pdp11/pdp11-protos.h (output_block_move): Remove. + (expand_block_move): New function. + * config/pdp11/pdp11.c (output_block_move): Remove. + (expand_block_move): New function. + * config/pdp11/pdp11.h (MOVE_RATIO): New definition. + * config/pdp11/pdp11.md (movmemhi): Use expand_block_move. + (*movmemhi1): Remove. + +2018-10-08 Robin Dapp + + * config/s390/2827.md: Increase latencies for some FP instructions. + +2018-10-08 Richard Biener + + * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): + Open a dump scope. + * tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it. + * tree-vectorizer.h (dump_stmt_cost): Adjust. + (add_stmt_cost): Dump return value of the hook. + +2018-10-08 Richard Biener + + PR tree-optimization/63155 + * tree-ssa-propagate.c (add_ssa_edge): Do cheap check first. + (ssa_propagation_engine::ssa_propagate): Remove redundant + bitmap bit clearing. + +2018-10-05 Peter Bergner + + PR rtl-optimization/86939 + PR rtl-optimization/87479 + * ira.h (non_conflicting_reg_copy_p): New prototype. + * ira-lives.c (ignore_reg_for_conflicts): New static variable. + (make_hard_regno_dead): Don't add conflicts for register + ignore_reg_for_conflicts. + (make_object_dead): Likewise. + (non_conflicting_reg_copy_p): New function. + (process_bb_node_lives): Set ignore_reg_for_conflicts for copies. + Remove special conflict handling of REAL_PIC_OFFSET_TABLE_REGNUM. + * lra-lives.c (ignore_reg_for_conflicts): New static variable. + (make_hard_regno_dead): Don't add conflicts for register + ignore_reg_for_conflicts. Remove special conflict handling of + REAL_PIC_OFFSET_TABLE_REGNUM. Remove now unused argument + check_pic_pseudo_p and update callers. + (mark_pseudo_dead): Don't add conflicts for register + ignore_reg_for_conflicts. + (process_bb_lives): Set ignore_reg_for_conflicts for copies. + +2018-10-05 Andrew Waterman + Jim Wilson + + * config/riscv/riscv.md (f_quiet4): + Add define_expand. Add ! HONOR_SNANS check to current pattern. Add + new pattern using HONOR_SNANS that emits one extra instruction. + +2018-10-05 Segher Boessenkool + + * config/rs6000/rs6000.md (unnamed mfcr scc_comparison_operator + patterns): Merge SI and DI patterns to a GPR pattern. + (unnamed define_insn and define_split for record form of that): Merge + to a single define_insn_and_split pattern. + +2018-10-05 David Malcolm + + PR c++/56856 + * input.c (expand_location_to_spelling_point): Add param "aspect" + and use rather than hardcoding LOCATION_ASPECT_CARET. + (get_substring_ranges_for_loc): Handle the case of a single token + within a macro expansion. + * input.h (expand_location_to_spelling_point): Add "aspect" param, + defaulting to LOCATION_ASPECT_CARET. + +2018-10-05 Paul Koning + + * config/pdp11/pdp11.c (TARGET_CXX_GUARD_TYPE): Define. + (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Define. + (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define. + (pdp11_guard_type): New function. + +2018-10-05 Paul Koning + + * config/pdp11/pdp11.h (FLOAT_TYPE_SIZE): Always 32. + * config/pdp11/pdp11.opt (mfloat32): Remove. + (mfloat64): Remove. + * doc/invoke.texi (pdp11 -mfloat32): Remove: + (pdp11 -mfloat64): Remove. + +2018-10-05 Uros Bizjak + + * config/i386/i386.md (*cmpxf_cc_i387): Remove pattern. + (*cmp_cc_i387): Ditto. + (*cmpu_cc_i387): Ditto. + (*cmp__cc_i387): Ditto. + * config/i386/i386.c (ix86_expand_fp_compare): Remove + "scratch" argument. + : Do not generate pattern with HImode clobber. + Emit x86_sahf_1 pattern. + (ix86_expand_compare): Update call to ix86_expand_fp_compare. + (ix86_expand_carry_flag_compare): Ditto. + +2018-10-05 Uros Bizjak + + * config/i386/i386.md (*cmpxf_i387): Change operand 2 predicate + to reg_or_0_operand. Add "C" constraint. + (*cmpxf_cc_i387): Ditto. + (*cmp_i387): Change operand 2 predicate + to nonimm_or_0_operand. Add "C" constraint. + (*cmp_cc_i387): Ditto. + (*cmp_0_i387): Remove insn pattern. + (*cmp_0_cc_i387): Ditto. + +2018-10-05 Uros Bizjak + + * config/i386/constraints.md ("C"): Do not depend on TARGET_SSE. + * config/i386/predicates.md (nonimm_or_0_operand): Rename + from vector_move_operand. Update all uses. + +2018-10-05 Martin Sebor + + PR tree-optimization/87490 + * builtins.c (expand_builtin_strnlen): Handle a null data.decl + consistently. + +2018-10-05 Richard Biener + + PR tree-optimization/63155 + * tree-ssa-ccp.c (ccp_propagate::visit_phi): Avoid excess + vertical space in dumpfiles. + * tree-ssa-propagate.h + (ssa_propagation_engine::process_ssa_edge_worklist): Remove. + * tree-ssa-propagate.c (cfg_blocks_back): New global. + (ssa_edge_worklist_back): Likewise. + (curr_order): Likewise. + (cfg_blocks_get): Remove abstraction. + (cfg_blocks_add): Likewise. + (cfg_blocks_empty_p): Likewise. + (add_ssa_edge): Add to current or next worklist based on + RPO index. + (add_control_edge): Likewise. + (ssa_propagation_engine::process_ssa_edge_worklist): Fold + into ... + (ssa_propagation_engine::ssa_propagate): ... here. Unify + iteration from CFG and SSA edge worklist so we process + everything in RPO order, prioritizing forward progress + over iteration. + (ssa_prop_init): Allocate new worklists, do not dump + immediate uses. + (ssa_prop_fini): Free new worklists. + +2018-10-05 Richard Biener + + * tree-core.h (tree_block::abstract_flag): Remove. + (tree_block::block_num): Make full 32bits. + * tree.def (BLOCK): Remove docs about BLOCK_ABSTRACT. + * tree.h (BLOCK_ABSTRACT): Remove. + * dwarf2out.c (gen_lexical_block_die): Remove dead code + resulting from BLOCK_ABSTRACT being always false. + (gen_inlined_subroutine_die): Likewise. + (gen_block_die): Likewise. + * tree.c (block_ultimate_origin): Likewise. + * tree-pretty-print.c (dump_block_node): Remove code dealing + with BLOCK_ABSTRACT. + * tree-ssa-live.c (dump_scope_block): Likewise. + * tree-streamer-in.c (unpack_ts_block_value_fields): Likewise. + * tree-streamer-out.c (pack_ts_block_value_fields): Likewise. + +2018-10-05 Richard Biener + + * config/i386/i386.c (ix86_add_stmt_cost): When scalar cost + is asked for initialize mode to the component mode of the + vector type. + +2018-10-05 H.J. Lu + + PR target/87522 + * config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to + assembler for -mavx. + * config/i386/gnu-user64.h (ASM_SPEC): Likewise. + +2018-10-05 Segher Boessenkool + + PR target/87509 + * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_SET_FPSCR_DRN): Use + RS6000_BTM_DFP. + * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Require the operand + to be DImode. When using mffscrn, force the operand to a register. + +2018-10-04 Uros Bizjak + + * config/i386/i386.md (*fop__2_i387): Macroize insn + from *fop__2_i387 and *fop_xf_2_i387 using + X87MODEF mode iterator. + (*fop__3_i387): Macroize insn from + *fop__3_i387 and *fop_xf_3_i387 using + X87MODEF mode iterator. + +2018-10-04 Vinay Kumar + + * doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning + -Wno-prio-ctor-dtor. + +2018-10-04 David Malcolm + + * Makefile.in (OBJS): Add opt-problem.o. + * dump-context.h: Include "selftest.h. + (selftest::temp_dump_context): New forward decl. + (class dump_context): Make friend of class + selftest::temp_dump_context. + (dump_context::dump_loc_immediate): New decl. + (class dump_pretty_printer): Move here from dumpfile.c. + (class temp_dump_context): Move to namespace selftest. + (temp_dump_context::temp_dump_context): Add param + "forcibly_enable_dumping". + (selftest::verify_dumped_text): + (ASSERT_DUMPED_TEXT_EQ): Move here from dumpfile.c. + (selftest::verify_item): + (ASSERT_IS_TEXT): Move here from dumpfile.c. + (ASSERT_IS_TREE): Likewise. + (ASSERT_IS_GIMPLE): Likewise. + * dumpfile.c (dump_context::dump_loc): Move immediate dumping + to... + (dump_context::dump_loc_immediate): ...this new function. + (class dump_pretty_printer): Move to dump-context.h. + (dump_switch_p_1): Don't enable MSG_PRIORITY_REEMITTED. + (opt_info_switch_p_1): Enable MSG_PRIORITY_REEMITTED. + (temp_dump_context::temp_dump_context): Move to "selftest" + namespace. Add param "forcibly_enable_dumping", and use it to + conditionalize the use of m_pp; + (selftest::verify_dumped_text): Make non-static. + (ASSERT_DUMPED_TEXT_EQ): Move to dump-context.h. + (selftest::verify_item): Make non-static. + (ASSERT_IS_TEXT): Move to dump-context.h. + (ASSERT_IS_TREE): Likewise. + (ASSERT_IS_GIMPLE): Likewise. + (selftest::test_capture_of_dump_calls): Pass "true" for new + param of temp_dump_context. + * dumpfile.h (enum dump_flag): Add MSG_PRIORITY_REEMITTED, adding + it to MSG_ALL_PRIORITIES. Update values of TDF_COMPARE_DEBUG and + TDF_COMPARE_DEBUG. + * opt-problem.cc: New file. + * opt-problem.h: New file. + * optinfo-emit-json.cc + (selftest::test_building_json_from_dump_calls): Pass "true" for + new param of temp_dump_context. + * optinfo.cc (optinfo_kind_to_dump_flag): New function. + (optinfo::emit_for_opt_problem): New function. + (optinfo::emit): Clarity which emit_item is used. + * optinfo.h (optinfo::get_dump_location): New accessor. + (optinfo::emit_for_opt_problem): New decl. + (optinfo::emit): Make const. + * selftest-run-tests.c (selftest::run_tests): Call + selftest::opt_problem_cc_tests. + * selftest.h (selftest::opt_problem_cc_tests): New decl. + * tree-data-ref.c (dr_analyze_innermost): Convert return type from + bool to opt_result, converting fprintf messages to + opt_result::failure_at calls. Add "stmt" param for use by the + failure_at calls. + (create_data_ref): Pass "stmt" to the dr_analyze_innermost call. + (runtime_alias_check_p): Convert return type from bool to + opt_result, converting dump_printf calls to + opt_result::failure_at, using the statement DDR_A for their + location. + (find_data_references_in_stmt): Convert return type from bool to + opt_result, converting "return false" to opt_result::failure_at + with a new message. + * tree-data-ref.h: Include "opt-problem.h". + (dr_analyze_innermost): Convert return type from bool to opt_result, + and add a const gimple * param. + (find_data_references_in_stmt): Convert return type from bool to + opt_result. + (runtime_alias_check_p): Likewise. + * tree-predcom.c (find_looparound_phi): Pass "init_stmt" to + dr_analyze_innermost. + * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): + Convert return type from bool to opt_result, adding a message for + the PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS zero case. + (vect_analyze_data_ref_dependence): Convert return type from bool + to opt_result. Change sense of return type from "false" + effectively meaning "no problems" to "false" meaning a problem, + so that "return false" becomes "return opt_result::success". + Convert "return true" calls to opt_result::failure_at, using + the location of statement A rather than vect_location. + (vect_analyze_data_ref_dependences): Convert return type from bool + to opt_result. + (verify_data_ref_alignment): Likewise, converting dump_printf_loc + calls to opt_result::failure_at, using the stmt location rather + than vect_location. + (vect_verify_datarefs_alignment): Convert return type from bool + to opt_result. + (vect_enhance_data_refs_alignment): Likewise. Split local "stat" + into multiple more-tightly-scoped copies. + (vect_analyze_data_refs_alignment): Convert return type from bool + to opt_result. + (vect_analyze_data_ref_accesses): Likewise, converting a + "return false" to a "return opt_result::failure_at", adding a + new message. + (vect_prune_runtime_alias_test_list): Convert return type from + bool to opt_result, converting dump_printf_loc to + opt_result::failure_at. Add a %G to show the pertinent statement, + and use the stmt's location rather than vect_location. + (vect_find_stmt_data_reference): Convert return type from + bool to opt_result, converting dump_printf_loc to + opt_result::failure_at, using stmt's location. + (vect_analyze_data_refs): Convert return type from bool to + opt_result. Convert "return false" to "return + opt_result::failure_at", adding messages as needed. + * tree-vect-loop.c (vect_determine_vf_for_stmt_1): Convert return + type from bool to opt_result. + (vect_determine_vf_for_stmt): Likewise. + (vect_determine_vectorization_factor): Likewise, converting + dump_printf_loc to opt_result::failure_at, using location of phi + rather than vect_location. + (vect_analyze_loop_form_1): Convert return type from bool to + opt_result, converting dump_printf_loc calls, retaining the use of + vect_location. + (vect_analyze_loop_form): Convert return type from loop_vec_info + to opt_loop_vec_info. + (vect_analyze_loop_operations): Convert return type from bool to + opt_result, converting dump_printf_loc calls, using the location + of phi/stmt rather than vect_location where available. Convert + various "return false" to "return opt_result::failure_at" with + "unsupported phi" messages. + (vect_get_datarefs_in_loop): Convert return type from bool to + opt_result. Add a message for the + PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS failure. + (vect_analyze_loop_2): Convert return type from bool to + opt_result. Ensure "ok" is set to a opt_result::failure_at before + each "goto again;", adding new messages where needed. + Add "unsupported grouped {store|load}" messages. + (vect_analyze_loop): Convert return type from loop_vec_info to + opt_loop_vec_info. + * tree-vect-slp.c (vect_analyze_slp): Convert return type from + bool to opt_result. + * tree-vect-stmts.c (process_use): Likewise, converting + dump_printf_loc call and using stmt location, rather than + vect_location. + (vect_mark_stmts_to_be_vectorized): Likeise. + (vect_analyze_stmt): Likewise, adding a %G. + (vect_get_vector_types_for_stmt): Convert return type from bool to + opt_result, converting dump_printf_loc calls and using stmt + location, rather than vect_location. + (vect_get_mask_type_for_stmt): Convert return type from tree to + opt_tree, converting dump_printf_loc calls and using stmt location. + * tree-vectorizer.c: Include "opt-problem.h. + (try_vectorize_loop_1): Flag "Analyzing loop at" dump message as + MSG_PRIORITY_INTERNALS. Convert local "loop_vinfo" from + loop_vec_info to opt_loop_vec_info. If if fails, and dumping is + enabled, use it to report at the top level "couldn't vectorize + loop" followed by the problem. + * tree-vectorizer.h (opt_loop_vec_info): New typedef. + (vect_mark_stmts_to_be_vectorized): Convert return type from bool + to opt_result. + (vect_analyze_stmt): Likewise. + (vect_get_vector_types_for_stmt): Likewise. + (tree vect_get_mask_type_for_stmt): Likewise. + (vect_analyze_data_ref_dependences): Likewise. + (vect_enhance_data_refs_alignment): Likewise. + (vect_analyze_data_refs_alignment): Likewise. + (vect_verify_datarefs_alignment): Likewise. + (vect_analyze_data_ref_accesses): Likewise. + (vect_prune_runtime_alias_test_list): Likewise. + (vect_find_stmt_data_reference): Likewise. + (vect_analyze_data_refs): Likewise. + (vect_analyze_loop): Convert return type from loop_vec_info to + opt_loop_vec_info. + (vect_analyze_loop_form): Likewise. + (vect_analyze_slp): Convert return type from bool to opt_result. + +2018-10-04 David Malcolm + + * doc/invoke.texi (-fopt-info): Document new "internals" + sub-option. + * dump-context.h (dump_context::apply_dump_filter_p): New decl. + * dumpfile.c (dump_options): Update for renaming of MSG_ALL to + MSG_ALL_KINDS. + (optinfo_verbosity_options): Add "internals". + (kind_as_string): Update for renaming of MSG_ALL to MSG_ALL_KINDS. + (dump_context::apply_dump_filter_p): New member function. + (dump_context::dump_loc): Use apply_dump_filter_p rather than + explicitly masking the dump_kind. + (dump_context::begin_scope): Increment the scope depth first. Use + apply_dump_filter_p rather than explicitly masking the dump_kind. + (dump_context::emit_item): Use apply_dump_filter_p rather than + explicitly masking the dump_kind. + (dump_dec): Likewise. + (dump_hex): Likewise. + (dump_switch_p_1): Default to MSG_ALL_PRIORITIES. + (opt_info_switch_p_1): Default to MSG_PRIORITY_USER_FACING. + (opt_info_switch_p): Update handling of default + MSG_OPTIMIZED_LOCATIONS to cope with default of + MSG_PRIORITY_USER_FACING. + (dump_basic_block): Use apply_dump_filter_p rather than explicitly + masking the dump_kind. + (selftest::test_capture_of_dump_calls): Update test_dump_context + instances to use MSG_ALL_KINDS | MSG_PRIORITY_USER_FACING rather + than MSG_ALL. Generalize scope test to be run at all four + combinations of with/without MSG_PRIORITY_USER_FACING and + MSG_PRIORITY_INTERNALS, adding examples of explicit priority + for each of the two values. + * dumpfile.h (enum dump_flag): Add comment about the MSG_* flags. + Rename MSG_ALL to MSG_ALL_KINDS. Add MSG_PRIORITY_USER_FACING, + MSG_PRIORITY_INTERNALS, and MSG_ALL_PRIORITIES, updating the + values for TDF_COMPARE_DEBUG and TDF_ALL_VALUES. + (AUTO_DUMP_SCOPE): Add a note to the comment about the interaction + with MSG_PRIORITY_*. + * tree-vect-loop-manip.c (vect_loop_versioning): Mark versioning + dump messages as MSG_PRIORITY_USER_FACING. + * tree-vectorizer.h (DUMP_VECT_SCOPE): Add a note to the comment + about the interaction with MSG_PRIORITY_*. + +2018-10-04 Bernd Edlinger + + * varasm.c (output_constant): Add new parameter merge_strings. + Make strings properly zero terminated in merge string sections. + (mergeable_string_section): Don't fail if the last char is non-zero. + (assemble_variable_contents): Handle merge string sections. + (assemble_variable): Likewise. + (assemble_constant_contents): Likewise. + (output_constant_def_contents): Likewise. + (output_constructor_array_range, + output_constructor_regular_field): Adjust call to output_constant. + (output_object_block): Adjust call to assemble_constant_contents + and assemble_variable_contents. + +2018-10-04 Martin Liska + + PR c/87483 + * cgraphunit.c (process_function_and_variable_attributes): + Warn about a function with alias attribute and a body. + +2018-10-04 Martin Liska + + PR ipa/82625 + * multiple_target.c (redirect_to_specific_clone): New function. + (ipa_target_clone): Use it. + * tree-inline.c: Fix comment. + +2018-10-04 David Malcolm + + * dumpfile.c (gcc::dump_manager::dump_manager): Initialize new + fields. + (gcc::dump_manager::~dump_manager): Free m_optinfo_filename. + (gcc::dump_manager::register_pass): New member function, adapted + from loop body in gcc::pass_manager::register_pass, adding a + call to update_dfi_for_opt_info. + (gcc::dump_manager::opt_info_enable_passes): Store the + -fopt-info options into the new fields. Move the loop + bodies into... + (gcc::dump_manager::update_dfi_for_opt_info): ...this new member + function. + * dumpfile.h (struct opt_pass): New forward decl. + (gcc::dump_manager::register_pass): New decl. + (gcc::dump_manager::update_dfi_for_opt_info): New decl. + (class gcc::dump_manager): Add fields "m_optgroup_flags", + "m_optinfo_flags", and "m_optinfo_filename". + * passes.c (gcc::pass_manager::register_pass): Move all of the + dump-handling code to gcc::dump_manager::register_pass. + +2018-10-04 Peter Bergner + + PR rtl-optimization/87466 + * target.def (setjmp_preserves_nonvolatile_regs_p): New target hook. + * doc/tm.texi.in (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): New hook. + * doc/tm.texi: Regenerate. + * ira-lives.c (process_bb_node_lives): Use the new target hook. + * lra-lives.c (process_bb_lives): Likewise. + * config/rs6000/rs6000.c (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): + Define. + +2018-10-04 Tamar Christina + + * params.c (add_params): Fix initialization. + +2018-10-04 Martin Liska + + PR gcov-profile/84107 + * tree-profile.c (init_ic_make_global_vars): + Remove ic_void_ptr_var and ic_gcov_type_ptr_var. + Come up with new ic_tuple* variables. Emit + __gcov_indirect_call{,_topn} variables. + (gimple_gen_ic_profiler): Access the variable + and emit gimple. + (gimple_gen_ic_func_profiler): Access + __gcov_indirect_call.callee field. + (gimple_init_gcov_profiler): Use ptr_type_node. + * value-prof.c (gimple_ic): Use ptr_type_node. + +2018-10-04 Prathamesh Kulkarni + + PR tree-optimization/85787 + * ipa-pure-const.c (malloc_candidate_p_1): Move most of + malloc_candidate_p into this function and add support for + detecting multiple phis. + (DUMP_AND_RETURN): Move from malloc_candidate_p into top-level macro. + +2018-10-04 Martin Liska + + PR ipa/87491 + * ipa-inline.c (inline_to_all_callers_1): + Call ultimate_alias_target for node being inlined. + +2018-10-03 Jeff Law + + * gimple-ssa-sprintf.c (format_string): Do not hardcode size of + target's wchar_t. + * tree.c (get_typenode_from_name): Moved from fortran/trans-types.c. + * tree.h (get_typenode_from_name): Prototype. + +2018-10-03 Uros Bizjak + + * config/i386/i386.md (*cmp__i387): + Change operand 2 predicate to nonimmediate_operand. + (*cmp__cc_i387): Ditto. + +2018-10-03 Martin Sebor + Jeff Law + + * gimple-ssa-sprintf.c (struct fmtresult): Add new member and + initialize it. + (get_string_length): Detect unterminated arrays. + (format_string): Same. + (format_directive): Warn about unterminated arrays. + (handle_gimple_call): Mark statements with no_warning as needed. + +2018-10-03 Jim Wilson + + * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): For ABI_ILP32E, + also define __riscv_abi_rve. Delete trailing white space. + +2018-10-03 Paul Koning + + Enable LRA register allocator for PDP11. + * config/pdp11/constraints.md (Q): Use define_memory_constraint. + (R): Likewise. + (D): Likewise. + * config/pdp11/pdp11.c (pdp11_lra_p): New function. + * config/pdp11/pdp11.opt (-mlra): New option. + * doc/invoke.texi (PDP-11 Options): Document -mlra. + +2018-10-03 Uros Bizjak + + * config/i386/i386.md (*extendsfdf2): Remove. + (*extendxf2): Ditto. + +2018-10-03 Aldy Hernandez + + PR tree-optimization/87415 + * tree-vrp.c (set_value_range_with_overflow): Special case one bit + precision fields. + +2018-10-02 Jeff Law + + * gimple-fold.c (get_range_strlen): Only set *nonstr when + an unterminated string is discovered. Bubble up range + even for unterminated strings. + (gimple_fold_builtin_strlen): Do not fold if get_range_strlen + indicates the string was not terminated via NONSTR. + +2018-10-03 Aldy Hernandez + + * tree-vrp.c (extract_range_from_unary_expr): Special case all + pointer conversions. + Do not do anything special for anti-ranges. + +2018-10-03 Jérôme Lambourg + + * config/arm/vxworks.h (ARM_TARGET2_DWARF_FORMAT): Adjust to + DW_EH_PE_pcrel | DW_EH_PE_indirect for RTPs. + +2018-10-03 Martin Liska + + PR gcov-profile/86109 + * coverage.c (coverage_begin_function): Do not + mark lambdas as artificial. + * tree-core.h (struct GTY): Remove tm_clone_flag + and introduce new lambda_function. + * tree.h (DECL_LAMBDA_FUNCTION): New macro. + +2018-10-02 Aaron Sawdey + + PR target/87474 + * config/rs6000/rs6000-string.c (expand_strn_compare): Check that both + P8_VECTOR and VSX are enabled. + +2018-10-02 Andreas Krebbel + + * config/s390/driver-native.c (s390_host_detect_local_cpu): Add + 0x3907 as CPU model number. + +2018-10-02 Andreas Krebbel + + * common/config/s390/s390-common.c: Rename PF_ARCH12 to PF_Z14. + * config/s390/s390.h (enum processor_flags): Rename PF_ARCH12 to + PF_Z14. Rename TARGET_CPU_ARCH12 to TARGET_CPU_Z14, + TARGET_CPU_ARCH12_P to TARGET_CPU_Z14_P, TARGET_ARCH12 to + TARGET_Z14, and TARGET_ARCH12_P to TARGET_Z14_P. + * config/s390/s390.md: Likewise. Rename also the cpu attribute + value from arch12 to z14. + +2018-10-02 Uros Bizjak + + * config/i386/i386.md (fxam2_i387_with_temp): Remove. + (isinfxf2): Ditto. + (isinf2): Ditto. + +2018-10-02 Uros Bizjak + + * config/i386/i386.c (ix86_emit_i387_round): Extend op1 to XFmode + before emitting fxam. Perform calculations in XFmode. + +2018-10-02 Marc Glisse + + * match.pd (((X /[ex] A) +- B) * A): New transformation. + +2018-10-02 Marc Glisse + + PR middle-end/87319 + * fold-const.c (fold_plusminus_mult_expr): Handle complex and vectors. + * tree.c (signed_or_unsigned_type_for): Handle complex. + +2018-10-02 Jeff Law + + * gimple-fold.c (get_range_strlen): Remove dead code. + +2018-10-02 Martin Sebor + Jeff Law + + * builtins.c (unterminated_array): Add new arguments. + If argument is not terminated, bubble up size and exact + state to callers. + (expand_builtin_strnlen): Detect, avoid expanding + and diagnose unterminated arrays. + (c_strlen): Fill in offset of start of unterminated strings. + * builtins.h (unterminated_array): Update prototype. + +2018-10-02 Richard Biener + + * config/i386/sse.md (reduc_plus_scal_v4df): Avoid the use + of haddv4df, first reduce to SSE width and exploit the fact + that we only need element zero with the reduction result. + (reduc_plus_scal_v2df): Likewise. + +2018-10-02 Eric Botcazou + + * dojump.h (do_jump): Delete. + (do_jump_1): Likewise. + (split_comparison): Move around. + * dojump.c (do_jump): Make static. + (do_jump_1): Likewise. + (jumpifnot): Move around. + (jumpifnot_1): Likewise. + (jumpif): Likewise. + (jumpif_1): Likewise. + * expr.c (expand_expr_real_1): Call jumpif[not] instead of do_jump. + +2018-10-02 Eric Botcazou + + * reorg.c (make_return_insns): Use emit_copy_of_insn_after for the + insns in the delay slot and add_insn_after for the jump insn. + +2018-10-02 Richard Biener + + * tree-inline.c (expand_call_inline): Use the location of + the callee declaration for the inline-entry marker. + * final.c (notice_source_line): Remove special-casing of + NOTE_INSN_INLINE_ENTRY. + +2018-10-01 Carl Love + + PR 69431 + * config/rs6000/rs6000-builtin.def (__builtin_mffsl): New. + (__builtin_mtfsb0): New. + (__builtin_mtfsb1): New. + ( __builtin_set_fpscr_rn): New. + (__builtin_set_fpscr_drn): New. + * config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add. + (rs6000_expand_set_fpscr_rn_builtin): Add. + (rs6000_expand_set_fpscr_drn_builtin): Add. + (rs6000_expand_builtin): Add case statement entries for + RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1, + RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN, + RS6000_BUILTIN_MFFSL. + (rs6000_init_builtins): Add ftype initialization and def_builtin + calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1, + __builtin_set_fpscr_rn, __builtin_set_fpscr_drn. + * config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn, + rs6000_mffscdrn): Add define_insn. + (rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand. + * doc/extend.texi: Add documentation for the builtins. + +2018-10-01 Richard Biener + + PR tree-optimization/87465 + * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo + causing branch miscounts. + +2018-10-01 Tamar Christina + + * common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM, + aarch64_option_default_param): New. + (params.h): Include. + (TARGET_OPTION_VALIDATE_PARAM, aarch64_option_validate_param): New. + * config/aarch64/aarch64.c (aarch64_override_options_internal): Simplify + stack-clash protection validation code. + +2018-10-01 Tamar Christina + + * params.c (validate_param): New. + (add_params): Use it. + (set_param_value): Refactor param validation into validate_param. + (diagnostic.h): Include. + * diagnostic.h (diagnostic_ready_p): New. + +2018-10-01 Tamar Christina + + * params.c (set_param_value): + Add index of parameter being validated. + * common/common-target.def (option_validate_param): New. + * common/common-targhooks.h (default_option_validate_param): New. + * common/common-targhooks.c (default_option_validate_param): New. + * doc/tm.texi.in (TARGET_OPTION_VALIDATE_PARAM): New. + * doc/tm.texi: Regenerate. + +2018-10-01 Tamar Christina + + PR target/86486 + * config/aarch64/aarch64.c (aarch64_override_options_internal): + Add validation for stack-clash parameters and set defaults. + +2018-10-01 Tamar Christina + + PR target/86486 + * configure.ac: Add stack-clash-protection-guard-size. + * doc/install.texi: Document it. + * config.in (DEFAULT_STK_CLASH_GUARD_SIZE): New. + * params.def: Update comment for guard-size. + (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE, + PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Update description. + * configure: Regenerate. + +2018-10-01 Tamar Christina + + PR target/86486 + * config/aarch64/aarch64.h (STACK_CLASH_MIN_BYTES_OUTGOING_ARGS, + STACK_DYNAMIC_OFFSET): New. + * config/aarch64/aarch64.c (aarch64_layout_frame): + Update outgoing args size. + (aarch64_stack_clash_protection_alloca_probe_range, + TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New. + +2018-10-01 Tamar Christina + + PR target/86486 + * explow.c (anti_adjust_stack_and_probe_stack_clash): Support custom + probe ranges. + * target.def (stack_clash_protection_alloca_probe_range): New. + (stack_clash_protection_final_dynamic_probe): Remove. + * targhooks.h (default_stack_clash_protection_alloca_probe_range) New. + (default_stack_clash_protection_final_dynamic_probe): Remove. + * targhooks.c: Likewise. + * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New. + (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE): Remove. + * doc/tm.texi: Regenerate. + +2018-10-01 Tamar Christina + + PR target/86486 + * config/aarch64/aarch64-protos.h (aarch64_output_probe_sve_stack_clash): New. + * config/aarch64/aarch64.c (aarch64_output_probe_sve_stack_clash, + aarch64_clamp_to_uimm12_shift): New. + (aarch64_allocate_and_probe_stack_space): Add SVE specific section. + * config/aarch64/aarch64.md (probe_sve_stack_clash): New. + +2018-10-01 Tamar Christina + + PR target/86486 + * config/aarch64/aarch64.c (aarch64_layout_frame): Add assert. + +2018-10-01 Jeff Law + Richard Sandiford + Tamar Christina + + PR target/86486 + * config/aarch64/aarch64.md + (probe_stack_range): Add k (SP) constraint. + * config/aarch64/aarch64.h (STACK_CLASH_CALLER_GUARD, + STACK_CLASH_MAX_UNROLL_PAGES): New. + * config/aarch64/aarch64.c (aarch64_output_probe_stack_range): Emit + stack probes for stack clash. + (aarch64_allocate_and_probe_stack_space): New. + (aarch64_expand_prologue): Use it. + (aarch64_expand_epilogue): Likewise and update IP regs re-use criteria. + (aarch64_sub_sp): Add emit_move_imm optional param. + +2018-10-01 MCC CS + + PR tree-optimization/87261 + * match.pd: Remove trailing whitespace. + Add (x & y) | ~(x | y) -> ~(x ^ y), + (~x | y) ^ (x ^ y) -> x | ~y and (x ^ y) | ~(x | y) -> ~(x & y) + +2018-10-01 Claudiu Zissulescu + + * config/arc/arc.md (*add_n): Clean up pattern, update instruction + constraints. + (ashlsi3_insn): Update instruction constraints. + (ashrsi3_insn): Likewise. + (rotrsi3): Likewise. + (add_shift): Likewise. + * config/arc/constraints.md (Csz): New 32 bit constraint. It + avoids placing in the limm field small constants which, otherwise, + could end into a small instruction. + +2018-10-01 Claudiu Zissulescu + + * config/arc/arc.md (maddsidi4_split): Don't use dmac if the + destination register is not odd-even. + (umaddsidi4_split): Likewise. + +2018-10-01 Richard Biener + + * tree-inline.c (expand_call_inline): Store origin of fn + in BLOCK_ABSTRACT_ORIGIN for the inline BLOCK. + * tree.c (block_ultimate_origin): Simplify and do some + checking. + +2018-09-30 Uros Bizjak + + * config/i386/mmx.md (EMMS): New int iterator. + (emms): New int attribute. + (mmx_): Macroize insn from *mmx_emms and *mmx_femms using + EMMS int iterator. Explicitly declare clobbers. + (mmx_emms): Remove expander. + (mmx_femms): Ditto. + * config/i386/predicates.md (emms_operation): Remove predicate. + (vzeroall_pattern): New predicate. + (vzeroupper_pattern): Rename from vzeroupper_operation. + * config/i386/i386.c (ix86_avx_u128_mode_after): Use + vzeroupper_pattern and vzeroall_pattern predicates. + +2018-09-30 Peter Bergner + + PR rtl-optimization/86939 + * ira-lives.c (make_hard_regno_born): Rename from this... + (make_hard_regno_live): ... to this. Remove update to conflict + information. Update function comment. + (make_hard_regno_dead): Add conflict information update. Update + function comment. + (make_object_born): Rename from this... + (make_object_live): ... to this. Remove update to conflict information. + Update function comment. + (make_object_dead): Add conflict information update. Update function + comment. + (mark_pseudo_regno_live): Call make_object_live. + (mark_pseudo_regno_subword_live): Likewise. + (mark_hard_reg_dead): Update function comment. + (mark_hard_reg_live): Call make_hard_regno_live. + (process_bb_node_lives): Likewise. + * lra-lives.c (make_hard_regno_born): Rename from this... + (make_hard_regno_live): ... to this. Remove update to conflict + information. Remove now uneeded check_pic_pseudo_p argument. + Update function comment. + (make_hard_regno_dead): Add check_pic_pseudo_p argument and add update + to conflict information. Update function comment. + (mark_pseudo_live): Remove update to conflict information. Update + function comment. + (mark_pseudo_dead): Add conflict information update. + (mark_regno_live): Call make_hard_regno_live. + (mark_regno_dead): Call make_hard_regno_dead with new arguement. + (process_bb_lives): Call make_hard_regno_live and make_hard_regno_dead. + +2018-09-29 H.J. Lu + + PR target/87370 + * config/i386/i386.c (construct_container): Use TImode for + BLKmode values in 2 integer registers. + +2018-09-29 Jeff Law + + * builtins.c (unterminated_array): Pass in c_strlen_data * to + c_strlen rather than just a tree *. + (c_strlen): Change NONSTR argument to a c_strlen_data pointer. + Update recursive calls appropriately. If caller did not provide a + suitable data pointer, create a local one. When a non-terminated + string is discovered, bubble up information about the string via the + c_strlen_data object. + * builtins.h (c_strlen): Update prototype. + (c_strlen_data): New structure. + * gimple-fold.c (get_range_strlen): Update calls to c_strlen. + For a type 2 call, if c_strlen indicates a non-terminated string + use the length of the non-terminated string. + (gimple_fold_builtin_stpcpy): Update calls to c_strlen. + +2018-09-29 Jakub Jelinek + + PR target/87467 + * config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use + __m512d type for __A argument rather than __m512. + +2018-09-28 John David Anglin + + * match.pd (simple_comparison): Don't optimize if either operand is + a function pointer when target needs function pointer canonicalization. + +2018-09-28 Segher Boessenkool + + * config/rs6000/driver-rs6000.c (asm_names): Adjust the entries for + power5 .. power9 to remove indirection. + * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC, ASM_CPU_POWER6_SPEC, + ASM_CPU_POWER7_SPEC, ASM_CPU_POWER8_SPEC, ASM_CPU_POWER9_SPEC, + ASM_CPU_476_SPEC): Delete. + (ASM_CPU_SPEC): Adjust. + (EXTRA_SPECS): Delete asm_cpu_power5, asm_cpu_power6, asm_cpu_power7, + asm_cpu_power8, asm_cpu_power9, asm_cpu_476. + +2018-09-28 Segher Boessenkool + + * config.in: Delete HAVE_AS_DCI. + * config/powerpcspe/powerpcspe.h: Treat HAVE_AS_DCI as always true. + * config/rs6000/rs6000.h: Ditto. + * configure.ac: Delete HAVE_AS_DCI. + * configure: Regenerate. + +2018-09-28 Segher Boessenkool + + * config.in (HAVE_AS_LWSYNC): Delete. + * config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete. + * config/powerpcspe/sync.md (*lwsync): Always generate lwsync, never + do it as a .long . + * config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete. + * config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it + as a .long . + * configure.ac: Delete HAVE_AS_LWSYNC. + * configure: Regenerate. + +2018-09-28 Eric Botcazou + Pierre-Marie de Rodat + + * calls.c (expand_call): Try to do a tail call for thunks at -O0 too. + * cgraph.h (struct cgraph_thunk_info): Add indirect_offset. + (cgraph_node::create_thunk): Add indirect_offset parameter. + (thunk_adjust): Likewise. + * cgraph.c (cgraph_node::create_thunk): Add indirect_offset parameter + and initialize the corresponding field with it. + (cgraph_node::dump): Dump indirect_offset field. + * cgraphclones.c (duplicate_thunk_for_node): Deal with indirect_offset. + * cgraphunit.c (cgraph_node::analyze): Be prepared for external thunks. + (thunk_adjust): Add indirect_offset parameter and deal with it. + (cgraph_node::expand_thunk): Deal with the indirect_offset field and + pass it to thunk_adjust. Do not call the target hook if it's non-zero + or if the thunk is external or local. Fix formatting. Do not chain + the RESULT_DECL to BLOCK_VARS. Pass the static chain to the target, + if any, in the GIMPLE representation. + * ipa-icf.c (sem_function::equals_wpa): Deal with indirect_offset. + * lto-cgraph.c (lto_output_node): Write indirect_offset field. + (input_node): Read indirect_offset field. + * tree-inline.c (expand_call_inline): Pass indirect_offset field in the + call to thunk_adjust. + * tree-nested.c (struct nesting_info): Add thunk_p field. + (create_nesting_tree): Set it. + (convert_all_function_calls): Copy static chain from targets to thunks. + (finalize_nesting_tree_1): Return early for thunks. + (unnest_nesting_tree_1): Do not finalize thunks. + (gimplify_all_functions): Do not gimplify thunks. + +2018-09-28 David Malcolm + + * opt-suggestions.c (option_proposer::build_option_suggestions): + Release "option_values". + +2018-09-28 David Malcolm + + * coverage.c (get_coverage_counts): Convert problem-reporting dump + messages from MSG_OPTIMIZED_LOCATIONS to MSG_MISSED_OPTIMIZATION. + * dumpfile.c (kind_as_string): New function. + (dump_loc): Rather than a hardcoded prefix of "note: ", use + kind_as_string to vary the prefix based on dump_kind. + (selftest::test_capture_of_dump_calls): Update for above. + +2018-09-28 Uros Bizjak + + * config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG. + (GET_SSE_REGNO): Rename from SSE_REGNO. Update all uses for rename. + +2018-09-28 Uros Bizjak + + * config/i386/i386.h (CC_REGNO): Remove FPSR_REG. + * config/i386/i386.c (ix86_fixed_condition_code_regs): Use + INVALID_REGNUM instead of FPSR_REG. + (ix86_md_asm_adjust): Do not clobber FPSR_REG. + * config/i386/i386.md: Update comment of FP compares. + (fldenv): Do not clobber FPSR_REG. + +2018-09-28 Richard Biener + + * tree.h (BLOCK_ORIGIN): New. + * omp-expand.c (grid_expand_target_grid_body): Assign + BLOCK_ORIGIN to BLOCK_ABSTRACT_ORIGIN. + * tree-inline.c (remap_block): Likewise. + * auto-profile.c (get_function_decl_from_block): Simplify + by eliding the BLOCK_ABSTRACT_ORIGIN chasing. + * langhooks.c (lhd_print_error_function): Likewise. + * optinfo-emit-json.cc (optrecord_json_writer::inlining_chain_to): + Likewise. + * tree-ssa-live.c (remove_unused_scope_block_p): Likewise. + * tree.c (block_nonartificial_location): Likewise. + (block_ultimate_origin): Likewise. + * tree-pretty-print.c (percent_K_format): Likewise. Remove + no longer needed LTO case. + +2018-09-28 Andrew Stubbs + Jan Hubicka + Martin Jambor + + * simplify-rtx.c (simplify_merge_mask): New function. + (simplify_ternary_operation): Use it, also see if VEC_MERGEs with the + same masks are used in op1 or op2. + (test_vec_merge): New function. + (test_vector_ops): Call test_vec_merge. + +2018-09-28 Eric Botcazou + + * config/sparc/sparc-protos.h (sparc_branch_cost): Declare. + * config/sparc/sparc.h (BRANCH_COST): Call sparc_branch_cost. + * config/sparc/sparc.c (struct processor_costs): Add branch_cost field. + (cypress_costs): Set it. + (supersparc_costs): Likewise. + (hypersparc_costs): Likewise. + (leon_cost): Likewise. + (leon3_costs): Likewise. + (sparclet_costs): Likewise. + (ultrasparc_costs): Likewise. + (ultrasparc_costs): Likewise. + (niagara_costs): Likewise. + (niagara2_costs): Likewise. + (niagara3_costs): Likewise. + (niagara4_costs): Likewise. + (niagara7_costs): Likewise. + (m8_costs): Likewise. + (TARGET_CAN_FOLLOW_JUMP): Define. + (pass_work_around_errata::gate): Minor tweak. + (sparc_option_override): Remove MASK_FSMULD mask for V7 processors. + Do not set both MASK_VIS4 and MASK_VIS4B for M8 processor. + Automaitcally clear MASK_FSMULD mask for V7 processors. + (sparc_can_follow_jump): New static function. + (output_ubranch): Deal with CROSSING_JUMP_P. + (sparc_use_sched_lookahead): Rewrite using switch statement. + (sparc_issue_rate): Reorder. + (sparc_branch_cost): New function. + +2018-09-27 Martin Sebor + + * tree.h (tree_to_shwi): Add attribute nonnull and pure. + (tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same. + (int_fits_type_p): Same. + +2018-09-27 Uros Bizjak + + * config/i386/i386.md (FPCR_REG): Remove. + (UNSPEC_FLDCW): Remove. + (x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG. + (x86_fldcw_1): Remove insn pattern. + (fnstenv): Do not clobber FPCR_REG. + (fldenv): Ditto. + * config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register. + (CALL_USED_REGISTERS): Ditto. + (REG_ALLOC_ORDER): Ditto. + (REG_CLASS_CONTENTS): Ditto. + (HI_REGISTER_NAMES): Ditto. + (ADDITIONAL_REGISTER_NAMES): Use defines instead + of numerical constants. + * config/i386/i386.c (regclass_map): Remove fpsr register. + (dbx_register_map): Ditto. + (dbx64_register_map): Ditto. + (svr4_dbx_register_map): Ditto. + (print_reg): Do not handle FPCR_REG. + +2018-09-27 Segher Boessenkool + + PR target/87149 + * config.in (HAVE_AS_CMPB, HAVE_AS_DFP, HAVE_AS_FPRND, HAVE_AS_MFPGPR, + HAVE_AS_POPCNTB, HAVE_AS_POPCNTD, HAVE_AS_POWER8, HAVE_AS_POWER9): + Delete, always treat as true. + * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal): + Ditto. Simplify remaining code. + * config/powerpcspe/powerpcspe.h: Ditto. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto. + Simplify remaining code. + (rs6000_expand_builtin): Ditto. + * config/rs6000/rs6000.h: Ditto. + * configure.ac: Ditto. + * configure: Regenerate. + +2018-09-27 Martin Liska + + * coverage.c (get_coverage_counts): Revert the formatting + of missing profile opt info. + +2018-09-27 Richard Biener + + PR debug/37801 + PR debug/87440 + * dwarf2out.c (set_block_origin_self): Do not mark outermost + block as we do not output that. + (gen_inlined_subroutine_die): Elide the originally outermost + block, matching what we do for concrete instances. + (decls_for_scope): Add parameter specifying whether to recurse + to subblocks. + +2018-09-27 Andrew Stubbs + Tom de Vries + + PR 82089 + + * expmed.c (emit_cstore): Fix handling of result_mode == BImode and + STORE_FLAG_VALUE == 1. + +2018-09-27 Andreas Krebbel + + * config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New + constant definitions. + ("tx_assist"): Replace magic number with PPA_TX_ABORT. + ("*ppa"): Enable pattern also for -march=zEC12 -mno-htm. + ("speculation_barrier"): New expander definition. + +2018-09-26 Indu Bhagat + + PR gcov-profile/86957 + * common.opt: New warning option -Wmissing-profile. + * coverage.c (get_coverage_counts): Add warning for missing .gcda file. + * doc/invoke.texi: Document -Wmissing-profile. + +2018-09-26 Jim Wilson + + * config/riscv/riscv.md (subsi3_extended2): Add J constraint. + (negdi2, negsi2, negsi2_extended, negsi2_extended2): New. + +2018-09-26 Martin Sebor + + * tree.c (zerop): Change return type to bool. + (integer_zerop, integer_onep, integer_each_onep): Same. + (integer_all_onesp, integer_minus_onep, integer_pow2p): Same. + (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same. + (real_onep, real_minus_onep, chain_index): Same. + (print_type_hash_statistics, type_list_equal): Same. + * tree.h (zerop): Same. + (zerop, integer_zerop, integer_onep, integer_each_onep): Same. + (integer_all_onesp, integer_minus_onep, integer_pow2p): Same. + (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same. + (real_onep, real_minus_onep, chain_index): Same. + (print_type_hash_statistics, type_list_equal): Same. + +2018-09-26 Jim Wilson + + * config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment. + +2018-09-26 Jakub Jelinek + + PR target/87414 + * config/i386/i386.c: Include debug.h and dwarf2out.h. + (output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the + call. + +2018-09-25 Andrew Stubbs + + * builtins.c (get_builtin_sync_mem): Force address mode conversion. + +2018-09-26 Uros Bizjak + + * config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS + and FP_SECOND_SSE_REGS. + (REG_CLASS_NAMES): Ditto. + (REG_CLASS_CONTENTS): Ditto. + * config/i386/i386.c (ix86_preferred_reload_class) Do not handle + FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS classes. + (ix86_preferred_output_reload_class): Ditto. + * config/i386/i386.md (fix_trunc_i387_fisttp): Change "=&1f" + clobber constraint to "=&f". + (fix_truncdi_i387): Ditto. + (lrintxfdi2): Ditto. + (fistdi2_): Ditto. + (fpremxf4_i387): Change "=u" constraint to "=f". + (fprem1xf4_i387): Ditto. + (sincosxf3): Ditto. + (fptanxf4_i387): Ditto. + (fxtractxf3_i387): Ditto. + (fscalexf4_i387): Ditto. + (atan2xf3): Change "u" constraint to "f". + (fyl2xxf3_i387): Ditto. + (fyl2xp1xf3_i387): Ditto. + +2018-09-26 Uros Bizjak + + PR target/87439 + * config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update + for removed I387_MASK_PM entity. + + +2018-09-26 Jeff Law + Revert + 2018-09-26 Alexey Neyman + + * graphite.h: Include and ; these + headers are no longer pulled in by . + +2018-09-26 Richard Biener + + PR debug/87443 + * dwarf2out.c (gen_lexical_block_die): Do not equate inline + or concrete instance DIE to the tree. Create abstract origin + attributes also for concrete instances. + +2018-09-26 Alexey Neyman + + * graphite.h: Include and ; these + headers are no longer pulled in by . + +2018-09-26 Matthew Malcomson + + * config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op): + Use new helper functions. + * config/arm/sync.md (atomic_load, atomic_store): + Use new helper functions. + * config/arm/aarch-common-protos.h (aarch_mm_needs_acquire, + aarch_mm_needs_release): New declarations. + * config/arm/aarch-common.c (aarch_mm_needs_acquire, + aarch_mm_needs_release): New. + +2018-09-26 Eric Botcazou + + * config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks. + (arm32_output_mi_thunk): Deal with long calls. + +2018-09-26 Richard Biener + + PR debug/87428 + PR debug/87362 + * tree-inline.c (expand_call_inline): When the location + of the call is UNKNOWN_LOCATION use DECL_SOURCE_LOCATION + or BUILTINS_LOCATION for the BLOCK_SOURCE_LOCATION of + the inserted BLOCK to make inlined_function_outer_scope_p + recognize it. + * dwarf2out.c (add_call_src_coords_attributes): Do not add + coords for reserved locations. + +2018-09-25 Segher Boessenkool + + * config/rs6000/rs6000.md (*movcc_internal1): Use set_attr_alternative. + (*call_indirect_nonlocal_sysv): Ditto. + (*call_value_indirect_nonlocal_sysv): Ditto. + (*sibcall_nonlocal_sysv): Ditto. + (*sibcall_value_nonlocal_sysv): Ditto. + (_): Ditto. + (tf_): Ditto. + +2018-09-25 Segher Boessenkool + + * config/rs6000/altivec.md (*altivec_mov): Write the output + control string as a list of templates instead of as C code. + (*altivec_movti): Ditto. + * config/rs6000/darwin.md (movdf_low_di): Ditto. + +2018-09-25 Jim Wilson + + * config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak + when target symbol is weak. + +2018-09-25 Bernd Edlinger + + PR c/87387 + * builtins.c (unterminated_array): Simplify. + * expr.c (string_constant): Handle SSA_NAME. Add more exceptions + where pointer arithmetic is safe. + +2018-09-25 Segher Boessenkool + + PR target/86987 + * config/rs6000/altivec.md (altivec_vspltb): Use + const_0_to_15_operand instead of u5bit_cint_operand. + (*altivec_vspltb_internal): Ditto. + (altivec_vspltb_direct): Ditto. + (altivec_vsplth): Use const_0_to_7_operand instead of + u5bit_cint_operand. + (*altivec_vsplth_internal): Ditto. + (altivec_vsplth_direct): Ditto. + (altivec_vspltw): Use const_0_to_3_operand instead of + u5bit_cint_operand. + (*altivec_vspltw_internal): Ditto. + (altivec_vspltw_direct): Ditto. + (altivec_vspltsf): Ditto. + (*altivec_vspltsf_internal): Ditto. + * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the + various splats with the proper size immediate. Reorder the various + cases by ascending size of immediate, and put all such together. + +2018-09-25 Richard Biener + + PR debug/83941 + * dwarf2out.c (add_AT_external_die_ref): Remove now redundant + GC-ification. + (maybe_create_die_with_external_ref): Do not create + DW_TAG_imported_unit here. + (add_abstract_origin_attribute): Handle external BLOCK refs. + (dwarf2out_abstract_function): Simplify LTO case. + (dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely + rather than using maybe_create_die_with_external_ref. + +2018-09-25 Uros Bizjak + + PR target/71278 + * config/i386/i386.md (frndintxf2_mask_pm): Remove. + (frndintxf2_mask_pm_i387): Ditto. + (nearbyintxf2): Rewrite expander pattern to match rintxf2. + Enable for !flag_trapping_math. + (nearbyint2): Enable x87 modes for !flag_trapping_math. + Enable SSE modes for TARGET_SSE4_1 and expand them with round insn. + Change operand 1 predicate to nonimmediate_operand. + (attr "i387_cw"): Remove mask_pm. + * config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_CW_MASK_PM. + (enum ix86_entity): Remove I387_MASK_PM. + * config/i386/i386.c (ix86_i387_mode_needed): Do not + handle I387_MASK_PM. + (ix86_mode_needed): Ditto. + (ix86_mode_after): Ditto. + (ix86_mode_entry): Ditto. + (ix86_mode_exit): Ditto. + (emit_i387_cw_initialization): Do not handle I387_CW_MASK_PM. + +2018-09-25 Jakub Jelinek + + * vr-values.c (vr_values::vr_values): Initialize to_remove_edges and + to_update_switch_stmts to vNULL instead of calling create on them + immediately. + +2018-09-25 Richard Biener + + PR tree-optimization/87402 + * tree-ssa-sccvn.c (SSA_VISITED): Remove unused function. + (visit_phi): Re-instantiate handling of supposed to be VARYING + but non-VARYING backedge value. + +2018-09-25 Richard Biener + + PR debug/83941 + * dwarf2out.c (struct sym_off_pair): New. + (external_die_map): New global. + (lookup_decl_die): When in LTO create DIEs lazily from the + external_die_map. + (lookup_block_die): New function, create DIEs lazily in LTO. + (equate_block_to_die): New function. + (dwarf2out_die_ref_for_decl): During WPA get the association + from the external DIE map. + (dwarf2out_register_external_die): Record mapping into the + external DIE map. + (maybe_create_die_with_external_ref): New function split out from + DIE generation part of old dwarf2out_register_external_die. + (add_abstract_origin_attribute): Do not return the DIE. When + in LTO reference externals directly. + (dwarf2out_abstract_function): When in LTO ignore calls for + decls with external DIEs (already present abstract instances). + (gen_call_site_die): Adjust. + (add_high_low_attributes): Likewise. + (gen_lexical_block_die): Likewise. + (gen_inlined_subroutine_die): Likewie. + (gen_block_die): Likewise. + (dwarf2out_inline_entry): Likewise. + (dwarf2out_early_finish): In LTRANS phase create DW_TAG_imported_unit + DIEs. + +2018-09-25 Martin Liska + + * ipa-fnsummary.c (estimate_node_size_and_time): Scale by two + integers and not by a float value. + +2018-09-25 Martin Liska + + PR fortran/87394 + * dbgcnt.c (dbg_cnt_process_single_pair): Return false + instead of NULL. + * dumpfile.c (dump_enable_all): Remove extra parenthesis. + * gcov-tool.c: Declare the function with ATTRIBUTE_NORETURN. + * godump.c (go_format_type): Remove extra parenthesis. + +2018-09-25 Martin Liska + + * alias.c (set_dest_equal_p): Remove unused function. + * config/i386/i386.c (def_builtin_pure2): Likewise. + * diagnostic-show-locus.c (class layout): Remove + unused field. + (layout::layout): Likewise here. + * dump-context.h (class temp_dump_context): Likewise. + * dwarf2out.c (add_AT_fde_ref): Remove unused function. + (add_AT_loclistsptr): Likewise. + (add_AT_offset): Likewise. + (get_AT_hi_pc): Likewise. + (is_comdat_die): Likewise. + (type_is_enum): Likewise. + (ceiling): Likewise. + (add_AT_vms_delta): Likewise. + (is_class_die): Likewise. + * edit-context.c (class line_event): Remove unused field. + * graphite-sese-to-poly.c (tree_int_to_gmp): Remove + unused function. + * ipa-cp.c (ipa_get_vr_lat): Likewise. + * lra-constraints.c (ok_for_index_p_nonstrict): Likewise. + (ok_for_base_p_nonstrict): Likewise. + * tree-chrec.c (is_not_constant_evolution): Likewise. + (chrec_fold_poly_cst): Likewise. + * tree-if-conv.c (has_pred_critical_p): Likewise. + * tree-ssa-coalesce.c (print_exprs): Likewise. + * tree-ssa-pre.c (bitmap_set_contains_expr): Likewise. + * tree-ssa-uninit.c (is_and_or_or_p): Likewise. + * tree-vrp.c (value_ranges_intersect_p): Likewise. + (value_range_nonnegative_p): Likewise. + +2018-09-25 Martin Liska + + * config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue): + Do not handle "GNU Pascal". + * config/rs6000/rs6000.c (rs6000_output_function_epilogue): + Likewise. + * config/sparc/sparc.c (sparc_pass_by_reference): Remove Pascal + from documentation. Likewise. + * dbxout.c (dbxout_range_type): Likewise. + * doc/cpp.texi: Likewise. + * doc/extend.texi: Likewise. + * doc/frontends.texi: Likewise. + * doc/invoke.texi: Remove Pascal entry. + * tree.def (CLEANUP_POINT_EXPR): Likewise. + * doc/rtl.texi (MODE_FUNCTION): Remove not used entry. + +2018-09-25 Martin Liska + + PR middle-end/86078 + * doc/invoke.texi: Document all parameters and remove default + of the parameters. + +2018-09-25 Ilya Leoshkevich + + PR bootstrap/87417 + * rtl.c (rtx_code_size): Take into account that EQ_ATTR_ALT + contains HOST_WIDE_INTs when computing its size. + +2018-09-24 Jim Wilson + + PR target/87391 + * config/riscv/riscv.h (STACK_BOUNDARY): Test riscv_abi == ABI_ILP32E + not TARGET_RVE. + (ABI_STACK_BOUNDARY, MAX_ARGS_IN_REGISTERS): Likewise. + +2018-09-24 Andrew Pinski + + * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Don't + access prev before checking it for NULLness in the + AARCH64_FUSE_CMP_BRANCH case. + +2018-09-24 H.J. Lu + + PR target/82699 + * config/i386/i386.c (rest_of_insert_endbranch): Set + endbr_queued_at_entrance to true and don't insert ENDBR if + x86_function_profiler will be called. + (x86_function_profiler): Insert ENDBR if endbr_queued_at_entrance + is true. + * config/i386/i386.h (machine_function): Add + endbr_queued_at_entrance. + +2018-09-24 Ilya Leoshkevich + + * genattrtab.c (mk_attr_alt): Use alternative_mask. + (attr_rtx_1): Adjust caching to match the new EQ_ATTR_ALT field + types. + (check_attr_test): Use alternative_mask. + (get_attr_value): Likewise. + (compute_alternative_mask): Use alternative_mask and XWINT. + (make_alternative_compare): Use alternative_mask. + (attr_alt_subset_p): Use XWINT. + (attr_alt_subset_of_compl_p): Likewise. + (attr_alt_intersection): Use alternative_mask and XWINT. + (attr_alt_union): Likewise. + (attr_alt_complement): Use HOST_WIDE_INT and XWINT. + (mk_attr_alt): Use alternative_mask and HOST_WIDE_INT. + (simplify_test_exp): Use alternative_mask and XWINT. + (write_test_expr): Use alternative_mask and XWINT, adjust bit + number calculation to support 64 bits. Generate code that + checks 64-bit masks. + (main): Use alternative_mask. + * rtl.def (EQ_ATTR_ALT): Change field types from ii to ww. + +2018-09-24 Ilya Leoshkevich + + PR target/80080 + * config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL + RETURN+USE when returning via %r14. + +2018-09-24 Martin Liska + + * gcov.c (output_lines): Print colorization legend + for both flag_use_colors and flag_use_hotness_colors. + Reword the help. + +2018-09-24 Martin Liska + + * coverage.c (get_coverage_counts): Use warning_at + with current_function_decl location. Use %qD in warning + message. + +2018-09-24 Martin Liska + + * memory-block.h (memory_block_pool::release): Annotate with + valgrind that the memory is not accessible. + +2018-09-24 Martin Liska + + PR sanitizer/85774 + * asan.c: Make asan_handled_variables extern. + * asan.h: Likewise. + * cfgexpand.c (expand_stack_vars): Make sure + a representative is unpoison if another + variable in the partition is handled by + use-after-scope sanitization. + +2018-09-24 Richard Biener + + PR tree-optimization/63155 + * tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to + the worklist when the edge of the respective argument isn't + executable. + +2018-09-23 Uros Bizjak + + * config/i386/i386.h (enum reg_class): Rename MASK_REGS to + ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS. + (MASK_CLASS_P): Update for rename. + (MAYBE_MASK_CLASS_P): Ditto. + (REG_CLASS_NAMES): Update. + (REG_CLASS_CONTENT): Update. + * config/i386/i386.c (regclass_map): Update for MASK_REG + and ALL_MASK_REGS rename. + * config/i386/constraints.md (Yk): Update for rename. + (k): Ditto. + +2018-09-23 Uros Bizjak + + * config/i386/i386.h (enum reg_class): Remove + EVEX_SSE_REGS and MOD4_SSE_REGS. + (REG_CLASS_NAMES): Update. + (REG_CLASS_CONTENT): Update. + * config/i386/i386.c (regclass_map): Declare AVX-512 SSE + registers as ALL_SSE_REGS. + (ix86_additional_allocno_class_p): Remove. + (TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Remove. + (ix86_register_priority): Lower priority of EVEX SSE registers. + Use IN_RANGE macro where appropriate. + (ix86_hard_regno_mode_ok): Merge AVX-5124FMAPS and + AVX-5124VNNIW checks. + (ix86_modes_tieable_p): Tie 512-bit SSE modes. + * config/i386/sse.md (avx5124fmaddps_4fmaddps) + (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddps_maskz) + (avx5124fmaddps_4fmaddss, avx5124fmaddps_4fmaddss_mask) + (avx5124fmaddps_4fmaddss_maskz, avx5124fmaddps_4fnmaddps) + (avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddps_maskz) + (avx5124fmaddps_4fnmaddss, avx5124fmaddps_4fnmaddss_mask) + (avx5124fmaddps_4fnmaddss_maskz, avx5124vnniw_vp4dpwssd) + (avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssd_maskz) + (avx5124vnniw_vp4dpwssds, avx5124vnniw_vp4dpwssds_mask) + (avx5124vnniw_vp4dpwssds_maskz): Use "v" instead of "Yh" constraint. + * config/i386/constraints.md (Yh): Remove. + +2018-09-23 Uros Bizjak + + * config/i386/i386.c (regclass_map): Declare integer REX registers + as GENERAL_REGS. + +2018-09-23 Gerald Pfeifer + + * doc/service.texi (Service): Switch the fsf.org link to https. + +2018-09-22 Chung-Ju Wu + + PR target/86798 + * config/nds32/nds32.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + +2018-09-21 Florian Weimer + + PR middle-end/81035 + * doc/extend.texi (Common Function Attributes): Mention that + noreturn suppresses tail call optimization. + +2018-09-21 Jeff Law + + * gimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call + vr_values::cleanup_edges_and_switches. + * tree-vrp.c (to_remove_edges, to_update_switch_stmts): Moved into + vr_values class. + (identify_jump_threads): Remove EDGE_IGNORE handling. + (execute_vrp): Move handling of to_remove_edges and + to_update_switch_stmts into vr_values class member functions. + * tree-vrp.h (switch_update, to_remove_edges): Remove declarations. + (to_update_switch_stmts): Likewise. + * vr-values.c: Include cfghooks.h. + (vr_values::vr_values): Initialize to_remove_edges and + to_update_switch_stmts. + (vr_values::~vr_values): Verify to_remove_edges and + to_update_switch_stmts are empty. + (vr_values::simplify_switch_using_ranges): Set EDGE_IGNORE as needed. + (vr_values::cleanup_edges_and_switches): New member function. + * vr-values.h (vr_values): Add cleanup_edges_and_switches member + function. Add new data members. + +2018-09-21 David Malcolm + + PR tree-optimization/87309 + * dumpfile.c (dump_context::begin_scope): Filter the dump_loc + calls with pflags and alt_flags. + (selftest::test_capture_of_dump_calls): Add test of interaction of + MSG_OPTIMIZED_LOCATIONS with AUTO_DUMP_SCOPE. + +2018-09-21 Olivier Hainque + + * config.gcc: Factorize and comment inclusion of vxworks-dummy.h. + +2018-09-21 Olivier Hainque + + * config/vxworks.h (CLEAR_INSN_CACHE): #define to 1. + +2018-09-21 Olivier Hainque + + * config/vxworks.h (VXWORKS_LIBGCC_SPEC): Remove -lc_internal. + Merge block comment with the one ahead of VXWORKS_LIBS_RTP. Then: + (VXWORKS_LIBS_RTP): Minor reordering. + +2018-09-21 Olivier Hainque + + * config/vxworks.h (STARTFILE_PREFIX_SPEC): Define. + (VXWORKS_LIBS_DIR_RTP): Remove definition and use. + +2018-09-21 Olivier Hainque + + * config/vxworks.h (SIZE_TYPE): Account for TARGET_VXWORKS64. + (PTRDIFF_TYPE): Likewise. + +2018-09-21 Olivier Hainque + + * config.gcc: Enforce def of TARGET_VXWORKS64 to 1 from + triplet, similar to support for VxWorks7. + * config/vxworks-dummy.h: Provide a default definition + of TARGET_VXWORKS64 to 0. + +2018-09-21 Olivier Hainque + + * config/vxworks.h (TARGET_VXWORKS7): Move default definition ... + * config/vxworks-dummy.h: here. + +2018-09-21 Olivier Hainque + + * config.gcc: Prepend vxworks-dummy.h to tm_file for powerpc* + +2018-09-21 Shaokun Zhang + Bo Zhou + + * config/aarch64/aarch64-cores.def (tsv110): New CPU. + * config/aarch64/aarch64-tune.md: Regenerated. + * doc/invoke.texi (AArch64 Options/-mtune): Add "tsv110". + * config/aarch64/aarch64.c (tsv110_tunings): New tuning table. + * config/aarch64/aarch64-cost-tables.h: Add "tsv110" extra costs. + +2018-09-21 Andrew Stubbs + Julian Brown + + * builtins.c (get_builtin_sync_mem): Handle address spaces. + +2018-09-21 Eric Botcazou + + * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false + if the call takes a static chain. + +2018-09-21 Martin Liska + + * auto-profile.c (autofdo_source_profile::read): Do not + set sum_all. + (read_profile): Do not add working sets. + (read_autofdo_file): Remove sum_all. + (afdo_callsite_hot_enough_for_early_inline): Remove const + qualifier. + * coverage.c (struct counts_entry): Remove gcov_summary. + (read_counts_file): Read new GCOV_TAG_OBJECT_SUMMARY, + do not support GCOV_TAG_PROGRAM_SUMMARY. + (get_coverage_counts): Remove summary and expected + arguments. + * coverage.h (get_coverage_counts): Likewise. + * doc/gcov-dump.texi: Remove -w option. + * gcov-dump.c (dump_working_sets): Remove. + (main): Do not support '-w' option. + (print_usage): Likewise. + (tag_summary): Likewise. + * gcov-io.c (gcov_write_summary): Do not dump + histogram. + (gcov_read_summary): Likewise. + (gcov_histo_index): Remove. + (gcov_histogram_merge): Likewise. + (compute_working_sets): Likewise. + * gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Mark + it not obsolete. + (GCOV_TAG_PROGRAM_SUMMARY): Mark it obsolete. + (GCOV_TAG_SUMMARY_LENGTH): Adjust. + (GCOV_HISTOGRAM_SIZE): Remove. + (GCOV_HISTOGRAM_BITVECTOR_SIZE): Likewise. + (struct gcov_summary): Simplify rapidly just + to runs and sum_max fields. + (gcov_histo_index): Remove. + (NUM_GCOV_WORKING_SETS): Likewise. + (compute_working_sets): Likewise. + * gcov-tool.c (print_overlap_usage_message): Remove + trailing empty line. + * gcov.c (read_count_file): Read GCOV_TAG_OBJECT_SUMMARY. + (output_lines): Remove program related line. + * ipa-profile.c (ipa_profile): Do not consider GCOV histogram. + * lto-cgraph.c (output_profile_summary): Do not stream GCOV + histogram. + (input_profile_summary): Do not read it. + (merge_profile_summaries): And do not merge it. + (input_symtab): Do not call removed function. + * modulo-sched.c (sms_schedule): Do not print sum_max. + * params.def (HOT_BB_COUNT_FRACTION): Reincarnate param that was + removed when histogram method was invented. + (HOT_BB_COUNT_WS_PERMILLE): Mention that it's used only in LTO + mode. + * postreload-gcse.c (eliminate_partially_redundant_load): Fix + GCOV coding style. + * predict.c (get_hot_bb_threshold): Use HOT_BB_COUNT_FRACTION + and dump selected value. + * profile.c (add_working_set): Remove. + (get_working_sets): Likewise. + (find_working_set): Likewise. + (get_exec_counts): Do not work with working sets. + (read_profile_edge_counts): Do not inform as sum_max is removed. + (compute_branch_probabilities): Likewise. + (compute_value_histograms): Remove argument for call of + get_coverage_counts. + * profile.h: Do not make gcov_summary const. + +2018-09-21 Monk Chiang + + * config.gcc (nds32*-*-*): Set TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0. + +2018-09-21 Eric Botcazou + + PR tree-optimization/86990 + * gimple-ssa-store-merging.c (imm_store_chain_info:coalesce_immediate): + Check that the entire merged store group is made of constants only for + overlapping stores. + +2018-09-20 Allan Sandfeld Jensen + + * gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib. + (VTABLE_VERIFICATION_SPEC): Likewise. + (SANITIZER_EARLY_SPEC): Likewise. + (SANITIZER_SPEC): Likewise. + * config/darwin.h (LINK_COMMAND_SPEC): Likewise. + * doc/invoke.texi (Link Options): Document -r. + +2018-09-20 Richard Biener + + PR middle-end/87054 + * gimplify.c (gimplify_expr): Retain alignment of + addressable lvalue in dereference. + +2018-09-20 Alexandre Oliva + + PR bootstrap/87013 + * configure.ac: Check for .loc is_stmt support. + * configure, config.in: Rebuilt. + * dwarf2out.c (dwarf2out_source_line): Skip is_stmt + if not supported. + +2018-09-20 Segher Boessenkool + + * config/rs6000/rs6000.opt (misel=no, misel=yes): Delete. + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -misel=yes and + -misel=no. + +2018-09-20 Segher Boessenkool + + * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete + VECTOR_OTHER. + * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete + case VECTOR_OTHER. + +2018-09-20 Marek Polacek + + * doc/invoke.texi: Add -Wno-init-list-lifetime to C++ Language Options. + +2018-09-20 Richard Sandiford + + PR tree-optimization/87288 + * tree-vect-loop.c (vect_analyze_loop_2): Take PEELING_FOR_GAPS + into account when determining PEELING_FOR_NITERS. + +2018-09-20 Richard Sandiford + + PR tree-optimization/86877 + * tree-vect-loop.c (vect_analyze_loop_2): Call + vect_verify_datarefs_alignment. + +2018-09-19 Marek Polacek + + * doc/invoke.texi: Document -Wclass-conversion. + +2018-09-19 John David Anglin + + * config/pa/pa.c (pa_adjust_priority): Delete. + (TARGET_SCHED_ADJUST_PRIORITY): Delete define. + + * config/pa/pa.md (atomic_storeqi): Restore deleted expander. + (atomic_storehi): Likewise. + (atomic_storesi): Likewise. + (atomic_loaddi): Restore compare and swap exchange loop code. + +2018-09-19 Segher Boessenkool + + PR rtl-optimization/86902 + * combine.c (try_combine): When changing the CC mode used, don't change + an unrelated mode in other_insn to that new CC mode. + +2018-09-19 David Malcolm + + * tree-data-ref.c (runtime_alias_check_p): Use formatted printing + with %T in place of calls to dump_generic_expr. + (prune_runtime_alias_test_list): Likewise. + (create_runtime_alias_checks): Likewise. + * tree-vect-data-refs.c (vect_check_nonzero_value): Likewise. + (vect_analyze_data_ref_dependence): Likewise. + (vect_slp_analyze_data_ref_dependence): Likewise. + (vect_record_base_alignment): Likewise. Use %G in place of call + to dump_gimple_stmt. + (vect_compute_data_ref_alignment): Likewise. + (verify_data_ref_alignment): Likewise. + (vect_find_same_alignment_drs): Likewise. + (vect_analyze_group_access_1): Likewise. + (vect_analyze_data_ref_accesses): Likewise. + (dependence_distance_ge_vf): Likewise. + (dump_lower_bound): Likewise. + (vect_prune_runtime_alias_test_list): Likewise. + (vect_find_stmt_data_reference): Likewise. + (vect_analyze_data_refs): Likewise. + (vect_create_addr_base_for_vector_ref): Likewise. + (vect_create_data_ref_ptr): Likewise. + * tree-vect-loop-manip.c (vect_set_loop_condition): Likewise. + (vect_can_advance_ivs_p): Likewise. + (vect_update_ivs_after_vectorizer): Likewise. + (vect_gen_prolog_loop_niters): Likewise. + (vect_prepare_for_masked_peels): Likewise. + * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise. + (vect_determine_vectorization_factor): Likewise. + (vect_is_simple_iv_evolution): Likewise. + (vect_analyze_scalar_cycles_1): Likewise. + (vect_analyze_loop_operations): Likewise. + (report_vect_op): Likewise. + (vect_is_slp_reduction): Likewise. + (check_reduction_path): Likewise. + (vect_is_simple_reduction): Likewise. + (vect_create_epilog_for_reduction): Likewise. + (vect_finalize_reduction:): Likewise. + (vectorizable_induction): Likewise. + (vect_transform_loop_stmt): Likewise. + (vect_transform_loop): Likewise. + (optimize_mask_stores): Likewise. + * tree-vect-patterns.c (vect_pattern_detected): Likewise. + (vect_split_statement): Likewise. + (vect_recog_over_widening_pattern): Likewise. + (vect_recog_average_pattern): Likewise. + (vect_determine_min_output_precision_1): Likewise. + (vect_determine_precisions_from_range): Likewise. + (vect_determine_precisions_from_users): Likewise. + (vect_mark_pattern_stmts): Likewise. + (vect_pattern_recog_1): Likewise. + * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. + (vect_record_max_nunits): Likewise. + (vect_build_slp_tree_1): Likewise. + (vect_build_slp_tree_2): Likewise. + (vect_print_slp_tree): Likewise. + (vect_analyze_slp_instance): Likewise. + (vect_detect_hybrid_slp_stmts): Likewise. + (vect_detect_hybrid_slp_1): Likewise. + (vect_slp_analyze_operations): Likewise. + (vect_slp_analyze_bb_1): Likewise. + (vect_transform_slp_perm_load): Likewise. + (vect_schedule_slp_instance): Likewise. + * tree-vect-stmts.c (vect_mark_relevant): Likewise. + (vect_mark_stmts_to_be_vectorized): Likewise. + (vect_init_vector_1): Likewise. + (vect_get_vec_def_for_operand): Likewise. + (vect_finish_stmt_generation_1): Likewise. + (vect_check_load_store_mask): Likewise. + (vectorizable_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_load): Likewise. + (vect_analyze_stmt): Likewise. + (vect_is_simple_use): Likewise. + (vect_get_vector_types_for_stmt): Likewise. + (vect_get_mask_type_for_stmt): Likewise. + * tree-vectorizer.c (increase_alignment): Likewise. + +2018-09-19 Andrew Stubbs + + * doc/rtl.texi: Adjust vec_select description. + * simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use + non-constant selectors. + +2018-09-19 Matthew Malcomson + + * config/aarch64/aarch64-protos.h + (aarch64_offset_9bit_signed_unscaled_p): New declaration. + * config/aarch64/aarch64.md (arches): New "rcpc8_4" attribute value. + (arch_enabled): Add check for "rcpc8_4" attribute value of "arch". + * config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield. + (AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4. + (AARCH64_FL_PROFILE): Move index so flags are ordered. + (AARCH64_ISA_RCPC8_4): New flag. + * config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed + to aarch64_offset_9bit_signed_unscaled_p. + * config/aarch64/atomics.md (atomic_store): Allow offset + and use stlur. + * config/aarch64/constraints.md (Ust): New constraint. + * config/aarch64/predicates.md. + (aarch64_9bit_offset_memory_operand): New predicate. + (aarch64_rcpc_memory_operand): New predicate. + +2018-09-19 Eric Botcazou + + PR rtl-optimization/87361 + * rtlanal.c (nonzero_bits1): Revert accidental change. + +2018-09-19 Richard Biener + + PR tree-optimization/87349 + PR tree-optimization/87342 + * tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation. + +2018-09-18 Marek Polacek + + P1064R0 - Allowing Virtual Function Calls in Constant Expressions + * gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert. + +2018-09-18 Segher Boessenkool + + * config/rs6000/rs6000.md: Remove old "Cygnus sibcall" comment. + +2018-09-18 Segher Boessenkool + + PR rtl-optimization/86882 + * rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER. + +2018-09-18 Uros Bizjak + + * config/i386/i386.md (*extendxf2): Macroize insn from + *extendsfxf2 and *extenddfxf2 using MODEF mode iterator. + +2018-09-18 Jonathan Wakely + + PR other/87353 + * doc/invoke.texi (Link Options): Fix formatting and grammar. + +2018-09-18 Richard Biener + + PR middle-end/63155 + * tree-ssa-coalesce.c (tree_int_map_hasher): Remove. + (compute_samebase_partition_bases): Likewise. + (coalesce_ssa_name): Always use compute_optimized_partition_bases. + (gimple_can_coalesce_p): Simplify. + +2018-09-18 Hans-Peter Nilsson + + Handle a library implementation of ffs calling __builtin_ffs. + * config/mmix/mmix.c (TARGET_INIT_LIBFUNCS): Override with... + (mmix_init_libfuncs): New function: make __builtin_ffs expand + to __ffsdi2. + +2018-09-17 David Malcolm + + * diagnostic-show-locus.c (class layout_range): Add field + "m_original_idx". + (layout_range::layout_range): Add "original_idx" param and use it + to initialize new field. + (make_range): Use 0 for original_idx. + (layout::layout): Pass in index to calls to + maybe_add_location_range. + (layout::maybe_add_location_range): Add param "original_idx" and + pass it on to layout_range. + (layout::print_any_labels): Pass on range->m_original_idx to + get_text call. + (gcc_rich_location::add_location_if_nearby): Use 0 for + original_idx. + * gcc-rich-location.h (text_range_label::get_text): Update for new + param. + (range_label_for_type_mismatch::get_text): Likewise. + +2018-09-17 Uros Bizjak + + * config/i386/i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier. + +2018-09-17 David Malcolm + + * gimple-ssa-sprintf.c (fmtwarn): Update for introduction of + format_string_diagnostic_t. + (fmtwarn_n): Likewise. + * substring-locations.c + (format_string_diagnostic_t::format_string_diagnostic_t) New ctor. + (format_warning_n_va): Convert to... + (format_string_diagnostic_t::emit_warning_n_va): ...this. + (format_warning_va): Convert to... + (format_string_diagnostic_t::emit_warning_va): ...this. + (format_warning_at_substring): Convert to... + (format_string_diagnostic_t::emit_warning): ...this. + (format_warning_at_substring_n): Convert to... + (format_string_diagnostic_t::emit_warning_n): ...this. + * substring-locations.h (class format_string_diagnostic_t): New + class. + (format_warning_va): Convert to + format_string_diagnostic_t::emit_warning_va. + (format_warning_n_va): Convert to + format_string_diagnostic_t::emit_warning_n_va. + (format_warning_at_substring): Convert to + format_string_diagnostic_t::emit_warning. + (format_warning_at_substring_n): Convert to + format_string_diagnostic_t::emit_warning_n. + +2018-09-17 Cesar Philippidis + Bernd Schmidt + + * config/nvptx/nvptx.md (atomic_fetch_): Enable with + SImode args. + +2018-09-17 Uros Bizjak + + * config/i386/i386.md (truncxf2_i387_noop_unspec): Change + operand 0 predicate to nonimmediate operand. + (rint2_frndint): Remove insn pattern. + (rint2): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate rintxf2 insn. + (frndintxf2_): Rename from frndint2_. + Do not use X87MODEF mode macro. + (frndintxf2__i387): Rename from + frndint2__i387. Do not use X87MODEF mode macro. + (2): For non-SSE modes, extend operand 1 + to XFmode and generate significandxf3 insn. + +2018-09-17 Richard Biener + + PR tree-optimization/87328 + * tree-ssa-sccvn.c (process_bb): Remove assertion about not + visiting unexecutable backedges when not iterating. + (do_rpo_vn): Mark all edges not executable even when not + iterating. + +2018-09-17 Martin Jambor + + PR c/63886 + * doc/invoke.texi (Warning Options): Likewise. + +2018-09-17 Richard Biener + + PR tree-optimization/87301 + * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly + clean EH info from leftover copy assignments. + +2018-09-17 Martin Liska + + PR gcov-profile/85871 + * gcov.c (output_intermediate_file): Fix out of bounds + access. + +2018-09-17 Vineet Gupta + + * config/arc/arc.c: Object attributes for core4 not reflected + correctly. + * config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes + core3). + +2018-09-17 Alexey Brodkin + + * config/arc/linux.h (LINK_EH_SPEC): Add missing space. + +2018-09-17 Martin Liska + + * doc/gcov.texi: Document new option --use-hotness-colors. + * gcov.c (struct source_info): Declare new field. + (source_info::source_info): Set default for maximum_count. + (print_usage): Add new -q option. + (process_args): Process it. + (accumulate_line_info): Save src->maximum_count. + (output_line_beginning): Make color line number if + flag_use_hotness_colors is set. + (output_line_details): Pass default argument value. + (output_lines): Pass src->maximum_count. + +2018-09-17 Martin Liska + + * common/config/i386/i386-common.c (ix86_get_valid_option_values): + Use processor_names table. + * config/i386/i386.c (ix86_default_align): Use + processor_cost_table for alignment values. + (ix86_option_override_internal): Use processor_names. + (ix86_function_specific_print): Likewise. + * config/i386/i386.h (struct processor_costs): + Add alignment values. + (struct ptt): Remove and replace with const char *. + * config/i386/x86-tune-costs.h (struct processor_costs): + Declare default alignments for all costs. + +2018-09-17 Aldy Hernandez + + * tree-vrp.c (extract_range_from_unary_expr): Do not special case + symbolics or VR_VARYING ranges for ABS_EXPR. + * wide-int-range.cc (wide_int_range_abs): Return positive numbers + when range will wrap. + +2018-09-15 Eric Botcazou + + PR middle-end/86864 + * cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER + before and after a JUMP_TABLE_DATA. + +2018-09-14 John David Anglin + + PR middle-end/87188 + * dojump.c (do_compare_and_jump): Canonicalize function pointers + when one operand is a function pointer. Use POINTER_TYPE_P and + FUNC_OR_METHOD_TYPE_P. + * expr.c (do_store_flag): Use POINTER_TYPE_P and FUNC_OR_METHOD_TYPE_P. + * fold-const.c (build_range_check): Likewise. + * match.pd (simple_comparison): Likewise. + +2018-09-14 David Malcolm + + PR c/82967 + * spellcheck.c (get_edit_distance_cutoff): New function. + (selftest::test_edit_distance_unit_test_oneway): Rename to... + (selftest::test_get_edit_distance_one_way): ...this. + (selftest::test_get_edit_distance_unit): Rename to... + (selftest::test_get_edit_distance_both_ways): ...this. + (selftest::test_edit_distances): Move tests to this new function, + and test some more pairs of strings. Update for above renaming. + (selftest::get_old_cutoff): New function. + (selftest::test_get_edit_distance_cutoff): New function. + (selftest::assert_suggested_for): New function. + (ASSERT_SUGGESTED_FOR): New macro. + (selftest::assert_not_suggested_for): New function. + (ASSERT_NOT_SUGGESTED_FOR): New macro. + (selftest::test_suggestions): New function. + (selftest::spellcheck_c_tests): Move test_get_edit_distance_unit + tests to selftest::test_edit_distances and call it. Add calls to + selftest::test_get_edit_distance_cutoff and + selftest::test_suggestions. + * spellcheck.h (get_edit_distance_cutoff): New function declaration. + (best_match::consider): Replace hard-coded cutoff calculation with + a call to... + (best_match::get_cutoff): New declaration. + (best_match::get_best_meaningful_candidate): Likewise. + +2018-09-14 Bernd Edlinger + + * builtins.c (fold_builtin_strlen): Remove TODO comment. + +2018-09-14 Bernd Edlinger + + revert: + 2018-07-30 Bernd Edlinger + + * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL + terminated string literal. + +2018-09-14 Martin Sebor + + * builtins.c (unterminated_array): Handle ARRAY_REF. + (expand_builtin_stpcpy_1): Detect unterminated char arrays. + * builtins.h (unterminated_array): Declare extern. + * gimple-fold.c (gimple_fold_builtin_stpcpy): Detect unterminated + arrays. + (gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed + calls. + +2018-09-14 Martin Sebor + Jeff Law + + * builtins.c (unterminated_array): New. + (expand_builtin_strcpy): Adjust. + (expand_builtin_strcpy_args): Detect unterminated arrays. + * gimple-fold.c (get_maxval_strlen): Add argument. Detect + unterminated arrays. + * gimple-fold.h (get_maxval_strlen): Add argument. + (gimple_fold_builtin_strcpy): Detec unterminated arrays. + + * gimple-fold.c (get_range_strlen): Add argument. + (get_maxval_strlen): Adjust. + * gimple-fold.h (get_range_strlen): Add argument. + +2018-09-14 Wei Xiao + + * config/i386/movdirintrin.h: Fix copyright year. + +2018-09-14 Uros Bizjak + + * reg-stack.c: Include regs.h. + (replace_reg): Assert that mode is MODE_FLOAT or MODE_COMPLEX_FLOAT. + (emit_pop_insn): Default pop insn mode to the reg_raw_mode of + FIRST_STACK_REG, not DFmode. + (emit_swap_insn): Default swap insn mode to the reg_raw_mode of + FIRST_STACK_REG, not XFmode. Explicitly construct swap RTX. + (change stack): Default register mode to the reg_raw_mode of + FIRST_STACK_REG, not DFmode. + * config/i386/i386.md (*swap): Remove insn pattern. + (*swapxf): Rename from swapxf. + +2018-09-14 Carl Love + + * config/rs6000/emmintrin.h: Add _MM_SHUFFLE2. + * config/rs6000/xmmintrin.h: Add _MM_SHUFFLE. + +2018-09-14 Segher Boessenkool + + PR target/87224 + * config/rs6000/rs6000.md (*mov_hardfloat64): Add Z to the Y + alternatives. + +2018-09-14 Sam Tebbs + + PR target/85628 + * config/aarch64/aarch64.md (*aarch64_bfxilsi_uxtw): Define. + +2018-09-14 Jason Merrill + + Fix --enable-gather-detailed-mem-stats. + * hash-table.c (hash_table_usage): Change from variable to function. + * hash-table.h: Adjust. + * Makefile.in: Add missing dependencies on hash-table.h. + +2018-09-14 Kyrylo Tkachov + + PR tree-optimization/87259 + PR lto/87283 + (pass_cse_reciprocals::execute): Run optimize_recip_sqrt after + execute_cse_reciprocals_1 has tried transforming. + +2018-09-14 Aldy Hernandez + + * tree-vrp.c (extract_range_from_binary_expr_1): Normalize + VR_VARYING for PLUS/MINUS_EXPR. + +2018-09-14 Ilya Leoshkevich + + * config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve + formatting. + +2018-09-14 Richard Biener + + PR middle-end/63155 + * tree-ssa-coalesce.c (ssa_conflicts_merge): Remove conflict + bits for the merged partition. + +2018-09-13 Martin Sebor + Bernd Edlinger + + * builtins.h (c_srlen): Add argument. + * builtins.c (warn_string_no_nul): New function. + (c_strlen): Add argument and use it. Update recursive calls. + Pass DECL argument to string_constant to get info on non + terminated strings. Update *NONSTR as needed. + (fold_builtin_strlen): Add argument to calls to c_strlen. + Warn for unterminated arrays. + (warn_string_no_null): Add prototype. + * expr.c (string_constant): Update arguments. Update recursive + calls appropriately. Detect missing NUL terminator and outermost + declaration its missing in. + Improve checks for arrays with nonzero lower bound or elements + that are not a single byte. Simplify offset computation. + Simplify checks for non-NUL terminated strings. + * gimple-fold.c (get_range_strlen): Add argument to c_strlen call. + * gimple-ssa-sprintf.c (get_string_length): Remove unnecessary code. + +2018-09-13 Bernd Edlinger + + * builtins.c (c_strlen): Handle not zero terminated STRING_CSTs + correctly. + * fold-const.c (c_getstr): Fix function comment. Remove unused third + argument. Fix range checks. + * fold-const.h (c_getstr): Adjust protoype. + * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid folding when + string is constant but contains no NUL byte. + + * expr.c (string_constant): Adjust function comment. + Remove bogus check for zero termination. + + * fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE. + + * varasm.c (compare_constant): Compare type size of STRING_CSTs. + (get_constant_size): Don't make STRING_CSTs larger than they are. + (check_string_literal): New check function for STRING_CSTs. + (output_constant): Use it. + +2018-09-13 Eric Botcazou + + PR target/86812 + * config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define. + +2018-09-13 Richard Biener + + PR tree-optimization/87263 + * tree-ssa-sccvn.c (visit_phi): Revert some earlier changes. + (struct unwind_state): Add max_rpo field. + (do_rpo_vn): Allow up-to-date loop state to be used when not iterating. + Compute max_rpo, the max RPO number a block can be backwards reached + from. Re-write non-iterating mode to a RPO ordered worklist approach, + separating it from the iterating mode. + +2018-09-13 Vlad Lazar + + * haifa-sched.c (rank_for_schedule): Schedule by INSN_COST. + (rfs_decision): New scheduling decision. + +2018-09-13 Richard Biener + + PR bootstrap/87134 + * tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert. + (vn_nary_op_insert_pieces_predicated): Do not write useless + valid_dominated_by_p entry outside of the allocated storage. + +2018-09-13 Omar Sandoval + Tom de Vries + + PR debug/86985 + * dwarf2out.c (is_c): New function. + (add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays. + +2018-09-13 Sam Tebbs + + PR target/85628 + * config/aarch64/aarch64.md (*aarch64_bfxil): + Define. + * config/aarch64/constraints.md (Ulc): Define. + * config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p): + Define. + * config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p): + New function. + +2018-09-13 Vlad Lazar + + * config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define. + * config/aarch64/aarch64.c (aarch64_expand_prologue): Remove + aarch64_layout_frame call. + (aarch64_expand_epilogue): Likewise. + (aarch64_initial_elimination_offset): Likewise. + (aarch64_get_separate_components): Likewise. + (aarch64_use_return_insn_p): Likewise. + (aarch64_layout_frame): Remove unneeded check. + +2018-09-13 Jakub Jelinek + + * configure.ac: Only append + " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to + gcc_config_arguments if it was never reconfigured or last reconfigure + was with different arguments. + * configure: Regenerated. + +2018-09-13 Jakub Jelinek + Kyrylo Tkachov + + PR middle-end/87290 + * expr.c (maybe_optimize_pow2p_mod_cmp): New function. + (maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1. + +2018-09-13 Jakub Jelinek + + PR tree-optimization/87287 + * fold-const.c (fold_binary_loc) : Move signed modulo + X % C == 0 to X % (unsigned) C == 0 optimization to ... + * match.pd (X % C == 0): ... here. New optimization. + +2018-09-12 Jakub Jelinek + + PR middle-end/82853 + * expr.h (maybe_optimize_mod_cmp): Declare. + * expr.c (mod_inv): New function. + (maybe_optimize_mod_cmp): New function. + (do_store_flag): Use it. + * cfgexpand.c (expand_gimple_cond): Likewise. + +2018-09-09 Cesar Philippidis + Julian Brown + + PR middle-end/86336 + * gimplify.c (gimplify_scan_omp_clauses): Set + target_firstprivatize_array_bases in OpenACC parallel and kernels + region contexts. Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from + OpenACC data regions. + +2018-09-12 Uros Bizjak + + * config/i386/i386.md (sqrt_extendxf3_i387): Remove. + (sqrt2): Extend operand 1 to XFmode and generate sqrtxf3 insn. + +2018-09-12 Richard Biener + + PR tree-optimization/87280 + * tree-ssa-sccvn.c (process_bb): Handle the case of executable + edge but unreachable target. + (do_rpo_vn): For conservatively handling a PHI only mark + the backedge executable but not the block reachable. + +2018-09-12 Richard Biener + + PR tree-optimization/87266 + * tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet + visited blocks. + +2018-09-12 Andreas Krebbel + + * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New + constants. + ("trunc2") + ("trunc2") + ("extend2") + ("extend2"): Set proper rounding mode + according to the target operand type. + +2018-09-12 Jakub Jelinek + Andreas Krebbel + + PR tree-optimization/86844 + * gimple-ssa-store-merging.c + (imm_store_chain_info::coalesce_immediate): For overlapping stores, if + there are any overlapping stores in between them, make sure they are + also coalesced or we give up completely. + +2018-09-12 Jakub Jelinek + + PR middle-end/87248 + * fold-const.c (fold_ternary_loc) : Verify also that + BIT_AND_EXPR's second operand is a power of two. Formatting fix. + +2018-09-12 Tom de Vries + + * common.opt (gdescribe-dies): Add option. + * dwarf2out.c (add_name_and_src_coords_attributes): Add description + attribute for artifical and nameless decls. + (dwarf2out_register_external_die): Add description attribute to + external reference die. + (add_desc_attribute): New functions. + (gen_subprogram_die): Add description attribute to + DW_TAG_call_site_parameter. + * tree-pretty-print.c (print_generic_expr_to_str): New function. + * tree-pretty-print.h (print_generic_expr_to_str): Declare. + * doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and + -gno-describe-dies. + (@item -gdescribe-dies): Add. + +2018-09-12 Aldy Hernandez + + * tree-vrp.c (vrp_shift_undefined_p): Remove. + (extract_range_from_binary_expr_1: Call + wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p. + * wide-int-range.h (wide_int_range_shift_undefined_p): Do not + depend on sign. + +2018-09-12 Aldy Hernandez + + * gimple-ssa-warn-alloca.c + (alloca_type_and_limit::alloca_type_and_limit): Initialize limit + field for ALLOCA_BOUND_*_LARGE. + +2018-09-11 Nathan Sidwell + + * gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'. + +2018-09-11 Uros Bizjak + + * reg-stack.c (subst_asm_stack_regs): Call replace_reg also + for clobbers. Remove obsolete comment. + +2018-09-11 Uros Bizjak + + * config/i386/i386.md (define_attr "type"): Remove mpxmov, mpxmk, + mpxchk, mpxld and mpxst types. + (define_attr length_immediate): Remove all processing of mpx types. + (define_attr prefix_0f): Ditto. + (define_attr memory): Ditto. + +2018-09-11 Uros Bizjak + + * config/i386/i386.md (fyl2x_extendxf3_i387): Remove. + (log2): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate logxf3 insn. + (log102): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate log10xf3 insn. + (log22): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate log2xf3 insn. + (fyl2xp1_extendxf3_i387): Remove. + (log1p2): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate log1pxf3 insn. + (fxtract_extendxf3_i387): Remove. + (logb2): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate logbxf3 insn. + (ilogb2): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate fxtractxf3_i387 insn. + (significand2): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate significandxf3 insn. + +2018-09-11 Nathan Sidwell + + * gcc.c (perror_with_name, pfatal_with_name): Delete. + (load_specs): Use fatal_error. + (DELETE_IF_ORDINARY, process_command): Use error. + (execute, run_attempt): Use fatal_error. + +2018-09-11 Andrew Stubbs + + * diagnostic-core.h (sorry_at): New prototype. + * diagnostic.c (sorry_at): New function. + +2018-09-11 Aldy Hernandez + + * tree-vrp.c (extract_range_from_binary_expr_1): Treat all divisions + by zero as VR_UNDEFINED. + +2018-09-10 Uros Bizjak + + * config/i386/i386.md (xf2): Rename from *xf2_i387. + (*_extendxf2_i387): Remove insn pattern. + (mode2): New expander. + (sincos_extendxf3_i387): Remove insn pattern. + (sincos -> sin, cos splitters): Remove splitter patterns. + (sincos3): Change operand 2 predicate to general_operand. + Extend operand 2 to XFmode and generate sincosxf3 insn. + (fptanxf4_i387): Change mode of operands 0 and 3 to SFmode. + Change operand 3 predicate to const1_operand. + (fptan_extendxf4_i387): Remove insn pattern. + (tanxf2): Update operands in the call to fptanxf4_i387. + (tan2): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate tanxf3 insn. + (atan2xf3): Rename from *fpatanxf3_i387. + (fpatan_extendxf3_i387): Remove insn pattern. + (atan2xf3): Remove expander. + (atan22): Change operand 1 predicate to general_operand. + Extend operand 1 to XFmode and generate atanxf3 insn. + +2018-09-10 Uros Bizjak + + * config/i386/i386.md (x87/SSE constant load splitter): Use + memory_operand instead of nonimmediate_operand for input operand + predicate. + +2018-09-09 Uros Bizjak + + * config/i386/i386.md (float partial SSE register stall splitter): Move + splitter near its instruction pattern. + (float_extend partial SSE register stall splitter): Ditto. + (float_truncate partial SSE register stall splitter): Ditto. + +2018-09-09 Hans-Peter Nilsson + + PR target/86794 + * config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine + to speculation_safe_value_not_needed. + + PR target/85666 + * config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size + non-CONST_INT rtx:es using assemble_integer_with_op ".byte". + (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't call + leaf_function_p, instead use has_hard_reg_initial_val. + +2018-09-09 Nathan Sidwell + + * gcc.h (pfatal_with_name): Don't declare here. + * gcc.c (pfatal_with_name): Make static. + +2018-09-09 Xianmiao Qu + + * config/csky/csky.md (*cskyv2_adddi3, *cskyv2_subdi3): Add + earlyclobber. + +2018-09-08 John David Anglin + + PR rtl-optimization/85458 + * sel-sched.c (sel_target_adjust_priority): Allow backend adjust + priority hook to reduce the priority of EXPR. + +2018-09-07 Uros Bizjak + + * config/i386/i386.md (float2) Enable + DImode for x87 on 32bit targets. Conditionally disable x87 modes + with X87_ENABLE_FLOAT. Remove preparation code. + (*float2): Rename from + *float2_mixed. Handle x87, SSE and mixed + math using "enabled" attribute. + (*floatdi2_i387): Rename from + *float2_i387. Handle only DImode and + enable for 32bit targets only. + (floatdi2_i387_with_xmm pre-reload splitter): New + splitter. + (floatdi2_i387_with_xmm): Use register_operand + as operand 1 predicate. Rewrite as define_insn_and_split. + (floatdi2_i387_with_xmm memory input splitter): Remove. + +2018-09-06 Uros Bizjak + + * reg-stack.c (get_true_reg) : Reorder + to fallthru to FLOAT case. + +2018-09-06 Will Schmidt + + PR target/86731 + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Update logic + around folding of vec_sl to handle out of range shift values. + +2018-09-06 Uros Bizjak + + * config/i386/i386.md (fix_trunc_fisttp_i387_1): Remove. + Update callers to gen_fix_trunc_i387_fisttp + (fix_trunc_i387_fisttp): Change operand 0 predicate to + nonimmediate_operand. + (fix_trunc_i387_fisttp_with_temp): Remove insn pattern + and corresponding splitters. + (*fix_trunc_i387_1): Always expand with fix_trunc_i387. + (fix_truncdi_i387): Change operand 0 predicate to nonimmediate_operand. + (fix_truncdi_i387_with_temp): Remove insn pattern + and corresponding splitters. + (fix_trunc_i387): Change operand 0 predicate to + nonimmediate_operand. + (fix_trunc_i387_with_temp): Remove insn pattern + and corresponding splitters. + (*fistdi2_1): Remove. + (fistdi2): Ditto. + (fistdi2_with_temp): Remove insn pattern and corresponding splitters. + (lrintxfdi2): Remove expander. Reimplement as define_insn. + (*fist2_1): Remove. + (fist2): Ditto. + (fist2_with_temp): Remove insn pattern and corresponding + splitters. + (lrintxf2): Remove expander. Reimplement as define_insn. + (*fist2__1): Always expand with fist2_. + (fistdi2_): Change operand 0 predicate to + nonimmediate_operand. + (fistdi2__with_temp): Remove insn pattern + and corresponding splitters. + (fist2_): Change operand 0 predicate to + nonimmediate_operand. + (fist2__with_temp): Remove insn pattern + and corresponding splitters. + + (*fixuns_truncsi2_avx512f_zext): Depend on TARGET_SSE_MATH. + +2018-09-06 Bernd Edlinger + + * varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of + the init value. + +2018-09-06 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for + early gimple folding of vec_splat(). + * tree-vect-generic.c: Remove static from tree_vec_extract() definition. + * gimple-fold.h: Add an extern define for tree_vec_extract(). + +2018-09-06 Will Schmidt + + * config/rs6000/rs6000.c (fold_mergehl_helper): Add types_compatible_p + wrappers around TREE_TYPE comparisons. + +2018-09-06 Ilya Leoshkevich + + PR target/80080 + * config/s390/predicates.md: Add nonsym_memory_operand. + * config/s390/s390.c (s390_legitimize_cs_operand): If operand + contains a SYMBOL_REF, load it into an intermediate pseudo. + (s390_emit_compare_and_swap): Legitimize operand. + * config/s390/s390.md: Use the new nonsym_memory_operand + with UNSPECV_CAS patterns. + +2018-09-06 Ilya Leoshkevich + + PR target/80080 + * config/s390/s390-passes.def: New file. + * config/s390/s390-protos.h (class rtl_opt_pass): Add forward + declaration. + (make_pass_s390_early_mach): Add declaration. + * config/s390/s390.c (make_pass_s390_early_mach): + (s390_option_override): Remove dynamic registration. + * config/s390/t-s390: Add s390-passes.def. + +2018-09-06 Ilya Leoshkevich + + * config/s390/s390.c (s390_decompose_constant_pool_ref): + Remove UNSPEC_LTREL_BASE check. + (annotate_constant_pool_refs): Likewise. + (find_constant_pool_ref): Likewise. + (find_ltrel_base): Removed. + (replace_ltrel_base): Removed. + (s390_mainpool_finish): Remove replace_ltrel_base call. + (s390_chunkify_start): Remove pending LTREL_BASE logic. + (s390_chunkify_finish): Remove replace_ltrel_base call. + * config/s390/s390.md: Remove UNSPEC_LTREL_BASE. + +2018-09-06 Hans-Peter Nilsson + + PR target/86779 + * config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine + to speculation_safe_value_not_needed. + +2018-09-05 Cesar Philippidis + Bernd Schmidt + + * config/nvptx/nvptx-opts.h: New file. + * config/nvptx/nvptx.c (nvptx_file_start): Print the correct .target. + * config/nvptx/nvptx.h: Include "nvptx-opts.h". + (ASM_SPEC): Define. + (TARGET_SM35): New macro. + * config/nvptx/nvptx.md (atomic_fetch_): Enable with the + correct predicate. + * config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its + values. + (misa=): New option. + * doc/invoke.texi (Nvidia PTX Options): Document -misa. + +2018-09-05 Uros Bizjak + + * config/i386/i386.md (truncdfsf2): Remove expander. + (truncdfsf2_with_temp): Ditto. + (truncxf2): Ditto. + (*truncdfsf_fast_mixed): Remove insn pattern. + (*truncdfsf_fast_i387): Ditto. + (*truncdfsf_mixed): Ditto. + (*truncdfsf_i387): Ditto. + (*truncdfsf2_i387_1): Ditto. + (*truncxfsf2_mixed): Ditto. + (*truncxfdf2_mixed): Ditto. + (*truncxf2_i387_noop): Ditto. Update callers + to call gen_truncxf2 instead. + (*truncxf2_i387): Remove. + (reg->reg splitters): Remove splitter pattern. + (reg->mem splitters): Ditto. + + (truncdfsf2): New insn pattern. + (truncxf2): Ditto. + +2018-09-05 Kyrylo Tkachov + + * tree-ssa-math-opts.c (is_mult_by): New function. + (is_square_of): Use the above. + (optimize_recip_sqrt): New function. + (pass_cse_reciprocals::execute): Use the above. + +2018-09-05 Richard Biener + + PR bootstrap/87134 + * tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure + to zero-init the emplaced vec. + +2018-09-05 Martin Liska + + PR tree-optimization/87205 + * tree-switch-conversion.c (pass_lower_switch::execute): + Group cases for switch statements. + +2018-09-05 Richard Biener + + PR tree-optimization/87217 + * tree-ssa-sccvn.c (vuse_valueize): New. + (vn_reference_lookup_pieces): Use it. + (vn_reference_lookup): Likewise. + +2018-09-05 Nathan Sidwell + + PR c++/87137 + * stor-layout.c (place_field): Scan forwards to check last + bitfield when ms_bitfield_placement is in effect. + +2018-09-05 Richard Biener + + PR bootstrap/87225 + * tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus + return. + +2018-09-05 Siddhesh Poyarekar + Kugan Vivekanandarajah + + * config/aarch64/falkor-tag-collision-avoidance.c: New file. + * config.gcc (extra_objs): Build it. + * config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o): + Likewise. + * config/aarch64/aarch64-passes.def + (pass_tag_collision_avoidance): New pass. + * config/aarch64/aarch64.c (qdf24xx_tunings): Add + AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags. + (aarch64_classify_address): Remove static qualifier. + (aarch64_address_info, aarch64_address_type): Move to... + * config/aarch64/aarch64-protos.h: ... here. + (make_pass_tag_collision_avoidance): New function. + * config/aarch64/aarch64-tuning-flags.def (rename_load_regs): + New tuning flag. + +2018-09-05 Martin Liska + + * doc/gcov.texi: Update documentation of humar + readable mode. + * gcov.c (format_count): Print one decimal place, it provides + more fine number of situations like '1G' vs. '1.4G'. + +2018-09-05 Martin Liska + + PR target/87164 + * config/rs6000/rs6000.opt: Mark the option as Deprecated. + * optc-gen.awk: Allow 'Var' for Deprecated options in order + to generate a MASK value. + +2018-09-04 H.J. Lu + + PR debug/86593 + * dwarf2out.c (based_loc_descr): Allow hard frame pointer even + if frame pointer isn't used. + (compute_frame_pointer_to_fb_displacement): Likewise. + +2018-09-04 Jakub Jelinek + + PR target/87198 + * common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET, + OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use + OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE. + (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET + and OPTION_MASK_ISA_XSAVEC_UNSET. + +2018-09-04 Max Filippov + + * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and + XOR operations in NAND case. + +2018-09-04 Aldy Hernandez + + * wide-int-range.cc (wide_int_range_convert): New. + * wide-int-range.h (wide_int_range_convert): New. + * tree-vrp.c (extract_range_from_unary_expr): Abstract wide int + code into wide_int_range_convert. + (extract_range_into_wide_ints): Do not munge anti range constants + into the entire domain. Just return the range back. + +2018-09-04 Martin Liska + + * genmatch.c (output_line_directive): Add new argument + fnargs. + (dt_simplify::gen_1): Encapsulate dump within __builtin_expect. + +2018-09-04 Jonathan Wakely + + * doc/invoke.texi (Option Summary): Add whitespace. + + * doc/invoke.texi (Option Summary): Add -Waligned-new. + +2018-09-04 Richard Biener + + PR tree-optimization/87211 + * tree-ssa-sccvn.c (visit_phi): When value-numbering to a + backedge value we're supposed to treat as VARYING also number + the PHI to VARYING in case it got a different value-number already. + +2018-09-04 Aldy Hernandez + + * tree-vrp.c (vrp_can_optimize_bit_op): Remove. + (extract_range_from_binary_expr_1): Do not call + vrp_can_optimize_bit_op. + * wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make + static. + (wide_int_range_get_mask_and_bounds): New. + (wide_int_range_optimize_bit_op): New. + (wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op. + (wide_int_range_bit_and): Same. + * wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove. + (wide_int_range_optimize_bit_op): New. + (wide_int_range_get_mask_and_bounds): New. + +2018-09-04 Richard Biener + + PR tree-optimization/87176 + * tree-ssa-sccvn.c (visit_phi): Remove redundant allsame + variable. When value-numbering a virtual PHI node make sure + to not value-number to the backedge value. + +2018-09-04 Jonathan Wakely + + * doc/extend.texi (Long Long, Hex Floats): Document support for + long long and hex floats in more recent versions of ISO C++. + +2018-09-03 Richard Biener + + PR tree-optimization/87177 + * tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep + cleanup. + +2018-09-03 Alexander Monakov + + * bb-reorder.c (edge_order): Convert to C-qsort-style + tri-state comparator. + (reorder_basic_blocks_simple): Change std::stable_sort to + gcc_stablesort. + +2018-09-03 Alexander Monakov + + * tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style + tri-state comparator. + (fuse_memset_builtins): Change std::stable_sort to gcc_stablesort. + +2018-09-03 Alexander Monakov + + * sort.cc (struct sort_ctx): New field 'nlim'. Use it... + (mergesort): ... here as maximum count for using netsort. + (gcc_qsort): Set nlim to 3 if stable sort is requested. + (gcc_stablesort): New. + * system.h (gcc_stablesort): Declare. + +2018-09-03 Alexander Monakov + + * sort.cc (gcc_qsort) [CHECKING_P]: Call qsort_chk. + * system.h (qsort): Always redirect to gcc_qsort. Update comment. + * vec.c (qsort_chk): Do not call gcc_qsort. Update comment. + +2018-09-03 Segher Boessenkool + + * config/rs6000/rs6000.md (*mov_hardfloat32): Remove %U from the + lxsdx and stxsdx alternatives. + (*mov_hardfloat64): Ditto. + * config/rs6000/vsx.md (*vsx_extract__store): Ditto. + +2018-09-03 Richard Biener + + PR tree-optimization/87200 + * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Valueize a + simplify result. + +2018-09-03 Martin Liska + + PR tree-optimization/87201 + * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes): + Fix parenthesis in an expression. + +2018-09-03 Richard Biener + + PR tree-optimization/87197 + * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Mark the new def + visited. CSE the VN_INFO hashtable lookup. + + PR tree-optimization/87169 + * tree-ssa-sccvn.c (do_rpo_vn): When marking loops for not + iterating make sure there's no extra backedges from irreducible + regions feeding the header. Mark the destination block + executable. + +2018-09-03 Martin Liska + + PR driver/83193 + * common/common-target.def: Add TARGET_GET_VALID_OPTION_VALUES. + * common/common-targhooks.c (default_get_valid_option_values): + New function. + * common/common-targhooks.h (default_get_valid_option_values): + Likewise. + * common/config/i386/i386-common.c: Move processor_target_table + from i386.c. + (ix86_get_valid_option_values): New function. + (TARGET_GET_VALID_OPTION_VALUES): New macro. + * config/i386/i386.c (struct ptt): Move to i386-common.c. + (PTA_*): Move all defined masks into i386-common.c. + (ix86_function_specific_restore): Use new processor_cost_table. + * config/i386/i386.h (struct ptt): Moved from i386.c. + (struct pta): Likewise. + * doc/tm.texi: Document new TARGET_GET_VALID_OPTION_VALUES. + * doc/tm.texi.in: Likewise. + * opt-suggestions.c (option_proposer::suggest_option): + Pass prefix to build_option_suggestions. + (option_proposer::get_completions): Likewise. + (option_proposer::build_option_suggestions): Use the new target + hook. + * opts.c (struct option_help_tuple): New struct. + (print_filtered_help): Use the new target hook. + +2018-09-03 Martin Liska + + PR middle-end/59521 + * predict.c (set_even_probabilities): Add likely_edges + argument and handle cases where we have precisely one + likely edge. + (combine_predictions_for_bb): Catch also likely_edges. + (tree_predict_by_opcode): Handle gswitch statements. + * tree-cfg.h (find_case_label_for_value): New declaration. + (find_taken_edge_switch_expr): Likewise. + * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes): + Find pivot in decision tree based on probabily, not by number of + nodes. + +2018-09-02 Gerald Pfeifer + + * doc/standards.texi (Standards): Update Objective-C reference. + +2018-09-01 Gerald Pfeifer + + * doc/install.texi (Prerequisites): Update link for MPC. + +2018-09-01 Michael Matz + + PR tree-optimization/87074 + * gimple-loop-jam.c (unroll_jam_possible_p): Check loop exit + PHIs for outer-loop uses. + +2018-09-01 Gerald Pfeifer + + * doc/generic.texi (OpenMP): Adjust link to openmp.org. + * doc/invoke.texi (C Dialect Options): Ditto. + +2018-09-01 Gerald Pfeifer + + * doc/install.texi (Prerequisites): Adjust link mpfr.org. + +2018-08-31 Richard Biener + + PR tree-optimization/87168 + * tree-ssa-sccvn.c (SSA_VAL): Add visited output parameter. + (rpo_elim::eliminate_avail): When OP was not visited it must + be available. + +2018-08-31 David Malcolm + + * tree-vrp.c (copy_value_range): Convert param "from" from + "value_range *" to "const value_range *". + (range_is_null): Likewise for param "vr". + (range_int_cst_p): Likewise. + (range_int_cst_singleton_p): Likewise. + (symbolic_range_p): Likewise. + (value_ranges_intersect_p): Likewise for both params. + (value_range_nonnegative_p): Likewise for param "vr". + (value_range_constant_singleton): Likewise. + (vrp_set_zero_nonzero_bits): Likewise for param "ar". + (extract_range_into_wide_ints): Likewise for param "vr". + (extract_range_from_multiplicative_op): Likewise for params "vr0" + and "vr1". + (vrp_can_optimize_bit_op): Likewise. + (extract_range_from_binary_expr_1): Likewise for params "vr0_" and + "vr1_". + (extract_range_from_unary_expr): Likewise. + (debug_value_range): Likewise for param "vr". + (value_range::dump): Add "const" qualifier. + (vrp_prop::check_array_ref): Convert local "vr" from + "value_range *" to "const value_range *". + (vrp_prop::check_mem_ref): Likewise. + (vrp_prop::visit_stmt): Likewise for local "old_vr". + (vrp_intersect_ranges_1): Likewise for param "vr_1". + (vrp_intersect_ranges): Likewise. + (simplify_stmt_for_jump_threading): Likewise for local "vr". + (vrp_prop::vrp_finalize): Likewise. + * tree-vrp.h (value_range::dump): Add "const" qualifier. + (vrp_intersect_ranges): Add "const" qualifier to params as above. + (extract_range_from_unary_expr): Likewise. + (value_range_constant_singleton): Likewise. + (symbolic_range_p): Likewise. + (copy_value_range): Likewise. + (extract_range_from_binary_expr_1): Likewise. + (range_int_cst_p): Likewise. + (vrp_set_zero_nonzero_bits): Likewise. + (range_int_cst_singleton_p): Likewise. + +2018-08-31 Vlad Lazar + + * config/aarch64/arm_neon.h (vabsd_s64): New. + (vnegd_s64): Likewise. + +2018-08-31 Martin Jambor + + * ipa-cp.c (estimate_local_effects): Replace wrong MAX with MIN. + +2018-08-31 Martin Liska + + * ipa-icf.c (sem_item::add_type): Use + sem_item::m_type_hash_cache. + * ipa-icf.h: Move the cache from sem_item_optimizer + to sem_item. + +2018-08-31 Nathan Sidwell + + * doc/extend.texi (Backwards Compatibility): Remove implicit + extern C leeway of () being (...). + +2018-08-31 Kyrylo Tkachov + + * ipa-inline.c (can_inline_edge_by_limits_p): Fix typos in comment. + +2018-08-31 Segher Boessenkool + + PR target/86684 + PR target/87149 + * config/rs6000/rs6000.md (lrounddi2): Gate on TARGET_FPRND. + +2018-08-31 Jakub Jelinek + + PR middle-end/87138 + * expmed.c (expand_mult_const): Use immed_wide_int_const instead of + gen_int_mode. Formatting fixes. + +2018-08-30 Sandra Loosemore + + * target.def (custom_function_descriptors): Improve documentation. + * doc/tm.texi.in (Trampolines): Expand discussion of function + descriptors and move TARGET_CUSTOM_FUNCTION_DESCRIPTORS to the + beginning of the section. + * doc/tm.texi: Regenerated. + +2018-08-30 Jose E. Marchesi + + * cfg.h (class auto_edge_flag): Spell out the template-id of the + base class in the initializer list. This is a workaround for + building with older GCC. + (class auto_bb_flag): Likewise. + +2018-08-30 Aaron Sawdey + + * config/rs6000/altivec.md (altivec_eq): Remove star. + (altivec_vcmpequ_p): Remove star. + * config/rs6000/rs6000-string.c (do_load_for_compare): Support + vector load modes. + (expand_strncmp_vec_sequence): New function. + (emit_final_str_compare_vec): New function. + (expand_strn_compare): Add support for vector strncmp. + * config/rs6000/rs6000.opt (-mstring-compare-inline-limit): Change + length specification to bytes. + * config/rs6000/vsx.md (vsx_ld_elemrev_v16qi_internal): Remove star. + (vcmpnezb_p): New pattern. + * doc/invoke.texi (RS/6000 and PowerPC Options): Update documentation + for option -mstring-compare-inline-limit. + +2018-08-30 Thiago Macieira + + * config/i386/i386.c (PTA_WESTMERE): Remove PTA_AES. + (PTA_SKYLAKE): Add PTA_AES. + (PTA_GOLDMONT): Likewise. + +2018-08-29 Jan Hubicka + + PR lto/86517 + * lto-opts.c (lto_write_options): Always stream PIC/PIE mode. + * lto-wrapper.c (merge_and_complain): Fix merging of PIC/PIE. + +2018-08-29 Jan Hubicka + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not follow + TYPE_STUB_DECL. + (hash_tree): Do not visit TYPE_STUB_DECL. + * tree-streamer-out.c (write_ts_type_common_tree_pointers): Do not + stream TYPE_STUB_DECL. + * tree-streamer-in.c (lto_input_ts_type_common_tree_pointers): Likewise. + * ipa-utils.h (type_with_linkage_p): Do not rely on TYPE_STUB_DECL + after free_lang_data. + (type_in_anonymous_namespace_p): Likewise. + +2018-08-29 Jan Hubicka + + * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary + comment that it has to be even number. + (class sreal): Change m_sig type to int32_t. + * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use + int64_t for temporary calculations. + (sreal_verify_basics): Drop one bit from minimum and maximum. + +2018-08-30 Richard Biener + + PR tree-optimization/87147 + * tree-ssa-sccvn.c (SSA_VISITED): New function. + (visit_phi): When the degenerate result is from the backedge and + we didn't visit its definition yet drop to VARYING. + (do_rpo_vn): Properly mark blocks with incoming backedges as executable. + +2018-08-29 Jan Hubicka + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not walk + DECL_VINDEX. + (hash_tree): Likewise. + +2018-08-29 Jan Hubicka + + * tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO + and TYPE_NEXT_REF_TO. + +2018-08-29 Jan Hubicka + + * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary + comment that it has to be even number. + (class sreal): Change m_sig type to int32_t. + * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use + int64_t for temporary calculations. + (sreal_verify_basics): Drop one bit from minimum and maximum. + +2018-08-30 Tamar Christina + + * config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max. + +2018-08-30 Vlad Lazar + + PR middle-end/86995 + * expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add + if to_add is negative. + +2018-08-29 Bernd Edlinger + + PR middle-end/87053 + * builtins.c (c_strlen): Improve range checks. + +2018-08-29 Martin Sebor + Jeff Law + + PR tree-optimization/86714 + PR tree-optimization/86711 + * builtins.c (c_strlen): Add arguments to call to string_constant. + * expr.c (string_constant): Add argument. Detect missing nul + terminator and outermost declaration it's missing in. + * expr.h (string_constant): Add argument. + * fold-const.c (read_from_constant_string): Add arguments to call to + string_constant. + (c_getstr): Likewise. + * tree-ssa-forwprop.c (simplify_builtin_call): Likewise. + to string_constant. + * tree-ssa-strlen.c (get_stridx): Likewise. + +2018-08-29 Jan Hubicka + + * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): + Do not stream DECL_VINDEX. + * tree-streamer-out.c (write_ts_function_decl_tree_pointers): Likewise. + * tree.c (free_lang_data_in_decl): Clear DECL_VINDEX. + (decl_function_context): Use DECL_VIRTUAL_P rather than DECL_VINDEX. + +2018-08-29 Richard Biener + + * tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited + virtual operands that are not default defs to honor region + boundaries. + (rpo_vn_valueize): Remove ineffective code here. + +2018-08-29 Richard Biener + + PR tree-optimization/87132 + * tree-ssa-alias.c (get_continuation_for_phi): Do not translate + when skipping defs reachable over backedges. + +2018-08-29 Richard Biener + + * tree-core.h: Document use of deprecated_flag in SSA_NAME. + * tree.h (SSA_NAME_POINTS_TO_READONLY_MEMORY): Define. + * tree-into-ssa.c (pass_build_ssa::execute): Initialize + function parameters SSA_NAME_POINTS_TO_READONLY_MEMORY from fnspec. + * tree-ssa-sccvn.c (const_parms, init_const_parms): Remove. + (vn_reference_lookup_3): Remove use of const_parms. + (free_rpo_vn): Do not free const_parms. + (do_rpo_vn): Do not call init_const_parms. + * tree-ssa-alias.c (refs_may_alias_p_1): Honor + SSA_NAME_POINTS_TO_READONLY_MEMORY. + (call_may_clobber_ref_p_1): Likewise. + +2018-08-29 Alexander Monakov + + PR other/86726 + * invoke.texi (Optimization Options): List -ftree-scev-cprop. + (-O): Ditto. + (-ftree-scev-cprop): Document. + +2018-08-29 Jan Hubicka + + * sreal.h (normalize, normalize_up, normalize_down): Add new_sig/new_exp + parameters. + (sreal constructor): Update. + * sreal.c (sreal:operator+, sreal:operator-, sreal:operator*, + sreal:operator/): Update. + +2018-08-29 Martin Liska + + * tree-switch-conversion.c (switch_conversion::expand): + Strenghten assumption about gswitch statements. + +2018-08-29 Richard Biener + + PR tree-optimization/87117 + * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only + re-value-number released SSA VDEFs. + +2018-08-29 Richard Biener + + PR tree-optimization/87126 + * tree-ssa-sccvn.c (vn_reference_insert): Remove assert. + +2018-08-28 Jim Wilson + + * config/riscv/pic.md: Rewrite. + * config/riscv/riscv.c (riscv_address_insns): Return cost of 3 for + invalid address. + * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Delete. + (SOFTF, default_load, softload, softstore): New. + +2018-08-28 Jeff Law + + * fold-const.c (fold_binary_loc): Remove recently added assert. + +2018-08-28 Joern Rennecke + + * genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED + to OP parmeter of generated function. + +2018-08-28 MCC CS + + PR tree-optimization/87009 + * match.pd: Add boolean optimizations. + +2018-08-28 Martin Sebor + + PR middle-end/86631 + * calls.c (alloc_max_size): Treat HOST_WIDE_INT special. + * gimple-ssa-warn-alloca.c (adjusted_warn_limit): New function. + (pass_walloca::gate): Use it. + (alloca_call_type): Same. + (pass_walloca::execute): Same. + * stor-layout.c (layout_decl): Treat HOST_WIDE_INT special. + +2018-08-28 David Malcolm + + * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): Change version check on + GCC_VERSION for usage of "__gcc_dump_printf__" format from + >= 3005 to >= 9000. + +2018-08-28 Richard Biener + + PR tree-optimization/87124 + * tree-ssa-sccvn.c (vn_lookup_simplify_result): Guard against + constants before looking up avail. + +2018-08-28 Jakub Jelinek + + PR middle-end/87099 + * calls.c (maybe_warn_nonstring_arg): Punt early if + warn_stringop_overflow is zero. Don't call get_range_strlen + on 3rd argument, keep iterating until lenrng[1] is INTEGER_CST. + Swap comparison operands to have constants on rhs. Only use + lenrng[1] if non-NULL and INTEGER_CST. Don't uselessly + increment lenrng[0]. + +2018-08-28 Richard Sandiford + + * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Fix unguarded + use of tree_to_shwi. Remove duplicated test for the size being + a whole number of bytes. + +2018-08-28 Richard Biener + + PR tree-optimization/87117 + * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): + Handle removed stmt without LHS (GIMPLE_NOP). + +2018-08-28 Richard Biener + + PR tree-optimization/87117 + * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude + void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P. + +2018-08-28 Richard Biener + + PR tree-optimization/87117 + * tree-ssa-pre.c (compute_avail): Do not make expressions + with predicated values available. + (get_expr_value_id): Assert we do not run into predicated value + expressions. + +2018-08-28 Richard Biener + + PR tree-optimization/87117 + * tree-ssa-operands.c (add_stmt_operand): STRING_CST may + get virtual operands. + (get_expr_operands): Handle STRING_CST like other decls. + +2018-08-28 Martin Liska + + * tree.h: Update documentation of fndecl_built_in_p + functions. + + +2018-08-27 Jeff Law + PR tree-optimization/87110 + * tree-ssa-dse.c (compute_trims): Handle non-constant + TYPE_SIZE_UNIT. + +2018-08-27 Martin Sebor + + PR tree-optimization/86914 + * tree-ssa-strlen.c (maybe_set_strlen_range): Avoid MEM_REF. + +2018-08-27 Martin Sebor + + PR tree-optimization/87112 + * builtins.c (expand_builtin_strnlen): Convert c_strlen result to + the type of the bound argument. + +2018-08-27 Jeff Law + + * tree-ssa-dse.c (compute_trims): Handle case where the reference's + type does not have a TYPE_SIZE_UNIT. + +2018-08-27 Steve Ellcey + + * config/aarch64/aarch64-speculation.cc: Replace include of cfg.h + with include of backend.h. + +2018-08-27 Richard Biener + + PR tree-optimization/86927 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Properly + use const cond reduction code. + +2018-08-27 Alexander Monakov + + PR tree-optimization/85758 + * match.pd ((X & Y) ^ Y): Add :s qualifier to inner expression. + +2018-08-27 David Malcolm + + PR c++/87091 + * diagnostic-show-locus.c (class layout_range): Update for + conversion of show_caret_p to a tri-state. + (layout_range::layout_range): Likewise. + (make_range): Likewise. + (layout::maybe_add_location_range): Likewise. + (layout::should_print_annotation_line_p): Don't show annotation + lines for ranges that are SHOW_LINES_WITHOUT_RANGE. + (layout::get_state_at_point): Update for conversion of + show_caret_p to a tri-state. Bail out early for + SHOW_LINES_WITHOUT_RANGE, so that such ranges don't affect + underlining or source colorization. + (gcc_rich_location::add_location_if_nearby): Update for conversion + of show_caret_p to a tri-state. + (selftest::test_one_liner_multiple_carets_and_ranges): Likewise. + (selftest::test_one_liner_fixit_replace_equal_secondary_range): + Likewise. + (selftest::test_one_liner_labels): Likewise. + * gcc-rich-location.c (gcc_rich_location::add_expr): Update for + conversion of show_caret_p to a tri-state. + * pretty-print.c (text_info::set_location): Likewise. + * pretty-print.h (text_info::set_location): Likewise. + * substring-locations.c (format_warning_n_va): Likewise. + * tree-diagnostic.c (default_tree_printer): Likewise. + * tree-pretty-print.c (newline_and_indent): Likewise. + +2018-08-27 David Malcolm + + PR c++/87091 + * diagnostic-show-locus.c (get_line_span_for_fixit_hint): Show the + line above for line-insertion fix-it hints. + (selftest::test_fixit_insert_containing_newline): Update the + expected results, and add a test with line-numbering enabled. + +2018-08-27 Martin Liska + + PR sanitizer/86962 + * sanopt.c (sanitize_rewrite_addressable_params): Ignore + params with DECL_HAS_VALUE_EXPR_P. + +2018-08-27 Martin Liska + + * config/i386/i386.c (ix86_expand_set_or_movmem): Dump + selected expansion strategy. + +2018-08-27 Martin Liska + + * builtins.h (is_builtin_fn): Remove and fndecl_built_in_p. + * builtins.c (is_builtin_fn): Likewise. + * attribs.c (diag_attr_exclusions): Use new function + fndecl_built_in_p and remove check for FUNCTION_DECL if + possible. + (builtin_mathfn_code): Likewise. + (fold_builtin_expect): Likewise. + (fold_call_expr): Likewise. + (fold_builtin_call_array): Likewise. + (fold_call_stmt): Likewise. + (set_builtin_user_assembler_name): Likewise. + (is_simple_builtin): Likewise. + * calls.c (gimple_alloca_call_p): Likewise. + (maybe_warn_nonstring_arg): Likewise. + * cfgexpand.c (expand_call_stmt): Likewise. + * cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise. + (cgraph_edge::verify_corresponds_to_fndecl): Likewise. + (cgraph_node::verify_node): Likewise. + * cgraphclones.c (build_function_decl_skip_args): Likewise. + (cgraph_node::create_clone): Likewise. + * config/arm/arm.c (arm_insert_attributes): Likewise. + * config/i386/i386.c (ix86_gimple_fold_builtin): Likewise. + * dse.c (scan_insn): Likewise. + * expr.c (expand_expr_real_1): Likewise. + * fold-const.c (operand_equal_p): Likewise. + (fold_binary_loc): Likewise. + * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise. + * gimple-low.c (lower_stmt): Likewise. + * gimple-pretty-print.c (dump_gimple_call): Likewise. + * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): + Likewise. + * gimple.c (gimple_build_call_from_tree): Likewise. + (gimple_call_builtin_p): Likewise. + (gimple_call_combined_fn): Likewise. + * gimplify.c (gimplify_call_expr): Likewise. + (gimple_boolify): Likewise. + (gimplify_modify_expr): Likewise. + (gimplify_addr_expr): Likewise. + * hsa-gen.c (gen_hsa_insns_for_call): Likewise. + * ipa-cp.c (determine_versionability): Likewise. + * ipa-fnsummary.c (compute_fn_summary): Likewise. + * ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise. + * ipa-split.c (visit_bb): Likewise. + (split_function): Likewise. + * ipa-visibility.c (cgraph_externally_visible_p): Likewise. + * lto-cgraph.c (input_node): Likewise. + * lto-streamer-out.c (write_symbol): Likewise. + * omp-low.c (setjmp_or_longjmp_p): Likewise. + (lower_omp_1): Likewise. + * predict.c (strip_predict_hints): Likewise. + * print-tree.c (print_node): Likewise. + * symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise. + * trans-mem.c (is_tm_irrevocable): Likewise. + (is_tm_load): Likewise. + (is_tm_simple_load): Likewise. + (is_tm_store): Likewise. + (is_tm_simple_store): Likewise. + (is_tm_abort): Likewise. + (tm_region_init_1): Likewise. + * tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise. + * tree-cfg.c (verify_gimple_call): Likewise. + (move_stmt_r): Likewise. + (stmt_can_terminate_bb_p): Likewise. + * tree-eh.c (lower_eh_constructs_2): Likewise. + * tree-if-conv.c (if_convertible_stmt_p): Likewise. + * tree-inline.c (remap_gimple_stmt): Likewise. + (copy_bb): Likewise. + (estimate_num_insns): Likewise. + (fold_marked_statements): Likewise. + * tree-sra.c (scan_function): Likewise. + * tree-ssa-ccp.c (surely_varying_stmt_p): Likewise. + (optimize_stack_restore): Likewise. + (pass_fold_builtins::execute): Likewise. + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. + (mark_all_reaching_defs_necessary_1): Likewise. + * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise. + * tree-ssa-forwprop.c (simplify_builtin_call): Likewise. + (pass_forwprop::execute): Likewise. + * tree-ssa-loop-im.c (stmt_cost): Likewise. + * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise. + * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise. + * tree-ssa-strlen.c (get_string_length): Likewise. + * tree-ssa-structalias.c (handle_lhs_call): Likewise. + (find_func_aliases_for_call): Likewise. + * tree-ssa-ter.c (find_replaceable_in_bb): Likewise. + * tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise. + * tree-tailcall.c (find_tail_calls): Likewise. + * tree.c (need_assembler_name_p): Likewise. + (free_lang_data_in_decl): Likewise. + (get_call_combined_fn): Likewise. + * ubsan.c (is_ubsan_builtin_p): Likewise. + * varasm.c (incorporeal_function_p): Likewise. + * tree.h (DECL_BUILT_IN): Remove and replace with + fndecl_built_in_p. + (DECL_BUILT_IN_P): Transfort to fndecl_built_in_p. + (fndecl_built_in_p): New. + +2018-08-27 Martin Liska + + PR tree-optimization/86847 + * tree-switch-conversion.c (switch_decision_tree::dump_case_nodes): + Dump also subtree probability. + (switch_decision_tree::do_jump_if_equal): New function. + (switch_decision_tree::emit_case_nodes): Handle special + situations in balanced tree that can be emitted much simpler. + Fix calculation of probabilities that happen in tree expansion. + * tree-switch-conversion.h (struct cluster): Add + is_single_value_p. + (struct simple_cluster): Likewise. + (struct case_tree_node): Add new function has_child. + (do_jump_if_equal): New. + +2018-08-27 Martin Liska + + * tree-switch-conversion.c (bit_test_cluster::find_bit_tests): + Add new argument to bit_test_cluster constructor. + (bit_test_cluster::emit): Set bits really number of values + handlel by a test. + (bit_test_cluster::hoist_edge_and_branch_if_true): Add + probability argument. + * tree-switch-conversion.h (struct bit_test_cluster): + Add m_handles_entire_switch. + +2018-08-27 Martin Liska + + PR tree-optimization/86702 + * tree-switch-conversion.c (jump_table_cluster::emit): + Make probabilities even for values in jump table + according to number of cases handled. + (switch_decision_tree::compute_cases_per_edge): Pass + argument to reset_out_edges_aux function. + (switch_decision_tree::analyze_switch_statement): Likewise. + * tree-switch-conversion.h (switch_decision_tree::reset_out_edges_aux): + Make it static. + +2018-08-27 Martin Liska + + * cfgexpand.c (expand_asm_stmt): Use label_to_block and pass + cfun argument explicitly. + * gimple-pretty-print.c (dump_gimple_switch): Likewise. + * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new + function gimple_switch_default_bb. + (convert_switch_statements): + (expand_builtins): + * ipa-fnsummary.c (set_switch_stmt_execution_predicate): + * stmt.c (label_to_block_fn): Use label_to_block and pass + cfun argument explicitly and use gimple_switch_label_bb. + (expand_case): Likewise. + * tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass + cfun argument explicitly. Likewise. + (make_edges_bb): Likewise. + (make_cond_expr_edges): Likewise. + (get_cases_for_edge): Likewise. + (make_gimple_switch_edges): Likewise. + (label_to_block_fn): Likewise. + (label_to_block): Likewise. + (make_goto_expr_edges): Likewise. + (make_gimple_asm_edges): Likewise. + (main_block_label): Likewise. + (group_case_labels_stmt): Likewise. + (find_taken_edge_computed_goto): Likewise. + (find_taken_edge_switch_expr): Likewise. + (gimple_verify_flow_info): Likewise. + (gimple_redirect_edge_and_branch): Likewise. + (gimple_switch_label_bb): New function. + (gimple_switch_default_bb): Likewise. + (gimple_switch_edge): Likewise. + (gimple_switch_default_edge): Likewise. + * tree-cfg.h (label_to_block_fn): Remove and replace ... + (label_to_block): ... with this. + (gimple_switch_label_bb): New. + (gimple_switch_default_bb): Likewise. + (gimple_switch_edge): Likewise. + (gimple_switch_default_edge): Likewise. + * tree-cfgcleanup.c (convert_single_case_switch): Use + new gimple functions and pass new argument to label_to_block. + (cleanup_control_flow_bb): + * tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass + cfun argument explicitly. + (make_eh_edges): Likewise. + (redirect_eh_dispatch_edge): Likewise. + (lower_resx): Likewise. + (lower_eh_dispatch): Likewise. + (maybe_remove_unreachable_handlers): Likewise. + (unsplit_eh): Likewise. + (cleanup_empty_eh): Likewise. + (verify_eh_edges): Likewise. + (verify_eh_dispatch_edge): Likewise. + * tree-ssa-dom.c (record_edge_info): Likewise. + * tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise. + * tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise. + (thread_through_normal_block): Likewise. + * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. + * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): + * tree-switch-conversion.c (switch_conversion::collect): Use new + gimple functions. + (switch_conversion::check_final_bb): Likewise. + (switch_conversion::gather_default_values): Pass new argument + to label_to_block. + (switch_conversion::build_constructors): Likewise. + (switch_decision_tree::compute_cases_per_edge): Use new + gimple_switch_edge function. + (switch_decision_tree::analyze_switch_statement): Pass new argument + to label_to_block. + (switch_decision_tree::try_switch_expansion): Use + gimple_switch_default_edge. + * tree-vrp.c (find_switch_asserts): Pass new argument + to label_to_block. + * vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise. + (vr_values::simplify_switch_using_ranges): Likewise. + +2018-08-27 Richard Biener + + * cfganal.h (rev_post_order_and_mark_dfs_back_seme): Declare. + * cfganal.c (rev_post_order_and_mark_dfs_back_seme): New function. + + * tree-ssa-sccvn.h (struct vn_pval): New structure. + (struct vn_nary_op_s): Add unwind_to member. Add + predicated_values flag and put result into a union together + with a linked list of vn_pval. + (struct vn_ssa_aux): Add name member to make maintaining + a map of SSA name to vn_ssa_aux possible. Remove no longer + needed info, dfsnum, low, visited, on_sccstack, use_processed + and range_info_anti_range_p members. + (run_scc_vn, vn_eliminate, free_scc_vn, vn_valueize): Remove. + (do_rpo_vn, run_rpo_vn, eliminate_with_rpo_vn, free_rpo_vn): + New functions. + (vn_valueize): New global. + (vn_context_bb): Likewise. + (VN_INFO_RANGE_INFO, VN_INFO_ANTI_RANGE_P, VN_INFO_RANGE_TYPE, + VN_INFO_PTR_INFO): Remove. + * tree-ssa-sccvn.c: ... (rewrite) + (pass_fre::execute): For -O2+ initialize loops and run + RPO VN in optimistic mode (iterating). For -O1 and -Og + run RPO VN in non-optimistic mode. + * params.def (PARAM_SCCVN_MAX_SCC_SIZE): Remove. + (PARAM_RPO_VN_MAX_LOOP_DEPTH): Add. + * doc/invoke.texi (sccvn-max-scc-size): Remove. + (rpo-vn-max-loop-depth): Document. + * tree-ssa-alias.c (walk_non_aliased_vuses): Stop walking + when valuezing the VUSE signals we walked out of the region. + * tree-ssa-pre.c (phi_translate_1): Ignore predicated values. + (phi_translate): Set VN context block to use for availability + lookup. + (compute_avail): Likewise. + (pre_valueize): New function. + (pass_pre::execute): Adjust to the RPO VN API. + + * tree-ssa-loop-ivcanon.c: Include tree-ssa-sccvn.h. + (propagate_constants_for_unrolling): Remove. + (tree_unroll_loops_completely): Perform value-numbering + on the unrolled bodies loop parent. + +2018-08-27 Richard Biener + + * tree-ssa-pre.c (compute_antic): Re-use inverted postorder + for partial antic compute. + +2018-08-27 Jakub Jelinek + + PR rtl-optimization/87065 + * combine.c (simplify_if_then_else): Formatting fix. + (if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P + check. + (known_cond): Don't return const_true_rtx for vector modes. Use + CONST0_RTX instead of const0_rtx. Formatting fixes. + +2018-08-27 Martin Liska + + PR gcov-profile/87069 + * gcov.c (process_file): Record files already processed + and warn about a file being processed multiple times. + +2018-08-27 Martin Liska + + PR driver/83193 + * config/aarch64/aarch64.c (aarch64_override_options_internal): + Set default values for x_aarch64_*_string strings. + * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}== + prefix. For -mabi do not print '=ABI' in help and use + format for -msve-vector-bits and -moverride + options. + +2018-08-26 Jeff Law + + * config/mips/frame-header-opt.c: Include "backend.h" rather than + "cfg.h" + +2018-08-26 Marek Polacek + + PR c++/87029, Implement -Wredundant-move. + * doc/invoke.texi: Document -Wredundant-move. + +2018-08-25 Martin Sebor + + PR tree-optimization/87059 + * builtins.c (expand_builtin_strncmp): Convert MIN_EXPR operand + to the same type as the other. + * fold-const.c (fold_binary_loc): Assert expectation. + +2018-08-25 Iain Sandoe + + * config/darwin.c (machopic_legitimize_pic_address): Clean up + extraneous parentheses, dead code section and formatting. + +2018-08-24 David Malcolm + + PR c++/87091 + * diagnostic-show-locus.c (layout::layout): Ensure the margin is + wide enough for jumps in the line-numbering to be visible. + (layout::print_gap_in_line_numbering): New member function. + (layout::calculate_line_spans): When using line numbering, merge + line spans that are only 1 line apart. + (diagnostic_show_locus): When printing line numbers, show gaps in + line numbering directly, rather than printing headers. + (selftest::test_diagnostic_show_locus_fixit_lines): Add test of + line-numbering with multiple line spans. + (selftest::test_fixit_insert_containing_newline_2): Add test of + line-numbering, in which the spans are close enough to be merged. + +2018-08-24 Aldy Hernandez + + * gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range + to range_includes_zero_p. Do not special case VR_ANTI_RANGE. + * tree-vrp.c (range_is_nonnull): Remove. + (range_includes_zero_p): Accept value_range instead of min/max. + (extract_range_from_binary_expr_1): Do not early bail on + POINTER_PLUS_EXPR. + Use range_includes_zero_p instead of range_is_nonnull. + (extract_range_from_unary_expr): Use range_includes_zero_p instead + of range_is_nonnull. + (vrp_meet_1): Pass value_range to range_includes_zero_p. Do not + special case VR_ANTI_RANGE. + (vrp_finalize): Same. + * tree-vrp.h (range_includes_zero_p): Pass value_range as argument + instead of min/max. + (range_is_nonnull): Remove. + * vr-values.c (vrp_stmt_computes_nonzero): Use + range_includes_zero_p instead of range_is_nonnull. + (extract_range_basic): Pass value_range to range_includes_zero_p + instead of range_is_nonnull. + +2018-08-24 Uros Bizjak + + * emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes. + * emit-rtl.h (rtl_data): Remove return_bnd. + * explow.c (trunc_int_for_mode): Do not handle POINTER_BOUNDS_MODE_P. + * function.c (diddle_return_value): Do not handle crtl->return_bnd. + * genmodes.c (complete_mode): Do not handle MODE_POINTER_BOUNDS. + (POINTER_BOUNDS_MODE): Remove definition. + (make_pointer_bounds_mode): Remove. + (get_mode_class): Do not handle MODE_POINTER_BOUNDS. + * machmode.h (POINTER_BOUNDS_MODE_P): Remove definition. + (scalare_mode::includes_p): Do not handle MODE_POINTER_BOUNDS. + * mode-classes.def: Do not define MODE_POINTER_BOUNDS. + * stor-layout.c (int_mode_for_mode): Do not handle MODE_POINTER_BOUNDS. + * tree-core.h (enum tree_index): Remove TI_POINTER_BOUNDS_TYPE. + * varasm.c (output_constant_pool_2): Do not handle MODE_POINTER_BOUNDS. + + * config/i386/i386-modes.def (BND32, BND64): Remove. + * config/i386/i386.c (dbx_register_map): Remove bound registers. + (dbx64_register_map): Ditto. + (svr4_dbx_register_map): Ditto. + (indirect_thunk_bnd_needed): Remove. + (indirect_thunks_bnd_used): Ditto. + (indirect_return_bnd_needed): Ditto. + (indirect_return_via_cx_bnd): Ditto. + (enum indirect_thunk_prefix): Remove indirect_thunk_prefix_bnd. + (indirect_thunk_name): Remove handling of indirect_thunk_prefix_bnd. + (output_indirect_thunk): Ditto. Remove need_prefix argument. + (output_indirect_thunk_function): Remove handling of + indirect_return_bnd_needed, indirect_return_via_cx_bnd, + indirect_thunk_bnd_needed and indirect_thunks_bnd_used variables. + (ix86_save_reg): Remove handling of crtl->return_bnd. + (ix86_legitimate_constant_p): Remove handling of POINTER_BOUNDS_MODE_P. + (ix86_print_operand_address_as): Remove handling of UNSPEC_BNDMK_ADDR + and UNSPEC_BNDLX_ADDR. + (ix86_output_indirect_branch_via_reg): Remove handling of + indirect_thunk_prefix_bnd. + (ix86_output_indirect_branch_via_push): Ditto. + (ix86_output_function_return): Ditto. + (ix86_output_indirect_function_return): Ditto. + (avoid_func_arg_motion): Do not handle UNSPEC_BNDSTX. + * config/i386/i386.h (FIXED_REGISTERS): Remove bound registers. + (CALL_USED_REGISTERS): Ditto. + (REG_ALLOC_ORDER): Update for removal of bound registers. + (HI_REGISTER_NAMES): Ditto. + * config/i386/i386.md (UNSPEC_BNDMK, UNSPEC_BNDMK_ADDR, UNSPEC_BNDSTX) + (UNSPEC_BNDLDX, UNSPEC_BNDLDX_ADDR, UNSPEC_BNDCL, UNSPEC_BNDCU) + (UNSPEC_BNDCN, UNSPEC_MPX_FENCE): Remove. + (BND0_REG, BND1_REG, BND2_REG, BND3_REG): Remove + (FIRST_PSEUDO_REG): Update. + (BND): Remove mode iterator. + * config/i386/predicates.md (bnd_mem_operator): Remove. + +2018-08-24 Richard Sandiford + + * tree-vect-stmts.c (vectorizable_bswap): Handle variable-length + vectors. + +2018-08-24 Richard Sandiford + + * tree-vect-slp.c (vect_transform_slp_perm_load): Separate out + the case in which the permute needs only a single element and + repeats for every vector of the result. Extend that case to + handle variable-length vectors. + * tree-vect-stmts.c (vectorizable_load): Update accordingly. + +2018-08-24 H.J. Lu + + PR debug/79342 + * dwarf2out.c (save_macinfo_strings): Call set_indirect_string + on DW_MACINFO_start_file for -gsplit-dwarf -g3. + +2018-08-24 Richard Biener + + * cfg.h (struct control_flow_graph): Add edge_flags_allocated and + bb_flags_allocated members. + (auto_flag): New RAII class for allocating flags. + (auto_edge_flag): New RAII class for allocating edge flags. + (auto_bb_flag): New RAII class for allocating bb flags. + * cfgloop.c (verify_loop_structure): Allocate temporary edge + flag dynamically. + * cfganal.c (dfs_enumerate_from): Remove use of visited sbitmap + in favor of temporarily allocated BB flag. + * hsa-brig.c: Re-order includes. + * hsa-dump.c: Likewise. + * hsa-regalloc.c: Likewise. + * print-rtl.c: Likewise. + * profile-count.c: Likewise. + +2018-08-24 Segher Boessenkool + + PR target/86989 + * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is + the TOC register. + +2018-08-24 Aldy Hernandez + + PR 87073/bootstrap + * wide-int-range.cc (wide_int_range_div): Do not ignore result + from wide_int_range_multiplicative_op. + +2018-08-23 Prathamesh Kulkarni + + * tree-vect-data-refs.c (vect_grouped_store_supported): Fix typo + "permutaion". + +2018-08-23 Giuliano Belinassi + + * genmatch.c (parser::parse_operation): Fix typo 'exapnded' + to 'expanded'. + +2018-08-23 Alexander Monakov + + * tree-scalar-evolution.c (final_value_replacement_loop): Dump + full GENERIC expression used for replacement. + +2018-08-23 Aldy Hernandez + + * tree-vrp.c (abs_extent_range): Remove. + (extract_range_into_wide_ints): Pass wide ints by reference. + (extract_range_from_binary_expr_1): Rewrite the *DIV_EXPR code. + Pass wide ints by reference in all calls to + extract_range_into_wide_ints. + * wide-int-range.cc (wide_int_range_div): New. + * wide-int-range.h (wide_int_range_div): New. + (wide_int_range_includes_zero_p): New. + (wide_int_range_zero_p): New. + +2018-08-23 Matthew Malcomson + + * config/aarch64/aarch64.md (arches): New enum. + (arch): New enum attr. + (arch_enabled): New attr. + (enabled): Now uses arch_enabled only. + (simd, sve, fp16): Removed attribute. + (fp): Attr now defined in terms of 'arch'. + (*mov_aarch64, *movsi_aarch64, *movdi_aarch64, *movti_aarch64, + *movhf_aarch64, 2, + 3, + 3): Merge 'fp' and 'simd' + attributes into 'arch'. + (*movsf_aarch64, *movdf_aarch64, *movtf_aarch64, *add3_aarch64, + subdi3, neg2, 3, one_cmpl2, + *_one_cmpl3, *xor_one_cmpl3, + *aarch64_ashl_sisd_or_int_3, *aarch64_lshr_sisd_or_int_3, + *aarch64_ashr_sisd_or_int_3, *aarch64_sisd_ushl): Convert use of + 'simd' attribute into 'arch'. + (load_pair_sw_, load_pair_dw_, + store_pair_sw_, store_pair_dw_): + Convert use of 'fp' attribute to 'arch'. + * config/aarch64/aarch64-simd.md (move_lo_quad_internal_, + move_lo_quad_internal_): (different modes) Merge 'fp' and 'simd' + into 'arch'. + (move_lo_quad_internal_be_, move_lo_quad_internal_be_): + (different modes) Merge 'fp' and 'simd' into 'arch'. + (*aarch64_combinez, *aarch64_combinez_be): Merge 'fp' and + 'simd' into 'arch'. + +2018-08-23 Segher Boessenkool + + PR rtl-optimization/87026 + * expmed.c (canonicalize_comparison): If we can no longer create + pseudoregisters, don't. + +2018-08-23 Richard Earnshaw + + PR target/86951 + * config/arm/arm-protos.h (arm_emit_speculation_barrier): New + prototype. + * config/arm/arm.c (speculation_barrier_libfunc): New static + variable. + (arm_init_libfuncs): Initialize it. + (arm_emit_speculation_barrier): New function. + * config/arm/arm.md (speculation_barrier): Call + arm_emit_speculation_barrier for architectures that do not have + DSB or ISB. + (speculation_barrier_insn): Only match on Armv7 or later. + +2018-08-23 Richard Biener + + PR middle-end/87024 + * tree-inline.c (copy_bb): Drop unused __builtin_va_arg_pack_len + calls. + +2018-08-23 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_evpc_sve_tbl): Fix handling + of single-vector TBLs. + (aarch64_vectorize_vec_perm_const): Set one_vector_p when only + one input is given. + +2018-08-23 Richard Sandiford + + PR target/85910 + * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Fix + aarch64_evpc_tbl guard. + +2018-08-22 Bernd Edlinger + + * tree-ssa-dse.c (compute_trims): Avoid folding away undefined + behaviour. + +2018-08-22 Martin Sebor + + PR middle-end/87052 + * tree-pretty-print.c (pretty_print_string): Add argument. + (dump_generic_node): Call to pretty_print_string with string size. + +2018-08-22 Segher Boessenkool + + PR rtl-optimization/86771 + * combine.c (try_combine): Do not allow splitting a resulting PARALLEL + of two SETs into those two SETs, one to be placed at i2, if that SETs + destination is modified between i2 and i3. + +2018-08-22 Richard Sandiford + + PR tree-optimization/86725 + * tree-vect-loop.c (vect_inner_phi_in_double_reduction_p): New + function. + (vect_analyze_scalar_cycles_1): Check it. + +2018-08-22 Richard Sandiford + + PR tree-optimization/86725 + * tree-vect-loop.c (vect_is_simple_reduction): When treating + an outer loop phi as a double reduction, make sure that the + single user of the phi result is an inner loop phi. + +2018-08-22 Richard Sandiford + + * tree-vect-data-refs.c (vect_analyze_group_access_1): Convert + grouped stores with gaps to a strided group. + +2018-08-22 Richard Sandiford + + * tree-vect-stmts.c (get_group_load_store_type) + (get_load_store_type): Only test STMT_VINFO_STRIDED_P for the + first statement in a group. + +2018-08-22 Iain Sandoe + + * config/darwin.h (LINK_COMMAND_SPEC_A): Sync LTO options with + the sequence used in gcc/gcc.c. + +2018-08-22 Iain Sandoe + + PR other/704 + * gcc-ar.c (main): Don’t try to invoke the plug-in if we’re not + building it. + +2018-08-22 Iain Sandoe + + * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Adjust to use the + Darwin10-specific unwinder-shim. + * config/darwin12.h (LINK_GCC_C_SEQUENCE_SPEC): Remove. + * config/rs6000/darwin.h (DARWIN_CRT1_SPEC, DARWIN_DYLIB1_SPEC): + New to cater for Darwin10 Rosetta. + +2018-08-22 Iain Sandoe + + * config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O + specific test before the one for HAVE_AS_GOTOFF_IN_DATA. + +2018-08-22 Iain Sandoe + + PR bootstrap/81033 + PR target/81733 + PR target/52795 + * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New. + (dwarf2out_switch_text_section): Generate a local label for the + second function sub-section and apply it as the second FDE start + label. + * gcc/final.c (final_scan_insn_1): Emit second FDE label after the + second sub-section start. + +2018-08-22 Richard Biener + + PR tree-optimization/86988 + * tree-vrp.c (vrp_prop::check_mem_ref): Bail out on VLAs. + +2018-08-22 Richard Biener + + PR tree-optimization/86945 + * tree-cfg.c (generate_range_test): Use unsigned arithmetic. + +2018-08-22 Alexandre Oliva + + * config/rs6000/rs6000.c (SMALL_DATA_RELOC, SMALL_DATA_REG): Add + a comment about how uses of r2 for .sdata2 come about. + +2018-08-22 Alexandre Oliva + + * tree-ssa-reassoc.c (is_reassociable_op): Fix cut&pasto. + +2018-08-21 Marek Polacek + + PR c++/86981, Implement -Wpessimizing-move. + * doc/invoke.texi: Document -Wpessimizing-move. + +2018-08-21 Jan Hubicka + + * tree.c (find_decls_types_r): Do not check for redundant typedefs. + * tree.h (is_redundant_typedef): Remove. + * dwarf2out.c (is_redundant_typedef): Turn into static function. + +2018-08-21 Jan Hubicka + + * tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT + when possible. + +2018-08-21 Tamar Christina + + * expmed.c (extract_low_bits): Reject invalid subregs early. + +2018-08-21 Bernd Edlinger + + PR middle-end/86121 + * tree-ssa-strlen.c (adjust_last_stmt): Avoid folding away undefined + behaviour. + +2018-08-21 Rasmus Villemoes + + * config/vxworks.h: Guard vxworks_asm_out_constructor and + vxworks_asm_out_destructor by !HAVE_INITFINI_ARRAY_SUPPORT + * config/vxworks.c: Likewise. + +2018-08-21 Rasmus Villemoes + + * config/vxworks.c: Set targetm.have_ctors_dtors + if HAVE_INITFINI_ARRAY_SUPPORT. + * config/vxworks.h: Set SUPPORTS_INIT_PRIORITY + if HAVE_INITFINI_ARRAY_SUPPORT. + +2018-08-21 Rasmus Villemoes + + * config/vxworks.h: Add $(WIND_BASE)/target/h/wrn/coreip to + default search path for VxWorks < 7. + +2018-08-21 Bernd Edlinger + + * gimple-ssa-sprintf.c (decl_constant_value): Remove. + (get_format_string): Refer to c_getstr. + +2018-08-21 Tom de Vries + + * cgraph.h (debuginfo_early_init, debuginfo_init, debuginfo_fini) + (debuginfo_start, debuginfo_stop, debuginfo_early_start) + (debuginfo_early_stop): Declare. + * cgraphunit.c (debuginfo_early_init, debuginfo_init, debuginfo_fini) + (debuginfo_start, debuginfo_stop, debuginfo_early_start) + (debuginfo_early_stop): New function. + (symbol_table::finalize_compilation_unit): Call debuginfo_early_start + and debuginfo_early_stop. + * dwarf2out.c (dwarf2out_finish, dwarf2out_early_finish): Dump dwarf. + * toplev.c (compile_file): Call debuginfo_start and debuginfo_stop. + (general_init): Call debuginfo_early_init. + (finalize): Call debuginfo_fini. + (do_compile): Call debuginfo_init. + * doc/invoke.texi (@gccoptlist): Add -fdump-debug and + -fdump-early-debug. + (@item -fdump-debug, @item -fdump-earlydebug): Add. + +2018-08-21 Tom de Vries + + * dwarf2out.c (print_dw_val, print_loc_descr, print_die): Handle + flag_dump_noaddr and flag_dump_unnumbered. + +2018-08-21 Aldy Hernandez + + * wide-int-range.cc (wide_int_range_abs): New. + (wide_int_range_order_set): Rename from wide_int_range_min_max. + * wide-int-range.h (wide_int_range_abs): New. + (wide_int_range_min_max): New. + * tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR + case to call wide_int_range_abs. + Rewrite MIN/MAX_EXPR to call wide_int_range_min_max. + (extract_range_from_abs_expr): Delete. + +2018-08-20 Michael Meissner + + PR target/87033 + * config/rs6000/rs6000.md (extendsi2): Change constraints + from 'Y' to 'YZ' to enable the LWAX instruction to be generated + for indexed loads. + +2018-08-20 Nathan Sidwell + Jeff Law + + * config/s390/s390-c (s390_macro_to_expand): Use cpp_macro_p. + * config/spu/spu-c.c (spu_macro_to_expand): Likewise. + +2018-08-20 David Malcolm + + PR other/84889 + * attribs.c (diag_attr_exclusions): Add auto_diagnostic_group instance. + (decl_attributes): Likewise. + * calls.c (maybe_warn_nonstring_arg): Add auto_diagnostic_group + instance. + * cgraphunit.c (maybe_diag_incompatible_alias): Likewise. + * diagnostic-core.h (class auto_diagnostic_group): New class. + * diagnostic.c (diagnostic_initialize): Initialize the new fields. + (diagnostic_report_diagnostic): Handle the first diagnostics within + a group. + (emit_diagnostic): Add auto_diagnostic_group instance. + (inform): Likewise. + (inform_n): Likewise. + (warning): Likewise. + (warning_at): Likewise. + (warning_n): Likewise. + (pedwarn): Likewise. + (permerror): Likewise. + (error): Likewise. + (error_n): Likewise. + (error_at): Likewise. + (sorry): Likewise. + (fatal_error): Likewise. + (internal_error): Likewise. + (internal_error_no_backtrace): Likewise. + (auto_diagnostic_group::auto_diagnostic_group): New ctor. + (auto_diagnostic_group::~auto_diagnostic_group): New dtor. + * diagnostic.h (struct diagnostic_context): Add fields + "diagnostic_group_nesting_depth", + "diagnostic_group_emission_count", "begin_group_cb", + "end_group_cb". + * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): + Add auto_diagnostic_group instance(s). + (find_explicit_erroneous_behavior): Likewise. + * gimple-ssa-warn-alloca.c (pass_walloca::execute): Likewise. + * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Likewise. + * gimplify.c (warn_implicit_fallthrough_r): Likewise. + (gimplify_va_arg_expr): Likewise. + * hsa-gen.c (HSA_SORRY_ATV): Likewise. + (HSA_SORRY_AT): Likewise. + * ipa-devirt.c (compare_virtual_tables): Likewise. + (warn_odr): Likewise. + * multiple_target.c (expand_target_clones): Likewise. + * opts-common.c (cmdline_handle_error): Likewise. + * reginfo.c (globalize_reg): Likewise. + * substring-locations.c (format_warning_n_va): Likewise. + * tree-inline.c (expand_call_inline): Likewise. + * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise. + * tree-ssa-loop-niter.c + (do_warn_aggressive_loop_optimizations): Likewise. + * tree-ssa-uninit.c (warn_uninit): Likewise. + * tree.c (warn_deprecated_use): Likewise. + +2018-08-20 H.J. Lu + + PR target/87014 + * config/i386/i386.md (eh_return): Always update EH return + address in word_mode. + +2018-08-20 Chung-Lin Tang + + * targhooks.c (std_gimplify_va_arg_expr): Properly handle case of when + TARGET_SPLIT_COMPLEX_ARG is defined. + +2018-08-20 Bernd Edlinger + + * expr.c (store_field): Change gcc_assert to gcc_checking_assert. + +2018-08-20 Bernd Edlinger + + PR target/86984 + * expr.c (expand_assignment): Assert that bitpos is positive. + (store_field): Likewise + (expand_expr_real_1): Make sure that bitpos is positive. + * config/alpha/alpha.h (CONSTANT_ADDRESS_P): Avoid signed + integer overflow. + +2018-08-20 Nathan Sidwell + + * Makefile.in (CPP_ID_DATA_H): Delete. + (CPP_INTERNAL_H): Don't add it. + (GTFILES): Replace CPP_ID_DATA_H with CPPLIB_H. + * gengtype.c (open_base_files): Replace cpp-id-data.h with cpplib.h + +2018-08-20 Richard Biener + + PR tree-optimization/78655 + * tree-vrp.c (extract_range_from_binary_expr_1): Make + pointer + offset nonnull if either operand is nonnull work. + +2018-08-20 Tom de Vries + + * dwarf2out.c (add_scalar_info): Don't add reference to existing die + unless the referenced die describes the added property using + DW_AT_location or DW_AT_const_value. Fall back to exprloc case. + Otherwise, add a DW_AT_location to the referenced die. + +2018-08-19 Uros Bizjak + + PR target/86994 + * config/i386/i386.c (ix86_rtx_costs) [case SET]: Check source for + register_operand when calling ix86_set_reg_reg_cost. + [case CONST_INT, case CONST, case LABEL_REF, case SYMBOL_REF]: + Set *total to 0 for operands that satisfy x86_64_immediate_operand + predicate and to 1 otherwise. + +2018-08-18 Iain Sandoe + + * config/darwin.c (darwin_override_options): If -gsplit-dwarf is set, + emit a diagnostic that it is not supported and reset the option. + * config/darwin.h (DRIVER_SELF_SPECS): Note that gsplit-dwarf is not + supported and consume the option. (ASM_FINAL_SPEC): New. + +2018-08-17 Segher Boessenkool + + * doc/md.texi (Patterns): Use @ref instead of @xref in the middle of + a sentence. + +2018-08-17 Sandra Loosemore + + C-SKY port: Documentation + + * doc/extend.texi (C-SKY Function Attributes): New section. + * doc/invoke.texi (Option Summary): Add C-SKY options. + (C-SKY Options): New section. + * doc/md.texi (Machine Constraints): Document C-SKY constraints. + +2018-08-17 Jojo + Huibin Wang + Sandra Loosemore + Chung-Lin Tang + + C-SKY port: Backend implementation + + * config/csky/*: New. + * common/config/csky/*: New. + +2018-08-17 Jojo + Huibin Wang + Sandra Loosemore + Chung-Lin Tang + Andrew Jenner + + C-SKY port: Configury + + * config.gcc (csky-*-*): New. + * configure.ac: Add csky to targets for dwarf2 debug_line support. + * configure: Regenerated. + +2018-08-17 David Malcolm + + * dump-context.h: Include "dumpfile.h". + (dump_context::dump_printf_va): Convert final param from va_list + to va_list *. Convert from ATTRIBUTE_PRINTF to + ATTRIBUTE_GCC_DUMP_PRINTF. + (dump_context::dump_printf_loc_va): Likewise. + * dumpfile.c: Include "stringpool.h". + (make_item_for_dump_printf_va): Delete. + (make_item_for_dump_printf): Delete. + (class dump_pretty_printer): New class. + (dump_pretty_printer::dump_pretty_printer): New ctor. + (dump_pretty_printer::emit_items): New member function. + (dump_pretty_printer::emit_any_pending_textual_chunks): New member + function. + (dump_pretty_printer::emit_item): New member function. + (dump_pretty_printer::stash_item): New member function. + (dump_pretty_printer::format_decoder_cb): New member function. + (dump_pretty_printer::decode_format): New member function. + (dump_context::dump_printf_va): Reimplement in terms of + dump_pretty_printer. + (dump_context::dump_printf_loc_va): Convert final param from va_list + to va_list *. + (dump_context::begin_scope): Reimplement call to + make_item_for_dump_printf. + (dump_printf): Update for change to dump_printf_va. + (dump_printf_loc): Likewise. + (selftest::test_capture_of_dump_calls): Convert "stmt" from + greturn * to gimple *. Add a test_decl. Add tests of dump_printf + with %T, %E, and %G. + * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): New macro. + (dump_printf): Replace ATTRIBUTE_PRINTF_2 with + ATTRIBUTE_GCC_DUMP_PRINTF (2, 3). + (dump_printf_loc): Replace ATTRIBUTE_PRINTF_3 with + ATTRIBUTE_GCC_DUMP_PRINTF (3, 0). + * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Convert + use of HOST_WIDE_INT_PRINT_DEC on unsigned HOST_WIDE_INT "count" + within a dump_printf_loc call to "%wu". + (vector_alignment_reachable_p): Merge two dump_printf[_loc] calls, + converting a use of HOST_WIDE_INT_PRINT_DEC to "%wd". Add a + missing space after "=". + * tree-vect-loop.c (vect_analyze_loop_2) Within a dump_printf + call, convert use of HOST_WIDE_INT_PRINT_DEC to "%wd". + * tree-vect-slp.c (vect_slp_bb): Within a dump_printf_loc call, + convert use of HOST_WIDE_INT_PRINT_UNSIGNED to "%wu". + * tree-vectorizer.c (try_vectorize_loop_1): Likewise. Remove + duplicate "vectorized" from message. + +2018-08-17 Szabolcs Nagy + + * config/arm/arm-builtins.c (arm_init_simd_builtin_types): Clear + polyNxK_t element's TYPE_STRING_FLAG. + +2018-08-17 Segher Boessenkool + + * config/rs6000/rs6000.md (*cbranch, *creturn): Name these patterns + (they were unnamed before). Fix comments. + +2018-08-17 Nathan Sidwell + + * cppbuiltin.c: Include "cpplib.h", not "cpp-id-data.h". + +2018-08-17 Richard Biener + + PR tree-optimization/86841 + * wide-int-range.cc (wide_int_range_lshift): Use to_uhwi. + +2018-08-17 Martin Liska + + * common.opt: Remove Warn, Init and Report for options with + Ignore/Deprecated flag. Warning is done automatically for + Deprecated flags. + * config/i386/i386.opt: Likewise. + * config/ia64/ia64.opt: Likewise. + * config/rs6000/rs6000.opt: Likewise. + * cppbuiltin.c (define_builtin_macros_for_compilation_flags): + Remove usage of flag_check_pointer_bounds. + * lto-wrapper.c (merge_and_complain): Do not handle + OPT_fcheck_pointer_bounds. + (append_compiler_options): Likewise. + * opt-functions.awk: Do not handle Deprecated. + * optc-gen.awk: Check that Var, Report and Init are not + used for an option with Ignore/Deprecated flag. + * opts-common.c (decode_cmdline_option): Do not report + CL_ERR_DEPRECATED. + (read_cmdline_option): Report warning for OPT_SPECIAL_deprecated + options. + * opts.h (struct cl_option): Remove cl_deprecated flag. + (CL_ERR_DEPRECATED): Remove error enum value. + +2018-08-17 Richard Biener + + PR middle-end/86505 + * tree-inline.c (copy_bb): When inlining __builtin_va_arg_pack_len () + across a va-arg-pack using call adjust its return value accordingly. + +2018-08-16 Martin Sebor + + PR tree-optimization/86853 + * gimple-ssa-sprintf.c (struct format_result): Rename member. + (struct fmtresult): Add member and initialize it in ctors. + (format_character): Handle %C. Extend range to NUL. Set MAYFAIL. + (format_string): Handle %S the same as %ls. Set MAYFAIL. + (format_directive): Set POSUNDER4K when MAYFAIL is set. + (parse_directive): Handle %C same as %c. + (sprintf_dom_walker::compute_format_length): Adjust. + (is_call_safe): Adjust. + +2018-08-16 Bernd Edlinger + + * builtins.c (c_strlen): Add new parameter eltsize. Use it + for determining how to count the elements. + * builtins.h (c_strlen): Adjust prototype. + * expr.c (string_constant): Add new parameter mem_size. + Set *mem_size appropriately. + * expr.h (string_constant): Adjust protoype. + * gimple-fold.c (get_range_strlen): Add new parameter eltsize. + * gimple-fold.h (get_range_strlen): Adjust prototype. + * gimple-ssa-sprintf.c (get_string_length): Add new parameter eltsize. + (format_string): Call get_string_length with eltsize. + +2018-08-16 David Malcolm + + * diagnostic.c (default_diagnostic_start_span_fn): Call pp_string + to emit the span, rather than setting it as the prefix. + +2018-08-16 David Malcolm + + * diagnostic-show-locus.c (layout::start_annotation_line): Add + "margin_char" parameter, defaulting to space. Use it in place + of pp_space for the initial part of the margin. + (layout::print_leading_fixits): Use '+' when filling the margin + of line-insertion fix-it hints. + +2018-08-16 Segher Boessenkool + + * config/rs6000/rs6000.md (two unnamed define_insn and define_split): + Delete. + +2018-08-16 Segher Boessenkool + + * config/rs6000/altivec.md: Don't set length attribute to the default + value. + * config/rs6000/darwin.md: Ditto. + * config/rs6000/dfp.md: Ditto. + * config/rs6000/htm.md: Ditto. + * config/rs6000/rs6000.md: Ditto. + * config/rs6000/sync.md: Ditto. + * config/rs6000/vsx.md: Ditto. + +2018-08-16 Segher Boessenkool + + * config/rs6000/altivec.md: Don't set length attribute to the default + value, for branch instructions. + * config/rs6000/darwin.md: Ditto. + * config/rs6000/rs6000.md: Ditto. + +2018-08-16 Segher Boessenkool + + * config/rs6000/rs6000.md (length): Always define as const_int 4. + (unnamed conditional branch define_insn): Set length to 4 or 8 + depending on offset. + (_): Similar, for alternative 0. + (tf_): Ditto. + +2018-08-16 Tamar Christina + + * expr.c (copy_blkmode_to_reg): Perform larger copies when safe. + +2018-08-16 Matthew Malcomson + + * doc/rtl.texi: Replace old RTX class names with new names. + + +2018-08-16 Vlad Lazar + + * expmed.h (canonicalize_comparison): New declaration. + * expmed.c (canonicalize_comparison, equivalent_cmp_code): New function. + * expmed.c (emit_store_flag_1): Add call to canonicalize_comparison. + * optabs.c (prepare_cmp_insn): Likewise. + * rtl.h (unsigned_condition_p): New function which checks if a + comparison operator is unsigned. + +2018-08-16 Nathan Sidwell + + * config/rs6000/rs6000-c.c (rs6000_macro_to_expend): Use cpp_macro_p. + * config/powerpcspc/powerpcspe-c.c (rs6000_macro_to_expend): Likewise. + +2018-08-16 Tamar Christina + + PR target/84711 + * config/arm/arm.c (arm_can_change_mode_class): Disallow subreg. + * config/arm/neon.md (movv4hf, movv8hf): Refactored to.. + (mov): ..this and enable unconditionally. + +2018-08-16 Tamar Christina + + * config/arm/neon.md (*neon_mov): Remove reg-to-reg alternative. + +2018-08-16 Sam Tebbs + + * config/aarch64/aarch64.opt (mlow-precision-recip-sqrt) + (mlow-precision-sqrt, mlow-precision-div, mverbose-cost-dump): Replace + "Common" with "Target". + +2018-08-15 Uros Bizjak + + * config/i386/i386.opt (mmitigate-rop): Mark as deprecated. + * doc/invoke.texi (mmitigate-rop): Remove. + * config/i386/i386.c: Do not include "regrename.h". + (ix86_rop_should_change_byte_p, reg_encoded_number) + (ix86_get_modrm_for_rop, set_rop_modrm_reg_bits, ix86_mitigate_rop): + Remove. + (ix86_reorg): Remove call to ix86_mitigate_rop. + * config/i386/i386.md (attr "modrm_class"): Remove. + (cmp_ccno_1, mov_xor, movstrict_xor) + (x86_movcc_0_m1. x86_movcc_0_m1_se) + (x86_movcc_0_m1_neg): Remove modrm_class attribute override. + +2018-08-15 Will Schmidt + + * config/rs6000/rs600.c (rs6000_gimple_fold_builtin): Add entries to + allow folding of mergeh() and mergel() for the float and double types. + (fold_mergehl_helper): Rework to handle building a permute tree + for float vectors. + +2018-08-15 Uros Bizjak + + * config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode + for TARGET_SSE. + +2018-08-15 David Malcolm + + * common.opt (fdiagnostics-show-labels): New option. + * diagnostic-show-locus.c (class layout_range): Add field + "m_label". + (class layout): Add field "m_show_labels_p". + (layout_range::layout_range): Add param "label" and use it to + initialize m_label. + (make_range): Pass in NULL for new "label" param of layout_range's + ctor. + (layout::layout): Initialize m_show_labels_p. + (layout::maybe_add_location_range): Pass in loc_range->m_label + when constructing layout_range instances. + (struct line_label): New struct. + (layout::print_any_labels): New member function. + (layout::print_line): Call it if label-printing is enabled. + (selftest::test_one_liner_labels): New test. + (selftest::test_diagnostic_show_locus_one_liner): Call it. + * diagnostic.c (diagnostic_initialize): Initialize + context->show_labels_p. + * diagnostic.h (struct diagnostic_context): Add field + "show_labels_p". + * doc/invoke.texi (Diagnostic Message Formatting Options): Add + -fno-diagnostics-show-labels. + * dwarf2out.c (gen_producer_string): Add + OPT_fdiagnostics_show_labels to the ignored options. + * gcc-rich-location.c (gcc_rich_location::add_expr): Add "label" + param. + (gcc_rich_location::maybe_add_expr): Likewise. + * gcc-rich-location.h (gcc_rich_location::gcc_rich_location): Add + label" param, defaulting to NULL. + (gcc_rich_location::add_expr): Add "label" param. + (gcc_rich_location::maybe_add_expr): Likewise. + (class text_range_label): New class. + (class range_label_for_type_mismatch): New class. + * gimple-ssa-sprintf.c (fmtwarn): Pass NULL for new label params + of format_warning_va. + (fmtwarn_n): Likewise for new params of format_warning_n_va. + * lto-wrapper.c (merge_and_complain): Add + OPT_fdiagnostics_show_labels to the "pick one setting" options. + (append_compiler_options): Likewise to the dropped options. + (append_diag_options): Likewise to the passed-on options. + * opts.c (common_handle_option): Handle the new option. + * selftest-diagnostic.c + (test_diagnostic_context::test_diagnostic_context): Enable + show_labels_p. + * substring-locations.c: Include "gcc-rich-location.h". + (format_warning_n_va): Add "fmt_label" and "param_label" params + and use them as appropriate. + (format_warning_va): Add "fmt_label" and "param_label" params, + passing them on to format_warning_n_va. + (format_warning_at_substring): Likewise. + (format_warning_at_substring_n): Likewise. + * substring-locations.h (format_warning_va): Add "fmt_label" and + "param_label" params. + (format_warning_n_va): Likewise. + (format_warning_at_substring): Likewise. + (format_warning_at_substring_n): Likewise. + * toplev.c (general_init): Initialize global_dc->show_labels_p. + +2018-08-15 Qing Zhao + + PR testsuite/86519 + * builtins.c (expand_builtin_memcmp): Do not expand the call + when overflow is detected. + +2018-08-15 Martin Sebor + + PR tree-optimization/71625 + * config/aarch64/aarch64-builtins.c + (aarch64_init_simd_builtin_types): Clear Poly8_t's TYPE_STRING_FLAG. + +2018-08-15 Ilya Leoshkevich + + * config/s390/s390.c (s390_reorg): Remove loop. + +2018-08-15 Iain Sandoe + + * config/darwin.c + (darwin_function_switched_text_sections): Delete. + * gcc/config/darwin.h + (TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS): Likewise. + +2018-08-15 Iain Sandoe + + PR target/81685 + * config/darwin.h: (DEBUG_STR_OFFSETS_SECTION, DEBUG_LOCLISTS_SECTION, + DEBUG_RNGLISTS_SECTION) new macros. (DEBUG_PUBNAMES_SECTION, + DEBUG_PUBTYPES_SECTION) update to include GNU variant. + +2018-08-15 Martin Liska + + PR tree-optimization/86925 + * predict.c (expr_expected_value_1): When taking + later predictor, assign also probability. + Use fold_build2_initializer_loc in order to fold + the expression in -frounding-math. + +2018-08-14 Allan Sandfeld Jensen + + * config/i386/i386.c (expand_vec_perm_movs): New method matching movs + patterns. + (expand_vec_perm_1): Try the new method. + +2018-08-14 Ilya Leoshkevich + + PR target/86547 + * lra-lives.c (remove_some_program_points_and_update_live_ranges): + Check whether lra_live_max_point is 0 before dividing. + +2018-08-14 Martin Sebor + + PR tree-optimization/86650 + * tree-vrp.c (vrp_prop::check_array_ref): Print an inform message. + (vrp_prop::check_mem_ref): Same. + +2018-08-13 Liu Hao + + * pretty-print.c (eat_esc_sequence): Swap the foreground and + background colors if the COMMON_LVB_REVERSE_VIDEO flag is set, + and clear it thereafter, as it only works for DBCS. + +2018-08-13 Liu Hao + + * pretty-print.c (mingw_ansi_fputs): Do not call _close() on the + handle returned by _get_osf_handle(). + +2018-08-13 Will Schmidt + + * gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support + for folding vec_perm. + +2018-08-13 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): + Add support for gimple-folding of vec_pack() and vec_unpack() + intrinsics. + +2018-08-13 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_builtin_valid_without_lhs): Add + vec_xst variants to the list. + (rs6000_gimple_fold_builtin): Add support for folding unaligned + vector loads and stores. + +2018-08-13 David Edelsohn + + * config.gcc (rs6000-ibm-aix4.x): Delete. + (rs6000-ibm-aix5.1): Delete. + (rs6000-ibm-aix5.2): Delete. + (rs6000-ibm-aix5.3): Delete. + * config/rs6000/aix43.h: Delete. + * config/rs6000/aix51.h: Delete. + * config/rs6000/aix52.h: Delete. + * config/rs6000/t-aix43: Delete. + +2018-08-13 Ilya Leoshkevich + + * config/s390/s390.c (s390_decompose_constant_pool_ref): + New function. + (s390_decompose_address): Factor out constant pool ref + decomposition. + +2018-08-12 Chung-Ju Wu + + * config/nds32/nds32-predicates.c + (nds32_can_use_bclr_p): Change return type as bool. + (nds32_can_use_bset_p): Ditto. + (nds32_can_use_btgl_p): Ditto. + (nds32_can_use_bitci_p): Ditto. + * config/nds32/nds32-protos.h + (nds32_can_use_bclr_p): Change declaration. + (nds32_can_use_bset_p): Ditto. + (nds32_can_use_btgl_p): Ditto. + (nds32_can_use_bitci_p): Ditto. + +2018-08-12 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_expand_prologue, nds32_expand_epilogue): + Support -msched-prolog-epilog option. + * config/nds32/nds32.opt (msched-prolog-epilog): New option. + +2018-08-12 Chung-Ju Wu + + * common/config/nds32/nds32-common.c + (nds32_option_optimization_table): Enalbe -malways-align. + +2018-08-12 Chung-Ju Wu + + * config.gcc (nds32*): Add nds32_isr.h and nds32_init.inc in + extra_headers. + * common/config/nds32/nds32-common.c (nds32_handle_option): Handle + OPT_misr_secure_ case. + * config/nds32/nds32-isr.c: Implementation of backward compatibility. + * config/nds32/nds32-protos.h (nds32_isr_function_critical_p): New. + * config/nds32/nds32.c (nds32_attribute_table): Add critical and + secure attribute. + * config/nds32/nds32.h (nds32_isr_nested_type): Add NDS32_CRITICAL. + (nds32_isr_info): New field security_level. + (TARGET_ISR_VECTOR_SIZE_4_BYTE): New macro. + * config/nds32/nds32.md (return_internal): Consider critical attribute. + * config/nds32/nds32.opt (misr-secure): New option. + * config/nds32/nds32_init.inc: New file. + * config/nds32/nds32_isr.h: New file. + +2018-08-11 John David Anglin + + * config/pa/pa.md (UNSPEC_MEMORY_BARRIER): New unspec enum. + Update comment for atomic instructions. + (atomic_storeqi, atomic_storehi, atomic_storesi, atomic_storesf, + atomic_loaddf, atomic_loaddf_1, atomic_storedf, atomic_storedf_1): + Remove. + (atomic_loaddi): Revise fence expansion to only emit fence prior to + load for __ATOMIC_SEQ_CST model. + (atomic_loaddi_1): Remove float register target. + (atomic_storedi): Handle CONST_INT values. + (atomic_storedi_1): Remove float register source. Add special case + for zero value. + (memory_barrier): New expander and insn. + +2018-08-11 Jakub Jelinek + + PR tree-optimization/86835 + * tree-ssa-math-opts.c (insert_reciprocals): Even when inserting + new_stmt after def_gsi, make sure to insert new_square_stmt after + that stmt, not 2 stmts before it. + +2018-08-10 Alexander Monakov + + PR target/82418 + * config/i386/i386.md (mul3_highpart): Use DWIH mode iterator + instead of SWI48. + +2018-08-10 Martin Liska + + PR target/83610 + * builtin-types.def (BT_FN_LONG_LONG_LONG_DOUBLE): Add new + function type. + * builtins.c (expand_builtin_expect_with_probability): + New function. + (expand_builtin_expect_with_probability): New function. + (build_builtin_expect_predicate): Add new argumnet probability + for BUILT_IN_EXPECT_WITH_PROBABILITY. + (fold_builtin_expect): + (fold_builtin_2): + (fold_builtin_3): + * builtins.def (BUILT_IN_EXPECT_WITH_PROBABILITY): + * builtins.h (fold_builtin_expect): Set new argument. + * doc/extend.texi: Document __builtin_expect_with_probability. + * doc/invoke.texi: Likewise. + * gimple-fold.c (gimple_fold_call): Pass new argument. + * ipa-fnsummary.c (find_foldable_builtin_expect): Handle + also BUILT_IN_EXPECT_WITH_PROBABILITY. + * predict.c (get_predictor_value): New function. + (expr_expected_value): Add new argument probability. Assume + that predictor and probability are always non-null. + (expr_expected_value_1): Likewise. For __builtin_expect and + __builtin_expect_with_probability set probability. Handle + combination in binary expressions. + (tree_predict_by_opcode): Simplify code by simply calling + get_predictor_value. + (pass_strip_predict_hints::execute): Add handling of + BUILT_IN_EXPECT_WITH_PROBABILITY. + * predict.def (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Add + new predictor. + * tree.h (DECL_BUILT_IN_P): New function. + +2018-08-10 Martin Liska + + PR tree-optimization/85799 + * passes.def: Add argument for pass_strip_predict_hints. + * predict.c (class pass_strip_predict_hints): Add new argument + early_p. + (strip_predictor_early): New function. + (pass_strip_predict_hints::execute): Call the function to + strip predictors. + (strip_predict_hints): New function. + * predict.def: Fix comment. + +2018-08-10 Thomas Preud'homme + + * Makefile.in: Clarify which tm.texi to copy over to assert the + right to grant a GFDL license for all. + +2018-08-09 Jeff Law + + * config/m68k/m68k.c (m68k_adjust_decorated_operand): Remove + unused variable. + +2018-08-09 Andreas Schwab + + * config/m68k/m68k-protos.h (m68k_final_prescan_insn): Remove + prototype. + +2018-08-09 Richard Sandiford + + * tree-vect-loop.c (vectorizable_reduction): Allow inner-loop + reductions for variable-length vectors. + +2018-08-09 David Malcolm + + PR other/84889 + * common.opt (fdiagnostics-show-line-numbers): New option. + * diagnostic-show-locus.c (class layout): Add fields + "m_show_line_numbers_p" and "m_linenum_width"; + (num_digits): New function. + (test_num_digits): New function. + (layout::layout): Initialize new fields. Update m_x_offset + logic to handle any left margin. + (layout::print_source_line): Print line number when requested. + (layout::start_annotation_line): New member function. + (layout::print_annotation_line): Call it. + (layout::print_leading_fixits): Likewise. + (layout::print_trailing_fixits): Likewise. Update calls to + move_to_column for new parameter. + (layout::get_x_bound_for_row): Add "add_left_margin" param and use + it to potentially call start_annotation_line. + (layout::show_ruler): Call start_annotation_line. + (selftest::test_line_numbers_multiline_range): New selftest. + (selftest::diagnostic_show_locus_c_tests): Call test_num_digits + and selftest::test_line_numbers_multiline_range. + * diagnostic.c (diagnostic_initialize): Initialize + show_line_numbers_p. + * diagnostic.h (struct diagnostic_context): Add field + "show_line_numbers_p". + * doc/invoke.texi (Diagnostic Message Formatting Options): Add + -fno-diagnostics-show-line-numbers. + * dwarf2out.c (gen_producer_string): Add + OPT_fdiagnostics_show_line_numbers to the ignored options. + * lto-wrapper.c (merge_and_complain): Likewise to the "pick + one setting" options. + (append_compiler_options): Likewise to the dropped options. + (append_diag_options): Likewise to the passed-on options. + * opts.c (common_handle_option): Handle the new option. + * toplev.c (general_init): Set up global_dc->show_line_numbers_p. + +2018-08-09 Kelvin Nilsen + + * doc/extend.texi (PowerPC AltiVec Built-in Functions Available on + ISA 2.07): Correct spelling of bcdsub to be __builtin_bcdsub. Add + third argument of type "const signed char" to descriptions of + __builtin_bcdadd, __builtin_bcdadd_lt, __builtin_bcdadd_eq, + __builtin_bcdadd_gt, __builtin_bcdadd_ov, __builtin_bcdsub, + __builtin_bcdsub_lt, __builtin_bcdsub_eq, __builtin_bcdsub_gt, + __builtin_bcdsub_ov functions. + +2018-08-09 Richard Sandiford + + PR tree-optimization/86858 + * tree-vect-loop.c (vect_is_simple_reduction): Restore + flow_bb_inside_loop_p calls. + +2018-08-09 Richard Sandiford + + PR tree-optimization/86871 + * tree-vect-stmts.c (vect_transform_stmt): Use gimple_get_lhs + instead of gimple_assign_lhs. + +2018-08-09 Richard Earnshaw + + PR target/86887 + * config/aarch64/aarch64.md (add3_carryinC_zero): Add missing + register constraint to operand 0. + (add3_carryinC): Likewise. + (add3_carryinV_zero, add3_carryinV): Likewise. + +2018-08-09 Martin Liska + + PR c/86895 + * common.opt: Remove extra line. + +2018-08-09 Martin Liska + + * params.def (PARAM_ALIGN_LOOP_ITERATIONS): Remove double dots + at the end of a line, make first letter capital and end up + a sentence with a dot. + (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): Likewise. + (PARAM_LOOP_BLOCK_TILE_SIZE): Likewise. + (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Likewise. + (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP): Likewise. + (PARAM_MAX_ISL_OPERATIONS): Likewise. + (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): Likewise. + (PARAM_PROFILE_FUNC_INTERNAL_ID): Likewise. + (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise. + (PARAM_SLP_MAX_INSNS_IN_BB): Likewise. + (PARAM_IPA_CP_EVAL_THRESHOLD): Likewise. + (PARAM_IPA_CP_RECURSION_PENALTY): Likewise. + (PARAM_IPA_CP_SINGLE_CALL_PENALTY): Likewise. + (PARAM_IPA_CP_LOOP_HINT_BONUS): Likewise. + (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): Likewise. + (PARAM_TREE_REASSOC_WIDTH): Likewise. + (PARAM_HSA_GEN_DEBUG_STORES): Likewise. + (PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS): Likewise. + (PARAM_MAX_VRP_SWITCH_ASSERTIONS): Likewise. + +2018-08-09 Andreas Krebbel + + PR target/84332 + * config/s390/s390.c (s390_option_override_internal): Reduce the + stack-clash-protection-probe-interval param if it would be too big + for z900. + +2018-08-08 Andreas Schwab + + PR target/46179 + * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Don't define. + * config/m68k/m68k.c (handle_move_double): Don't call + m68k_final_prescan_insn. + (m68k_adjust_decorated_operand): Renamed from + m68k_final_prescan_insn, remove first and third operand and + simplify. + (print_operand): Call it. + (print_operand_address): Call it. + +2018-08-08 Nathan Sidwell + + * diagnostic.c (diagnostic_report_current_module): Use + linemap_included_from & linemap_included_from_linemap. + +2018-08-08 Hongbo Zhang + + * config/aarch64/aarch64-cores.def: Add phecda core. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Add phecda core. + +2018-08-08 Andreas Krebbel + + PR target/85295 + * config/s390/constraints.md ("NxHD0", "NxSD0"): New constraint + definitions. + * config/s390/s390.md ("movti"): Add more alternatives for + constant to GPR copies. + +2018-08-08 Andreas Krebbel + + * config/s390/s390.c: Fix whitespace damage throughout the file. + * config/s390/s390.h: Likewise. + * config/s390/tpf.h: Likewise. + +2018-08-08 Ilya Leoshkevich + + * config/s390/s390.c (s390_loadrelative_operand_p): + Remove TARGET_CPU_ZARCH usages. + (s390_rtx_costs): Likewise. + (s390_legitimate_constant_p): Likewise. + (s390_cannot_force_const_mem): Likewise. + (legitimate_reload_constant_p): Likewise. + (s390_preferred_reload_class): Likewise. + (legitimize_pic_address): Likewise. + (legitimize_tls_address): Likewise. + (s390_split_branches): Removed. + (s390_add_execute): Removed. + (s390_dump_pool): Remove TARGET_CPU_ZARCH usages. + (s390_mainpool_start): Likewise. + (s390_mainpool_finish): Likewise. + (s390_mainpool_cancel): Removed. + (s390_chunkify_start): Remove TARGET_CPU_ZARCH usages. + (s390_chunkify_cancel): Likewise. + (s390_return_addr_rtx): Likewise. + (s390_register_info): Remove split_branches_pending_p uages. + (s390_optimize_register_info): Likewise. + (s390_init_frame_layout): Remove TARGET_CPU_ZARCH and + split_branches_pending_p usages. + (s390_can_eliminate): Remove TARGET_CPU_ZARCH usages. + (s390_load_got): Likewise. + (s390_expand_split_stack_prologue): Likewise. + (output_asm_nops): Likewise. + (s390_function_profiler): Likewise. + (s390_emit_call): Likewise. + (s390_conditional_register_usage): Likewise. + (s390_optimize_prologue): Likewise. + (s390_reorg): Remove TARGET_CPU_ZARCH and + split_branches_pending_p usages. + (s390_option_override_internal): Remove TARGET_CPU_ZARCH + usages. + (s390_output_indirect_thunk_function): Likewise. + * config/s390/s390.h (TARGET_CPU_ZARCH): Removed. + (TARGET_CPU_ZARCH_P): Removed. + (struct machine_function): Remove split_branches_pending_p. + * config/s390/s390.md: Remove TARGET_CPU_ZARCH usages. + +2018-08-08 Ilya Leoshkevich + + * common/config/s390/s390-common.c (processor_flags_table): + Remove flags. + * config.gcc: Remove with_arch/with_tune support. + * config/s390/2064.md: Remove cpu attribute comparisons. + * config/s390/driver-native.c (s390_host_detect_local_cpu): + Remove MTN. + * config/s390/linux.h (ASM_SPEC): + Remove -march support. + * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): + Use a table to get an arch level. + * config/s390/s390-opts.h (enum processor_type): + Remove enum values. + * config/s390/s390.c + (processor_table): Remove entries, add arch_level values. + (s390_issue_rate): Remove cases. + (s390_option_override): Adjust + s390_option_override_internal() call. + (s390_option_override_internal): Remove deprecation warning. + (s390_valid_target_attribute_tree): Adjust + s390_option_override_internal() call. + * config/s390/s390.h (struct s390_processor): + Share with s390-c.c, add arch_level field. + * config/s390/s390.md: + Remove occurrences in cpu attribute. + * config/s390/s390.opt: Remove -march/-mtune support. + * config/s390/tpf.h (ASM_SPEC): Remove -march support. + * doc/invoke.texi: Remove deprecation warning. + +2018-08-08 Luis Machado + + * config/aarch64/aarch64.c (qdf24xx_vector_cost): New static + global. + (qdf24xx_tunings): Set vector cost structure to + qdf24xx_vector_cost. + + * config/aarch64/aarch64.c (qdf24xx_addrcost_table) + : Set to 3. + +2018-08-07 Richard Sandiford + + PR target/86838 + * config/aarch64/iterators.md (FRECP, frecp_suffix): Delete. + * config/aarch64/aarch64-simd.md + (aarch64_frecp): Fold FRECPE into... + (@aarch64_frecpe): ...here and the move FRECPX to... + (aarch64_frecpx): ...this new pattern. + * config/aarch64/aarch64-simd-builtins.def: Remove comment + about aarch64_frecp. + +2018-08-07 Martin Liska + + PR middle-end/83023 + * predict.c (expr_expected_value_1): Handle DECL_IS_MALLOC, + BUILT_IN_REALLOC and DECL_IS_OPERATOR_NEW. + * predict.def (PRED_MALLOC_NONNULL): New predictor. + * doc/extend.texi: Document that malloc attribute adds + hit to compiler. + +2018-08-06 John David Anglin + + PR target/86785 + * config/pa/pa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + +2018-08-06 Jeff Law + + * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Pass down + the vr_values instance to cprop_into_stmt. + (cprop_into_stmt): Pass vr_values instance down to cprop_operand. + (cprop_operand): Also query EVRP to determine if OP is a constant. + +2018-08-06 Nathan Sidwell + + * diagnostic.c (diagnostic_report_current_module): Reroll + included-at loop. Translate text. + +2018-08-06 David Malcolm + + * function-tests.c (selftest::test_expansion_to_rtl): Call + free_after_compilation. + +2018-08-06 Alan Hayward + + * config/aarch64/aarch64.md: Add clobber highs to tls_desc. + +2018-08-06 Andreas Krebbel + + * config/s390/s390.c (s390_loop_unroll_adjust): Prevent small + loops with memory block operations from getting unrolled. + +2018-08-06 Ulrich Weigand + + PR target/86807 + * config/spu/spu.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + +2018-08-06 Jeff Law + + * reload1.c (forget_old_reloads_1): Adjust CLOBBER_HIGH + assert. + +2018-08-06 Jozef Lawrynowicz + + PR target/86662 + * gcc/tree.c (build_common_tree_nodes): Initialize integer_types array + with all enabled __intN types. + + * gcc/testsuite/gcc.target/msp430/pr86662.c: New test. + +2018-08-06 Alan Hayward + + * alias.c (record_set): Check for clobber high. + * cfgexpand.c (expand_gimple_stmt): Likewise. + * combine-stack-adj.c (single_set_for_csa): Likewise. + * combine.c (find_single_use_1): Likewise. + (set_nonzero_bits_and_sign_copies): Likewise. + (get_combine_src_dest): Likewise. + (is_parallel_of_n_reg_sets): Likewise. + (try_combine): Likewise. + (record_dead_and_set_regs_1): Likewise. + (reg_dead_at_p_1): Likewise. + (reg_dead_at_p): Likewise. + * dce.c (deletable_insn_p): Likewise. + (mark_nonreg_stores_1): Likewise. + (mark_nonreg_stores_2): Likewise. + * df-scan.c (df_find_hard_reg_defs): Likewise. + (df_uses_record): Likewise. + (df_get_call_refs): Likewise. + * dwarf2out.c (mem_loc_descriptor): Likewise. + * haifa-sched.c (haifa_classify_rtx): Likewise. + * ira-build.c (create_insn_allocnos): Likewise. + * ira-costs.c (scan_one_insn): Likewise. + * ira.c (equiv_init_movable_p): Likewise. + (rtx_moveable_p): Likewise. + (interesting_dest_for_shprep): Likewise. + * jump.c (mark_jump_label_1): Likewise. + * postreload-gcse.c (record_opr_changes): Likewise. + * postreload.c (reload_cse_simplify): Likewise. + (struct reg_use): Add source expr. + (reload_combine): Check for clobber high. + (reload_combine_note_use): Likewise. + (reload_cse_move2add): Likewise. + (move2add_note_store): Likewise. + * print-rtl.c (print_pattern): Likewise. + * recog.c (decode_asm_operands): Likewise. + (store_data_bypass_p): Likewise. + (if_test_bypass_p): Likewise. + * regcprop.c (kill_clobbered_value): Likewise. + (kill_set_value): Likewise. + * reginfo.c (reg_scan_mark_refs): Likewise. + * reload1.c (maybe_fix_stack_asms): Likewise. + (eliminate_regs_1): Likewise. + (elimination_effects): Likewise. + (mark_not_eliminable): Likewise. + (scan_paradoxical_subregs): Likewise. + (forget_old_reloads_1): Likewise. + * reorg.c (find_end_label): Likewise. + (try_merge_delay_insns): Likewise. + (redundant_insn): Likewise. + (own_thread_p): Likewise. + (fill_simple_delay_slots): Likewise. + (fill_slots_from_thread): Likewise. + (dbr_schedule): Likewise. + * resource.c (update_live_status): Likewise. + (mark_referenced_resources): Likewise. + (mark_set_resources): Likewise. + * rtl.c (copy_rtx): Likewise. + * rtlanal.c (reg_referenced_p): Likewise. + (single_set_2): Likewise. + (noop_move_p): Likewise. + (note_stores): Likewise. + * sched-deps.c (sched_analyze_reg): Likewise. + (sched_analyze_insn): Likewise. + +2018-08-06 Alan Hayward + + * cse.c (invalidate_reg): New function extracted from... + (invalidate): ...here. + (canonicalize_insn): Check for clobber high. + (invalidate_from_clobbers): invalidate clobber highs. + (invalidate_from_sets_and_clobbers): Likewise. + (count_reg_usage): Check for clobber high. + (insn_live_p): Likewise. + * cselib.c (cselib_expand_value_rtx_1):Likewise. + (cselib_invalidate_regno): Check for clobber in setter. + (cselib_invalidate_rtx): Pass through setter. + (cselib_invalidate_rtx_note_stores): + (cselib_process_insn): Check for clobber high. + * cselib.h (cselib_invalidate_rtx): Add operand. + +2018-08-06 Alan Hayward + + * lra-eliminations.c (lra_eliminate_regs_1): Check for clobber high. + (mark_not_eliminable): Likewise. + * lra-int.h (struct lra_insn_reg): Add clobber high marker. + * lra-lives.c (process_bb_lives): Check for clobber high. + * lra.c (new_insn_reg): Remember clobber highs. + (collect_non_operand_hard_regs): Check for clobber high. + (lra_set_insn_recog_data): Likewise. + (add_regs_to_insn_regno_info): Likewise. + (lra_update_insn_regno_info): Likewise. + +2018-08-06 Alan Hayward + + * rtl.h (reg_is_clobbered_by_clobber_high): Add declarations. + * rtlanal.c (reg_is_clobbered_by_clobber_high): Add function. + +2018-08-06 Alan Hayward + + * emit-rtl.c (verify_rtx_sharing): Check for CLOBBER_HIGH. + (copy_insn_1): Likewise. + (gen_hard_reg_clobber_high): New gen function. + * genconfig.c (walk_insn_part): Check for CLOBBER_HIGH. + * genemit.c (gen_exp): Likewise. + (gen_emit_seq): Pass through info. + (gen_insn): Check for CLOBBER_HIGH. + (gen_expand): Pass through info. + (gen_split): Likewise. + (output_add_clobbers): Likewise. + * genrecog.c (validate_pattern): Check for CLOBBER_HIGH. + (remove_clobbers): Likewise. + * rtl.h (gen_hard_reg_clobber_high): New declaration. + +2018-08-06 Alan Hayward + + * doc/rtl.texi (clobber_high): Add. + (parallel): Add in clobber high + * rtl.c (rtl_check_failed_code3): Add function. + * rtl.def (CLOBBER_HIGH): Add expression. + * rtl.h (RTL_CHECKC3): Add macro. + (rtl_check_failed_code3): Add declaration. + (XC3EXP): Add macro. + +2018-08-05 H.J. Lu + + PR target/86386 + * config/i386/i386.c (ix86_finalize_stack_frame_flags): Set + cfun->machine->max_used_stack_alignment if needed. + +2018-08-04 Martin Sebor + + PR tree-optimization/86571 + * gimple-ssa-sprintf.c (format_floating): Extend upper bound of + NaN output to 4. + +2018-08-03 Sandra Loosemore + + PR target/86799 + * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define. + +2018-08-03 Jeff Law + + PR target/86795 + * config/mn10300/mn10300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + +2018-08-03 David Malcolm + + * doc/gcov.texi (-x): Remove duplicate "to". + * doc/invoke.texi (-Wnoexcept-type): Remove duplicate "calls". + (-Wif-not-aligned): Remove duplicate "is". + (-flto): Remove duplicate "the". + (MicroBlaze Options): In examples of "-mcpu=cpu-type", remove + duplicate "v5.00.b". + (MSP430 Options): Remove duplicate "and" from the description + of "-mgprel-sec=regexp". + (x86 Options): Remove duplicate copies of "vmldLog102" and + vmlsLog104 from description of "-mveclibabi=type". + +2018-08-03 Richard Sandiford + + * internal-fn.h (first_commutative_argument): Declare. + * internal-fn.c (first_commutative_argument): New function. + * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove extra + restrictions for pattern statements. Use first_commutative_argument + to look for commutative operands in calls to internal functions. + +2018-08-03 Aldy Hernandez + + * Makefile.in (wide-int-range.o): New. + * tree-vrp.c: Move all the wide_int_* functions to... + * wide-int-range.cc: ...here. + * tree-vrp.h: Move all the wide_int_* prototypes to... + * wide-int-range.h: ...here. + +2018-08-03 Tom de Vries + + * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): Return + UI_NONE. + * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Remove define. + * except.c (output_function_exception_table): Do early exit if + targetm_common.except_unwind_info (&global_options) == UI_NONE. + +2018-08-03 Martin Liska + + * predict.c (dump_prediction): Change to 2 digits + in fraction part. + +2018-08-03 Siddhesh Poyarekar + + * config/aarch64/falkor.md (falkor_am_1_vxvy_vxvy): Move + neon_dup_q to... + (falkor_am_1_gtov_gtov): ... a new insn reservation. + +2018-07-19 Ilya Leoshkevich + + * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Replace > with >=. + * df-problems.c (df_remove_dead_eq_notes): Replace > with >=. + * dwarf2out.c (mem_loc_descriptor): Replace > with >=. + * lra-constraints.c (spill_hard_reg_in_range): Replace <= with <. + * lra-remat.c (call_used_input_regno_present_p): Replace <= with <. + +2018-08-02 David Malcolm + + * diagnostic-show-locus.c (diagnostic_show_locus): Use + pp_take_prefix when saving the existing prefix. + * diagnostic.c (diagnostic_append_note): Likewise. + * langhooks.c (lhd_print_error_function): Likewise. + * pretty-print.c (pp_set_prefix): Drop the "const" from "prefix" + param's type. Free the existing prefix. + (pp_take_prefix): New function. + (pretty_printer::pretty_printer): Drop the prefix parameter. + Rename the length parameter to match the comment. + (pretty_printer::~pretty_printer): Free the prefix. + * pretty-print.h (pretty_printer::pretty_printer): Drop the prefix + parameter. + (struct pretty_printer): Drop the "const" from "prefix" field's + type and clarify memory management. + (pp_set_prefix): Drop the "const" from the 2nd param. + (pp_take_prefix): New decl. + +2018-08-02 Aaron Sawdey + + * config/rs6000/rs6000-string.c (select_block_compare_mode): Move test + for word_mode_ok here instead of passing as argument. + (expand_block_compare): Change select_block_compare_mode() call. + (expand_strncmp_gpr_sequence): New function. + (expand_strn_compare): Make use of expand_strncmp_gpr_sequence. + +2018-08-02 Jeff Law + + PR target/86790 + * config/m68k/m68k.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86784 + * config/h8300/h8300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + +2018-08-02 Tom de Vries + + PR target/86660 + * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): New + function. Return UI_TARGET unconditionally. + (TARGET_EXCEPT_UNWIND_INFO): Redefine to nvptx_except_unwind_info. + * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Emit commented out '.byte'. + +2018-08-02 Richard Sandiford + + * genemit.c (print_overload_test): Fix typo. + +2018-08-02 Richard Biener + + PR tree-optimization/86816 + * tree-ssa-tail-merge.c (tail_merge_valueize): New function + which checks for value availability before querying it. + (gvn_uses_equal): Use it. + (same_succ_hash): Likewise. + (gimple_equal_p): Likewise. + +2018-08-02 Nick Clifton + + PR target/86813 + * config/stormy16/stormy16.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86810 + * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86810 + * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86803 + * config/rx/rx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86797 + * config/msp430/msp430.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86791 + * config/mcore/mcore.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86789 + * config/m32r/m32r.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86787 + * config/iq2000/iq2000.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + + PR target/86782 + * config/frv/frv.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to + speculation_safe_value_not_needed. + + PR target/86781 + * config/fr30/fr30.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define + to speculation_safe_value_not_needed. + +2018-08-02 Richard Sandiford + + * doc/md.texi: Expand the documentation of instruction names + to mention port-local uses. Document '@' in pattern names. + * read-md.h (overloaded_instance, overloaded_name): New structs. + (mapping): Declare. + (md_reader::handle_overloaded_name): New member function. + (md_reader::get_overloads): Likewise. + (md_reader::m_first_overload): New member variable. + (md_reader::m_next_overload_ptr): Likewise. + (md_reader::m_overloads_htab): Likewise. + * read-md.c (md_reader::md_reader): Initialize m_first_overload, + m_next_overload_ptr and m_overloads_htab. + * read-rtl.c (iterator_group): Add "type" and "get_c_token" fields. + (get_mode_token, get_code_token, get_int_token): New functions. + (map_attr_string): Add an optional argument that passes back + the associated iterator. + (overloaded_name_hash, overloaded_name_eq_p, named_rtx_p): + (md_reader::handle_overloaded_name, add_overload_instance): New + functions. + (apply_iterators): Handle '@' names. Report an error if '@' + is used without iterators. + (initialize_iterators): Initialize the new iterator_group fields. + * genopinit.c (handle_overloaded_code_for) + (handle_overloaded_gen): New functions. + (main): Use them to print declarations of maybe_code_for_* and + maybe_gen_* functions, and inline definitions of code_for_* and gen_*. + * genemit.c (print_overload_arguments, print_overload_test) + (handle_overloaded_code_for, handle_overloaded_gen): New functions. + (main): Use it to print definitions of maybe_code_for_* and + maybe_gen_* functions. + * config/aarch64/aarch64.c (aarch64_split_128bit_move): Use + gen_aarch64_mov{low,high}_di and gen_aarch64_movdi_{low,high} + instead of explicit mode checks. + (aarch64_split_simd_combine): Likewise gen_aarch64_simd_combine. + (aarch64_split_simd_move): Likewise gen_aarch64_split_simd_mov. + (aarch64_emit_load_exclusive): Likewise gen_aarch64_load_exclusive. + (aarch64_emit_store_exclusive): Likewise gen_aarch64_store_exclusive. + (aarch64_expand_compare_and_swap): Likewise + gen_aarch64_compare_and_swap and gen_aarch64_compare_and_swap_lse + (aarch64_gen_atomic_cas): Likewise gen_aarch64_atomic_cas. + (aarch64_emit_atomic_swap): Likewise gen_aarch64_atomic_swp. + (aarch64_constant_pool_reload_icode): Delete. + (aarch64_secondary_reload): Use code_for_aarch64_reload_movcp + instead of aarch64_constant_pool_reload_icode. Use + code_for_aarch64_reload_mov instead of explicit mode checks. + (rsqrte_type, get_rsqrte_type, rsqrts_type, get_rsqrts_type): Delete. + (aarch64_emit_approx_sqrt): Use gen_aarch64_rsqrte instead of + get_rsqrte_type and gen_aarch64_rsqrts instead of gen_rqrts_type. + (recpe_type, get_recpe_type, recps_type, get_recps_type): Delete. + (aarch64_emit_approx_div): Use gen_aarch64_frecpe instead of + get_recpe_type and gen_aarch64_frecps instead of get_recps_type. + (aarch64_atomic_load_op_code): Delete. + (aarch64_emit_atomic_load_op): Likewise. + (aarch64_gen_atomic_ldop): Use UNSPECV_ATOMIC_* instead of + aarch64_atomic_load_op_code. Use gen_aarch64_atomic_load + instead of aarch64_emit_atomic_load_op. + * config/aarch64/aarch64.md (aarch64_reload_movcp) + (aarch64_reload_movcp, aarch64_reload_mov) + (aarch64_movdi_low, aarch64_movdi_high) + (aarch64_movhigh_di, aarch64_movlow_di): Add a '@' + character before the pattern name. + * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov) + (aarch64_rsqrte, aarch64_rsqrts) + (aarch64_simd_combine, aarch64_frecpe) + (aarch64_frecps): Likewise. + * config/aarch64/atomics.md (atomic_compare_and_swap) + (aarch64_compare_and_swap, aarch64_compare_and_swap_lse) + (aarch64_load_exclusive, aarch64_store_exclusive) + (aarch64_atomic_swp, aarch64_atomic_cas) + (aarch64_atomic_load): Likewise. + +2018-08-02 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_float_const_representable_p): + Allow HFmode constants if TARGET_FP_F16INST. + +2018-08-02 Jackson Woodruff + + PR target/86014 + * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): + No longer check last store for clobber of address register. + +2018-08-02 Martin Liska + + PR gcov-profile/86817 + * gcov.c (process_all_functions): New function. + (main): Call it. + (process_file): Move functions processing to + process_all_functions. + +2018-08-02 David Malcolm + + * dumpfile.c (dump_user_location_t::dump_user_location_t): Add + "const" to the "gimple *" and "rtx_insn *" parameters. + * dumpfile.h (dump_user_location_t::dump_user_location_t): + Likewise. + (dump_location_t::dump_location_t): Likewise. + +2018-08-01 Martin Sebor + + PR tree-optimization/86650 + * gimple-pretty-print.c (percent_G_format): Accept a "gimple *" + rather than a "gcall *". Directly pass the data of interest + to percent_K_format, rather than building a temporary CALL_EXPR + to hold it. + * gimple-fold.c (gimple_fold_builtin_strncpy): Adjust. + (gimple_fold_builtin_strncat): Adjust. + * gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Replace + gcall* argument with gimple*. + * gimple-ssa-warn-restrict.c (check_call): Same. + (wrestrict_dom_walker::before_dom_children): Same. + (builtin_access::builtin_access): Same. + (check_bounds_or_overlap): Same + (maybe_diag_overlap): Same. + (maybe_diag_offset_bounds): Same. + * tree-diagnostic.c (default_tree_printer): Move usage of + EXPR_LOCATION (t) and TREE_BLOCK (t) from within percent_K_format + to this callsite. + * tree-pretty-print.c (percent_K_format): Add argument. + * tree-pretty-print.h: Add argument. + * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Adjust. + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Adjust. + (maybe_diag_stxncpy_trunc): Same. + (handle_builtin_stxncpy): Same. + (handle_builtin_strcat): Same. + +2018-08-01 Richard Sandiford + + * match.pd: Optimise pointer range checks. + +2018-08-01 Richard Sandiford + + PR tree-optimization/86758 + * tree-vect-stmts.c (vectorizable_simd_clone_call): Don't try + to remove pattern statements. + +2018-08-01 Richard Sandiford + + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Use the + result of dfs_enumerate_from when constructing stmt_vec_infos, + instead of additionally calling get_loop_body. + +2018-08-01 Richard Sandiford + + * tree-vectorizer.h (vect_create_data_ref_ptr): Remove inv_p + parameter. + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise. + When creating an iv, assert that the step is not known to be zero. + (vect_setup_realignment): Update call accordingly. + * tree-vect-stmts.c (vectorizable_store): Likewise. + (vectorizable_load): Likewise. Handle VMAT_INVARIANT separately. + +2018-08-01 Richard Sandiford + + * tree-vectorizer.h (vect_stmt_to_vectorize): New function. + * tree-vect-loop.c (vect_update_vf_for_slp): Use it. + (vectorizable_reduction): Likewise. + * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. + (vect_detect_hybrid_slp_stmts): Likewise. + * tree-vect-stmts.c (vect_is_simple_use): Likewise. + +2018-08-01 Aldy Hernandez + + * tree-vrp (zero_nonzero_bits_from_bounds): Rename to... + (wide_int_set_zero_nonzero_bits): ...this. + (zero_nonzero_bits_from_vr): Rename to... + (vrp_set_zero_nonzero_bits): ...this. + (extract_range_from_multiplicative_op_1): Abstract wide int + code... + (wide_int_range_multiplicative_op): ...here. + (extract_range_from_binary_expr_1): Extract wide int binary + operations into their own functions. + (wide_int_range_lshift): New. + (wide_int_range_can_optimize_bit_op): New. + (wide_int_range_shift_undefined_p): New. + (wide_int_range_bit_xor): New. + (wide_int_range_bit_ior): New. + (wide_int_range_bit_and): New. + (wide_int_range_trunc_mod): New. + (extract_range_into_wide_ints): New. + (vrp_shift_undefined_p): New. + (extract_range_from_multiplicative_op): New. + (vrp_can_optimize_bit_op): New. + * tree-vrp.h (value_range::dump): New. + (wide_int_range_multiplicative_op): New. + (wide_int_range_lshift):New. + (wide_int_range_shift_undefined_p): New. + (wide_int_range_bit_xor): New. + (wide_int_range_bit_ior): New. + (wide_int_range_bit_and): New. + (wide_int_range_trunc_mod): New. + (zero_nonzero_bits_from_bounds): Rename to... + (wide_int_set_zero_nonzero_bits): ...this. + (zero_nonzero_bits_from_vr): Rename to... + (vrp_set_zero_nonzero_bits): ...this. + (range_easy_mask_min_max): Rename to... + (wide_int_range_can_optimize_bit_op): this. + * vr-values.c (simplify_bit_ops_using_ranges): Rename + zero_nonzero_bits_from_vr into vrp_set_zero_nonzero_bits. + +2018-08-01 Richard Sandiford + + * tree-vectorizer.h (vect_orig_stmt): New function. + * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Use it. + * tree-vect-loop.c (vect_model_reduction_cost): Likewise. + (vect_create_epilog_for_reduction): Likewise. + (vectorizable_live_operation): Likewise. + * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise. + (vect_detect_hybrid_slp_stmts, vect_schedule_slp): Likewise. + * tree-vect-stmts.c (vectorizable_call): Likewise. + (vectorizable_simd_clone_call, vect_remove_stores): Likewise. + +2018-08-01 Richard Sandiford + + * tree-vectorizer.h (vect_transform_stmt): Remove grouped_store + argument. + * tree-vect-stmts.c (vect_transform_stmt): Likewise. + * tree-vect-loop.c (vect_transform_loop_stmt): Update call accordingly. + (vect_transform_loop): Likewise. + * tree-vect-slp.c (vect_schedule_slp_instance): Likewise. + +2018-08-01 Richard Sandiford + + * tree-vectorizer.h (vect_schedule_slp): Return void. + * tree-vect-slp.c (vect_schedule_slp_instance): Likewise. + (vect_schedule_slp): Likewise. + +2018-08-01 Richard Sandiford + + * tree-vect-loop.c (vect_transform_loop_stmt): Remove slp_scheduled + argument. + (vect_transform_loop): Update calls accordingly. Schedule SLP + instances before the main loop, if any exist. + +2018-08-01 Richard Sandiford + + PR tree-optimization/86749 + * tree-vect-patterns.c (vect_determine_min_output_precision_1): + If the lhs is used in a COND_EXPR, check that it is being used + as the "then" or "else" value. + +2018-08-01 Tom de Vries + + PR target/86800 + * config/nvptx/nvptx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to + speculation_safe_value_not_needed. + +2018-08-01 Richard Biener + + * tree-ssa-sccvn.c (visit_phi): Compare invariant addresses + as base and offset. + +2018-08-01 Martin Liska + + * value-prof.c (gimple_divmod_fixed_value_transform): Unify + format how successful transformation is dumped. + (gimple_mod_pow2_value_transform): Likewise. + (gimple_mod_subtract_transform): Likewise. + (gimple_stringops_transform): Likewise. + +2018-08-01 Martin Liska + + PR value-prof/35543 + * value-prof.c (interesting_stringop_to_profile_p): + Simplify the code and add BUILT_IN_MEMMOVE. + (gimple_stringops_transform): Likewise. + +2018-08-01 Sam Tebbs + + * config/aarch64/aarch64-simd.md + (*aarch64_get_lane_zero_extendsi): Rename to... + (*aarch64_get_lane_zero_extend): ... This and + use GPI iterator instead of SI mode. + +2018-08-01 Richard Earnshaw + + * config/rs6000/rs6000.md (speculation_barrier): Renamed from + rs6000_speculation_barrier. + * config/rs6000/rs6000.c (rs6000_expand_builtin): Adjust for + new barrier pattern name. + +2018-08-01 Richard Earnshaw + + * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER. + (speculation_barrier): New insn. + +2018-08-01 Richard Biener + + PR bootstrap/86724 + * graphite.h: Include isl/id.h and isl/space.h to allow build + with ISL 0.20. + +2018-08-01 Jan Willem Jagersma + + PR target/86651 + * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO + mode for COFF targets. + * defaults.h (TARGET_COFF): Define. + * config/i386/djgpp.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END, + TARGET_COFF): Define. + (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): Declare. + * config/i386/djgpp.c (saved_debug_info_level): New static variable. + (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): New functions. + +2018-07-31 Alexandre Oliva + + * gimple-streamer-in.c (input_bb): Restore BB discriminator. + * gimple-streamer-out.c (output_bb): Save it. + * lto-streamer-in.c (input_struct_function_base): Restore + instance discriminator if available. Create map on demand. + * lto-streamer-out.c (output_struct_function_base): Save it if + available. + * final.c (decl_to_instance_map): Document LTO strategy. + +2018-07-31 Alexandre Oliva + Olivier Hainque + + * debug.h (decl_to_instance_map_t): New type. + (decl_to_instance_map): Declare. + (maybe_create_decl_to_instance_map): New inline function. + * final.c (bb_discriminator, last_bb_discriminator): New statics, + to track basic block discriminators. + (final_start_function_1): Initialize them. + (final_scan_insn_1): On NOTE_INSN_BASIC_BLOCK, track + bb_discriminator. + (decl_to_instance_map): New variable. + (map_decl_to_instance, maybe_set_discriminator): New functions. + (notice_source_line): Set discriminator. + +2018-07-31 Ian Lance Taylor + + * targhooks.c (default_have_speculation_safe_value): Add + ATTRIBUTE_UNUSED. + +2018-07-31 David Malcolm + + * dump-context.h: Include "pretty-print.h". + (dump_context::refresh_dumps_are_enabled): New decl. + (dump_context::emit_item): New decl. + (class dump_context): Add fields "m_test_pp" and + "m_test_pp_flags". + (temp_dump_context::temp_dump_context): Add param "test_pp_flags". + (temp_dump_context::get_dumped_text): New decl. + (class temp_dump_context): Add field "m_pp". + * dumpfile.c (refresh_dumps_are_enabled): Convert to... + (dump_context::refresh_dumps_are_enabled): ...and add a test for + m_test_pp. + (set_dump_file): Update for above change. + (set_alt_dump_file): Likewise. + (dump_loc): New overload, taking a pretty_printer *. + (dump_context::dump_loc): Call end_any_optinfo. Dump the location + to any test pretty-printer. + (make_item_for_dump_gimple_stmt): New function, adapted from + optinfo::add_gimple_stmt. + (dump_context::dump_gimple_stmt): Call it, and use the result, + eliminating the direct usage of dump_file and alt_dump_file in + favor of indirectly using them via emit_item. + (make_item_for_dump_gimple_expr): New function, adapted from + optinfo::add_gimple_expr. + (dump_context::dump_gimple_expr): Call it, and use the result, + eliminating the direct usage of dump_file and alt_dump_file in + favor of indirectly using them via emit_item. + (make_item_for_dump_generic_expr): New function, adapted from + optinfo::add_tree. + (dump_context::dump_generic_expr): Call it, and use the result, + eliminating the direct usage of dump_file and alt_dump_file in + favor of indirectly using them via emit_item. + (make_item_for_dump_printf_va): New function, adapted from + optinfo::add_printf_va. + (make_item_for_dump_printf): New function. + (dump_context::dump_printf_va): Call make_item_for_dump_printf_va, + and use the result, eliminating the direct usage of dump_file and + alt_dump_file in favor of indirectly using them via emit_item. + (make_item_for_dump_dec): New function. + (dump_context::dump_dec): Call it, and use the result, + eliminating the direct usage of dump_file and alt_dump_file in + favor of indirectly using them via emit_item. + (make_item_for_dump_symtab_node): New function, adapted from + optinfo::add_symtab_node. + (dump_context::dump_symtab_node): Call it, and use the result, + eliminating the direct usage of dump_file and alt_dump_file in + favor of indirectly using them via emit_item. + (dump_context::begin_scope): Reimplement, avoiding direct usage + of dump_file and alt_dump_file in favor of indirectly using them + via emit_item. + (dump_context::emit_item): New member function. + (temp_dump_context::temp_dump_context): Add param "test_pp_flags". + Set up test pretty-printer on the underlying context. Call + refresh_dumps_are_enabled. + (temp_dump_context::~temp_dump_context): Call + refresh_dumps_are_enabled. + (temp_dump_context::get_dumped_text): New member function. + (selftest::verify_dumped_text): New function. + (ASSERT_DUMPED_TEXT_EQ): New macro. + (selftest::test_capture_of_dump_calls): Run all tests twice, with + and then without optinfo enabled. Add uses of + ASSERT_DUMPED_TEXT_EQ to all tests. Add test of nested scopes. + * dumpfile.h: Update comment for the dump_* API. + * optinfo-emit-json.cc + (selftest::test_building_json_from_dump_calls): Update for new + param for temp_dump_context ctor. + * optinfo.cc (optinfo_item::optinfo_item): Remove "owned" param + and "m_owned" field. + (optinfo_item::~optinfo_item): Likewise. + (optinfo::add_item): New member function. + (optinfo::emit): Update comment. + (optinfo::add_string): Delete. + (optinfo::add_printf): Delete. + (optinfo::add_printf_va): Delete. + (optinfo::add_gimple_stmt): Delete. + (optinfo::add_gimple_expr): Delete. + (optinfo::add_tree): Delete. + (optinfo::add_symtab_node): Delete. + (optinfo::add_dec): Delete. + * optinfo.h (class dump_context): New forward decl. + (optinfo::add_item): New decl. + (optinfo::add_string): Delete. + (optinfo::add_printf): Delete. + (optinfo::add_printf_va): Delete. + (optinfo::add_gimple_stmt): Delete. + (optinfo::add_gimple_expr): Delete. + (optinfo::add_tree): Delete. + (optinfo::add_symtab_node): Delete. + (optinfo::add_dec): Delete. + (optinfo::add_poly_int): Delete. + (optinfo_item::optinfo_item): Remove "owned" param. + (class optinfo_item): Remove field "m_owned". + +2018-07-31 Jozef Lawrynowicz + + PR middle-end/86705 + * gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when + MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the + requested variable alignment. + (expand_one_ssa_partition): Likewise. + (expand_one_var): Likewise. + +2018-07-31 Richard Earnshaw + + * config/pdp11/pdp11.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine + to speculation_safe_value_not_needed. + +2018-07-31 Richard Earnshaw + + * targhooks.h (speculation_safe_value_not_needed): New prototype. + * targhooks.c (speculation_safe_value_not_needed): New function. + * target.def (have_speculation_safe_value): Update documentation. + * doc/tm.texi: Regenerated. + +2018-07-31 Richard Earnshaw + + * config/aarch64/iterators.md (ALLI_TI): New iterator. + * config/aarch64/aarch64.md (despeculate_copy): New + expand. + (despeculate_copy_insn): New insn. + (despeculate_copyti_insn): New insn. + (despeculate_simple): New insn + (despeculate_simpleti): New insn. + * config/aarch64/aarch64.c (aarch64_speculation_safe_value): New + function. + (TARGET_SPECULATION_SAFE_VALUE): Redefine to + aarch64_speculation_safe_value. + (aarch64_print_operand): Handle const0_rtx in modifier 'H'. + +2018-07-31 Richard Earnshaw + + * config/aarch64/aarch64-speculation.cc: New file. + * config/aarch64/aarch64-passes.def (pass_track_speculation): Add + before pass_reorder_blocks. + * config/aarch64/aarch64-protos.h (make_pass_track_speculation): Add + prototype. + * config/aarch64/aarch64.c (aarch64_conditional_register_usage): Fix + X14 and X15 when tracking speculation. + * config/aarch64/aarch64.md (register name constants): Add + SPECULATION_TRACKER_REGNUM and SPECULATION_SCRATCH_REGNUM. + (unspec): Add UNSPEC_SPECULATION_TRACKER. + (speculation_barrier): New insn attribute. + (cmp): Allow SP in comparisons. + (speculation_tracker): New insn. + (speculation_barrier): Add speculation_barrier attribute. + * config/aarch64/t-aarch64: Add make rule for aarch64-speculation.o. + * config.gcc (aarch64*-*-*): Add aarch64-speculation.o to extra_objs. + * doc/invoke.texi (AArch64 Options): Document -mtrack-speculation. + +2018-07-31 Richard Earnshaw + + * config/aarch64/aarch64.md (cb1): Disable when + aarch64_track_speculation is true. + (tb1): Likewise. + * config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not + generate CB[N]Z when tracking speculation. + (aarch64_split_compare_and_swap): Likewise. + (aarch64_split_atomic_op): Likewise. + +2018-07-31 Richard Earnshaw + + * config/aarch64/aarch64.opt (mtrack-speculation): New target option. + +2018-07-31 Richard Earnshaw + + * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER. + (speculation_barrier): New insn. + +2018-07-31 Richard Earnshaw + + * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER. + * config/arm/arm.md (speculation_barrier): New expand. + (speculation_barrier_insn): New pattern. + +2018-07-31 Richard Earnshaw + + * builtin-types.def (BT_FN_PTR_PTR_VAR): New function type. + (BT_FN_I1_I1_VAR, BT_FN_I2_I2_VAR, BT_FN_I4_I4_VAR): Likewise. + (BT_FN_I8_I8_VAR, BT_FN_I16_I16_VAR): Likewise. + * builtin-attrs.def (ATTR_NOVOPS_NOTHROW_LEAF_LIST): New attribute + list. + * builtins.def (BUILT_IN_SPECULATION_SAFE_VALUE_N): New builtin. + (BUILT_IN_SPECULATION_SAFE_VALUE_PTR): New internal builtin. + (BUILT_IN_SPECULATION_SAFE_VALUE_1): Likewise. + (BUILT_IN_SPECULATION_SAFE_VALUE_2): Likewise. + (BUILT_IN_SPECULATION_SAFE_VALUE_4): Likewise. + (BUILT_IN_SPECULATION_SAFE_VALUE_8): Likewise. + (BUILT_IN_SPECULATION_SAFE_VALUE_16): Likewise. + * builtins.c (expand_speculation_safe_value): New function. + (expand_builtin): Call it. + * doc/cpp.texi: Document predefine __HAVE_SPECULATION_SAFE_VALUE. + * doc/extend.texi: Document __builtin_speculation_safe_value. + * doc/md.texi: Document "speculation_barrier" pattern. + * doc/tm.texi.in: Pull in TARGET_SPECULATION_SAFE_VALUE and + TARGET_HAVE_SPECULATION_SAFE_VALUE. + * doc/tm.texi: Regenerated. + * target.def (have_speculation_safe_value, speculation_safe_value): New + hooks. + * targhooks.c (default_have_speculation_safe_value): New function. + (default_speculation_safe_value): New function. + * targhooks.h (default_have_speculation_safe_value): Add prototype. + (default_speculation_safe_value): Add prototype. + +2018-07-31 David Malcolm + + * dump-context.h (dump_context::dump_loc): New decl. + * dumpfile.c (dump_context::dump_loc): New member function. + (dump_context::dump_gimple_stmt_loc): Reimplement using dump_loc + and dump_gimple_stmt. + (dump_context::dump_gimple_expr_loc): Likewise, using + dump_gimple_expr. + (dump_context::dump_generic_expr_loc): Likewise, using + dump_generic_expr. + (dump_context::dump_printf_loc_va): Likewise, using + dump_printf_va. + (dump_context::begin_scope): Explicitly using the global function + "dump_loc", rather than the member function. + +2018-07-31 Martin Sebor + + PR tree-optimization/86741 + * tree-vrp.c (vrp_prop::check_mem_ref): Avoid incomplete types. + +2018-07-31 Andreas Krebbel + + * config/s390/s390.c (s390_expand_setmem): Make the unrolling to + depend on whether prefetch instructions will be emitted or not. + Use TARGET_SETMEM_PFD for checking whether prefetch instructions + will be emitted or not. + * config/s390/s390.h (TARGET_SETMEM_PREFETCH_DISTANCE) + (TARGET_SETMEM_PFD): New macros. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (stmt_vec_info): Turn back into a typedef. + (NULL_STMT_VEC_INFO): Delete. + (stmt_vec_info::operator*): Likewise. + (stmt_vec_info::operator gimple *): Likewise. + * tree-vect-loop.c (vectorizable_reduction): Use NULL instead + of NULL_STMT_VEC_INFO. + * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. + (vect_reassociating_reduction_p): Likewise. + * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise. + (vectorizable_store): Likewise. + * tree-vectorizer.c (vec_info::set_vinfo_for_stmt): Likewise. + (vec_info::free_stmt_vec_infos): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vect_stmt_in_region_p): Delete. + * tree-vectorizer.c (vect_stmt_in_region_p): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::new_vinfo_for_stmt) + (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos) + (vec_info::free_stmt_vec_info): New private member functions. + (set_stmt_vec_info_vec, free_stmt_vec_infos, vinfo_for_stmt) + (set_vinfo_for_stmt, new_stmt_vec_info, free_stmt_vec_info): Delete. + * tree-parloops.c (gather_scalar_reductions): Remove calls to + set_stmt_vec_info_vec and free_stmt_vec_infos. + * tree-vect-loop.c (_loop_vec_info): Remove call to + set_stmt_vec_info_vec. + * tree-vect-stmts.c (new_stmt_vec_info, set_stmt_vec_info_vec) + (free_stmt_vec_infos, free_stmt_vec_info): Delete in favor of... + * tree-vectorizer.c (vec_info::new_stmt_vec_info) + (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos) + (vec_info::free_stmt_vec_info): ...these new functions. Remove + assignments in {vec_info::,}new_stmt_vec_info that are redundant + with the clearing in the xcalloc. + (stmt_vec_info_vec): Delete. + (vec_info::vec_info): Don't call set_stmt_vec_info_vec. + (vectorize_loops): Likewise. + (vec_info::~vec_info): Remove argument from call to + free_stmt_vec_infos. + (vec_info::add_stmt): Remove vinfo argument from call to + new_stmt_vec_info. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (free_stmt_vec_info): Take a stmt_vec_info + rather than a gimple stmt. + * tree-vect-stmts.c (free_stmt_vec_info): Likewise. Don't free + information for pattern statements when passed the original + statement; instead wait to be passed the pattern statement itself. + Don't call set_vinfo_for_stmt here. + (free_stmt_vec_infos): Update call to free_stmt_vec_info. + * tree-vect-loop.c (_loop_vec_info::~loop_vec_info): Don't free + stmt_vec_infos here. + * tree-vect-slp.c (_bb_vec_info::~bb_vec_info): Likewise. + * tree-vectorizer.c (vec_info::remove_stmt): Nullify the statement's + stmt_vec_infos entry. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::replace_stmt): Declare. + * tree-vectorizer.c (vec_info::replace_stmt): New function. + * tree-vect-slp.c (vect_remove_slp_scalar_calls): Use it. + * tree-vect-stmts.c (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::remove_stmt): Declare. + * tree-vectorizer.c (vec_info::remove_stmt): New function. + * tree-vect-loop-manip.c (vect_set_loop_condition): Use it. + * tree-vect-loop.c (vect_transform_loop): Likewise. + * tree-vect-slp.c (vect_schedule_slp): Likewise. + * tree-vect-stmts.c (vect_remove_stores): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::lookup_dr): New member function. + (vect_dr_stmt): Delete. + * tree-vectorizer.c (vec_info::lookup_dr): New function. + * tree-vect-loop-manip.c (vect_update_inits_of_drs): Use it instead + of DR_VECT_AUX. + * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr) + (vect_analyze_data_ref_dependence, vect_record_base_alignments) + (vect_verify_datarefs_alignment, vect_peeling_supportable) + (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list) + (vect_analyze_data_refs): Likewise. + (vect_slp_analyze_data_ref_dependence): Likewise. Take a vec_info + argument. + (vect_find_same_alignment_drs): Likewise. + (vect_slp_analyze_node_dependences): Update calls accordingly. + (vect_analyze_data_refs_alignment): Likewise. Use vec_info::lookup_dr + instead of DR_VECT_AUX. + (vect_get_peeling_costs_all_drs): Take a loop_vec_info instead + of a vector data references. Use vec_info::lookup_dr instead of + DR_VECT_AUX. + (vect_peeling_hash_get_lowest_cost): Update calls accordingly. + (vect_enhance_data_refs_alignment): Likewise. Use vec_info::lookup_dr + instead of DR_VECT_AUX. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_loop_vec_info::unaligned_dr): Change to + dr_vec_info. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update + accordingly. + * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise. + (vect_gen_prolog_loop_niters): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (set_dr_misalignment, dr_misalignment) + (DR_TARGET_ALIGNMENT, aligned_access_p, known_alignment_for_access_p) + (vect_known_alignment_in_bytes, vect_dr_behavior) + (vect_get_scalar_dr_size): Take references as dr_vec_infos + instead of data_references. Update calls to other routines for + which the same change has been made. + * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Take + dr_vec_infos instead of stmt_vec_infos. + (vect_analyze_data_ref_dependence): Update call accordingly. + (vect_slp_analyze_data_ref_dependence) + (vect_record_base_alignments): Use DR_VECT_AUX. + (vect_calculate_target_alignment, vect_compute_data_ref_alignment) + (vect_update_misalignment_for_peel, verify_data_ref_alignment) + (vector_alignment_reachable_p, vect_get_data_access_cost) + (vect_peeling_supportable, vect_analyze_group_access_1) + (vect_analyze_group_access, vect_analyze_data_ref_access) + (vect_vfa_segment_size, vect_vfa_access_size, vect_vfa_align) + (vect_compile_time_alias, vect_small_gap_p) + (vectorizable_with_step_bound_p, vect_duplicate_ssa_name_ptr_info): + (vect_supportable_dr_alignment): Take references as dr_vec_infos + instead of data_references. Update calls to other routines for + which the same change has been made. + (vect_verify_datarefs_alignment, vect_get_peeling_costs_all_drs) + (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment) + (vect_slp_analyze_and_verify_node_alignment) + (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list) + (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr) + (vect_setup_realignment): Use dr_vec_infos. Update calls after + above changes. + (_vect_peel_info::dr): Replace with... + (_vect_peel_info::dr_info): ...this new field. + (vect_peeling_hash_get_most_frequent) + (vect_peeling_hash_choose_best_peeling): Update accordingly. + (vect_peeling_hash_get_lowest_cost): + (vect_enhance_data_refs_alignment): Likewise. Update calls to other + routines for which the same change has been made. + (vect_peeling_hash_insert): Likewise. Take a dr_vec_info instead of a + data_reference. + * tree-vect-loop-manip.c (get_misalign_in_elems) + (vect_gen_prolog_loop_niters): Use dr_vec_infos. Update calls after + above changes. + * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + * tree-vect-stmts.c (vect_get_store_cost, vect_get_load_cost) + (vect_truncate_gather_scatter_offset, compare_step_with_zero) + (get_group_load_store_type, get_negative_load_store_type) + (vect_get_data_ptr_increment, vectorizable_store) + (vectorizable_load): Likewise. + (ensure_base_align): Take a dr_vec_info instead of a data_reference. + Update calls to other routines for which the same change has been made. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::move_dr): New member function. + (dataref_aux): Rename to... + (dr_vec_info): ...this and add "dr" and "stmt" fields. + (_stmt_vec_info::dr_aux): Update accordingly. + (_stmt_vec_info::data_ref_info): Delete. + (STMT_VINFO_GROUPED_ACCESS, DR_GROUP_FIRST_ELEMENT) + (DR_GROUP_NEXT_ELEMENT, DR_GROUP_SIZE, DR_GROUP_STORE_COUNT) + (DR_GROUP_GAP, DR_GROUP_SAME_DR_STMT, REDUC_GROUP_FIRST_ELEMENT): + (REDUC_GROUP_NEXT_ELEMENT, REDUC_GROUP_SIZE): Use dr_aux.dr instead + of data_ref. + (STMT_VINFO_DATA_REF): Likewise. Turn into an lvalue. + (STMT_VINFO_DR_INFO): New macro. + (DR_VECT_AUX): Use STMT_VINFO_DR_INKFO and vect_dr_stmt. + (set_dr_misalignment): Update after rename of dataref_aux. + (vect_dr_stmt): Move earlier in file. Return dr_aux.stmt. + * tree-vect-stmts.c (new_stmt_vec_info): Remove redundant + initialization of STMT_VINFO_DATA_REF. + * tree-vectorizer.c (vec_info::move_dr): New function. + * tree-vect-patterns.c (vect_recog_bool_pattern) + (vect_recog_mask_conversion_pattern) + (vect_recog_gather_scatter_pattern): Use it. + * tree-vect-data-refs.c (vect_analyze_data_refs): Initialize + the "dr" and "stmt" fields of dr_vec_info instead of + STMT_VINFO_DATA_REF. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info::pattern_stmt_p): New field. + (is_pattern_stmt_p): Use it. + * tree-vect-patterns.c (vect_init_pattern_stmt): Set pattern_stmt_p + on pattern statements. + +2018-07-31 Richard Sandiford + + * tree-vect-patterns.c (vect_mark_pattern_stmts): Take the + original stmt as a stmt_vec_info rather than a gimple stmt. + (vect_pattern_recog_1): Take the statement directly as a + stmt_vec_info, rather than via a gimple_stmt_iterator. + Update call to vect_mark_pattern_stmts. + (vect_pattern_recog): Update calls accordingly. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vect_get_vec_defs_for_stmt_copy) + (vect_get_vec_def_for_stmt_copy): Take a vec_info rather than + a vect_def_type for the first argument. + * tree-vect-stmts.c (vect_get_vec_defs_for_stmt_copy): Likewise. + (vect_get_vec_def_for_stmt_copy): Likewise. Return the original + operand if it isn't defined by a vectorized statement. + (vect_build_gather_load_calls): Remove the mask_dt argument and + update calls to vect_get_vec_def_for_stmt_copy. + (vectorizable_bswap): Likewise the dt argument. + (vectorizable_call): Update calls to vectorizable_bswap and + vect_get_vec_def_for_stmt_copy. + (vectorizable_simd_clone_call, vectorizable_assignment) + (vectorizable_shift, vectorizable_operation, vectorizable_condition) + (vectorizable_comparison): Update calls to + vect_get_vec_def_for_stmt_copy. + (vectorizable_store): Likewise. Remove now-unnecessary calls to + vect_is_simple_use. + (vect_get_loop_based_defs): Remove dt argument and update call + to vect_get_vec_def_for_stmt_copy. + (vectorizable_conversion): Update calls to vect_get_loop_based_defs + and vect_get_vec_def_for_stmt_copy. + (vectorizable_load): Update calls to vect_build_gather_load_calls + and vect_get_vec_def_for_stmt_copy. + * tree-vect-loop.c (vect_create_epilog_for_reduction) + (vectorizable_reduction, vectorizable_live_operation): Update calls + to vect_get_vec_def_for_stmt_copy. + +2018-07-31 Richard Sandiford + + * tree-vect-data-refs.c (vect_record_base_alignment): Replace vec_info + and gimple stmt arguments with a stmt_vec_info. + (vect_record_base_alignments): Update calls accordingly. + * tree-vect-slp.c (vect_record_max_nunits): Replace vec_info + and gimple stmt arguments with a stmt_vec_info. + (vect_build_slp_tree_1): Remove vinfo argument and update call + to vect_record_max_nunits. + (vect_build_slp_tree_2): Update calls to vect_build_slp_tree_1 + and vect_record_max_nunits. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (nested_in_vect_loop_p): Move further down + file and take a stmt_vec_info instead of a gimple stmt. + (supportable_widening_operation, vect_finish_replace_stmt) + (vect_finish_stmt_generation, vect_get_store_rhs) + (vect_get_vec_def_for_operand_1, vect_get_vec_def_for_operand) + (vect_get_vec_defs, vect_init_vector, vect_transform_stmt) + (vect_remove_stores, vect_analyze_stmt, vectorizable_condition) + (vect_get_smallest_scalar_type, vect_check_gather_scatter) + (vect_create_data_ref_ptr, bump_vector_ptr) + (vect_permute_store_chain, vect_setup_realignment) + (vect_transform_grouped_load, vect_record_grouped_load_vectors) + (vect_create_addr_base_for_vector_ref, vectorizable_live_operation) + (vectorizable_reduction, vectorizable_induction) + (get_initial_def_for_reduction, is_simple_and_all_uses_invariant) + (vect_get_place_in_interleaving_chain): Take stmt_vec_infos rather + than gimple stmts as arguments. + * tree-vect-data-refs.c (vect_get_smallest_scalar_type) + (vect_preserves_scalar_order_p, vect_slp_analyze_node_dependences) + (can_group_stmts_p, vect_check_gather_scatter) + (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr) + (bump_vector_ptr, vect_permute_store_chain, vect_setup_realignment) + (vect_permute_load_chain, vect_shift_permute_load_chain) + (vect_transform_grouped_load) + (vect_record_grouped_load_vectors): Likewise. + * tree-vect-loop.c (vect_fixup_reduc_chain) + (get_initial_def_for_reduction, vect_create_epilog_for_reduction) + (vectorize_fold_left_reduction, is_nonwrapping_integer_induction) + (vectorizable_reduction, vectorizable_induction) + (vectorizable_live_operation, vect_loop_kill_debug_uses): Likewise. + * tree-vect-patterns.c (type_conversion_p, adjust_bool_stmts) + (vect_get_load_store_mask): Likewise. + * tree-vect-slp.c (vect_get_place_in_interleaving_chain) + (vect_analyze_slp_instance, vect_mask_constant_operand_p): Likewise. + * tree-vect-stmts.c (vect_mark_relevant) + (is_simple_and_all_uses_invariant) + (exist_non_indexing_operands_for_use_p, process_use) + (vect_init_vector_1, vect_init_vector, vect_get_vec_def_for_operand_1) + (vect_get_vec_def_for_operand, vect_get_vec_defs) + (vect_finish_stmt_generation_1, vect_finish_replace_stmt) + (vect_finish_stmt_generation, vect_truncate_gather_scatter_offset) + (compare_step_with_zero, vect_get_store_rhs, get_group_load_store_type) + (get_negative_load_store_type, get_load_store_type) + (vect_check_load_store_mask, vect_check_store_rhs) + (vect_build_gather_load_calls, vect_get_strided_load_store_ops) + (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call) + (vect_create_vectorized_demotion_stmts, vectorizable_conversion) + (vectorizable_assignment, vectorizable_shift, vectorizable_operation) + (get_group_alias_ptr_type, vectorizable_store, hoist_defs_of_uses) + (vectorizable_load, vectorizable_condition, vectorizable_comparison) + (vect_analyze_stmt, vect_transform_stmt, vect_remove_stores) + (supportable_widening_operation): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vect-data-refs.c (vect_describe_gather_scatter_call): Take + a stmt_vec_info instead of a gcall. + (vect_check_gather_scatter): Update call accordingly. + * tree-vect-loop-manip.c (iv_phi_p): Take a stmt_vec_info instead + of a gphi. + (vect_can_advance_ivs_p, vect_update_ivs_after_vectorizer) + (slpeel_update_phi_nodes_for_loops):): Update calls accordingly. + * tree-vect-loop.c (vect_transform_loop_stmt): Take a stmt_vec_info + instead of a gimple stmt. + (vect_transform_loop): Update calls accordingly. + * tree-vect-slp.c (vect_split_slp_store_group): Take and return + stmt_vec_infos instead of gimple stmts. + (vect_analyze_slp_instance): Update use accordingly. + * tree-vect-stmts.c (read_vector_array, write_vector_array) + (vect_clobber_variable, vect_stmt_relevant_p, permute_vec_elements) + (vect_use_strided_gather_scatters_p, vect_build_all_ones_mask) + (vect_build_zero_merge_argument, vect_get_gather_scatter_ops) + (vect_gen_widened_results_half, vect_get_loop_based_defs) + (vect_create_vectorized_promotion_stmts, can_vectorize_live_stmts): + Take a stmt_vec_info instead of a gimple stmt and pass stmt_vec_infos + down to subroutines. + +2018-07-31 Richard Sandiford + + * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type + of the worklist from a vector of gimple stmts to a vector of + stmt_vec_infos. + * tree-vect-stmts.c (vect_mark_relevant, process_use) + (vect_mark_stmts_to_be_vectorized): Likewise + +2018-07-31 Richard Sandiford + + * tree-vect-loop.c (vect_analyze_loop_operations): Look up the + statement before passing it to vect_analyze_stmt. + (vect_create_epilog_for_reduction): Use a stmt_vec_info to walk + the chain of phi vector definitions. Track the exit phi via its + stmt_vec_info. + (vectorizable_reduction): Set cond_stmt_vinfo directly from the + STMT_VINFO_REDUC_DEF. + * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Use + stmt_vec_infos to handle the statement chains. + (vect_get_slp_defs): Record the first statement in the node + using a stmt_vec_info. + * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Look up + statements here and pass their stmt_vec_info down to subroutines. + (vect_init_vector_1): Hoist call to vinfo_for_stmt and pass it + down to vect_finish_stmt_generation. + (vect_init_vector, vect_get_vec_defs, vect_finish_replace_stmt) + (vect_finish_stmt_generation): Call vinfo_for_stmt and pass + stmt_vec_infos to subroutines. + (vect_remove_stores): Use stmt_vec_infos to handle the statement + chains. + +2018-07-31 Richard Sandiford + + * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): + (vect_check_gather_scatter, vect_create_data_ref_ptr, bump_vector_ptr) + (vect_permute_store_chain, vect_setup_realignment) + (vect_permute_load_chain, vect_shift_permute_load_chain) + (vect_transform_grouped_load): Use stmt_vec_info rather than gimple + stmts internally, and when passing values to other vectorizer routines. + * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise. + * tree-vect-loop.c (vect_analyze_scalar_cycles_1) + (vect_analyze_loop_operations, get_initial_def_for_reduction) + (vect_create_epilog_for_reduction, vectorize_fold_left_reduction) + (vectorizable_reduction, vectorizable_induction) + (vectorizable_live_operation, vect_transform_loop_stmt) + (vect_transform_loop): Likewise. + * tree-vect-patterns.c (vect_reassociating_reduction_p) + (vect_recog_widen_op_pattern, vect_recog_mixed_size_cond_pattern) + (vect_recog_bool_pattern, vect_recog_gather_scatter_pattern): Likewise. + * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. + (vect_slp_analyze_node_operations_1): Likewise. + * tree-vect-stmts.c (vect_mark_relevant, process_use) + (exist_non_indexing_operands_for_use_p, vect_init_vector_1) + (vect_mark_stmts_to_be_vectorized, vect_get_vec_def_for_operand) + (vect_finish_stmt_generation_1, get_group_load_store_type) + (get_load_store_type, vect_build_gather_load_calls) + (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call) + (vect_create_vectorized_demotion_stmts, vectorizable_conversion) + (vectorizable_assignment, vectorizable_shift, vectorizable_operation) + (vectorizable_store, vectorizable_load, vectorizable_condition) + (vectorizable_comparison, vect_analyze_stmt, vect_transform_stmt) + (supportable_widening_operation): Likewise. + (vect_get_vector_types_for_stmt): Likewise. + * tree-vectorizer.h (vect_dr_behavior): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence) + (vect_slp_analyze_node_dependences, vect_analyze_data_ref_accesses) + (vect_permute_store_chain, vect_permute_load_chain) + (vect_shift_permute_load_chain, vect_transform_grouped_load): Avoid + repeated stmt_vec_info lookups. + * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise. + (vect_update_ivs_after_vectorizer): Likewise. + * tree-vect-loop.c (vect_is_simple_reduction): Likewise. + (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise. + * tree-vect-patterns.c (adjust_bool_stmts): Likewise. + * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. + (vect_bb_slp_scalar_cost): Likewise. + * tree-vect-stmts.c (get_group_alias_ptr_type): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vect-data-refs.c (vect_check_gather_scatter): Pass the + gcall rather than the generic gimple stmt to gimple_call_internal_fn. + (vect_get_smallest_scalar_type, can_group_stmts_p): Use dyn_cast + to get gassigns and gcalls, rather than operating on generc gimple + stmts. + * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p) + (vect_mark_stmts_to_be_vectorized, vectorizable_store) + (vectorizable_load, vect_analyze_stmt): Likewise. + * tree-vect-loop.c (vectorizable_reduction): Likewise gphi. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (get_earlier_stmt, get_later_stmt): Take and + return stmt_vec_infos rather than gimple stmts. Do not accept + null arguments. + (vect_find_last_scalar_stmt_in_slp): Return a stmt_vec_info instead + of a gimple stmt. + * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise. + Update use of get_later_stmt. + (vect_get_constant_vectors): Update call accordingly. + (vect_schedule_slp_instance): Likewise + * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Likewise. + (vect_slp_analyze_instance_dependence): Likewise. + (vect_preserves_scalar_order_p): Update use of get_earlier_stmt. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (stmt_info_for_cost::stmt): Replace with... + (stmt_info_for_cost::stmt_info): ...this new field. + (add_stmt_costs): Update accordingly. + * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost) + (vect_get_known_peeling_cost): Likewise. + (vect_estimate_min_profitable_iters): Likewise. + * tree-vect-stmts.c (record_stmt_cost): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_loop_vec_info::may_misalign_stmts): Change + from an auto_vec to an auto_vec. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update + accordingly. + * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info::same_dr_stmt): Change from + a gimple stmt to a stmt_vec_info. + * tree-vect-stmts.c (vectorizable_load): Update accordingly. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::grouped_stores): Change from + an auto_vec to an auto_vec. + (_loop_vec_info::reduction_chains): Likewise. + * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update + accordingly. + * tree-vect-slp.c (vect_analyze_slp): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info::first_element): Change from + a gimple stmt to a stmt_vec_info. + (_stmt_vec_info::next_element): Likewise. + * tree-vect-data-refs.c (vect_update_misalignment_for_peel) + (vect_slp_analyze_and_verify_node_alignment) + (vect_analyze_group_access_1, vect_analyze_group_access) + (vect_small_gap_p, vect_prune_runtime_alias_test_list) + (vect_create_data_ref_ptr, vect_record_grouped_load_vectors) + (vect_supportable_dr_alignment): Update accordingly. + * tree-vect-loop.c (vect_fixup_reduc_chain): Likewise. + (vect_fixup_scalar_cycles_with_patterns, vect_is_slp_reduction) + (vect_is_simple_reduction, vectorizable_reduction): Likewise. + * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise. + * tree-vect-slp.c (vect_build_slp_tree_1) + (vect_attempt_slp_rearrange_stmts, vect_supported_load_permutation_p) + (vect_split_slp_store_group, vect_analyze_slp_instance) + (vect_analyze_slp, vect_transform_slp_perm_load): Likewise. + * tree-vect-stmts.c (vect_model_store_cost, vect_model_load_cost) + (get_group_load_store_type, get_load_store_type) + (get_group_alias_ptr_type, vectorizable_store, vectorizable_load) + (vect_transform_stmt, vect_remove_stores): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vect_dr_stmt): Return a stmt_vec_info rather + than a gimple stmt. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence) + (vect_slp_analyze_data_ref_dependence, vect_record_base_alignments) + (vect_calculate_target_alignmentm, vect_compute_data_ref_alignment) + (vect_update_misalignment_for_peel, vect_verify_datarefs_alignment) + (vector_alignment_reachable_p, vect_get_data_access_cost) + (vect_get_peeling_costs_all_drs, vect_peeling_hash_get_lowest_cost) + (vect_peeling_supportable, vect_enhance_data_refs_alignment) + (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment) + (vect_analyze_group_access_1, vect_analyze_group_access) + (vect_analyze_data_ref_access, vect_analyze_data_ref_accesses) + (vect_vfa_access_size, vect_small_gap_p, vect_analyze_data_refs) + (vect_supportable_dr_alignment): Remove vinfo_for_stmt from the + result of vect_dr_stmt and use the stmt_vec_info instead of + the associated gimple stmt. + * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise. + (vect_gen_prolog_loop_niters): Likewise. + * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_slp_tree::stmts): Change from a vec + to a vec. + * tree-vect-slp.c (vect_free_slp_tree): Update accordingly. + (vect_create_new_slp_node): Take a vec instead of a + vec. + (_slp_oprnd_info::def_stmts): Change from a vec + to a vec. + (bst_traits::value_type, bst_traits::value_type): Likewise. + (bst_traits::hash): Update accordingly. + (vect_get_and_check_slp_defs): Change the stmts parameter from + a vec to a vec. + (vect_two_operations_perm_ok_p, vect_build_slp_tree_1): Likewise. + (vect_build_slp_tree): Likewise. + (vect_build_slp_tree_2): Likewise. Update uses of + SLP_TREE_SCALAR_STMTS. + (vect_print_slp_tree): Update uses of SLP_TREE_SCALAR_STMTS. + (vect_mark_slp_stmts, vect_mark_slp_stmts_relevant) + (vect_slp_rearrange_stmts, vect_attempt_slp_rearrange_stmts) + (vect_supported_load_permutation_p, vect_find_last_scalar_stmt_in_slp) + (vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations_1) + (vect_slp_analyze_node_operations, vect_slp_analyze_operations) + (vect_bb_slp_scalar_cost, vect_slp_analyze_bb_1) + (vect_get_constant_vectors, vect_get_slp_defs) + (vect_transform_slp_perm_load, vect_schedule_slp_instance) + (vect_remove_slp_scalar_calls, vect_schedule_slp): Likewise. + (vect_analyze_slp_instance): Build up a vec of stmt_vec_infos + instead of gimple stmts. + * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Change + the stores parameter for a vec to a vec. + (vect_slp_analyze_instance_dependence): Update uses of + SLP_TREE_SCALAR_STMTS. + (vect_slp_analyze_and_verify_node_alignment): Likewise. + (vect_slp_analyze_and_verify_instance_alignment): Likewise. + * tree-vect-loop.c (neutral_op_for_slp_reduction): Likewise. + (get_initial_defs_for_reduction): Likewise. + (vect_create_epilog_for_reduction): Likewise. + (vectorize_fold_left_reduction): Likewise. + * tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Likewise. + (vect_model_simple_cost, vectorizable_shift, vectorizable_load) + (can_vectorize_live_stmts): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_loop_vec_info::reductions): Change from an + auto_vec to an auto_vec. + (vect_force_simple_reduction): Take and return stmt_vec_infos rather + than gimple stmts. + * tree-parloops.c (valid_reduction_p): Take a stmt_vec_info instead + of a gimple stmt. + (gather_scalar_reductions): Update after above interface changes. + * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise. + (vect_is_simple_reduction): Take and return stmt_vec_infos rather + than gimple stmts. + (vect_force_simple_reduction): Likewise. + * tree-vect-patterns.c (vect_pattern_recog_1): Update use of + LOOP_VINFO_REDUCTIONS. + * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info::reduc_def): Change from + a gimple stmt to a stmt_vec_info. + * tree-vect-loop.c (vect_active_double_reduction_p) + (vect_force_simple_reduction, vectorizable_reduction): Update + accordingly. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_slp_tree::vec_stmts): Change from a + vec to a vec. + * tree-vect-loop.c (vect_create_epilog_for_reduction): Change + the reduction_phis argument from a vec to a + vec. + (vectorizable_reduction): Likewise the phis local variable that + is passed to vect_create_epilog_for_reduction. Update for new type + of SLP_TREE_VEC_STMTS. + (vectorizable_induction): Update for new type of SLP_TREE_VEC_STMTS. + (vectorizable_live_operation): Likewise. + * tree-vect-slp.c (vect_get_slp_vect_defs): Likewise. + (vect_transform_slp_perm_load, vect_schedule_slp_instance): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Change from + a gimple stmt to a stmt_vec_info. + (vectorizable_condition, vectorizable_live_operation) + (vectorizable_reduction, vectorizable_induction): Pass back the + vectorized statement as a stmt_vec_info. + * tree-vect-data-refs.c (vect_record_grouped_load_vectors): Update + use of STMT_VINFO_VEC_STMT. + * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise, + accumulating the inner phis that feed the STMT_VINFO_VEC_STMT + as stmt_vec_infos rather than gimple stmts. + (vectorize_fold_left_reduction): Change vec_stmt from a gimple stmt + to a stmt_vec_info. + (vectorizable_live_operation): Likewise. + (vectorizable_reduction, vectorizable_induction): Likewise, + updating use of STMT_VINFO_VEC_STMT. + * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Update use + of STMT_VINFO_VEC_STMT. + (vect_build_gather_load_calls, vectorizable_bswap, vectorizable_call) + (vectorizable_simd_clone_call, vectorizable_conversion) + (vectorizable_assignment, vectorizable_shift, vectorizable_operation) + (vectorizable_store, vectorizable_load, vectorizable_condition) + (vectorizable_comparison, can_vectorize_live_stmts): Change vec_stmt + from a gimple stmt to a stmt_vec_info. + (vect_transform_stmt): Update use of STMT_VINFO_VEC_STMT. Pass a + pointer to a stmt_vec_info to the vectorizable_* routines. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info::related_stmt): Change from + a gimple stmt to a stmt_vec_info. + (is_pattern_stmt_p): Update accordingly. + * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Likewise. + (vect_record_grouped_load_vectors): Likewise. + * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise. + (vect_fixup_reduc_chain, vect_update_vf_for_slp): Likewise. + (vect_model_reduction_cost): Likewise. + (vect_create_epilog_for_reduction): Likewise. + (vectorizable_reduction, vectorizable_induction): Likewise. + * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. + Return the stmt_vec_info for the pattern statement. + (vect_set_pattern_stmt): Update use of STMT_VINFO_RELATED_STMT. + (vect_split_statement, vect_mark_pattern_stmts): Likewise. + * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise. + (vect_detect_hybrid_slp, vect_get_slp_defs): Likewise. + * tree-vect-stmts.c (vect_mark_relevant): Likewise. + (vect_get_vec_def_for_operand_1, vectorizable_call): Likewise. + (vectorizable_simd_clone_call, vect_analyze_stmt, new_stmt_vec_info) + (free_stmt_vec_info, vect_is_simple_use): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vect_finish_replace_stmt): Return a stmt_vec_info + (vect_finish_stmt_generation): Likewise. + * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise. + (vect_finish_replace_stmt, vect_finish_stmt_generation): Likewise. + (vect_build_gather_load_calls): Use the return value of the above + functions instead of a separate call to vinfo_for_stmt. Use narrow + scopes for the input gimple stmt and wider scopes for the associated + stmt_vec_info. Use vec_info::lookup_def when setting these + stmt_vec_infos from an SSA_NAME definition. + (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call) + (vect_create_vectorized_demotion_stmts, vectorizable_conversion) + (vectorizable_assignment, vectorizable_shift, vectorizable_operation) + (vectorizable_store, vectorizable_load, vectorizable_condition) + (vectorizable_comparison): Likewise. + * tree-vect-loop.c (vectorize_fold_left_reduction): Likewise. + (vectorizable_reduction): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vect_is_simple_use): Add an optional + stmt_vec_info * parameter before the optional gimple **. + * tree-vect-stmts.c (vect_is_simple_use): Likewise. + (process_use, vect_get_vec_def_for_operand_1): Update callers. + (vect_get_vec_def_for_operand, vectorizable_shift): Likewise. + * tree-vect-loop.c (vectorizable_reduction): Likewise. + (vectorizable_live_operation): Likewise. + * tree-vect-patterns.c (type_conversion_p): Likewise. + (vect_look_through_possible_promotion): Likewise. + (vect_recog_rotate_pattern): Likewise. + * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (stmt_vec_info): Temporarily change from + a typedef to a wrapper class. + (NULL_STMT_VEC_INFO): New macro. + (vec_info::stmt_infos): Change to vec. + (stmt_vec_info::operator*): New function. + (stmt_vec_info::operator gimple *): Likewise. + (set_vinfo_for_stmt): Use NULL_STMT_VEC_INFO. + (add_stmt_costs): Likewise. + * tree-vect-loop-manip.c (iv_phi_p): Likewise. + * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost) + (vect_get_known_peeling_cost): Likewise. + (vect_estimate_min_profitable_iters): Likewise. + * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. + * tree-vect-slp.c (vect_remove_slp_scalar_calls): Likewise. + * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise. + (vectorizable_store, free_stmt_vec_infos): Likewise. + (new_stmt_vec_info): Change return type of xcalloc to + _stmt_vec_info *. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::lookup_single_use): Declare. + * tree-vectorizer.c (vec_info::lookup_single_use): New function. + * tree-vect-loop.c (vectorizable_reduction): Use it instead of + a single_imm_use-based sequence. + * tree-vect-stmts.c (supportable_widening_operation): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::lookup_def): Declare. + * tree-vectorizer.c (vec_info::lookup_def): New function. + * tree-vect-patterns.c (vect_get_internal_def): Use it. + (vect_widened_op_tree): Likewise. + * tree-vect-stmts.c (vect_is_simple_use): Likewise. + * tree-vect-loop.c (vect_analyze_loop_operations): Likewise. + (vectorizable_reduction): Likewise. + (vect_valid_reduction_input_p): Take a stmt_vec_info instead + of a gimple *. + (vect_is_slp_reduction): Update calls accordingly. Use + vec_info::lookup_def. + (vect_is_simple_reduction): Likewise + * tree-vect-slp.c (vect_detect_hybrid_slp_1): Use vec_info::lookup_def. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vec_info::lookup_stmt): Declare. + * tree-vectorizer.c (vec_info::lookup_stmt): New function. + * tree-vect-loop.c (vect_determine_vf_for_stmt): Use it instead + of vinfo_for_stmt. + (vect_determine_vectorization_factor, vect_analyze_scalar_cycles_1) + (vect_compute_single_scalar_iteration_cost, vect_analyze_loop_form) + (vect_update_vf_for_slp, vect_analyze_loop_operations) + (vect_is_slp_reduction, vectorizable_induction) + (vect_transform_loop_stmt, vect_transform_loop): Likewise. + * tree-vect-patterns.c (vect_init_pattern_stmt): + (vect_determine_min_output_precision_1, vect_determine_precisions) + (vect_pattern_recog): Likewise. + * tree-vect-stmts.c (vect_analyze_stmt, vect_transform_stmt): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_density_test): Likewise. + * config/rs6000/rs6000.c (rs6000_density_test): Likewise. + * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise. + (vect_detect_hybrid_slp_1, vect_detect_hybrid_slp_2) + (vect_detect_hybrid_slp): Likewise. Change the walk_stmt_info + info field from a loop to a loop_vec_info. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (stmt_vec_info): Move typedef earlier in file. + (vec_info::add_stmt): Declare. + * tree-vectorizer.c (vec_info::add_stmt): New function. + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Use it. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Likewise. + (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise. + (vectorizable_induction): Likewise. + * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Likewise. + * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise. + (vectorizable_simd_clone_call, vectorizable_store): Likewise. + (vectorizable_load): Likewise. + * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise. + (vect_recog_bool_pattern, vect_recog_mask_conversion_pattern) + (vect_recog_gather_scatter_pattern): Likewise. + (append_pattern_def_seq): Likewise. Remove a check that is + performed by add_stmt itself. + +2018-07-31 Richard Sandiford + + * tree-vect-loop.c (vectorizable_reduction): Fix an instance in + which make_ssa_name was called with new_stmt before new_stmt + had been created. + +2018-07-31 Richard Sandiford + + * tree-vect-loop.c (vect_valid_reduction_input_p): New function, + split out from... + (vect_is_slp_reduction): ...here... + (vect_is_simple_reduction): ...and here. Remove repetition of tests + that are already known to be false. + +2018-07-31 Richard Sandiford + + * tree-vectorizer.h (vect_free_slp_instance): Add a final_p parameter. + * tree-vect-slp.c (vect_free_slp_tree): Likewise. Don't update + STMT_VINFO_NUM_SLP_USES when it's true. + (vect_free_slp_instance): Add a final_p parameter and pass it to + vect_free_slp_tree. + (vect_build_slp_tree_2): Update call to vect_free_slp_instance. + (vect_analyze_slp_instance): Likewise. + (vect_slp_analyze_operations): Likewise. + (vect_slp_analyze_bb_1): Likewise. + * tree-vectorizer.c (vec_info): Likewise. + * tree-vect-loop.c (vect_transform_loop): Likewise. + +2018-07-31 Richard Sandiford + + * tree-vect-loop.c (vectorizable_reduction): Assert that the + function is not called for second and subsequent members of + a reduction group. + +2018-07-31 Richard Sandiford + + * tree-vect-loop.c (get_initial_def_for_reduction): Move special + cases for nested loops from here to ... + (vect_create_epilog_for_reduction): ...here. Only call + vect_is_simple_use for inner-loop reductions. + +2018-07-31 Martin Liska + + PR gcov-profile/85338 + PR gcov-profile/85350 + PR gcov-profile/85372 + * profile.c (struct location_triplet): New. + (struct location_triplet_hash): Likewise. + (output_location): Do not output a BB that + is already recorded for a line. + (branch_prob): Use streamed_locations. + +2018-07-31 Martin Liska + + PR gcov-profile/85370 + * coverage.c (coverage_begin_function): Do not mark target + clones as artificial functions. + +2018-07-31 Martin Liska + + PR gcov-profile/83813 + PR gcov-profile/84758 + PR gcov-profile/85217 + PR gcov-profile/85332 + * profile.c (branch_prob): Do not record GOTO expressions + for GIMPLE statements which locations are already streamed. + +2018-07-31 Olivier Hainque + + * gcc.c (handle_spec_function): Accept a soft_matched_part + argument, as do_spec_1. Pass it down to ... + (eval_spec_function): Accept a soft_matched_part argument, + and pass it down to ... + (do_spec_2): Accept a soft_matched_part argument, and pass + it down to do_spec_1. + (do_spec_1): Pass soft_matched_part to handle_spec_function. + (handle_braces): Update call to handle_spec_function. + (driver::set_up_specs): Update calls to do_spec_2. + (compare_debug_dump_opt_spec_function): Likewise. + (compare_debug_self_opt_spec_function): Likewise. + +2018-07-31 Olivier Hainque + + * common.opt (nolibc): New option. + * doc/invoke.texi (Link Options): Document it. + * gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc. + * config/alpha/linux.h: Likewise. + * config/arc/elf.h: Likewise. + * config/arm/uclinux-elf.h: Likewise. + * config/arm/unknown-elf.h: Likewise. + * config/avr/avrlibc.h: Likewise. + * config/bfin/bfin.h: Likewise. + * config/bfin/linux.h: Likewise. + * config/bfin/uclinux.h: Likewise. + * config/darwin.h: Likewise. + * config/darwin10.h: Likewise. + * config/darwin12.h: Likewise. + * config/gnu-user.h: Likewise. + * config/lm32/uclinux-elf.h: Likewise. + * config/pa/pa-hpux11.h: Likewise. + * config/pa/pa64-hpux.h: Likewise. + * config/sparc/sparc.h: Likewise. + +2018-07-31 Olivier Hainque + + * gcc.c (getenv_spec_function): Prepend '/' to value for allowed + undefined variables. + +2018-07-30 Segher Boessenkool + + PR target/86640 + * config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode + instead of GEN_INT. + +2018-07-30 Bernd Edlinger + + * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL + terminated string literal. + +2018-07-30 Segher Boessenkool + + PR rtl-optimization/85160 + * combine.c (is_just_move): New function. + (try_combine): Allow combining two instructions into two if neither of + the original instructions was a move. + +2018-07-30 Alexander Monakov + + PR target/86673 + * doc/extend.texi (Global Register Variables): Discourage use of type + qualifiers. + (Local Register Variables): Likewise. + +2018-07-30 Richard Sandiford + + PR tree-optimization/86506 + * hwint.h (ceil_log2): Resync with hwint.c implementation. + +2018-07-30 Ilya Leoshkevich + + PR target/86547 + * lra-constraints.c (spill_hard_reg_in_range): When selecting the + hard_regno, make sure no insn between `from` and `to` clobbers it. + +2018-07-30 Cesar Philippidis + Tom de Vries + + * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ... + (PTX_DEFAULT_RUNTIME_DIM): ... this. + (nvptx_goacc_validate_dims): Set default worker and gang dims to + PTX_DEFAULT_RUNTIME_DIM. + (nvptx_dim_limit): Ignore GOMP_DIM_WORKER. + +2018-07-29 John David Anglin + + * config/pa/pa.c (pa_output_addr_vec): Align address table. + * config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment. + * config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define. + +2018-07-27 Michael Meissner + + * config/rs6000/constraints.md (wG constraint): Delete, no longer + used. + * config/rs6000/predicates.md (p9_fusion_reg_operand): Rename + predicate to reflect toc fusion has been deleted. + (toc_fusion_mem_raw): Delete, no longer used. + (toc_fusion_mem_wrapped): Likewise. + * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete toc + fusion mask bit. + * config/rs6000/rs6000-protos.h (fusion_wrap_memory_address): + Delete, no longer used. + * config/rs6000/rs6000.c (struct rs6000_reg_addr): Delete fields + meant to be used for toc fusion. + (rs6000_debug_print_mode): Delete toc fusion debugging. + (rs6000_debug_reg_global): Likewise. + (rs6000_init_hard_regno_mode_ok): Delete setting up fields for toc + fusion and secondary reload support that were never used. + (rs6000_option_override_internal): Delete TOC fusion, that was only + partially defined, and it did not work unless you also used the + -mcmodel= switch. + (rs6000_legitimate_address_p): Delete TOC fusion support. + (rs6000_opt_masks): Likewise. + (fusion_wrap_memory_address): Delete function, no longer used. + (fusion_split_address); Delete TOC fusion support. + * config/rs6000/rs6000.h (TARGET_TOC_FUSION_INT): Delete, no + longer used with toc fusion being deleted. + (TARGET_TOC_FUSION_FP): Likewise. + * config/rs6000/rs6000.md (UNSPEC_FUSION_ADDIS): Delete TOC fusion + UNSPEC. + (toc fusion spliter): Delete TOC fusion support. + (toc_fusionload_): Likewise. + (toc_fusionload_di): Likewise. + (fusion_gpr_load_): Delete generator function, this insn no + longer needs to be named. Rename predicate to delete TOC fusion. + (fusion_gpr___load): Likewise. + (fusion_gpr___store): Likewise. + (fusion_vsx___load): Likewise. + (fusion_vsx___store): Likewise. + (p9 fusion peephole2s): Rename predicate to delete TOC fusion. + +2018-07-27 Kelvin Nilsen + + * doc/extend.texi (Basic PowerPC Built-in Functions Available on + ISA 2.05): Replace __uint128_t with __uint128 and __int128_t with + __int128 in built-in function prototypes. + (PowerPC AltiVec Built-in Functions on ISA 2.07): Likewise. + (PowerPC AltiVec Built-in Functions on ISA 3.0): Likewise. + +2018-07-27 Martin Sebor + + PR tree-optimization/86696 + * tree-ssa-strlen.c (get_min_string_length): Handle all integer + types, including enums. + (handle_char_store): Be prepared for the above function to fail. + +2018-07-26 Qing Zhao + + * builtins.c (inline_expand_builtin_string_cmp): Disable inlining + when optimization level is lower than 2 or optimize for size. + +2018-07-26 Martin Sebor + + PR tree-optimization/86043 + PR tree-optimization/86042 + * tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps. + (get_string_cst_length): Rename... + (get_min_string_length): ...to this. Add argument. + (handle_char_store): Extend to handle multi-character stores by + MEM_REF. + * tree.c (initializer_zerop): Use new argument. Handle MEM_REF. + * tree.h (initializer_zerop): Add argument. + +2018-07-26 Jakub Jelinek + + PR middle-end/86660 + * omp-low.c (scan_sharing_clauses): Don't ignore map clauses for + declare target to variables if they have always,{to,from,tofrom} map + kinds. + +2018-07-26 Martin Liska + + PR lto/86548 + * lto-wrapper.c: Add linker_output as prefix + for ltrans_output_file. + +2018-07-26 Segher Boessenkool + + PR rtl-optimization/85805 + * combine.c (reg_nonzero_bits_for_combine): Only use the last set + value for hard registers if that was written in the same mode. + +2018-07-26 Martin Liska + + PR gcov-profile/86536 + * gcov.c (format_gcov): Use printf format %.*f directly + and do not handle special values. + +2018-07-25 Claudiu Zissulescu + + * common/config/arc/arc-common.c (arc_option_optimization_table): + Update default optimizations for size. + +2018-07-25 Claudiu Zissulescu + + * config/arc/arc.md (movsf_insn): Add short instruction selection. + * config/arc/constraints.md (CfZ): New constraint. + * config/arc/fpu.md (addssf3_fpu): Use CfZ constraint. + (subsf3_fpu): Likewise. + (cmpsf_fpu): Likewise. + (cmpsf_fpu_uneq): Likewise. + +2018-07-25 Claudiu Zissulescu + + * config/arc/arc.c (compact_memory_operand_p): Check for uncached + accesses as well. + (arc_is_uncached_mem_p): uncached applies to both the variable and + the pointer. + +2018-07-25 Claudiu Zissulescu + + * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional + register names. + +2018-07-25 David Malcolm + + * optinfo-emit-json.cc (class optrecord_json_writer): Convert + field "m_scopes" from vec to auto_vec. + +2018-07-25 Martin Liska + + * config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix + return type. + +2018-07-25 Richard Biener + + PR debug/86654 + * dwarf2out.c (dwarf2out_decl): Do not handle nested functions + special wrt context_die late. + (gen_subprogram_die): Re-use DIEs in local scope. + +2018-07-25 Richard Sandiford + + PR tree-optimization/86644 + * hwint.c (ceil_log2): Fix comment. Return 0 for 0. + +2018-07-25 Martin Liska + + PR middle-end/86645 + * dumpfile.c: And excluded values with TDF_ALL_VALUES. + * dumpfile.h (enum dump_flag): Defince TDF_ALL_VALUES. + +2018-07-25 Martin Liska + + PR sanitizer/79635 + * params.def: Explain ASan abbreviation and provide + a documentation link. + +2018-07-24 Martin Sebor + + PR tree-optimization/86622 + PR tree-optimization/86532 + * builtins.h (string_length): Declare. + * builtins.c (c_strlen): Correct handling of non-constant offsets. + (check_access): Be prepared for non-constant length ranges. + (string_length): Make extern. + * expr.c (string_constant): Only handle the minor non-constant + array index. Use string_constant to compute the length of + a generic string constant. + +2018-07-24 Richard Sandiford + + PR tree-optimization/86618 + * tree-vect-stmts.c (vectorizable_call): Don't take the address + of LOOP_VINFO_MASKS (loop_vinfo) when loop_vinfo is null. + +2018-07-24 David Malcolm + + PR tree-optimization/86636 + * json.cc (json::object::set): Fix comment. Add assertions. + (json::array::append): Move here from json.h. Add comment and an + assertion. + (json::string::string): Likewise. + * json.h (json::array::append): Move to json.cc. + (json::string::string): Likewise. + * optinfo-emit-json.cc + (optrecord_json_writer::impl_location_to_json): Assert that we + aren't attempting to write out UNKNOWN_LOCATION, or an ad-hoc + wrapper around it. Expand the location once, rather than three + times. + (optrecord_json_writer::inlining_chain_to_json): Fix the check for + UNKNOWN_LOCATION, to use LOCATION_LOCUS to look through ad-hoc + wrappers. + (optrecord_json_writer::optinfo_to_json): Likewise, in four + places. Fix some overlong lines. + +2018-07-24 Matthew Malcomson + + * config/aarch64/aarch64-simd.md + (aarch64_w): Split into... + (aarch64_subw): ... This... + (aarch64_addw): ... And this. + (aarch64_w_internal): Split into... + (aarch64_subw_internal): ... This... + (aarch64_addw_internal): ... And this. + (aarch64_w2_internal): Split into... + (aarch64_subw2_internal): ... This... + (aarch64_addw2_internal): ... And this. + +2018-07-24 Jakub Jelinek + + PR middle-end/86627 + * expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN + and size > HOST_BITS_PER_WIDE_INT. For size > HOST_BITS_PER_WIDE_INT + and abs_d == d, do the power of two handling if profitable. + +2018-07-24 Richard Biener + + * match.pd: Add BIT_FIELD_REF canonicalizations. + +2018-07-23 Bernd Edlinger + + PR c/86617 + * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values. + +2018-07-23 Bernd Edlinger + + * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL + terminated STRING_CST object. + +2018-07-23 Bernd Edlinger + + hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf. + +2018-07-23 Segher Boessenkool + + * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Adjust. + * config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Delete. + * config/rs6000/rs6000.c (rs6000_expand_vector_init): Always force + the elements into a register. + (rs6000_split_v4si_init_di_reg): Delete. + (rs6000_split_v4si_init): Delete. + * config/rs6000/vsx.md (unspec): Delete UNSPEC_VSX_VEC_INIT. + (vsx_init_v4si): Rewrite as a define_expand. + +2018-07-23 Segher Boessenkool + + * config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the + zero_extend argument from memory): New. + +2018-07-22 Martin Sebor + + PR bootstrap/86621 + * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Avoid + diagnosing calls with unknown arguments unless -Walloca-larger-than + is restricted to less than PTRDIFF_MAX bytes. + +2018-07-22 Gerald Pfeifer + + * doc/gcov.texi (Invoking Gcov): Editorial changes. + +2018-07-20 David Malcolm + + * pretty-print.c (text_info::set_location): Remove redundant + "line_table" parameter from call to rich_location::set_range. + +2018-07-20 Martin Sebor + + PR middle-end/82063 + * builtins.c (expand_builtin_alloca): Adjust. + * calls.c (alloc_max_size): Simplify. + * cgraphunit.c (cgraph_node::expand): Adjust. + * common.opt (larger_than_size, warn_frame_larger_than): Remove + variables. + (frame_larger_than_size): Same. + (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options + to take a HOST_WIDE_INT argument and accept a byte-size suffix. + Initialize. + * doc/invoke.texi (GCC Command Options): Document option arguments. + Explain byte-size arguments and suffixes. + (-Wvla-larger-than, -Wno-alloc-size-larger-than): Update. + (-Wno-alloca-larger-than, -Wno-vla-larger-than): Same. + (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same. + * doc/options.texi (UInteger): Expand. + (Host_Wide_Int, ByteSize): Document new properties. + * final.c (final_start_function_1): Include sizes in an error message. + * function.c (frame_offset_overflow): Same. + * gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust. + (alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT. + Diagnose unbounded alloca calls only for limits of less than + PTRDIFF_MAX. + (alloca_call_type): Adjust. Diagnose possibly out-of-bounds alloca + calls and VLA size only for limits of less than PTRDIFF_MAX. Same + for alloca(0). + (pass_walloca::execute): Adjust. Diagnose alloca calls in loops + only for limits of less than PTRDIFF_MAX. + * langhooks-def.h (lhd_handle_option): Change function argument + to HOST_WIDE_INT. + * langhooks.c (lhd_handle_option): Same. + * langhooks.h (handle_option): Same. + * opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and + ByteSize flags. + (var_type, var_type_struct): Same. + (var_set): Handle ByteSize flag. + * optc-gen.awk: Add comments to output to ease debugging. Make + use of HOST_WIDE_INT where appropriate. + * opts-gen-save.awk: Use %lx to format unsigned long. + * opth-gen.awk: Change function argument to HOST_WIDE_INT. + * opts-common.c (integral_argument): Return HOST_WIDE_INT and add + arguments. Parse bytes-size suffixes. + (enum_arg_to_value): Change function argument to HOST_WIDE_INT. + (enum_value_to_arg): Same. + (decode_cmdline_option): Handle cl_host_wide_int. Adjust. + (handle_option): Adjust. + (generate_option): Change function argument to HOST_WIDE_INT. + (cmdline_handle_error): Adjust. + (read_cmdline_option): Change function argument to HOST_WIDE_INT. + (set_option): Change function argument to HOST_WIDE_INT. + (option_enabled): Handle cl_host_wide_int. + (get_option_state): Handle CLVC_SIZE. + (control_warning_option): Same. + * opts.c (common_handle_option): Change function argument to + HOST_WIDE_INT. Remove handling of OPT_Walloca_larger_than_ and + OPT_Wvla_larger_than_. + * opts.h (enum cl_var_type): Add an enumerator. + * stor-layout.c (layout_decl): Print a more meaningful warning. + * toplev.c (output_stack_usage): Adjust. + +2018-07-20 Qing Zhao + + * builtins.c (expand_builtin_memcmp): Delete the last parameter for + call to inline_expand_builtin_string_cmp. + (expand_builtin_strcmp): Likewise. + (expand_builtin_strncmp): Likewise. + (inline_string_cmp): Delete the last parameter, change char_type_node + to unsigned_char_type_node for strcmp/strncmp, add conversions to the + two operands. + (inline_expand_builtin_string_cmp): Delete the last parameter, give up + the inlining expansion on target where the type of the call has same or + narrower precision than unsigned char. + +2018-07-20 David Malcolm + + * Makefile.in (OBJS): Add json.o and optinfo-emit-json.o. + (CFLAGS-optinfo-emit-json.o): Define TARGET_NAME. + * common.opt (fsave-optimization-record): New option. + * coretypes.h (struct kv_pair): Move here from dumpfile.c. + * doc/invoke.texi (-fsave-optimization-record): New option. + * dumpfile.c: Include "optinfo-emit-json.h". + (struct kv_pair): Move to coretypes.h. + (optgroup_options): Make non-static. + (dump_context::end_scope): Call + optimization_records_maybe_pop_dump_scope. + * dumpfile.h (optgroup_options): New decl. + * json.cc: New file. + * json.h: New file. + * optinfo-emit-json.cc: New file. + * optinfo-emit-json.h: New file. + * optinfo.cc: Include "optinfo-emit-json.h". + (optinfo::emit): Call optimization_records_maybe_record_optinfo. + (optinfo_enabled_p): Check optimization_records_enabled_p. + (optinfo_wants_inlining_info_p): Likewise. + * optinfo.h: Update comment. + * profile-count.c (profile_quality_as_string): New function. + * profile-count.h (profile_quality_as_string): New decl. + (profile_count::quality): New accessor. + * selftest-run-tests.c (selftest::run_tests): Call json_cc_tests + and optinfo_emit_json_cc_tests. + * selftest.h (selftest::json_cc_tests): New decl. + (selftest::optinfo_emit_json_cc_tests): New decl. + * toplev.c: Include "optinfo-emit-json.h". + (compile_file): Call optimization_records_finish. + (do_compile): Call optimization_records_start. + * tree-ssa-live.c: Include optinfo.h. + (remove_unused_scope_block_p): Retain inlining information if + optinfo_wants_inlining_info_p returns true. + +2018-07-20 Richard Biener + + PR debug/86585 + * dwarf2out.c (dwarf2out_die_ref_for_decl): Test in_lto_p + to cover -flto-partition=none. + +2018-07-20 Martin Liska + + * tree.h (DECL_LOCATION_RANGE): Remove unused macro. + (get_decl_source_range): Remove unused function. + +2018-07-20 Richard Biener + + * tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member. + (struct vn_phi_s): Likewise. + (struct vn_reference_s): Likewise. + * tree-ssa-sccvn.c (vn_nary_op_hasher::equal): Add shortcut + for searching the slot of an entry known to be in the hash itself. + (vn_phi_hasher::equal): Likewise. + (vn_reference_hasher::equal): Likewise. + (last_inserted_ref, last_inserted_phi, last_inserted_nary): New + globals. + (optimistic_info, current_info): Remove, keeping only valid_info. + (vn_reference_lookup_1): Remove fallback lookup. + (vn_reference_lookup_2): Likewise. + (vn_nary_op_lookup_1): Likewise. + (vn_phi_lookup): Likewise. + (vn_nary_build_or_lookup_1): Make sure to not chain the built + hash element. + (vn_reference_insert): Adjust, chain the inserted hash element + at last_inserted_ref. + (vn_reference_insert_pieces): Likewise. + (visit_reference_op_call): Likewise. + (vn_nary_op_insert_into): Chain the inserted hash element at + last_inserted_nary. + (vn_nary_op_insert_pieces): Adjust. + (vn_nary_op_insert): Likewise. + (vn_nary_op_insert_stmt): Likewise. + (vn_phi_insert): Adjust, chain the inserted hash element at + last_inserted_phi. + (process_scc): Remove clearing and copying the optimistic + table. Instead remove elements inserted during an optimistic + iteration from the single table we maintain. + (init_scc_vn): Adjust. + (free_scc_vn): Likewise. + (sccvn_dom_walker::record_cond): Likewise. + (sccvn_dom_walker::after_dom_children): Likewise. + +2018-07-19 Martin Sebor + + PR tree-optimization/84047 + PR tree-optimization/83776 + * tree-vrp.c (vrp_prop::check_mem_ref): New function. + (check_array_bounds): Call it. + +2018-07-19 Martin Sebor + + * align.h (align_flags): Use member initialization. + +2018-07-19 David Malcolm + + * Makefile.in (OBJS): Add optinfo.o. + * coretypes.h (class symtab_node): New forward decl. + (struct cgraph_node): New forward decl. + (class varpool_node): New forward decl. + * dump-context.h: New file. + * dumpfile.c: Include "optinfo.h", "dump-context.h", "cgraph.h", + "tree-pass.h". + (refresh_dumps_are_enabled): Use optinfo_enabled_p. + (set_dump_file): Call dumpfile_ensure_any_optinfo_are_flushed. + (set_alt_dump_file): Likewise. + (dump_context::~dump_context): New dtor. + (dump_gimple_stmt): Move implementation to... + (dump_context::dump_gimple_stmt): ...this new member function. + Add the stmt to any pending optinfo, creating one if need be. + (dump_gimple_stmt_loc): Move implementation to... + (dump_context::dump_gimple_stmt_loc): ...this new member function. + Start a new optinfo and add the stmt to it. + (dump_gimple_expr): Move implementation to... + (dump_context::dump_gimple_expr): ...this new member function. + Add the stmt to any pending optinfo, creating one if need be. + (dump_gimple_expr_loc): Move implementation to... + (dump_context::dump_gimple_expr_loc): ...this new member function. + Start a new optinfo and add the stmt to it. + (dump_generic_expr): Move implementation to... + (dump_context::dump_generic_expr): ...this new member function. + Add the tree to any pending optinfo, creating one if need be. + (dump_generic_expr_loc): Move implementation to... + (dump_context::dump_generic_expr_loc): ...this new member + function. Add the tree to any pending optinfo, creating one if + need be. + (dump_printf): Move implementation to... + (dump_context::dump_printf_va): ...this new member function. Add + the text to any pending optinfo, creating one if need be. + (dump_printf_loc): Move implementation to... + (dump_context::dump_printf_loc_va): ...this new member function. + Start a new optinfo and add the stmt to it. + (dump_dec): Move implementation to... + (dump_context::dump_dec): ...this new member function. Add the + value to any pending optinfo, creating one if need be. + (dump_context::dump_symtab_node): New member function. + (dump_context::get_scope_depth): New member function. + (dump_context::begin_scope): New member function. + (dump_context::end_scope): New member function. + (dump_context::ensure_pending_optinfo): New member function. + (dump_context::begin_next_optinfo): New member function. + (dump_context::end_any_optinfo): New member function. + (dump_context::s_current): New global. + (dump_context::s_default): New global. + (dump_scope_depth): Delete global. + (dumpfile_ensure_any_optinfo_are_flushed): New function. + (dump_symtab_node): New function. + (get_dump_scope_depth): Reimplement in terms of dump_context. + (dump_begin_scope): Likewise. + (dump_end_scope): Likewise. + (selftest::temp_dump_context::temp_dump_context): New ctor. + (selftest::temp_dump_context::~temp_dump_context): New dtor. + (selftest::verify_item): New function. + (ASSERT_IS_TEXT): New macro. + (ASSERT_IS_TREE): New macro. + (ASSERT_IS_GIMPLE): New macro. + (selftest::test_capture_of_dump_calls): New test. + (selftest::dumpfile_c_tests): Call it. + * dumpfile.h (dump_printf, dump_printf_loc, dump_basic_block) + (dump_generic_expr_loc, dump_generic_expr, dump_gimple_stmt_loc) + (dump_gimple_stmt, dump_dec): Gather these related decls and add a + descriptive comment. + (dump_function, print_combine_total_stats, enable_rtl_dump_file) + (dump_node, dump_bb): Move these unrelated decls. + (class dump_manager): Add leading comment. + * optinfo.cc: New file. + * optinfo.h: New file. + +2018-07-19 Michael Collison + Richard Henderson + + * config/aarch64/aarch64.md (subv4, usubv4): New patterns. + (subti): Handle op1 zero. + (subvti4, usub4ti4): New. + (*sub3_compare1_imm): New. + (sub3_carryinCV): New. + (*sub3_carryinCV_z1_z2, *sub3_carryinCV_z1): New. + (*sub3_carryinCV_z2, *sub3_carryinCV): New. + +2018-07-19 Michael Collison + Richard Henderson + + * config/aarch64/aarch64.md: (addv4, uaddv4): New. + (addti3): Create simpler code if low part is already known to be 0. + (addvti4, uaddvti4): New. + (*add3_compareC_cconly_imm): New. + (*add3_compareC_cconly): New. + (*add3_compareC_imm): New. + (*add3_compareC): Rename from add3_compare1; do not + handle constants within this pattern.. + (*add3_compareV_cconly_imm): New. + (*add3_compareV_cconly): New. + (*add3_compareV_imm): New. + (add3_compareV): New. + (add3_carryinC, add3_carryinV): New. + (*add3_carryinC_zero, *add3_carryinV_zero): New. + (*add3_carryinC, *add3_carryinV): New. + ((*add3_compareC_cconly_imm): Replace 'ne' operator + with 'comparison' operator. + (*add3_compareV_cconly_imm): Ditto. + (*add3_compareV_cconly): Ditto. + (*add3_compareV_imm): Ditto. + (add3_compareV): Ditto. + (add3_carryinC): Ditto. + (*add3_carryinC_zero): Ditto. + (*add3_carryinC): Ditto. + (add3_carryinV): Ditto. + (*add3_carryinV_zero): Ditto. + (*add3_carryinV): Ditto. + +2018-07-19 Michael Collison + Richard Henderson + + * config/aarch64/aarch64-modes.def (CC_V): New. + * config/aarch64/aarch64-protos.h + (aarch64_addti_scratch_regs): Declare + (aarch64_subvti_scratch_regs): Declare. + (aarch64_expand_subvti): Declare. + (aarch64_gen_unlikely_cbranch): Declare + * config/aarch64/aarch64.c (aarch64_select_cc_mode): Test + for signed overflow using CC_Vmode. + (aarch64_get_condition_code_1): Handle CC_Vmode. + (aarch64_gen_unlikely_cbranch): New function. + (aarch64_addti_scratch_regs): New function. + (aarch64_subvti_scratch_regs): New function. + (aarch64_expand_subvti): New function. + +2018-07-19 Andre Vieira + + * config/aarch64/aarch64-option-extensions.def: New entry for profile + extension. + * config/aarch64/aarch64.h (AARCH64_FL_PROFILE): New. + * doc/invoke.texi (aarch64-feature-modifiers): New entry for profile + extension. + +2018-07-19 Andre Vieira + + PR target/83009 + * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make + address check not strict. + +2018-07-19 Andre Vieira + + * config/aarch64/aarch64-simd.md (aarch64_simd_mov): Replace + Umq with Umn. + (store_pair_lanes): Likewise. + * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): Add new + enum value 'ADDR_QUERY_LDP_STP_N'. + * config/aarch64/aarch64.c (aarch64_addr_query_type): Likewise. + (aarch64_print_address_internal): Add declaration. + (aarch64_print_ldpstp_address): Remove. + (aarch64_classify_address): Adapt mode for 'ADDR_QUERY_LDP_STP_N'. + (aarch64_print_operand): Change printing of 'y'. + * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Use + new enum value 'ADDR_QUERY_LDP_STP_N', don't hardcode mode and use + 'true' rather than '1'. + * config/aarch64/constraints.md (Uml): Likewise. + (Uml): Rename to Umn. + (Umq): Remove. + +2018-07-19 Richard Biener + + * tree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member + a trailing array. + * tree-ssa-sccvn.c: Remove alloc-pool.h use. + (vn_phi_hasher): Derive from nofree_ptr_hash and remove remove method. + (vn_reference_hasher): Likewise. + (struct vn_tables_s): Remove obstack and alloc-pool members. + (vn_tables_obstack, vn_tables_insert_obstack): New global obstacks. + (vn_nary_build_or_lookup_1): Manually build in vn_tables_insert_obstack. + (vn_reference_insert): Allocate from obstack instead of from alloc-pool. + (vn_reference_insert_pieces): Likewise. + (alloc_vn_nary_op_noinit): Adjust. + (vn_nary_op_insert_stmt): Allocate phiargs in-place. + (vn_phi_eq): Adjust. + (shared_lookup_phiargs): Remove. + (vn_phi_lookup): Allocate temporary vn_phi_s on the stack. + (vn_phi_insert): Allocate from obstack instead of from alloc-pool. + (visit_reference_op_call): Likewise. + (copy_nary, copy_phi, copy_reference): Remove. + (process_scc): Rewind the obstack when iterating. Do not + copy the elements to valid_info but just move them from one + hashtable to the other. + (allocate_vn_table): Adjust. + (free_vn_table): Likewise. + (init_scc_vn): Likewise. + (free_scc_vn): Likewise. + +2018-07-19 H.J. Lu + + PR target/86560 + * config/i386/i386.c (rest_of_insert_endbranch): Lookup + indirect_return as function type attribute. + (ix86_attribute_table): Change indirect_return to function + type attribute. + * doc/extend.texi: Update indirect_return attribute. + +2018-07-19 Aldy Hernandez + + * wide-int.h (widest2_int): New. + * gimple-fold.c (arith_overflowed_p): Use it. + * tree.h (widest2_int_cst): New. + * tree-vrp.c (wide_int_binop_overflow): Rename from + vrp_int_const_binop. + Rewrite to work on trees. + (extract_range_from_multiplicative_op_1): Abstract code to... + (wide_int_range_min_max): ...here. + (wide_int_range_cross_product): ...and here. + (extract_range_from_binary_expr_1): Abstract overflow code to... + (wide_int_range_mult_wrapping): ...here. + * tree-vrp.h (wide_int_range_cross_product): New. + (wide_int_range_mult_wrapping): New. + +2018-07-19 Andrew Senkevich + Julia Koval + + * config/i386/x86-tune-costs.h (skylake_memcpy, + skylake_memset): Replace rep_prefix with unrolling for size 512. + +2018-07-18 Kugan Vivekanandarajah + + PR middle-end/86544 + * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): Handle + comparision with EQ_EXPR in last stmt. + +2018-07-18 Kelvin Nilsen + + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Rename + this subsection to "PowerPC AltiVec/VSX Built-in Functions". + (PowerPC AltiVec/VSX Built-in Functions): New name for subsection + previously known as "PowerPC AltiVec Built-in Functions". Move + some material to new subsubsections "PowerPC AltiVec Built-in + Functions on ISA 2.06" and "PowerPC AltiVec Built-in Functions on + ISA 2.07". + (PowerPC Altivec Built-in Functions on ISA 2.05): New subsubsection. + (PowerPC Altivec Built-in Functions on ISA 2.06): Likewise. + (PowerPC Altivec Built-in Functions on ISA 2.07): Likewise. + (PowerPC Altivec Built-in Functions on ISA 3.0): Likewise. + +2018-07-18 Richard Biener + + PR tree-optimization/86557 + * tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle + EXACT_DIV_EXPR. + +2018-07-18 Ilya Leoshkevich + + * config/s390/s390.c (s390_function_profiler): Generate CFI. + +2018-07-17 Jeff Law + + * config/arm/arm.c (get_label_padding): Update for recent + changes to label_to_alignment. + + PR tree-optimization/86010 + * tree-ssa-dse.c (compute_trims): Fix typo/thinko. + + * config/mips/mips.c (vr4130_align_insns): Update for recent + changes to label_to_alignment. + + * config/frv/frv.c (frv_label_align): Update for recent changes + to label_to_alignment. + + * config/nios2/nios2.c (nios2_label_align): Update for recent + changes which dropped ALIGN_LABELS_LOG. + +2018-07-17 Andreas Schwab + + * config/m68k/m68k.md (umulsi3_highpart+1, const_umulsi3_highpart) + (smulsi3_highpart+1, const_smulsi3_highpart): Add CC_STATUS_INIT. + +2018-07-17 Claudiu Zissulescu + + * config/arc/arc.c (arc_label_align): Use align_labels instead of + deprecated align_labels_log. + +2018-07-17 Richard Biener + + PR lto/86456 + * dwarf2out.c (init_sections_and_labels): Always generate + a debug_line_str_section for early LTO debug. + (dwarf2out_finish): Reset debug_line_str_hash output early. + Bump counter for extra dwarf5 .debug_loc labels to not conflict + with fat LTO part. + (dwarf2out_early_finish): Output debug_line_str. + +2018-07-17 Robin Dapp + + * config/s390/s390.c (preferred_la_operand_p): Do not use LA with + index register on z196 or later. + +2018-07-17 Robin Dapp + + * config/s390/s390.c (s390_default_align): Set default function + alignment to 16. + (s390_override_options_after_change): Call s390_default align. + (s390_option_override_internal): Call s390_default_align. + (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define. + +2018-07-17 Jakub Jelinek + + PR middle-end/86542 + * omp-low.c (create_task_copyfn): Copy over also fields corresponding + to _looptemp_ clauses, other than the first two. + +2018-07-17 Martin Liska + + * opts.c: Do not enable OPT_falign_* for -Os. + +2018-07-17 Martin Liska + + * align.h (MAX_CODE_ALIGN): New. + (MAX_CODE_ALIGN_VALUE): New. + * common/config/i386/i386-common.c (ix86_handle_option): + (MAX_CODE_ALIGN): Moved to align.h. + * final.c (MAX_CODE_ALIGN): Likewise. + * opts.c (parse_and_check_align_values): + (MAX_CODE_ALIGN): Likewise. + (MAX_CODE_ALIGN_VALUE): Likewise. + +2018-07-17 Martin Liska + + * config/i386/att.h (ASM_OUTPUT_ALIGN): Fix spacing + in order to fulfil coding style. + * config/i386/cygming.h (ASM_OUTPUT_ALIGN): Likewise. + * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise. + * config/iq2000/iq2000.h (ASM_OUTPUT_ALIGN): Likewise. + * config/pa/pa.h (ASM_OUTPUT_ALIGN): Likewise. + * config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): Likewise. + * config/sparc/sparc.h (ASM_OUTPUT_ALIGN): Likewise. + * config/visium/visium.h (ASM_OUTPUT_ALIGN): Likewise. + (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + +2018-07-17 Martin Liska + + * align.h: New file. + * config/alpha/alpha.c (alpha_align_insns_1): Use align_functions + directly. + * config/i386/i386.c (ix86_avoid_jump_mispredicts): Use new return type + align_flags of label_to_alignment. + * config/m32r/m32r.h (LOOP_ALIGN): Wrap returned values into + align_flags class. + * config/m68k/m68k.c: Do not use removed align_labels_value and + align_loops_value. + * config/nds32/nds32.h (JUMP_ALIGN): Wrap result into align_flags class. + (LOOP_ALIGN): Likewise. + (LABEL_ALIGN): Likewise. + * config/powerpcspe/powerpcspe.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP): + Remove not used macro. + (rs6000_loop_align): Change return type to align_flags. + (rs6000_loop_align_max_skip): Remove. + * config/rs6000/rs6000-protos.h (rs6000_loop_align): + Change return type to align_flags. + * config/rs6000/rs6000.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP): + Remove not used macro. + (rs6000_loop_align): Change return type to align_flags. + (rs6000_loop_align_max_skip): Remove. + * config/rx/rx.h (JUMP_ALIGN): Wrap integer values + * config/rx/rx-protos.h (rx_align_for_label): Make it + static function. + * config/rx/rx.c (rx_align_for_label): Change return type + to align_flags. + (rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP + macro definitions. + into align_flags class. + (LABEL_ALIGN): Likewise. + (LOOP_ALIGN): Likewise. + * config/s390/s390.c (s390_label_align): Use align_flags + class member. + (s390_asm_output_function_label): Likewise. + * config/sh/sh.c (sh_override_options_after_change): + Use align_flags class directly without macros. + (find_barrier): Likewise. + (barrier_align): Likewise. + (sh_loop_align): Likewise. + * config/spu/spu.c (spu_option_override): + Use align_flags_tuple::get_value instead of removed macros. + (spu_sched_init): Likewise. + * config/spu/spu.h (GTY): Likewise. + * config/visium/visium.c (visium_option_override): + Set "8" as default secondary alignment. + * config/visium/visium.h (SUBALIGN_LOG): Define to 3 + in order to guarantee secondary alignment of 8. + * coretypes.h: Include align.h header file. + * doc/tm.texi: Remove TARGET_ASM_JUMP_ALIGN_MAX_SKIP, + TARGET_ASM_LOOP_ALIGN_MAX_SKIP, TARGET_ASM_LABEL_ALIGN_MAX_SKIP + and TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP macros. + * doc/tm.texi.in: Likewise. + * final.c (struct label_alignment): Remove not used structure. + (LABEL_ALIGN): Change type to align_flags. + (LOOP_ALIGN): Likewise. + (JUMP_ALIGN): Likewise. + (default_loop_align_max_skip): Remove. + (default_label_align_max_skip): Likewise. + (default_jump_align_max_skip): Likewise. + (default_label_align_after_barrier_max_skip): + (LABEL_TO_ALIGNMENT): Change to access label_align vector. + (LABEL_TO_MAX_SKIP): Remove. + (label_to_alignment): Return align_flags type instead of integer. + (label_to_max_skip): Remove. + (align_fuzz): Use align_flags type. + (compute_alignments): Use align_flags type and use align_flags::max + to combine multiple alignments. + (grow_label_align): Grow vec instead of C array. + (update_alignments): Assign just LABEL_TO_ALIGNMENT. + (shorten_branches): Use align_flags type and use align_flags::max + to combine multiple alignments. + (final_scan_insn_1): Remove usage of secondary alignment that comes + from label alignment, but instead use proper secondary alignment + which is computed in grow_label_align. + * flags.h (struct align_flags_tuple): Move to align.h. + (struct align_flags): Likewise. + (state_align_loops): Rename to align_loops. + (state_align_jumps): Rename to align_jumps. + (state_align_labels): Rename to align_labels. + (state_align_functions): Rename to align_functions. + (align_loops_log): Remove. + (align_jumps_log): Remove. + (align_labels_log): Remove. + (align_functions_log): Remove. + (align_loops_max_skip): Remove. + (align_jumps_max_skip): Remove. + (align_labels_max_skip): Remove. + (align_functions_max_skip): Remove. + (align_loops_value): Remove. + (align_jumps_value): Remove. + (align_labels_value): Remove. + (align_functions_value): Remove. + * output.h (label_to_alignment): Change return type to align_flags. + (label_to_max_skip): Remove. + * target.def: Remove loop_align_max_skip, label_align_max_skip, + jump_align_max_skip macros. + * targhooks.h (default_loop_align_max_skip): Remove. + (default_label_align_max_skip): Likewise. + (default_jump_align_max_skip): Likewise. + (default_label_align_after_barrier_max_skip): Remove. + * toplev.c (read_log_maxskip): Use ::normalize function. + (parse_N_M): Remove not used argument and also call ::normalize. + (parse_alignment_opts): Do not pass unused arguments. + * varasm.c (assemble_start_function): Use directly align_functions + instead of removed macros. + * system.h: Do not poison removed macros. + +2018-07-17 Jakub Jelinek + + PR middle-end/86539 + * gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init + and cond temporaries don't have reference type if iterator has + pointer type. For init use &for_pre_body instead of pre_p if + for_pre_body is non-empty. + +2018-07-16 Segher Boessenkool + + * config/rs6000/rs6000.md (truncsf2): Expand truncates of + double-double modes to SFmode directly directly. + (truncsf2_fprs): Delete. + +2018-07-16 Segher Boessenkool + + * config/rs6000/rs6000.c (init_float128_ibm): Use the correct names + for conversions between IFmode and the decimal floating point modes. + (init_float128_ieee): Use the correct names for conversions between + KFmode and the decimal floating point modes. + +2018-07-16 Segher Boessenkool + + * config/rs6000/rs6000.c (init_float128_ibm): Use more correct names + for the conversions between TDmode and IFmode. + (init_float128_ieee): Use more correct names for the conversions + between TDmode and KFmode. + +2018-07-16 Jakub Jelinek + + PR tree-optimization/86526 + * builtins.c (expand_builtin_memcmp): Formatting fixes. + (inline_expand_builtin_string_cmp): Likewise. + (inline_string_cmp): Likewise. Use c_readstr instead of + builtin_memcpy_read_str. Add unit_mode temporary. + +2018-07-16 Bernd Edlinger + + PR middle-end/86528 + * builtins.c (check_access): Bail out if range[0] is no INTEGER_CST. + * expr.c (string_constant): Fix the element size of ARRAY_TYPE. + +2018-07-16 Kelvin Nilsen + + * doc/extend.texi (PowerPC AltiVec Built-in Functions): + Alphabetize prototypes of built-in functions, separating out + built-in functions that are listed in this section but should be + described elsewhere. + +2018-07-16 Uros Bizjak + + PR target/86511 + * expmed.c (emit_store_flag): Do not emit setcc followed by a + conditional move when trapping comparison was split to a + non-trapping one (and vice versa). + +2018-07-16 Ilya Leoshkevich + + * config/s390/s390.c (s390_function_profiler): Generate nops + instead of profiler call sequences. + * config/s390/s390.opt: Add the new option. + +2018-07-16 Ilya Leoshkevich + + * config/s390/s390.c (s390_function_profiler): Generate + __mcount_loc section. + * config/s390/s390.opt: Add the new option. + +2018-07-16 Ilya Leoshkevich + + * common.opt: Add the new warning. + * config/s390/s390.c (s390_function_profiler): Emit "brasl + %r0,__fentry__" when -mfentry is specified. + (s390_option_override_internal): Disallow -mfentry for 31-bit + CPUs. + * config/s390/s390.opt: Add the new option. + +2018-07-16 Richard Biener + + PR lto/86523 + * dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents + for function-local FUNCTION_DECL and RESULT_DECL immediately. + +2018-07-16 Martin Liska + + PR ipa/86529 + * ipa-pure-const.c (malloc_candidate_p): Revert ::get + to ::get_create. + +2017-07-16 Claudiu Zissulescu + + * config/arc/arcHS.md: Update ARCHS scheduling rules. + +2017-07-16 Claudiu Zissulescu + + * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters + for ARCHS4x. + * config/arc/arc-cpus.def (hs4x): New cpu. + (hs4xd): Likewise. + * config/arc/arc-tables.opt: Regenerate. + * config/arc/arc.c (arc_sched_issue_rate): New function. + (TARGET_SCHED_ISSUE_RATE): Define. + (TARGET_SCHED_EXPOSED_PIPELINE): Likewise. + * config/arc/arc.md (attr type): Add fpu_fuse, fpu_sdiv, fpu_ddiv, + fpu_cvt. + (attr tune): Add ARCHS4x tune values. + (attr tune_dspmpy): Define. + (*tst): Correct instruction type. + * config/arc/arcHS.md: Don't use this automaton for ARCHS4x cpus. + * config/arc/arcHS4x.md: New file. + * config/arc/fpu.md: Update instruction type attributes. + * config/arc/t-multilib: Regenerate. + +2018-07-16 Tom de Vries + + PR debug/86455 + * var-tracking.c (vt_initialize): Fix pre_dec handling. + +2018-07-16 Ramana Radhakrishnan + + * config/aarch64/atomics.md (aarch64_store_execlusive): Add + early clobber. + +2018-07-16 Eric Botcazou + + PR tree-optimization/86514 + * tree-ssa-reassoc.c (init_range_entry) : Return for a + conversion to a boolean type from a type with greater precision. + +2018-07-16 Tom de Vries + + * var-tracking.c (vt_initialize): Print adjusted insn slim if + dump_flags request TDF_SLIM. + +2018-07-16 Aldy Hernandez + + * fold-const.c (int_const_binop_1): Abstract... + (wide_int_binop): ...wide int code here. + (poly_int_binop): ...poly int code here. + Abstract the rest of int_const_binop_1 into int_const_binop. + * fold-const.h (wide_int_binop): New. + * tree-vrp.c (vrp_int_const_binop): Call wide_int_binop. + Remove useless PLUS/MINUS_EXPR case. + (zero_nonzero_bits_from_vr): Move wide int code... + (zero_nonzero_bits_from_bounds): ...here. + (extract_range_from_binary_expr_1): Move mask optimization code... + (range_easy_mask_min_max): ...here. + * tree-vrp.h (zero_nonzero_bits_from_bounds): New. + (range_easy_mask_min_max): New. + +2018-07-15 Jeff Law + + PR target/85993 + * config/sh/sh.c (output_mi_thunk): Remove dead conditional + block. + +2018-07-14 Jim Wilson + + * config/riscv/linux.h (TARGET_ASM_FILE_END): New. + +2018-07-14 Paul Koning + + * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes. + +2018-07-13 Jan Hubicka + + * lto-streamer-out.c (copy_function_or_variable): Dump info about + copying section. + +2018-07-13 Bill Schmidt + Steve Munroe + + * config/rs6000/emmintrin.h (_mm_and_si128): New function. + (_mm_andnot_si128): Likewise. + (_mm_or_si128): Likewise. + (_mm_xor_si128): Likewise. + +2018-07-13 Qing Zhao + + PR middle-end/78809 + * builtins.c (expand_builtin_memcmp): Inline the calls first + when result_eq is false. + (expand_builtin_strcmp): Inline the calls first. + (expand_builtin_strncmp): Likewise. + (inline_string_cmp): New routine. Expand a string compare + call by using a sequence of char comparison. + (inline_expand_builtin_string_cmp): New routine. Inline expansion + a call to str(n)cmp/memcmp. + * doc/invoke.texi (--param builtin-string-cmp-inline-length): + New option. + * params.def (BUILTIN_STRING_CMP_INLINE_LENGTH): New. + +2018-07-13 Richard Earnshaw + + * config/arm/driver-arm.c: Include arm-native.h. + (host_detect_local_cpu): Use auto-generated data tables. + (vendors, arm_cpu_table): Delete. Move part information to ... + * config/arm/arm-cpus.in: ... here. + * config/arm/parsecpu.awk (gen_native): New function. + (vendor, part): New CPU fields. + (END): Add support for building the native CPU detection tables. + * config/arm/t-arm (arm-native.h): Add build rule. + (driver-arm.o): Add dependency on arm-native.h. + +2018-07-13 Richard Biener + + PR middle-end/85974 + * match.pd (addr1 - addr2): Allow either of the operand to + have a conversion. + +2018-07-13 Tom de Vries + + * tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated + in remap_ssa_name. + +2018-07-13 Jackson Woodruff + + * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use + arrays instead of numbered variables. + +2018-07-13 Eric Botcazou + + * config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete. + * config/sparc/sparc.c (sparc_compute_frame_size): Make static. + +2018-07-13 Richard Biener + + PR debug/86452 + * dwarf2out.c (gen_type_die_with_usage): Use scope_die_for + instead of get_context_die. + +2018-07-13 Kugan Vivekanandarajah + Richard Biener + + PR middle-end/86489 + * tree-ssa-loop-niter.c (number_of_iterations_popcount): Check + that the loop latch destination where phi is defined. + +2018-07-12 Kito Cheng + + * config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE. + (riscv_expand_epilogue): Add assertion to check interrupt mode. + (riscv_set_current_function): Extract getting interrupt type to new + function. + (riscv_get_interrupt_type): New function. + (riscv_merge_decl_attributes): New function, checking interrupt type is + same. + (TARGET_MERGE_DECL_ATTRIBUTES): Define. + +2018-07-12 Paul Koning + + * config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set + directive. + +2018-07-12 Paul Koning + + * doc/rtl.texi (REG_NONNEG): Remove decrement and branch until + zero reference, add doloop_end instead. + * doc/md.texi (decrement_and_branch_until_zero): Remove. + (Looping patterns): Remove decrement_and_branch_until_zero. Add + detail for doloop_end. + +2018-07-12 Martin Sebor + + PR c/86453 + * attribs.c (decl_attributes): Reject conflicting attributes before + calling attribute handlers. + +2018-07-12 Jan Hubicka + + * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART + parameter. + (gcc::dump_manager::get_dump_file_name): likewise. + (dump_begin): Likewise. + * dumpfile.h (dump_begin): Update prototype. + (gcc::dump_manager::get_dump_file_name, + gcc::dump_manager::get_dump_file_name): Update prototype. + +2018-07-12 Richard Sandiford + + * internal-fn.h (vectorizable_internal_fn_p): New function. + * tree-vect-slp.c (compatible_calls_p): Likewise. + (vect_build_slp_tree_1): Remove nops argument. Handle calls + to internal functions. + (vect_build_slp_tree_2): Update call to vect_build_slp_tree_1. + +2018-07-12 Richard Sandiford + + * fold-const.h (inverse_conditions_p): Declare. + * fold-const.c (inverse_conditions_p): New function. + * match.pd: Use inverse_conditions_p. Add folds of view_converts + that test the inverse condition of a conditional internal function. + * internal-fn.h (vectorized_internal_fn_supported_p): Declare. + * internal-fn.c (internal_fn_mask_index): Handle conditional + internal functions. + (vectorized_internal_fn_supported_p): New function. + * tree-if-conv.c: Include internal-fn.h and fold-const.h. + (any_pred_load_store): Replace with... + (need_to_predicate): ...this new variable. + (redundant_ssa_names): New variable. + (ifcvt_can_use_mask_load_store): Move initial checks to... + (ifcvt_can_predicate): ...this new function. Handle tree codes + for which a conditional internal function exists. + (if_convertible_gimple_assign_stmt_p): Use ifcvt_can_predicate + instead of ifcvt_can_use_mask_load_store. Update after variable + name change. + (predicate_load_or_store): New function, split out from + predicate_mem_writes. + (check_redundant_cond_expr): New function. + (value_available_p): Likewise. + (predicate_rhs_code): Likewise. + (predicate_mem_writes): Rename to... + (predicate_statements): ...this. Use predicate_load_or_store + and predicate_rhs_code. + (combine_blocks, tree_if_conversion): Update after above name changes. + (ifcvt_local_dce): Handle redundant_ssa_names. + * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Handle + general conditional functions. + * tree-vect-stmts.c (vectorizable_call): Likewise. + +2018-07-12 Richard Sandiford + Alan Hayward + David Sherwood + + * internal-fn.h (can_interpret_as_conditional_op_p): Declare. + * internal-fn.c (can_interpret_as_conditional_op_p): New function. + * tree-ssa-math-opts.c (convert_mult_to_fma_1): Handle conditional + plus and minus and convert them into IFN_COND_FMA-based sequences. + (convert_mult_to_fma): Handle conditional plus and minus. + +2018-07-12 Richard Sandiford + + * doc/md.texi (cond_fma, cond_fms, cond_fnma, cond_fnms): Document. + * optabs.def (cond_fma_optab, cond_fms_optab, cond_fnma_optab) + (cond_fnms_optab): New optabs. + * internal-fn.def (COND_FMA, COND_FMS, COND_FNMA, COND_FNMS): New + internal functions. + (FMA): Use DEF_INTERNAL_FLT_FN rather than DEF_INTERNAL_FLT_FLOATN_FN. + * internal-fn.h (get_conditional_internal_fn): Declare. + (get_unconditional_internal_fn): Likewise. + * internal-fn.c (cond_ternary_direct): New macro. + (expand_cond_ternary_optab_fn): Likewise. + (direct_cond_ternary_optab_supported_p): Likewise. + (FOR_EACH_COND_FN_PAIR): Likewise. + (get_conditional_internal_fn): New function. + (get_unconditional_internal_fn): Likewise. + * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 5. + (gimple_match_op::gimple_match_op): Add a new overload for 5 + operands. + (gimple_match_op::set_op): Likewise. + (gimple_resimplify5): Declare. + * genmatch.c (decision_tree::gen): Generate simplifications for + 5 operands. + * gimple-match-head.c (gimple_simplify): Define an overload for + 5 operands. Handle calls with 5 arguments in the top-level overload. + (convert_conditional_op): Handle conversions from unconditional + internal functions to conditional ones. + (gimple_resimplify5): New function. + (build_call_internal): Pass a fifth operand. + (maybe_push_res_to_seq): Likewise. + (try_conditional_simplification): Try converting conditional + internal functions to unconditional internal functions. + Handle 3-operand unconditional forms. + * match.pd (UNCOND_TERNARY, COND_TERNARY): Operator lists. + Define ternary equivalents of the current rules for binary conditional + internal functions. + * config/aarch64/aarch64.c (aarch64_preferred_else_value): Handle + ternary operations. + * config/aarch64/iterators.md (UNSPEC_COND_FMLA, UNSPEC_COND_FMLS) + (UNSPEC_COND_FNMLA, UNSPEC_COND_FNMLS): New unspecs. + (optab): Handle them. + (SVE_COND_FP_TERNARY): New int iterator. + (sve_fmla_op, sve_fmad_op): New int attributes. + * config/aarch64/aarch64-sve.md (cond_) + (*cond__2, *cond__any): New SVE_COND_FP_TERNARY patterns. + +2018-07-12 Richard Sandiford + + * target.def (preferred_else_value): New target hook. + * doc/tm.texi.in (TARGET_PREFERRED_ELSE_VALUE): New hook. + * doc/tm.texi: Regenerate. + * targhooks.h (default_preferred_else_value): Declare. + * targhooks.c (default_preferred_else_value): New function. + * internal-fn.h (conditional_internal_fn_code): Declare. + * internal-fn.c (FOR_EACH_CODE_MAPPING): New macro. + (get_conditional_internal_fn): Use it. + (conditional_internal_fn_code): New function. + * gimple-match.h (gimple_match_cond): New struct. + (gimple_match_op): Add a cond member function. + (gimple_match_op::gimple_match_op): Update all forms to take a + gimple_match_cond. + * genmatch.c (expr::gen_transform): Use the same condition as res_op + for the suboperation, but don't specify a particular else_value. + * tree-ssa-sccvn.c (vn_nary_simplify, vn_reference_lookup_3) + (visit_nary_op, visit_reference_op_load): Pass + gimple_match_cond::UNCOND to the gimple_match_op constructor. + * gimple-match-head.c: Include tree-eh.h + (convert_conditional_op): New function. + (maybe_resimplify_conditional_op): Likewise. + (gimple_resimplify1): Call maybe_resimplify_conditional_op. + (gimple_resimplify2): Likewise. + (gimple_resimplify3): Likewise. + (gimple_resimplify4): Likewise. + (maybe_push_res_to_seq): Return null for conditional operations. + (try_conditional_simplification): New function. + (gimple_simplify): Call it. Pass conditions to the gimple_match_op + constructor. + * match.pd: Fold VEC_COND_EXPRs of an IFN_COND_* call to a new + IFN_COND_* call. + * config/aarch64/aarch64.c (aarch64_preferred_else_value): New + function. + (TARGET_PREFERRED_ELSE_VALUE): Redefine. + +2018-07-12 Jan Hubicka + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream + DECL_FCONTEXT + (hash_tree): Do not hash DECL_FCONTEXT + * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers): + Do not stream DECL_FCONTEXT. + * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise. + * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT. + +2018-07-12 Richard Biener + + PR debug/86462 + * dwarf2out.c (gen_block_die): Only output blocks when they have + at least one !DECL_IGNORED_P variable. + +2018-07-12 Richard Biener + + PR target/84829 + * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC): + Remove -mieee-fp handling. + +2018-07-12 Richard Biener + + * tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus + left-over from last patch. + +2018-07-12 Jakub Jelinek + + PR tree-optimization/86492 + * gimple-ssa-store-merging.c + (imm_store_chain_info::coalesce_immediate_stores): Call + check_no_overlap even for the merge_overlapping case. Formatting fix. + +2018-07-12 Richard Biener + + PR middle-end/86479 + * fold-const.c (fold_binary_op_with_conditional_arg): Do not + move possibly trapping operations into the conditional. + +2018-07-12 Richard Biener + + * tree-ssa-sccvn.c (mprts_hook_cnt): Remove. + (vn_lookup_simplify_result): Remove recursion limit applied + here. + (vn_nary_build_or_lookup_1): Adjust. + (try_to_simplify): Likewise. + * gimple-match-head.c (gimple_resimplify1): Instead apply one + here. + (gimple_resimplify2): Likewise. + (gimple_resimplify3): Likewise. + (gimple_resimplify4): Likewise. + +2018-07-11 Jakub Jelinek + + * config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask): + Use __mmask64 type instead of __mmask8 for __M argument. + * config/i386/avx512fintrin.h (_mm512_mask_xor_epi64, + _mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for + __U argument. + (_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of + __mmask16 for __M argument. + (_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4, + _mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument + to __mmask16 instead of __mmask8. + * config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps, + _mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps, + _mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps, + _mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type + instead of __mmask16 for __U argument. + * config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use + __mmask16 instead of __mmask8 for __U argument. + (_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for + __U argument. + (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of + __mmask16. + (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U + argument. + (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for + __U argument. + (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of + __mmask16. + (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead + of __mmask16. + (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for + __U argument. + (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for + __U argument. + (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for + __U argument. + (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for + __U argument. + (_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask, + _mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change + return type as well as __M argument type and all casts from __mmask8 + to __mmask32. + (_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask, + _mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change + return type as well as __M argument type and all casts from __mmask8 + to __mmask16. + (_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask, + _mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change + return type as well as __M argument type and all casts from __mmask8 + to __mmask32. + (_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask, + _mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change + return type as well as __M argument type and all casts from __mmask8 + to __mmask16. + * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32, + _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of + __mmask16. + +2018-07-11 Grazvydas Ignotas + + * config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask, + _mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32 + for __U argument. + +2018-07-11 Paul Koning + + * doc/md.texi (define_subst): Document how multiple occurrences of + the same argument in the replacement pattern are handled. + +2018-07-11 Paul Koning + + * doc/extend.texi (Common Variable Attributes): Move "mode" into + alphabetical order. + (Common Type Attributes): Add "mode" attribute. + +2018-07-11 Jan Hubicka + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not + stream DECL_ORIGINAL_TYPE. + (DFS::DFS_write_tree_body): Drop hack handling local external decls. + (hash_tree): Do not walk DECL_ORIGINAL_TYPE. + * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers): + Do not walk original type. + * tree-streamer-out.c (streamer_write_chain): Drop hack handling + external decls. + (write_ts_decl_non_common_tree_pointers): Do not stream + DECL_ORIGINAL_TYPE + * tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE. + (find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE. + +2018-07-11 Aldy Hernandez + + * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump + thread twice from the same starting edge. + +2018-07-11 Aldy Hernandez + + * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to... + * gimple.c (gimple_call_nonnull_result_p): ...here... + (gimple_call_nonnull_arg): ...and here. + * gimple.h (gimple_call_nonnull_result_p): New. + (gimple_call_nonnull_arg): New. + +2018-07-11 Richard Earnshaw + + * config/arm/arm-cpus.in: Move information from fpu field of each + cpu definition to the isa field. + * config/arm/parsecpu.awk (fpu): Delete match rule. + (gen_comm_data): Don't add bits from the CPU's FPU entry. + +2018-07-11 Richard Biener + + PR debug/86457 + * dwarf2out.c (init_sections_and_labels): Use + output_asm_line_debug_info consistently. + (dwarf2out_early_finish): Likewise. + (dwarf2out_finish): Remove DW_AT_stmt_list from early generated + type units. + +2018-07-11 Richard Biener + + * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): + Rework father_bb setting in a way to avoid propagating constants + multiple times on a loop body. + +2018-07-10 Mark Wielaard + + PR debug/86459 + * dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert. + +2018-07-10 Richard Biener + + * hash-map.h (hash_map::iterator::operator*): Return + references to key and value. + +2018-07-10 Jakub Jelinek + + PR c++/86443 + * gimplify.c (find_combined_omp_for): Add DATA argument, in addition + to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers, + BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between. + (gimplify_omp_for): For composite loops, move outer + OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost + OMP_FOR/OMP_SIMD if there are any non-trivial wrappers. For class + iterators add any needed clauses. Allow OMP_FOR_ORIG_DECLS to contain + TREE_LIST for both the original class iterator and the "last" helper + var. Gimplify OMP_FOR_PRE_BODY before the outermost composite + loop, remember has_decl_expr from outer composite loops for the + innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT. + +2018-07-09 Martin Sebor + + PR middle-end/77357 + PR middle-end/86428 + * builtins.c (c_strlen): Avoid out-of-bounds warnings when + accessing implicitly initialized array elements. + * expr.c (string_constant): Handle string initializers of + character arrays within aggregates. + * gimple-fold.c (fold_array_ctor_reference): Add argument. + Store element offset. As a special case, handle zero size. + (fold_nonarray_ctor_reference): Same. + (fold_ctor_reference): Add argument. Store subobject offset. + * gimple-fold.h (fold_ctor_reference): Add argument. + +2018-07-09 Paul Koning + + * config/pdp11/pdp11.c (pdp11_addr_cost): New function. + (pdp11_insn_cost): New function. + (pdp11_md_asm_adjust): New function. + (TARGET_INVALID_WITHIN_DOLOOP): Define. + (pdp11_rtx_costs): Update to match machine better. + (output_addr_const_pdp11): Correct format mismatch warnings. + * config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition. + * config/pdp11/pdp11.md: General change to add base_cost and/or + length attributes for use by new pdp11_insn_cost function. + (MIN_BRANCH): Correct definition. + (MIN_SOB): Ditto. + (doloop_end): Use standard pattern name for looping pattern. + (doloop_end_nocc): New. + (movsf): Add another constraint alternative. + (zero_extendqihi2): Add constraint alternatives for not in place + extend. + (zero_extendhisi2): Remove. + (shift patterns): Add CC handling variants. + (bswaphi2): New. + (bswapsi2): New. + (rothi3): New. + (define_peephole2): New peephole to recognize mov that sets CC for + subsequent test. + +2018-07-09 Rainer Orth + + * config/sparc/sparc.c (sparc_fold_builtin) : Adapt for signature change of wi::neg, + wi::add. + +2018-07-09 Jakub Jelinek + + PR c/86420 + * real.c (real_nextafter): Return true if result is denormal. + +2018-07-09 Martin Liska + + * common.opt: Add back wrongly removed attribute. + +2018-07-09 Richard Biener + + PR debug/86413 + * dwarf2out.c (gen_block_die): For an early generated DIE + always output high/low PC attributes. + +2018-07-09 Tom de Vries + + * cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL. + * tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping + onto VAR_DECL with abstract origin. + +2018-07-07 Jim Wilson + + * config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New. + +2018-07-07 Tom de Vries + + * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL. + +2018-07-07 Aldy Hernandez + + * tree-vrp.c (vrp_int_const_binop): Change overflow type to + overflow_type. + (combine_bound): Use wide-int overflow calculation instead of + rolling our own. + * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to + overflow_type. + * fold-const.c (int_const_binop_2): Same. + (extract_muldiv_1): Same. + (fold_div_compare): Same. + (fold_abs_const): Same. + * match.pd: Same. + * poly-int.h (add): Same. + (sub): Same. + (neg): Same. + (mul): Same. + * predict.c (predict_iv_comparison): Same. + * profile-count.c (slow_safe_scale_64bit): Same. + * simplify-rtx.c (simplify_const_binary_operation): Same. + * tree-chrec.c (tree_fold_binomial): Same. + * tree-data-ref.c (split_constant_offset_1): Same. + * tree-if-conv.c (idx_within_array_bound): Same. + * tree-scalar-evolution.c (iv_can_overflow_p): Same. + * tree-ssa-phiopt.c (minmax_replacement): Same. + * tree-vect-loop.c (is_nonwrapping_integer_induction): Same. + * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same. + * vr-values.c (vr_values::adjust_range_with_scev): Same. + * wide-int.cc (wi::add_large): Same. + (wi::mul_internal): Same. + (wi::sub_large): Same. + (wi::divmod_internal): Same. + * wide-int.h: Change overflow type to overflow_type for neg, add, + mul, smul, umul, div_trunc, div_floor, div_ceil, div_round, + mod_trunc, mod_ceil, mod_round, add_large, sub_large, + mul_internal, divmod_internal. + (overflow_type): New enum. + (accumulate_overflow): New. + +2018-07-06 Kugan Vivekanandarajah + + * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New. + (tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern. + +2018-07-06 Kugan Vivekanandarajah + + * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount + argument is checked for zero before entering loop, avoid checking again. + +2018-07-06 Kugan Vivekanandarajah + + * gimplify.h (generic_expr_could_trap_p): Set as global function. + * gimplify.h (generic_expr_could_trap_p): Likwise. + * tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR. + +2018-07-06 Jakub Jelinek + + PR tree-optimization/86401 + * fold-const.c (fold_binary_loc) : Move the + ((A & N) + B) & M -> (A + B) & M etc. optimization into ... + (fold_bit_and_mask): ... here. New helper function for match.pd. + * fold-const.h (fold_bit_and_mask): Declare. + * match.pd (((A & N) + B) & M -> (A + B) & M): New optimization. + +2018-07-06 Peter Bergner + + PR target/86324 + * target.def (translate_mode_attribute): New hook. + * targhooks.h (default_translate_mode_attribute): Declare. + * targhooks.c (default_translate_mode_attribute): New function. + * doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook. + * doc/tm.texi: Regenerate. + * config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define. + (rs6000_translate_mode_attribute): New function. + +2018-07-06 Paul Koning + + * doc/md.texi (define_split): Document DONE and FAIL. + (define_peephole2): Ditto. + +2018-07-05 Jeff Law + + PR tree-optimization/86010 + * tree-ssa-dse.c (compute_trims): More aggressively trim at + both the head and tail of mem* and str* calls. + +2018-07-05 Jim Wilson + + * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*. + +2018-07-05 Indu Bhagat + + * config/aarch64/aarch64-simd.md: correct flags text for + MIN_EXPR replacement. + +2018-07-05 James Clarke + + * configure: Regenerated. + +2018-07-05 Carl Love + + * config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for + float argument to VSX_BUILTIN_DOUBLEH_V4SF. + Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to + VSX_BUILTIN_DOUBLEL_V4SF. + +2018-07-05 Martin Sebor + + PR c++/86400 + * tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather + than its domain to compute its the upper bound of a char array. + +2018-07-05 Nathan Sidwell + + Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C. + * doc/cpp.texi: Update comment. + * doc/tm.texi: Rebuilt. + * doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ... + (SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense. + * doc/extend.texi (Backwards Compatibility): Clarify it is system + headers affected by extern "C". + * system.h: Poison NO_IMPLICIT_EXTERN_C. + * config/alpha/alpha.h, config/arm/uclinux-elf.h, + config/bfin/elf.h, config/cris/cris.h, config/darwin.h, + config/dragonfly.h, config/freebsd.h, config/gnu-user.h, + config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h, + config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h, + config/lynx.h, config/mips/elf.h, config/mmix/mmix.h, + config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h, + config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h, + config/s390/tpf.h, config/sh/newlib.h, config/sol2.h, + config/sparc/openbsd64.h, config/sparc/sp-elf.h, + config/sparc/sp64-elf.h, config/spu/spu.h, + config/stormy16/stormy16.h, config/v850/v850.h, + config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't + define NO_IMPLICIT_EXTERN_C. + * config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C. + +2018-07-05 Tamar Christina + + PR target/84711 + * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE + instead of GET_MODE_SIZE when comparing Units. + +2018-07-05 Tamar Christina + + PR target/84711 + * rtlanal.c (set_noop_p): Constrain on mode change, + include hard-reg-set.h + +2018-07-05 Tamar Christina + + * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size. + +2018-07-05 Jakub Jelinek + + Revert + 2018-07-04 Maxim Ostapenko + + PR sanitizer/84250 + * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static + libasan. + * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan. + +2018-07-04 Maxim Ostapenko + + PR sanitizer/84250 + * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static + libasan. + * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan. + +2018-07-04 Eric Botcazou + + PR middle-end/86380 + * expmed.c (choose_multiplier): Fix incorrect comparison with mask. + +2018-07-04 Aldy Hernandez + + * tree-vrp.c (extract_range_from_binary_expr_1): Initialize + neg_*_op* variables. + +2018-07-04 Martin Liska + + * tree-switch-conversion.c: Define + max_ratio_for_speed and max_ratio_for_size constants. + +2018-07-04 Denys Vlasenko + Martin Liska + + PR middle-end/66240 + PR target/45996 + PR c/84100 + * common.opt: Rename align options with 'str_' prefix. + * common/config/i386/i386-common.c (set_malign_value): New + function. + (ix86_handle_option): Use it to set -falign-* options/ + * config/aarch64/aarch64-protos.h (struct tune_params): Change + type from int to string. + * config/aarch64/aarch64.c: Update default values from int + to string. + * config/alpha/alpha.c (alpha_override_options_after_change): + Likewise. + * config/arm/arm.c (arm_override_options_after_change_1): Likewise. + * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print + max skip conditionally. + * config/i386/freebsd.h (SUBALIGN_LOG): New. + (ASM_OUTPUT_MAX_SKIP_ALIGN): Print + max skip conditionally. + * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print + max skip conditionally. + * config/i386/gnu-user.h (SUBALIGN_LOG): New. + (ASM_OUTPUT_MAX_SKIP_ALIGN): Print + max skip conditionally. + * config/i386/i386.c (struct ptt): Change type from int to + string. + (ix86_default_align): Set default values. + * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print + max skip conditionally. + * config/i386/iamcu.h (SUBALIGN_LOG): New. + (ASM_OUTPUT_MAX_SKIP_ALIGN): + * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): + * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print + max skip conditionally. + * config/i386/openbsdelf.h (SUBALIGN_LOG): New. + (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.: + * config/i386/x86-64.h (SUBALIGN_LOG): New. + (ASM_OUTPUT_MAX_SKIP_ALIGN): Print + max skip conditionally. + (ASM_OUTPUT_MAX_SKIP_PAD): Likewise. + * config/ia64/ia64.c (ia64_option_override): Set default values + for alignment options. + * config/m68k/m68k.c: Handle new str_align_* options. + * config/mips/mips.c (mips_set_compression_mode): Change + type of constants. + (mips_option_override): Set default values for options. + * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal): + Likewise. + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Likewise. + * config/rx/rx.c (rx_option_override): Likewise. + * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log. + (LABEL_ALIGN): Use align_labels_log. + (LOOP_ALIGN): Use align_loops_align. + * config/s390/s390.c (s390_asm_output_function_label): Use new + macros. + * config/sh/sh.c (sh_override_options_after_change): + Change type of constants. + * config/spu/spu.c (spu_sched_init): Likewise. + * config/sparc/sparc.c (sparc_option_override): Set default + values for options. + * config/visium/visium.c (visium_option_override): Likewise. + * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not + emit p2align format with last argument if it's not needed. + * doc/invoke.texi: Document extended format of -falign-*. + * final.c: Use align_labels alignment. + * flags.h (struct target_flag_state): Change type to use + align_flags. + (struct align_flags_tuple): New. + (struct align_flags): Likewise. + (align_loops_log): Redefine macro to use new types. + (align_loops_max_skip): Redefine macro to use new types. + (align_jumps_log): Redefine macro to use new types. + (align_jumps_max_skip): Redefine macro to use new types. + (align_labels_log): Redefine macro to use new types. + (align_labels_max_skip): Redefine macro to use new types. + (align_functions_log): Redefine macro to use new types. + (align_loops): Redefine macro to use new types. + (align_jumps): Redefine macro to use new types. + (align_labels): Redefine macro to use new types. + (align_functions): Redefine macro to use new types. + (align_functions_max_skip): Redefine macro to use new types. + (align_loops_value): New macro. + (align_jumps_value): New macro. + (align_labels_value): New macro. + (align_functions_value): New macro. + * function.c (invoke_set_current_function_hook): Propagate + alignment values from flags to global variables default in + topleev.h. + * ipa-icf.c (sem_function::equals_wpa): Use + cl_optimization_option_eq instead of memcmp. + * lto-streamer.h (cl_optimization_stream_out): Support streaming + of string types. + (cl_optimization_stream_in): Likewise. + * optc-save-gen.awk: Support strings in cl_optimization. + * opth-gen.awk: Likewise. + * opts.c (finish_options): Remove error checking of invalid + value ranges. + (MAX_CODE_ALIGN): Remove. + (MAX_CODE_ALIGN_VALUE): Likewise. + (parse_and_check_align_values): New function. + (check_alignment_argument): Likewise. + (common_handle_option): Use check_alignment_argument. + * opts.h (parse_and_check_align_values): Declare. + * toplev.c (init_alignments): Remove. + (read_log_maxskip): New. + (parse_N_M): Likewise. + (parse_alignment_opts): Likewise. + (backend_init_target): Remove usage of init_alignments. + * toplev.h (parse_alignment_opts): Declare. + * tree-streamer-in.c (streamer_read_tree_bitfields): Add new + argument. + * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise. + * tree.c (cl_option_hasher::equal): New. + * varasm.c: Use new global macros. + +2018-07-04 Denys Vlasenko + + * config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN): + Use a simpler align directive also if MAXSKIP = ALIGN-1. + * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise. + * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N + is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG + define. Use a simpler align directive also if MAXSKIP = ALIGN-1. + * config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + * config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + * config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + +2018-07-04 Martin Liska + Jonathan Wakely + + * coverage.c: Use correct type. + * doc/invoke.texi: Language correction. + +2018-07-03 H.J. Lu + + PR target/85620 + * config/i386/i386.c (rest_of_insert_endbranch): Also generate + ENDBRANCH for non-tail call which may return via indirect branch. + * doc/extend.texi: Document indirect_return attribute. + +2018-07-03 Martin Sebor + + PR tree-optimization/86274 + * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify + precondition. + (format_floating): Correct handling of infinities and NaNs. + +2018-07-03 Martin Sebor + + * print-tree.c (print_real_cst): New function. + (print_node_brief): Call it. + (print_node): Ditto. + +2018-07-03 Jeff Law + + * config/h8300/h8300.md (logical3_sn, logical3): Merge + into a single pattern. + + * config/h8300/h8300.md (ors code_iterator): New. + (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into + a single pattern and single splitter. + (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern. + (iorqi3_1, xorqi3_1): Likewise. + (iorqi3, xorqi3 expanders): Similarly. + + * config/h8300/h8300.md (movmd_internal_normal): Consolidated with + (movmd_internal) into a single pattern using the P mode iterator. + (movmd splitters): Similarly. + (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns. + (movsd splitters): Similarly. + + * config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate + ADDB, ADDW and ADDL into a single ADD attribute which selects the + right table based on the size of the operand. + * config/h8300/h8300.md (length_table): Corresponding changes. All + references to "addb", "addw" and "addl" changed to "add". + (btst patterns): Merge two variants into a single pattern. + (tstqi, tsthi): Likewise. + (addhi3_incdec, addsi3_incdec): Likewise. + (subhi3_h8300hs, subsi3_h8300hs): Likewise. + (mulhi3, mulsi3): Likewise. + (udivhi3, udivsi3): Likewise. + (divhi3, divsi3): Likewise. + (andorqi3, andorhi3, andorsi3): Likewise. + +2018-07-03 Uros Bizjak + + PR target/85694 + * config/i386/sse.md (uavg3_ceil): New expander. + (_uavg3): Simplify expander. + +2018-07-03 Richard Sandiford + + PR tree-optimization/85694 + * config/aarch64/iterators.md (HADD, RHADD): New int iterators. + (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and + UNSPEC_URHADD. + * config/aarch64/aarch64-simd.md (avg3_floor) + (avg3_ceil): New patterns. + +2018-07-03 David Malcolm + + * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from + scan-tree-dump directive. + * gcc.dg/vect/slp-perm-2.c: Likewise. + * gcc.dg/vect/slp-perm-3.c: Likewise. + * gcc.dg/vect/slp-perm-5.c: Likewise. + * gcc.dg/vect/slp-perm-6.c: Likewise. + * gcc.dg/vect/slp-perm-7.c: Likewise. + * gcc.dg/vect/slp-perm-8.c: Likewise. + +2018-07-03 Marek Polacek + + PR middle-end/86202 + * gimple-fold.c (size_must_be_zero_p): Check the type of the size. + +2018-07-03 Richard Biener + + PR ipa/86389 + * tree-ssa-structalias.c (find_func_clobbers): Properly + handle indirect calls. + +2018-07-03 Jeff Law + + * config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators. + (shifts): New code iterator. + (movqi, movhi, movsi, movsf expanders): Consolidate into a single + expander. Fix HImode handling on H8/SX. + (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander. + (subqi3, subhi3, subsi3 expanders): Likewise. + (andqi3, andhi3, andsi3 expanders): Likewise. + (iorqi3, iorhi3, iorsi3 expanders): Likewise. + (xorqi3, xorhi3, xorsi3 expanders): Likewise. + (negqi2, neghi2, negsi2, negsf2 expanders): Likewise. + (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise. + (zero_extendqihi2, zero_extendqisi2): Likewise. + (extendqihi2, extendqisi2): Likewise. + (rotlqi3, rotlhi3, rotlsi3): Likewise. + (neghi2_h8300, negsi2_h8300): Likewise for these patterns. + (rotlqi3_1, rotlhi3_1): Likewise. + (logicalhi3_sn, logicalsi3_sn): Likewise. + (logicalhi3, logicalsi3): Likewise. + +2018-07-03 Richard Sandiford + + * tree-vect-patterns.c (vect_recog_rotate_pattern) + (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern) + (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast) + (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector + type to append_pattern_def_seq instead of creating a stmt_vec_info + directly. + (build_mask_conversion): Likewise. Remove vinfo argument. + (vect_add_conversion_to_patterm): Likewise, renaming to... + (vect_add_conversion_to_pattern): ...this. + (vect_recog_mask_conversion_pattern): Update call to + build_mask_conversion. Pass the vector type to + append_pattern_def_seq here too. + (vect_recog_gather_scatter_pattern): Update call to + vect_add_conversion_to_pattern. + +2018-07-03 Richard Sandiford + + * tree-vect-patterns.c (new_pattern_def_seq): Delete. + (vect_recog_dot_prod_pattern, vect_recog_sad_pattern) + (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern) + (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set + STMT_VINFO_PATTERN_DEF_SEQ to null here. + (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern) + (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use + append_pattern_def_seq instead of new_pattern_def_seq. + (vect_recog_divmod_pattern): Do both of the above. + (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ + is null. + +2018-07-03 Richard Sandiford + + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): + (vect_recog_sad_pattern, vect_recog_widen_op_pattern) + (vect_recog_widen_mult_pattern, vect_recog_pow_pattern): + (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern) + (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern) + (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern) + (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant) + (vect_recog_mult_pattern, vect_recog_divmod_pattern) + (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern) + (vect_recog_mask_conversion_pattern): Replace vec + parameter with a single stmt_vec_info. + (vect_recog_func_ptr): Likewise. + (vect_recog_gather_scatter_pattern): Likewise, folding in... + (vect_try_gather_scatter_pattern): ...this. + (vect_pattern_recog_1): Remove stmts_to_replace and just pass + the stmt_vec_info of the statement to be matched. Don't clear + STMT_VINFO_RELATED_STMT. + (vect_pattern_recog): Update call accordingly. + +2018-07-03 Richard Sandiford + + PR tree-optimization/85694 + * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil) + (uavgM3_ceil): Document new optabs. + * doc/sourcebuild.texi (vect_avg_qi): Document new target selector. + * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal + functions. + * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab) + (savg_ceil_optab): New optabs. + * tree-vect-patterns.c (vect_recog_average_pattern): New function. + (vect_vect_recog_func_ptrs): Add it. + * tree-vect-stmts.c (vectorizable_call): Get the type of the zero + constant directly from the associated lhs. + +2018-07-03 Richard Sandiford + + * tree-vect-patterns.c (vect_split_statement): New function. + (vect_convert_input): Use it to try to split an existing cast. + +2018-07-03 Richard Sandiford + + * poly-int.h (print_hex): New function. + * dumpfile.h (dump_dec, dump_hex): Declare. + * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions. + * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision, + min_input_precision, operation_precision and operation_sign. + * tree-vect-patterns.c (vect_get_range_info): New function. + (vect_same_loop_or_bb_p, vect_single_imm_use) + (vect_operation_fits_smaller_type): Delete. + (vect_look_through_possible_promotion): Add an optional + single_use_p parameter. + (vect_recog_over_widening_pattern): Rewrite to use new + stmt_vec_info infomration. Handle one operation at a time. + (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p) + (vect_truncatable_operation_p, vect_set_operation_type) + (vect_set_min_input_precision): New functions. + (vect_determine_min_output_precision_1): Likewise. + (vect_determine_min_output_precision): Likewise. + (vect_determine_precisions_from_range): Likewise. + (vect_determine_precisions_from_users): Likewise. + (vect_determine_stmt_precisions, vect_determine_precisions): Likewise. + (vect_vect_recog_func_ptrs): Put over_widening first. + Add cast_forwprop. + (vect_pattern_recog): Call vect_determine_precisions. + +2018-07-03 Richard Sandiford + + * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern + statements that have been replaced by further pattern statements. + (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure. + +2018-07-03 Richard Biener + + * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping, + always set *dt. Dump vectype in vectype overload. + * dumpfile.h (dump_gimple_expr): New function. + (dump_gimple_expr_loc): Likewise. + * dumpfile.c (dump_gimple_expr): New function. + (dump_gimple_expr_loc): Likewise. + +2018-07-02 Jeff Law + + * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate + the H8/300, H8/300H and H8/S variants into a single pattern. + (movhi_h8300, movqi_h8300hs): Similarly. + (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern. + (QHI mode iterator): New. + + * config/h8300/h8300.md: Remove trailing whitespace. + +2018-07-02 Jim Wilson + + * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn + instead of emit_insn for interrupt returns. + * config/riscv/riscv.md (riscv_met): Add (return) to rtl. + (riscv_sret, riscv_uret): Likewise. + +2018-07-02 David Malcolm + + * pretty-print.c (selftest::test_pp_format): Move save and restore + of quotes to class auto_fix_quotes, and add an instance. + * selftest.c: Include "intl.h". + (selftest::auto_fix_quotes::auto_fix_quotes): New ctor. + (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor. + * selftest.h (selftest::auto_fix_quotes): New class. + +2018-07-02 Richard Henderson + + * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c + (aarch64_sve_prepare_conditional_op): Remove. + * config/aarch64/aarch64-sve.md (cond_): + Allow aarch64_simd_reg_or_zero as select operand; remove + the aarch64_sve_prepare_conditional_op call. + (cond_): Likewise. + (cond_): Likewise. + (*cond__z): New pattern. + (*cond__z): New pattern. + (*cond__z): New pattern. + (*cond__any): New pattern. + (*cond__any): New pattern. + (*cond__any): New pattern + and a splitters to match all of the *_any patterns. + * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New. + + * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove. + (SVE_COND_FP_BINARY_REV): Remove. + (sve_int_op_rev, sve_fp_op_rev): New. + * config/aarch64/aarch64-sve.md (*cond__0): New. + (*cond__0): New. + (*cond__0): New. + (*cond__2): Rename, add movprfx alternative. + (*cond__2): Similarly. + (*cond__2): Similarly. + (*cond__3): Similarly; use sve_int_op_rev. + (*cond__3): Similarly. + (*cond__3): Similarly; use sve_fp_op_rev. + + * config/aarch64/aarch64-sve.md (cond_): + Remove match_dup 1 from the inner unspec. + (*cond_): Likewise. + + * config/aarch64/aarch64.md (movprfx): New attr. + (length): Default movprfx to 8. + * config/aarch64/aarch64-sve.md (*mul3): Add movprfx alt. + (*madd, *msubmul3_highpart): Likewise. + (*3): Likewise. + (*v3): Likewise. + (*3): Likewise. + (*3): Likewise. + (*fma4, *fnma4): Likewise. + (*fms4, *fnms4): Likewise. + (*div4): Likewise. + +2018-07-02 Richard Sandiford + + * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo + in dump string. + +2018-07-02 Richard Biener + + PR tree-optimization/86363 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Check the + memset argument refers to a non-variable address. + +2018-07-02 Aldy Hernandez + + * tree-vrp.c (extract_range_from_binary_expr_1): Abstract a lot of the + {PLUS,MINUS}_EXPR code to... + (adjust_symbolic_bound): ...here, + (combine_bound): ...here, + (set_value_range_with_overflow): ...and here. + +2018-07-02 Aldy Hernandez + + * tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR + code... + (extract_range_from_abs_expr): ...here. + +2018-07-02 Eric Botcazou + + * config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule + -fno-omit-frame-pointer when not optimizing. + +2018-07-02 Martin Liska + + PR ipa/86279 + * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get. + (propagate_nothrow): Likewise. + +2018-07-02 Martin Liska + + PR ipa/86323 + * ipa-inline.c (early_inliner): Revert wrongly added ::get call. + +2018-07-02 David Malcolm + + * dumpfile.c (dump_generic_expr_loc): Undo removal of this + function in r262149, changing "loc" param from source_location to + const dump_location_t &. + * dumpfile.h (dump_generic_expr_loc): Undo removal of this + declaration, as above. + +2018-07-01 Paul Koning + + * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle + -munit-asm, -mgnu-asm, -mdec-asm. + * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New. + (pdp11_output_labelref): New. + (pdp11_output_def): New. + (pdp11_output_addr_vec_elt): New. + * config/pdp11/pdp11.c: Use tab between opcode and operands. Use + %# and %@ format codes. + (pdp11_option_override): New. + (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define. + (pdp11_output_ident): New. + (pdp11_asm_named_section): New. + (pdp11_asm_init_sections): New. + (pdp11_file_start): New. + (pdp11_file_end): New. + (output_ascii): Use .ascii/.asciz for -mdec-asm. + (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm. Add + %o, like %c but octal. + (pdp11_option_override): New. + * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for + -mdec-asm. + (DATA_SECTION_ASM_OP): Ditto. + (READONLY_DATA_SECTION_ASM_OP): New. + (IS_ASM_LOGICAL_LINE_SEPARATOR): New. + (ASM_GENERATE_INTERNAL_LABEL): Use new function. + (ASM_OUTPUT_LABELREF): Ditto. + (ASM_OUTPUT_DEF): Ditto. + (ASM_OUTPUT_EXTERNAL): New. + (ASM_OUTPUT_SOURCE_FILENAME): New. + (ASM_OUTPUT_ADDR_VEC_ELT): Use new function. + (ASM_OUTPUT_SKIP): Update for -mdec-asm. + * config/pdp11/pdp11.md: Use tab between opcode and operands. Use + %# and %@ format codes. + * config/pdp11/pdp11.opt (mgnu-asm): New. + (mdec-asm): Conflicts with -mgnu-asm and -munix-asm. + (munix-asm): Conflicts with -mdec-asm and -mgnu-asm. + * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm. + +2018-07-01 Aldy Hernandez + + * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid + dereferencing path[] beyond its length. + (debug_path): New. + (debug_all_paths): New. + (rewire_first_differing_edge): New. + (adjust_paths_after_duplication): New. + (duplicate_thread_path): Call adjust_paths_after_duplication. + Add new argument. + (thread_through_all_blocks): Add new argument to + duplicate_thread_path. + +2018-06-30 Jim Wilson + + * config/riscv/predicates.md (p2m1_shift_operand): New. + (high_mask_shift_operand): New. + * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner + pattern using p2m1_shift_operand. + (lshsi3_zero_extend_3+2): New combiner pattern using + high_mask_shift_operand. + +2018-06-30 Richard Sandiford + + * tree-vect-patterns.c (vect_get_external_def_edge): New function, + split out from... + (vect_recog_rotate_pattern): ...here. + (vect_convert_input): Try to insert casts of invariants in the + preheader. + * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the + preheader to be empty. + +2018-06-30 Richard Sandiford + + * tree-vect-patterns.c (append_pattern_def_seq): Take an optional + vector type. If given, install it in the new statement's + STMT_VINFO_VECTYPE. + (vect_element_precision): New function. + (vect_unpromoted_value): New struct. + (vect_unpromoted_value::vect_unpromoted_value): New function. + (vect_unpromoted_value::set_op): Likewise. + (vect_look_through_possible_promotion): Likewise. + (vect_joust_widened_integer, vect_joust_widened_type): Likewise. + (vect_widened_op_tree, vect_convert_input): Likewise. + (vect_convert_inputs, vect_convert_output): Likewise. + (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion + to handle the optional cast of the multiplication result and + vect_widened_op_tree to detect the widened multiplication itself. + Do not require the input and output of promotion casts to have + the same sign, but base the signedness of the operation on the + input rather than the result. If the pattern includes two + promotions, check that those promotions have the same sign. + Do not restrict the MULT_EXPR handling to a double-width result; + handle quadruple-width results and wider. Use vect_convert_inputs + to convert the inputs to the common type. + (vect_recog_sad_pattern): Use vect_look_through_possible_promotion + to handle the optional cast of the ABS result. Also allow a sign + change or a sign extension between the ABS and MINUS. + Use vect_widened_op_tree to detect the widened subtraction and use + vect_convert_inputs to convert the inputs to the common type. + (vect_handle_widen_op_by_const): Delete. + (vect_recog_widen_op_pattern): New function. + (vect_recog_widen_mult_pattern): Use it. + (vect_recog_widen_shift_pattern): Likewise. + (vect_recog_widen_sum_pattern): Use + vect_look_through_possible_promotion to handle the promoted + PLUS_EXPR operand. + +2018-06-30 Richard Sandiford + + * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes + the containing gimple_seq *. + * gimple-iterator.h (gsi_for_stmt): Declare it. + * tree-vect-patterns.c (vect_recog_dot_prod_pattern) + (vect_recog_sad_pattern, vect_recog_widen_sum_pattern) + (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern) + (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern) + (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P + checks. + (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions, + split out from... + (vect_mark_pattern_stmts): ...here. Handle cases in which the + statement being replaced is part of an existing pattern + definition sequence, inserting the new pattern statements before + the original one. + (vect_pattern_recog_1): Don't return a bool. If the statement + is already part of a pattern, instead apply pattern matching + to the pattern definition statements. Don't clear the + STMT_VINFO_RELATED_STMT if is_pattern_stmt_p. + (vect_pattern_recog): Don't break after the first match; + continue processing the pattern definition statements instead. + Don't bail out for STMT_VINFO_IN_PATTERN_P here. + +2018-06-30 Richard Sandiford + + * tree-vect-patterns.c (vect_reassociating_reduction_p): New function. + (vect_recog_dot_prod_pattern, vect_recog_sad_pattern) + (vect_recog_widen_sum_pattern): Use it. + +2018-06-30 Richard Sandiford + + * tree-vect-loop.c (vectorizable_reduction): Assert that the + phi is not a pattern statement and has not been replaced by + a pattern statement. + * tree-vect-patterns.c (type_conversion_p): Don't check + STMT_VINFO_IN_PATTERN_P. + (vect_recog_vector_vector_shift_pattern): Likewise. + (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return + the pattern statement rather than the original statement; check + directly for a WIDEN_MULT_EXPR here. + * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect + vect_is_simple_use to return the pattern statement rather + than the original statement; use is_pattern_stmt_p to check + for such a pattern statement. + * tree-vect-stmts.c (process_use): Expect vect_is_simple_use + to return the pattern statement rather than the original statement; + don't do the same transformation here. + (vect_is_simple_use): If the defining statement has been replaced + by a pattern statement, return the pattern statement instead. + Remove the corresponding (local) transformation from the vectype + overload. + +2018-06-30 Richard Sandiford + + * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the + end and default to null. + * tree-vect-loop.c (vect_create_epilog_for_reduction) + (vectorizable_reduction): Update calls accordingly, dropping the + gimple ** argument if the passed-back statement isn't needed. + * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p) + (vect_recog_rotate_pattern): Likewise. + (vect_recog_mask_conversion_pattern): Likewise. + * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. + (vect_mask_constant_operand_p): Likewise. + * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use): + (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise. + (get_group_load_store_type, get_load_store_type): Likewise. + (vect_check_load_store_mask, vect_check_store_rhs): Likewise. + (vectorizable_call, vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion, vectorizable_assignment): Likewise. + (vectorizable_shift, vectorizable_operation): Likewise. + (vectorizable_store, vect_is_simple_cond): Likewise. + (vectorizable_condition, vectorizable_comparison): Likewise. + (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise. + (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out + and move it to the end. Cope with null def_stmt_outs. + +2018-06-30 Bernd Edlinger + + * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET. + +2018-06-29 Jeff Law + + * config/v850/v850.c (v850_legitimate_address_p): Handle large + displacements for TARGET_V850E2V3 and newer. + (TARGET_LRA_P): Remove. Defaults to LRA now. + * config/v850/v850.md (sign23byte_load): Remove. + (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise. + (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise. + +2018-06-29 Martin Liska + + PR lto/85759 + * coverage.c (coverage_init): Mangle full path name. + * doc/invoke.texi: Document the change. + * gcov-io.c (mangle_path): New. + * gcov-io.h (mangle_path): Likewise. + * gcov.c (mangle_name): Use mangle_path for path mangling. + +2018-06-29 Kyrylo Tkachov + + * config/arm/arm.c (output_move_double): Don't allow STRD instructions + if starting source register is not even. + +2018-06-29 Martin Liska + + PR tree-optimization/86263 + * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion): + Make edge redirection. + +2018-06-29 David Malcolm + + * dumpfile.c (dump_loc): Add indentation based on scope depth. + (dump_scope_depth): New variable. + (get_dump_scope_depth): New function. + (dump_begin_scope): New function. + (dump_end_scope): New function. + * dumpfile.h (get_dump_scope_depth): New declaration. + (dump_begin_scope): New declaration. + (dump_end_scope): New declaration. + (class auto_dump_scope): New class. + (AUTO_DUMP_SCOPE): New macro. + * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of + AUTO_DUMP_SCOPE. + +2018-06-29 Richard Biener + + * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert + compute_all_dependences succeeds. + * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we + exceed --param loop-max-datarefs-for-datadeps. + +2018-06-29 Jakub Jelinek + + * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H. + +2018-06-28 Uros Bizjak + + PR target/86348 + * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use + alternative 0 in preferred_for_speed attribute. + +2018-06-28 Paul Koning + + * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function. + * config/pdp11/pdp11.c (pdp11_shift_length): New function. + * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove. + * config/pdp11/pdp11.md: Correct "length" attribute calculation + for shift insn patterns. + +2018-06-28 David Malcolm + + * cgraph.c (cgraph_node::get_body): Replace assignments to + "dump_file" with calls to set_dump_file. + * dumpfile.c (alt_dump_file): Make static, and group with... + (alt_flags): ...this definition. + (dumps_are_enabled): New variable. + (refresh_dumps_are_enabled): New function. + (set_dump_file): New function. + (set_alt_dump_file): New function. + (gcc::dump_manager::dump_start): Replace assignments to + "dump_file" and "alt_dump_file" with calls to set_dump_file and + set_alt_dump_file. + (gcc::dump_manager::dump_finish): Likewise. + * dumpfile.h (alt_dump_file): Delete decl. + (dumps_are_enabled): New variable decl. + (set_dump_file): New function decl. + (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled" + global. + * tree-nested.c (lower_nested_functions): Replace assignments to + "dump_file" with calls to set_dump_file. + +2018-06-28 Eric Botcazou + + * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the + goto_locus of each outgoing edge of each basic block. + +2018-06-28 Richard Biener + + * dwarf2out.c (decl_scope_table): Remove. + (push_decl_scope): Likewise. + (pop_decl_scope): Likewise. + (gen_type_die_for_member): Do not call push/pop_decl_scope. + (gen_struct_or_union_type_die): Likewise. + (gen_tagged_type_die): Likewise. + (dwarf2out_init): Do not initialize decl_scope_table. + (dwarf2out_c_finalize): Do not free it. + +2018-06-28 Richard Biener + + * dwarf2out.c (gen_subprogram_die): Use is_unit_die when + deciding whether to not re-use a DIE. + +2018-06-28 Richard Biener + + * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an + DW_AT_abstract_origin attribute. + +2018-06-28 Martin Liska + + * tree-switch-conversion.c (jump_table_cluster::can_be_handled): + Use newly introduced constants. + * tree-switch-conversion.h (struct jump_table_cluster): + Define max_ratio_for_size and max_ratio_for_speed. + +2018-06-28 Martin Liska + + * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): + Add new checking assert to catch invalid state. + (jump_table_cluster::can_be_handled): Handle single case + clusters. + (jump_table_cluster::is_beneficial): Bail out for such case. + (bit_test_cluster::find_bit_tests): + Add new checking assert to catch invalid state. + (bit_test_cluster::can_be_handled): Handle single case + clusters. + (bit_test_cluster::is_beneficial): Bail out for such case. + (switch_decision_tree::analyze_switch_statement): + Fix comment. + +2018-06-28 Martin Liska + + * common.opt: Introduce -completion option. + * gcc.c (driver_handle_option): Handle it. + (driver::main): Print completions if completion + is set. + * opt-suggestions.c (option_proposer::get_completions): + New function. + (option_proposer::suggest_completion): Likewise. + (option_proposer::find_param_completions): Likewise. + (verify_autocompletions): Likewise. + (test_completion_valid_options): Likewise. + (test_completion_valid_params): Likewise. + (in_completion_p): Likewise. + (empty_completion_p): Likewise. + (test_completion_partial_match): Likewise. + (test_completion_garbage): Likewise. + (opt_proposer_c_tests): Likewise. + * opt-suggestions.h: Declare new functions. + * opts.c (common_handle_option): Handle OPT__completion_. + * selftest-run-tests.c (selftest::run_tests): Add + opt_proposer_c_tests. + * selftest.c (assert_str_startswith): New. + * selftest.h (assert_str_startswith): Likewise. + (opt_proposer_c_tests): New. + (ASSERT_STR_STARTSWITH): Likewise. + +2018-06-28 Martin Liska + + * Makefile.in: Add opt-suggestions.o. + * gcc-main.c: Include opt-suggestions.h. + * gcc.c (driver::driver): Likewise. + (driver::~driver): Remove m_option_suggestions. + (driver::build_option_suggestions): Moved to option_proposer. + (driver::suggest_option): Likewise. + (driver::handle_unrecognized_options): Use option_proposer. + * gcc.h (class driver): Add new memver m_option_proposer. + * opt-suggestions.c: New file. + * opt-suggestions.h: New file. + +2018-06-28 Martin Liska + + * vec.h (class auto_string_vec): New (moved from auto_argvec). + (auto_string_vec::~auto_string_vec): Likewise. + +2018-06-28 Eric Botcazou + + * tree-inline.h (struct copy_body_data): Move remapping_type_depth and + prevent_decl_creation_for_types fields up and add reset_location field. + * tree-inline.c (remap_gimple_stmt): Force input_location on the new + statement if id->reset_location is true. + (copy_edges_for_bb): Do not set goto_locus on the new edges if + id->reset_location is true. + (copy_phis_for_bb): Force input_location on the arguments if + id->reset_location is true. + (expand_call_inline): Set id->reset_location if DECL_IGNORED_P + is set on the function to be inlined. + +2018-06-27 Stephan Bergmann + + * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf. + +2018-06-27 Dimitar Dimitrov + + * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard + registers for Pmode. + * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning + hard registers for the clobbered pseudo. + +2018-06-27 Paul Koning + + * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle + mutually exclusive options. + * config/pdp11/constraints.md (h): New constraint. + (O): Update definition to match shift code generation. + (D): New constraint. + * config/pdp11/pdp11-modes.def (CCNZ): Define mode. + (CCFP): Remove. + * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New + function. + (output_jump): Change arguments. + (pdp11_fixed_cc_regs): New function. + (pdp11_cc_mode): Ditto. + (pdp11_expand_shift): Ditto. + (pdp11_assemble_shift): Ditto. + (pdp11_small_shift): Ditto. + (pdp11_branch_cost): Remove. + * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments + from output. + (pdp11_register_move_cost): Update for CC registers. + (pdp11_rtx_costs): Add case for LSHIFTRT. + (pdp11_output_jump): Add CCNZ mode conditional branches. + (notice_update_cc_on_set): Remove. + (pdp11_cc_mode): New function. + (simple_memory_operand): Correct pre/post decrement case. + (no_side_effect_operand): New function. + (pdp11_regno_reg_class): Add CC_REGS class. + (pdp11_fixed_cc_regs): New function. + (pdp11_small_shift): New function. + (pdp11_expand_shift): New function to expand shift insns. + (pdp11_assemble_shift): New function to output shifts. + (pdp11_branch_cost): Remove. + (pdp11_modes_tieable_p): Make QI/HI modes tieable. + * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type. + (WCHAR_TYPE): Ditto. + (PTRDIFF_TYPE): Ditto. + (ADJUST_INSN_LENGTH): New macro. + (FIXED_REGISTERS): Add CC registers. + (CALL_USED_REGISTERS): Ditto. + (reg_class): Ditto. + (REG_CLASS_NAMES): Ditto. + (REG_CLASS_CONTENTS): Ditto. + (SELECT_CC_MODE): Use new function. + (TARGET_FLAGS_REGNUM): New macro. + (TARGET_FIXED_CONDITION_CODE_REGS): Ditto. + (cc0_reg_rtx): Remove. + (CC_STATUS_MDEP): Remove. + (CC_STATUS_MDEFP_INIT): Remove. + (CC_IN_FPU): Remove. + (NOTICE_UPDATE_CC): Remove. + (REGISTER_NAMES): Add CC registers. + (BRANCH_COST): Change to constant 1. + * config/pdp11/pdp11.md: Rewrite for CCmode condition code + handling. + * config/pdp11/pdp11.opt (mbcopy): Remove. + (mbcopy-builtin): Remove. + (mbranch-cheap): Remove. + (mbranch-expensive): Remove. + * config/pdp11/predicates.md (expand_shift_operand): Update to + match shift code generation. + (ccnz_operator): New predicate. + * doc/invoke.texi (PDP-11 Options): Remove deleted options + -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive. + Remove non-existent option -mabshi, -mno-abshi. Document mutually + exclusive options. + * doc/md.texi (PDP-11): Document new D and h constraints. Update + description of O constraint. + +2018-06-27 Jeff Law + Austin Law + + * config/v850/v850.md (addsi3_set_flags): New pattern. + (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise. + (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise. + (zero_extendhisi2_v850_set_flags): Likewise. + (zero_extendqisi2_v850_set_flags): Likewise. + (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise. + (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise. + (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise. + + * config/v850/v850-protos.h (notice_update_cc): Remove. + * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove. + (v850_print_operand): Handle 'D' and "d". + (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument. + Add handling of arithmetic/logical operations compared against zero. + (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument. + Do not look at v850_compare_op, instead get mode from last argument. + (v850_gen_compare): Remove + (increment_stack): Use addsi3_clobber_flags to avoid splitting failure + after reload for prologue insns. + (expand_prologue): Account for CLOBBER of CC_REGNUM in various + patterns. + (construct_save_jarl): Likewise. + (TARGET_FLAGS_REGNUM): Define. + * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove. + (NOTICE_UPDATE_CC): Remove. + * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather + than cc0. Conditionalize on reload_completed. + (cmpsi_insn, setfcc_insn): Likewise. + (tst1 splitter): Turn into define_and_split which sets the flags + after reload. + (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise. + (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here. + (cstoresf4, cstoredf4): Clobber the flags. + (cmpsi, cmpsf, cmpdf): Remove expanders. + (setf_insn): Remove pattern. + (addsi3): Turn into define_and_split which clobbers the flags after + reload and a suitable pattern (addsi3_clobber_flags) for use after + reload. + (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise. + (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise. + (ashrsi3, ashrsi3_v850e2): Likewise. + (bins): Clobber the flags. + (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise. + (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise. + (fix_loop_counter, call_internal_short, call_internal_long): Likewise. + (call_value_internal_short, call_value_internal_long): Likewise. + (callt_save_interrupt, callt_return_interrupt): Likewise. + (save_interrupt, return_interrupt): Likewise. + (callt_save_all_interrupt, save_all_interrupt): Likewise. + (_save_all_interrupt, callt_restore_all_interrupt): Likewise. + (restore_all_interrupt, _restore_all_interrupt): Likewise. + (All FP comparisons): Only allow after reload has completed. + (trfsr): Likewise. + (divh, divhu): Tweak output template. + (branch_z_normal, branch_z_invert): Remove + (branch_nz_normal, branch_nz_invert): Likewise. + (extendhisi_insn, extendqisi_insn): Do not clobber flags. + + * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes. + * config/v850/v850.c (notice_update_cc): Remove. + * config/v850/v850.h (CC_OVERFLOW_UNUSABLE): Remove + (CC_NO_CARRY): Likewise. + (NOTICE_UPDATE_CC): Define to nothing. + * config/v850/v850.md: Remove block comment on cc0 handling + Remove "cc" attribute from all patterns. Remove cc_status handling + from all patterns. Minor formatting fixes. + +2018-06-27 Kyrylo Tkachov + + * config/aarch64/aarch64-cores.def (cortex-a76): New entry. + (cortex-a76.cortex-a55): Likewise. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi (AArch64 Options): Document cortex-a76 and + cortex-a76.cortex-a55. + +2018-06-27 Jeff Law + + * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align. + (MULTILIB_DIRNAMES): Similarly. + +2018-06-27 Eric Botcazou + + * gimple.h (gimple_return_retbnd): Delete. + (gimple_return_set_retbnd): Likewise. + * cgraphunit.c (cgraph_node::expand_thunk): Remove call to + gimple_return_set_retbnd. + * gimple-pretty-print.c (dump_gimple_return): Remove call to + gimple_return_retbnd and adjust. + * tree-inline.h (struct copy_body_data): Remove retbnd field. + * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd. + Explicitly return NULL in a couple more cases. Move assertion + on debug statements and remove unreachable code. + (reset_debug_binding): Do not test id->retbnd. + (expand_call_inline): Do not set it. + +2018-06-27 Rasmus Villemoes + + * configure.ac: Add --disable-gcov option. + * configure: Regenerate. + * Makefile.in: Honour @enable_gcov@. + * doc/install.texi: Document --disable-gcov. + +2018-06-27 Kyrylo Tkachov + + * config/arm/arm-cpus.in (cortex-a76): New entry. + (cortex-a76.cortex-a55): Likewise. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Likewise. + * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry. + * doc/invoke.texi (ARM Options): Document cortex-a76 and + cortex-a76.cortex-a55. + +2018-06-27 Tamar Christina + + PR target/85769 + * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern. + +2018-06-27 Siddhesh Poyarekar + + * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete + comment. + (EPILOGUE_USES): Likewise. + +2018-06-26 Eric Botcazou + + * tree-inline.c (remap_location): New function extracted from... + (copy_edges_for_bb): Add ID parameter. Remap goto_locus. + (copy_phis_for_bb): ...here. Call remap_location. + (copy_cfg_body): Adjust call to copy_edges_for_bb. + +2018-06-26 Aaron Sawdey + + * config/rs6000/rs6000-string.c (expand_block_clear): Don't use + unaligned vsx for 16B memset. + +2018-06-26 Segher Boessenkool + + PR target/86285 + * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set + ieee128_float_type_node to long_double_type_node unless + TARGET_LONG_DOUBLE_128 is set. + +2018-06-26 David Malcolm + + * cfgloop.c (get_loop_location): Convert return type from + location_t to dump_user_location_t, replacing INSN_LOCATION lookups + by implicit construction from rtx_insn *, and using + dump_user_location_t::from_function_decl for the fallback case. + * cfgloop.h (get_loop_location): Convert return type from + location_t to dump_user_location_t. + * cgraphunit.c (walk_polymorphic_call_targets): Update call to + dump_printf_loc to pass in a dump_location_t rather than a + location_t, via the gimple stmt. + * coverage.c (get_coverage_counts): Update calls to + dump_printf_loc to pass in dump_location_t rather than a + location_t. + * doc/optinfo.texi (Dump types): Convert example of + dump_printf_loc from taking "locus" to taking "insn". Update + description of the "_loc" calls to cover dump_location_t. + * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and + "selftest.h". + (dump_user_location_t::dump_user_location_t): New constructors, + from gimple *stmt and rtx_insn *. + (dump_user_location_t::from_function_decl): New function. + (dump_loc): Make static. + (dump_gimple_stmt_loc): Convert param "loc" from location_t to + const dump_location_t &. + (dump_generic_expr_loc): Delete. + (dump_printf_loc): Convert param "loc" from location_t to + const dump_location_t &. + (selftest::test_impl_location): New function. + (selftest::dumpfile_c_tests): New function. + * dumpfile.h: Include "profile-count.h". + (class dump_user_location_t): New class. + (struct dump_impl_location_t): New struct. + (class dump_location_t): New class. + (dump_printf_loc): Convert 2nd param from source_location to + const dump_location_t &. + (dump_generic_expr_loc): Delete. + (dump_gimple_stmt_loc): Convert 2nd param from source_location to + const dump_location_t &. + * gimple-fold.c (fold_gimple_assign): Update call to + dump_printf_loc to pass in a dump_location_t rather than a + location_t, via the gimple stmt. + (gimple_fold_call): Likewise. + * gimple-loop-interchange.cc + (loop_cand::analyze_iloop_reduction_var): Update for change to + check_reduction_path. + (tree_loop_interchange::interchange): Update for change to + find_loop_location. + * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for + change in return-type of find_loop_location. + (graphite_regenerate_ast_isl): Likewise. + * graphite-optimize-isl.c (optimize_isl): Likewise. + * graphite.c (graphite_transform_loops): Likewise. + * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to + pass in a dump_location_t rather than a location_t, via the + gimple stmt. + * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. + * ipa.c (walk_polymorphic_call_targets): Likewise. + * loop-unroll.c (report_unroll): Convert "locus" param from + location_t to dump_location_t. + (decide_unrolling): Update for change to get_loop_location's + return type. + * omp-grid.c (struct grid_prop): Convert field "target_loc" from + location_t to dump_user_location_t. + (grid_find_single_omp_among_assignments_1): Updates calls to + dump_printf_loc to pass in a dump_location_t rather than a + location_t, via the gimple stmt. + (grid_parallel_clauses_gridifiable): Convert "tloc" from + location_t to dump_location_t. Updates calls to dump_printf_loc + to pass in a dump_location_t rather than a location_t, via the + gimple stmt. + (grid_inner_loop_gridifiable_p): Likewise. + (grid_dist_follows_simple_pattern): Likewise. + (grid_gfor_follows_tiling_pattern): Likewise. + (grid_target_follows_gridifiable_pattern): Likewise. + (grid_attempt_target_gridification): Convert initialization + of local "grid" from memset to zero-initialization; FIXME: does + this require C++11? Update call to dump_printf_loc to pass in a + optinfo_location rather than a location_t, via the gimple stmt. + * profile.c (read_profile_edge_counts): Updates call to + dump_printf_loc to pass in a dump_location_t rather than a + location_t + (compute_branch_probabilities): Likewise. + * selftest-run-tests.c (selftest::run_tests): Call + dumpfile_c_tests. + * selftest.h (dumpfile_c_tests): New decl. + * tree-loop-distribution.c (pass_loop_distribution::execute): + Update for change in return type of find_loop_location. + * tree-parloops.c (parallelize_loops): Likewise. + * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert + "locus" from location_t to dump_user_location_t. + (canonicalize_loop_induction_variables): Likewise. + * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update + for change in return type of find_loop_location. + * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call + to dump_printf_loc to pass in a dump_location_t rather than a + location_t, via the stmt. + * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children): + Likewise. + * tree-vect-loop-manip.c (find_loop_location): Convert return + type from source_location to dump_user_location_t. + (vect_do_peeling): Update for above change. + (vect_loop_versioning): Update for change in type of + vect_location. + * tree-vect-loop.c (check_reduction_path): Convert "loc" param + from location_t to dump_user_location_t. + (vect_estimate_min_profitable_iters): Update for change in type + of vect_location. + * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from + location_t to dump_location_t. + (vect_slp_bb): Update for change in type of vect_location. + * tree-vectorizer.c (vect_location): Convert from source_location + to dump_user_location_t. + (try_vectorize_loop_1): Update for change in vect_location's type. + (vectorize_loops): Likewise. + (increase_alignment): Likewise. + * tree-vectorizer.h (vect_location): Convert from source_location + to dump_user_location_t. + (find_loop_location): Convert return type from source_location to + dump_user_location_t. + (check_reduction_path): Convert 1st param from location_t to + dump_user_location_t. + * value-prof.c (check_counter): Update call to dump_printf_loc to + pass in a dump_user_location_t rather than a location_t; update + call to error_at for change in type of "locus". + (check_ic_target): Update call to dump_printf_loc to + pass in a dump_user_location_t rather than a location_t, via the + call_stmt. + +2018-06-26 Robin Dapp + + * config/s390/s390.h (enum processor_flags): Do not use + default tune parameter when -march was specified. + +2018-06-26 Jakub Jelinek + + PR target/86314 + * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s): + Check reg_overlap_mentioned_p in addition to reg_set_p with the same + operands. + +2018-06-26 Richard Biener + + PR tree-optimization/86287 + PR bootstrap/86316 + * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free. + (vect_analyze_loop): Initialize n_stmts. + +2018-06-26 Richard Biener + + PR middle-end/86271 + * fold-const.c (fold_convertible_p): Pointer extension + isn't valid. + +2018-06-26 Alexandre Oliva + + PR debug/86064 + * dwarf2out.c (loc_list_has_views): Adjust comments. + (dw_loc_list): Split single cross-partition range with + nonzero locview. + +2018-06-25 Jeff Law + + * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn + on -mbig-switch by default. + + * config/v850/predicates.md (const_float_1_operand): Fix match_code + test. + (const_float_0_operand): Remove unused predicate. + * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP. + (define_c_enum unspec): Add LOOP, RCP and RSQRT constants. + (recipsf2): New expander. Original pattern now called + (recipsf2_insn). + (recipdf2, recipdf2_insn): Similarly. + (rsqrtsf2, rsqrtsf2_insn): Similarly + (rsqrtdf2, rsqrtdf2_insn): Similarly + +2018-06-26 Gerald Pfeifer + + * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5. + Simplify logic for FreeBSD (twice). + +2018-06-25 Martin Sebor + + PR tree-optimization/86204 + * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing + a strnlen result if it's less than the length of the string. + +2018-06-25 Martin Sebor + + PR tree-optimization/85700 + * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment. + * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction. + (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy. + +2018-06-25 Martin Sebor + + * doc/extend.texi (Zero-length arrays): Update and clarify. + +2018-06-25 Michael Meissner + + * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that + added IEEE/IBM long double multilib support on PowerPC little + endian Linux systems. + * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise. + (MULTILIB_DEFAULTS): Likewise. + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Likewise. + * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise. + * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used. + * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used. + +2018-06-25 Alexander Monakov + + PR middle-end/86311 + * sort.cc (REORDER_23): Avoid memcpy with same destination and source. + (REORDER_45): Likewise. + +2018-06-25 Jeff Law + + * config/v850/v850.md (divmodhi4): Make sure to sign extend the + dividend to 32 bits. Adjust length. + (udivmodhi4): Cleanup output template. Fix length. + +2018-06-25 Carl Love + + * config/rs6000/vsx.md: Change word selector to prefered location. + +2018-06-25 Richard Biener + + PR tree-optimization/86304 + * tree-vectorizer.c (vectorize_loops): Walk over new possibly + epilogue-if-converted loops as well. + +2018-06-25 Jan Hubicka + + * lto-section-out.c (lto_begin_section): Do not print section + name for noaddr and unnumbered dumps. + +2018-06-25 Richard Biener + + * tree-vectorizer.h (struct vec_info_shared): New structure + with parts split out from struct vec_info and loop_nest from + struct _loop_vec_info. + (struct vec_info): Adjust accordingly. + (struct _loop_vec_info): Likewise. + (LOOP_VINFO_LOOP_NEST): Adjust. + (LOOP_VINFO_DATAREFS): Likewise. + (LOOP_VINFO_DDRS): Likewise. + (struct _bb_vec_info): Likewise. + (BB_VINFO_DATAREFS): Likewise. + (BB_VINFO_DDRS): Likewise. + (struct _stmt_vec_info): Add dr_aux member. + (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo. + (DR_MISALIGNMENT_UNINITIALIZED): New. + (set_dr_misalignment): Adjust. + (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED. + (vect_analyze_loop): Adjust prototype. + (vect_analyze_loop_form): Likewise. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): + Compute dependences lazily. + (vect_record_base_alignments): Use shared datarefs/ddrs. + (vect_verify_datarefs_alignment): Likewise. + (vect_analyze_data_refs_alignment): Likewise. + (vect_analyze_data_ref_accesses): Likewise. + (vect_analyze_data_refs): Likewise. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add + constructor parameter for shared part. + (vect_analyze_loop_form): Pass in shared part and adjust. + (vect_analyze_loop_2): Pass in storage for the number of + stmts. Move loop nest finding to the caller. Compute + datarefs lazily. + (vect_analyze_loop): Pass in shared part. + (vect_transform_loop): Verify shared datarefs are unchanged. + * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add + constructor parameter for shared part. + (vect_slp_analyze_bb_1): Pass in shared part and adjust. + (vect_slp_bb): Verify shared datarefs are unchanged before + transform. + * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX + change. + (new_stmt_vec_info): Initialize DR_AUX misalignment to + DR_MISALIGNMENT_UNINITIALIZED. + * tree-vectorizer.c (vec_info::vec_info): Add constructor + parameter for shared part. + (vec_info::~vec_info): Adjust. + (vec_info_shared::vec_info_shared): New. + (vec_info_shared::~vec_info_shared): Likewise. + (vec_info_shared::save_datarefs): Likewise. + (vec_info_shared::check_datarefs): Likewise. + (try_vectorize_loop_1): Construct shared part live for analyses + of a single loop for multiple vector sizes. + * tree-parloops.c (gather_scalar_reductions): Adjust. + +2018-06-25 Richard Biener + + * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify + DR for SIMD lane accesses here and mark DR with (void *)-1 aux. + (vect_analyze_data_refs): Remove similar code from here and + simplify accordingly. + +2018-06-25 Richard Biener + + * tree-vect-data-refs.c (vect_check_gather_scatter): Fail + for reverse storage order accesses rather than asserting + they cannot happen here. + +2018-06-25 Tom de Vries + + PR debug/86257 + * config/i386/i386.md (define_insn "*tls_global_dynamic_64_"): + Use data16 instead of .byte for insn prefix. + +2018-06-25 Andreas Krebbel + + PR C++/86082 + * parser.c (make_char_string_pack): Pass this literal chars + through cpp_interpret_string. + (cp_parser_userdef_numeric_literal): Check the result of + make_char_string_pack. + +2018-06-24 Maya Rashish + + * ginclude/stddef.h: Simplify conditions around avoiding + re-definition of __size_t. + +2018-06-22 Jan Hubicka + + * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable + unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL. + +2018-06-22 Maya Rashish + + * doc/invoke.texi (mno-fancy-math-387): Update for changes + made to OpenBSD and NetBSD through the years. + +2018-06-22 Kelvin Nilsen + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change + behavior of vec_pack (vector double, vector double) to match + behavior of vec_float2 (vector double, vector double). + +2018-06-22 Olivier Hainque + + * gimplify.c (gimplify_function_tree): Prevent creation + of a trampoline for the address of the current function + passed to entry/exit instrumentation hooks. + +2018-06-22 Aaron Sawdey + + PR target/86222 + * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32 + correctly. + +2018-06-22 Martin Liska + + PR tree-optimization/86263 + * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): + Bail out if is_enabled is false. + * tree-switch-conversion.h (jump_table_cluster::is_enabled): + New declaration. + (jump_table_cluster::is_enabled): New function. + +2018-06-22 Jan Hubicka + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream + BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD. + * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise. + (lto_input_ts_binfo_tree_pointers): Likewise. + * tree-streamer-out.c (streamer_write_tree_bitfields, + write_ts_binfo_tree_pointers): Likewise. + * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD. + +2018-06-22 Jan Hubicka + + * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs. + +2018-06-22 Martin Liska + + * symbol-summary.h (get): Make it pure and inline move + functionality from ::get function. + (get): Remove and inline into ::get and ::get_create. + (get_create): Move code from ::get function. + +2018-06-22 Rainer Orth + + PR target/85994 + * config/i386/sol2.h (CPP_SPEC): Don't pass -P for + -x assembler-with-cpp. + +2018-06-22 Rainer Orth + + * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define + _FILE_OFFSET_BITS=64 for C++. + +2018-06-21 Michael Meissner + + * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit + conversion insn that shows up when pr85657-3.c is compiled using + IEEE 128-bit long double. + (neg2_internal): Use the correct mode to check whether the + mode is IBM extended. + * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex + multiply and divide external functions from being created more + than once. + +2018-06-21 Eric Botcazou + + * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P + functions. + (rtl_merge_blocks): Likewise. Do not emit a NOP if the location of + the edge can be forwarded. + (cfg_layout_merge_blocks): Likewise. + +2018-06-21 Eric Botcazou + + * except.c (finish_eh_generation): Commit edge insertions only after + the EH edges have been redirected from post-landing to landing pads. + +2018-06-21 Eric Botcazou + + * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of + create_tmp_var_for to create the FRAME decl. + (finalize_nesting_tree_1): Do not unchain the FRAME decl. + +2018-06-21 Eric Botcazou + + * tree-inline.c (copy_edges_for_bb): Minor tweak. + (maybe_move_debug_stmts_to_successors): Also reset the locus of the + debug statement when resetting its value. + (expand_call_inline): Copy the locus of the call onto the assignment + of the return value, if any. Use local variable in more cases. + +2018-06-21 Martin Liska + + * ipa-pure-const.c (propagate_nothrow): Use + funct_state_summaries->get. + (dump_malloc_lattice): Likewise. + (propagate_malloc): Likewise. + +2018-06-21 Richard Biener + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated + comment. Follow BLOCK_ABSTRACT_ORIGIN unconditionally. + * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update + comment. + * tree-streamer-out.c (write_ts_block_tree_pointers): Stream + BLOCK_ABSTRACT_ORIGIN unconditionally. + +2018-06-21 David Malcolm + + * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after + deleting it. + * ipa-reference.c (ipa_reference_c_finalize): Delete + ipa_ref_opt_sum_summaries and set it to NULL. + +2018-06-21 Tom de Vries + + PR tree-optimization/85859 + * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call + test with comment from bb_no_side_effects_p. + +2018-06-21 Richard Biener + + PR tree-optimization/86232 + * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust + max for constant niter. + +2018-06-21 Andre Vieira + + * config/aarch64/aarch64-simd.md + (*aarch64_crypto_aesv16qi_xor_combine): New. + +2018-06-21 Andre Vieira + + * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi): + Make opernads of the unspec commutative. + +2018-06-21 Richard Biener + + * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP. + * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr): + Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters. + (vect_analyze_data_ref_dependence): Re-order checks to deal with + NULL DR_STEP. + (vect_record_base_alignments): Do not record base alignment + for gathers or scatters. + (vect_compute_data_ref_alignment): Drop return value that is always + true. Bail out early for gathers or scatters. + (vect_enhance_data_refs_alignment): Bail out early for gathers + or scatters. + (vect_find_same_alignment_drs): Likewise. + (vect_analyze_data_refs_alignment): Remove dead code. + (vect_slp_analyze_and_verify_node_alignment): Likewise. + (vect_analyze_data_refs): For possible gathers or scatters do + not create an alternate DR, just check their possible validity + and mark them. Adjust DECL_NONALIASED handling to not rely + on DR_BASE_ADDRESS. + * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not + update inits of gathers or scatters. + * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): + Also copy gather/scatter flag to pattern vinfo. + +2018-06-20 Kelvin Nilsen + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change + behavior of vec_packsu (vector unsigned long long, vector unsigned + long long) to match behavior of vec_packs with same signature. + +2018-06-20 Chung-Lin Tang + Thomas Schwinge + Cesar Philippidis + + * gimplify.c (gimplify_scan_omp_clauses): Add support for + OMP_CLAUSE_{IF_PRESENT,FINALIZE}. + (gimplify_adjust_omp_clauses): Likewise. + (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove + support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}. + (gimplify_omp_target_update): Update handling of acc update and + enter/exit data. + * omp-low.c (install_var_field): Remove unused parameter + base_pointers_restrict. + (scan_sharing_clauses): Remove base_pointers_restrict parameter. + Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT, + FINALIZE} + (omp_target_base_pointers_restrict_p): Delete. + (scan_omp_target): Update call to scan_sharing_clauses. + * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT, + FINALIZE}. + * tree-nested.c (convert_nonlocal_omp_clauses): Handle + OMP_CLAUSE_{IF_PRESENT,FINALIZE}. + (convert_local_omp_clauses): Likewise. + * tree-pretty-print.c (dump_omp_clause): Likewise. + * tree.c (omp_clause_num_ops): Add entries for OMP_CLAUSE_{IF_PRESENT, + FINALIZE}. + (omp_clause_code_name): Likewise. + +2018-06-20 Jakub Jelinek + + PR debug/86194 + * var-tracking.c (use_narrower_mode_test): Check if shift amount can + be narrowed. + + PR tree-optimization/86231 + * tree-vrp.c (union_ranges): For ( [ ) ] or ( )[ ] range and + anti-range don't overwrite *vr0min before using it to compute *vr0max. + +2018-06-20 Tom de Vries + + PR tree-optimization/86097 + * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to + iv type if signedness of iv type is not the same as that of *nit. + +2018-06-20 Jakub Jelinek + + * cfgrtl.c (rtl_verify_edges): Formatting fix. If bb->preds has any + EDGE_EH edges, verify they are all EDGE_EH. + +2018-06-20 Maya Rashish + + * ginclude/stddef.h: Limit #include to NetBSD. + +2018-06-20 Kyrylo Tkachov + + * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New. + * config/aarch64/aarch64.c (xgene1_tunings): Add + AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags. + (aarch64_mode_valid_for_sched_fusion_p): + Allow 16-byte modes. + (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p. + * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of + 128-bit modes. + * config/aarch64/aarch64-simd.md (load_pair): + New pattern. + (vec_store_pair): Likewise. + * config/aarch64/iterators.md (VQ2): New mode iterator. + +2018-06-20 Martin Liska + + * tree-switch-conversion.c (jump_table_cluster::can_be_handled): + Change default ratio from 10 to 8. + +2018-06-20 Martin Liska + + * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): + New. + (bit_test_cluster::find_bit_tests): Likewise. + (switch_decision_tree::analyze_switch_statement): Find clusters. + * tree-switch-conversion.h (struct jump_table_cluster): Document + hierarchy. + +2018-06-20 Martin Liska + + * tree-switch-conversion.c (switch_conversion::collect): + Record m_uniq property. + (switch_conversion::expand): Bail out for special conditions. + (group_cluster::~group_cluster): New. + (group_cluster::group_cluster): Likewise. + (group_cluster::dump): Likewise. + (jump_table_cluster::emit): New. + (switch_decision_tree::fix_phi_operands_for_edges): New. + (struct case_node): Remove struct. + (jump_table_cluster::can_be_handled): New. + (case_values_threshold): Moved to header. + (reset_out_edges_aux): Likewise. + (jump_table_cluster::is_beneficial): New. + (bit_test_cluster::can_be_handled): Likewise. + (add_case_node): Remove. + (bit_test_cluster::is_beneficial): New. + (case_bit_test::cmp): New. + (bit_test_cluster::emit): New. + (expand_switch_as_decision_tree_p): Remove. + (bit_test_cluster::hoist_edge_and_branch_if_true): New. + (fix_phi_operands_for_edge): Likewise. + (switch_decision_tree::analyze_switch_statement): New. + (compute_cases_per_edge): Move ... + (switch_decision_tree::compute_cases_per_edge): ... here. + (try_switch_expansion): Likewise. + (switch_decision_tree::try_switch_expansion): Likewise. + (record_phi_operand_mapping): Likewise. + (switch_decision_tree::record_phi_operand_mapping): Likewise. + (emit_case_decision_tree): Likewise. + (switch_decision_tree::emit): Likewise. + (balance_case_nodes): Likewise. + (switch_decision_tree::balance_case_nodes): Likewise. + (dump_case_nodes): Likewise. + (switch_decision_tree::dump_case_nodes): Likewise. + (emit_jump): Likewise. + (switch_decision_tree::emit_jump): Likewise. + (emit_cmp_and_jump_insns): Likewise. + (switch_decision_tree::emit_cmp_and_jump_insns): Likewise. + (emit_case_nodes): Likewise. + (switch_decision_tree::emit_case_nodes): Likewise. + (conditional_probability): Remove. + * tree-switch-conversion.h (enum cluster_type): New. + (PRINT_CASE): New. + (struct cluster): Likewise. + (cluster::cluster): Likewise. + (struct simple_cluster): Likewise. + (simple_cluster::simple_cluster): Likewise. + (struct group_cluster): Likewise. + (struct jump_table_cluster): Likewise. + (struct bit_test_cluster): Likewise. + (struct min_cluster_item): Likewise. + (struct case_tree_node): Likewise. + (case_tree_node::case_tree_node): Likewise. + (jump_table_cluster::case_values_threshold): Likewise. + (struct case_bit_test): Likewise. + (struct switch_decision_tree): Likewise. + (struct switch_conversion): Likewise. + (switch_decision_tree::reset_out_edges_aux): Likewise. + +2018-06-20 Martin Liska + + * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove. + (hoist_edge_and_branch_if_true): Likewise. + (expand_switch_using_bit_tests_p): Likewise. + (struct case_bit_test): Likewise. + (case_bit_test_cmp): Likewise. + (emit_case_bit_tests): Likewise. + (switch_conversion::switch_conversion): New class. + (struct switch_conv_info): Remove old struct. + (collect_switch_conv_info): More to ... + (switch_conversion::collect): ... this. + (check_range): Likewise. + (switch_conversion::check_range): Likewise. + (check_all_empty_except_final): Likewise. + (switch_conversion::check_all_empty_except_final): Likewise. + (check_final_bb): Likewise. + (switch_conversion::check_final_bb): Likewise. + (create_temp_arrays): Likewise. + (switch_conversion::create_temp_arrays): Likewise. + (free_temp_arrays): Likewise. + (gather_default_values): Likewise. + (switch_conversion::gather_default_values): Likewise. + (build_constructors): Likewise. + (switch_conversion::build_constructors): Likewise. + (constructor_contains_same_values_p): Likewise. + (switch_conversion::contains_same_values_p): Likewise. + (array_value_type): Likewise. + (switch_conversion::array_value_type): Likewise. + (build_one_array): Likewise. + (switch_conversion::build_one_array): Likewise. + (build_arrays): Likewise. + (switch_conversion::build_arrays): Likewise. + (gen_def_assigns): Likewise. + (switch_conversion::gen_def_assigns): Likewise. + (prune_bbs): Likewise. + (switch_conversion::prune_bbs): Likewise. + (fix_phi_nodes): Likewise. + (switch_conversion::fix_phi_nodes): Likewise. + (gen_inbound_check): Likewise. + (switch_conversion::gen_inbound_check): Likewise. + (process_switch): Use the newly created class. + (switch_conversion::expand): New. + (switch_conversion::~switch_conversion): New. + * tree-switch-conversion.h: New file. + +2018-06-20 Richard Sandiford + + * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to + tree-vect-patterns.c. + * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function. + (vect_recog_dot_prod_pattern): Use it. Remove the type_in argument. + (vect_recog_sad_pattern): Likewise. + (vect_recog_widen_sum_pattern): Likewise. + (vect_recog_pow_pattern): Likewise. Check for a null vectype. + (vect_recog_widen_shift_pattern): Remove the type_in argument. + (vect_recog_rotate_pattern): Likewise. + (vect_recog_mult_pattern): Likewise. + (vect_recog_vector_vector_shift_pattern): Likewise. + (vect_recog_divmod_pattern): Likewise. + (vect_recog_mixed_size_cond_pattern): Likewise. + (vect_recog_bool_pattern): Likewise. + (vect_recog_mask_conversion_pattern): Likewise. + (vect_try_gather_scatter_pattern): Likewise. + (vect_recog_widen_mult_pattern): Likewise. Check for a null vectype. + (vect_recog_over_widening_pattern): Likewise. + (vect_recog_gather_scatter_pattern): Likewise. + (vect_recog_func_ptr): Move from tree-vectorizer.h + (vect_vect_recog_func_ptrs): Move further down the file. + (vect_recog_func): Likewise. Remove the third argument. + (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs. + (vect_pattern_recog_1): Expect the pattern function to do any + necessary target tests. Also expect it to provide a vector type. + Remove the type_in handling. + +2018-06-20 Richard Sandiford + + * tree-vect-patterns.c (vect_pattern_detected): New function. + (vect_recog_dot_prod_patternm, vect_recog_sad_pattern) + (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern) + (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern + (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern) + (vect_recog_mult_pattern, vect_recog_divmod_pattern) + (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern) + (vect_recog_mask_conversion_pattern) + (vect_try_gather_scatter_pattern): Likewise. + +2018-06-20 Richard Sandiford + + * tree-vect-patterns.c (vect_get_internal_def): New function. + (vect_recog_dot_prod_pattern, vect_recog_sad_pattern) + (vect_recog_vector_vector_shift_pattern, check_bool_pattern) + (search_type_for_mask_1): Use it. + +2018-06-20 Richard Sandiford + + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove + redundant WIDEN_SUM_EXPR handling. + (vect_recog_sad_pattern): Likewise. + +2018-06-20 Richard Sandiford + + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove + redundant check that the types of a PLUS_EXPR or MULT_EXPR agree. + (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR. + (vect_recog_widen_mult_pattern): Likewise MULT_EXPR. + (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR. + +2018-06-20 Richard Sandiford + + * tree-vect-stmts.c (vectorizable_call): Make sure that we + use the stmt_vec_info of the original bb statement for the + new zero assignment, even if the call is part of a pattern. + +2018-06-20 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq + that the sequence is attached to the original statement rather + than the pattern statement. + * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the + PATTERN_DEF_SEQ from the original statement rather than + the main pattern statement. + * tree-vect-stmts.c (free_stmt_vec_info): Likewise. + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise. + (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ. + +2018-06-20 Richard Sandiford + + * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern + definition statements before the early exit for statements that aren't + live or relevant. + * tree-vect-loop.c (vect_transform_loop_stmt): New function, + split out from... + (vect_transform_loop): ...here. Process pattern definition + statements without first checking whether the main pattern + statement is live or relevant. + +2018-06-19 Eric Botcazou + + * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at + -O0 if the locus represent UNKNOWN_LOCATION but have different values. + +2018-06-19 Aaron Sawdey + + * config/rs6000/rs6000-string.c (select_block_compare_mode): Check + TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller. + (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions. + (expand_block_compare): Change select_block_compare_mode call. + (expand_strncmp_align_check): Use new functions, fix comment. + (emit_final_str_compare_gpr): New function. + (expand_strn_compare): Refactor and clean up code. + * config/rs6000/vsx.md (vsx_mov_64bit): Remove *. + +2018-06-19 Tony Reix + Damien Bergamini + David Edelsohn + + * collect2.c (static_obj): New variable. + (static_libs): New variable. + (is_in_list): Uncomment declaration. + (main): Track AIX libraries linked statically. + (is_in_list): Uncomment definition. + (scan_prog_file): Don't add AIX shared libraries initializer + to constructor list if linking statically. + +2018-06-19 Max Filippov + + * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec + constant. + (allocate_stack, frame_blockage, *frame_blockage): New patterns. + +2018-06-19 Jan Hubicka + + * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from + blocks. + +2018-06-19 Martin Liska + + * config/i386/i386.c (ix86_can_inline_p): Do not use + ipa_fn_summaries::get_create. + * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with + get. + (devirtualization_time_bonus): Likewise. + (ipcp_propagate_stage): Likewise. + * ipa-fnsummary.c (redirect_to_unreachable): Likewise. + (edge_set_predicate): Likewise. + (evaluate_conditions_for_known_args): Likewise. + (evaluate_properties_for_edge): Likewise. + (ipa_call_summary::reset): Tranform to ... + (ipa_call_summary::~ipa_call_summary): ... this. + (ipa_fn_summary::reset): Transform to ... + (ipa_fn_summary::~ipa_fn_summary): ... this. + (ipa_fn_summary_t::remove): Rename to ... + (ipa_fn_summary_t::remove_callees): ... this. + (ipa_fn_summary_t::duplicate): Use placement new + instead of memory copy. + (ipa_call_summary_t::duplicate): Likewise. + (ipa_call_summary_t::remove): Remove. + (dump_ipa_call_summary): Change get_create to get. + (ipa_dump_fn_summary): Dump only when summary exists. + (analyze_function_body): Use symbol_summary::get instead + of get_create. + (compute_fn_summary): Likewise. + (estimate_edge_devirt_benefit): Likewise. + (estimate_edge_size_and_time): Likewise. + (inline_update_callee_summaries): Likewise. + (remap_edge_change_prob): Likewise. + (remap_edge_summaries): Likewise. + (ipa_merge_fn_summary_after_inlining): Likewise. + (write_ipa_call_summary): Likewise. + (ipa_fn_summary_write): Likewise. + (ipa_free_fn_summary): Likewise. + * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor. + (struct ipa_call_summary): Likewise. + * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead + of get_create. + * ipa-inline-analysis.c (do_estimate_edge_time): Likewise. + (estimate_size_after_inlining): Likewise. + (estimate_growth): Likewise. + (growth_likely_positive): Likewise. + * ipa-inline-transform.c (clone_inlined_nodes): Likewise. + (inline_call): Likewise. + * ipa-inline.c (caller_growth_limits): Likewise. + (can_inline_edge_p): Likewise. + (can_inline_edge_by_limits_p): Likewise. + (compute_uninlined_call_time): Likewise. + (compute_inlined_call_time): Likewise. + (want_inline_small_function_p): Likewise. + (edge_badness): Likewise. + (update_caller_keys): Likewise. + (update_callee_keys): Likewise. + (inline_small_functions): Likewise. + (inline_to_all_callers_1): Likewise. + (dump_overall_stats): Likewise. + (early_inline_small_functions): Likewise. + (early_inliner): Likewise. + * ipa-profile.c (ipa_propagate_frequency_1): Likewise. + * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. + * ipa-pure-const.c (malloc_candidate_p): Likewise. + * ipa-split.c (execute_split_functions): Likewise. + * symbol-summary.h: Likewise. + * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise. + +2018-06-19 Richard Biener + + * tree-vectorizer.c (try_vectorize_loop_1): Split out of ... + (vectorize_loops): ... here. Fix dbgcnt handling. + (try_vectorize_loop): Wrap try_vectorize_loop_1. + +2018-06-19 Segher Boessenkool + + PR target/86197 + * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An + ieee128 argument takes up only one (vector) register, not two (floating + point) registers. + +2018-06-19 Eric Botcazou + + * gimplify.c (gimplify_init_constructor): Really never clear for an + incomplete constructor if CONSTRUCTOR_NO_CLEARING is set. + +2018-06-19 Richard Biener + + PR tree-optimization/86179 + * tree-vect-patterns.c (vect_pattern_recog_1): Clean up + after failed recognition. + +2018-06-18 Martin Sebor + + PR middle-end/85602 + * calls.c (maybe_warn_nonstring_arg): Handle strncat. + * tree-ssa-strlen.c (is_strlen_related_p): Make extern. + Handle integer subtraction. + (maybe_diag_stxncpy_trunc): Handle nonstring source arguments. + * tree-ssa-strlen.h (is_strlen_related_p): Declare. + +2018-06-18 David Malcolm + + * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd + param from rtx to rtx_insn *. + * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn" + param. + (frv_ifcvt_modify_insn): Likwise. + (frv_ifcvt_modify_final): Likwise for local "existing_insn", + adding an as_a cast. Likewise for local "insn". + * config/mips/mips.c (r10k_insert_cache_barriers): Add an + as_a cast to local "unprotected_region" once + it's been established that it's not NULL or pc_rtx. + * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen + param "sethi" from rtx to rtx_insn *. + (nds32_group_float_insns): Likewise for param "insn". + * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st + param. + (vax_output_int_subtract): Likewise. + * config/vax/vax.c (vax_output_int_add): Likewise for param + "insn". + (vax_output_int_subtract): Likewise. + * emit-rtl.c (set_insn_deleted): Likewise, removing cast. + (emit_pattern_after): Likewise for param "after". + (emit_insn_after): Likewise. + (emit_jump_insn_after): Likewise. + (emit_call_insn_after): Likewise. + (emit_debug_insn_after): Likewise. + (emit_pattern_before): Likewise for param "before". + (emit_insn_before): Likewise. + (emit_jump_insn_before): Likewise. + * final.c (get_insn_template): Likewise for param "insn", removing + a cast. + * output.h (get_insn_template): Likewise for 2nd param. + * rtl.h (emit_insn_before): Likewise. + (emit_jump_insn_before): Likewise. + (emit_debug_insn_before_noloc): Likewise. + (emit_insn_after): Likewise. + (emit_jump_insn_after): Likewise. + (emit_call_insn_after): Likewise. + (emit_debug_insn_after): Likewise. + (set_insn_deleted): Likewise for param. + +2018-06-18 Michael Meissner + + PR target/85358 + * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit + floating point modes, so that IFmode is numerically greater than + TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE + to declare the ordering. This prevents IFmode from being + converted to TFmode when long double is IEEE 128-bit on an ISA 3.0 + machine. Include rs6000-modes.h to share the fractional values + between genmodes* and the rest of the compiler. + (IFmode): Likewise. + (KFmode): Likewise. + (TFmode): Likewise. + * config/rs6000/rs6000-modes.h: New file. + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the + meaning of rs6000_long_double_size so that 126..128 selects an + appropriate 128-bit floating point type. + (rs6000_option_override_internal): Likewise. + * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h. + (TARGET_LONG_DOUBLE_128): Change the meaning of + rs6000_long_double_size so that 126..128 selects an appropriate + 128-bit floating point type. + (LONG_DOUBLE_TYPE_SIZE): Update comment. + * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the + source and destination to match the standard usage. + (truncifkf2): Likewise. + (copysign3, IEEE iterator): Rework copysign of float128 on + ISA 2.07 to use an explicit clobber, instead of passing in a + temporary. + (copysign3_soft): Likewise. + +2018-06-18 David Malcolm + + * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): + Replace dump_printf_loc call with DUMP_VECT_SCOPE. + (vect_slp_analyze_instance_dependence): Likewise. + (vect_enhance_data_refs_alignment): Likewise. + (vect_analyze_data_refs_alignment): Likewise. + (vect_slp_analyze_and_verify_instance_alignment + (vect_analyze_data_ref_accesses): Likewise. + (vect_prune_runtime_alias_test_list): Likewise. + (vect_analyze_data_refs): Likewise. + * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise. + * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. + (vect_analyze_scalar_cycles_1): Likewise. + (vect_get_loop_niters): Likewise. + (vect_analyze_loop_form_1): Likewise. + (vect_update_vf_for_slp): Likewise. + (vect_analyze_loop_operations): Likewise. + (vect_analyze_loop): Likewise. + (vectorizable_induction): Likewise. + (vect_transform_loop): Likewise. + * tree-vect-patterns.c (vect_pattern_recog): Likewise. + * tree-vect-slp.c (vect_analyze_slp): Likewise. + (vect_make_slp_decision): Likewise. + (vect_detect_hybrid_slp): Likewise. + (vect_slp_analyze_operations): Likewise. + (vect_slp_bb): Likewise. + * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise. + (vectorizable_bswap): Likewise. + (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro. + +2018-06-18 Martin Sebor + + PR tree-optimization/81384 + * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New. + * builtins.c (expand_builtin_strnlen): New function. + (expand_builtin): Call it. + (fold_builtin_n): Avoid setting TREE_NO_WARNING. + * builtins.def (BUILT_IN_STRNLEN): New. + * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN. + Warn for bounds in excess of maximum object size. + * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing + single-value ranges. Handle strnlen. + (handle_builtin_strlen): Handle strnlen. + (strlen_check_and_optimize_stmt): Same. + * doc/extend.texi (Other Builtins): Document strnlen. + +2018-06-18 Maya Rashish + + * config/alpha/openbsd.h (TARGET_DEFAULT): Define. + (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise. + (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise. + + * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from + here to ... + * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here. + +2018-06-18 Prathamesh Kulkarni + + * tree.c (escaped_string::escape): Replace cast to char * by + const_cast (unescaped). + +2018-06-18 Nick Clifton + + PR 84195 + * tree.c (escaped_string): New class. Converts an unescaped + string into its escaped equivalent. + (warn_deprecated_use): Use the new class to convert the + deprecation message, if present. + (test_escaped_strings): New self test. + (test_c_tests): Add test_escaped_strings. + * doc/extend.texi (deprecated): Add a note that the + deprecation message is affected by the -fmessage-length + option, and that control characters will be escaped. + (#pragma GCC error): Document this pragma. + (#pragma GCC warning): Likewise. + * doc/invoke.texi (-fmessage-length): Document this option's + effect on the #warning and #error preprocessor directives and + the deprecated attribute. + +2018-06-18 Eric Botcazou + + * tree.c (decl_value_expr_lookup): Revert latest change. + (decl_value_expr_insert): Likewise. + +2018-06-17 Eric Botcazou + + * gimplify.c (nonlocal_vlas): Delete. + (nonlocal_vla_vars): Likewise. + (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local + referenced VLAs. + (gimplify_body): Do not create and destroy nonlocal_vlas. + * tree-nested.c: Include diagnostic.h. + (use_pointer_in_frame): Tweak. + (lookup_field_for_decl): Add assertion and declare the transformation. + (convert_nonlocal_reference_op) : Rework and issue an + internal error when the reference is in a wrong context. Do not + create a debug decl by default. + (note_nonlocal_block_vlas): Delete. + (convert_nonlocal_reference_stmt) : Do not call it. + (convert_local_reference_op) : Skip the frame decl. Do not + create a debug decl by default. + (convert_gimple_call) : Issue an internal error when the + call is in a wrong context. + (fixup_vla_decls): New function. + (finalize_nesting_tree_1): Adjust comment. Call fixup_vla_decls if no + debug variables were created. + * tree.c (decl_value_expr_lookup): Add checking assertion. + (decl_value_expr_insert): Likewise. + +2018-06-16 Kugan Vivekanandarajah + + PR middle-end/82479 + * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR. + * tree-scalar-evolution.c (interpret_expr): Likewise. + (expression_expensive_p): Likewise. + * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise. + * tree-ssa-loop-niter.c (number_of_iterations_popcount): New. + (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount. + (ssa_defined_by_minus_one_stmt_p): New. + +2018-06-16 Kugan Vivekanandarajah + + PR middle-end/64946 + * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR. + * config/i386/i386.c (ix86_add_stmt_cost): Likewise. + * dojump.c (do_jump): Likewise. + * expr.c (expand_expr_real_2): Check operand type's sign. + * fold-const.c (const_unop): Handle ABSU_EXPR. + (fold_abs_const): Likewise. + * gimple-pretty-print.c (dump_unary_rhs): Likewise. + * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie. + (strip_sign_op_1): Likesise. + * match.pd: Add new pattern to generate ABSU_EXPR. + * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR. + * tree-cfg.c (verify_gimple_assign_unary): Likewise. + * tree-eh.c (operation_could_trap_helper_p): Likewise. + * tree-inline.c (estimate_operator_cost): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise. + * tree.def (ABSU_EXPR): New. + +2018-06-16 Jakub Jelinek + + PR middle-end/86095 + * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var, + documented as preserved for backward compatibility only. + * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation. + + PR rtl-optimization/86108 + * bb-reorder.c (create_forwarder_block): Renamed to ... + (create_eh_forwarder_block): ... this. Split OLD_BB after labels and + jump from new landing pad to the second part. + (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad): + Adjust callers. + +2018-06-15 Jakub Jelinek + + PR middle-end/85878 + * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P + check from first store_expr, use to_mode instead of GET_MODE (to_rtx). + Only call store_expr for halves if the mode is the same. + + PR middle-end/86123 + * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions. + Fix up comment formatting. + +2018-06-15 Bernd Edlinger + + * typed-splay-tree.h (typed_splay_tree::remove): New function. + (typed_splay_tree::closure, + typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted. + (typed_splay_tree::typed_splay_tree, + typed_splay_tree::operator =): Declared private. + (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value, + typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL, + typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper, + typed_splay_tree::rotate_left, typed_splay_tree::rotate_right, + typed_splay_tree::splay_tree_splay, + typed_splay_tree::splay_tree_foreach_helper, + typed_splay_tree::splay_tree_insert, + typed_splay_tree::splay_tree_remove, + typed_splay_tree::splay_tree_lookup, + typed_splay_tree::splay_tree_predecessor, + typed_splay_tree::splay_tree_successor, + typed_splay_tree::splay_tree_min, + typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h. + (typed_splay_tree::root, typed_splay_tree::comp, + typed_splay_tree::delete_key, + typed_splay_tree::delete_value): New data members. + * typed-splay-tree.c (selftest::test_str_to_int): Add a test for + typed_splay_tree::remove. + +2018-06-15 Matthew Fortune + + * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc, + -mginv and -mno-ginv to the assembler. + * config/mips/mips.opt (-mcrc): New option. + (-mginv): Likewise. + * doc/invoke.text (-mcrc): Document. + (-mginv): Likewise. + +2018-06-15 Nick Clifton + + PR 84195 + * tree.c (escaped_string): New class. Converts an unescaped + string into its escaped equivalent. + (warn_deprecated_use): Use the new class to convert the + deprecation message, if present. + (test_escaped_strings): New self test. + (test_c_tests): Add test_escaped_strings. + * doc/extend.texi (deprecated): Add a note that the + deprecation message is affected by the -fmessage-length + option, and that control characters will be escaped. + (#pragma GCC error): Document this pragma. + (#pragma GCC warning): Likewise. + * doc/invoke.texi (-fmessage-length): Document this option's + effect on the #warning and #error preprocessor directives and + the deprecated attribute. + +2018-06-15 Richard Biener + + * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS + here, also noting vector size used. + * tree-vectorizer.c (vectorize_loops): Adjust. Note vector + size used in MSG_OPTIMIZED_LOCATIONS dump. + (pass_slp_vectorize::execute): Adjust. + +2018-06-15 Claudiu Zissulescu + + PR target/85968 + * config/arc/arc.c (arc_return_address_register): Fix + if-condition. + +2018-06-15 Richard Biener + + PR middle-end/86159 + * tree-cfg.c (gimplify_build3): Do not strip sign conversions, + leave useless conversion stripping to force_gimple_operand_gsi. + (gimplify_build2): Likewise. + (gimplify_build1): Likewise. + +2018-06-15 Richard Biener + + PR middle-end/86076 + * tree-cfg.c (move_stmt_op): unshare invariant addresses + before adjusting their block. + +2018-06-15 Sebastian Huber + + * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom + multilibs for *-*-rtems*. + * config/riscv/t-rtems: New file. + +2018-06-14 Jakub Jelinek + + PR middle-end/86122 + * match.pd ((A +- CST1) +- CST2): Punt if last resort + unsigned_type_for returns NULL. + + PR target/85945 + * lower-subreg.c (find_decomposable_subregs): Don't decompose float + subregs of multi-word pseudos unless the float mode has word size. + +2018-06-14 Richard Biener + + PR middle-end/86139 + * tree-vect-generic.c (build_word_mode_vector_type): Remove + duplicate and harmful type_hash_canon. + * tree.c (type_hash_canon): Assert we didn't find ourselves. + +2018-06-14 Richard Biener + + PR ipa/86124 + * tree-ssa-struct-alias.c (create_variable_info_for): Handle + NULL cgraph_node. + +2018-06-14 Sebastian Huber + + * config/rtems.h (STDINT_LONG32): Define. + +2018-06-13 Matthew Fortune + Prachi Godbole + + * config/mips/mips-cpus.def: Define P6600. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/mips.c (mips_ucbranch_type): New enum. + (mips_rtx_cost_data): Add support for P6600. + (mips_issue_rate): Likewise. + (mips_multipass_dfa_lookahead): Likewise. + (mips_avoid_hazard): Likewise. + (mips_reorg_process_insns): Likewise. + (mips_classify_branch_p6600): New function. + * config/mips/mips.h (TUNE_P6600): New define. + (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600. + (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600. + * config/mips/mips.md: Include p6600.md. + (processor): Add p6600. + * config/mips/p6600.md: New file. + * doc/invoke.texi: Add p6600 to supported architectures. + +2018-06-13 Martin Sebor + + PR tree-optimization/86114 + * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS + of integer types. + * tree-ssa-strlen.c (maybe_set_strlen_range): Same. + +2018-06-13 Richard Biener + + * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern): + Properly set vector type of the intermediate stmt. + * tree-vect-stmts.c (vectorizable_operation): The destination + var always has vectype_out type. + +2018-06-13 Jeff Law + + * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than + integer 0 for argument to print_rtl_with_bb. + (rl78_reorg): Likewise. + +2018-06-13 David Malcolm + + * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label" + from rtx to rtx_insn *. + * config/bfin/bfin.c (hwloop_optimize): Likewise for local + "label". + (add_sched_insns_for_speculation): Likewise for local "target", + converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN. + * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels" + from rtx_insn ** to rtx_code_label **. + (reorg_emit_nops): Likewise. + (c6x_reorg): Likewise for local "call_labels". + * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from + rtx to rtx_insn *. + * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to + rtx_code_label *, adding safe_as_a casts to + the loops over LABEL_REFS. + (fixup_addr_diff_vecs): Add as_a to usage of + braf_label. + (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN. + (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *. + (split_branches): Strengthen local "olabel" from rtx to + rtx_insn *, adding a safe_as_a cast. + * emit-rtl.c (next_real_insn): Strengthen param from "rtx" + to "rtx_insn *". + (add_insn_after): Likewise for first two params. + (add_insn_before): Likewise. + (remove_insn): Likewise for param. + (emit_pattern_before_noloc): Likewise for second and third params. + (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL. + (emit_call_insn_before_noloc): Likewise. + (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx" + to "rtx_insn *". + (emit_barrier_before): Likewise. + (emit_label_before): Strengthen "label" param from "rtx" to + "rtx_code_label *". Strengthen "before" param from "rtx" to + "rtx_insn *". + (emit_insn_after_1): Strengthen "after" param from "rtx" to + "rtx_insn *". + (emit_pattern_after_noloc): Likewise. + (emit_insn_after_noloc): Likewise. + (emit_jump_insn_after_noloc): Likewise. + (emit_call_insn_after_noloc): Likewise. + (emit_debug_insn_after_noloc): Likewise. + (emit_barrier_after): Likewise. + (emit_label_after): Likewise for both params. + (emit_pattern_after_setloc): Likewise for "after" param. Convert + "loc" param from "int" to "location_t". + (emit_insn_after_setloc): Likewise. + (emit_jump_insn_after_setloc): Likewise. + (emit_call_insn_after_setloc): Likewise. + (emit_debug_insn_after_setloc): Likewise. + (emit_pattern_before_setloc): Likewise for "before" param. Convert + "loc" param from "int" to "location_t". + (emit_pattern_before): Convert NULL_RTX to NULL. + (emit_insn_before_setloc): Convert "loc" param from "int" to + "location_t". + (emit_jump_insn_before_setloc): Likewise. + (emit_call_insn_before_setloc): Likewise. + (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to + rtx_insn *. Convert "loc" param from "int" to "location_t". + * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc, + emit_call_insn_before_setloc, emit_debug_insn_before_setloc): + Convert 3rd param from "int" to "location_t". + (emit_barrier_before, emit_barrier_after, next_real_insn): + Strengthen param from rtx to rtx_insn *. + (emit_label_before): Strengthen 1st param from "rtx" to + "rtx_code_label *". Strengthen 2nd param from "rtx" to + "rtx_insn *". + (emit_insn_after_noloc, emit_jump_insn_after_noloc, + emit_call_insn_after_noloc, emit_debug_insn_after_noloc): + Strengthen 2nd param from "rtx" to "rtx_insn *". + (emit_insn_after_setloc, emit_jump_insn_after_setloc) + emit_call_insn_after_setloc, emit_debug_insn_after_setloc): + Likewise. Convert 3rd param from "int" to "location_t". + (emit_label_after): Strengthen 1st param from "rtx" to + "rtx_code_label *". + (next_real_insn, remove_insn): Strengthen param from "rtx" to + "rtx_insn *". + (add_insn_before, add_insn_after): Strengthen 1st and 2nd params + from "rtx" to "rtx_insn *". + +2018-06-13 Jan Hubicka + + * cgraph.c (cgraph_node::get_untransformed_body): Dump function + bodies streamed in with -Q. + * dumpfile.c (dump_files): Add lto-stream-out dump file. + * dumpfile.h (tree_dump_index): Add lto_stream_out. + * gimple-streamer-out.c: Include gimple-pretty-print.h + (output_bb): Dump stmts streamed. + * lto-section-out.c: Include print-tree.h + (lto_begin_section): Dump sections created. + (lto_output_decl_index): Dump decl encoded. + * lto-streamer-out.c: Include print-tree.h + (create_output_block): Dump output block created. + (DFS::DFS_write_tree_body): Dump DFS SCCs streamed. + (output_function): Dump function output. + (output_constructor): Dump constructor streamed. + (write_global_stream): Output indexes encoded. + (produce_asm_for_decls): Dump streams encoded. + * lto-streamer.c (streamer_dump_file): New global var. + * lto-streamer.h (streamer_dump_file): Declare. + * passes.c (ipa_write_summaries): Initialize streamer dump. + * varpool.c (varpool_node::get_constructor): Dump constructors streamed + in. + +2018-06-13 Eric Botcazou + + PR target/86048 + * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative + offsets for register save directives. Emit a second batch of save + directives, if need be, when the function accesses prior frames. + +2018-06-12 Claudiu Zissulescu + + * config/arc/fpu.md (fmasf4): Force operand to register. + (fnmasf4): Likewise. + +2018-06-12 Claudiu Zissulescu + + * config/arc/arc-protos.h (arc_pad_return): Remove. + * config/arc/arc.c (machine_function): Remove force_short_suffix + and size_reason. + (arc_print_operand): Adjust printing of '&'. + (arc_verify_short): Remove conditional printing of short suffix. + (arc_final_prescan_insn): Remove reference to size_reason. + (pad_return): New function. + (arc_reorg): Call pad_return. + (arc_pad_return): Remove. + (arc_init_machine_status): Remove reference to force_short_suffix. + * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE. + (attr length): When attribute iscompact is true force to 2 + regardless; in the case of maybe check if we want to force the + instruction to have 4 bytes length. + (nopv): Change it to generate 4 byte long nop as well. + (blockage): New pattern. + (simple_return): Remove call to arc_pad_return. + (p_return_i): Likewise. + +2018-06-12 Claudiu Zissulescu + + * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define. + +2018-06-12 Claudiu Zissulescu + + * config/arc/builtins.def (SYNC): SYNC instruction is valid on all + ARC cores. + +2018-06-12 Claudiu Zissulescu + + * config/arc/arc.c (atomic_exchangesi): EX instruction is default + for ARC700 and ARCv2. + +2018-06-13 Chenghua Xu + + PR target/86076 + * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for + operands[2] instead of operands[1]. + + +2018-06-12 Richard Sandiford + + * lra-constraints.c (simplify_operand_subreg): In the paradoxical + case, check whether the outer register overlaps an unallocatable + register, not just whether it fits the required class. + +2018-06-12 Richard Sandiford + + * poly-int.h (can_div_trunc_p): Add new overload in which all values + are poly_ints. + * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p. + (memrefs_conflict_p): Likewise. + (init_alias_analysis): Likewise. + * cfgexpand.c (expand_debug_expr): Likewise. + * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise. + * cse.c (fold_rtx): Likewise. + * explow.c (adjust_stack, anti_adjust_stack): Likewise. + * expr.c (emit_block_move_hints): Likewise. + (clear_storage_hints, push_block, emit_push_insn): Likewise. + (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise. + (emit_group_load_1): Use rtx_to_poly_int64 for group offsets. + (emit_group_store): Likewise. + (find_args_size_adjust): Use strip_offset. Use rtx_to_poly_int64 + to read the PRE/POST_MODIFY increment. + * calls.c (store_one_arg): Use strip_offset. + * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to + poly_int_rtx_p. + (set_noop_p): Use rtx_to_poly_int64 for the elements selected + by a VEC_SELECT. + * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset. + (simplify_binary_operation_1): Extend CONST_INT handling to + poly_int_rtx_p. + * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather + than a HOST_WIDE_INT. + (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to + poly_int64. + (adjust_mems, add_stores): Update accodingly. + (vt_canonicalize_addr): Track polynomial offsets. + (emit_note_insn_var_location): Likewise. + (vt_add_function_parameter): Likewise. + (vt_initialize): Likewise. + +2018-06-12 Jeff Law + + * config.gcc (alpha*-*-freebsd*): Remove. + * config/alpha/freebsd.h: Remove. + +2018-06-12 David Malcolm + + PR other/69968 + * spellcheck-tree.c (levenshtein_distance): Rename to... + (get_edit_distance): ...this, and update for underlying renaming. + * spellcheck-tree.h (levenshtein_distance): Rename to... + (get_edit_distance): ...this. + * spellcheck.c (levenshtein_distance): Rename to... + (get_edit_distance): ...this. Convert from Levenshtein distance + to Damerau-Levenshtein distance by supporting transpositions of + adjacent characters. Rename "v1" to "v_next" and "v0" to + "v_one_ago". + (selftest::levenshtein_distance_unit_test_oneway): Rename to... + (selftest::test_edit_distance_unit_test_oneway): ...this, and + update for underlying renaming. + (selftest::levenshtein_distance_unit_test): Rename to... + (selftest::test_get_edit_distance_unit): ...this, and update for + underlying renaming. + (selftest::test_find_closest_string): Add example from PR 69968 + where transposition helps + (selftest::test_metric_conditions): Update for renaming. + (selftest::test_metric_conditions): Likewise. + (selftest::spellcheck_c_tests): Likewise. + * spellcheck.h (levenshtein_distance): Rename both overloads to... + (get_edit_distance): ...this. + (best_match::consider): Update for renaming. + +2018-06-12 Martin Sebor + + PR tree-optimization/85259 + * builtins.c (compute_objsize): Handle constant offsets. + * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return + true iff a warning has been issued. + * gimple.h (gimple_nonartificial_location): New function. + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call + gimple_nonartificial_location and handle -Wno-system-headers. + (handle_builtin_stxncpy): Same. + +2018-06-12 Martin Sebor + + PR c/85931 + * fold-const.c (operand_equal_p): Handle SAVE_EXPR. + +2018-06-12 Will Schmidt + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + BUILTIN_VEC_XST entries for pointer to double and long long. + +2018-06-12 H.J. Lu + + PR target/85990 + * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET): + Update comments. + * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET): + Likewise. + +2018-06-12 Martin Liska + + * doc/options.texi: Document IntegerRange. + +2018-06-12 Martin Liska + + * config/i386/i386.opt: Make MPX-related options as Deprecated. + * opt-functions.awk: Handle Deprecated flag. + * opts-common.c (decode_cmdline_option): Handle cl_deprecated + and report error. + (read_cmdline_option): Report warning for a deprecated option. + * opts.h (struct cl_option): Add new field cl_deprecated. + (CL_ERR_DEPRECATED): New. + +2018-06-12 Martin Liska + + * doc/options.texi: Document Deprecated option flag. + +2018-06-12 Claudiu Zissulescu + + * config/arc/arc-arch.h (arc_extras): New enum. + (arc_cpu_t):Add field extra. + (arc_cpu_types): Consider the extras. + * config/arc/arc-cpus.def: Add extras info. + * config/arc/arc-opts.h (processor_type): Consider extra field. + * config/arc/arc.c (arc_override_options): Handle extra field. + +2018-06-12 Claudiu Zissulescu + + * config/arc/arc-arch.h: Update ARC_OPTX macro. + * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc + field. + * config/arc/arc.c (arc_init): Update pic warning. + (irq_range): Update irq range parsing warnings. + (arc_override_options): Update various warning messages. + (arc_handle_aux_attribute): Likewise. + +2018-06-12 Robert Suchanek + + * config/mips/i6400.md (i6400_fpu_fadd): Remove frint. + +2018-06-12 Jozef Lawrynowicz + + * doc/sourcebuild.texi: Document usage of line number 0 in verify + compiler messages directives. + +2018-06-12 Matthew Fortune + + * config/mips/mips-cpus.def: New MIPS_CPU for i6500. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as + mips64r6. + * doc/invoke.texi: Document -march=i6500. + +2018-06-12 Prachi Godbole + + * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit. + (i6400_gpmul): Add cpu_unit. + (i6400_gpdiv): Likewise. + (i6400_msa_add_d): Update reservations. + (i6400_msa_int_add) Likewise. + (i6400_msa_short_logic3) Likewise. + (i6400_msa_short_logic2) Likewise. + (i6400_msa_short_logic) Likewise. + (i6400_msa_move) Likewise. + (i6400_msa_cmp) Likewise. + (i6400_msa_short_float2) Likewise. + (i6400_msa_div_d) Likewise. + (i6400_msa_long_logic1) Likewise. + (i6400_msa_long_logic2) Likewise. + (i6400_msa_mult) Likewise. + (i6400_msa_long_float2) Likewise. + (i6400_msa_long_float4) Likewise. + (i6400_msa_long_float5) Likewise. + (i6400_msa_long_float8) Likewise. + (i6400_fpu_fadd): Include frint type. + (i6400_fpu_store): New define_insn_reservation. + (i6400_fpu_load): Likewise. + (i6400_fpu_move): Likewise. + (i6400_fpu_fcmp): Likewise. + (i6400_fpu_fmadd): Likewise. + (i6400_int_mult): Include imul3nc type and update reservation. + (i6400_int_div): Include idiv3 type and update reservation. + (i6400_int_load): Update to check type not move_type. + (i6400_int_store): Likewise. + (i6400_int_prefetch): Set zero latency. + +2018-06-12 Eric Botcazou + + * gcc.c: Document new %@{...} sequence. + (LINK_COMMAND_SPEC): Use it for the -L switches. + (cpp_unique_options): Use it for the -I switches. + (at_file_argbuf): New global variable. + (in_at_file): Likewise. + (alloc_args): Create at_file_argbuf. + (clear_args): Truncate at_file_argbuf. + (store_arg): If in_at_file, push the argument onto at_file_argbuf. + (open_at_file): New function. + (close_at_file): Likewise. + (create_at_file): Delete. + (do_spec_1) <'i'>: Use open_at_file/close_at_file. + <'o'>: Likewise. + <'@'>: New case. + (validate_switches_from_spec): Deal with %@{...} sequence. + (validate_switches): Likewise. + (driver::finalize): Call clear_args. + +2018-06-11 Rasmus Villemoes + + * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0. + +2018-06-11 Martin Sebor + + * doc/invoke.texi (-Wall): List -Wc++17-compat. + (Wno-class-memaccess): Add @opindex. + (Wno-templates, Wno-multiple-inheritance): Same. + (Wno-virtual-inheritance, Wno-namespaces): Same. + (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same. + (Wno-format-overflow, Wno-format-truncation): Same. + (Wno-unused-local-typedefs, Walloc-size-larger-than): Same. + (Wno-alloc-size-larger-than, Wframe-larger-than): Same + (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same. + (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same. + (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same. + (Wno-misspelled-isr): Same. + +2018-06-11 Martin Sebor + + * PR tree-optimization/86083 + * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p. + +2018-06-11 Zhouyi Zhou + + * tree-eh.c (lower_eh_constructs_2): Add a comma to comment. + +2018-06-11 Segher Boessenkool + + PR target/85755 + * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers + on the correct operand. + (*movdi_internal64): Ditto. + +2018-06-11 Martin Liska + + PR tree-optimization/86089 + * tree-ssa-strlen.c (get_string_length): Move back removed hunk. + +2018-06-11 Julia Koval + + * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128) + _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove. + * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove. + +2018-06-11 Olivier Hainque + + * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83 + for Ada with strict dwarf2. + +2018-06-08 Peter Bergner + + PR target/85755 + * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC + addresses. + +2018-06-08 Jan Hubicka + + * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4. + +2018-06-08 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if + TARGET_ELF. + +2018-06-08 Martin Liska + + * tree-cfg.h (debug_function): Fix argument type to match + implementation. + +2018-06-08 Martin Liska + + * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility): + Remove usage of MPX-related (and removed) fields. + * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise. + +2018-06-08 David Malcolm + + * cfg.c (debug): Use TDF_NONE rather than 0. + * cfghooks.c (debug): Likewise. + * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP. + (struct dump_option_value_info): Convert to... + (struct kv_pair): ...this template type. + (dump_options): Convert to kv_pair; use TDF_NONE + rather than 0. + (optinfo_verbosity_options): Likewise. + (optgroup_options): Convert to kv_pair; use + OPTGROUP_NONE. + (gcc::dump_manager::dump_register): Use optgroup_flags_t rather + than int for "optgroup_flags" param. + (dump_generic_expr_loc): Use dump_flags_t rather than int for + "dump_kind" param. + (dump_dec): Likewise. + (dump_finish): Use TDF_NONE rather than 0. + (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t + rather than int for "optgroup_flags" param. Use TDF_NONE rather + than 0. Update for change to option_ptr. + (opt_info_switch_p_1): Convert "optgroup_flags" param from int * + to optgroup_flags_t *. Use TDF_NONE and OPTGROUP_NONE rather than + 0. Update for changes to optinfo_verbosity_options and + optgroup_options. + (opt_info_switch_p): Convert optgroup_flags from int to + optgroup_flags_t. + (dump_basic_block): Use dump_flags_t rather than int + for "dump_kind" param. + * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS, + TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID) + TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME, + TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB, + TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS, + MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG, + TDF_NONE): Convert from macros to... + (enum dump_flag): ...this new enum. + (dump_flags_t): Update to use enum. + (operator|, operator&, operator~, operator|=, operator&=): + Implement for dump_flags_t. + (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE, + OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL): + Convert from macros to... + (enum optgroup_flag): ...this new enum. + (optgroup_flags_t): New typedef. + (operator|, operator|=): Implement for optgroup_flags_t. + (struct dump_file_info): Convert field "alt_flags" to + dump_flags_t. Convert field "optgroup_flags" to + optgroup_flags_t. + (dump_basic_block): Use dump_flags_t rather than int for param. + (dump_generic_expr_loc): Likewise. + (dump_dec): Likewise. + (dump_register): Convert param "optgroup_flags" to + optgroup_flags_t. + (opt_info_enable_passes): Likewise. + * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather + than 0. + * gimple-pretty-print.c (debug): Likewise. + * gimple-ssa-store-merging.c (bswap_replace): Likewise. + (merged_store_group::apply_stores): Likewise. + * gimple-ssa-strength-reduction.c (insert_initializers): Likewise. + * gimple.c (verify_gimple_pp): Likewise. + * graphite-poly.c (print_pbb_body): Likewise. + * passes.c (pass_manager::register_one_dump_file): Convert + local "optgroup_flags" to optgroup_flags_t. + * print-tree.c (print_node): Use TDF_NONE rather than 0. + (debug): Likewise. + (debug_body): Likewise. + * tree-pass.h (struct pass_data): Convert field "optgroup_flags" + to optgroup_flags_t. + * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather + than 0. + * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise. + (convert_mult_to_fma): Likewise. + * tree-ssa-reassoc.c (undistribute_ops_list): Likewise. + * tree-ssa-sccvn.c (vn_eliminate): Likewise. + * tree-vect-data-refs.c (dump_lower_bound): Convert param + "dump_kind" to dump_flags_t. + +2018-06-08 Segher Boessenkool + + * config/rs6000/rs6000.c (min, max): Delete. + +2018-06-08 Segher Boessenkool + + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of + -mabi=spe and -mabi=no-spe. + +2018-06-08 Martin Liska + + * ipa-pure-const.c (propagate_pure_const): Use ::get at places + where we expect an existing summary. + +2018-06-08 Martin Liska + + * ipa-inline-analysis.c (simple_edge_hints): Use ::get method. + * ipa-inline.h (estimate_edge_growth): Likewise. + +2018-06-08 Martin Liska + + * cgraph.c (function_version_hasher::hash): Use + cgraph_node::get_uid (). + (function_version_hasher::equal): + * cgraph.h (cgraph_node::get_uid): New method. + * ipa-inline.c (update_caller_keys): Use + cgraph_node::get_uid (). + (update_callee_keys): Likewise. + * ipa-utils.c (searchc): Likewise. + (ipa_reduced_postorder): Likewise. + * lto-cgraph.c (input_node): Likewise. + * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise. + * symbol-summary.h (symtab_insertion): Likewise. + (symtab_removal): Likewise. + (symtab_duplication): Likewise. + * tree-pretty-print.c (dump_function_header): Likewise. + * tree-sra.c (convert_callers_for_node): Likewise. + +2018-06-08 Martin Liska + + * cgraph.c (symbol_table::create_edge): Always assign a new + unique number. + (symbol_table::free_edge): Do not recycle numbers. + * cgraph.h (cgraph_edge::get): New method. + * symbol-summary.h (symtab_removal): Use it. + (symtab_duplication): Likewise. + (call_summary::hashable_uid): Remove. + +2018-06-08 Martin Liska + + * ipa-inline-analysis.c (inline_edge_removal_hook): Remove. + (initialize_growth_caches): Remove. + (free_growth_caches): Likewise. + (do_estimate_edge_time): Use edge_growth_cache. + (do_estimate_edge_size): Likewise. + (do_estimate_edge_hints): Likewise. + * ipa-inline.c (reset_edge_caches): Likewise. + (recursive_inlining): Likewise. + (inline_small_functions): Likewise. + * ipa-inline.h (initialize_growth_caches): Remove. + (estimate_edge_size): Likewise. + (estimate_edge_time): Likewise. + (estimate_edge_hints): Likewise. + (reset_edge_growth_cache): Likewise. + * symbol-summary.h (call_summary::remove): New method. + +2018-06-08 Martin Liska + + * ipa-cp.c (class edge_clone_summary): New summary. + (grow_edge_clone_vectors): Remove. + (ipcp_edge_duplication_hook): Remove. + (class edge_clone_summary_t): New call_summary class. + (ipcp_edge_removal_hook): Remove. + (edge_clone_summary_t::duplicate): New function. + (get_next_cgraph_edge_clone): Use edge_clone_summaries. + (create_specialized_node): Likewise. + (ipcp_driver): Initialize edge_clone_summaries and do not + register hooks. + +2018-06-08 Martin Liska + + * symbol-summary.h (get): New function. + (call_summary::m_initialize_when_cloning): New class member. + +2018-06-08 Martin Liska + + * cgraph.c (cgraph_node::remove): Do not recycle uid. + * cgraph.h (symbol_table::release_symbol): Do not pass uid. + (symbol_table::allocate_cgraph_symbol): Do not set uid. + * passes.c (uid_hash_t): Record removed_nodes by their uids. + (remove_cgraph_node_from_order): Use the removed_nodes set. + (do_per_function_toporder): Likwise. + * symbol-summary.h (symtab_insertion): Use cgraph_node::uid + instead of summary_uid. + (symtab_removal): Likewise. + (symtab_duplication): Likewise. + +2018-06-08 Martin Liska + + * ipa-cp.c (ipcp_store_bits_results): Use + ipcp_transformation_sum. + (ipcp_store_vr_results): Likewise. + * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed + to ... + (ipcp_transformation_initialize): ... this. + (ipa_set_node_agg_value_chain): + (ipa_node_params_t::duplicate): Use ipcp_transformation_sum. + (write_ipcp_transformation_info): Likewise. + (read_ipcp_transformation_info): Likewise. + (ipcp_update_bits): Likewise. + (ipcp_update_vr): Likewise. + (ipcp_transform_function): Likewise. + * ipa-prop.h: Rename ipcp_transformation_summary to + ipcp_transformation. + (class ipcp_transformation_t): New function summary. + (ipcp_get_transformation_summary): Use ipcp_transformation_sum. + (ipa_get_agg_replacements_for_node): Likewise. + +2018-06-08 Martin Liska + + * ipa-pure-const.c (struct funct_state_d): Do it class instead + of struct. + (class funct_state_summary_t): New function_summary class. + (has_function_state): Remove. + (get_function_state): Likewise. + (set_function_state): Likewise. + (add_new_function): Likewise. + (funct_state_summary_t::insert): New function. + (duplicate_node_data): Remove. + (remove_node_data): Remove. + (funct_state_summary_t::duplicate): New function. + (register_hooks): Create new funct_state_summaries. + (pure_const_generate_summary): Use it. + (pure_const_write_summary): Likewise. + (pure_const_read_summary): Likewise. + (propagate_pure_const): Likewise. + (propagate_nothrow): Likewise. + (dump_malloc_lattice): Likewise. + (propagate_malloc): Likewise. + (execute): Do not register hooks, just remove summary + instead. + (pass_ipa_pure_const::pass_ipa_pure_const): Simplify + constructor. + +2018-06-08 Martin Liska + + * ipa-reference.c (remove_node_data): Remove. + (duplicate_node_data): Likewise. + (class ipa_ref_var_info_summary_t): New class. + (class ipa_ref_opt_summary_t): Likewise. + (get_reference_vars_info): Use ipa_ref_var_info_summaries. + (get_reference_optimization_summary): Use + ipa_ref_opt_sum_summaries. + (set_reference_vars_info): Remove. + (set_reference_optimization_summary): Likewise. + (ipa_init): Create summaries. + (init_function_info): Use function summary. + (ipa_ref_opt_summary_t::duplicate): New function. + (ipa_ref_opt_summary_t::remove): New function. + (get_read_write_all_from_node): Fix GNU coding style. + (propagate): Use function summary. + (write_node_summary_p): Fix GNU coding style. + (stream_out_bitmap): Likewise. + (ipa_reference_read_optimization_summary): Use function summary. + (ipa_reference_c_finalize): Do not release hooks. + +2018-06-08 Martin Liska + + * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method. + (analyze_function_body): Extract multiple calls of get_create. + * ipa-inline-analysis.c (simple_edge_hints): Likewise. + * ipa-inline.c (recursive_inlining): Use ::get method. + * ipa-inline.h (estimate_edge_growth): Likewise. + +2018-06-08 Martin Liska + + * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to + HSA_INVALID. + (hsa_function_summary::hsa_function_summary): Use the new enum + value. + (hsa_gpu_implementation_p): Use hsa_summaries::get. + * hsa-gen.c (hsa_get_host_function): Likewise. + (get_brig_function_name): Likewise. + * ipa-hsa.c (process_hsa_functions): Likewise. + (ipa_hsa_write_summary): Likewise. + * symbol-summary.h (symtab_duplication): Use ::get function/ + (get): New function. + +2018-06-08 Martin Liska + + * config/i386/i386.c (ix86_can_inline_p): Use get_create instead + of get. + * hsa-common.c (hsa_summary_t::link_functions): Likewise. + (hsa_register_kernel): Likewise. + * hsa-common.h (hsa_gpu_implementation_p): Likewise. + * hsa-gen.c (hsa_get_host_function): Likewise. + (get_brig_function_name): Likewise. + (generate_hsa): Likewise. + (pass_gen_hsail::execute): Likewise. + * ipa-cp.c (ipcp_cloning_candidate_p): Likewise. + (devirtualization_time_bonus): Likewise. + (ipcp_propagate_stage): Likewise. + * ipa-fnsummary.c (redirect_to_unreachable): Likewise. + (edge_set_predicate): Likewise. + (evaluate_conditions_for_known_args): Likewise. + (evaluate_properties_for_edge): Likewise. + (ipa_fn_summary::reset): Likewise. + (ipa_fn_summary_t::duplicate): Likewise. + (dump_ipa_call_summary): Likewise. + (ipa_dump_fn_summary): Likewise. + (analyze_function_body): Likewise. + (compute_fn_summary): Likewise. + (estimate_edge_devirt_benefit): Likewise. + (estimate_edge_size_and_time): Likewise. + (estimate_calls_size_and_time): Likewise. + (estimate_node_size_and_time): Likewise. + (inline_update_callee_summaries): Likewise. + (remap_edge_change_prob): Likewise. + (remap_edge_summaries): Likewise. + (ipa_merge_fn_summary_after_inlining): Likewise. + (ipa_update_overall_fn_summary): Likewise. + (read_ipa_call_summary): Likewise. + (inline_read_section): Likewise. + (write_ipa_call_summary): Likewise. + (ipa_fn_summary_write): Likewise. + (ipa_free_fn_summary): Likewise. + * ipa-hsa.c (process_hsa_functions): Likewise. + (ipa_hsa_write_summary): Likewise. + (ipa_hsa_read_section): Likewise. + * ipa-icf.c (sem_function::merge): Likewise. + * ipa-inline-analysis.c (simple_edge_hints): Likewise. + (do_estimate_edge_time): Likewise. + (estimate_size_after_inlining): Likewise. + (estimate_growth): Likewise. + (growth_likely_positive): Likewise. + * ipa-inline-transform.c (clone_inlined_nodes): Likewise. + (inline_call): Likewise. + * ipa-inline.c (caller_growth_limits): Likewise. + (can_inline_edge_p): Likewise. + (can_inline_edge_by_limits_p): Likewise. + (compute_uninlined_call_time): Likewise. + (compute_inlined_call_time): Likewise. + (want_inline_small_function_p): Likewise. + (edge_badness): Likewise. + (update_caller_keys): Likewise. + (update_callee_keys): Likewise. + (recursive_inlining): Likewise. + (inline_small_functions): Likewise. + (inline_to_all_callers_1): Likewise. + (dump_overall_stats): Likewise. + (early_inline_small_functions): Likewise. + (early_inliner): Likewise. + * ipa-inline.h (estimate_edge_growth): Likewise. + * ipa-profile.c (ipa_propagate_frequency_1): Likewise. + * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. + * ipa-prop.h (IPA_NODE_REF): Likewise. + (IPA_EDGE_REF): Likewise. + * ipa-pure-const.c (malloc_candidate_p): Likewise. + (propagate_malloc): Likewise. + * ipa-split.c (execute_split_functions): Likewise. + * symbol-summary.h: Rename get to get_create. + (get): Likewise. + (get_create): Likewise. + * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise. + +2018-06-08 Martin Liska + + * symbol-summary.h (release): Move definition out of class + declaration. + (symtab_removal): Likewise. + (symtab_duplication): Likewise. + +2018-06-08 Martin Liska + + * symbol-summary.h (function_summary): Move constructor + implementation out of class declaration. + (release): Likewise. + (symtab_insertion): Likewise. + (symtab_removal): Likewise. + (symtab_duplication): Likewise. + (get): Likewise. + +2018-06-08 Martin Liska + + * Makefile.in: Remove support for MPX (macros, related functions, + fields in cgraph_node, ...). + * builtin-types.def (BT_BND): Likewise. + (BT_FN_BND_CONST_PTR): Likewise. + (BT_FN_CONST_PTR_BND): Likewise. + (BT_FN_VOID_PTR_BND): Likewise. + (BT_FN_BND_CONST_PTR_SIZE): Likewise. + (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise. + * builtins.c (expand_builtin_memcpy_with_bounds): Likewise. + (expand_builtin_mempcpy_with_bounds): Likewise. + (expand_builtin_memset_with_bounds): Likewise. + (expand_builtin_memset_args): Likewise. + (std_expand_builtin_va_start): Likewise. + (expand_builtin): Likewise. + (expand_builtin_with_bounds): Likewise. + * builtins.def (DEF_BUILTIN_CHKP): Likewise. + (DEF_LIB_BUILTIN_CHKP): Likewise. + (DEF_EXT_LIB_BUILTIN_CHKP): Likewise. + (DEF_CHKP_BUILTIN): Likewise. + (BUILT_IN_MEMCPY): Likewise. + (BUILT_IN_MEMMOVE): Likewise. + (BUILT_IN_MEMPCPY): Likewise. + (BUILT_IN_MEMSET): Likewise. + (BUILT_IN_STPCPY): Likewise. + (BUILT_IN_STRCAT): Likewise. + (BUILT_IN_STRCHR): Likewise. + (BUILT_IN_STRCPY): Likewise. + (BUILT_IN_STRLEN): Likewise. + (BUILT_IN_MEMCPY_CHK): Likewise. + (BUILT_IN_MEMMOVE_CHK): Likewise. + (BUILT_IN_MEMPCPY_CHK): Likewise. + (BUILT_IN_MEMSET_CHK): Likewise. + (BUILT_IN_STPCPY_CHK): Likewise. + (BUILT_IN_STRCAT_CHK): Likewise. + (BUILT_IN_STRCPY_CHK): Likewise. + * calls.c (store_bounds): Likewise. + (emit_call_1): Likewise. + (special_function_p): Likewise. + (maybe_warn_nonstring_arg): Likewise. + (initialize_argument_information): Likewise. + (finalize_must_preallocate): Likewise. + (compute_argument_addresses): Likewise. + (expand_call): Likewise. + * cfgexpand.c (expand_call_stmt): Likewise. + (expand_return): Likewise. + (expand_gimple_stmt_1): Likewise. + (pass_expand::execute): Likewise. + * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise. + (cgraph_node::remove): Likewise. + (cgraph_node::dump): Likewise. + (cgraph_node::verify_node): Likewise. + * cgraph.h (chkp_function_instrumented_p): Likewise. + (symtab_node::get_alias_target): Likewise. + (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise. + (cgraph_local_p): Likewise. + * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise. + (cgraph_edge::rebuild_references): Likewise. + * cgraphunit.c (varpool_node::finalize_decl): Likewise. + (walk_polymorphic_call_targets): Likewise. + (cgraph_node::expand_thunk): Likewise. + (symbol_table::output_weakrefs): Likewise. + * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise. + (ix86_handle_option): Likewise. + * config/i386/constraints.md: Likewise. + * config/i386/i386-builtin-types.def (BND): Likewise. + (VOID): Likewise. + (PVOID): Likewise. + (ULONG): Likewise. + * config/i386/i386-builtin.def (BDESC_END): Likewise. + (BDESC_FIRST): Likewise. + (BDESC): Likewise. + * config/i386/i386-c.c (ix86_target_macros_internal): Likewise. + * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise. + * config/i386/i386.c (enum reg_class): Likewise. + (ix86_target_string): Likewise. + (ix86_option_override_internal): Likewise. + (ix86_conditional_register_usage): Likewise. + (ix86_valid_target_attribute_inner_p): Likewise. + (ix86_set_indirect_branch_type): Likewise. + (ix86_set_current_function): Likewise. + (ix86_function_arg_regno_p): Likewise. + (init_cumulative_args): Likewise. + (ix86_function_arg_advance): Likewise. + (ix86_function_arg): Likewise. + (ix86_pass_by_reference): Likewise. + (ix86_function_value_regno_p): Likewise. + (ix86_function_value_1): Likewise. + (ix86_function_value_bounds): Likewise. + (ix86_return_in_memory): Likewise. + (ix86_setup_incoming_vararg_bounds): Likewise. + (ix86_va_start): Likewise. + (indirect_thunk_need_prefix): Likewise. + (print_reg): Likewise. + (ix86_print_operand): Likewise. + (ix86_expand_call): Likewise. + (ix86_output_function_return): Likewise. + (reg_encoded_number): Likewise. + (BDESC_VERIFYS): Likewise. + (ix86_init_mpx_builtins): Likewise. + (ix86_init_builtins): Likewise. + (ix86_emit_cmove): Likewise. + (ix86_emit_move_max): Likewise. + (ix86_expand_builtin): Likewise. + (ix86_builtin_mpx_function): Likewise. + (ix86_get_arg_address_for_bt): Likewise. + (ix86_load_bounds): Likewise. + (ix86_store_bounds): Likewise. + (ix86_load_returned_bounds): Likewise. + (ix86_store_returned_bounds): Likewise. + (ix86_class_likely_spilled_p): Likewise. + (ix86_hard_regno_mode_ok): Likewise. + (x86_order_regs_for_local_alloc): Likewise. + (ix86_mitigate_rop): Likewise. + (ix86_bnd_prefixed_insn_p): Likewise. + (ix86_mpx_bound_mode): Likewise. + (ix86_make_bounds_constant): Likewise. + (ix86_initialize_bounds): Likewise. + (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise. + (TARGET_STORE_BOUNDS_FOR_ARG): Likewise. + (TARGET_LOAD_RETURNED_BOUNDS): Likewise. + (TARGET_STORE_RETURNED_BOUNDS): Likewise. + (TARGET_CHKP_BOUND_MODE): Likewise. + (TARGET_BUILTIN_CHKP_FUNCTION): Likewise. + (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise. + (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise. + (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise. + * config/i386/i386.h (TARGET_MPX): Likewise. + (TARGET_MPX_P): Likewise. + (VALID_BND_REG_MODE): Likewise. + (FIRST_BND_REG): Likewise. + (LAST_BND_REG): Likewise. + (enum reg_class): Likewise. + (BND_REG_P): Likewise. + (BND_REGNO_P): Likewise. + (BNDmode): Likewise. + (ADJUST_INSN_LENGTH): Likewise. + * config/i386/i386.md: Likewise. + * config/i386/i386.opt: Likewise. + * config/i386/linux-common.h (LIBMPX_LIBS): Likewise. + (defined): Likewise. + (LINK_MPX): Likewise. + (MPX_SPEC): Likewise. + (LIBMPX_SPEC): Likewise. + (LIBMPXWRAPPERS_SPEC): Likewise. + (CHKP_SPEC): Likewise. + * config/i386/predicates.md: Likewise. + * dbxout.c (dbxout_type): Likewise. + * doc/extend.texi: Likewise. + * doc/invoke.texi: Likewise. + * doc/md.texi: Likewise. + * doc/tm.texi: Likewise. + * doc/tm.texi.in: Likewise. + * dwarf2out.c (is_base_type): Likewise. + (gen_formal_types_die): Likewise. + (gen_subprogram_die): Likewise. + (gen_type_die_with_usage): Likewise. + (gen_decl_die): Likewise. + (dwarf2out_late_global_decl): Likewise. + * expr.c (expand_assignment): Likewise. + (emit_storent_insn): Likewise. + (store_expr_with_bounds): Likewise. + (store_expr): Likewise. + (expand_expr_real_1): Likewise. + * expr.h (store_expr_with_bounds): Likewise. + * function.c (use_register_for_decl): Likewise. + (struct bounds_parm_data): Likewise. + (assign_parms_augmented_arg_list): Likewise. + (assign_parm_find_entry_rtl): Likewise. + (assign_parm_is_stack_parm): Likewise. + (assign_parm_load_bounds): Likewise. + (assign_bounds): Likewise. + (assign_parms): Likewise. + (expand_function_start): Likewise. + * gcc.c (CHKP_SPEC): Likewise. + * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise. + * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise. + (wrestrict_dom_walker::check_call): Likewise. + * gimple.c (gimple_build_call_from_tree): Likewise. + * gimple.h (enum gf_mask): Likewise. + (gimple_call_with_bounds_p): Likewise. + (gimple_call_set_with_bounds): Likewise. + * gimplify.c (gimplify_init_constructor): Likewise. + * ipa-cp.c (initialize_node_lattices): Likewise. + (propagate_constants_across_call): Likewise. + (find_more_scalar_values_for_callers_subset): Likewise. + * ipa-hsa.c (process_hsa_functions): Likewise. + * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise. + * ipa-icf.c (sem_function::merge): Likewise. + * ipa-inline.c (early_inliner): Likewise. + * ipa-pure-const.c (warn_function_noreturn): Likewise. + (warn_function_cold): Likewise. + (propagate_pure_const): Likewise. + * ipa-ref.h (enum GTY): Likewise. + * ipa-split.c (find_retbnd): Likewise. + (consider_split): Likewise. + (split_function): Likewise. + * ipa-visibility.c (cgraph_externally_visible_p): Likewise. + * ipa.c (walk_polymorphic_call_targets): Likewise. + (symbol_table::remove_unreachable_nodes): Likewise. + (process_references): Likewise. + (cgraph_build_static_cdtor_1): Likewise. + * lto-cgraph.c (lto_output_node): Likewise. + (output_refs): Likewise. + (compute_ltrans_boundary): Likewise. + (input_overwrite_node): Likewise. + (input_node): Likewise. + (input_cgraph_1): Likewise. + * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise. + * passes.c (pass_manager::execute_early_local_passes): Likewise. + (class pass_chkp_instrumentation_passes): Likewise. + (make_pass_chkp_instrumentation_passes): Likewise. + * passes.def: Likewise. + * rtl.h (struct GTY): Likewise. + (CALL_EXPR_WITH_BOUNDS_P): Likewise. + * stor-layout.c (layout_type): Likewise. + * symtab.c: Likewise. + * target.def: Likewise. + * targhooks.c (default_chkp_bound_type): Likewise. + (default_chkp_bound_mode): Likewise. + (default_builtin_chkp_function): Likewise. + (default_chkp_function_value_bounds): Likewise. + (default_chkp_make_bounds_constant): Likewise. + (default_chkp_initialize_bounds): Likewise. + * targhooks.h (default_chkp_bound_type): Likewise. + (default_chkp_bound_mode): Likewise. + (default_builtin_chkp_function): Likewise. + (default_chkp_function_value_bounds): Likewise. + (default_chkp_make_bounds_constant): Likewise. + (default_chkp_initialize_bounds): Likewise. + * toplev.c (compile_file): Likewise. + (process_options): Likewise. + * tree-core.h (DEF_BUILTIN): Likewise. + (DEF_BUILTIN_CHKP): Likewise. + * tree-inline.c (declare_return_variable): Likewise. + (remap_gimple_stmt): Likewise. + (copy_bb): Likewise. + (initialize_inlined_parameters): Likewise. + (expand_call_inline): Likewise. + * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise. + (make_pass_ipa_chkp_early_produce_thunks): Likewise. + (make_pass_ipa_chkp_produce_thunks): Likewise. + (make_pass_chkp): Likewise. + (make_pass_chkp_opt): Likewise. + (make_pass_chkp_instrumentation_passes): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise. + * tree-ssa-dce.c (propagate_necessity): Likewise. + (eliminate_unnecessary_stmts): Likewise. + * tree-ssa-pre.c (create_expression_by_pieces): Likewise. + * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise. + * tree-ssa-sccvn.h: Likewise. + * tree-ssa-strlen.c (get_string_length): Likewise. + (valid_builtin_call): Likewise. + (adjust_last_stmt): Likewise. + (handle_builtin_strchr): Likewise. + (handle_builtin_strcpy): Likewise. + (handle_builtin_stxncpy): Likewise. + (handle_builtin_memcpy): Likewise. + (handle_builtin_strcat): Likewise. + (strlen_check_and_optimize_stmt): Likewise. + * tree-stdarg.c (expand_ifn_va_arg_1): Likewise. + * tree-streamer-in.c: Likewise. + * tree-streamer.c (record_common_node): Likewise. + * tree.c (tree_code_size): Likewise. + (wide_int_to_tree_1): Likewise. + (type_contains_placeholder_1): Likewise. + (build_common_tree_nodes): Likewise. + * tree.def (POINTER_BOUNDS_TYPE): Likewise. + * tree.h (POINTER_BOUNDS_TYPE_P): Likewise. + (POINTER_BOUNDS_P): Likewise. + (BOUNDED_TYPE_P): Likewise. + (BOUNDED_P): Likewise. + (CALL_WITH_BOUNDS_P): Likewise. + (pointer_bounds_type_node): Likewise. + * value-prof.c (gimple_ic): Likewise. + * var-tracking.c (vt_add_function_parameters): Likewise. + * varasm.c (make_decl_rtl): Likewise. + (assemble_start_function): Likewise. + (output_constant): Likewise. + (maybe_assemble_visibility): Likewise. + * varpool.c (ctor_for_folding): Likewise. + * chkp-builtins.def: Remove. + * ipa-chkp.c: Remove. + * ipa-chkp.h: Remove. + * rtl-chkp.c: Remove. + * rtl-chkp.h: Remove. + * tree-chkp-opt.c: Remove. + * tree-chkp.c: Remove. + * tree-chkp.h: Remove. + +2018-06-07 Carl Love + + * config/rs6000/vsx.md (vextract_fp_from_shorth, + vextract_fp_from_shortl): Add BE support. + +2018-06-07 Paul Koning + + * compare-elim.c (try_merge_compare): Don't merge compare if + address contains a side effect. + (try_eliminate_compare): Likewise. + +2018-06-07 Olga Makhotina + + * config.gcc: Support "tremont". + * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont". + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_TREMONT. + * config/i386/i386.c (m_TREMONT): Define. + (processor_target_table): Add "tremont". + (PTA_TREMONT): Define. + (ix86_lea_outperforms): Add TARGET_TREMONT. + (get_builtin_code_for_version): Handle PROCESSOR_TREMONT. + (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT + and M_INTEL_GOLDMONT_PLUS. + (fold_builtin_cpu): Add "tremont". + (ix86_add_stmt_cost): Add TARGET_TREMONT. + (ix86_option_override_internal): Add "tremont". + * config/i386/i386.h (processor_costs): Define TARGET_TREMONT. + (processor_type): Add PROCESSOR_TREMONT. + * config/i386/x86-tune.def: Add m_TREMONT. + * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type. + +2018-06-07 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the + symbol defined for msp430i* devices to be lower case. + +2018-06-07 Richard Biener + + * graphite-sese-to-poly.c (extract_affine): Avoid unneded + wrapping. Properly wrap the result of a BIT_NOT_EXPR. + Properly wrap signed arithmetic if overflow wraps. + +2018-06-07 Jakub Jelinek + + PR tree-optimization/69615 + * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs + of a cast from a same precision integral SSA_NAME in a bb dominated + by first_bb, retry with rhs2 set to the rhs1 of the cast. Don't emit + cast to utype if rhs2 has already a compatible type. + +2018-06-07 Richard Biener + + PR tree-optimization/85935 + * graphite-scop-detection.c (find_params_in_bb): Analyze + condition operands with respect to the correct loop. Assert + the analysis doesn't fail. + +2018-06-04 Carl Love + + * config/rs6000/vsx.md (first_match_index_): Calculate index + using natural element order. Use gen_lshrsi3 instead of gen_ashrsi3 + as it is slightly cheaper. + (first_match_or_eos_index_): + Calculate index using natural element order. + (first_match_index_): + Calculate index using natural element order. + (first_match_or_eos_index_): + Calculate index using natural order. + (define_insn vclzlsbb): Change to define_insn vclzlsbb_. + for BE and LE modes. + * config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB, + P9V_BUILTIN_VCLZLSBB_V16QI. + * config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode + specific. + +2018-06-06 Kelvin Nilsen + + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust + indentation and line wrap for many prototypes. Add missing + @smallexample directives around block of prototypes for vec_xl and + vec_xst. + +2018-06-05 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to + track if we pass or return IEEE 128-bit floating point. + (ieee128_mangling_gcc_8_1): New boolean to say whether to generate + C++ mangling that is compatible with GCC 8.1. + (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook. + (init_cumulative_args): Note if we pass or return IEEE 128-bit + floating point types. + (rs6000_function_arg_advance_1): Likewise. + (rs6000_mangle_type): Optionally generate mangled names that match + what GCC 8.1 generated for IEEE 128-bit floating point types. + (rs6000_globalize_decl_name): If we have an external function that + passes or returns IEEE 128-bit types, generate a weak reference + from the mangled name used in GCC 8.1 to the current mangled + name. + (rs6000_init_builtins): Make __ibm128 use the long double type if + long double is IBM extended double. Make __float128 use the long + double type if long double is IEEE 128-bit. + + PR target/85657 + * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper + macro for __ibm128 built-in functions. + (PACK_IF): Add __ibm128 pack/unpack functions. + (UNPACK_IF): Likewise. + * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not + enable long double built-in functions if long double is IEEE + 128-bit floating point. + (rs6000_invalid_builtin): Update long double built-in function + error message. + (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in + functions, adjust the built-in function to use the long double + built-in function if __ibm128 and long double are the same type. + * doc/extend.texi (PowerPC builtins): Update documention for + __builtin_{,un}pack_longdouble. Add documentation for + __builtin_{,un}pack_ibm128. + +2018-06-06 Jim Wilson + + * config/riscv/riscv.c (enum riscv_privilege_levels): New. + (struct machine_function): New field interrupt_mode. + (riscv_handle_type_attribute): New function. Add forward declaration. + (riscv_attribute_table) : Use riscv_handle_type_attribute. + (riscv_expand_epilogue): Check interrupt_mode field. + (riscv_set_current_function): Check interrupt attribute args and + set interrupt_mode field. + * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New. + (riscv_sret, riscv_uret): New. + * doc/extend.texi (RISC-V Function Attributes) : Document + new arguments to interrupt attribute. + +2018-06-06 Peter Bergner + + PR target/63177 + * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9. + Don't handle -mcpu=power8 if -mpower9-vector is also used. + +2018-06-06 Kelvin Nilsen + + * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD, + VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses. + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove + several redundant entries. + +2018-06-06 David Malcolm + + * config/i386/i386-protos.h (ix86_expand_call): Strengthen return + type from "rtx" to "rtx_insn *". + * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise + for local "call_insn", removing cast. + (ix86_expand_call): Likewise, introducing a "call_insn" local. + +2018-06-06 Eric Botcazou + + PR tree-optimization/86066 + * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR + for BIT_INSERT_EXPR stores. + +2018-06-06 Richard Biener + + PR tree-optimization/86062 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary + component refs ontop + of to be offsetted base. + +2018-06-06 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_attr): Allow interrupt handlers + to be static and remove check on interrupt attribute name. + +2018-06-05 Kelvin Nilsen + + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove + volatile qualifier from vec_lvsl and vec_lvsr argument prototypes. + +2018-06-05 Steve Ellcey + + PR target/79924 + * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove + second argument. + * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd): + Remove second argument, change how error is called. + (aarch64_layout_arg): Remove second argument from + aarch64_err_no_fpadvsimd call. + (aarch64_init_cumulative_args): Ditto. + (aarch64_gimplify_va_arg_expr): Ditto. + * config/aarch64/aarch64.md (mov): Ditto. + +2018-06-05 Uros Bizjak + + * config/i386/i386.md (simple_return_indirect_internal): New expander. + (*simple_return_indirect_internal): Rename from + simple_return_indirect_internal. Use W mode iterator. + (rstorssp): New expander. + (*rstorssp): Rename from rstorssp. Use P mode iterator. + (clrssbsy): New expander. + (*clrssbsy): Rename from clrssbsy. Use P mode iterator. + +2018-06-05 Andre Vieira + + * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to + __typeof__. + (cmse_check_pointed_object): Likewise. + +2018-06-05 Martin Liska + + PR gcov-profile/47618 + * doc/invoke.texi: Document how -fprofile-dir format + is extended. + +2018-06-05 Richard Biener + + * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge + removal pretend DOM info isn't available so we do not update + it and only remove edges, not dominated blocks. Actually free + DOM info in case we removed something. Remove unreachable blocks. + (mfb_keep_latches): Work with either DOM info or marked backedges. + (cleanup_tree_cfg_noloop): Do not remove unreachable blocks + first. Mark backedges if DOM info isn't available. + (Re-)compute DOM info after cleanup_control_flow_pre. + +2018-06-05 Richard Biener + + * tree-cfg.c (struct locus_discrim_map): Store line, not location. + (locus_discrim_hasher::hash): Adjust. + (locus_discrim_hasher::equal): Likewise. + (next_discriminator_for_locus): Work on line directly. + (same_line_p): Pass in expanded locus1 as well. + (assign_discriminators): Avoid redundant location expansions. + +2018-06-05 Richard Biener + + PR tree-optimization/86046 + * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P + if required after clearing TREE_ADDRESSABLE. + +2018-06-05 Richard Biener + + PR tree-optimization/86047 + * tree-ssa-loop.c (for_each_index): Glob handling of all + decls and constants and really handle all of them. + +2018-06-05 Kyrylo Tkachov + + PR target/81497 + * config/arm/arm-builtins.c (arm_type_qualifiers): Add + qualifier_void_pointer and qualifier_const_void_pointer. + (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above. + (arm_init_builtins): Handle the above. + * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc, + __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2, + __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for + void intrinsics. + +2018-06-05 Martin Liska + + * auto-profile.c (read_autofdo_file): Do not use + gcov_ctr_summary struct. + (afdo_callsite_hot_enough_for_early_inline): Likewise. + * coverage.c (struct counts_entry): Likewise. + (read_counts_file): Read just single summary entry. + (get_coverage_counts): Use gcov_summary struct. + * coverage.h (get_coverage_counts): Likewise. + * gcov-dump.c (dump_working_sets): Likewise. + (tag_summary): Dump just single summary. + * gcov-io.c (gcov_write_summary): Write just histogram + summary. + (gcov_read_summary): Read just single summary. + (compute_working_sets): Use gcov_summary struct. + * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage + of GCOV_COUNTERS_SUMMABLE. + (GCOV_COUNTERS_SUMMABLE): Remove. + (GCOV_FIRST_VALUE_COUNTER): Replace with + GCOV_COUNTER_V_INTERVAL. + (struct gcov_ctr_summary): Remove. + (struct gcov_summary): Directly use fields of former + gcov_ctr_summary. + (compute_working_sets): Use gcov_summary struct. + * gcov.c (read_count_file): Do not use ctrs fields. + * lto-cgraph.c (merge_profile_summaries): Use gcov_summary + struct. + * lto-streamer.h (struct GTY): Make profile_info gcov_summary + struct. + * profile.c: Likewise. + * profile.h: Likewise. + +2018-06-05 Martin Liska + + PR gcov-profile/84846 + * gcov.c (output_lines): Print working directory only + in intermediate format. + +2018-06-05 Andreas Krebbel + + * config/s390/s390-builtin-types.def: Add void function type. + * config/s390/s390-builtins.def: Use the function type for the + tbeginc builtin. + +2018-06-04 Jim Wilson + + * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg + to int. + * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue + and maybe_eh_return. Change regno to unsigned int. Use new args to + handle EH_RETURN_DATA_REGNO registers properly. + (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg. + (riscv_expand_epilogue): Update comment. Change argument name and + type. Update code to use new name and type. Pass new args to + riscv_for_each_saved_reg. Only use EH_RETURN_STACKADJ_RTX when + EXCEPTION_RETURN. + * config/riscv/riscv.md (NORMAL_RETURN): New. + (SIBCALL_RETURN, EXCEPTION_RETURN): New. + (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg. + (eh_return): Call gen_eh_return_internal and emit barrier. + (eh_return_internal): Call riscv_expand_epilogue. + +2018-06-04 Eric Botcazou + + * gimple-ssa-store-merging.c (struct merged_store_group): Move up + bit_insertion field and declare can_be_merged_into method. + (merged_store_group::can_be_merged_into): New method. + (imm_store_chain_info::coalesce_immediate): Call it to decide whether + consecutive non-overlapping stores can be merged. Turn MEM_REF stores + into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store. + +2018-06-04 Richard Biener + + PR tree-optimization/85955 + * builtins.c (fold_builtin_sincos): Convert pointers to + destination to appropriate type before dereferencing. + +2018-06-04 Segher Boessenkool + + * config/rs6000/rs6000.md (abs2 for FLOAT128): Handle IFmode. + +2018-06-04 Richard Sandiford + + * expr.c (expand_expr_real_1): Force the operand into memory if + its TYPE_MODE is BLKmode and if there is no integer mode for + the number of bits being extracted. + +2018-06-04 Jakub Jelinek + + PR target/85832 + PR target/86036 + * config/i386/sse.md (_eq3_1): + Use vptestnm rather than vptestm in (=Yc,v,C) variant. + +2018-06-04 Richard Biener + + * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into... + (cleanup_tree_cfg_noloop): ... single caller. Do + start_recording_case_labels later. + +2018-06-04 Sebastian Peryt + + * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED + to _IMMINTRIN_H_INCLUDED. + * config/i386/pconfigintrin.h: Ditto. + * config/i386/waitpkgintrin.h: Ditto. + * config/i386/immintrin.h: Add includes for sgxintrin.h, + pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h. + * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h, + emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h, + bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h, + waitpkgintrin.h and cldemoteintrin.h. + +2018-06-04 Richard Biener + + PR tree-optimization/86038 + * tracer.c (find_best_successor): Check probability for + being initialized, bail out if not. + +2018-06-04 Richard Earnshaw + + PR target/86003 + * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list + of bits to ignore when comparing architectures. + +2018-06-04 Jakub Jelinek + + PR tree-optimization/69615 + * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the + maximum or minimum of the type, try to merge it also as if + range1 is + [-, x - 1] or + [x + 1, -]. + + PR c++/86025 + * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. + +2018-06-03 Eric Botcazou + + PR tree-optimization/86034 + * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to + the unsigned bitfield type in a bit insertion sequence if it does not + have a larger precision than the bitfield size. + (process_store): Also bypass widening conversions for BIT_INSERT_EXPR. + +2018-06-03 Kito Cheng + + * config/nds32/nds32-peephole2.md: Add new patterns for code size. + +2018-06-03 Chung-Ju Wu + + * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J. + * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J. + * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking. + * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J). + +2018-06-03 Chung-Ju Wu + + * common/config/nds32/nds32-common.c (nds32_option_optimization_table): + Disable -fdelete-null-pointer-checks for ELF toolchain. + +2018-06-02 Chung-Ju Wu + Kito Cheng + + * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt. + (nds32le-*-*, nds32be-*-*): Integrate checking process. + (nds32*-*-*): Add glibc and uclibc conditions. + * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New. + (TARGET_EXCEPT_UNWIND_INFO): Define. + * config/nds32/elf.h: New file. + * config/nds32/linux.h: New file. + * config/nds32/nds32-elf.opt: New file. + * config/nds32/nds32-linux.opt: New file. + * config/nds32/nds32-fp-as-gp.c + (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI. + * config/nds32/nds32.c (nds32_conditional_register_usage): Consider + TARGET_LINUX_ABI. + (nds32_asm_file_end): Ditto. + (nds32_print_operand): Ditto. + (nds32_insert_attributes): Ditto. + (nds32_init_libfuncs): New function. + (TARGET_HAVE_TLS): Define. + (TARGET_INIT_LIBFUNCS): Define. + * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax + spec content. + (TARGET_ELF): Apply different mcmodel setting. + (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has + been migrated into elf.h and linux.h files. + * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI. + * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI. + (mcmodel): The content has been migrated into nds32-elf.opt and + nds32-linux.opt files. + * config/nds32/t-elf: New file. + * config/nds32/t-linux: New file. + +2018-06-02 Chung-Ju Wu + Shiva Chen + + * config/nds32/constants.md (unspec_volatile_element): Add + UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END. + * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp + optimization. + * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare. + (make_pass_nds32_fp_as_gp): Declare. + * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one + optmization pass. + (nds32_asm_function_end_prologue): Remove unused asm output. + (nds32_asm_function_begin_epilogue): Remove unused asm output. + (nds32_asm_file_start): Output necessary fp_as_gp information. + (nds32_option_override): Adjust register usage. + (nds32_expand_prologue): Consider fp_as_gp situation. + (nds32_expand_prologue_v3push): Consider fp_as_gp situation. + * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p. + (epilogue): Ditto. + (return): Ditto. + (simple_return): Ditto. + (omit_fp_begin): Output special directive for fp_as_gp. + (omit_fp_end): Output special directive for fp_as_gp. + * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp, + mforbid-fp-as-gp): New options. + +2018-06-01 Mark Wielaard + + * dwarf2out.c (dwarf2out_finish): Remove generation of + DW_AT_loclists_base. + +2018-06-01 Eric Botcazou + + * gimple-ssa-store-merging.c: Include gimple-fold.h. + (struct store_immediate_info): Document BIT_INSERT_EXPR stores. + (struct merged_store_group): Add bit_insertion field. + (dump_char_array): Use standard hexadecimal format. + (merged_store_group::merged_store_group): Set bit_insertion to false. + (merged_store_group::apply_stores): Use optimal buffer size. Deal + with BIT_INSERT_EXPR stores. Move up code updating the mask and + also print the mask in the dump file. + (pass_store_merging::gate): Minor tweak. + (imm_store_chain_info::coalesce_immediate): Fix wrong association + of stores with groups in dump. Allow coalescing of BIT_INSERT_EXPR + stores with INTEGER_CST stores. + (count_multiple_uses) : New case. + (imm_store_chain_info::output_merged_store): Add try_bitpos variable + and use it throughout. Generate bit insertion sequences if need be. + (pass_store_merging::process_store): Remove redundant condition. + Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR. + +2018-06-01 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of + the 128-bit floating point types. Fix function comment. + +2018-06-01 Kyrylo Tkachov + + * config/aarch64/aarch64-simd.md + (aarch64_simd_vec_unpack_lo_): Use UXTL and SXTL assembler + mnemonics. + (aarch64_simd_vec_unpack_hi_): Use UXTL2 and SXTL2 assembler + mnemonics. + +2018-06-01 Richard Sandiford + + PR tree-optimization/85989 + * gimple-ssa-backprop.c (backprop::m_visited_phis): New member + variable. + (backprop::intersect_uses): Check it when deciding whether this + is a backedge reference. + (backprop::process_block): Add each phi to m_visited_phis + after visiting it, then clear it at the end. + +2018-06-01 Richard Biener + + * tree-vectorizer.h (vect_dr_stmt): New function. + (vect_get_load_cost): Adjust. + (vect_get_store_cost): Likewise. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): + Use vect_dr_stmt instead of DR_SMTT. + (vect_record_base_alignments): Likewise. + (vect_calculate_target_alignment): Likewise. + (vect_compute_data_ref_alignment): Likewise and make static. + (vect_update_misalignment_for_peel): Likewise. + (vect_verify_datarefs_alignment): Likewise. + (vector_alignment_reachable_p): Likewise. + (vect_get_data_access_cost): Likewise. Pass down + vinfo to vect_get_load_cost/vect_get_store_cost instead of DR. + (vect_get_peeling_costs_all_drs): Likewise. + (vect_peeling_hash_get_lowest_cost): Likewise. + (vect_enhance_data_refs_alignment): Likewise. + (vect_find_same_alignment_drs): Likewise. + (vect_analyze_data_refs_alignment): Likewise. + (vect_analyze_group_access_1): Likewise. + (vect_analyze_group_access): Likewise. + (vect_analyze_data_ref_access): Likewise. + (vect_analyze_data_ref_accesses): Likewise. + (vect_vfa_segment_size): Likewise. + (vect_small_gap_p): Likewise. + (vectorizable_with_step_bound_p): Likewise. + (vect_prune_runtime_alias_test_list): Likewise. + (vect_analyze_data_refs): Likewise. + (vect_supportable_dr_alignment): Likewise. + * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise. + (vect_gen_prolog_loop_niters): Likewise. + * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + * tree-vect-patterns.c (vect_recog_bool_pattern): Do not + modify DR_STMT. + (vect_recog_mask_conversion_pattern): Likewise. + (vect_try_gather_scatter_pattern): Likewise. + * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info + to vect_get_store_cost. + (vect_get_store_cost): Get stmt_info instead of DR. + (vect_model_load_cost): Pass stmt_info to vect_get_load_cost. + (vect_get_load_cost): Get stmt_info instead of DR. + +2018-06-01 Richard Biener + + PR middle-end/86017 + * gimple-fold.c (var_decl_component_p): Also allow offsetted + vars wrapped in MEM_REFs. + +2018-06-01 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class): + Fix subreg tests so that we only return a choice between + GENERAL_REGS and FP_REGS if the original classes included both. + +2018-06-01 Richard Biener + + PR ipa/85960 + * tree-ssa-structalias.c (get_function_part_constraint): + Handle NULL fi->decl. + (find_func_aliases_for_call): Properly handle indirect + fi from direct call. + (find_func_clobbers): Likewise. + (ipa_pta_execute): Likewise. + (create_variable_info_for): For functions that are ifunc_resolver + resolve to a varinfo that contains the result of the resolver call. + (associate_varinfo_to_alias): Do not treat ifunc resolvers as + aliases. + +2018-05-31 Michael Collison + + * config/aarch64/aarch64.md: + (*fix_to_zero_extenddfdi2): New pattern. + * gcc.target/aarch64/fix_extend1.c: New testcase. + +2018-05-31 Qing Zhao + + PR middle-end/78809 + PR middle-end/83026 + * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ + and BUILT_IN_STRNCMP_EQ. + * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and + BUILT_IN_STRNCMP_EQ. + * gimple-fold.c (gimple_fold_builtin_string_compare): Add the + handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ. + (gimple_fold_builtin): Likewise. + * tree-ssa-strlen.c (compute_string_length): New function. + (determine_min_obsize): New function. + (handle_builtin_string_cmp): New function to handle calls to + string compare functions. + (strlen_optimize_stmt): Add handling to builtin string compare + calls. + * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): + Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ. + * tree.c (build_common_builtin_nodes): Add new defines of + BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ. + +2018-05-31 Jakub Jelinek + + PR target/85984 + * bb-reorder.c (pass_partition_blocks::gate): Return false for + functions with naked attribute. + +2018-05-31 Uros Bizjak + + * config/i386/sse.md (avx_vec_concat): + Substitute concat_tg_mode mode attribute with xtg_mode. + (avx512dq_broadcast_1): Ditto. + (concat_tg_mode): Remove mode attribute. + +2018-05-31 Martin Sebor + + PR c/82063 + * calls.c (alloc_max_size): Correct a logic error/typo. + Treat excessive arguments as infinite. Warn for invalid arguments. + * doc/invoke.texi (-Walloc-size-larger-than): Update. + +2018-05-31 H.J. Lu + + PR target/85829 + * config/i386/x86-tune.def: Re-enable partial_reg_dependency + and movx for Haswell. + +2018-05-31 Chung-Lin Tang + Cesar Philippidis + + PR middle-end/85879 + * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true' + when emitting error on private/firstprivate reductions. + * omp-low.c (lower_omp_target): Avoid reference-type processing + on pointers for firstprivate clause. + +2018-05-31 Sameera Deshpande + + * config/aarch64/aarch64-simd-builtins.def (ld1x3): New. + (st1x2): Likewise. + (st1x3): Likewise. + * config/aarch64/aarch64-simd.md + (aarch64_ld1x3): New pattern. + (aarch64_ld1_x3_): Likewise + (aarch64_st1x2): Likewise + (aarch64_st1_x2_): Likewise + (aarch64_st1x3): Likewise + (aarch64_st1_x3_): Likewise + * config/aarch64/arm_neon.h (vld1_u8_x3): New function. + (vld1_s8_x3): Likewise. + (vld1_u16_x3): Likewise. + (vld1_s16_x3): Likewise. + (vld1_u32_x3): Likewise. + (vld1_s32_x3): Likewise. + (vld1_u64_x3): Likewise. + (vld1_s64_x3): Likewise. + (vld1_f16_x3): Likewise. + (vld1_f32_x3): Likewise. + (vld1_f64_x3): Likewise. + (vld1_p8_x3): Likewise. + (vld1_p16_x3): Likewise. + (vld1_p64_x3): Likewise. + (vld1q_u8_x3): Likewise. + (vld1q_s8_x3): Likewise. + (vld1q_u16_x3): Likewise. + (vld1q_s16_x3): Likewise. + (vld1q_u32_x3): Likewise. + (vld1q_s32_x3): Likewise. + (vld1q_u64_x3): Likewise. + (vld1q_s64_x3): Likewise. + (vld1q_f16_x3): Likewise. + (vld1q_f32_x3): Likewise. + (vld1q_f64_x3): Likewise. + (vld1q_p8_x3): Likewise. + (vld1q_p16_x3): Likewise. + (vld1q_p64_x3): Likewise. + (vst1_s64_x2): Likewise. + (vst1_u64_x2): Likewise. + (vst1_f64_x2): Likewise. + (vst1_s8_x2): Likewise. + (vst1_p8_x2): Likewise. + (vst1_s16_x2): Likewise. + (vst1_p16_x2): Likewise. + (vst1_s32_x2): Likewise. + (vst1_u8_x2): Likewise. + (vst1_u16_x2): Likewise. + (vst1_u32_x2): Likewise. + (vst1_f16_x2): Likewise. + (vst1_f32_x2): Likewise. + (vst1_p64_x2): Likewise. + (vst1q_s8_x2): Likewise. + (vst1q_p8_x2): Likewise. + (vst1q_s16_x2): Likewise. + (vst1q_p16_x2): Likewise. + (vst1q_s32_x2): Likewise. + (vst1q_s64_x2): Likewise. + (vst1q_u8_x2): Likewise. + (vst1q_u16_x2): Likewise. + (vst1q_u32_x2): Likewise. + (vst1q_u64_x2): Likewise. + (vst1q_f16_x2): Likewise. + (vst1q_f32_x2): Likewise. + (vst1q_f64_x2): Likewise. + (vst1q_p64_x2): Likewise. + (vst1_s64_x3): Likewise. + (vst1_u64_x3): Likewise. + (vst1_f64_x3): Likewise. + (vst1_s8_x3): Likewise. + (vst1_p8_x3): Likewise. + (vst1_s16_x3): Likewise. + (vst1_p16_x3): Likewise. + (vst1_s32_x3): Likewise. + (vst1_u8_x3): Likewise. + (vst1_u16_x3): Likewise. + (vst1_u32_x3): Likewise. + (vst1_f16_x3): Likewise. + (vst1_f32_x3): Likewise. + (vst1_p64_x3): Likewise. + (vst1q_s8_x3): Likewise. + (vst1q_p8_x3): Likewise. + (vst1q_s16_x3): Likewise. + (vst1q_p16_x3): Likewise. + (vst1q_s32_x3): Likewise. + (vst1q_s64_x3): Likewise. + (vst1q_u8_x3): Likewise. + (vst1q_u16_x3): Likewise. + (vst1q_u32_x3): Likewise. + (vst1q_u64_x3): Likewise. + (vst1q_f16_x3): Likewise. + (vst1q_f32_x3): Likewise. + (vst1q_f64_x3): Likewise. + (vst1q_p64_x3): Likewise. + +2018-05-30 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_output_labelref): Prepend + user_label_prefix to name. + + * tree-core.h: Update comment about the format of NAME string + passed to handler in attribute_spec. + + * config/msp430/msp430.md: Remove erroneous subreg expression from + zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on + zero_extend{q,h}isi2. + +2018-05-30 Borislav Petkov + + * doc/extend.texi: Document some architecture specific + constraints and sort entries. + +2018-05-30 Martin Sebor + + PR middle-end/85369 + * builtins.c (expand_builtin_stpcpy_1): New function. + (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg + only if the former succeeds. + +2018-05-31 Sameera Deshpande + + * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4 + in saphira. + +2018-05-30 Jan Hubicka + + * doc/invoke.texi (-flinker-output): Document + +2018-05-30 Jan Hubicka + + * passes.c (ipa_write_summaries): Only modify statements if body + is in memory. + * cgraphunit.c (ipa_passes): Also produce intermeidate code when + incrementally linking. + (ipa_passes): Likewise. + * lto-cgraph.c (lto_output_node): When incrementally linking do not + pass down resolution info. + * common.opt (flag_incremental_link): Update info. + * gcc.c (plugin specs): Turn flinker-output=* to + -plugin-opt=-linker-output-known + * toplev.c (compile_file): Also cut compilation when doing incremental + link. + * flag-types. (enum lto_partition_model): Add + LTO_LINKER_OUTPUT_NOLTOREL. + (invoke.texi): Add -flinker-output docs. + * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental + link same way as WPA; do not stream in dead initializers. + + * dwarf2out.c (dwarf2out_die_ref_for_decl, + darf2out_register_external_decl): Support incremental link. + +2018-05-30 Jan Hubicka + + * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_. + +2018-05-30 Jan Hubicka + + * lto-wrapper.c (debug_objcopy): Add rename parameter; pass + it down to simple_object_copy_lto_debug_sections. + (run_gcc): Determine incremental LTO link time and configure + lto1 into non-wpa mode, disable renaming of debug sections. + +2018-05-30 Kelvin Nilsen + + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove + descriptions of various incorrectly documented functions. + +2018-05-30 Andre Vieira + + Revert: + * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make + address check not strict. + +2018-05-30 Richard Biener + + PR tree-optimization/85964 + * tracer.c (better_p): Drop initialized count check, we only + call the function with initialized counts now. + (find_best_successor): Do find a best edge if one + has uninitialized count. + (find_best_predecessor): Likewise. Do BB frequency check only + if count is initialized. + +2017-05-30 Jackson Woodruff + + * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New. + (aarch64_ldrstr_offset_compare): New. + (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all + load/store orderings. + (aarch64_gen_adjusted_ldpstp): Likewise. + +2018-05-30 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class): + Check for subset of GENERAL_REGS and FP_REGS. + * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of + r=w alternative. + +2018-05-30 Richard Sandiford + + * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p + and wi::to_poly_offset. Add the current offset and then check + whether the sum fits, rather than using an unchecked addition of + a checked term. Check for a shwi rather than a uhwi. + * expr.c (get_bit_range): Use tree_to_poly_uint64. + (store_constructor): Use poly_int_tree_p. + (expand_expr_real_1): Likewise. + * function.c (assign_temp): Likewise. + * fold-const.c (const_binop): Use poly_int_tree_p and + wi::to_poly_offset. + (fold_indirect_ref_1): Likewise. Use multiple_p to attempt an exact + division. + * ipa-icf-gimple.c (func_checker::compare_operand): Use + to_poly_offset for MEM offsets. + * ipa-icf.c (sem_variable::equals): Likewise. + * stor-layout.c (compute_record_mode): Use poly_int_tree_p. + * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use + wi::to_poly_offset for BIT_FIELD_REF offsets. + (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and + wi::to_poly_offset. + * var-tracking.c (emit_note_insn_var_location): Use + tree_to_poly_uint64. + +2018-05-29 Jim Wilson + + * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo. + +2018-05-29 Uros Bizjak + + PR target/85950 + * config/i386/i386.md (l2): + Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q} + sequence. + (sse4_1_round2): Use nonimmediate_operand + for operand 1 predicate. + +2018-05-29 Martin Sebor + Richard Biener + + PR testsuite/85888 + * calls.c (get_size_range): Call determine_value_range instead + of get_value_range.. + * tree-vrp.h (determine_value_range): Declared new function. + * tree-vrp.c (determine_value_range_1, determine_value_range): New. + +2018-05-29 Richard Biener + + * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make + sure to use non-pattern stmts for get_earlier_stmt arguments. + * tree-vectorizer.h (get_earlier_stmt): Assert we do not get + called on pattern stmts. + (get_later_stmt): Likewise. + +2018-05-29 Martin Liska + + PR gcov-profile/85759 + * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR + env variables. + +2018-05-29 Jakub Jelinek + + * tree-cfg.c (verify_gimple_assign_unary): Add checking for + VEC_UNPACK_*_EXPR. + (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for + VEC_PACK_*_EXPR. + + PR target/85918 + * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR, + VEC_PACK_FLOAT_EXPR): New tree codes. + * tree-pretty-print.c (op_code_prio): Handle + VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR. + (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR, + VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR. + * tree-inline.c (estimate_operator_cost): Likewise. + * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR. + * fold-const.c (const_binop): Likewise. + (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and + VEC_UNPACK_FIX_TRUNC_LO_EXPR. + * tree-cfg.c (verify_gimple_assign_unary): Likewise. + (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR. + * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR, + VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR. + * expr.c (expand_expr_real_2): Likewise. + * optabs.def (vec_packs_float_optab, vec_packu_float_optab, + vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab, + vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New + optabs. + * optabs.c (expand_widen_pattern_expr): For + VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use + sign from result type rather than operand's type. + (expand_binop_directly): For vec_packu_float_optab and + vec_packs_float_optab allow result type to be different from operand's + type. + * optabs-tree.c (optab_for_tree_code): Handle + VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and + VEC_PACK_FLOAT_EXPR. Formatting fixes. + * tree-vect-generic.c (expand_vector_operations_1): Handle + VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and + VEC_PACK_FLOAT_EXPR. + * tree-vect-stmts.c (supportable_widening_operation): Handle + FIX_TRUNC_EXPR. + (supportable_narrowing_operation): Handle FLOAT_EXPR. + * config/i386/i386.md (fixprefix, floatprefix): New code attributes. + * config/i386/sse.md (*floatv2div2sf2): Rename to ... + (floatv2div2sf2): ... this. Formatting fix. + (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New + mode attributes. + (vec_pack_float_): New expander. + (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode + attributes. + (vec_unpack_fix_trunc_lo_, + vec_unpack_fix_trunc_hi_): New expanders. + * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m}, + vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m}, + vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}): + Document. + * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR, + VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description. + (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR, + VEC_PACK_FLOAT_EXPR): Document. + +2018-05-29 Richard Biener + + * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos + member. + (stmt_vec_info_vec): Make pointer. + (init_stmt_vec_info_vec): Remove. + (free_stmt_vec_info_vec): Likewise. + (set_stmt_vec_info_vec): New function. + (free_stmt_vec_infos): Likewise. + (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection. + (set_vinfo_for_stmt): Likewise. + (get_earlier_stmt): Likewise. + (get_later_stmt): Likewise. + * tree-vectorizer.c (stmt_vec_info_vec): Make pointer. + (vec_info::vec_info): Allocate stmt_vec_infos and set the global. + (vec_info::~vec_info): Free stmt_vec_infos. + (vectorize_loops): Set the global stmt_vec_info_vec to NULL. + Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls. + (pass_slp_vectorize::execute): Likewise. + * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove. + (free_stmt_vec_info_vec): Likewise. + (set_stmt_vec_info_vec): New function. + (free_stmt_vec_infos): Likewise. + * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set + the global stmt_vec_info_vec. + * tree-parloops.c (gather_scalar_reductions): Use + set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local + vector. + +2018-05-29 Richard Biener + + * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE. + +2018-05-29 Martin Liska + David Malcolm + + * vec.c (test_reverse): New. + (vec_c_tests): Add new test. + * vec.h (vl_ptr>::reverse): New function. + +2018-05-29 Gerald Pfeifer + + * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported. + + * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5 + and later. + +2018-05-28 Bernd Edlinger + + * tree-dump.c (dump_node): Use splay_tree_delete_pointers. + +2018-05-28 Richard Biener + + PR tree-optimization/85933 + * tree-vect-data-refs.c (vect_record_base_alignments): Only + look at stmts marked as vectorizable. + +2018-05-28 Richard Biener + + PR tree-optimization/85934 + * tree-vect-generic.c (expand_vector_operations_1): Hoist + vector boolean check before scalar optimization. + +2018-05-28 Jakub Jelinek + + * doc/invoke.texi (ARM Options): Use @item instead of @itemx + for armv5te. + +2018-05-28 Mark Wielaard + + * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2 + if it is an expression containing a minus sign. + +2018-05-27 John David Anglin + + * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0. + +2018-05-27 Paul Koning + + * config/pdp11/pdp11.md (truncsihi2): Remove. + +2018-05-27 Monk Chiang + Chung-Ju Wu + + * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns + implementation. + (unaligned_store_dw): Ditto. + * config/nds32/nds32-memory-manipulation.c + (nds32_expand_movmemsi_loop_known_size): Refactoring implementation. + (nds32_gen_dup_4_byte_to_word_value): Rename to ... + (nds32_gen_dup_4_byte_to_word_value_aux): ... this. + (emit_setmem_word_loop): Rename to ... + (emit_setmem_doubleword_loop): ... this. + (nds32_gen_dup_4_byte_to_word_value): New function. + (nds32_gen_dup_8_byte_to_double_word_value): New function. + (nds32_expand_setmem_loop): Refine implementation. + (nds32_expand_setmem_loop_v3m): Ditto. + * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New + pattern. + +2018-05-27 Chung-Ju Wu + + * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns. + +2018-05-27 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue". + (nds32_init_machine_status): Initialize machine->attr_naked_p and + machine->attr_no_prologue_p. + (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes. + (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes. + (nds32_expand_epilogue): Consider attr_naked_p. + (nds32_expand_epilogue_v3pop): Likewise. + (nds32_can_use_return_insn): Likewise. + * config/nds32/nds32.h (machine_function): Add attr_naked_p and + attr_no_prologue_p fields. + * config/nds32/nds32.opt (mret-in-naked-func): New option. + +2018-05-27 Jakub Jelinek + + PR target/85918 + * config/i386/i386.md (fixunssuffix, floatunssuffix): New code + attributes. + * config/i386/sse.md + (float2): + Rename to ... + (float2): + ... this. + (float2): + Rename to ... + (float2): + ... this. + (*floatv2div2sf2): Rename to ... + (*floatv2div2sf2): ... this. + (floatv2div2sf2_mask): Rename to ... + (floatv2div2sf2_mask): ... this. + (*floatv2div2sf2_mask_1): Rename to ... + (*floatv2div2sf2_mask_1): ... this. + (fix_truncv8dfv8si2): Rename + to ... + (fix_truncv8dfv8si2): + ... this. + (fix_trunc2): + Rename to ... + (fix_trunc2): + ... this. + (fix_trunc2): + Rename to ... + (fix_trunc2): + ... this. + (fix_truncv2sfv2di2): Rename to ... + (fix_truncv2sfv2di2): ... this. + (vec_pack_ufix_trunc_): Use gen_fixuns_truncv8dfv8si2 instead of + gen_ufix_truncv8dfv8si2. + * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask, + __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask, + __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask, + __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask, + __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask, + __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask, + __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask): + Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names. + +2018-05-24 H.J. Lu + + PR target/85900 + PR target/85345 + * varasm.c (assemble_alias): Lookup ifunc attribute on error. + +2018-05-25 Jim Wilson + + * config/riscv/riscv-protos.h (riscv_epilogue_uses): New. + * config/riscv/riscv.c (struct machine_function): Add + interrupt_handler_p and attribute_checked_p fields. + (riscv_attribute_table): Add interrupt. + (riscv_interrupt_type_p): New. + (riscv_save_reg_p): Save extra regs for interrupt handler. + (riscv_use_save_libcall): Return false for interrupt handler. + (riscv_first_stack_step): Add forward declaration. + (riscv_compute_frame_info): New local interrupt_save_t1. Set it + for interrupt handler with large frame. Use it for saved reg list. + (riscv_expand_prologue): Move flag_stack_usage_info support to + eliminate duplication. + (riscv_expand_epilogue): Generate mret for interrupt handler. + (riscv_epilogue_uses): New. + (riscv_can_use_return_insn): Return false for interrupt handler. + (riscv_function_ok_for_sibcall): Likewise. + (riscv_set_current_function): Add interrupt handler support. + * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses. + * config/riscv/riscv.md (UNSPECV_MRET): New. + (GP_REGNUM): New. + (riscv_frflags, riscv_fsflags): Use tab after opcode. + (riscv_mret): New. + * doc/extend.texi (RISC-V Function Attributes) : New. + +2018-05-25 Bill Schmidt + + PR tree-optimization/85712 + * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if + this candidate has already been replaced in-situ by a copy. + +2018-05-25 Jason Merrill + + PR c++/80485 - inline function non-zero address. + * symtab.c (nonzero_address): Check DECL_COMDAT. + +2018-05-25 Uros Bizjak + + PR target/83628 + * config/alpha/alpha.md (ashlsi3): New insn pattern. + (*ashlsi_se): Rename from *ashldi_se. Define as sign + extension of SImode operation. Use const123_operand predicate. + (*saddsi_1): Remove. + (*saddl_se_1): Ditto. + (*ssubsi_1): Ditto. + (*ssubl_se_1): Ditto. + * config/alpha/predicates.md (const123_operand): New predicate. + * config/alpha/constraints.md (P): Use IN_RANGE. + +2018-05-25 Richard Biener + + * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter, + defaulted to true. + (ref_maybe_used_by_stmt_p): Likewise. + (stmt_may_clobber_ref_p): Likewise. + (stmt_may_clobber_ref_p_1): Likewise. + * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter + and pass it along. + (ref_maybe_used_by_stmt_p): Likewise. + (stmt_may_clobber_ref_p): Likewise. + (stmt_may_clobber_ref_p_1): Likewise. + * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use + the alias oracle to disambiguate DRs with stmts DR analysis + couldn't handle. + (vect_analyze_data_refs): Do not give up on not analyzable + DRs for BB vectorization. Remove code truncating the dataref + vector. + +2018-05-25 Jakub Jelinek + + PR target/85832 + * config/i386/sse.md (_eq3_1): + Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW + in test instead of TARGET_AVX512F for VI12_AVX512VL iterator. + +2018-05-25 Richard Biener + + * tree-vect-data-refs.c (vect_find_stmt_data_reference): New + function, combining stmt data ref gathering and fatal analysis + parts. + (vect_analyze_data_refs): Remove now redudnant code and simplify. + * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from + vect_analyze_loop_2 and use vect_find_stmt_data_reference. + * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference. + * tree-vectorizer.h (vect_find_stmt_data_reference): Declare. + +2018-05-25 Bin Cheng + + PR tree-optimization/85720 + * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge + SCC if all partitions are builtins. + (version_loop_by_alias_check): New parameter. Generate cancelable + runtime alias check if all partitions are builtins. + (distribute_loop): Update call to above function. + +2018-05-25 Bin Cheng + + * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files. + (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c. + (parm_default_def_partition_arg): Ditto. + (set_parm_default_def_partition): Ditto. + (get_parm_default_def_partitions): Ditto and make it static. + (get_undefined_value_partitions): Ditto and make it static. + (remove_ssa_form): Refactor call to init_var_map here. + * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range + computation for loop region. + (coalesce_partitions, compute_optimized_partition_bases): Ditto. + (register_default_def): Delete. + (for_all_parms, create_default_def): Move to tree-outof-ssa.c. + (parm_default_def_partition_arg): Ditto. + (set_parm_default_def_partition): Ditto. + (get_parm_default_def_partitions): Ditto and make it static. + (get_undefined_value_partitions): Ditto and make it static. + (coalesce_with_default, coalesce_with_default): Update comment. + (create_coalesce_list_for_region): New func factored out from + create_outofssa_var_map. + (populate_coalesce_list_for_outofssa): New func factored out from + create_outofssa_var_map and coalesce_ssa_name. + (create_outofssa_var_map): Delete. + (coalesce_ssa_name): Refactor to support live range computation. + * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl. + (get_parm_default_def_partitions): Delete. + (get_undefined_value_partitions): Ditto. + * tree-ssa-live.c (init_var_map, delete_var_map): Support live range + computation for loop region. + (new_tree_live_info, loe_visit_block): Ditto. + (live_worklist, set_var_live_on_entry): Ditto. + (calculate_live_on_exit, verify_live_on_entry): Ditto. + * tree-ssa-live.h (struct _var_map): New fields. + (init_var_map): Change decl. + (region_contains_p): New. + +2018-05-25 Bin Cheng + + * tree-ssa-live.h (live_merge_and_clear): Delete. + +2018-05-25 Richard Biener + + PR c++/85912 + * tree-dump.c (dequeue_and_dump): Remove access to removed + operand 2 of a SWITCH_EXPR. + +2018-05-25 Richard Sandiford + + * doc/sourcebuild.texi (vect_double_cond_arith): Include + multiplication and division. + * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m}) + (cond_udiv@var{m}, cond_umod@var{m}): Document. + * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab) + (cond_udiv_optab, cond_umod_optab): New optabs. + * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD) + (IFN_COND_RDIV): New internal functions. + * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR, + TRUNC_MOD_EXPR and RDIV_EXPR. + * match.pd (UNCOND_BINARY, COND_BINARY): Handle them. + * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV): + New unspecs. + (SVE_INT_BINARY): Include mult. + (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV. + (optab, sve_int_op): Handle mult. + (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and + UNSPEC_COND_DIV. + * config/aarch64/aarch64-sve.md (cond_): New pattern + for SVE_INT_BINARY_SD. + +2018-05-25 Richard Sandiford + + * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator. + (optab, sve_int_op): Handle div and udiv. + * config/aarch64/aarch64-sve.md (3): New expander + for SVE_INT_BINARY_SD. + (*3): New insn for the same. + +2018-05-25 Richard Sandiford + + * tree-vect-patterns.c: Include predict.h. + (vect_recog_divmod_pattern): Restrict check for division support + to when optimizing for size. + +2018-05-25 Richard Sandiford + + * doc/sourcebuild.texi (vect_double_cond_arith: Document. + * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4. + (gimple_match_op::gimple_match_op): Add an overload for 4 operands. + (gimple_match_op::set_op): Likewise. + (gimple_resimplify4): Declare. + * genmatch.c (get_operand_type): Handle CFN_COND_* functions. + (expr::gen_transform): Likewise. + (decision_tree::gen): Generate a simplification routine for 4 operands. + * gimple-match-head.c (gimple_simplify): Add an overload for + 4 operands. In the top-level function, handle up to 4 call + arguments and call gimple_resimplify4. + (gimple_resimplify4): New function. + (build_call_internal): Pass a fourth operand. + (maybe_push_to_seq): Likewise. + * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists. + Fold VEC_COND_EXPRs of an operation and a default value into + an IFN_COND_* function if possible. + * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN): + New unspecs. + (SVE_COND_FP_BINARY): Include them. + (optab, sve_fp_op): Handle them. + (SVE_INT_BINARY_REV): New code iterator. + (SVE_COND_FP_BINARY_REV): New int iterator. + (commutative): New int attribute. + * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op): + Declare. + * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New + function. + * config/aarch64/aarch64-sve.md (cond_): Use it. + (*cond_): New patterns for reversed operands. + +2018-05-25 Richard Biener + + * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove. + (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info. + (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info. + (STMT_VINFO_GROUPED_ACCESS): Adjust. + * tree-vect-data-refs.c (everywhere): Adjust users. + * tree-vect-loop.c (everywhere): Likewise. + * tree-vect-slp.c (everywhere): Likewise. + * tree-vect-stmts.c (everywhere): Likewise. + * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise. + +2018-05-25 Rainer Orth + + * configure.ac (gcc_cv_as_section_has_e): Move to common section. + Rename to... + (gcc_cv_as_section_exclude): ... this. + Try Solaris as #exclude syntax. + * configure: Regenerate. + * config.in: Regenerate. + * config/i386/i386.c (i386_solaris_elf_named_section): Handle + SECTION_EXCLUDE. + * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section) + [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE. + + * varasm.c (default_elf_asm_named_section): Don't check if + HAVE_GAS_SECTION_EXCLUDE is defined. + +2018-05-25 Richard Sandiford + + * doc/md.texi: Update the documentation of the cond_* optabs + to mention the new final operand. Fix GET_MODE_NUNITS call. + Describe the scalar case too. + * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left. + * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands + instead of 2. + (expand_cond_binary_optab_fn): Expect 4 operands instead of 3. + (get_conditional_internal_fn): Update comment. + * tree-vect-loop.c (vectorizable_reduction): Pass the original + accumulator value as a final argument to conditional functions. + * config/aarch64/aarch64-sve.md (cond_): Turn into + a define_expand and add an "else" operand. Assert for now that + the else operand is equal to operand 2. Use SVE_INT_BINARY and + SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP. + (*cond_): New patterns. + * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX) + (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR) + (UNSPEC_COND_EOR): Delete. + (optab): Remove associated mappings. + (SVE_INT_BINARY): New code iterator. + (sve_int_op): Remove int attribute and add "minus" to the code + attribute. + (SVE_COND_INT_OP): Delete. + (SVE_COND_FP_OP): Rename to... + (SVE_COND_FP_BINARY): ...this. + +2018-05-25 Richard Sandiford + + * optabs.c (can_reuse_operands_p): New function. + (maybe_legitimize_operands): Try to reuse the results for + earlier operands. + +2018-05-24 Uros Bizjak + + * config/i386/sse.md (cvtusi264): + Add {q} suffix to insn mnemonic. + +2018-05-23 Jozef Lawrynowicz + + * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define. + (msp430_warn_func_return): New. + +2018-05-24 Roger Sayle + + * fold-const.c (tree_nonzero_bits): New function. + * fold-const.h (tree_nonzero_bits): Likewise. + * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and + friends. POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc. + +2018-05-24 H.J. Lu + + PR target/85900 + PR target/85345 + * varasm.c (assemble_alias): Check ifunc_resolver only on + FUNCTION_DECL. + +2018-05-24 Uros Bizjak + + PR target/85903 + * config/i386/sse.md (movdi_to_sse): Do not generate pseudo + when memory input operand is handled. + +2018-05-24 Luis Machado + + * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static + global. + (qdf24xx_tunings) : Set to qdf24xx_addrcost_table. + +2018-05-24 Richard Sandiford + + * match.pd: Delay FMA folds until after vectorization. + +2018-05-24 Andre Vieira + + PR target/83009 + * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make + address check not strict. + +2018-05-24 Richard Sandiford + + * gimple-match.h (gimple_match_op): New class. + (mprts_hook): Replace parameters with a gimple_match_op *. + (maybe_build_generic_op): Likewise. + (gimple_simplified_result_is_gimple_val): Replace parameters with + a const gimple_match_op *. + (gimple_simplify): Replace code_helper * and tree * parameters with + a gimple_match_op * parameter. + (gimple_resimplify1): Replace code_helper *, tree and tree * + parameters with a gimple_match_op * parameter. + (gimple_resimplify2): Likewise. + (gimple_resimplify3): Likewise. + (maybe_push_res_to_seq): Replace code_helper, tree and tree * + parameters with a gimple_match_op * parameter. + * gimple-match-head.c (gimple_simplify): Change prototypes of + auto-generated functions to take a gimple_match_op * instead of + separate code_helper * and tree * parameters. Make the same + change in the top-level overload and update calls to the + gimple_resimplify routines. Update calls to the auto-generated + functions and to maybe_push_res_to_seq in the publicly-facing + operation-specific gimple_simplify overloads. + (gimple_match_op::MAX_NUM_OPS): Define. + (gimple_resimplify1): Replace rcode and ops with a single res_op + parameter. Update call to gimple_simplify. + (gimple_resimplify2): Likewise. + (gimple_resimplify3): Likewise. + (mprts_hook): Replace parameters with a gimple_match_op *. + (maybe_build_generic_op): Likewise. + (build_call_internal): Replace type, nargs and ops with + a gimple_match_op *. + (maybe_push_res_to_seq): Replace res_code, type and ops parameters + with a single gimple_match_op *. Update calls to mprts_hook, + build_call_internal and gimple_simplified_result_is_gimple_val. + Factor out code that is common to the tree_code and combined_fn cases. + * genmatch.c (expr::gen_transform): Replace tem_code and + tem_ops with a gimple_match_op called tem_op. Update calls + to the gimple_resimplify functions and maybe_push_res_to_seq. + (dt_simplify::gen_1): Manipulate res_op instead of res_code and + res_ops. Update call to the gimple_resimplify functions. + (dt_simplify::gen): Pass res_op instead of res_code and res_ops. + (decision_tree::gen): Make the functions take a gimple_match_op * + called res_op instead of separate res_code and res_ops parameters. + Update call accordingly. + * gimple-fold.c (replace_stmt_with_simplification): Replace rcode + and ops with a single res_op parameter. Update calls to + maybe_build_generic_op and maybe_push_res_to_seq. + (fold_stmt_1): Update calls to gimple_simplify and + replace_stmt_with_simplification. + (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify + and gimple_simplified_result_is_gimple_val. + * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to + gimple_simplify. + * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters + with a gimple_match_op *. + (vn_nary_build_or_lookup): Likewise. Update call to + vn_nary_build_or_lookup_1. + (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a + gimple_match_op *. Update calls to the gimple_resimplify routines + and to gimple_simplified_result_is_gimple_val. + (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1. + Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3. + (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup. + (visit_nary_op): Likewise. + (visit_reference_op_load): Likewise. + +2018-05-23 Luis Machado + + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type + modifier for printing the step amount. + +2018-05-23 Jozef Lawrynowicz + + PR target/78849 + * tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN + types. + +2018-05-23 Segher Boessenkool + + * doc/sourcebuild.texi (Endianness): New subsubsection. + +2018-05-23 Luis Machado + + * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) + : New const bool field. + * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include + prefetch_dynamic_strides. + (exynosm1_prefetch_tune): Likewise. + (thunderxt88_prefetch_tune): Likewise. + (thunderx_prefetch_tune): Likewise. + (thunderx2t99_prefetch_tune): Likewise. + (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to + false. + (aarch64_override_options_internal): Update to set + PARAM_PREFETCH_DYNAMIC_STRIDES. + * doc/invoke.texi (prefetch-dynamic-strides): Document new option. + * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New. + * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define. + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for + prefetch-dynamic-strides setting. + +2018-05-23 Luis Machado + + * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) + : New const int field. + * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include + minimum_stride field defaulting to -1. + (exynosm1_prefetch_tune): Likewise. + (thunderxt88_prefetch_tune): Likewise. + (thunderx_prefetch_tune): Likewise. + (thunderx2t99_prefetch_tune): Likewise. + (qdf24xx_prefetch_tune) : Set to 2048. + : Set to 3. + (aarch64_override_options_internal): Update to set + PARAM_PREFETCH_MINIMUM_STRIDE. + * doc/invoke.texi (prefetch-minimum-stride): Document new option. + * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New. + * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define. + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if + stride is constant and is below the minimum stride threshold. + +2018-05-23 Kyrylo Tkachov + + * config/arm/arm-cpus.in (mode26): Delete. + (armv4): Delete mode26 reference. + * config/arm/arm.c (arm_configure_build_target): Delete use of + isa_bit_mode26. + +2018-05-23 Uros Bizjak + + * config/i386/i386.md (*floatuns2_avx512): + New insn pattern. + (floatunssi2): Also enable for AVX512F and TARGET_SSE_MATH. + Rewrite expander pattern. Emit gen_floatunssi2_i387_with_xmm + for non-SSE modes. + (floatunsdisf2): Rewrite expander pattern. Hanlde TARGET_AVX512F. + (floatunsdidf2): Ditto. + +2018-05-23 Uros Bizjak + + * config/i386/i386.md (fixuns_truncdi2): New insn pattern. + (fixuns_truncsi2_avx512f): Ditto. + (*fixuns_truncsi2_avx512f_zext): Ditto. + (fixuns_truncsi2): Also enable for AVX512F and TARGET_SSE_MATH. + Emit fixuns_truncsi2_avx512f for AVX512F targets. + +2018-05-23 Alexander Monakov + + PR rtl-optimization/79985 + * df-scan.c (df_insn_refs_collect): Remove special case for + global registers and asm statements. + +2018-05-23 Alexander Monakov + + * extend.texi (Global Register Variables): Rewrite the bullet list. + Note that the register is available for allocation. Note that access + via inline asm must use constraints. Add note about async-signal + handlers. Remove paragraph about automagic register selection. + +2018-05-23 Richard Biener + + * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction + of fixed offset from memset VN. + +2018-05-23 Bill Schmidt + + * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add + first_interp field. + (alloc_cand_and_find_basis): Initialize first_interp field. + (slsr_process_mul): Modify first_interp field. + (slsr_process_add): Likewise. + (slsr_process_cast): Modify first_interp field for each new + interpretation. + (slsr_process_copy): Likewise. + (dump_candidate): Dump first_interp field. + (replace_mult_candidate): Process all interpretations, not just + subsequent ones. + (replace_rhs_if_not_dup): Likewise. + (replace_one_candidate): Likewise. + +2018-05-23 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_use_frame_pointer): + Add new boolean. + (aarch64_needs_frame_chain): New function. + (aarch64_parse_override_string): Set aarch64_use_frame_pointer. + +2018-05-23 Sudakshina Das + + PR target/84882 + * common/config/aarch64/aarch64-common.c (aarch64_handle_option): + Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags. + * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative. + * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg + as true for strict-align. + (aarch64_can_inline_p): Perform checks even when callee has no + attributes to check for strict alignment. + * doc/extend.texi (AArch64 Function Attributes): Document + no-strict-align. + * doc/invoke.texi: (AArch64 Options): Likewise. + +2018-05-23 Richard Sandiford + + PR tree-optimization/85853 + * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out + the handling of the root of the node to... + (vect_slp_analyze_node_operations_1): ...this new function, + and run the whole thing with the child nodes' def types + set according to their SLP node's def type. + +2018-05-23 Richard Biener + + PR middle-end/85874 + * tree-data-ref.c (create_runtime_alias_checks): Defer + and ignore overflow warnings. + +2018-05-23 Yury Gribov + + PR tree-optimization/85822 + * tree-vrp.c (is_masked_range_test): Fix handling of negative + constants. + +2018-05-23 Richard Biener + + * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary + memset constants via native_interpret_expr. + +2018-05-22 H.J. Lu + + PR target/85345 + * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc + attribute. + (cgraph_node::create_alias): Likewise. + (cgraph_node::get_availability): Check ifunc_resolver instead + of looking up ifunc attribute. + * cgraphunit.c (maybe_diag_incompatible_alias): Likewise. + * varasm.c (do_assemble_alias): Likewise. + (assemble_alias): Likewise. + (default_binds_local_p_3): Likewise. + * cgraph.h (cgraph_node): Add ifunc_resolver. + (cgraph_node::only_called_directly_or_aliased_p): Return false + for IFUNC resolver. + * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc + attribute. + * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver + is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)). + (symtab_node::binds_to_current_def_p): Check ifunc_resolver + instead of looking up ifunc attribute. + +2018-05-22 Luis Machado + + * config/aarch64/aarch64.md (*ashift_extv_bfiz): New pattern. + +2018-05-22 Martin Sebor + + PR middle-end/85359 + * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg + only when expasion succeeds. + (expand_builtin_strcmp): Same. + (expand_builtin_strncmp): Same. + +2018-05-22 Martin Sebor + + * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment. + +2018-05-22 Jackson Woodruff + Kyrylo Tkachov + + * config/aarch64/aarch64-ldpstp.md: Replace uses of + aarch64_mem_pair_operand with memory_operand and delete operand swapping + code. + * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp): + Add check for legitimate_address. + (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate. + (aarch64_swap_ldrstr_operands): New. + * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands): + Define prototype. + +2018-05-22 Jackson Woodruff + Kyrylo Tkachov + + * config/aarch64/aarch64.md: New patterns to generate stp + and ldp. + (store_pair_sw, store_pair_dw): New patterns to generate stp for + single words and double words. + (load_pair_sw, load_pair_dw): Likewise. + (store_pair_sf, store_pair_df, store_pair_si, store_pair_di): + Delete. + (load_pair_sf, load_pair_df, load_pair_si, load_pair_di): + Delete. + * config/aarch64/aarch64-ldpstp.md: Modify peephole + for different mode ldpstp and add peephole for merged zero stores. + Likewise for loads. + * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp): + Add size check. + (aarch64_gen_store_pair): Rename calls to match new patterns. + (aarch64_gen_load_pair): Rename calls to match new patterns. + * config/aarch64/aarch64-simd.md (load_pair): Rename to... + (load_pair): ... This. + (store_pair): Rename to... + (vec_store_pair): ... This. + * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX): + New mode iterators. + (V_INT_EQUIV): Handle SImode. + * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero): + New predicate. + +2018-05-22 Martin Sebor + + PR c/85623 + * calls.c (maybe_warn_nonstring_arg): Use string length to set + or ajust the presumed bound on an operation to avoid unnecessary + warnings. + +2018-05-22 Martin Sebor + + PR tree-optimization/85826 + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid + assuming that a DECL necesarily has a constant size. + +2018-05-22 Richard Sandiford + + PR middle-end/85862 + * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs. + +2018-05-22 Richard Biener + + PR tree-optimization/85834 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle + non-constant and non-zero memset arguments. + +2018-05-22 Martin Liska + + PR ipa/85607 + * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types. + +2018-05-22 Richard Biener + + PR tree-optimization/85863 + * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant + comparisons when vectype is specified. + (vectorizable_condition): Do not specify vectype for + vect_is_simple_cond when SLP vectorizing. + +2018-05-21 Michael Meissner + + PR target/85657 + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not + define __ibm128 as long double. + * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128 + as a distinct type when IEEE 128-bit support is enabled. + (init_float128_ieee): Fix up conversions between IFmode and IEEE + 128-bit types to use the correct functions. + (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to + convert between 128-bit floating point types that have different + modes but the same representation, instead of using gen_lowpart to + makean alias. + * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and + KFmode. + (IFKF_reg): New attributes to give the register constraints for + IFmode and KFmode. + (extendtf2_internal): New insns to mark an explicit + conversion between 128-bit floating point types that have a + different mode but share the same representation. + +2018-05-21 Richard Sandiford + + PR tree-optimization/85814 + * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with + a null return from get_strinfo when unsharing the next + strinfo in the chain. + +2018-05-21 Vladimir Mezentsev + + PR gcc/84923 + * varasm.c (weak_finish): Clean up weak_decls. + +2018-05-21 Kyrylo Tkachov + + * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL, + UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2, + UNSPEC_UADALP values. + * config/aarch64/iterators.md (ABAL): New int iterator. + (ABDL2): Likewise. + (ADALP): Likewise. + (sur): Add mappings for the above. + * config/aarch64/aarch64-simd.md (aarch64_abdl2_3): + New define_insn. + (aarch64_abal_4): Likewise. + (aarch64_adalp_3): Likewise. + (sadv16qi): New define_expand. + +2018-05-21 Alexander Nesterovskiy + + * config/i386/i386.md (*movsf_internal): AVX falsedep fix. + (*movdf_internal): Ditto. + (*rcpsf2_sse): Ditto. + (*rsqrtsf2_sse): Ditto. + (*sqrt2_sse): Ditto. + +2018-05-21 Tamar Christina + + * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to + eor3q4. + (aarch64_bcaxqv8hi): Change to bcaxq4. + * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32, + veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8, + vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32, + vbcaxq_s64): New. + * config/aarch64/arm_neon.h: Likewise. + * config/aarch64/iterators.md (VQ_I): New. + +2018-05-21 Alexey Brodkin + + * config.gcc: Add arc/t-multilib-linux to tmake_file for + arc*-*-linux*. + * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and + MULTILIB_DIRNAMES + +2018-05-20 Chung-Ju Wu + + * config/nds32/constraints.md (S): New constraint. + * config/nds32/nds32.md (call_internal): Use constraint S. + (call_value_internal): Likewise. + (sibcall_internal): Likewise. + (sibcall_value_internal): Likewise. + +2018-05-20 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu + into consideration. + +2018-05-20 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure. + (insn_size_16bit, insn_size_32bit): New variables for cost evaluation. + (nds32_rtx_costs_impl): Simplify. + (nds32_address_cost_impl): Simplify. + (nds32_init_rtx_costs): New function. + (nds32_rtx_costs_speed_prefer): Likewise. + (nds32_rtx_costs_size_prefer): Likewise. + (nds32_address_cost_speed_prefer): Likewise. + (nds32_address_cost_speed_fwprop): Likewise. + (nds32_address_cost_size_prefer): Likewise. + * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare. + * config/nds32/nds32.c (nds32_option_override): Use + nds32_init_rtx_costs function. + +2018-05-20 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model. + * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define. + (TARGET_PIPELINE_N8): Likewise. + (TARGET_PIPELINE_N10): Likewise. + (TARGET_PIPELINE_N13): Likewise. + (TARGET_PIPELINE_GRAYWOLF): Likewise. + +2018-05-19 Monk Chiang + + * config/nds32/nds32-fpu.md: Update copyright year. + +2018-05-19 Chung-Ju Wu + + * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule. + +2018-05-19 Chung-Ju Wu + + * config/nds32/nds32.c + (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable. + * config/nds32/nds32.opt (minline-asm-r15): New option. + +2018-05-19 Chung-Ju Wu + + * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add + MASK_HW_ABS. + * config/nds32/nds32.md (abssi2): New pattern. + +2018-05-19 Uros Bizjak + + * config/i386/i386.md (rex64namesuffix): New mode attribute. + * config/i386/sse.md (sse_cvtsi2ss): + Merge insn pattern from sse_cvtsi2ss and + sse_cvtsi2ssq using SWI48 mode iterator. + (sse_cvtss2si): Merge insn pattern + from sse_cvtss2si and sse_cvtss2siq + using SWI48 mode iterator. + (sse_cvtss2si_2): Merge insn pattern from + sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator. + (sse_cvttss2si): Merge insn + pattern from sse_cvttss2si + and sse_cvttss2siq using SWI48 mode iterator. + (avx512f_vcvtss2usi): Merge insn pattern + from avx512f_vcvtss2usi and avx512f_vcvtss2usiq + using SWI48 mode iterator. + (avx512f_vcvttss2usi): Merge + insn pattern from avx512f_vcvttss2usi and + avx512f_vcvttss2usiq using SWI48 mode iterator. + (avx512f_vcvtsd2usi): Merge insn pattern + from avx512f_vcvtsd2usi and avx512f_vcvtsd2usiq + using SWI48 mode iterator. + (avx512f_vcvttsd2usi): Merge + insn pattern from avx512f_vcvttsd2usi and + avx512f_vcvttsd2usiq using SWI48 mode iterator. + (sse2_cvtsd2si): Merge insn pattern from + sse2_cvtsd2si and sse2_cvtsd2siq using + SWI48 mode iterator. + (sse2_cvtsd2si_2): Merge insn pattern from + sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator. + (sse_cvttsd2si): Merge insn + pattern from sse_cvttsd2si + and sse_cvttsd2siq using SWI48 mode iterator. + +2018-05-19 Chung-Ju Wu + + * config/nds32/nds32-md-auxiliary.c + (nds32_valid_smw_lwm_base_p): Refine. + (nds32_output_smw_single_word): Refine. + (nds32_output_smw_double_word): New. + * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New. + +2018-05-19 Chung-Ju Wu + + * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine. + (nds32_output_stack_pop): Refine. + (nds32_expand_unaligned_load): Refine. + (nds32_expand_unaligned_store): Refine. + +2018-05-19 Kuan-Lin Chen + Chung-Ju Wu + + * config/nds32/constants.md: Add TP_REGNUM constant. + (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF, + UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and + UNSPEC_ADD32. + * config/nds32/nds32-doubleword.md: Consider flag_pic. + * config/nds32/nds32-dspext.md (mov): Expand TLS and PIC cases. + * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New. + * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS + and PIC code generation. + * config/nds32/nds32-protos.h: Declarations that support TLS and PIC + code generation. + * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax + optimization. + * config/nds32/nds32.md: Support TLS and PIC. + * config/nds32/nds32.c: Support TLS and PIC. + * config/nds32/nds32.h (nds32_relax_insn_type): New enum type. + * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New + predicate. + +2018-05-19 Chung-Ju Wu + + * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine + mode with E_ prefix. + +2018-05-19 Kuan-Lin Chen + Chung-Ju Wu + + * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT. + * config/nds32/nds32-md-auxiliary.c + (symbolic_reference_mentioned_p): New. + (nds32_legitimize_ict_address): New. + (nds32_expand_ict_move): New. + (nds32_indirect_call_referenced_p): New. + (nds32_symbol_binds_local_p): Delete. + (nds32_long_call_p): Modify. + * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type. + * config/nds32/nds32-protos.h + (symbolic_reference_mentioned_p): Declare. + (nds32_legitimize_ict_address): Declare. + (nds32_expand_ict_move): Declare. + (nds32_indirect_call_referenced_p): Declare. + * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New. + (nds32_relax_group): Use nds32_ict_const_p as condition. + * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call". + (nds32_asm_file_start): Output ict_model directive in asm code. + (nds32_legitimate_address_p): Consider indirect call. + (nds32_print_operand): Consider indirect call. + (nds32_print_operand_address): Consider indirect call. + (nds32_insert_attributes): Handle "indirect_call" attribute. + (TARGET_LEGITIMATE_ADDRESS_P): Define. + (TARGET_LEGITIMATE_CONSTANT_P): Define. + (TARGET_CANNOT_FORCE_CONST_MEM): Define. + (TARGET_DELEGITIMIZE_ADDRESS): Define. + (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define. + * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define. + (TARGET_ICT_MODEL_SMALL): Define. + (TARGET_ICT_MODEL_LARGE): Define. + * config/nds32/nds32.md (movsi): Consider ict model. + (call, call_value): Consider ict model. + (sibcall, sibcall_value): Consider ict model. + * config/nds32/nds32.opt (mict-model): New option. + * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict + model. + +2018-05-18 Kito Cheng + Monk Chiang + Jim Wilson + + * common/config/riscv/riscv-common.c (riscv_parse_arch_string): + Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i. + * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e. + * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define + __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI. + * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E. + * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE, + compute save_libcall_adjustment properly. + (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E. + (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E. + * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E. + (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE. + (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise. + (ABI_SPEC): Handle mabi=ilp32e. + * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E. + (RVE): Add RVE mask. + * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info. + <-march>: Add rv32e as an example. + +2018-05-18 Marc Glisse + + PR c++/82899 + * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument. + (intra_create_variable_infos): Handle C++ constructors. + +2018-05-18 Martin Liska + + * passes.def: Remove a redundant pass. + +2018-05-18 Eric Botcazou + + PR bootstrap/85838 + * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0]. + +2018-05-18 Kyrylo Tkachov + + * config/arm/arm-cpus.in (armv3m, mode32): Delete features. + (ARMv4): Update. + (ARMv2, ARMv3, ARMv3m): Delete fgroups. + (ARMv6m): Update. + (armv2, armv2a, armv3, armv3m): Delete architectures. + (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620, + arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720, + arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi): + Delete cpus. + * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m. + (*mulsidi3adddi): Likewise. + (mulsidi3): Likewise. + (*mulsidi3_nov6): Likewise. + (umulsidi3): Likewise. + (umulsidi3_nov6): Likewise. + (umaddsidi4): Likewise. + (*umulsidi3adddi): Likewise. + (smulsi3_highpart): Likewise. + (*smulsi3_highpart_nov6): Likewise. + (umulsi3_highpart): Likewise. + (*umulsi3_highpart_nov6): Likewise. + * config/arm/arm.h (arm_arch3m): Delete. + * config/arm/arm.c (arm_arch3m): Delete. + (arm_option_override_internal): Update armv3-related comment. + (arm_configure_build_target): Delete use of isa_bit_mode32. + (arm_option_reconfigure_globals): Delete set of arm_ach3m. + (arm_rtx_costs_internal): Delete check of arm_arch3m. + * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m. + (mulsa3): Likewise. + (mulusa3): Likewise. + * config/arm/arm-protos.h (arm_arch3m): Delete. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Likewise. + * config/arm/t-arm-elf (all_early_nofp): Delete mentions of + deleted architectures. + +2018-05-18 Kyrylo Tkachov + + * config/arm/arm-cpus.in (armv5, armv5e): Delete features. + (armv5t, armv5te): New features. + (ARMv5, ARMv5e): Delete fgroups. + (ARMv5t, ARMv5te): Adjust for above changes. + (ARMv6m): Likewise. + (armv5, armv5e): Delete arches. + * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of + arm_arch5. + (*call_reg_arm): Likewise. + (*call_value_reg_armv5): Likewise. + (*call_value_reg_arm): Likewise. + (*call_symbol): Likewise. + (*call_value_symbol): Likewise. + (*sibcall_insn): Likewise. + (*sibcall_value_insn): Likewise. + (clzsi2): Likewise. + (prefetch): Likewise. + (define_split and define_peephole2 dependent on arm_arch5): + Likewise. + * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of + arm_arch5e. + (TARGET_ARM_QBIT): Likewise. + (TARGET_DSP_MULTIPLY): Likewise. + (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E. + (arm_arch5, arm_arch5e): Delete. + (arm_arch5t, arm_arch5te): Declare. + * config/arm/arm.c (arm_arch5, arm_arch5e): Delete. + (arm_arch5t): Declare. + (arm_option_reconfigure_globals): Update for the above. + (arm_options_perform_arch_sanity_checks): Update comment, replace + use of arm_arch5 with arm_arch5t. + (use_return_insn): Likewise. + (arm_emit_call_insn): Likewise. + (output_return_instruction): Likewise. + (arm_final_prescan_insn): Likewise. + (arm_coproc_builtin_available): Likewise. + * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and + arm_arch5e with arm_arch5t and arm_arch5te. + * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete. + (arm_arch5t, arm_arch5te): Declare. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/t-arm-elf: Remove references to armv5, armv5e. + * config/arm/t-multilib: Likewise. + * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t + instead of arm_arch5. + (*call_reg_thumb1): Likewise. + (*call_value_reg_thumb1_v5): Likewise. + (*call_value_reg_thumb1): Likewise. + * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now + unreachable path. + * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e. + +2018-05-18 Martin Liska + + PR gcov-profile/84846 + * doc/gcov.texi: Document -t option of gcov tool. + +2018-05-18 Martin Liska + + PR gcov-profile/84846 + * gcov.c (print_usage): Add new -t option. + (process_args): Handle the option. + (generate_results): Use stdout as output when requested by + the option. + +2018-05-18 Martin Liska + + PR gcov-profile/84846 + * coverage.c (coverage_init): Write PWD to .gcno file. + * doc/gcov.texi: Document how working directory is printed. + * gcov-dump.c (dump_gcov_file): Print PWD. + * gcov.c (output_intermediate_file): Likewise. + (read_graph_file): Read PWD string. + (output_lines): Print PWD. + +2018-05-18 Prathamesh Kulkarni + + PR middle-end/85817 + * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop + for retval and return false if all args to phi are zero. + +2018-05-18 Richard Biener + + * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges + method. + (evrp_dom_walker::before_dom_children): Call it. + +2018-05-18 Richard Biener + + * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine + results when processing array refs with variable index. + +2018-05-18 Toon Moene + + * doc/invoke.texi: Move -floop-unroll-and-jam documentation + directly after that of -floop-interchange. Indicate that both + options are enabled by default when specifying -O3. + +2018-05-18 Kyrylo Tkachov + + * config/aarch64/aarch64-simd.md (vec_set): Use VALL_F16 mode + iterator. Delete separate integer-mode vec_set expander. + (aarch64_simd_vec_setv2di): Delete. + (vec_setv2di): Delete. + (aarch64_simd_vec_set): Delete all other patterns with that name. + Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for + the "w, r" alternative. + +2018-05-18 Martin Liska + + * passes.def: Add pass_lower_switch and pass_lower_switch_O0. + * tree-pass.h (make_pass_lower_switch_O0): New function. + * tree-switch-conversion.c (node_has_low_bound): Remove. + (node_has_high_bound): Likewise. + (node_is_bounded): Likewise. + (class pass_lower_switch): Make it a template type and create + two instances. + (pass_lower_switch::execute): Add template argument. + (make_pass_lower_switch): New function. + (make_pass_lower_switch_O0): New function. + (do_jump_if_equal): Remove. + (emit_case_nodes): Simplify to just handle all 3 cases and leave + all the hard work to tree optimization passes. + +2018-05-18 Martin Liska + + * dbgcnt.c (limit_low): Renamed from limit. + (limit_high): New variable. + (dbg_cnt_is_enabled): Check for upper limit. + (dbg_cnt): Adjust dumping. + (dbg_cnt_set_limit_by_index): Add new argument for high + value. + (dbg_cnt_set_limit_by_name): Likewise. + (dbg_cnt_process_single_pair): Parse new format. + (dbg_cnt_process_opt): Use strtok. + (dbg_cnt_list_all_counters): Remove 'value' and add + 'limit_high'. + * doc/invoke.texi: Document changes. + +2018-05-18 Richard Sandiford + + * doc/sourcebuild.texi (scalar_all_fma): Document. + * tree.def (FMA_EXPR): Delete. + * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions. + * internal-fn.c (ternary_direct): New macro. + (expand_ternary_optab_fn): Likewise. + (direct_ternary_optab_supported_p): Likewise. + * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h. + * builtins.c (fold_builtin_fma): Delete. + (fold_builtin_3): Don't call it. + * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling. + * expr.c (expand_expr_real_2): Likewise. + * fold-const.c (operand_equal_p): Likewise. + (fold_ternary_loc): Likewise. + * gimple-pretty-print.c (dump_ternary_rhs): Likewise. + * gimple.c (DEFTREECODE): Likewise. + * gimplify.c (gimplify_expr): Likewise. + * optabs-tree.c (optab_for_tree_code): Likewise. + * tree-cfg.c (verify_gimple_assign_ternary): Likewise. + * tree-eh.c (operation_could_trap_p): Likewise. + (stmt_could_throw_1_p): Likewise. + * tree-inline.c (estimate_operator_cost): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + (op_code_prio): Likewise. + * tree-ssa-loop-im.c (stmt_cost): Likewise. + * tree-ssa-operands.c (get_expr_operands): Likewise. + * tree.c (commutative_ternary_tree_code, add_expr): Likewise. + * fold-const-call.h (fold_fma): Delete. + * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS, + CFN_FNMA and CFN_FNMS. + (fold_fma): Delete. + * genmatch.c (combined_fn): New enum. + (commutative_ternary_tree_code): Remove FMA_EXPR handling. + (commutative_op): New function. + (commutate): Use it. Handle more than 2 operands. + (dt_operand::gen_gimple_expr): Use commutative_op. + (parser::parse_expr): Allow :c to be used with non-binary + operators if the commutative operand is known. + * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle + CFN_FMS, CFN_FNMA and CFN_FNMS. + (backprop::process_assign_use): Remove FMA_EXPR handling. + * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise. + (gen_hsa_fma): New function. + (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS, + IFN_FNMA and IFN_FNMS. + * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS. + * gimple-fold.h (follow_all_ssa_edges): Declare. + * gimple-fold.c (follow_all_ssa_edges): New function. + * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the + gimple_build interface and use follow_all_ssa_edges to fold the result. + (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p + instead of checking for optabs directly. + * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls + rather than FMA_EXPRs. + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a + call to IFN_FMA instead of an FMA_EXPR. + +2018-05-17 Jim Wilson + + * expr.c (do_tablejump): When converting index to Pmode, if we have a + sign extended promoted subreg, and the range does not have the sign bit + set, then do a sign extend. + + * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode + test, check for sign extended subreg and/or constant operands, and + do a sign extend in that case. + +2018-05-17 Steve Ellcey + + * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete. + (thunderx2t99_multiple): Delete psuedo-units from used cpus. + Add untyped. + (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg. + Change logics_shift_reg to logics_shift_imm. + (thunderx2t99_fp_loadpair_basic): Delete. + (thunderx2t99_fp_storepair_basic): Delete. + (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types. + (thunderx2t99_asimd_polynomial): Delete. + (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q + and neon_fp_mul_d_scalar_q. + (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types. + (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q. + (thunderx2t99_asimd_recip_step): Add missing *sqrt* types. + (thunderx2t99_asimd_lut): Add missing tbl types. + (thunderx2t99_asimd_ext): Delete. + (thunderx2t99_asimd_load1_1_mult): Delete. + (thunderx2t99_asimd_load1_2_mult): Delete. + (thunderx2t99_asimd_load1_ldp): New. + (thunderx2t99_asimd_load1): New. + (thunderx2t99_asimd_load2): Add missing *load2* types. + (thunderx2t99_asimd_load3): New. + (thunderx2t99_asimd_load4): New. + (thunderx2t99_asimd_store1_1_mult): Delete. + (thunderx2t99_asimd_store1_2_mult): Delete. + (thunderx2t99_asimd_store2_mult): Delete. + (thunderx2t99_asimd_store2_onelane): Delete. + (thunderx2t99_asimd_store_stp): New. + (thunderx2t99_asimd_store1): New. + (thunderx2t99_asimd_store2): New. + (thunderx2t99_asimd_store3): New. + (thunderx2t99_asimd_store4): New. + +2018-05-17 Jerome Lambourg + + * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove + #include . Replace intptr_t with __INTPTR_TYPE__. + +2018-05-17 Pat Haugen + Segher Boessenkool + + PR target/85698 + * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest + operand. + +2018-05-17 Richard Biener + + * tree-ssa-dse.c (dse_classify_store): Fix iterator increment + for pruning loop and prune defs feeding only already visited PHIs. + +2018-05-17 Richard Biener + + * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling. + +2018-05-17 Bin Cheng + Richard Biener + + PR tree-optimization/85793 + * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load + for VMAT_ELEMENTWISE. + +2018-05-17 Richard Sandiford + + * internal-fn.h (lookup_internal_fn): Declare + * internal-fn.c (lookup_internal_fn): New function. + * gimple.c (gimple_build_call_from_tree): Handle calls to + internal functions. + * gimple-pretty-print.c (dump_gimple_call): Print "." before + internal function names. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise. + +2018-05-17 Richard Sandiford + + * gimple-fold.h (gimple_build): Make the function forms take + combined_fn rather than built_in_function. + (gimple_simplify): Likewise. + * gimple-match-head.c (gimple_simplify): Likewise. + * gimple-fold.c (gimple_build): Likewise. + * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build + rather than gimple_build_call_internal. + (get_initial_defs_for_reduction): Likewise. + (vect_create_epilog_for_reduction): Likewise. + (vectorizable_live_operation): Likewise. + +2018-05-17 Martin Liska + + * gimple-ssa-sprintf.c (format_directive): Do not use + space in between 'G_' and '('. + +2018-05-17 Jakub Jelinek + + PR target/85323 + * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts + even if the mask is not all ones. + + PR target/85323 + * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by + vector. + (ix86_gimple_fold_builtin): Likewise. + + PR target/85323 + * config/i386/i386.c: Include tree-vector-builder.h. + (ix86_vector_shift_count): New function. + (ix86_fold_builtin): Fold shift builtins by scalar count. + (ix86_gimple_fold_builtin): Likewise. + + * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8, + _mm512_setzero): New intrinsics. + +2018-05-17 James Greenhalgh + Kyrylo Tkachov + + * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify + code generation for cases where splatting a value is not useful. + * simplify-rtx.c (simplify_ternary_operation): Simplify + vec_merge across a vec_duplicate and a paradoxical subreg forming + a vector mode to a vec_concat. + +2018-05-17 Olga Makhotina + + * config.gcc: Support "goldmont-plus". + * config/i386/driver-i386.c (host_detect_local_cpu): Detect + "goldmont-plus". + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_GOLDMONT_PLUS. + * config/i386/i386.c (m_GOLDMONT_PLUS): Define. + (processor_target_table): Add "goldmont-plus". + (PTA_GOLDMONT_PLUS): Define. + (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS. + (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS. + (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS. + (fold_builtin_cpu): Add "goldmont-plus". + (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS. + (ix86_option_override_internal): Add "goldmont-plus". + * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS. + (processor_type): Add PROCESSOR_GOLDMONT_PLUS. + * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS. + * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type. + +2018-05-17 Richard Biener + + PR tree-optimization/85757 + * tree-ssa-dse.c (dse_classify_store): Record a PHI def and + remove defs that only feed that PHI from further processing. + +2018-05-16 Jim Wilson + + * config/riscv/riscv.md (si3_mask, si3_mask_1): Prepend + asterisk to name. + (di3_mask, di3_mask_1): Likewise. + +2018-05-16 Mark Wielaard + + * dwarf2out.c (count_index_strings): New function. + (output_indirect_strings): Call count_index_strings and generate + header for dwarf_version >= 5. + +2018-05-16 Mark Wielaard + + * dwarf2out.c (dwarf_FORM): New function. + (set_indirect_string): Use dwarf_FORM. + (reset_indirect_string): Likewise. + (size_of_die): Likewise. + (value_format): Likewise. + (output_die): Likewise. + (add_skeleton_AT_string): Likewise. + (output_macinfo_op): Likewise. + (index_string): Likewise. + (output_index_string_offset): Likewise. + (output_index_string): Likewise. + (count_index_strings): Likewise. + +2018-05-16 Carl Love + + * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions + dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer. + +2018-05-16 Martin Jambor + + * ipa-prop.c (ipa_free_all_edge_args): Remove. + * ipa-prop.h (ipa_free_all_edge_args): Likewise. + +2018-05-16 Wilco Dijkstra + + * config/aarch64/aarch64.md (fma4): Change into expand pattern. + (fnma4): Likewise. + (fms4): Likewise. + (fnms4): Likewise. + (aarch64_fma4): Rename insn, reorder accumulator operand. + (aarch64_fnma4): Likewise. + (aarch64_fms4): Likewise. + (aarch64_fnms4): Likewise. + (aarch64_fnmadd4): Likewise. + +2018-05-16 Jason Merrill + + * tree.c (warn_deprecated_use): Return bool. Simplify logic. + +2018-05-16 Richard Biener + + * tree-vectorizer.h (struct stmt_info_for_cost): Add where member. + (dump_stmt_cost): Declare. + (add_stmt_cost): Dump cost we add. + (add_stmt_costs): New function. + (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost): + No longer exported. + (vect_analyze_stmt): Adjust prototype. + (vectorizable_condition): Likewise. + (vectorizable_live_operation): Likewise. + (vectorizable_reduction): Likewise. + (vectorizable_induction): Likewise. + * tree-vect-loop.c (vect_analyze_loop_operations): Create local + cost vector to pass to vectorizable_ and record afterwards. + (vect_model_reduction_cost): Take cost vector argument and adjust. + (vect_model_induction_cost): Likewise. + (vectorizable_reduction): Likewise. + (vectorizable_induction): Likewise. + (vectorizable_live_operation): Likewise. + * tree-vect-slp.c (vect_create_new_slp_node): Initialize + SLP_TREE_NUMBER_OF_VEC_STMTS. + (vect_analyze_slp_cost_1): Remove. + (vect_analyze_slp_cost): Likewise. + (vect_slp_analyze_node_operations): Take visited args and + a target cost vector. Avoid processing already visited stmt sets. + (vect_slp_analyze_operations): Use a local cost vector to gather + costs and register those of non-discarded instances. + (vect_bb_vectorization_profitable_p): Use add_stmt_costs. + (vect_schedule_slp_instance): Remove copying of + SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not + zero. + * tree-vect-stmts.c (record_stmt_cost): Remove path directly + adding cost. Record cost entry location. + (vect_prologue_cost_for_slp_op): Function to compute cost of + a constant or invariant generated for SLP vect in the prologue, + split out from vect_analyze_slp_cost_1. + (vect_model_simple_cost): Make static. Adjust for SLP costing. + (vect_model_promotion_demotion_cost): Likewise. + (vect_model_store_cost): Likewise, make static. + (vect_model_load_cost): Likewise. + (vectorizable_bswap): Add cost vector arg and adjust. + (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison): Likewise. + (can_vectorize_live_stmts): Likewise. + (vect_analyze_stmt): Likewise. + (vect_transform_stmt): Adjust calls to vectorizable_*. + * tree-vectorizer.c: Include gimple-pretty-print.h. + (dump_stmt_cost): New function. + +2018-05-16 Richard Biener + + * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param. + * doc/invoke.texi (dse-max-alias-queries-per-store): Document. + * tree-ssa-dse.c: Include tree-ssa-loop.h. + (check_name): New callback. + (dse_classify_store): Track cycles via a visited bitmap of PHI + defs and simplify handling of in-loop and across loop dead stores + and properly fail for loop-variant refs. Handle byte-tracking with + multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for + limiting the walk. + +2018-05-16 Richard Sandiford + + * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare. + (vect_get_mask_type_for_stmt): Likewise. + * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function, + split out from... + (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt + to determine the statement's vector type and the vector type that + should be used for calculating nunits. Deal with cases in which + the type has to be deferred. + (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt + and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE. + * tree-vect-loop.c (vect_determine_vf_for_stmt_1) + (vect_determine_vf_for_stmt): New functions, split out from... + (vect_determine_vectorization_factor): ...here. + * tree-vect-stmts.c (vect_get_vector_types_for_stmt) + (vect_get_mask_type_for_stmt): New functions, split out from + vect_determine_vectorization_factor. + +2018-05-16 Richard Biener + + * tree-cfg.c (verify_gimple_assign_ternary): Properly + verify the [VEC_]COND_EXPR embedded comparison. + +2018-05-15 Martin Sebor + + PR tree-optimization/85753 + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle + RECORD_TYPE in addition to ARRAY_TYPE. + +2018-05-15 Martin Sebor + + PR middle-end/85643 + * calls.c (get_attr_nonstring_decl): Handle MEM_REF. + +2018-05-15 Richard Biener + + * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter, + add by_clobber_p one. Change algorithm to collect all defs + representing uses we need to walk and try reducing them to + a single one before failing. + (dse_dom_walker::dse_optimize_stmt): Adjust. + +2018-05-13 Mark Wielaard + + * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx. + (size_of_loc_descr): Likewise. + (output_loc_operands): Likewise. + (output_loc_operands_raw): Likewise. + (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx. + (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx. + (hash_loc_operands): Likewise. + (compare_loc_operands): Likewise. + +2018-05-14 Mark Wielaard + + * dwarf2out.c (count_index_addrs): New function. + (dwarf2out_finish): Use count_index_addrs to calculate addrs_length. + +2018-05-15 Prathamesh Kulkarni + + PR tree-optimization/83648 + * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL + return value as malloc candidate. + +2018-05-15 Prathamesh Kulkarni + + PR ipa/85734 + * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite + param as true in call to suggest_attribute. + +2018-05-14 Segher Boessenkool + + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for + -mreadonly-in-sdata. + +2018-05-14 Kyrylo Tkachov + + * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused): + New pattern. + (aarch64_crypto_aesd_fused): Likewise. + +2018-05-14 Wilco Dijkstra + + * config/aarch64/aarch64.md (mov): Remove '*' in alternatives. + (movsi_aarch64): Likewise. + (load_pairsi): Likewise. + (load_pairdi): Likewise. + (store_pairsi): Likewise. + (store_pairdi): Likewise. + (load_pairsf): Likewise. + (load_pairdf): Likewise. + (store_pairsf): Likewise. + (store_pairdf): Likewise. + (zero_extend): Likewise. + (trunc): Swap alternatives. + (fcvt_target): Add '?' to prefer w over r. + +2018-05-14 Jakub Jelinek + + PR target/85756 + * config/i386/i386.md: Disallow non-commutative arithmetics in + last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim + optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS + in the peephole2 before it. + +2018-05-14 Sebastian Peryt + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET, + OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines. + (ix86_handle_option): Handle -mcldemote. + * config.gcc: New header. + * config/i386/cldemoteintrin.h: New file. + * config/i386/cpuid.h (bit_CLDEMOTE): New bit. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect + -mcldemote. + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + OPTION_MASK_ISA_CLDEMOTE. + * config/i386/i386.c (ix86_target_string): Add -mcldemote. + (ix86_valid_target_attribute_inner_p): Ditto. + (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE. + (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote. + (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE. + * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New. + * config/i386/i386.md (UNSPECV_CLDEMOTE): New. + (cldemote): New. + * config/i386/i386.opt: Add -mcldemote. + * config/i386/x86intrin.h: New header. + * doc/invoke.texi: Add -mcldemote. + +2018-05-14 Richard Biener + + * doc/match-and-simplify.texi: Adjust :s documentation. + +2018-05-14 Alexander Monakov + + * sort.cc (REORDER_23): Pass the type for the temporaries instead of + intended memcpy size. + (REORDER_45): Likewise. + +2018-05-13 Alexander Monakov + + * sort.cc: New file. + * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort. + * vec.c (qsort_chk): Use gcc_qsort. + * Makefile.in (OBJS-libcommon): Add sort.o. + (build/sort.o): New target. Use it... + (BUILD_RTL): ... here, and... + (build/gencfn-macros): ... here, and... + (build/genmatch): ... here. + +2018-05-13 Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu. + * config/nds32/nds32-graywolf.md: New file. + * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF. + * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15 + pipeline. + * config/nds32/nds32-protos.h: More declarations for n15 pipeline. + * config/nds32/nds32-utils.c: More implementations for n15 pipeline. + * config/nds32/nds32.md (pipeline_model): Add graywolf. + * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus. + * config/nds32/pipelines.md: Include n15 settings. + +2018-05-13 Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu. + * config/nds32/nds32-n13.md: New file. + * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13. + * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13 + pipeline. + * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline. + * config/nds32/nds32.md (pipeline_model): Add n13. + * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus. + * config/nds32/pipelines.md: Include n13 settings. + +2018-05-13 Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu. + * config/nds32/nds32-n10.md: New file. + * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10. + * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10 + pipeline. + * config/nds32/nds32-protos.h: More declarations for n10 pipeline. + * config/nds32/nds32-utils.c: More implementations for n10 pipeline. + * config/nds32/nds32.md (pipeline_model): Add n10. + * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus. + * config/nds32/pipelines.md: Include n10 settings. + +2018-05-13 Monk Chiang + Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32be-*-*): Handle --with-ext-dsp. + * config/nds32/constants.md (unspec_element, unspec_volatile_element): + Add enum values for DSP extension instructions. + * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi): + New constraints. + * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus, + sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max): + New code iterators. + (su, zs, uk, opcode, add_rsub, add_sub): New code attributes. + * config/nds32/nds32-dspext.md: New file for DSP implementation. + * config/nds32/nds32-intrinsic.c: Implementation of DSP extension. + * config/nds32/nds32-intrinsic.md: Likewise. + * config/nds32/nds32_intrinsic.h: Likewise. + * config/nds32/nds32-md-auxiliary.c: Likewise. + * config/nds32/nds32-memory-manipulation.c: Consider DSP extension. + * config/nds32/nds32-predicates.c (const_vector_to_hwint): New. + (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New. + (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New. + * config/nds32/nds32-protos.h: New declarations for DSP extension. + * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case + TYPE_DMAC in switch statement. + * config/nds32/nds32.c: New checking and implementation for DSP + extension instructions. + * config/nds32/nds32.h: Likewise. + * config/nds32/nds32.md: Likewise. + * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options. + * config/nds32/predicates.md: Implement new predicates for DSP + extension. + +2018-05-11 Michael Meissner + + * config/rs6000/rs6000.md (mov_softfloat, FMOVE32): + Reformat alternatives and attributes so it is easier to identify + which constraints/attributes go with which instruction. + (mov_hardfloat32, FMOVE64): Likewise. + (mov_softfloat32, FMOVE64): Likewise. + (mov_hardfloat64, FMOVE64): Likewise. + (mov_softfloat64, FMOVE64): Likewise. + +2018-05-11 Kelvin Nilsen + + * doc/extend.texi (PowerPC Built-in Functions): Rename this + subsection. + (Basic PowerPC Built-in Functions): The new name of the + subsection previously known as "PowerPC Built-in Functions". + (Basic PowerPC Built-in Functions Available on all Configurations): + New subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise. + (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise. + (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise. + (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise. + +2018-05-11 Martin Jambor + + PR ipa/85655 + * ipa-cp.c (intersect_with_plats): Check that the lattice contains + single const. + +2018-05-11 Richard Earnshaw + + PR target/85733 + * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature. + +2018-05-11 Sebastian Peryt + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET, + OPTION_MASK_ISA_WAITPKG_UNSET): New defines. + (ix86_handle_option): Handle -mwaitpkg. + * config.gcc: New header. + * config/i386/cpuid.h (bit_WAITPKG): New bit. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg. + * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New + function type. + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + OPTION_MASK_ISA_WAITPKG. + * config/i386/i386.c (ix86_target_string): Add -mwaitpkg. + (ix86_option_override_internal): Add PTA_WAITPKG. + (ix86_valid_target_attribute_inner_p): Add -mwaitpkg. + (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT, + IX86_BUILTIN_TPAUSE. + (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor, + __builtin_ia32_umwait and __builtin_ia32_tpause. + (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR, + IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE. + * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New. + * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR, + UNSPECV_TPAUSE): New. + (umwait, umwait_rex64, umonitor_, tpause, tpause_rex64): New. + * config/i386/i386.opt: Add -mwaitpkg. + * config/i386/waitpkgintrin.h: New file. + * config/i386/x86intrin.h: New header. + * doc/invoke.texi: Add -mwaitpkg. + +2018-05-11 Richard Earnshaw + + PR target/85606 + * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now + equivalent. + (cortex-m0): Use armv6s-m isa. + (cortex-m0plus): Likewise. + (cortex-m1): Likewise. + (cortex-m0.small-multiply): Likewise. + (cortex-m0plus.small-multiply): Likewise. + (cortex-m1.small-multiply): Likewise. + +2018-05-11 Allan Sandfeld Jensen + Jakub Jelinek + + PR tree-optimization/85692 + * tree-ssa-forwprop.c (simplify_vector_constructor): Try two + source permute as well. + +2018-05-11 Martin Liska + + PR sanitizer/85556 + * doc/extend.texi: Document LLVM style format for no_sanitize + attribute. + +2018-05-10 Michael Meissner + + * config/rs6000/rs6000.c (mode_supports_dq_form): Rename + mode_supports_vsx_dform_quad to mode_supports_dq_form. + (mode_supports_vsx_dform_quad): Likewise. + (mode_supports_vmx_dform): Move these functions to be next to the + other mode_supports functions. + (mode_supports_dq_form): Likewise. + (quad_address_p): Change calls of mode_supports_vsx_dform_quad to + mode_supports_dq_form. + (reg_offset_addressing_ok_p): Likewise. + (offsettable_ok_by_alignment): Likewise. + (rs6000_legitimate_offset_address_p): Likewise. + (legitimate_lo_sum_address_p): Likewise. + (rs6000_legitimize_address): Likewise. + (rs6000_legitimize_reload_address): Likewise. + (rs6000_secondary_reload_inner): Likewise. + (rs6000_preferred_reload_class): Likewise. + (rs6000_output_move_128bit): Likewise. + +2018-05-10 Uros Bizjak + + * config/i386/i386.c (ix86_expand_builtin) : + Generate SImode target register for null target. + : Ditto. + : Optimize LSHIFTRT generation. + * config/i386/xsaveintrin.h (_xgetbv): Add missing return. + +2018-05-10 Carl Love + + * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions + dcbtt and dcbtstt if operands[2] is 0. + +2018-05-10 Uros Bizjak + + PR target/85693 + * config/i386/sse.md (usadv64qi): New expander. + +2018-05-10 Segher Boessenkool + + * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh, + altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove + -maltivec=be support. + (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi, + vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi, + vec_widen_umult_even_v4si, vec_widen_smult_even_v4si, + vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi, + vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi, + vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx, + altivec_vpksss, altivec_vpksus, + altivec_vpkuus, altivec_vpkuum, altivec_vsum2sws, + altivec_vsumsws): Adjust. + (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth, + *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal, + altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be + support. + (altivec_vperm_, altivec_vperm__uns, + altivec_vupkhs, altivec_vupkls, altivec_vupkhpx, + altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust. + (altivec_lvex): Delete expand. + (*altivec_lvex_internal): Rename to... + (altivec_lvex): ... this. + (altivec_lvxl_): Delete expand. + (*altivec_lvxl__internal): Rename to ... + (altivec_lvxl_): ... this. + (altivec_stvxl_): Delete expand. + (*altivec_stvxl__internal): Rename to ... + (altivec_stvxl_): ... this. + (altivec_stvex): Delete expand. + (*altivec_stvex_internal): Rename to ... + (altivec_stvex): ... this. + (doublee2, unsdoubleev4si2, doubleo2, unsdoubleov4si2, + doubleh2, unsdoublehv4si2, doublel2, unsdoublelv4si2, + reduc_plus_scal_): Adjust. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust + comment. + (rs6000_cpu_cpp_builtins): Adjust. + (altivec_resolve_overloaded_builtin): Remove -maltivec=be support. + * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be, + altivec_expand_stvx_be, altivec_expand_stvex_be): Delete. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove + -maltivec=be support. + (rs6000_split_vec_extract_var): Adjust. + (rs6000_split_v4si_init): Adjust. + (swap_selector_for_mode): Delete. + (altivec_expand_lvx_be, altivec_expand_stvx_be, + altivec_expand_stvex_be): Delete. + (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove + -maltivec=be support. + (rs6000_gimple_fold_builtin): Ditto. + (rs6000_generate_float2_double_code, rs6000_generate_float2_code): + Adjust. + * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete. + (TARGET_DIRECT_MOVE_64BIT): Adjust. + * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust. + * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete. + * config/rs6000/vsx.md (floate, unsfloatev2di, floato, + unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df, + vunsignede_v2df, vsx_extract__p9, *vsx_extract_si, + *vsx_extract__p8, *vsx_extract_si_float_df, + *vsx_extract_si_float_, vsx_set__p9, vsx_set_v4sf_p9, + *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an + anonymous split): Adjust. + (vsx_mergel_, vsx_mergeh_): Remove -maltivec=be support. + (vsx_xxspltd_, extract4b, insert4b): Adjust. + +2018-05-10 Eric Botcazou + + * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only + when --with-gxx-include-dir is also specified. + * configure: Regenerate. + +2018-05-09 Jim Wilson + + PR target/84797 + * config.gcc (riscv*-*-*): Handle --with-multilib-list. + * config/riscv/t-withmultilib: New. + * config/riscv/withmultilib.h: New. + * doc/install.texi: Document RISC-V --with-multilib-list support. + +2018-05-09 Richard Biener + + * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost + vector. + (vect_bb_vectorization_profitable_p): Adjust. Compute + actual scalar cost using the cost vector and the add_stmt_cost + machinery. + +2018-05-09 Segher Boessenkool + + PR rtl-optimization/85645 + * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET + in the REG_CFA_REGISTER note for LR, don't leave it empty. + +2018-05-09 Segher Boessenkool + + PR rtl-optimization/85645 + * shrink-wrap.c (spread_components): Return a boolean saying if + anything was changed. + (try_shrink_wrapping_separate): Iterate spread_components until + nothing changes anymore. + +2018-05-09 Segher Boessenkool + + PR rtl-optimization/85645 + * regrename.c (build_def_use): Also kill the chains that include the + destination of a REG_CFA_REGISTER note. + +2018-05-09 Segher Boessenkool + + PR rtl-optimization/85645 + * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an + insn that has a REG_CFA_REGISTER note. + +2018-05-09 Richard Sandiford + + * cfgexpand.c (expand_clobber): New function. + (expand_gimple_stmt_1): Use it. + * tree-vect-stmts.c (vect_clobber_variable): New function, + split out from... + (vectorizable_simd_clone_call): ...here. + (vectorizable_store): Emit a clobber either side of an + IFN_STORE_LANES sequence. + (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence. + +2018-05-09 Tom de Vries + + PR target/85626 + * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true") + (define_insn "trap_if_false"): Add exit after trap. + +2018-05-09 Eric Botcazou + + PR rtl-optimization/85638 + * bb-reorder.c: Include common/common-target.h. + (create_forwarder_block): New function extracted from... + (fix_up_crossing_landing_pad): ...here. Rename into... + (dw2_fix_up_crossing_landing_pad): ...this. + (sjlj_fix_up_crossing_landing_pad): New function. + (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode, + call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges + from both partitions and exit the loop after one iteration. + +2018-05-08 Kelvin Nilsen + + Revert: + * doc/extend.texi (PowerPC Built-in Functions): Rename this + subsection. + (Basic PowerPC Built-in Functions): The new name of the + subsection previously known as "PowerPC Built-in Functions". + (Basic PowerPC Built-in Functions Available on all Configurations): + New subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 2.05): New + subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 2.06): New + subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 2.07): New + subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 3.0): New + subsubsection. + +2018-05-08 Jim Wilson + + * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash. + (LD_EMUL_SUFFIX): New. + (LINK_SPEC): Use it. + +2018-05-08 Kelvin Nilsen + + * doc/extend.texi (PowerPC Built-in Functions): Rename this + subsection. + (Basic PowerPC Built-in Functions): The new name of the + subsection previously known as "PowerPC Built-in Functions". + (Basic PowerPC Built-in Functions Available on all Configurations): + New subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 2.05): New + subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 2.06): New + subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 2.07): New + subsubsection. + (Basic PowerPC Built-in Functions Available on ISA 3.0): New + subsubsection. + +2018-05-08 Jakub Jelinek + + PR target/85683 + * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0 + after cmpelim optimization. + +2018-05-08 Olga Makhotina + + * config.gcc: Support "goldmont". + * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont". + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_GOLDMONT. + * config/i386/i386.c (m_GOLDMONT): Define. + (processor_target_table): Add "goldmont". + (PTA_GOLDMONT): Define. + (ix86_lea_outperforms): Add TARGET_GOLDMONT. + (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT. + (fold_builtin_cpu): Add M_INTEL_GOLDMONT. + (fold_builtin_cpu): Add "goldmont". + (ix86_add_stmt_cost): Add TARGET_GOLDMONT. + (ix86_option_override_internal): Add "goldmont". + * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT. + (processor_type): Add PROCESSOR_GOLDMONT. + * config/i386/i386.md: Add CPU "glm". + * config/i386/glm.md: New file. + * config/i386/x86-tune.def: Add m_GOLDMONT. + * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type. + +2018-05-08 Jakub Jelinek + + PR target/85572 + * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and + E_V4DImode. + * config/i386/sse.md (abs2): Use VI_AVX2 iterator instead of + VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not + TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes. + + PR target/85317 + * config/i386/i386.c (ix86_fold_builtin): Handle + IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}. + + PR target/85480 + * config/i386/sse.md (ssequaterinsnmode): New mode attribute. + (*_vinsert_0): New pattern. + +2018-05-08 Richard Earnshaw + + PR target/85658 + * config/arm/parsecpu.awk (check_cpu): Fix operator precedence. + (check_arch): Likewise. + (check_fpu): Return the result rather than printing it. + (end arch): Fix operator precedence. + (end cpu): Likewise. + (END): Print the result from check_fpu. + +2018-05-08 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-sve.md (*pred_cmp_combine) + (*pred_cmp, *fcm_and_combine) + (*fcmuo_and_combine, *fcm_and) + (*fcmuo_and): New patterns. + +2018-05-08 Richard Sandiford + + * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS) + (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete. + (SVE_INT_CMP, SVE_FP_CMP): New code iterators. + (cmp_op, sve_imm_con): New code attributes. + (SVE_COND_INT_CMP, imm_con): Delete. + (cmp_op): Remove above unspecs from int attribute. + * config/aarch64/aarch64-sve.md (*vec_cmp_): Rename + to... + (*cmp): ...this. Use UNSPEC_MERGE_PTRUE instead of + comparison-specific unspecs. + (*vec_cmp__ptest): Rename to... + (*cmp_ptest): ...this and adjust likewise. + (*vec_cmp__cc): Rename to... + (*cmp_cc): ...this and adjust likewise. + (*vec_fcm): Rename to... + (*fcm): ...this and adjust likewise. + (*vec_fcmuo): Rename to... + (*fcmuo): ...this and adjust likewise. + (*pred_fcm): New pattern. + * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop) + (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New + functions. + (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU + and UNORDERED. + (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete. + (aarch64_emit_sve_predicated_cond): New function. + (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc. + (aarch64_emit_unspec_cond_or): Replace with... + (aarch64_emit_sve_or_conds): ...this new function. Use + aarch64_emit_sve_ptrue_op for the individual comparisons and + aarch64_emit_binop to OR them together. + (aarch64_emit_inverted_unspec_cond): Replace with... + (aarch64_emit_sve_inverted_cond): ...this new function. Use + aarch64_emit_sve_ptrue_op for the comparison and + aarch64_emit_unop to invert the result. + (aarch64_expand_sve_vec_cmp_float): Update after the above + changes. Use aarch64_emit_sve_ptrue_op for native comparisons. + +2018-05-07 Nathan Sidwell + + * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope. + * doc/extend.texi (Deprecated Features): Remove -fno-for-scope + (Backwards Compatibility): Likewise. + +2018-05-07 Luis Machado + + PR bootstrap/85681 + Revert: + 2018-05-07 Luis Machado + + * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) + : New const bool field. + * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include + prefetch_dynamic_strides. + (exynosm1_prefetch_tune): Likewise. + (thunderxt88_prefetch_tune): Likewise. + (thunderx_prefetch_tune): Likewise. + (thunderx2t99_prefetch_tune): Likewise. + (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides + to false. + (aarch64_override_options_internal): Update to set + PARAM_PREFETCH_DYNAMIC_STRIDES. + * doc/invoke.texi (prefetch-dynamic-strides): Document new option. + * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New. + * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define. + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for + prefetch-dynamic-strides setting. + + 2018-05-07 Luis Machado + + * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) + : New const int field. + * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include + minimum_stride field. + (exynosm1_prefetch_tune): Likewise. + (thunderxt88_prefetch_tune): Likewise. + (thunderx_prefetch_tune): Likewise. + (thunderx2t99_prefetch_tune): Likewise. + (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048. + (aarch64_override_options_internal): Update to set + PARAM_PREFETCH_MINIMUM_STRIDE. + * doc/invoke.texi (prefetch-minimum-stride): Document new option. + * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New. + * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define. + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if + stride is constant and is below the minimum stride threshold. + +2018-05-07 Luis Machado + + * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) : Set + to 512. + +2018-05-07 Luis Machado + + * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) + : New const bool field. + * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include + prefetch_dynamic_strides. + (exynosm1_prefetch_tune): Likewise. + (thunderxt88_prefetch_tune): Likewise. + (thunderx_prefetch_tune): Likewise. + (thunderx2t99_prefetch_tune): Likewise. + (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides + to false. + (aarch64_override_options_internal): Update to set + PARAM_PREFETCH_DYNAMIC_STRIDES. + * doc/invoke.texi (prefetch-dynamic-strides): Document new option. + * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New. + * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define. + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for + prefetch-dynamic-strides setting. + +2018-05-07 Luis Machado + + * config/aarch64/aarch64-protos.h (cpu_prefetch_tune) + : New const int field. + * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include + minimum_stride field. + (exynosm1_prefetch_tune): Likewise. + (thunderxt88_prefetch_tune): Likewise. + (thunderx_prefetch_tune): Likewise. + (thunderx2t99_prefetch_tune): Likewise. + (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048. + (aarch64_override_options_internal): Update to set + PARAM_PREFETCH_MINIMUM_STRIDE. + * doc/invoke.texi (prefetch-minimum-stride): Document new option. + * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New. + * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define. + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if + stride is constant and is below the minimum stride threshold. + +2018-05-06 Jakub Jelinek + + PR c++/85659 + * cfgexpand.c (expand_asm_stmt): Don't create a temporary if + the type is addressable. Don't force op into register if it has + BLKmode. + +2018-05-05 Roland McGrath + + PR other/77609 + * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for + any section for which we don't know a specific type it should have, + regardless of name. Previously this was done only for the exact + names ".init_array", ".fini_array", and ".preinit_array". + (default_elf_asm_named_section): Add comment about + relationship with default_section_type_flags and SECTION_NOTYPE. + (get_section): Don't consider it a type conflict if one side has + SECTION_NOTYPE and the other doesn't, as long as neither has the + SECTION_BSS et al used in the default_section_type_flags logic. + +2018-05-05 Tom de Vries + + PR target/85653 + * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define. + (workaround_barsyncs): New function. + (nvptx_reorg): Use workaround_barsyncs. + * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR. + (define_expand "nvptx_membar_cta"): New define_expand. + (define_insn "*nvptx_membar_cta"): New insn. + +2018-05-04 Pekka Jääskeläinen + + * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs. + To improve optimization opportunities. + * builtin-types.def: The new needed builtin types for the above. + +2018-05-04 Richard Biener + + * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check. + * gimple-ssa-store-merging.c + (imm_store_chain_info::output_merged_store): Remove redundant create, + release split_store vector contents on failure. + * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking + scalar stmt vector on cache hit. + +2018-05-04 Segher Boessenkool + + * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove + Xilinx FP support. + * config.gcc (powerpc-xilinx-eabi*): Remove. + * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP + support. + (fusion_addis_mem_combo_load): Ditto. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx + FP support. + (rs6000_cpu_cpp_builtins): Ditto. + * config/rs6000/rs6000-linux.c + (rs6000_linux_float_exceptions_rounding_supported_p): Ditto. + * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete. + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP + support. + (rs6000_setup_reg_addr_masks): Ditto. + (rs6000_init_hard_regno_mode_ok): Ditto. + (rs6000_option_override_internal): Ditto. + (legitimate_lo_sum_address_p): Ditto. + (rs6000_legitimize_address): Ditto. + (rs6000_legitimize_reload_address): Ditto. + (rs6000_legitimate_address_p): Ditto. + (abi_v4_pass_in_fpr): Ditto. + (setup_incoming_varargs): Ditto. + (rs6000_gimplify_va_arg): Ditto. + (rs6000_split_multireg_move): Ditto. + (rs6000_savres_strategy): Ditto. + (rs6000_emit_prologue_components): Ditto. + (rs6000_emit_epilogue_components): Ditto. + (rs6000_emit_prologue): Ditto. + (rs6000_emit_epilogue): Ditto. + (rs6000_elf_file_end): Ditto. + (rs6000_function_value): Ditto. + (rs6000_libcall_value): Ditto. + * config/rs6000/rs6000.h: Ditto. + (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ... + (TARGET_MINMAX): ... this. New. + (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete. + * config/rs6000/rs6000.md: Remove Xilinx FP support. + (*movsi_internal1_single): Delete. + * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu, + mfpu=, mxilinx-fpu): Delete. + * config/rs6000/singlefp.h: Delete. + * config/rs6000/sysv4.h: Remove Xilinx FP support. + * config/rs6000/t-rs6000: Ditto. + * config/rs6000/t-xilinx: Delete. + * config/rs6000/titan.md: Adjust for fp_type removal. + * config/rs6000/vsx.md: Remove Xilinx FP support. + (VStype_simple): Delete. + (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete. + * config/rs6000/xfpu.h: Delete. + * config/rs6000/xfpu.md: Delete. + * config/rs6000/xilinx.h: Delete. + * config/rs6000/xilinx.opt: Delete. + * doc/invoke.texi (RS/6000 and PowerPC Options): Remove + -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu. + +2018-05-04 Tom de Vries + + PR libgomp/85639 + * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target + if ignore == 0. + +2018-05-04 Richard Biener + + PR middle-end/85627 + * tree-complex.c (update_complex_assignment): We are always in SSA form. + (expand_complex_div_wide): Likewise. + (expand_complex_operations_1): Likewise. + (expand_complex_libcall): Preserve EH info of the original stmt. + (tree_lower_complex): Handle removed blocks. + * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW + on complex multiplication and division libcall builtins. + +2018-05-04 Richard Biener + + PR middle-end/85574 + * fold-const.c (negate_expr_p): Restrict negation of operand + zero of a division to when we know that can happen without + overflow. + (fold_negate_expr_1): Likewise. + +2018-05-04 Jakub Jelinek + + PR libstdc++/85466 + * real.h (real_nextafter): Declare. + * real.c (real_nextafter): New function. + * fold-const-call.c (fold_const_nextafter): New function. + (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and + CASE_CFN_NEXTTOWARD. + (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss + even when arg1_mode is different from arg0_mode. + +2018-05-03 Nathan Sidwell + + * doc/extend.texi (Deprecated Features): Remove + -ffriend-injection. + (Backwards Compatibility): Likewise. + * doc/invoke.texi (C++ Language Options): Likewise. + (C++ Dialect Options): Likewise. + +2018-05-03 Jakub Jelinek + + PR target/85530 + * config/i386/avx512fintrin.h (_mm512_mullox_epi64, + _mm512_mask_mullox_epi64): New intrinsics. + +2018-05-03 Tom de Vries + + PR testsuite/85106 + * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization + dump files): Add offload-tree. + +2018-05-03 Richard Biener + + PR tree-optimization/85615 + * tree-ssa-threadupdate.c (thread_block_1): Only allow exits + to loops not nested in BBs loop father to avoid creating multi-entry + loops. + +2018-05-03 Kyrylo Tkachov + + PR tree-optimization/70291 + * tree-complex.c (expand_complex_libcall): Add type, inplace_p + arguments. Change return type to tree. Emit libcall as a new + statement rather than replacing existing one when inplace_p is true. + (expand_complex_multiplication_components): New function. + (expand_complex_multiplication): Expand floating-point complex + multiplication using the above. + (expand_complex_division): Rename inner_type parameter to type. + Update expand_complex_libcall call-site. + (expand_complex_operations_1): Update expand_complex_multiplication + and expand_complex_division call-sites. + +2018-05-02 Jakub Jelinek + + PR target/85582 + * config/i386/i386.md (*ashl3_doubleword_mask, + *ashl3_doubleword_mask_1, *3_doubleword_mask, + *3_doubleword_mask_1): In condition require that + the highest significant bit of the shift count mask is clear. In + check whether and[sq]i3 is needed verify that all significant bits + of the shift count other than the highest are set. + +2018-05-02 Tom de Vries + + PR libgomp/82428 + * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define. + * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID) + (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin. + * builtins.c (expand_builtin_goacc_parlevel_id_size): New function. + (expand_builtin): Call expand_builtin_goacc_parlevel_id_size. + * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and + __builtin_goacc_parlevel_size. + +2018-05-02 Richard Biener + + PR tree-optimization/85597 + * tree-vect-stmts.c (vectorizable_operation): For ternary SLP + do not use split vect_get_vec_defs call but call vect_get_slp_defs + directly. + +2018-05-02 Tom de Vries + + PR testsuite/85106 + * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization + dump files): Add ltrans-tree. + +2018-05-02 Tom de Vries + + PR testsuite/85106 + * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization + dump files): Add wpa-ipa. + +2018-05-02 Segher Boessenkool + + * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the + powerpc*-*-linux*paired* target. + * config/rs6000/750cl.h: Delete. + * config/rs6000/paired.h: Delete. + * config/rs6000/paired.md: Delete. + * config/rs6000/predicates.md (easy_vector_constant): Remove paired + float support. + * config/rs6000/rs6000-builtin.def: Remove paired float support. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update + comment. Remove paired float support. + * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI. + * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete + VECTOR_PAIRED. + * config/rs6000/rs6000-protos.h (paired_expand_vector_init, + paired_emit_vector_cond_expr, paired_expand_vector_move): Delete + declarations. + * config/rs6000/rs6000.c: Remove paired float support. + (paired_expand_vector_init, paired_expand_vector_move, + paired_emit_vector_compare, paired_emit_vector_cond_expr, + (paired_expand_lv_builtin, paired_expand_stv_builtin, + paired_expand_builtin, paired_expand_predicate_builtin, + paired_init_builtins): Delete. + * config/rs6000/rs6000.h: Remove paired float support. + * config/rs6000/rs6000.md: Remove paired float support. + (move_from_CR_ov_bit): Delete. + * config/rs6000/rs6000.opt (mpaired): Delete. + * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES. + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired. + +2018-05-02 Richard Biener + + PR middle-end/85567 + * gimplify.c (gimplify_save_expr): When in SSA form allow + SAVE_EXPRs to compute to SSA vars. + +2018-05-02 Jakub Jelinek + + PR target/85582 + * config/i386/i386.md (*ashl3_doubleword_mask, + *ashl3_doubleword_mask_1, *3_doubleword_mask, + *3_doubleword_mask_1): If and[sq]i3 is needed, don't + clobber operands[2], instead use a new pseudo. Formatting fixes. + +2018-05-02 Richard Sandiford + + PR tree-optimization/85586 + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only + exit early for statements in the same group if the accesses are + not strided. + +2018-05-02 Tom de Vries + + PR lto/85451 + * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload" + error message. + +2018-05-01 Marc Glisse + + PR tree-optimization/85143 + * match.pd (A + + PR lto/85451 + * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler + not found" error message. + +2018-05-01 Tom de Vries + + PR other/83786 + * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define. + * vec.c (test_ordered_remove_if): New function. + (vec_c_tests): Call test_ordered_remove_if. + * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO. + * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF. + * tree-vect-patterns.c (vect_pattern_recog_1): Use + VEC_ORDERED_REMOVE_IF. + +2018-05-01 Prathamesh Kulkarni + + PR tree-optimization/82665 + * vr-values.c (vr_values::extract_range_from_binary_expr): Handle + pointer subtraction where arguments come from a memchr call. + +2018-05-01 Jakub Jelinek + + * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use + --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed if ld supports it. + * configure: Regenerated. + + PR web/85578 + * doc/install.texi2html: Replace _002d with - and _002a with * in + generated html files using sed. + +2018-04-30 David Malcolm + + PR c++/85523 + * gcc-rich-location.c (blank_line_before_p): New function. + (use_new_line): New function. + (gcc_rich_location::add_fixit_insert_formatted): New function. + * gcc-rich-location.h + (gcc_rich_location::add_fixit_insert_formatted): New function. + +2018-04-30 David Malcolm + + * selftest.c (assert_streq): Rename "expected" and "actual" to + "val1" and "val2". Extend NULL-handling to cover both inputs + symmetrically, while still requiring both to be non-NULL for a pass. + * selftest.h (assert_streq): Rename "expected" and "actual" to + "val1" and "val2". + (ASSERT_EQ): Likewise. + (ASSERT_EQ_AT): Likewise. + (ASSERT_KNOWN_EQ): Likewise. + (ASSERT_KNOWN_EQ_AT): Likewise. + (ASSERT_NE): Likewise. + (ASSERT_MAYBE_NE): Likewise. + (ASSERT_MAYBE_NE_AT): Likewise. + (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for + the assertion to pass. + (ASSERT_STREQ_AT): Likewise. + +2018-04-30 Jonathan Wakely + + * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify + interaction with -pie. + +2018-04-30 David Malcolm + + * selftest.h: Fix alphabetization of per-source-file selftest + declarations. + +2018-04-30 Jason Merrill + + PR c++/61982 - dead stores to destroyed objects. + * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS + of clobber. + +2018-04-30 Jason Merrill + + * tree.c (build_clobber): New. + * tree.h: Declare it. + * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it. + +2018-04-30 David Malcolm + + * diagnostic-show-locus.c (layout::layout): Update for + location_get_source_line returning a char_span. + (struct char_span): Move to input.h. + (struct correction): Update for fields in char_span becoming + private. + (struct source_line): Update for location_get_source_line + returning a char_span. + (layout::print_line): Likewise. + * edit-context.c (edited_file::print_content): Likewise. + (edited_file::print_diff_hunk): Likewise. + (edited_file::print_run_of_changed_lines): Likewise. + (edited_file::get_num_lines): Likewise. + (edited_line::edited_line): Likewise. + * final.c (asm_show_source): Likewise. + * input.c (location_get_source_line): Convert return type + from const char * to char_span, losing the final "line_len" + param. + (dump_location_info): Update for the above. + (get_substring_ranges_for_loc): Likewise. Use a char_span + when handling the literal within the line. + (test_reading_source_line): Update for location_get_source_line + returning a char_span. + * input.h (class char_span): Move here from + diagnostic-show-locus.c, converting from a struct to a class. + Make data members private. + (char_span::operator bool): New. + (char_span::length): New. + (char_span::get_buffer): New. + (char_span::operator[]): New. + (char_span::subspan): Make const. + (char_span::xstrdup): New. + (location_get_source_line): Convert return type from const char * + to char_span, losing the final "line_size" param. + +2018-04-30 Jan Hubicka + + * lto-wrapper.c (ltrans_priorities): New static var. + (cmp_priority): New. + (run_gcc): Read priorities and if doing parallel build order + the Makefile by them. + +2018-04-30 David Malcolm + + * input.h (builtins_location_check): Convert to a STATIC_ASSERT. + +2018-04-30 Richard Biener + + * tree-cfg.c (verify_address): Remove base argument, add + flag whether to check TREE_ADDRESSABLE and do that. + (verify_expr): Remove. + (verify_types_in_gimple_reference): Add pieces from verify_expr. + (verify_gimple_assign_single): Likewise. + (verify_gimple_switch): Likewise. + (verify_expr_location_1): Dereference tp once. Add (disabled) + piece from verify_expr. + (verify_gimple_in_cfg): Do not call verify_expr on all ops. + +2018-04-30 Claudiu Zissulescu + + * config/arc/linux.h (CLEAR_INSN_CACHE): Define. + +2018-04-30 Claudiu Zissulescu + + * config/arc/arc-protos.h (prepare_extend_operands): Remove. + (small_data_pattern): Likewise. + (arc_rewrite_small_data): Likewise. + * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove. + (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise. + (get_symbol_alignment): New function. + (legitimate_small_data_address_p): Likewise. + (legitimate_scaled_address): Update, call + legitimate_small_data_address_p. + (output_sdata): New static variable. + (arc_print_operand): Update how we handle small data operands. + (arc_print_operand_address): Likewise. + (arc_legitimate_address_p): Update, use + legitimate_small_data_address_p. + (arc_rewrite_small_data_p): Remove. + (arc_rewrite_small_data_1): Likewise. + (arc_rewrite_small_data): Likewise. + (small_data_pattern): Likewise. + (compact_sda_memory_operand): Update to use + legitimate_small_data_address_p and get_symbol_alignment. + (prepare_move_operands): Don't rewite sdata pattern. + (prepare_extend_operands): Remove. + * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata + pattern. + (zero_extendqisi2): Likewise. + (zero_extendhisi2): Likewise. + (extendqihi2): Likewise. + (extendqisi2): Likewise. + (extendhisi2): Likewise. + (addsi3): Likewise. + (subsi3): Likewise. + (andsi3): Likewise. + * config/arc/constraints.md (Usd): Change it to memory constraint. + +2018-04-30 Claudiu Zissulescu + + * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants + as source of std instructions. + * config/arc/arc.md (movsi_insn): Update pattern predicate to + allow 6-bit constants as source for store instructions. + (movdi_insn): Update instruction pattern to allow 6-bit constants + as source for store instructions. + +2018-04-30 Jonathan Wakely + + * doc/invoke.texi (-fdebug-types-section): Fix grammar. + +2018-04-30 Nathan Sidwell + Sandra Loosemore + + * dumpfile.c (dump_open): Allow '-' for stdout. + * doc/invoke.texi (Developer Options): Document dump filename + determination early. Document stdin/stdout selection. + +2018-04-30 Andrew Sadek + + Microblaze Target: PIC data text relative + + * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel. + * config/microblaze/microblaze-protos.h (microblaze_constant_address_p): + Add declaration. + * config/microblaze/microblaze.h (microblaze_constant_address_p): + CONSTANT_ADDRESS_P definition to microblaze_constant_address_p. + * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL): + New addressing mode for data-text relative position indepenedent code. + (microblaze_classify_unspec): add 'UNSPEC_TEXT' case -> + 'ADDRESS_SYMBOLIC_TXT_REL'. + (microblaze_classify_address): Add handling for UNSPEC + CONST_INT. + (microblaze_legitimate_pic_operand): Exclude function calls from + pic operands in case of TARGET_PIC_DATA_TEXT_REL option. + (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible + addresses cases. + (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case. + (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case. + (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling + for 'address + offset'. + (microblaze_expand_prologue): Add new function prologue call for + 'r20' assignation. + (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook + 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector + table in case of TARGET_PIC_DATA_TEXT_REL. + (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'. + * config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL): + Add new macros 'UNSPEC_TEXT', + 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue + + exclude function calls from 'UNSPEC_PLT' in case of data text + relative mode. + * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add + new target hook for generating address diff vector tables in case of + flag_pic. + * doc/tm.texi : Regenerate. + * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition + 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case + of addr diff vector generation. + * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add + target hook definition. + * targhooks.h, targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): + Add default function for generate_pic_addr_diff_vec -> flag_pic. + * doc/invoke.texi (Add new pic option): Add new microblaze pic + option for data text relative. + +2018-04-30 Richard Biener + + * tree-chrec.h (evolution_function_is_constant_p): Remove + redundant check. + * tree-cfg.c (tree_node_can_be_shared): Re-order checks. + +2018-04-30 Richard Biener + + PR bootstrap/85571 + * dwarf2out.c (gen_producer_string): Ignore -fchecking[=]. + +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. + +2018-04-28 Mark Wielaard + + * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for + dwarf_version >= 5. + (dwarf_AT): Handle DW_AT_addr_base. + (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base. + +2018-04-28 Uros Bizjak + + PR target/84431 + * config/i386/i386.md (*ashl3_doubleword_mask): New pattern. + (*ashl3_doubleword_mask_1): Ditto. + (*3_doubleword_mask): Ditto. + (*3_doubleword_mask_1): Ditto. + +2018-04-28 Richard Biener + + * tree-cfg.c (verify_gimple_phi): Take a gphi * argument. + (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts + to reflect use. Only add interesting stmts. + +2018-04-27 Martin Jambor + + PR ipa/85549 + * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure + the jump function allows for passing through aggregate values. + +2018-04-27 David Malcolm + + * input.h (in_system_header_at): Convert from macro to inline + function. + (from_macro_expansion_at): Likewise. + (from_macro_definition_at): Likewise. + +2018-04-27 Jeff Law + + * config.gcc: Mark tile* targets as deprecated/obsolete. + +2018-04-27 Richard Biener + + * config/aarch64/aarch64.c: Simplify ap.__stack advance and + fix for ILP32. + +2018-04-27 Richard Biener + + * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable. + +2018-04-27 Uros Bizjak + + * config/i386/i386.md (*movti_internal): Substitute Ye constraint + with Yd constraint. Set "preferred_for_speed" attribute from + TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives + with Yd constraint. + (*movdi_internal): Ditto. + (movti_interunit splitters): Remove + TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition. + (movdi_interunit splitters): Ditto. + * config/i386/constraints.md (Ye): Remove. + (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC. + +2018-04-27 Kyrylo Tkachov + + PR target/85512 + * config/aarch64/constraints.md (Usg): Limit to 31. + (Usj): Limit to 63. + +2018-04-27 Jakub Jelinek + + PR tree-optimization/85529 + * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB + argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE, + rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious + zero extension or masking of the MSB bit. + (optimize_range_tests): Add FIRST_BB argument, pass it through + to optimize_range_tests_var_bound. + (maybe_optimize_range_tests, reassociate_bb): Adjust + optimize_range_tests callers. + +2018-04-26 Richard Biener + Jakub Jelinek + + * cgraph.h (symbol_table): Just declare debug method here. + * symtab.c (symbol_table::debug): Define. + +2018-04-26 Eric Botcazou + + * loop-invariant.c (may_assign_reg_p): Return false for frame pointer. + +2018-04-26 Uros Bizjak + + * config/i386/i386.md ("isa" attribute): Add x64_sse2. + ("enabled" attribute): Handle x64_sse2 "isa" attribute. + (*movdi_internal): Substitute Yi and Yj constraint with x + and Ym and Yn constraint with y constraint. Update "isa" + attribute and set "preferred_for_speed" attribute from + TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives. + (*movsi_internal): Ditto. + (*movdf_internal): Ditto. + (*movsf_internal): Ditto. + (*zero_extendsidi2): Ditto. + * config/i386/sse.md (vec_set_0): Ditto. + (sse2_loadld): Ditto. + (*vec_extract_0): Ditto. + (*vec_extractv4si_0_zext_sse4): Ditto. + (vec_concatv2di): Ditto. + (*vec_dup): Ditto. + * config/i386/mmx.md (*mov_internal): Ditto. + * config/i386/constraints.md (Yi): Remove. + (Yj): Remove. + (Ym): Remove. + (Yn): Remove. + +2018-04-26 Nathan Sidwell + + * dumpfile.c (dump_open): New. + (dump_open_alternate_stream, dump_start, dump_begin): Call it. + (dump_finish): Detect stdio/stderr by value not name. + +2018-04-26 Jonathan Wakely + + * doc/invoke.texi (-Wreturn-type): Document default status for C++. + +2018-04-26 Tom de Vries + + PR target/84952 + * config/nvptx/nvptx.c (verify_neutering_jumps) + (verify_neutering_labels): New function + (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels. + +2018-04-26 Tom de Vries + + PR target/84025 + * config/nvptx/nvptx.c (needs_neutering_p): New function. + (nvptx_single): Use needs_neutering_p to skip over insns that do not + need neutering. + +2018-04-26 Richard Biener + Tom de Vries + + PR lto/85422 + * lto-streamer-out.c (output_function): Fixup loops if required to match + discovery done in the reader. + +2018-04-26 Richard Biener + + PR tree-optimization/85116 + * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should + have a loop exit from the single latch predecessor. Remove + case of header with just condition. + (ch_base::copy_headers): Exclude infinite loops from any + processing. + (pass_ch::execute): Record exits. + +2018-04-26 Richard Biener + + * tree-vect-data-refs.c (vect_get_data_access_cost): Get + prologue cost vector and pass it to vect_get_load_cost. + (vect_get_peeling_costs_all_drs): Likewise. + (vect_peeling_hash_get_lowest_cost): Likewise. + (vect_enhance_data_refs_alignment): Likewise. + +2018-04-26 Richard Biener + + PR middle-end/85450 + * tree-cfg.c (verify_gimple_assign_unary): Restore proper + checking of integer<->pointer conversions. + * omp-expand.c (expand_omp_for_static_nochunk): Avoid + sign-/zero-extending pointer types. + (expand_omp_for_static_chunk): Likewise. + +2018-03-22 Hans-Peter Nilsson + Jean Lee + + * config/mips/mips.c (mips_asan_shadow_offset): New function. + (TARGET_ASAN_SHADOW_OFFSET): Define. + * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be + true for -fsanitize=address. + +2018-04-25 Mark Wielaard + + * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before + shorter ones. + +2018-04-25 Jakub Jelinek + + * config/i386/i386.md (*x86_movcc_0_m1): Use type "alu1" rather + than "alu", remove explicit "memory" and "imm_disp" attributes. + (*x86_movcc_0_m1_se, *x86_movcc_0_m1_neg): Likewise. + + PR middle-end/85414 + * simplify-rtx.c (simplify_unary_operation_1) : Pass SUBREG_REG (op) rather than op to + gen_lowpart_no_emit. + +2018-04-25 Sebastian Peryt + + PR target/85473 + * config/i386/i386.c (ix86_expand_builtin): Change memory + operand to XI, extend p0 to Pmode. + * config/i386/i386.md: Change unspec volatile and operand + 1 mode to XI, change operand 0 mode to P. + +2018-04-25 Chung-Ju Wu + + * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with + GET_MODE_MASK before any checking. + (nds32_can_use_bset_p): Likewise. + (nds32_can_use_btgl_p): Likewise. + +2018-04-25 Chung-Ju Wu + + * config/nds32/nds32-doubleword.md: New define_split pattern for + illegal register number. + +2018-04-25 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier. + +2018-04-25 Chung-Ju Wu + + * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character. + +2018-04-25 Richard Biener + + * lto-streamer.h (LTO_major_version): Bump to 8. + +2018-04-25 Jakub Jelinek + + * BASE-VER: Set to 9.0.0. + +2018-04-24 Segher Boessenkool + + * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes + in __abskf2 and __powikf2. + +2018-04-24 Kyrylo Tkachov + + PR target/85512 + * config/aarch64/constraints.md (Usg, Usj): New constraints. + * config/aarch64/iterators.md (cmode_simd): New mode attribute. + * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_3): + Use the above on operand 2. Reindent. + (*aarch64_lshr_sisd_or_int_3): Likewise. + +2018-04-24 H.J. Lu + + PR target/85485 + * common/config/i386/i386-common.c (ix86_handle_option): Don't + handle OPT_mcet. + * config/i386/i386.opt (mcet): Removed. + * doc/install.texi: Remove -mcet documentation. + * doc/invoke.texi: Likewise. + +2018-04-24 H.J. Lu + + PR target/85485 + * doc/install.texi: Remove -mcet from bootstrap-cet. + +2018-04-24 Jakub Jelinek + + PR target/85511 + * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define + __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32 + if TARGET_64BIT. + + PR target/85503 + * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if + const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool + containing a CONST_VECTOR. + +2018-04-24 Cesar Philippidis + + * doc/install.texi: Update newlib dependency for nvptx. + +2018-04-24 Jakub Jelinek + + PR target/85508 + * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL + instead of INTVAL when shifting x left. + +2018-04-24 Andreas Krebbel + + PR tree-optimization/85478 + * tree-vect-loop.c (vect_analyze_loop_2): Do not call + vect_grouped_store_supported for single element vectors. + +2018-04-24 Richard Biener + + PR target/85491 + * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided + load cost increase to the case of non-constant step. + +2018-04-24 Jakub Jelinek + + PR target/84828 + * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead + destination if any_malformed_asm. + +2018-04-23 Eric Botcazou + + PR middle-end/85496 + * expr.c (store_field): In the bitfield case, if the value comes from + a function call and is returned in registers by means of a PARALLEL, + do not change the mode of the temporary unless BLKmode and VOIDmode. + +2018-04-23 Andrey Belevantsev + + PR rtl-optimization/85423 + * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard + dependencies to debug insns when the previous insn is non-debug. + +2018-04-23 Claudiu Zissulescu + + * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec + enums into a single definition. + (fls): Fix predicates and printing. + (seti): Likewise. + +2018-04-23 Claudiu Zissulescu + + * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove. + * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers + and short u6 immediate. + (check_if_valid_sleep_operand): Remove. + * config/arc/arc.md (Sleep): Accepts registers and u6 immediates. + +2018-04-22 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_compute_stack_frame): Consider + flag_always_save_lp condition. + * config/nds32/nds32.opt (malways-save-lp): New option. + +2018-04-22 Shiva Chen + + * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare. + * config/nds32/nds32.c (nds32_use_load_post_increment): New. + * config/nds32/nds32.h + (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define. + (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define. + +2018-04-22 Shiva Chen + + * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove. + * config/nds32/nds32.c (nds32_ls_333_p): Remove. + +2018-04-22 Shiva Chen + Chung-Ju Wu + + * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode): + Declare. + * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function. + * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify. + +2018-04-22 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value. + +2018-04-22 Chung-Ju Wu + + * config/nds32/nds32-protos.h (nds32_data_alignment, + nds32_local_alignment): Declare. + * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment, + nds32_local_alignment): New functions. + (TARGET_CONSTANT_ALIGNMENT): Define. + * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define. + +2018-04-22 Chung-Ju Wu + + * config/nds32/nds32.c + (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file. + (TARGET_MODES_TIEABLE_P): Likewise. + +2018-04-22 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_asm_file_start): Display optimization + level Ofast and Og. + +2018-04-22 Monk Chiang + Chung-Ju Wu + + * config/nds32/constants.md (unspec_volatile_element): Add enum values + for unaligned access. + * config/nds32/nds32-intrinsic.c: Implementation of expanding + unaligned access. + * config/nds32/nds32-intrinsic.md: Likewise. + * config/nds32/nds32_intrinsic.h: Likewise. + * config/nds32/nds32.h (nds32_builtins): Likewise. + * config/nds32/nds32.opt (munaligned-access): New option. + * config/nds32/nds32.c (nds32_asm_file_start): Display + flag_unaligned_access status. + +2018-04-20 Kito Cheng + + * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if + -mno-relax is present. + * config/riscv/linux.h (LINK_SPEC): Ditto. + +2018-04-20 Martin Sebor + + PR c/85365 + * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict + for null pointers. + (gimple_fold_builtin_stxcpy_chk): Same. + * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same. + +2018-04-20 Michael Meissner + + PR target/85456 + * config/rs6000/rs6000.c (init_float128_ieee): Add support to call + __powikf2 when long double is IEEE 128-bit. + +2018-04-20 Kito Cheng + + * config/riscv/riscv.c (riscv_first_stack_step): Round up min + step to make sure stack always aligned. + +2018-04-20 Carl Love + + PR target/83402 + * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add + size check for arg0. + +2018-04-20 Nathan Sidwell + Tom de Vries + + PR target/85445 + * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining): + Emit insns for calls too. + (nvptx_find_par): Always look for worker-level predecessor insn. + (nvptx_propagate): Add is_call parm, return bool. Copy frame for + calls. + (nvptx_vpropagate, nvptx_wpropagate): Adjust. + (nvptx_process_pars): Propagate frames for calls. + +2018-04-20 H.J. Lu + + PR target/85469 + * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): + Removed. + (OPTION_MASK_ISA_IBT_UNSET): Likewise. + (ix86_handle_option): Don't handle OPT_mibt. + * config/i386/cet.h: Check __CET__ instead of __IBT__ and + __SHSTK__. + * config/i386/driver-i386.c (host_detect_local_cpu): Remove + has_ibt and ibt. + * config/i386/i386-c.c (ix86_target_macros_internal): Don't + check OPTION_MASK_ISA_IBT nor flag_cf_protection. + (ix86_target_macros): Define __CET__ with flag_cf_protection + for -fcf-protection. + * config/i386/i386.c (isa2_opts): Remove -mibt. + * config/i386/i386.h (TARGET_IBT): Removed. + (TARGET_IBT_P): Likewise. + (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt. + * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT. + * config/i386/i386.opt (mcet): Update help message. + (mshstk): Likewise. + (mibt): Removed. + * doc/invoke.texi: Remove -mibt. Document __CET__. Document + -mcet as an alias for -mshstk. + +2018-04-20 Richard Biener + + PR middle-end/85475 + * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential + complexity by forcing a single use of the multiply operand. + +2018-04-20 Martin Jambor + + ipa/85449 + * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding + recursion dependency to only apply to non-clones. + +2018-04-20 Martin Jambor + + ipa/85447 + * ipa-cp.c (create_specialized_node): Check that clones of + self-recursive edges exist during IPA-CP. + +2018-04-19 Toon Moene + + * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled + by -O3. + +2018-04-19 Jakub Jelinek + + PR tree-optimization/85467 + * fold-const.c (fold_ternary_loc) : Use + VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the + VECTOR_CST element to type. + +2018-04-19 H.J. Lu + + PR target/85397 + * config/i386/i386.h (STACK_SAVEAREA_MODE): New. + * config/i386/i386.md (builtin_setjmp_setup): Removed. + (builtin_longjmp): Likewise. + (save_stack_nonlocal): New pattern. + (restore_stack_nonlocal): Likewise. + +2018-04-19 H.J. Lu + + PR target/85404 + * config/i386/cet.c (file_end_indicate_exec_stack_and_cet): + Replace ASM_OUTPUT_LABEL with fprintf. + +2018-04-19 H.J. Lu + + PR target/85417 + * config/i386/cet.c (file_end_indicate_exec_stack_and_cet): + Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK. + * config/i386/i386-c.c (ix86_target_macros_internal): Also + define __IBT__ and __SHSTK__ for -fcf-protection. + * config/i386/i386.c (pass_insert_endbranch::gate): Don't check + TARGET_IBT. + (ix86_trampoline_init): Likewise. + (x86_output_mi_thunk): Likewise. + (ix86_notrack_prefixed_insn_p): Likewise. + (ix86_option_override_internal): Don't disallow -fcf-protection. + * config/i386/i386.md (rdssp): Also enable for + -fcf-protection. + (incssp): Likewise. + (nop_endbr): Likewise. + * config/i386/i386.opt (mcet): Change help message to built-in + functions only. + (mibt): Likewise. + (mshstk): Likewise. + * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition + on -fcf-protection. Change -mcet, -mibt and -mshstk to only + enable CET built-in functions. + +2018-04-19 Sebastian Peryt + + * common/config/i386/i386-common.c + (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET, + OPTION_MASK_ISA_MOVDIRI_UNSET, + OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines. + (ix86_handle_option): Handle -mmovdiri and -mmovdir64b. + * config.gcc (movdirintrin.h): New header. + * config/i386/cpuid.h (bit_MOVDIRI, + bit_MOVDIR64B): New bits. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri + and -mmvodir64b. + * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED), + (VOID, PVOID, PCVOID)): New function types. + * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32, + __builtin_ia32_directstoreu_u64, + __builtin_ia32_movdir64b): New builtins. + * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New. + * config/i386/i386.c (ix86_target_string): Added -mmovdir64b + and -mmovdiri. + (ix86_valid_target_attribute_inner_p): Ditto. + (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED + and VOID_FTYPE_PUNSIGNED_UNSIGNED. + (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B. + * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P, + TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New. + * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New. + (movdiri, movdir64b_): New. + * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b. + * config/i386/immintrin.h: Include movdirintrin.h. + * config/i386/movdirintrin.h: New file. + * doc/invoke.texi: Added -mmovdiri and -mmovdir64b. + +2018-04-19 Richard Biener + + PR middle-end/85455 + * cfg.c (clear_bb_flags): When loop state says we have + marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP. + +2018-04-19 Richard Biener + + PR tree-optimization/84737 + * tree-vect-data-refs.c (vect_copy_ref_info): New function + copying restrict info. + (vect_setup_realignment): Use it. + * tree-vectorizer.h (vect_copy_ref_info): Declare. + * tree-vect-stmts.c (vectorizable_store): Copy ref info from + the first DR to all generated stores. + (vectorizable_load): Likewise for loads. + +2018-04-19 Jakub Jelinek + + PR tree-optimization/85446 + * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require + the integral and pointer types to have the same precision. + + * doc/install.texi: Document --disable-cet being the default and + --enable-cet=auto. + +2018-04-18 Martin Liska + + * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding + style. + +2018-04-18 Martin Liska + + Revert + 2018-03-02 Eric Botcazou + + PR ipa/83983 + * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both + arguments if they are comparable. + +2018-04-18 Martin Liska + + Revert + 2018-03-13 Eric Botcazou + + PR lto/84805 + * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of + incomplete types. + +2018-04-18 H.J. Lu + + PR target/85388 + * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert + ENDBR after calling __morestack. + +2018-04-18 David Malcolm + + PR jit/85384 + * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version + by using gcc_base_ver to generate a gcc_driver_version, and use + it when generating GCC_DRIVER_NAME. + * configure: Regenerate. + +2018-04-18 Jakub Jelinek + + PR target/81084 + * config.gcc: Obsolete powerpc*-*-*spe*. + +2018-04-17 Jakub Jelinek + + PR debug/84637 + * dbxout.c (dbxout_int): Perform negation in unsigned int type. + (stabstr_D): Change type of unum from unsigned int to + unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT + type. + +2018-04-17 Jim Wilson + + PR 84856 + * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to + RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size. + Set arg_pointer_offset after using pretend_args_size. + +2018-04-17 Jakub Jelinek + + PR rtl-optimization/85431 + * dse.c (record_store): Ignore zero width stores. + + PR sanitizer/85230 + * asan.c (handle_builtin_stack_restore): Adjust comment. Emit + __asan_allocas_unpoison call and last_alloca_addr = new_sp before + __builtin_stack_restore rather than after it. + * builtins.c (expand_asan_emit_allocas_unpoison): Pass + arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second + argument instead of virtual_dynamic_stack_rtx. + +2018-04-17 Kelvin Nilsen + + * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p): + New prototype. + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Add note to error message to explain internal mapping of overloaded + built-in function name to non-overloaded built-in function name. + * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New + function. + +2018-04-17 Michael Meissner + + PR target/85424 + * config/rs6000/rs6000.md (pack): Do not try handle a pack + where the inputs overlap with the output. + +2018-04-17 Jakub Jelinek + + * config/i386/sse.md (vec_extract_lo_): Add + (=v, v) alternative and explicit "memory" attribute. + (vec_extract_lo_): Likewise. Also add + "type", "prefix", "prefix_extra", "length_immediate" and "mode" + attributes. + (vec_extract_lo_): Add (=v, v) alternative and use + "sselog1" type instead of "sselog". + (vec_extract_hi_): Use "sselog1" type instead of + "sselog". Remove explicit "memory" attribute. + (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory", + "type", "prefix", "prefix_extra", "length_immediate" and "mode" + attributes. + (vec_extract_hi_v32hi): Merge all alternatives into one, use + "sselog1" type instead of "sselog". Remove explicit "memory" + attribute. + (vec_extract_hi_v16hi): Merge each pair of alternatives into one, + use "sselog1" type instead of "sselog". Remove explicit "memory" + attribute. + (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory", + "type", "prefix", "prefix_extra", "length_immediate" and "mode" + attributes. + (vec_extract_hi_v64qi): Merge all alternatives into one, use + "sselog1" type instead of "sselog". Remove explicit "memory" + attribute. + (vec_extract_hi_v32qi): Merge each pair of alternatives into one, + use "sselog1" type instead of "sselog". Remove explicit "memory" + attribute. + + PR target/85430 + * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu. + + PR middle-end/85414 + * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG + on a SUBREG. + +2018-04-17 Martin Jambor + + PR ipa/85421 + * ipa-cp.c (create_specialized_node): Call + expand_all_artificial_thunks if necessary. + +2018-04-17 Martin Liska + + PR lto/85405 + * ipa-devirt.c (odr_types_equivalent_p): Remove trailing + in message, remote space in between '_G' and '('. + +2018-04-17 Jakub Jelinek + + PR target/85281 + * config/i386/sse.md (reduces, + avx512f_vmcmp3, + avx512f_vmcmp3_mask, + avx512f_sgetexp, + avx512f_rndscale, + avx512dq_ranges, + avx512f_vgetmant): + Use %2 instead of %2 for -masm=intel. + (avx512f_vcvtss2usi, avx512f_vcvtss2usiq, + avx512f_vcvttss2usi, + avx512f_vcvttss2usiq): Use %k1 instead of %1 for + -masm=intel. + (avx512f_vcvtsd2usi, avx512f_vcvtsd2usiq, + avx512f_vcvttsd2usi, + avx512f_vcvttsd2usiq, ufloatv2siv2df2): + Use %q1 instead of %1 for -masm=intel. + (avx512f_sfixupimm, + avx512f_sfixupimm_mask): Use %3 instead + of %3 for -masm=intel. + (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for + -masm=intel. + (*avx512vl_v2div2qi2_store): Use %w0 instead of %0 for + -masm=intel. + (*avx512vl_v4qi2_store): Use %k0 instead of %0 for + -masm=intel. + (avx512vl_v4qi2_mask_store): Use a single pattern with + %k0 and %1 for -masm=intel rather than two patterns, one with %0 and + %g1. + (*avx512vl_v8qi2_store): Use %q0 instead of %0 for + -masm=intel. + (avx512vl_v8qi2_mask_store): Use a single pattern with + %q0 and %1 for -masm=intel rather than two patterns, one with %0 and + %g1 and one with %0 and %1. + (avx512er_vmrcp28, + avx512er_vmrsqrt28): Use %1 instead of + %1 for -masm=intel. + (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask, + avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask, + avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order + of %0 and %{%4%} for -masm=intel. + (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz, + avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz, + avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap + order of %0 and %{%5%}%{z%} for -masm=intel. + +2018-04-17 Jan Hubicka + + PR lto/85405 + * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields. + +2018-04-17 Martin Liska + + PR ipa/85329 + * multiple_target.c (create_dispatcher_calls): Set apostrophes + for target_clone error message. Make default implementation + clone to be a local declaration. + (separate_attrs): Add new argument and check for an empty + string. + (expand_target_clones): Handle it. + (ipa_target_clone): Make redirection just for target_clones + functions. + +2018-04-16 Cesar Philippidis + Tom de Vries + + PR middle-end/84955 + * omp-expand.c (expand_oacc_for): Add dummy false branch for + tiled basic blocks without omp continue statements. + +2018-04-16 Aaron Sawdey + + PR target/83660 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark + vec_extract expression as having side effects to make sure it gets + a cleanup point. + +2018-04-16 H.J. Lu + + PR target/85403 + * config/i386/i386.c (get_builtin_code_for_version): Check + error_mark_node. + +2018-04-16 Olga Makhotina + + PR target/84331 + * config.gcc: Support "skylake". + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_SKYLAKE. + * config/i386/i386.c (m_SKYLAKE): Define. + (processor_target_table): Add "skylake". + (ix86_option_override_internal): Add "skylake". + (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE, + PROCESSOR_CANNONLAKE. + (get_builtin_code_for_version): Fix priority for + PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER, + PROCESSOR_SKYLAKE-AVX512. + * config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE. + (processor_type): Add PROCESSOR_SKYLAKE. + +2018-04-16 Paolo Carlini + Jason Merrill + + PR c++/85112 + * convert.c (convert_to_integer_1): Use direct recursion for + enumeral types and types with a precision less than the number + of bits in their mode. + +2018-04-16 Julia Koval + + PR target/84413 + * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, + X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512 + +2018-04-14 Segher Boessenkool + + PR target/85293 + * config/rs6000/rs6000.opt (mdirect-move): Make deprecated. + * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move + and -mno-direct-move. + +2018-04-13 Paul A. Clarke + + PR target/83402 + * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}): + Ensure that vec_splat_s32 is only called with 0 <= shift < 16. + Ensure negative shifts result in {0}. + +2018-04-13 Vladimir Makarov + + PR rtl-optimization/79916 + * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard + regs (if any) to define how to gnerate SD moves when LRA is in + progress. + +2018-04-13 Jakub Jelinek + + PR rtl-optimization/85393 + * except.h (expand_dw2_landing_pad_for_region): Remove declaration. + * except.c (expand_dw2_landing_pad_for_region): Make static. + * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just + a label and unconditional jump to old_bb, rather than + expand_dw2_landing_pad_for_region insn(s) and jump to single_succ + basic block. + + PR rtl-optimization/85376 + * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and + zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX + instead of a specific value. + +2018-04-13 Jan Hubicka + Bin Cheng + + PR tree-optimization/82965 + PR tree-optimization/83991 + * cfgloopanal.c (expected_loop_iterations_unbounded): Add + by_profile_only parameter. + * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile + information if the loop was predicted to iterate too many times. + * cfgloop.h (expected_loop_iterations_unbounded): Update prototype + +2018-04-13 Jan Hubicka + + PR lto/71991 + * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for + always inline. + +2018-04-13 Martin Liska + Jakub Jelinek + + PR middle-end/81657 + * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET. + * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET. + * builtins.c (expand_builtin_memory_copy_args): Use + BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target, + handle dest_addr == pc_rtx. + +2018-04-12 Segher Boessenkool + + PR target/85291 + * config/rs6000/rs6000.md (fix_truncsi2): Use legacy code if + asked to not generate direct moves. + (fix_truncsi2_stfiwx): Similar. + (fix_truncsi2_internal): Similar. + +2018-04-12 Jakub Jelinek + + PR debug/83157 + * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST. + * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest, + lookup if dest in some wider mode is known to be const0_rtx and + if so, record permanent equivalence for it to be ZERO_EXTEND of + the narrower mode destination. + +2018-04-12 Cesar Philippidis + + * lto-streamer-out.c (output_function): Revert 259346. + * omp-expand.c (expand_oacc_for): Likewise. + +2018-04-12 Alexander Monakov + + PR rtl-optimization/85354 + * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call... + * sel-sched.c (sel_global_init): ... here. + +2018-04-12 Eric Botcazou + + PR target/85238 + * lto-wrapper.c (debug_objcopy): Open the files in binary mode. + * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO + mode for PE-COFF targets. + * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare. + (i386_pe_asm_lto_end): Likewise. + * config/i386/cygming.h (TARGET_ASM_LTO_START): Define. + (TARGET_ASM_LTO_END): Likewise. + * config/i386/winnt.c (saved_debug_info_level): New static variable. + (i386_pe_asm_lto_start): New function. + (i386_pe_asm_lto_end): Likewise. + +2018-04-12 Cesar Philippidis + Richard Biener + + PR middle-end/84955 + * lto-streamer-out.c (output_function): Fix CFG loop state before + streaming out. + * omp-expand.c (expand_oacc_for): Handle calls to internal + functions like regular functions. + +2018-04-12 Richard Biener + + PR lto/85371 + * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label] + for the early LTO debug to properly generate references to it + during DIE emission. Do not re-use that for the skeleton for + split-dwarf. + (dwarf2out_early_finish): Likewise. + +2018-04-12 Jakub Jelinek + + PR target/85328 + * config/i386/sse.md + (avx512dq_vextract64x2_1 split, + avx512f_vextract32x4_1 split, + vec_extract_lo_ split, vec_extract_lo_v32hi, + vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg + and output is a reg, avoid creating invalid lowpart subreg, but + instead split into a 512-bit move. Don't split if not AVX512VL, + input is xmm16+ reg and output is a mem. + (vec_extract_lo_, vec_extract_lo_v32hi, + vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is + xmm16+ reg and output is a mem. + +2018-04-12 Andreas Krebbel + + * config/s390/s390.c (s390_output_indirect_thunk_function): Check + also for flag_dwarf2_cfi_asm. + +2018-04-12 Jakub Jelinek + + PR rtl-optimization/85342 + * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use + a bool scalar var inside of the loop instead. Don't try to update + recog_data.operand after failed apply_change_group. + +2018-04-12 Tom de Vries + + PR target/85296 + * config/nvptx/nvptx.c (flexible_array_member_type_p): New function. + (nvptx_assemble_decl_begin): Add undefined param. Declare undefined + array with flexible array member as array without given dimension. + (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call + argument for undefined param to true. + +2018-04-11 Aaron Sawdey + + PR target/85321 + * doc/invoke.texi (RS/6000 and PowerPC Options): Document options + -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe + from PowerPC section. + * config/rs6000/sysv4.opt (mcall-): Improve help text. + * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim + help text that is too long. + * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim + help text that is too long. + * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim + help text that is too long. + +2018-04-11 Uros Bizjak + + * config/alpha/alpha.md (stack_probe_internal): Rename + from "probe_stack". Update all callers. + +2018-04-11 Alexander Monakov + + PR rtl-optimization/84566 + * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking + sched_macro_fuse_insns. + +2018-04-11 Alexander Monakov + + PR target/84301 + * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here... + (compute_block_dependences): ... from here. + +2018-04-11 Jakub Jelinek + + PR tree-optimization/85331 + * vec-perm-indices.h (vec_perm_indices::clamp): Change input type + from int to HOST_WIDE_INT. + +2018-04-11 Martin Jambor + + PR ipa/84149 + * ipa-cp.c (propagate_vals_across_pass_through): Expand comment. + (cgraph_edge_brings_value_p): New parameter dest_val, check if it is + not the same as the source val. + (cgraph_edge_brings_value_p): New parameter. + (gather_edges_for_value): Pass destination value to + cgraph_edge_brings_value_p. + (perhaps_add_new_callers): Likewise. + (get_info_about_necessary_edges): Likewise and exclude values brought + only by self-recursive edges. + (create_specialized_node): Redirect only clones of self-calling edges. + (+self_recursive_pass_through_p): New function. + (find_more_scalar_values_for_callers_subset): Use it. + (find_aggregate_values_for_callers_subset): Likewise. + (known_aggs_to_agg_replacement_list): Removed. + (decide_whether_version_node): Re-calculate known constants for all + remaining context clones. + +2018-04-11 Richard Biener + + PR lto/85339 + * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute + from early DWARF output. + (dwarf2out_early_finish): Output line info unconditionally into + early DWARF and add reference to it. + +2018-04-11 Jakub Jelinek + + PR target/85281 + * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases. + (_vec_dup): Use a single pattern for modes + other than V2DFmode using iptr mode attribute. + (_vec_dup): Use iptr mode attribute. + +2018-04-11 Alexander Monakov + + PR rtl-optimization/84659 + * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg. + +2018-04-11 Jakub Jelinek + + PR debug/85302 + * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if + SIZEP is NULL. + (output_loc_list): Pass address of a dummy size variable even in the + locview handling loop. + (index_location_lists): Add comment on why skip_loc_list_entry can't + call size_of_locs. + +2018-04-11 Thomas Preud'homme + + PR target/85261 + * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand + into register. + +2018-04-10 Aaron Sawdey + + PR target/85321 + * doc/invoke.texi (RS/6000 and PowerPC Options): Document options + -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit, + and -mstring-compare-inline-limit. + +2018-04-10 Segher Boessenkool + + PR target/85287 + * config/rs6000/rs6000.md (allocate_stack): Put the residual size + for stack clash protection in a register whenever we need it to be in + a register. + +2018-04-10 Segher Boessenkool + + * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct): + Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF. + +2018-04-10 Segher Boessenkool + + PR target/85321 + * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in + the help text. + (mlong-double-): Ditto. + * config/rs6000/sysv4.opt (msdata=): Ditto. + (mtls-size=): Ditto. + +2018-04-10 Kelvin Nilsen + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove + erroneous entries for + "vector int vec_ldl (int, long int *)", and + "vector unsigned int vec_ldl (int, unsigned long int *)". + Add comments and entries for + "vector bool char vec_ldl (int, bool char *)", + "vector bool short vec_ldl (int, bool short *)", + "vector bool int vec_ldl (int, bool int *)", + "vector bool long long vec_ldl (int, bool long long *)", + "vector pixel vec_ldl (int, pixel *)", + "vector long long vec_ldl (int, long long *)", + "vector unsigned long long vec_ldl (int, unsigned long long *)". + * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new + type tree bool_long_long_type_node and correct definition of + bool_V2DI_type_node to make reference to this new type tree. + (rs6000_mangle_type): Replace erroneous reference to + bool_long_type_node with bool_long_long_type_node. + * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add + comments to emphasize sign distinctions for char and int types and + replace RS6000_BTI_bool_long constant with + RS6000_BTI_bool_long_long constant. Also add comment to restrict + use of RS6000_BTI_pixel. + (bool_long_type_node): Remove this macro definition. + (bool_long_long_type_node): New macro definition + +2018-04-10 Jakub Jelinek + + PR rtl-optimization/85300 + * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also + into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if + simplify_unary_operation fails. + +2018-04-10 Martin Liska + + * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node, + cgraph_edge and ipa_ref. + +2018-04-10 Jakub Jelinek + + PR target/85177 + PR target/85255 + * config/i386/sse.md + (_vinsert_mask): Fix + computation of the VEC_MERGE selector from mask. + (_vinsert_1): + Fix decoding of the VEC_MERGE selector into mask. + +2018-04-10 Richard Sandiford + + PR tree-optimization/85286 + * tree-vect-data-refs.c (vect_get_smallest_scalar_type): + +2018-04-10 Richard Sandiford + + * final.c (final_1): Set insn_last_address as well as + insn_current_address. + +2018-04-10 Kyrylo Tkachov + + PR target/85173 + * explow.c (emit_stack_probe): Call validize_mem on memory location + before passing it to gen_probe_stack. Create address operand and + legitimize it for the probe_stack_address case. + +2018-04-09 Jan Hubicka + + PR lto/85078 + * ipa-devirt.c (rebuild_type_inheritance-hash): New. + * ipa-utils.h (rebuild_type_inheritance-hash): Declare. + * tree.c (free_lang_data_in_type): Fix handling of binfos; + walk basetypes. + (free_lang_data): Rebuild type inheritance graph. + +2018-04-09 Martin Sebor + + * invoke.texi (-finline-small-functions): Mention other optimization + options. + (-findirect-inlining, -fpartial-inlining): Same. + (-finline-functions-called-once): Same. + (-freorder-blocks-and-partition): Same. + +2018-04-09 Jan Hubicka + + PR rtl/84058 + * cfgcleanup.c (try_forward_edges): Do not give up on crossing + jumps; choose last target that matches the criteria (i.e. + no partition changes for non-crossing jumps). + * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic + support for redirecting crossing jumps to non-crossing. + +2018-04-09 Alexey Brodkin + + * config/arc/arc.c (arc_expand_prologue): Set stack usage info + also for naked functions. + +2018-04-09 Claudiu Zissulescu + + * config/arc/arc.md (add_shift): New pattern. + (add_shift2): Likewise. + (sub_shift): Likewise. + (sub_shift_cmp0_noout): Likewise. + (compare_si_ashiftsi): Likewise. + (xbfu_cmp0_noout): New combine pattern. + (xbfu_cmp0"): Likewise. + (movsi_set_cc_insn): Place the predicable variant first. + (commutative_binary_cmp0_noout): Remove clobber. + (commutative_binary_cmp0): New pattern. + (noncommutative_binary_cmp0): Likewise. + (noncommutative_binary_cmp0_noout): Likewise. + (noncommutative_binary_comparison_result_used): Removed. + (rsub_cmp0): New pattern. + (rsub_cmp0_noout): Likewise. + (extzvsi): Changed, keep only meaningful variants. + (SQH, SEZ): New iterators. + (SQH_postfix): New mode attribute. + (SEZ_prefix): New code attribute. + (xt_cmp0_noout): New instruction pattern. + (xt_cmp0): Likewise. + * config/arc/predicates.md (cc_set_register): Use CC_REG instead + of numerical value. + (noncommutative_operator): Check the availability of barrel + shifter option. + +2018-04-09 Richard Biener + + PR tree-optimization/85284 + * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions): + Only use the niter constraining form of simple_iv when the exit + is always executed. + +2018-04-09 Tom de Vries + + PR target/84041 + * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR. + (define_expand "*memory_barrier"): New define_expand. + (define_insn "memory_barrier"): New insn. + +2018-04-09 Andrey Belevantsev + + PR rtl-optimization/80463 + PR rtl-optimization/83972 + PR rtl-optimization/83480 + + * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the + correct producer for the insn. + (tidy_control_flow): Fixup seqnos in case of debug insns. + +2018-04-09 Andrey Belevantsev + + PR rtl-optimization/83913 + + * sel-sched-ir.c (merge_expr_data): Choose the middle between two + different sched-times when merging exprs. + +2018-04-09 Andrey Belevantsev + + PR rtl-optimization/83962 + + * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call + tidy_fallthru_edge and tidy_control_flow. + +2018-04-09 Andrey Belevantsev + + PR rtl-optimization/83530 + + * sel-sched.c (force_next_insn): New global variable. + (remove_insn_for_debug): When force_next_insn is true, also leave only + next insn in the ready list. + (sel_sched_region): When the region wasn't scheduled, make another pass + over it with force_next_insn set to 1. + +2018-04-08 Monk Chiang + + * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h + into tm_file. + * config/nds32/constants.md (unspec_volatile_element): Add enum values + for interrupt control. + * config/nds32/nds32-intrinsic.c: Implementation of intrinsic + functions for interrupt control. + * config/nds32/nds32-intrinsic.md: Likewise. + * config/nds32/nds32_intrinsic.h: Likewise. + * config/nds32/nds32.h (nds32_builtins): Likewise. + +2018-04-08 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_init_machine_status, + nds32_legitimate_index_p, nds32_legitimate_address_p): Consider + strict_aligned_p field. + (nds32_expand_to_rtl_hook): New function. + (TARGET_EXPAND_TO_RTL_HOOK): Define. + * config/nds32/nds32.h (machine_function): Add strict_aligned_p field. + +2018-04-08 Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu. + * config/nds32/nds32-n7.md: New file. + * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7. + * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7 + pipeline. + * config/nds32/nds32-protos.h: More declarations for n7 pipeline. + * config/nds32/nds32.md (pipeline_model): Add n7. + * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus. + * config/nds32/pipelines.md: Include n7 settings. + +2018-04-08 Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu. + * config/nds32/nds32-e8.md: New file. + * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8. + * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8 + pipeline. + * config/nds32/nds32-protos.h: More declarations for e8 pipeline. + * config/nds32/nds32.md (pipeline_model): Add e8. + * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus. + * config/nds32/pipelines.md: Include e8 settings. + +2018-04-08 Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu. + * config/nds32/nds32-n8.md: New file. + * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8. + * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8 + pipeline. + * config/nds32/nds32-protos.h: More declarations for n8 pipeline. + * config/nds32/nds32-utils.c: More implementations for n8 pipeline. + * config/nds32/nds32.md (pipeline_model): Add n8. + * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus. + * config/nds32/pipelines.md: Include n8 settings. + +2018-04-08 Kito Cheng + Chung-Ju Wu + + * config.gcc (nds32*): Add nds32-utils.o into extra_objs. + * config/nds32/nds32-n9-2r1w.md: New file. + * config/nds32/nds32-n9-3r2w.md: New file. + * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type, + nds32_register_ports): New or modify for cpu n9. + * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9 + pipeline. + * config/nds32/nds32-protos.h: More declarations for n9 pipeline. + * config/nds32/nds32-utils.c: New file. + * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE, + TARGET_MUL_SLOW): Define. + * config/nds32/nds32.md (pipeline_model): New attribute. + * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports): + New options that support cpu n9. + * config/nds32/pipelines.md: Include n9 settings. + * config/nds32/t-nds32 (nds32-utils.o): Add dependency. + +2018-04-08 Chung-Ju Wu + + * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align + information if necessary. + (output_cond_branch_compare_zero): Likewise. + * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case. + (nds32_target_alignment): Refine for alignment. + * config/nds32/nds32.h (NDS32_ALIGN_P): Define. + (FUNCTION_BOUNDARY): Modify. + * config/nds32/nds32.md (call_internal, call_value_internal): Consider + align case. + * config/nds32/nds32.opt (malways-align, malign-functions): New. + +2018-04-08 Monk Chiang + + * config/nds32/constants.md (unspec_volatile_element): Add values for + TLB operation and data prefetch. + * config/nds32/nds32-intrinsic.c: Implementation of intrinsic + functions for TLB operation and data prefetch. + * config/nds32/nds32-intrinsic.md: Likewise. + * config/nds32/nds32_intrinsic.h: Likewise. + * config/nds32/nds32.c (nds32_dpref_names): Likewise. + (nds32_print_operand): Likewise. + * config/nds32/nds32.h (nds32_builtins): Likewise. + +2018-04-07 Thomas Koenig + Andrew Pinski + + PR middle-end/82976 + * match.pd: Use constant_boolean_node of correct type instead of + boolean_true_node or boolean_false_node for simplifying + pointer comparisons to zero. + +2018-04-07 Jakub Jelinek + + PR tree-optimization/80021 + * tree.c (verify_type_variant): Make error call in verify_variant_match + translatable and remove final full stop. + +2018-04-07 Chung-Ju Wu + + * config/nds32/constants.md (unspec_volatile_element): Add + UNSPEC_VOLATILE_EH_RETURN. + * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push, + nds32_output_stack_pop): Support dwarf exception handling process. + * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare. + * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf + exception handling process. + (nds32_compute_stack_frame): Likewise. + (nds32_return_addr_rtx): Likewise. + (nds32_initial_elimination_offset): Likewise. + (nds32_expand_prologue): Likewise. + (nds32_expand_epilogue): Likewise. + (nds32_dynamic_chain_address): New function. + * config/nds32/nds32.h (machine_function): Add fields for dwarf + exception handling. + (DYNAMIC_CHAIN_ADDRESS): Define. + (EH_RETURN_DATA_REGNO): Define. + (EH_RETURN_STACKADJ_RTX): Define. + * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement + patterns for dwarf exception handling. + +2018-04-07 Chung-Ju Wu + + * config/nds32/nds32.h: Clean up obsolete macros. + +2018-04-07 Monk Chiang + + * config/nds32/constants.md (unspec_element, unspec_volatile_element): + Add enum values for particular instructions. + * config/nds32/nds32-intrinsic.c: Implementation of expanding + particular intrinsic functions. + * config/nds32/nds32-intrinsic.md: Likewise. + * config/nds32/nds32_intrinsic.h: Likewise. + * config/nds32/nds32.h (nds32_builtins): Likewise. + * config/nds32/nds32.md (type): Add pbsad and pbsada. + (btst, ave): New patterns for particular instructions. + +2018-04-07 Monk Chiang + + * config/nds32/constants.md (unspec_element, unspec_volatile_element): + Add enum values for atomic load/store and memory sync. + * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store + and memory sync. + * config/nds32/nds32-intrinsic.md: Likewise. + * config/nds32/nds32_intrinsic.h: Likewise. + * config/nds32/nds32.h (nds32_builtins): Likewise. + +2018-04-07 Jakub Jelinek + + PR tree-optimization/85257 + * fold-const.c (native_encode_vector): If not all elts could fit + and off is -1, return 0 rather than offset. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass + (offseti - offset2) / BITS_PER_UNIT as 4th argument to + native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't + adjust buffer in native_interpret_expr call. + +2018-04-07 Monk Chiang + + * config/nds32/constants.md (unspec_volatile_element): Add cache + control enum values. + * config/nds32/nds32-intrinsic.c: Add cache control expand functions. + * config/nds32/nds32-intrinsic.md: Add cache control patterns. + * config/nds32/nds32.c (nds32_cctl_names): New. + (nds32_print_operand): Handle cache control register names. + * config/nds32/nds32.h (nds32_builtins): New enum values. + * config/nds32/nds32_intrinsic.h: Add cache control enum types and + macros. + * config/nds32/nds32.md (type): Add mmu. + * config/nds32/pipelines.md (simple_insn): Add mmu. + +2018-04-07 Chung-Ju Wu + + * config/nds32/nds32.md (type): Remove call. + * config/nds32/pipelines.md (simple_insn): Likewise. + +2018-04-07 Monk Chiang + + * config/nds32/constants.md (unspec_volatile_element): Add + UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and + UNSPEC_VOLATILE_FMFCFG. + * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin + description for fmfcfg and fmfcsr. + (bdesc_1arg): Add fmtcsr. + (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd. + (nds32_expand_builtin_impl): Deal with FPU intrinsic functions. + * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd, + unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr, + unspec_fmfcfg): New patterns. + * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG, + NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS, + NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD. + * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss, + __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr, + __nds32__fmfcfg): Define. + +2018-04-07 Monk Chiang + + * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more + intrinsic register names. + * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more + intrinsic register enum values and macros. + +2018-04-07 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition + for load/store addressing form. + (nds32_print_operand_address): Likewise. + +2018-04-06 Eric Botcazou + + PR target/85196 + * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands + based on LABEL_REF. Remove useless assertion. + (pic_address_needs_scratch): Fix formatting. + (sparc_legitimize_pic_address): Minor tweaks. + (sparc_delegitimize_address): Adjust assertion accordingly. + * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand + into symbolic_operand. + (movsi_high_pic_label_ref): Likewise. + (movsi_lo_sum_pic_label_ref): Likewise. + (movdi_pic_label_ref): Likewise. + (movdi_high_pic_label_ref): Likewise. + (movdi_lo_sum_pic_label_ref): Likewise. + +2018-04-06 Amaan Cheval + + * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for + custom LIB_SPEC setup. + +2018-04-06 Ruslan Bukin + Kito Cheng + + * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support. + * config/riscv/freebsd.h: New. + +2018-04-06 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_adjust_insn_length): Refine. + * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in + file. + +2018-04-06 Chung-Ju Wu + Kito Cheng + + * config/nds32/nds32-md-auxiliary.c (nds32_output_return, + nds32_output_call, nds32_symbol_binds_local_p): New functions. + * config/nds32/nds32-protos.h (nds32_output_call, + nds32_output_return): Declare. + * config/nds32/nds32.md: Refine all the call and return patterns. + +2018-04-06 Jakub Jelinek + + PR debug/85252 + * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only + build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST. + + PR rtl-optimization/84872 + * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if + nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is + EDGE_CROSSING edge. + +2018-04-06 Tamar Christina + + * expr.c (copy_blkmode_to_reg): Revert 254862. + * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise. + +2018-04-06 Richard Biener + + PR middle-end/85244 + * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref + after seeing a component reference with an adjacent field. Treat + refs to arrays at struct end of external decls similar to + refs to unconstrained commons. + +2018-04-06 Jakub Jelinek + + PR sanitizer/85213 + * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't + look through SAVE_EXPRs with non-side-effects argument. Adjust + recursive calls. + (fold_comparison): Adjust twoval_comparison_p caller, don't handle + save_p here. + +2018-04-06 Richard Biener + + PR middle-end/85180 + * alias.c (find_base_term): New wrapper around find_base_term + unwinding CSELIB_VAL_PTR changes. + (find_base_term): Do not restore CSELIB_VAL_PTR during the + recursion. + +2018-04-06 Andreas Krebbel + + * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP + instructions. + * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New + constant definitions. + ("nop"): lr 0,0 -> nopr r0 + ("nop_lr0", "nop_lr1"): New insn definitions. + +2018-04-06 Chung-Ju Wu + + * config/nds32/nds32.md (*stack_push, *stack_pop): Use + NDS32_V3PUSH_AVAILABLE_P macro. + +2018-04-06 Monk Chiang + Chung-Ju Wu + + * config.gcc (nds32*-*-*): Add v2j v3f v3s checking. + (nds32*-*-*): Add float and fpu_config into supported_defaults. + * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): + Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA. + * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN, + UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS. + * config/nds32/constraints.md: New constraints and checking for hard + float configuration. + * config/nds32/iterators.md: New mode iterator and attribute for hard + float configuration. + * config/nds32/nds32-doubleword.md: Use hard float alternatives and + patterns. + * config/nds32/nds32-fpu.md: New file. + * config/nds32/nds32-md-auxiliary.c: New functions and checkings to + deal with hard float code generation. + * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and + ARCH_V3S. + (abi_type, float_reg_number): New enum type. + * config/nds32/nds32-predicates.c: New predicates for hard float. + * config/nds32/nds32-protos.h: Declare functions for hard float. + * config/nds32/nds32.c: Implementation for hard float configuration. + * config/nds32/nds32.h: Definitions for hard float configuration. + * config/nds32/nds32.md: Include hard float machine description and + modify patterns for hard float configuration. + * config/nds32/nds32.opt: New options for hard float configuration. + * config/nds32/predicates.md: New predicates for hard float + configuration. + +2018-04-06 Kuan-Lin Chen + + * common/config/nds32/nds32-common.c + (nds32_option_optimization_table): Enable -mreleax-hint by default. + +2018-04-05 Jakub Jelinek + + PR middle-end/85195 + * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around + CONSTRUCTOR_ELT (ctor, ...)->value. + +2018-04-05 Uros Bizjak + + PR target/85193 + * config/i386/i386.md (define_attr "memory"): Handle rotate1 type. + +2018-04-05 Tom de Vries + + PR target/85204 + * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only + cond jump. + +2018-04-05 Shiva Chen + Kito Cheng + + * config/nds32/constraints.md (U33): Fine-tune checking condition. + * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto. + * config/nds32/nds32.h (nds32_16bit_address_type): Add + ADDRESS_POST_MODIFY_LO_REG_IMM3U. + +2018-04-05 Shiva Chen + Kito Cheng + + * config/nds32/constraints.md (Ufe): New memory constraint. + * config/nds32/nds32-md-auxiliary.c (nds32_mem_format, + nds32_output_16bit_load): Consider r8 register for lwi45.fe format. + * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe + operands. + * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U. + * config/nds32/nds32.md (*mov): Adjust pattern. + +2018-04-05 Chung-Ju Wu + + * config/nds32/nds32.md: Use optimize_size in the condition for + alu-shift instructions. + +2018-04-05 Chung-Ju Wu + + * config/nds32/nds32.md (divsi4, udivsi4): New patterns. + +2018-04-05 Chung-Ju Wu + + * config/nds32/nds32.md (negsi2): Refine pattern. + +2018-04-05 Kito Cheng + Chung-Ju Wu + + * config/nds32/iterators.md (shift_rotate): New code iterator. + (shift): New code attribute. + * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New. + * config/nds32/nds32-protos.h (nds32_expand_constant): Declare. + * config/nds32/nds32.c (nds32_print_operand): Deal with more cases. + * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for + bit-wise operations. + (andsi3, *andsi3): Ditto. + (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto. + (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto. + (si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto. + * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand, + nds32_ior_operand, nds32_xor_operand): New predicates. + +2018-04-05 Chung-Ju Wu + + * config/nds32/nds32.md (add3, sub3): Rename to ... + (addsi3, subsi3): ... this. + +2018-04-05 Chung-Ju Wu + + * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator. + +2018-04-05 Chung-Ju Wu + + * config/nds32/nds32.md: Adjust indention. + +2018-04-05 Kito Cheng + + * config/nds32/nds32.md (feature): New attribute. + +2018-04-05 Chung-Ju Wu + + * config/nds32/nds32.md (subtype): New attribute. + +2018-04-04 Thomas Preud'homme + + PR target/85203 + * config/arm/arm-builtins.c (arm_expand_builtin): Change + expansion to perform a bitwise AND of the argument followed by a + boolean negation of the result. + +2018-04-04 Peter Bergner + + PR rtl-optimization/84878 + * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine + the basic block. Assert the use reference is not artificial and that + it has an associated insn. + +2018-04-04 Michael Matz + + * builtins.c (compute_objsize): Pass correct operand + to array_at_struct_end_p. + +2018-04-04 Richard Biener + + PR lto/85176 + * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces + from contexts for DINFO_LEVEL_TERSE and below. + +2018-04-04 Kito Cheng + + * config/nds32/nds32-doubleword.md (move_): Require + resiter_operand condition. + * config/nds32/nds32.md (*move): Ditto. + +2018-04-04 Kito Cheng + Monk Chiang + + * config/nds32/nds32.md (movmisalign): New pattern. + +2018-04-04 Chung-Ju Wu + + * config/nds32/nds32.md (movqi, movhi): Merge into mov. + +2018-04-04 Chung-Ju Wu + Kito Cheng + + * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code, + nds32_cond_code_str, output_cond_branch, + output_cond_branch_compare_zero, nds32_expand_cbranch, + nds32_expand_cstore, nds32_expand_movcc, + nds32_output_cbranchsi4_equality_zero, + nds32_output_cbranchsi4_equality_reg, + nds32_output_cbranchsi4_equality_reg_or_const_int, + nds32_output_cbranchsi4_greater_less_zero: New functions. + * config/nds32/nds32-protos.h (nds32_expand_cbranch, + nds32_expand_cstore, nds32_expand_movcc, + nds32_output_cbranchsi4_equality_zero, + nds32_output_cbranchsi4_equality_reg, + nds32_output_cbranchsi4_equality_reg_or_const_int, + nds32_output_cbranchsi4_greater_less_zero): Declare. + * config/nds32/predicates.md (nds32_movecc_comparison_operator, + nds32_rimm11s_operand): New predicates. + * config/nds32/nds32.h (nds32_expand_result_type): New enum type. + * config/nds32/nds32.md: Rewrite all the branch and conditional move + patterns. + +2018-04-04 Kito Cheng + + * config/nds32/nds32-doubleword.md: Refine all the instruction type. + * config/nds32/nds32.md: Ditto. + * config/nds32/pipelines.md: Ditto. + +2018-04-04 Richard Biener + + PR tree-optimization/85168 + * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid + propagating abnormals. + +2018-04-04 Chung-Ju Wu + + * config/nds32/nds32.md (enabled): Use yes/no for this attribute. + +2018-04-04 Chung-Ju Wu + Kito Cheng + + * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function. + * config/nds32/nds32-protos.h (nds32_long_call_p): Declare. + * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function. + (TARGET_FUNCTION_OK_FOR_SIBCALL): Define. + * config/nds32/nds32.md (sibcall_internal): New. + (sibcall_register): Remove. + (sibcall_immediate): Remove. + (sibcall_value_internal): New. + (sibcall_value_register): Remove. + (sibcall_value_immediate): Remove. + * config/nds32/predicates.md (nds32_general_register_operand): New. + (nds32_call_address_operand): New. + +2018-04-03 Jakub Jelinek + + PR rtl-optimization/85167 + * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and + bb_defs if *split_p, instead preinitialize it to NULL. + + PR tree-optimization/85156 + * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid + evaluating the argument multiple times. + +2018-04-03 Bill Schmidt + + * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather + than vector. + (_mm_cvtpd_ps): Likewise. + (_mm_cvttpd_epi32): Likewise. + * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise. + * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine + vector, pixel, and bool following altivec.h include. + +2018-04-03 Martin Sebor + + * doc/extend.texi (Common Function Attributes): Clarify. + (const attribute): Likewise. + (pure attribute): Likewise. + +2018-04-03 Jakub Jelinek + + PR target/85169 + * config/i386/i386.c (ix86_expand_vector_set): Use + HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix. + +2018-04-03 Uros Bizjak + + * config/i386/i386.c (emit_i387_cw_initialization): Always use logic + instructions when changing rounding bits to preserve precision bits + in the x87 control word. + +2018-04-03 Martin Liska + + PR tree-optimization/82491 + * rtl.h (strip_offset_and_add): Replace += suboffset with + poly_uint64 () + suboffset. + +2018-03-29 Martin Liska + Martin Jambor + + PR ipa/84947 + * ipa-cp.c (propagate_bits_across_jump_function): Bail out if + param_type is not an integral or pointer type. + +2018-04-03 Richard Biener + + * sese.h (recompute_all_dominators): Remove. + +2018-04-02 Martin Sebor + + * doc/invoke.texi (-Wrestrict): Fix typos. + +2018-04-02 Jim Wilson + + * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero. + * config/riscv/riscv.md (si3): Use QImode shift count. + (di3, si3_extend): Likewise. + (si3_mask, si3_mask_1): New. + (di3_mask, di3_mask_1): New. + (si3_extend_mask, si3_extend_mask_1): New. + (lshrsi3_zero_extend_1): Use VOIDmode shift count. + * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count. + +2018-04-02 Gerald Pfeifer + + * doc/cpp.texi (Variadic Macros): Fix line continuation in an + example. + +2018-04-02 Chung-Ju Wu + + * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define. + (nds32_canonicalize_comparison): New function. + +2018-04-01 Chung-Ju Wu + Kito Cheng + Kuan-Lin Chen + + * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs. + * config/nds32/constants.md (unspec_volatile_element): Add + UNSPEC_VOLATILE_RELAX_GROUP. + * config/nds32/nds32-relax-opt.c: New file. + * config/nds32/nds32-predicates.c + (nds32_symbol_load_store_p): New function. + * config/nds32/nds32-protos.h + (nds32_symbol_load_store_p): Declare function. + (make_pass_nds32_relax_opt): Declare new rtl pass function. + * config/nds32/nds32.c + (nds32_register_pass): New function to register pass. + (nds32_register_passes): New function to register passes. + * config/nds32/nds32.md (relax_group): New pattern. + * config/nds32/nds32.opt (mrelax-hint): New option. + * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency. + +2018-04-01 Kito Cheng + + * config/nds32/t-nds32: Modify files dependency. + +2018-04-01 Chung-Ju Wu + + * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character. + (PROFILE_HOOK): Define its implementation. + +2018-04-01 Chung-Ju Wu + + * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int + type and 32-bit size. + +2018-04-01 Jakub Jelinek + + PR middle-end/85090 + * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F. + (V_128_256): New mode iterator. + (*avx512dq_vextract64x2_1 splitter): New define_split. + (*avx512f_vextract32x4_1 splitter): Likewise. + (xop_pcmov_): Use V_128_256 mode iterator instead + of V. + * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and + V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F. + +2018-03-31 Segher Boessenkool + + PR target/83315 + * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet) + NaN inputs correctly. + +2018-03-30 Peter Bergner + + PR target/80546 + * config/rs6000/vsx.md (??r): New mode attribute. + (*vsx_mov_64bit): Use it. + (*vsx_mov_32bit): Likewise. + +2018-03-30 Martin Sebor + + PR tree-optimization/84818 + * builtins.c (check_access): Use warning_n. + +2018-03-30 Aaron Sawdey + + PR target/83822 + * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant + condition. + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant + condition. + +2018-03-30 Julia Koval + + PR target/84413 + * x86-tune.def (movx, partial_reg_dependency): Enable for + m_SKYLAKE_AVX512. + +2018-03-29 Vladimir Makarov + + PR inline-asm/84985 + * lra-constraints.c (process_alt_operands): Move setting + this_alternative_matches below. + +2018-03-29 Martin Liska + + PR lto/84995. + * doc/invoke.texi: Document how LTO works with debug info. + Describe auto-load support of binutils. Mention 'x86-64' + as valid option value of -march option. + +2018-03-29 Jakub Jelinek + + * config/i386/sse.md (_blendm): Use . + + PR c/85094 + * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT. + For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe + OEP_NO_HASH_CHECK for recursive call, to avoid exponential + checking. + +2018-03-28 Peter Bergner + + PR target/84912 + * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define. + (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64. + * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support + for RS6000_BTM_POWERPC64. + (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64 + (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64. + * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro + definition. + (DIVDE): Use it. + (DIVDEU): Likewise. + +2018-03-28 Carl Love + + Revert + 2017-09-27 Carl Love + + * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro. + (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins. + * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the + fctiw instruction. + +2018-03-28 Bill Schmidt + + * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool + instead of __vector bool. + (_mm_max_pu8): Likewise. + (_mm_min_pi16): Likewise. + +2018-03-28 Peter Bergner + + PR target/84912 + * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion. + (DIVWEUO): Likewise. + (DIVDEO): Likewise. + (DIVDEUO): Likewise. + * config/rs6000/rs6000.c (builtin_function_type): Remove support for + DIVWEUO and DIVDEUO. + * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs. + (UNSPEC_DIV_EXTEND): Remove deleted unspecs. + (div_extend): Likewise. + * doc/extend.texi (__builtin_divweo): Remove documentation for deleted + builtin function. + (__builtin_divweuo): Likewise. + (__builtin_divdeo): Likewise. + (__builtin_divdeuo): Likewise. + +2018-03-28 Jakub Jelinek + + PR target/85095 + * config/i386/i386.md (*add3_carry_0, *addsi3_carry_zext_0, + *sub3_carry_0, *subsi3_carry_zext_0): New patterns. + + PR tree-optimization/82004 + * gimple-match-head.c (optimize_pow_to_exp): New function. + * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE. + Don't fold to exp if optimize_pow_to_exp is false. + +2018-03-28 Martin Liska + + PR other/84819 + * calls.c (initialize_argument_information): Fix trailing space. + * common.opt: Fix typo and provide better explanation for + -fsanitize-coverage option. + * config/i386/i386.opt: Fix typo. + +2018-03-28 Jakub Jelinek + Martin Liska + + PR sanitizer/85081 + * gimplify.c (asan_poison_variable): Don't do the check for + gimplify_omp_ctxp here. + (gimplify_decl_expr): Do it here. + (gimplify_target_expr): Likewise. + +2018-03-28 Martin Liska + + PR target/84988 + * config/i386/i386.c (ix86_function_arg_advance): Do not call + chkp_type_bounds_count if MPX is not enabled. + +2018-03-27 Chung-Ju Wu + + * config/nds32/nds32.h (BRANCH_COST): Adjust cost. + +2018-03-27 Michael Meissner + + PR target/84914 + * config/rs6000/rs6000.c (create_complex_muldiv): New helper + function to create the function decl for complex long double + multiply and divide for -mabi=ieeelongdouble. + (init_float128_ieee): Call it. + +2018-03-27 H.J. Lu + + PR target/85044 + * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for + -fcf-protection=branch -mibt. + * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes. + +2018-03-27 Ramana Radhakrishnan + + PR target/81863 + * config/arm/arm.c (arm_valid_symbolic_address): Handle + arm_word_relocations. + +2018-03-27 Cesar Philippidis + + PR target/85056 + * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to + extern array declarations. + +2018-03-27 Richard Biener + + PR middle-end/84067 + * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with + explicit single_use checks. + +2018-03-27 Richard Biener + + PR tree-optimization/85082 + * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces): + Valueize the VUSE. + +2018-03-27 Ramana Radhakrishnan + + * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES + * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]): + Turn on fasynchronous-unwind-tables and funwind-tables. + +2018-03-26 Uros Bizjak + + PR target/85073 + * config/i386/i386.md (*bmi_blsr__cmp): New insn pattern. + (*bmi_blsr__ccz): Ditto. + +2018-03-26 Tom de Vries + + PR tree-optimization/85063 + * omp-general.c (offloading_function_p): New function. Factor out + of ... + * omp-offload.c (pass_omp_target_link::gate): ... here. + * omp-general.h (offloading_function_p): Declare. + * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable + with attribute omp declare target for offloading functions. + +2018-03-24 Richard Sandiford + + PR tree-optimization/84005 + * tree-data-ref.h (get_base_for_alignment): Declare. + * tree-data-ref.c (get_base_for_alignment_1): New function. + (get_base_for_alignment): Likewise. + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use + get_base_for_alignment to find a suitable base object, instead + of always using drb->base_address. + +2018-03-23 Jakub Jelinek + + PR inline-asm/85022 + * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have + known size by default. + +2018-03-23 Vladimir Makarov + + PR inline-asm/85030 + * lra-constraints.c (process_alt_operands): Don't match BLKmode + and non BLKmode operands. + +2018-03-23 Kyrylo Tkachov + + PR target/85026 + * config/arm/arm.md (unaligned_loadhis): Remove first alternative. + Clean up attributes. + +2018-03-23 Richard Biener + + PR debug/85020 + * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when + we are going to emit early debug for LTO. + +2018-03-23 Jakub Jelinek + + PR inline-asm/85034 + * function.c (match_asm_constraints_1): Don't optimize if input + doesn't satisfy general_operand predicate for output's mode. + + PR inline-asm/85022 + * alias.c (write_dependence_p): Don't require for x_canonicalized + non-VOIDmode if x has VOIDmode. + + PR sanitizer/85029 + * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base), + just don't try to optimize it rather than assert it never happens. + +2018-03-22 Kelvin Nilsen + + * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X + macro expansions for definition of ST_INTERNAL_ and + LD_INTERNAL_ builtins. + * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec): + Remove prototype. + * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this + function. + (altivec_expand_st_builtin): Likewise. + (altivec_expand_builtin): Remove calls to deleted functions. + (rs6000_address_for_altivec): Delete this function. + * config/rs6000/vector.md: Remove expands for + vector_altivec_load_ and vector_altivec_store_. + +2018-03-22 Sudakshina Das + + PR target/84826 + * config/arm/arm.h (machine_function): Add static_chain_stack_bytes. + * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid + re-computing once computed. + (arm_expand_prologue): Compute machine->static_chain_stack_bytes. + (arm_init_machine_status): Initialize + machine->static_chain_stack_bytes. + +2018-03-22 Kelvin Nilsen + + PR target/84760 + * doc/extend.texi: Add four new prototypes for vec_ld. + * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol + definitions for more logical presentation. + * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add + entries for V1TI variants of __builtin_altivec_ld builtin. + * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and + handling of V1TI variant of LVX icode pattern. + (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI. + (rs6000_gimple_fold_builtin): Likewise. + (altivec_init_builtins): Add code to define + __builtin_altivec_lvx_v1ti function. + +2018-03-22 Jakub Jelinek + + PR inline-asm/84941 + * function.c (match_asm_constraints_1): Don't do the optimization + if input isn't a REG, SUBREG, MEM or constant. + +2018-03-22 Tom de Vries + + PR tree-optimization/84956 + * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with + bb_has_abnormal_pred. + +2018-03-22 Jakub Jelinek + + PR sanitizer/85018 + * dwarf2asm.c (dw2_output_indirect_constant_1): Set + DECL_INITIAL (decl) to decl at the end. + * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change, + adjust the comment. + +2018-03-21 Joseph Myers + + * doc/extend.texi (__builtin_tgmath): Document when complex + integer types are treated as _Complex _Float64. + +2018-03-21 Tom de Vries + + * doc/extend.texi (__builtin_extend_pointer): Remove pasto. + +2018-03-21 Jakub Jelinek + + PR tree-optimization/84960 + * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb + if it is ENTRY block, move them into single succ of ENTRY in that case. + +2018-03-21 Richard Sandiford + + PR tree-optimization/84811 + * poly-int.h (poly_span_traits): Remove the T3 parameter and + promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT. + (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p): + (known_subrange_p): Update accordingly. Cast each value involved + in the size comparison, rather than casting the result of the + subtraction. + +2018-03-21 Jakub Jelinek + + PR tree-optimization/84982 + * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion + by flipping the least significant bit rather than all bits from + bitpos to bitpos + bitsize - 1. + +2018-03-21 Nathan Sidwell + + * doc/extend.texi (Deprecated Features): Remove mention of + long-deleted deprecations. + +2018-03-21 Rainer Orth + + PR jit/84288 + * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set. + * configure: Regenerate. + +2018-03-21 Tom de Vries + + PR tree-optimization/83126 + * tree-parloops.c (num_phis): New function. + (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure. + +2018-03-21 Nathan Sidwell + + * doc/extend.texi (Deprecated Features): Update deprecated flags, + mention anon-struct/union members and trailing attributes. + +2018-03-21 Bin Cheng + + PR tree-optimization/84969 + * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder + builtin memset partitions if they set different rhs values. + +2018-03-21 Jakub Jelinek + + PR rtl-optimization/84989 + * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify + VEC_DUPLICATE with scalar result mode. + +2018-03-21 Martin Liska + + PR ipa/84963 + * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove + not intended return statement. + +2018-03-21 Martin Liska + + PR target/84988 + * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. + (chkp_find_bound_slots_1): Limit number of iterations. + +2018-03-20 David H. Gutteridge + + PR target/84838 + * Minor grammar fixes for x86 options. + +2018-03-20 Jakub Jelinek + + PR debug/84875 + * dce.c (delete_unmarked_insns): Don't remove frame related noop moves + holding REG_CFA_RESTORE notes, instead turn them into a USE. + +2018-03-20 Peter Bergner + + PR target/83789 + * config/rs6000/altivec.md (altivec_lvx__2op): Delete define_insn. + (altivec_lvx__1op): Likewise. + (altivec_stvx__2op): Likewise. + (altivec_stvx__1op): Likewise. + (altivec_lvx_): New define_expand. + (altivec_stvx_): Likewise. + (altivec_lvx__2op_): New define_insn. + (altivec_lvx__1op_): Likewise. + (altivec_stvx__2op_): Likewise. + (altivec_stvx__1op_): Likewise. + * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders. + (rs6000_gen_lvx): Likewise. + * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise. + (altivec_expand_stv_builtin): Likewise. + (altivec_expand_builtin): Likewise. + * config/rs6000/vector.md: Likewise. + +2018-03-20 Kyrylo Tkachov + + PR target/82518 + * config/arm/arm.c (arm_array_mode_supported_p): Return false for + BYTES_BIG_ENDIAN. + +2018-03-20 Richard Biener + + PR target/84986 + * config/i386/i386.c (ix86_add_stmt_cost): Only cost + sign-conversions as zero, fall back to standard scalar_stmt + cost for the rest. + +2018-03-20 Martin Liska + + PR ipa/84825 + * predict.c (rebuild_frequencies): Handle case when we have + PROFILE_ABSENT, but flag_guess_branch_prob is false. + +2018-03-20 Jakub Jelinek + + PR target/84990 + * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off + flag_section_anchors. + * varasm.c (use_blocks_for_decl_p): Remove hack for + dw2_force_const_mem. + + PR target/84845 + * config/aarch64/aarch64.md (*aarch64_reg_3_neg_mask2): Rename + to ... + (*aarch64__reg_3_neg_mask2): ... this. If pseudos can't + be created, use lowpart_subreg of operands[0] rather than operands[0] + itself. + (*aarch64_reg_3_minus_mask): Rename to ... + (*aarch64_ashl_reg_3_minus_mask): ... this. + (*aarch64__reg_di3_mask2): Use const_int_operand predicate + and n constraint instead of aarch64_shift_imm_di and Usd. + (*aarch64_reg__minus3): Rename to ... + (*aarch64__reg_minus3): ... this. + +2018-03-20 Sudakshina Das + + PR target/82989 + * config/arm/neon.md (ashldi3_neon): Update ?s for constraints + to favor GPR over NEON registers. + (di3_neon): Likewise. + +2018-03-20 Tom de Vries + + PR target/84952 + * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync. + (nvptx_process_pars): Emit bar.sync asap and alap. + +2018-03-20 Tom de Vries + + PR target/84954 + * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update + seen_label if seen_label is already set. + +2018-03-20 Jakub Jelinek + + PR target/84945 + * config/i386/i386.c (fold_builtin_cpu): For features above 31 + use __cpu_features2 variable instead of __cpu_model.__cpu_features[0]. + Use 1U instead of 1. Formatting fixes. + + PR c/84953 + * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type + instead of TREE_TYPE (s1) for the return value. + +2018-03-19 Jakub Jelinek + + PR tree-optimization/84946 + * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute + bitsize + bitsize in poly_uint64 rather than poly_int64. + + PR sanitizer/78651 + * dwarf2asm.c: Include fold-const.c. + (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR + of decl rather than decl itself. + + PR rtl-optimization/84643 + * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator. + +2018-03-19 Maxim Ostapenko + + PR sanitizer/78651 + * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before + calling assemble_variable. + +2018-03-19 Sudakshina Das + + PR target/81647 + * config/aarch64/aarch64-simd.md (vec_cmp): Modify + instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED. + +2018-03-19 Jim Wilson + + PR bootstrap/84856 + * config/riscv/riscv.c (riscv_function_arg_boundary): Use + PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY. + (riscv_first_stack_step): Likewise. + (riscv_option_override): Use STACK_BOUNDARY instead of + MIN_STACK_BOUNDARY. + * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from + MIN_STACK_BOUNDARY. + (BIGGEST_ALIGNMENT): Set to 128. + (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY. + (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of + STACK_BOUNDARY. + +2018-03-19 Richard Biener + + PR tree-optimization/84933 + * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound + values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE. + +2018-03-19 Richard Biener + + PR tree-optimization/84859 + * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function. + (cond_if_else_store_replacement): Perform sinking operation on + single-store BBs regardless of MAX_STORES_TO_SINK setting. + Generalize what a BB with a single eligible store is. + +2018-03-19 Richard Biener + + PR tree-optimization/84929 + * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard + chrec_is_positive against non-chrec arg. + +2018-03-19 Tamar Christina + + PR target/84711 + * config/arm/arm.c (arm_can_change_mode_class): revert r258554. + +2018-03-18 Martin Liska + + PR rtl-optimization/84635 + * regrename.c (build_def_use): Use matches_mode only when + matches >= 0. + +2018-03-18 Richard Sandiford + + PR tree-optimization/84913 + * tree-vect-loop.c (vectorizable_reduction): Don't try to + vectorize chains of COND_EXPRs. + +2018-03-18 Chung-Ju Wu + + * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value. + +2018-03-18 Chung-Ju Wu + + * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define. + +2018-03-18 Chung-Ju Wu + + * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define. + +2018-03-17 Chung-Ju Wu + Kito Cheng + + * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare. + * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array. + (nds32_adjust_reg_alloc_order): New function. + * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define. + +2018-03-17 Kito Cheng + + * config/nds32/nds32.c (nds32_asm_output_mi_thunk, + nds32_print_operand, nds32_print_operand_address): Use + HOST_WIDE_INT_PRINT_DEC instead. + +2018-03-17 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_register_priority): Modify cost. + +2018-03-17 Jakub Jelinek + + PR target/84902 + * config/i386/i386.c (initial_ix86_tune_features, + initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than + unsigned long long. + (set_ix86_tune_features): Change ix86_tune_mask from unsigned int + to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune + rather than 1u << ix86_tune. Formatting fix. + (ix86_option_override_internal): Change ix86_arch_mask from + unsigned int to unsigned HOST_WIDE_INT, initialize to + HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch. + (ix86_function_specific_restore): Likewise. + +2018-03-16 Jakub Jelinek + + PR target/84899 + * postreload.c (reload_combine_recognize_pattern): Perform + INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and + truncate_int_for_mode the result for the destination's mode. + + PR c/84909 + * hsa-gen.c (mem_type_for_type): Fix comment typo. + * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks): + Likewise. + * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset): + Likewise. + +2018-03-16 Vladimir Makarov + + PR target/84876 + * lra-assigns.c (lra_split_hard_reg_for): Don't use + regno_allocno_class_array and sorted_pseudos. + * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in + insns where regno is used. + +2018-03-16 Martin Liska + + PR ipa/84833 + * multiple_target.c (create_dispatcher_calls): Redirect + reference in the symbol table. + +2018-03-16 Martin Liska + + PR ipa/84722 + * multiple_target.c (create_dispatcher_calls): Redirect also + an alias. + +2018-03-16 Jakub Jelinek + + PR c++/79937 + PR c++/82410 + * tree.h (TARGET_EXPR_NO_ELIDE): Define. + * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with + TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR. + +2018-03-16 Julia Koval + + * doc/invoke.texi (Skylake Server): Add CLWB. + Cannonlake): Remove CLWB. + +2018-03-16 Jakub Jelinek + + PR tree-optimization/84841 + * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from + 1 << 3. + (FLOAT_ONE_CONST_TYPE): Define. + (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0. + (sort_by_operand_rank): Put entries with higher constant_type last + rather than first to match comments. + +2018-03-15 Sandra Loosemore + + * config/nios2/nios2.md (movsi_internal): Fix thinko in + split predicate. + +2018-03-15 Jakub Jelinek + + PR c++/79085 + * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment + check and use address of target always. + +2018-03-15 H.J. Lu + + PR target/84574 + * config/i386/i386.c (indirect_thunk_needed): Update comments. + (indirect_thunk_bnd_needed): Likewise. + (indirect_thunks_used): Likewise. + (indirect_thunks_bnd_used): Likewise. + (indirect_return_needed): New. + (indirect_return_bnd_needed): Likewise. + (output_indirect_thunk_function): Add a bool argument for + function return. + (output_indirect_thunk_function): Don't generate alias for + function return thunk. + (ix86_code_end): Call output_indirect_thunk_function to generate + function return thunks. + (ix86_output_function_return): Set indirect_return_bnd_needed + and indirect_return_needed instead of indirect_thunk_bnd_needed + and indirect_thunk_needed. + +2018-03-15 Olga Makhotina + + * config/i386/sgxintrin.h (_enclv_u32): New intrinsic. + (__enclv_bc, __enclv_cd, __enclv_generic): New definitions. + (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves. + +2018-03-15 David Malcolm + Paul Hua + + PR c/84852 + * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp. + +2018-03-15 Segher Boessenkool + + * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the + TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode + resp. SFmode cases. + +2018-03-15 Tamar Christina + + PR target/84711 + * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE + instead of GET_MODE_SIZE when comparing Units. + +2018-03-15 Vladimir Mezentsev + + PR target/68256 + * varasm.c (hash_section): Return an unchangeble hash value + * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p): + Return !aarch64_can_use_per_function_literal_pools_p (). + +2018-03-15 Jakub Jelinek + + PR target/84860 + * optabs.c (emit_conditional_move): Pass address of cmode's copy + rather than address of cmode as last argument to prepare_cmp_insn. + +2018-03-15 Julia Koval + + * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ, + F_AVX512VNNI, F_AVX512BITALG): New. + +2018-03-14 John David Anglin + + PR target/83451 + * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload + insn for floating-point loads and stores. + +2018-03-14 Carl Love + + * config/rs6000/rs6000-c.c: Add macro definitions for + ALTIVEC_BUILTIN_VEC_PERMXOR. + * config/rs6000/rs6000.h: Add #define for vec_permxor builtin. + * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR. + * config/rs6000/altivec.md (altivec_vpermxor): New define expand. + * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case + UNSPEC_VPERMXOR. + * config/doc/extend.texi: Add prototypes for vec_permxor. + +2018-03-14 David Malcolm + + PR c/84852 + * diagnostic-show-locus.c (class layout_point): Convert m_line + from int to linenum_type. + (line_span::comparator): Use linenum "compare" function when + comparing line numbers. + (test_line_span): New function. + (layout_range::contains_point): Convert param "row" from int to + linenum_type. + (layout_range::intersects_line_p): Likewise. + (layout::will_show_line_p): Likewise. + (layout::print_source_line): Likewise. + (layout::should_print_annotation_line_p): Likewise. + (layout::print_annotation_line): Likewise. + (layout::print_leading_fixits): Likewise. + (layout::annotation_line_showed_range_p): Likewise. + (struct line_corrections): Likewise for field m_row. + (line_corrections::line_corrections): Likewise for param "row". + (layout::print_trailing_fixits): Likewise. + (layout::get_state_at_point): Likewise. + (layout::get_x_bound_for_row): Likewise. + (layout::print_line): Likewise. + (diagnostic_show_locus): Likewise for locals "last_line" and "row". + (selftest::diagnostic_show_locus_c_tests): Call test_line_span. + * input.c (selftest::test_linenum_comparisons): New function. + (selftest::input_c_tests): Call it. + * selftest.c (selftest::test_assertions): Test ASSERT_GT, + ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT. + * selftest.h (ASSERT_GT): New macro. + (ASSERT_GT_AT): New macro. + (ASSERT_LT): New macro. + (ASSERT_LT_AT): New macro. + +2018-03-14 Segher Boessenkool + + PR rtl-optimization/84780 + * combine.c (distribute_links): Don't make a link based on pc_rtx. + +2018-03-14 Martin Liska + + * tree.c (record_node_allocation_statistics): Use + get_stats_node_kind. + (get_stats_node_kind): New function extracted from + record_node_allocation_statistics. + (free_node): Use get_stats_node_kind. + +2018-03-14 Richard Biener + + * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts + that the value-set of ANTIC_IN doesn't grow. + + Revert + * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs + member. + (BB_VISITED_WITH_VISITED_SUCCS): New define. + (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS. + +2018-03-14 Julia Koval + + * config.gcc (icelake-client, icelake-server): New. + (icelake): Remove. + * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit. + (initial_ix86_arch_features): Ditto. + (PTA_SKYLAKE): Add SGX. + (PTA_ICELAKE): Remove. + (PTA_ICELAKE_CLIENT): New. + (PTA_ICELAKE_SERVER): New. + (ix86_option_override_internal): Split up icelake on icelake client and + icelake server. + (get_builtin_code_for_version): Ditto. + (fold_builtin_cpu): Ditto. + * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto. + * config/i386/i386-c.c (ix86_target_macros_internal): Ditto + * config/i386/i386.h (processor_type): Ditto. + * doc/invoke.texi: Ditto. + +2018-03-14 Jakub Jelinek + + PR sanitizer/83392 + * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also + INTEGER_CST offset, add it together with bitpos / 8 and + sign extend based on POINTER_SIZE. + + PR target/84844 + Revert + 2017-04-20 Uros Bizjak + + PR target/78090 + * config/i386/constraints.md (Yc): New register constraint. + * config/i386/i386.md (*float2_mixed): + Use Yc constraint for alternative 2 of operand 0. Remove + preferred_for_speed attribute. + +2018-03-14 Richard Biener + + PR tree-optimization/84830 + * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN + with the old one to avoid oscillations. + +2018-03-13 Vladimir Makarov + + PR target/83712 + * lra-assigns.c (find_all_spills_for): Ignore uninteresting + pseudos. + (assign_by_spills): Return a flag of reload assignment failure. + Do not process the reload assignment failures. Do not spill other + reload pseudos if they has the same reg class. Update n if + necessary. + (lra_assign): Add a return arg. Set up from the result of + assign_by_spills call. + (find_reload_regno_insns, lra_split_hard_reg_for): New functions. + * lra-constraints.c (split_reg): Add a new arg. Use it instead of + usage_insns if it is not NULL. + (spill_hard_reg_in_range): New function. + (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg. + * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New + function prototypes. + (lra_assign): Change prototype. + * lra.c (lra): Add code to deal with fails by splitting hard reg + live ranges. + +2018-03-01 Palmer Dabbelt + + * config/riscv/riscv.opt (mrelax): New option. + * config/riscv/riscv.c (riscv_file_start): Emit ".option + "norelax" when riscv_mrelax is disabled. + * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax". + +2018-03-13 Aaron Sawdey + + PR target/84743 + * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel + reassociation for int modes. + +2018-03-13 Richard Sandiford + + * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks): + Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR + for big-endian. + * config/aarch64/iterators.md (hi_lanes_optab): New int attribute. + * config/aarch64/aarch64-sve.md + (*aarch64_sve_): Rename to... + (aarch64_sve_): ...this. + (*extend2): Rename to... + (aarch64_sve_extend2): ...this. + (vec_unpack__): Turn into a define_expand, + renaming the old pattern to... + (aarch64_sve_punpk_): ...this. Only define + unsigned packs. + (vec_unpack__): Turn into a + define_expand, renaming the old pattern to... + (aarch64_sve_unpk_): ...this. + (*vec_unpacku___no_convert): Delete. + (vec_unpacks__): Take BYTES_BIG_ENDIAN into + account when deciding which SVE instruction the optab should use. + (vec_unpack_float__vnx4si): Likewise. + +2018-03-13 Richard Sandiford + + * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM) + (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM) + (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM) + (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants. + (tlsdesc_small_): Turn a define_expand and use + tlsdesc_small_sve_ for SVE. Rename original define_insn to... + (tlsdesc_small_advsimd_): ...this. + (tlsdesc_small_sve_): New pattern. + +2018-03-13 Richard Sandiford + + * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART) + (UNSPEC_UMUL_HIGHPART): New constants. + (MUL_HIGHPART): New int iteraor. + (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART. + * config/aarch64/aarch64-sve.md (mul3_highpart): New + define_expand. + (*mul3_highpart): New define_insn. + +2018-03-13 Eric Botcazou + + PR lto/84805 + * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of + incomplete types. + +2018-03-13 Martin Liska + + PR ipa/84658. + * (sem_item_optimizer::sem_item_optimizer): Initialize new + vector. + (sem_item_optimizer::~sem_item_optimizer): Release it. + (sem_item_optimizer::merge_classes): Register variable aliases. + (sem_item_optimizer::fixup_pt_set): New function. + (sem_item_optimizer::fixup_points_to_sets): Likewise. + * ipa-icf.h: Declare new variables and functions. + +2018-03-13 Jakub Jelinek + + PR middle-end/84834 + * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of + integer_pow2p@2 and test integer_pow2p in condition. + (A < 0 ? C : 0): Similarly for @1. + + PR middle-end/84831 + * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p) + characters starting at p contain '\0' character, don't look beyond + that. + + PR target/84827 + * config/i386/i386.md (round2): For 387 fancy math, disable + pattern if -ftrapping-math -fno-fp-int-builtin-inexact. + + PR target/84828 + * reg-stack.c (change_stack): Change update_end var from int to + rtx_insn *, if non-NULL don't update just BB_END (current_block), but + also call set_block_for_insn on the newly added insns and rescan. + + PR target/84786 + * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v + on the last operand. + + PR c++/84704 + * tree.c (stabilize_reference_1): Return save_expr (e) for + STATEMENT_LIST even if it doesn't have side-effects. + +2018-03-12 Jonathan Wakely + + * doc/invoke.texi (-mclflushopt): Fix spelling of option. + +2018-03-12 Renlin Li + + * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to + aarch64_output_scalar_simd_mov_immediate. + +2018-03-12 Martin Sebor + + PR tree-optimization/83456 + * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning + for perfectly overlapping calls to memcpy. + (gimple_fold_builtin_memory_chk): Same. + (gimple_fold_builtin_strcpy): Handle no-warning. + (gimple_fold_builtin_stxcpy_chk): Same. + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning. + +2018-03-12 Segher Boessenkool + + * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named" + parameter. Use it for SFmode. + (rs6000_function_arg_advance_1): Adjust. + (rs6000_function_arg): Adjust. + (rs6000_gimplify_va_arg): Pass false for that new parameter. + +2018-03-12 Segher Boessenkool + + PR rtl-optimization/84169 + PR rtl-optimization/84780 + * combine.c (can_combine_p): Check for a 2-insn combination whether + the destination register is used between the two insns, too. + +2018-03-12 Richard Biener + + PR tree-optimization/84803 + * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything + for refs DR analysis didn't process. + +2018-03-12 Richard Biener + + PR tree-optimization/84777 + * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For + force-vectorize loops ignore whether we are optimizing for size. + +2018-03-12 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_md_asm_adjust): New function. + (TARGET_MD_ASM_ADJUST): Define. + +2018-03-12 Monk Chiang + Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32.c (nds32_compute_stack_frame, + nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple, + nds32_emit_stack_v3push, nds32_emit_stack_v3pop, + nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue, + nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine. + * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM, + NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New. + * config/nds32/nds32.md (prologue, epilogue): Use macro + NDS32_V3PUSH_AVAILABLE_P to do checking. + +2018-03-11 Jakub Jelinek + + PR debug/58150 + * dwarf2out.c (gen_enumeration_type_die): Don't guard adding + DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf, + but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating + a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard + addition of most attributes on !orig_type_die or the attribute not + being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE. + +2018-03-11 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define + __NDS32_VH__ macro. + * config/nds32/nds32.opt (mvh): New option. + +2018-03-11 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare + function. + * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function. + * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its + definition. + +2018-03-11 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New + function. + * config/nds32/nds32-multiple.md (strlensi): New pattern. + * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function. + +2018-03-11 Monk Chiang + Kito Cheng + Chung-Ju Wu + + * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB, + UNSPEC_FFMISM and UNSPEC_FLMISM. + * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description + for ffb, ffmism and flmism. + * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern. + (unspec_ffmism): Ditto. + (unspec_flmism): Ditto. + (nds32_expand_builtin_impl): Check if string extension is available. + * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB, + NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM. + +2018-03-10 Vladimir Makarov + + Reverting patch: + 2018-03-09 Vladimir Makarov + + PR target/83712 + * lra-assigns.c (assign_by_spills): Return a flag of reload + assignment failure. Do not process the reload assignment + failures. Do not spill other reload pseudos if they has the same + reg class. + (lra_assign): Add a return arg. Set up from the result of + assign_by_spills call. + (find_reload_regno_insns, lra_split_hard_reg_for): New functions. + * lra-constraints.c (split_reg): Add a new arg. Use it instead of + usage_insns if it is not NULL. + (spill_hard_reg_in_range): New function. + (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg. + * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New + function prototypes. + (lra_assign): Change prototype. + * lra.c (lra): Add code to deal with fails by splitting hard reg + live ranges. + +2018-03-10 H.J. Lu + + PR target/84807 + * config/i386/i386.opt: Replace Enforcment with Enforcement. + +2018-03-10 Alexandre Oliva + + PR debug/84620 + * dwarf2out.h (dw_val_class): Add dw_val_class_symview. + (dw_val_node): Add val_symbolic_view. + * dwarf2out.c (dw_line_info_table): Add symviews_since_reset. + (symview_upper_bound): New. + (new_line_info_table): Initialize symviews_since_reset. + (dwarf2out_source_line): Count symviews_since_reset and set + symview_upper_bound. + (dw_val_equal_p): Handle symview. + (add_AT_symview): New. + (print_dw_val): Handle symview. + (attr_checksum, attr_checksum_ordered): Likewise. + (same_dw_val_p, size_of_die): Likewise. + (value_format, output_die): Likewise. + (add_high_low_attributes): Use add_AT_symview for entry_view. + (dwarf2out_finish): Reset symview_upper_bound, clear + zero_view_p. + +2018-03-09 Peter Bergner + + PR target/83969 + * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype. + Add strict argument and use it. + (rs6000_split_multireg_move): Update for new strict argument. + (mem_operand_gpr): Disallow all non-offsettable addresses. + * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint. + +2018-03-09 Jakub Jelinek + + PR target/84772 + * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp + temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY. + * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise. + + PR c++/84767 + * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped + decl, use remap_type if we want to use the type. + +2018-03-09 Martin Sebor + + PR tree-optimization/84526 + * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset): + Remove dead code. + (builtin_access::generic_overlap): Be prepared to handle non-array + base objects. + +2018-03-09 Alexandre Oliva + + PR rtl-optimization/84682 + * lra-constraints.c (process_address_1): Check is_address flag + for address constraints. + (process_alt_operands): Likewise. + * lra.c (lra_set_insn_recog_data): Pass asm operand locs to + preprocess_constraints. + * recog.h (preprocess_constraints): Add oploc parameter. + Adjust callers. + * recog.c (preprocess_constraints): Test address_operand for + CT_ADDRESS constraints. + +2018-03-09 Vladimir Makarov + + PR target/83712 + * lra-assigns.c (assign_by_spills): Return a flag of reload + assignment failure. Do not process the reload assignment + failures. Do not spill other reload pseudos if they has the same + reg class. + (lra_assign): Add a return arg. Set up from the result of + assign_by_spills call. + (find_reload_regno_insns, lra_split_hard_reg_for): New functions. + * lra-constraints.c (split_reg): Add a new arg. Use it instead of + usage_insns if it is not NULL. + (spill_hard_reg_in_range): New function. + (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg. + * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New + function prototypes. + (lra_assign): Change prototype. + * lra.c (lra): Add code to deal with fails by splitting hard reg + live ranges. + +2018-03-09 Kyrylo Tkachov + + PR target/83193 + * common/config/arm/arm-common.c (arm_parse_arch_option_name): + Accept complain bool parameter. Only emit errors if it is true. + (arm_parse_cpu_option_name): Likewise. + (arm_target_thumb_only): Adjust callers of the above. + * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust + prototype to take a default true bool parameter. + (arm_parse_arch_option_name): Likewise. + +2018-03-09 David Malcolm + Francois-Xavier Coudert + + PR jit/64089 + PR jit/84288 + * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New. + * configure: Regenerate. + * configure.ac ("linker --version-script option"): New. + ("linker soname option"): New. + +2018-03-09 Richard Biener + + PR tree-optimization/84775 + * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink + immediate uses of predicate stmts and mark them modified. + + Revert + PR tree-optimization/84178 + * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates + to caller. + (version_loop_for_if_conversion): Delay update_ssa call. + (tree_if_conversion): Delay update_ssa until after predicate + insertion. + +2018-03-09 Eric Botcazou + + PR target/84763 + * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation + when the function accesses prior frames. + +2018-03-08 Jakub Jelinek + + PR debug/84456 + * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call + gen_llsym, otherwise call maybe_gen_llsym. + + PR inline-asm/84742 + * recog.c (asm_operand_ok): Return 0 if multi-character constraint + has ',' character inside of it. + +2018-03-08 Kyrylo Tkachov + + PR target/84748 + * config/aarch64/aarch64.md (*compare_cstore_insn): Mark pattern + as clobbering CC_REGNUM. + +2018-03-08 Richard Biener + + PR middle-end/84552 + * tree-scalar-evolution.c: Include tree-into-ssa.h. + (follow_copies_to_constant): Do not follow SSA names registered + for update. + +2018-03-08 Richard Biener + + PR tree-optimization/84178 + * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates + to caller. + (version_loop_for_if_conversion): Delay update_ssa call. + (tree_if_conversion): Delay update_ssa until after predicate + insertion. + +2018-03-08 David Malcolm + + PR tree-optimization/84178 + * tree-if-conv.c (release_bb_predicate): Remove the + the assertion that the stmts have NULL use_ops. + Discard the statements, asserting that they haven't + yet been added to a BB. + +2018-03-08 Richard Biener + + PR tree-optimization/84746 + * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL. + (phi_translate): Pass in destination ANTIC_OUT set. + (phi_translate_1): Likewise. For a simplified result lookup + a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets. + (phi_translate_set): Adjust. + (do_pre_regular_insertion): Likewise. + (do_pre_partial_partial_insertion): Likewise. + +2018-03-08 Martin Liska + + PR gcov-profile/84735 + * doc/gcov.texi: Document usage of profile files. + * gcov-io.h: Document changes in the format. + +2018-03-08 Alexandre Oliva + + PR debug/84404 + PR debug/84408 + * dwarf2out.c (struct dw_line_info_table): Update comments for + view == -1. + (FORCE_RESET_NEXT_VIEW): New. + (FORCE_RESETTING_VIEW_P): New. + (RESETTING_VIEW_P): Check for -1 too. + (ZERO_VIEW_P): Likewise. + (new_line_info_table): Force-reset next view. + (dwarf2out_begin_function): Likewise. + (dwarf2out_source_line): Simplify zero_view_p initialization. + Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of + view directly. Omit view when omitting .loc at line 0. + +2018-03-08 Jakub Jelinek + + PR tree-optimization/84740 + * tree-switch-conversion.c (process_switch): Call build_constructors + only if info.phi_count is non-zero. + + PR tree-optimization/84739 + * tree-tailcall.c (find_tail_calls): Check call arguments against + DECL_ARGUMENTS (current_function_decl) rather than + DECL_ARGUMENTS (func) when checking for tail recursion. + +2018-03-07 Jakub Jelinek + + * doc/contrib.texi: Add entries for Martin Liska, David Malcolm, + Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and + Volker Reichelt's entry and add entries for people that perform + GCC fuzzy testing and report numerous bugs. + +2018-03-07 Segher Boessenkool + + PR target/82411 + * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put + readonly data in sdata, if that is disabled. + * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option. + * doc/invoke.texi (RS/6000 and PowerPC Options): Document + -mreadonly-in-sdata option. + +2018-03-07 Martin Sebor + + PR tree-optimization/84468 + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor + basic block when looking for nul assignment. + +2018-03-07 Eric Botcazou + + PR target/84277 + * except.h (output_function_exception_table): Adjust prototype. + * except.c (output_function_exception_table): Remove FNNAME parameter + and add SECTION parameter. Ouput one part of the table at a time. + * final.c (final_scan_insn_1) : Output + the first part of the exception table and emit unwind directives. + * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare. + (i386_pe_seh_cold_init): Likewise. + * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro. + (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise. + * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment. + (ix86_output_call_insn): Emit a nop in one more case for SEH. + * config/i386/winnt.c: Include except.h. + (struct seh_frame_state): Add reg_offset, after_prologue and + in_cold_section fields. + (i386_pe_seh_end_prologue): Set seh->after_prologue. + (i386_pe_seh_cold_init): New function. + (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal + to seh->in_cold_section. + (seh_emit_push): Record the offset of the push. + (seh_emit_save): Record the offet of the save. + (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS. + Test seh->after_prologue to disregard the epilogue. + (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini. + (i386_pe_end_cold_function): New function. + +2018-03-07 Jakub Jelinek + + PR fortran/84565 + * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use + aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero. + + PR c++/84704 + * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag + on tmp_var. + * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG, + don't print names of DECL_NAMELESS DECL_IGNORED_P decls. + + PR middle-end/84723 + * multiple_target.c: Include tree-inline.h and intl.h. + (expand_target_clones): Diagnose and fail if node->definition and + !tree_versionable_function_p (node->decl). + +2018-03-06 John David Anglin + + * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use + sprint_ul. + (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change. + (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above. + +2018-03-06 Jakub Jelinek + + PR target/84710 + * combine.c (try_combine): Use reg_or_subregno instead of handling + just paradoxical SUBREGs and REGs. + +2018-03-06 Claudiu Zissulescu + + * config/arc/arc.c (arc_finalize_pic): Remove function. + (arc_must_save_register): We use single base PIC register, remove + checks to save/restore the PIC register. + (arc_expand_prologue): Likewise. + * config/arc/arc-protos.h (arc_set_default_type_attributes): + Remove. + (arc_verify_short): Likewise. + (arc_attr_type): Likewise. + * config/arc/arc.c (arc_set_default_type_attributes): Remove. + (walk_stores): Likewise. + (arc_address_cost): Make it static. + (arc_verify_short): Likewise. + (branch_dest): Likewise. + (arc_attr_type): Likewise. + * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove. + (TARGET_INSN_LENGTH_PARAMETERS): Likewise. + (arc_final_prescan_insn): Remove inserting the nops due to + hardware hazards. It is done in reorg step. + (insn_length_variant_t): Remove. + (insn_length_parameters_t): Likewise. + (arc_insn_length_parameters): Likewise. + (arc_get_insn_variants): Likewise. + * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove. + +2018-03-06 Jakub Jelinek + + PR inline-asm/84683 + * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid + assertion failure. + + PR tree-optimization/84687 + * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS + on new_node->decl. + * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization. + +2018-03-05 Bill Schmidt + + * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier): + Rename to ppc_speculation_barrier. + * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to + __builtin_ppc_speculation_barrier. + +2018-03-05 Jakub Jelinek + + PR target/84700 + * combine.c (combine_simplify_rtx): Don't try to simplify if + if_then_else_cond returned non-NULL, but either true_rtx or false_rtx + are equal to x. + +2018-03-05 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops + to 32 bytes when compiling for POWER9. + +2018-03-05 Jakub Jelinek + + PR target/84564 + * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for + regparm >= 3 with no arg reg available also for calls with + flag_force_indirect_call. Pass decl to ix86_function_regparm. + + PR target/84524 + * config/i386/sse.md (*3): Replace with + orig,vex. + (*3): Likewise. Remove uses. + +2018-03-05 Peter Bergner + + PR target/84264 + * config/rs6000/vector.md (mov): Disallow altivec memory operands. + +2018-03-05 Richard Biener + + PR tree-optimization/84486 + * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code. + When inserting a __builtin_assume_aligned call set the LHS + SSA name alignment info accordingly. + +2018-03-05 Wilco Dijkstra + + PR tree-optimization/84114 + * config/aarch64/aarch64.c (aarch64_reassociation_width) + Avoid reassociation of FLOAT_MODE addition. + +2018-03-05 Olga Makhotina + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET, + OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET, + OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions. + (ix86_handle_option): Handle -mpconfig and -mwbnoinvd. + * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers. + * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig + and -mwbnoinvd. + * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd, + __builtin_ia32_wbinvd): New builtins. + (SPECIAL_ARGS2): New. + * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New. + (SPECIAL_ARGS2): New. + * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd. + (ix86_valid_target_attribute_inner_p): Ditto. + (ix86_init_mmx_sse_builtins): Add special_args2. + * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD, + TARGET_WBNOINVD_P): New. + * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New. + (define_insn "wbinvd", define_insn "wbnoinvd"): New. + * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd. + * config/i386/immintrin.h (_wbinvd): New intrinsic. + * config/i386/pconfigintrin.h: New file. + * config/i386/wbnoinvdintrin.h: Ditto. + * config/i386/x86intrin.h: Add headers pconfigintrin.h and + wbnoinvdintrin.h. + * doc/invoke.texi (-mpconfig, -mwbnoinvd): New. + +2018-03-05 Richard Biener + + PR tree-optimization/84670 + * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs + member. + (BB_VISITED_WITH_VISITED_SUCCS): New define. + (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS. + (compute_antic_aux): Only assert the number of values in ANTIC_IN + doesn't grow if all successors (recursively) were visited at least + once. + +2018-03-05 Richard Biener + + PR tree-optimization/84650 + * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache + if executed in the loop pipeline. + +2018-03-05 Sandra Loosemore + + * doc/configfiles.texi (Configuration Files): Move info about + conditionalizing $target-protos.h to... + * doc/sourcebuild.texi (Back End): Here. Explain how $target.h + differs from $target-protos.h. + +2018-03-05 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare. + * config/nds32/nds32-multiple.md (setmemsi): Define. + * config/nds32/nds32-memory-manipulation.c + (nds32_gen_dup_4_byte_to_word_value): New. + (emit_setmem_word_loop): New. + (emit_setmem_byte_loop): New. + (nds32_expand_setmem_loop): New. + (nds32_expand_setmem_loop_v3m): New. + (nds32_expand_setmem_unroll): New. + (nds32_expand_setmem): New. + +2018-03-04 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32-memory-manipulation.c + (nds32_emit_load_store): New. + (nds32_emit_post_inc_load_store): New. + (nds32_emit_mem_move): New. + (nds32_emit_mem_move_block): New. + (nds32_expand_movmemsi_loop_unknown_size): New. + (nds32_expand_movmemsi_loop_known_size): New. + (nds32_expand_movmemsi_loop): New. + (nds32_expand_movmemsi_unroll): New. + (nds32_expand_movmemqi): Rename ... + (nds32_expand_movmemsi): ... to this. + * config/nds32/nds32-multiple.md (movmemqi): Rename ... + (movmemsi): ... to this. + * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ... + (nds32_expand_movmemsi): ... to this. + +2018-03-04 Kito Cheng + Monk Chiang + Chung-Ju Wu + + * config/nds32/nds32-protos.h + (nds32_expand_load_multiple): New arguments. + (nds32_expand_store_multiple): Ditto. + (nds32_valid_multiple_load_store): Rename ... + (nds32_valid_multiple_load_store_p): ... to this. + * config/nds32/nds32-memory-manipulation.c + (nds32_expand_load_multiple): Refine implementation. + (nds32_expand_store_multiple): Ditto. + * config/nds32/nds32-multiple.md + (load_multiple): Update nds32_expand_load_multiple interface. + (store_multiple): Update nds32_expand_store_multiple interface. + * config/nds32/nds32-predicates.c + (nds32_valid_multiple_load_store): Rename ... + (nds32_valid_multiple_load_store_p): ... to this and refine + implementation. + * config/nds32/predicates.md + (nds32_load_multiple_and_update_address_operation): New predicate. + (nds32_store_multiple_and_update_address_operation): New predicate. + +2018-03-04 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32.md (type): Add load_multiple and store_multiple. + (combo): New attribute. + * config/nds32/nds32-multiple.md: Refine patterns with new attributes. + +2018-03-03 Chung-Ju Wu + + * config/nds32/nds32.opt: Change -mcmodel= default value. + +2018-03-03 Kito Cheng + Monk Chiang + Chung-Ju Wu + + * config/nds32/constants.md (unspec_element): New enum. + * config/nds32/constraints.md (Umw): New constraint. + * config/nds32/nds32-intrinsic.c: Add more builtin functions. + * config/nds32/nds32-intrinsic.md: Likewise. + * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New. + (nds32_valid_smw_lwm_base_p): New. + (nds32_output_smw_single_word): New. + (nds32_output_lmw_single_word): New. + (nds32_expand_unaligned_load): New. + (nds32_expand_unaligned_store): New. + * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare. + (nds32_output_smw_single_word): Declare. + (nds32_output_lmw_single_word): Declare. + (nds32_expand_unaligned_load): Declare. + (nds32_expand_unaligned_store): Declare. + * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW, + NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW, + NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W, + NDS32_BUILTIN_UASTORE_DW. + * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New + predicate. + +2018-03-03 Monk Chiang + Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32-intrinsic.c + (nds32_expand_builtin_null_ftype_reg): Delete. + (nds32_expand_builtin_reg_ftype_imm): Ditto. + (nds32_expand_builtin_null_ftype_reg_imm): Ditto. + (nds32_read_argument): New. + (nds32_legitimize_target): Ditto. + (nds32_legitimize_argument): Ditto. + (nds32_check_constant_argument): Ditto. + (nds32_expand_unop_builtin): Ditto. + (nds32_expand_unopimm_builtin): Ditto. + (nds32_expand_binop_builtin): Ditto. + (nds32_builtin_decl_impl): Ditto. + (builtin_description): Ditto. + (nds32_expand_builtin_impl): Rewrite with new infrastructure. + (nds32_init_builtins_impl): Ditto. + * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define. + (nds32_builtin_decl): New. + * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT. + * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare. + +2018-03-02 Jeff Law + + * reorg.c (stop_search_p): Handle DEBUG_INSN. + (redundant_insn, fill_simple_delay_slots): Likewise. + (fill_slots_from_thread): Likewise. + * resource.c (mark_referenced_resources): Likewise. + (mark_set_resources, find_dead_or_set_registers): Likewise. + +2018-03-02 Jakub Jelinek + + * substring-locations.h (format_warning_va): Formatting fix for + ATTRIBUTE_GCC_DIAG. + (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second + argument. + (format_warning_n_va, format_warning_at_substring_n): New prototypes. + * substring-locations.c: Include intl.h. + (format_warning_va): Turned into small wrapper around + format_warning_n_va, renamed to ... + (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments, + rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID, + use ngettext. + (format_warning_at_substring_n): New function. + * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma. + (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of + format_warning_at_substring with just a shorter name instead of + const function pointer. + (fmtwarn_n): New function. + (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where + appropriate, get rid of all the fmtstr temporaries, move conditionals + with G_() wrapped string literals directly into fmtwarn arguments, + cast dir.len to (int), formatting fixes. + +2018-03-02 Thomas Schwinge + + * doc/invoke.texi: Remove "Cilk Plus" references. + +2018-03-02 Jakub Jelinek + Richard Biener + + PR ipa/84628 + * expr.c (expand_expr_real_1) : Don't emit diagnostics + for error or warning attributes if CALL_FROM_THUNK_P is set. + Formatting fixes. + +2018-03-02 Jakub Jelinek + + PR target/56540 + * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine + __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY. + + PR target/56540 + * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine + __SIZEOF_{FPREG,FLOAT{80,128}}__ macros. + + * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED + instead of -1U in last predictors element's probability member. + +2018-03-02 Eric Botcazou + + PR ipa/83983 + * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both + arguments if they are comparable. + +2018-03-02 Richard Sandiford + + PR tree-optimization/84634 + * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace + masks and masked_loop_p with a single loop_masks, making sure it's + null for bb vectorization. + +2018-03-02 Richard Sandiford + + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence) + (vect_analyze_data_ref_access): Use loop->safe_len rather than + loop->force_vectorize to check whether there is no alias. + +2018-03-02 Jakub Jelinek + + PR target/84614 + * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New + prototypes. + * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function + comments. + (next_real_nondebug_insn, prev_real_nondebug_insn): New functions. + * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn + instead of a loop around prev_real_insn. + * combine.c (move_deaths): Use prev_real_nondebug_insn instead of + prev_real_insn. + + PR inline-asm/84625 + * config/i386/i386.c (ix86_print_operand): Use conditional + output_operand_lossage instead of gcc_assert if CONST_VECTOR is not + zero vector. + +2018-03-02 Richard Biener + + PR tree-optimization/84427 + * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove. + (bitmap_set_subtract_values): Rewrite to handle multiple + exprs per value. + (clean): Likewise. + (prune_clobbered_mems): Likewise. + (phi_translate): Take edge instead of pred/phiblock. + (phi_translate_1): Likewise. + (phi_translate_set): Likewise. Insert all translated + exprs for a value into the set, keeping possibly multiple + expressions per value. + (compute_antic_aux): Adjust for phi_translate changes. + When intersecting union the expressions and prune those + not in the final value set, keeping possibly multiple + expressions per value. Do not use value-insertion + for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge + all expressions. Add verification that the value-sets + only shrink during iteration. + (compute_partial_antic_aux): Adjust for the phi_translate changes. + (do_pre_regular_insertion): Likewise. + (do_pre_partial_partial_insertion): Likewise. + +2018-03-02 Richard Biener + + PR target/82005 + * config/darwin.c (saved_debug_info_level): New static global. + (darwin_asm_lto_start): Disable debug info generation for LTO out. + (darwin_asm_lto_end): Restore debug info generation settings. + +2018-03-01 Martin Liska + + PR sanitizer/82484 + * sanopt.c (sanitize_rewrite_addressable_params): Do not handle + volatile arguments. + +2018-03-01 Richard Biener + + PR debug/84645 + * dwarf2out.c (gen_variable_die): Properly handle late VLA + type annotation with LTO when debug was disabled at compile-time. + +2018-03-01 Matthew Fortune + + * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect + XINT with INTVAL. + (mips_final_postscan_insn): Likewise. + +2018-03-01 Richard Sandiford + + PR rtl-optimization/84528 + * alias.c (init_alias_target): Add commentary. + (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM + a unique base value if the frame pointer is not eliminated + to the stack pointer. + +2018-03-01 Tom de Vries + + PR rtl-optimization/83327 + * lra-int.h (hard_regs_spilled_into): Declare. + * lra.c (hard_regs_spilled_into): Define. + (init_reg_info): Init hard_regs_spilled_into. + * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into. + * lra-lives.c (make_hard_regno_born, make_hard_regno_dead) + (process_bb_lives): Handle hard_regs_spilled_into. + (lra_create_live_ranges_1): Before doing liveness propagation, clear + regs in all_hard_regs_bitmap if set in hard_regs_spilled_into. + +2018-02-28 David Edelsohn + + * config.gcc (powerpc-ibm-aix7.1.*): New stanza. + (powerpc-ibm-aix[789]*): Default to AIX 7.2. + * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA. + * config/rs6000/aix72.h: New file. + +2018-02-28 Jakub Jelinek + + * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n + instead of warning_at with conditional singular and plural messages + where possible. + + PR target/52991 + * stor-layout.c (update_alignment_for_field): For + targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield + && !DECL_PACKED (field), do the alignment update, just use + only desired_align instead of MAX (type_align, desired_align) + as the alignment. + (place_field): Don't do known_align < desired_align handling + early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field + is non-NULL, instead do it after rli->prev_field handling and + only if not within a bitfield word. For DECL_PACKED (field) + use type_align of BITS_PER_UNIT. + +2018-02-28 Eric Botcazou + + * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove + superfluous parentheses and trailing spaces. + +2018-02-28 Richard Biener + + PR tree-optimization/84584 + * graphite-scop-detection.c (scop_detection::add_scop): Discard + SCoPs with fake exit edge. + +2018-02-28 Martin Liska + + PR testsuite/84597 + * timevar.c (timer::print): Fix format to properly print 100% + values. + +2018-02-28 Richard Biener + + PR middle-end/84607 + * genmatch.c (capture_info::walk_match): Do not mark + captured expressions without operands as expr_p given + they act more like predicates and should be subject to + "lost tail" side-effect preserving. + +2018-02-28 Alexandre Oliva + + PR rtl-optimization/81611 + * auto-inc-dec.c (attempt_change): Move dead note from + mem_insn if it's the next use of regno + (find_address): Take address use of reg holding + non-incremented value. Add parm to limit search to the named + reg only. + (merge_in_block): Attempt to use a mem insn that is the next + use of the original regno. + +2018-02-27 Martin Sebor + + PR c++/83871 + * doc/invoke.texi (-Wmissing-attributes): New option. + * print-tree.c (print_node): Handle DECL_UNINLINABLE. + +2018-02-27 Martin Sebor + + PR translation/84207 + * diagnostic-core.h (warning_n, error_n, inform_n): Change + n argument to unsigned HOST_WIDE_INT. + * diagnostic.c (warning_n, error_n, inform_n): Ditto. + (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX. + * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call. + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n. + +2018-02-27 Richard Biener + + PR tree-optimization/84512 + * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): + Do not use the estimate returned from record_stmt_cost for + the scalar iteration cost but sum properly using add_stmt_cost. + +2018-02-27 Richard Biener + + PR tree-optimization/84466 + * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): + Adjust last change to less strictly validate use operands. + +2018-02-27 Martin Liska + + PR gcov-profile/84548 + * gcov.c (process_file): Allow partial overlap and consider it + also as group functions. + (output_lines): Properly calculate range of lines for a group. + +2018-02-27 Martin Liska + + * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and + 'ggc' suffixes. Change first column width. + (timer::print): Fix formatting of the column. + +2018-02-27 Alexandre Oliva + + * tree-ssa-live.c (remove_unused_scope_block_p): Do not + preserve inline entry blocks for the sake of debug inline + entry point markers alone. + (remove_unused_locals): Suggest in comments a better place to + force the preservation of inline entry blocks that are + otherwise unused, but do not preserve them. + +2018-02-26 H.J. Lu + + * config/i386/i386.c (ix86_output_indirect_jmp): Update comments. + +2018-02-26 H.J. Lu + + PR target/84039 + * config/i386/constraints.md (Bs): Replace + ix86_indirect_branch_register with + TARGET_INDIRECT_BRANCH_REGISTER. + (Bw): Likewise. + * config/i386/i386.md (indirect_jump): Likewise. + (tablejump): Likewise. + (*sibcall_memory): Likewise. + (*sibcall_value_memory): Likewise. + Peepholes of indirect call and jump via memory: Likewise. + (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER. + (*sibcall_value_GOT_32): Likewise. + * config/i386/predicates.md (indirect_branch_operand): Likewise. + (GOT_memory_operand): Likewise. + (call_insn_operand): Likewise. + (sibcall_insn_operand): Likewise. + (GOT32_symbol_operand): Likewise. + * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New. + +2018-02-26 Eric Botcazou + + PR rtl-optimization/83496 + * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from + booleans to RTXes. Call fix_reg_dead_note on every non-null element. + (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a + redundant insn, if any. + (relax_delay_slots): Likewise. + (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN. + +2018-02-26 Richard Sandiford + + PR tree-optimization/83965 + * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume + that grouped statements are part of a reduction chain. Return + true if the statement is not marked as a reduction itself but + is part of a group. + (vect_recog_dot_prod_pattern): Don't check whether the statement + is part of a group here. + (vect_recog_sad_pattern): Likewise. + (vect_recog_widen_sum_pattern): Likewise. + +2018-02-26 Eric Botcazou + + PR debug/84545 + * final.c (rest_of_clean_state): Also look for calls inside sequences. + +2018-02-26 H.J. Lu + + PR target/84530 + * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove + the bool argument. + (ix86_output_indirect_function_return): New prototype. + (ix86_split_simple_return_pop_internal): Likewise. + * config/i386/i386.c (indirect_return_via_cx): New. + (indirect_return_via_cx_bnd): Likewise. + (indirect_thunk_name): Handle return va CX_REG. + (output_indirect_thunk_function): Create alias for + __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd. + (ix86_output_indirect_jmp): Remove the bool argument. + (ix86_output_indirect_function_return): New function. + (ix86_split_simple_return_pop_internal): Likewise. + * config/i386/i386.md (*indirect_jump): Don't pass false + to ix86_output_indirect_jmp. + (*tablejump_1): Likewise. + (simple_return_pop_internal): Change it to define_insn_and_split. + Call ix86_split_simple_return_pop_internal to split it for + -mfunction-return=. + (simple_return_indirect_internal): Call + ix86_output_indirect_function_return instead of + ix86_output_indirect_jmp. + +2018-02-26 Jakub Jelinek + + PR bootstrap/84405 + * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use + memset and value initialization afterwards. + +2018-02-26 Christophe Lyon + + * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS. + +2018-02-26 Ramana Radhakrishnan + + PR target/84521 + * common/config/aarch64/aarch64-common.c + (aarch_option_optimization_table[]): Switch + off fomit-frame-pointer + +2018-02-26 Kito Cheng + Chung-Ju Wu + + * config/nds32/nds32-multiple.md (load_multiple): Disallow + volatile memory. + (store_multiple): Ditto. + +2018-02-26 Kito Cheng + + * config.gcc: Add --with-cpu support for nds32 target. + * config/nds32/nds32-opts.h (nds32_cpu_type): New. + * config/nds32/nds32.opt: Add -mcpu= option. + +2018-02-25 Segher Boessenkool + + * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no, + isel=yes): Warn for these deprecated options. + +2018-02-23 David Edelsohn + + * config/rs6000/aix71.h (TARGET_DEFAULT): Change to + ISA_2_5_MASKS_EMBEDDED. + +2018-02-23 Jakub Jelinek + + * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and + p->max as pointers rather than using iterative_hash_expr. + +2018-02-23 Carl Love + + * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2 + macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to + BU_P8V_OVERLOAD_2. + * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to + P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to + P8V_BUILTIN_VEC_VUNSIGNED2. + +2018-02-22 Vladimir Makarov + + PR target/81572 + * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros. + * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use + LRA_UNKNOWN_ALT. + * lra-constraints.c (curr_insn_transform): Set up + LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use + LRA_UNKNOWN_ALT. + (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT. + * lra-eliminations.c (spill_pseudos): Ditto. + (process_insn_for_elimination): Ditto. + * lra-lives.c (reg_early_clobber_p): Use the new macros. + * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and + LRA_NON_CLOBBERED_ALT. + +2018-02-22 Martin Sebor + + PR tree-optimization/84480 + * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings + to maybe_diag_stxncpy_trunc. Call it. + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings + from gimple_fold_builtin_strcpy. Print inlining stack. + (handle_builtin_stxncpy): Print inlining stack. + * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare. + +2018-02-22 H.J. Lu + + PR target/84176 + * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an + error when -mindirect-branch=thunk-extern, -fcf-protection=branch + and -fcheck-pointer-bounds are used together. + (indirect_thunk_prefix): New enum. + (indirect_thunk_need_prefix): New function. + (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use + "_nt" instead of "_bnd" for NOTRACK prefix. + (output_indirect_thunk): Replace need_bnd_p with need_prefix. + (output_indirect_thunk_function): Likewise. + (): Likewise. + (ix86_code_end): Update output_indirect_thunk_function calls. + (ix86_output_indirect_branch_via_reg): Replace + ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix. + (ix86_output_indirect_branch_via_push): Likewise. + (ix86_output_function_return): Likewise. + * doc/invoke.texi: Document -mindirect-branch=thunk-extern is + incompatible with -fcf-protection=branch and + -fcheck-pointer-bounds. + +2018-02-22 Steve Ellcey + + PR target/83335 + * config/aarch64/aarch64.c (aarch64_print_address_internal): + Change gcc_assert call to output_operand_lossage. + +2018-02-22 Steve Ellcey + + * doc/extend.texi (__builtin_extend_pointer): Document builtin. + +2018-02-22 DJ Delorie + Sebastian Perta + Oleg Endo + + * config/rx/rx.c (rx_rtx_costs): New function. + (TARGET_RTX_COSTS): Override to use rx_rtx_costs. + +2018-02-22 Thomas Preud'homme + + * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs. + +2018-02-22 Martin Liska + + PR driver/83193 + * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option): + Add "native" as a possible value. + +2018-02-22 Martin Liska + + PR driver/83193 + * config/i386/i386.c (ix86_option_override_internal): + Add "native" as a possible value for -march and -mtune. + +2018-02-22 Jakub Jelinek + + PR target/84502 + * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag + to all type variants. + + PR tree-optimization/84503 + * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute + width as info->bitpos + info->bitsize - start. + (merged_store_group::merge_overlapping): Simplify width computation. + (check_no_overlap): New function. + (imm_store_chain_info::try_coalesce_bswap): Compute expected + start + width and last_order of the group, fail if check_no_overlap + fails. + (imm_store_chain_info::coalesce_immediate_stores): Don't merge info + to group if check_no_overlap fails. + +2018-02-21 Segher Boessenkool + + * config/rs6000/altivec.md: Delete contraint arguments to + define_expand, define_split, and define_peephole2, and in + define_insn_and_split if always unused. + * config/rs6000/darwin.md: Ditto. + * config/rs6000/dfp.md: Ditto. + * config/rs6000/rs6000.md: Ditto. + * config/rs6000/sync.md: Ditto. + * config/rs6000/vector.md: Ditto. + * config/rs6000/vsx.md: Ditto. + +2018-02-21 Segher Boessenkool + + * config/rs6000/altivec.md: Write output control strings as braced + blocks instead of double-quoted strings. + * config/rs6000/darwin.md: Ditto. + * config/rs6000/rs6000.md: Ditto. + * config/rs6000/vector.md: Ditto. + * config/rs6000/vsx.md: Ditto. + +2018-02-21 Jason Merrill + + PR c++/84314 - ICE with templates and fastcall attribute. + * attribs.c (build_type_attribute_qual_variant): Remove assert. + +2018-02-21 Jan Hubicka + + * ipa-cp.c (determine_versionability): Fix comment typos. + +2018-02-21 Jan Hubicka + + PR c/84229 + * ipa-cp.c (determine_versionability): Do not version functions caling + va_arg_pack. + +2018-02-21 Martin Liska + + PR driver/83193 + * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): + Add "native" as a possible value. + * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define + the macro when native cpu detection is available. + +2018-02-21 Martin Liska + + PR driver/83193 + * common/config/arm/arm-common.c (arm_print_hint_for_arch_option): + Add "native" as a possible value. + * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro + when native cpu detection is available. + +2018-02-21 Jakub Jelinek + Martin Sebor + + PR tree-optimization/84478 + * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to + false. + * gimple-fold.c (get_range_strlen): Make minlen const and assume it + can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR + support which is conservatively correct, for 2 only stay conservative + for maxlen. Formatting and comment capitalization fixes. Add STRICT + argument to the 2 argument get_range_strlen, adjust 6 arg + get_range_strlen caller and clear minmaxlen[0] and [1] if it returned + false. + (get_maxval_strlen): Adjust 6 arg get_range_strlen caller. + (gimple_fold_builtin_strlen): Pass true as last argument to + get_range_strlen. + +2018-02-20 Martin Sebor + + PR middle-end/84095 + * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New. + (builtin_memref::set_base_and_offset): Same. Handle inner references. + (builtin_memref::builtin_memref): Factor out parts into + set_base_and_offset and call it. + +2018-02-20 Richard Sandiford + + PR middle-end/84406 + * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode + is a scalar_int_mode, assert that to_mode is a scalar_int_mode with + greater precision. If to_mode is a MODE_PARTIAL_INT, stop the + search at the associated MODE_INT. + +2018-02-20 Jeff Law + + PR middle-end/82123 + PR tree-optimization/81592 + PR middle-end/79257 + * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer + for range data rather than using global data. + * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for + range data rather than using global data. + * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter + pass it to children as needed. + (struct directive::fmtresult): Similarly. + (struct directive::set_width): Similarly. + (struct directive::set_precision): Similarly. + (format_integer, format_directive, parse_directive): Similarly. + (format_none): Accept unnamed vr_values parameter. + (format_percent, format_floating, format_character): Similarly. + (format_string, format_plain): Similarly. + * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query + the EVRP range analyzer for range data rather than using global data. + * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and + gimple-ssa-evrp-analyze.h + (class sprintf_dom_walker): Add after_dom_children member function. + Add evrp_range_analyzer member. + (sprintf_dom_walker::before_dom_children): Call into the EVRP + range analyzer as needed. + (sprintf_dom_walker::after_dom_children): New member function. + * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing + if not optimizing. + (evrp_range_analyzer::record_ranges_from_stmt): Likewise. + (evrp_range_analyzer::pop_to_marker): Likewise. + +2018-02-20 Richard Sandiford + + PR tree-optimization/84419 + * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF + with the required type if its current type is compatible but + different. + +2018-02-20 Jakub Jelinek + + PR middle-end/82004 + * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until + after vectorization. + +2018-02-20 Martin Liska + + PR driver/83193 + * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print + possible values if we don't have a hint. + +2018-02-20 Martin Liska + + PR c/84310 + PR target/79747 + * final.c (shorten_branches): Build align_tab array with one + more element. + * opts.c (finish_options): Add alignment option limit check. + (MAX_CODE_ALIGN): Likewise. + (MAX_CODE_ALIGN_VALUE): Likewise. + * doc/invoke.texi: Document maximum allowed option value for + all -falign-* options. + +2018-02-19 Jakub Jelinek + + PR target/84146 + * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note. + * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove. + * var-tracking.c (emit_note_insn_var_location): Remove all references + to NOTE_INSN_CALL_ARG_LOCATION. + (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on + the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note. + Use copy_rtx_if_shared. + * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of + NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note. + (dwarf2out_var_location): Remove handling of + NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note + on call_insn. + * final.c (final_scan_insn): Remove all references to + NOTE_INSN_CALL_ARG_LOCATION. + (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes + before dumping final insns. + * except.c (emit_note_eh_region_end): Remove all references to + NOTE_INSN_CALL_ARG_LOCATION. + * config/alpha/alpha.c (alpha_pad_function_end): Likewise. + * config/c6x/c6x.c (c6x_gen_bundles): Likewise. + * config/arc/arc.c (hwloop_optimize): Likewise. + * config/arm/arm.c (create_fix_barrier): Likewise. + * config/s390/s390.c (s390_chunkify_start): Likewise. + * config/sh/sh.c (find_barrier): Likewise. + * config/i386/i386.c (rest_of_insert_endbranch, + ix86_seh_fixup_eh_fallthru): Likewise. + * config/xtensa/xtensa.c (hwloop_optimize): Likewise. + * config/iq2000/iq2000.c (final_prescan_insn): Likewise. + * config/frv/frv.c (frv_function_prologue): Likewise. + * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION + reg note. + (note_outside_basic_block_p): Remove all references to + NOTE_INSN_CALL_ARG_LOCATION. + * gengtype.c (adjust_field_rtx_def): Likewise. + * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn): + Likewise. + * jump.c (cleanup_barriers, delete_related_insns): Likewise. + * cfgrtl.c (force_nonfallthru_and_redirect): Likewise. + + PR c++/84444 + * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t) + is ADDR_EXPR. + + PR tree-optimization/84452 + * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call + expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen + is NULL. + +2018-02-19 Martin Liska + + PR sanitizer/82183 + * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0. + +2018-02-19 Martin Liska + Richard Sandiford + + PR tree-optimization/82491 + * gimple-fold.c (get_base_constructor): Make earlier bail out + to prevent ubsan. + +2018-02-19 Carl Love + + * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from + BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to + BU_P8V_OVERLOAD_1. + * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to + P8V_BUILTIN_VEC_NEG. + +2018-02-19 Sebastian Perta + + * config/rl78/rl78.md (movdf): New define expand. + +2018-02-19 Martin Liska + + PR other/80589 + * doc/invoke.texi: Fix typo. + * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise. + +2018-02-18 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't + handle rs6000_single_float and rs6000_double_float specially for + e500 family CPUs. + +2018-02-16 Jeff Law + + * config/rx/rx.c (add_pop_cfi_notes): New function.; + (pop_regs): Use it. + +2018-02-16 Jakub Jelinek + + PR ipa/84425 + * ipa-inline.c (inline_small_functions): Fix a typo. + +2018-02-16 Nathan Sidwell + + * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'. + +2018-02-16 Carl Love + + * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition. + Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and + from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2. + * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2 + expansion to P8V_BUILTIN_VEC_FLOAT2. + +2018-02-16 Vladimir Makarov + + PR rtl-optimization/70023 + * lra-constraints.c (inherit_in_ebb): Take hard reg mode of + src_regno into account. + +2018-02-16 Carl Love + + * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b. + * config/rs6000/rs6000-builtin.def: Remove macro expansion for + VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B. + * config/rs6000/rs6000.c: Remove case statements for + P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B, + P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, + and P9V_BUILTIN_VEC_VINSERT4B. + * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for + P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B. + * config/rs6000/vsx.md: + * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for + vec_insert4b. + +2018-02-16 Carl Love + + * config/rs6000/altivec.h: Add builtin names vec_extract4b + vec_insert4b. + * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B + definitions. + * config/rs6000/rs6000-c.c: Add the definitions for + P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B. + * config/rs6000/rs6000.c (altivec_expand_builtin): Add + P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements. + * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand + definition for insert4b and define insn *insert3b_internal. + * doc/extend.texi: Add documentation for vec_extract4b. + +2018-02-16 Nathan Sidwell + + * doc/extend.texi (Backwards Compatibility): Mention friend + injection. Note for-scope is deprecated. + * doc/invoke.texi (-ffriend-injection): Deprecate. + +2018-02-16 Segher Boessenkool + + * combine.c (try_combine): When adjusting LOG_LINKS for the destination + that moved to I2, also allow destinations that are a paradoxical + subreg (instead of a normal reg). + +2018-02-16 Oleg Endo + + PR target/83831 + * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand + to QImode. + +2018-02-16 Richard Biener + + PR tree-optimization/84037 + PR tree-optimization/84016 + PR target/82862 + * config/i386/i386.c (ix86_builtin_vectorization_cost): + Adjust vec_construct for the fact we need additional higher latency + 128bit inserts for AVX256 and AVX512 vector builds. + (ix86_add_stmt_cost): Scale vector construction cost for + elementwise loads. + +2018-02-16 Richard Biener + + PR tree-optimization/84417 + * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain + the MEM_REF offset when conversion to BIT_FIELD_REF is desired. + (non_rewritable_lvalue_p): Likewise, use poly-ints. + +2018-02-16 Martin Liska + + PR sanitizer/84307 + * internal-fn.def (ASAN_CHECK): Set proper flags. + (ASAN_MARK): Likewise. + +2018-02-16 Julia Koval + + * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB + from PTA_CANNONLAKE. + +2018-02-16 Jakub Jelinek + + PR target/84272 + * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest): + Use ++iter rather than iter++ for std::list iterators. + (func_fma_steering::dfs): Likewise. Don't delete nodes right away, + defer deleting them until all nodes in the forest are processed. Do + free even leaf nodes. Change to_process into auto_vec. + + PR bootstrap/84405 + * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3. + * vec.h (vec_default_construct): Use memset instead of placement new + if BROKEN_VALUE_INITIALIZATION is defined. + * hash-table.h (hash_table::empty_slow): Use + memset instead of value initialization if BROKEN_VALUE_INITIALIZATION + is defined. + + PR rtl-optimization/83723 + * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument. + * lra.c (lra_substitute_pseudo): Likewise. If true, use + gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to + recursive calls. + (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo + callers. + * lra-constraints.c (inherit_reload_reg, split_reg): Likewise. + +2018-02-16 Eric Botcazou + + PR rtl-optimization/81443 + * rtlanal.c (num_sign_bit_copies1) : Do not propagate results + from inner REGs to paradoxical SUBREGs. + +2018-02-16 Richard Biener + + PR tree-optimization/84399 + * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): + For operands we can analyze at their definition make sure we can + analyze them at each use as well. + +2018-02-16 Richard Biener + + PR tree-optimization/84190 + * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch + volatile accesses if the decl isn't volatile. + +2018-02-15 Jason Merrill + + PR c++/84314 - ICE with templates and fastcall attribute. + * attribs.c (build_type_attribute_qual_variant): Don't clobber + TYPE_CANONICAL on an existing type. + +2018-02-15 Jakub Jelinek + + PR tree-optimization/84383 + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at + dstoff nor call operand_equal_p if dstbase is NULL. + + PR tree-optimization/84334 + * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is + also a CONSTANT_CLASS_P, punt. + +2018-02-14 Jim Wilson + + * config/riscv/riscv.c (riscv_first_stack_step): Move locals after + first SMALL_OPERAND check. New local min_second_step. Move assert + to where locals are set. Add TARGET_RVC support. + * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New. + +2018-02-14 Indu Bhagat + + * doc/invoke.texi: Correct -Wformat-overflow code sample. + +2018-02-14 Martin Sebor + + PR tree-optimization/83698 + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For + arrays constrain the offset range to their bounds. + (builtin_access::strcat_overlap): Adjust the bounds of overlap offset. + (builtin_access::overlap): Avoid setting the size of overlap if it's + already been set. + (maybe_diag_overlap): Also consider arrays when deciding what values + of offsets to include in diagnostics. + +2018-02-14 Martin Sebor + + PR c/84108 + * attribs.c (diag_attr_exclusions): Consider the exclusion(s) + that correspond to the kind of a declaration. + +2018-02-14 John David Anglin + + PR target/83984 + * config/pa/pa.md: Load address of PIC label using the linkage table + if the label is nonlocal. + +2018-02-14 Kelvin Nilsen + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue + warning message if user requests -maltivec=be. + * doc/invoke.texi: Document deprecation of -maltivec=be. + +2018-02-14 Will Schmidt + + PR target/84220 + * config/rs6000/rs6000-c.c: Update definitions for + ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW, + VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins. + +2018-02-14 Igor Tsimbalist + + PR target/84239 + * config/i386/cetintrin.h: Remove _rdssp[d|q] and + add _get_ssp intrinsics. Remove argument from + __builtin_ia32_rdssp[d|q]. + * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID. + * config/i386/i386-builtin.def: Remove argument from + __builtin_ia32_rdssp[d|q]. + * config/i386/i386.c: Use UINT_FTYPE_VOID. Use + ix86_expand_special_args_builtin for _rdssp[d|q]. + * config/i386/i386.md: Remove argument from rdssp[si|di] insn. + Clear register before usage. + * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q]. + Add documentation for new _get_ssp and _inc_ssp intrinsics. + +2018-02-14 Richard Sandiford + + PR tree-optimization/84357 + * tree-data-ref.c (object_address_invariant_in_loop_p): Check + operand 1 of an ARRAY_REF too. + +2018-02-14 Oleg Endo + + PR target/83831 + * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn, + rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New + declarations. + (set_of_reg): New struct. + (rx_find_set_of_reg, rx_find_use_of_reg): New functions. + * config/rx/rx.c (rx_reg_dead_or_unused_after_insn, + rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New + functions. + * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split. + Split into bitclr, bitset, bitinvert patterns if appropriate. + (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and + use rx_fuse_in_memory_bitop. + (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert + to named insn, correct maximum insn length. + +2018-02-14 Jozef Lawrynowicz + + PR target/79242 + * machmode.def: Define a complex mode for PARTIAL_INT. + * genmodes.c (complex_class): Return MODE_COMPLEX_INT for + MODE_PARTIAL_INT. + * doc/rtl.texi: Document CSPImode. + * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode + handling. + (msp430_hard_regno_nregs_with_padding): Likewise. + +2018-02-13 Peter Bergner + + PR target/84279 + * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses. + +2018-02-13 Segher Boessenkool + + PR rtl-optimization/84169 + * combine.c (try_combine): New variable split_i2i3. Set it to true if + we generated a parallel as new i3 and we split that to new i2 and i3 + instructions. Handle split_i2i3 similar to swap_i2i3: scan the + LOG_LINKs of i3 to see which of those need to link to i2 now. Link + those to i2, not i1. Partially rewrite this scan code. + +2018-02-13 Jakub Jelinek + + PR c/82210 + * stor-layout.c (place_field): For variable length fields, adjust + offset_align afterwards not just based on the field's alignment, + but also on the size. + + PR middle-end/84309 + * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead + of exps and logs in the use_exp2 case. + +2018-02-13 Jeff Law + + * config/rl/rl78.c (rl78_attribute_table): Fix terminator and + entry for "vector". + + * config/rl78/rl78.c (rl78_handle_func_attribute): Mark + ARGS as unused. + +2018-02-13 Alexandre Oliva + + PR debug/84342 + PR debug/84319 + * common.opt (gas-loc-support, gas-locview-support): New. + (ginline-points, ginternal-reset-location-views): New. + * doc/invoke.texi: Document them. Use @itemx where intended. + (gvariable-location-views): Adjust. + * target.def (reset_location_view): New. + * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New. + (TARGET_RESET_LOCATION_VIEW): New. + * doc/tm.texi: Rebuilt. + * dwarf2out.c (dwarf2out_default_as_loc_support): New. + (dwarf2out_default_as_locview_support): New. + (output_asm_line_debug_info): Use option variables. + (dwarf2out_maybe_output_loclist_view_pair): Likewise. + (output_loc_list): Likewise. + (add_high_low_attributes): Check option variables. + Don't output entry view attribute in strict mode. + (gen_inlined_subroutine_die): Check option variables. + (dwarf2out_inline_entry): Likewise. + (init_sections_and_labels): Likewise. + (dwarf2out_early_finish): Likewise. + (maybe_reset_location_view): New, from... + (dwarf2out_var_location): ... here. Call it. + * debug.h (dwarf2out_default_as_loc_support): Declare. + (dwarf2out_default_as_locview_support): Declare. + * hooks.c (hook_int_rtx_insn_0): New. + * hooks.h (hook_int_rtx_insn_0): Declare. + * toplev.c (process_options): Take -gas-loc-support and + -gas-locview-support from dwarf2out. Enable + -gvariable-location-views by default only with locview + assembler support. Enable -ginternal-reset-location-views by + default only if the target defines the corresponding hook. + Enable -ginline-points by default if location views are + enabled; force it disabled if statement frontiers are + disabled. + * tree-inline.c (expand_call_inline): Check option variables. + * tree-ssa-live.c (remove_unused_scope_block_p): Likewise. + +2018-02-13 Richard Sandiford + + PR tree-optimization/84321 + * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE + handling. Also check whether the anti-range contains any values + that satisfy the mask; switch to a VR_RANGE if not. + +2018-02-13 Paolo Bonzini + + PR sanitizer/84340 + * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec. + +2018-02-13 Martin Jambor + + PR c++/83990 + * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location + of call statements, also set location of a load to a temporary. + +2018-02-13 Sebastian Perta + + * config/rl78/rl78.c (add_vector_labels): New function. + * config/rl78/rl78.c (rl78_handle_vector_attribute): New function. + * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels. + * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert + which checks that no arguments are passed. + * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute. + * doc/extend.texi: Documentation for the new attribute. + +2018-02-13 Andreas Schwab + + * config/riscv/linux.h (CPP_SPEC): Define. + +2018-02-13 Jakub Jelinek + + PR target/84335 + * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass + OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of + OPTION_MASK_ISA_AES as first argument to def_builtin_const + for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2 + instead of OPTION_MASK_ISA_PCLMUL as first argument to + def_builtin_const for __builtin_ia32_pclmulqdq128 builtin. + * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it + temporarily for AES and PCLMUL builtins. + + PR tree-optimization/84339 + * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling + ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF. + Formatting fixes. + + PR middle-end/84309 + * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into + exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available. + * generic-match-head.c (canonicalize_math_after_vectorization_p): New + inline function. + * gimple-match-head.c (canonicalize_math_after_vectorization_p): New + inline function. + * omp-simd-clone.h: New file. + * omp-simd-clone.c: Include omp-simd-clone.h. + (expand_simd_clones): No longer static. + * tree-vect-patterns.c: Include fold-const-call.h, attribs.h, + cgraph.h and omp-simd-clone.h. + (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x). + (vect_recog_widen_shift_pattern): Formatting fix. + (vect_pattern_recog_1): Don't check optab for calls. + + PR target/84336 + * config/i386/sse.md (_vpermi2var3_mask): Force + operands[2] into a REG before using gen_lowpart on it. + +2018-02-12 Jeff Law + + PR target/83760 + * config/sh/sh.c (find_barrier): Consider a sibling call + a barrier as well. + + * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when + successfully back substituting a reg. + +2018-02-12 Richard Biener + + PR tree-optimization/84037 + * tree-vect-slp.c (vect_analyze_slp_cost): Add visited + parameter, move visited init to caller. + (vect_slp_analyze_operations): Separate cost from validity + check, initialize visited once for all instances. + (vect_schedule_slp): Analyze map to CSE vectorized nodes once + for all instances. + * tree-vect-stmts.c (vect_model_simple_cost): Make early + out an assert. + (vect_model_promotion_demotion_cost): Likewise. + (vectorizable_bswap): Guard cost modeling with !slp_node + instead of !PURE_SLP_STMT to avoid double-counting on hybrid + SLP stmts. + (vectorizable_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison): Likewise. + +2018-02-12 Paolo Bonzini + + PR sanitizer/84307 + * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value. + (ASAN_MARK): Fix fnspec to account for return value, change pointer + argument from 'R' to 'W' so that the pointed-to datum is clobbered. + +2018-02-08 Jan Hubicka + + PR middle-end/83665 + * params.def (inline-min-speedup): Increase from 8 to 15. + (max-inline-insns-auto): Decrease from 40 to 30. + * ipa-split.c (consider_split): Add some buffer for function to + be considered inlining candidate. + * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate + default values. + +2018-02-12 Richard Biener + + PR tree-optimization/84037 + * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the + matched stmts if we cannot swap the non-matched ones. + +2018-02-12 Olga Makhotina + + * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd, + _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss, + _mm_maskz_scalef_round_ss): New intrinsics. + (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix. + * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round, + __builtin_ia32_scalefss_round): Remove. + (__builtin_ia32_scalefsd_mask_round, + __builtin_ia32_scalefss_mask_round): New intrinsics. + * config/i386/sse.md (vmscalef): Renamed to ... + (vmscalef): ... this. + ((match_operand:VF_128 2 "" + "")): Changed to ... + ((match_operand:VF_128 2 "" + "")): ... this. + ("vscalef\t{%2, %1, %0| + %0, %1, %2}"): Changed to ... + ("vscalef\t{%2, %1, + %0|%0, %1, + %2}"): ... this. + * config/i386/subst.md (round_scalar_nimm_predicate): New. + +2018-02-12 Olga Makhotina + + * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd) + (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss) + (_mm_maskz_sqrt_round_ss): New intrinsics. + (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove. + (__builtin_ia32_sqrtsd_mask_round) + (__builtin_ia32_sqrtss_mask_round): New builtins. + * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round) + (__builtin_ia32_sqrtss_round): Remove. + (__builtin_ia32_sqrtsd_mask_round) + (__builtin_ia32_sqrtss_mask_round): New builtins. + * config/i386/sse.md (vmsqrt2): Renamed to ... + (vmsqrt2): ... this. + ((match_operand:VF_128 1 "vector_operand" + "xBm,")): Changed to ... + ((match_operand:VF_128 1 "vector_operand" + "xBm,")): ... this. + (vsqrt\t{%1, %2, %0| + %0, %2, %1}): Changed to ... + (vsqrt\t{%1, %2, + %0|%0, %2, + %1}): ... this. + ((set_attr "prefix" "")): Changed to ... + ((set_attr "prefix" "")): ... this. + +2018-02-11 Steven Munroe + + PR target/84266 + * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]): + Cast vec_cmpeq result to correct type. + * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]): + Cast vec_cmpgt result to correct type. + +2018-02-11 Alexandre Oliva + + * final.c (final_scan_insn_1): Renamed from... + (final_scan_insn): ... this. New wrapper, to recover + seen from the outermost call in recursive ones. + * config/sparc/sparc.c (output_return): Drop seen from call. + (output_sibcall): Likewise. + * config/visium/visium.c (output_branch): Likewise. + +2018-02-10 John David Anglin + + * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as + function label. + +2018-02-10 Alan Modra + + PR target/84300 + * config/rs6000/rs6000.md (split_stack_return): Remove (use ..). + Specify LR as an input. + +2018-02-10 Jakub Jelinek + + PR sanitizer/83987 + * omp-low.c (maybe_remove_omp_member_access_dummy_vars, + remove_member_access_dummy_vars): New functions. + (lower_omp_for, lower_omp_taskreg, lower_omp_target, + lower_omp_1, execute_lower_omp): Use them. + + PR rtl-optimization/84308 + * shrink-wrap.c (spread_components): Release todo vector. + +2018-02-09 Vladimir Makarov + + PR rtl-optimization/57193 + * ira-color.c (struct allocno_color_data): Add member + conflict_allocno_hard_prefs. + (update_conflict_allocno_hard_prefs): New. + (bucket_allocno_compare_func): Add a preference based on + conflict_allocno_hard_prefs. + (push_allocno_to_stack): Update conflict_allocno_hard_prefs. + (color_allocnos): Remove a dead code. Initiate + conflict_allocno_hard_prefs. Call update_costs_from_prefs. + +2018-02-09 Jakub Jelinek + + PR target/84226 + * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand + constraint from =wa to wa. Avoid a subreg on the output operand, + instead use a pseudo and subreg it in a move. + (p9_xxbrd_): Changed to ... + (p9_xxbrd_v2di): ... this insn, without VSX_D iterator. + (p9_xxbrd_v2df): New expander. + (p9_xxbrw_): Changed to ... + (p9_xxbrw_v4si): ... this insn, without VSX_W iterator. + (p9_xxbrw_v4sf): New expander. + +2018-02-09 Sebastian Perta + + * config/rx/rx.md (movsicc): Update expander to be matched by GCC. + +2018-02-09 Peter Bergner + + PR target/83926 + * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit + multiply in 32-bit mode. + (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode. + (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit + mode. + +2018-02-09 Sebastian Perta + + * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint + to allow or block "symbol_ref" depending on the value of TARGET_JSR. + * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF. + * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF. + +2018-02-09 Pierre-Marie de Rodat + + PR lto/84213 + * dwarf2out.c (is_trivial_indirect_ref): New function. + (dwarf2out_late_global_decl): Do not generate a location + attribute for variables that have a non-trivial DECL_VALUE_EXPR + and that are not defined in the current unit. + +2018-02-09 Eric Botcazou + + * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison + instead of a libcall for UNORDERED. + +2018-02-09 Tamar Christina + + PR target/82641 + * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX, + __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP. + +2018-02-09 Andreas Krebbel + + PR target/PR84295 + * config/s390/s390.c (s390_set_current_function): Invoke + s390_indirect_branch_settings also if fndecl didn't change. + +2018-02-09 Alexandre Oliva + + * config/rs6000/rs6000.md (blockage): Set length to zero. + +2018-02-09 Eric Botcazou + + * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion. + +2018-02-09 Jakub Jelinek + + PR sanitizer/84285 + * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS, + STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like + -static-lib*san. + + PR debug/84252 + * var-tracking.c (vt_add_function_parameter): Punt for non-onepart + PARALLEL incoming that failed vt_get_decl_and_offset check. + + PR middle-end/84237 + * output.h (bss_initializer_p): Add NAMED argument, defaulted to false. + * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore + TREE_READONLY bit. + (get_variable_section): For decls in named .bss* sections pass true as + second argument to bss_initializer_p. + +2018-02-09 Marek Polacek + Jakub Jelinek + + PR c++/83659 + * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro. + Formatting fixes. Verify first that tree_fits_poly_int64_p (op01). + Sync some changes from cxx_fold_indirect_ref. + +2018-02-09 Alexandre Oliva + + * cfgexpand.c (expand_gimple_basic_block): Handle inline entry + markers. + * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook. + (BLOCK_INLINE_ENTRY_LABEL): New. + (dwarf2out_var_location): Disregard inline entry markers. + (inline_entry_data): New struct. + (inline_entry_data_hasher): New hashtable type. + (inline_entry_data_hasher::hash): New. + (inline_entry_data_hasher::equal): New. + (inline_entry_data_table): New variable. + (add_high_low_attributes): Add DW_AT_entry_pc and + DW_AT_GNU_entry_view attributes if a pending entry is found + in inline_entry_data_table. Add old entry_pc attribute only + if debug nonbinding markers are disabled. + (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding + markers are enabled. + (block_within_block_p, dwarf2out_inline_entry): New. + (dwarf2out_finish): Check that no entries remained in + inline_entry_data_table. + * final.c (reemit_insn_block_notes): Handle inline entry notes. + (final_scan_insn, notice_source_line): Likewise. + (rest_of_clean_state): Skip inline entry markers. + * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry + markers. + * gimple.c (gimple_build_debug_inline_entry): New. + * gimple.h (enum gimple_debug_subcode): Add + GIMPLE_DEBUG_INLINE_ENTRY. + (gimple_build_debug_inline_entry): Declare. + (gimple_debug_inline_entry_p): New. + (gimple_debug_nonbind_marker_p): Adjust. + * insn-notes.def (INLINE_ENTRY): New. + * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle + inline entry marker notes. + (print_insn): Likewise. + * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support. + (INSN_DEBUG_MARKER_KIND): Likewise. + (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New. + * tree-inline.c (expand_call_inline): Build and insert + debug_inline_entry stmt. + * tree-ssa-live.c (remove_unused_scope_block_p): Preserve + inline entry blocks early, if nonbind markers are enabled. + (dump_scope_block): Dump fragment info. + * var-tracking.c (reemit_marker_as_note): Handle inline entry note. + * doc/gimple.texi (gimple_debug_inline_entry_p): New. + (gimple_build_debug_inline_entry): New. + * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): + Enable/disable inline entry points too. + * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New. + (DEBUG_INSN): Describe inline entry markers. + + * common.opt (gvariable-location-views): New. + (gvariable-location-views=incompat5): New. + * config.in: Rebuilt. + * configure: Rebuilt. + * configure.ac: Test assembler for view support. + * dwarf2asm.c (dw2_asm_output_symname_uleb128): New. + * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare. + * dwarf2out.c (var_loc_view): New typedef. + (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend. + (dwarf2out_locviews_in_attribute): New. + (dwarf2out_locviews_in_loclist): New. + (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists. + (enum dw_line_info_opcode): Add LI_adv_address. + (struct dw_line_info_table): Add view. + (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros. + (DWARF2_ASM_VIEW_DEBUG_INFO): Define default. + (zero_view_p): New variable. + (ZERO_VIEW_P): New macro. + (output_asm_line_debug_info): New. + (struct var_loc_node): Add view. + (add_AT_view_list, AT_loc_list): New. + (add_var_loc_to_decl): Add view param. Test it against last. + (new_loc_list): Add view params. Record them. + (AT_loc_list_ptr): Handle loc and view lists. + (view_list_to_loc_list_val_node): New. + (print_dw_val): Handle dw_val_class_view_list. + (size_of_die): Likewise. + (value_format): Likewise. + (loc_list_has_views): New. + (gen_llsym): Set vl_symbol too. + (maybe_gen_llsym, skip_loc_list_entry): New. + (dwarf2out_maybe_output_loclist_view_pair): New. + (output_loc_list): Output view list or entries too. + (output_view_list_offset): New. + (output_die): Handle dw_val_class_view_list. + (output_dwarf_version): New. + (output_compilation_unit_header): Use it. + (output_skeleton_debug_sections): Likewise. + (output_rnglists, output_line_info): Likewise. + (output_pubnames, output_aranges): Update version comments. + (output_one_line_info_table): Output view numbers in asm comments. + (dw_loc_list): Determine current endview, pass it to new_loc_list. + Call maybe_gen_llsym. + (loc_list_from_tree_1): Adjust. + (add_AT_location_description): Create view list attribute if + needed, check it's absent otherwise. + (convert_cfa_to_fb_loc_list): Adjust. + (maybe_emit_file): Call output_asm_line_debug_info for test. + (dwarf2out_var_location): Reset views as needed. Precompute + add_var_loc_to_decl args. Call get_attr_min_length only if we have the + attribute. Set view. + (new_line_info_table): Reset next view. + (set_cur_line_info_table): Call output_asm_line_debug_info for test. + (dwarf2out_source_line): Likewise. Output view resets and labels to + the assembler, or select appropriate line info opcodes. + (prune_unused_types_walk_attribs): Handle dw_val_class_view_list. + (optimize_string_length): Catch it. Adjust. + (resolve_addr): Copy vl_symbol along with ll_symbol. Handle + dw_val_class_view_list, and remove it if no longer needed. + (hash_loc_list): Hash view numbers. + (loc_list_hasher::equal): Compare them. + (optimize_location_lists): Check whether a view list symbol is + needed, and whether the locview attribute is present, and + whether they match. Remove the locview attribute if no longer + needed. + (index_location_lists): Call skip_loc_list_entry for test. + (dwarf2out_finish): Call output_asm_line_debug_info for test. + Use output_dwarf_version. + * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list. + (struct dw_val_node): Add val_view_list. + * final.c (SEEN_NEXT_VIEW): New. + (set_next_view_needed): New. + (clear_next_view_needed): New. + (maybe_output_next_view): New. + (final_start_function): Rename to... + (final_start_function_1): ... this. Take pointer to FIRST, + add SEEN parameter. Emit param bindings in the initial view. + (final_start_function): Reintroduce SEEN-less interface. + (final): Rename to... + (final_1): ... this. Take SEEN parameter. Output final pending + next view at the end. + (final): Reintroduce seen-less interface. + (final_scan_insn): Output pending next view before switching + sections or ending a block. Mark the next view as needed when + outputting variable locations. Notify debug backend of section + changes, and of location view changes. + (rest_of_handle_final): Adjust. + * toplev.c (process_options): Autodetect value for debug variable + location views option. Warn on incompat5 without -gdwarf-5. + * doc/invoke.texi (gvariable-location-views): New. + (gvariable-location-views=incompat5): New. + (gno-variable-location-views): New. + +2018-02-08 David Malcolm + + PR tree-optimization/84136 + * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion + that the result of find_edge is non-NULL. + +2018-02-08 Sergey Shalnov + + PR target/83008 + * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of + storing integer register in SImode. Fix cost of 256 and 512 + byte aligned SSE register store. + +2018-02-08 Sergey Shalnov + + * config/i386/i386.c (ix86_multiplication_cost): Fix + multiplication cost for TARGET_AVX512DQ. + +2018-02-08 Marek Polacek + + PR tree-optimization/84238 + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of + get_range_strlen. + +2018-02-08 Richard Sandiford + + PR tree-optimization/84265 + * tree-vect-stmts.c (vectorizable_store): Don't treat + VMAT_CONTIGUOUS accesses as grouped. + (vectorizable_load): Likewise. + +2018-02-08 Richard Sandiford + + PR tree-optimization/81635 + * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare. + * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask) + (test_round_for_mask): New functions. + (wide_int_cc_tests): Call test_round_for_mask. + * tree-vrp.h (intersect_range_with_nonzero_bits): Declare. + * tree-vrp.c (intersect_range_with_nonzero_bits): New function. + * tree-data-ref.c (split_constant_offset_1): Use it to refine the + range returned by get_range_info. + +2018-02-08 Jan Hubicka + + PR ipa/81360 + * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare + * symtab.c: Include builtins.h + (symtab_node::output_to_lto_symbol_table_p): Move here + from lto-streamer-out.c:output_symbol_p. + * lto-streamer-out.c (write_symbol): Turn early exit to assert. + (output_symbol_p): Move all logic to symtab.c + (produce_symtab): Update. + +2018-02-08 Andreas Krebbel + + * config/s390/s390-opts.h (enum indirect_branch): Define. + * config/s390/s390-protos.h (s390_return_addr_from_memory) + (s390_indirect_branch_via_thunk) + (s390_indirect_branch_via_inline_thunk): Add function prototypes. + (enum s390_indirect_branch_type): Define. + * config/s390/s390.c (struct s390_frame_layout, struct + machine_function): Remove. + (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask) + (indirect_branch_table_label_no, indirect_branch_table_name): + Define variables. + (INDIRECT_BRANCH_NUM_OPTIONS): Define macro. + (enum s390_indirect_branch_option): Define. + (s390_return_addr_from_memory): New function. + (s390_handle_string_attribute): New function. + (s390_attribute_table): Add new attribute handler. + (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns. + (s390_indirect_branch_via_thunk): New function. + (s390_indirect_branch_via_inline_thunk): New function. + (s390_function_ok_for_sibcall): When jumping via thunk disallow + sibling call optimization for non z10 compiles. + (s390_emit_call): Force indirect branch target to be a single + register. Add r1 clobber for non-z10 compiles. + (s390_emit_epilogue): Emit return jump via return_use expander. + (s390_reorg): Handle JUMP_INSNs as execute targets. + (s390_option_override_internal): Perform validity checks for the + new command line options. + (s390_indirect_branch_attrvalue): New function. + (s390_indirect_branch_settings): New function. + (s390_set_current_function): Invoke s390_indirect_branch_settings. + (s390_output_indirect_thunk_function): New function. + (s390_code_end): Implement target hook. + (s390_case_values_threshold): Implement target hook. + (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target + macros. + * config/s390/s390.h (struct s390_frame_layout) + (struct machine_function): Move here from s390.c. + (TARGET_INDIRECT_BRANCH_NOBP_RET) + (TARGET_INDIRECT_BRANCH_NOBP_JUMP) + (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK) + (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK) + (TARGET_INDIRECT_BRANCH_NOBP_CALL) + (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE) + (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL) + (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX) + (TARGET_INDIRECT_BRANCH_TABLE): Define macros. + * config/s390/s390.md (UNSPEC_EXECUTE_JUMP) + (INDIRECT_BRANCH_THUNK_REGNUM): Define constants. + (mnemonic attribute): Add values which aren't recognized + automatically. + ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable + pattern for branch conversion. Fix mnemonic attribute. + ("*c", "*sibcall_br", "*sibcall_value_br", "*return"): Emit + indirect branch via thunk if requested. + ("indirect_jump", ""): Expand patterns for branch conversion. + ("*indirect_jump"): Disable for branch conversion using out of + line thunks. + ("indirect_jump_via_thunk_z10") + ("indirect_jump_via_thunk") + ("indirect_jump_via_inlinethunk_z10") + ("indirect_jump_via_inlinethunk", "*casesi_jump") + ("casesi_jump_via_thunk_z10", "casesi_jump_via_thunk") + ("casesi_jump_via_inlinethunk_z10") + ("casesi_jump_via_inlinethunk", "*basr_via_thunk_z10") + ("*basr_via_thunk", "*basr_r_via_thunk_z10") + ("*basr_r_via_thunk", "return_prez10"): New pattern. + ("*indirect2_jump"): Disable for branch conversion. + ("casesi_jump"): Turn into expander and expand patterns for branch + conversion. + ("return_use"): New expander. + ("*return"): Emit return via thunk and rename it to ... + ("*return"): ... this one. + * config/s390/s390.opt: Add new options and and enum for the + option values. + +2018-02-08 Richard Sandiford + + * lra-constraints.c (match_reload): Unconditionally use + gen_lowpart_SUBREG, rather than selecting between that + and equivalent gen_rtx_SUBREG code. + +2018-02-08 Richard Biener + + PR tree-optimization/84233 + * tree-ssa-phiprop.c (propagate_with_phi): Use separate + changed flag instead of boguously re-using phi_inserted. + +2018-02-08 Martin Jambor + + * hsa-gen.c (get_symbol_for_decl): Set program allocation for + static local variables. + +2018-02-08 Richard Biener + + PR tree-optimization/84278 + * tree-vect-stmts.c (vectorizable_store): When looking for + smaller vector types to perform grouped strided loads/stores + make sure the mode is supported by the target. + (vectorizable_load): Likewise. + +2018-02-08 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_components_for_bb): + Increase LDP/STP opportunities by adding adjacent callee-saves. + +2018-02-08 Wilco Dijkstra + + PR rtl-optimization/84068 + PR rtl-optimization/83459 + * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting. + +2018-02-08 Aldy Hernandez + + PR tree-optimization/84224 + * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert. + * calls.c (gimple_alloca_call_p): Only return TRUE when we have + non-zero arguments. + +2018-02-07 Iain Sandoe + + PR target/84113 + * config/rs6000/altivec.md (*restore_world): Remove LR use. + * config/rs6000/predicates.md (restore_world_operation): Adjust op + count, remove one USE. + +2018-02-07 Michael Meissner + + * doc/install.texi (Configuration): Document the + --with-long-double-format={ibm,ieee} PowerPC configuration + options. + + PR target/84154 + * config/rs6000/rs6000.md (fix_trunc2): + Convert from define_expand to be define_insn_and_split. Rework + float/double/_Float128 conversions to QI/HI/SImode to work with + both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where + conversions to QI/HImode types did a store and then a load to + truncate the value. For conversions to VSX registers, don't split + the insn, instead emit the code directly. Use the code iterator + any_fix to combine signed and unsigned conversions. + (fix_truncsi2_p8): Likewise. + (fixuns_trunc2): Likewise. + (fix_trunc2): Likewise. + (fix_trunc2): Likewise. + (fix_di2_hw): Likewise. + (fixuns_di2_hw): Likewise. + (fix_si2_hw): Likewise. + (fixuns_si2_hw): Likewise. + (fix_2_hw): Likewise. + (fix_trunc2): Likewise. + (fctiwz__smallint): Rename fctiwz__smallint to + fix_truncsi2_p8. + (fix_trunc2_internal): Delete, no longer used. + (fixuns_trunc2_internal): Likewise. + (fix__mem): Likewise. + (fctiwz__mem): Likewise. + (fix__mem): Likewise. + (fix_trunc2_mem): On ISA 3.0, prevent + the register allocator from doing a direct move to the GPRs to do + a store, and instead use the ISA 3.0 store byte/half-word from + vector register instruction. For IEEE 128-bit floating point, + also optimize stores of 32-bit ints. + (fix_trunc2_mem): Likewise. + +2018-02-07 Alan Hayward + + * genextract.c (push_pathstr_operand): New function to support + [a-zA-Z]. + (walk_rtx): Call push_pathstr_operand. + (print_path): Support [a-zA-Z]. + +2018-02-07 Richard Biener + + PR tree-optimization/84037 + * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member. + (cse_and_gimplify_to_preheader): Declare. + (vect_get_place_in_interleaving_chain): Likewise. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize + ivexpr_map. + (_loop_vec_info::~_loop_vec_info): Delete it. + (cse_and_gimplify_to_preheader): New function. + * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export. + * tree-vect-stmts.c (vectorizable_store): CSE base and steps. + (vectorizable_load): Likewise. For grouped stores always base + the IV on the first element. + * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning + condition before gimplifying. + +2018-02-07 Jakub Jelinek + + * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for + *DIV_EXPR and *MOD_EXPR. + +2018-02-07 H.J. Lu + + PR target/84248 + * config/i386/i386.c (ix86_option_override_internal): Mask out + the CF_SET bit when checking -fcf-protection. + +2018-02-07 Tom de Vries + + PR libgomp/84217 + * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large + enough. + +2018-02-07 Richard Biener + + PR tree-optimization/84204 + * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in + this place. + + PR tree-optimization/84205 + * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also + special-case isl_ast_op_zdiv_r. + + PR tree-optimization/84223 + * graphite-scop-detection.c (gather_bbs::before_dom_children): + Only add conditions from within the region. + (gather_bbs::after_dom_children): Adjust. + +2018-02-07 Georg-Johann Lay + + PR target/84209 + * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros. + * config/avr/avr.md: Only post-reload split REG-REG moves if + either register is GENERAL_REG_P. + +2018-02-07 Jakub Jelinek + + PR tree-optimization/84235 + * tree-ssa-scopedtables.c + (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt + if the subtraction is performed in floating point type where NaNs are + honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't + build 1. Formatting fix. + +2018-02-06 Jakub Jelinek + + PR target/84146 + * config/i386/i386.c (rest_of_insert_endbranch): Only skip + NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else, + and skip it regardless of bb boundaries. Use CALL_P macro, + don't test INSN_P (insn) together with CALL_P or JUMP_P check + unnecessarily, formatting fix. + +2018-02-06 Michael Collison + + * config/arm/thumb2.md: + (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it. + (*thumb_mov_notscc): Ditto. + +2018-02-06 Michael Meissner + + PR target/84154 + * config/rs6000/rs6000.md (su code attribute): Use "u" for + unsigned_fix, not "s". + +2018-02-06 Rainer Orth + + * configure.ac (gcc_fn_eh_frame_ro): New function. + (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for + correct .eh_frame permissions. + * configure: Regenerate. + +2018-02-06 Andrew Jenner + + * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove + irrelevant options. + +2018-02-06 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Display warning message for -mno-speculate-indirect-jumps. + +2018-02-06 Andrew Jenner + + * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add + Undocumented. + * config/powerpcspe/sysv4.opt (mbit-align): Likewise. + +2018-02-06 Aldy Hernandez + + PR tree-optimization/84225 + * tree-eh.c (find_trapping_overflow): Only call + operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P. + +2018-02-06 Igor Tsimbalist + + PR target/84145 + * config/i386/i386.c: Reimplement the check of possible options + -mibt/-mshstk conbination. Change error messages. + * doc/invoke.texi: Fix a typo: remove extra '='. + +2018-02-06 Marek Polacek + + PR tree-optimization/84228 + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements. + +2018-02-06 Tamar Christina + + PR target/82641 + * config/arm/arm.c (arm_print_asm_arch_directives): Record already + emitted arch directives. + * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and + __ARM_FEATURE_COPROC before changing architectures. + +2018-02-06 Richard Biener + + * config/i386/i386.c (print_reg): Fix typo. + (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll. + +2018-02-06 Eric Botcazou + + * configure: Regenerate. + +2018-02-05 Martin Sebor + + PR tree-optimization/83369 + * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print + inlining context. + +2018-02-05 Martin Liska + + * doc/invoke.texi: Cherry-pick upstream r323995. + +2018-02-05 Richard Sandiford + + * ira.c (ira_init_register_move_cost): Adjust comment. + +2018-02-05 Martin Liska + + PR gcov-profile/84137 + * doc/gcov.texi: Fix typo in documentation. + +2018-02-05 Martin Liska + + PR gcov-profile/83879 + * doc/gcov.texi: Document necessity of --dynamic-list-data when + using dlopen functionality. + +2018-02-05 Olga Makhotina + + * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd, + _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss, + _mm_maskz_range_ss, _mm_mask_range_round_ss, + _mm_maskz_range_round_ss): New intrinsics. + (__builtin_ia32_rangesd128_round) + (__builtin_ia32_rangess128_round): Remove. + (__builtin_ia32_rangesd128_mask_round, + __builtin_ia32_rangess128_mask_round): New builtins. + * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round, + __builtin_ia32_rangess128_round): Remove. + (__builtin_ia32_rangesd128_mask_round, + __builtin_ia32_rangess128_mask_round): New builtins. + * config/i386/sse.md (ranges): Renamed to ... + (ranges): ... this. + ((match_operand:VF_128 2 "" + "")): Changed to ... + ((match_operand:VF_128 2 "" + "")): ... this. + ("vrange\t{%3, %2, %1, %0| + %0, %1, %2, %3}"): Changed to ... + ("vrange\t{%3, %2, + %1, %0|%0, %1, + %2, %3}"): ... this. + +2018-02-02 Andrew Jenner + + * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant + options. + * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value): + Remove all values except native, 8540 and 8548. + +2018-02-02 H.J. Lu + + * config/i386/i386.c (ix86_output_function_return): Pass + INVALID_REGNUM, instead of -1, as invalid register number to + indirect_thunk_name and output_indirect_thunk. + +2018-02-02 Julia Koval + + * config.gcc: Add -march=icelake. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake. + * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake. + * config/i386/i386.c (processor_costs): Add m_ICELAKE. + (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2, + PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New. + (processor_target_table): Add icelake. + (ix86_option_override_internal): Handle new PTAs. + (get_builtin_code_for_version): Handle icelake. + (M_INTEL_COREI7_ICELAKE): New. + (fold_builtin_cpu): Handle icelake. + * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New. + * doc/invoke.texi: Add -march=icelake. + +2018-02-02 Julia Koval + + * config/i386/i386.c (ix86_option_override_internal): Change flags type + to wide_int_bitmask. + * wide-int-bitmask.h: New. + +2018-02-02 Igor Tsimbalist + + PR target/84066 + * config/i386/i386.md: Replace Pmode with word_mode in + builtin_setjmp_setup and builtin_longjmp to support x32. + +2018-02-01 Peter Bergner + + PR target/56010 + PR target/83743 + * config/rs6000/driver-rs6000.c: #include "diagnostic.h". + #include "opts.h". + (rs6000_supported_cpu_names): New static variable. + (linux_cpu_translation_table): Likewise. + (elf_platform) : Define new static variable and use it. + Translate kernel AT_PLATFORM name to canonical name if needed. + Error if platform name is unknown. + +2018-02-01 Aldy Hernandez + + PR target/84089 + * config/pa/predicates.md (base14_operand): Handle E_VOIDmode. + +2018-02-01 Jeff Law + + PR target/84128 + * config/i386/i386.c (release_scratch_register_on_entry): Add new + OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore + the scratch if RELEASE_VIA_POP is false. + (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE. + If we have to save a temporary register, decrement SIZE appropriately. + Pass new arguments to release_scratch_register_on_entry. + (ix86_adjust_stack_and_probe): Likewise. + (ix86_emit_probe_stack_range): Pass new arguments to + release_scratch_register_on_entry. + +2018-02-01 Uros Bizjak + + PR rtl-optimization/84157 + * combine.c (change_zero_ext): Use REG_P predicate in + front of HARD_REGISTER_P predicate. + +2018-02-01 Georg-Johann Lay + + * config/avr/avr.c (avr_option_override): Move disabling of + -fdelete-null-pointer-checks to... + * common/config/avr/avr-common.c (avr_option_optimization_table): + ...here. + +2018-02-01 Richard Sandiford + + PR tree-optimization/81635 + * tree-data-ref.c (split_constant_offset_1): For types that + wrap on overflow, try to use range info to prove that wrapping + cannot occur. + +2018-02-01 Renlin Li + + PR target/83370 + * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle + TAILCALL_ADDR_REGS. + (aarch64_register_move_cost): Likewise. + * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to + TAILCALL_ADDR_REGS. + (REG_CLASS_NAMES): Likewise. + (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to + TAILCALL_ADDR_REGS. Remove IP registers. + * config/aarch64/aarch64.md (Ucs): Update register constraint. + +2018-02-01 Richard Biener + + * domwalk.h (dom_walker::dom_walker): Add additional constructor + for specifying RPO order and allow NULL for that. + * domwalk.c (dom_walker::dom_walker): Likewise. + (dom_walker::walk): Handle NULL RPO order. + * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children + in RPO order. + (rewrite_update_dom_walker): Likewise. + (mark_def_dom_walker): Likewise. + +2018-02-01 Richard Sandiford + + * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move) + (aarch64_maybe_expand_sve_subreg_move): Declare. + * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec. + * config/aarch64/predicates.md (aarch64_any_register_operand): New + predicate. + * config/aarch64/aarch64-sve.md (mov): Optimize subreg moves + that are semantically a reverse operation. + (*aarch64_sve_mov_subreg_be): New pattern. + * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move): + (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New + functions. + (aarch64_can_change_mode_class): For big-endian, forbid changes + between two SVE modes if they have different element sizes. + +2018-02-01 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer + the TImode handling for big-endian targets. + +2018-02-01 Richard Sandiford + + * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with... + (*sve_ld1rq): ... this new pattern. Handle all element sizes, + not just bytes. + * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate): + Remove BSWAP handing for big-endian targets and use the form of + LD1RQ appropariate for the mode. + +2018-02-01 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle + all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single + duplicated element. + +2018-02-01 Richard Sandiford + + PR tearget/83845 + * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten + check for operands that need to go through aarch64_sve_reload_be. + +2018-02-01 Jakub Jelinek + + PR tree-optimization/81661 + PR tree-optimization/84117 + * tree-eh.h (rewrite_to_non_trapping_overflow): Declare. + * tree-eh.c: Include gimplify.h. + (find_trapping_overflow, replace_trapping_overflow, + rewrite_to_non_trapping_overflow): New functions. + * tree-vect-loop.c: Include tree-eh.h. + (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow. + * tree-data-ref.c: Include tree-eh.h. + (get_segment_min_max): Use rewrite_to_non_trapping_overflow. + +2018-01-31 Uros Bizjak + + PR rtl-optimization/84123 + * combine.c (change_zero_ext): Check if hard register satisfies + can_change_dest_mode before calling gen_lowpart_SUBREG. + +2018-01-31 Vladimir Makarov + + PR target/82444 + * ira.c (ira_init_register_move_cost): Remove assert. + +2018-01-31 Eric Botcazou + + PR rtl-optimization/84071 + * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case. + * doc/tm.texi: Regenerate. + +2018-01-31 Richard Biener + + PR tree-optimization/84132 + * tree-data-ref.c (analyze_miv_subscript): Properly + check whether evolution_function_is_affine_multivariate_p + before calling gcd_of_steps_may_divide_p. + +2018-01-31 Julia Koval + + PR target/83618 + * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID. + * config/i386/i386.md (rdpid_rex64) New. + (rdpid): Make 32bit only. + +2018-01-29 Aldy Hernandez + + PR lto/84105 + * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with + an IDENTIFIER_NODE for FUNCTION_TYPE's. + +2018-01-31 Eric Botcazou + + Revert + 2018-01-12 Eric Botcazou + + * config/sparc/sparc.md (vxworks_load_got): Set the GOT register. + +2018-01-31 Eric Botcazou + + PR rtl-optimization/84071 + * combine.c (record_dead_and_set_regs_1): Record the source unmodified + for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target. + +2018-01-31 Claudiu Zissulescu + + * config/arc/arc.c (arc_handle_aux_attribute): New function. + (arc_attribute_table): Add 'aux' attribute. + (arc_in_small_data_p): Consider aux like variables. + (arc_is_aux_reg_p): New function. + (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables. + (arc_get_aux_arg): New function. + (prepare_move_operands): Handle aux-register access. + (arc_handle_aux_attribute): New function. + * doc/extend.texi (ARC Variable attributes): Add subsection. + +2018-01-31 Claudiu Zissulescu + + * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto. + * config/arc/arc.c (arc_handle_uncached_attribute): New function. + (arc_attribute_table): Add 'uncached' attribute. + (arc_print_operand): Print '.di' flag for uncached memory + accesses. + (arc_in_small_data_p): Do not consider for small data the uncached + types. + (arc_is_uncached_mem_p): New function. + * config/arc/predicates.md (compact_store_memory_operand): Check + for uncached memory accesses. + (nonvol_nonimm_operand): Likewise. + * doc/extend.texi (ARC Type Attribute): New subsection. + +2018-01-31 Jakub Jelinek + + PR c/84100 + * common.opt (falign-functions=, falign-jumps=, falign-labels=, + falign-loops=): Add Optimization flag. + +2018-01-30 Jeff Law + + PR target/84064 + * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument + INT_REGISTERS_SAVED. Check it prior to calling + get_scratch_register_on_entry. + (ix86_adjust_stack_and_probe): Similarly. + (ix86_emit_probe_stack_range): Similarly. + (ix86_expand_prologue): Corresponding changes. + +2018-01-30 Rainer Orth + + PR target/40411 + * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*, + -std=iso9899:199409 instead of -pedantic to select values-Xc.o. + +2018-01-30 Vladimir Makarov + + PR target/84112 + * lra-constraints.c (curr_insn_transform): Process AND in the + address. + +2018-01-30 Jakub Jelinek + + PR rtl-optimization/83986 + * sched-deps.c (sched_analyze_insn): For frame related insns, add anti + dependence against last_pending_memory_flush in addition to + pending_jump_insns. + +2018-01-30 Alexandre Oliva + + PR tree-optimization/81611 + * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening + copies. + +2018-01-30 Aaron Sawdey + + PR target/83758 + * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return + a reg rtx. + +2018-01-30 Richard Biener + Jakub Jelinek + + PR tree-optimization/84111 + * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip + inner loops added during recursion, as they don't have up-to-date + SSA form. + +2018-01-30 Jan Hubicka + + PR ipa/81360 + * ipa-inline.c (can_inline_edge_p): Break out late tests to... + (can_inline_edge_by_limits_p): ... here. + (can_early_inline_edge_p, check_callers, + update_caller_keys, update_callee_keys, recursive_inlining, + add_new_edges_to_heap, speculation_useful_p, + inline_small_functions, + inline_small_functions, flatten_function, + inline_to_all_callers_1): Update. + +2018-01-30 Jan Hubicka + + * profile-count.c (profile_count::combine_with_ipa_count): Handle + zeros correctly. + +2018-01-30 Richard Biener + + PR tree-optimization/83008 + * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost + invariant and constant vector uses in stmts when they need + more than one stmt. + +2018-01-30 Rainer Orth + + PR bootstrap/84017 + * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86. + * configure: Regenerate. + +2018-01-30 Richard Sandiford + + * config/aarch64/aarch64-sve.md (*vec_extract_0): New + pattern. + (*vec_extract_v128): Require a nonzero lane number. + Use gen_rtx_REG rather than gen_lowpart. + +2018-01-30 Richard Sandiford + + * lra-constraints.c (match_reload): Use subreg_lowpart_offset + rather than 0 when creating partial subregs. + +2018-01-30 Richard Sandiford + + * vec-perm-indices.c (vec_perm_indices::series_p): Give examples + of usage. + +2018-01-29 Michael Meissner + + PR target/81550 + * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode + and SFmode can go in Altivec registers (-mcpu=power7 for DFmode, + -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY + flags. This restores the settings used before the 2017-07-24. + Turning off pre increment/decrement/modify allows IVOPTS to + optimize DF/SF loops where the index is an int. + +2018-01-29 Richard Biener + Kelvin Nilsen + + PR bootstrap/80867 + * tree-vect-stmts.c (vectorizable_call): Don't call + targetm.vectorize_builtin_md_vectorized_function if callee is + NULL. + +2018-01-22 Carl Love + + * doc/extend.tex: Fix typo in second arg in + __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}. + +2018-01-29 Richard Biener + + PR tree-optimization/84086 + * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h. + (flush_ssaname_freelist): When SSA names were released reset + the SCEV hash table. + +2018-01-29 Richard Biener + + PR tree-optimization/84057 + * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already + removed paths when removing edges. + +2018-01-27 H.J. Lu + + * doc/invoke.texi: Replace -mfunction-return==@var{choice} with + -mfunction-return=@var{choice}. + +2018-01-27 Bernd Edlinger + + PR diagnostic/84034 + * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace): + Handle CR like TAB. + (layout::print_source_line): Likewise. + (test_get_line_width_without_trailing_whitespace): Add test cases. + +2018-01-27 Jakub Jelinek + + PR middle-end/84040 + * sched-deps.c (sched_macro_fuse_insns): Return immediately for + debug insns. + +2018-01-26 Jim Wilson + + * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New. + + * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs + specified. + +2018-01-26 Kyrylo Tkachov + + * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS + and CMP + SUB-immediate -> SUBS. + +2018-01-26 Martin Sebor + + PR tree-optimization/83896 + * tree-ssa-strlen.c (get_string_len): Rename... + (get_string_cst_length): ...to this. Return HOST_WIDE_INT. + Avoid assuming length is constant. + (handle_char_store): Use HOST_WIDE_INT for string length. + +2018-01-26 Uros Bizjak + + PR target/81763 + * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber + to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives. + +2018-01-26 Richard Biener + + PR rtl-optimization/84003 + * dse.c (record_store): Only record redundant stores when + the earlier store aliases at least all accesses the later one does. + +2018-01-26 Jakub Jelinek + + PR rtl-optimization/83985 + * dce.c (deletable_insn_p): Return false for separate shrink wrapping + REG_CFA_RESTORE insns. + (delete_unmarked_insns): Don't ignore separate shrink wrapping + REG_CFA_RESTORE insns here. + + PR c/83989 + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't + use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR. + +2018-01-26 Claudiu Zissulescu + + * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3. + * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... . + (arc_init): Likewise. + (arc_override_options): Likewise. + (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune + value. + (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn + support. + * config/arc/arc.h (TARGET_DBNZ): Define. + * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to + properly set the tune attribute. + (dbnz): Use TARGET_DBNZ guard. + * config/arc/arc.opt (mtune): Add core3 option. + +2018-01-26 Claudiu Zissulescu + + * config/arc/arc.c (arc_delegitimize_address_0): Refactored to + recognize new pic like addresses. + (arc_delegitimize_address): Clean up. + +2018-01-26 Claudiu Zissulescu + + * config/arc/arc-arches.def: Option mrf16 valid for all + architectures. + * config/arc/arc-c.def (__ARC_RF16__): New predefined macro. + * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on. + * config/arc/arc-options.def (FL_RF16): Add mrf16 option. + * config/arc/arc-tables.opt: Regenerate. + * config/arc/arc.c (arc_conditional_register_usage): Handle + reduced register file case. + (arc_file_start): Set must have build attributes. + * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using + mrf16 option value. + * config/arc/arc.opt (mrf16): Add new option. + * config/arc/elf.h (ATTRIBUTE_PCS): Define. + * config/arc/genmultilib.awk: Handle new mrf16 option. + * config/arc/linux.h (ATTRIBUTE_PCS): Define. + * config/arc/t-multilib: Regenerate. + * doc/invoke.texi (ARC Options): Document mrf16 option. + +2018-01-26 Claudiu Zissulescu + + * config/arc/arc-protos.h: Add arc_is_secure_call_p proto. + * config/arc/arc.c (arc_handle_secure_attribute): New function. + (arc_attribute_table): Add 'secure_call' attribute. + (arc_print_operand): Print secure call operand. + (arc_function_ok_for_sibcall): Don't optimize tail calls when + secure. + (arc_is_secure_call_p): New function. * config/arc/arc.md + (call_i): Add support for sjli instruction. + (call_value_i): Likewise. + * config/arc/constraints.md (Csc): New constraint. + +2018-01-26 Claudiu Zissulescu + John Eric Martin + + * config/arc/arc-protos.h: Add arc_is_jli_call_p proto. + * config/arc/arc.c (_arc_jli_section): New struct. + (arc_jli_section): New type. + (rc_jli_sections): New static variable. + (arc_handle_jli_attribute): New function. + (arc_attribute_table): Add jli_always and jli_fixed attribute. + (arc_file_end): New function. + (TARGET_ASM_FILE_END): Define. + (arc_print_operand): Reuse 'S' letter for JLI output instruction. + (arc_add_jli_section): New function. + (jli_call_scan): Likewise. + (arc_reorg): Call jli_call_scan. + (arc_output_addsi): Remove 'S' from printing asm operand. + (arc_is_jli_call_p): New function. + * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm + operand. + (movhi_insn): Likewise. + (movsi_insn): Likewise. + (movsi_set_cc_insn): Likewise. + (loadqi_update): Likewise. + (load_zeroextendqisi_update): Likewise. + (load_signextendqisi_update): Likewise. + (loadhi_update): Likewise. + (load_zeroextendhisi_update): Likewise. + (load_signextendhisi_update): Likewise. + (loadsi_update): Likewise. + (loadsf_update): Likewise. + (movsicc_insn): Likewise. + (bset_insn): Likewise. + (bxor_insn): Likewise. + (bclr_insn): Likewise. + (bmsk_insn): Likewise. + (bicsi3_insn): Likewise. + (cmpsi_cc_c_insn): Likewise. + (movsi_ne): Likewise. + (movsi_cond_exec): Likewise. + (clrsbsi2): Likewise. + (norm_f): Likewise. + (normw): Likewise. + (swap): Likewise. + (divaw): Likewise. + (flag): Likewise. + (sr): Likewise. + (kflag): Likewise. + (ffs): Likewise. + (ffs_f): Likewise. + (fls): Likewise. + (call_i): Remove 'S' asm letter, add jli instruction. + (call_value_i): Likewise. + * config/arc/arc.op (mjli-always): New option. + * config/arc/constraints.md (Cji): New constraint. + * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm + operand. + (subsf3_fpx): Likewise. + (mulsf3_fpx): Likewise. + * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing + asm operand. + * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed' + function attrbutes. + * doc/invoke.texi (ARC): Document mjli-always option. + +2018-01-26 Sebastian Perta + + * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const + avoid addition with 0 and use incw and decw where possible. + +2018-01-26 Richard Biener + + PR tree-optimization/81082 + * fold-const.c (fold_plusminus_mult_expr): Do not perform the + association if it requires casting to unsigned. + * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived + from fold_plusminus_mult_expr to catch important cases late when + range info is available. + +2018-01-26 Rainer Orth + + * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove. + * configure.ac (hidden_linkonce): New test. + * configure: Regenerate. + * config.in: Regenerate. + +2018-01-26 Julia Koval + + * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask, + _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask, + _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask, + _mm_mask_bitshuffle_epi64_mask): Fix type. + * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI, + USI_FTYPE_V4DI_V4DI_USI): Remove. + * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask, + __builtin_ia32_vpshufbitqmb256_mask, + __builtin_ia32_vpshufbitqmb128_mask): Fix types. + * config/i386/i386.c (ix86_expand_args_builtin): Remove old types. + * config/i386/sse.md (VI1_AVX512VLBW): Change types. + +2018-01-26 Alan Modra + + PR target/84033 + * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude + UNSPEC_VBPERMQ. Sort other unspecs. + +2018-01-25 David Edelsohn + + * doc/invoke.texi (PowerPC Options): Document 'native' cpu type. + +2018-01-25 Jan Hubicka + + PR middle-end/83055 + * predict.c (drop_profile): Do not push/pop cfun; update also + node->count. + (handle_missing_profiles): Fix logic looking for zero profiles. + +2018-01-25 Jakub Jelinek + + PR middle-end/83977 + * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature + on functions with #pragma omp declare simd or functions with simd + attribute. + * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change. + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Remove trailing \n from warning_at calls. + +2018-01-25 Tom de Vries + + PR target/84028 + * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call + for neutered workers. + +2018-01-24 Joseph Myers + + PR target/68467 + * config/m68k/m68k.c (m68k_promote_function_mode): New function. + (TARGET_PROMOTE_FUNCTION_MODE): New macro. + +2018-01-24 Jeff Law + + PR target/83994 + * i386.c (get_probe_interval): Move to earlier point. + (ix86_compute_frame_layout): If -fstack-clash-protection and + the frame is larger than the probe interval, then use pushes + to save registers rather than reg->mem moves. + (ix86_expand_prologue): Remove conditional for int_registers_saved + assertion. + +2018-01-24 Vladimir Makarov + + PR target/84014 + * ira-build.c (setup_min_max_allocno_live_range_point): Set up + min/max for never referenced object. + +2018-01-24 Jakub Jelinek + + PR middle-end/83977 + * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN + here. + * omp-low.c (create_omp_child_function): Remove "omp declare simd" + attributes from DECL_ATTRIBUTES (decl) without affecting + DECL_ATTRIBUTES (current_function_decl). + * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL + functions with non-NULL DECL_ABSTRACT_ORIGIN. + +2018-01-24 Richard Sandiford + + PR tree-optimization/83979 + * fold-const.c (fold_comparison): Use constant_boolean_node + instead of boolean_{true,false}_node. + +2018-01-24 Jan Hubicka + + * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls + with zero counts. + +2018-01-24 Bill Schmidt + + * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv): + Simplify the clause that sets the length attribute. + (*call_value_indirect_nonlocal_sysv): Likewise. + (*sibcall_nonlocal_sysv): Clean up code block; simplify the + clause that sets the length attribute. + (*sibcall_value_nonlocal_sysv): Likewise. + +2018-01-24 Tom de Vries + + PR target/83589 + * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1. + (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c. + Add strict parameter. + (prevent_branch_around_nothing): Insert dummy insn between branch to + label and label with no ptx insn inbetween. + * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn. + +2018-01-24 Tom de Vries + + PR target/81352 + * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call + for neutered threads in warp. + * config/nvptx/nvptx.md (define_insn "exit"): New insn. + +2018-01-24 Richard Biener + + PR tree-optimization/83176 + * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. } + operands. + +2018-01-24 Richard Biener + + PR tree-optimization/82819 + * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid + code generating pluses that are no-ops in the target precision. + +2018-01-24 Richard Biener + + PR middle-end/84000 + * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind. + +2018-01-23 Jan Hubicka + + * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count + to merge probabilities. + * predict.c (probably_never_executed): Also mark as cold functions + with global 0 profile and guessed local profile. + * profile-count.c (profile_probability::combine_with_count): New + member function. + * profile-count.h (profile_probability::operator*, + profile_probability::operator*=, profile_probability::operator/, + profile_probability::operator/=): Reduce precision to adjusted + and set value to guessed on contradictory divisions. + (profile_probability::combine_with_freq): Remove. + (profile_probability::combine_wiht_count): Declare. + (profile_count::force_nonzero):: Set to adjusted. + (profile_count::probability_in):: Set quality to adjusted. + * tree-ssa-tail-merge.c (replace_block_by): Use + combine_with_count. + +2018-01-23 Andrew Waterman + Jim Wilson + + * config/riscv/riscv.c (riscv_stack_boundary): New. + (riscv_option_override): Set riscv_stack_boundary. Handle + riscv_preferred_stack_boundary_arg. + * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New. + (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY. + (STACK_BOUNDARY): Set to riscv_stack_boundary. + (RISCV_STACK_ALIGN): Use STACK_BOUNDARY. + * config/riscv/riscv.opt (mpreferred-stack-boundary): New. + * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary. + +2018-01-23 H.J. Lu + + PR target/83905 + * config/i386/i386.c (ix86_expand_prologue): Use cost reference + of struct ix86_frame. + (ix86_expand_epilogue): Likewise. Add a local variable for + the reg_save_offset field in struct ix86_frame. + +2018-01-23 Bin Cheng + + PR tree-optimization/82604 + * tree-loop-distribution.c (enum partition_kind): New enum item + PKIND_PARTIAL_MEMSET. + (partition_builtin_p): Support above new enum item. + (generate_code_for_partition): Ditto. + (compute_access_range): Differentiate cases that equality can be + proven at all loops, the innermost loops or no loops. + (classify_builtin_st, classify_builtin_ldst): Adjust call to above + function. Set PKIND_PARTIAL_MEMSET for partition appropriately. + (finalize_partitions, distribute_loop): Don't fuse partition of + PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest. + (prepare_perfect_loop_nest): Distribute 3-level loop nest only if + parloop is enabled. + +2018-01-23 Martin Liska + + * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in + order to ignore the predictor. + (PRED_POLYMORPHIC_CALL): Likewise. + (PRED_RECURSIVE_CALL): Likewise. + +2018-01-23 Martin Liska + + * tree-profile.c (tree_profiling): Print function header to + aware reader which function we are working on. + * value-prof.c (gimple_find_values_to_profile): Do not print + not interesting value histograms. + +2018-01-23 Martin Liska + + * profile-count.h (enum profile_quality): Add + profile_uninitialized as the first value. Do not number values + as they are zero based. + (profile_count::verify): Update sanity check. + (profile_probability::verify): Likewise. + +2018-01-23 Nathan Sidwell + + * doc/invoke.texi (ffor-scope): Deprecate. + +2018-01-23 David Malcolm + + PR tree-optimization/83510 + * domwalk.c (set_all_edges_as_executable): New function. + (dom_walker::dom_walker): Convert bool param + "skip_unreachable_blocks" to enum reachability. Move setup of + edge flags to set_all_edges_as_executable and only do it when + reachability is REACHABLE_BLOCKS. + * domwalk.h (enum dom_walker::reachability): New enum. + (dom_walker::dom_walker): Convert bool param + "skip_unreachable_blocks" to enum reachability. + (set_all_edges_as_executable): New decl. + * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert + from false for "skip_unreachable_blocks" to ALL_BLOCKS for + "reachability". + * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise, + but converting true to REACHABLE_BLOCKS. + * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise. + * tree-vrp.c + (check_array_bounds_dom_walker::check_array_bounds_dom_walker): + Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS. + (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to + REACHABLE_BLOCKS. + (vrp_prop::vrp_finalize): Call set_all_edges_as_executable + if check_all_array_refs will be called. + +2018-01-23 David Malcolm + + * tree.c (selftest::test_location_wrappers): Add more test + coverage. + +2018-01-23 David Malcolm + + * sbitmap.c (selftest::test_set_range): Fix memory leaks. + (selftest::test_bit_in_range): Likewise. + +2018-01-23 Richard Sandiford + + PR testsuite/83888 + * doc/sourcebuild.texi (vect_float): Say that the selector + only describes the situation when -funsafe-math-optimizations is on. + (vect_float_strict): Document. + +2018-01-23 Richard Sandiford + + PR tree-optimization/83965 + * tree-vect-patterns.c (vect_reassociating_reduction_p): New function. + (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it + instead of checking only for a reduction. + (vect_recog_widen_sum_pattern): Likewise. + +2018-01-23 Jan Hubicka + + * predict.c (probably_never_executed): Only use precise profile info. + (compute_function_frequency): Skip after inlining hack since we now + have quality checking. + +2018-01-23 Jan Hubicka + + * profile-count.h (profile_probability::very_unlikely, + profile_probability::unlikely, profile_probability::even): Set + precision to guessed. + +2018-01-23 Richard Biener + + PR tree-optimization/83963 + * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): + Properly terminate dominator walk when crossing the exit edge not + when visiting its source block. + +2018-01-23 Jakub Jelinek + + PR c++/83918 + * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than + VIEW_CONVERT_EXPR to wrap CONST_DECLs. + +2018-01-22 Jakub Jelinek + + PR tree-optimization/83957 + * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove + semicolon after for body surrounded by braces. + + PR tree-optimization/83081 + * profile-count.h (profile_probability::split): New method. + * dojump.c (do_jump_1) : + Use profile_probability::split. + (do_compare_rtx_and_jump): Fix adjustment of probabilities + when splitting a single conditional jump into 2. + +2018-01-22 David Malcolm + + PR tree-optimization/69452 + * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove + decl. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78-expand.md (bswaphi2): New define_expand. + * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn. + * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78-protos.h (rl78_split_movdi): New function + declaration. + * config/rl78/rl78.md (movdi): New define_expand. + * config/rl78/rl78.c (rl78_split_movdi): New function. + +2018-01-22 Michael Meissner + + PR target/83862 + * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete, + no longer used. + * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise. + * config/rs6000/rs6000.md (signbit2): Change code for IEEE + 128-bit to produce an UNSPEC move to get the double word with the + signbit and then a shift directly to do signbit. + (signbit2_dm): Replace old IEEE 128-bit signbit + implementation with a new version that just does either a direct + move or a regular move. Move memory interface to separate insns. + Move insns so they are next to the expander. + (signbit2_dm_mem_be): New combiner insns to combine load + with signbit move. Split big and little endian case. + (signbit2_dm_mem_le): Likewise. + (signbit2_dm_ext): Delete, no longer used. + (signbit2_dm2): Likewise. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78.md (anddi3): New define_expand. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78.md (umindi3): New define_expand. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78.md (smindi3): New define_expand. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78.md (smaxdi3): New define_expand. + +2018-01-22 Carl Love + + * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI, + LVX_V1TI): Add macro expansion. + * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument + definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST, + VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins. + * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p); + Change check to determine if the instruction is a byte reversing + entry. Fix typo in comment. + * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry + for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI. + Add def_builtin calls for new builtins. + * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti): + Add define_insn expansion. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78.md (umaxdi3): New define_expand. + +2018-01-22 Sebastian Perta + + * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check + for non-QImode registers. + +2018-01-22 Richard Biener + + PR tree-optimization/83963 + * graphite-scop-detection.c (scop_detection::get_sese): Delay + including the loop exit block. + (scop_detection::merge_sese): Likewise. + (scop_detection::add_scop): Do it here instead. + +2018-01-22 Kyrylo Tkachov + + * doc/sourcebuild.texi (arm_softfloat): Document. + +2018-01-21 John David Anglin + + PR gcc/77734 + * config/pa/pa.c (pa_function_ok_for_sibcall): Use + targetm.binds_local_p instead of TREE_PUBLIC to check local binding. + Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check. + +2018-01-21 Bill Schmidt + David Edelsohn + + PR target/83946 + * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv): + Change "crset eq" to "crset 2". + (*call_value_indirect_nonlocal_sysv): Likewise. + (*call_indirect_aix_nospec): Likewise. + (*call_value_indirect_aix_nospec): Likewise. + (*call_indirect_elfv2_nospec): Likewise. + (*call_value_indirect_elfv2_nospec): Likewise. + (*sibcall_nonlocal_sysv): Change "crset eq" to "crset 2"; + change assembly output from . to $. + (*sibcall_value_nonlocal_sysv): Likewise. + (indirect_jump_nospec): Change assembly output from . to $. + (*tablejump_internal1_nospec): Likewise. + +2018-01-21 Oleg Endo + + PR target/80870 + * config/sh/sh_optimize_sett_clrt.cc: + Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes. + +2018-01-20 Richard Sandiford + + PR tree-optimization/83940 + * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set + offset_dt to vect_constant_def rather than vect_unknown_def_type. + (vect_check_load_store_mask): Add a mask_dt_out parameter and + use it to pass back the definition type. + (vect_check_store_rhs): Likewise rhs_dt_out. + (vect_build_gather_load_calls): Add a mask_dt argument and use + it instead of a call to vect_is_simple_use. + (vectorizable_store): Update calls to vect_check_load_store_mask + and vect_check_store_rhs. Use the dt returned by the latter instead + of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt + instead of calls to vect_is_simple_use. Pass the scalar rather + than the vector operand to vect_is_simple_use when handling + second and subsequent copies of an rhs value. + (vectorizable_load): Update calls to vect_check_load_store_mask + and vect_build_gather_load_calls. Use the cached mask_dt and + gs_info.offset_dt instead of calls to vect_is_simple_use. + +2018-01-20 Jakub Jelinek + + PR middle-end/83945 + * tree-emutls.c: Include gimplify.h. + (lower_emutls_2): New function. + (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree + with lower_emutls_2 callback finds some TLS decl in it, unshare_expr + it before further processing. + + PR target/83930 + * simplify-rtx.c (simplify_binary_operation_1) : Use + UINTVAL (trueop1) instead of INTVAL (op1). + +2018-01-19 Jakub Jelinek + + PR debug/81570 + PR debug/83728 + * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to + INCOMING_FRAME_SP_OFFSET if not defined. + (scan_trace): Add ENTRY argument. If true and + DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET, + emit a note to adjust the CFA offset. + (create_cfi_notes): Adjust scan_trace callers. + (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than + INCOMING_FRAME_SP_OFFSET in the CIE. + * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define. + * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): + Likewise. + * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document. + * doc/tm.texi: Regenerated. + +2018-01-19 Andreas Krebbel + + PR rtl-optimization/83147 + * lra-constraints.c (remove_inheritance_pseudos): Use + lra_substitute_pseudo_within_insn. + +2018-01-19 Tom de Vries + Cesar Philippidis + + PR target/83920 + * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround. + +2018-01-19 Cesar Philippidis + + PR target/83790 + * config/nvptx/nvptx.c (output_init_frag): Don't use generic address + spaces for function labels. + +2018-01-19 Martin Liska + + * predict.def (PRED_LOOP_EXIT): Change from 85 to 89. + (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78. + (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67. + (PRED_OPCODE_POSITIVE): Change from 64 to 59. + (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59. + (PRED_CONST_RETURN): Change from 69 to 65. + (PRED_NULL_RETURN): Change from 91 to 71. + (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64. + (PRED_LOOP_GUARD): Change from 66 to 73. + +2018-01-19 Martin Liska + + * predict.c (predict_insn_def): Add new assert. + (struct branch_predictor): Change type to signed integer. + (test_prediction_value_range): Amend test to cover + PROB_UNINITIALIZED. + * predict.def (PRED_LOOP_ITERATIONS): Use the new constant. + (PRED_LOOP_ITERATIONS_GUESSED): Likewise. + (PRED_LOOP_ITERATIONS_MAX): Likewise. + (PRED_LOOP_IV_COMPARE): Likewise. + * predict.h (PROB_UNINITIALIZED): Define new constant. + +2018-01-19 Martin Liska + + * predict.c (dump_prediction): Add new format for + analyze_brprob.py script which is enabled with -details + suboption. + * profile-count.h (precise_p): New function. + +2018-01-19 Richard Sandiford + + PR tree-optimization/83922 + * tree-vect-loop.c (vect_verify_full_masking): Return false if + there are no statements that need masking. + (vect_active_double_reduction_p): New function. + (vect_analyze_loop_operations): Use it when handling phis that + are not in the loop header. + +2018-01-19 Richard Sandiford + + PR tree-optimization/83914 + * tree-vect-loop.c (vectorizable_induction): Don't convert + init_expr or apply the peeling adjustment for inductions + that are nested within the vectorized loop. + +2018-01-19 Kyrylo Tkachov + + * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic + instead of NEG. + +2018-01-18 Jakub Jelinek + + PR sanitizer/81715 + PR testsuite/83882 + * function.h (gimplify_parameters): Add gimple_seq * argument. + * function.c: Include gimple.h and options.h. + (gimplify_parameters): Add cleanup argument, add CLOBBER stmts + for the added local temporaries if needed. + * gimplify.c (gimplify_body): Adjust gimplify_parameters caller, + if there are any parameter cleanups, wrap whole body into a + try/finally with the cleanups. + +2018-01-18 Wilco Dijkstra + + PR target/82964 + * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): + Use GET_MODE_CLASS for scalar floating point. + +2018-01-18 Jan Hubicka + + PR ipa/82256 + patch by PaX Team + * cgraphclones.c (cgraph_node::create_version_clone_with_body): + Fix call of call_cgraph_insertion_hooks. + +2018-01-18 Martin Sebor + + * doc/invoke.texi (-Wclass-memaccess): Tweak text. + +2018-01-18 Jan Hubicka + + PR ipa/83619 + * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge + frequencies. + +2018-01-18 Boris Kolpackov + + PR other/70268 + * common.opt: (-ffile-prefix-map): New option. + * opts.c (common_handle_option): Defer it. + * opts-global.c (handle_common_deferred_options): Handle it. + * debug.h (remap_debug_filename, add_debug_prefix_map): Move to... + * file-prefix-map.h: New file. + (remap_debug_filename, add_debug_prefix_map): ...here. + (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New. + * final.c (debug_prefix_map, add_debug_prefix_map + remap_debug_filename): Move to... + * file-prefix-map.c: New file. + (file_prefix_map, add_prefix_map, remap_filename) ...here and rename, + generalize, get rid of alloca(), use strrchr() instead of strchr(). + (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map): + Implement in terms of add_prefix_map(). + (remap_macro_filename, remap_debug_filename): Implement in term of + remap_filename(). + * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files. + * builtins.c (fold_builtin_FILE): Call remap_macro_filename(). + * dbxout.c: Include file-prefix-map.h. + * varasm.c: Likewise. + * vmsdbgout.c: Likewise. + * xcoffout.c: Likewise. + * dwarf2out.c: Likewise plus omit new options from DW_AT_producer. + * doc/cppopts.texi (-fmacro-prefix-map): Document. + * doc/invoke.texi (-ffile-prefix-map): Document. + (-fdebug-prefix-map): Update description. + +2018-01-18 Martin Liska + + * config/i386/i386.c (indirect_thunk_name): Document that also + lfence is emitted. + (output_indirect_thunk): Document why both instructions + (pause and lfence) are generated. + +2018-01-18 Richard Biener + + PR tree-optimization/83887 + * graphite-scop-detection.c + (scop_detection::get_nearest_dom_with_single_entry): Remove. + (scop_detection::get_nearest_pdom_with_single_exit): Likewise. + (scop_detection::merge_sese): Re-implement with a flood-fill + algorithm that properly finds a SESE region if it exists. + +2018-01-18 Jakub Jelinek + + PR c/61240 + * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For + pointer_diff optimizations use view_convert instead of convert. + +2018-01-17 Bill Schmidt + + * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv): + Generate different code for -mno-speculate-indirect-jumps. + (*call_value_indirect_nonlocal_sysv): Likewise. + (*call_indirect_aix): Disable for + -mno-speculate-indirect-jumps. + (*call_indirect_aix_nospec): New define_insn. + (*call_value_indirect_aix): Disable for + -mno-speculate-indirect-jumps. + (*call_value_indirect_aix_nospec): New define_insn. + (*sibcall_nonlocal_sysv): Generate different code for + -mno-speculate-indirect-jumps. + (*sibcall_value_nonlocal_sysv): Likewise. + +2018-01-17 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a + long double type, set the flags for noting the default long double + type, even if we don't pass or return a long double type. + +2018-01-17 Jan Hubicka + + PR ipa/83051 + * ipa-inline.c (flatten_function): Do not overwrite final inlining + failure. + +2018-01-17 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding + support for merge[hl]. + (fold_mergehl_helper): New helper function. + (tree-vector-builder.h): New #include for tree_vector_builder usage. + * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn. + (altivec_vmrglw_direct): Add xxmrglw insn. + +2018-01-17 Andrew Waterman + + * config/riscv/riscv.c (riscv_conditional_register_usage): If + UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs. + +2018-01-17 David Malcolm + + PR lto/83121 + * ipa-devirt.c (add_type_duplicate): When comparing memory layout, + call the lto_location_cache before reading the + DECL_SOURCE_LOCATION of the types. + +2018-01-17 Wilco Dijkstra + Richard Sandiford + + * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint. + * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function. + (aarch64_legitimate_constant_p): Just support CONST_DOUBLE + SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates. + * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate): + Add declaration. + * config/aarch64/constraints.md (aarch64_movti_operand): + Limit immediates. + * config/aarch64/predicates.md (Uti): Add new constraint. + +2018-01-17 Carl Love + + * config/rs6000/vsx.md (define_expand xl_len_r, + define_expand stxvl, define_expand *stxvl): Add match_dup argument. + (define_insn): Add, match_dup 1 argument to define_insn stxvll and + lxvll. + (define_expand, define_insn): Move the shift left from the + define_insn to the define_expand for lxvl and stxvl instructions. + * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL + and XL_LEN_R definitions to PURE. + +2018-01-17 Uros Bizjak + + * config/i386/i386.c (indirect_thunk_name): Declare regno + as unsigned int. Compare regno with INVALID_REGNUM. + (output_indirect_thunk): Ditto. + (output_indirect_thunk_function): Ditto. + (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM + in the call to output_indirect_thunk_function. + +2018-01-17 Richard Sandiford + + PR middle-end/83884 + * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0) + rather than the size of inner_type to determine the stack slot size + when handling VIEW_CONVERT_EXPRs on strict-alignment targets. + +2018-01-16 Sebastian Peryt + + PR target/83546 + * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND + to PTA_SILVERMONT. + +2018-01-16 Michael Meissner + + * config.gcc (powerpc*-linux*-*): Add support for 64-bit little + endian Linux systems to optionally enable multilibs for selecting + the long double type if the user configured an explicit type. + * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we + have no long double multilibs if not defined. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not + warn if the user used -mabi={ieee,ibm}longdouble and we built + multilibs for long double. + * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the + appropriate multilib option. + (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default + multilib options. + * config/rs6000/t-ldouble-linux64le-ibm: New configuration files + for building long double multilibs. + * config/rs6000/t-ldouble-linux64le-ieee: Likewise. + +2018-01-16 John David Anglin + + * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller + copies. + + * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to + 64 bits. + * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to + 128 bits. + + * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode + variables. + + * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE + return value. + +2018-01-16 Eric Botcazou + + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an + ADDR_EXPR, do not count the offset of a COMPONENT_REF twice. + +2018-01-16 Kelvin Nilsen + + * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate + different rtl trees depending on TARGET_64BIT. + (rs6000_gen_lvx): Likewise. + +2018-01-16 Eric Botcazou + + * config/visium/visium.md (nop): Tweak comment. + (hazard_nop): Likewise. + +2018-01-16 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for + -mspeculate-indirect-jumps. + * config/rs6000/rs6000.md (*call_indirect_elfv2): Disable + for -mno-speculate-indirect-jumps. + (*call_indirect_elfv2_nospec): New define_insn. + (*call_value_indirect_elfv2): Disable for + -mno-speculate-indirect-jumps. + (*call_value_indirect_elfv2_nospec): New define_insn. + (indirect_jump): Emit different RTL for + -mno-speculate-indirect-jumps. + (*indirect_jump): Disable for + -mno-speculate-indirect-jumps. + (*indirect_jump_nospec): New define_insn. + (tablejump): Emit different RTL for + -mno-speculate-indirect-jumps. + (tablejumpsi): Disable for -mno-speculate-indirect-jumps. + (tablejumpsi_nospec): New define_expand. + (tablejumpdi): Disable for -mno-speculate-indirect-jumps. + (tablejumpdi_nospec): New define_expand. + (*tablejump_internal1): Disable for + -mno-speculate-indirect-jumps. + (*tablejump_internal1_nospec): New define_insn. + * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New + option. + +2018-01-16 Artyom Skrobov tyomitch@gmail.com + + * caller-save.c (insert_save): Drop unnecessary parameter. All + callers updated. + +2018-01-16 Jakub Jelinek + Richard Biener + + PR libgomp/83590 + * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr) + return early, inline manually is_gimple_sizepos. Make sure if we + call gimplify_expr we don't end up with a gimple constant. + * tree.c (variably_modified_type_p): Don't return true for + is_gimple_constant (_t). Inline manually is_gimple_sizepos. + * gimplify.h (is_gimple_sizepos): Remove. + +2018-01-16 Richard Sandiford + + PR tree-optimization/83857 + * tree-vect-loop.c (vect_analyze_loop_operations): Don't call + vectorizable_live_operation for pure SLP statements. + (vectorizable_live_operation): Handle PHIs. + +2018-01-16 Richard Biener + + PR tree-optimization/83867 + * tree-vect-stmts.c (vect_transform_stmt): Precompute + nested_in_vect_loop_p since the scalar stmt may get invalidated. + +2018-01-16 Jakub Jelinek + + PR c/83844 + * stor-layout.c (handle_warn_if_not_align): Use byte_position and + multiple_of_p instead of unchecked tree_to_uhwi and UHWI check. + If off is not INTEGER_CST, issue a may not be aligned warning + rather than isn't aligned. Use isn%'t rather than isn't. + * fold-const.c (multiple_of_p) : Don't fall through + into MULT_EXPR. + : Improve the case when bottom and one of the + MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that + operand, in that case check if the other operand is multiple of + bottom divided by the INTEGER_CST operand. + +2018-01-16 Richard Sandiford + + PR target/83858 + * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete. + * config/pa/pa-protos.h (pa_function_arg_size): Declare. + * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use + pa_function_arg_size instead of FUNCTION_ARG_SIZE. + * config/pa/pa.c (pa_function_arg_advance): Likewise. + (pa_function_arg, pa_arg_partial_bytes): Likewise. + (pa_function_arg_size): New function. + +2018-01-16 Richard Sandiford + + * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices + in a separate statement. + +2018-01-16 Richard Sandiford + + PR tree-optimization/83847 + * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't + group gathers and scatters. + +2018-01-16 Jakub Jelinek + + PR rtl-optimization/86620 + * params.def (max-sched-ready-insns): Bump minimum value to 1. + + PR rtl-optimization/83213 + * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn + to last if both are JUMP_INSNs. + + PR tree-optimization/83843 + * gimple-ssa-store-merging.c + (imm_store_chain_info::output_merged_store): Handle bit_not_p on + store_immediate_info for bswap/nop orig_stores. + +2018-01-15 Andrew Waterman + + * config/riscv/riscv.c (riscv_rtx_costs) : Increase cost if + !TARGET_MUL. + : Increase cost if !TARGET_DIV. + +2018-01-15 Segher Boessenkool + + * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr. + (define_attr "cr_logical_3op"): New. + (cceq_ior_compare): Adjust. + (cceq_ior_compare_complement): Adjust. + (*cceq_rev_compare): Adjust. + * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust. + (is_cracked_insn): Adjust. + (insn_must_be_first_in_group): Adjust. + * config/rs6000/40x.md: Adjust. + * config/rs6000/440.md: Adjust. + * config/rs6000/476.md: Adjust. + * config/rs6000/601.md: Adjust. + * config/rs6000/603.md: Adjust. + * config/rs6000/6xx.md: Adjust. + * config/rs6000/7450.md: Adjust. + * config/rs6000/7xx.md: Adjust. + * config/rs6000/8540.md: Adjust. + * config/rs6000/cell.md: Adjust. + * config/rs6000/e300c2c3.md: Adjust. + * config/rs6000/e500mc.md: Adjust. + * config/rs6000/e500mc64.md: Adjust. + * config/rs6000/e5500.md: Adjust. + * config/rs6000/e6500.md: Adjust. + * config/rs6000/mpc.md: Adjust. + * config/rs6000/power4.md: Adjust. + * config/rs6000/power5.md: Adjust. + * config/rs6000/power6.md: Adjust. + * config/rs6000/power7.md: Adjust. + * config/rs6000/power8.md: Adjust. + * config/rs6000/power9.md: Adjust. + * config/rs6000/rs64.md: Adjust. + * config/rs6000/titan.md: Adjust. + +2018-01-15 H.J. Lu + + * config/i386/predicates.md (indirect_branch_operand): Rewrite + ix86_indirect_branch_register logic. + +2018-01-15 H.J. Lu + + * config/i386/constraints.md (Bs): Update + ix86_indirect_branch_register check. Don't check + ix86_indirect_branch_register with GOT_memory_operand. + (Bw): Likewise. + * config/i386/predicates.md (GOT_memory_operand): Don't check + ix86_indirect_branch_register here. + (GOT32_symbol_operand): Likewise. + +2018-01-15 H.J. Lu + + * config/i386/predicates.md (constant_call_address_operand): + Rewrite ix86_indirect_branch_register logic. + (sibcall_insn_operand): Likewise. + +2018-01-15 H.J. Lu + + * config/i386/constraints.md (Bs): Replace + ix86_indirect_branch_thunk_register with + ix86_indirect_branch_register. + (Bw): Likewise. + * config/i386/i386.md (indirect_jump): Likewise. + (tablejump): Likewise. + (*sibcall_memory): Likewise. + (*sibcall_value_memory): Likewise. + Peepholes of indirect call and jump via memory: Likewise. + * config/i386/i386.opt: Likewise. + * config/i386/predicates.md (indirect_branch_operand): Likewise. + (GOT_memory_operand): Likewise. + (call_insn_operand): Likewise. + (sibcall_insn_operand): Likewise. + (GOT32_symbol_operand): Likewise. + +2018-01-15 Jakub Jelinek + + PR middle-end/83837 + * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val + type rather than type addr's type points to. + (expand_omp_atomic_mutex): Likewise. + (expand_omp_atomic): Likewise. + +2018-01-15 H.J. Lu + + PR target/83839 + * config/i386/i386.c (output_indirect_thunk_function): Use + ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO + for __x86_return_thunk. + +2018-01-15 Richard Biener + + PR middle-end/83850 + * expmed.c (extract_bit_field_1): Fix typo. + +2018-01-15 Kyrylo Tkachov + + PR target/83687 + * config/arm/iterators.md (VF): New mode iterator. + * config/arm/neon.md (neon_vabd_2): Use the above. + Remove integer-related logic from pattern. + (neon_vabd_3): Likewise. + +2018-01-15 Jakub Jelinek + + PR middle-end/82694 + * common.opt (fstrict-overflow): No longer an alias. + (fwrapv-pointer): New option. + * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define + also for pointer types based on flag_wrapv_pointer. + * opts.c (common_handle_option) : Set + opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if + opts->x_flag_wrapv got set. + * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01 + changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of + POINTER_TYPE_OVERFLOW_UNDEFINED. + * match.pd: Likewise in address comparison pattern. + * doc/invoke.texi: Document -fwrapv and -fstrict-overflow. + +2018-01-15 Richard Biener + + PR lto/83804 + * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs + from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization. + Reset type names to their identifier if their TYPE_DECL doesn't + have linkage (and thus is used for ODR and devirt). + (save_debug_info_for_decl): Remove. + (save_debug_info_for_type): Likewise. + (add_tree_to_fld_list): Adjust. + * tree-pretty-print.c (dump_generic_node): Make dumping of + type names more robust. + +2018-01-15 Richard Biener + + * BASE-VER: Bump to 8.0.1. + +2018-01-14 Martin Sebor + + PR other/83508 + * builtins.c (check_access): Avoid warning when the no-warning bit + is set. + +2018-01-14 Cory Fields + + * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort. + * ira-color (allocno_hard_regs_compare): Likewise. + +2018-01-14 Nathan Rossi + + PR target/83013 + * config/microblaze/microblaze.c (microblaze_asm_output_ident): + Use .pushsection/.popsection. + +2018-01-14 Martin Sebor + + PR c++/81327 + * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting. + +2018-01-14 Jakub Jelinek + + * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h + entry from extra_headers. + (x86_64-*-*): Remove two duplicate gfniintrin.h entries from + extra_headers, make the list bitwise identical to the i?86-*-* one. + +2018-01-14 H.J. Lu + + * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow + -mcmodel=large with -mindirect-branch=thunk, + -mindirect-branch=thunk-extern, -mfunction-return=thunk and + -mfunction-return=thunk-extern. + * doc/invoke.texi: Document -mcmodel=large is incompatible with + -mindirect-branch=thunk, -mindirect-branch=thunk-extern, + -mfunction-return=thunk and -mfunction-return=thunk-extern. + +2018-01-14 H.J. Lu + + * config/i386/i386.c (print_reg): Print the name of the full + integer register without '%'. + (ix86_print_operand): Handle 'V'. + * doc/extend.texi: Document 'V' modifier. + +2018-01-14 H.J. Lu + + * config/i386/constraints.md (Bs): Disallow memory operand for + -mindirect-branch-register. + (Bw): Likewise. + * config/i386/predicates.md (indirect_branch_operand): Likewise. + (GOT_memory_operand): Likewise. + (call_insn_operand): Likewise. + (sibcall_insn_operand): Likewise. + (GOT32_symbol_operand): Likewise. + * config/i386/i386.md (indirect_jump): Call convert_memory_address + for -mindirect-branch-register. + (tablejump): Likewise. + (*sibcall_memory): Likewise. + (*sibcall_value_memory): Likewise. + Disallow peepholes of indirect call and jump via memory for + -mindirect-branch-register. + (*call_pop): Replace m with Bw. + (*call_value_pop): Likewise. + (*sibcall_pop_memory): Replace m with Bs. + * config/i386/i386.opt (mindirect-branch-register): New option. + * doc/invoke.texi: Document -mindirect-branch-register option. + +2018-01-14 H.J. Lu + + * config/i386/i386-protos.h (ix86_output_function_return): New. + * config/i386/i386.c (ix86_set_indirect_branch_type): Also + set function_return_type. + (indirect_thunk_name): Add ret_p to indicate thunk for function + return. + (output_indirect_thunk_function): Pass false to + indirect_thunk_name. + (ix86_output_indirect_branch_via_reg): Likewise. + (ix86_output_indirect_branch_via_push): Likewise. + (output_indirect_thunk_function): Create alias for function + return thunk if regno < 0. + (ix86_output_function_return): New function. + (ix86_handle_fndecl_attribute): Handle function_return. + (ix86_attribute_table): Add function_return. + * config/i386/i386.h (machine_function): Add + function_return_type. + * config/i386/i386.md (simple_return_internal): Use + ix86_output_function_return. + (simple_return_internal_long): Likewise. + * config/i386/i386.opt (mfunction-return=): New option. + (indirect_branch): Mention -mfunction-return=. + * doc/extend.texi: Document function_return function attribute. + * doc/invoke.texi: Document -mfunction-return= option. + +2018-01-14 H.J. Lu + + * config/i386/i386-opts.h (indirect_branch): New. + * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise. + * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone + with local indirect jump when converting indirect call and jump. + (ix86_set_indirect_branch_type): New. + (ix86_set_current_function): Call ix86_set_indirect_branch_type. + (indirectlabelno): New. + (indirect_thunk_needed): Likewise. + (indirect_thunk_bnd_needed): Likewise. + (indirect_thunks_used): Likewise. + (indirect_thunks_bnd_used): Likewise. + (INDIRECT_LABEL): Likewise. + (indirect_thunk_name): Likewise. + (output_indirect_thunk): Likewise. + (output_indirect_thunk_function): Likewise. + (ix86_output_indirect_branch_via_reg): Likewise. + (ix86_output_indirect_branch_via_push): Likewise. + (ix86_output_indirect_branch): Likewise. + (ix86_output_indirect_jmp): Likewise. + (ix86_code_end): Call output_indirect_thunk_function if needed. + (ix86_output_call_insn): Call ix86_output_indirect_branch if + needed. + (ix86_handle_fndecl_attribute): Handle indirect_branch. + (ix86_attribute_table): Add indirect_branch. + * config/i386/i386.h (machine_function): Add indirect_branch_type + and has_local_indirect_jump. + * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump + to true. + (tablejump): Likewise. + (*indirect_jump): Use ix86_output_indirect_jmp. + (*tablejump_1): Likewise. + (simple_return_indirect_internal): Likewise. + * config/i386/i386.opt (mindirect-branch=): New option. + (indirect_branch): New. + (keep): Likewise. + (thunk): Likewise. + (thunk-inline): Likewise. + (thunk-extern): Likewise. + * doc/extend.texi: Document indirect_branch function attribute. + * doc/invoke.texi: Document -mindirect-branch= option. + +2018-01-14 Jan Hubicka + + PR ipa/83051 + * ipa-inline.c (edge_badness): Tolerate roundoff errors. + +2018-01-14 Richard Sandiford + + * ipa-inline.c (want_inline_small_function_p): Return false if + inlining has already failed with CIF_FINAL_ERROR. + (update_caller_keys): Call want_inline_small_function_p before + can_inline_edge_p. + (update_callee_keys): Likewise. + +2018-01-10 Kelvin Nilsen + + * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p): + New function. + (rs6000_quadword_masked_address_p): Likewise. + (quad_aligned_load_p): Likewise. + (quad_aligned_store_p): Likewise. + (const_load_sequence_p): Add comment to describe the outer-most loop. + (mimic_memory_attributes_and_flags): New function. + (rs6000_gen_stvx): Likewise. + (replace_swapped_aligned_store): Likewise. + (rs6000_gen_lvx): Likewise. + (replace_swapped_aligned_load): Likewise. + (replace_swapped_load_constant): Capitalize argument name in + comment describing this function. + (rs6000_analyze_swaps): Add a third pass to search for vector loads + and stores that access quad-word aligned addresses and replace + with stvx or lvx instructions when appropriate. + * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p): + New function prototype. + (rs6000_quadword_masked_address_p): Likewise. + (rs6000_gen_lvx): Likewise. + (rs6000_gen_stvx): Likewise. + * config/rs6000/vsx.md (*vsx_le_perm_load_): For modes + VSX_D (V2DF, V2DI), modify this split to select lvx instruction + when memory address is aligned. + (*vsx_le_perm_load_): For modes VSX_W (V4SF, V4SI), modify + this split to select lvx instruction when memory address is aligned. + (*vsx_le_perm_load_v8hi): Modify this split to select lvx + instruction when memory address is aligned. + (*vsx_le_perm_load_v16qi): Likewise. + (four unnamed splitters): Modify to select the stvx instruction + when memory is aligned. + +2018-01-13 Jan Hubicka + + * predict.c (determine_unlikely_bbs): Handle correctly BBs + which appears in the queue multiple times. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (vec_lower_bound): New structure. + (_loop_vec_info): Add check_nonzero and lower_bounds. + (LOOP_VINFO_CHECK_NONZERO): New macro. + (LOOP_VINFO_LOWER_BOUNDS): Likewise. + (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too. + * tree-data-ref.h (dr_with_seg_len): Add access_size and align + fields. Make seg_len the distance travelled, not including the + access size. + (dr_direction_indicator): Declare. + (dr_zero_step_indicator): Likewise. + (dr_known_forward_stride_p): Likewise. + * tree-data-ref.c: Include stringpool.h, tree-vrp.h and + tree-ssanames.h. + (runtime_alias_check_p): Allow runtime alias checks with + variable strides. + (operator ==): Compare access_size and align. + (prune_runtime_alias_test_list): Rework for new distinction between + the access_size and seg_len. + (create_intersect_range_checks_index): Likewise. Cope with polynomial + segment lengths. + (get_segment_min_max): New function. + (create_intersect_range_checks): Use it. + (dr_step_indicator): New function. + (dr_direction_indicator): Likewise. + (dr_zero_step_indicator): Likewise. + (dr_known_forward_stride_p): Likewise. + * tree-loop-distribution.c (data_ref_segment_size): Return + DR_STEP * (niters - 1). + (compute_alias_check_pairs): Update call to the dr_with_seg_len + constructor. + * tree-vect-data-refs.c (vect_check_nonzero_value): New function. + (vect_preserves_scalar_order_p): New function, split out from... + (vect_analyze_data_ref_dependence): ...here. Check for zero steps. + (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1). + (vect_vfa_access_size): New function. + (vect_vfa_align): Likewise. + (vect_compile_time_alias): Take access_size_a and access_b arguments. + (dump_lower_bound): New function. + (vect_check_lower_bound): Likewise. + (vect_small_gap_p): Likewise. + (vectorizable_with_step_bound_p): Likewise. + (vect_prune_runtime_alias_test_list): Ignore cross-iteration + depencies if the vectorization factor is 1. Convert the checks + for nonzero steps into checks on the bounds of DR_STEP. Try using + a bunds check for variable steps if the minimum required step is + relatively small. Update calls to the dr_with_seg_len + constructor and to vect_compile_time_alias. + * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New + function. + (vect_loop_versioning): Call it. + * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS + when retrying. + (vect_estimate_min_profitable_iters): Account for any bounds checks. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_scatter_store): Document. + * optabs.def (scatter_store_optab, mask_scatter_store_optab): New + optabs. + * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}): + Document. + * genopinit.c (main): Add supports_vec_scatter_store and + supports_vec_scatter_store_cached to target_optabs. + * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and + IFN_MASK_SCATTER_STORE. + * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal + functions. + * internal-fn.h (internal_store_fn_p): Declare. + (internal_fn_stored_value_index): Likewise. + * internal-fn.c (scatter_store_direct): New macro. + (expand_scatter_store_optab_fn): New function. + (direct_scatter_store_optab_supported_p): New macro. + (internal_store_fn_p): New function. + (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and + IFN_MASK_SCATTER_STORE. + (internal_fn_mask_index): Likewise. + (internal_fn_stored_value_index): New function. + (internal_gather_scatter_fn_supported_p): Adjust operand numbers + for scatter stores. + * optabs-query.h (supports_vec_scatter_store_p): Declare. + * optabs-query.c (supports_vec_scatter_store_p): New function. + * tree-vectorizer.h (vect_get_store_rhs): Declare. + * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return + true for scatter stores. + (vect_gather_scatter_fn_p): Handle scatter stores too. + (vect_check_gather_scatter): Consider using scatter stores if + supports_vec_scatter_store_p. + * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle + scatter stores too. + * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use + internal_fn_stored_value_index. + (check_load_store_masking): Handle scatter stores too. + (vect_get_store_rhs): Make public. + (vectorizable_call): Use internal_store_fn_p. + (vectorizable_store): Handle scatter store internal functions. + (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE + when deciding whether the end of the group has been reached. + * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec. + * config/aarch64/aarch64-sve.md (scatter_store): New expander. + (mask_scatter_store): New insns. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare. + * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public. + * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New + function. + (vect_use_strided_gather_scatters_p): Take a masked_p argument. + Use vect_truncate_gather_scatter_offset if we can't treat the + operation as a normal gather load or scatter store. + (get_group_load_store_type): Take the gather_scatter_info + as argument. Try using a gather load or scatter store for + single-element groups. + (get_load_store_type): Update calls to get_group_load_store_type + and vect_use_strided_gather_scatters_p. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra + optional tree argument. + * tree-vect-data-refs.c (vect_check_gather_scatter): Check for + null target hooks. + (vect_create_data_ref_ptr): Take the iv_step as an optional argument, + but continue to use the current value as a fallback. + (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare + to compare the updates. + * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function. + (get_load_store_type): Use it when handling a strided access. + (vect_get_strided_load_store_ops): New function. + (vect_get_data_ptr_increment): Likewise. + (vectorizable_load): Handle strided gather loads. Always pass + a step to vect_create_data_ref_ptr and bump_vector_ptr. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/md.texi (gather_load@var{m}): Document. + (mask_gather_load@var{m}): Likewise. + * genopinit.c (main): Add supports_vec_gather_load and + supports_vec_gather_load_cached to target_optabs. + * optabs-tree.c (init_tree_optimization_optabs): Use + ggc_cleared_alloc to allocate target_optabs. + * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs. + * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal + functions. + * internal-fn.h (internal_load_fn_p): Declare. + (internal_gather_scatter_fn_p): Likewise. + (internal_fn_mask_index): Likewise. + (internal_gather_scatter_fn_supported_p): Likewise. + * internal-fn.c (gather_load_direct): New macro. + (expand_gather_load_optab_fn): New function. + (direct_gather_load_optab_supported_p): New macro. + (direct_internal_fn_optab): New function. + (internal_load_fn_p): Likewise. + (internal_gather_scatter_fn_p): Likewise. + (internal_fn_mask_index): Likewise. + (internal_gather_scatter_fn_supported_p): Likewise. + * optabs-query.c (supports_at_least_one_mode_p): New function. + (supports_vec_gather_load_p): Likewise. + * optabs-query.h (supports_vec_gather_load_p): Declare. + * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type + and memory_type field. + (NUM_PATTERNS): Bump to 15. + * tree-vect-data-refs.c: Include internal-fn.h. + (vect_gather_scatter_fn_p): New function. + (vect_describe_gather_scatter_call): Likewise. + (vect_check_gather_scatter): Try using internal functions for + gather loads. Recognize existing calls to a gather load function. + (vect_analyze_data_refs): Consider using gather loads if + supports_vec_gather_load_p. + * tree-vect-patterns.c (vect_get_load_store_mask): New function. + (vect_get_gather_scatter_offset_type): Likewise. + (vect_convert_mask_for_vectype): Likewise. + (vect_add_conversion_to_patterm): Likewise. + (vect_try_gather_scatter_pattern): Likewise. + (vect_recog_gather_scatter_pattern): New pattern recognizer. + (vect_vect_recog_func_ptrs): Add it. + * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use + internal_fn_mask_index and internal_gather_scatter_fn_p. + (check_load_store_masking): Take the gather_scatter_info as an + argument and handle gather loads. + (vect_get_gather_scatter_ops): New function. + (vectorizable_call): Check internal_load_fn_p. + (vectorizable_load): Likewise. Handle gather load internal + functions. + (vectorizable_store): Update call to check_load_store_masking. + * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec. + * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators. + * config/aarch64/predicates.md (aarch64_gather_scale_operand_w) + (aarch64_gather_scale_operand_d): New predicates. + * config/aarch64/aarch64-sve.md (gather_load): New expander. + (mask_gather_load): New insns. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs.def (fold_left_plus_optab): New optab. + * doc/md.texi (fold_left_plus_@var{m}): Document. + * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function. + * internal-fn.c (fold_left_direct): Define. + (expand_fold_left_optab_fn): Likewise. + (direct_fold_left_optab_supported_p): Likewise. + * fold-const-call.c (fold_const_fold_left): New function. + (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS. + * tree-parloops.c (valid_reduction_p): New function. + (gather_scalar_reductions): Use it. + * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type. + (vect_finish_replace_stmt): Declare. + * tree-vect-loop.c (fold_left_reduction_fn): New function. + (needs_fold_left_reduction_p): New function, split out from... + (vect_is_simple_reduction): ...here. Accept reductions that + forbid reassociation, but give them type FOLD_LEFT_REDUCTION. + (vect_force_simple_reduction): Also store the reduction type in + the assignment's STMT_VINFO_REDUC_TYPE. + (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION. + (merge_with_identity): New function. + (vect_expand_fold_left): Likewise. + (vectorize_fold_left_reduction): Likewise. + (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the + scalar phi in place for it. Check for target support and reject + cases that would reassociate the operation. Defer the transform + phase to vectorize_fold_left_reduction. + * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec. + * config/aarch64/aarch64-sve.md (fold_left_plus_): New expander. + (*fold_left_plus_, *pred_fold_left_plus_): New insns. + +2018-01-13 Richard Sandiford + + * tree-if-conv.c (predicate_mem_writes): Remove redundant + call to ifc_temp_var. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (legitimize_address_displacement): Take the original + offset as a poly_int. + * targhooks.h (default_legitimize_address_displacement): Update + accordingly. + * targhooks.c (default_legitimize_address_displacement): Likewise. + * doc/tm.texi: Regenerate. + * lra-constraints.c (base_plus_disp_to_reg): Take the displacement + as an argument, moving assert of ad->disp == ad->disp_term to... + (process_address_1): ...here. Update calls to base_plus_disp_to_reg. + Try calling targetm.legitimize_address_displacement before expanding + the address rather than afterwards, and adjust for the new interface. + * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement): + Match the new hook interface. Handle SVE addresses. + * config/sh/sh.c (sh_legitimize_address_displacement): Make the + new hook interface. + +2018-01-13 Richard Sandiford + + * Makefile.in (OBJS): Add early-remat.o. + * target.def (select_early_remat_modes): New hook. + * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook. + * doc/tm.texi: Regenerate. + * targhooks.h (default_select_early_remat_modes): Declare. + * targhooks.c (default_select_early_remat_modes): New function. + * timevar.def (TV_EARLY_REMAT): New timevar. + * passes.def (pass_early_remat): New pass. + * tree-pass.h (make_pass_early_remat): Declare. + * early-remat.c: New file. + * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New + function. + (TARGET_SELECT_EARLY_REMAT_MODES): Define. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace + vfm1 with a bound_epilog parameter. + (vect_do_peeling): Update calls accordingly, and move the prologue + call earlier in the function. Treat the base bound_epilog as 0 for + fully-masked loops and retain vf - 1 for other loops. Add 1 to + this base when peeling for gaps. + * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps + with fully-masked loops. + (vect_estimate_min_profitable_iters): Handle the single peeled + iteration in that case. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow + single-element interleaving even if the size is not a power of 2. + * tree-vect-stmts.c (get_load_store_type): Disallow elementwise + accesses for single-element interleaving if the group size is + not a power of 2. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/md.texi (fold_extract_last_@var{m}): Document. + * doc/sourcebuild.texi (vect_fold_extract_last): Likewise. + * optabs.def (fold_extract_last_optab): New optab. + * internal-fn.def (FOLD_EXTRACT_LAST): New internal function. + * internal-fn.c (fold_extract_direct): New macro. + (expand_fold_extract_optab_fn): Likewise. + (direct_fold_extract_optab_supported_p): Likewise. + * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type. + * tree-vect-loop.c (vect_model_reduction_cost): Handle + EXTRACT_LAST_REDUCTION. + (get_initial_def_for_reduction): Do not create an initial vector + for EXTRACT_LAST_REDUCTION reductions. + (vectorizable_reduction): Leave the scalar phi in place for + EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION + ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an + epilogue code for EXTRACT_LAST_REDUCTION and defer the + transform phase to vectorizable_condition. + * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function, + split out from... + (vect_finish_stmt_generation): ...here. + (vect_finish_replace_stmt): New function. + (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION. + * config/aarch64/aarch64-sve.md (fold_extract_last_): New + pattern. + * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/md.texi (extract_last_@var{m}): Document. + * optabs.def (extract_last_optab): New optab. + * internal-fn.def (EXTRACT_LAST): New internal function. + * internal-fn.c (cond_unary_direct): New macro. + (expand_cond_unary_optab_fn): Likewise. + (direct_cond_unary_optab_supported_p): Likewise. + * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked + loops using EXTRACT_LAST. + * config/aarch64/aarch64-sve.md (aarch64_sve_lastb): Rename to... + (extract_last_): ...this optab. + (vec_extract): Update accordingly. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (empty_mask_is_expensive): New hook. + * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook. + * doc/tm.texi: Regenerate. + * targhooks.h (default_empty_mask_is_expensive): Declare. + * targhooks.c (default_empty_mask_is_expensive): New function. + * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores + if the target says that empty masks are expensive. + * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive): + New function. + (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field. + (LOOP_VINFO_MASK_SKIP_NITERS): New macro. + (vect_use_loop_mask_for_alignment_p): New function. + (vect_prepare_for_masked_peels, vect_gen_while_not): Declare. + * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an + niters_skip argument. Make sure that the first niters_skip elements + of the first iteration are inactive. + (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS. + Update call to vect_set_loop_masks_directly. + (get_misalign_in_elems): New function, split out from... + (vect_gen_prolog_loop_niters): ...here. + (vect_update_init_of_dr): Take a code argument that specifies whether + the adjustment should be added or subtracted. + (vect_update_init_of_drs): Likewise. + (vect_prepare_for_masked_peels): New function. + (vect_do_peeling): Skip prologue peeling if we're using a mask + instead. Update call to vect_update_inits_of_drs. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize + mask_skip_niters. + (vect_analyze_loop_2): Allow fully-masked loops with peeling for + alignment. Do not include the number of peeled iterations in + the minimum threshold in that case. + (vectorizable_induction): Adjust the start value down by + LOOP_VINFO_MASK_SKIP_NITERS iterations. + (vect_transform_loop): Call vect_prepare_for_masked_peels. + Take the number of skipped iterations into account when calculating + the loop bounds. + * tree-vect-stmts.c (vect_gen_while_not): New function. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_fully_masked): Document. + * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and + default value to 0. + * tree-vect-loop.c (vect_analyze_loop_costing): New function, + split out from... + (vect_analyze_loop_2): ...here. Don't check the vectorization + factor against the number of loop iterations if the loop is + fully-masked. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into... + (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types. + (dump_groups): Update accordingly. + (iv_use::mem_type): New member variable. + (address_p): New function. + (record_use): Add a mem_type argument and initialize the new + mem_type field. + (record_group_use): Add a mem_type argument. Use address_p. + Remove obsolete null checks of base_object. Update call to record_use. + (find_interesting_uses_op): Update call to record_group_use. + (find_interesting_uses_cond): Likewise. + (find_interesting_uses_address): Likewise. + (get_mem_type_for_internal_fn): New function. + (find_address_like_use): Likewise. + (find_interesting_uses_stmt): Try find_address_like_use before + calling find_interesting_uses_op. + (addr_offset_valid_p): Use the iv mem_type field as the type + of the addressed memory. + (add_autoinc_candidates): Likewise. + (get_address_cost): Likewise. + (split_small_address_groups_p): Use address_p. + (split_address_groups): Likewise. + (add_iv_candidate_for_use): Likewise. + (autoinc_possible_for_pair): Likewise. + (rewrite_groups): Likewise. + (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS. + (determine_group_iv_cost): Update after split of USE_ADDRESS. + (get_alias_ptr_type_for_ptr_address): New function. + (rewrite_use_address): Rewrite address uses in calls that were + identified by find_address_like_use. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of + TARGET_MEM_REFs. + * gimple-expr.h (is_gimple_addressable: Likewise. + * gimple-expr.c (is_gimple_address): Likewise. + * internal-fn.c (expand_call_mem_ref): New function. + (expand_mask_load_optab_fn): Use it. + (expand_mask_store_optab_fn): Likewise. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode}) + (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode}) + (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode}) + (cond_umax@var{mode}): Document. + * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab) + (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab) + (cond_umin_optab, cond_umax_optab): New optabs. + * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND) + (COND_IOR, COND_XOR): New internal functions. + * internal-fn.h (get_conditional_internal_fn): Declare. + * internal-fn.c (cond_binary_direct): New macro. + (expand_cond_binary_optab_fn): Likewise. + (direct_cond_binary_optab_supported_p): Likewise. + (get_conditional_internal_fn): New function. + * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops. + Cope with reduction statements that are vectorized as calls rather + than assignments. + * config/aarch64/aarch64-sve.md (cond_): New insns. + * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB) + (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN) + (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR) + (UNSPEC_COND_EOR): New unspecs. + (optab): Add mappings for them. + (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators. + (sve_int_op, sve_fp_op): New int attributes. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs.def (while_ult_optab): New optab. + * doc/md.texi (while_ult@var{m}@var{n}): Document. + * internal-fn.def (WHILE_ULT): New internal function. + * internal-fn.h (direct_internal_fn_supported_p): New override + that takes two types as argument. + * internal-fn.c (while_direct): New macro. + (expand_while_optab_fn): New function. + (convert_optab_supported_p): Likewise. + (direct_while_optab_supported_p): New macro. + * wide-int.h (wi::udiv_ceil): New function. + * tree-vectorizer.h (rgroup_masks): New structure. + (vec_loop_masks): New typedef. + (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p + and fully_masked_p. + (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P) + (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros. + (vect_max_vf): New function. + (slpeel_make_loop_iterate_ntimes): Delete. + (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while) + (vect_halve_mask_nunits, vect_double_mask_nunits): Declare. + (vect_record_loop_mask, vect_get_loop_mask): Likewise. + * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h, + internal-fn.h, stor-layout.h and optabs-query.h. + (vect_set_loop_mask): New function. + (add_preheader_seq): Likewise. + (add_header_seq): Likewise. + (interleave_supported_p): Likewise. + (vect_maybe_permute_loop_masks): Likewise. + (vect_set_loop_masks_directly): Likewise. + (vect_set_loop_condition_masked): Likewise. + (vect_set_loop_condition_unmasked): New function, split out from + slpeel_make_loop_iterate_ntimes. + (slpeel_make_loop_iterate_ntimes): Rename to.. + (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked + for fully-masked loops and vect_set_loop_condition_unmasked otherwise. + (vect_do_peeling): Update call accordingly. + (vect_gen_vector_loop_niters): Use VF as the step for fully-masked + loops. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize + mask_compare_type, can_fully_mask_p and fully_masked_p. + (release_vec_loop_masks): New function. + (_loop_vec_info): Use it to free the loop masks. + (can_produce_all_loop_masks_p): New function. + (vect_get_max_nscalars_per_iter): Likewise. + (vect_verify_full_masking): Likewise. + (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around + retries, and free the mask rgroups before retrying. Check loop-wide + reasons for disallowing fully-masked loops. Make the final decision + about whether use a fully-masked loop or not. + (vect_estimate_min_profitable_iters): Do not assume that peeling + for the number of iterations will be needed for fully-masked loops. + (vectorizable_reduction): Disable fully-masked loops. + (vectorizable_live_operation): Likewise. + (vect_halve_mask_nunits): New function. + (vect_double_mask_nunits): Likewise. + (vect_record_loop_mask): Likewise. + (vect_get_loop_mask): Likewise. + (vect_transform_loop): Handle the case in which the final loop + iteration might handle a partial vector. Call vect_set_loop_condition + instead of slpeel_make_loop_iterate_ntimes. + * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h. + (check_load_store_masking): New function. + (prepare_load_store_mask): Likewise. + (vectorizable_store): Handle fully-masked loops. + (vectorizable_load): Likewise. + (supportable_widening_operation): Use vect_halve_mask_nunits for + booleans. + (supportable_narrowing_operation): Likewise vect_double_mask_nunits. + (vect_gen_while): New function. + * config/aarch64/aarch64.md (umax3): New expander. + (aarch64_uqdec): New insn. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab) + (reduc_xor_scal_optab): New optabs. + * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m}) + (reduc_xor_scal_@var{m}): Document. + * doc/sourcebuild.texi (vect_logical_reduc): Likewise. + * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New + internal functions. + * fold-const-call.c (fold_const_call): Handle them. + * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new + internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR. + * config/aarch64/aarch64-sve.md (reduc__scal_): + (*reduc__scal_): New patterns. + * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV) + (UNSPEC_XORV): New unspecs. + (optab): Add entries for them. + (BITWISEV): New int iterator. + (bit_reduc_op): New int attributes. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/md.texi (vec_shl_insert_@var{m}): New optab. + * internal-fn.def (VEC_SHL_INSERT): New internal function. + * optabs.def (vec_shl_insert_optab): New optab. + * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare. + (duplicate_and_interleave): Likewise. + * tree-vect-loop.c: Include internal-fn.h. + (neutral_op_for_slp_reduction): New function, split out from + get_initial_defs_for_reduction. + (get_initial_def_for_reduction): Handle option 2 for variable-length + vectors by loading the neutral value into a vector and then shifting + the initial value into element 0. + (get_initial_defs_for_reduction): Replace the code argument with + the neutral value calculated by neutral_op_for_slp_reduction. + Use gimple_build_vector for constant-length vectors. + Use IFN_VEC_SHL_INSERT for variable-length vectors if all + but the first group_size elements have a neutral value. + Use duplicate_and_interleave otherwise. + (vect_create_epilog_for_reduction): Take a neutral_op parameter. + Update call to get_initial_defs_for_reduction. Handle SLP + reductions for variable-length vectors by creating one vector + result for each scalar result, with the elements associated + with other scalar results stubbed out with the neutral value. + (vectorizable_reduction): Call neutral_op_for_slp_reduction. + Require IFN_VEC_SHL_INSERT for double reductions on + variable-length vectors, or SLP reductions that have + a neutral value. Require can_duplicate_and_interleave_p + support for variable-length unchained SLP reductions if there + is no neutral value, such as for MIN/MAX reductions. Also require + the number of vector elements to be a multiple of the number of + SLP statements when doing variable-length unchained SLP reductions. + Update call to vect_create_epilog_for_reduction. + * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public + and remove initial values. + (duplicate_and_interleave): Make public. + * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec. + * config/aarch64/aarch64-sve.md (vec_shl_insert_): New insn. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h + (can_duplicate_and_interleave_p): New function. + (vect_get_and_check_slp_defs): Take the vector of statements + rather than just the current one. Remove excess parentheses. + Restriction rejectinon of vect_constant_def and vect_external_def + for variable-length vectors to boolean types, or types for which + can_duplicate_and_interleave_p is false. + (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs. + (duplicate_and_interleave): New function. + (vect_get_constant_vectors): Use gimple_build_vector for + constant-length vectors and suitable variable-length constant + vectors. Use duplicate_and_interleave for other variable-length + vectors. Don't defer the update when inserting new statements. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure + min_profitable_iters doesn't go negative. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document. + (vec_mask_store_lanes@var{m}@var{n}): Likewise. + * optabs.def (vec_mask_load_lanes_optab): New optab. + (vec_mask_store_lanes_optab): Likewise. + * internal-fn.def (MASK_LOAD_LANES): New internal function. + (MASK_STORE_LANES): Likewise. + * internal-fn.c (mask_load_lanes_direct): New macro. + (mask_store_lanes_direct): Likewise. + (expand_mask_load_optab_fn): Handle masked operations. + (expand_mask_load_lanes_optab_fn): New macro. + (expand_mask_store_optab_fn): Handle masked operations. + (expand_mask_store_lanes_optab_fn): New macro. + (direct_mask_load_lanes_optab_supported_p): Likewise. + (direct_mask_store_lanes_optab_supported_p): Likewise. + * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p + parameter. + (vect_load_lanes_supported): Likewise. + * tree-vect-data-refs.c (strip_conversion): New function. + (can_group_stmts_p): Likewise. + (vect_analyze_data_ref_accesses): Use it instead of checking + for a pair of assignments. + (vect_store_lanes_supported): Take a masked_p parameter. + (vect_load_lanes_supported): Likewise. + * tree-vect-loop.c (vect_analyze_loop_2): Update calls to + vect_store_lanes_supported and vect_load_lanes_supported. + * tree-vect-slp.c (vect_analyze_slp_instance): Likewise. + * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p + parameter. Don't allow gaps for masked accesses. + Use vect_get_store_rhs. Update calls to vect_store_lanes_supported + and vect_load_lanes_supported. + (get_load_store_type): Take a masked_p parameter and update + call to get_group_load_store_type. + (vectorizable_store): Update call to get_load_store_type. + Handle IFN_MASK_STORE_LANES. + (vectorizable_load): Update call to get_load_store_type. + Handle IFN_MASK_LOAD_LANES. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector + modes for SVE. + * config/aarch64/aarch64-protos.h + (aarch64_sve_struct_memory_operand_p): Declare. + * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator. + (vector_count, insn_length, VSINGLE, vsingle): New mode attributes. + (VPRED, vpred): Handle SVE structure modes. + * config/aarch64/constraints.md (Utx): New constraint. + * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand) + (aarch64_sve_struct_nonimmediate_operand): New predicates. + * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs. + * config/aarch64/aarch64-sve.md (mov, *aarch64_sve_mov_le) + (*aarch64_sve_mov_be, pred_mov): New patterns for + structure modes. Split into pieces after RA. + (vec_load_lanes, vec_mask_load_lanes) + (vec_store_lanes, vec_mask_store_lanes): + New patterns. + * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle + SVE structure modes. + (aarch64_classify_address): Likewise. + (sizetochar): Move earlier in file. + (aarch64_print_operand): Handle SVE register lists. + (aarch64_array_mode): New function. + (aarch64_sve_struct_memory_operand_p): Likewise. + (TARGET_ARRAY_MODE): Redefine. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (array_mode): New target hook. + * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook. + * doc/tm.texi: Regenerate. + * hooks.h (hook_optmode_mode_uhwi_none): Declare. + * hooks.c (hook_optmode_mode_uhwi_none): New function. + * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use + targetm.array_mode. + * stor-layout.c (mode_for_array): Likewise. Support polynomial + type sizes. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * fold-const.c (fold_binary_loc): Check the argument types + rather than the result type when testing for a vector operation. + +2018-01-13 Richard Sandiford + + * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document. + * doc/tm.texi: Regenerate. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/invoke.texi (-msve-vector-bits=): Document new option. + (sve): Document new AArch64 extension. + * doc/md.texi (w): Extend the description of the AArch64 + constraint to include SVE vectors. + (Upl, Upa): Document new AArch64 predicate constraints. + * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New + enum. + * config/aarch64/aarch64.opt (sve_vector_bits): New enum. + (msve-vector-bits=): New option. + * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable + SVE when these are disabled. + (sve): New extension. + * config/aarch64/aarch64-modes.def: Define SVE vector and predicate + modes. Adjust their number of units based on aarch64_sve_vg. + (MAX_BITSIZE_MODE_ANY_MODE): Define. + * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New + aarch64_addr_query_type. + (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode) + (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p) + (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries) + (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate) + (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate) + (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare. + (aarch64_simd_imm_zero_p): Delete. + (aarch64_check_zero_based_sve_index_immediate): Declare. + (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p) + (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p) + (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p) + (aarch64_sve_float_mul_immediate_p): Likewise. + (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT + rather than an rtx. + (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare. + (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback. + (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare. + (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float) + (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare. + (aarch64_regmode_natural_size): Likewise. + * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro. + (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift + left one place. + (AARCH64_ISA_SVE, TARGET_SVE): New macros. + (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries + for VG and the SVE predicate registers. + (V_ALIASES): Add a "z"-prefixed alias. + (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1. + (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros. + (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise. + (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes. + (REG_CLASS_NAMES): Add entries for them. + (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG + and the predicate registers. + (aarch64_sve_vg): Declare. + (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED) + (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros. + (REGMODE_NATURAL_SIZE): Define. + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle + SVE macros. + * config/aarch64/aarch64.c: Include cfgrtl.h. + (simd_immediate_info): Add a constructor for series vectors, + and an associated step field. + (aarch64_sve_vg): New variable. + (aarch64_dbx_register_number): Handle VG and the predicate registers. + (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete. + (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE) + (VEC_ANY_DATA, VEC_STRUCT): New constants. + (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p) + (aarch64_classify_vector_mode, aarch64_vector_data_mode_p) + (aarch64_sve_data_mode_p, aarch64_sve_pred_mode) + (aarch64_get_mask_mode): New functions. + (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS + and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS. + (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE + predicate modes and predicate registers. Explicitly restrict + GPRs to modes of 16 bytes or smaller. Only allow FP registers + to store a vector mode if it is recognized by + aarch64_classify_vector_mode. + (aarch64_regmode_natural_size): New function. + (aarch64_hard_regno_caller_save_mode): Return the original mode + for predicates. + (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate) + (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl) + (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate) + (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New + functions. + (aarch64_add_offset): Add a temp2 parameter. Assert that temp1 + does not overlap dest if the function is frame-related. Handle + SVE constants. + (aarch64_split_add_offset): New function. + (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass + them aarch64_add_offset. + (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter + and update call to aarch64_sub_sp. + (aarch64_add_cfa_expression): New function. + (aarch64_expand_prologue): Pass extra temporary registers to the + functions above. Handle the case in which we need to emit new + DW_CFA_expressions for registers that were originally saved + relative to the stack pointer, but now have to be expressed + relative to the frame pointer. + (aarch64_output_mi_thunk): Pass extra temporary registers to the + functions above. + (aarch64_expand_epilogue): Likewise. Prevent inheritance of + IP0 and IP1 values for SVE frames. + (aarch64_expand_vec_series): New function. + (aarch64_expand_sve_widened_duplicate): Likewise. + (aarch64_expand_sve_const_vector): Likewise. + (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter. + Handle SVE constants. Use emit_move_insn to move a force_const_mem + into the register, rather than emitting a SET directly. + (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move) + (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p) + (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p) + (offset_9bit_signed_scaled_p): New functions. + (aarch64_replicate_bitmask_imm): New function. + (aarch64_bitmask_imm): Use it. + (aarch64_cannot_force_const_mem): Reject expressions involving + a CONST_POLY_INT. Update call to aarch64_classify_symbol. + (aarch64_classify_index): Handle SVE indices, by requiring + a plain register index with a scale that matches the element size. + (aarch64_classify_address): Handle SVE addresses. Assert that + the mode of the address is VOIDmode or an integer mode. + Update call to aarch64_classify_symbol. + (aarch64_classify_symbolic_expression): Update call to + aarch64_classify_symbol. + (aarch64_const_vec_all_in_range_p): New function. + (aarch64_print_vector_float_operand): Likewise. + (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than + "vN" for FP registers with SVE modes. Handle (const ...) vectors + and the FP immediates 1.0 and 0.5. + (aarch64_print_address_internal): Handle SVE addresses. + (aarch64_print_operand_address): Use ADDR_QUERY_ANY. + (aarch64_regno_regclass): Handle predicate registers. + (aarch64_secondary_reload): Handle big-endian reloads of SVE + data modes. + (aarch64_class_max_nregs): Handle SVE modes and predicate registers. + (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions. + (aarch64_convert_sve_vector_bits): New function. + (aarch64_override_options): Use it to handle -msve-vector-bits=. + (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT + rather than an rtx. + (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode. + Handle SVE vector and predicate modes. Accept VL-based constants + that need only one temporary register, and VL offsets that require + no temporary registers. + (aarch64_conditional_register_usage): Mark the predicate registers + as fixed if SVE isn't available. + (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode. + Return true for SVE vector and predicate modes. + (aarch64_simd_container_mode): Take the number of bits as a poly_int64 + rather than an unsigned int. Handle SVE modes. + (aarch64_preferred_simd_mode): Update call accordingly. Handle + SVE modes. + (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR + if SVE is enabled. + (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p) + (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p) + (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p) + (aarch64_sve_float_mul_immediate_p): New functions. + (aarch64_sve_valid_immediate): New function. + (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors. + Explicitly reject structure modes. Check for INDEX constants. + Handle PTRUE and PFALSE constants. + (aarch64_check_zero_based_sve_index_immediate): New function. + (aarch64_simd_imm_zero_p): Delete. + (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for + vector modes. Accept constants in the range of CNT[BHWD]. + (aarch64_simd_scalar_immediate_valid_for_move): Explicitly + ask for an Advanced SIMD mode. + (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions. + (aarch64_simd_vector_alignment): Handle SVE predicates. + (aarch64_vectorize_preferred_vector_alignment): New function. + (aarch64_simd_vector_alignment_reachable): Use it instead of + the vector size. + (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p. + (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New + functions. + (MAX_VECT_LEN): Delete. + (expand_vec_perm_d): Add a vec_flags field. + (emit_unspec2, aarch64_expand_sve_vec_perm): New functions. + (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip) + (aarch64_evpc_ext): Don't apply a big-endian lane correction + for SVE modes. + (aarch64_evpc_rev): Rename to... + (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE. + (aarch64_evpc_rev_global): New function. + (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP. + (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of + MAX_VECT_LEN. + (aarch64_evpc_sve_tbl): New function. + (aarch64_expand_vec_perm_const_1): Update after rename of + aarch64_evpc_rev. Handle SVE permutes too, trying + aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather + than aarch64_evpc_tbl. + (aarch64_vectorize_vec_perm_const): Initialize vec_flags. + (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code) + (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int) + (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or) + (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float) + (aarch64_expand_sve_vcond): New functions. + (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead + of aarch64_vector_mode_p. + (aarch64_dwarf_poly_indeterminate_value): New function. + (aarch64_compute_pressure_classes): Likewise. + (aarch64_can_change_mode_class): Likewise. + (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine. + (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise. + (TARGET_VECTORIZE_GET_MASK_MODE): Likewise. + (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise. + (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise. + (TARGET_CAN_CHANGE_MODE_CLASS): Likewise. + * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr) + (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New + constraints. + (Dn, Dl, Dr): Accept const as well as const_vector. + (Dz): Likewise. Compare against CONST0_RTX. + * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead + of "vector" where appropriate. + (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD) + (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators. + (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT) + (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE) + (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS) + (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs. + (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV) + (v_int_equiv): Extend to SVE modes. + (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New + mode attributes. + (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators. + (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt. + (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs. + (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP) + (SVE_COND_FP_CMP): New int iterators. + (perm_hilo): Handle the new unpack unspecs. + (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int + attributes. + * config/aarch64/predicates.md (aarch64_sve_cnt_immediate) + (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate) + (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand) + (aarch64_equality_operator, aarch64_constant_vector_operand) + (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates. + (aarch64_sve_nonimmediate_operand): Likewise. + (aarch64_sve_general_operand): Likewise. + (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise. + (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate) + (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise. + (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise. + (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise. + (aarch64_sve_float_arith_immediate): Likewise. + (aarch64_sve_float_arith_with_sub_immediate): Likewise. + (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise. + (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise. + (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise. + (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise. + (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise. + (aarch64_sve_float_arith_operand): Likewise. + (aarch64_sve_float_arith_with_sub_operand): Likewise. + (aarch64_sve_float_mul_operand): Likewise. + (aarch64_sve_vec_perm_operand): Likewise. + (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate. + (aarch64_mov_operand): Accept const_poly_int and const_vector. + (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const + as well as const_vector. + (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier + in file. Use CONST0_RTX and CONSTM1_RTX. + (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes. + (aarch64_simd_reg_or_zero): Accept const as well as const_vector. + Use aarch64_simd_imm_zero. + * config/aarch64/aarch64-sve.md: New file. + * config/aarch64/aarch64.md: Include it. + (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers. + (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE) + (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI) + (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK) + (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants. + (sve): New attribute. + (enabled): Disable instructions with the sve attribute unless + TARGET_SVE. + (movqi, movhi): Pass CONST_POLY_INT operaneds through + aarch64_expand_mov_immediate. + (*mov_aarch64, *movsi_aarch64, *movdi_aarch64): Handle + CNT[BHSD] immediates. + (movti): Split CONST_POLY_INT moves into two halves. + (add3): Accept aarch64_pluslong_or_poly_operand. + Split additions that need a temporary here if the destination + is the stack pointer. + (*add3_aarch64): Handle ADDVL and ADDPL immediates. + (*add3_poly_1): New instruction. + (set_clobber_cc): New expander. + +2018-01-13 Richard Sandiford + + * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes + parameter and use it instead of GET_MODE_SIZE (innermode). Use + inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode). + Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of + GET_MODE_NUNITS (innermode). Also add a first_elem parameter. + Change innermode from fixed_mode_size to machine_mode. + (simplify_subreg): Update call accordingly. Handle a constant-sized + subreg of a variable-length CONST_VECTOR. + +2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function. + (add_offset_to_base): New function, split out from... + (create_mem_ref): ...here. When handling a scale other than 1, + check first whether the address is valid without the offset. + Add it into the base if so, leaving the index and scale as-is. + +2018-01-12 Jakub Jelinek + + PR c++/83778 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call + fold_for_warn before checking if arg2 is INTEGER_CST. + +2018-01-12 Segher Boessenkool + + * config/rs6000/predicates.md (load_multiple_operation): Delete. + (store_multiple_operation): Delete. + * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING. + * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete. + * config/rs6000/rs6000-string.c (expand_block_move): Delete everything + guarded by TARGET_STRING. + (rs6000_output_load_multiple): Delete. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete + OPTION_MASK_STRING / TARGET_STRING handling. + (print_operand) <'N', 'O'>: Add comment that these are unused now. + (const rs6000_opt_masks) <"string">: Change mask to 0. + * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING. + (MASK_STRING): Delete. + * config/rs6000/rs6000.md (*mov_string): Delete TARGET_STRING + parts. Simplify. + (load_multiple): Delete. + (*ldmsi8): Delete. + (*ldmsi7): Delete. + (*ldmsi6): Delete. + (*ldmsi5): Delete. + (*ldmsi4): Delete. + (*ldmsi3): Delete. + (store_multiple): Delete. + (*stmsi8): Delete. + (*stmsi7): Delete. + (*stmsi6): Delete. + (*stmsi5): Delete. + (*stmsi4): Delete. + (*stmsi3): Delete. + (movmemsi_8reg): Delete. + (corresponding unnamed define_insn): Delete. + (movmemsi_6reg): Delete. + (corresponding unnamed define_insn): Delete. + (movmemsi_4reg): Delete. + (corresponding unnamed define_insn): Delete. + (movmemsi_2reg): Delete. + (corresponding unnamed define_insn): Delete. + (movmemsi_1reg): Delete. + (corresponding unnamed define_insn): Delete. + * config/rs6000/rs6000.opt (mno-string): New. + (mstring): Replace by deprecation warning stub. + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring. + +2018-01-12 Jakub Jelinek + + * regrename.c (regrename_do_replace): If replacing the same + reg multiple times, try to reuse last created gen_raw_REG. + + PR debug/81155 + * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition + main to workaround a bug in GDB. + +2018-01-12 Tom de Vries + + PR target/83737 + * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap. + +2018-01-12 Vladimir Makarov + + PR rtl-optimization/80481 + * ira-color.c (get_cap_member): New function. + (allocnos_conflict_by_live_ranges_p): Use it. + (slot_coalesced_allocno_live_ranges_intersect_p): Add assert. + (setup_slot_coalesced_allocno_live_ranges): Ditto. + +2018-01-12 Uros Bizjak + + PR target/83628 + * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern. + (*saddl_se_1): Ditto. + (*ssubsi_1): Ditto. + (*ssubl_se_1): Ditto. + +2018-01-12 Richard Sandiford + + * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest + rather than wi::to_widest for DR_INITs. + * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use + wi::to_poly_offset rather than wi::to_offset for DR_INIT. + (vect_analyze_data_ref_accesses): Require both DR_INITs to be + INTEGER_CSTs. + (vect_analyze_group_access_1): Note that here. + +2018-01-12 Richard Sandiford + + * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle + polynomial type sizes. + +2018-01-12 Richard Sandiford + + * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a + poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size. + (gimple_add_tmp_var): Likewise. + +2018-01-12 Martin Liska + + * gimple.c (gimple_alloc_counts): Use uint64_t instead of int. + (gimple_alloc_sizes): Likewise. + (dump_gimple_statistics): Use PRIu64 in printf format. + * gimple.h: Change uint64_t to int. + +2018-01-12 Martin Liska + + * tree-core.h: Use uint64_t instead of int. + * tree.c (tree_node_counts): Likewise. + (tree_node_sizes): Likewise. + (dump_tree_statistics): Use PRIu64 in printf format. + +2018-01-12 Martin Liska + + * Makefile.in: As qsort_chk is implemented in vec.c, add + vec.o to linkage of gencfn-macros. + * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's + passing the info to record_node_allocation_statistics. + (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration + and pass the info. + * ggc-common.c (struct ggc_usage): Add operator== and use + it in operator< and compare function. + * mem-stats.h (struct mem_usage): Likewise. + * vec.c (struct vec_usage): Remove operator< and compare + function. Can be simply inherited. + +2018-01-12 Martin Jambor + + PR target/81616 + * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS. + * tree-ssa-math-opts.c: Include domwalk.h. + (convert_mult_to_fma_1): New function. + (fma_transformation_info): New type. + (fma_deferring_state): Likewise. + (cancel_fma_deferring): New function. + (result_of_phi): Likewise. + (last_fma_candidate_feeds_initial_phi): Likewise. + (convert_mult_to_fma): Added deferring logic, split actual + transformation to convert_mult_to_fma_1. + (math_opts_dom_walker): New type. + (math_opts_dom_walker::after_dom_children): New method, body moved + here from pass_optimize_widening_mul::execute, added deferring logic + bits. + (pass_optimize_widening_mul::execute): Moved most of code to + math_opts_dom_walker::after_dom_children. + * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New. + * config/i386/i386.c (ix86_option_override_internal): Added + maybe_setting of PARAM_AVOID_FMA_MAX_BITS. + +2018-01-12 Richard Biener + + PR debug/83157 + * dwarf2out.c (gen_variable_die): Do not reset old_die for + inline instance vars. + +2018-01-12 Oleg Endo + + PR target/81819 + * config/rx/rx.c (rx_is_restricted_memory_address): + Handle SUBREG case. + +2018-01-12 Richard Biener + + PR tree-optimization/80846 + * target.def (split_reduction): New target hook. + * targhooks.c (default_split_reduction): New function. + * targhooks.h (default_split_reduction): Declare. + * tree-vect-loop.c (vect_create_epilog_for_reduction): If the + target requests first reduce vectors by combining low and high + parts. + * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust. + (get_vectype_for_scalar_type_and_size): Export. + * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare. + * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document. + * doc/tm.texi: Regenerate. + * config/i386/i386.c (ix86_split_reduction): Implement + TARGET_VECTORIZE_SPLIT_REDUCTION. + +2018-01-12 Eric Botcazou + + PR target/83368 + * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM + in PIC mode except for TARGET_VXWORKS_RTP. + * config/sparc/sparc.c: Include cfgrtl.h. + (TARGET_INIT_PIC_REG): Define. + (TARGET_USE_PSEUDO_PIC_REG): Likewise. + (sparc_pic_register_p): New predicate. + (sparc_legitimate_address_p): Use it. + (sparc_legitimize_pic_address): Likewise. + (sparc_delegitimize_address): Likewise. + (sparc_mode_dependent_address_p): Likewise. + (gen_load_pcrel_sym): Remove 4th parameter. + (load_got_register): Adjust call to above. Remove obsolete stuff. + (sparc_expand_prologue): Do not call load_got_register here. + (sparc_flat_expand_prologue): Likewise. + (sparc_output_mi_thunk): Set the pic_offset_table_rtx object. + (sparc_use_pseudo_pic_reg): New function. + (sparc_init_pic_reg): Likewise. + * config/sparc/sparc.md (vxworks_load_got): Set the GOT register. + (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP. + +2018-01-12 Christophe Lyon + + * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): + Add item for branch_cost. + +2018-01-12 Eric Botcazou + + PR rtl-optimization/83565 + * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do + not extend the result to a larger mode for rotate operations. + (num_sign_bit_copies1): Likewise. + +2018-01-12 Rainer Orth + + PR target/40411 + * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or + -symbolic. + Use values-Xc.o for -pedantic. + Link with values-xpg4.o for C90, values-xpg6.o otherwise. + +2018-01-12 Martin Liska + + PR ipa/83054 + * ipa-devirt.c (final_warning_record::grow_type_warnings): + New function. + (possible_polymorphic_call_targets): Use it. + (ipa_devirt): Likewise. + +2018-01-12 Martin Liska + + * profile-count.h (enum profile_quality): Use 0 as invalid + enum value of profile_quality. + +2018-01-12 Chung-Ju Wu + + * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and + -mext-string options. + +2018-01-12 Richard Biener + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Process + DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P. + * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers): + Likewise. + * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise. + +2018-01-11 Michael Meissner + + * configure.ac (--with-long-double-format): Add support for the + configuration option to change the default long double format on + PowerPC systems. + * config.gcc (powerpc*-linux*-*): Likewise. + * configure: Regenerate. + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long + double is IEEE, define __KC__ and __KF__ to allow floatn.h to be + used without modification. + +2018-01-11 Bill Schmidt + + * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define. + (SPEC_BARRIER): New instantiation of BU_P7_MISC_X. + * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle + MISC_BUILTIN_SPEC_BARRIER. + (rs6000_init_builtins): Likewise. + * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV + enum value. + (speculation_barrier): New define_insn. + * doc/extend.texi: Document __builtin_speculation_barrier. + +2018-01-11 Jakub Jelinek + + PR target/83203 + * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var + is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set_0. + * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode + iterators. + (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for + integral modes instead of "ss" and "sd". + (vec_set_0): New define_insns for 256-bit and 512-bit + vectors with 32-bit and 64-bit elements. + (vecdupssescalarmodesuffix): New mode attribute. + (vec_dup): Use it. + +2018-01-11 H.J. Lu + + PR target/83330 + * config/i386/i386.c (ix86_compute_frame_layout): Align stack + frame if argument is passed on stack. + +2018-01-11 Jakub Jelinek + + PR target/82682 + * ree.c (combine_reaching_defs): Optimize also + reg2=exp; reg1=reg2; reg2=any_extend(reg1); into + reg2=any_extend(exp); reg1=reg2;, formatting fix. + +2018-01-11 Jan Hubicka + + PR middle-end/83189 + * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update. + +2018-01-11 Jan Hubicka + + PR middle-end/83718 + * tree-inline.c (copy_cfg_body): Adjust num&den for scaling + after they are computed. + +2018-01-11 Bin Cheng + + PR tree-optimization/83695 + * gimple-loop-linterchange.cc + (tree_loop_interchange::interchange_loops): Call scev_reset_htab to + reset cached scev information after interchange. + (pass_linterchange::execute): Remove call to scev_reset_htab. + +2018-01-11 Kyrylo Tkachov + + * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32, + vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32, + vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32, + vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32, + vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32, + vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define. + * config/arm/arm_neon_builtins.def (vfmal_lane_low, + vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high, + vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low, + vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high, + vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins. + * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes. + (V_lane_reg): Likewise. + * config/arm/neon.md (neon_vfml_lane_): + New define_expand. + (neon_vfml_lane_): Likewise. + (vfmal_lane_low_intrinsic, + vfmal_lane_low_intrinsic, + vfmal_lane_high_intrinsic, + vfmal_lane_high_intrinsic, vfmsl_lane_low_intrinsic, + vfmsl_lane_low_intrinsic, + vfmsl_lane_high_intrinsic, + vfmsl_lane_high_intrinsic): New define_insns. + +2018-01-11 Kyrylo Tkachov + + * config/arm/arm-cpus.in (fp16fml): New feature. + (ALL_SIMD): Add fp16fml. + (armv8.2-a): Add fp16fml as an option. + (armv8.3-a): Likewise. + (armv8.4-a): Add fp16fml as part of fp16. + * config/arm/arm.h (TARGET_FP16FML): Define. + * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML + when appropriate. + * config/arm/arm-modes.def (V2HF): Define. + * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32, + vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32, + vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define. + * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high, + vfmsl_low, vfmsl_high): New set of builtins. + * config/arm/iterators.md (PLUSMINUS): New code iterator. + (vfml_op): New code attribute. + (VFMLHALVES): New int iterator. + (VFML, VFMLSEL): New mode attributes. + (V_reg): Define mapping for V2HF. + (V_hi, V_lo): New mode attributes. + (VF_constraint): Likewise. + (vfml_half, vfml_half_selector): New int attributes. + * config/arm/neon.md (neon_vfml_): New + define_expand. + (vfmal_low_intrinsic, vfmsl_high_intrinsic, + vfmal_high_intrinsic, vfmsl_low_intrinsic): + New define_insn. + * config/arm/t-arm-elf (v8_fps): Add fp16fml. + * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml. + * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs. + * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a + documentation. + * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon): + Document new effective target and option set. + +2018-01-11 Kyrylo Tkachov + + * config/arm/arm-cpus.in (armv8_4): New feature. + (ARMv8_4a): New fgroup. + (armv8.4-a): New arch. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a. + * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a. + * config/arm/t-multilib (v8_4_a_simd_variants): New variable. + Add matching rules for -march=armv8.4-a and extensions. + * doc/invoke.texi (ARM Options): Document -march=armv8.4-a. + +2018-01-11 Oleg Endo + + PR target/81821 + * config/rx/rx.md (BW): New mode attribute. + (sync_lock_test_and_setsi): Add mode suffix to insn output. + +2018-01-11 Richard Biener + + PR tree-optimization/83435 + * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges. + * graphite-scop-detection.c (scop_detection::get_sese): Likewise. + * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear. + +2018-01-11 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset + field. + (aarch64_classify_address): Initialize it. Track polynomial offsets. + (aarch64_print_address_internal): Use it to check for a zero offset. + +2018-01-11 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2. + * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset): + Return a poly_int64 rather than a HOST_WIDE_INT. + (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64 + rather than a HOST_WIDE_INT. + * config/aarch64/aarch64.h (aarch64_frame): Protect with + HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset, + hard_fp_offset, frame_size, initial_adjust, callee_offset and + final_offset from HOST_WIDE_INT to poly_int64. + * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use + to_constant when getting the number of units in an Advanced SIMD + mode. + (aarch64_builtin_vectorized_function): Check for a constant number + of units. + * config/aarch64/aarch64-simd.md (mov): Handle polynomial + GET_MODE_SIZE. + (aarch64_ld_lane): Use the nunits + attribute instead of GET_MODE_NUNITS. + * config/aarch64/aarch64.c (aarch64_hard_regno_nregs) + (aarch64_class_max_nregs): Use the constant_lowest_bound of the + GET_MODE_SIZE for fixed-size registers. + (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p. + (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index) + (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address) + (aarch64_legitimize_address_displacement, aarch64_secondary_reload) + (aarch64_print_operand, aarch64_print_address_internal) + (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost) + (aarch64_short_vector_p, aapcs_vfp_sub_candidate) + (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp): + Handle polynomial GET_MODE_SIZE. + (aarch64_hard_regno_caller_save_mode): Likewise. Return modes + wider than SImode without modification. + (tls_symbolic_operand_type): Use strip_offset instead of split_const. + (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward) + (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle + passing and returning SVE modes. + (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode + rather than GEN_INT. + (aarch64_emit_probe_stack_range): Take the size as a poly_int64 + rather than a HOST_WIDE_INT, but call sorry if it isn't constant. + (aarch64_allocate_and_probe_stack_space): Likewise. + (aarch64_layout_frame): Cope with polynomial offsets. + (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the + start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track + polynomial offsets. + (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p) + (aarch64_offset_7bit_signed_scaled_p): Take the offset as a + poly_int64 rather than a HOST_WIDE_INT. + (aarch64_get_separate_components, aarch64_process_components) + (aarch64_expand_prologue, aarch64_expand_epilogue) + (aarch64_use_return_insn_p): Handle polynomial frame offsets. + (aarch64_anchor_offset): New function, split out from... + (aarch64_legitimize_address): ...here. + (aarch64_builtin_vectorization_cost): Handle polynomial + TYPE_VECTOR_SUBPARTS. + (aarch64_simd_check_vect_par_cnst_half): Handle polynomial + GET_MODE_NUNITS. + (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the + number of elements from the PARALLEL rather than the mode. + (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE + rather than GET_MODE_BITSIZE. + (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext) + (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip) + (aarch64_expand_vec_perm_const_1): Handle polynomial + d->perm.length () and d->perm elements. + (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS. + Apply to_constant to d->perm elements. + (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle + polynomial CONST_VECTOR_NUNITS. + (aarch64_move_pointer): Take amount as a poly_int64 rather + than an int. + (aarch64_progress_pointer): Avoid temporary variable. + * config/aarch64/aarch64.md (aarch64_): Use + the mode attribute instead of GET_MODE. + +2018-01-11 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that + x exists before using it. + (aarch64_add_constant_internal): Rename to... + (aarch64_add_offset_1): ...this. Replace regnum with separate + src and dest rtxes. Handle the case in which they're different, + including when the offset is zero. Replace scratchreg with an rtx. + Use 2 additions if there is no spare register into which we can + move a 16-bit constant. + (aarch64_add_constant): Delete. + (aarch64_add_offset): Replace reg with separate src and dest + rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT. + Use aarch64_add_offset_1. + (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as + an rtx rather than an int. Take the delta as a poly_int64 + rather than a HOST_WIDE_INT. Use aarch64_add_offset. + (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset. + (aarch64_expand_prologue): Update calls to aarch64_sub_sp, + aarch64_allocate_and_probe_stack_space and aarch64_add_offset. + (aarch64_expand_epilogue): Update calls to aarch64_add_offset + and aarch64_add_sp. + (aarch64_output_mi_thunk): Use aarch64_add_offset rather than + aarch64_add_constant. + +2018-01-11 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int): + Use scalar_float_mode. + +2018-01-11 Richard Sandiford + + * config/aarch64/aarch64-simd.md + (aarch64_fmll_low): Avoid GET_MODE_NUNITS. + (aarch64_fmll_high): Likewise. + (aarch64_fmll_lane_lowv2sf): Likewise. + (aarch64_fmll_lane_highv2sf): Likewise. + (aarch64_fmllq_laneq_lowv4sf): Likewise. + (aarch64_fmllq_laneq_highv4sf): Likewise. + (aarch64_fmll_laneq_lowv2sf): Likewise. + (aarch64_fmll_laneq_highv2sf): Likewise. + (aarch64_fmllq_lane_lowv4sf): Likewise. + (aarch64_fmllq_lane_highv4sf): Likewise. + +2018-01-11 Prathamesh Kulkarni + + PR target/83514 + * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if + targ_options->x_arm_arch_string is non NULL. + +2018-01-11 Tamar Christina + + * config/aarch64/aarch64.h + (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD. + +2018-01-11 Sudakshina Das + + PR target/82096 + * expmed.c (emit_store_flag_force): Swap if const op0 + and change VOIDmode to mode of op0. + +2018-01-11 Richard Sandiford + + PR rtl-optimization/83761 + * caller-save.c (replace_reg_with_saved_mem): Pass bits rather + than bytes to mode_for_size. + +2018-01-10 Jan Hubicka + + PR middle-end/83189 + * gfortran.fortran-torture/compile/pr83189.f90: New testcase. + * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero + profile. + +2018-01-10 Jan Hubicka + + PR middle-end/83575 + * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition + when in layout mode. + (cfg_layout_finalize): Do not verify cfg before we are out of layout. + * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing + partition fixup. + +2018-01-10 Michael Collison + + * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE. + * config/aarch64/aarch64-option-extension.def: Add + AARCH64_OPT_EXTENSION of 'fp16fml'. + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): + (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true. + * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate. + * config/aarch64/constraints.md (Ui7): New constraint. + * config/aarch64/iterators.md (VFMLA_W): New mode iterator. + (VFMLA_SEL_W): Ditto. + (f16quad): Ditto. + (f16mac1): Ditto. + (VFMLA16_LOW): New int iterator. + (VFMLA16_HIGH): Ditto. + (UNSPEC_FMLAL): New unspec. + (UNSPEC_FMLSL): Ditto. + (UNSPEC_FMLAL2): Ditto. + (UNSPEC_FMLSL2): Ditto. + (f16mac): New code attribute. + * config/aarch64/aarch64-simd-builtins.def + (aarch64_fmlal_lowv2sf): Ditto. + (aarch64_fmlsl_lowv2sf): Ditto. + (aarch64_fmlalq_lowv4sf): Ditto. + (aarch64_fmlslq_lowv4sf): Ditto. + (aarch64_fmlal_highv2sf): Ditto. + (aarch64_fmlsl_highv2sf): Ditto. + (aarch64_fmlalq_highv4sf): Ditto. + (aarch64_fmlslq_highv4sf): Ditto. + (aarch64_fmlal_lane_lowv2sf): Ditto. + (aarch64_fmlsl_lane_lowv2sf): Ditto. + (aarch64_fmlal_laneq_lowv2sf): Ditto. + (aarch64_fmlsl_laneq_lowv2sf): Ditto. + (aarch64_fmlalq_lane_lowv4sf): Ditto. + (aarch64_fmlsl_lane_lowv4sf): Ditto. + (aarch64_fmlalq_laneq_lowv4sf): Ditto. + (aarch64_fmlsl_laneq_lowv4sf): Ditto. + (aarch64_fmlal_lane_highv2sf): Ditto. + (aarch64_fmlsl_lane_highv2sf): Ditto. + (aarch64_fmlal_laneq_highv2sf): Ditto. + (aarch64_fmlsl_laneq_highv2sf): Ditto. + (aarch64_fmlalq_lane_highv4sf): Ditto. + (aarch64_fmlsl_lane_highv4sf): Ditto. + (aarch64_fmlalq_laneq_highv4sf): Ditto. + (aarch64_fmlsl_laneq_highv4sf): Ditto. + * config/aarch64/aarch64-simd.md: + (aarch64_fmll_low): New pattern. + (aarch64_fmll_high): Ditto. + (aarch64_simd_fmll_low): Ditto. + (aarch64_simd_fmll_high): Ditto. + (aarch64_fmll_lane_lowv2sf): Ditto. + (aarch64_fmll_lane_highv2sf): Ditto. + (aarch64_simd_fmll_lane_lowv2sf): Ditto. + (aarch64_simd_fmll_lane_highv2sf): Ditto. + (aarch64_fmllq_laneq_lowv4sf): Ditto. + (aarch64_fmllq_laneq_highv4sf): Ditto. + (aarch64_simd_fmllq_laneq_lowv4sf): Ditto. + (aarch64_simd_fmllq_laneq_highv4sf): Ditto. + (aarch64_fmll_laneq_lowv2sf): Ditto. + (aarch64_fmll_laneq_highv2sf): Ditto. + (aarch64_simd_fmll_laneq_lowv2sf): Ditto. + (aarch64_simd_fmll_laneq_highv2sf): Ditto. + (aarch64_fmllq_lane_lowv4sf): Ditto. + (aarch64_fmllq_lane_highv4sf): Ditto. + (aarch64_simd_fmllq_lane_lowv4sf): Ditto. + (aarch64_simd_fmllq_lane_highv4sf): Ditto. + * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic. + (vfmlsl_low_u32): Ditto. + (vfmlalq_low_u32): Ditto. + (vfmlslq_low_u32): Ditto. + (vfmlal_high_u32): Ditto. + (vfmlsl_high_u32): Ditto. + (vfmlalq_high_u32): Ditto. + (vfmlslq_high_u32): Ditto. + (vfmlal_lane_low_u32): Ditto. + (vfmlsl_lane_low_u32): Ditto. + (vfmlal_laneq_low_u32): Ditto. + (vfmlsl_laneq_low_u32): Ditto. + (vfmlalq_lane_low_u32): Ditto. + (vfmlslq_lane_low_u32): Ditto. + (vfmlalq_laneq_low_u32): Ditto. + (vfmlslq_laneq_low_u32): Ditto. + (vfmlal_lane_high_u32): Ditto. + (vfmlsl_lane_high_u32): Ditto. + (vfmlal_laneq_high_u32): Ditto. + (vfmlsl_laneq_high_u32): Ditto. + (vfmlalq_lane_high_u32): Ditto. + (vfmlslq_lane_high_u32): Ditto. + (vfmlalq_laneq_high_u32): Ditto. + (vfmlslq_laneq_high_u32): Ditto. + * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag. + (AARCH64_FL_FOR_ARCH8_4): New. + (AARCH64_ISA_F16FML): New ISA flag. + (TARGET_F16FML): New feature flag for fp16fml. + (doc/invoke.texi): Document new fp16fml option. + +2018-01-10 Michael Collison + + * config/aarch64/aarch64-builtins.c: + (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New. + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): + (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true. + * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags. + (AARCH64_ISA_SHA3): New ISA flag. + (TARGET_SHA3): New feature flag for sha3. + * config/aarch64/iterators.md (sha512_op): New int attribute. + (CRYPTO_SHA512): New int iterator. + (UNSPEC_SHA512H): New unspec. + (UNSPEC_SHA512H2): Ditto. + (UNSPEC_SHA512SU0): Ditto. + (UNSPEC_SHA512SU1): Ditto. + * config/aarch64/aarch64-simd-builtins.def + (aarch64_crypto_sha512hqv2di): New builtin. + (aarch64_crypto_sha512h2qv2di): Ditto. + (aarch64_crypto_sha512su0qv2di): Ditto. + (aarch64_crypto_sha512su1qv2di): Ditto. + (aarch64_eor3qv8hi): Ditto. + (aarch64_rax1qv2di): Ditto. + (aarch64_xarqv2di): Ditto. + (aarch64_bcaxqv8hi): Ditto. + * config/aarch64/aarch64-simd.md: + (aarch64_crypto_sha512hqv2di): New pattern. + (aarch64_crypto_sha512su0qv2di): Ditto. + (aarch64_crypto_sha512su1qv2di): Ditto. + (aarch64_eor3qv8hi): Ditto. + (aarch64_rax1qv2di): Ditto. + (aarch64_xarqv2di): Ditto. + (aarch64_bcaxqv8hi): Ditto. + * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic. + (vsha512h2q_u64): Ditto. + (vsha512su0q_u64): Ditto. + (vsha512su1q_u64): Ditto. + (veor3q_u16): Ditto. + (vrax1q_u64): Ditto. + (vxarq_u64): Ditto. + (vbcaxq_u16): Ditto. + * config/arm/types.md (crypto_sha512): New type attribute. + (crypto_sha3): Ditto. + (doc/invoke.texi): Document new sha3 option. + +2018-01-10 Michael Collison + + * config/aarch64/aarch64-builtins.c: + (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New. + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): + (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true. + (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true. + * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags. + (AARCH64_ISA_SM4): New ISA flag. + (TARGET_SM4): New feature flag for sm4. + * config/aarch64/aarch64-simd-builtins.def + (aarch64_sm3ss1qv4si): Ditto. + (aarch64_sm3tt1aq4si): Ditto. + (aarch64_sm3tt1bq4si): Ditto. + (aarch64_sm3tt2aq4si): Ditto. + (aarch64_sm3tt2bq4si): Ditto. + (aarch64_sm3partw1qv4si): Ditto. + (aarch64_sm3partw2qv4si): Ditto. + (aarch64_sm4eqv4si): Ditto. + (aarch64_sm4ekeyqv4si): Ditto. + * config/aarch64/aarch64-simd.md: + (aarch64_sm3ss1qv4si): Ditto. + (aarch64_sm3ttqv4si): Ditto. + (aarch64_sm3partwqv4si): Ditto. + (aarch64_sm4eqv4si): Ditto. + (aarch64_sm4ekeyqv4si): Ditto. + * config/aarch64/iterators.md (sm3tt_op): New int iterator. + (sm3part_op): Ditto. + (CRYPTO_SM3TT): Ditto. + (CRYPTO_SM3PART): Ditto. + (UNSPEC_SM3SS1): New unspec. + (UNSPEC_SM3TT1A): Ditto. + (UNSPEC_SM3TT1B): Ditto. + (UNSPEC_SM3TT2A): Ditto. + (UNSPEC_SM3TT2B): Ditto. + (UNSPEC_SM3PARTW1): Ditto. + (UNSPEC_SM3PARTW2): Ditto. + (UNSPEC_SM4E): Ditto. + (UNSPEC_SM4EKEY): Ditto. + * config/aarch64/constraints.md (Ui2): New constraint. + * config/aarch64/predicates.md (aarch64_imm2): New predicate. + * config/arm/types.md (crypto_sm3): New type attribute. + (crypto_sm4): Ditto. + * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic. + (vsm3tt1aq_u32): Ditto. + (vsm3tt1bq_u32): Ditto. + (vsm3tt2aq_u32): Ditto. + (vsm3tt2bq_u32): Ditto. + (vsm3partw1q_u32): Ditto. + (vsm3partw2q_u32): Ditto. + (vsm4eq_u32): Ditto. + (vsm4ekeyq_u32): Ditto. + (doc/invoke.texi): Document new sm4 option. + +2018-01-10 Michael Collison + + * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture. + * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag. + (AARCH64_FL_FOR_ARCH8_4): New. + (AARCH64_FL_V8_4): New flag. + (doc/invoke.texi): Document new armv8.4-a option. + +2018-01-10 Michael Collison + + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): + (__ARM_FEATURE_AES): Define if TARGET_AES is true. + (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true. + * config/aarch64/aarch64-option-extension.def: Add + AARCH64_OPT_EXTENSION of 'sha2'. + (aes): Add AARCH64_OPT_EXTENSION of 'aes'. + (crypto): Disable sha2 and aes if crypto disabled. + (crypto): Enable aes and sha2 if enabled. + (simd): Disable sha2 and aes if simd disabled. + * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2): + New flags. + (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags. + (TARGET_SHA2): New feature flag for sha2. + (TARGET_AES): New feature flag for aes. + * config/aarch64/aarch64-simd.md: + (aarch64_crypto_aesv16qi): Make pattern + conditional on TARGET_AES. + (aarch64_crypto_aesv16qi): Ditto. + (aarch64_crypto_sha1hsi): Make pattern conditional + on TARGET_SHA2. + (aarch64_crypto_sha1hv4si): Ditto. + (aarch64_be_crypto_sha1hv4si): Ditto. + (aarch64_crypto_sha1su1v4si): Ditto. + (aarch64_crypto_sha1v4si): Ditto. + (aarch64_crypto_sha1su0v4si): Ditto. + (aarch64_crypto_sha256hv4si): Ditto. + (aarch64_crypto_sha256su0v4si): Ditto. + (aarch64_crypto_sha256su1v4si): Ditto. + (doc/invoke.texi): Document new aes and sha2 options. + +2018-01-10 Martin Sebor + + PR tree-optimization/83781 + * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers + as string arrays. + +2018-01-11 Martin Sebor + Prathamesh Kulkarni + + PR tree-optimization/83501 + PR tree-optimization/81703 + + * tree-ssa-strlen.c (get_string_cst): Rename... + (get_string_len): ...to this. Handle global constants. + (handle_char_store): Adjust. + +2018-01-10 Kito Cheng + Jim Wilson + + * config/riscv/riscv-protos.h (riscv_output_return): New. + * config/riscv/riscv.c (struct machine_function): New naked_p field. + (riscv_attribute_table, riscv_output_return), + (riscv_handle_fndecl_attribute, riscv_naked_function_p), + (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New. + (riscv_compute_frame_info): Only compute frame->mask if not a naked + function. + (riscv_expand_prologue): Add early return for naked function. + (riscv_expand_epilogue): Likewise. + (riscv_function_ok_for_sibcall): Return false for naked function. + (riscv_set_current_function): New. + (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS), + (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New. + * config/riscv/riscv.md (simple_return): Call riscv_output_return. + * doc/extend.texi (RISC-V Function Attributes): New. + +2018-01-10 Michael Meissner + + * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly + check for 128-bit long double before checking TCmode. + * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for + 128-bit long doubles before checking TFmode or TCmode. + (FLOAT128_IBM_P): Likewise. + +2018-01-10 Martin Sebor + + PR tree-optimization/83671 + * builtins.c (c_strlen): Unconditionally return zero for the empty + string. + Use -Warray-bounds for warnings. + * gimple-fold.c (get_range_strlen): Handle non-constant lengths + for non-constant array indices with COMPONENT_REF, arrays of + arrays, and pointers to arrays. + (gimple_fold_builtin_strlen): Determine and set length range for + non-constant character arrays. + +2018-01-10 Aldy Hernandez + + PR middle-end/81897 + * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip + empty blocks. + +2018-01-10 Eric Botcazou + + * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf. + +2018-01-10 Peter Bergner + + PR target/83399 + * config/rs6000/rs6000.c (print_operand) <'y'>: Use + VECTOR_MEM_ALTIVEC_OR_VSX_P. + * config/rs6000/vsx.md (*vsx_le_perm_load_ for VSX_D): Use + indexed_or_indirect_operand predicate. + (*vsx_le_perm_load_ for VSX_W): Likewise. + (*vsx_le_perm_load_v8hi): Likewise. + (*vsx_le_perm_load_v16qi): Likewise. + (*vsx_le_perm_store_ for VSX_D): Likewise. + (*vsx_le_perm_store_ for VSX_W): Likewise. + (*vsx_le_perm_store_v8hi): Likewise. + (*vsx_le_perm_store_v16qi): Likewise. + (eight unnamed splitters): Likewise. + +2018-01-10 Peter Bergner + + * config/rs6000/x86intrin.h: Change #warning to #error. Update message. + * config/rs6000/emmintrin.h: Likewise. + * config/rs6000/mmintrin.h: Likewise. + * config/rs6000/xmmintrin.h: Likewise. + +2018-01-10 David Malcolm + + PR c++/43486 + * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of + "public_flag". + * tree.c (tree_nop_conversion): Return true for location wrapper + nodes. + (maybe_wrap_with_location): New function. + (selftest::check_strip_nops): New function. + (selftest::test_location_wrappers): New function. + (selftest::tree_c_tests): Call it. + * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro. + (maybe_wrap_with_location): New decl. + (EXPR_LOCATION_WRAPPER_P): New macro. + (location_wrapper_p): New inline function. + (tree_strip_any_location_wrapper): New inline function. + +2018-01-10 H.J. Lu + + PR target/83735 + * config/i386/i386.c (ix86_compute_frame_layout): Always adjust + stack_realign_offset for the largest alignment of stack slot + actually used. + (ix86_find_max_used_stack_alignment): New function. + (ix86_finalize_stack_frame_flags): Use it. Set + max_used_stack_alignment if we don't realign stack. + * config/i386/i386.h (machine_function): Add + max_used_stack_alignment. + +2018-01-10 Christophe Lyon + + * config/arm/arm.opt (-mbranch-cost): New option. + * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into + account. + +2018-01-10 Segher Boessenkool + + PR target/83629 + * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b, + load_toc_v4_PIC_3c): Wrap const term in CONST RTL. + +2018-01-10 Richard Biener + + PR debug/83765 + * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration + early out so it also covers the case where we have a non-NULL + origin. + +2018-01-10 Richard Sandiford + + PR tree-optimization/83753 + * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS + for non-strided grouped accesses if the number of elements is 1. + +2018-01-10 Jan Hubicka + + PR target/81616 + * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER. + * i386.h (TARGET_USE_GATHER): Define. + * x86-tune.def (X86_TUNE_USE_GATHER): New. + +2018-01-10 Martin Liska + + PR bootstrap/82831 + * basic-block.h (CLEANUP_NO_PARTITIONING): New define. + * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up + partitioning. + * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if + CLEANUP_NO_PARTITIONING is not set. + +2018-01-10 Richard Sandiford + + * doc/rtl.texi: Remove documentation of (const ...) wrappers + for vectors, as a partial revert of r254296. + * rtl.h (const_vec_p): Delete. + (const_vec_duplicate_p): Don't test for vector CONSTs. + (unwrap_const_vec_duplicate, const_vec_series_p): Likewise. + * expmed.c (make_tree): Likewise. + + Revert: + * common.md (E, F): Use CONSTANT_P instead of checking for + CONST_VECTOR. + * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of + checking for CONST_VECTOR. + +2018-01-09 Jan Hubicka + + PR middle-end/83575 + * predict.c (force_edge_cold): Handle in more sane way edges + with no prediction. + +2018-01-09 Carl Love + + * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF, + V4SI, V4SF types. + (p8_vmrgew): Add support for V2DI, V2DF, V4SF types. + * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF, + VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF, + VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW. + * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2, + P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions. + * config/rs6000/rs6000-protos.h: Add extern defition for + rs6000_generate_float2_double_code. + * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add + function. + * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn. + (float2_v2df): Add define_expand. + +2018-01-09 Uros Bizjak + + PR target/83628 + * combine.c (force_int_to_mode) : Use mode instead of + op_mode in the force_to_mode call. + +2018-01-09 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p + instead of checking each element individually. + (aarch64_evpc_uzp): Likewise. + (aarch64_evpc_zip): Likewise. + (aarch64_evpc_ext): Likewise. + (aarch64_evpc_rev): Likewise. + (aarch64_evpc_dup): Test the encoding for a single duplicated element, + instead of checking each element individually. Return true without + generating rtl if + (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test + whether all selected elements come from the same input, instead of + checking each element individually. Remove calls to gen_rtx_REG, + start_sequence and end_sequence and instead assert that no rtl is + generated. + +2018-01-09 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix + order of HIGH and CONST checks. + +2018-01-09 Richard Sandiford + + * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable + if the destination isn't an SSA_NAME. + +2018-01-09 Richard Biener + + PR tree-optimization/83668 + * graphite.c (canonicalize_loop_closed_ssa): Add edge argument, + move prologue... + (canonicalize_loop_form): ... here, renamed from ... + (canonicalize_loop_closed_ssa_form): ... this and amended to + swap successor edges for loop exit blocks to make us use + the RPO order we need for initial schedule generation. + +2018-01-09 Joseph Myers + + PR tree-optimization/64811 + * match.pd: When optimizing comparisons with Inf, avoid + introducing or losing exceptions from comparisons with NaN. + +2018-01-09 Martin Liska + + PR sanitizer/82517 + * asan.c (shadow_mem_size): Add gcc_assert. + +2018-01-09 Georg-Johann Lay + + Don't save registers in main(). + + PR target/83738 + * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it. + * config/avr/avr.opt (-mmain-is-OS_task): New target option. + * config/avr/avr.c (avr_set_current_function): Don't error if + naked, OS_task or OS_main are specified at the same time. + (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task, + OS_main. + (avr_insert_attributes) [-mmain-is-OS_task]
: Add OS_task + attribute. + * common/config/avr/avr-common.c (avr_option_optimization_table): + Switch on -mmain-is-OS_task for optimizing compilations. + +2018-01-09 Richard Biener + + PR tree-optimization/83572 + * graphite.c: Include cfganal.h. + (graphite_transform_loops): Connect infinite loops to exit + and remove fake edges at the end. + +2018-01-09 Jan Hubicka + + * ipa-inline.c (edge_badness): Revert accidental checkin. + +2018-01-09 Jan Hubicka + + PR ipa/80763 + * ipa-comdats.c (set_comdat_group): Only set comdat group of real + symbols; not inline clones. + +2018-01-09 Jakub Jelinek + + PR target/83507 + * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move + hard registers. Formatting fixes. + + PR preprocessor/83722 + * gcc.c (try_generate_repro): Pass + &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than + &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to + do_report_bug. + +2018-01-08 Monk Chiang + Kito Cheng + + * config/riscv/riscv.c (machine_function::is_leaf): Remove field. + (riscv_leaf_function_p): Delete. + (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE. + +2018-01-08 Aaron Sawdey + + * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New + function. + (do_ifelse): New function. + (do_isel): New function. + (do_sub3): New function. + (do_add3): New function. + (do_load_mask_compare): New function. + (do_overlap_load_compare): New function. + (expand_compare_loop): New function. + (expand_block_compare): Call expand_compare_loop() when appropriate. + * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change + option description. + (-mblock-compare-inline-loop-limit): New option. + +2018-01-08 Bill Schmidt + + PR target/83677 + * config/rs6000/altivec.md (*altivec_vpermr__internal): + Reverse order of second and third operands in first alternative. + * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order + of first and second elements in UNSPEC_VPERMR vector. + (altivec_expand_vec_perm_le): Likewise. + +2018-01-08 Jeff Law + + PR rtl-optimizatin/81308 + * tree-switch-conversion.c (cfg_altered): New file scoped static. + (process_switch): If group_case_labels makes a change, then set + cfg_altered. + (pass_convert_switch::execute): If a switch is converted, then + set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true. + + PR rtl-optimization/81308 + * recog.c (split_all_insns): Conditionally cleanup the CFG after + splitting insns. + +2018-01-08 Vidya Praveen + + PR target/83663 - Revert r255946 + * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code + generation for cases where splatting a value is not useful. + * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge + across a vec_duplicate and a paradoxical subreg forming a vector + mode to a vec_concat. + +2018-01-08 Kyrylo Tkachov + + * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for + -march=armv8.3-a variants. + * config/arm/t-multilib: Likewise. + * config/arm/t-arm-elf: Likewise. Handle dotprod extension. + +2018-01-08 Aaron Sawdey + + * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it + to generate rtl. + (cceq_ior_compare_complement): Give it a name so I can use it, and + change boolean_or_operator predicate to boolean_operator so it can + be used to generate a crand. + (eqne): New code iterator. + (bd/bd_neg): New code_attrs. + (_): New name for ctr_internal[12] now combined into + a single define_insn. + (tf_): A new insn pattern for the conditional form branch + decrement (bdnzt/bdnzf/bdzt/bdzf). + * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated + with the new names of the branch decrement patterns, and added the + names of the branch decrement conditional patterns. + +2018-01-08 Richard Biener + + PR tree-optimization/83563 + * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV + cache. + +2018-01-08 Richard Biener + + PR middle-end/83713 + * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks. + +2018-01-08 Richard Biener + + PR tree-optimization/83685 + * tree-ssa-pre.c (create_expression_by_pieces): Do not insert + references to abnormals. + +2018-01-08 Richard Biener + + PR lto/83719 + * dwarf2out.c (output_indirect_strings): Handle empty + skeleton_debug_str_hash. + (dwarf2out_early_finish): Index strings for -gsplit-dwarf. + +2018-01-08 Claudiu Zissulescu + + * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete. + (emit_store_direct): Likewise. + (arc_trampoline_adjust_address): Likewise. + (arc_asm_trampoline_template): New function. + (arc_initialize_trampoline): Use asm_trampoline_template. + (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define. + * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16. + * config/arc/arc.md (flush_icache): Delete pattern. + +2018-01-08 Claudiu Zissulescu + + * config/arc/arc-c.def (__ARC_UNALIGNED__): New define. + * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using + munaligned-access. + +2018-01-08 Sebastian Huber + + PR target/83681 + * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard + by not USED_FOR_TARGET. + (make_pass_resolve_sw_modes): Likewise. + +2018-01-08 Sebastian Huber + + * config/nios2/nios2.h (nios2_section_threshold): Guard by not + USED_FOR_TARGET. + +2018-01-08 Richard Biener + + PR middle-end/83580 + * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS. + +2018-01-08 Richard Biener + + PR middle-end/83517 + * match.pd ((t * 2) / 2) -> t): Add missing :c. + +2018-01-06 Aldy Hernandez + + PR middle-end/81897 + * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on + basic blocks with a small number of successors. + (convert_control_dep_chain_into_preds): Improve handling of + forwarder blocks. + (dump_predicates): Split apart into... + (dump_pred_chain): ...here... + (dump_pred_info): ...and here. + (can_one_predicate_be_invalidated_p): Add debugging printfs. + (can_chain_union_be_invalidated_p): Improve check for invalidation + of paths. + (uninit_uses_cannot_happen): Avoid unnecessary if + convert_control_dep_chain_into_preds yielded nothing. + +2018-01-06 Martin Sebor + + PR tree-optimization/83640 + * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid + subtracting negative offset from size. + (builtin_access::overlap): Adjust offset bounds of the access to fall + within the size of the object if possible. + +2018-01-06 Richard Sandiford + + PR rtl-optimization/83699 + * expmed.c (extract_bit_field_1): Restrict the vector usage of + extract_bit_field_as_subreg to cases in which the extracted + value is also a vector. + + * lra-constraints.c (process_alt_operands): Test for the equivalence + substitutions when detecting a possible reload cycle. + +2018-01-06 Jakub Jelinek + + PR debug/83480 + * toplev.c (process_options): Don't enable debug_nonbind_markers_p + by default if flag_selective_schedling{,2}. Formatting fixes. + + PR rtl-optimization/83682 + * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE + if it has non-VECTOR_MODE element mode. + (vec_duplicate_p): Likewise. + + PR middle-end/83694 + * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode + and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT. + +2018-01-05 Jakub Jelinek + + PR target/83604 + * config/i386/i386-builtin.def + (__builtin_ia32_vgf2p8affineinvqb_v64qi, + __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi): + Require also OPTION_MASK_ISA_AVX512F in addition to + OPTION_MASK_ISA_GFNI. + (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask, + __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require + OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition + to OPTION_MASK_ISA_GFNI. + (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require + OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and + OPTION_MASK_ISA_AVX512BW. + (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require + OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in + addition to OPTION_MASK_ISA_GFNI. + (__builtin_ia32_vgf2p8affineinvqb_v16qi, + __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi): + Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition + to OPTION_MASK_ISA_GFNI. + * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being + a requirement for all ISAs rather than any of them with a few + exceptions. + (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before + processing. + (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2 + bitmasks to be enabled with 3 exceptions, instead of requiring any + enabled ISA with lots of exceptions. + * config/i386/sse.md (vgf2p8affineinvqb_, + vgf2p8affineqb_, vgf2p8mulb_): + Change avx512bw in isa attribute to avx512f. + * config/i386/sgxintrin.h: Add license boilerplate. + * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F + to __AVX512F__ and __AVX512VL to __AVX512VL__. + (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128, + _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not + defined. + * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, + _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable + temporarily sse2 rather than sse if not enabled already. + + PR target/83604 + * config/i386/sse.md (VI248_VLBW): Rename to ... + (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW. + (vpshrd_, vpshld_, + vpshrdv_, vpshrdv__mask, vpshrdv__maskz, + vpshrdv__maskz_1, vpshldv_, vpshldv__mask, + vpshldv__maskz, vpshldv__maskz_1): Use VI248_AVX512VL + mode iterator instead of VI248_VLBW. + +2018-01-05 Jan Hubicka + + * ipa-fnsummary.c (record_modified_bb_info): Add OP. + (record_modified): Skip clobbers; add debug output. + (param_change_prob): Use sreal frequencies. + +2018-01-05 Richard Sandiford + + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't + punt for user-aligned variables. + +2018-01-05 Richard Sandiford + + * tree-chrec.c (chrec_contains_symbols): Return true for + POLY_INT_CST. + +2018-01-05 Sudakshina Das + + PR target/82439 + * simplify-rtx.c (simplify_relational_operation_1): Add simplifications + of (x|y) == x for BICS pattern. + +2018-01-05 Jakub Jelinek + + PR tree-optimization/83605 + * gimple-ssa-strength-reduction.c: Include tree-eh.h. + (find_candidates_dom_walker::before_dom_children): Ignore stmts that + can throw. + +2018-01-05 Sebastian Huber + + * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration. + * config/epiphany/rtems.h: New file. + +2018-01-04 Jakub Jelinek + Uros Bizjak + + PR target/83554 + * config/i386/i386.md (*hi3_1 splitter): Use + QIreg_operand instead of register_operand predicate. + * config/i386/i386.c (ix86_rop_should_change_byte_p, + set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in + comments instead of -fmitigate[-_]rop. + +2018-01-04 Rainer Orth + + PR bootstrap/81926 + * cgraphunit.c (symbol_table::compile): Switch to text_section + before calling assembly_start debug hook. + * run-rtl-passes.c (run_rtl_passes): Likewise. + Include output.h. + +2018-01-04 Richard Sandiford + + * tree-vrp.c (extract_range_from_binary_expr_1): Check + range_int_cst_p rather than !symbolic_range_p before calling + extract_range_from_multiplicative_op_1. + +2018-01-04 Jeff Law + + * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove + redundant test in assertion. + +2018-01-04 Richard Sandiford + + * doc/rtl.texi: Document machine_mode wrapper classes. + +2018-01-04 Richard Sandiford + + * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before + using tree_to_uhwi. + +2018-01-04 Richard Sandiford + + * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow + the VEC_PERM_EXPR fold to fail. + +2018-01-04 Jakub Jelinek + + PR debug/83585 + * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition + to switched_sections. + +2018-01-04 Richard Sandiford + + PR target/83680 + * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted + test for d.testing. + +2018-01-04 Peter Bergner + + PR target/83387 + * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not + allow arguments in FP registers if TARGET_HARD_FLOAT is false. + +2018-01-04 Jakub Jelinek + + PR debug/83666 + * cfgexpand.c (expand_debug_expr) : Punt if mode + is BLKmode and bitpos not zero or mode change is needed. + +2018-01-04 Richard Sandiford + + PR target/83675 + * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require + TARGET_VIS2. + +2018-01-04 Uros Bizjak + + PR target/83628 + * config/alpha/alpha.md (*sadd): Use ASHIFT + instead of MULT rtx. Update all corresponding splitters. + (*saddl_se): Ditto. + (*ssub): Ditto. + (*ssubl_se): Ditto. + (*cmp_sadd_di): Update split patterns. + (*cmp_sadd_si): Ditto. + (*cmp_sadd_sidi): Ditto. + (*cmp_ssub_di): Ditto. + (*cmp_ssub_si): Ditto. + (*cmp_ssub_sidi): Ditto. + * config/alpha/predicates.md (const23_operand): New predicate. + * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]: + Look for ASHIFT, not MULT inner operand. + (alpha_split_conditional_move): Update for *sadd change. + +2018-01-04 Martin Liska + + PR gcov-profile/83669 + * gcov.c (output_intermediate_file): Add version to intermediate + gcov file. + * doc/gcov.texi: Document new field 'version' in intermediate + file format. Fix location of '-k' option of gcov command. + +2018-01-04 Martin Liska + + PR ipa/82352 + * ipa-icf.c (sem_function::merge): Do not cross comdat boundary. + +2018-01-04 Jakub Jelinek + + * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi. + +2018-01-03 Martin Sebor + + PR tree-optimization/83655 + * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid + checking calls with invalid arguments. + +2018-01-03 Richard Sandiford + + * tree-vect-stmts.c (vect_get_store_rhs): New function. + (vectorizable_mask_load_store): Delete. + (vectorizable_call): Return false for masked loads and stores. + (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs + instead of gimple_assign_rhs1. + (vectorizable_load): Handle IFN_MASK_LOAD. + (vect_transform_stmt): Don't set is_store for call_vec_info_type. + +2018-01-03 Richard Sandiford + + * tree-vect-stmts.c (vect_build_gather_load_calls): New function, + split out from.., + (vectorizable_mask_load_store): ...here. + (vectorizable_load): ...and here. + +2018-01-03 Richard Sandiford + + * tree-vect-stmts.c (vect_build_all_ones_mask) + (vect_build_zero_merge_argument): New functions, split out from... + (vectorizable_load): ...here. + +2018-01-03 Richard Sandiford + + * tree-vect-stmts.c (vect_check_store_rhs): New function, + split out from... + (vectorizable_mask_load_store): ...here. + (vectorizable_store): ...and here. + +2018-01-03 Richard Sandiford + + * tree-vect-stmts.c (vect_check_load_store_mask): New function, + split out from... + (vectorizable_mask_load_store): ...here. + +2018-01-03 Richard Sandiford + + * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c + (vect_model_store_cost): Take a vec_load_store_type instead of a + vect_def_type. + * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h. + (vect_model_store_cost): Take a vec_load_store_type instead of a + vect_def_type. + (vectorizable_mask_load_store): Update accordingly. + (vectorizable_store): Likewise. + * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly. + +2018-01-03 Richard Sandiford + + * tree-vect-loop.c (vect_transform_loop): Stub out scalar + IFN_MASK_LOAD calls here rather than... + * tree-vect-stmts.c (vectorizable_mask_load_store): ...here. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * expmed.c (extract_bit_field_1): For vector extracts, + fall back to extract_bit_field_as_subreg if vec_extract + isn't available. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether + they are variable or constant sized. + (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized + slots for constant-sized data. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When + handling COND_EXPRs with boolean comparisons, try to find a better + basis for the mask type than the boolean itself. + +2018-01-03 Richard Sandiford + + * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default + is calculated and how it can be overridden. + * genmodes.c (max_bitsize_mode_any_mode): New variable. + (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE, + if defined. + (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE, + if nonzero. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate): + Remove the mode argument. + (aarch64_simd_valid_immediate): Remove the mode and inverse + arguments. + * config/aarch64/iterators.md (bitsize): New iterator. + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov, and3) + (ior3): Update calls to aarch64_output_simd_mov_immediate. + * config/aarch64/constraints.md (Do, Db, Dn): Update calls to + aarch64_simd_valid_immediate. + * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise. + (aarch64_reg_or_bic_imm): Likewise. + * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn + with an insn_type enum and msl with a modifier_type enum. + Replace element_width with a scalar_mode. Change the shift + to unsigned int. Add constructors for scalar_float_mode and + scalar_int_mode elements. + (aarch64_vect_float_const_representable_p): Delete. + (aarch64_can_const_movi_rtx_p) + (aarch64_simd_scalar_immediate_valid_for_move) + (aarch64_simd_make_constant): Update call to + aarch64_simd_valid_immediate. + (aarch64_advsimd_valid_immediate_hs): New function. + (aarch64_advsimd_valid_immediate): Likewise. + (aarch64_simd_valid_immediate): Remove mode and inverse + arguments. Rewrite to use the above. Use const_vec_duplicate_p + to detect duplicated constants and use aarch64_float_const_zero_rtx_p + and aarch64_float_const_representable_p on the result. + (aarch64_output_simd_mov_immediate): Remove mode argument. + Update call to aarch64_simd_valid_immediate and use of + simd_immediate_info. + (aarch64_output_scalar_simd_mov_immediate): Update call + accordingly. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION. + (mode_nunits): Likewise CONST_MODE_NUNITS. + * machmode.def (ADJUST_NUNITS): Document. + * genmodes.c (mode_data::need_nunits_adj): New field. + (blank_mode): Update accordingly. + (adj_nunits): New variable. + (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ + parameter. + (emit_mode_size_inline): Set need_bytesize_adj for all modes + listed in adj_nunits. + (emit_mode_nunits_inline): Set need_nunits_adj for all modes + listed in adj_nunits. Don't emit case statements for such modes. + (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS + and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to + nothing if adj_nunits is nonnull. + (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl. + (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit) + (emit_mode_fbit): Update use of print_maybe_const_decl. + (emit_move_size): Likewise. Treat the array as non-const + if adj_nunits. + (emit_mode_adjustments): Handle adj_nunits. + +2018-01-03 Richard Sandiford + + * machmode.def (VECTOR_MODES_WITH_PREFIX): Document. + * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro. + (VECTOR_MODES): Use it. + (make_vector_modes): Take the prefix as an argument. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * mode-classes.def (MODE_VECTOR_BOOL): New mode class. + * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true + for MODE_VECTOR_BOOL. + * machmode.def (VECTOR_BOOL_MODE): Document. + * genmodes.c (VECTOR_BOOL_MODE): New macro. + (make_vector_bool_mode): New function. + (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle + MODE_VECTOR_BOOL. + * lto-streamer-in.c (lto_input_mode_table): Likewise. + * rtx-vector-builder.c (rtx_vector_builder::find_cached_value): + Likewise. + * stor-layout.c (int_mode_for_mode): Likewise. + * tree.c (build_vector_type_for_mode): Likewise. + * varasm.c (output_constant_pool_2): Likewise. + * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and + CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx + for MODE_VECTOR_BOOL. + * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list + of mode class checks. + * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P + instead of a list of mode class checks. + (expand_vector_scalar_condition): Likewise. + (type_for_widest_vector_mode): Handle BImode as an inner mode. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_size): Change from unsigned short to + poly_uint16_pod. + (mode_to_bytes): Return a poly_uint16 rather than an unsigned short. + (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES, + or if measurement_type is not polynomial. + (fixed_size_mode::includes_p): Check for constant-sized modes. + * genmodes.c (emit_mode_size_inline): Make mode_size_inline + return a poly_uint16 rather than an unsigned short. + (emit_mode_size): Change the type of mode_size from unsigned short + to poly_uint16_pod. Use ZERO_COEFFS for the initializer. + (emit_mode_adjustments): Cope with polynomial vector sizes. + * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value + for GET_MODE_SIZE. + * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value + for GET_MODE_SIZE. + * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial. + * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise. + * caller-save.c (setup_save_areas): Likewise. + (replace_reg_with_saved_mem): Likewise. + * calls.c (emit_library_call_value_1): Likewise. + * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise. + * combine.c (simplify_set, make_extraction, simplify_shift_const_1) + (gen_lowpart_for_combine): Likewise. + * convert.c (convert_to_integer_1): Likewise. + * cse.c (equiv_constant, cse_insn): Likewise. + * cselib.c (autoinc_split, cselib_hash_rtx): Likewise. + (cselib_subst_to_values): Likewise. + * dce.c (word_dce_process_block): Likewise. + * df-problems.c (df_word_lr_mark_ref): Likewise. + * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise. + * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor) + (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor) + (rtl_for_decl_location): Likewise. + * emit-rtl.c (gen_highpart, widen_memory_access): Likewise. + * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise. + * expr.c (emit_group_load_1, clear_storage_hints): Likewise. + (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise. + (expand_expr_real_1): Likewise. + * function.c (assign_parm_setup_block_p, assign_parm_setup_block) + (pad_below): Likewise. + * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise. + * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise. + * ira.c (get_subreg_tracking_sizes): Likewise. + * ira-build.c (ira_create_allocno_objects): Likewise. + * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise. + (ira_sort_regnos_for_alter_reg): Likewise. + * ira-costs.c (record_operand_costs): Likewise. + * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn) + (resolve_simple_move): Likewise. + * lra-constraints.c (get_reload_reg, operands_match_p): Likewise. + (process_addr_reg, simplify_operand_subreg, curr_insn_transform) + (lra_constraints): Likewise. + (CONST_POOL_OK_P): Reject variable-sized modes. + * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare) + (add_pseudo_to_slot, lra_spill): Likewise. + * omp-low.c (omp_clause_aligned_alignment): Likewise. + * optabs-query.c (get_best_extraction_insn): Likewise. + * optabs-tree.c (expand_vec_cond_expr_p): Likewise. + * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise. + (expand_mult_highpart, valid_multiword_target_p): Likewise. + * recog.c (offsettable_address_addr_space_p): Likewise. + * regcprop.c (maybe_mode_change): Likewise. + * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise. + * regrename.c (build_def_use): Likewise. + * regstat.c (dump_reg_info): Likewise. + * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload) + (find_reloads, find_reloads_subreg_address): Likewise. + * reload1.c (eliminate_regs_1): Likewise. + * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise. + * simplify-rtx.c (avoid_constant_pool_reference): Likewise. + (simplify_binary_operation_1, simplify_subreg): Likewise. + * targhooks.c (default_function_arg_padding): Likewise. + (default_hard_regno_nregs, default_class_max_nregs): Likewise. + * tree-cfg.c (verify_gimple_assign_binary): Likewise. + (verify_gimple_assign_ternary): Likewise. + * tree-inline.c (estimate_move_cost): Likewise. + * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. + * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise. + (get_address_cost_ainc): Likewise. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise. + (vect_supportable_dr_alignment): Likewise. + * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. + (vectorizable_reduction): Likewise. + * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift) + (vectorizable_operation, vectorizable_load): Likewise. + * tree.c (build_same_sized_truth_vector_type): Likewise. + * valtrack.c (cleanup_auto_inc_dec): Likewise. + * var-tracking.c (emit_note_insn_var_location): Likewise. + * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a . + (ADDR_VEC_ALIGN): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_to_bits): Return a poly_uint16 rather than an + unsigned short. + (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES, + or if measurement_type is polynomial. + * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial. + * combine.c (make_extraction): Likewise. + * dse.c (find_shift_sequence): Likewise. + * dwarf2out.c (mem_loc_descriptor): Likewise. + * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise. + (extract_bit_field, extract_low_bits): Likewise. + * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise. + (optimize_bitfield_assignment_op, expand_assignment): Likewise. + (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise. + * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise. + * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise. + * reload.c (find_reloads): Likewise. + * reload1.c (alter_reg): Likewise. + * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise. + * targhooks.c (default_secondary_memory_needed_mode): Likewise. + * tree-if-conv.c (predicate_mem_writes): Likewise. + * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise. + * tree-vect-patterns.c (adjust_bool_pattern): Likewise. + * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. + * valtrack.c (dead_debug_insert_temp): Likewise. + * varasm.c (mergeable_constant_section): Likewise. + * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a . + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (expand_assignment): Cope with polynomial mode sizes + when assigning to a CONCAT. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_precision): Change from unsigned short to + poly_uint16_pod. + (mode_to_precision): Return a poly_uint16 rather than an unsigned + short. + (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES, + or if measurement_type is not polynomial. + (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case + in which the mode is already known to be a scalar_int_mode. + * genmodes.c (emit_mode_precision): Change the type of mode_precision + from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the + initializer. + * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value + for GET_MODE_PRECISION. + * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value + for GET_MODE_PRECISION. + * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION + as polynomial. + (try_combine, find_split_point, combine_simplify_rtx): Likewise. + (expand_field_assignment, make_extraction): Likewise. + (make_compound_operation_int, record_dead_and_set_regs_1): Likewise. + (get_last_value): Likewise. + * convert.c (convert_to_integer_1): Likewise. + * cse.c (cse_insn): Likewise. + * expr.c (expand_expr_real_1): Likewise. + * lra-constraints.c (simplify_operand_subreg): Likewise. + * optabs-query.c (can_atomic_load_p): Likewise. + * optabs.c (expand_atomic_load): Likewise. + (expand_atomic_store): Likewise. + * ree.c (combine_reaching_defs): Likewise. + * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise. + * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise. + * tree.h (type_has_mode_precision_p): Likewise. + * ubsan.c (instrument_si_overflow): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle + polynomial numbers of units. + (SET_TYPE_VECTOR_SUBPARTS): Likewise. + (valid_vector_subparts_p): New function. + (build_vector_type): Remove temporary shim and take the number + of units as a poly_uint64 rather than an int. + (build_opaque_vector_type): Take the number of units as a + poly_uint64 rather than an int. + * tree.c (build_vector_from_ctor): Handle polynomial + TYPE_VECTOR_SUBPARTS. + (type_hash_canon_hash, type_cache_hasher::equal): Likewise. + (uniform_vector_p, vector_type_mode, build_vector): Likewise. + (build_vector_from_val): If the number of units is variable, + use build_vec_duplicate_cst for constant operands and + VEC_DUPLICATE_EXPR otherwise. + (make_vector_type): Remove temporary is_constant (). + (build_vector_type, build_opaque_vector_type): Take the number of + units as a poly_uint64 rather than an int. + (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and + VECTOR_CST_NELTS. + * cfgexpand.c (expand_debug_expr): Likewise. + * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise. + (store_constructor, expand_expr_real_1): Likewise. + (const_scalar_mask_from_tree): Likewise. + * fold-const-call.c (fold_const_reduction): Likewise. + * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise. + (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise. + (native_encode_vector, vec_cst_ctor_to_array): Likewise. + (fold_relational_const): Likewise. + (native_interpret_vector): Likewise. Change the size from an + int to an unsigned int. + * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial + TYPE_VECTOR_SUBPARTS. + (gimple_fold_indirect_ref, gimple_build_vector): Likewise. + (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when + duplicating a non-constant operand into a variable-length vector. + * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial + TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS. + * ipa-icf.c (sem_variable::equals): Likewise. + * match.pd: Likewise. + * omp-simd-clone.c (simd_clone_subparts): Likewise. + * print-tree.c (print_node): Likewise. + * stor-layout.c (layout_type): Likewise. + * targhooks.c (default_builtin_vectorization_cost): Likewise. + * tree-cfg.c (verify_gimple_comparison): Likewise. + (verify_gimple_assign_binary): Likewise. + (verify_gimple_assign_ternary): Likewise. + (verify_gimple_assign_single): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. + (simplify_bitfield_ref, is_combined_permutation_identity): Likewise. + * tree-vect-data-refs.c (vect_permute_store_chain): Likewise. + (vect_grouped_load_supported, vect_permute_load_chain): Likewise. + (vect_shift_permute_load_chain): Likewise. + * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise. + (expand_vector_condition, optimize_vector_constructor): Likewise. + (lower_vec_perm, get_compute_type): Likewise. + * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. + (get_initial_defs_for_reduction, vect_transform_loop): Likewise. + * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise. + (vect_recog_mask_conversion_pattern): Likewise. + * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise. + (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise. + * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. + (get_group_load_store_type, vectorizable_mask_load_store): Likewise. + (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment) + (vectorizable_shift, vectorizable_operation, vectorizable_store) + (vectorizable_load, vect_is_simple_cond, vectorizable_comparison) + (supportable_widening_operation): Likewise. + (supportable_narrowing_operation): Likewise. + * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts): + Likewise. + * varasm.c (output_constant): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize + so that both the length == 3 and length != 3 cases set up their + own permute vectors. Add comments explaining why we know the + number of elements is constant. + (vect_permute_load_chain): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_nunits): Change from unsigned char to + poly_uint16_pod. + (ONLY_FIXED_SIZE_MODES): New macro. + (pod_mode::measurement_type, scalar_int_mode::measurement_type) + (scalar_float_mode::measurement_type, scalar_mode::measurement_type) + (complex_mode::measurement_type, fixed_size_mode::measurement_type): + New typedefs. + (mode_to_nunits): Return a poly_uint16 rather than an unsigned short. + (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES, + or if measurement_type is not polynomial. + * genmodes.c (ZERO_COEFFS): New macro. + (emit_mode_nunits_inline): Make mode_nunits_inline return a + poly_uint16. + (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod. + Use ZERO_COEFFS when emitting initializers. + * data-streamer.h (bp_pack_poly_value): New function. + (bp_unpack_poly_value): Likewise. + * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value + for GET_MODE_NUNITS. + * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value + for GET_MODE_NUNITS. + * tree.c (make_vector_type): Remove temporary shim and make + the real function take the number of units as a poly_uint64 + rather than an int. + (build_vector_type_for_mode): Handle polynomial nunits. + * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise. + * emit-rtl.c (const_vec_series_p_1): Likewise. + (gen_rtx_CONST_VECTOR): Likewise. + * fold-const.c (test_vec_duplicate_folding): Likewise. + * genrecog.c (validate_pattern): Likewise. + * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise. + * optabs-tree.c (expand_vec_cond_expr_p): Likewise. + * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise. + (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise. + (expand_vec_cond_expr, expand_mult_highpart): Likewise. + * rtlanal.c (subreg_get_info): Likewise. + * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. + (vect_grouped_load_supported): Likewise. + * tree-vect-generic.c (type_for_widest_vector_mode): Likewise. + * tree-vect-loop.c (have_whole_vector_shift): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + (simplify_const_unary_operation, simplify_binary_operation_1) + (simplify_const_binary_operation, simplify_ternary_operation) + (test_vector_ops_duplicate, test_vector_ops): Likewise. + (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode + instead of CONST_VECTOR_NUNITS. + * varasm.c (output_constant_pool_2): Likewise. + * rtx-vector-builder.c (rtx_vector_builder::build): Only include the + explicit-encoded elements in the XVEC for variable-length vectors. + +2018-01-03 Richard Sandiford + + * lra-constraints.c (curr_insn_transform): Use partial_subreg_p. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (fixed_size_mode): Declare. + (fixed_size_mode_pod): New typedef. + * builtins.h (target_builtins::x_apply_args_mode) + (target_builtins::x_apply_result_mode): Change type to + fixed_size_mode_pod. + * builtins.c (apply_args_size, apply_result_size, result_vector) + (expand_builtin_apply_args_1, expand_builtin_apply) + (expand_builtin_return): Update accordingly. + +2018-01-03 Richard Sandiford + + * cse.c (hash_rtx_cb): Hash only the encoded elements. + * cselib.c (cselib_hash_rtx): Likewise. + * expmed.c (make_tree): Build VECTOR_CSTs directly from the + CONST_VECTOR encoding. + +2018-01-03 Jakub Jelinek + Jeff Law + + PR target/83641 + * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For + noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop, + only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp + and add REG_CFA_ADJUST_CFA notes in that case to both insns. + + PR target/83641 + * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not + explicitly probe *sp in a noreturn function if there were any callee + register saves or frame pointer is needed. + +2018-01-03 Jakub Jelinek + + PR debug/83621 + * cfgexpand.c (expand_debug_expr): Return NULL if mode is + BLKmode for ternary, binary or unary expressions. + + PR debug/83645 + * var-tracking.c (delete_vta_debug_insn): New inline function. + (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just + insns from get_insns () to NULL instead of each bb separately. + Use delete_vta_debug_insn. No longer static. + (vt_debug_insns_local, variable_tracking_main_1): Adjust + delete_vta_debug_insns callers. + * rtl.h (delete_vta_debug_insns): Declare. + * final.c (rest_of_handle_final): Call delete_vta_debug_insns + instead of variable_tracking_main. + +2018-01-03 Martin Sebor + + PR tree-optimization/83603 + * calls.c (maybe_warn_nonstring_arg): Avoid accessing function + arguments past the endof the argument list in functions declared + without a prototype. + * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): + Avoid checking when arguments are null. + +2018-01-03 Martin Sebor + + PR c/83559 + * doc/extend.texi (attribute const): Fix a typo. + * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid + issuing -Wsuggest-attribute for void functions. + +2018-01-03 Martin Sebor + + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use + offset_int::from instead of wide_int::to_shwi. + (maybe_diag_overlap): Remove assertion. + Use HOST_WIDE_INT_PRINT_DEC instead of %lli. + * gimple-ssa-sprintf.c (format_directive): Same. + (parse_directive): Same. + (sprintf_dom_walker::compute_format_length): Same. + (try_substitute_return_value): Same. + +2018-01-03 Jeff Law + + PR middle-end/83654 + * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a + non-constant residual for zero at runtime and avoid probing in + that case. Reorganize code for trailing problem to mirror handling + of the residual. + +2018-01-03 Prathamesh Kulkarni + + PR tree-optimization/83501 + * tree-ssa-strlen.c (get_string_cst): New. + (handle_char_store): Call get_string_cst. + +2018-01-03 Martin Liska + + PR tree-optimization/83593 + * tree-ssa-strlen.c: Include tree-cfg.h. + (strlen_check_and_optimize_stmt): Add new argument cleanup_eh. + (strlen_dom_walker): Add new member variable m_cleanup_cfg. + (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg + to false. + (strlen_dom_walker::before_dom_children): Call + gimple_purge_dead_eh_edges. Dump tranformation with details + dump flags. + (strlen_dom_walker::before_dom_children): Update call by adding + new argument cleanup_eh. + (pass_strlen::execute): Return TODO_cleanup_cfg if needed. + +2018-01-03 Martin Liska + + PR ipa/83549 + * cif-code.def (VARIADIC_THUNK): New enum value. + * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic + thunks. + +2018-01-03 Jan Beulich + + * sse.md (mov_internal): Tighten condition for when to use + vmovdqu for TI and OI modes. + +2018-01-03 Jakub Jelinek + + Update copyright years. + +2018-01-03 Martin Liska + + PR ipa/83594 + * ipa-visibility.c (function_and_variable_visibility): Skip + functions with noipa attribure. + +2018-01-03 Jakub Jelinek + + * gcc.c (process_command): Update copyright notice dates. + * gcov-dump.c (print_version): Ditto. + * gcov.c (print_version): Ditto. + * gcov-tool.c (print_version): Ditto. + * gengtype.c (create_file): Ditto. + * doc/cpp.texi: Bump @copying's copyright year. + * doc/cppinternals.texi: Ditto. + * doc/gcc.texi: Ditto. + * doc/gccint.texi: Ditto. + * doc/gcov.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + +2018-01-03 Richard Sandiford + + * vector-builder.h (vector_builder::m_full_nelts): Change from + unsigned int to poly_uint64. + (vector_builder::full_nelts): Update prototype accordingly. + (vector_builder::new_vector): Likewise. + (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts. + (vector_builder::operator ==): Likewise. + (vector_builder::finalize): Likewise. + * int-vector-builder.h (int_vector_builder::int_vector_builder): + Take the number of elements as a poly_uint64 rather than an + unsigned int. + * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change + from unsigned int to poly_uint64. + (vec_perm_indices::vec_perm_indices): Update prototype accordingly. + (vec_perm_indices::new_vector): Likewise. + (vec_perm_indices::length): Likewise. + (vec_perm_indices::nelts_per_input): Likewise. + (vec_perm_indices::input_nelts): Likewise. + * vec-perm-indices.c (vec_perm_indices::new_vector): Take the + number of elements per input as a poly_uint64 rather than an + unsigned int. Use the original encoding for variable-length + vectors, rather than clamping each individual element. + For the second and subsequent elements in each pattern, + clamp the step and base before clamping their sum. + (vec_perm_indices::series_p): Handle polynomial element counts. + (vec_perm_indices::all_in_range_p): Likewise. + (vec_perm_indices_to_tree): Likewise. + (vec_perm_indices_to_rtx): Likewise. + * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise. + * tree-vector-builder.c (tree_vector_builder::new_unary_operation) + (tree_vector_builder::new_binary_operation): Handle polynomial + element counts. Return false if we need to know the number + of elements at compile time. + * fold-const.c (fold_vec_perm): Punt if the number of elements + isn't known at compile time. + +2018-01-03 Richard Sandiford + + * vec-perm-indices.h (vec_perm_builder): Change element type + from HOST_WIDE_INT to poly_int64. + (vec_perm_indices::element_type): Update accordingly. + (vec_perm_indices::clamp): Handle polynomial element_types. + * vec-perm-indices.c (vec_perm_indices::series_p): Likewise. + (vec_perm_indices::all_in_range_p): Likewise. + (tree_to_vec_perm_builder): Check for poly_int64 trees rather + than shwi trees. + * vector-builder.h (vector_builder::stepped_sequence_p): Handle + polynomial vec_perm_indices element types. + * int-vector-builder.h (int_vector_builder::equal_p): Likewise. + * fold-const.c (fold_vec_perm): Likewise. + * optabs.c (shift_amt_for_vec_perm_mask): Likewise. + * tree-vect-generic.c (lower_vec_perm): Likewise. + * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise. + * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm + element type to HOST_WIDE_INT. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * alias.c (addr_side_effect_eval): Take the size as a poly_int64 + rather than an int. Use plus_constant. + (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints. + Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * calls.c (emit_call_1, expand_call): Change struct_value_size from + a HOST_WIDE_INT to a poly_int64. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * calls.c (load_register_parameters): Cope with polynomial + mode sizes. Require a constant size for BLKmode parameters + that aren't described by a PARALLEL. If BLOCK_REG_PADDING + forces a parameter to be padded at the lsb end in order to + fill a complete number of words, require the parameter size + to be ordered wrt UNITS_PER_WORD. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * reload1.c (spill_stack_slot_width): Change element type + from unsigned int to poly_uint64_pod. + (alter_reg): Treat mode sizes as polynomial. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * reload.c (complex_word_subreg_p): New function. + (reload_inner_reg_of_subreg, push_reload): Use it. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * lra-constraints.c (process_alt_operands): Reject matched + operands whose sizes aren't ordered. + (match_reload): Refer to this check here. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert + that the mode size is in the set {1, 2, 4, 8, 16}. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * var-tracking.c (adjust_mems): Treat mode sizes as polynomial. + Use plus_constant instead of gen_rtx_PLUS. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * config/cr16/cr16-protos.h (cr16_push_rounding): Declare. + * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to... + * config/cr16/cr16.c (cr16_push_rounding): ...this new function. + * config/h8300/h8300-protos.h (h8300_push_rounding): Declare. + * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to... + * config/h8300/h8300.c (h8300_push_rounding): ...this new function. + * config/i386/i386-protos.h (ix86_push_rounding): Declare. + * config/i386/i386.h (PUSH_ROUNDING): Move implementation to... + * config/i386/i386.c (ix86_push_rounding): ...this new function. + * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return + a poly_int64. + * config/m32c/m32c.c (m32c_push_rounding): Likewise. + * config/m68k/m68k-protos.h (m68k_push_rounding): Declare. + * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to... + * config/m68k/m68k.c (m68k_push_rounding): ...this new function. + * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare. + * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to... + * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function. + * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare. + * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to... + * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new + function. + * expr.c (emit_move_resolve_push): Treat the input and result + of PUSH_ROUNDING as a poly_int64. + (emit_move_complex_push, emit_single_push_insn_1): Likewise. + (emit_push_insn): Likewise. + * lra-eliminations.c (mark_not_eliminable): Likewise. + * recog.c (push_operand): Likewise. + * reload1.c (elimination_effects): Likewise. + * rtlanal.c (nonzero_bits1): Likewise. + * calls.c (store_one_arg): Likewise. Require the padding to be + known at compile time. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial. + Use plus_constant instead of gen_rtx_PLUS. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64 + rather than an int. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (expand_expr_real_1): Use tree_to_poly_uint64 + instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs + via stack temporaries. Treat the mode size as polynomial too. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (expand_expr_real_2): When handling conversions involving + unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than + multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE + as a poly_uint64 too. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * rtlanal.c (subreg_get_info): Handle polynomial mode sizes. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (can_change_dest_mode): Handle polynomial + REGMODE_NATURAL_SIZE. + * expmed.c (store_bit_field_1): Likewise. + * expr.c (store_constructor): Likewise. + * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes + and polynomial REGMODE_NATURAL_SIZE. + (gen_lowpart_common): Likewise. + * reginfo.c (record_subregs_of_mode): Likewise. + * rtlanal.c (read_modify_subreg_p): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial + numbers of elements. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * match.pd: Cope with polynomial numbers of vector elements. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets + in a POINTER_PLUS_EXPR. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * omp-simd-clone.c (simd_clone_subparts): New function. + (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS. + (ipa_simd_modify_function_body): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-generic.c (nunits_for_known_piecewise_op): New function. + (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS. + (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise. + (expand_vector_condition, vector_element): Likewise. + (subparts_gt): New function. + (get_compute_type): Use subparts_gt. + (count_type_subparts): Delete. + (expand_vector_operations_1): Use subparts_gt instead of + count_type_subparts. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-data-refs.c (vect_no_alias_p): Replace with... + (vect_compile_time_alias): ...this new function. Do the calculation + on poly_ints rather than trees. + (vect_prune_runtime_alias_test_list): Update call accordingly. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial + numbers of units. + (vect_schedule_slp_instance): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject + constant and extern definitions for variable-length vectors. + (vect_get_constant_vectors): Note that the number of units + is known to be constant. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-stmts.c (vectorizable_conversion): Treat the number + of units as polynomial. Choose between WIDE and NARROW based + on multiple_p. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-stmts.c (simd_clone_subparts): New function. + (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-stmts.c (vectorizable_call): Treat the number of + vectors as polynomial. Use build_index_vector for + IFN_GOMP_SIMD_LANE. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-stmts.c (get_load_store_type): Treat the number of + units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP + for variable-length vectors. + (vectorizable_mask_load_store): Treat the number of units as + polynomial, asserting that it is constant if the condition has + already been enforced. + (vectorizable_store, vectorizable_load): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-loop.c (vectorizable_live_operation): Treat the number + of units as polynomial. Punt if we can't tell at compile time + which vector contains the final result. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-loop.c (vectorizable_induction): Treat the number + of units as polynomial. Punt on SLP inductions. Use an integer + VEC_SERIES_EXPR for variable-length integer reductions. Use a + cast of such a series for variable-length floating-point + reductions. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (build_index_vector): Declare. + * tree.c (build_index_vector): New function. + * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number + of units as polynomial, forcibly converting it to a constant if + vectorizable_reduction has already enforced the condition. + (vect_create_epilog_for_reduction): Likewise. Use build_index_vector + to create a {1,2,3,...} vector. + (vectorizable_reduction): Treat the number of units as polynomial. + Choose vectype_in based on the largest scalar element size rather + than the smallest number of units. Enforce the restrictions + relied on above. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the + number of units as polynomial. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * target.h (vector_sizes, auto_vector_sizes): New typedefs. + * target.def (autovectorize_vector_sizes): Return the vector sizes + by pointer, using vector_sizes rather than a bitmask. + * targhooks.h (default_autovectorize_vector_sizes): Update accordingly. + * targhooks.c (default_autovectorize_vector_sizes): Likewise. + * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes): + Likewise. + * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise. + * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise. + * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise. + * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise. + * omp-general.c (omp_max_vf): Likewise. + * omp-low.c (omp_clause_aligned_alignment): Likewise. + * optabs-query.c (can_vec_mask_load_store_p): Likewise. + * tree-vect-loop.c (vect_analyze_loop): Likewise. + * tree-vect-slp.c (vect_slp_bb): Likewise. + * doc/tm.texi: Regenerate. + * tree-vectorizer.h (current_vector_size): Change from an unsigned int + to a poly_uint64. + * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take + the vector size as a poly_uint64 rather than an unsigned int. + (current_vector_size): Change from an unsigned int to a poly_uint64. + (get_vectype_for_scalar_type): Update accordingly. + * tree.h (build_truth_vector_type): Take the size and number of + units as a poly_uint64 rather than an unsigned int. + (build_vector_type): Add a temporary overload that takes + the number of units as a poly_uint64 rather than an unsigned int. + * tree.c (make_vector_type): Likewise. + (build_truth_vector_type): Take the number of units as a poly_uint64 + rather than an unsigned int. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (get_mask_mode): Take the number of units and length + as poly_uint64s rather than unsigned ints. + * targhooks.h (default_get_mask_mode): Update accordingly. + * targhooks.c (default_get_mask_mode): Likewise. + * config/i386/i386.c (ix86_get_mask_mode): Likewise. + * doc/tm.texi: Regenerate. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int. + * omp-general.c (omp_max_vf): Likewise. + * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf. + (expand_omp_simd): Handle polynomial safelen. + * omp-low.c (omplow_simd_context): Add a default constructor. + (omplow_simd_context::max_vf): Change from int to poly_uint64. + (lower_rec_simd_input_clauses): Update accordingly. + (lower_rec_input_clauses): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (vect_nunits_for_cost): New function. + * tree-vect-loop.c (vect_model_reduction_cost): Use it. + * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise. + (vect_analyze_slp_cost): Likewise. + * tree-vect-stmts.c (vect_model_store_cost): Likewise. + (vect_model_load_cost): Likewise. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1) + (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits + from an unsigned int * to a poly_uint64_pod *. + (calculate_unrolling_factor): New function. + (vect_analyze_slp_instance): Use it. Track polynomial max_nunits. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (_slp_instance::unrolling_factor): Change + from an unsigned int to a poly_uint64. + (_loop_vec_info::slp_unrolling_factor): Likewise. + (_loop_vec_info::vectorization_factor): Change from an int + to a poly_uint64. + (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX. + (vect_get_num_vectors): New function. + (vect_update_max_nunits, vect_vf_for_cost): Likewise. + (vect_get_num_copies): Use vect_get_num_vectors. + (vect_analyze_data_ref_dependences): Change max_vf from an int * + to an unsigned int *. + (vect_analyze_data_refs): Change min_vf from an int * to a + poly_uint64 *. + (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather + than an unsigned HOST_WIDE_INT. + * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr) + (vect_analyze_data_ref_dependence): Change max_vf from an int * + to an unsigned int *. + (vect_analyze_data_ref_dependences): Likewise. + (vect_compute_data_ref_alignment): Handle polynomial vf. + (vect_enhance_data_refs_alignment): Likewise. + (vect_prune_runtime_alias_test_list): Likewise. + (vect_shift_permute_load_chain): Likewise. + (vect_supportable_dr_alignment): Likewise. + (dependence_distance_ge_vf): Take the vectorization factor as a + poly_uint64 rather than an unsigned HOST_WIDE_INT. + (vect_analyze_data_refs): Change min_vf from an int * to a + poly_uint64 *. + * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take + vfm1 as a poly_uint64 rather than an int. Make the same change + for the returned bound_scalar. + (vect_gen_vector_loop_niters): Handle polynomial vf. + (vect_do_peeling): Likewise. Update call to + vect_gen_scalar_loop_niters and handle polynomial bound_scalars. + (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must + be constant. + * tree-vect-loop.c (vect_determine_vectorization_factor) + (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf. + (vect_get_known_peeling_cost): Likewise. + (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise. + (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise. + (vect_transform_loop): Likewise. Use the lowest possible VF when + updating the upper bounds of the loop. + (vect_min_worthwhile_factor): Make static. Return an unsigned int + rather than an int. + * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with + polynomial unroll factors. + (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise. + (vect_make_slp_decision): Likewise. + (vect_supported_load_permutation_p): Likewise, and polynomial + vf too. + (vect_analyze_slp_cost): Handle polynomial vf. + (vect_slp_analyze_node_operations): Likewise. + (vect_slp_analyze_bb_1): Likewise. + (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather + than an unsigned HOST_WIDE_INT. + * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store) + (vectorizable_load): Handle polynomial vf. + * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to + a poly_uint64. + (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * match.pd: Handle bit operations involving three constants + and try to fold one pair. + +2018-01-03 Richard Sandiford + + * tree-vect-loop-manip.c: Include gimple-fold.h. + (slpeel_make_loop_iterate_ntimes): Add step, final_iv and + niters_maybe_zero parameters. Handle other cases besides a step of 1. + (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter. + Add a path that uses a step of VF instead of 1, but disable it + for now. + (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var + and niters_no_overflow parameters. Update calls to + slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters. + Create a new SSA name if the latter choses to use a ste other + than zero, and return it via niters_vector_mult_vf_var. + * tree-vect-loop.c (vect_transform_loop): Update calls to + vect_do_peeling, vect_gen_vector_loop_niters and + slpeel_make_loop_iterate_ntimes. + * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling) + (vect_gen_vector_loop_niters): Update declarations after above changes. + +2018-01-02 Michael Meissner + + * config/rs6000/rs6000.md (floor2): Add support for IEEE + 128-bit round to integer instructions. + (ceil2): Likewise. + (btrunc2): Likewise. + (round2): Likewise. + +2018-01-02 Aaron Sawdey + + * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of + unaligned VSX load/store on P8/P9. + (expand_block_clear): Allow the use of unaligned VSX + load/store on P8/P9. + +2018-01-02 Bill Schmidt + + * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store): + New function. + (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a + swap associated with both a load and a store. + +2018-01-02 Andrew Waterman + + * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New. + * config/riscv/riscv.md (clear_cache): Use it. + +2018-01-02 Artyom Skrobov + + * web.c: Remove out-of-date comment. + +2018-01-02 Richard Sandiford + + * expr.c (fixup_args_size_notes): Check that any existing + REG_ARGS_SIZE notes are correct, and don't try to re-add them. + (emit_single_push_insn_1): Move stack_pointer_delta adjustment to... + (emit_single_push_insn): ...here. + +2018-01-02 Richard Sandiford + + * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt. + (const_vector_encoded_nelts): New function. + (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS. + (const_vector_int_elt, const_vector_elt): Declare. + * emit-rtl.c (const_vector_int_elt_1): New function. + (const_vector_elt): Likewise. + * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address + of CONST_VECTOR_ELT. + +2018-01-02 Richard Sandiford + + * expr.c: Include rtx-vector-builder.h. + (const_vector_mask_from_tree): Use rtx_vector_builder and operate + directly on the tree encoding. + (const_vector_from_tree): Likewise. + * optabs.c: Include rtx-vector-builder.h. + (expand_vec_perm_var): Use rtx_vector_builder and create a repeating + sequence of "u" values. + * vec-perm-indices.c: Include rtx-vector-builder.h. + (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate + directly on the vec_perm_indices encoding. + +2018-01-02 Richard Sandiford + + * doc/rtl.texi (const_vector): Describe new encoding scheme. + * Makefile.in (OBJS): Add rtx-vector-builder.o. + * rtx-vector-builder.h: New file. + * rtx-vector-builder.c: Likewise. + * rtl.h (rtx_def::u2): Add a const_vector field. + (CONST_VECTOR_NPATTERNS): New macro. + (CONST_VECTOR_NELTS_PER_PATTERN): Likewise. + (CONST_VECTOR_DUPLICATE_P): Likewise. + (CONST_VECTOR_STEPPED_P): Likewise. + (CONST_VECTOR_ENCODED_ELT): Likewise. + (const_vec_duplicate_p): Check for a duplicated vector encoding. + (unwrap_const_vec_duplicate): Likewise. + (const_vec_series_p): Check for a non-duplicated vector encoding. + Say that the function only returns true for integer vectors. + * emit-rtl.c: Include rtx-vector-builder.h. + (gen_const_vec_duplicate_1): Delete. + (gen_const_vector): Call gen_const_vec_duplicate instead of + gen_const_vec_duplicate_1. + (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding. + (gen_const_vec_duplicate): Use rtx_vector_builder. + (gen_const_vec_series): Likewise. + (gen_rtx_CONST_VECTOR): Likewise. + * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h. + (swap_const_vector_halves): Take an rtx pointer rather than rtx. + Build a new vector rather than modifying a CONST_VECTOR in-place. + (handle_special_swappables): Update call accordingly. + * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h. + (swap_const_vector_halves): Take an rtx pointer rather than rtx. + Build a new vector rather than modifying a CONST_VECTOR in-place. + (handle_special_swappables): Update call accordingly. + +2018-01-02 Richard Sandiford + + * simplify-rtx.c (simplify_const_binary_operation): Use + CONST_VECTOR_ELT instead of XVECEXP. + +2018-01-02 Richard Sandiford + + * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of + the selector elements to be different from the data elements + if the selector is a VECTOR_CST. + * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of + ssizetype for the selector. + +2018-01-02 Richard Sandiford + + * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p + before testing each element individually. + * tree-vect-generic.c (lower_vec_perm): Likewise. + +2018-01-02 Richard Sandiford + + * selftest.h (selftest::vec_perm_indices_c_tests): Declare. + * selftest-run-tests.c (selftest::run_tests): Call it. + * vector-builder.h (vector_builder::operator ==): New function. + (vector_builder::operator !=): Likewise. + * vec-perm-indices.h (vec_perm_indices::series_p): Declare. + (vec_perm_indices::all_from_input_p): New function. + * vec-perm-indices.c (vec_perm_indices::series_p): Likewise. + (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise. + * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder + instead of reading the VECTOR_CST directly. Detect whether both + vector inputs are the same before constructing the vec_perm_indices, + and update the number of inputs argument accordingly. Use the + utility functions added above. Only construct sel2 if we need to. + +2018-01-02 Richard Sandiford + + * optabs.c (expand_vec_perm_var): Use an explicit encoding for + the broadcast of the low byte. + (expand_mult_highpart): Use an explicit encoding for the permutes. + * optabs-query.c (can_mult_highpart_p): Likewise. + * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise. + * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. + (vectorizable_bswap): Likewise. + * tree-vect-data-refs.c (vect_grouped_store_supported): Use an + explicit encoding for the power-of-2 permutes. + (vect_permute_store_chain): Likewise. + (vect_grouped_load_supported): Likewise. + (vect_permute_load_chain): Likewise. + +2018-01-02 Richard Sandiford + + * vec-perm-indices.h (vec_perm_indices_to_tree): Declare. + * vec-perm-indices.c (vec_perm_indices_to_tree): New function. + * tree-ssa-forwprop.c (simplify_vector_constructor): Use it. + * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise. + * tree-vect-stmts.c (vectorizable_bswap): Likewise. + (vect_gen_perm_mask_any): Likewise. + +2018-01-02 Richard Sandiford + + * int-vector-builder.h: New file. + * vec-perm-indices.h: Include int-vector-builder.h. + (vec_perm_indices): Redefine as an int_vector_builder. + (auto_vec_perm_indices): Delete. + (vec_perm_builder): Redefine as a stand-alone class. + (vec_perm_indices::vec_perm_indices): New function. + (vec_perm_indices::clamp): Likewise. + * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h. + (vec_perm_indices::new_vector): New function. + (vec_perm_indices::new_expanded_vector): Update for new + vec_perm_indices class. + (vec_perm_indices::rotate_inputs): New function. + (vec_perm_indices::all_in_range_p): Operate directly on the + encoded form, without computing elided elements. + (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST + encoding. Update for new vec_perm_indices class. + * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for + the given vec_perm_builder. + (expand_vec_perm_var): Update vec_perm_builder constructor. + (expand_mult_highpart): Use vec_perm_builder instead of + auto_vec_perm_indices. + * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and + vec_perm_indices instead of auto_vec_perm_indices. Use a single + or double series encoding as appropriate. + * fold-const.c (fold_ternary_loc): Use vec_perm_builder and + vec_perm_indices instead of auto_vec_perm_indices. + * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. + * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. + (vect_permute_store_chain): Likewise. + (vect_grouped_load_supported): Likewise. + (vect_permute_load_chain): Likewise. + (vect_shift_permute_load_chain): Likewise. + * tree-vect-slp.c (vect_build_slp_tree_1): Likewise. + (vect_transform_slp_perm_load): Likewise. + (vect_schedule_slp_instance): Likewise. + * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. + (vectorizable_mask_load_store): Likewise. + (vectorizable_bswap): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and + vec_perm_indices instead of auto_vec_perm_indices. Use + tree_to_vec_perm_builder to read the vector from a tree. + * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a + vec_perm_builder instead of a vec_perm_indices. + (have_whole_vector_shift): Use vec_perm_builder and + vec_perm_indices instead of auto_vec_perm_indices. Leave the + truncation to calc_vec_perm_mask_for_shift. + (vect_create_epilog_for_reduction): Likewise. + * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change + from auto_vec_perm_indices to vec_perm_indices. + (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm + instead of changing individual elements. + (aarch64_vectorize_vec_perm_const): Use new_vector to install + the vector in d.perm. + * config/arm/arm.c (expand_vec_perm_d::perm): Change + from auto_vec_perm_indices to vec_perm_indices. + (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm + instead of changing individual elements. + (arm_vectorize_vec_perm_const): Use new_vector to install + the vector in d.perm. + * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even): + Update vec_perm_builder constructor. + (rs6000_expand_interleave): Likewise. + * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise. + (rs6000_expand_interleave): Likewise. + +2018-01-02 Richard Sandiford + + * optabs-query.c (can_vec_perm_var_p): Check whether lowering + to qimode could truncate the indices. + * optabs.c (expand_vec_perm_var): Likewise. + +2018-01-02 Richard Sandiford + + * Makefile.in (OBJS): Add vec-perm-indices.o. + * vec-perm-indices.h: New file. + * vec-perm-indices.c: Likewise. + * target.h (vec_perm_indices): Replace with a forward class + declaration. + (auto_vec_perm_indices): Move to vec-perm-indices.h. + * optabs.h: Include vec-perm-indices.h. + (expand_vec_perm): Delete. + (selector_fits_mode_p, expand_vec_perm_var): Declare. + (expand_vec_perm_const): Declare. + * target.def (vec_perm_const_ok): Replace with... + (vec_perm_const): ...this new hook. + * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with... + (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook. + * doc/tm.texi: Regenerate. + * optabs.def (vec_perm_const): Delete. + * doc/md.texi (vec_perm_const): Likewise. + (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST. + * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than + expand_vec_perm for constant permutation vectors. Assert that + the mode of variable permutation vectors is the integer equivalent + of the mode that is being permuted. + * optabs-query.h (selector_fits_mode_p): Declare. + * optabs-query.c: Include vec-perm-indices.h. + (selector_fits_mode_p): New function. + (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const + is defined, instead of checking whether the vec_perm_const_optab + exists. Use targetm.vectorize.vec_perm_const instead of + targetm.vectorize.vec_perm_const_ok. Check whether the indices + fit in the vector mode before using a variable permute. + * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a + vec_perm_indices instead of an rtx. + (expand_vec_perm): Replace with... + (expand_vec_perm_const): ...this new function. Take the selector + as a vec_perm_indices rather than an rtx. Also take the mode of + the selector. Update call to shift_amt_for_vec_perm_mask. + Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab. + Use vec_perm_indices::new_expanded_vector to expand the original + selector into bytes. Check whether the indices fit in the vector + mode before using a variable permute. + (expand_vec_perm_var): Make global. + (expand_mult_highpart): Use expand_vec_perm_const. + * fold-const.c: Includes vec-perm-indices.h. + * tree-ssa-forwprop.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-generic.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-slp.c: Likewise. + * tree-vect-stmts.c: Likewise. + * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const): + Delete. + * config/aarch64/aarch64-simd.md (vec_perm_const): Delete. + * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const) + (aarch64_vectorize_vec_perm_const_ok): Fuse into... + (aarch64_vectorize_vec_perm_const): ...this new function. + (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete. + (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. + * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete. + * config/arm/vec-common.md (vec_perm_const): Delete. + * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete. + (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. + (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge + into... + (arm_vectorize_vec_perm_const): ...this new function. Explicitly + check for NEON modes. + * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete. + * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const): Delete. + * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment. + (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge + into... + (ix86_vectorize_vec_perm_const): ...this new function. Incorporate + the old VEC_PERM_CONST conditions. + * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete. + * config/ia64/vect.md (vec_perm_const): Delete. + * config/ia64/ia64.c (ia64_expand_vec_perm_const) + (ia64_vectorize_vec_perm_const_ok): Merge into... + (ia64_vectorize_vec_perm_const): ...this new function. + * config/mips/loongson.md (vec_perm_const): Delete. + * config/mips/mips-msa.md (vec_perm_const): Delete. + * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete. + * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete. + * config/mips/mips.c (mips_expand_vec_perm_const) + (mips_vectorize_vec_perm_const_ok): Merge into... + (mips_vectorize_vec_perm_const): ...this new function. + * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete. + * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete. + * config/powerpcspe/spe.md (vec_perm_constv2si): Delete. + * config/powerpcspe/vsx.md (vec_perm_const): Delete. + * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const) + (rs6000_expand_vec_perm_const): Delete. + * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): + Delete. + (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. + (altivec_expand_vec_perm_const_le): Take each operand individually. + Operate on constant selectors rather than rtxes. + (altivec_expand_vec_perm_const): Likewise. Update call to + altivec_expand_vec_perm_const_le. + (rs6000_expand_vec_perm_const): Delete. + (rs6000_vectorize_vec_perm_const_ok): Delete. + (rs6000_vectorize_vec_perm_const): New function. + (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of + an element count and rtx array. + (rs6000_expand_extract_even): Update call accordingly. + (rs6000_expand_interleave): Likewise. + * config/rs6000/altivec.md (vec_perm_constv16qi): Delete. + * config/rs6000/paired.md (vec_perm_constv2sf): Delete. + * config/rs6000/vsx.md (vec_perm_const): Delete. + * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const) + (rs6000_expand_vec_perm_const): Delete. + * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete. + (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. + (altivec_expand_vec_perm_const_le): Take each operand individually. + Operate on constant selectors rather than rtxes. + (altivec_expand_vec_perm_const): Likewise. Update call to + altivec_expand_vec_perm_const_le. + (rs6000_expand_vec_perm_const): Delete. + (rs6000_vectorize_vec_perm_const_ok): Delete. + (rs6000_vectorize_vec_perm_const): New function. Remove stray + reference to the SPE evmerge intructions. + (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of + an element count and rtx array. + (rs6000_expand_extract_even): Update call accordingly. + (rs6000_expand_interleave): Likewise. + * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of... + * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this + new function. + (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine. + +2018-01-02 Richard Sandiford + + * optabs.c (expand_vec_perm_1): Assert that SEL has an integer + vector mode and that that mode matches the mode of the data + being permuted. + (expand_vec_perm): Split handling of non-CONST_VECTOR selectors + out into expand_vec_perm_var. Do all CONST_VECTOR handling here, + directly using expand_vec_perm_1 when forcing selectors into + registers. + (expand_vec_perm_var): New function, split out from expand_vec_perm. + +2018-01-02 Richard Sandiford + + * optabs-query.h (can_vec_perm_p): Delete. + (can_vec_perm_var_p, can_vec_perm_const_p): Declare. + * optabs-query.c (can_vec_perm_p): Split into... + (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions. + (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a + particular selector is valid. + * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. + * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. + (vect_grouped_load_supported): Likewise. + (vect_shift_permute_load_chain): Likewise. + * tree-vect-slp.c (vect_build_slp_tree_1): Likewise. + (vect_transform_slp_perm_load): Likewise. + * tree-vect-stmts.c (perm_mask_for_reverse): Likewise. + (vectorizable_bswap): Likewise. + (vect_gen_perm_mask_checked): Likewise. + * fold-const.c (fold_ternary_loc): Likewise. Don't take + implementations of variable permutation vectors into account + when deciding which selector to use. + * tree-vect-loop.c (have_whole_vector_shift): Don't check whether + vec_perm_const_optab is supported; instead use can_vec_perm_const_p + with a false third argument. + * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p + to test whether the constant selector is valid and can_vec_perm_var_p + to test whether a variable selector is valid. + +2018-01-02 Richard Sandiford + + * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *. + * optabs-query.c (can_vec_perm_p): Likewise. + * fold-const.c (fold_vec_perm): Take a const vec_perm_indices & + instead of vec_perm_indices. + * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise, + (vect_gen_perm_mask_checked): Likewise, + * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise, + (vect_gen_perm_mask_checked): Likewise, + +2018-01-02 Richard Sandiford + + * optabs-query.h (qimode_for_vec_perm): Declare. + * optabs-query.c (can_vec_perm_p): Split out qimode search to... + (qimode_for_vec_perm): ...this new function. + * optabs.c (expand_vec_perm): Use qimode_for_vec_perm. + +2018-01-02 Aaron Sawdey + + * rtlanal.c (canonicalize_condition): Return 0 if final rtx + does not have a conditional at the top. + +2018-01-02 Richard Biener + + * ipa-inline.c (big_speedup_p): Fix expression. + +2018-01-02 Jan Hubicka + + PR target/81616 + * config/i386/x86-tune-costs.h: Increase cost of integer load costs + for generic 4->6. + +2018-01-02 Jan Hubicka + + PR target/81616 + Generic tuning. + * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17, + cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14 + and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase + cond_taken_branch_cost 3->4. + +2018-01-01 Jakub Jelinek + + PR tree-optimization/83581 + * tree-loop-distribution.c (pass_loop_distribution::execute): Return + TODO_cleanup_cfg if any changes have been made. + + PR middle-end/83608 + * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of + convert_modes if target mode has the right side, but different mode + class. + + PR middle-end/83609 + * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg + last argument when extracting from CONCAT. If either from_real or + from_imag is NULL, use expansion through memory. If result is not + a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg + the parts directly to inner mode, if even that fails, use expansion + through memory. + + PR middle-end/83623 + * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT, + check for bswap in mode rather than HImode and use that in expand_unop + too. + +Copyright (C) 2018 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 026f202af58..f9f8fc0c950 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5714 +1,9 @@ -2018-12-23 Iain Sandoe - - * adaint.c [__APPLE__] (__gnat_lwp_self): Ensure that the system - interface used is available on the target. - -2018-12-14 Eric Botcazou - - * gcc-interface/decl.c (rm_size): Take into account the padding in - the case of a record type containing a template. - * gcc-interface/trans.c (Attribute_to_gnu) : Likewise. - Do not subtract the padded size for Max_Size_In_Storage_Elements. - : Tweak comment. - -2018-12-14 Eric Botcazou - - * gcc-interface/decl.c (choices_to_gnu): Directly use a naked boolean - discriminant if the value is the boolean true. - -2018-12-11 Eric Botcazou - - PR ada/88429 - * gcc-interface/Makefile.in (./stamp-gnatlib1-$(RTSDIR)): Also pass - MULTISUBDIR to sub-make and add quotes around $(THREAD_KIND). - (gnatlib-shared-dual): Also pass PICFLAG_FOR_TARGET to sub-make. - (gnatlib-sjlj): Also pass MULTISUBDIR to sub-make, but do not pass - PICFLAG_FOR_TARGET. - (gnatlib-zcx): Likewise. - -2018-12-11 Piotr Trojanek - - * libgnat/a-calend.ads: Add "Global => null" contract to pure routines. - -2018-12-11 Hristian Kirtchev - - * freeze.adb (Check_Pragma_Thread_Local_Storage): Use the - violating set to diagnose detect an illegal initialization, - rather than the complement of the OK set. - (Freeze_Object_Declaration): Factorize code in - Has_Default_Initialization. - (Has_Default_Initialization, Has_Incompatible_Initialization): - New routines. - -2018-12-11 Dmitriy Anisimkov - - * libgnat/g-socket.ads (Family_Type): Add new enumerated value - Family_Unspec to be able to use it in Get_Address_Info parameter - and find IPv4 together with IPv6 addresses. - (Inet_Addr_Bytes_Length): Zero length for Family_Unspec. New - IPv6 predefined constant addresses. - (IPv4_To_IPv6_Prefix): IPv4 mapped to IPv6 address prefix. - (Is_IPv4_Address): Rename from Is_IP_Address and published. - (Is_IPv6_Address): New routine. - (Image of Inet_Addr_Type): Fix description about IPv6 address - text representation. - (Level_Type): New propocol level IP_Protocol_For_IPv6_Level. - (Add_Membership_V4): New socket option equal to Add_Membership. - (Drop_Membership_V4): New socket option equal to - Drop_Membership. - (Multicast_If_V4): New socket option equal to Multicast_If. - (Multicast_Loop_V4, Add_Membership_V6, Drop_Membership_V6, - Multicast_If_V6, Multicast_Loop_V6, Multicast_Hops, IPv6_Only): - New socket option for IPv6. - (Address_Info): New record to keep address info. - (Address_Info_Array): Array to keep address info records. - (Get_Address_Info): Routine to get address info records by host - and service names. - (Host_Service): Record to keep host and service names. - (Get_Name_Info): New routine to get host and service names by - address. - (Create_Socket): Add Level parameter, IP_Protocol_For_IP_Level - default. - (Name_Array, Inet_Addr_Array): Change array index to Positive. - * libgnat/g-socket.adb (IPV6_Mreq): New record definition for - IPv6. - (Hex_To_Char): Remove. - (Short_To_Network, Network_To_Short): Move to package - GNAT.Sockets.Thin_Common. - (Is_IP_Address): Remove. - (To_In_Addr, To_Inet_Addr): Move to package - GNAT.Sockets.Thin_Common. - (Get_Socket_Option): Get value of Multicast_Loop option as - integer boolean, process IPv6 options. Don't try to get - Add_Membership_V4, Add_Membership_V6, Drop_Membership_V4, and - Drop_Membership_V6 as not supported by the socket API. - (Set_Socket_Option): Set value of Multicast_Loop option as - integer boolean, process IPv6 options. - * gsocket.h - (IPV6_ADD_MEMBERSHIP): Define from IPV6_JOIN_GROUP if necessary - for VxWorks. - (IPV6_DROP_MEMBERSHIP): Define from IPV6_LEAVE_GROUP if - necessary for VxWorks - (HAVE_INET_NTOP): New definition. - (HAVE_INET_PTON): Includes VxWorks now. - * socket.c (__gnat_getaddrinfo, __gnat_getnameinfo, - __gnat_freeaddrinfo, __gnat_gai_strerror, __gnat_inet_ntop): New - routines. - * libgnat/g-sothco.ads, libgnat/g-sothco.adb - (socklen_t, In6_Addr, To_In6_Addr): New. - (To_In_Addr, To_Inet_Addr): Move from package body GNAT.Sockets. - (To_Inet_Addr): New overload with In6_Addr type parmeter. - (In_Addr_Access_Array): Remove. - (Sockaddr): Unchecked_Union instead of Sockaddr_In and old - defined generic Sockaddr. - (Set_Address): Use it to set family, port and address into - Sockaddr. - (Get_Address): New routine to get Socket_Addr_Type from - Sockaddr. - (Addrinfo): Structure to use with getaddrinfo. - (C_Getaddrinfo, C_Freeaddrinfo, C_Getnameinfo, C_GAI_Strerror, - Inet_Ntop): New routine import. - (Short_To_Network, Network_To_Short): Move from package body - GNAT.Sockets. - * libgnat/g-stsifd__sockets.adb: Use Sockaddr instead of - Sockaddr_In. - * s-oscons-tmplt.c (AF_UNSPEC, EAI_SYSTEM, SOCK_RAW, - IPPROTO_IPV6, IP_RECVERR, SIZEOF_socklen_t, IF_NAMESIZE): New - constants. - (AI_xxxx_OFFSET): Constants to consider platform differences in - field positions and sizes for addrinfo structure. - (AI_xxxxx): Flags for getaddrinfo. - (NI_xxxxx): Flags for getnameinfo. - (IPV6_xxxxx): Socket options for IPv6. - (Inet_Ntop_Linkname): New routine. - -2018-12-11 Yannick Moy - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Deactivate - expansion in ignored ghost subprogram body. - * sem_ch7.adb (Analyze_Package_Body_Helper): Deactivate - expansion in ignored ghost package body. - -2018-12-11 Ed Schonberg - - * exp_unst.adb (Register_Subprogram): A subprogram whose address - is taken (through attribute Address or Access) is reachable and - cannot be eliminated, even if there is no explicit call to it: - the address may be used in an indirect call or in some - address-related operation. - -2018-12-11 Ed Schonberg - - * sem_util.adb (Get_Actual_Subtype): Function can return type - mark. - (Get_Cursor_Type): Improve recovery and error message on a - misplaced First aspect for an iterable type. - -2018-12-11 Hristian Kirtchev - - * checks.adb: Add with and use clauses for Sem_Mech. - (Ensure_Valid): Update the "annoying special case" to include - entry and function calls. Use Get_Called_Entity to obtain the - entry or subprogram being invoked, rather than retrieving it - manually. Parameters passed by reference do not need a validity - check. - -2018-12-11 Yannick Moy - - * sem_prag.adb (Analyze_Global_Item): Refine error message. - -2018-12-11 Ed Schonberg - - * exp_ch7.adb (Check_Unnesting_In_Declarations): Extend - subprogram so that it is usable for visible and private - declarations of a package declaration, not just for declarations - in the pakage body. - * exp_ch13.adb (Expand_Freeze_Entity): Handle properly the - freezing of a finalizer routine generated for a controlled objet - declaration. Special processing already applies to finalizers - because they are usually displaced into another construct. - -2018-12-11 Arnaud Charlet - - * exp_unst.adb (Unnest_Subprogram): Ensure Current_Subprogram is - always initialized. - -2018-12-11 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Add - gnat_annotate_type local variable initialized to Empty. - : Set it to the Cloned_Subtype, if any. For - types, back-annotate alignment and size values earlier and only - if the DECL was created here; otherwise, if gnat_annotate_type - is present, take the values from it. - (gnat_to_gnu_field): Add gnat_clause local variable. If a - component clause is present, call validate_size only once on the - Esize of the component. Otherwise, in the packed case, do not - call validate_size again on the type of the component but - retrieve directly its RM size. - (components_to_record): Minor tweak. - (set_rm_size): Remove useless test. - * gcc-interface/trans.c (gnat_to_gnu): Do not wrap the instance of - a boolean discriminant attached to a variant part. - -2018-12-11 Ed Schonberg - - * sem_aggr.adb (Array_Aggr_Subtype. Resolve_Aggr_Expr): Indicate - that aggregate subtype has a predicate if the component type has - a predicate; do not rely on exisatence of predicate function for - component, in case component is a type no yet frozen, for which - predicate function has not been created yet. - -2018-12-11 Eric Botcazou - - * exp_aggr.adb (Packed_Array_Aggregate_Handled): Bail out for - any non-scalar type as component type of the array. - -2018-12-11 Eric Botcazou - - * einfo.ads (Is_Bit_Packed_Array): Fix values of component size. - (Is_Packed): Likewise. - * gcc-interface/utils.c (convert): Do not extract the value of a - justified modular type if the destination type is a regular - array. - * gcc-interface/decl.c (gnat_to_gnu_component_type): Pass - TYPE_DECL to validate_size wherever the array has packed - components. - -2018-12-11 Bob Duff - - * gnat1drv.adb (gnat1drv): Pass the correct Object value when - calling Write_ALI in the case of -gnatQ. - * gnatbind.adb (Gnatbind): Avoid silent failure; give an error - message. - -2018-12-11 Ed Schonberg - - * exp_unst.adb (Needs_Fat_Pointer): A fat pointer is required if - the entity has a private type whose full view is an - unconstrained array type. - (Rewrite_One_Ref): If the reference is to a static constant, use - its value rather than create a reference through the activation - record. This is more efficient, and furthermore indispensable if - the context requires a static constant, such as in a branch of a - case statement. - -2018-12-11 Ed Schonberg - - * sem_ch3.adb (Analyze_Object_Declaration): Apply - Dynamic_Predicate check to an object of an array type - initialized with an aggregate. - -2018-12-11 Hristian Kirtchev - - * freeze.adb (Add_To_Result): Move the ignored Ghost-specific - handling of freeze nodes to... - (Freeze_Entity): ...here. This ensures that the freeze nodes of - constructs that have recursive freezing are preserved when the - context is ignored Ghost, and the top level construct being - frozen is non-Ghost. - -2018-12-11 Ed Schonberg - - * uintp.ads, uintp.adb (UI_From_Integral): New generic function, - to simplify construction of Universal_Integer representations - from any Integer type. If type is small enough the code is - equivalent to a call to UI_To_Int with appropriate conversions; - otherwise the routine uses the existing mechanism of building a - vector of suitable integer values and calling Vector_To_Uint. - The routine must not be applied to a biased type. - -2018-12-11 Ed Schonberg - - * sem_ch3.adb (Build_Itype_Reference): Handle properly an itype - reference created for a function that is a compilation unit, for - example if the function builds in place an object of a limited - type. - -2018-12-11 Dmitriy Anisimkov - - * libgnat/g-socket.ads, libgnat/g-socket.adb: Fix duration - computations to be compatible with the type for socket timeouts - on Windows. - -2018-12-11 Gary Dismukes - - * exp_util.ads: Use preferred U.S. spelling of "honored". - * sem_spark.adb: Remove extra whitespace. - -2018-12-11 Hristian Kirtchev - - * exp_util.adb (Insert_Action): Add new formal parameter - Spec_Expr_OK. - (Insert_Actions): Add new formal parameter Spec_Expr_OK. Update - all calls to Insert_Actions where relevant. Honour an insertion - from a spec expression context when requested by the caller. - * exp_util.ads (Insert_Action): Add new formal parameter - Spec_Expr_OK. - (Insert_Actions): Add new formal parameter Spec_Expr_OK. - * freeze.adb (Add_To_Result): Force the insertion of the freeze - node even when the context is a spec expression. - -2018-12-11 Jerome Lambourg - - * vxaddr2line.adb, vxlink-bind.adb, vxlink-bind.ads, - vxlink-link.adb, vxlink-link.ads, vxlink-main.adb, vxlink.adb, - vxlink.ads: Remove. - * gcc-interface/Make-lang.in, gcc-interface/Makefile.in: Remove - bits for vxaddr2line. - -2018-12-11 Hristian Kirtchev - - * exp_aggr.adb, exp_ch7.adb, gnat1drv.adb, sem_ch10.adb, - sem_ch13.adb, sem_ch6.adb, sem_ch7.adb, sem_util.adb: Minor - reformatting. - -2018-12-11 Eric Botcazou - - * fe.h (Is_Atomic_Object): Declare. - (Is_Volatile_Object): Likewise. - * gcc-interface/trans.c (atomic_or_volatile_copy_required_p): New. - (Call_to_gnu): Generate a copy for an actual parameter passed by - reference if the conditions set forth by RM C.6(19) are met and - specificially deal with an atomic actual parameter. - -2018-12-11 Piotr Trojanek - - * sem_util.adb (Is_Subprogram_Stub_Without_Prior_Declaration): - Return False on stubs that complete a generic subprogram. - * sem_util.ads: Update corresponding comment. - -2018-12-11 Ed Schonberg - - * sem_ch4.adb (Analyze_Allocator): In GNATprove mode build a - subtype declaration if the allocator has a subtype indication - with a constraint. This allows additional proofs to be applied - to allocators that designate uninitialized constrained objects. - -2018-12-11 Yannick Moy - - * sem_util.adb (Has_Full_Default_Initialization): Consider - access types as having full default initialization. - -2018-12-11 Yannick Moy - - * gnat1drv.adb (Gnat1drv): Issue specific error message in - GNATprove mode when multiple file names on the command line. - * osint.adb, osint.ads (Dump_Command_Line_Source_File_Names): - New procedure to print file names on the command line. - -2018-12-11 Javier Miranda - - * exp_aggr.adb (Convert_To_Assignments): When gnerating C, do - not declare a temporary to initialize an aggregate assigned to - Out or In_Out parameters whose type has no discriminants. This - avoids stack overflow errors at runtime. - -2018-12-11 Ed Schonberg - - * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Extend - algorithm to cover subprograms generated in nested loops and in - exception handlers, in order to build an explicit elaboration - procedure in more complex cases. - -2018-12-11 Jerome Lambourg - - * Makefile.rtl, gcc-interface/Makefile.in: Remove crtbe bits for - VxWorks. - * libgnat/system-vxworks-arm-rtp-smp.ads, - libgnat/system-vxworks-arm-rtp.ads, - libgnat/system-vxworks-arm.ads, - libgnat/system-vxworks-e500-kernel.ads, - libgnat/system-vxworks-e500-rtp-smp.ads, - libgnat/system-vxworks-e500-rtp.ads, - libgnat/system-vxworks-ppc-kernel.ads, - libgnat/system-vxworks-ppc-rtp-smp.ads, - libgnat/system-vxworks-ppc-rtp.ads, - libgnat/system-vxworks-ppc.ads, - libgnat/system-vxworks-x86-kernel.ads, - libgnat/system-vxworks-x86-rtp-smp.ads, - libgnat/system-vxworks-x86-rtp.ads, - libgnat/system-vxworks7-aarch64-rtp-smp.ads, - libgnat/system-vxworks7-aarch64.ads, - libgnat/system-vxworks7-arm-rtp-smp.ads, - libgnat/system-vxworks7-e500-kernel.ads, - libgnat/system-vxworks7-e500-rtp-smp.ads, - libgnat/system-vxworks7-e500-rtp.ads, - libgnat/system-vxworks7-ppc-kernel.ads, - libgnat/system-vxworks7-ppc-rtp-smp.ads, - libgnat/system-vxworks7-ppc-rtp.ads, - libgnat/system-vxworks7-ppc64-kernel.ads, - libgnat/system-vxworks7-ppc64-rtp-smp.ads, - libgnat/system-vxworks7-x86-kernel.ads, - libgnat/system-vxworks7-x86-rtp-smp.ads, - libgnat/system-vxworks7-x86-rtp.ads, - libgnat/system-vxworks7-x86_64-kernel.ads, - libgnat/system-vxworks7-x86_64-rtp-smp.ads: Remove pragma - Linker_Options for --specs. - * vx_crtbegin.c, vx_crtbegin.inc, vx_crtbegin_array.c, - vx_crtbegin_attr.c, vx_crtend.c, vxworks-gnat-crtbe-link.spec: - Remove. - -2018-12-11 Ed Schonberg - - * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations, - Freeze_Entity_Checks): Process aspect Predicate in the same - fashion as aspect Dynamic_Predicate. - -2018-12-11 Eric Botcazou - - * gcc-interface/trans.c (elaborate_all_entities_for_package): - Skip aliasing subprograms. - -2018-12-11 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric - documentation for the Libadalang-based version. - -2018-12-11 Javier Miranda - - * exp_aggr.adb (In_Object_Declaration): Removed. - (Is_CCG_Supported_Aggregate): New subprogram that replaces - In_Object_Declaration extending its functionality to indicate if - an aggregate is in a context supported by the CCG backend. - -2018-12-11 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatstub - documentation for the Libadalang-based version. - * gnat_ugn.texi: Regenerate. - -2018-12-11 Ed Schonberg - - * sem_ch13.adb (Push_Type, Pop_Type): New procedures, used for - analysis of aspect expressions for record types, whose - components (not only discriminants) may be referenced in aspect - expressions. - (Analyze_Aspect_Specifications, Analyze_Aspects_At_Freeze_Point, - Analyze_Aspect_At_End-Of_Declarations, - Resolve_Aspect_Expressions): Use the new subprograms. - (Check_Aspect_At_End_Of_Declarations): Improve error message. - (Build_Predicate_Functions): Do not build their bodies in a - generic unit. - (Is_Derived_Type_With_Constraint): New subprogram to uncover and - reject aspect specificationss on types that appear after the - type is frozen. - * sem_ch13.ads (Push_Scope_And_Install_Discriminants, - Uninstall_Discriminants_And_Pop_Scope): Remove. - * sem_ch6.adb, sem_ch6.ads (Fully_Conformant_Expressions): - Additional parameter to improve error message on illegal aspect - specifications whose resolution differ between aspect - specification and freeze point. - * freeze.adb: Remove references to - Install/Uninstall_Discriminants. - -2018-12-11 Pierre-Marie de Rodat - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Document the -fgnat-encodings switch. - * gnat_ugn.texi: Regenerate. - -2018-12-11 Justin Squirek - - * sem_ch10.adb (Analyze_Subunit): Modify conditional to fully - remove parent contexts from library-level subprogram bodies in - addition to package bodies. - -2018-12-11 Hristian Kirtchev - - * exp_prag.adb (Expand_Pragma_Initial_Condition): Do not - generate an Initial_Condition procedure and a call to it when - the associated pragma is ignored. - * sem_ch10.adb (Analyze_Compilation_Unit): Minor cleanup. - -2018-12-11 Eric Botcazou - - * fe.h (Debug_Generated_Code): Declare. - * gcc-interface/gigi.h (enum inline_status_t): Rename - is_disabled to is_default, is_enabled to is_requested and add - is_prescribed. - * gcc-interface/decl.c (inline_status_for_subprog): New function. - (gnat_to_gnu_entity) : Use it to get the - inlining status of the subprogram. - * gcc-interface/trans.c (gigi): Adjust to above renaming. - (build_raise_check): Likewise. - (Compilation_Unit_to_gnu): Likewise. - (gnat_to_gnu): Likewise. - * gcc-interface/utils.c (create_subprog_decl): Likewise. Deal - with is_prescribed status by setting - DECL_DISREGARD_INLINE_LIMITS. Do not set the - DECL_NO_INLINE_WARNING_P flag if Debug_Generated_Code is true. - -2018-12-03 Gary Dismukes - - * sem_aux.adb (Object_Type_Has_Constrained_Partial_View): Return - True for an untagged discriminated formal derived type when - referenced within a generic body (augments existing test for - formal private types). - * sem_util.adb (Is_Dependent_Component_Of_Mutable_Type): If the - prefix of the name is a qualified expression, retrieve the - operand of that. Add a test of whether the (possible) - dereference prefix is a variable, and also test whether that - prefix might just be of an access type (occurs in some implicit - dereference cases) rather than being an explicit dereference. - Retrieve the Original_Node of the object name's main prefix and - handle the possibility of that being a qualified expression. - Remove special-case code for explicit dereferences that don't - come from source. Add test for the renaming not being within a - generic body for proper determination of whether a formal access - type is known to be constrained (it is within a generic spec, - but not in the body). Fix an existing incorrect test for - renaming of a discriminant-dependent component of a untagged - generic formal type being within a generic body, adding test of - taggedness and calling In_Generic_Body (now properly checks for - cases where the renaming is in a nongeneric body nested within a - generic). Return False in cases where the selector is not a - component (or discriminant), which can occur for - prefixed-notation calls. - -2018-12-03 Ed Schonberg - - * sem_res.adb (Apply_Check): For array types, apply a length - check rather than a qualification, to avoid spurious errors when - the value of a dependend expression has a matching length but - different bounds from those of the type of the contect. - -2018-12-03 Hristian Kirtchev - - * libgnat/a-calend.adb: Update the number of leap seconds. Add - the hard time values for year 2015 and 2016. - -2018-12-03 Gary Dismukes - - * exp_ch3.adb, libgnarl/s-taasde.adb, libgnarl/s-taenca.adb, - libgnarl/s-tarest.adb, libgnarl/s-tasini.adb, - libgnarl/s-taskin.ads, libgnarl/s-tasren.adb, - libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb: Spelling fixes and - minor reformatting. - -2018-12-03 Eric Botcazou - - * exp_aggr.adb (Convert_To_Positional): Use - Static_Array_Aggregate to decide whether to set - Compile_Time_Known_Aggregate on an already flat aggregate. - (Expand_Array_Aggregate): Remove test on - Compile_Time_Known_Aggregate that turns out to be dead and - simplify. - (Is_Static_Component): New predicate extracted from... - (Static_Array_Aggregate): ...here. Test neither Is_Tagged_Type - nor Is_Controlled for the type, but test whether the component - type has discriminants. Use the Is_Static_Component predicate - consistently for the positional and named cases. - -2018-12-03 Eric Botcazou - - * freeze.adb (Freeze_Entity): Do not freeze the partial view of - a private subtype if its base type is also private with delayed - freeze before the full type declaration of the base type has - been seen. - * sem_ch7.adb (Preserve_Full_Attributes): Add assertion on - freeze node. - -2018-12-03 Eric Botcazou - - * exp_ch3.adb (Build_Record_Init_Proc): Inherit an - initialization procedure if it is present, even if it is null. - -2018-12-03 Patrick Bernardi - - * libgnarl/s-taskin.ads (ATC_Level_Base): Redefine to span from - -1 to Max_ATC_Nesting so that 0 represents no ATC nesting and -1 - represented a completed task. To increase readability, new - constants are introduced to represent key ATC nesting levels. - Consequently, Level_No_Pending_Abort replaces - ATC_Level_Infinity. ATC_Level related definitions now - documented. - (Ada_Task_Control_Block): The default initialization of - components ATC_Nesting_Level and Pending_ATC_Level now use new - ATC_Level_Base constants. Comments improved - * libgnarl/s-taskin.adb (Initialize): Improve the initialisation - of the first element of the Entry_Calls array to facilitate - better maintenance. - * libgnarl/s-taasde.ads: Update comment. - * libgnarl/s-taasde.adb, libgnarl/s-taenca.adb, - libgnarl/s-tasren.adb, libgnarl/s-tassta.adb, - libgnarl/s-tasuti.ads, libgnarl/s-tasuti.adb: Use new - ATC_Level_Base constants. - * libgnarl/s-tarest.adb (Create_Restricted_Task): Improve the - initialisation of the first element of the task's Entry_Calls - array to facilitate better maintenance. - * libgnarl/s-tasini.ads (Locked_Abort_To_Level): Update - signature to accept ATC_Level_Base. - * libgnarl/s-tasini.adb (Locked_Abort_To_Level): Update - signature to accept ATC_Level_Base. Use new ATC_Level_Base - constants and only modify the aborting task's Entry_Calls array - if any entry call is happening. - * libgnarl/s-tposen.adb (Protected_Single_Entry_Call): Reference - the first element of the task's Entry_Calls array via 'First - attribute to facilitate better maintenance. - -2018-12-03 Eric Botcazou - - * einfo.adb (Write_Entity_Info): Don't take Scope of Standard - package. - * sem_ch4.adb (Remove_Abstract_Operations): Add missing blank - lines to -gnatdv output. - * sem_type.adb (Write_Overloads): Take Entity of entity names - only. - -2018-12-03 Hristian Kirtchev - - * checks.adb, exp_aggr.adb, exp_attr.adb, exp_ch3.adb, - exp_util.adb, exp_util.ads, repinfo.adb, sem_attr.adb, - sem_ch3.adb, sem_res.adb, sem_util.adb: Minor reformatting. - -2018-12-03 Ed Schonberg - - * sem_ch3.adb (Complete_Private_Subtype): Enhance comment. - -2018-12-03 Olivier Hainque - - * gcc-interface/lang.opt (fopenacc): New option for Ada. - * gcc-interface/misc.c (gnat_handle_option): Handle it. - * gcc-interface/trans.c (struct loop_info_d): Add OMP - attributes. - (Iterate_Acc_Clause_Arg, Acc_gnat_to_gnu): New functions, - helpers for OpenACC pragmas processing in Pragma_to_gnu. - (Acc_Var_to_gnu, Acc_Reduc_Var_to_gnu, Acc_Reduc_to_gnu): - Likewise. - (Acc_Size_Expr_to_gnu, Acc_Size_List_to_gnu): Likewise. - (Pragma_Acc_Data_to_gnu): Likewise. - (Pragma_to_gnu): Handle Pragma_Acc_Loop, Pragma_Acc_Data, - Pragma_Acc_Kernels and Pragma_Acc_Parallel. - (Acc_Loop_to_gnu, Regular_Loop_to_gnu): New functions. Helpers - for ... - (Loop_Statement_to_gnu): Rework to handle OpenACC loops. - -2018-12-03 Olivier Hainque - - * gcc-interface/targtyps.c (MALLOC_OBSERVABLE_ALIGNMENT): Set to - 2 * POINTER_SIZE. - -2018-12-03 Ed Schonberg - - * sem_res.adb (Set_Slice_Subtype): The index type of a slice is - constrained. - -2018-11-26 Matthias Klose - - PR ada/88191 - * libgnarl/s-linux__alpha.ads: Define SIGSYS. - -2018-11-19 Alexandre Oliva - - PR ada/81878 - * gcc-interface/config-lang.in (lang_requires): Set to "c c++" - when gnattools wants it. - -2018-11-19 Eric Botcazou - - * gcc-interface/cuintp.c (UI_From_gnu): Remove code for 32-bit hosts. - -2018-11-15 Eric Botcazou - - * gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the switch - -fnon-call-exceptions passed on the command line in -gnatp mode. - -2018-11-14 Ed Schonberg - - * exp_util.ads, exp_util.adb: Change the profile of - Silly_Boolean_Array_Xor_Test, adding a formal that can be a copy - of the right opersnd. This prevents unnesting anomalies when - that operand contains uplevel references. - * exp_ch4.adb (Expand_Boolean_Operation): Use this new profile. - * exp_pakd.adb (Expand_Packed_Boolean_Operator): Ditto. - -2018-11-14 Patrick Bernardi - - * libgnarl/a-intnam__linux.ads: Add SIGSYS. - * libgnarl/s-linux__alpha.ads, libgnarl/s-linux__android.ads, - libgnarl/s-linux__hppa.ads, libgnarl/s-linux__mips.ads, - libgnarl/s-linux__riscv.ads, libgnarl/s-linux__sparc.ads, - libgnarl/s-linux__x32.ads: Rename SIGLTHRRES, SIGLTHRCAN and - SIGLTHRDBG to SIG32, SIG33 and SIG34 as their names are - implementation specific. - * libgnarl/s-osinte__linux.ads, libgnarl/s-linux.ads: Add - SIGSYS. Move SIG32, SIG33 and SIG34 from the unmasked list to - the reserved list. - -2018-11-14 Eric Botcazou - - * exp_aggr.adb (Is_Static_Element): New predicate extracted - from... - (Check_Static_Components): ...here. Call Is_Static_Element on - each element of the component association list, if any. - (Flatten): Duplicate the expression of an others choice only if - it is static or is an aggregate which can itself be flattened. - -2018-11-14 Olivier Hainque - - * sigtramp-vxworks-target.inc: Fix stack checking test errors in - ACATS, now that GCC can emit CFI rules referring to sp in - absence of a frame pointer. - -2018-11-14 Eric Botcazou - - * exp_aggr.adb (Check_Static_Components): Remove dead test. - (Flatten): Likewise. Move comment around. - -2018-11-14 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Null_Procedure): Capture Ghost and - SPARK-related global state at the start of the routine. Set the - Ghost mode of the completed spec if any. Restore the saved - Ghost and SPARK-related global state on exit from the routine. - -2018-11-14 Eric Botcazou - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst - (-gnatR): Document new -gnatR4 level. - * gnat_ugn.texi: Regenerate. - * opt.ads (List_Representation_Info): Bump upper bound to 4. - * repinfo.adb: Add with clause for GNAT.HTable. - (Relevant_Entities_Size): New constant. - (Entity_Header_Num): New type. - (Entity_Hash): New function. - (Relevant_Entities): New set implemented with GNAT.HTable. - (List_Entities): Also list compiled-generated entities present - in the Relevant_Entities set. Consider that the Component_Type - of an array type is relevant. - (List_Rep_Info): Reset Relevant_Entities for each unit. - * switch-c.adb (Scan_Front_End_Switches): Add support for -gnatR4. - * switch-m.adb (Normalize_Compiler_Switches): Likewise - * usage.adb (Usage): Likewise. - -2018-11-14 Javier Miranda - - * exp_disp.adb (Expand_Interface_Thunk): Extend handling of - renamings of the predefined equality primitive. - (Make_Secondary_DT): When calling Expand_Interface_Thunk() pass - it the primitive, instead of its Ultimate_Alias; required to - allow the called routine to identify renamings of the predefined - equality operation. - -2018-11-14 Hristian Kirtchev - - * freeze.adb (Check_Pragma_Thread_Local_Storage): New routine. A - variable with suppressed initialization has no initialization - for purposes of the pragma. - (Freeze_Object_Declaration): Remove variable - Has_Default_Initialization as it is no longer used. Use routine - Check_Pragma_Thread_Local_Storage to verify the semantics of - pragma Thread_Local_Storage. - -2018-11-14 Ed Schonberg - - * sem_res.adb (Resolve_If_Expression): Verify that the subtypes - of all dependent expressions obey the constraints of the - expected type for the if-expression. - (Analyze_Expression): Only add qualificiation to the dependent - expressions when the context type is constrained. Small - adjustment to previous patch. - -2018-11-14 Eric Botcazou - - * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Don't - register a compile-time warning or error for 'Alignment or 'Size - of an entity declared in a generic unit. - -2018-11-14 Justin Squirek - - * sem_ch8.adb (Use_One_Package): Add test for out-of-scope - homonyms. - -2018-11-14 Ed Schonberg - - * exp_ch3.adb: (Expand_N_Object_Declaration): If the expression - is a limited aggregate its resolution is delayed until the - object declaration is expanded. - * sem_ch3.adb: (Analyze_Object_Declaration): If the expression - is a limited aggregate and the declaration has a following - address clause indicate that resolution of the aggregate (which - must be built in place) must be delayed. - -2018-11-14 Bob Duff - - * sem_attr.adb (To_Address): Simplify setting of - Is_Static_Expression. Remove second (unconditional) call to - Set_Is_Static_Expression -- surely it's not static if the - operand is not. Initialize Static on declaration. Do not try - to fold 'To_Address, even though it's static. - * exp_attr.adb (To_Address): Preserve Is_Static_Expression. - * sinfo.ads, sem_eval.ads, sem_eval.adb (Is_Static_Expression, - Is_OK_Static_Expression, Raises_Constraint_Error): Simplify - documentation. There was too much repetition and redundancy. - -2018-11-14 Ed Schonberg - - * sem_ch3.adb (Analyze_Object_Declaration): Use the - Actual_Subtype to preserve information about a constant - initialized with a non-static entity that is known to be valid, - when the type of the entity has a narrower range than that of - the nominal subtype of the constant. - * checks.adb (Determine_Range): If the expression is a constant - entity that is known-valid and has a defined Actual_Subtype, use - it to determine the actual bounds of the value, to enable - additional optimizations. - -2018-11-14 Hristian Kirtchev - - * back_end.adb, checks.adb, exp_ch3.adb, exp_ch4.adb, - exp_ch7.adb, exp_disp.adb, exp_unst.adb, exp_util.adb, - freeze.adb, sem_ch13.adb, sem_ch6.adb, sem_ch7.adb, - sem_prag.adb, sem_spark.adb, sem_util.adb: Minor reformatting. - -2018-11-14 Hristian Kirtchev - - * exp_ch4.adb (Find_Aliased_Equality): New routine. - (Find_Equality): Reimplemented. - (Is_Equality): New routine. - -2018-11-14 Hristian Kirtchev - - * ghost.adb (Ghost_Entity): New routine. - (Mark_And_Set_Ghost_Assignment): Reimplemented. - * sem_ch5.adb (Analyze_Assignment): Assess whether the target of - the assignment is an ignored Ghost entity before analyzing the - left hand side. - * sem_ch8.adb (Find_Direct_Name): Update the subprogram - signature. Do not generate markers and references when they are - not desired. - (Nvis_Messages): Do not execute when errors are not desired. - (Undefined): Do not emit errors when they are not desired. - * sem_ch8.ads (Find_Direct_Name): Update the subprogram - signature and comment on usage. - * sem_util.adb (Ultimate_Prefix): New routine. - * sem_util.ads (Ultimate_Prefix): New routine. - -2018-11-14 Justin Squirek - - * sem_ch7.adb (Uninstall_Declarations): Add conditional to avoid - uninstalling potential visibility during freezing on enumeration - literals. - -2018-11-14 Jerome Lambourg - - * env.c: Do not include crt_externs.h on iOS, as it does not - exist there. This is also true for the iPhone Simulator SDK. - -2018-11-14 Ed Schonberg - - * exp_ch7.adb (Check_Unnesting_In_Declarations): New procedure - to transform blocks that appear in the declarative part of a - package body into subprograms if they contain generated - subprograms (such as finalization routines). Needed to generate - the proper upward references in unnesting mode. - -2018-11-14 Ed Schonberg - - * freeze.adb (Freeze_Fixed_Point_Type): If the given low bound - of the type is less than the nearest model number, do not expand - the range of the type to include the model number below the - bound. Similar adjustment if the upper bound is larger than the - nearest model number. - -2018-11-14 Hristian Kirtchev - - * checks.adb (Install_Primitive_Elaboration_Check): Do not - create the check when exceptions cannot be used. - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Do not raise - Program_Errror when exceptions cannot be used. Analyze the - generated code with all checks suppressed. - * exp_ch7.adb (Build_Finalizer): Remove the declaration of - Exceptions_OK. - (Make_Deep_Array_Body): Remove the declaration of Exceptions_OK. - (Make_Deep_Record_Body): Remove the declaration of - Exceptions_OK. - (Process_Transients_In_Scope): Remove the declaration of - Exceptions_OK. - * exp_util.adb (Exceptions_In_Finalization_OK): Renamed to - Exceptions_OK. - * exp_util.ads (Exceptions_In_Finalization_OK): Renamed to - Exceptions_OK. - -2018-11-14 Hristian Kirtchev - - * exp_ch4.adb (Expand_N_Op_Eq): Remove duplicated code and use - routine Find_Equality instead. - (Find_Equality): New routine. - -2018-11-14 Piotr Trojanek - - * sem_util.adb (First_From_Global_List): Do not expect - N_Selected_Component in the Global contract; simplify assertion - with Nam_In. - -2018-11-14 Piotr Trojanek - - * sem_ch12.adb (Instantiate_Object): Set - Corresponding_Generic_Association on generic actuals with - default expression. - * sinfo.ads (Corresponding_Generic_Association): Update comment. - -2018-11-14 Hristian Kirtchev - - * exp_ch4.adb (Expand_Concatenate): Use the proper routine to - set the need for debug info. - * exp_dbug.adb (Build_Subprogram_Instance_Renamings): Use the - proper routine to set the need for debug info. - * exp_prag.adb (Expand_Pragma_Initial_Condition): Use the proper - routine to set the need for debug info. - * exp_util.adb (Build_DIC_Procedure_Declaration): Use the proper - routine to set the need for debug info. - (Build_Invariant_Procedure_Declaration): Use the proper routine - to set the need for debug info. - * ghost.adb (Record_Ignored_Ghost_Node): Add statements as a - whole class to the list of top level ignored Ghost nodes. - * sem_util.adb (Set_Debug_Info_Needed): Do not generate debug - info for an ignored Ghost entity. - -2018-11-14 Piotr Trojanek - - * bindgen.adb, exp_cg.adb, repinfo.adb, sprint.adb: Minor reuse - Cancel_Special_Output where possible. - -2018-11-14 Piotr Trojanek - - * exp_dbug.ads, sem_util.ads: Minor fixes in comments. - -2018-11-14 Arnaud Charlet - - * adabkend.adb (Scan_Back_End_Switches): Handle -gx switches - explicitly. - -2018-11-13 Eric Botcazou - - * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions - for the runtime on platforms where System.Machine_Overflow is true. - -2018-11-08 Eric Botcazou - - * fe.h (Suppress_Checks): Declare. - * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions - only if checks are not suppressed and -faggressive-loop-optimizations - only if they are. - * gcc-interface/trans.c (struct loop_info_d): Remove has_checks and - warned_aggressive_loop_optimizations fields. - (gigi): Do not clear warn_aggressive_loop_optimizations here. - (Raise_Error_to_gnu): Do not set has_checks. - (gnat_to_gnu) : Remove support for aggressive - loop optimizations. - -2018-11-08 Eric Botcazou - - * gcc-interface/decl.c (components_to_record): Remove obsolete kludge. - * gcc-interface/utils.c (make_packable_type): Set TYPE_PACKED on the - new type but do not take into account the setting on the old type for - the new fields. Rename a local variable. - (finish_record_type): Clear DECL_BIT_FIELD_TYPE on a variant part at - offset 0, if any. - (create_field_decl): Tweak comment. - -2018-10-22 Eric Botcazou - - * gcc-interface/utils.c (unchecked_convert): Use local variables for - the biased and reverse SSO attributes of both types. - Further extend the processing of integral types in the presence of - reverse SSO to all scalar types. - -2018-10-22 Eric Botcazou - - * gcc-interface/trans.c (Pragma_to_gnu) : Use - a simple memory constraint in all cases. - - * gcc-interface/lang-specs.h: Bump copyright year. - -2018-10-17 David Malcolm - - * gcc-interface/Make-lang.in (selftest-ada): New. - -2018-10-09 Eric Botcazou - - * exp_ch3.adb (Is_Null_Statement_List): New predicate. - (Build_Array_Init_Proc): Use it to find out whether the - initialization procedure Is_Null_Init_Proc; if so, set - Warnings_Off on the parameter. - (Build_Init_Procedure): Likewise. - (Init_Formals): Use an in/out first parameter only for - unconstrained arrays and for records either containing or built - for proteced types or task types; use an out parameter in all - the other cases. - * fe.h (Is_Init_Proc): Declare. - * gcc-interface/decl.c (type_requires_init_of_formal): Do not - return true for a discriminant in an unchecked union. - (gnat_to_gnu_param): Do not create a PARM_DECL for the Out - parameter of an initialization procedure. - -2018-10-09 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : If - this is not a definition, retrieve the expression in all cases - even if we are just annotating types. - * gcc-interface/trans.c (gnat_to_gnu): Also translate Size - attribute for constrained types in this mode. - -2018-10-09 Eric Botcazou - - * adaint.c (__gnat_get_executable_suffix_ptr): Add new line. - (__gnat_locate_exec): Check that HOST_EXECUTABLE_SUFFIX is not - empty before doing a string search for it. - * socket.c (ATTRIBUTE_UNUSED): Define. - (__gnat_disable_sigpipe): Add ATTRIBUTE_UNUSED on parameter. - * terminals.c (ATTRIBUTE_UNUSED): Move around. - (__gnat_setup_child_communication): Add ATTRIBUTE_UNUSED on - parameter. - (__gnat_send_header): Add ATTRIBUTE_UNUSED on parameters. - -2018-10-09 Yannick Moy - - * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Rewrite - pragmas as null statements in GNATprove mode. - -2018-10-09 Eric Botcazou - - * exp_ch6.adb (Add_Call_By_Copy_Code): Initialize the temporary - made for an Out parameter if the formal type has discriminants. - -2018-10-09 Maroua Maalej - - * sem_spark.adb (Check_Declaration): fix bug related to non - access object permissions. - -2018-10-09 Doug Rupp - - * libgnat/a-ncelfu.ads: Fix name in header to match package. - -2018-10-09 Eric Botcazou - - * exp_disp.adb (Make_Disp_Asynchronous_Select_Spec): Set - Warnings_Off on the B out parameter. - -2018-10-09 Eric Botcazou - - * einfo.ads: Small comment fix. - -2018-10-09 Eric Botcazou - - * sem_ch7.adb (Has_Referencer): Add comment for the - N_Freeze_Entity case. Do not rely on - Has_Referencer_Of_Non_Subprograms to clear the Is_Public flag on - subprogram entities. - -2018-10-09 Ed Schonberg - - * exp_unst.adb (In_Synchronized_Call): Handle properly private - types whose full views are synchronized types, in order to - recognize generated subprograms whose bodies must be considered - reachable even if no direct calls to them are visible in the - source. - -2018-10-09 Ed Schonberg - - * exp_ch4.adb (Expand_Modular_Op): When expanding an operation - on nonbinary modular types, convert the opersnds to an integer - type that is large enough to hold the modulus of the type, which - may be larger than Integer'Last. - -2018-10-09 Ed Schonberg - - * exp_unst.adb (Unnest_Subprogram): When an uplevel reference - is to an unconstrained formal, the 'Access reference that is - created to initialize the corresponding component of the - activation record must be wrapped in an unchecked conversion to - the generated type of the component. Otherwise, spurious suvtype - conformance errors will be generated when the code is within an - instantiation and the type of the formal is a formal type of the - enclosing generic. Note that during unnesting there is no simple - way to determine that the code appears within an instance - because ther is no scope stack. - -2018-10-09 Eric Botcazou - - * gcc-interface/decl.c (type_requires_init_of_formal): New - predicate. - (gnat_to_gnu_param): Use it to determine whether a PARM_DECL - must be created for an Out parameter passed by copy. - -2018-10-09 Arnaud Charlet - - * libgnat/a-coboho.ads (Storage_Element): Fix a typo. - -2018-10-09 Claire Dross - - * libgnat/a-cfinve.ads: Remove default value for - Max_Size_In_Storage_Elements as it was not supported in SPARK. - -2018-10-09 Ed Schonberg - - * exp_ch6.adb (Add_Call_By_Copy_Node, - Add_Simple_Call_By_Copy_Node, Expand_Call_Helper): Reset - Is_True_Constant on entities used as Out or In_Out parameters in - calls. - -2018-10-09 Ed Schonberg - - * exp_unst.adb (Unnest_Subprogram): Do not load System to obtain - the Address entity unless an activation record is being built. - Removes useless with_clauses for System when nested subprograms - do not have uplevel references, and therefore do not need - activation records. - -2018-10-09 Ed Schonberg - - * sem_ch6.adb (Fully_Conformant_Expressions): Handle properly - the conformance check on an aspect expression that includes a - call to an instance of Unchecked_Conversion, or more generally a - call to an intrinsic operation. - -2018-10-09 Eric Botcazou - - * repinfo.adb: Remove with/use clause for Stand. - (List_Mechanisms): List the mechanism of functions only. - -2018-10-09 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Correct spelling of - --eol switch. Document the language-version switches. Update - description for --no-exception. - -2018-10-09 Vasiliy Fofanov - - * libgnat/s-os_lib.ads (Normalize_Pathname): Fix incorrect - comment. - -2018-10-09 Arnaud Charlet - - * vxlink.adb: Remove pragma Annotate, no longer needed. - -2018-10-09 Ed Schonberg - - * checks.adb (Apply_Type_Conversion_Checks): Use GNATprove_Mode - rather than SPARK_mode in order to preserve the Do_Range_Check - flag for verification purposes. - -2018-10-09 Ed Schonberg - - * exp_aggr.adb (Expand_Array_Aggregate): If it is not possible - to build in place an aggregate with component associations, set - the Warnings_Off flag on the generated temporary, to prevent - spurious warnings from the backend when compiling with the - -Wuninitialized gcc flag. - -2018-09-30 Alexandre Oliva - - * gcc-interface/lang-specs.h (default_compilers): When given - fcompare-debug-second, adjust auxbase like cc1, and pass - gnatd_A. - * gcc-interface/misc.c (flag_compare_debug): Remove variable. - (gnat_post_options): Do not set it. - * lib-writ.adb (flag_compare_debug): Remove import. - (Write_ALI): Do not test it. - -2018-09-28 Eric Botcazou - Pierre-Marie de Rodat - - * gcc-interface/decl.c (is_cplusplus_method): Do not require C++ - convention on Interfaces. - * gcc-interface/trans.c (Subprogram_Body_to_gnu): Try to create a - bona-fide thunk and hand it over to the middle-end. - (get_controlling_type): New function. - (use_alias_for_thunk_p): Likewise. - (thunk_labelno): New static variable. - (make_covariant_thunk): New function. - (maybe_make_gnu_thunk): Likewise. - * gcc-interface/utils.c (finish_subprog_decl): Set DECL_CONTEXT of the - result DECL here instead of... - (end_subprog_body): ...here. - -2018-09-27 Martin Sebor - - * gcc-interface/utils.c (make_packable_type): Introduce a temporary - to avoid -Wnonnull. - (unchecked_convert): Same. - -2018-09-26 Elisa Barboni - - * sem_prag.adb (Check_Refined_Global_Item): Improve error - message. - -2018-09-26 Thomas Quinot - - * sem_ch13.adb (Inherit_Aspects_At_Freeze_Point): For a - representation item that is an N_Aspect_Definition, retrieve the - entity it applies to using the Entity attribute. - -2018-09-26 Justin Squirek - - * sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition - to check for unmarked subprogram references coming from - renamings. - -2018-09-26 Arnaud Charlet - - * back_end.adb (Scan_Compiler_Arguments): Store -G xxx switches. - -2018-09-26 Yannick Moy - - * errout.ads: Update comment for insertion character '?'. - * inline.adb: Use simple insertion character '?' for GNATprove - info messages. - * sem_res.adb (Resolve_Call): Issue an info message on inlining - in GNATprove mode. - -2018-09-26 Ed Schonberg - - * checks.adb (Apply_Type_Conversion_Checks): Do not generate a - range check on the expression of the conversion if it involves a - fixed-point type, as such conversions are handled specially - during expansion. - * exp_ch4.adb (Expand_N_Type_Conversion): In a conversion from - Fixed to Integer, use the base type of the expression to ensure - that the caller will generate the proper constraint check when - needed. - -2018-09-26 Maroua Maalej - - * sem_spark.adb (Check_Loop_Statement): Fix a bug related to - loop exit environment. - (Check_Statement): fixing a bug when comparing the source and - target in an assignment statement. - -2018-09-26 Hristian Kirtchev - - * sem_ch12.adb (Instantiate_Package_Body): Capture and restore - the full compilation context. - (Instantiate_Subprogram_Body): Capture and restore the full - compilation context. - -2018-09-26 Yannick Moy - - * debug.adb: Add use for -gnatd_f switch. - * inline.adb (Cannot_Inline): Only issue info message for - failure to inline in GNATprove mode when switch -gnatd_f is - used. - -2018-09-26 Javier Miranda - - * exp_disp.adb (Expand_Interface_Conversion): No displacement of - the pointer needed when the type of the operand is an interface - type that maches the target type and we are compiling under - configurable runtime. Adding also documentation explaining why - this cannot be done when compiling with the full runtime. - * exp_intr.adb: Update comment. - -2018-09-26 Hristian Kirtchev - - * sem_ch5.adb (Wrap_Loop_Statement): Annotate as No_Return. - -2018-09-26 Ed Schonberg - - * exp_util.adb (Make_Predicate_Call): Use OK_Convert_To when - applying a predicate check to prevent spurious errors when - private ancestors are involved. - -2018-09-26 Hristian Kirtchev - - * exp_ch4.adb (Expand_N_Allocator): Ensure that the use of the - secondary stack does not clash with restriction - No_Secondary_Stack. - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Ensure that - the use of the secondary stack does not clash with restriction - No_Secondary_Stack. - * sem_ch5.adb (Analyze_Loop_Statement): Wrap the loop in a block - prior to analysis in order to either provide a local scope for - an iterator, or ensure that the secondary stack is properly - managed. - (Check_Call): Account for the case where the tree may be - unanalyzed or contain prior errors. - (Has_Call_Using_Secondary_Stack): Renamed to Has_Sec_Stack_Call. - Update all uses of the subprogram. - (Prepare_Loop_Statement): New routine. - -2018-09-26 Javier Miranda - - * sem_res.adb (Resolve_Actuals): If the formal is a class-wide - type conversion then do not skip resolving and expanding the - conversion; required to displace the pointer to the object and - reference the dispatch table associated with the target - interface type. - -2018-09-26 Hristian Kirtchev - - * libgnat/g-dynhta.adb (Prepend_Or_Replace): Update the number - of key-value pairs in the hash table only when adding a brand - new pair. - -2018-09-26 Sergey Rybin - - * doc/gnat_ugn/gnat_utility_programs.rst: Add note about - processing of aggregate projects in gnatmetric and gnatstub. - -2018-09-26 Hristian Kirtchev - - * contracts.adb, exp_unst.adb, exp_util.adb, gnat1drv.adb, - opt.ads, par-prag.adb, sem_ch3.adb, sem_ch5.adb, sem_prag.adb, - sinfo.ads, snames.ads-tmpl: Minor reformatting. - -2018-09-26 Hristian Kirtchev - - * gcc-interface/Make-lang.in: Add unit GNAT.Sets to the list of - front end sources. - * impunit.adb: Add unit GNAT.Sets to the list of predefined - units. - * Makefile.rtl: Add unit GNAT.Sets to the list of non-tasking - units. - * libgnat/g-sets.adb: New unit. - * libgnat/g-sets.ads: New unit. - * libgnat/g-dynhta.adb (Minimum_Size): Decrease to 8 in order to - allow for small sets. Update all occurrences of Table_Locked to - Iterated. - (Ensure_Unlocked): Query the number of iterators. - (Find_Node): Use the supplied equality. - (Is_Empty): New routine. - (Lock): Update the number of iterators. - (Prepend_Or_Replace): Use the supplied equality. - (Size): Update the return type. - (Unlock): Update the number of iterators. - * libgnat/g-dynhta.ads: Update all occurrences of Table_Locked - to Iterated. Rename formal subprogram Equivalent_Keys to "=". - (Bucket_Range_Type, Pair_Count_Type): Remove types. - (Not_Created, Table_Locked, Iterator_Exhausted): Remove - exceptions. - (Hash_Table): Update to store the number of iterators rather - than locks. - (Is_Empty): New routine. - (Size): Update the return type. - * libgnat/g-lists.adb: Update all occurrences of List_Locked to - Iterated. - (Ensure_Unlocked): Query the number of iterators. - (Length): Remove. - (Lock): Update the number of iterators. - (Size): New routine. - (Unlock): Update the number of iterators. - * libgnat/g-lists.ads: Update all occurrences of List_Locked to - Iterated. - (Element_Count_Type): Remove type. - (Not_Created, Table_Locked, Iterator_Exhausted): Remove - exceptions. - (Linked_List): Update type to store the number of iterators - rather than locks. - (Length): Remove. - (Size): New routine. - * libgnat/gnat.ads (Bucket_Range_Type): New type. - (Iterated, Iterator_Exhausted, and Not_Created): New exceptions. - -2018-09-26 Javier Miranda - - * checks.adb (Install_Null_Excluding_Check): Do not add - null-excluding checks when the tree may not be fully decorated. - This patch cascade errors. - -2018-09-26 Gary Dismukes - - * sem_ch3.adb (Analyze_Object_Declaration): Remove test for - Comes_From_Source, which prevented implicit conversions from - being applied to anonymous access-to-subprogram formals in - constant declartions that arise from instance associations for - generic formal objects. Add RM and AARM references to comment. - -2018-09-26 Olivier Hainque - - * opt.ads (OpenAcc_Enabled): New flag. False by default. True - when OpenACC pragmas are requested to be honored, when -fopenacc - is found on the command line. - * back_end.adb (Scan_Compiler_Arguments): Set OpenACC_Enabled if - -fopenacc is seen on the command line. - * sinfo.adb, sinfo.ads (Is_OpenAcc_Environment): New - flag/predicate on Loop statements which embed an Acc_Kernels, - Acc_Parallel or Acc_Data pragma. - (Is_OpenAcc_Loop): New flag/predicate on Loop statements which - embed an Acc_Loop pragma. - (Set_Is_OpenAcc_Environment, Set_Is_OpenAcc_Loop): Setters for - the new flags. - * par-prag.adb (Prag): Handle Acc_Data, Acc_Loop, Acc_Parallel - and Acc_Kernels pragmas. Nothing to do here, all handled by - sem_prag. - * sem_prag.adb (Acc_First, Acc_Next, - Validate_Acc_Condition_Clause, Validate_Acc_Data_Clause, - Validate_Acc_Int_Expr_Clause, Validate_Acc_Int_Expr_List_Clause, - Validate_Acc_Loop_Collapse, Validate_Acc_Loop_Gang, - Validate_Acc_Loop_Vector, Validate_Acc_Loop_Worker, - Validate_Acc_Name_Reduction, Validate_Acc_Size_Expressions): New - helper for Analyze_Pragma, to handle OpenACC pragmas. - (Analyze_Pragma): Handle Acc_Data, Acc_Loop, Acc_Parallel and - Acc_Kernels pragmas. - * sem_ch5.adb (Disable_Constant): Unset Is_True_Constant on - variable entity, action for ... - (Disable_Constants): Helper for Analyze_Loop_Statement, to ... - (Analyze_Loop_Statement): Disable True_Constant on variables - referenced within an OpenACC environment. - * snames.ads-tmpl: Declare Name_Ids for the OpenACC directives - and clauses we can handle. Remove an exraneous whitespace before - columns, preventing line length overflow in the generated spec - with Ids now reaching beyond 999. - * doc/gnat_rm/implementation_defined_pragmas.rst: Document - pragma Acc_Parallel, Acc_Loop, Acc_Kernels and Acc_Data. - * gnat_rm.texi: Regenerate. - -2018-09-26 Ed Schonberg - - * sem_ch3.adb (Is_Onown_Limited): A derived type whose parent P - is a derived limited record is not itself limited if P is a - derived limited interface. - -2018-09-26 Eric Botcazou - - * sem_ch7.adb (Has_Referencer): Remove Top_Level parameter and - add In_Nested_Instance and - Has_Outer_Referencer_Of_Non_Subprograms parameters. Rename - Has_Non_Subprograms_Referencer variable into - Has_Referencer_Of_Non_Subprograms and initialize it with the new - third parameter. Adjust recursive calls and to the renaming. - Replace test on Top_Level with test on In_Nested_Instance to - decide whether to clear the Is_Public flag on entities. - (Hide_Public_Entities): Adjust call to Has_Referencer. - -2018-09-26 Eric Botcazou - - * exp_disp.adb (Expand_Interface_Conversion): Use Present test. - (Expand_Interface_Thunk): Propagate debug info setting from - target. - * exp_util.ads (Find_Interface_Tag): Adjust comment. - * exp_util.adb (Find_Interface_Tag): Remove assertions of - success. - * sem_util.adb (Is_Variable_Size_Record): Only look at - components and robustify the implementation. - * fe.h (Find_Interface_Tag): Declare. - (Is_Variable_Size_Record): Likewise. - -2018-09-26 Thomas Quinot - - * exp_util.adb (Make_CW_Equivalent_Type): Propagate bit order - and scalar storage order from root type to classwide equivalent - type, to prevent rejection of the equivalent type by the - freezing circuitry. - -2018-09-26 Justin Squirek - - * sem_ch5.adb (Analyze_Iterator_Specification): Add conditional - to freeze called functions within iterator specifications during - full analysis. - (Preanalyze_Range): Minor typo fix. - -2018-09-26 Ed Schonberg - - * sem_ch6.adb (Analyze_Function_Return): If the return type has - a dynamic_predicate, apply a Predicate_Check to the expression, - given that it is implicitly converted to the return type. - Exclude case expressions from the check, because in this context - the expression is expanded into individual return statements. - -2018-09-26 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : In - -gnatct mode, process the discriminants only for a definition. - -2018-09-26 Eric Botcazou - - * repinfo.adb (List_Record_Layout): Be prepared for JSON output. - (List_Record_Info): Use the flat representation for record - subtypes in the JSON format. - -2018-09-26 Justin Squirek - - * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add - documentation and an extra conditional check for RCI units so - that generated ali files will list the spec only instead of a - body when a body is not found. - -2018-09-26 Eric Botcazou - - * gcc-interface/gigi.h (error_gnat_node): Delete. - * gcc-interface/trans.c (error_gnat_node): Likewise. - (gigi): Replace it with Current_Error_Node. - (gnat_to_gnu): Likewise. - * gcc-interface/utils.c (rest_of_subprog_body_compilation): - Likewise. - * gcc-interface/misc.c (internal_error_function): Do not set it. - -2018-09-26 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust - code retrieving the address when a clause has already been - processed. - * gcc-interface/trans.c (gnat_to_gnu) - : For an object with a Freeze - node, build a meaningful expression. - -2018-09-26 Arnaud Charlet - - * gnat1drv.adb (Adjust_Global_Switches): -gnatd_A sets - Opt.Disable_ALI_File. - * debug.adb: Update debug flags documentation. - -2018-09-26 Ed Schonberg - - * contracts.adb (Analyze_Entry_Or_Subprogram_Contract): The - analysis of preconditions specified by pragmas (rather than - aspects) is not delayed, and therefore expressions functions - that are completions do not need special handling during - expansion. - -2018-09-26 Ed Schonberg - - * exp_unst.adb: Fix handling of up level references for entries. - -2018-09-26 Ed Schonberg - - * contracts.adb (Expand_Subprogram_Contract, - Process_Preconditions_For): Apply Freeze_Expr_Types to the - expression for a precondition of an expression function that is - a completion, when the completion appears in the private part - and the declaration it completes is in the visible part of the - same package. - * freeze.adb (Freeze_Expr_Types): Do not establish the scope of - the operation if it is already installed, as will be the case - when called to analyze the contract oc the subprogram (which - happens when generating code inside the subprogram body). - -2018-09-26 Maroua Maalej - - * sem_spark.adb (Check_Param_In, Setup_Parameter_Or_Global): - Change the operation associated to assigning to an IN parameter. - In SPARK, IN access-to-variable is an observe operation for a - function, and borrow operation for a procedure. - -2018-09-26 Arnaud Charlet - - * vxlink.adb: Minor reformatting. - -2018-09-26 Gary Dismukes - - * exp_ch9.adb, layout.adb, sem_attr.adb, sem_res.adb: Fix - miscellaneous typos. - -2018-09-26 Jerome Lambourg - - * vxlink.adb: Kill a CodePeer warning. - -2018-09-24 Eric Botcazou - - PR ada/87396 - * fe.h (Get_Attribute_Definition_Clause): Use 'unsigned char' instead - of 'char' as the type of the second parameter. - -2018-09-13 Eric Botcazou - - * Makefile.rtl (arm% linux-gnueabi%): Always set EH_MECHANISM to -arm. - -2018-09-13 Eric Botcazou - - PR ada/81103 - * terminals.c: Do not include termio.h. - -2018-08-27 Martin Liska - - * gcc-interface/decl.c (update_profile): Use new function - fndecl_built_in_p and remove check for FUNCTION_DECL if - possible. - * gcc-interface/gigi.h (call_is_atomic_load): Likewise. - * gcc-interface/utils.c (gnat_pushdecl): Likewise. - -2018-08-23 Giuliano Belinassi - - * exp_unst.ads: Fix typo 'exapnded' to 'expanded'. - -2018-08-21 Hristian Kirtchev - - * checks.adb, contracts.adb, exp_aggr.adb, exp_attr.adb, - exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_unst.adb, - exp_util.adb, freeze.adb, gnatlink.adb, layout.adb, - lib-writ.adb, lib-xref-spark_specific.adb, sem_ch13.adb, - sem_ch3.adb, sem_ch6.adb, sem_res.adb, sem_util.adb, sinfo.ads, - sprint.adb: Minor reformatting. - -2018-08-21 Jerome Lambourg - - * vxlink-bind.adb, vxlink-bind.ads, vxlink-link.adb, - vxlink-link.ads, vxlink-main.adb, vxlink.adb, vxlink.ads: Add a - new tool vxlink to handle VxWorks constructors in DKMs. - * gcc-interface/Makefile.in: add rules to build vxlink - -2018-08-21 Ed Schonberg - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper, Mask_Type): - Refine the handling of freezing types for expression functions - that are not completions, when analyzing the generated body for - the function: the body is inserted at the end of the enclosing - declarative part, and its analysis may freeze types declared in - the same scope that have not been frozen yet. - -2018-08-21 Ed Schonberg - - * sem_ch6.adb: Remove Freeze_Expr_Types. - * freeze.ads, freeze.adb (Freeze_Expr_Types): Moved from - sem_ch6.adb, and extended to handle other expressions that may - contain unfrozen types that must be frozen in their proper - scopes. - * contracts.adb (Analyze_Entry_Or_Subprogram_Contract): If the - contract is for the generated body of an expression function - that is a completion, traverse the expressions for pre- and - postconditions to freeze all types before adding the contract - code within the subprogram body. - -2018-08-21 Hristian Kirtchev - - * sem_ch10.adb: Remove the with and use clause for unit Ghost. - (Analyze_With_Clause): Do not mark a with clause which mentions - an ignored Ghost code for elimination. - -2018-08-21 Javier Miranda - - * lib-writ.adb (Write_Unit_Information): Handle pragmas removed - by the expander. - -2018-08-21 Ed Schonberg - - * sem_ch6.adb (Check_Synchronized_Overriding): The conformance - between an overriding protected operation and the overridden - abstract progenitor operation requires subtype conformance; - requiring equality of return types in the case of a function is - too restrictive and leads to spurious errors when the return - type is a generic actual. - -2018-08-21 Ed Schonberg - - * exp_ch9.adb (Expand_N_Timed_Entry_Call, - Expand_Conditional_Entry_Call): Use Reset_Scopes_Of to set - properly the scope of all entities created in blocks generated - by the expansion of these constructs. - -2018-08-21 Ed Schonberg - - * sem_ch13.adb (Build_Predicate_Functioss): Apply - Reset_Quantified_Variables_Scope after predicate function has - been analyzed, so that the scope can be reset on the generated - loop statements that have replaced the quantified expressions. - -2018-08-21 Bob Duff - - * einfo.ads, einfo.adb (Private_View, Shadow_Entities): Remove - obsolete code. - -2018-08-21 Maroua Maalej - - * sem_spark.adb (Check_Call_Statement): Check global and formal - parameter permissions at call sites. - (Check_Callable_Body): Assume permissions on globals and - parameters depending on their modes then analyse the body - operations. - (Check_Declaration): Consider both deep (including elementary - access) object declarations and normal variables. First check - whether the deep object is of Ownership Aspec True or not, then, - depending on its initialization, assign the appropriate state. - Check related to non access type variables deal with - initialization value permissions. - (Check_Expression): Check nodes used in the expression being - analyzed. - (Check_Globals): Call by Check_Call_Statement to perform the - check on globals. - (Check_List): Call Check_Node on each element of the list. - (Check_Loop_Statement): Check the Iteration_Scheme and loop - statements. - (Check_Node): Main traversal procedure to check safe pointer usage. - (Check_Package_Body): Check subprogram's body. - (Check_Param_In): Take a formal and an actual parameter and - Check the permission of every in-mode parameter. - (Check_Param_Out): Take a formal and an actual parameter and - check the state of out-mode and in out-mode parameters. - (Check_Statement): Check statements other than procedure call. - (Get_Perm, Get_Perm_Or_Tree, Get_Perm_Tree): Find out the state - related to the given name. - (Is_Deep): Return True if an object is of access type or has - subfields of access type. - (Perm_Error, Perm_Error_Subprogram_End): Add an error message - whenever the found state on the given name is different from the - one expected (in the statement being analyzed). - (Process_Path): Given an operation and a current state, call - Perm_Error if there is any mismatch. - (Return_Declarations, Return_Globals, Return_The_Global): Check - the state of a given name at the end of the subprogram. These - procedures may change depending on how we shall finally deal - with globals and the rhs state in a move operation. - (Set_Perm_Extensions, Set_Perm_Prefixes_Borrow, - Set_Perm_Prefixes, Setup_Globals, Setup_Parameter_Or_Global, - Setup_Parameters): Set up the new states to the given node and - up and down the tree after an operation. - (Has_Ownership_Aspect_True): This function may disappear later - when the Ownership Aspect will be implemented in the FE. - -2018-08-21 Ed Schonberg - - * sem_res.adb (Resolve_Call): Resolve correctly a parameterless - call that returns an access type whose designated type is the - component type of an array, when the function has no defaulted - parameters. - -2018-08-21 Yannick Moy - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Document entries of the target parametrization file. - * gnat_ugn.texi: Regenerate. - -2018-08-21 Ed Schonberg - - * sem_attr.adb: Set scope of elaboration flag for 'Access. - -2018-08-21 Ed Schonberg - - * sprint.adb: Add guard on printing aspects. - -2018-08-21 Javier Miranda - - * exp_cg.adb (Generate_CG_Output): Handle calls removed by the - expander. - -2018-08-21 Ed Schonberg - - * layout.adb: Do not set size of access subprogram if unnesting. - -2018-08-21 Ed Schonberg - - * freeze.adb: Remove warnings for access to subprograms when - unnesting is active. - -2018-08-21 Ed Schonberg - - * exp_aggr.adb (Expand_Array_Aggregate): If the component type - is limited, the array must be constructed in place, so set flag - In_Place_Assign_OK_For_Declaration accordingly. This prevents - improper copying of an array of tasks during initialization. - -2018-08-21 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): Always suppress an - unchecked conversion around the actual for an In parameter - passed by copy. - -2018-08-21 Eric Botcazou - - * exp_util.adb (Is_Possibly_Unaligned_Object): For the case of a - selected component inherited in a record extension and subject - to a representation clause, retrieve the position and size from - the original record component. - -2018-08-21 Ed Schonberg - - * sem_util.ads, sem_util.adb (New_External_Entity): Type of - Suffix_Index must be Int, not Nat, so that a negative value can - be used to generate a unique name for an external object, as - specified in Tbuild.New_External_Name. - (Scope_Within): Handle private type whose completion is a - synchronized type (For unnesting). - * itypes.ads, itypes.adb (Create_Itype): Ditto - * sem_ch3.adb (Constrain_Corresponding_Record): Generate a - unique name for the created subtype, because there may be - several discriminated tasks present in the same scope, and each - needs its distinct corresponding record subtype. - -2018-08-21 Yannick Moy - - * doc/gnat_ugn/gnat_and_program_execution.rst: Update - documentation of dimensionality analysis. - * gnat_ugn.texi: Regenerate. - * Makefile.rtl, impunit.adb: Consider the new units. - * libgnat/s-dfmkio.ads, libgnat/s-dfmopr.ads, - libgnat/s-diflmk.ads: New units based on Float. - * libgnat/s-dilomk.ads, libgnat/s-dlmkio.ads, - libgnat/s-dlmopr.ads: New units based on Long_Float. - * libgnat/s-dmotpr.ads: Rename to libgnat/s-dgmgop.ads and turn - into an instance of - System.Dim.Generic_Mks.Generic_Other_Prefixes. - * libgnat/s-dimmks.ads: Rename to libgnat/s-digemk.ads and turn - into an instance of System.Dim.Generic_Mks. - -2018-08-21 Hristian Kirtchev - - * impunit.adb: Add g-lists to the set of non-implementation - units. - * libgnat/g-lists.adb, libgnat/g-lists.ads: New unit. - * Makefile.rtl: Add g-lists to the set of non-tasking units. - * gcc-interface/Make-lang.in: Add g-lists to the set of files - used by gnat1. - -2018-08-21 Ed Schonberg - - * exp_ch9.adb (Reset_Scopes): Do not recurse into type - declarations when resetting the scope of entities declared the - procedures generated for entry bodies and accept alternatives. - Use the entity of the procedure declaration, not its body, as - the new scope. - -2018-08-21 Hristian Kirtchev - - * einfo.adb (Elaboration_Entity): Include entries and entry - families in the set of legal entities. - (Elaboration_Entity_Required): Include entries and entry - families in the set of legal entities. - (Set_Elaboration_Entity): Include entries and entry families in - the set of legal entities. - (Set_Elaboration_Entity_Required): Include entries and entry - families in the set of legal entities. - (Write_Field13_Name): Update the output of attribute - Elaboration_Entity. - * einfo.ads: Attributes Elaboration_Entity and - Elaboration_Entity_Required now apply to entries and entry - families. - -2018-08-21 Arnaud Charlet - - * set_targ.adb: Mark some CodePeer message as Intentional. - -2018-08-21 Ed Schonberg - - * sem_res.adb (Resolve_Call): Force the freezing of an - expression function that is called to provide a default value - for a defaulted discriminant in an object initialization. - -2018-08-21 Hristian Kirtchev - - * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: New package - Dynamic_HTable. - -2018-08-21 Javier Miranda - - * checks.ads (Determine_Range): Adding documentation. - * checks.adb (Determine_Range): Don't deal with enumerated types - with non-standard representation. - (Convert_And_Check_Range): For conversion of enumeration types - with non standard representation to an integer type perform a - direct conversion to the target integer type. - -2018-08-21 Piotr Trojanek - - * lib-xref.ads, lib-xref-spark_specific.adb - (Enclosing_Subprogram_Or_Library_Package): Now roughtly works - for pragmas that come from aspect specifications. - -2018-08-21 Pierre-Marie de Rodat - - * sa_messages.ads, sa_messages.adb: New source files. - -2018-08-03 Pierre-Marie de Rodat - - Reverts - 2018-07-06 Jim Wilson - - * Make-generated.in (treeprs.ads): Use $(GNATMAKE) instead of gnatmake. - (einfo.h, sinfo.h, stamp-snames, stamp-nmake): Likewise. - * gcc-interface/Makefile.in (xoscons): Likewise. - -2018-07-31 Alexandre Oliva - Olivier Hainque - - * gcc-interface/trans.c: Include debug.h. - (file_map): New static variable. - (gigi): Set it. Create decl_to_instance_map when needed. - (Subprogram_Body_to_gnu): Pass gnu_subprog_decl to... - (Sloc_to_locus): ... this. Add decl parm, map it to instance. - * gcc-interface/gigi.h (Sloc_to_locus): Adjust declaration. - -2018-07-31 Arnaud Charlet - - * clean.adb, gnatchop.adb, gnatfind.adb, gnatls.adb, - gnatmake.ads, gnatxref.adb, make.adb, make.ads, make_util.ads, - sfn_scan.adb, vxaddr2line.adb, xeinfo.adb, xoscons.adb, - xr_tabls.adb, xref_lib.adb: Address CodePeer messages. - -2018-07-31 Arnaud Charlet - - * gnatlink.adb: Fix potential Constraint_Error if - Library_Version is too long. - -2018-07-31 Arnaud Charlet - - * sem_elab.adb: Remove duplicate condition detected by CodePeer. - -2018-07-31 Ed Schonberg - - * exp_unst.adb (Subp_Index): In the case of a protected - operation, the relevant entry is the generated - protected_subprogram_body into which the original body is - rewritten. Assorted cleanup and optimizations. - -2018-07-31 Ed Schonberg - - * exp_attr.adb (Expand_Attribute, case Fixed_Value): Set the - base type of the result to ensure that proper overflow and range - checks are generated. If the target is a fixed-point tyoe, - generate the required overflow and range checks explicitly, - rather than relying on Apply_Type_Conversion_Checks, which might - simply set the Do_Range_Check flag and rely on the backend to - add the check. - -2018-07-31 Hristian Kirtchev - - * sem_res.adb (Resolve_Call): Establish a transient scope to - manage the secondary stack when the designated type of an - access-to-subprogram requires it. - -2018-07-31 Ed Schonberg - - * exp_ch7.adb (Check_Unnesting_Elaboration_Code): To find local - subprograms in the elaboration code for a package body, recurse - through nested statement sequences because a compiler-generated - procedure may appear within a condition statement. - -2018-07-31 Ed Schonberg - - * exp_ch6.adb (Expand_Protected_Subprogram_Call): Handle - properly a protected call that includes a default parameter that - is a call to a protected function of the same type. - -2018-07-31 Justin Squirek - - * lib-writ.adb (Write_With_Lines): Modfiy the generation of - dependencies within ali files so that source unit bodies are - properly listed even if said bodies are missing. Perform legacy - behavior in GNATprove mode. - * lib-writ.ads: Modify documentation to reflect current behavior. - -2018-07-31 Eric Botcazou - - * libgnarl/s-osinte__solaris.ads (upad64_t): New private type. - (mutex_t): Use it for 'lock' and 'data' components. - (cond_t): Likewise for 'data' and use single 'flags' component. - -2018-07-31 Justin Squirek - - * exp_ch5.adb (Make_Field_Assign): Force temporarily generated - objects for assignment of overlaid user objects to be renamings - instead of constant declarations. - -2018-07-31 Hristian Kirtchev - - * exp_ch9.adb (Analyze_Pragmas): New routine. - (Build_Private_Protected_Declaration): Code clean up. Relocate - relevant aspects and pragmas from the stand-alone body to the - newly created spec. Explicitly analyze any pragmas that have - been either relocated or produced by the analysis of the - aspects. - (Move_Pragmas): New routine. - * sem_prag.adb (Find_Related_Declaration_Or_Body): Recognize the - case where a pragma applies to the internally created spec for a - stand-along subprogram body declared in a protected body. - -2018-07-31 Gary Dismukes - - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Replace - calls to Current_Scope in three assertions with calls to - Current_Subprogram. - -2018-07-31 Ed Schonberg - - * sem_eval.adb (Check_Non_Static_Context): Do not warn on an - integer literal greater than the upper bound of - Universal_Integer'Last when expansion is disabled, to avoid a - spurious warning over ranges involving 64-bit modular types. - -2018-07-31 Arnaud Charlet - - * einfo.adb (Write_Entity_Flags): Also print - Is_Activation_Record flag. - -2018-07-31 Piotr Trojanek - - * exp_aggr.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb, - repinfo.adb, sem_ch9.adb: Minor replace Ekind membership tests - with a wrapper routine. - -2018-07-31 Piotr Trojanek - - * ali.adb (Known_ALI_Lines): Remove 'F' as a prefix for lines - related to the FORMAL analysis done by GNATprove. - -2018-07-31 Javier Miranda - - * sem.ads (Inside_Preanalysis_Without_Freezing): New global - counter. - * sem.adb (Semantics): This subprogram has now the - responsibility of resetting the counter before analyzing a unit, - and restoring its previous value before returning. - * freeze.adb (Freeze_Entity): Do not freeze if we are - preanalyzing without freezing. - * sem_res.adb (Preanalyze_And_Resolve): Set & restore - In_Preanalysis_Without_Freezing. - -2018-07-31 Ed Schonberg - - * sem_ch4.adb (Traverse_Homonyms): Consider generic actuals that - may rename a matching class-wide operation only if the renaming - declaration for that actual is in an enclosing scope (i.e. - within the corrresponding instance). - -2018-07-31 Hristian Kirtchev - - * checks.adb, contracts.adb, exp_aggr.adb, exp_ch5.adb, - exp_disp.adb, make.adb, sem_ch4.adb, sem_eval.adb, sem_res.adb, - usage.adb: Minor reformatting. - -2018-07-31 Bob Duff - - * sem_res.adb (Resolve_Allocator): Do not complain about the - implicit allocator that occurs in the expansion of a return - statement for a build-in-place function. - -2018-07-20 Martin Sebor - - PR middle-end/82063 - * gcc-interface/misc.c (gnat_handle_option): Change function argument - to HOST_WIDE_INT. - -2018-07-17 Eric Botcazou - - * gcc-interface/decl.c (choices_to_gnu): Rename parameters. Deal with - an operand of Character type. Factor out range generation to the end. - Check that the bounds are literals and convert them to the type of the - operand before building the ranges. - * gcc-interface/utils.c (make_dummy_type): Minor tweak. - (make_packable_type): Propagate TYPE_DEBUG_TYPE. - (maybe_pad_type): Likewise. - -2018-07-17 Ed Schonberg - - * sem_ch4.adb (Try_Object_Operation): Handle properly a prefixed call - in an instance, when the generic parameters include an interface type - and a abstract operation of that type, and the actuals in the instance - include an interface type and a corresponding abstract operation of it, - with a different name than the corresponding generic subprogram - parameter. - -2018-07-17 Arnaud Charlet - - * sem_eval.adb (Rewrite_In_Raise_CE): Keep the original reason in more - cases. - -2018-07-17 Arnaud Charlet - - * checks.adb (Apply_Division_Check): Add provision for floating-point - checks. - -2018-07-17 Ed Schonberg - - * exp_aggr.adb (Component_OK_For_Backend): If an array component of the - enclosing record has a bound that is out of range (and that has been - rewritten as a raise statement) the aggregate is not OK for any back - end, and should be expanded into individual assignments. - -2018-07-17 Piotr Trojanek - - * atree.adb (Relocate_Node): Simplify with Is_Rewrite_Substitution. - -2018-07-17 Piotr Trojanek - - * sem_util.ads (Denotes_Same_Object): Likewise. - * sem_warn.adb (Warn_On_Overlapping_Actuals): Fix RM rule references. - -2018-07-17 Eric Botcazou - - * exp_disp.adb (Make_Tags): When the type has user-defined primitives, - build the access type that is later used by Build_Get_Prim_Op_Address - as pointing to a subtype of Ada.Tags.Address_Array. - -2018-07-17 Patrick Bernardi - - * libgnat/s-memory__mingw.adb: Remove. - * Makefile.rtl: Remove s-memory.adb target pair from the Cygwin/Mingw32 - section. - -2018-07-17 Hristian Kirtchev - - * frontend.adb (Frontend): The removal of ignored Ghost code must be - the last semantic operation performed on the tree. - -2018-07-17 Hristian Kirtchev - - * frontend.adb (Frontend): Update the call to Register_Config_Switches. - * inline.ads: Add new component Config_Switches to record - Pending_Body_Info which captures the configuration state of the pending - body. Remove components Version, Version_Pragma, SPARK_Mode, and - SPARK_Mode_Pragma from record Pending_Body_Info because they are - already captured in component Config_Switches. - * opt.adb (Register_Opt_Config_Switches): Rename to - Register_Config_Switches. - (Restore_Opt_Config_Switches): Rename to Restore_Config_Switches. - (Save_Opt_Config_Switches): Rename to Save_Config_Switches. This - routine is now a function, and returns the saved configuration state as - an aggregate to avoid missing an attribute. - (Set_Opt_Config_Switches): Rename to Set_Config_Switches. - * opt.ads (Register_Opt_Config_Switches): Rename to - Register_Config_Switches. - (Restore_Opt_Config_Switches): Rename to Restore_Config_Switches. - (Save_Opt_Config_Switches): Rename to Save_Config_Switches. This - routine is now a function. - (Set_Opt_Config_Switches): Rename to Set_Config_Switches. - * par.adb (Par): Update the calls to configuration switch-related - subprograms. - * sem.adb (Semantics): Update the calls to configuration switch-related - subprograms. - * sem_ch10.adb (Analyze_Package_Body_Stub): Update the calls to - configuration switch-related subprograms. - (Analyze_Protected_Body_Stub): Update the calls to configuration - switch-related subprograms. - (Analyze_Subprogram_Body_Stub): Update calls to configuration - switch-related subprograms. - * sem_ch12.adb (Add_Pending_Instantiation): Update the capture of - pending instantiation attributes. - (Inline_Instance_Body): Update the capture of pending instantiation - attributes. It is no longer needed to explicitly manipulate the SPARK - mode. - (Instantiate_Package_Body): Update the restoration of the context - attributes. - (Instantiate_Subprogram_Body): Update the restoration of context - attributes. - (Load_Parent_Of_Generic): Update the capture of pending instantiation - attributes. - (Set_Instance_Env): Update the way relevant configuration attributes - are saved and restored. - -2018-07-17 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Deal with - more rvalues in the expression of a renaming. - -2018-07-17 Eric Botcazou - - * gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Define for - METHOD_TYPE too. - (TYPE_RETURN_UNCONSTRAINED_P): Likewise. - (TYPE_CI_CO_LIST): Likewise. - * gcc-interface/gigi.h (is_cplusplus_method): Delete. - (fntype_same_flags_p): Adjust comment. - * gcc-interface/decl.c (Has_Thiscall_Convention): Delete. - (gnat_to_gnu_entity) : Do not set the "thiscall" - attribute directly. - (is_cplusplus_method): Make static and adjust head comment. - (gnat_to_gnu_param): Return a pointer for the "this" parameter of - C++ constructors. - (gnat_to_gnu_subprog_type): Turn imported C++ constructors into their - callable form. Generate a METHOD_TYPE node for imported C++ methods. - Set param_list at the very end of the processing. - (substitute_in_type) : New case. - * gcc-interface/misc.c (gnat_print_type) : Likewise. - (gnat_type_hash_eq): Accept METHOD_TYPE. - * gcc-interface/trans.c (Identifier_to_gnu): Deal with METHOD_TYPE. - (Attribute_to_gnu): Likewise. - (Call_to_gnu): Likewise. - (process_freeze_entity): Likewise. - * gcc-interface/utils.c (create_subprog_decl): Adjust head comment. - (fntype_same_flags_p): Likewise. - -2018-07-17 Piotr Trojanek - - * inline.adb (Expand_Inlined_Call): Remove extra parentheses. - -2018-07-17 Eric Botcazou - - * exp_disp.adb (Gen_Parameters_Profile): Make the _Init parameter an - In/Out parameter. - (Set_CPP_Constructors): Adjust comment accordingly. - -2018-07-17 Bob Duff - - * exp_disp.adb (Build_Class_Wide_Check): Return early if the - precondition is supposed to be ignored. - -2018-07-17 Ed Schonberg - - * sem_ch6.adb (Check_Untagged_Equality): Extend check to operations - declared in the same scope as the operand type, when that scope is a - procedure. - -2018-07-17 Ed Schonberg - - * exp_unst.adb (Unnest_Subprograms): Do nothing if the expander is not - active. Don't use Get_Actual_Subtype for record subtypes. Ignore - rewritten identifiers and uplevel references to bounds of types that - come from the original type reference. - -2018-07-17 Hristian Kirtchev - - * exp_ch13.adb, exp_ch7.adb, exp_unst.adb, freeze.adb, - libgnat/s-os_lib.adb, sem_ch3.adb, sem_ch3.ads, sem_ch5.adb, - sem_eval.adb, sem_res.adb, sem_util.adb: Minor reformatting. - -2018-07-17 Javier Miranda - - * exp_ch13.adb (Expand_N_Freeze_Entity): Handle subtype declared for an - iterator. - * freeze.adb (Freeze_Expression): Handle freeze of an entity defined - outside of a subprogram body. This case was previously handled during - preanalysis; the frozen entities were remembered and left pending until - we continued freezeing entities outside of the subprogram. Now, when - climbing the parents chain to locate the correct placement for the - freezeing node, we check if the entity can be frozen and only when no - enclosing node is marked as Must_Not_Freeze the entity is frozen. - * sem_ch3.ads (Preanalyze_Default_Expression): Declaration moved to the - package body. - * sem_ch3.adb (Preanalyze_Default_Expression): Code adjusted to invoke - the new subprogram Preanalyze_With_Freezing_And_Resolve. - * sem_ch6.adb (Preanalyze_Formal_Expression): New subprogram. - (Analyze_Expression_Function, Process_Formals): Invoke - Preanalyze_Formal_Expression instead of Preanalyze_Spec_Expression - since the analysis of the formals may freeze entities. - (Analyze_Subprogram_Body_Helper): Skip building the body of the - class-wide clone for eliminated subprograms. - * sem_res.ads, sem_res.adb (Preanalyze_And_Resolve): New subprogram. - Its code is basically the previous version of this routine but extended - with an additional parameter which is used to specify if during - preanalysis we are allowed to freeze entities. If the new parameter is - True then the subtree root node is marked as Must_Not_Freeze and no - entities are frozen during preanalysis. - (Preanalyze_And_Resolve): Invokes the internal version of - Preanalyze_And_Resolve without entity freezing. - (Preanalyze_With_Freezing_And_Resolve): Invokes the internal version of - Prenalyze_And_Resolve with freezing enabled. - -2018-07-17 Piotr Trojanek - - * einfo.ads, libgnat/g-comlin.ads: Minor change "ie" to "i.e." in docs - and comments. - -2018-07-17 Justin Squirek - - * libgnat/s-os_lib.adb (Argument_String_To_List): Fix trimming of - whitespace. - -2018-07-17 Hristian Kirtchev - - * sem_prag.adb (Has_Visible_State): Do not consider constants as - visible state because it is not possible to determine whether a - constant depends on variable input. - (Propagate_Part_Of): Add comment clarifying the behavior with respect - to constant. - -2018-07-17 Yannick Moy - - * gnat1drv.adb (Gnat1drv): Do not issue warning about exception not - being propagated in GNATprove mode. - -2018-07-17 Dmitriy Anisimkov - - * libgnat/g-socket.adb, libgnat/g-socket.ads: Reorganize and make - public components of Inet_Addr_Type. Introduce public binary - operations. - -2018-07-17 Javier Miranda - - * exp_ch7.adb (Make_Transient_Block): When determining whether an - enclosing scope already handles the secondary stack, take into account - transient blocks nested in a block that do not manage the secondary - stack and are located within a loop. - -2018-07-17 Ed Schonberg - - * sem_util.adb (Enclosing_Subprogram): Protected entries and task - entries must be treated separately: task entries are within the - enclosing subprogram of the task type, while protected entries are - transformed into the corresponding Protected_Body_Subprogram, which is - the enclosing_subprogram of any subprogram declared within the entry - body. - -2018-07-17 Hristian Kirtchev - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Add missing - sections on -gnatH and -gnatJ compiler switches. - * gnat_ugn.texi: Regenerate. - -2018-07-17 Hristian Kirtchev - - * alloc.ads: Update the allocation metrics of the ignored Ghost nodes - table. - * atree.adb: Add a soft link for a procedure which is invoked whenever - an ignored Ghost node or entity is created. - (Change_Node): Preserve relevant attributes which come from the Flags - table. - (Mark_New_Ghost_Node): Record a newly created ignored Ghost node or - entity. - (Rewrite): Preserve relevant attributes which come from the Flags - table. - (Set_Ignored_Ghost_Recording_Proc): New routine. - * atree.ads: Define an access-to-suprogram type for a soft link which - records a newly created ignored Ghost node or entity. - (Set_Ignored_Ghost_Recording_Proc): New routine. - * ghost.adb: Remove with and use clause for Lib. Remove table - Ignored_Ghost_Units. Add new table Ignored_Ghost_Nodes. - (Add_Ignored_Ghost_Unit): Removed. - (Initialize): Initialize the table which stores ignored Ghost nodes. - Set the soft link which allows Atree.Mark_New_Ghost_Node to record an - ignored Ghost node. - (Is_Ignored_Ghost_Unit): Use the ultimate original node when checking - an eliminated ignored Ghost unit. - (Lock): Release and lock the table which stores ignored Ghost nodes. - (Mark_And_Set_Ghost_Assignment): Record rather than propagate ignored - Ghost nodes. - (Mark_And_Set_Ghost_Procedure_Call): Record rather than propagate - ignored Ghost nodes. - (Mark_Ghost_Clause): Record rather than propagate ignored Ghost nodes. - (Mark_Ghost_Declaration_Or_Body): Record rather than propagate ignored - Ghost nodes. - (Mark_Ghost_Pragma): Record rather than propagate ignored Ghost nodes. - (Propagate_Ignored_Ghost_Code): Removed. - (Record_Ignored_Ghost_Node): New routine. - (Remove_Ignored_Ghost_Code): Reimplemented. - (Remove_Ignored_Ghost_Node): New routine. - (Ultimate_Original_Node): New routine. - * ghost.ads (Check_Ghost_Completion): Removed. - * sem_ch8.adb (Analyze_Use_Package): Remove obsolete code. Mark a use - package clause as ignored Ghost if applicable. - * sem_util.adb (Is_Body_Or_Package_Declaration): Reimplemented. - -2018-07-17 Javier Miranda - - * sem_ch5.adb (Has_Call_Using_Secondary_Stack): Moved to library level - to reuse it. - (Analyze_Loop_Statement): Wrap the loop in a block when the evaluation - of the loop iterator relies on the secondary stack. - -2018-07-17 Piotr Trojanek - - * sem_util.adb (Next_Actual): If the parent is a N_Null_Statement, - which happens for inlined calls, then fetch the next actual from the - original AST. - -2018-07-17 Ed Schonberg - - * einfo.ads: Update documentation for Scalar_Range. - -2018-07-17 Piotr Trojanek - - * lib-xref-spark_specific.adb (Create_Heap): Attach the HEAP entity to - the Standard package. - -2018-07-17 Piotr Trojanek - - * einfo.adb (Is_Wrapper_Package): Remove extra parentheses. - -2018-07-17 Ed Schonberg - - * sem_util.adb (Enclosing_Subprogram): Handle properly entries, and - synchronized types that are completions of limited types or private - extensions. - (Scope_Within): Handle properly accept statements in task bodies. - -2018-07-17 Hristian Kirtchev - - * sem_prag.adb (Has_Visible_State): Do not consider generic formals - because they are not part of the visible state space. Add constants to - the list of acceptable visible states. - (Propagate_Part_Of): Do not consider generic formals when propagating - the Part_Of indicator. - * sem_util.adb (Entity_Of): Do not follow renaming chains which go - through a generic formal because they are not visible for SPARK - purposes. - * sem_util.ads (Entity_Of): Update the comment on usage. - -2018-07-17 Ed Schonberg - - * sem_util.adb (Gather_Components): A discriminant of an ancestor may - have been constrained by a later ancestor, so when looking for the - value of that hidden discriminant we must examine the stored constraint - of other ancestors than the immediate parent type. - -2018-07-17 Hristian Kirtchev - - * exp_ch6.adb (Build_Heap_Or_Pool_Allocator): Ensure that scoping - constructs and entities within receive new entities when replicating a - tree. - (Expand_N_Extended_Return_Statement): Ensure that scoping constructs - and entities within receive new entities when replicating a tree. - * sem_util.adb (New_Copy_Tree): Add new formal Scopes_In_EWA_OK. - (Visit_Entity): Visit entities within scoping constructs inside - expression with actions nodes when requested by the caller. Add blocks, - labels, and procedures to the list of entities which need replication. - * sem_util.ads (New_Copy_Tree): Add new formal Scopes_In_EWA_OK. Update - the comment on usage. - -2018-07-17 Arnaud Charlet - - * doc/gnat_ugn/about_this_guide.rst, - doc/gnat_ugn/gnat_and_program_execution.rst: Remove references to gcov. - * gnat_ugn.texi: Regenerate. - -2018-07-16 Hristian Kirtchev - - * contracts.adb (Analyze_Contracts): Add specialized processing for - package instantiation contracts. - (Analyze_Package_Contract): Remove the verification of a missing - Part_Of indicator. - (Analyze_Package_Instantiation_Contract): New routine. - * contracts.ads (Analyze_Package_Contract): Update the comment on - usage. - * sem_prag.adb (Check_Missing_Part_Of): Ensure that the entity of the - instance is being examined when trying to determine whether a package - instantiation needs a Part_Of indicator. - -2018-07-16 Hristian Kirtchev - - * einfo.adb, exp_ch7.adb, exp_ch9.adb, exp_unst.adb, inline.adb, - sem.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_eval.adb, - sem_util.adb: Minor reformatting. - -2018-07-16 Arnaud Charlet - - * frontend.adb: Only unnest subprograms if no previous errors were - detected. - -2018-07-16 Ed Schonberg - - * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Handle loops that - contain blocks in the elaboration code for a package body. Create the - elaboration subprogram wrapper only if there is a subprogram - declaration in a block or loop. - -2018-07-16 Ed Schonberg - - * exp_ch4.adb (Expand_Set_Membership): Use New_Copy_Tree to perform a - deep copy of the left operand when building each conjuct of the - expanded membership operation, to avoid sharing nodes between them. - This sharing interferes with the unnesting machinery and is generally - undesirable. - -2018-07-16 Ed Schonberg - - * exp_unst.adb (Visit_Node): Handle 'Address references that are - calls. - -2018-07-16 Ed Schonberg - - * exp_unst.adb (Visit_Node): Handle the semantic of Storage_Pool field - in relevant nodes: Allocate, Free, and return statements. - -2018-07-16 Ed Schonberg - - * sem_ch12.adb (Analyze_Package_Instantiation): Handle properly an - instance that carries an aspect Default_Storage_Pool that overrides a - default storage pool that applies to the generic unit. The aspect in - the generic unit was removed before copying it in the instance, rather - than removing it from the copy of the aspects that are appended to the - aspects in the instance. - -2018-07-16 Ed Schonberg - - * einfo.adb (Set_Is_Uplevel_Referenced_Entity): Flag can appear on - loop parameters. - * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Handle subprogram - bodies. - * exp_ch9.adb (Reset_Scopes_To): Set the scopes of entities local to an - entry body to be the corresponding generated subprogram, for correct - analysis of uplevel references. - * exp_unst.adb (Visit_Node): Handle properly binary and unary operators - Ignore pragmas, fix component associations. - (Register_Subprograms): Subprograms in synchronized types must be - treated as reachable. - -2018-07-16 Hristian Kirtchev - - * sem_util.adb (Check_No_Hidden_State): Ignore internally-generated - states and variables. - -2018-07-16 Piotr Trojanek - - * sinfo.ads, sinfo.adb (Withed_Body): Remove. - (Set_Withed_Body): Remove. - -2018-07-16 Piotr Trojanek - - * sem.adb (Walk_Library_Items): Skip units with configuration pragmas - when printing debug info. - -2018-07-16 Piotr Trojanek - - * sem.adb (Walk_Library_Items): Reuse local constant. - (Is_Subunit_Of_Main): Turn condition to positive and flip the - IF-THEN-ELSE branches; avoid potentially ineffective assignment to the - Lib variable. - -2018-07-16 Piotr Trojanek - - * sem.adb (Walk_Library_Items): Deconstruct dead code. - -2018-07-16 Ed Schonberg - - * exp_ch4.adb (Expand_N_Op_Xor): Use common routine - Expand_Nonbinary_Modular_Op. Needed for unnesting. - -2018-07-16 Ed Schonberg - - * sem_ch3.adb (Inherit_Predicate_Flags): A non-discrete type may have a - static predicate (for example True) but has no - static_discrete_predicate. - -2018-07-16 Hristian Kirtchev - - * exp_attr.adb (Build_Record_VS_Func): Handle corner cases dealing with - class-wide types and record extensions. - -2018-07-16 Justin Squirek - - * sem_eval.adb (Eval_Integer_Literal): Add exception for avoiding - checks on expanded literals within if and case expressions. - -2018-07-16 Hristian Kirtchev - - * libgnat/s-wchwts.adb (Wide_String_To_String): Use the appropriate - longest sequence factor. Code clean up. - (Wide_Wide_String_To_String): Use the appropriate longest sequence - factor. Code clean up. - -2018-07-16 Javier Miranda - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Report an error - on Bit_Order when defined for a record extension. - -2018-07-16 Arnaud Charlet - - * libgnat/s-objrea.ads: Minor code clean up. - -2018-07-16 Piotr Trojanek - - * sem_ch3.adb (Process_Discriminants): Adjust reference to the SPARM RM - rule. - -2018-07-16 Arnaud Charlet - - * adaint.c (__gnat_set_file_time_name): Code clean up. - -2018-07-16 Javier Miranda - - * inline.adb (Build_Body_To_Inline): Minor code reorganization that - ensures that calls to function Has_Single_Return() pass a decorated - tree. - (Has_Single_Return.Check_Return): Peform checks on entities (instead on - relying on their characters). - -2018-07-16 Javier Miranda - - * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Code cleanup. Required - to avoid generating an ill-formed tree that confuses gnatprove causing - it to blowup. - -2018-07-16 Yannick Moy - - * inline.adb (Has_Single_Return): Rewrap comment. - -2018-07-16 Eric Botcazou - - * einfo.ads: Minor tweak in comment. - -2018-07-16 Javier Miranda - - * sem_ch4.adb (Analyze_Membership_Op): Code cleanup. - -2018-07-16 Javier Miranda - - * exp_attr.adb (Expand_N_Attribute_Reference ['Count]): Do not - transform 'Count into a function call if the current scope has been - eliminated. - -2018-07-16 Javier Miranda - - * sem_util.ads, sem_util.adb (Has_Prefix): Move this function to the - public part of this package. - -2018-07-16 Yannick Moy - - * sem_res.adb (Resolve_Call): Do not inline calls inside - compiler-generated functions translated as predicates in GNATprove. - -2018-07-16 Gary Dismukes - - * exp_ch4.adb (Expand_N_Allocator): Test for Storage_Pool being RTE in - addition to the existing test for no Storage_Pool as a condition - enabling generation of the call to Check_Standard_Allocator when the - restriction No_Standard_Allocators_After_Elaboration is active. - * libgnat/s-elaall.ads (Check_Standard_Allocator): Correct comment to - say that Storage_Error will be raised (rather than Program_Error). - * libgnat/s-elaall.adb (Check_Standard_Allocator): Raise Storage_Error - rather than Program_Error when Elaboration_In_Progress is False. - -2018-07-16 Gary Dismukes - - * sem_eval.adb: Fix spelling for compile-time-known. - -2018-07-16 Hristian Kirtchev - - * sem_eval.adb (Compile_Time_Known_Value): Add a guard which prevents - the compiler from entering infinite recursion when trying to determine - whether a deferred constant has a compile time known value, and the - initialization expression of the constant is a reference to the - constant itself. - -2018-07-16 Nicolas Roche - - * libgnat/a-strunb.adb, libgnat/a-strunb__shared.adb: Adjust growth - factor from 1/32 to 1/2 for Unbounded_String. - -2018-07-13 Eric Botcazou - - * gcc-interface/lang.opt (funsigned-char): New option. - * gcc-interface/misc.c (gnat_handle_option): Accept it. - * gcc-interface/utils.c (finish_character_type): Tweak comment. - -2018-07-07 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Add GNAT_DECL local - variable and use it throughout. - : If the nominal subtype of the object is unconstrained, - compute the Ada size separately and put in on the padding type if the - size is not fixed. - : Minor tweak. - * gcc-interface/misc.c (gnat_type_max_size): Rename max_size_unit - into max_size_unit throughout. - -2018-07-07 Eric Botcazou - - * gcc-interface/gigi.h (add_decl_expr): Adjust prototype. - * gcc-interface/decl.c (gnat_to_gnu_entity): Remove useless test. - * gcc-interface/trans.c (add_stmt_with_node): Remove exceptions. - (add_decl_expr): Change type of second parameter and rename it. - (renaming_from_instantiation_p): New function moved from... - (set_expr_location_from_node): Test for exceptions here and add one - for actual subtypes built for unconstrained composite actuals. - * gcc-interface/utils.c (renaming_from_instantiation_p): ...here. - -2018-07-07 Eric Botcazou - - * gcc-interface/trans.c (lvalue_required_p): Remove ALIASED parameter - and adjust recursive calls. - (Identifier_to_gnu): Adjust calls to lvalue_required_p. - (gnat_to_gnu): Likewise. - -2018-07-07 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_param): Minor tweak. - (gnat_to_gnu_subprog_type): New pure_flag local variable. Set it for - a pure Ada function with a by-ref In parameter. Propagate it onto the - function type by means of the TYPE_QUAL_RESTRICT flag. - * gcc-interface/utils.c (finish_subprog_decl): Set DECL_PURE_P if the - function type has the TYPE_QUAL_RESTRICT flag set. - -2018-07-06 Jim Wilson - - * Makefile.rtl: Add riscv*-linux* support. - * libgnarl/s-linux__riscv.ads: New. - * libgnat/system-linux-riscv.ads: New. - - * Make-generated.in (treeprs.ads): Use $(GNATMAKE) instead of gnatmake. - (einfo.h, sinfo.h, stamp-snames, stamp-nmake): Likewise. - * gcc-interface/Makefile.in (xoscons): Likewise. - -2018-07-06 Sebastian Huber - - * libgnat/system-rtems.ads (Frontend_Exceptions): Set to False. - (ZCX_By_Default): Set to True. - -2018-07-02 Martin Liska - - * gnatvsn.ads: Bump Library_Version to 9. - -2018-06-12 Eric Botcazou - - * gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Change from - using TYPE_LANG_FLAG_4 to using TYPE_LANG_FLAG_0. - (TYPE_ALIGN_OK): Move around. - (TYPE_PADDING_FOR_COMPONENT): Remove superfluous parentheses. - * gcc-interface/decl.c (change_qualified_type): Move to... - (gnat_to_gnu_entity): Adjust comment. - * gcc-interface/gigi.h (change_qualified_type): ...here; make inline. - (ceil_pow2): Use ceil_log2. - * gcc-interface/utils.c (finish_subprog_decl): Add couple of comments - and do not set TREE_SIDE_EFFECTS. - (handle_noreturn_attribute): Use change_qualified_type. - -2018-06-12 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not get - the expression of a dispatch table that is not being defined. - : Remove obsolete kludge. - -2018-06-12 Eric Botcazou - - * gcc-interface/decl.c (warn_on_field_placement): Use specific wording - for discriminants. - (warn_on_list_placement): New static function. - (components_to_record): Use it to warn on multiple fields in list. - -2018-06-12 Eric Botcazou - - * gcc-interface/decl.c (variant_desc): Add AUX field. - (gnat_to_gnu_entity) : Do not call compute_record_mode - directly. - (reverse_sort_field_list): New static function. - (components_to_record): Place the variant part at the beginning of the - field list when there is an obvious order of increasing position. - (build_variant_list): Initialize it. - (create_variant_part_from): Do not call compute_record_mode directly. - (copy_and_substitute_in_layout): Likewise. Always sort the fields with - fixed position in order of increasing position, in the record and all - the variants, in any. Call reverse_sort_field_list. - * gcc-interface/utils.c (make_packable_type): Compute the sizes before - calling finish_record_type. Do not call compute_record_mode directly. - (finish_record_type): Overhaul final processing depending on REP_LEVEL - and call finish_bitfield_layout if it is equal to one or two. - -2018-06-11 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Reuse the - existing fields of a dummy fat pointer type, if any. Clear the - TYPE_DECL_SUPPRESS_DEBUG on the fat pointer type after completing it. - -2018-06-11 Hristian Kirtchev - - * contracts.adb (Process_Body_Postconditions): Expand only checked - postconditions. - (Process_Contract_Cases_For): Expand only checked contract cases. - (Process_Inherited_Preconditions): Ignored class-wide preconditions are - partially expanded because some of their semantic checks are tied to - the expansion. - (Process_Preconditions_For): Expand only checked preconditions. - (Process_Spec_Postconditions): Expand only checked preconditions. - Ignored class-wide preconditions are partially expanded because some of - their semantic checks are tied to the expansion. - * exp_prag.adb (Expand_N_Pragma): Suppress the expansion of ignored - assertion pragmas. - * exp_util.adb (Add_Inherited_Invariants): Code clean up. - * sem_util.adb (Propagate_Invariant_Attributes): Code clean up. - -2018-06-11 Hristian Kirtchev - - * exp_ch9.adb, exp_unst.adb, inline.adb, libgnat/a-ciorma.adb, - libgnat/a-ciormu.adb, libgnat/a-ciorse.adb, libgnat/a-coorma.adb, - libgnat/a-coormu.adb, libgnat/a-coorse.adb, sem_prag.adb: Minor - reformatting. - -2018-06-11 Gary Dismukes - - * exp_unst.ads, exp_unst.adb: Typo fixes and minor reformatting. - -2018-06-11 Hristian Kirtchev - - * exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call): Do - not add any actuals when the size of the object is known, and the - caller will allocate it. - (Build_Heap_Allocator): Rename to Build_Heap_Or_Pool_Allocator to - better illustrate its functionality. Update the comment on the - generated code. Generate a branch for the heap and pool cases where - the object is not necessarity controlled. - (Expand_N_Extended_Return_Statement): Expand the extended return - statement into four branches depending the requested mode if the caller - will not allocate the object on its side. - (Make_Build_In_Place_Call_In_Allocator): Do not allocate a controlled - object on the caller side because this will violate the semantics of - finalizable types. Instead notify the function to allocate the object - on the heap or a user-defined storage pool. - (Needs_BIP_Alloc_Form): A build-in-place function needs to be notified - which of the four modes to employ when returning a limited controlled - result. - * exp_util.adb (Build_Allocate_Deallocate_Proc): Remove a redundant - guard which is already covered in Needs_Finalization. - -2018-06-11 Olivier Hainque - - * libgnat/s-excmac*.ads: Factorize Unwind_Action definitions ... - * libgnat/a-exexpr.adb: ... Here, then add comments describing the - major datastructures associated with the current exception raised. - (Setup_Current_Excep): Accept a "Phase" argument conveying the - unwinding phase during which this subprogram is called. For an Ada - exception, don't update the current exception buffer from the raised - exception object during SEARCH_PHASE, as this is redundant with the - call now issued just before propagation starts. - (Propagate_GCC_Exception): Move call to Setup_Current_Excep ahead of - the unwinding start, conveying Phase 0. - (Unhandled_Except_Handler): Pass UA_CLEANUP_PHASE as the Phase value on - the call to Setup_Current_Excep. - * raise-gcc.c (personality_body): Pass uw_phases as the Phase argument - on calls to Setup_Current_Excep. - -2018-06-11 Ed Schonberg - - * exp_unst.ads, exp_unst.adb (Needs_Fat_Pointer, - Build_Access_Type_Decl): New subprograms to handle uplevel references - to formals of an unconstrained array type. The activation record - component for these is an access type, and the reference is rewritten - as an explicit derefenrence of that component. - -2018-06-11 Bob Duff - - * libgnat/a-ciorma.adb, libgnat/a-ciormu.adb, libgnat/a-ciorse.adb, - libgnat/a-coorma.adb, libgnat/a-coormu.adb, libgnat/a-coorse.adb: - (Element): Add code to detect dangling cursors in some cases. - -2018-06-11 Yannick Moy - - * sem_ch6.adb (Build_Subprogram_Declaration): Mark parameters as coming - from source. - -2018-06-11 Ed Schonberg - - * sem_ch13.adb (Build_Predicate_Functions): For a derived type, ensure - that its parent is already frozen so that its predicate function, if - any, has already been constructed. - -2018-06-11 Yannick Moy - - * sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Adapt for - possible task unit as the enclosing context. - -2018-06-11 Eric Botcazou - - * gnat1drv.adb: Remove use clause for Repinfo. - (Gnat1drv): Beef up comment about the interplay between -gnatc and - back-end annotations. Use full qualified name for List_Rep_Info. - -2018-06-11 Hristian Kirtchev - - * libgnat/g-arrspl.ads: Add pragma Preelaborate. - -2018-06-11 Arnaud Charlet - - * exp_ch4.adb (Expand_Record_Equality): Remove extraneous "True and - then" and general logical "ada" in codepeer mode. - -2018-06-11 Javier Miranda - - * exp_ch9.adb (Expand_N_Protected_Body): Add missing handling of - N_Call_Marker nodes. - -2018-06-11 Arnaud Charlet - - * exp_ch3.adb, exp_unst.adb, inline.adb, sem_prag.adb: Minor - reformatting. - -2018-06-11 Yannick Moy - - * doc/gnat_rm/implementation_defined_pragmas.rst: Add Suppressible - argument to Assertion_Policy - * gnat_rm.texi: Regenerate. - -2018-06-11 Yannick Moy - - * gnat1drv.adb: Do not check representation information in CodePeer and - GNATprove modes, as these modes call a special backend instead of gigi, - so do not have the information. - -2018-06-11 Yannick Moy - - * inline.adb (Build_Body_To_Inline): Consider case of extended return - of unconstrained type as one case where inlining is not supported. - (Expand_Inlined_Call): Remove special case for body as extended return - of unconstrained type. - -2018-06-11 Yannick Moy - - * sem_prag.adb (Analyze_Part_Of): Only allow Part_Of on non-generic - unit. - (Check_Missing_Part_Of): Do not force Part_Of on generic unit. - -2018-06-11 Piotr Trojanek - - * sem_ch13.adb (Analyze_Aspect_Specifications): Don't split AND THEN - expressions in Pre/Post contracts while in GNATprove_Mode. - -2018-06-11 Piotr Trojanek - - * sem_util.adb (Is_Potentially_Unevaluated): Fix detection of contracts - with AND THEN expressions broken down into individual conjuncts. - -2018-06-11 Ed Schonberg - - * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Add guard. - -2018-06-11 Ed Schonberg - - * exp_unst.adb (Visit_Node): Skip generic associations. - -2018-06-11 Arnaud Charlet - - * libgnat/memtrack.adb (fwrite): Remove second definition. - -2018-06-11 Javier Miranda - - * sinfo.ads (Is_Dynamic_Coextension): Adding documentation. - (Is_Static_Coextension): Adding documentation. - * sinfo.adb (Is_Dynamic_Coextension): Extending the assertion. - (Is_Static_Coextension): Extending the assertion. - * sem_util.adb (Mark_Allocator): Clear Is_Static_Coextension when - setting flag Is_Dynamic_Coextension (and vice versa). - -2018-06-11 Ed Schonberg - - * exp_unst.adb (Search_Subprograms): Handle explicitly stubs at the top - level of a compilation unit, becuase they may contain nested - subprograms that need an activation record. - -2018-06-11 Arnaud Charlet - - * Makefile.rtl: Compile Ada files with $(ADAC) instead of $(CC). - -2018-06-11 Hristian Kirtchev - - * exp_ch11.adb, exp_unst.adb, inline.adb, sem_ch12.adb, sem_util.adb: - Minor reformatting. - * sinfo.ads: Fix a typo. - -2018-06-11 Ed Schonberg - - * inline.adb (Expand_Inlined_Call): If no optimization level is - specified, the expansion of a call to an Inline_Always function is - fully performed in the front-end even on a target that support back-end - inlining. - -2018-06-11 Arnaud Charlet - - * bindgen.adb (Gen_Adainit): Protect reference to System.Parameters - with Sec_Stack_Used. - -2018-06-11 Hristian Kirtchev - - * sem_ch8.adb (Find_Direct_Name): Mode the declaration of - Is_Assignment_LHS further in. Use predicate - Needs_Variable_Reference_Marker to determine whether to create a - variable marker. - (Find_Expanded_Name): Mode the declaration of Is_Assignment_LHS further - in. Use predicate Needs_Variable_Reference_Marker to determine whether - to create a variable marker. - * sem_elab.adb (Build_Variable_Reference_Marker): Remove the various - checks that determine whether the identifier or expanded name is a - suitable variable reference. The checks are now performed by - Needs_Variable_Reference_Marker. - * sem_res.adb (Resolve_Actuals): Use predicate - Needs_Variable_Reference_Marker to determine whether to create a - variable marker. - * sem_util.adb (Needs_Variable_Reference_Marker): New routine. - * sem_util.ads (Needs_Variable_Reference_Marker): New routine. - -2018-06-11 Valentine Reboul - - * doc/gnat_rm.rst, doc/gnat_ugn.rst: Rename "GPL Edition" into - "Community Edition". - -2018-06-11 Ed Schonberg - - * sem_ch12.adb (Install_Body): In order to determine the placement of - the freeze node for an instance of a generic nested within another - instance, take into account that the outer instance may be declared in - the visible part of a package and the inner intance may be in the - private part of the same package. - -2018-06-11 Eric Botcazou - - * errout.adb (Special_Msg_Delete): Remove handling of Atomic and VFA. - -2018-06-11 Nicolas Roche - - * libgnat/s-valuti.adb (Bad_Value): Ensure that we do not generate a - stack overflow while raising a constraint error. - -2018-06-11 Eric Botcazou - - * repinfo.ads (Rep_Value): Use a single line. - * repinfo.adb (Rep_Value): Likewise. - (List_Attr): Do not use string concatenation. - -2018-06-11 Ed Schonberg - - * exp_unst.adb (Visit_Node): Check reference to formal parameter of - current procedure, because the bounds of its type may be uplevel - references. - -2018-06-02 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : If this is - not a definition, retrieve the expression only if it's a compile-time - known value if we are just annotating types. - - * gcc-interface/utils.c (convert): Do not try to upcast properly for a - conversion between tagged types in type_annotate_only mode. - -2018-06-02 Eric Botcazou - - * gcc-interface/ada-tree.h (TYPE_PADDING_FOR_COMPONENT): New macro. - * gcc-interface/decl.c (gnat_to_gnu_component_type): Cache the padding - type built for an aliased component with variable size. - -2018-05-31 Pierre-Marie de Rodat - - * doc/gnat_ugn/project-manager-figure.png: Delete. - -2018-05-31 Pierre-Marie de Rodat - - * vxworks-arm-link.spec, vxworks-e500-link.spec, - vxworks-gnat-crtbe-link.spec, vxworks-smp-arm-link.spec, - vxworks-smp-e500-link.spec, vxworks-smp-ppc-link.spec, - vxworks-smp-x86-link.spec: New files. - -2018-05-31 Pierre-Marie de Rodat - - * gnatvsn.adb: Re-center the copyright header. - * indepsw-darwin.adb: Adjust the starting copyright year to 2011. - -2018-05-31 Fedor Rybin - - * doc/gnat_ugn/gnat_utility_programs.rst: Document Stubs_Subdir in - gnattest section on user guide. - -2018-05-31 Ed Schonberg - - * sem_res.adb (Resolve_String_Literal): If the type is a string type - whose component subtype has a static predicate, ensure that the - predicate is applied to each character by expanding the string into the - equivalent aggregate. This is also done if the component subtype is - constrained. - -2018-05-31 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): Remove obsolete code. - -2018-05-31 Piotr Trojanek - - * sem_ch6.adb (Check_Missing_Return): Handle procedures with no - explicit spec. - -2018-05-31 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): In the by-reference case, if - the type of the parameter is an unconstrained array type, convert - to the type of the actual before the type of the formal only if the - conversion was suppressed earlier. Use in_param and gnu_actual_type - local variables throughout, and uniform spelling for In Out or Out. - Also remove dead code in the component-by-reference case. - -2018-05-31 Frederic Konrad - - * tracebak.c (STOP_FRAME): Harden condition. - (is_return_from, EXTRA_STOP_CONDITION): New helpers for VxWorks in RTP - mode. - -2018-05-31 Ed Schonberg - - * checks.adb (Apply_Discriminant_Check): Do not apply discriminant - check to a call to a build-in-place function, given that the return - object is limited and cannot be copied. - -2018-05-31 Olivier Hainque - - * libgnat/s-atopri.ads: Update comment on __atomic_compare_exchange - builtins. - -2018-05-31 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): If this is a function call and - there is no target, also create a temporary for the return value for - an allocator if the type is an unconstrained record type with default - discriminant. - -2018-05-31 Hristian Kirtchev - - * exp_ch7.adb (Find_Transient_Context): An iteration scheme is a valid - boudary for a transient scope. - -2018-05-31 Valentine Reboul - - * gnatvsn.ads: Rename "GPL" version to "Community". - -2018-05-31 Ed Schonberg - - * einfo.ads: Improve documentation for the Is_Unsigned_Type entity - flag. - -2018-05-31 Piotr Trojanek - - * sem_prag.adb (Analyze_Pragma): Replace call to Unique_Defining_Entity - with a semantically equivalent call to Defining_Entity. - -2018-05-31 Piotr Trojanek - - * sem_prag.adb (Analyze_Pragma): Set Etype on the rewritten - Max_Queue_Length expression. - -2018-05-31 Sergey Rybin - - * doc/gnat_ugn/gnat_and_program_execution.rst: gnatelim does not need - that the main unit to be built before the call, now it computes the - closure of the main unit itself. - * gnat_ugn.texi: Regenerate. - -2018-05-31 Eric Botcazou - - * repinfo.adb (List_Structural_Record_Layout): Set First to false - after having listed the fields of the parent type, if any. - -2018-05-31 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not - deal with the ___XP suffix for packed array types here... - : ...or here when processing the implementation type - but when processing the original type instead. Do not reuse the DECL - of the implementation type for the original type. Tidy up. - -2018-05-31 Eric Botcazou - - * einfo.ads (Object_Size_Clause): Declare. - * einfo.adb (Object_Size_Clause): New function. - * gcc-interface/utils.c (maybe_pad_type): Test Has_Size_Clause before - retrieving Size_Clause and post the warning on the object size clause - if Has_Object_Size_Clause is true. - -2018-05-31 Javier Miranda - - * sem_util.ads, sem_util.adb (Find_Primitive_Eq): New subprogram. - * exp_ch4.adb (Expand_Composite_Equality): Use the new subprogram - Find_Primitive_Eq to search for the primitive of types whose underlying - type is a tagged type. - -2018-05-31 Yannick Moy - - * sem_prag.adb (Analyze_Pragma.Check_Loop_Pragma_Placement): Inverse - order of treatment between nodes recognized as loop pragmas (or - generated from one) and block statements. - -2018-05-31 Doug Rupp - - * libgnat/s-osprim__posix2008.adb (Clock): Implement using - clock_gettime. - -2018-05-31 Ed Schonberg - - * exp_unst.ads, exp_unst.adb (In_Synchronized_Unit): New predicate to - mark subprograms that cannot be eliminated because they must be treated - as reachable from outside the current unit. This includes entry bodies - and protected operations. - -2018-05-31 Ed Schonberg - - * exp_ch4.adb (Expand_Modular_Addition, Expand_Modular_Subtraction): - Convert all operands of the generated code to Standard.Unsigned, to - prevent spurious visibility errors. This is needed when the generated - expansion involves a modular index type of an array type, and the index - type is not immediately visible. - -2018-05-30 Piotr Trojanek - - * einfo.ads (Package_Instantiation): Update comment after a routine - that uses this field has been renamed. - -2018-05-30 Ed Schonberg - - * exp_ch11.adb (Replace_Raise_By_Goto): The transfomation is legal even - if the local raise statement includes a string expression. This - expression might be picked up by an outer handler or discarded, but - plays no role in this transformation. - -2018-05-30 Hristian Kirtchev - - * exp_aggr.adb, exp_unst.adb, freeze.adb, libgnat/a-direct.adb: Minor - reformatting. - -2018-05-30 Ed Schonberg - - * exp_unst.adb (Visit_Node): Handle the semantic Procedure_To_Call - field in relevant nodes: Allocate, Free, and return statements. - -2018-05-30 Ed Schonberg - - * exp_unst.adb (Visit_Node): Do not traverse a Component_Association - that has not been analyzed, as will be the case for a nested aggregate - that is expanded into individual assignments. - -2018-05-30 Justin Squirek - - * aspects.adb, aspects.ads: Register new aspect. - * par-prag.adb (Prag): Register new pragma. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing for new - aspect similar to Aspect_Max_Queue_Length. - * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new pragma and - set it to use the same processing as Pragma_Max_Queue_Length. - * snames.ads-tmpl: Move definition of Name_Max_Entry_Queue_Depth so - that it can be processed as a pragma in addition to a restriction and - add an entry for the pragma itself. - -2018-05-30 Ed Schonberg - - * freeze.adb (Freeze_Object_Declaration): A pragma Thread_Local_Storage - is now legal on a variable of composite type initialized with an - aggregate that is fully static and requires no elaboration code. - * exp_aggr.adb (Convert_To_Positional): Recognize additional cases of - nested aggregates that are compile-time static, so they can be used to - initialize variables declared with Threqd_Local_Storage. - * doc/gnat_rm/implementation_defined_pragmas.rst: Add documentation on - Thread_Local_Storage. - * gnat_rm.texi: Regenerate. - -2018-05-30 Yannick Moy - - * sem_util.adb (Policy_In_Effect): Take into account CodePeer and - GNATprove modes. - -2018-05-30 Justin Squirek - - * libgnat/a-direct.adb, libgnat/a-direct.ads (Name_Case_Equivalence): - Add implementation. - (Start_Search): Modify to use Start_Search_Internal - (Start_Search_Internal): Add to break out an extra flag for searching - case insensative due to the potential for directories within the same - OS to allow different casing schemes. - * sysdep.c (__gnat_name_case_equivalence): Add as a default fallback - for when the more precise solution fails. - -2018-05-30 Hristian Kirtchev - - * checks.adb, exp_ch5.adb, exp_ch7.adb, exp_unst.adb, sem_eval.adb: - Minor reformatting. - -2018-05-30 Pascal Obry - - * libgnat/g-comlin.ads (Value_Callback, Define_Switch): New. - * libgnat/g-comlin.adb: Add corresponding implementation. - -2018-05-30 Gary Dismukes - - * sem_res.adb, sem_util.adb: Fix several typos. - -2018-05-30 Olivier Hainque - - * vx_crtbegin_attr.c (CTOR_ATTRIBUTE, DTOR_ATTRIBUTE): Empty. - (eh_registration_ctors, eh_registration_tors): New static variables, - forced in a .ctors/.dtors section, respectively, with priority. - -2018-05-30 Bob Duff - - * aspects.ads, contracts.adb, exp_util.adb, expander.adb, expander.ads, - freeze.adb, inline.adb, lib-xref.adb, sem.ads, sem_aggr.adb, - sem_attr.adb, sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb, - sem_ch8.adb, sem_dim.adb, sem_elab.adb, sem_res.adb, sem_res.ads, - sinfo.ads: Spell preanalysis, preanalyze correctly. - -2018-05-30 Bob Duff - - * libgnat/g-sestin.ads: Rework documentation comments. - -2018-05-30 Piotr Trojanek - - * errout.adb, exp_aggr.adb, exp_ch7.adb, exp_util.adb, lib.adb, - sem_ch13.adb, sem_ch4.adb, sem_res.adb, sem_util.adb - (Has_Original_Node): Refactor to use Is_Rewrite_Substitution. - -2018-05-30 Piotr Trojanek - - * sem_prag.adb (Analyze_Pragma): Remove conjuncts that are always true. - -2018-05-30 Hristian Kirtchev - - * sem_util.adb (Is_Atomic_Object): Cleaned up. Split the entity logic - in a separate routine. - (Is_Atomic_Object_Entity): New routine. - (Is_Atomic_Prefix): Cleaned up. - (Is_Synchronized_Object): Check that the object is atomic, or its type - is atomic. - (Object_Has_Atomic_Components): Removed. - * sem_util.ads (Is_Atomic_Object): Reword the comment on usage. - (Is_Atomic_Object_Entity): New routine. - -2018-05-30 Ed Schonberg - - * sem_ch3.adb (Access_Subprogram_Declaration): The flag - Needs_Activation_Record is only needed on a subprogram type, not on a - pointer to such. - * sem_res.adb (Resolve_Selected_Component): If the context type and the - component type are anonymous access to subprograms, use the component - type to obtain the proper value of Needs_Activation_Record flag for the - expression. - -2018-05-30 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu) : Add - comment about the memset case. - -2018-05-30 Bob Duff - - * exp_ch5.adb (Expand_Formal_Container_Element_Loop): Remove the code - to analyze the Elmt_Decl, because it gets analyzed in the wrong scope. - We need to analyze it as part of analyzing the block, so that if the - call to Element that initializes Elmt_Decl returns on the secondary - stack, the block will ss_mark/ss_release. This block is inside the - loop; we don't want to leak memory until the loop exits. The purpose - of analyzing Elmt_Decl first was to catch the error of modifying it, - which is illegal because it's a loop parameter. The above causes us to - miss that error. Therefore, we add a flag Is_Loop_Parameter, and set - it on the Element entity, so we end up with an E_Variable node with the - flag set. - * einfo.ads, einfo.adb (Is_Loop_Parameter): New flag. - * sem_ch5.adb (Diagnose_Non_Variable_Lhs): Give the "assignment to loop - parameter not allowed" error if Is_Loop_Parameter. - * sem_util.adb (Is_Variable): Return False if Is_Loop_Parameter, to - trigger the call to Diagnose_Non_Variable_Lhs. - -2018-05-30 Arnaud Charlet - - * checks.adb (Apply_Scalar_Range_Check): - * sem_eval.adb (Check_Non_Static_Context, Out_Of_Range): Ignore out of - range values for System.Priority in CodePeer mode since the actual - target compiler may provide a wider range. - -2018-05-30 Ed Schonberg - - * exp_unst.adb: Search specification of main unit as well, for - unnesting. - -2018-05-30 Ed Schonberg - - * exp_ch7.adb (Check_Unnesting_Elaboration_Code): The statement part of - a package body that is a compilation unit may contain blocks that - declare local subprograms. In Subprogram_Unnesting Mode such - subprograms must be handled as nested inside the (implicit) elaboration - procedure that executes that statement part. To handle properly uplevel - references we construct that subprogram explicitly, to contain blocks - and inner subprograms, The statement part of the compilation unit - becomes a call to this subprogram. This is only done if blocks are - present in the statement list of the body. - -2018-05-30 Bob Duff - - * exp_ch7.adb: Minor comment fix. - -2018-05-30 Ed Schonberg - - * exp_unst.adb (Visit_Node): Handle properly subprogram instantiations - that have no corresponding body and appear as attributes of the - corresponding wrapper package declaration. - (Register_Subprogram): New subprogram, used for subprogram bodies and - for subprogram instantiations to enter callable entity into Subp table. - -2018-05-30 Hristian Kirtchev - - * libgnat/s-secsta.adb: Reimplement the secondary stack support. - * libgnat/s-secsta.ads: Update the documentation of all routines in the - public part of the package. Reimplement the private part of the - package to account for the new secondary stack structure. Add types - and subprograms for testing purposes. Add several documentation - sections. - -2018-05-30 Hristian Kirtchev - - * exp_aggr.adb, exp_ch3.adb, exp_ch4.adb, exp_ch7.adb, exp_unst.adb, - exp_util.adb, exp_util.ads, libgnat/a-calcon.adb, libgnat/a-calcon.ads, - libgnat/s-os_lib.adb, repinfo.adb, sem_ch3.adb, sem_disp.adb, - sem_disp.ads, sem_util.adb: Minor reformatting. - -2018-05-30 Arnaud Charlet - - * gcc-interface/Makefile.in: Move special flags for Ada runtime files - from here... - * Makefile.rtl: ... to here. Update comments. Protect call to - "GCC_FOR_TARGET" in case target_os isn't defined. - -2018-05-30 Arnaud Charlet - - * gcc-interface/Makefile.in: Move target pair settings from here... - * Makefile.rtl: ... to here. - (setup-rts): New target. - -2018-05-29 Eric Botcazou - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical - List of All Switches): Replace "modules" with "units". - (Subprogram Inlining Control): Likewise. - * gnat_ugn.texi: Regenerate. - * usage.adb (Usage): Fix description of -gnatn switch. - -2018-05-29 Arnaud Charlet - - * gcc-interface/Makefile.in: Fix typos. - -2018-05-29 Ed Schonberg - - * exp_ch7.adb (Build_Finalizer_Call): Attach to tree the reference to - the finalizer procedure in the At_End handler, for use in LLVM - generation. - -2018-05-29 Javier Miranda - - * exp_ch4.adb (Expand_N_Op_Eq, Expand_Composite_Equality): Use the new - subprogram Inherits_From_Tagged_Full_View to identify more reliably - untagged private types completed with a derivation of an untagged - private whose full view is a tagged type. - * sem_util.ads, sem_util.adb (Inherits_From_Tagged_Full_View): New - subprogram. - (Collect_Primitive_Operations): Handle untagged private types completed - with a derivation of an untagged private type whose full view is a - tagged type. In such case, collecting the list of primitives we may - find two equality primitives: one associated with the untagged private - and another associated with the ultimate tagged type (and we must - remove from the returned list this latter one). - -2018-05-29 Ed Schonberg - - * exp_unst.adb (Visit_Node): Handle statement sequences that include an - At_End handler. - -2018-05-29 Eric Botcazou - - * repinfo.adb (List_Entities): Also recurse into blocks without label. - -2018-05-29 Ed Schonberg - - * exp_ch6.adb (Expand_N_Subprogram_Body): Do not generate push/pop for - exceptions if subprogram unnesting is in effect, because these branch - nodes are relevant only in the presence of nested subprograms. - -2018-05-29 Ed Schonberg - - * libgnat/s-fatgen.adb (Succ, Pred): Raise Constraint_Error - unconditionally when applied to the largest positive (resp. largest - negative) value of a floating-point type. - -2018-05-29 Ed Schonberg - - * einfo.ads, einfo.adb: Clarify use of Activation_Record_Component: - discriminants and exceptions are never components of such. The flag - Needs_Activation_Record is set on subprogram types, not on access to - them. - -2018-05-29 Ed Schonberg - - * sem_ch3.adb: Set scope of component of subtype. - -2018-05-29 Ed Schonberg - - * exp_unst.adb (Visit_Node): Exclude selected components whose prefix - carry no type. Such selected components appear in unit names that are - child units, both in the specification and possibly in an end label for - the unit, and they do not contain any relevant uplevel references. - -2018-05-29 Arnaud Charlet - - * libgnat/a-calend.ads, libgnat/a-calend.adb (Epoch_Offset): Make it a - function. - -2018-05-29 Olivier Hainque - - * libgnat/system-vxworks7-ppc-rtp.ads: New file. - * libgnat/system-vxworks7-ppc-kernel.ads: New file. - * libgnat/system-vxworks7-e500-rtp.ads: New file. - * libgnat/system-vxworks7-e500-kernel.ads: New file. - * libgnat/system-vxworks7-x86-rtp.ads: New file. - * libgnat/system-vxworks-ppc64-kernel.ads: Rename as ... - * libgnat/system-vxworks7-ppc64-kernel.ads: and adjust name of - gnat-crtbe link spec to use the vx7 variant. - -2018-05-29 Olivier Hainque - - * vx_crtbegin.inc: Use a consistent naming convention for the - registration/deregistration functions across RTP or kernel. Remove the - ctor/dtor attribute setting based on RTP/kernel, expect the optional - attribute extension to be provided by includers instead. - * vx_crtbegin.c: Mere inclusion of vx_crtbegin.inc with empty attribute - extension for the registration/deregistration functions. - * vx_crtbegin_attr.c: New file. Include vx_crtbegin.inc with explicit - constructor/destructor attribute extensions. - * vx_crtbegin_array.c: New file. Include vx_crtbegin.inc with empty - attribute extensions and declare _ctors/_dtors arrays. - * vx_crtbegin_auto.c: Remove. - * libgnat/system-vxworks7-aarch64-rtp-smp.ads: Use - vxworks7-gnat-crtbe-link.spec. - * libgnat/system-vxworks7-aarch64.ads: Likewise. - * libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise. - * libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise. - * libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise. - * libgnat/system-vxworks7-x86-kernel.ads: Likewise. - * libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise. - * libgnat/system-vxworks7-x86_64-kernel.ads: Likewise. - * libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise. - -2018-05-29 Piotr Trojanek - - * ali.adb: Minor reformatting. - -2018-05-29 Joel Brobecker - - * doc/gnat_ugn/platform_specific_information.rst: Update package - requirements for 32bit GNAT on x86_64-linux. - * gnat_ugn.texi: Regenerate. - -2018-05-29 Eric Botcazou - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst (Debugging - Control): Adjust description of -gnatRj. - * gnat_ugn.texi: Regenerate. - * opt.ads (List_Representation_Info_To_JSON): Likewise. - * repinfo.adb (List_Rep_Info): Do not automatically create a file - if List_Representation_Info_To_JSON is true. - * switch-c.adb (Scan_Front_End_Switches) : Remove incompatibility - check between -gnatRj and -gnatRs. - * usage.adb (Usage): Adjust description of -gnatRj. - -2018-05-29 Pascal Obry - - * libgnat/s-os_lib.adb (Normalize_Pathname): Fix handling of ".." in - the root directory. - -2018-05-29 Pascal Obry - - * libgnat/s-os_lib.adb: Minor reformatting. - -2018-05-29 Doug Rupp - - * libgnat/a-calend.adb (Epoch_Offset): Move from body to ... - * libgnat/a-calend.ads (Epoch_Offset): to private part of spec - * libgnat/a-calcon.ads (To_Unix_Nano_Time): New function spec. - * libgnat/a-calcon.adb (To_Unix_Nano_Time): New function body. - -2018-05-29 Eric Botcazou - - * repinfo.ads (JSON format): Document new pair for components. - * repinfo.adb (Derived_Discriminant): New function. - (List_Structural_Record_Layout): Add Outer_Ent parameter and pass it - in recursive calls. If the record type is the parent of an extension, - find and list the derived discriminant from the extension, if any. - (List_Component_Layout): List the Discriminant_Number in JSON mode. - (List_Record_Info): Adjust call to List_Structural_Record_Layout. - -2018-05-29 Eric Botcazou - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical - List of All Switches): Document -gnatRj. - (Debugging Control): Likewise. - * gnat_ugn.texi: Regenerate. - * opt.ads (List_Representation_Info_To_JSON): New boolean variable. - * osint-c.adb (Create_Repinfo_File): Use the .json instead of .rep - extension if List_Representation_Info_To_JSON is true. - * repinfo.ads: Document the JSON output format. - * repinfo.adb (List_Location): New procedure. - (List_Array_Info): Add support for JSON output. - (List_Entities): Likewise. - (Unop): Likewise. - (Binop): Likewise. - (Print_Expr): Likewise. - (List_Linker_Section): Likewise. - (List_Mechanisms): Likewise. - (List_Name): Likewise. - (List_Object_Info): Likewise. - (List_Record_Info): Likewise. - (List_Component_Layout): Likewise. Add Indent parameter. - (List_Structural_Record_Layout): New procedure. - (List_Attr): Add support for JSON output. - (List_Type_Info): Likewise. - (Write_Unknown_Val): Likewise. - * switch-c.adb (Scan_Front_End_Switches) : Deal with 'j'. - * usage.adb (Usage): List -gnatRj. - -2018-05-29 Eric Botcazou - - * repinfo.adb (List_Component_Layout): New procedure extracted from... - (List_Record_Layout): ...here. Invoke it. - -2018-05-29 Eric Botcazou - - * repinfo.adb (Write_Unknown_Val): New procedure. - (List_GCC_Expression): Call it. - (List_Record_Layout): Likewise. - (Write_Val): Likewise. - -2018-05-29 Richard Kenner - - * exp_ch4.adb (Expand_N_Op_Abs): Clear Do_Overflow_Check when inserting - code to do check. - -2018-05-29 Arnaud Charlet - - * lib-writ.adb (Write_ALI): Do not use new function from s-casuti yet. - This breaks build of cross compilers with older versions of GNAT, so - better avoid it. - -2018-05-29 Doug Rupp - - * libgnarl/s-taprop.ads (Monotonic_Clock): Refine documentation to - reflect reality. - -2018-05-29 Richard Kenner - - * exp_ch4.adb (Expand_N_Op_Abs): Always do range check against 'First. - -2018-05-29 Eric Botcazou - - * repinfo.adb (List_Entities): Do not list the Linker_Section for - subprograms here... - (List_Mechanisms): ...but here instead. Use consistent name output - and formatting conventions. - -2018-05-29 Bob Duff - - * lib-writ.adb (Write_ALI): Cleanup: avoid use of global var; call new - To_Lower function. - * libgnat/s-casuti.ads, libgnat/s-casuti.adb (To_Upper, To_Lower, - To_Mixed): New functions. - * osint.adb: Cleanup: use Is_Directory_Separator, which correctly - allows both '\' and '/' on Windows. - -2018-05-28 Eric Botcazou - - * repinfo.ads: Minor fixes and tweaks in comments. - -2018-05-28 Eric Botcazou - - * repinfo.adb (List_GCC_Expression): Remove Valop and replace calls to - it with calls to Unop. - -2018-05-28 Eric Botcazou - - * repinfo.ads (TCode): Adjust range. - (Truth_Andif_Expr): Remove. - (Truth_Orif_Expr): Likewise. - (Truth_And_Expr .. Dynamic_Val): Adjust value. - * repinfo.adb (Print_Expr): Remove handling of Truth_{And,Or}if_Expr. - (Rep_Value): Likewise. - * repinfo.h (Truth_Andif_Expr): Remove. - (Truth_Orif_Expr): Likewise. - (Truth_And_Expr .. Dynamic_Val): Adjust value. - * gcc-interface/decl.c (annotate_value) : Fall - through to TRUTH_AND_EXPR case. - : Fall through to TRUTH_OR_EXPR case. - -2018-05-28 Ed Schonberg - - * exp_unst.adb (Visit_Node): For indexed components and attribute - references, examine index expressions or associated expressions as well - to record uplevel references. - (Vist_Node): For function and procedure calls, if a formal is an - unconstrained array and the actual is constrained, check whether bounds - of actual have uplevel references. - -2018-05-28 Ed Schonberg - - * einfo.ads, einfo.adb: Exceptions can be uplevel references, and thus - they can appear as components of activation records. - * exp_unst.adb (Visit_Node): A reference to an exception may be an - uplevel reference. - -2018-05-28 Eric Botcazou - - * exp_ch4.adb (Expand_Composite_Equality): Compute whether the size - depends on a discriminant manually instead of using the predicate - Size_Depends_On_Discriminant in the array type case. - -2018-05-28 Ed Schonberg - - * exp_unst.adb (Check_Static_Type): For a record subtype, check - discriminant constraints as well. - (Visit_Node): For a selected component, check type of prefix, as is - done for indexed components and slices. - -2018-05-28 Javier Miranda - - * exp_ch4.adb (Real_Range_Check): Add a temporary to store the integer - value when converting a float value to a fixed-point value. This is - required for CCG because it handles fixed-point types by means of - unsigned integer type variables. The range check is now performed using - the integer value stored in this temporary. - -2018-05-28 Yannick Moy - - * sem_util.adb (Is_OK_Volatile_Context): Add attributes First, Last and - Length as valid non-interfering contexts for SPARK. - -2018-05-28 Claire Dross - - * sem_disp.ads, sem_disp.adb (Inheritance_Utilities): Package for - generic inheritance utilities. - (Generic_Inherited_Subprograms): Generic version of - Inherited_Subprograms, generic in Find_Dispatching_Type function. - (Generic_Is_Overriding_Subprogram): Generic version of - Is_Overriding_Subprogram, generic in Find_Dispatching_Type function. - (Inherited_Subprograms): Instance of Generic_Inherited_Subprograms with - Sem_Disp.Find_Dispatching_Type. - (Is_Overriding_Subprogram): Instance of - Generic_Is_Overriding_Subprogram with Sem_Disp.Find_Dispatching_Type. - (Inheritance_Utilities_Inst): Instance of Inheritance_Utilities - with Sem_Disp.Find_Dispatching_Type. - -2018-05-28 Eric Botcazou - - * exp_ch4.adb (Expand_Composite_Equality): For a composite (or FP) - component type, do not expand array equality using the unconstrained - base type, except for the case where the bounds of the type depend on a - discriminant. - -2018-05-28 Ed Schonberg - - * einfo.ads, einfo.adb (Needs_Activation_Record): New flag on - access-to-subprogram types, to indicate that an indirect call through - such a type requires an activation record when compiling for LLVM. - * sem_ch3.adb (Access_Subprogram_Declaration): Set new flag as needed. - -2018-05-28 Ed Schonberg - - * exp_ch4.adb (Real_Range_Check): Specialize float-to-fixed conversions - when bounds of fixed type are static, to remove some spuerfluous - implicit conversions and provide an accurate result when converting - back and forth between the fixed point type and a floating point type. - -2018-05-28 Ed Schonberg - - * exp_unst.adb (Unnest_Subprogram): Prevent creation of empty - activation records. - -2018-05-28 Richard Kenner - - * exp_unst.adb (Check_Static_Type): Add argument to indicate node to be - replaced, if any; all callers changed. - (Note_Uplevel_Ref): Likewise. Also replace reference to deferred - constant with private view so we take the address of that entity. - (Note_Uplevel_Bound): Add argument to indicate node to be replaced, if - any; all callers changed. Handle N_Indexed_Component like - N_Attribute_Reference. Add N_Type_Conversion case. - (Visit_Node): Indexed references can be uplevel if the type isn't - static. - (Unnest_Subprograms): Don't rewrite if no reference given. If call has - been relocated, set first_named pointer in original node as well. - -2018-05-28 Ed Schonberg - - * exp_aggr.adb (Flatten): Copy tree of expression in a component - association with a range or a set of discrete choices, rather than - relocating the node. This avoids inconsistencies in the tree when - handling nested subprograms with uplevel references for LLVM. - -2018-05-28 Arnaud Charlet - - * exp_util.adb (Possible_Bit_Aligned_Component): Always return False in - codepeer mode. - -2018-05-28 Arnaud Charlet - - * exp_unst.adb: Fix typo. - -2018-05-28 Bob Duff - - * libgnat/a-convec.adb (Query_Element): Minor cleanup: remove an - unnecessary use of 'Unrestricted_Access. - -2018-05-28 Hristian Kirtchev - - * repinfo.adb (Expr_Value_S): New routine. - (List_Linker_Section): Properly extract the value of the section - argument. - -2018-05-28 Patrick Bernardi - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update the - description of the -D binder switch to reflect current usage. - * gnat_ugn.texi: Regenerate. - -2018-05-28 Gary Dismukes - - * exp_ch3.adb: Minor reformatting - -2018-05-28 Justin Squirek - - * exp_ch3.adb - (Build_Initialization_Call): Add logic to pass the appropriate actual to match - new formal. - (Init_Formals): Add new formal *_skip_null_excluding_check - * exp_util.adb, exp_util.ads - (Enclosing_Init_Proc): Added to fetch the enclosing Init_Proc from the current - scope. - (Inside_Init_Proc): Refactored to use Enclosing_Init_Proc - (Needs_Conditional_Null_Excluding_Check): Added to factorize the predicate - used to determine how to generate an Init_Proc for a given type. - (Needs_Constant_Address): Minor reformatting - * sem_res.adb - (Resolve_Null): Add logic to generate a conditional check in certain cases - -2018-05-28 Hristian Kirtchev - - * exp_aggr.adb, gnatlink.adb, sem_ch6.adb, sem_res.adb, sem_util.adb: - Minor reformatting. - -2018-05-28 Hristian Kirtchev - - * sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Include - the declarations of single concurrent types because they fall in the - category of full type and object declarations. - -2018-05-28 Eric Botcazou - - * repinfo.adb (Compute_Max_Length): Skip _Parent component. - (List_Record_Layout): Likewise. - -2018-05-28 Ed Schonberg - - * sem_util.adb (Is_Function_Result): Add a warning if a postcondition - includes a call to function to which it applies. This may mean an - omission of an attribute reference 'Result, in particular if the - function is pqrameterless. - -2018-05-28 Justin Squirek - - * sem_ch8.adb (Find_Expanded_Name): Add extra guard to make sure the - misresolved package name is not a case of mistaken identity. - -2018-05-28 Yannick Moy - - * sem_res.adb (Resolve_Range): Re-resolve the low bound of a range in - GNATprove mode, as the order of resolution (low then high) means that - all the information is not available when resolving the low bound the - first time. - -2018-05-28 Eric Botcazou - - * repinfo.adb (List_Array_Info): Start with an explicit blank line and - end with the linker section, if any. - (List_Entities): Do not output the linker section for record types, - array types and variables. - (Print_Expr): Factor out common processing for unary operators and - special values. Adjust and reorder the various cases. - (List_Object_Info): End with the linker section, if any. - (List_Record_Info): Likewise. - (List_Type_Info): Do not start with a blank line. - -2018-05-25 Nicolas Roche - - * libgnat/s-valrea.adb (Scan_Real): Abort computation once it is sure - that the result will be either -infinite or +infinite. - -2018-05-25 Patrick Bernardi - - * libgnat/s-parame.ads, libgnat/s-parame__vxworks.ads, - libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads (Size_Type): - Expand range of type to match the address space of the target. - (Task_Storage_Size): Remove unused type. - -2018-05-25 Ed Schonberg - - * sem_res.adb (Set_Mixed_Mode_Operand): If the operand is an expression - of a fixed point type and the parent is a multiplying operation, - resolve the operand with its own type because the context will impose a - resulting type on the result of the multiplication by means of - approriate conversion. - -2018-05-25 Hristian Kirtchev - - * exp_ch3.adb (Default_Initialize_Object): Ensure that the analysis of - the in-place initialization aggregate created for pragmas - Initialize_Scalars or Normalize_Scalars is performed with checks - suppressed. - -2018-05-25 Arnaud Charlet - - * exp_aggr.adb (Convert_To_Positional): Bump default for - Max_Others_Replicate to 32. Update comments. - * osint.ads (Unknown_Attributes): No longer pretend this is a constant. - (No_File_Info_Cache): Initialize separately. - * osint.adb (No_File_Info_Cache): Update initializer. - -2018-05-25 Javier Miranda - - * sem_res.adb (Resolve_Membership_Op): Allow the use of the membership - test when the left operand is a class-wide interface and the right - operand is not a class-wide type. - * exp_ch4.adb (Tagged_Membership): Adding support for interface as the - left operand. - -2018-05-25 Ed Schonberg - - * exp_aggr.adb (Flatten): A quantified expression cannot be duplicated - in an others clause to prevent visibility issues with the generated - loop variable. - (Component_OK_For_Backend): Return false for a quantified expression. - (Check_Static_Component): Ditto. - -2018-05-25 Hristian Kirtchev - - * libgnat/s-secsta.adb (SS_Allocate): Reimplemented. - (SS_Allocate_Dynamic): New routine. The allocation logic is now split - into three distring cases rather than in one loop which attempts to - handle all three cases. This rewrite eliminates an issue where the last - frame of the stack cannot be freed, thus causing the memory range of a - new frame to approach the overflow point of the memory index type. - Since the overflow is logically treated as a - too-much-memory-on-the-stack scenario, it causes a bogus Storage_Error. - (SS_Allocate_Static): New routine. The routine factorizes the static - secondary stack-related code from the former SS_Allocate. - -2018-05-25 Sergey Rybin - - * doc/gnat_ugn/gnat_and_program_execution.rst: Add description of '-U' - option for gnatelim. - -2018-05-25 Ed Schonberg - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not create - Class_Wide_Clone_Body when analyzing a subprogram_body_stub: the clone - is created when the proper body of the stub is analyzed. - * sem_util.adb (ZBuild_Class_Wide_Clone_Body): If the subprogram body - is the proper body of a subunit, the cloned body must be inserted in - the declarative list that contains the stub. - -2018-05-25 Justin Squirek - - * exp_ch6.adb (Expand_Simple_Function_Return): Add guard in check to - generate code for 6.5(8-10) so that we don't get an assertion error - when dealing with an incomplete return type. - -2018-05-25 Arnaud Charlet - - * pprint.adb (Expression_Name): Strip too long expressions to avoid - carrying very large strings. - -2018-05-25 Patrick Bernardi - - * switch-b.adb (Scan_Binder_Switches): binder switch -Q accepts Natural - numbers. - -2018-05-25 Doug Rupp - - * tracebak.c (aarch64-linux): Implement. - -2018-05-25 Justin Squirek - - * sem_ch8.adb: Minor reformatting. - -2018-05-25 Piotr Trojanek - - * sem_util.adb (Iterate_Call_Parameters): Fix code convention and - assertions. - -2018-05-25 Hristian Kirtchev - - * einfo.adb, einfo.ads, exp_ch3.adb, exp_ch8.adb, exp_unst.adb, - pprint.adb, sem_ch12.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb: - Minor reformatting. - -2018-05-25 Ed Schonberg - - * sem_ch12.adb (Instance_Exists): New function, subsidiary of - Validate_Derived_Type_Instance, to verify that all interfaces - implemented by the formal type are also implemented by the actual. The - verification is complicated when an interface of the formal is declared - in a generic unit and the actual is declared in an instance of it. - There is currently no mechanism to relate an interface declared within - a generic to the corresponding interface in an instance, so we must - traverse the list of interfaces of the actual, looking for a name - match, and verifying that that interface is declared in an instance. - -2018-05-25 Piotr Trojanek - - * sem_util.adb (Iterate_Call_Parameters): Rewrite with extra - assertions; replace function versions of Next_Formal/Next_Actual with - their procedural versions (which are more concise). - -2018-05-25 Doug Rupp - - * libgnarl/s-osinte__aix.ads, libgnarl/s-osinte__android.ads, - libgnarl/s-osinte__darwin.ads, libgnarl/s-osinte__freebsd.ads, - libgnarl/s-osinte__hpux.ads, libgnarl/s-osinte__kfreebsd-gnu.ads, - libgnarl/s-osinte__linux.ads, libgnarl/s-osinte__lynxos178e.ads, - libgnarl/s-osinte__qnx.ads, libgnarl/s-osinte__rtems.ads - (Relative_Timed_Wait): Remove. - * libgnarl/s-tpopmo.adb (Timed_Sleep, Timed_Delay): Rewrite to allow - for incremental looping. Remove references to Rel_Time and - Relative_Timed_Wait. - * libgnat/s-osprim__posix.adb, libgnat/s-osprim__posix2008.adb - (Timed_Delay): Make separate. - * libgnat/s-optide.adb: New separate procedure. - * libgnat/s-osprim.ads (Max_System_Delay): New constant. - * libgnat/s-osprim__lynxos.ads (Max_Sensible_Delay): Set to 6 months. - (Max_System_Delay): New constant. - -2018-05-25 Ed Schonberg - - * sem_ch12.adb (Validate_Derived_Type_Instance): Verify that the actual - for a formal derived type implements all the interfaces declared for - the formal. - -2018-05-25 Yannick Moy - - * sem_prag.adb (Check_Applicable_Policy): Deal specially with CodePeer - and GNATprove modes when applicable policy is Ignore. - -2018-05-25 Eric Botcazou - - * freeze.adb (Freeze_Enumeration_Type): Do not give integer size to a - boolean type with convention C. - * libgnat/i-cexten.ads (bool): Change to boolean with convention C. - * gcc-interface/decl.c (gnat_to_gnu_entity): Add new local variable - FOREIGN and use it throughout the function. - : Set precision 1 on boolean types with foreign - convention. - : Likewise for subtypes. - : Force the size of a storage unit on empty classes. - * gcc-interface/utils.c (make_type_from_size) : Skip - boolean types with precision 1 if the size is the expected one. - -2018-05-25 Arnaud Charlet - - * pprint.adb (Expression_Name): Do not print non ASCII characters. - -2018-05-25 Bob Duff - - * libgnat/a-strunb__shared.ads, libgnat/a-stwiun__shared.ads, - libgnat/a-stzunb__shared.ads: (Initialize, Adjust): Add pragma Inline. - -2018-05-25 Bob Duff - - * sem_util.ads: Minor comment fix. - -2018-05-25 Ed Schonberg - - * exp_unst.adb (Visit_Node): Restrict check for uplevel references in - prefixes of array attributes, to prefixes that are entity names whose - type is constrained. - (Note_Uplevel_Bound): Verify that the bound is declared in an enclosing - subprogram, as itype created for loops in pre/postcondition may appear - in loops at the library level. - -2018-05-25 Ed Schonberg - - * sem_ch13.adb (Build_Predicate_Functions): The predicate function - declaration is inserted into the tree and analyzed at that point, so - should not be reinserted when the body is constructed. Inside a - generic, ensure that the body is not inserted twice in the tree. - -2018-05-25 Yannick Moy - - * sem_prag.adb (Check_Grouping): Modify test to ignore statements and - declarations not coming from source. - -2018-05-25 Fedor Rybin - - * doc/gnat_ugn/gnat_utility_programs.rst: Document new switch - --copy-environment for gnattest. - -2018-05-24 Piotr Trojanek - - * sem_elab.adb (Non_Private_View): Simplify by removing a local Result - variable. - * sem_prag.adb (Get_Base_Subprogram): Same as above. - -2018-05-24 Eric Botcazou - - * fe.h (Set_Normalized_First_Bit): Declare. - (Set_Normalized_Position): Likewise. - * repinfo.adb (List_Record_Layout): Do not use irregular output for a - variable position. Fix minor spacing issue. - * gcc-interface/decl.c (annotate_rep): If a field has a variable - offset, compute the normalized position and annotate it in addition to - the bit offset. - -2018-05-24 Eric Botcazou - - * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): - Constify and rename variables. Fix formatting. - (gnat_to_gnu) : Minor tweak. - : Likewise. - -2018-05-24 Javier Miranda - - * exp_ch8.adb (Build_Body_For_Renaming): Adding support to build the - body of a variant record equality renaming. - (Expand_N_Subprogram_Renaming_Declaration): Adapt the code to the new - implementation of Build_Body_For_Renaming. - * exp_ch3.ads (Build_Variant_Record_Equality): New library level - function that factorizes the functionality needed by - Build_Body_For_Renaming and Expand_Freeze_Record_Type to build the body - of a variant record equality subprogram. - * exp_ch3.adb (Build_Variant_Record_Equality): New subprogram. - (Build_Variant_Record_Equality): New local procedure of - Expand_Freeze_Record_Type containing all the code specific for freezing - the record type that cannot be place in the new library level function. - -2018-05-24 Ed Schonberg - - * einfo.ads, einfo.adb (Is_Activation_Record): New flag on - in_parameters, used when unesting subprograms for LLVM, to indicate - that a generated parameter carries the activation record from the - enclosing subprogram. - * exp_unst.adb (Check_Static_Type): Handle array attributes of types - whose bounds may contain up-level references that need to be added to - an activation recoord. - (Add_Extra_Formal): Set Is_Activation_Record on new formal. - -2018-05-24 Yannick Moy - - * pprint.adb (Expression_Image): Improve the printing of expressions, - by taking more cases into account, in particular qualified expressions - and aggregates. Also count more the number of parentheses to close - after the expression. - -2018-05-24 Javier Miranda - - * sem_ch3.adb (Is_Visible_Component): For untagged types add missing - check for renamed discriminants. - * sem_ch4.adb (Analyze_Overloaded_Selected_Component, - Analyze_Selected_Component, Check_Misspelled_Selector): For calls to - Is_Visible_Component pass the associated selector node to allow - checking renamed discriminants on untagged types. - -2018-05-24 Ed Schonberg - - * sem_ch8.adb (Analyze_Use_Type): Do not assign the Prev_Use_Clause - link to a use_type clause if this would cause an infinite loop in the - machinery that detects redundant use clauses. This may happen when the - redundant clauses appear in the context of a child unit and the context - of its parent. - -2018-05-24 Piotr Trojanek - - * sinfo.ads: Fix grammar in comment. - -2018-05-24 Justin Squirek - - * einfo.ads, einfo.adb (Append_Entity): Modified to use Link_Entities - and manage doubly-linked entity chain. - (Nested_Scenarios): Removed entity field used for optimization during - elaboration to make room for the new field Prev_Entity. - (Link_Entities): Added to replace redundant calls to Set_Next_Entity - and Set_Prev_Entity as well as centralize changes to the entity chain. - (Predicated_Parent): Modified to use Node38. - (Prev_Entity): Added to fetch new node field Prev_Entity in all entity - types. - (Remove_Entity): Moved from sem_util. - (Set_Nested_Scenarios): Deleted. - (Set_Predicated_Parent): Modified to use Node38. - (Set_Prev_Entity): Added to set Prev_Entity field. - (Set_Validated_Object): Modified to use Node38. - (Unlink_Next_Entity): Added to process Prev_Entity when an unlinking - action is required. - (Validated_Object): Modified to use Node38. - (Write_Field36_Name): Remove Nested_Scenarios, Validated_Object, and - predicated parent cases. - (Write_Field38_Name): Add predicated parent and Validated_Object cases. - * sem_ch3.adb (Process_Subtype): Add guard to protect against - inappropriate marking of Predicated_Parent to non-itype subtypes. - (Make_Class_Wide_Type): Preserve Prev_Entity field and set in new type. - (Copy_And_Swap): Add setting of Prev_Entity. - (Build_derived_Record_Type): Replace Set_Next_Entity w/ Link_Entities. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Replace Set_Next_Entity - w/ Link_Entities. - (New_Overloaded_Entity): Remove block created to search for previous - entities in the entity chain with relevant calls to Prev_Entity as well - as replace duplicated code from Remove_Entity_And_Homonym with a call - to that subprogram. - * sem_ch7.adb (Exchange_Declarations): Replace Set_Next_Entity w/ - Link_Entities. - * sem_elab.adb (Find_And_Process_Nested_Scenarios): Remove global and - initial subprogram declarations related to Nested_Scenarios. - (Process_Nested_Scenarios): Deleted. - (Save_Scenario): Deleted. - (Traverse_Body): Remove optimization for Nested_Scenarios so as to free - node space in the entity tree. - * sem_util.adb, sem_util.ads (Remove_Entity): Moved to einfo. - (Remove_Entity_And_Homonym): Added to separate functionality of - Remove_Entity from the homonym chain directly. - * exp_attr.adb (Expand_N_Attribute_Reference): Replace Set_Next_Entity - w/ Link_Entities and Unlink_Next_Entity. - * exp_ch3.adb (Expand_N_Object_Declaration): Replace Set_Next_Entity w/ - Link_Entities. - * exp_ch6.adb (Replace_Renaming_Declaration_Id): Replace - Set_Next_Entity w/ Link_Entities. - * exp_disp.adb (Expand_Dispatching_Call): Replace Set_Next_Entity w/ - Link_Entities and Unlink_Next_Entity. - * exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Replace - call to Remove_Entity with its new incarnation. - * exp_util.adb (New_Class_Wide_Subtype): Add setting of Prev_Entity. - * freeze.adb (Freeze_Record_Type): Replace Set_Next_Entity w/ - Link_Entities. - -2018-05-24 Hristian Kirtchev - - * sem_ch10.adb (Expand_Limited_With_Clause): Update the call to - Install_Limited_Withed_Unit. - (Expand_With_Clause): Update the call to Install_Withed_Unit. - (Implicit_With_On_Parent): Update the call to Install_Withed_Unit. - (Install_Context_Clauses): Update the call to Install_Withed_Unit. - (Install_Limited_Context_Clauses): Update the calls to - Install_Limited_Withed_Unit. - (Install_Limited_Withed_Unit): Renamed to better illustrate its - purpose. - (Install_Private_With_Clauses): Update the calls to Install_Withed_Unit - and Install_Limited_Withed_Unit. - (Install_With_Clause): Uninstall a limited with clause if a [private] - with clause is given for the same package. - (Install_Withed_Unit): Renamed to better illustrate its purpose. - (Remove_Limited_With_Unit): New routine. - -2018-05-24 Eric Botcazou - - * raise-gcc.c (__gnat_SEH_error_handler): Remove prototype. - (__gnat_personality_seh0): Adjust and beef up comments, and - fix formatting throughout. - (__gnat_adjust_context): Deal minimally with version 2. - * seh_init.c (__gnat_map_SEH): Fix formatting. - (_gnat_SEH_error_handler): Adjust comments. - (__gnat_install_SEH_handler): Fix formatting. - -2018-05-24 Hristian Kirtchev - - * exp_ch7.adb, sem_ch3.adb, sem_res.adb: Minor reformatting. - -2018-05-24 Ed Schonberg - - * exp_aggr.adb (Flatten): Add a warning on an others clause in an array - aggregate with static bounds when named associations cover all index - positions and the others clause is redundant. - -2018-05-24 Raphael Amiard - - * libgnat/a-cohama.ads: Add documentation. - -2018-05-24 Raphael Amiard - - * libgnat/a-convec.ads: Add documentation. - -2018-05-24 Justin Squirek - - * exp_ch3.adb (Expand_N_Object_Declaration): Ignore raising an error in - expansion for limited tagged types when the node to be expanded is a - raise expression due to it not representing a valid object. - * exp_ch5.adb (Expand_N_Assignment_Statement): Add exception to error - message regarding assignments to limited types to ignore genereated - code. - -2018-05-24 Hristian Kirtchev - - * exp_util.adb (New_Class_Wide_Subtype): Capture and restore relevant - Ghost-related attributes of the class-wide subtype because the copy - clobbers them. - -2018-05-24 Justin Squirek - - * sem_res.adb (Resolve_Entity_Name): Add guard to protect against - marking use clauses as effective when the reference appears within - generated code. - -2018-05-24 Cyrille Comar - - * doc/gnat_rm/the_gnat_library.rst: Fix typos. - * gnat_rm.texi: Regenerate. - -2018-05-24 Bob Duff - - * exp_ch7.adb (Expand_Cleanup_Actions): Create a mark unconditionally - for build-in-place functions with a caller-unknown-size result. - (Create_Finalizer): For build-in-place functions with a - caller-unknown-size result, check at run time whether we need to - release the secondary stack. - -2018-05-24 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Use the full view of an internally - generated incomplete type. - -2018-05-24 Hristian Kirtchev - - * expander.adb (Expand): Update the save and restore of the Ghost - region. - * exp_ch3.adb (Freeze_Type): Likewise. - * exp_disp.adb (Make_DT): Likewise. - * exp_util.adb (Build_DIC_Procedure_Body): Likewise. - (Build_DIC_Procedure_Declaration): Likewise. - (Build_Invariant_Procedure_Body): Likewise. - (Build_Invariant_Procedure_Declaration): Likewise. - (Make_Predicate_Call): Likewise. - * freeze.adb (Add_To_Result): Insert the freeze action of a living - entity prior to the start of the enclosing ignored Ghost region. - (Freeze_Entity): Update the save and restore of the Ghost region. - * ghost.adb (Install_Ghost_Mode): Reimplemented. - (Install_Ghost_Region): New routine. - (Mark_And_Set_Ghost_Assignment): Install a region rather than a mode. - (Mark_And_Set_Ghost_Body): Likewise. - (Mark_And_Set_Ghost_Completion): Likewise. - (Mark_And_Set_Ghost_Declaration): Likewise. - (Mark_And_Set_Ghost_Instantiation): Likewise. - (Mark_And_Set_Ghost_Procedure_Call): Likewise. - (Name_To_Ghost_Mode): New routine. - (Restore_Ghost_Region): New routine. - * ghost.ads (Install_Ghost_Region): New routine. - (Restore_Ghost_Region): New routine. - * opt.ads: Add new global variable Ignored_Ghost_Region. - * rtsfind.adb (Load_RTU): Update the save and restore of the Ghost - region. Install a clean region. - * sem.adb (Analyze): Likewise. - (Do_Analyze): Likewise. - * sem_ch3.adb (Analyze_Object_Declaration): Likewise - (Derive_Progenitor_Subprograms): Use local variable Iface_Alias to - capture the ultimate alias of the current primitive. - (Process_Full_View): Update the save and restore of the Ghost region. - Do not inherit DIC and invariant procedures. - * sem_ch5.adb (Analyze_Assignment): Update the save and restore of the - Ghost region. - * sem_ch6.adb (Analyze_Procedure_Call): Likewise. - (Analyze_Subprogram_Body_Helper): Likewise. - * sem_ch7.adb (Analyze_Package_Body_Helper): Likewise. - * sem_ch12.adb (Analyze_Package_Instantiation): Likewise. - (Analyze_Subprogram_Instantiation): Likewise. - (Instantiate_Package_Body): Likewise. - (Instantiate_Subprogram_Body): Likewise. - * sem_ch13.adb (Build_Predicate_Functions): Likewise. - (Build_Predicate_Function_Declaration): Likewise. - * sem_disp.adb - (Add_Dispatching_Operation): Do not consider DIC and invariant - procedures. - (Check_Dispatching_Operation): Use Add_Dispatching_Operation to collect - a dispatching subprogram. - (Check_Operation_From_Private_View): Likewise. - (Override_Dispatching_Operation): Likewise. - * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Update the save - and restore of the Ghost region. - (Analyze_Initial_Condition_In_Decl_Part): Likewise. - (Analyze_Pragma): Update the save and restore of the Ghost region. - (Analyze_Pre_Post_Condition_In_Decl_Part): Likewise. - * sem_util.adb (Is_Suitable_Primitive): New routine. - * sem_util.ads (Is_Suitable_Primitive): New routine. - * sinfo.ads: Update the section of Ghost regions. - -2018-05-24 Piotr Trojanek - - * doc/gnat_rm/implementation_defined_pragmas.rst (Contract_Cases): - Change "condition" to "case guard" after renaming in the contract - grammar. - * gnat_rm.texi: Regenerate. - -2018-05-24 Hristian Kirtchev - - * exp_util.adb (Expand_Static_Predicates_In_Choices): Indicate that the - construct with discrete choices no longer contains a subtype with - predicates since the expansion already handled this case. - -2018-05-24 Hristian Kirtchev - - * freeze.adb (Wrap_Imported_Subprogram): Generate an unchecked - conversion to the return type to avoid a side effect where an imported - relocated function generates a new anonymous access type, whose - accessibility level does not agree with with that of the wrapper. - -2018-05-24 Javier Miranda - - * sem_util.adb (Abstract_Interface_List): Add missing support for - private types whose full view is a synchronized type. - * sem_ch3.adb (Build_Derived_Private_Type): Skip building the full - derivation of a private type parent type is a task type with - discriminants as gigi does not use such type directly. - -2018-05-24 Hristian Kirtchev - - * sem_elab.adb (Build_Variable_Reference_Marker): Do not create a - variable marker when the reference appears in the formal part of a - compilation unit instance because there is no place to insert it. - (In_Compilation_Instance_Formal_Part): New routine. - -2018-05-24 Piotr Trojanek - - * layout.ads, repinfo.ads: Fix references to renamed Backend_Layout - configuration parameter. - -2018-05-24 Doug Rupp - - * argv-lynxos178-raven-cert.c: New file. - * libgnat/system-lynxos178-x86.ads: New file. - -2018-05-23 Hristian Kirtchev - - * exp_disp.adb, freeze.adb, gnat1drv.adb, sem_ch5.adb, sem_spark.adb: - Minor reformattings. - -2018-05-23 Pascal Obry - - * adaint.c (win32_wait): Properly free the handle/pid lists when - WaitForMultipleObjects fails (return WAIT_FAILED). - -2018-05-23 Pascal Obry - - * adaint.c (win32_wait): Add missing parentheses. - -2018-05-23 Hristian Kirtchev - - * exp_ch3.adb (Check_Large_Modular_Array): Moved to Freeze. - (Expand_N_Object_Declaration): Do not check for a large modular array - here. - * freeze.adb (Check_Large_Modular_Array): Moved from Exp_Ch3. - (Freeze_Object_Declaration): Code cleanup. Check for a large modular - array. - * sem_ch3.adb: Minor reformatting. - -2018-05-23 Ed Schonberg - - * einfo.ads: New attribute on types: Predicated_Parent, to simplify the - retrieval of the applicable predicate function to an itype created for - a constrained array component. - * einfo.adb: Subprograms for Predicated_Parent. - (Predicate_Function): Use new attribute. - * exp_util.adb (Make_Predicate_Call): If the predicate function is not - available for a subtype, retrieve it from the base type, which may have - been frozen after the subtype declaration and not captured by the - subtype declaration. - * sem_aggr.adb (Resolve_Array_Aggregate): An Others association is - legal within a generated initiqlization procedure, as may happen with a - predicate check on a component, when the predicate function applies to - the base type of the component. - * sem_ch3.adb (Analyze_Subtype_Declaration): Clean up inheritance of - predicates for subtype declarations and for subtype indications in - other contexts. - (Process_Subtype): Likewise. Handle properly the case of a private type - with unknown discriminants whose full view is an unconstrained array. - Use Predicated_Parent to indicate source of predicate function on an - itype whose parent is itself an itype. - (Complete_Private_Subtype): If the private view has unknown - discriminants and the full view is an unconstrained array, set base - type of completion to the full view of parent. - (Inherit_Predicate_Flags): Prevent double assignment of predicate - function and flags. - (Build_Subtype): For a constrained array component, propagate predicate - information from original component type declaration. - -2018-05-23 Boris Yakobowski - - * libgnat/a-ngelfu.ads (Arctanh, Arccoth): Fix faulty preconditions. - -2018-05-23 Arnaud Charlet - - * checks.adb (Minimize_Eliminate_Overflows): Default initialize Lo and - Hi. - * sem_elab.adb: Make "out" parameters instead of "in out" when - relevant. - -2018-05-23 Bob Duff - - * gnatbind.adb (List_Applicable_Restrictions): Add - No_Implementation_Restrictions to the list of restrictions not to list. - Remove double negative "not No_Restriction_List". Comment the - commentary that is output, so it won't cause errors if used directly in - a gnat.adc. - -2018-05-23 Ed Schonberg - - * sem_prag.adb (Inherit_Class_Wide_Pre): Refine legality check on - class-wide precondition on a type extension when ancestor does not have - a class-wide precondition. Previously the compiler accepted such a - precondition when the ancestor had a class-wide postcondition. - -2018-05-23 Javier Miranda - - * sem_attr.adb (Valid_Scalars): Do not invoke Error_Attr_P to report - the warning on occurrences of this attribute whose evaluation is always - true (since that subprogram aborts processing the attribute). In - addition, replace the node by its boolean result 'True' (required - because the backend has no knowledge of this attribute). - -2018-05-23 Bob Duff - - * libgnat/a-convec.adb: (Insert, Insert_Space): Suppress warnings. The - code in question is not reachable in the case where Count_Type'Last is - out of range. - -2018-05-23 Yannick Moy - - * doc/gnat_rm/implementation_defined_pragmas.rst: Clarify meaning of - local pragma Warnings Off without On. - * gnat_rm.texi: Regenerate. - -2018-05-23 Olivier Hainque - - * libgnat/g-excact.ads (Is_Foreign_Exception): New predicate. - * libgnat/g-excact.adb: Implement. - -2018-05-23 Ed Schonberg - - * sem_ch5.adb (Analyze_Iterator_Specification): If a subtype indication - is present, verify its legality when the domain of iteration is a - GNAT-specific formal container, as is already done for arrays and - predefined containers. - -2018-05-23 Yannick Moy - - * sem_util.adb (Enclosing_Declaration): Fix the case of a named number - declaration, which was not taken into account. - -2018-05-23 Hristian Kirtchev - - * debug.adb: Switch -gnatd_s is now used to stop elaboration checks on - synchronized suspension. - * rtsfind.ads: Add entries for units Ada.Synchronous_Barriers and - Ada.Synchronous_Task_Control and routines Suspend_Until_True and - Wait_For_Release. - * sem_elab.adb: Document switch -gnatd_s. - (In_Task_Body): New routine. - (Is_Potential_Scenario): Code cleanup. Stop the traversal of a task - body when the current construct denotes a synchronous suspension call, - and restriction No_Entry_Calls_In_Elaboration_Code or switch -gnatd_s - is in effect. - (Is_Synchronous_Suspension_Call): New routine. - * switch-c.adb (Scan_Front_End_Switches): Switch -gnatJ now sets switch - -gnatd_s. - -2018-05-23 Javier Miranda - - * exp_disp.adb (Make_DT): Restrict the initialization of - External_Tag and Expanded_Name to an empty string to the case where - both pragmas apply (i.e. No_Tagged_Streams and Discard_Names), since - restricted runtimes are compiled with pragma Discard_Names. - * doc/gnat_rm/implementation_defined_pragmas.rst, - doc/gnat_rm/implementation_defined_characteristics.rst: Add - documentation. - * gnat_rm.texi: Regenerate. - -2018-05-23 Maroua Maalej - - * sem_spark.adb: Fix of some permission rules of pointers in SPARK. - -2018-05-23 Ed Schonberg - - * sem_ch5.adb (Preanalyze_Range): The pre-analysis of the domain of - iteration of an Ada2012 loop is performed to determine the type of the - domain, but full analysis is performed once the loop is rewritten as a - while-loop during expansion. The pre-analysis suppresses expansion; it - must also suppress the generation of freeze nodes, which may otherwise - appear in the wrong scope before rewritting. - -2018-05-23 Hristian Kirtchev - - * sem_elab.adb: Update the section on suppressing elaboration warnings. - -2018-05-23 Hristian Kirtchev - - * einfo.adb (Is_Elaboration_Checks_OK_Id): Use predicate - Is_Elaboration_Target. - (Is_Elaboration_Target): New routine. - (Is_Elaboration_Warnings_OK_Id): Use predicate Is_Elaboration_Target. - (Set_Is_Elaboration_Checks_OK_Id): Use predicate Is_Elaboration_Target. - (Set_Is_Elaboration_Warnings_OK_Id): Use predicate - Is_Elaboration_Target. - * einfo.ads: Add new synthesized attribute Is_Elaboration_Target along - with occurrences in nodes. - (Is_Elaboration_Target): New routine. - * sem_prag.adb (Analyze_Pragma): Suppress elaboration warnings when an - elaboration target is subject to pragma Warnings (Off, ...). - -2018-05-23 Eric Botcazou - - * repinfo.adb (List_Type_Info): Remove obsolete stuff. - -2018-05-23 Hristian Kirtchev - - * einfo.adb: Flag304 is now Is_Elaboration_Warnings_OK_Id. - (Is_Elaboration_Warnings_OK_Id): New routine. - (Set_Is_Elaboration_Warnings_OK_Id): New routine. - (Write_Entity_Flags): Output Flag304. - * einfo.ads: Add new attribute Is_Elaboration_Warnings_OK_Id along with - occurrences in entities. - (Is_Elaboration_Warnings_OK_Id): New routine along with pragma Inline. - (Set_Is_Elaboration_Warnings_OK_Id): New routine along with pragma - Inline. - * sem_attr.adb (Analyze_Access_Attribute): Capture the state of - elaboration warnings. - * sem_ch3.adb (Analyze_Object_Declaration): Capture the state of - elaboration warnings. - * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Capture the - state of elaboration warnings. - (Analyze_Subprogram_Body_Helper): Capture the state of elaboration - warnings. - (Analyze_Subprogram_Declaration): Capture the state of elaboration - warnings. - * sem_ch9.adb (Analyze_Entry_Declaration): Capture the state of - elaboration warnings. - (Analyze_Single_Task_Declaration): Capture the state of elaboration - warnings. - (Analyze_Task_Type_Declaration): Capture the state of elaboration - warnings. - * sem_ch12.adb (Analyze_Generic_Package_Declaration): Capture the state - of elaboration warnings. - (Analyze_Generic_Subprogram_Declaration): Capture the state of - elaboration warnings. - * sem_elab.adb: Add a section on suppressing elaboration warnings. - Type Processing_Attributes includes component Suppress_Warnings - intended to suppress any elaboration warnings along a path in the - graph. Update Initial_State to include a value for this component. - Types Target_Attributes and Task_Attriutes include component - Elab_Warnings_OK to indicate whether the target or task has elaboration - warnings enabled. component Elab_Warnings_OK. - (Build_Access_Marker): Propagate attribute - Is_Elaboration_Warnings_OK_Node from the attribute to the generated - call marker. - (Extract_Instantiation_Attributes): Set the value for Elab_Warnings_OK. - (Extract_Target_Attributes): Set the value for Elab_Warnings_OK. - (Extract_Task_Attributes): Set the value for Elab_Warnings_OK. - (Process_Conditional_ABE_Access): Suppress futher elaboration warnings - when already in this mode or when the attribute or target have warnings - suppressed. - (Process_Conditional_ABE_Activation_Impl): Do not emit any diagnostics - if warnings are suppressed. - (Process_Conditional_ABE_Call): Suppress further elaboration warnings - when already in this mode, or the target or call have warnings - suppressed. - (Process_Conditional_ABE_Call_Ada): Do not emit any diagnostics if - warnings are suppressed. - (Process_Conditional_ABE_Call_SPARK): Do not emit any diagnostics if - warnings are suppressed. - (Process_Conditional_ABE_Instantiation): Suppress further elaboration - warnings when already in this mode or when the instantiation has - warnings suppressed. - (Process_Conditional_ABE_Instantiation_Ada): Do not emit any - diagnostics if warnings are suppressed. - (Process_Conditional_ABE_Variable_Assignment_Ada): Use the more - specific Is_Elaboration_Warnings_OK_Id rather than Warnings_Off. - (Process_Conditional_ABE_Variable_Assignment_SPARK): Use the more - specific Is_Elaboration_Warnings_OK_Id rather than Warnings_Off. - (Process_Task_Object): Suppress further elaboration warnings when - already in this mode, or when the object, activation call, or task type - have warnings suppressed. Update the processing state to indicate that - the path goes through a task body. - * sinfo.adb (Is_Elaboration_Warnings_OK_Node): Accept attribute - references. - (Set_Is_Elaboration_Warnings_OK_Node): Accept attribute references. - * sinfo.ads: Attribute Is_Elaboration_Warnings_OK_Node now applies to - attribute references. - -2018-05-23 Piotr Trojanek - - * einfo.ads: Minor reformatting. - -2018-05-23 Ed Schonberg - - * sem_ch3.adb (Analyze_Object_Declaration): If expression is an - anonymous_access_to_ subprogram formal, apply a conversion to force an - accsssibility check that will fail statically, enforcing 3.10.2 (13). - -2018-05-23 Daniel Mercier - - * gnat1drv.adb: Turn off length expansion in CodePeer mode. - -2018-05-23 Bob Duff - - * freeze.adb: (Check_Address_Clause): Deal with build-in-place - aggregates in addition to build-in-place calls. - -2018-05-23 Bob Duff - - * einfo.ads: Minor reformatting. - * sem_ch3.adb: Likewise. - * sinfo.ads: Likewise. - -2018-05-23 Hristian Kirtchev - - * exp_ch3.adb (Default_Initialize_Object): Do not optimize scalar array - initialization when the component type has predicates. - * exp_ch4.adb (Expand_N_Allocator): Do not optimize scalar array - allocation when the component type has predicates. - -2018-05-23 Hristian Kirtchev - - * einfo.adb, exp_disp.adb, sem_ch3.adb, sem_ch6.adb, sem_prag.adb: - Minor reformatting. - -2018-05-22 Justin Squirek - - * sem_ch6.adb (Analyze_Expression_Function): Propagate flags from the - original function spec into the generated function spec due to - expansion of expression functions during analysis. - (Analyze_Subprogram_Body_Helper): Modify check on formal parameter - references from the body to the subprogram spec in the case of - expression functions because of inconsistances related to having a - generated body. - * libgnarl/s-osinte__android.ads: Flag parameters as unused. - * libgnarl/s-osinte__lynxos178e.ads: Likewise. - * libgnarl/s-osinte__qnx.adb: Likewise. - * libgnarl/s-osinte__qnx.ads: Likewise. - -2018-05-22 Doug Rupp - - * init.c (HAVE_ADJUST_CONTEXT_FOR_RAISE): Don't define on VxWorks7 for - AArch64. - -2018-05-22 Olivier Hainque - - * libgnat/a-except.adb (Exception_Propagation.Propagate_Exception): - Expect an Exception_Occurence object, not an Access. - (Complete_And_Propagate_Occurrence): Adjust accordingly. - (Raise_From_Signal_Handler): Likewise. - (Reraise_Occurrence_No_Defer): If we have a Machine_Occurrence - available in the provided occurrence object, just re-propagate the - latter as a bare "raise;" would do. - * libgnat/a-exexpr.adb (Propagate_Exception): Adjust to spec change. - * libgnat/a-exstat.adb (String_To_EO): Initialize X.Machine_Occurrence - to null, to mark that the occurrence we're crafting from the stream - contents is not being propagated (yet). - -2018-05-22 Hristian Kirtchev - - * exp_aggr.adb (Initialize_Ctrl_Record_Component): Insert the generated - code for a transient component in line with the rest of the - initialization code, rather than before the aggregate. This ensures - that the component has proper visibility of the discriminants. - -2018-05-22 Jerome Lambourg - - * adaint.c: Reorganize QNX-specific macros, use syspage to retreive the - number of CPUs. - -2018-05-22 Jerome Lambourg - - * sigtramp-qnx.c: Properly restore link register in signal trampoline. - -2018-05-22 Hristian Kirtchev - - * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Strip away any - conversions before extracting the value of the expression. - * exp_ch3.adb (Default_Initialize_Object): Optimize the default - initialization of an array of scalars. - (Get_Simple_Init_Val): Add processing for array types. Remove the - processing of strings because this case is already handled by the array - case. - (Needs_Simple_Initialization): Moved to Sem_Util. - (Simple_Init_Array_Type): New routine. - (Simple_Init_Initialize_Scalars_Type): Reimplemented to use the new - facilities from Sem_Util. - (Simple_Initialization_OK): New routine. - * exp_ch3.ads (Needs_Simple_Initialization): Moved to Sem_Util. - * exp_ch4.adb (Expand_N_Allocator): Optimize the default allocation of - an array of scalars. - * sem_prag.adb (Analyze_Float_Value): New routine. - (Analyze_Integer_Value): New routine. - (Analyze_Pragma): Reimplement the analysis of pragma Initialize_Scalars - to handled the extended form of the pragma. - (Analyze_Type_Value_Pair): New routine. - * sem_util.adb: Add invalid value-related data structures. - (Examine_Array_Bounds): New routine. - (Has_Static_Array_Bounds): Reimplemented. - (Has_Static_Non_Empty_Array_Bounds): New routine. - (Invalid_Scalar_Value): New routine. - (Needs_Simple_Initialization): Moved from Exp_Ch3. - (Set_Invalid_Scalar_Value): New routines. - * sem_util.ads (Has_Static_Non_Empty_Array_Bounds): New routine. - (Invalid_Scalar_Value): New routine. - (Needs_Simple_Initialization): Moved from Exp_Ch3. - (Set_Invalid_Scalar_Value): New routines. - * snames.ads-tmpl: Add names for the salar type families used by pragma - Initialize_Scalars. - -2018-05-22 Javier Miranda - - * exp_disp.adb (Make_DT): Initialize the External_Tag with an empty - string when pragma No_Tagged_Streams is applicable to the tagged type, - and initialize the Expanded_Name with an empty string when pragma - Discard_Names is applicable to the tagged type. - -2018-05-22 Ed Schonberg - - * sem_ch6.adb (Check_Conformance): Add RM reference for rule that a - formal subprogram is never subtype conformqnt, and thus cannot be the - prefix of 'Access. Reject as well the attribute when applied to a - renaming of a formal subprogram. - -2018-05-22 Hristian Kirtchev - - * exp_ch3.adb (Build_Array_Init_Proc): Update the call to - Needs_Simple_Initialization. - (Build_Init_Statements): Update the call to Get_Simple_Init_Val. - (Check_Subtype_Bounds): Renamed to Extract_Subtype_Bounds. Update the - profile and comment on usage. - (Default_Initialize_Object): Do not use New_Copy_Tree to set the proper - Sloc of a value obtained from aspect Default_Value because this could - potentially replicate large trees. The proper Sloc is now set in - Get_Simple_Init_Val. - (Get_Simple_Init_Val): Reorganized by breaking the various cases into - separate routines. Eliminate the use of global variables. - (Init_Component): Update the call to Get_Simple_Init_Val. - (Needs_Simple_Initialization): Update the parameter profile and all - uses of T. - (Simple_Init_Defaulted_Type): Copy the value of aspect Default_Value - and set the proper Sloc. - * exp_ch3.ads (Get_Simple_Init_Val): Update the parameter profile and - comment on usage. - (Needs_Simple_Initialization): Update the parameter profile. - -2018-05-22 Patrick Bernardi - - * sem_ch3.adb (Build_Discriminant_Constraints): Raise an error if the - user tries to use a subtype indication as a discriminant constraint. - -2018-05-22 Ed Schonberg - - * exp_ch4.ads, exp_ch4.adb, exp_util.adb, expander.adb: Remove mention - of N_Reduction_Expression and N_Reduction_Expression_Parameter. - * par-ch4.adb: Remove parsing routines for reduction expressions. - * sem.adb, sinfo.ads, sinfo.adb, sem_ch4.ads, sem_ch4.adb, sem_res.adb, - sem_spark.adb, sprint.adb: Remove analysis routines for reduction - expressions. - -2018-05-22 Arnaud Charlet - - * sem_ch8.adb (Check_Frozen_Renaming): Do not emit error in - Relaxed_RM_Semantics mode. - -2018-05-22 Arnaud Charlet - - * comperr.adb (Delete_SCIL_Files): Take into account - N_Generic_Package_Renaming_Declaration. - -2018-05-22 Ed Schonberg - - * sem_ch3.adb (Search_Derivation_Levels): Whenever a parent type is - private, use the full view if available, because it may include renamed - discriminants whose values are stored in the corresponding - Stored_Constraint. - -2018-05-22 Ed Schonberg - - * einfo.ads, einfo.adb: New attribute Hidden_In_Formal_Instance, - defined on packages that are actuals for formal packages, in order to - set/reset the visibility of the formals of a formal package with given - actuals, when there are subsequent uses of those formals in the - enclosing generic, as required by RN 12.7 (10). - * atree.ads, atree.adb: Add operations for Elist30. - * atree.h: Add Elist30. - * sem_ch12.adb (Analyze_Formal_Package_Instantiation): Collect formals - that are not defaulted and are thus not visible within the current - instance. - (Check_Formal_Packages): Reset visibility of formals of a formal - package that are not defaulted, on exit from current instance. - -2018-05-22 Hristian Kirtchev - - * sem_prag.adb (Analyze_Input_Output): Emit an error when a non-null, - non-'Result output appears in the output list of a function. - -2018-05-22 Hristian Kirtchev - - * exp_attr.adb (Build_Array_VS_Func): Reimplemented. - (Build_Record_VS_Func): Reimplemented. - (Expand_N_Attribute): Reimplement the handling of attribute - 'Valid_Scalars. - * sem_attr.adb (Analyze_Attribute): Reimplement the handling of - attribute 'Valid_Scalars. - * sem_util.adb (Scalar_Part_Present): Reimplemented. - (Validated_View): New routine. - * sem_util.ads (Scalar_Part_Present): Update the parameter profile and - comment on usage. - (Validated_View): New routine. - * doc/gnat_rm/implementation_defined_attributes.rst: Update the - documentation of attribute 'Valid_Scalars. - * gnat_rm.texi: Regenerate. - -2018-05-22 Bob Duff - - * binde.adb: (Choose): Ignore a pragma Elaborate_Body that appears in - the spec of a SAL_Interface package. - -2018-05-22 Ed Schonberg - - * freeze.adb (Freeze_Entity): When analyzing delayed aspects of an - entity E within a generic unit, indicate that there are no remaining - delayed aspects after invoking Analyze_Aspects_At_Freeze_Point. The - entity E is not frozen yet but the aspects should not be reanalyzed at - the freeze point, which may be outside of the generic and may not have - the proper visibility. - -2018-05-22 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for - the new --split-line-before-record, --indent-named-statements and - --no-align-modes gnatpp switches. - -2018-05-22 Ed Schonberg - - * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Handle properly - a second argument that is a constant of a given string value. - -2018-05-22 Doug Rupp - - * sigtramp-vxworks-target.inc: Align stack to 128bits on AArch64. - -2018-05-22 Jerome Lambourg - - * sigtramp-qnx.c: Fix stack alignment issue in the signal trampoline. - -2018-05-22 Ed Schonberg - - * freeze.adb (Freeze_Fixed_Point_Type): If the first subtype has - delayed aspects, analyze them now, os that the representation of the - type (size, bounds) can be computed and validated. - -2018-05-22 Olivier Hainque - - * libgnat/s-dwalin.adb (Enable_Cache): Skip symbols outside of the - executable code section boundaries. - -2018-05-22 Javier Miranda - - * locales.c: New implementation for the Ada.Locales package. - * libgnat/a-locale.ads: Remove comment indicating that this is not - implemented. - * doc/gnat_rm/standard_library_routines.rst: Remove comment indicating - that this is not implemented. - * gnat_rm.texi: Regenerate. - -2018-05-22 Hristian Kirtchev - - * exp_ch5.adb, freeze.adb, pprint.adb, sem_ch4.adb, sem_res.adb: Minor - reformattings. - -2018-05-22 Justin Squirek - - * sem_ch12.adb (In_Same_Declarative_Part): Moved to sem_util. - (Freeze_Subprogram_Body, Install_Body): Modify calls to - In_Same_Declarative_Part. - * sem_prag.adb (Analyze_Pragma-Pragma_Pure_Function): Add check to - verify pragma declaration is within the same declarative list with - corresponding error message. - * sem_util.adb, sem_util.ads (In_Same_Declarative_Part): Moved from - sem_ch12.adb and generalized to be useful outside the scope of - freezing. - -2018-05-22 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Subprogram_Declaration): Set the proper - categorization of the unit after processing the aspects in case one of - its aspects is converted into a categorization pragma. - -2018-05-21 Ed Schonberg - - * freeze.adb (Warn_Overlay): Do not emit a wawrning on an object - declaration with an explicit address clause and a type with default - initialization, if the declaration carries an aspect - Suppress_Initialization. - -2018-05-21 Daniel Mercier - - * pprint.adb: Use mixed case for attribute names. - -2018-05-21 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Generic_Subprogram_Body): Rename the call to - Analyze_Aspect_Specifications_On_Body_Or_Stub. - (Analyze_Subprogram_Body_Helper): Rename the calls to - Analyze_Aspect_Specifications_On_Body_Or_Stub. - * sem_ch9.adb (Analyze_Entry_Body): Rename the call to - Analyze_Aspect_Specifications_On_Body_Or_Stub. - * sem_ch10.adb: Add with and use clause for Sem_Ch13. - (Analyze_Package_Body_Stub): Add constant Id. Decorate the package stub - prior to analyzing its aspects. - (Analyze_Protected_Body_Stub): Add constant Id. Decorate the package - stub prior to analyzing its aspects. Save and restore the configuration - switches. - (Analyze_Task_Body_Stub): Add constant Id. Decorate the package stub - prior to analyzing its aspects. - * sem_ch13.adb (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed - to Analyze_Aspects_On_Subprogram_Body_Or_Stub. - * sem_ch13.ads (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed - to Analyze_Aspects_On_Subprogram_Body_Or_Stub. - * sem_prag.adb: Code reformatting. - (Analyze_Refined_Depends_Global_Post): Consider task body stubs. - -2018-05-21 Jerome Lambourg - - * gcc-interface/Makefile.in: Add g-soliop__qnx.ads to the runtime build - for QNX. - -2018-05-21 Hristian Kirtchev - - * exp_cg.adb: Remove with and use clause for Exp_Disp. - * exp_ch9.adb: Remove with and use clause for Exp_Disp. - * exp_disp.adb (Is_Predefined_Dispatching_Operation): Moved to Sem_Util. - (Is_Predefined_Interface_Primitive): Moved to Sem_Util. - (Is_Predefined_Internal_Operation): Moved to Sem_Util. - * exp_disp.ads (Is_Predefined_Dispatching_Operation): Moved to Sem_Util. - (Is_Predefined_Interface_Primitive): Moved to Sem_Util. - (Is_Predefined_Internal_Operation): Moved to Sem_Util. - * exp_dist.adb: Remove with and use clause for Exp_Disp. - * freeze.adb: Remove with and use clause for Exp_Disp. - * sem_cat.adb: Remove with and use clause for Exp_Disp. - * sem_ch6.adb: Remove with and use clause for Exp_Disp. - * sem_ch12.adb: Remove with and use clause for Exp_Disp. - * sem_elab.adb (Check_Overriding_Primitive): Do not process predefined - primitives. - * sem_util.adb: Remove with and use clause for Exp_Disp. - (Is_Predefined_Dispatching_Operation): Moved from Exp_Disp. - (Is_Predefined_Interface_Primitive): Moved from Exp_Disp. - (Is_Predefined_Internal_Operation): Moved from Exp_Disp. - * sem_util.ads (Is_Predefined_Dispatching_Operation): Moved from - Exp_Disp. - (Is_Predefined_Interface_Primitive): Moved from Exp_Disp. - (Is_Predefined_Internal_Operation): Moved from Exp_Disp. - -2018-05-21 Ed Schonberg - - * sem_res.adb (Valid_Conversion): Improve error message on an illegal - type conversion whose expression has a limited view of a type. - -2018-05-21 Ed Schonberg - - * exp_ch5.adb (Build_Formal_Container_Iteration): If source has - explicit name for iterator loop, preserve that name in expanded - construct, for possible use in exit statements. - -2018-05-21 Javier Miranda - - * sem_ch4.adb (Analyze_Membership_Op): Avoid compiler crash when the - spec of a unit has Ada 2012 membership tests with multiple choices and - the unit body is not compiled under Ada 2012 mode. - -2018-05-21 Doug Rupp - - * sigtramp-vxworks-target.inc: Set cfa_reg properly from sigcontext - pregs. - (CFI_COMMON_REGS): Restore LR jic probed from prologue. - (REGNO_PC_OFFSET): Change to correct value for Aarch64. - -2018-05-21 Jose Ruiz - - * doc/gnat_ugn/gnat_utility_programs.rst, exp_attr.adb, - libgnarl/s-tassta.adb: Minor typo fixes - -2018-05-21 Ed Schonberg - - * sem_ch4.adb (Analyze_One_Call): Recognize complex cases where an - indexed call originally in prefix forn is itself the prefix of a - further call. - -2018-05-21 Piotr Trojanek - - * sem_eval.adb (Is_Null_Range): Clarify access to the full view of a - type. - (Not_Null_Range): Same as above. - -2018-05-21 Hristian Kirtchev - - * exp_ch3.adb: Minor reformatting. - * exp_ch6.adb: Likewise. - * freeze.adb: Likewise. - * inline.adb: Likewise. - * sem_util.adb: Likewise. - -2018-05-21 Yannick Moy - - * inline.adb (Expand_Inlined_Call.Process_Formals): Use a type - conversion instead of an unchecked type conversion when inlining a - return statement, unless type qualification is required (for character - and string literal) or no check can result from the conversion (for - access types). - * opt.ads: Update comment. - -2018-05-21 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Install the elaboration - model of the compilation unit spec, if any. - * sem_ch7.adb (Analyze_Package_Body_Helper): Install the elaboration - model of the compilation unit spec, if any. - * sem_ch10.adb (Analyze_Subunit): Install the elaboration model of the - parent compilation unit spec, if any. - * sem_elab.adb (Check_Elaboration_Scenarios): Restore the elaboration - model of the main unit. - (Is_Same_Unit): The routine now uses Unit_Entity. - (Is_Subunit): Removed. - (Normalize_Unit): Removed. - (Unit_Entity): New routine. - * sem_prag.adb (Analyze_Pragma): Reimplement the handling of pragma - Elaboration_Checks. The analysis now ensures that the pragma appears at - the configuration level, and on the initial declaration of a unit. - Other placements are either flagged as illegal, or ignored. - (Check_Duplicate_Elaboration_Checks_Pragma): New routine. - (Ignore_Elaboration_Checks_Pragma): New routine. - * sem_util.adb (Install_Elaboration_Model): New routine. - * sem_util.ads (Install_Elaboration_Model): New routine. - * doc/gnat_rm/implementation_defined_pragmas.rst: Update the - documentation of pragma Elaboration_Checks. - * gnat_rm.texi: Regenerate. - -2018-05-21 Olivier Hainque - - * libgnat/s-trasym__dwarf.adb (Executable_Name): Return argv[0] instead - of empty string when argv[0] couldn't be found on PATH. - (Enable_Cache): Raise Program_Error instead of attempting a null - pointer dereference when the Exec_Module initialization failed. - -2018-05-21 Piotr Trojanek - - * libgnarl/a-reatim.ads (Clock_Time): Remove External aspect. - * libgnarl/a-taside.ads (Tasking_State): Likewise. - * libgnat/a-calend.ads (Clock_Time): Likewise. - -2018-05-21 Yannick Moy - - * sem_ch6.adb (Analyze_Procedure_Call): Refine test to recognize prefix - call notation in inlined call in GNATprove mode. - -2018-05-21 Hristian Kirtchev - - * einfo.adb (Is_External_State): An abstract state is also external - when it is declared with option "synchronous". - * einfo.ads: Update the documentation of synthesized attribute - Is_External_State. - * sem_util.adb (Find_Simple_Properties): New routine. - (Is_Enabled_External_Property): New routine. - (State_Has_Enabled_Property): Reimplemented. The two flavors of option - External have precedence over option Synchronous when determining - whether a property is in effect. - -2018-05-21 Yannick Moy - - * sem_eval.adb (Static_Length): Take into account case of variable of - subtype string literal. - -2018-05-21 Olivier Hainque - - * libgnat/s-objrea.ads (Get_Memory_Bounds): Rename as Get_Xcode_Bounds. - (Object_Section): Rename Flag_Alloc component as Flag_Xcode. - * libgnat/s-objrea.adb (Get_Xcode_Bounds): Adjust to new subprogram and - component name. - (Get_Section, ELF case): Set Flag_Xcode from SHF_EXECINSTR. - * libgnat/s-dwalin.adb (Open): Adjust to the Get_Memory_Bounds name - change. - -2018-05-21 Olivier Hainque - - * libgnat/s-dwalin.ads (Dwarf_Context): Change type of Load_Address to - Address, and type of Low, High to Storage_Offset. - (Low): Rename as Low_Address and convey that the return value is a - runtime reference accounting for a load address. - * libgnat/s-dwalin.adb (Read_Aranges_Entry): Adjust to the - address/offset type changes. - (Aranges_Lookup): Likewise. - (Symbolic_Address): Likewise. - (Symbolic_Traceback): Likewise. - (Dump_Cache): Likewise. - (Is_Inside): Likewise. - (Open): Likewise. - (Set_Load_Address): Likewise. - (Low_Address): Likewise, and account for C.Load_Address. - * libgnat/s-trasym__dwarf.adb (Lt): Use Low_Address instead of Low. - (Multi_Module_Symbolic_Traceback): Compare address in traceback - with module Low_Address instead of Low. - -2018-05-21 Olivier Hainque - - * libgnat/s-dwalin.ads (Dwarf_Context): Rename Load_Slide as - Load_Address. - * libgnat/s-dwalin.adb (Is_Inside): Adjust accordingly. - (Set_Load_Address): Likewise. - (Symbolic_Traceback): Likewise. - -2018-05-21 Olivier Hainque - - * libgnat/s-trasym__dwarf.adb (Add_Module_To_Cache): Expect a - Load_Address argument and pass it down to Init_Module. - * libgnat/s-tsmona__linux.adb (Build_Cache_For_All_Modules): Pass - lm.l_addr as the Load_Address to Add_Module_To_Cache. - -2018-05-21 Piotr Trojanek - - * einfo.adb (Has_Discriminants): Stronger assertion. - (Set_Has_Discriminants): Stronger assertion. - * sem_ch13.adb (Push_Scope_And_Install_Discriminants): Adapt to respect - the stronger assertion on Has_Discriminant. - (Uninstall_Discriminants_And_Pop_Scope): Same as above. - * sem_util.adb (New_Copy_Tree): Same as above. - * sem_ch7.adb (Generate_Parent_References): Prevent calls to - Has_Discriminant on non-type entities that might happen when the - compiled code has errors. - * sem_ch3.adb (Derived_Type_Declaration): Only call - Set_Has_Discriminant on type entities. - -2018-05-21 Arnaud Charlet - - * exp_unst.adb (Unnest_Subprogram): Unnest all subprograms relevant for - code generation. - -2018-05-21 Piotr Trojanek - - * lib.ads: Fix typo in enumeration in comment. - -2018-05-21 Ed Schonberg - - * sem_attr.adb (Analyze_Attribute, case Scalar_Storage_Order): The - attribute reference is legal within a generic unit when the prefix is a - formal private type. - -2018-05-21 Hristian Kirtchev - - * exp_ch7.adb (Establish_Transient_Scope): Code cleanup. Do not - delegate the secondary stack management when there is no suitable - transient context, and the transient scope was intended to manage the - secondary stack because this causes premature reclamation. Change the - transient scope creation logic by special casing assignment statements - of controlled components for type initialization procedures. - (Find_Node_To_Be_Wrapped): Renamed to Find_Transient_Context. Update - the comment on usage. - (Find_Transient_Context): Change the initinte loop into a while loop. - Iterations schemes and iterator specifications are not valid transient - contexts because they rely on special processing. Assignment statements - are now treated as a normal transient context, special cases are - handled by the caller. Add special processing for pragma Check. - (Is_OK_Construct): Removed. Its functionality has been merged in - routine Find_Transient_Context. - * sem_ch5.adb (Check_Call): Reimplemented. Add code to properly - retrieve the subprogram being invoked. Use a more accurate predicate - (Requires_Transient_Scope) to determine that the function will emply - the secondary stack. - -2018-05-21 Piotr Trojanek - - * ada_get_targ.adb: Fix subprogram body headers. - * adabkend.adb: Likewise. - * checks.adb: Likewise. - * exp_ch3.adb: Likewise. - * exp_ch5.adb: Likewise. - * exp_ch9.adb: Likewise. - * exp_dist.adb: Likewise. - * exp_tss.adb: Likewise. - * inline.adb: Likewise. - * lib-writ.adb: Likewise. - * lib-xref-spark_specific.adb: Likewise. - * libgnarl/s-osinte__darwin.adb: Likewise. - * libgnarl/s-stusta.adb: Likewise. - * libgnarl/s-taprop__solaris.adb: Likewise. - * libgnarl/s-tposen.adb: Likewise. - * libgnarl/s-vxwext__kernel-smp.adb: Likewise. - * libgnarl/s-vxwext__kernel.adb: Likewise. - * libgnat/a-btgbso.adb: Likewise. - * libgnat/a-cfdlli.adb: Likewise. - * libgnat/a-cfhama.adb: Likewise. - * libgnat/a-cfinve.adb: Likewise. - * libgnat/a-cimutr.adb: Likewise. - * libgnat/a-coboho.adb: Likewise. - * libgnat/a-cofove.adb: Likewise. - * libgnat/a-cofuve.adb: Likewise. - * libgnat/a-comutr.adb: Likewise. - * libgnat/a-exexda.adb: Likewise. - * libgnat/a-tags.adb: Likewise. - * libgnat/a-tideau.adb: Likewise. - * libgnat/a-wtdeau.adb: Likewise. - * libgnat/a-ztdeau.adb: Likewise. - * libgnat/g-alleve.adb: Likewise. - * libgnat/s-excdeb.adb: Likewise. - * libgnat/s-parint.adb: Likewise. - * libgnat/s-shasto.adb: Likewise. - * libgnat/s-traceb__hpux.adb: Likewise. - * prepcomp.adb: Likewise. - * sem_ch4.adb: Likewise. - * sem_ch6.adb: Likewise. - * sem_dist.adb: Likewise. - * sem_prag.adb: Likewise. - * sem_util.adb: Likewise. - * sinfo.adb: Likewise. - * switch.adb: Likewise. - -2018-05-04 John Marino - - PR ada/85635 - * link.c (BSD platforms): Add missing backslash. - -2018-04-27 Eric Botcazou - - PR ada/85540 - * init.c (__gnat_handle_vms_condition): Add missing parentheses. - -2018-04-25 Eric Botcazou - - PR ada/85007 - * gnat_ugn.texi: Regenerate. - -2018-03-23 Eric Botcazou - - PR ada/85007 - * gnatlink.adb (Gnatlink): Remove handling of -b switch. - * doc/gnat_ugn/building_executable_programs_with_gnat.rst (gnatlink): - Remove documentation of -b switch. - -2018-03-23 Eric Botcazou - - PR ada/85036 - * gnatlink.adb (Process_Args): Drop existing link switches if multiple - switches are passed for --LINK. - -2018-03-12 Eric Botcazou - - PR ada/82813 - * gcc-interface/misc.c (gnat_post_options): Disable string overflow - warnings. - -2018-03-10 Eric Botcazou - - * gcc-interface/trans.c (node_has_volatile_full_access) : - Consider only entities for objects. - -2018-03-07 Sebastian Huber - - * gcc-interface/Makefile.in (OSCONS_CPP): Remove redundant - $(GNATLIBCFLAGS). - (OSCONS_EXTRACT): Add $(GNATLIBCFLAGS_FOR_C). - -2018-03-06 Eric Botcazou - - * gcc-interface/trans.c (convert_with_check): Fix typo in the condition - guarding the overflow check emitted for the upper bound of a floating- - point conversion. - -2018-03-06 Eric Botcazou - - * gcc-interface/utils.c (def_builtin_1): Bail out on error_mark_node. - -2018-02-28 Eric Botcazou - - * libgnat/i-cexten.ads (Float_128): New type. - -2018-02-02 Eric Botcazou - - * gcc-interface/decl.c (array_type_has_nonaliased_component): Return - false if the component type is a pointer. - -2018-01-11 Gary Dismukes - - * exp_ch3.adb (Default_Initialize_Object): Call New_Copy_Tree on the - result of Get_Simple_Init_Value and pass the source location of the - object declaration's object_definition. - -2018-01-11 Ed Schonberg - - * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Handle - properly object declarations with initializations that are - build-in-place function calls, when there is an address specification, - either as an aspect specification or an explicit attribute - specification clause, for the initialized object. - * freeze.adb (Check_Address_Clause): Do not remove side-effects from - initial expressions in the case of a build-in-place call. - -2018-01-11 Piotr Trojanek - - * sem_eval.adb (Is_Null_Range): Retrieve the full view when called on a - private (sub)type; refactor to avoid early return statement. - (Not_Null_Range): Same as above. - -2018-01-11 Hristian Kirtchev - - * freeze.adb (Freeze_Entity): Ensure that a Ghost type is not - concurrent, nor effectively volatile. - * ghost.adb (Check_Ghost_Type): New routine. - * ghost.ads (Check_Ghost_Type): New routine. - * sem_util.adb (Is_Declaration): Reimplemented. The routine can now - consider specific subsets of declarations. - (Is_Declaration_Other_Than_Renaming): Removed. Its functionality is - replicated by Is_Declaration. - * sem_util.ads (Is_Declaration): New parameter profile. Update the - comment on usage. - (Is_Declaration_Other_Than_Renaming): Removed. - -2018-01-11 Hristian Kirtchev - - * sem_ch5.adb (Analyze_Assignment): Assignments to variables that act - as Part_Of consituents of single protected types are illegal when they - take place inside a protected function. - (Diagnose_Non_Variable_Lhs): Use Within_Function to check for an - enclosing function. - (Is_Protected_Part_Of_Constituent): New routine. - (Within_Function): New routine. - -2018-01-11 Arnaud Charlet - - Bump copyright notices to 2018. - -2018-01-11 Hristian Kirtchev - - * binde.adb, par-ch6.adb, par-ch9.adb, sem_ch12.adb, sem_ch13.adb: - Minor reformatting. - -2018-01-11 Justin Squirek - - * par-ch6.adb (Scan_Body_Or_Expression_Function): Add additional check - to make sure a given expression function is properly parenthesized. - -2018-01-11 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Check the - categorization of a subprogram body which does not complete a previous - declaration. - -2018-01-11 Hristian Kirtchev - - * sem_ch10.adb (Check_Private_Child_Unit): Ensure that the enclosing - scope of package Ada is Standard. - -2018-01-11 Ed Schonberg - - * sem_ch13.adb (Replace_Type_Ref): Handle properly reference to a - subcomponent of the current entity when building the body for a dynamic - predicate function for a record with composite subcomponents. - -2018-01-11 Hristian Kirtchev - - * exp_aggr.adb (Convert_Aggr_In_Object_Decl): Update the call to - Establish_Transient_Scope. - (Convert_To_Assignments): Update the call to Establish_Transient_Scope. - (Expand_Array_Aggregate): Update the call to Establish_Transient_Scope. - * exp_ch6.adb (Expand_Call_Helper): Update the call to - Establish_Transient_Scope. - (Make_Build_In_Place_Call_In_Object_Declaration): Update the call to - Establish_Transient_Scope. - * exp_ch7.adb (Establish_Transient_Scope): Restructured. Delegate the - management of the secondary stack to an enclosing scope if there is no - suitable construct to wrap, and the transient scope was intended to - manage the secondary stack. - (Find_Node_To_Be_Wrapped): Restructured. A case_statement_alternative - is a valid boundary for a transient expression which comes from the - statements of the alternative, otherwise alternatives cannot be - wrapped. Assignments of controlled objects which have controlled - actions suppressed now stop the traversal as there is no point in - looking for an enclosing construct. Add several N_xxx_Body choices to - the termination conditions for completeness. - * exp_ch7.ads (Establish_Transient_Scope): Update the parameter profile - and the associated comment on usage. - * exp_smem.adb (Add_Shared_Var_Lock_Procs): Update the call to - Establish_Transient_Scope. - (Add_Write_After): Update the call to Establish_Transient_Scope. - * sem_res.adb (Check_Initialization_Call): Removed. - (Resolve_Actuals): Account for additional cases where finalization - actions are required by utilizing predicate Needs_Finalization rather - than Is_Controlled. - (Resolve_Call): Type initialization procedures can now utilize - transient scopes to manage the secondary stack, thus preventing leaks - during initialization. Remove the previous kludgy algorithm which - attempts to manage the secondary stack at the object creation site. - -2018-01-11 Jerome Lambourg - - * libgnat/g-soliop__qnx.ads: New. - * adaint.c, adaint.h, cstreams.c, s-oscons-tmplt.c, sysdep.c: Update - for QNX. - -2018-01-11 Bob Duff - - * par-ch9.adb (P_Protected_Operation_Declaration_Opt): Give an error if - a null procedure occurs in a protected definition. - -2018-01-11 Bob Duff - - * binderr.ads, namet.ads: Minor reformatting. - -2018-01-11 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Improve documentation of - xml2gnat. - -2018-01-11 Bob Duff - - * binde.adb (Force_Elab_Order): Give an error if there are duplicate - unit names. - -2018-01-11 Ed Schonberg - - * sem_ch6.adb (Freeze_Expr_Types): If an access value is the - controlling argument of a dispatching call. freeze the corresponding - designated type. - -2018-01-11 Ben Brosgol - - * doc/Makefile: Add Sphinx option -W to treat warnings as errors. - -2018-01-11 Ben Brosgol - - * doc/gnat_rm/implementation_defined_aspects.rst: Minor type/wording - corrections. - * gnat_rm.texi: Regenerate. - -2018-01-11 Ed Schonberg - - * sem_ch12.adb (Check_Fixed_Point_Type): Do not apply check if the - formsl type corresponding to the actual fixed point type is private, - because in this case there can be no suspicious arithmetic operations - in the generic unless they reference a formal subprogram. Clarify - warning. - -2018-01-11 Javier Miranda - - * exp_util.adb (Remove_Side_Effects): No action done for functions - returning class-wide types since it requires generating code using - 'reference and the CCG target has no secondary stack. - * gnat1drv.adb: Disable building static dispatch tables when generating - C code. - -2018-01-11 Piotr Trojanek - - * libgnat/a-direio.ads, libgnat/a-sequio.ads, libgnat/a-ststio.ads, - libgnat/a-textio.ads, libgnat/a-witeio.ads, libgnat/a-ztexio.ads - (File_Type): Add Default_Initial_Condition aspect. - -2018-01-11 Pascal Obry - - * libgnat/s-os_lib.adb (Normalize_Pathname): New implementation. - -2018-01-11 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Rewrite gnatpp documentation - to match what the Libadalang-based version does. - * doc/gnat_ugn/about_this_guide.rst: Update reference. - -2018-01-11 Hristian Kirtchev - - * sem_res.adb (Uses_SS): A controlled type requires the secondary stack - if it contains at least one component declaration employing a function - call returning on the secondary stack. - -2018-01-11 Yannick Moy - - * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: - Update description of restriction SPARK_05 with SPARK 2014. - * gnat_rm.texi: Regenerate. - -2018-01-11 Vasiliy Fofanov - - * doc/gnat_ugn/gnat_utility_programs.rst: Fix layout. - -2018-01-11 Hristian Kirtchev - - * exp_aggr.adb, exp_ch9.adb, exp_util.adb, sem_aggr.adb, sem_ch3.adb, - sem_res.adb, sem_util.adb: Minor reformatting. - -2018-01-11 Ed Schonberg - - * sem_prag.adb (Analyze_Pragma, case Predicate): Indicate that the type - has a delayed aspect which must be processed at the point the type is - frozen. This mimics what is done when the predicate is provided by a - source aspect. - -2018-01-11 Doug Rupp - - * init.c (vxworks): Add macro checks for __aarch64__. - -2018-01-11 Hristian Kirtchev - - * exp_util.adb (Add_Failure_Expression): New routine. - (Make_Predicate_Check): Reimplement the handling of Predicate_Failure. - * sem_util.adb (Is_Current_Instance): Code cleanup. - -2018-01-11 Patrick Bernardi - - * libgnat/s-parame*.adb, libgnat/s-parame*.ads: Remove unneeded - Default_Sec_Stack_Size. - * libgnat/s-secsta.adb (SS_Allocate): Handle the fixed secondary stack - limit check so that the integer index does not overflow. Check the - dynamic stack allocation does not cause the secondary stack pointer to - overflow. - (SS_Info): Align colons. - (SS_Init): Cover the case when bootstraping with an old compiler that - does not set Default_SS_Size. - -2018-01-11 Ed Schonberg - - * sem_ch3.adb (Add_Internal_Interface_Entities): When checking the - legality of an inherited operation that may require overriding, ignore - primitive_wrappers that correspond to explicit operations that override - an interface primitive. - * exp_util.adb (Build_Class_Wide_Expression, Replace_Entity): If the - operation to which the class-wide expression applies is a protected op. - with a primitive_wrapper, verify that the updated inherited expression - does not contain an internal call to a protected function. This - completes the implementation of AI12-0166. - -2018-01-11 Hristian Kirtchev - - * ali.adb: Document the remaining letters available for ALI lines. - (Scan_ALI): A with clause is internal when it is encoded on a 'Z' line. - * ali.ads: Update type With_Record. Field - Implicit_With_From_Instantiation is no longer in use. Add field - Implicit_With. - * csinfo.adb (CSinfo): Remove the setup for attribute - Implicit_With_From_Instantiation. - * lib-writ.adb (Collect_Withs): Correct the logic which marks a unit as - either implicitly or explicitly withed. - (Is_Implicit_With_Clause): New routine. - (Write_ALI): Rename array Implicit_With to Has_Implicit_With to avoid - confusion with the with clause attribute by the same name. - (Write_With_Lines): Update the emission of 'W', 'Y', and 'Z' headers. - * rtsfind.adb (Maybe_Add_With): Code cleanup. - * sem_ch8.adb (Present_System_Aux): Code cleanup. - * sem_ch10.adb (Expand_With_Clause): Mark the with clause as generated - for a parent unit. - (Implicit_With_On_Parent): Mark the with clause as generated for a - parent unit. - * sem_ch12.adb (Inherit_Context): With clauses inherited by an - instantiation are no longer marked as Implicit_With_From_Instantiation - because they are already marked as implicit. - * sem_elab.adb (Ensure_Prior_Elaboration_Static): Remove the kludge - which marks implicit with clauses as related to an instantiation. - * sinfo.adb (Implicit_With_From_Instantiation): Removed. - (Parent_With): New routine. - (Set_Implicit_With_From_Instantiation): Removed. - (Set_Parent_With): New routine. - * sinfo.ads: Update the documentation of attribute Implicit_With. - Remove attribute Implicit_With_From_Instantiation along with - occurrences in nodes. Add attribute Parent_With along with occurrences - in nodes. - (Implicit_With_From_Instantiation): Removed along with pragma Inline. - (Parent_With): New routine along with pragma Inline. - (Set_Implicit_With_From_Instantiation): Removed along with pragma Inline. - (Set_Parent_With): New routine along with pragma Inline. - -2018-01-11 Hristian Kirtchev - - * sem_util.adb (Find_Enclosing_Scope): Return the unique defining - entity when the enclosing construct is a body. - -2018-01-11 Patrick Bernardi - - * exp_ch9.adb (Expand_N_Task_Type_Declaration): Simplified - Secondary_Stack_Size handling as a pragma is now generated for the - corresponding aspect instead of an attribute. Pragma expression is - relocated instead of evaluated. Discriminant of the corresponding - record type is referenced rather than the type discriminant. - (Create_Secondary_Stack_For_Task, Make_Task_Create_Call): Update - Secondary_Stack_Size rep item checks to only look for the pragma rep. - * sem_ch13.adb (Analyze_One_Aspect): Transform - Aspect_Secondary_Stack_Size into a pragma instead of an attribute - because the attribute does not have visibility on a task type's - discriminants when the type's definition is expanded. - (Analyze_Attribute_Definition_Clause): Remove handling of - Attribute_Secondary_Stack_Size. - * snames.adb-tmpl, snames.ads-tmpl: Remove - Attribute_Secondary_Stack_Size, no longer used. - -2018-01-11 Justin Squirek - - * sem_ch8.adb: Minor comment fix. - -2018-01-11 Hristian Kirtchev - - * exp_ch4.adb (Process_Action): Do not abandon the inspection of an - individual action because the action may denote a complex expression, - such as a case statement, which in turn may contain additional - transient objects. - -2018-01-11 Ed Schonberg - - * sem_aggr.adb (Resolve_Iterated_Component_Association): Perform - analysis on a copy of the expression with a copy of the index variable, - because full expansion will rewrite construct into a loop with the - original loop variable. - * exp_aggr.adb (Gen_Assign): Defer analysis and resolution if the - expression is an iterated component association. Full analysis takes - place when construct is rewritten as a loop. - (In_Place_Assign_OK, Safe_Component): An iterated_component_association - is not safe for in-place assignment. - * sem_util.adb (Remove_Entity): Handle properly the case of an isolated - entity with no homonym and no other entity in the scope. - -2018-01-11 Justin Squirek - - * sem_prag.adb (Analyze_Pragma:Pragma_Loop_Variant): Modify error - message to be printed on the pragma argument identifier. - -2018-01-11 Hristian Kirtchev - - * exp_util.adb (Build_Invariant_Procedure_Declaration): Set the last - entity of the generated invariant procedure in order to construct a - proper entity chain. - -2018-01-11 Piotr Trojanek - - * sem_ch13.adb (Build_Predicate_Functions): Fix minor issues in - comment. - -2018-01-11 Arnaud Charlet - - * einfo.ads, einfo.adb (Activation_Record_Component, - Set_Activation_Record_Component, Set_Is_Uplevel_Referenced_Entity): - Allow E_Discriminant. - -2018-01-10 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_component_type): Apply the check - for atomic access once the component size is taken into account and - also do it if the component type is Atomic or Volatile_Full_Access. - -2018-01-04 Eric Botcazou - - * gnatvsn.ads: Bump copyright year. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/misc.c (enumerate_modes): Treat GET_MODE_BITSIZE - as polynomial. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/misc.c (enumerate_modes): Treat GET_MODE_PRECISION - as polynomial. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/utils.c (gnat_types_compatible_p): Handle - polynomial TYPE_VECTOR_SUBPARTS. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/misc.c (enumerate_modes): Handle polynomial - GET_MODE_NUNITS. - -2018-01-03 Jakub Jelinek - - Update copyright years. +2019-01-01 Jakub Jelinek * gnat_ugn.texi: Bump @copying's copyright year. * gnat_rm.texi: Likewise. -Copyright (C) 2018 Free Software Foundation, Inc. +Copyright (C) 2019 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/ada/ChangeLog-2018 b/gcc/ada/ChangeLog-2018 new file mode 100644 index 00000000000..026f202af58 --- /dev/null +++ b/gcc/ada/ChangeLog-2018 @@ -0,0 +1,5715 @@ +2018-12-23 Iain Sandoe + + * adaint.c [__APPLE__] (__gnat_lwp_self): Ensure that the system + interface used is available on the target. + +2018-12-14 Eric Botcazou + + * gcc-interface/decl.c (rm_size): Take into account the padding in + the case of a record type containing a template. + * gcc-interface/trans.c (Attribute_to_gnu) : Likewise. + Do not subtract the padded size for Max_Size_In_Storage_Elements. + : Tweak comment. + +2018-12-14 Eric Botcazou + + * gcc-interface/decl.c (choices_to_gnu): Directly use a naked boolean + discriminant if the value is the boolean true. + +2018-12-11 Eric Botcazou + + PR ada/88429 + * gcc-interface/Makefile.in (./stamp-gnatlib1-$(RTSDIR)): Also pass + MULTISUBDIR to sub-make and add quotes around $(THREAD_KIND). + (gnatlib-shared-dual): Also pass PICFLAG_FOR_TARGET to sub-make. + (gnatlib-sjlj): Also pass MULTISUBDIR to sub-make, but do not pass + PICFLAG_FOR_TARGET. + (gnatlib-zcx): Likewise. + +2018-12-11 Piotr Trojanek + + * libgnat/a-calend.ads: Add "Global => null" contract to pure routines. + +2018-12-11 Hristian Kirtchev + + * freeze.adb (Check_Pragma_Thread_Local_Storage): Use the + violating set to diagnose detect an illegal initialization, + rather than the complement of the OK set. + (Freeze_Object_Declaration): Factorize code in + Has_Default_Initialization. + (Has_Default_Initialization, Has_Incompatible_Initialization): + New routines. + +2018-12-11 Dmitriy Anisimkov + + * libgnat/g-socket.ads (Family_Type): Add new enumerated value + Family_Unspec to be able to use it in Get_Address_Info parameter + and find IPv4 together with IPv6 addresses. + (Inet_Addr_Bytes_Length): Zero length for Family_Unspec. New + IPv6 predefined constant addresses. + (IPv4_To_IPv6_Prefix): IPv4 mapped to IPv6 address prefix. + (Is_IPv4_Address): Rename from Is_IP_Address and published. + (Is_IPv6_Address): New routine. + (Image of Inet_Addr_Type): Fix description about IPv6 address + text representation. + (Level_Type): New propocol level IP_Protocol_For_IPv6_Level. + (Add_Membership_V4): New socket option equal to Add_Membership. + (Drop_Membership_V4): New socket option equal to + Drop_Membership. + (Multicast_If_V4): New socket option equal to Multicast_If. + (Multicast_Loop_V4, Add_Membership_V6, Drop_Membership_V6, + Multicast_If_V6, Multicast_Loop_V6, Multicast_Hops, IPv6_Only): + New socket option for IPv6. + (Address_Info): New record to keep address info. + (Address_Info_Array): Array to keep address info records. + (Get_Address_Info): Routine to get address info records by host + and service names. + (Host_Service): Record to keep host and service names. + (Get_Name_Info): New routine to get host and service names by + address. + (Create_Socket): Add Level parameter, IP_Protocol_For_IP_Level + default. + (Name_Array, Inet_Addr_Array): Change array index to Positive. + * libgnat/g-socket.adb (IPV6_Mreq): New record definition for + IPv6. + (Hex_To_Char): Remove. + (Short_To_Network, Network_To_Short): Move to package + GNAT.Sockets.Thin_Common. + (Is_IP_Address): Remove. + (To_In_Addr, To_Inet_Addr): Move to package + GNAT.Sockets.Thin_Common. + (Get_Socket_Option): Get value of Multicast_Loop option as + integer boolean, process IPv6 options. Don't try to get + Add_Membership_V4, Add_Membership_V6, Drop_Membership_V4, and + Drop_Membership_V6 as not supported by the socket API. + (Set_Socket_Option): Set value of Multicast_Loop option as + integer boolean, process IPv6 options. + * gsocket.h + (IPV6_ADD_MEMBERSHIP): Define from IPV6_JOIN_GROUP if necessary + for VxWorks. + (IPV6_DROP_MEMBERSHIP): Define from IPV6_LEAVE_GROUP if + necessary for VxWorks + (HAVE_INET_NTOP): New definition. + (HAVE_INET_PTON): Includes VxWorks now. + * socket.c (__gnat_getaddrinfo, __gnat_getnameinfo, + __gnat_freeaddrinfo, __gnat_gai_strerror, __gnat_inet_ntop): New + routines. + * libgnat/g-sothco.ads, libgnat/g-sothco.adb + (socklen_t, In6_Addr, To_In6_Addr): New. + (To_In_Addr, To_Inet_Addr): Move from package body GNAT.Sockets. + (To_Inet_Addr): New overload with In6_Addr type parmeter. + (In_Addr_Access_Array): Remove. + (Sockaddr): Unchecked_Union instead of Sockaddr_In and old + defined generic Sockaddr. + (Set_Address): Use it to set family, port and address into + Sockaddr. + (Get_Address): New routine to get Socket_Addr_Type from + Sockaddr. + (Addrinfo): Structure to use with getaddrinfo. + (C_Getaddrinfo, C_Freeaddrinfo, C_Getnameinfo, C_GAI_Strerror, + Inet_Ntop): New routine import. + (Short_To_Network, Network_To_Short): Move from package body + GNAT.Sockets. + * libgnat/g-stsifd__sockets.adb: Use Sockaddr instead of + Sockaddr_In. + * s-oscons-tmplt.c (AF_UNSPEC, EAI_SYSTEM, SOCK_RAW, + IPPROTO_IPV6, IP_RECVERR, SIZEOF_socklen_t, IF_NAMESIZE): New + constants. + (AI_xxxx_OFFSET): Constants to consider platform differences in + field positions and sizes for addrinfo structure. + (AI_xxxxx): Flags for getaddrinfo. + (NI_xxxxx): Flags for getnameinfo. + (IPV6_xxxxx): Socket options for IPv6. + (Inet_Ntop_Linkname): New routine. + +2018-12-11 Yannick Moy + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Deactivate + expansion in ignored ghost subprogram body. + * sem_ch7.adb (Analyze_Package_Body_Helper): Deactivate + expansion in ignored ghost package body. + +2018-12-11 Ed Schonberg + + * exp_unst.adb (Register_Subprogram): A subprogram whose address + is taken (through attribute Address or Access) is reachable and + cannot be eliminated, even if there is no explicit call to it: + the address may be used in an indirect call or in some + address-related operation. + +2018-12-11 Ed Schonberg + + * sem_util.adb (Get_Actual_Subtype): Function can return type + mark. + (Get_Cursor_Type): Improve recovery and error message on a + misplaced First aspect for an iterable type. + +2018-12-11 Hristian Kirtchev + + * checks.adb: Add with and use clauses for Sem_Mech. + (Ensure_Valid): Update the "annoying special case" to include + entry and function calls. Use Get_Called_Entity to obtain the + entry or subprogram being invoked, rather than retrieving it + manually. Parameters passed by reference do not need a validity + check. + +2018-12-11 Yannick Moy + + * sem_prag.adb (Analyze_Global_Item): Refine error message. + +2018-12-11 Ed Schonberg + + * exp_ch7.adb (Check_Unnesting_In_Declarations): Extend + subprogram so that it is usable for visible and private + declarations of a package declaration, not just for declarations + in the pakage body. + * exp_ch13.adb (Expand_Freeze_Entity): Handle properly the + freezing of a finalizer routine generated for a controlled objet + declaration. Special processing already applies to finalizers + because they are usually displaced into another construct. + +2018-12-11 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprogram): Ensure Current_Subprogram is + always initialized. + +2018-12-11 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Add + gnat_annotate_type local variable initialized to Empty. + : Set it to the Cloned_Subtype, if any. For + types, back-annotate alignment and size values earlier and only + if the DECL was created here; otherwise, if gnat_annotate_type + is present, take the values from it. + (gnat_to_gnu_field): Add gnat_clause local variable. If a + component clause is present, call validate_size only once on the + Esize of the component. Otherwise, in the packed case, do not + call validate_size again on the type of the component but + retrieve directly its RM size. + (components_to_record): Minor tweak. + (set_rm_size): Remove useless test. + * gcc-interface/trans.c (gnat_to_gnu): Do not wrap the instance of + a boolean discriminant attached to a variant part. + +2018-12-11 Ed Schonberg + + * sem_aggr.adb (Array_Aggr_Subtype. Resolve_Aggr_Expr): Indicate + that aggregate subtype has a predicate if the component type has + a predicate; do not rely on exisatence of predicate function for + component, in case component is a type no yet frozen, for which + predicate function has not been created yet. + +2018-12-11 Eric Botcazou + + * exp_aggr.adb (Packed_Array_Aggregate_Handled): Bail out for + any non-scalar type as component type of the array. + +2018-12-11 Eric Botcazou + + * einfo.ads (Is_Bit_Packed_Array): Fix values of component size. + (Is_Packed): Likewise. + * gcc-interface/utils.c (convert): Do not extract the value of a + justified modular type if the destination type is a regular + array. + * gcc-interface/decl.c (gnat_to_gnu_component_type): Pass + TYPE_DECL to validate_size wherever the array has packed + components. + +2018-12-11 Bob Duff + + * gnat1drv.adb (gnat1drv): Pass the correct Object value when + calling Write_ALI in the case of -gnatQ. + * gnatbind.adb (Gnatbind): Avoid silent failure; give an error + message. + +2018-12-11 Ed Schonberg + + * exp_unst.adb (Needs_Fat_Pointer): A fat pointer is required if + the entity has a private type whose full view is an + unconstrained array type. + (Rewrite_One_Ref): If the reference is to a static constant, use + its value rather than create a reference through the activation + record. This is more efficient, and furthermore indispensable if + the context requires a static constant, such as in a branch of a + case statement. + +2018-12-11 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): Apply + Dynamic_Predicate check to an object of an array type + initialized with an aggregate. + +2018-12-11 Hristian Kirtchev + + * freeze.adb (Add_To_Result): Move the ignored Ghost-specific + handling of freeze nodes to... + (Freeze_Entity): ...here. This ensures that the freeze nodes of + constructs that have recursive freezing are preserved when the + context is ignored Ghost, and the top level construct being + frozen is non-Ghost. + +2018-12-11 Ed Schonberg + + * uintp.ads, uintp.adb (UI_From_Integral): New generic function, + to simplify construction of Universal_Integer representations + from any Integer type. If type is small enough the code is + equivalent to a call to UI_To_Int with appropriate conversions; + otherwise the routine uses the existing mechanism of building a + vector of suitable integer values and calling Vector_To_Uint. + The routine must not be applied to a biased type. + +2018-12-11 Ed Schonberg + + * sem_ch3.adb (Build_Itype_Reference): Handle properly an itype + reference created for a function that is a compilation unit, for + example if the function builds in place an object of a limited + type. + +2018-12-11 Dmitriy Anisimkov + + * libgnat/g-socket.ads, libgnat/g-socket.adb: Fix duration + computations to be compatible with the type for socket timeouts + on Windows. + +2018-12-11 Gary Dismukes + + * exp_util.ads: Use preferred U.S. spelling of "honored". + * sem_spark.adb: Remove extra whitespace. + +2018-12-11 Hristian Kirtchev + + * exp_util.adb (Insert_Action): Add new formal parameter + Spec_Expr_OK. + (Insert_Actions): Add new formal parameter Spec_Expr_OK. Update + all calls to Insert_Actions where relevant. Honour an insertion + from a spec expression context when requested by the caller. + * exp_util.ads (Insert_Action): Add new formal parameter + Spec_Expr_OK. + (Insert_Actions): Add new formal parameter Spec_Expr_OK. + * freeze.adb (Add_To_Result): Force the insertion of the freeze + node even when the context is a spec expression. + +2018-12-11 Jerome Lambourg + + * vxaddr2line.adb, vxlink-bind.adb, vxlink-bind.ads, + vxlink-link.adb, vxlink-link.ads, vxlink-main.adb, vxlink.adb, + vxlink.ads: Remove. + * gcc-interface/Make-lang.in, gcc-interface/Makefile.in: Remove + bits for vxaddr2line. + +2018-12-11 Hristian Kirtchev + + * exp_aggr.adb, exp_ch7.adb, gnat1drv.adb, sem_ch10.adb, + sem_ch13.adb, sem_ch6.adb, sem_ch7.adb, sem_util.adb: Minor + reformatting. + +2018-12-11 Eric Botcazou + + * fe.h (Is_Atomic_Object): Declare. + (Is_Volatile_Object): Likewise. + * gcc-interface/trans.c (atomic_or_volatile_copy_required_p): New. + (Call_to_gnu): Generate a copy for an actual parameter passed by + reference if the conditions set forth by RM C.6(19) are met and + specificially deal with an atomic actual parameter. + +2018-12-11 Piotr Trojanek + + * sem_util.adb (Is_Subprogram_Stub_Without_Prior_Declaration): + Return False on stubs that complete a generic subprogram. + * sem_util.ads: Update corresponding comment. + +2018-12-11 Ed Schonberg + + * sem_ch4.adb (Analyze_Allocator): In GNATprove mode build a + subtype declaration if the allocator has a subtype indication + with a constraint. This allows additional proofs to be applied + to allocators that designate uninitialized constrained objects. + +2018-12-11 Yannick Moy + + * sem_util.adb (Has_Full_Default_Initialization): Consider + access types as having full default initialization. + +2018-12-11 Yannick Moy + + * gnat1drv.adb (Gnat1drv): Issue specific error message in + GNATprove mode when multiple file names on the command line. + * osint.adb, osint.ads (Dump_Command_Line_Source_File_Names): + New procedure to print file names on the command line. + +2018-12-11 Javier Miranda + + * exp_aggr.adb (Convert_To_Assignments): When gnerating C, do + not declare a temporary to initialize an aggregate assigned to + Out or In_Out parameters whose type has no discriminants. This + avoids stack overflow errors at runtime. + +2018-12-11 Ed Schonberg + + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Extend + algorithm to cover subprograms generated in nested loops and in + exception handlers, in order to build an explicit elaboration + procedure in more complex cases. + +2018-12-11 Jerome Lambourg + + * Makefile.rtl, gcc-interface/Makefile.in: Remove crtbe bits for + VxWorks. + * libgnat/system-vxworks-arm-rtp-smp.ads, + libgnat/system-vxworks-arm-rtp.ads, + libgnat/system-vxworks-arm.ads, + libgnat/system-vxworks-e500-kernel.ads, + libgnat/system-vxworks-e500-rtp-smp.ads, + libgnat/system-vxworks-e500-rtp.ads, + libgnat/system-vxworks-ppc-kernel.ads, + libgnat/system-vxworks-ppc-rtp-smp.ads, + libgnat/system-vxworks-ppc-rtp.ads, + libgnat/system-vxworks-ppc.ads, + libgnat/system-vxworks-x86-kernel.ads, + libgnat/system-vxworks-x86-rtp-smp.ads, + libgnat/system-vxworks-x86-rtp.ads, + libgnat/system-vxworks7-aarch64-rtp-smp.ads, + libgnat/system-vxworks7-aarch64.ads, + libgnat/system-vxworks7-arm-rtp-smp.ads, + libgnat/system-vxworks7-e500-kernel.ads, + libgnat/system-vxworks7-e500-rtp-smp.ads, + libgnat/system-vxworks7-e500-rtp.ads, + libgnat/system-vxworks7-ppc-kernel.ads, + libgnat/system-vxworks7-ppc-rtp-smp.ads, + libgnat/system-vxworks7-ppc-rtp.ads, + libgnat/system-vxworks7-ppc64-kernel.ads, + libgnat/system-vxworks7-ppc64-rtp-smp.ads, + libgnat/system-vxworks7-x86-kernel.ads, + libgnat/system-vxworks7-x86-rtp-smp.ads, + libgnat/system-vxworks7-x86-rtp.ads, + libgnat/system-vxworks7-x86_64-kernel.ads, + libgnat/system-vxworks7-x86_64-rtp-smp.ads: Remove pragma + Linker_Options for --specs. + * vx_crtbegin.c, vx_crtbegin.inc, vx_crtbegin_array.c, + vx_crtbegin_attr.c, vx_crtend.c, vxworks-gnat-crtbe-link.spec: + Remove. + +2018-12-11 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations, + Freeze_Entity_Checks): Process aspect Predicate in the same + fashion as aspect Dynamic_Predicate. + +2018-12-11 Eric Botcazou + + * gcc-interface/trans.c (elaborate_all_entities_for_package): + Skip aliasing subprograms. + +2018-12-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric + documentation for the Libadalang-based version. + +2018-12-11 Javier Miranda + + * exp_aggr.adb (In_Object_Declaration): Removed. + (Is_CCG_Supported_Aggregate): New subprogram that replaces + In_Object_Declaration extending its functionality to indicate if + an aggregate is in a context supported by the CCG backend. + +2018-12-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatstub + documentation for the Libadalang-based version. + * gnat_ugn.texi: Regenerate. + +2018-12-11 Ed Schonberg + + * sem_ch13.adb (Push_Type, Pop_Type): New procedures, used for + analysis of aspect expressions for record types, whose + components (not only discriminants) may be referenced in aspect + expressions. + (Analyze_Aspect_Specifications, Analyze_Aspects_At_Freeze_Point, + Analyze_Aspect_At_End-Of_Declarations, + Resolve_Aspect_Expressions): Use the new subprograms. + (Check_Aspect_At_End_Of_Declarations): Improve error message. + (Build_Predicate_Functions): Do not build their bodies in a + generic unit. + (Is_Derived_Type_With_Constraint): New subprogram to uncover and + reject aspect specificationss on types that appear after the + type is frozen. + * sem_ch13.ads (Push_Scope_And_Install_Discriminants, + Uninstall_Discriminants_And_Pop_Scope): Remove. + * sem_ch6.adb, sem_ch6.ads (Fully_Conformant_Expressions): + Additional parameter to improve error message on illegal aspect + specifications whose resolution differ between aspect + specification and freeze point. + * freeze.adb: Remove references to + Install/Uninstall_Discriminants. + +2018-12-11 Pierre-Marie de Rodat + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document the -fgnat-encodings switch. + * gnat_ugn.texi: Regenerate. + +2018-12-11 Justin Squirek + + * sem_ch10.adb (Analyze_Subunit): Modify conditional to fully + remove parent contexts from library-level subprogram bodies in + addition to package bodies. + +2018-12-11 Hristian Kirtchev + + * exp_prag.adb (Expand_Pragma_Initial_Condition): Do not + generate an Initial_Condition procedure and a call to it when + the associated pragma is ignored. + * sem_ch10.adb (Analyze_Compilation_Unit): Minor cleanup. + +2018-12-11 Eric Botcazou + + * fe.h (Debug_Generated_Code): Declare. + * gcc-interface/gigi.h (enum inline_status_t): Rename + is_disabled to is_default, is_enabled to is_requested and add + is_prescribed. + * gcc-interface/decl.c (inline_status_for_subprog): New function. + (gnat_to_gnu_entity) : Use it to get the + inlining status of the subprogram. + * gcc-interface/trans.c (gigi): Adjust to above renaming. + (build_raise_check): Likewise. + (Compilation_Unit_to_gnu): Likewise. + (gnat_to_gnu): Likewise. + * gcc-interface/utils.c (create_subprog_decl): Likewise. Deal + with is_prescribed status by setting + DECL_DISREGARD_INLINE_LIMITS. Do not set the + DECL_NO_INLINE_WARNING_P flag if Debug_Generated_Code is true. + +2018-12-03 Gary Dismukes + + * sem_aux.adb (Object_Type_Has_Constrained_Partial_View): Return + True for an untagged discriminated formal derived type when + referenced within a generic body (augments existing test for + formal private types). + * sem_util.adb (Is_Dependent_Component_Of_Mutable_Type): If the + prefix of the name is a qualified expression, retrieve the + operand of that. Add a test of whether the (possible) + dereference prefix is a variable, and also test whether that + prefix might just be of an access type (occurs in some implicit + dereference cases) rather than being an explicit dereference. + Retrieve the Original_Node of the object name's main prefix and + handle the possibility of that being a qualified expression. + Remove special-case code for explicit dereferences that don't + come from source. Add test for the renaming not being within a + generic body for proper determination of whether a formal access + type is known to be constrained (it is within a generic spec, + but not in the body). Fix an existing incorrect test for + renaming of a discriminant-dependent component of a untagged + generic formal type being within a generic body, adding test of + taggedness and calling In_Generic_Body (now properly checks for + cases where the renaming is in a nongeneric body nested within a + generic). Return False in cases where the selector is not a + component (or discriminant), which can occur for + prefixed-notation calls. + +2018-12-03 Ed Schonberg + + * sem_res.adb (Apply_Check): For array types, apply a length + check rather than a qualification, to avoid spurious errors when + the value of a dependend expression has a matching length but + different bounds from those of the type of the contect. + +2018-12-03 Hristian Kirtchev + + * libgnat/a-calend.adb: Update the number of leap seconds. Add + the hard time values for year 2015 and 2016. + +2018-12-03 Gary Dismukes + + * exp_ch3.adb, libgnarl/s-taasde.adb, libgnarl/s-taenca.adb, + libgnarl/s-tarest.adb, libgnarl/s-tasini.adb, + libgnarl/s-taskin.ads, libgnarl/s-tasren.adb, + libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb: Spelling fixes and + minor reformatting. + +2018-12-03 Eric Botcazou + + * exp_aggr.adb (Convert_To_Positional): Use + Static_Array_Aggregate to decide whether to set + Compile_Time_Known_Aggregate on an already flat aggregate. + (Expand_Array_Aggregate): Remove test on + Compile_Time_Known_Aggregate that turns out to be dead and + simplify. + (Is_Static_Component): New predicate extracted from... + (Static_Array_Aggregate): ...here. Test neither Is_Tagged_Type + nor Is_Controlled for the type, but test whether the component + type has discriminants. Use the Is_Static_Component predicate + consistently for the positional and named cases. + +2018-12-03 Eric Botcazou + + * freeze.adb (Freeze_Entity): Do not freeze the partial view of + a private subtype if its base type is also private with delayed + freeze before the full type declaration of the base type has + been seen. + * sem_ch7.adb (Preserve_Full_Attributes): Add assertion on + freeze node. + +2018-12-03 Eric Botcazou + + * exp_ch3.adb (Build_Record_Init_Proc): Inherit an + initialization procedure if it is present, even if it is null. + +2018-12-03 Patrick Bernardi + + * libgnarl/s-taskin.ads (ATC_Level_Base): Redefine to span from + -1 to Max_ATC_Nesting so that 0 represents no ATC nesting and -1 + represented a completed task. To increase readability, new + constants are introduced to represent key ATC nesting levels. + Consequently, Level_No_Pending_Abort replaces + ATC_Level_Infinity. ATC_Level related definitions now + documented. + (Ada_Task_Control_Block): The default initialization of + components ATC_Nesting_Level and Pending_ATC_Level now use new + ATC_Level_Base constants. Comments improved + * libgnarl/s-taskin.adb (Initialize): Improve the initialisation + of the first element of the Entry_Calls array to facilitate + better maintenance. + * libgnarl/s-taasde.ads: Update comment. + * libgnarl/s-taasde.adb, libgnarl/s-taenca.adb, + libgnarl/s-tasren.adb, libgnarl/s-tassta.adb, + libgnarl/s-tasuti.ads, libgnarl/s-tasuti.adb: Use new + ATC_Level_Base constants. + * libgnarl/s-tarest.adb (Create_Restricted_Task): Improve the + initialisation of the first element of the task's Entry_Calls + array to facilitate better maintenance. + * libgnarl/s-tasini.ads (Locked_Abort_To_Level): Update + signature to accept ATC_Level_Base. + * libgnarl/s-tasini.adb (Locked_Abort_To_Level): Update + signature to accept ATC_Level_Base. Use new ATC_Level_Base + constants and only modify the aborting task's Entry_Calls array + if any entry call is happening. + * libgnarl/s-tposen.adb (Protected_Single_Entry_Call): Reference + the first element of the task's Entry_Calls array via 'First + attribute to facilitate better maintenance. + +2018-12-03 Eric Botcazou + + * einfo.adb (Write_Entity_Info): Don't take Scope of Standard + package. + * sem_ch4.adb (Remove_Abstract_Operations): Add missing blank + lines to -gnatdv output. + * sem_type.adb (Write_Overloads): Take Entity of entity names + only. + +2018-12-03 Hristian Kirtchev + + * checks.adb, exp_aggr.adb, exp_attr.adb, exp_ch3.adb, + exp_util.adb, exp_util.ads, repinfo.adb, sem_attr.adb, + sem_ch3.adb, sem_res.adb, sem_util.adb: Minor reformatting. + +2018-12-03 Ed Schonberg + + * sem_ch3.adb (Complete_Private_Subtype): Enhance comment. + +2018-12-03 Olivier Hainque + + * gcc-interface/lang.opt (fopenacc): New option for Ada. + * gcc-interface/misc.c (gnat_handle_option): Handle it. + * gcc-interface/trans.c (struct loop_info_d): Add OMP + attributes. + (Iterate_Acc_Clause_Arg, Acc_gnat_to_gnu): New functions, + helpers for OpenACC pragmas processing in Pragma_to_gnu. + (Acc_Var_to_gnu, Acc_Reduc_Var_to_gnu, Acc_Reduc_to_gnu): + Likewise. + (Acc_Size_Expr_to_gnu, Acc_Size_List_to_gnu): Likewise. + (Pragma_Acc_Data_to_gnu): Likewise. + (Pragma_to_gnu): Handle Pragma_Acc_Loop, Pragma_Acc_Data, + Pragma_Acc_Kernels and Pragma_Acc_Parallel. + (Acc_Loop_to_gnu, Regular_Loop_to_gnu): New functions. Helpers + for ... + (Loop_Statement_to_gnu): Rework to handle OpenACC loops. + +2018-12-03 Olivier Hainque + + * gcc-interface/targtyps.c (MALLOC_OBSERVABLE_ALIGNMENT): Set to + 2 * POINTER_SIZE. + +2018-12-03 Ed Schonberg + + * sem_res.adb (Set_Slice_Subtype): The index type of a slice is + constrained. + +2018-11-26 Matthias Klose + + PR ada/88191 + * libgnarl/s-linux__alpha.ads: Define SIGSYS. + +2018-11-19 Alexandre Oliva + + PR ada/81878 + * gcc-interface/config-lang.in (lang_requires): Set to "c c++" + when gnattools wants it. + +2018-11-19 Eric Botcazou + + * gcc-interface/cuintp.c (UI_From_gnu): Remove code for 32-bit hosts. + +2018-11-15 Eric Botcazou + + * gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the switch + -fnon-call-exceptions passed on the command line in -gnatp mode. + +2018-11-14 Ed Schonberg + + * exp_util.ads, exp_util.adb: Change the profile of + Silly_Boolean_Array_Xor_Test, adding a formal that can be a copy + of the right opersnd. This prevents unnesting anomalies when + that operand contains uplevel references. + * exp_ch4.adb (Expand_Boolean_Operation): Use this new profile. + * exp_pakd.adb (Expand_Packed_Boolean_Operator): Ditto. + +2018-11-14 Patrick Bernardi + + * libgnarl/a-intnam__linux.ads: Add SIGSYS. + * libgnarl/s-linux__alpha.ads, libgnarl/s-linux__android.ads, + libgnarl/s-linux__hppa.ads, libgnarl/s-linux__mips.ads, + libgnarl/s-linux__riscv.ads, libgnarl/s-linux__sparc.ads, + libgnarl/s-linux__x32.ads: Rename SIGLTHRRES, SIGLTHRCAN and + SIGLTHRDBG to SIG32, SIG33 and SIG34 as their names are + implementation specific. + * libgnarl/s-osinte__linux.ads, libgnarl/s-linux.ads: Add + SIGSYS. Move SIG32, SIG33 and SIG34 from the unmasked list to + the reserved list. + +2018-11-14 Eric Botcazou + + * exp_aggr.adb (Is_Static_Element): New predicate extracted + from... + (Check_Static_Components): ...here. Call Is_Static_Element on + each element of the component association list, if any. + (Flatten): Duplicate the expression of an others choice only if + it is static or is an aggregate which can itself be flattened. + +2018-11-14 Olivier Hainque + + * sigtramp-vxworks-target.inc: Fix stack checking test errors in + ACATS, now that GCC can emit CFI rules referring to sp in + absence of a frame pointer. + +2018-11-14 Eric Botcazou + + * exp_aggr.adb (Check_Static_Components): Remove dead test. + (Flatten): Likewise. Move comment around. + +2018-11-14 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Null_Procedure): Capture Ghost and + SPARK-related global state at the start of the routine. Set the + Ghost mode of the completed spec if any. Restore the saved + Ghost and SPARK-related global state on exit from the routine. + +2018-11-14 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst + (-gnatR): Document new -gnatR4 level. + * gnat_ugn.texi: Regenerate. + * opt.ads (List_Representation_Info): Bump upper bound to 4. + * repinfo.adb: Add with clause for GNAT.HTable. + (Relevant_Entities_Size): New constant. + (Entity_Header_Num): New type. + (Entity_Hash): New function. + (Relevant_Entities): New set implemented with GNAT.HTable. + (List_Entities): Also list compiled-generated entities present + in the Relevant_Entities set. Consider that the Component_Type + of an array type is relevant. + (List_Rep_Info): Reset Relevant_Entities for each unit. + * switch-c.adb (Scan_Front_End_Switches): Add support for -gnatR4. + * switch-m.adb (Normalize_Compiler_Switches): Likewise + * usage.adb (Usage): Likewise. + +2018-11-14 Javier Miranda + + * exp_disp.adb (Expand_Interface_Thunk): Extend handling of + renamings of the predefined equality primitive. + (Make_Secondary_DT): When calling Expand_Interface_Thunk() pass + it the primitive, instead of its Ultimate_Alias; required to + allow the called routine to identify renamings of the predefined + equality operation. + +2018-11-14 Hristian Kirtchev + + * freeze.adb (Check_Pragma_Thread_Local_Storage): New routine. A + variable with suppressed initialization has no initialization + for purposes of the pragma. + (Freeze_Object_Declaration): Remove variable + Has_Default_Initialization as it is no longer used. Use routine + Check_Pragma_Thread_Local_Storage to verify the semantics of + pragma Thread_Local_Storage. + +2018-11-14 Ed Schonberg + + * sem_res.adb (Resolve_If_Expression): Verify that the subtypes + of all dependent expressions obey the constraints of the + expected type for the if-expression. + (Analyze_Expression): Only add qualificiation to the dependent + expressions when the context type is constrained. Small + adjustment to previous patch. + +2018-11-14 Eric Botcazou + + * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Don't + register a compile-time warning or error for 'Alignment or 'Size + of an entity declared in a generic unit. + +2018-11-14 Justin Squirek + + * sem_ch8.adb (Use_One_Package): Add test for out-of-scope + homonyms. + +2018-11-14 Ed Schonberg + + * exp_ch3.adb: (Expand_N_Object_Declaration): If the expression + is a limited aggregate its resolution is delayed until the + object declaration is expanded. + * sem_ch3.adb: (Analyze_Object_Declaration): If the expression + is a limited aggregate and the declaration has a following + address clause indicate that resolution of the aggregate (which + must be built in place) must be delayed. + +2018-11-14 Bob Duff + + * sem_attr.adb (To_Address): Simplify setting of + Is_Static_Expression. Remove second (unconditional) call to + Set_Is_Static_Expression -- surely it's not static if the + operand is not. Initialize Static on declaration. Do not try + to fold 'To_Address, even though it's static. + * exp_attr.adb (To_Address): Preserve Is_Static_Expression. + * sinfo.ads, sem_eval.ads, sem_eval.adb (Is_Static_Expression, + Is_OK_Static_Expression, Raises_Constraint_Error): Simplify + documentation. There was too much repetition and redundancy. + +2018-11-14 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): Use the + Actual_Subtype to preserve information about a constant + initialized with a non-static entity that is known to be valid, + when the type of the entity has a narrower range than that of + the nominal subtype of the constant. + * checks.adb (Determine_Range): If the expression is a constant + entity that is known-valid and has a defined Actual_Subtype, use + it to determine the actual bounds of the value, to enable + additional optimizations. + +2018-11-14 Hristian Kirtchev + + * back_end.adb, checks.adb, exp_ch3.adb, exp_ch4.adb, + exp_ch7.adb, exp_disp.adb, exp_unst.adb, exp_util.adb, + freeze.adb, sem_ch13.adb, sem_ch6.adb, sem_ch7.adb, + sem_prag.adb, sem_spark.adb, sem_util.adb: Minor reformatting. + +2018-11-14 Hristian Kirtchev + + * exp_ch4.adb (Find_Aliased_Equality): New routine. + (Find_Equality): Reimplemented. + (Is_Equality): New routine. + +2018-11-14 Hristian Kirtchev + + * ghost.adb (Ghost_Entity): New routine. + (Mark_And_Set_Ghost_Assignment): Reimplemented. + * sem_ch5.adb (Analyze_Assignment): Assess whether the target of + the assignment is an ignored Ghost entity before analyzing the + left hand side. + * sem_ch8.adb (Find_Direct_Name): Update the subprogram + signature. Do not generate markers and references when they are + not desired. + (Nvis_Messages): Do not execute when errors are not desired. + (Undefined): Do not emit errors when they are not desired. + * sem_ch8.ads (Find_Direct_Name): Update the subprogram + signature and comment on usage. + * sem_util.adb (Ultimate_Prefix): New routine. + * sem_util.ads (Ultimate_Prefix): New routine. + +2018-11-14 Justin Squirek + + * sem_ch7.adb (Uninstall_Declarations): Add conditional to avoid + uninstalling potential visibility during freezing on enumeration + literals. + +2018-11-14 Jerome Lambourg + + * env.c: Do not include crt_externs.h on iOS, as it does not + exist there. This is also true for the iPhone Simulator SDK. + +2018-11-14 Ed Schonberg + + * exp_ch7.adb (Check_Unnesting_In_Declarations): New procedure + to transform blocks that appear in the declarative part of a + package body into subprograms if they contain generated + subprograms (such as finalization routines). Needed to generate + the proper upward references in unnesting mode. + +2018-11-14 Ed Schonberg + + * freeze.adb (Freeze_Fixed_Point_Type): If the given low bound + of the type is less than the nearest model number, do not expand + the range of the type to include the model number below the + bound. Similar adjustment if the upper bound is larger than the + nearest model number. + +2018-11-14 Hristian Kirtchev + + * checks.adb (Install_Primitive_Elaboration_Check): Do not + create the check when exceptions cannot be used. + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Do not raise + Program_Errror when exceptions cannot be used. Analyze the + generated code with all checks suppressed. + * exp_ch7.adb (Build_Finalizer): Remove the declaration of + Exceptions_OK. + (Make_Deep_Array_Body): Remove the declaration of Exceptions_OK. + (Make_Deep_Record_Body): Remove the declaration of + Exceptions_OK. + (Process_Transients_In_Scope): Remove the declaration of + Exceptions_OK. + * exp_util.adb (Exceptions_In_Finalization_OK): Renamed to + Exceptions_OK. + * exp_util.ads (Exceptions_In_Finalization_OK): Renamed to + Exceptions_OK. + +2018-11-14 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Op_Eq): Remove duplicated code and use + routine Find_Equality instead. + (Find_Equality): New routine. + +2018-11-14 Piotr Trojanek + + * sem_util.adb (First_From_Global_List): Do not expect + N_Selected_Component in the Global contract; simplify assertion + with Nam_In. + +2018-11-14 Piotr Trojanek + + * sem_ch12.adb (Instantiate_Object): Set + Corresponding_Generic_Association on generic actuals with + default expression. + * sinfo.ads (Corresponding_Generic_Association): Update comment. + +2018-11-14 Hristian Kirtchev + + * exp_ch4.adb (Expand_Concatenate): Use the proper routine to + set the need for debug info. + * exp_dbug.adb (Build_Subprogram_Instance_Renamings): Use the + proper routine to set the need for debug info. + * exp_prag.adb (Expand_Pragma_Initial_Condition): Use the proper + routine to set the need for debug info. + * exp_util.adb (Build_DIC_Procedure_Declaration): Use the proper + routine to set the need for debug info. + (Build_Invariant_Procedure_Declaration): Use the proper routine + to set the need for debug info. + * ghost.adb (Record_Ignored_Ghost_Node): Add statements as a + whole class to the list of top level ignored Ghost nodes. + * sem_util.adb (Set_Debug_Info_Needed): Do not generate debug + info for an ignored Ghost entity. + +2018-11-14 Piotr Trojanek + + * bindgen.adb, exp_cg.adb, repinfo.adb, sprint.adb: Minor reuse + Cancel_Special_Output where possible. + +2018-11-14 Piotr Trojanek + + * exp_dbug.ads, sem_util.ads: Minor fixes in comments. + +2018-11-14 Arnaud Charlet + + * adabkend.adb (Scan_Back_End_Switches): Handle -gx switches + explicitly. + +2018-11-13 Eric Botcazou + + * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions + for the runtime on platforms where System.Machine_Overflow is true. + +2018-11-08 Eric Botcazou + + * fe.h (Suppress_Checks): Declare. + * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions + only if checks are not suppressed and -faggressive-loop-optimizations + only if they are. + * gcc-interface/trans.c (struct loop_info_d): Remove has_checks and + warned_aggressive_loop_optimizations fields. + (gigi): Do not clear warn_aggressive_loop_optimizations here. + (Raise_Error_to_gnu): Do not set has_checks. + (gnat_to_gnu) : Remove support for aggressive + loop optimizations. + +2018-11-08 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Remove obsolete kludge. + * gcc-interface/utils.c (make_packable_type): Set TYPE_PACKED on the + new type but do not take into account the setting on the old type for + the new fields. Rename a local variable. + (finish_record_type): Clear DECL_BIT_FIELD_TYPE on a variant part at + offset 0, if any. + (create_field_decl): Tweak comment. + +2018-10-22 Eric Botcazou + + * gcc-interface/utils.c (unchecked_convert): Use local variables for + the biased and reverse SSO attributes of both types. + Further extend the processing of integral types in the presence of + reverse SSO to all scalar types. + +2018-10-22 Eric Botcazou + + * gcc-interface/trans.c (Pragma_to_gnu) : Use + a simple memory constraint in all cases. + + * gcc-interface/lang-specs.h: Bump copyright year. + +2018-10-17 David Malcolm + + * gcc-interface/Make-lang.in (selftest-ada): New. + +2018-10-09 Eric Botcazou + + * exp_ch3.adb (Is_Null_Statement_List): New predicate. + (Build_Array_Init_Proc): Use it to find out whether the + initialization procedure Is_Null_Init_Proc; if so, set + Warnings_Off on the parameter. + (Build_Init_Procedure): Likewise. + (Init_Formals): Use an in/out first parameter only for + unconstrained arrays and for records either containing or built + for proteced types or task types; use an out parameter in all + the other cases. + * fe.h (Is_Init_Proc): Declare. + * gcc-interface/decl.c (type_requires_init_of_formal): Do not + return true for a discriminant in an unchecked union. + (gnat_to_gnu_param): Do not create a PARM_DECL for the Out + parameter of an initialization procedure. + +2018-10-09 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : If + this is not a definition, retrieve the expression in all cases + even if we are just annotating types. + * gcc-interface/trans.c (gnat_to_gnu): Also translate Size + attribute for constrained types in this mode. + +2018-10-09 Eric Botcazou + + * adaint.c (__gnat_get_executable_suffix_ptr): Add new line. + (__gnat_locate_exec): Check that HOST_EXECUTABLE_SUFFIX is not + empty before doing a string search for it. + * socket.c (ATTRIBUTE_UNUSED): Define. + (__gnat_disable_sigpipe): Add ATTRIBUTE_UNUSED on parameter. + * terminals.c (ATTRIBUTE_UNUSED): Move around. + (__gnat_setup_child_communication): Add ATTRIBUTE_UNUSED on + parameter. + (__gnat_send_header): Add ATTRIBUTE_UNUSED on parameters. + +2018-10-09 Yannick Moy + + * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Rewrite + pragmas as null statements in GNATprove mode. + +2018-10-09 Eric Botcazou + + * exp_ch6.adb (Add_Call_By_Copy_Code): Initialize the temporary + made for an Out parameter if the formal type has discriminants. + +2018-10-09 Maroua Maalej + + * sem_spark.adb (Check_Declaration): fix bug related to non + access object permissions. + +2018-10-09 Doug Rupp + + * libgnat/a-ncelfu.ads: Fix name in header to match package. + +2018-10-09 Eric Botcazou + + * exp_disp.adb (Make_Disp_Asynchronous_Select_Spec): Set + Warnings_Off on the B out parameter. + +2018-10-09 Eric Botcazou + + * einfo.ads: Small comment fix. + +2018-10-09 Eric Botcazou + + * sem_ch7.adb (Has_Referencer): Add comment for the + N_Freeze_Entity case. Do not rely on + Has_Referencer_Of_Non_Subprograms to clear the Is_Public flag on + subprogram entities. + +2018-10-09 Ed Schonberg + + * exp_unst.adb (In_Synchronized_Call): Handle properly private + types whose full views are synchronized types, in order to + recognize generated subprograms whose bodies must be considered + reachable even if no direct calls to them are visible in the + source. + +2018-10-09 Ed Schonberg + + * exp_ch4.adb (Expand_Modular_Op): When expanding an operation + on nonbinary modular types, convert the opersnds to an integer + type that is large enough to hold the modulus of the type, which + may be larger than Integer'Last. + +2018-10-09 Ed Schonberg + + * exp_unst.adb (Unnest_Subprogram): When an uplevel reference + is to an unconstrained formal, the 'Access reference that is + created to initialize the corresponding component of the + activation record must be wrapped in an unchecked conversion to + the generated type of the component. Otherwise, spurious suvtype + conformance errors will be generated when the code is within an + instantiation and the type of the formal is a formal type of the + enclosing generic. Note that during unnesting there is no simple + way to determine that the code appears within an instance + because ther is no scope stack. + +2018-10-09 Eric Botcazou + + * gcc-interface/decl.c (type_requires_init_of_formal): New + predicate. + (gnat_to_gnu_param): Use it to determine whether a PARM_DECL + must be created for an Out parameter passed by copy. + +2018-10-09 Arnaud Charlet + + * libgnat/a-coboho.ads (Storage_Element): Fix a typo. + +2018-10-09 Claire Dross + + * libgnat/a-cfinve.ads: Remove default value for + Max_Size_In_Storage_Elements as it was not supported in SPARK. + +2018-10-09 Ed Schonberg + + * exp_ch6.adb (Add_Call_By_Copy_Node, + Add_Simple_Call_By_Copy_Node, Expand_Call_Helper): Reset + Is_True_Constant on entities used as Out or In_Out parameters in + calls. + +2018-10-09 Ed Schonberg + + * exp_unst.adb (Unnest_Subprogram): Do not load System to obtain + the Address entity unless an activation record is being built. + Removes useless with_clauses for System when nested subprograms + do not have uplevel references, and therefore do not need + activation records. + +2018-10-09 Ed Schonberg + + * sem_ch6.adb (Fully_Conformant_Expressions): Handle properly + the conformance check on an aspect expression that includes a + call to an instance of Unchecked_Conversion, or more generally a + call to an intrinsic operation. + +2018-10-09 Eric Botcazou + + * repinfo.adb: Remove with/use clause for Stand. + (List_Mechanisms): List the mechanism of functions only. + +2018-10-09 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Correct spelling of + --eol switch. Document the language-version switches. Update + description for --no-exception. + +2018-10-09 Vasiliy Fofanov + + * libgnat/s-os_lib.ads (Normalize_Pathname): Fix incorrect + comment. + +2018-10-09 Arnaud Charlet + + * vxlink.adb: Remove pragma Annotate, no longer needed. + +2018-10-09 Ed Schonberg + + * checks.adb (Apply_Type_Conversion_Checks): Use GNATprove_Mode + rather than SPARK_mode in order to preserve the Do_Range_Check + flag for verification purposes. + +2018-10-09 Ed Schonberg + + * exp_aggr.adb (Expand_Array_Aggregate): If it is not possible + to build in place an aggregate with component associations, set + the Warnings_Off flag on the generated temporary, to prevent + spurious warnings from the backend when compiling with the + -Wuninitialized gcc flag. + +2018-09-30 Alexandre Oliva + + * gcc-interface/lang-specs.h (default_compilers): When given + fcompare-debug-second, adjust auxbase like cc1, and pass + gnatd_A. + * gcc-interface/misc.c (flag_compare_debug): Remove variable. + (gnat_post_options): Do not set it. + * lib-writ.adb (flag_compare_debug): Remove import. + (Write_ALI): Do not test it. + +2018-09-28 Eric Botcazou + Pierre-Marie de Rodat + + * gcc-interface/decl.c (is_cplusplus_method): Do not require C++ + convention on Interfaces. + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Try to create a + bona-fide thunk and hand it over to the middle-end. + (get_controlling_type): New function. + (use_alias_for_thunk_p): Likewise. + (thunk_labelno): New static variable. + (make_covariant_thunk): New function. + (maybe_make_gnu_thunk): Likewise. + * gcc-interface/utils.c (finish_subprog_decl): Set DECL_CONTEXT of the + result DECL here instead of... + (end_subprog_body): ...here. + +2018-09-27 Martin Sebor + + * gcc-interface/utils.c (make_packable_type): Introduce a temporary + to avoid -Wnonnull. + (unchecked_convert): Same. + +2018-09-26 Elisa Barboni + + * sem_prag.adb (Check_Refined_Global_Item): Improve error + message. + +2018-09-26 Thomas Quinot + + * sem_ch13.adb (Inherit_Aspects_At_Freeze_Point): For a + representation item that is an N_Aspect_Definition, retrieve the + entity it applies to using the Entity attribute. + +2018-09-26 Justin Squirek + + * sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition + to check for unmarked subprogram references coming from + renamings. + +2018-09-26 Arnaud Charlet + + * back_end.adb (Scan_Compiler_Arguments): Store -G xxx switches. + +2018-09-26 Yannick Moy + + * errout.ads: Update comment for insertion character '?'. + * inline.adb: Use simple insertion character '?' for GNATprove + info messages. + * sem_res.adb (Resolve_Call): Issue an info message on inlining + in GNATprove mode. + +2018-09-26 Ed Schonberg + + * checks.adb (Apply_Type_Conversion_Checks): Do not generate a + range check on the expression of the conversion if it involves a + fixed-point type, as such conversions are handled specially + during expansion. + * exp_ch4.adb (Expand_N_Type_Conversion): In a conversion from + Fixed to Integer, use the base type of the expression to ensure + that the caller will generate the proper constraint check when + needed. + +2018-09-26 Maroua Maalej + + * sem_spark.adb (Check_Loop_Statement): Fix a bug related to + loop exit environment. + (Check_Statement): fixing a bug when comparing the source and + target in an assignment statement. + +2018-09-26 Hristian Kirtchev + + * sem_ch12.adb (Instantiate_Package_Body): Capture and restore + the full compilation context. + (Instantiate_Subprogram_Body): Capture and restore the full + compilation context. + +2018-09-26 Yannick Moy + + * debug.adb: Add use for -gnatd_f switch. + * inline.adb (Cannot_Inline): Only issue info message for + failure to inline in GNATprove mode when switch -gnatd_f is + used. + +2018-09-26 Javier Miranda + + * exp_disp.adb (Expand_Interface_Conversion): No displacement of + the pointer needed when the type of the operand is an interface + type that maches the target type and we are compiling under + configurable runtime. Adding also documentation explaining why + this cannot be done when compiling with the full runtime. + * exp_intr.adb: Update comment. + +2018-09-26 Hristian Kirtchev + + * sem_ch5.adb (Wrap_Loop_Statement): Annotate as No_Return. + +2018-09-26 Ed Schonberg + + * exp_util.adb (Make_Predicate_Call): Use OK_Convert_To when + applying a predicate check to prevent spurious errors when + private ancestors are involved. + +2018-09-26 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Allocator): Ensure that the use of the + secondary stack does not clash with restriction + No_Secondary_Stack. + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Ensure that + the use of the secondary stack does not clash with restriction + No_Secondary_Stack. + * sem_ch5.adb (Analyze_Loop_Statement): Wrap the loop in a block + prior to analysis in order to either provide a local scope for + an iterator, or ensure that the secondary stack is properly + managed. + (Check_Call): Account for the case where the tree may be + unanalyzed or contain prior errors. + (Has_Call_Using_Secondary_Stack): Renamed to Has_Sec_Stack_Call. + Update all uses of the subprogram. + (Prepare_Loop_Statement): New routine. + +2018-09-26 Javier Miranda + + * sem_res.adb (Resolve_Actuals): If the formal is a class-wide + type conversion then do not skip resolving and expanding the + conversion; required to displace the pointer to the object and + reference the dispatch table associated with the target + interface type. + +2018-09-26 Hristian Kirtchev + + * libgnat/g-dynhta.adb (Prepend_Or_Replace): Update the number + of key-value pairs in the hash table only when adding a brand + new pair. + +2018-09-26 Sergey Rybin + + * doc/gnat_ugn/gnat_utility_programs.rst: Add note about + processing of aggregate projects in gnatmetric and gnatstub. + +2018-09-26 Hristian Kirtchev + + * contracts.adb, exp_unst.adb, exp_util.adb, gnat1drv.adb, + opt.ads, par-prag.adb, sem_ch3.adb, sem_ch5.adb, sem_prag.adb, + sinfo.ads, snames.ads-tmpl: Minor reformatting. + +2018-09-26 Hristian Kirtchev + + * gcc-interface/Make-lang.in: Add unit GNAT.Sets to the list of + front end sources. + * impunit.adb: Add unit GNAT.Sets to the list of predefined + units. + * Makefile.rtl: Add unit GNAT.Sets to the list of non-tasking + units. + * libgnat/g-sets.adb: New unit. + * libgnat/g-sets.ads: New unit. + * libgnat/g-dynhta.adb (Minimum_Size): Decrease to 8 in order to + allow for small sets. Update all occurrences of Table_Locked to + Iterated. + (Ensure_Unlocked): Query the number of iterators. + (Find_Node): Use the supplied equality. + (Is_Empty): New routine. + (Lock): Update the number of iterators. + (Prepend_Or_Replace): Use the supplied equality. + (Size): Update the return type. + (Unlock): Update the number of iterators. + * libgnat/g-dynhta.ads: Update all occurrences of Table_Locked + to Iterated. Rename formal subprogram Equivalent_Keys to "=". + (Bucket_Range_Type, Pair_Count_Type): Remove types. + (Not_Created, Table_Locked, Iterator_Exhausted): Remove + exceptions. + (Hash_Table): Update to store the number of iterators rather + than locks. + (Is_Empty): New routine. + (Size): Update the return type. + * libgnat/g-lists.adb: Update all occurrences of List_Locked to + Iterated. + (Ensure_Unlocked): Query the number of iterators. + (Length): Remove. + (Lock): Update the number of iterators. + (Size): New routine. + (Unlock): Update the number of iterators. + * libgnat/g-lists.ads: Update all occurrences of List_Locked to + Iterated. + (Element_Count_Type): Remove type. + (Not_Created, Table_Locked, Iterator_Exhausted): Remove + exceptions. + (Linked_List): Update type to store the number of iterators + rather than locks. + (Length): Remove. + (Size): New routine. + * libgnat/gnat.ads (Bucket_Range_Type): New type. + (Iterated, Iterator_Exhausted, and Not_Created): New exceptions. + +2018-09-26 Javier Miranda + + * checks.adb (Install_Null_Excluding_Check): Do not add + null-excluding checks when the tree may not be fully decorated. + This patch cascade errors. + +2018-09-26 Gary Dismukes + + * sem_ch3.adb (Analyze_Object_Declaration): Remove test for + Comes_From_Source, which prevented implicit conversions from + being applied to anonymous access-to-subprogram formals in + constant declartions that arise from instance associations for + generic formal objects. Add RM and AARM references to comment. + +2018-09-26 Olivier Hainque + + * opt.ads (OpenAcc_Enabled): New flag. False by default. True + when OpenACC pragmas are requested to be honored, when -fopenacc + is found on the command line. + * back_end.adb (Scan_Compiler_Arguments): Set OpenACC_Enabled if + -fopenacc is seen on the command line. + * sinfo.adb, sinfo.ads (Is_OpenAcc_Environment): New + flag/predicate on Loop statements which embed an Acc_Kernels, + Acc_Parallel or Acc_Data pragma. + (Is_OpenAcc_Loop): New flag/predicate on Loop statements which + embed an Acc_Loop pragma. + (Set_Is_OpenAcc_Environment, Set_Is_OpenAcc_Loop): Setters for + the new flags. + * par-prag.adb (Prag): Handle Acc_Data, Acc_Loop, Acc_Parallel + and Acc_Kernels pragmas. Nothing to do here, all handled by + sem_prag. + * sem_prag.adb (Acc_First, Acc_Next, + Validate_Acc_Condition_Clause, Validate_Acc_Data_Clause, + Validate_Acc_Int_Expr_Clause, Validate_Acc_Int_Expr_List_Clause, + Validate_Acc_Loop_Collapse, Validate_Acc_Loop_Gang, + Validate_Acc_Loop_Vector, Validate_Acc_Loop_Worker, + Validate_Acc_Name_Reduction, Validate_Acc_Size_Expressions): New + helper for Analyze_Pragma, to handle OpenACC pragmas. + (Analyze_Pragma): Handle Acc_Data, Acc_Loop, Acc_Parallel and + Acc_Kernels pragmas. + * sem_ch5.adb (Disable_Constant): Unset Is_True_Constant on + variable entity, action for ... + (Disable_Constants): Helper for Analyze_Loop_Statement, to ... + (Analyze_Loop_Statement): Disable True_Constant on variables + referenced within an OpenACC environment. + * snames.ads-tmpl: Declare Name_Ids for the OpenACC directives + and clauses we can handle. Remove an exraneous whitespace before + columns, preventing line length overflow in the generated spec + with Ids now reaching beyond 999. + * doc/gnat_rm/implementation_defined_pragmas.rst: Document + pragma Acc_Parallel, Acc_Loop, Acc_Kernels and Acc_Data. + * gnat_rm.texi: Regenerate. + +2018-09-26 Ed Schonberg + + * sem_ch3.adb (Is_Onown_Limited): A derived type whose parent P + is a derived limited record is not itself limited if P is a + derived limited interface. + +2018-09-26 Eric Botcazou + + * sem_ch7.adb (Has_Referencer): Remove Top_Level parameter and + add In_Nested_Instance and + Has_Outer_Referencer_Of_Non_Subprograms parameters. Rename + Has_Non_Subprograms_Referencer variable into + Has_Referencer_Of_Non_Subprograms and initialize it with the new + third parameter. Adjust recursive calls and to the renaming. + Replace test on Top_Level with test on In_Nested_Instance to + decide whether to clear the Is_Public flag on entities. + (Hide_Public_Entities): Adjust call to Has_Referencer. + +2018-09-26 Eric Botcazou + + * exp_disp.adb (Expand_Interface_Conversion): Use Present test. + (Expand_Interface_Thunk): Propagate debug info setting from + target. + * exp_util.ads (Find_Interface_Tag): Adjust comment. + * exp_util.adb (Find_Interface_Tag): Remove assertions of + success. + * sem_util.adb (Is_Variable_Size_Record): Only look at + components and robustify the implementation. + * fe.h (Find_Interface_Tag): Declare. + (Is_Variable_Size_Record): Likewise. + +2018-09-26 Thomas Quinot + + * exp_util.adb (Make_CW_Equivalent_Type): Propagate bit order + and scalar storage order from root type to classwide equivalent + type, to prevent rejection of the equivalent type by the + freezing circuitry. + +2018-09-26 Justin Squirek + + * sem_ch5.adb (Analyze_Iterator_Specification): Add conditional + to freeze called functions within iterator specifications during + full analysis. + (Preanalyze_Range): Minor typo fix. + +2018-09-26 Ed Schonberg + + * sem_ch6.adb (Analyze_Function_Return): If the return type has + a dynamic_predicate, apply a Predicate_Check to the expression, + given that it is implicitly converted to the return type. + Exclude case expressions from the check, because in this context + the expression is expanded into individual return statements. + +2018-09-26 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : In + -gnatct mode, process the discriminants only for a definition. + +2018-09-26 Eric Botcazou + + * repinfo.adb (List_Record_Layout): Be prepared for JSON output. + (List_Record_Info): Use the flat representation for record + subtypes in the JSON format. + +2018-09-26 Justin Squirek + + * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add + documentation and an extra conditional check for RCI units so + that generated ali files will list the spec only instead of a + body when a body is not found. + +2018-09-26 Eric Botcazou + + * gcc-interface/gigi.h (error_gnat_node): Delete. + * gcc-interface/trans.c (error_gnat_node): Likewise. + (gigi): Replace it with Current_Error_Node. + (gnat_to_gnu): Likewise. + * gcc-interface/utils.c (rest_of_subprog_body_compilation): + Likewise. + * gcc-interface/misc.c (internal_error_function): Do not set it. + +2018-09-26 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust + code retrieving the address when a clause has already been + processed. + * gcc-interface/trans.c (gnat_to_gnu) + : For an object with a Freeze + node, build a meaningful expression. + +2018-09-26 Arnaud Charlet + + * gnat1drv.adb (Adjust_Global_Switches): -gnatd_A sets + Opt.Disable_ALI_File. + * debug.adb: Update debug flags documentation. + +2018-09-26 Ed Schonberg + + * contracts.adb (Analyze_Entry_Or_Subprogram_Contract): The + analysis of preconditions specified by pragmas (rather than + aspects) is not delayed, and therefore expressions functions + that are completions do not need special handling during + expansion. + +2018-09-26 Ed Schonberg + + * exp_unst.adb: Fix handling of up level references for entries. + +2018-09-26 Ed Schonberg + + * contracts.adb (Expand_Subprogram_Contract, + Process_Preconditions_For): Apply Freeze_Expr_Types to the + expression for a precondition of an expression function that is + a completion, when the completion appears in the private part + and the declaration it completes is in the visible part of the + same package. + * freeze.adb (Freeze_Expr_Types): Do not establish the scope of + the operation if it is already installed, as will be the case + when called to analyze the contract oc the subprogram (which + happens when generating code inside the subprogram body). + +2018-09-26 Maroua Maalej + + * sem_spark.adb (Check_Param_In, Setup_Parameter_Or_Global): + Change the operation associated to assigning to an IN parameter. + In SPARK, IN access-to-variable is an observe operation for a + function, and borrow operation for a procedure. + +2018-09-26 Arnaud Charlet + + * vxlink.adb: Minor reformatting. + +2018-09-26 Gary Dismukes + + * exp_ch9.adb, layout.adb, sem_attr.adb, sem_res.adb: Fix + miscellaneous typos. + +2018-09-26 Jerome Lambourg + + * vxlink.adb: Kill a CodePeer warning. + +2018-09-24 Eric Botcazou + + PR ada/87396 + * fe.h (Get_Attribute_Definition_Clause): Use 'unsigned char' instead + of 'char' as the type of the second parameter. + +2018-09-13 Eric Botcazou + + * Makefile.rtl (arm% linux-gnueabi%): Always set EH_MECHANISM to -arm. + +2018-09-13 Eric Botcazou + + PR ada/81103 + * terminals.c: Do not include termio.h. + +2018-08-27 Martin Liska + + * gcc-interface/decl.c (update_profile): Use new function + fndecl_built_in_p and remove check for FUNCTION_DECL if + possible. + * gcc-interface/gigi.h (call_is_atomic_load): Likewise. + * gcc-interface/utils.c (gnat_pushdecl): Likewise. + +2018-08-23 Giuliano Belinassi + + * exp_unst.ads: Fix typo 'exapnded' to 'expanded'. + +2018-08-21 Hristian Kirtchev + + * checks.adb, contracts.adb, exp_aggr.adb, exp_attr.adb, + exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_unst.adb, + exp_util.adb, freeze.adb, gnatlink.adb, layout.adb, + lib-writ.adb, lib-xref-spark_specific.adb, sem_ch13.adb, + sem_ch3.adb, sem_ch6.adb, sem_res.adb, sem_util.adb, sinfo.ads, + sprint.adb: Minor reformatting. + +2018-08-21 Jerome Lambourg + + * vxlink-bind.adb, vxlink-bind.ads, vxlink-link.adb, + vxlink-link.ads, vxlink-main.adb, vxlink.adb, vxlink.ads: Add a + new tool vxlink to handle VxWorks constructors in DKMs. + * gcc-interface/Makefile.in: add rules to build vxlink + +2018-08-21 Ed Schonberg + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper, Mask_Type): + Refine the handling of freezing types for expression functions + that are not completions, when analyzing the generated body for + the function: the body is inserted at the end of the enclosing + declarative part, and its analysis may freeze types declared in + the same scope that have not been frozen yet. + +2018-08-21 Ed Schonberg + + * sem_ch6.adb: Remove Freeze_Expr_Types. + * freeze.ads, freeze.adb (Freeze_Expr_Types): Moved from + sem_ch6.adb, and extended to handle other expressions that may + contain unfrozen types that must be frozen in their proper + scopes. + * contracts.adb (Analyze_Entry_Or_Subprogram_Contract): If the + contract is for the generated body of an expression function + that is a completion, traverse the expressions for pre- and + postconditions to freeze all types before adding the contract + code within the subprogram body. + +2018-08-21 Hristian Kirtchev + + * sem_ch10.adb: Remove the with and use clause for unit Ghost. + (Analyze_With_Clause): Do not mark a with clause which mentions + an ignored Ghost code for elimination. + +2018-08-21 Javier Miranda + + * lib-writ.adb (Write_Unit_Information): Handle pragmas removed + by the expander. + +2018-08-21 Ed Schonberg + + * sem_ch6.adb (Check_Synchronized_Overriding): The conformance + between an overriding protected operation and the overridden + abstract progenitor operation requires subtype conformance; + requiring equality of return types in the case of a function is + too restrictive and leads to spurious errors when the return + type is a generic actual. + +2018-08-21 Ed Schonberg + + * exp_ch9.adb (Expand_N_Timed_Entry_Call, + Expand_Conditional_Entry_Call): Use Reset_Scopes_Of to set + properly the scope of all entities created in blocks generated + by the expansion of these constructs. + +2018-08-21 Ed Schonberg + + * sem_ch13.adb (Build_Predicate_Functioss): Apply + Reset_Quantified_Variables_Scope after predicate function has + been analyzed, so that the scope can be reset on the generated + loop statements that have replaced the quantified expressions. + +2018-08-21 Bob Duff + + * einfo.ads, einfo.adb (Private_View, Shadow_Entities): Remove + obsolete code. + +2018-08-21 Maroua Maalej + + * sem_spark.adb (Check_Call_Statement): Check global and formal + parameter permissions at call sites. + (Check_Callable_Body): Assume permissions on globals and + parameters depending on their modes then analyse the body + operations. + (Check_Declaration): Consider both deep (including elementary + access) object declarations and normal variables. First check + whether the deep object is of Ownership Aspec True or not, then, + depending on its initialization, assign the appropriate state. + Check related to non access type variables deal with + initialization value permissions. + (Check_Expression): Check nodes used in the expression being + analyzed. + (Check_Globals): Call by Check_Call_Statement to perform the + check on globals. + (Check_List): Call Check_Node on each element of the list. + (Check_Loop_Statement): Check the Iteration_Scheme and loop + statements. + (Check_Node): Main traversal procedure to check safe pointer usage. + (Check_Package_Body): Check subprogram's body. + (Check_Param_In): Take a formal and an actual parameter and + Check the permission of every in-mode parameter. + (Check_Param_Out): Take a formal and an actual parameter and + check the state of out-mode and in out-mode parameters. + (Check_Statement): Check statements other than procedure call. + (Get_Perm, Get_Perm_Or_Tree, Get_Perm_Tree): Find out the state + related to the given name. + (Is_Deep): Return True if an object is of access type or has + subfields of access type. + (Perm_Error, Perm_Error_Subprogram_End): Add an error message + whenever the found state on the given name is different from the + one expected (in the statement being analyzed). + (Process_Path): Given an operation and a current state, call + Perm_Error if there is any mismatch. + (Return_Declarations, Return_Globals, Return_The_Global): Check + the state of a given name at the end of the subprogram. These + procedures may change depending on how we shall finally deal + with globals and the rhs state in a move operation. + (Set_Perm_Extensions, Set_Perm_Prefixes_Borrow, + Set_Perm_Prefixes, Setup_Globals, Setup_Parameter_Or_Global, + Setup_Parameters): Set up the new states to the given node and + up and down the tree after an operation. + (Has_Ownership_Aspect_True): This function may disappear later + when the Ownership Aspect will be implemented in the FE. + +2018-08-21 Ed Schonberg + + * sem_res.adb (Resolve_Call): Resolve correctly a parameterless + call that returns an access type whose designated type is the + component type of an array, when the function has no defaulted + parameters. + +2018-08-21 Yannick Moy + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document entries of the target parametrization file. + * gnat_ugn.texi: Regenerate. + +2018-08-21 Ed Schonberg + + * sem_attr.adb: Set scope of elaboration flag for 'Access. + +2018-08-21 Ed Schonberg + + * sprint.adb: Add guard on printing aspects. + +2018-08-21 Javier Miranda + + * exp_cg.adb (Generate_CG_Output): Handle calls removed by the + expander. + +2018-08-21 Ed Schonberg + + * layout.adb: Do not set size of access subprogram if unnesting. + +2018-08-21 Ed Schonberg + + * freeze.adb: Remove warnings for access to subprograms when + unnesting is active. + +2018-08-21 Ed Schonberg + + * exp_aggr.adb (Expand_Array_Aggregate): If the component type + is limited, the array must be constructed in place, so set flag + In_Place_Assign_OK_For_Declaration accordingly. This prevents + improper copying of an array of tasks during initialization. + +2018-08-21 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Always suppress an + unchecked conversion around the actual for an In parameter + passed by copy. + +2018-08-21 Eric Botcazou + + * exp_util.adb (Is_Possibly_Unaligned_Object): For the case of a + selected component inherited in a record extension and subject + to a representation clause, retrieve the position and size from + the original record component. + +2018-08-21 Ed Schonberg + + * sem_util.ads, sem_util.adb (New_External_Entity): Type of + Suffix_Index must be Int, not Nat, so that a negative value can + be used to generate a unique name for an external object, as + specified in Tbuild.New_External_Name. + (Scope_Within): Handle private type whose completion is a + synchronized type (For unnesting). + * itypes.ads, itypes.adb (Create_Itype): Ditto + * sem_ch3.adb (Constrain_Corresponding_Record): Generate a + unique name for the created subtype, because there may be + several discriminated tasks present in the same scope, and each + needs its distinct corresponding record subtype. + +2018-08-21 Yannick Moy + + * doc/gnat_ugn/gnat_and_program_execution.rst: Update + documentation of dimensionality analysis. + * gnat_ugn.texi: Regenerate. + * Makefile.rtl, impunit.adb: Consider the new units. + * libgnat/s-dfmkio.ads, libgnat/s-dfmopr.ads, + libgnat/s-diflmk.ads: New units based on Float. + * libgnat/s-dilomk.ads, libgnat/s-dlmkio.ads, + libgnat/s-dlmopr.ads: New units based on Long_Float. + * libgnat/s-dmotpr.ads: Rename to libgnat/s-dgmgop.ads and turn + into an instance of + System.Dim.Generic_Mks.Generic_Other_Prefixes. + * libgnat/s-dimmks.ads: Rename to libgnat/s-digemk.ads and turn + into an instance of System.Dim.Generic_Mks. + +2018-08-21 Hristian Kirtchev + + * impunit.adb: Add g-lists to the set of non-implementation + units. + * libgnat/g-lists.adb, libgnat/g-lists.ads: New unit. + * Makefile.rtl: Add g-lists to the set of non-tasking units. + * gcc-interface/Make-lang.in: Add g-lists to the set of files + used by gnat1. + +2018-08-21 Ed Schonberg + + * exp_ch9.adb (Reset_Scopes): Do not recurse into type + declarations when resetting the scope of entities declared the + procedures generated for entry bodies and accept alternatives. + Use the entity of the procedure declaration, not its body, as + the new scope. + +2018-08-21 Hristian Kirtchev + + * einfo.adb (Elaboration_Entity): Include entries and entry + families in the set of legal entities. + (Elaboration_Entity_Required): Include entries and entry + families in the set of legal entities. + (Set_Elaboration_Entity): Include entries and entry families in + the set of legal entities. + (Set_Elaboration_Entity_Required): Include entries and entry + families in the set of legal entities. + (Write_Field13_Name): Update the output of attribute + Elaboration_Entity. + * einfo.ads: Attributes Elaboration_Entity and + Elaboration_Entity_Required now apply to entries and entry + families. + +2018-08-21 Arnaud Charlet + + * set_targ.adb: Mark some CodePeer message as Intentional. + +2018-08-21 Ed Schonberg + + * sem_res.adb (Resolve_Call): Force the freezing of an + expression function that is called to provide a default value + for a defaulted discriminant in an object initialization. + +2018-08-21 Hristian Kirtchev + + * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: New package + Dynamic_HTable. + +2018-08-21 Javier Miranda + + * checks.ads (Determine_Range): Adding documentation. + * checks.adb (Determine_Range): Don't deal with enumerated types + with non-standard representation. + (Convert_And_Check_Range): For conversion of enumeration types + with non standard representation to an integer type perform a + direct conversion to the target integer type. + +2018-08-21 Piotr Trojanek + + * lib-xref.ads, lib-xref-spark_specific.adb + (Enclosing_Subprogram_Or_Library_Package): Now roughtly works + for pragmas that come from aspect specifications. + +2018-08-21 Pierre-Marie de Rodat + + * sa_messages.ads, sa_messages.adb: New source files. + +2018-08-03 Pierre-Marie de Rodat + + Reverts + 2018-07-06 Jim Wilson + + * Make-generated.in (treeprs.ads): Use $(GNATMAKE) instead of gnatmake. + (einfo.h, sinfo.h, stamp-snames, stamp-nmake): Likewise. + * gcc-interface/Makefile.in (xoscons): Likewise. + +2018-07-31 Alexandre Oliva + Olivier Hainque + + * gcc-interface/trans.c: Include debug.h. + (file_map): New static variable. + (gigi): Set it. Create decl_to_instance_map when needed. + (Subprogram_Body_to_gnu): Pass gnu_subprog_decl to... + (Sloc_to_locus): ... this. Add decl parm, map it to instance. + * gcc-interface/gigi.h (Sloc_to_locus): Adjust declaration. + +2018-07-31 Arnaud Charlet + + * clean.adb, gnatchop.adb, gnatfind.adb, gnatls.adb, + gnatmake.ads, gnatxref.adb, make.adb, make.ads, make_util.ads, + sfn_scan.adb, vxaddr2line.adb, xeinfo.adb, xoscons.adb, + xr_tabls.adb, xref_lib.adb: Address CodePeer messages. + +2018-07-31 Arnaud Charlet + + * gnatlink.adb: Fix potential Constraint_Error if + Library_Version is too long. + +2018-07-31 Arnaud Charlet + + * sem_elab.adb: Remove duplicate condition detected by CodePeer. + +2018-07-31 Ed Schonberg + + * exp_unst.adb (Subp_Index): In the case of a protected + operation, the relevant entry is the generated + protected_subprogram_body into which the original body is + rewritten. Assorted cleanup and optimizations. + +2018-07-31 Ed Schonberg + + * exp_attr.adb (Expand_Attribute, case Fixed_Value): Set the + base type of the result to ensure that proper overflow and range + checks are generated. If the target is a fixed-point tyoe, + generate the required overflow and range checks explicitly, + rather than relying on Apply_Type_Conversion_Checks, which might + simply set the Do_Range_Check flag and rely on the backend to + add the check. + +2018-07-31 Hristian Kirtchev + + * sem_res.adb (Resolve_Call): Establish a transient scope to + manage the secondary stack when the designated type of an + access-to-subprogram requires it. + +2018-07-31 Ed Schonberg + + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): To find local + subprograms in the elaboration code for a package body, recurse + through nested statement sequences because a compiler-generated + procedure may appear within a condition statement. + +2018-07-31 Ed Schonberg + + * exp_ch6.adb (Expand_Protected_Subprogram_Call): Handle + properly a protected call that includes a default parameter that + is a call to a protected function of the same type. + +2018-07-31 Justin Squirek + + * lib-writ.adb (Write_With_Lines): Modfiy the generation of + dependencies within ali files so that source unit bodies are + properly listed even if said bodies are missing. Perform legacy + behavior in GNATprove mode. + * lib-writ.ads: Modify documentation to reflect current behavior. + +2018-07-31 Eric Botcazou + + * libgnarl/s-osinte__solaris.ads (upad64_t): New private type. + (mutex_t): Use it for 'lock' and 'data' components. + (cond_t): Likewise for 'data' and use single 'flags' component. + +2018-07-31 Justin Squirek + + * exp_ch5.adb (Make_Field_Assign): Force temporarily generated + objects for assignment of overlaid user objects to be renamings + instead of constant declarations. + +2018-07-31 Hristian Kirtchev + + * exp_ch9.adb (Analyze_Pragmas): New routine. + (Build_Private_Protected_Declaration): Code clean up. Relocate + relevant aspects and pragmas from the stand-alone body to the + newly created spec. Explicitly analyze any pragmas that have + been either relocated or produced by the analysis of the + aspects. + (Move_Pragmas): New routine. + * sem_prag.adb (Find_Related_Declaration_Or_Body): Recognize the + case where a pragma applies to the internally created spec for a + stand-along subprogram body declared in a protected body. + +2018-07-31 Gary Dismukes + + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Replace + calls to Current_Scope in three assertions with calls to + Current_Subprogram. + +2018-07-31 Ed Schonberg + + * sem_eval.adb (Check_Non_Static_Context): Do not warn on an + integer literal greater than the upper bound of + Universal_Integer'Last when expansion is disabled, to avoid a + spurious warning over ranges involving 64-bit modular types. + +2018-07-31 Arnaud Charlet + + * einfo.adb (Write_Entity_Flags): Also print + Is_Activation_Record flag. + +2018-07-31 Piotr Trojanek + + * exp_aggr.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb, + repinfo.adb, sem_ch9.adb: Minor replace Ekind membership tests + with a wrapper routine. + +2018-07-31 Piotr Trojanek + + * ali.adb (Known_ALI_Lines): Remove 'F' as a prefix for lines + related to the FORMAL analysis done by GNATprove. + +2018-07-31 Javier Miranda + + * sem.ads (Inside_Preanalysis_Without_Freezing): New global + counter. + * sem.adb (Semantics): This subprogram has now the + responsibility of resetting the counter before analyzing a unit, + and restoring its previous value before returning. + * freeze.adb (Freeze_Entity): Do not freeze if we are + preanalyzing without freezing. + * sem_res.adb (Preanalyze_And_Resolve): Set & restore + In_Preanalysis_Without_Freezing. + +2018-07-31 Ed Schonberg + + * sem_ch4.adb (Traverse_Homonyms): Consider generic actuals that + may rename a matching class-wide operation only if the renaming + declaration for that actual is in an enclosing scope (i.e. + within the corrresponding instance). + +2018-07-31 Hristian Kirtchev + + * checks.adb, contracts.adb, exp_aggr.adb, exp_ch5.adb, + exp_disp.adb, make.adb, sem_ch4.adb, sem_eval.adb, sem_res.adb, + usage.adb: Minor reformatting. + +2018-07-31 Bob Duff + + * sem_res.adb (Resolve_Allocator): Do not complain about the + implicit allocator that occurs in the expansion of a return + statement for a build-in-place function. + +2018-07-20 Martin Sebor + + PR middle-end/82063 + * gcc-interface/misc.c (gnat_handle_option): Change function argument + to HOST_WIDE_INT. + +2018-07-17 Eric Botcazou + + * gcc-interface/decl.c (choices_to_gnu): Rename parameters. Deal with + an operand of Character type. Factor out range generation to the end. + Check that the bounds are literals and convert them to the type of the + operand before building the ranges. + * gcc-interface/utils.c (make_dummy_type): Minor tweak. + (make_packable_type): Propagate TYPE_DEBUG_TYPE. + (maybe_pad_type): Likewise. + +2018-07-17 Ed Schonberg + + * sem_ch4.adb (Try_Object_Operation): Handle properly a prefixed call + in an instance, when the generic parameters include an interface type + and a abstract operation of that type, and the actuals in the instance + include an interface type and a corresponding abstract operation of it, + with a different name than the corresponding generic subprogram + parameter. + +2018-07-17 Arnaud Charlet + + * sem_eval.adb (Rewrite_In_Raise_CE): Keep the original reason in more + cases. + +2018-07-17 Arnaud Charlet + + * checks.adb (Apply_Division_Check): Add provision for floating-point + checks. + +2018-07-17 Ed Schonberg + + * exp_aggr.adb (Component_OK_For_Backend): If an array component of the + enclosing record has a bound that is out of range (and that has been + rewritten as a raise statement) the aggregate is not OK for any back + end, and should be expanded into individual assignments. + +2018-07-17 Piotr Trojanek + + * atree.adb (Relocate_Node): Simplify with Is_Rewrite_Substitution. + +2018-07-17 Piotr Trojanek + + * sem_util.ads (Denotes_Same_Object): Likewise. + * sem_warn.adb (Warn_On_Overlapping_Actuals): Fix RM rule references. + +2018-07-17 Eric Botcazou + + * exp_disp.adb (Make_Tags): When the type has user-defined primitives, + build the access type that is later used by Build_Get_Prim_Op_Address + as pointing to a subtype of Ada.Tags.Address_Array. + +2018-07-17 Patrick Bernardi + + * libgnat/s-memory__mingw.adb: Remove. + * Makefile.rtl: Remove s-memory.adb target pair from the Cygwin/Mingw32 + section. + +2018-07-17 Hristian Kirtchev + + * frontend.adb (Frontend): The removal of ignored Ghost code must be + the last semantic operation performed on the tree. + +2018-07-17 Hristian Kirtchev + + * frontend.adb (Frontend): Update the call to Register_Config_Switches. + * inline.ads: Add new component Config_Switches to record + Pending_Body_Info which captures the configuration state of the pending + body. Remove components Version, Version_Pragma, SPARK_Mode, and + SPARK_Mode_Pragma from record Pending_Body_Info because they are + already captured in component Config_Switches. + * opt.adb (Register_Opt_Config_Switches): Rename to + Register_Config_Switches. + (Restore_Opt_Config_Switches): Rename to Restore_Config_Switches. + (Save_Opt_Config_Switches): Rename to Save_Config_Switches. This + routine is now a function, and returns the saved configuration state as + an aggregate to avoid missing an attribute. + (Set_Opt_Config_Switches): Rename to Set_Config_Switches. + * opt.ads (Register_Opt_Config_Switches): Rename to + Register_Config_Switches. + (Restore_Opt_Config_Switches): Rename to Restore_Config_Switches. + (Save_Opt_Config_Switches): Rename to Save_Config_Switches. This + routine is now a function. + (Set_Opt_Config_Switches): Rename to Set_Config_Switches. + * par.adb (Par): Update the calls to configuration switch-related + subprograms. + * sem.adb (Semantics): Update the calls to configuration switch-related + subprograms. + * sem_ch10.adb (Analyze_Package_Body_Stub): Update the calls to + configuration switch-related subprograms. + (Analyze_Protected_Body_Stub): Update the calls to configuration + switch-related subprograms. + (Analyze_Subprogram_Body_Stub): Update calls to configuration + switch-related subprograms. + * sem_ch12.adb (Add_Pending_Instantiation): Update the capture of + pending instantiation attributes. + (Inline_Instance_Body): Update the capture of pending instantiation + attributes. It is no longer needed to explicitly manipulate the SPARK + mode. + (Instantiate_Package_Body): Update the restoration of the context + attributes. + (Instantiate_Subprogram_Body): Update the restoration of context + attributes. + (Load_Parent_Of_Generic): Update the capture of pending instantiation + attributes. + (Set_Instance_Env): Update the way relevant configuration attributes + are saved and restored. + +2018-07-17 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Deal with + more rvalues in the expression of a renaming. + +2018-07-17 Eric Botcazou + + * gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Define for + METHOD_TYPE too. + (TYPE_RETURN_UNCONSTRAINED_P): Likewise. + (TYPE_CI_CO_LIST): Likewise. + * gcc-interface/gigi.h (is_cplusplus_method): Delete. + (fntype_same_flags_p): Adjust comment. + * gcc-interface/decl.c (Has_Thiscall_Convention): Delete. + (gnat_to_gnu_entity) : Do not set the "thiscall" + attribute directly. + (is_cplusplus_method): Make static and adjust head comment. + (gnat_to_gnu_param): Return a pointer for the "this" parameter of + C++ constructors. + (gnat_to_gnu_subprog_type): Turn imported C++ constructors into their + callable form. Generate a METHOD_TYPE node for imported C++ methods. + Set param_list at the very end of the processing. + (substitute_in_type) : New case. + * gcc-interface/misc.c (gnat_print_type) : Likewise. + (gnat_type_hash_eq): Accept METHOD_TYPE. + * gcc-interface/trans.c (Identifier_to_gnu): Deal with METHOD_TYPE. + (Attribute_to_gnu): Likewise. + (Call_to_gnu): Likewise. + (process_freeze_entity): Likewise. + * gcc-interface/utils.c (create_subprog_decl): Adjust head comment. + (fntype_same_flags_p): Likewise. + +2018-07-17 Piotr Trojanek + + * inline.adb (Expand_Inlined_Call): Remove extra parentheses. + +2018-07-17 Eric Botcazou + + * exp_disp.adb (Gen_Parameters_Profile): Make the _Init parameter an + In/Out parameter. + (Set_CPP_Constructors): Adjust comment accordingly. + +2018-07-17 Bob Duff + + * exp_disp.adb (Build_Class_Wide_Check): Return early if the + precondition is supposed to be ignored. + +2018-07-17 Ed Schonberg + + * sem_ch6.adb (Check_Untagged_Equality): Extend check to operations + declared in the same scope as the operand type, when that scope is a + procedure. + +2018-07-17 Ed Schonberg + + * exp_unst.adb (Unnest_Subprograms): Do nothing if the expander is not + active. Don't use Get_Actual_Subtype for record subtypes. Ignore + rewritten identifiers and uplevel references to bounds of types that + come from the original type reference. + +2018-07-17 Hristian Kirtchev + + * exp_ch13.adb, exp_ch7.adb, exp_unst.adb, freeze.adb, + libgnat/s-os_lib.adb, sem_ch3.adb, sem_ch3.ads, sem_ch5.adb, + sem_eval.adb, sem_res.adb, sem_util.adb: Minor reformatting. + +2018-07-17 Javier Miranda + + * exp_ch13.adb (Expand_N_Freeze_Entity): Handle subtype declared for an + iterator. + * freeze.adb (Freeze_Expression): Handle freeze of an entity defined + outside of a subprogram body. This case was previously handled during + preanalysis; the frozen entities were remembered and left pending until + we continued freezeing entities outside of the subprogram. Now, when + climbing the parents chain to locate the correct placement for the + freezeing node, we check if the entity can be frozen and only when no + enclosing node is marked as Must_Not_Freeze the entity is frozen. + * sem_ch3.ads (Preanalyze_Default_Expression): Declaration moved to the + package body. + * sem_ch3.adb (Preanalyze_Default_Expression): Code adjusted to invoke + the new subprogram Preanalyze_With_Freezing_And_Resolve. + * sem_ch6.adb (Preanalyze_Formal_Expression): New subprogram. + (Analyze_Expression_Function, Process_Formals): Invoke + Preanalyze_Formal_Expression instead of Preanalyze_Spec_Expression + since the analysis of the formals may freeze entities. + (Analyze_Subprogram_Body_Helper): Skip building the body of the + class-wide clone for eliminated subprograms. + * sem_res.ads, sem_res.adb (Preanalyze_And_Resolve): New subprogram. + Its code is basically the previous version of this routine but extended + with an additional parameter which is used to specify if during + preanalysis we are allowed to freeze entities. If the new parameter is + True then the subtree root node is marked as Must_Not_Freeze and no + entities are frozen during preanalysis. + (Preanalyze_And_Resolve): Invokes the internal version of + Preanalyze_And_Resolve without entity freezing. + (Preanalyze_With_Freezing_And_Resolve): Invokes the internal version of + Prenalyze_And_Resolve with freezing enabled. + +2018-07-17 Piotr Trojanek + + * einfo.ads, libgnat/g-comlin.ads: Minor change "ie" to "i.e." in docs + and comments. + +2018-07-17 Justin Squirek + + * libgnat/s-os_lib.adb (Argument_String_To_List): Fix trimming of + whitespace. + +2018-07-17 Hristian Kirtchev + + * sem_prag.adb (Has_Visible_State): Do not consider constants as + visible state because it is not possible to determine whether a + constant depends on variable input. + (Propagate_Part_Of): Add comment clarifying the behavior with respect + to constant. + +2018-07-17 Yannick Moy + + * gnat1drv.adb (Gnat1drv): Do not issue warning about exception not + being propagated in GNATprove mode. + +2018-07-17 Dmitriy Anisimkov + + * libgnat/g-socket.adb, libgnat/g-socket.ads: Reorganize and make + public components of Inet_Addr_Type. Introduce public binary + operations. + +2018-07-17 Javier Miranda + + * exp_ch7.adb (Make_Transient_Block): When determining whether an + enclosing scope already handles the secondary stack, take into account + transient blocks nested in a block that do not manage the secondary + stack and are located within a loop. + +2018-07-17 Ed Schonberg + + * sem_util.adb (Enclosing_Subprogram): Protected entries and task + entries must be treated separately: task entries are within the + enclosing subprogram of the task type, while protected entries are + transformed into the corresponding Protected_Body_Subprogram, which is + the enclosing_subprogram of any subprogram declared within the entry + body. + +2018-07-17 Hristian Kirtchev + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Add missing + sections on -gnatH and -gnatJ compiler switches. + * gnat_ugn.texi: Regenerate. + +2018-07-17 Hristian Kirtchev + + * alloc.ads: Update the allocation metrics of the ignored Ghost nodes + table. + * atree.adb: Add a soft link for a procedure which is invoked whenever + an ignored Ghost node or entity is created. + (Change_Node): Preserve relevant attributes which come from the Flags + table. + (Mark_New_Ghost_Node): Record a newly created ignored Ghost node or + entity. + (Rewrite): Preserve relevant attributes which come from the Flags + table. + (Set_Ignored_Ghost_Recording_Proc): New routine. + * atree.ads: Define an access-to-suprogram type for a soft link which + records a newly created ignored Ghost node or entity. + (Set_Ignored_Ghost_Recording_Proc): New routine. + * ghost.adb: Remove with and use clause for Lib. Remove table + Ignored_Ghost_Units. Add new table Ignored_Ghost_Nodes. + (Add_Ignored_Ghost_Unit): Removed. + (Initialize): Initialize the table which stores ignored Ghost nodes. + Set the soft link which allows Atree.Mark_New_Ghost_Node to record an + ignored Ghost node. + (Is_Ignored_Ghost_Unit): Use the ultimate original node when checking + an eliminated ignored Ghost unit. + (Lock): Release and lock the table which stores ignored Ghost nodes. + (Mark_And_Set_Ghost_Assignment): Record rather than propagate ignored + Ghost nodes. + (Mark_And_Set_Ghost_Procedure_Call): Record rather than propagate + ignored Ghost nodes. + (Mark_Ghost_Clause): Record rather than propagate ignored Ghost nodes. + (Mark_Ghost_Declaration_Or_Body): Record rather than propagate ignored + Ghost nodes. + (Mark_Ghost_Pragma): Record rather than propagate ignored Ghost nodes. + (Propagate_Ignored_Ghost_Code): Removed. + (Record_Ignored_Ghost_Node): New routine. + (Remove_Ignored_Ghost_Code): Reimplemented. + (Remove_Ignored_Ghost_Node): New routine. + (Ultimate_Original_Node): New routine. + * ghost.ads (Check_Ghost_Completion): Removed. + * sem_ch8.adb (Analyze_Use_Package): Remove obsolete code. Mark a use + package clause as ignored Ghost if applicable. + * sem_util.adb (Is_Body_Or_Package_Declaration): Reimplemented. + +2018-07-17 Javier Miranda + + * sem_ch5.adb (Has_Call_Using_Secondary_Stack): Moved to library level + to reuse it. + (Analyze_Loop_Statement): Wrap the loop in a block when the evaluation + of the loop iterator relies on the secondary stack. + +2018-07-17 Piotr Trojanek + + * sem_util.adb (Next_Actual): If the parent is a N_Null_Statement, + which happens for inlined calls, then fetch the next actual from the + original AST. + +2018-07-17 Ed Schonberg + + * einfo.ads: Update documentation for Scalar_Range. + +2018-07-17 Piotr Trojanek + + * lib-xref-spark_specific.adb (Create_Heap): Attach the HEAP entity to + the Standard package. + +2018-07-17 Piotr Trojanek + + * einfo.adb (Is_Wrapper_Package): Remove extra parentheses. + +2018-07-17 Ed Schonberg + + * sem_util.adb (Enclosing_Subprogram): Handle properly entries, and + synchronized types that are completions of limited types or private + extensions. + (Scope_Within): Handle properly accept statements in task bodies. + +2018-07-17 Hristian Kirtchev + + * sem_prag.adb (Has_Visible_State): Do not consider generic formals + because they are not part of the visible state space. Add constants to + the list of acceptable visible states. + (Propagate_Part_Of): Do not consider generic formals when propagating + the Part_Of indicator. + * sem_util.adb (Entity_Of): Do not follow renaming chains which go + through a generic formal because they are not visible for SPARK + purposes. + * sem_util.ads (Entity_Of): Update the comment on usage. + +2018-07-17 Ed Schonberg + + * sem_util.adb (Gather_Components): A discriminant of an ancestor may + have been constrained by a later ancestor, so when looking for the + value of that hidden discriminant we must examine the stored constraint + of other ancestors than the immediate parent type. + +2018-07-17 Hristian Kirtchev + + * exp_ch6.adb (Build_Heap_Or_Pool_Allocator): Ensure that scoping + constructs and entities within receive new entities when replicating a + tree. + (Expand_N_Extended_Return_Statement): Ensure that scoping constructs + and entities within receive new entities when replicating a tree. + * sem_util.adb (New_Copy_Tree): Add new formal Scopes_In_EWA_OK. + (Visit_Entity): Visit entities within scoping constructs inside + expression with actions nodes when requested by the caller. Add blocks, + labels, and procedures to the list of entities which need replication. + * sem_util.ads (New_Copy_Tree): Add new formal Scopes_In_EWA_OK. Update + the comment on usage. + +2018-07-17 Arnaud Charlet + + * doc/gnat_ugn/about_this_guide.rst, + doc/gnat_ugn/gnat_and_program_execution.rst: Remove references to gcov. + * gnat_ugn.texi: Regenerate. + +2018-07-16 Hristian Kirtchev + + * contracts.adb (Analyze_Contracts): Add specialized processing for + package instantiation contracts. + (Analyze_Package_Contract): Remove the verification of a missing + Part_Of indicator. + (Analyze_Package_Instantiation_Contract): New routine. + * contracts.ads (Analyze_Package_Contract): Update the comment on + usage. + * sem_prag.adb (Check_Missing_Part_Of): Ensure that the entity of the + instance is being examined when trying to determine whether a package + instantiation needs a Part_Of indicator. + +2018-07-16 Hristian Kirtchev + + * einfo.adb, exp_ch7.adb, exp_ch9.adb, exp_unst.adb, inline.adb, + sem.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_eval.adb, + sem_util.adb: Minor reformatting. + +2018-07-16 Arnaud Charlet + + * frontend.adb: Only unnest subprograms if no previous errors were + detected. + +2018-07-16 Ed Schonberg + + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Handle loops that + contain blocks in the elaboration code for a package body. Create the + elaboration subprogram wrapper only if there is a subprogram + declaration in a block or loop. + +2018-07-16 Ed Schonberg + + * exp_ch4.adb (Expand_Set_Membership): Use New_Copy_Tree to perform a + deep copy of the left operand when building each conjuct of the + expanded membership operation, to avoid sharing nodes between them. + This sharing interferes with the unnesting machinery and is generally + undesirable. + +2018-07-16 Ed Schonberg + + * exp_unst.adb (Visit_Node): Handle 'Address references that are + calls. + +2018-07-16 Ed Schonberg + + * exp_unst.adb (Visit_Node): Handle the semantic of Storage_Pool field + in relevant nodes: Allocate, Free, and return statements. + +2018-07-16 Ed Schonberg + + * sem_ch12.adb (Analyze_Package_Instantiation): Handle properly an + instance that carries an aspect Default_Storage_Pool that overrides a + default storage pool that applies to the generic unit. The aspect in + the generic unit was removed before copying it in the instance, rather + than removing it from the copy of the aspects that are appended to the + aspects in the instance. + +2018-07-16 Ed Schonberg + + * einfo.adb (Set_Is_Uplevel_Referenced_Entity): Flag can appear on + loop parameters. + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Handle subprogram + bodies. + * exp_ch9.adb (Reset_Scopes_To): Set the scopes of entities local to an + entry body to be the corresponding generated subprogram, for correct + analysis of uplevel references. + * exp_unst.adb (Visit_Node): Handle properly binary and unary operators + Ignore pragmas, fix component associations. + (Register_Subprograms): Subprograms in synchronized types must be + treated as reachable. + +2018-07-16 Hristian Kirtchev + + * sem_util.adb (Check_No_Hidden_State): Ignore internally-generated + states and variables. + +2018-07-16 Piotr Trojanek + + * sinfo.ads, sinfo.adb (Withed_Body): Remove. + (Set_Withed_Body): Remove. + +2018-07-16 Piotr Trojanek + + * sem.adb (Walk_Library_Items): Skip units with configuration pragmas + when printing debug info. + +2018-07-16 Piotr Trojanek + + * sem.adb (Walk_Library_Items): Reuse local constant. + (Is_Subunit_Of_Main): Turn condition to positive and flip the + IF-THEN-ELSE branches; avoid potentially ineffective assignment to the + Lib variable. + +2018-07-16 Piotr Trojanek + + * sem.adb (Walk_Library_Items): Deconstruct dead code. + +2018-07-16 Ed Schonberg + + * exp_ch4.adb (Expand_N_Op_Xor): Use common routine + Expand_Nonbinary_Modular_Op. Needed for unnesting. + +2018-07-16 Ed Schonberg + + * sem_ch3.adb (Inherit_Predicate_Flags): A non-discrete type may have a + static predicate (for example True) but has no + static_discrete_predicate. + +2018-07-16 Hristian Kirtchev + + * exp_attr.adb (Build_Record_VS_Func): Handle corner cases dealing with + class-wide types and record extensions. + +2018-07-16 Justin Squirek + + * sem_eval.adb (Eval_Integer_Literal): Add exception for avoiding + checks on expanded literals within if and case expressions. + +2018-07-16 Hristian Kirtchev + + * libgnat/s-wchwts.adb (Wide_String_To_String): Use the appropriate + longest sequence factor. Code clean up. + (Wide_Wide_String_To_String): Use the appropriate longest sequence + factor. Code clean up. + +2018-07-16 Javier Miranda + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Report an error + on Bit_Order when defined for a record extension. + +2018-07-16 Arnaud Charlet + + * libgnat/s-objrea.ads: Minor code clean up. + +2018-07-16 Piotr Trojanek + + * sem_ch3.adb (Process_Discriminants): Adjust reference to the SPARM RM + rule. + +2018-07-16 Arnaud Charlet + + * adaint.c (__gnat_set_file_time_name): Code clean up. + +2018-07-16 Javier Miranda + + * inline.adb (Build_Body_To_Inline): Minor code reorganization that + ensures that calls to function Has_Single_Return() pass a decorated + tree. + (Has_Single_Return.Check_Return): Peform checks on entities (instead on + relying on their characters). + +2018-07-16 Javier Miranda + + * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Code cleanup. Required + to avoid generating an ill-formed tree that confuses gnatprove causing + it to blowup. + +2018-07-16 Yannick Moy + + * inline.adb (Has_Single_Return): Rewrap comment. + +2018-07-16 Eric Botcazou + + * einfo.ads: Minor tweak in comment. + +2018-07-16 Javier Miranda + + * sem_ch4.adb (Analyze_Membership_Op): Code cleanup. + +2018-07-16 Javier Miranda + + * exp_attr.adb (Expand_N_Attribute_Reference ['Count]): Do not + transform 'Count into a function call if the current scope has been + eliminated. + +2018-07-16 Javier Miranda + + * sem_util.ads, sem_util.adb (Has_Prefix): Move this function to the + public part of this package. + +2018-07-16 Yannick Moy + + * sem_res.adb (Resolve_Call): Do not inline calls inside + compiler-generated functions translated as predicates in GNATprove. + +2018-07-16 Gary Dismukes + + * exp_ch4.adb (Expand_N_Allocator): Test for Storage_Pool being RTE in + addition to the existing test for no Storage_Pool as a condition + enabling generation of the call to Check_Standard_Allocator when the + restriction No_Standard_Allocators_After_Elaboration is active. + * libgnat/s-elaall.ads (Check_Standard_Allocator): Correct comment to + say that Storage_Error will be raised (rather than Program_Error). + * libgnat/s-elaall.adb (Check_Standard_Allocator): Raise Storage_Error + rather than Program_Error when Elaboration_In_Progress is False. + +2018-07-16 Gary Dismukes + + * sem_eval.adb: Fix spelling for compile-time-known. + +2018-07-16 Hristian Kirtchev + + * sem_eval.adb (Compile_Time_Known_Value): Add a guard which prevents + the compiler from entering infinite recursion when trying to determine + whether a deferred constant has a compile time known value, and the + initialization expression of the constant is a reference to the + constant itself. + +2018-07-16 Nicolas Roche + + * libgnat/a-strunb.adb, libgnat/a-strunb__shared.adb: Adjust growth + factor from 1/32 to 1/2 for Unbounded_String. + +2018-07-13 Eric Botcazou + + * gcc-interface/lang.opt (funsigned-char): New option. + * gcc-interface/misc.c (gnat_handle_option): Accept it. + * gcc-interface/utils.c (finish_character_type): Tweak comment. + +2018-07-07 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Add GNAT_DECL local + variable and use it throughout. + : If the nominal subtype of the object is unconstrained, + compute the Ada size separately and put in on the padding type if the + size is not fixed. + : Minor tweak. + * gcc-interface/misc.c (gnat_type_max_size): Rename max_size_unit + into max_size_unit throughout. + +2018-07-07 Eric Botcazou + + * gcc-interface/gigi.h (add_decl_expr): Adjust prototype. + * gcc-interface/decl.c (gnat_to_gnu_entity): Remove useless test. + * gcc-interface/trans.c (add_stmt_with_node): Remove exceptions. + (add_decl_expr): Change type of second parameter and rename it. + (renaming_from_instantiation_p): New function moved from... + (set_expr_location_from_node): Test for exceptions here and add one + for actual subtypes built for unconstrained composite actuals. + * gcc-interface/utils.c (renaming_from_instantiation_p): ...here. + +2018-07-07 Eric Botcazou + + * gcc-interface/trans.c (lvalue_required_p): Remove ALIASED parameter + and adjust recursive calls. + (Identifier_to_gnu): Adjust calls to lvalue_required_p. + (gnat_to_gnu): Likewise. + +2018-07-07 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_param): Minor tweak. + (gnat_to_gnu_subprog_type): New pure_flag local variable. Set it for + a pure Ada function with a by-ref In parameter. Propagate it onto the + function type by means of the TYPE_QUAL_RESTRICT flag. + * gcc-interface/utils.c (finish_subprog_decl): Set DECL_PURE_P if the + function type has the TYPE_QUAL_RESTRICT flag set. + +2018-07-06 Jim Wilson + + * Makefile.rtl: Add riscv*-linux* support. + * libgnarl/s-linux__riscv.ads: New. + * libgnat/system-linux-riscv.ads: New. + + * Make-generated.in (treeprs.ads): Use $(GNATMAKE) instead of gnatmake. + (einfo.h, sinfo.h, stamp-snames, stamp-nmake): Likewise. + * gcc-interface/Makefile.in (xoscons): Likewise. + +2018-07-06 Sebastian Huber + + * libgnat/system-rtems.ads (Frontend_Exceptions): Set to False. + (ZCX_By_Default): Set to True. + +2018-07-02 Martin Liska + + * gnatvsn.ads: Bump Library_Version to 9. + +2018-06-12 Eric Botcazou + + * gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Change from + using TYPE_LANG_FLAG_4 to using TYPE_LANG_FLAG_0. + (TYPE_ALIGN_OK): Move around. + (TYPE_PADDING_FOR_COMPONENT): Remove superfluous parentheses. + * gcc-interface/decl.c (change_qualified_type): Move to... + (gnat_to_gnu_entity): Adjust comment. + * gcc-interface/gigi.h (change_qualified_type): ...here; make inline. + (ceil_pow2): Use ceil_log2. + * gcc-interface/utils.c (finish_subprog_decl): Add couple of comments + and do not set TREE_SIDE_EFFECTS. + (handle_noreturn_attribute): Use change_qualified_type. + +2018-06-12 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not get + the expression of a dispatch table that is not being defined. + : Remove obsolete kludge. + +2018-06-12 Eric Botcazou + + * gcc-interface/decl.c (warn_on_field_placement): Use specific wording + for discriminants. + (warn_on_list_placement): New static function. + (components_to_record): Use it to warn on multiple fields in list. + +2018-06-12 Eric Botcazou + + * gcc-interface/decl.c (variant_desc): Add AUX field. + (gnat_to_gnu_entity) : Do not call compute_record_mode + directly. + (reverse_sort_field_list): New static function. + (components_to_record): Place the variant part at the beginning of the + field list when there is an obvious order of increasing position. + (build_variant_list): Initialize it. + (create_variant_part_from): Do not call compute_record_mode directly. + (copy_and_substitute_in_layout): Likewise. Always sort the fields with + fixed position in order of increasing position, in the record and all + the variants, in any. Call reverse_sort_field_list. + * gcc-interface/utils.c (make_packable_type): Compute the sizes before + calling finish_record_type. Do not call compute_record_mode directly. + (finish_record_type): Overhaul final processing depending on REP_LEVEL + and call finish_bitfield_layout if it is equal to one or two. + +2018-06-11 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Reuse the + existing fields of a dummy fat pointer type, if any. Clear the + TYPE_DECL_SUPPRESS_DEBUG on the fat pointer type after completing it. + +2018-06-11 Hristian Kirtchev + + * contracts.adb (Process_Body_Postconditions): Expand only checked + postconditions. + (Process_Contract_Cases_For): Expand only checked contract cases. + (Process_Inherited_Preconditions): Ignored class-wide preconditions are + partially expanded because some of their semantic checks are tied to + the expansion. + (Process_Preconditions_For): Expand only checked preconditions. + (Process_Spec_Postconditions): Expand only checked preconditions. + Ignored class-wide preconditions are partially expanded because some of + their semantic checks are tied to the expansion. + * exp_prag.adb (Expand_N_Pragma): Suppress the expansion of ignored + assertion pragmas. + * exp_util.adb (Add_Inherited_Invariants): Code clean up. + * sem_util.adb (Propagate_Invariant_Attributes): Code clean up. + +2018-06-11 Hristian Kirtchev + + * exp_ch9.adb, exp_unst.adb, inline.adb, libgnat/a-ciorma.adb, + libgnat/a-ciormu.adb, libgnat/a-ciorse.adb, libgnat/a-coorma.adb, + libgnat/a-coormu.adb, libgnat/a-coorse.adb, sem_prag.adb: Minor + reformatting. + +2018-06-11 Gary Dismukes + + * exp_unst.ads, exp_unst.adb: Typo fixes and minor reformatting. + +2018-06-11 Hristian Kirtchev + + * exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call): Do + not add any actuals when the size of the object is known, and the + caller will allocate it. + (Build_Heap_Allocator): Rename to Build_Heap_Or_Pool_Allocator to + better illustrate its functionality. Update the comment on the + generated code. Generate a branch for the heap and pool cases where + the object is not necessarity controlled. + (Expand_N_Extended_Return_Statement): Expand the extended return + statement into four branches depending the requested mode if the caller + will not allocate the object on its side. + (Make_Build_In_Place_Call_In_Allocator): Do not allocate a controlled + object on the caller side because this will violate the semantics of + finalizable types. Instead notify the function to allocate the object + on the heap or a user-defined storage pool. + (Needs_BIP_Alloc_Form): A build-in-place function needs to be notified + which of the four modes to employ when returning a limited controlled + result. + * exp_util.adb (Build_Allocate_Deallocate_Proc): Remove a redundant + guard which is already covered in Needs_Finalization. + +2018-06-11 Olivier Hainque + + * libgnat/s-excmac*.ads: Factorize Unwind_Action definitions ... + * libgnat/a-exexpr.adb: ... Here, then add comments describing the + major datastructures associated with the current exception raised. + (Setup_Current_Excep): Accept a "Phase" argument conveying the + unwinding phase during which this subprogram is called. For an Ada + exception, don't update the current exception buffer from the raised + exception object during SEARCH_PHASE, as this is redundant with the + call now issued just before propagation starts. + (Propagate_GCC_Exception): Move call to Setup_Current_Excep ahead of + the unwinding start, conveying Phase 0. + (Unhandled_Except_Handler): Pass UA_CLEANUP_PHASE as the Phase value on + the call to Setup_Current_Excep. + * raise-gcc.c (personality_body): Pass uw_phases as the Phase argument + on calls to Setup_Current_Excep. + +2018-06-11 Ed Schonberg + + * exp_unst.ads, exp_unst.adb (Needs_Fat_Pointer, + Build_Access_Type_Decl): New subprograms to handle uplevel references + to formals of an unconstrained array type. The activation record + component for these is an access type, and the reference is rewritten + as an explicit derefenrence of that component. + +2018-06-11 Bob Duff + + * libgnat/a-ciorma.adb, libgnat/a-ciormu.adb, libgnat/a-ciorse.adb, + libgnat/a-coorma.adb, libgnat/a-coormu.adb, libgnat/a-coorse.adb: + (Element): Add code to detect dangling cursors in some cases. + +2018-06-11 Yannick Moy + + * sem_ch6.adb (Build_Subprogram_Declaration): Mark parameters as coming + from source. + +2018-06-11 Ed Schonberg + + * sem_ch13.adb (Build_Predicate_Functions): For a derived type, ensure + that its parent is already frozen so that its predicate function, if + any, has already been constructed. + +2018-06-11 Yannick Moy + + * sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Adapt for + possible task unit as the enclosing context. + +2018-06-11 Eric Botcazou + + * gnat1drv.adb: Remove use clause for Repinfo. + (Gnat1drv): Beef up comment about the interplay between -gnatc and + back-end annotations. Use full qualified name for List_Rep_Info. + +2018-06-11 Hristian Kirtchev + + * libgnat/g-arrspl.ads: Add pragma Preelaborate. + +2018-06-11 Arnaud Charlet + + * exp_ch4.adb (Expand_Record_Equality): Remove extraneous "True and + then" and general logical "ada" in codepeer mode. + +2018-06-11 Javier Miranda + + * exp_ch9.adb (Expand_N_Protected_Body): Add missing handling of + N_Call_Marker nodes. + +2018-06-11 Arnaud Charlet + + * exp_ch3.adb, exp_unst.adb, inline.adb, sem_prag.adb: Minor + reformatting. + +2018-06-11 Yannick Moy + + * doc/gnat_rm/implementation_defined_pragmas.rst: Add Suppressible + argument to Assertion_Policy + * gnat_rm.texi: Regenerate. + +2018-06-11 Yannick Moy + + * gnat1drv.adb: Do not check representation information in CodePeer and + GNATprove modes, as these modes call a special backend instead of gigi, + so do not have the information. + +2018-06-11 Yannick Moy + + * inline.adb (Build_Body_To_Inline): Consider case of extended return + of unconstrained type as one case where inlining is not supported. + (Expand_Inlined_Call): Remove special case for body as extended return + of unconstrained type. + +2018-06-11 Yannick Moy + + * sem_prag.adb (Analyze_Part_Of): Only allow Part_Of on non-generic + unit. + (Check_Missing_Part_Of): Do not force Part_Of on generic unit. + +2018-06-11 Piotr Trojanek + + * sem_ch13.adb (Analyze_Aspect_Specifications): Don't split AND THEN + expressions in Pre/Post contracts while in GNATprove_Mode. + +2018-06-11 Piotr Trojanek + + * sem_util.adb (Is_Potentially_Unevaluated): Fix detection of contracts + with AND THEN expressions broken down into individual conjuncts. + +2018-06-11 Ed Schonberg + + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Add guard. + +2018-06-11 Ed Schonberg + + * exp_unst.adb (Visit_Node): Skip generic associations. + +2018-06-11 Arnaud Charlet + + * libgnat/memtrack.adb (fwrite): Remove second definition. + +2018-06-11 Javier Miranda + + * sinfo.ads (Is_Dynamic_Coextension): Adding documentation. + (Is_Static_Coextension): Adding documentation. + * sinfo.adb (Is_Dynamic_Coextension): Extending the assertion. + (Is_Static_Coextension): Extending the assertion. + * sem_util.adb (Mark_Allocator): Clear Is_Static_Coextension when + setting flag Is_Dynamic_Coextension (and vice versa). + +2018-06-11 Ed Schonberg + + * exp_unst.adb (Search_Subprograms): Handle explicitly stubs at the top + level of a compilation unit, becuase they may contain nested + subprograms that need an activation record. + +2018-06-11 Arnaud Charlet + + * Makefile.rtl: Compile Ada files with $(ADAC) instead of $(CC). + +2018-06-11 Hristian Kirtchev + + * exp_ch11.adb, exp_unst.adb, inline.adb, sem_ch12.adb, sem_util.adb: + Minor reformatting. + * sinfo.ads: Fix a typo. + +2018-06-11 Ed Schonberg + + * inline.adb (Expand_Inlined_Call): If no optimization level is + specified, the expansion of a call to an Inline_Always function is + fully performed in the front-end even on a target that support back-end + inlining. + +2018-06-11 Arnaud Charlet + + * bindgen.adb (Gen_Adainit): Protect reference to System.Parameters + with Sec_Stack_Used. + +2018-06-11 Hristian Kirtchev + + * sem_ch8.adb (Find_Direct_Name): Mode the declaration of + Is_Assignment_LHS further in. Use predicate + Needs_Variable_Reference_Marker to determine whether to create a + variable marker. + (Find_Expanded_Name): Mode the declaration of Is_Assignment_LHS further + in. Use predicate Needs_Variable_Reference_Marker to determine whether + to create a variable marker. + * sem_elab.adb (Build_Variable_Reference_Marker): Remove the various + checks that determine whether the identifier or expanded name is a + suitable variable reference. The checks are now performed by + Needs_Variable_Reference_Marker. + * sem_res.adb (Resolve_Actuals): Use predicate + Needs_Variable_Reference_Marker to determine whether to create a + variable marker. + * sem_util.adb (Needs_Variable_Reference_Marker): New routine. + * sem_util.ads (Needs_Variable_Reference_Marker): New routine. + +2018-06-11 Valentine Reboul + + * doc/gnat_rm.rst, doc/gnat_ugn.rst: Rename "GPL Edition" into + "Community Edition". + +2018-06-11 Ed Schonberg + + * sem_ch12.adb (Install_Body): In order to determine the placement of + the freeze node for an instance of a generic nested within another + instance, take into account that the outer instance may be declared in + the visible part of a package and the inner intance may be in the + private part of the same package. + +2018-06-11 Eric Botcazou + + * errout.adb (Special_Msg_Delete): Remove handling of Atomic and VFA. + +2018-06-11 Nicolas Roche + + * libgnat/s-valuti.adb (Bad_Value): Ensure that we do not generate a + stack overflow while raising a constraint error. + +2018-06-11 Eric Botcazou + + * repinfo.ads (Rep_Value): Use a single line. + * repinfo.adb (Rep_Value): Likewise. + (List_Attr): Do not use string concatenation. + +2018-06-11 Ed Schonberg + + * exp_unst.adb (Visit_Node): Check reference to formal parameter of + current procedure, because the bounds of its type may be uplevel + references. + +2018-06-02 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : If this is + not a definition, retrieve the expression only if it's a compile-time + known value if we are just annotating types. + + * gcc-interface/utils.c (convert): Do not try to upcast properly for a + conversion between tagged types in type_annotate_only mode. + +2018-06-02 Eric Botcazou + + * gcc-interface/ada-tree.h (TYPE_PADDING_FOR_COMPONENT): New macro. + * gcc-interface/decl.c (gnat_to_gnu_component_type): Cache the padding + type built for an aliased component with variable size. + +2018-05-31 Pierre-Marie de Rodat + + * doc/gnat_ugn/project-manager-figure.png: Delete. + +2018-05-31 Pierre-Marie de Rodat + + * vxworks-arm-link.spec, vxworks-e500-link.spec, + vxworks-gnat-crtbe-link.spec, vxworks-smp-arm-link.spec, + vxworks-smp-e500-link.spec, vxworks-smp-ppc-link.spec, + vxworks-smp-x86-link.spec: New files. + +2018-05-31 Pierre-Marie de Rodat + + * gnatvsn.adb: Re-center the copyright header. + * indepsw-darwin.adb: Adjust the starting copyright year to 2011. + +2018-05-31 Fedor Rybin + + * doc/gnat_ugn/gnat_utility_programs.rst: Document Stubs_Subdir in + gnattest section on user guide. + +2018-05-31 Ed Schonberg + + * sem_res.adb (Resolve_String_Literal): If the type is a string type + whose component subtype has a static predicate, ensure that the + predicate is applied to each character by expanding the string into the + equivalent aggregate. This is also done if the component subtype is + constrained. + +2018-05-31 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Remove obsolete code. + +2018-05-31 Piotr Trojanek + + * sem_ch6.adb (Check_Missing_Return): Handle procedures with no + explicit spec. + +2018-05-31 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): In the by-reference case, if + the type of the parameter is an unconstrained array type, convert + to the type of the actual before the type of the formal only if the + conversion was suppressed earlier. Use in_param and gnu_actual_type + local variables throughout, and uniform spelling for In Out or Out. + Also remove dead code in the component-by-reference case. + +2018-05-31 Frederic Konrad + + * tracebak.c (STOP_FRAME): Harden condition. + (is_return_from, EXTRA_STOP_CONDITION): New helpers for VxWorks in RTP + mode. + +2018-05-31 Ed Schonberg + + * checks.adb (Apply_Discriminant_Check): Do not apply discriminant + check to a call to a build-in-place function, given that the return + object is limited and cannot be copied. + +2018-05-31 Olivier Hainque + + * libgnat/s-atopri.ads: Update comment on __atomic_compare_exchange + builtins. + +2018-05-31 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): If this is a function call and + there is no target, also create a temporary for the return value for + an allocator if the type is an unconstrained record type with default + discriminant. + +2018-05-31 Hristian Kirtchev + + * exp_ch7.adb (Find_Transient_Context): An iteration scheme is a valid + boudary for a transient scope. + +2018-05-31 Valentine Reboul + + * gnatvsn.ads: Rename "GPL" version to "Community". + +2018-05-31 Ed Schonberg + + * einfo.ads: Improve documentation for the Is_Unsigned_Type entity + flag. + +2018-05-31 Piotr Trojanek + + * sem_prag.adb (Analyze_Pragma): Replace call to Unique_Defining_Entity + with a semantically equivalent call to Defining_Entity. + +2018-05-31 Piotr Trojanek + + * sem_prag.adb (Analyze_Pragma): Set Etype on the rewritten + Max_Queue_Length expression. + +2018-05-31 Sergey Rybin + + * doc/gnat_ugn/gnat_and_program_execution.rst: gnatelim does not need + that the main unit to be built before the call, now it computes the + closure of the main unit itself. + * gnat_ugn.texi: Regenerate. + +2018-05-31 Eric Botcazou + + * repinfo.adb (List_Structural_Record_Layout): Set First to false + after having listed the fields of the parent type, if any. + +2018-05-31 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not + deal with the ___XP suffix for packed array types here... + : ...or here when processing the implementation type + but when processing the original type instead. Do not reuse the DECL + of the implementation type for the original type. Tidy up. + +2018-05-31 Eric Botcazou + + * einfo.ads (Object_Size_Clause): Declare. + * einfo.adb (Object_Size_Clause): New function. + * gcc-interface/utils.c (maybe_pad_type): Test Has_Size_Clause before + retrieving Size_Clause and post the warning on the object size clause + if Has_Object_Size_Clause is true. + +2018-05-31 Javier Miranda + + * sem_util.ads, sem_util.adb (Find_Primitive_Eq): New subprogram. + * exp_ch4.adb (Expand_Composite_Equality): Use the new subprogram + Find_Primitive_Eq to search for the primitive of types whose underlying + type is a tagged type. + +2018-05-31 Yannick Moy + + * sem_prag.adb (Analyze_Pragma.Check_Loop_Pragma_Placement): Inverse + order of treatment between nodes recognized as loop pragmas (or + generated from one) and block statements. + +2018-05-31 Doug Rupp + + * libgnat/s-osprim__posix2008.adb (Clock): Implement using + clock_gettime. + +2018-05-31 Ed Schonberg + + * exp_unst.ads, exp_unst.adb (In_Synchronized_Unit): New predicate to + mark subprograms that cannot be eliminated because they must be treated + as reachable from outside the current unit. This includes entry bodies + and protected operations. + +2018-05-31 Ed Schonberg + + * exp_ch4.adb (Expand_Modular_Addition, Expand_Modular_Subtraction): + Convert all operands of the generated code to Standard.Unsigned, to + prevent spurious visibility errors. This is needed when the generated + expansion involves a modular index type of an array type, and the index + type is not immediately visible. + +2018-05-30 Piotr Trojanek + + * einfo.ads (Package_Instantiation): Update comment after a routine + that uses this field has been renamed. + +2018-05-30 Ed Schonberg + + * exp_ch11.adb (Replace_Raise_By_Goto): The transfomation is legal even + if the local raise statement includes a string expression. This + expression might be picked up by an outer handler or discarded, but + plays no role in this transformation. + +2018-05-30 Hristian Kirtchev + + * exp_aggr.adb, exp_unst.adb, freeze.adb, libgnat/a-direct.adb: Minor + reformatting. + +2018-05-30 Ed Schonberg + + * exp_unst.adb (Visit_Node): Handle the semantic Procedure_To_Call + field in relevant nodes: Allocate, Free, and return statements. + +2018-05-30 Ed Schonberg + + * exp_unst.adb (Visit_Node): Do not traverse a Component_Association + that has not been analyzed, as will be the case for a nested aggregate + that is expanded into individual assignments. + +2018-05-30 Justin Squirek + + * aspects.adb, aspects.ads: Register new aspect. + * par-prag.adb (Prag): Register new pragma. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing for new + aspect similar to Aspect_Max_Queue_Length. + * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new pragma and + set it to use the same processing as Pragma_Max_Queue_Length. + * snames.ads-tmpl: Move definition of Name_Max_Entry_Queue_Depth so + that it can be processed as a pragma in addition to a restriction and + add an entry for the pragma itself. + +2018-05-30 Ed Schonberg + + * freeze.adb (Freeze_Object_Declaration): A pragma Thread_Local_Storage + is now legal on a variable of composite type initialized with an + aggregate that is fully static and requires no elaboration code. + * exp_aggr.adb (Convert_To_Positional): Recognize additional cases of + nested aggregates that are compile-time static, so they can be used to + initialize variables declared with Threqd_Local_Storage. + * doc/gnat_rm/implementation_defined_pragmas.rst: Add documentation on + Thread_Local_Storage. + * gnat_rm.texi: Regenerate. + +2018-05-30 Yannick Moy + + * sem_util.adb (Policy_In_Effect): Take into account CodePeer and + GNATprove modes. + +2018-05-30 Justin Squirek + + * libgnat/a-direct.adb, libgnat/a-direct.ads (Name_Case_Equivalence): + Add implementation. + (Start_Search): Modify to use Start_Search_Internal + (Start_Search_Internal): Add to break out an extra flag for searching + case insensative due to the potential for directories within the same + OS to allow different casing schemes. + * sysdep.c (__gnat_name_case_equivalence): Add as a default fallback + for when the more precise solution fails. + +2018-05-30 Hristian Kirtchev + + * checks.adb, exp_ch5.adb, exp_ch7.adb, exp_unst.adb, sem_eval.adb: + Minor reformatting. + +2018-05-30 Pascal Obry + + * libgnat/g-comlin.ads (Value_Callback, Define_Switch): New. + * libgnat/g-comlin.adb: Add corresponding implementation. + +2018-05-30 Gary Dismukes + + * sem_res.adb, sem_util.adb: Fix several typos. + +2018-05-30 Olivier Hainque + + * vx_crtbegin_attr.c (CTOR_ATTRIBUTE, DTOR_ATTRIBUTE): Empty. + (eh_registration_ctors, eh_registration_tors): New static variables, + forced in a .ctors/.dtors section, respectively, with priority. + +2018-05-30 Bob Duff + + * aspects.ads, contracts.adb, exp_util.adb, expander.adb, expander.ads, + freeze.adb, inline.adb, lib-xref.adb, sem.ads, sem_aggr.adb, + sem_attr.adb, sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb, + sem_ch8.adb, sem_dim.adb, sem_elab.adb, sem_res.adb, sem_res.ads, + sinfo.ads: Spell preanalysis, preanalyze correctly. + +2018-05-30 Bob Duff + + * libgnat/g-sestin.ads: Rework documentation comments. + +2018-05-30 Piotr Trojanek + + * errout.adb, exp_aggr.adb, exp_ch7.adb, exp_util.adb, lib.adb, + sem_ch13.adb, sem_ch4.adb, sem_res.adb, sem_util.adb + (Has_Original_Node): Refactor to use Is_Rewrite_Substitution. + +2018-05-30 Piotr Trojanek + + * sem_prag.adb (Analyze_Pragma): Remove conjuncts that are always true. + +2018-05-30 Hristian Kirtchev + + * sem_util.adb (Is_Atomic_Object): Cleaned up. Split the entity logic + in a separate routine. + (Is_Atomic_Object_Entity): New routine. + (Is_Atomic_Prefix): Cleaned up. + (Is_Synchronized_Object): Check that the object is atomic, or its type + is atomic. + (Object_Has_Atomic_Components): Removed. + * sem_util.ads (Is_Atomic_Object): Reword the comment on usage. + (Is_Atomic_Object_Entity): New routine. + +2018-05-30 Ed Schonberg + + * sem_ch3.adb (Access_Subprogram_Declaration): The flag + Needs_Activation_Record is only needed on a subprogram type, not on a + pointer to such. + * sem_res.adb (Resolve_Selected_Component): If the context type and the + component type are anonymous access to subprograms, use the component + type to obtain the proper value of Needs_Activation_Record flag for the + expression. + +2018-05-30 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Add + comment about the memset case. + +2018-05-30 Bob Duff + + * exp_ch5.adb (Expand_Formal_Container_Element_Loop): Remove the code + to analyze the Elmt_Decl, because it gets analyzed in the wrong scope. + We need to analyze it as part of analyzing the block, so that if the + call to Element that initializes Elmt_Decl returns on the secondary + stack, the block will ss_mark/ss_release. This block is inside the + loop; we don't want to leak memory until the loop exits. The purpose + of analyzing Elmt_Decl first was to catch the error of modifying it, + which is illegal because it's a loop parameter. The above causes us to + miss that error. Therefore, we add a flag Is_Loop_Parameter, and set + it on the Element entity, so we end up with an E_Variable node with the + flag set. + * einfo.ads, einfo.adb (Is_Loop_Parameter): New flag. + * sem_ch5.adb (Diagnose_Non_Variable_Lhs): Give the "assignment to loop + parameter not allowed" error if Is_Loop_Parameter. + * sem_util.adb (Is_Variable): Return False if Is_Loop_Parameter, to + trigger the call to Diagnose_Non_Variable_Lhs. + +2018-05-30 Arnaud Charlet + + * checks.adb (Apply_Scalar_Range_Check): + * sem_eval.adb (Check_Non_Static_Context, Out_Of_Range): Ignore out of + range values for System.Priority in CodePeer mode since the actual + target compiler may provide a wider range. + +2018-05-30 Ed Schonberg + + * exp_unst.adb: Search specification of main unit as well, for + unnesting. + +2018-05-30 Ed Schonberg + + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): The statement part of + a package body that is a compilation unit may contain blocks that + declare local subprograms. In Subprogram_Unnesting Mode such + subprograms must be handled as nested inside the (implicit) elaboration + procedure that executes that statement part. To handle properly uplevel + references we construct that subprogram explicitly, to contain blocks + and inner subprograms, The statement part of the compilation unit + becomes a call to this subprogram. This is only done if blocks are + present in the statement list of the body. + +2018-05-30 Bob Duff + + * exp_ch7.adb: Minor comment fix. + +2018-05-30 Ed Schonberg + + * exp_unst.adb (Visit_Node): Handle properly subprogram instantiations + that have no corresponding body and appear as attributes of the + corresponding wrapper package declaration. + (Register_Subprogram): New subprogram, used for subprogram bodies and + for subprogram instantiations to enter callable entity into Subp table. + +2018-05-30 Hristian Kirtchev + + * libgnat/s-secsta.adb: Reimplement the secondary stack support. + * libgnat/s-secsta.ads: Update the documentation of all routines in the + public part of the package. Reimplement the private part of the + package to account for the new secondary stack structure. Add types + and subprograms for testing purposes. Add several documentation + sections. + +2018-05-30 Hristian Kirtchev + + * exp_aggr.adb, exp_ch3.adb, exp_ch4.adb, exp_ch7.adb, exp_unst.adb, + exp_util.adb, exp_util.ads, libgnat/a-calcon.adb, libgnat/a-calcon.ads, + libgnat/s-os_lib.adb, repinfo.adb, sem_ch3.adb, sem_disp.adb, + sem_disp.ads, sem_util.adb: Minor reformatting. + +2018-05-30 Arnaud Charlet + + * gcc-interface/Makefile.in: Move special flags for Ada runtime files + from here... + * Makefile.rtl: ... to here. Update comments. Protect call to + "GCC_FOR_TARGET" in case target_os isn't defined. + +2018-05-30 Arnaud Charlet + + * gcc-interface/Makefile.in: Move target pair settings from here... + * Makefile.rtl: ... to here. + (setup-rts): New target. + +2018-05-29 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical + List of All Switches): Replace "modules" with "units". + (Subprogram Inlining Control): Likewise. + * gnat_ugn.texi: Regenerate. + * usage.adb (Usage): Fix description of -gnatn switch. + +2018-05-29 Arnaud Charlet + + * gcc-interface/Makefile.in: Fix typos. + +2018-05-29 Ed Schonberg + + * exp_ch7.adb (Build_Finalizer_Call): Attach to tree the reference to + the finalizer procedure in the At_End handler, for use in LLVM + generation. + +2018-05-29 Javier Miranda + + * exp_ch4.adb (Expand_N_Op_Eq, Expand_Composite_Equality): Use the new + subprogram Inherits_From_Tagged_Full_View to identify more reliably + untagged private types completed with a derivation of an untagged + private whose full view is a tagged type. + * sem_util.ads, sem_util.adb (Inherits_From_Tagged_Full_View): New + subprogram. + (Collect_Primitive_Operations): Handle untagged private types completed + with a derivation of an untagged private type whose full view is a + tagged type. In such case, collecting the list of primitives we may + find two equality primitives: one associated with the untagged private + and another associated with the ultimate tagged type (and we must + remove from the returned list this latter one). + +2018-05-29 Ed Schonberg + + * exp_unst.adb (Visit_Node): Handle statement sequences that include an + At_End handler. + +2018-05-29 Eric Botcazou + + * repinfo.adb (List_Entities): Also recurse into blocks without label. + +2018-05-29 Ed Schonberg + + * exp_ch6.adb (Expand_N_Subprogram_Body): Do not generate push/pop for + exceptions if subprogram unnesting is in effect, because these branch + nodes are relevant only in the presence of nested subprograms. + +2018-05-29 Ed Schonberg + + * libgnat/s-fatgen.adb (Succ, Pred): Raise Constraint_Error + unconditionally when applied to the largest positive (resp. largest + negative) value of a floating-point type. + +2018-05-29 Ed Schonberg + + * einfo.ads, einfo.adb: Clarify use of Activation_Record_Component: + discriminants and exceptions are never components of such. The flag + Needs_Activation_Record is set on subprogram types, not on access to + them. + +2018-05-29 Ed Schonberg + + * sem_ch3.adb: Set scope of component of subtype. + +2018-05-29 Ed Schonberg + + * exp_unst.adb (Visit_Node): Exclude selected components whose prefix + carry no type. Such selected components appear in unit names that are + child units, both in the specification and possibly in an end label for + the unit, and they do not contain any relevant uplevel references. + +2018-05-29 Arnaud Charlet + + * libgnat/a-calend.ads, libgnat/a-calend.adb (Epoch_Offset): Make it a + function. + +2018-05-29 Olivier Hainque + + * libgnat/system-vxworks7-ppc-rtp.ads: New file. + * libgnat/system-vxworks7-ppc-kernel.ads: New file. + * libgnat/system-vxworks7-e500-rtp.ads: New file. + * libgnat/system-vxworks7-e500-kernel.ads: New file. + * libgnat/system-vxworks7-x86-rtp.ads: New file. + * libgnat/system-vxworks-ppc64-kernel.ads: Rename as ... + * libgnat/system-vxworks7-ppc64-kernel.ads: and adjust name of + gnat-crtbe link spec to use the vx7 variant. + +2018-05-29 Olivier Hainque + + * vx_crtbegin.inc: Use a consistent naming convention for the + registration/deregistration functions across RTP or kernel. Remove the + ctor/dtor attribute setting based on RTP/kernel, expect the optional + attribute extension to be provided by includers instead. + * vx_crtbegin.c: Mere inclusion of vx_crtbegin.inc with empty attribute + extension for the registration/deregistration functions. + * vx_crtbegin_attr.c: New file. Include vx_crtbegin.inc with explicit + constructor/destructor attribute extensions. + * vx_crtbegin_array.c: New file. Include vx_crtbegin.inc with empty + attribute extensions and declare _ctors/_dtors arrays. + * vx_crtbegin_auto.c: Remove. + * libgnat/system-vxworks7-aarch64-rtp-smp.ads: Use + vxworks7-gnat-crtbe-link.spec. + * libgnat/system-vxworks7-aarch64.ads: Likewise. + * libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-x86-kernel.ads: Likewise. + * libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-x86_64-kernel.ads: Likewise. + * libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise. + +2018-05-29 Piotr Trojanek + + * ali.adb: Minor reformatting. + +2018-05-29 Joel Brobecker + + * doc/gnat_ugn/platform_specific_information.rst: Update package + requirements for 32bit GNAT on x86_64-linux. + * gnat_ugn.texi: Regenerate. + +2018-05-29 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst (Debugging + Control): Adjust description of -gnatRj. + * gnat_ugn.texi: Regenerate. + * opt.ads (List_Representation_Info_To_JSON): Likewise. + * repinfo.adb (List_Rep_Info): Do not automatically create a file + if List_Representation_Info_To_JSON is true. + * switch-c.adb (Scan_Front_End_Switches) : Remove incompatibility + check between -gnatRj and -gnatRs. + * usage.adb (Usage): Adjust description of -gnatRj. + +2018-05-29 Pascal Obry + + * libgnat/s-os_lib.adb (Normalize_Pathname): Fix handling of ".." in + the root directory. + +2018-05-29 Pascal Obry + + * libgnat/s-os_lib.adb: Minor reformatting. + +2018-05-29 Doug Rupp + + * libgnat/a-calend.adb (Epoch_Offset): Move from body to ... + * libgnat/a-calend.ads (Epoch_Offset): to private part of spec + * libgnat/a-calcon.ads (To_Unix_Nano_Time): New function spec. + * libgnat/a-calcon.adb (To_Unix_Nano_Time): New function body. + +2018-05-29 Eric Botcazou + + * repinfo.ads (JSON format): Document new pair for components. + * repinfo.adb (Derived_Discriminant): New function. + (List_Structural_Record_Layout): Add Outer_Ent parameter and pass it + in recursive calls. If the record type is the parent of an extension, + find and list the derived discriminant from the extension, if any. + (List_Component_Layout): List the Discriminant_Number in JSON mode. + (List_Record_Info): Adjust call to List_Structural_Record_Layout. + +2018-05-29 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical + List of All Switches): Document -gnatRj. + (Debugging Control): Likewise. + * gnat_ugn.texi: Regenerate. + * opt.ads (List_Representation_Info_To_JSON): New boolean variable. + * osint-c.adb (Create_Repinfo_File): Use the .json instead of .rep + extension if List_Representation_Info_To_JSON is true. + * repinfo.ads: Document the JSON output format. + * repinfo.adb (List_Location): New procedure. + (List_Array_Info): Add support for JSON output. + (List_Entities): Likewise. + (Unop): Likewise. + (Binop): Likewise. + (Print_Expr): Likewise. + (List_Linker_Section): Likewise. + (List_Mechanisms): Likewise. + (List_Name): Likewise. + (List_Object_Info): Likewise. + (List_Record_Info): Likewise. + (List_Component_Layout): Likewise. Add Indent parameter. + (List_Structural_Record_Layout): New procedure. + (List_Attr): Add support for JSON output. + (List_Type_Info): Likewise. + (Write_Unknown_Val): Likewise. + * switch-c.adb (Scan_Front_End_Switches) : Deal with 'j'. + * usage.adb (Usage): List -gnatRj. + +2018-05-29 Eric Botcazou + + * repinfo.adb (List_Component_Layout): New procedure extracted from... + (List_Record_Layout): ...here. Invoke it. + +2018-05-29 Eric Botcazou + + * repinfo.adb (Write_Unknown_Val): New procedure. + (List_GCC_Expression): Call it. + (List_Record_Layout): Likewise. + (Write_Val): Likewise. + +2018-05-29 Richard Kenner + + * exp_ch4.adb (Expand_N_Op_Abs): Clear Do_Overflow_Check when inserting + code to do check. + +2018-05-29 Arnaud Charlet + + * lib-writ.adb (Write_ALI): Do not use new function from s-casuti yet. + This breaks build of cross compilers with older versions of GNAT, so + better avoid it. + +2018-05-29 Doug Rupp + + * libgnarl/s-taprop.ads (Monotonic_Clock): Refine documentation to + reflect reality. + +2018-05-29 Richard Kenner + + * exp_ch4.adb (Expand_N_Op_Abs): Always do range check against 'First. + +2018-05-29 Eric Botcazou + + * repinfo.adb (List_Entities): Do not list the Linker_Section for + subprograms here... + (List_Mechanisms): ...but here instead. Use consistent name output + and formatting conventions. + +2018-05-29 Bob Duff + + * lib-writ.adb (Write_ALI): Cleanup: avoid use of global var; call new + To_Lower function. + * libgnat/s-casuti.ads, libgnat/s-casuti.adb (To_Upper, To_Lower, + To_Mixed): New functions. + * osint.adb: Cleanup: use Is_Directory_Separator, which correctly + allows both '\' and '/' on Windows. + +2018-05-28 Eric Botcazou + + * repinfo.ads: Minor fixes and tweaks in comments. + +2018-05-28 Eric Botcazou + + * repinfo.adb (List_GCC_Expression): Remove Valop and replace calls to + it with calls to Unop. + +2018-05-28 Eric Botcazou + + * repinfo.ads (TCode): Adjust range. + (Truth_Andif_Expr): Remove. + (Truth_Orif_Expr): Likewise. + (Truth_And_Expr .. Dynamic_Val): Adjust value. + * repinfo.adb (Print_Expr): Remove handling of Truth_{And,Or}if_Expr. + (Rep_Value): Likewise. + * repinfo.h (Truth_Andif_Expr): Remove. + (Truth_Orif_Expr): Likewise. + (Truth_And_Expr .. Dynamic_Val): Adjust value. + * gcc-interface/decl.c (annotate_value) : Fall + through to TRUTH_AND_EXPR case. + : Fall through to TRUTH_OR_EXPR case. + +2018-05-28 Ed Schonberg + + * exp_unst.adb (Visit_Node): For indexed components and attribute + references, examine index expressions or associated expressions as well + to record uplevel references. + (Vist_Node): For function and procedure calls, if a formal is an + unconstrained array and the actual is constrained, check whether bounds + of actual have uplevel references. + +2018-05-28 Ed Schonberg + + * einfo.ads, einfo.adb: Exceptions can be uplevel references, and thus + they can appear as components of activation records. + * exp_unst.adb (Visit_Node): A reference to an exception may be an + uplevel reference. + +2018-05-28 Eric Botcazou + + * exp_ch4.adb (Expand_Composite_Equality): Compute whether the size + depends on a discriminant manually instead of using the predicate + Size_Depends_On_Discriminant in the array type case. + +2018-05-28 Ed Schonberg + + * exp_unst.adb (Check_Static_Type): For a record subtype, check + discriminant constraints as well. + (Visit_Node): For a selected component, check type of prefix, as is + done for indexed components and slices. + +2018-05-28 Javier Miranda + + * exp_ch4.adb (Real_Range_Check): Add a temporary to store the integer + value when converting a float value to a fixed-point value. This is + required for CCG because it handles fixed-point types by means of + unsigned integer type variables. The range check is now performed using + the integer value stored in this temporary. + +2018-05-28 Yannick Moy + + * sem_util.adb (Is_OK_Volatile_Context): Add attributes First, Last and + Length as valid non-interfering contexts for SPARK. + +2018-05-28 Claire Dross + + * sem_disp.ads, sem_disp.adb (Inheritance_Utilities): Package for + generic inheritance utilities. + (Generic_Inherited_Subprograms): Generic version of + Inherited_Subprograms, generic in Find_Dispatching_Type function. + (Generic_Is_Overriding_Subprogram): Generic version of + Is_Overriding_Subprogram, generic in Find_Dispatching_Type function. + (Inherited_Subprograms): Instance of Generic_Inherited_Subprograms with + Sem_Disp.Find_Dispatching_Type. + (Is_Overriding_Subprogram): Instance of + Generic_Is_Overriding_Subprogram with Sem_Disp.Find_Dispatching_Type. + (Inheritance_Utilities_Inst): Instance of Inheritance_Utilities + with Sem_Disp.Find_Dispatching_Type. + +2018-05-28 Eric Botcazou + + * exp_ch4.adb (Expand_Composite_Equality): For a composite (or FP) + component type, do not expand array equality using the unconstrained + base type, except for the case where the bounds of the type depend on a + discriminant. + +2018-05-28 Ed Schonberg + + * einfo.ads, einfo.adb (Needs_Activation_Record): New flag on + access-to-subprogram types, to indicate that an indirect call through + such a type requires an activation record when compiling for LLVM. + * sem_ch3.adb (Access_Subprogram_Declaration): Set new flag as needed. + +2018-05-28 Ed Schonberg + + * exp_ch4.adb (Real_Range_Check): Specialize float-to-fixed conversions + when bounds of fixed type are static, to remove some spuerfluous + implicit conversions and provide an accurate result when converting + back and forth between the fixed point type and a floating point type. + +2018-05-28 Ed Schonberg + + * exp_unst.adb (Unnest_Subprogram): Prevent creation of empty + activation records. + +2018-05-28 Richard Kenner + + * exp_unst.adb (Check_Static_Type): Add argument to indicate node to be + replaced, if any; all callers changed. + (Note_Uplevel_Ref): Likewise. Also replace reference to deferred + constant with private view so we take the address of that entity. + (Note_Uplevel_Bound): Add argument to indicate node to be replaced, if + any; all callers changed. Handle N_Indexed_Component like + N_Attribute_Reference. Add N_Type_Conversion case. + (Visit_Node): Indexed references can be uplevel if the type isn't + static. + (Unnest_Subprograms): Don't rewrite if no reference given. If call has + been relocated, set first_named pointer in original node as well. + +2018-05-28 Ed Schonberg + + * exp_aggr.adb (Flatten): Copy tree of expression in a component + association with a range or a set of discrete choices, rather than + relocating the node. This avoids inconsistencies in the tree when + handling nested subprograms with uplevel references for LLVM. + +2018-05-28 Arnaud Charlet + + * exp_util.adb (Possible_Bit_Aligned_Component): Always return False in + codepeer mode. + +2018-05-28 Arnaud Charlet + + * exp_unst.adb: Fix typo. + +2018-05-28 Bob Duff + + * libgnat/a-convec.adb (Query_Element): Minor cleanup: remove an + unnecessary use of 'Unrestricted_Access. + +2018-05-28 Hristian Kirtchev + + * repinfo.adb (Expr_Value_S): New routine. + (List_Linker_Section): Properly extract the value of the section + argument. + +2018-05-28 Patrick Bernardi + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update the + description of the -D binder switch to reflect current usage. + * gnat_ugn.texi: Regenerate. + +2018-05-28 Gary Dismukes + + * exp_ch3.adb: Minor reformatting + +2018-05-28 Justin Squirek + + * exp_ch3.adb + (Build_Initialization_Call): Add logic to pass the appropriate actual to match + new formal. + (Init_Formals): Add new formal *_skip_null_excluding_check + * exp_util.adb, exp_util.ads + (Enclosing_Init_Proc): Added to fetch the enclosing Init_Proc from the current + scope. + (Inside_Init_Proc): Refactored to use Enclosing_Init_Proc + (Needs_Conditional_Null_Excluding_Check): Added to factorize the predicate + used to determine how to generate an Init_Proc for a given type. + (Needs_Constant_Address): Minor reformatting + * sem_res.adb + (Resolve_Null): Add logic to generate a conditional check in certain cases + +2018-05-28 Hristian Kirtchev + + * exp_aggr.adb, gnatlink.adb, sem_ch6.adb, sem_res.adb, sem_util.adb: + Minor reformatting. + +2018-05-28 Hristian Kirtchev + + * sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Include + the declarations of single concurrent types because they fall in the + category of full type and object declarations. + +2018-05-28 Eric Botcazou + + * repinfo.adb (Compute_Max_Length): Skip _Parent component. + (List_Record_Layout): Likewise. + +2018-05-28 Ed Schonberg + + * sem_util.adb (Is_Function_Result): Add a warning if a postcondition + includes a call to function to which it applies. This may mean an + omission of an attribute reference 'Result, in particular if the + function is pqrameterless. + +2018-05-28 Justin Squirek + + * sem_ch8.adb (Find_Expanded_Name): Add extra guard to make sure the + misresolved package name is not a case of mistaken identity. + +2018-05-28 Yannick Moy + + * sem_res.adb (Resolve_Range): Re-resolve the low bound of a range in + GNATprove mode, as the order of resolution (low then high) means that + all the information is not available when resolving the low bound the + first time. + +2018-05-28 Eric Botcazou + + * repinfo.adb (List_Array_Info): Start with an explicit blank line and + end with the linker section, if any. + (List_Entities): Do not output the linker section for record types, + array types and variables. + (Print_Expr): Factor out common processing for unary operators and + special values. Adjust and reorder the various cases. + (List_Object_Info): End with the linker section, if any. + (List_Record_Info): Likewise. + (List_Type_Info): Do not start with a blank line. + +2018-05-25 Nicolas Roche + + * libgnat/s-valrea.adb (Scan_Real): Abort computation once it is sure + that the result will be either -infinite or +infinite. + +2018-05-25 Patrick Bernardi + + * libgnat/s-parame.ads, libgnat/s-parame__vxworks.ads, + libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads (Size_Type): + Expand range of type to match the address space of the target. + (Task_Storage_Size): Remove unused type. + +2018-05-25 Ed Schonberg + + * sem_res.adb (Set_Mixed_Mode_Operand): If the operand is an expression + of a fixed point type and the parent is a multiplying operation, + resolve the operand with its own type because the context will impose a + resulting type on the result of the multiplication by means of + approriate conversion. + +2018-05-25 Hristian Kirtchev + + * exp_ch3.adb (Default_Initialize_Object): Ensure that the analysis of + the in-place initialization aggregate created for pragmas + Initialize_Scalars or Normalize_Scalars is performed with checks + suppressed. + +2018-05-25 Arnaud Charlet + + * exp_aggr.adb (Convert_To_Positional): Bump default for + Max_Others_Replicate to 32. Update comments. + * osint.ads (Unknown_Attributes): No longer pretend this is a constant. + (No_File_Info_Cache): Initialize separately. + * osint.adb (No_File_Info_Cache): Update initializer. + +2018-05-25 Javier Miranda + + * sem_res.adb (Resolve_Membership_Op): Allow the use of the membership + test when the left operand is a class-wide interface and the right + operand is not a class-wide type. + * exp_ch4.adb (Tagged_Membership): Adding support for interface as the + left operand. + +2018-05-25 Ed Schonberg + + * exp_aggr.adb (Flatten): A quantified expression cannot be duplicated + in an others clause to prevent visibility issues with the generated + loop variable. + (Component_OK_For_Backend): Return false for a quantified expression. + (Check_Static_Component): Ditto. + +2018-05-25 Hristian Kirtchev + + * libgnat/s-secsta.adb (SS_Allocate): Reimplemented. + (SS_Allocate_Dynamic): New routine. The allocation logic is now split + into three distring cases rather than in one loop which attempts to + handle all three cases. This rewrite eliminates an issue where the last + frame of the stack cannot be freed, thus causing the memory range of a + new frame to approach the overflow point of the memory index type. + Since the overflow is logically treated as a + too-much-memory-on-the-stack scenario, it causes a bogus Storage_Error. + (SS_Allocate_Static): New routine. The routine factorizes the static + secondary stack-related code from the former SS_Allocate. + +2018-05-25 Sergey Rybin + + * doc/gnat_ugn/gnat_and_program_execution.rst: Add description of '-U' + option for gnatelim. + +2018-05-25 Ed Schonberg + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not create + Class_Wide_Clone_Body when analyzing a subprogram_body_stub: the clone + is created when the proper body of the stub is analyzed. + * sem_util.adb (ZBuild_Class_Wide_Clone_Body): If the subprogram body + is the proper body of a subunit, the cloned body must be inserted in + the declarative list that contains the stub. + +2018-05-25 Justin Squirek + + * exp_ch6.adb (Expand_Simple_Function_Return): Add guard in check to + generate code for 6.5(8-10) so that we don't get an assertion error + when dealing with an incomplete return type. + +2018-05-25 Arnaud Charlet + + * pprint.adb (Expression_Name): Strip too long expressions to avoid + carrying very large strings. + +2018-05-25 Patrick Bernardi + + * switch-b.adb (Scan_Binder_Switches): binder switch -Q accepts Natural + numbers. + +2018-05-25 Doug Rupp + + * tracebak.c (aarch64-linux): Implement. + +2018-05-25 Justin Squirek + + * sem_ch8.adb: Minor reformatting. + +2018-05-25 Piotr Trojanek + + * sem_util.adb (Iterate_Call_Parameters): Fix code convention and + assertions. + +2018-05-25 Hristian Kirtchev + + * einfo.adb, einfo.ads, exp_ch3.adb, exp_ch8.adb, exp_unst.adb, + pprint.adb, sem_ch12.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb: + Minor reformatting. + +2018-05-25 Ed Schonberg + + * sem_ch12.adb (Instance_Exists): New function, subsidiary of + Validate_Derived_Type_Instance, to verify that all interfaces + implemented by the formal type are also implemented by the actual. The + verification is complicated when an interface of the formal is declared + in a generic unit and the actual is declared in an instance of it. + There is currently no mechanism to relate an interface declared within + a generic to the corresponding interface in an instance, so we must + traverse the list of interfaces of the actual, looking for a name + match, and verifying that that interface is declared in an instance. + +2018-05-25 Piotr Trojanek + + * sem_util.adb (Iterate_Call_Parameters): Rewrite with extra + assertions; replace function versions of Next_Formal/Next_Actual with + their procedural versions (which are more concise). + +2018-05-25 Doug Rupp + + * libgnarl/s-osinte__aix.ads, libgnarl/s-osinte__android.ads, + libgnarl/s-osinte__darwin.ads, libgnarl/s-osinte__freebsd.ads, + libgnarl/s-osinte__hpux.ads, libgnarl/s-osinte__kfreebsd-gnu.ads, + libgnarl/s-osinte__linux.ads, libgnarl/s-osinte__lynxos178e.ads, + libgnarl/s-osinte__qnx.ads, libgnarl/s-osinte__rtems.ads + (Relative_Timed_Wait): Remove. + * libgnarl/s-tpopmo.adb (Timed_Sleep, Timed_Delay): Rewrite to allow + for incremental looping. Remove references to Rel_Time and + Relative_Timed_Wait. + * libgnat/s-osprim__posix.adb, libgnat/s-osprim__posix2008.adb + (Timed_Delay): Make separate. + * libgnat/s-optide.adb: New separate procedure. + * libgnat/s-osprim.ads (Max_System_Delay): New constant. + * libgnat/s-osprim__lynxos.ads (Max_Sensible_Delay): Set to 6 months. + (Max_System_Delay): New constant. + +2018-05-25 Ed Schonberg + + * sem_ch12.adb (Validate_Derived_Type_Instance): Verify that the actual + for a formal derived type implements all the interfaces declared for + the formal. + +2018-05-25 Yannick Moy + + * sem_prag.adb (Check_Applicable_Policy): Deal specially with CodePeer + and GNATprove modes when applicable policy is Ignore. + +2018-05-25 Eric Botcazou + + * freeze.adb (Freeze_Enumeration_Type): Do not give integer size to a + boolean type with convention C. + * libgnat/i-cexten.ads (bool): Change to boolean with convention C. + * gcc-interface/decl.c (gnat_to_gnu_entity): Add new local variable + FOREIGN and use it throughout the function. + : Set precision 1 on boolean types with foreign + convention. + : Likewise for subtypes. + : Force the size of a storage unit on empty classes. + * gcc-interface/utils.c (make_type_from_size) : Skip + boolean types with precision 1 if the size is the expected one. + +2018-05-25 Arnaud Charlet + + * pprint.adb (Expression_Name): Do not print non ASCII characters. + +2018-05-25 Bob Duff + + * libgnat/a-strunb__shared.ads, libgnat/a-stwiun__shared.ads, + libgnat/a-stzunb__shared.ads: (Initialize, Adjust): Add pragma Inline. + +2018-05-25 Bob Duff + + * sem_util.ads: Minor comment fix. + +2018-05-25 Ed Schonberg + + * exp_unst.adb (Visit_Node): Restrict check for uplevel references in + prefixes of array attributes, to prefixes that are entity names whose + type is constrained. + (Note_Uplevel_Bound): Verify that the bound is declared in an enclosing + subprogram, as itype created for loops in pre/postcondition may appear + in loops at the library level. + +2018-05-25 Ed Schonberg + + * sem_ch13.adb (Build_Predicate_Functions): The predicate function + declaration is inserted into the tree and analyzed at that point, so + should not be reinserted when the body is constructed. Inside a + generic, ensure that the body is not inserted twice in the tree. + +2018-05-25 Yannick Moy + + * sem_prag.adb (Check_Grouping): Modify test to ignore statements and + declarations not coming from source. + +2018-05-25 Fedor Rybin + + * doc/gnat_ugn/gnat_utility_programs.rst: Document new switch + --copy-environment for gnattest. + +2018-05-24 Piotr Trojanek + + * sem_elab.adb (Non_Private_View): Simplify by removing a local Result + variable. + * sem_prag.adb (Get_Base_Subprogram): Same as above. + +2018-05-24 Eric Botcazou + + * fe.h (Set_Normalized_First_Bit): Declare. + (Set_Normalized_Position): Likewise. + * repinfo.adb (List_Record_Layout): Do not use irregular output for a + variable position. Fix minor spacing issue. + * gcc-interface/decl.c (annotate_rep): If a field has a variable + offset, compute the normalized position and annotate it in addition to + the bit offset. + +2018-05-24 Eric Botcazou + + * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): + Constify and rename variables. Fix formatting. + (gnat_to_gnu) : Minor tweak. + : Likewise. + +2018-05-24 Javier Miranda + + * exp_ch8.adb (Build_Body_For_Renaming): Adding support to build the + body of a variant record equality renaming. + (Expand_N_Subprogram_Renaming_Declaration): Adapt the code to the new + implementation of Build_Body_For_Renaming. + * exp_ch3.ads (Build_Variant_Record_Equality): New library level + function that factorizes the functionality needed by + Build_Body_For_Renaming and Expand_Freeze_Record_Type to build the body + of a variant record equality subprogram. + * exp_ch3.adb (Build_Variant_Record_Equality): New subprogram. + (Build_Variant_Record_Equality): New local procedure of + Expand_Freeze_Record_Type containing all the code specific for freezing + the record type that cannot be place in the new library level function. + +2018-05-24 Ed Schonberg + + * einfo.ads, einfo.adb (Is_Activation_Record): New flag on + in_parameters, used when unesting subprograms for LLVM, to indicate + that a generated parameter carries the activation record from the + enclosing subprogram. + * exp_unst.adb (Check_Static_Type): Handle array attributes of types + whose bounds may contain up-level references that need to be added to + an activation recoord. + (Add_Extra_Formal): Set Is_Activation_Record on new formal. + +2018-05-24 Yannick Moy + + * pprint.adb (Expression_Image): Improve the printing of expressions, + by taking more cases into account, in particular qualified expressions + and aggregates. Also count more the number of parentheses to close + after the expression. + +2018-05-24 Javier Miranda + + * sem_ch3.adb (Is_Visible_Component): For untagged types add missing + check for renamed discriminants. + * sem_ch4.adb (Analyze_Overloaded_Selected_Component, + Analyze_Selected_Component, Check_Misspelled_Selector): For calls to + Is_Visible_Component pass the associated selector node to allow + checking renamed discriminants on untagged types. + +2018-05-24 Ed Schonberg + + * sem_ch8.adb (Analyze_Use_Type): Do not assign the Prev_Use_Clause + link to a use_type clause if this would cause an infinite loop in the + machinery that detects redundant use clauses. This may happen when the + redundant clauses appear in the context of a child unit and the context + of its parent. + +2018-05-24 Piotr Trojanek + + * sinfo.ads: Fix grammar in comment. + +2018-05-24 Justin Squirek + + * einfo.ads, einfo.adb (Append_Entity): Modified to use Link_Entities + and manage doubly-linked entity chain. + (Nested_Scenarios): Removed entity field used for optimization during + elaboration to make room for the new field Prev_Entity. + (Link_Entities): Added to replace redundant calls to Set_Next_Entity + and Set_Prev_Entity as well as centralize changes to the entity chain. + (Predicated_Parent): Modified to use Node38. + (Prev_Entity): Added to fetch new node field Prev_Entity in all entity + types. + (Remove_Entity): Moved from sem_util. + (Set_Nested_Scenarios): Deleted. + (Set_Predicated_Parent): Modified to use Node38. + (Set_Prev_Entity): Added to set Prev_Entity field. + (Set_Validated_Object): Modified to use Node38. + (Unlink_Next_Entity): Added to process Prev_Entity when an unlinking + action is required. + (Validated_Object): Modified to use Node38. + (Write_Field36_Name): Remove Nested_Scenarios, Validated_Object, and + predicated parent cases. + (Write_Field38_Name): Add predicated parent and Validated_Object cases. + * sem_ch3.adb (Process_Subtype): Add guard to protect against + inappropriate marking of Predicated_Parent to non-itype subtypes. + (Make_Class_Wide_Type): Preserve Prev_Entity field and set in new type. + (Copy_And_Swap): Add setting of Prev_Entity. + (Build_derived_Record_Type): Replace Set_Next_Entity w/ Link_Entities. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Replace Set_Next_Entity + w/ Link_Entities. + (New_Overloaded_Entity): Remove block created to search for previous + entities in the entity chain with relevant calls to Prev_Entity as well + as replace duplicated code from Remove_Entity_And_Homonym with a call + to that subprogram. + * sem_ch7.adb (Exchange_Declarations): Replace Set_Next_Entity w/ + Link_Entities. + * sem_elab.adb (Find_And_Process_Nested_Scenarios): Remove global and + initial subprogram declarations related to Nested_Scenarios. + (Process_Nested_Scenarios): Deleted. + (Save_Scenario): Deleted. + (Traverse_Body): Remove optimization for Nested_Scenarios so as to free + node space in the entity tree. + * sem_util.adb, sem_util.ads (Remove_Entity): Moved to einfo. + (Remove_Entity_And_Homonym): Added to separate functionality of + Remove_Entity from the homonym chain directly. + * exp_attr.adb (Expand_N_Attribute_Reference): Replace Set_Next_Entity + w/ Link_Entities and Unlink_Next_Entity. + * exp_ch3.adb (Expand_N_Object_Declaration): Replace Set_Next_Entity w/ + Link_Entities. + * exp_ch6.adb (Replace_Renaming_Declaration_Id): Replace + Set_Next_Entity w/ Link_Entities. + * exp_disp.adb (Expand_Dispatching_Call): Replace Set_Next_Entity w/ + Link_Entities and Unlink_Next_Entity. + * exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Replace + call to Remove_Entity with its new incarnation. + * exp_util.adb (New_Class_Wide_Subtype): Add setting of Prev_Entity. + * freeze.adb (Freeze_Record_Type): Replace Set_Next_Entity w/ + Link_Entities. + +2018-05-24 Hristian Kirtchev + + * sem_ch10.adb (Expand_Limited_With_Clause): Update the call to + Install_Limited_Withed_Unit. + (Expand_With_Clause): Update the call to Install_Withed_Unit. + (Implicit_With_On_Parent): Update the call to Install_Withed_Unit. + (Install_Context_Clauses): Update the call to Install_Withed_Unit. + (Install_Limited_Context_Clauses): Update the calls to + Install_Limited_Withed_Unit. + (Install_Limited_Withed_Unit): Renamed to better illustrate its + purpose. + (Install_Private_With_Clauses): Update the calls to Install_Withed_Unit + and Install_Limited_Withed_Unit. + (Install_With_Clause): Uninstall a limited with clause if a [private] + with clause is given for the same package. + (Install_Withed_Unit): Renamed to better illustrate its purpose. + (Remove_Limited_With_Unit): New routine. + +2018-05-24 Eric Botcazou + + * raise-gcc.c (__gnat_SEH_error_handler): Remove prototype. + (__gnat_personality_seh0): Adjust and beef up comments, and + fix formatting throughout. + (__gnat_adjust_context): Deal minimally with version 2. + * seh_init.c (__gnat_map_SEH): Fix formatting. + (_gnat_SEH_error_handler): Adjust comments. + (__gnat_install_SEH_handler): Fix formatting. + +2018-05-24 Hristian Kirtchev + + * exp_ch7.adb, sem_ch3.adb, sem_res.adb: Minor reformatting. + +2018-05-24 Ed Schonberg + + * exp_aggr.adb (Flatten): Add a warning on an others clause in an array + aggregate with static bounds when named associations cover all index + positions and the others clause is redundant. + +2018-05-24 Raphael Amiard + + * libgnat/a-cohama.ads: Add documentation. + +2018-05-24 Raphael Amiard + + * libgnat/a-convec.ads: Add documentation. + +2018-05-24 Justin Squirek + + * exp_ch3.adb (Expand_N_Object_Declaration): Ignore raising an error in + expansion for limited tagged types when the node to be expanded is a + raise expression due to it not representing a valid object. + * exp_ch5.adb (Expand_N_Assignment_Statement): Add exception to error + message regarding assignments to limited types to ignore genereated + code. + +2018-05-24 Hristian Kirtchev + + * exp_util.adb (New_Class_Wide_Subtype): Capture and restore relevant + Ghost-related attributes of the class-wide subtype because the copy + clobbers them. + +2018-05-24 Justin Squirek + + * sem_res.adb (Resolve_Entity_Name): Add guard to protect against + marking use clauses as effective when the reference appears within + generated code. + +2018-05-24 Cyrille Comar + + * doc/gnat_rm/the_gnat_library.rst: Fix typos. + * gnat_rm.texi: Regenerate. + +2018-05-24 Bob Duff + + * exp_ch7.adb (Expand_Cleanup_Actions): Create a mark unconditionally + for build-in-place functions with a caller-unknown-size result. + (Create_Finalizer): For build-in-place functions with a + caller-unknown-size result, check at run time whether we need to + release the secondary stack. + +2018-05-24 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Use the full view of an internally + generated incomplete type. + +2018-05-24 Hristian Kirtchev + + * expander.adb (Expand): Update the save and restore of the Ghost + region. + * exp_ch3.adb (Freeze_Type): Likewise. + * exp_disp.adb (Make_DT): Likewise. + * exp_util.adb (Build_DIC_Procedure_Body): Likewise. + (Build_DIC_Procedure_Declaration): Likewise. + (Build_Invariant_Procedure_Body): Likewise. + (Build_Invariant_Procedure_Declaration): Likewise. + (Make_Predicate_Call): Likewise. + * freeze.adb (Add_To_Result): Insert the freeze action of a living + entity prior to the start of the enclosing ignored Ghost region. + (Freeze_Entity): Update the save and restore of the Ghost region. + * ghost.adb (Install_Ghost_Mode): Reimplemented. + (Install_Ghost_Region): New routine. + (Mark_And_Set_Ghost_Assignment): Install a region rather than a mode. + (Mark_And_Set_Ghost_Body): Likewise. + (Mark_And_Set_Ghost_Completion): Likewise. + (Mark_And_Set_Ghost_Declaration): Likewise. + (Mark_And_Set_Ghost_Instantiation): Likewise. + (Mark_And_Set_Ghost_Procedure_Call): Likewise. + (Name_To_Ghost_Mode): New routine. + (Restore_Ghost_Region): New routine. + * ghost.ads (Install_Ghost_Region): New routine. + (Restore_Ghost_Region): New routine. + * opt.ads: Add new global variable Ignored_Ghost_Region. + * rtsfind.adb (Load_RTU): Update the save and restore of the Ghost + region. Install a clean region. + * sem.adb (Analyze): Likewise. + (Do_Analyze): Likewise. + * sem_ch3.adb (Analyze_Object_Declaration): Likewise + (Derive_Progenitor_Subprograms): Use local variable Iface_Alias to + capture the ultimate alias of the current primitive. + (Process_Full_View): Update the save and restore of the Ghost region. + Do not inherit DIC and invariant procedures. + * sem_ch5.adb (Analyze_Assignment): Update the save and restore of the + Ghost region. + * sem_ch6.adb (Analyze_Procedure_Call): Likewise. + (Analyze_Subprogram_Body_Helper): Likewise. + * sem_ch7.adb (Analyze_Package_Body_Helper): Likewise. + * sem_ch12.adb (Analyze_Package_Instantiation): Likewise. + (Analyze_Subprogram_Instantiation): Likewise. + (Instantiate_Package_Body): Likewise. + (Instantiate_Subprogram_Body): Likewise. + * sem_ch13.adb (Build_Predicate_Functions): Likewise. + (Build_Predicate_Function_Declaration): Likewise. + * sem_disp.adb + (Add_Dispatching_Operation): Do not consider DIC and invariant + procedures. + (Check_Dispatching_Operation): Use Add_Dispatching_Operation to collect + a dispatching subprogram. + (Check_Operation_From_Private_View): Likewise. + (Override_Dispatching_Operation): Likewise. + * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Update the save + and restore of the Ghost region. + (Analyze_Initial_Condition_In_Decl_Part): Likewise. + (Analyze_Pragma): Update the save and restore of the Ghost region. + (Analyze_Pre_Post_Condition_In_Decl_Part): Likewise. + * sem_util.adb (Is_Suitable_Primitive): New routine. + * sem_util.ads (Is_Suitable_Primitive): New routine. + * sinfo.ads: Update the section of Ghost regions. + +2018-05-24 Piotr Trojanek + + * doc/gnat_rm/implementation_defined_pragmas.rst (Contract_Cases): + Change "condition" to "case guard" after renaming in the contract + grammar. + * gnat_rm.texi: Regenerate. + +2018-05-24 Hristian Kirtchev + + * exp_util.adb (Expand_Static_Predicates_In_Choices): Indicate that the + construct with discrete choices no longer contains a subtype with + predicates since the expansion already handled this case. + +2018-05-24 Hristian Kirtchev + + * freeze.adb (Wrap_Imported_Subprogram): Generate an unchecked + conversion to the return type to avoid a side effect where an imported + relocated function generates a new anonymous access type, whose + accessibility level does not agree with with that of the wrapper. + +2018-05-24 Javier Miranda + + * sem_util.adb (Abstract_Interface_List): Add missing support for + private types whose full view is a synchronized type. + * sem_ch3.adb (Build_Derived_Private_Type): Skip building the full + derivation of a private type parent type is a task type with + discriminants as gigi does not use such type directly. + +2018-05-24 Hristian Kirtchev + + * sem_elab.adb (Build_Variable_Reference_Marker): Do not create a + variable marker when the reference appears in the formal part of a + compilation unit instance because there is no place to insert it. + (In_Compilation_Instance_Formal_Part): New routine. + +2018-05-24 Piotr Trojanek + + * layout.ads, repinfo.ads: Fix references to renamed Backend_Layout + configuration parameter. + +2018-05-24 Doug Rupp + + * argv-lynxos178-raven-cert.c: New file. + * libgnat/system-lynxos178-x86.ads: New file. + +2018-05-23 Hristian Kirtchev + + * exp_disp.adb, freeze.adb, gnat1drv.adb, sem_ch5.adb, sem_spark.adb: + Minor reformattings. + +2018-05-23 Pascal Obry + + * adaint.c (win32_wait): Properly free the handle/pid lists when + WaitForMultipleObjects fails (return WAIT_FAILED). + +2018-05-23 Pascal Obry + + * adaint.c (win32_wait): Add missing parentheses. + +2018-05-23 Hristian Kirtchev + + * exp_ch3.adb (Check_Large_Modular_Array): Moved to Freeze. + (Expand_N_Object_Declaration): Do not check for a large modular array + here. + * freeze.adb (Check_Large_Modular_Array): Moved from Exp_Ch3. + (Freeze_Object_Declaration): Code cleanup. Check for a large modular + array. + * sem_ch3.adb: Minor reformatting. + +2018-05-23 Ed Schonberg + + * einfo.ads: New attribute on types: Predicated_Parent, to simplify the + retrieval of the applicable predicate function to an itype created for + a constrained array component. + * einfo.adb: Subprograms for Predicated_Parent. + (Predicate_Function): Use new attribute. + * exp_util.adb (Make_Predicate_Call): If the predicate function is not + available for a subtype, retrieve it from the base type, which may have + been frozen after the subtype declaration and not captured by the + subtype declaration. + * sem_aggr.adb (Resolve_Array_Aggregate): An Others association is + legal within a generated initiqlization procedure, as may happen with a + predicate check on a component, when the predicate function applies to + the base type of the component. + * sem_ch3.adb (Analyze_Subtype_Declaration): Clean up inheritance of + predicates for subtype declarations and for subtype indications in + other contexts. + (Process_Subtype): Likewise. Handle properly the case of a private type + with unknown discriminants whose full view is an unconstrained array. + Use Predicated_Parent to indicate source of predicate function on an + itype whose parent is itself an itype. + (Complete_Private_Subtype): If the private view has unknown + discriminants and the full view is an unconstrained array, set base + type of completion to the full view of parent. + (Inherit_Predicate_Flags): Prevent double assignment of predicate + function and flags. + (Build_Subtype): For a constrained array component, propagate predicate + information from original component type declaration. + +2018-05-23 Boris Yakobowski + + * libgnat/a-ngelfu.ads (Arctanh, Arccoth): Fix faulty preconditions. + +2018-05-23 Arnaud Charlet + + * checks.adb (Minimize_Eliminate_Overflows): Default initialize Lo and + Hi. + * sem_elab.adb: Make "out" parameters instead of "in out" when + relevant. + +2018-05-23 Bob Duff + + * gnatbind.adb (List_Applicable_Restrictions): Add + No_Implementation_Restrictions to the list of restrictions not to list. + Remove double negative "not No_Restriction_List". Comment the + commentary that is output, so it won't cause errors if used directly in + a gnat.adc. + +2018-05-23 Ed Schonberg + + * sem_prag.adb (Inherit_Class_Wide_Pre): Refine legality check on + class-wide precondition on a type extension when ancestor does not have + a class-wide precondition. Previously the compiler accepted such a + precondition when the ancestor had a class-wide postcondition. + +2018-05-23 Javier Miranda + + * sem_attr.adb (Valid_Scalars): Do not invoke Error_Attr_P to report + the warning on occurrences of this attribute whose evaluation is always + true (since that subprogram aborts processing the attribute). In + addition, replace the node by its boolean result 'True' (required + because the backend has no knowledge of this attribute). + +2018-05-23 Bob Duff + + * libgnat/a-convec.adb: (Insert, Insert_Space): Suppress warnings. The + code in question is not reachable in the case where Count_Type'Last is + out of range. + +2018-05-23 Yannick Moy + + * doc/gnat_rm/implementation_defined_pragmas.rst: Clarify meaning of + local pragma Warnings Off without On. + * gnat_rm.texi: Regenerate. + +2018-05-23 Olivier Hainque + + * libgnat/g-excact.ads (Is_Foreign_Exception): New predicate. + * libgnat/g-excact.adb: Implement. + +2018-05-23 Ed Schonberg + + * sem_ch5.adb (Analyze_Iterator_Specification): If a subtype indication + is present, verify its legality when the domain of iteration is a + GNAT-specific formal container, as is already done for arrays and + predefined containers. + +2018-05-23 Yannick Moy + + * sem_util.adb (Enclosing_Declaration): Fix the case of a named number + declaration, which was not taken into account. + +2018-05-23 Hristian Kirtchev + + * debug.adb: Switch -gnatd_s is now used to stop elaboration checks on + synchronized suspension. + * rtsfind.ads: Add entries for units Ada.Synchronous_Barriers and + Ada.Synchronous_Task_Control and routines Suspend_Until_True and + Wait_For_Release. + * sem_elab.adb: Document switch -gnatd_s. + (In_Task_Body): New routine. + (Is_Potential_Scenario): Code cleanup. Stop the traversal of a task + body when the current construct denotes a synchronous suspension call, + and restriction No_Entry_Calls_In_Elaboration_Code or switch -gnatd_s + is in effect. + (Is_Synchronous_Suspension_Call): New routine. + * switch-c.adb (Scan_Front_End_Switches): Switch -gnatJ now sets switch + -gnatd_s. + +2018-05-23 Javier Miranda + + * exp_disp.adb (Make_DT): Restrict the initialization of + External_Tag and Expanded_Name to an empty string to the case where + both pragmas apply (i.e. No_Tagged_Streams and Discard_Names), since + restricted runtimes are compiled with pragma Discard_Names. + * doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_rm/implementation_defined_characteristics.rst: Add + documentation. + * gnat_rm.texi: Regenerate. + +2018-05-23 Maroua Maalej + + * sem_spark.adb: Fix of some permission rules of pointers in SPARK. + +2018-05-23 Ed Schonberg + + * sem_ch5.adb (Preanalyze_Range): The pre-analysis of the domain of + iteration of an Ada2012 loop is performed to determine the type of the + domain, but full analysis is performed once the loop is rewritten as a + while-loop during expansion. The pre-analysis suppresses expansion; it + must also suppress the generation of freeze nodes, which may otherwise + appear in the wrong scope before rewritting. + +2018-05-23 Hristian Kirtchev + + * sem_elab.adb: Update the section on suppressing elaboration warnings. + +2018-05-23 Hristian Kirtchev + + * einfo.adb (Is_Elaboration_Checks_OK_Id): Use predicate + Is_Elaboration_Target. + (Is_Elaboration_Target): New routine. + (Is_Elaboration_Warnings_OK_Id): Use predicate Is_Elaboration_Target. + (Set_Is_Elaboration_Checks_OK_Id): Use predicate Is_Elaboration_Target. + (Set_Is_Elaboration_Warnings_OK_Id): Use predicate + Is_Elaboration_Target. + * einfo.ads: Add new synthesized attribute Is_Elaboration_Target along + with occurrences in nodes. + (Is_Elaboration_Target): New routine. + * sem_prag.adb (Analyze_Pragma): Suppress elaboration warnings when an + elaboration target is subject to pragma Warnings (Off, ...). + +2018-05-23 Eric Botcazou + + * repinfo.adb (List_Type_Info): Remove obsolete stuff. + +2018-05-23 Hristian Kirtchev + + * einfo.adb: Flag304 is now Is_Elaboration_Warnings_OK_Id. + (Is_Elaboration_Warnings_OK_Id): New routine. + (Set_Is_Elaboration_Warnings_OK_Id): New routine. + (Write_Entity_Flags): Output Flag304. + * einfo.ads: Add new attribute Is_Elaboration_Warnings_OK_Id along with + occurrences in entities. + (Is_Elaboration_Warnings_OK_Id): New routine along with pragma Inline. + (Set_Is_Elaboration_Warnings_OK_Id): New routine along with pragma + Inline. + * sem_attr.adb (Analyze_Access_Attribute): Capture the state of + elaboration warnings. + * sem_ch3.adb (Analyze_Object_Declaration): Capture the state of + elaboration warnings. + * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Capture the + state of elaboration warnings. + (Analyze_Subprogram_Body_Helper): Capture the state of elaboration + warnings. + (Analyze_Subprogram_Declaration): Capture the state of elaboration + warnings. + * sem_ch9.adb (Analyze_Entry_Declaration): Capture the state of + elaboration warnings. + (Analyze_Single_Task_Declaration): Capture the state of elaboration + warnings. + (Analyze_Task_Type_Declaration): Capture the state of elaboration + warnings. + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Capture the state + of elaboration warnings. + (Analyze_Generic_Subprogram_Declaration): Capture the state of + elaboration warnings. + * sem_elab.adb: Add a section on suppressing elaboration warnings. + Type Processing_Attributes includes component Suppress_Warnings + intended to suppress any elaboration warnings along a path in the + graph. Update Initial_State to include a value for this component. + Types Target_Attributes and Task_Attriutes include component + Elab_Warnings_OK to indicate whether the target or task has elaboration + warnings enabled. component Elab_Warnings_OK. + (Build_Access_Marker): Propagate attribute + Is_Elaboration_Warnings_OK_Node from the attribute to the generated + call marker. + (Extract_Instantiation_Attributes): Set the value for Elab_Warnings_OK. + (Extract_Target_Attributes): Set the value for Elab_Warnings_OK. + (Extract_Task_Attributes): Set the value for Elab_Warnings_OK. + (Process_Conditional_ABE_Access): Suppress futher elaboration warnings + when already in this mode or when the attribute or target have warnings + suppressed. + (Process_Conditional_ABE_Activation_Impl): Do not emit any diagnostics + if warnings are suppressed. + (Process_Conditional_ABE_Call): Suppress further elaboration warnings + when already in this mode, or the target or call have warnings + suppressed. + (Process_Conditional_ABE_Call_Ada): Do not emit any diagnostics if + warnings are suppressed. + (Process_Conditional_ABE_Call_SPARK): Do not emit any diagnostics if + warnings are suppressed. + (Process_Conditional_ABE_Instantiation): Suppress further elaboration + warnings when already in this mode or when the instantiation has + warnings suppressed. + (Process_Conditional_ABE_Instantiation_Ada): Do not emit any + diagnostics if warnings are suppressed. + (Process_Conditional_ABE_Variable_Assignment_Ada): Use the more + specific Is_Elaboration_Warnings_OK_Id rather than Warnings_Off. + (Process_Conditional_ABE_Variable_Assignment_SPARK): Use the more + specific Is_Elaboration_Warnings_OK_Id rather than Warnings_Off. + (Process_Task_Object): Suppress further elaboration warnings when + already in this mode, or when the object, activation call, or task type + have warnings suppressed. Update the processing state to indicate that + the path goes through a task body. + * sinfo.adb (Is_Elaboration_Warnings_OK_Node): Accept attribute + references. + (Set_Is_Elaboration_Warnings_OK_Node): Accept attribute references. + * sinfo.ads: Attribute Is_Elaboration_Warnings_OK_Node now applies to + attribute references. + +2018-05-23 Piotr Trojanek + + * einfo.ads: Minor reformatting. + +2018-05-23 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): If expression is an + anonymous_access_to_ subprogram formal, apply a conversion to force an + accsssibility check that will fail statically, enforcing 3.10.2 (13). + +2018-05-23 Daniel Mercier + + * gnat1drv.adb: Turn off length expansion in CodePeer mode. + +2018-05-23 Bob Duff + + * freeze.adb: (Check_Address_Clause): Deal with build-in-place + aggregates in addition to build-in-place calls. + +2018-05-23 Bob Duff + + * einfo.ads: Minor reformatting. + * sem_ch3.adb: Likewise. + * sinfo.ads: Likewise. + +2018-05-23 Hristian Kirtchev + + * exp_ch3.adb (Default_Initialize_Object): Do not optimize scalar array + initialization when the component type has predicates. + * exp_ch4.adb (Expand_N_Allocator): Do not optimize scalar array + allocation when the component type has predicates. + +2018-05-23 Hristian Kirtchev + + * einfo.adb, exp_disp.adb, sem_ch3.adb, sem_ch6.adb, sem_prag.adb: + Minor reformatting. + +2018-05-22 Justin Squirek + + * sem_ch6.adb (Analyze_Expression_Function): Propagate flags from the + original function spec into the generated function spec due to + expansion of expression functions during analysis. + (Analyze_Subprogram_Body_Helper): Modify check on formal parameter + references from the body to the subprogram spec in the case of + expression functions because of inconsistances related to having a + generated body. + * libgnarl/s-osinte__android.ads: Flag parameters as unused. + * libgnarl/s-osinte__lynxos178e.ads: Likewise. + * libgnarl/s-osinte__qnx.adb: Likewise. + * libgnarl/s-osinte__qnx.ads: Likewise. + +2018-05-22 Doug Rupp + + * init.c (HAVE_ADJUST_CONTEXT_FOR_RAISE): Don't define on VxWorks7 for + AArch64. + +2018-05-22 Olivier Hainque + + * libgnat/a-except.adb (Exception_Propagation.Propagate_Exception): + Expect an Exception_Occurence object, not an Access. + (Complete_And_Propagate_Occurrence): Adjust accordingly. + (Raise_From_Signal_Handler): Likewise. + (Reraise_Occurrence_No_Defer): If we have a Machine_Occurrence + available in the provided occurrence object, just re-propagate the + latter as a bare "raise;" would do. + * libgnat/a-exexpr.adb (Propagate_Exception): Adjust to spec change. + * libgnat/a-exstat.adb (String_To_EO): Initialize X.Machine_Occurrence + to null, to mark that the occurrence we're crafting from the stream + contents is not being propagated (yet). + +2018-05-22 Hristian Kirtchev + + * exp_aggr.adb (Initialize_Ctrl_Record_Component): Insert the generated + code for a transient component in line with the rest of the + initialization code, rather than before the aggregate. This ensures + that the component has proper visibility of the discriminants. + +2018-05-22 Jerome Lambourg + + * adaint.c: Reorganize QNX-specific macros, use syspage to retreive the + number of CPUs. + +2018-05-22 Jerome Lambourg + + * sigtramp-qnx.c: Properly restore link register in signal trampoline. + +2018-05-22 Hristian Kirtchev + + * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Strip away any + conversions before extracting the value of the expression. + * exp_ch3.adb (Default_Initialize_Object): Optimize the default + initialization of an array of scalars. + (Get_Simple_Init_Val): Add processing for array types. Remove the + processing of strings because this case is already handled by the array + case. + (Needs_Simple_Initialization): Moved to Sem_Util. + (Simple_Init_Array_Type): New routine. + (Simple_Init_Initialize_Scalars_Type): Reimplemented to use the new + facilities from Sem_Util. + (Simple_Initialization_OK): New routine. + * exp_ch3.ads (Needs_Simple_Initialization): Moved to Sem_Util. + * exp_ch4.adb (Expand_N_Allocator): Optimize the default allocation of + an array of scalars. + * sem_prag.adb (Analyze_Float_Value): New routine. + (Analyze_Integer_Value): New routine. + (Analyze_Pragma): Reimplement the analysis of pragma Initialize_Scalars + to handled the extended form of the pragma. + (Analyze_Type_Value_Pair): New routine. + * sem_util.adb: Add invalid value-related data structures. + (Examine_Array_Bounds): New routine. + (Has_Static_Array_Bounds): Reimplemented. + (Has_Static_Non_Empty_Array_Bounds): New routine. + (Invalid_Scalar_Value): New routine. + (Needs_Simple_Initialization): Moved from Exp_Ch3. + (Set_Invalid_Scalar_Value): New routines. + * sem_util.ads (Has_Static_Non_Empty_Array_Bounds): New routine. + (Invalid_Scalar_Value): New routine. + (Needs_Simple_Initialization): Moved from Exp_Ch3. + (Set_Invalid_Scalar_Value): New routines. + * snames.ads-tmpl: Add names for the salar type families used by pragma + Initialize_Scalars. + +2018-05-22 Javier Miranda + + * exp_disp.adb (Make_DT): Initialize the External_Tag with an empty + string when pragma No_Tagged_Streams is applicable to the tagged type, + and initialize the Expanded_Name with an empty string when pragma + Discard_Names is applicable to the tagged type. + +2018-05-22 Ed Schonberg + + * sem_ch6.adb (Check_Conformance): Add RM reference for rule that a + formal subprogram is never subtype conformqnt, and thus cannot be the + prefix of 'Access. Reject as well the attribute when applied to a + renaming of a formal subprogram. + +2018-05-22 Hristian Kirtchev + + * exp_ch3.adb (Build_Array_Init_Proc): Update the call to + Needs_Simple_Initialization. + (Build_Init_Statements): Update the call to Get_Simple_Init_Val. + (Check_Subtype_Bounds): Renamed to Extract_Subtype_Bounds. Update the + profile and comment on usage. + (Default_Initialize_Object): Do not use New_Copy_Tree to set the proper + Sloc of a value obtained from aspect Default_Value because this could + potentially replicate large trees. The proper Sloc is now set in + Get_Simple_Init_Val. + (Get_Simple_Init_Val): Reorganized by breaking the various cases into + separate routines. Eliminate the use of global variables. + (Init_Component): Update the call to Get_Simple_Init_Val. + (Needs_Simple_Initialization): Update the parameter profile and all + uses of T. + (Simple_Init_Defaulted_Type): Copy the value of aspect Default_Value + and set the proper Sloc. + * exp_ch3.ads (Get_Simple_Init_Val): Update the parameter profile and + comment on usage. + (Needs_Simple_Initialization): Update the parameter profile. + +2018-05-22 Patrick Bernardi + + * sem_ch3.adb (Build_Discriminant_Constraints): Raise an error if the + user tries to use a subtype indication as a discriminant constraint. + +2018-05-22 Ed Schonberg + + * exp_ch4.ads, exp_ch4.adb, exp_util.adb, expander.adb: Remove mention + of N_Reduction_Expression and N_Reduction_Expression_Parameter. + * par-ch4.adb: Remove parsing routines for reduction expressions. + * sem.adb, sinfo.ads, sinfo.adb, sem_ch4.ads, sem_ch4.adb, sem_res.adb, + sem_spark.adb, sprint.adb: Remove analysis routines for reduction + expressions. + +2018-05-22 Arnaud Charlet + + * sem_ch8.adb (Check_Frozen_Renaming): Do not emit error in + Relaxed_RM_Semantics mode. + +2018-05-22 Arnaud Charlet + + * comperr.adb (Delete_SCIL_Files): Take into account + N_Generic_Package_Renaming_Declaration. + +2018-05-22 Ed Schonberg + + * sem_ch3.adb (Search_Derivation_Levels): Whenever a parent type is + private, use the full view if available, because it may include renamed + discriminants whose values are stored in the corresponding + Stored_Constraint. + +2018-05-22 Ed Schonberg + + * einfo.ads, einfo.adb: New attribute Hidden_In_Formal_Instance, + defined on packages that are actuals for formal packages, in order to + set/reset the visibility of the formals of a formal package with given + actuals, when there are subsequent uses of those formals in the + enclosing generic, as required by RN 12.7 (10). + * atree.ads, atree.adb: Add operations for Elist30. + * atree.h: Add Elist30. + * sem_ch12.adb (Analyze_Formal_Package_Instantiation): Collect formals + that are not defaulted and are thus not visible within the current + instance. + (Check_Formal_Packages): Reset visibility of formals of a formal + package that are not defaulted, on exit from current instance. + +2018-05-22 Hristian Kirtchev + + * sem_prag.adb (Analyze_Input_Output): Emit an error when a non-null, + non-'Result output appears in the output list of a function. + +2018-05-22 Hristian Kirtchev + + * exp_attr.adb (Build_Array_VS_Func): Reimplemented. + (Build_Record_VS_Func): Reimplemented. + (Expand_N_Attribute): Reimplement the handling of attribute + 'Valid_Scalars. + * sem_attr.adb (Analyze_Attribute): Reimplement the handling of + attribute 'Valid_Scalars. + * sem_util.adb (Scalar_Part_Present): Reimplemented. + (Validated_View): New routine. + * sem_util.ads (Scalar_Part_Present): Update the parameter profile and + comment on usage. + (Validated_View): New routine. + * doc/gnat_rm/implementation_defined_attributes.rst: Update the + documentation of attribute 'Valid_Scalars. + * gnat_rm.texi: Regenerate. + +2018-05-22 Bob Duff + + * binde.adb: (Choose): Ignore a pragma Elaborate_Body that appears in + the spec of a SAL_Interface package. + +2018-05-22 Ed Schonberg + + * freeze.adb (Freeze_Entity): When analyzing delayed aspects of an + entity E within a generic unit, indicate that there are no remaining + delayed aspects after invoking Analyze_Aspects_At_Freeze_Point. The + entity E is not frozen yet but the aspects should not be reanalyzed at + the freeze point, which may be outside of the generic and may not have + the proper visibility. + +2018-05-22 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for + the new --split-line-before-record, --indent-named-statements and + --no-align-modes gnatpp switches. + +2018-05-22 Ed Schonberg + + * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Handle properly + a second argument that is a constant of a given string value. + +2018-05-22 Doug Rupp + + * sigtramp-vxworks-target.inc: Align stack to 128bits on AArch64. + +2018-05-22 Jerome Lambourg + + * sigtramp-qnx.c: Fix stack alignment issue in the signal trampoline. + +2018-05-22 Ed Schonberg + + * freeze.adb (Freeze_Fixed_Point_Type): If the first subtype has + delayed aspects, analyze them now, os that the representation of the + type (size, bounds) can be computed and validated. + +2018-05-22 Olivier Hainque + + * libgnat/s-dwalin.adb (Enable_Cache): Skip symbols outside of the + executable code section boundaries. + +2018-05-22 Javier Miranda + + * locales.c: New implementation for the Ada.Locales package. + * libgnat/a-locale.ads: Remove comment indicating that this is not + implemented. + * doc/gnat_rm/standard_library_routines.rst: Remove comment indicating + that this is not implemented. + * gnat_rm.texi: Regenerate. + +2018-05-22 Hristian Kirtchev + + * exp_ch5.adb, freeze.adb, pprint.adb, sem_ch4.adb, sem_res.adb: Minor + reformattings. + +2018-05-22 Justin Squirek + + * sem_ch12.adb (In_Same_Declarative_Part): Moved to sem_util. + (Freeze_Subprogram_Body, Install_Body): Modify calls to + In_Same_Declarative_Part. + * sem_prag.adb (Analyze_Pragma-Pragma_Pure_Function): Add check to + verify pragma declaration is within the same declarative list with + corresponding error message. + * sem_util.adb, sem_util.ads (In_Same_Declarative_Part): Moved from + sem_ch12.adb and generalized to be useful outside the scope of + freezing. + +2018-05-22 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Subprogram_Declaration): Set the proper + categorization of the unit after processing the aspects in case one of + its aspects is converted into a categorization pragma. + +2018-05-21 Ed Schonberg + + * freeze.adb (Warn_Overlay): Do not emit a wawrning on an object + declaration with an explicit address clause and a type with default + initialization, if the declaration carries an aspect + Suppress_Initialization. + +2018-05-21 Daniel Mercier + + * pprint.adb: Use mixed case for attribute names. + +2018-05-21 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Generic_Subprogram_Body): Rename the call to + Analyze_Aspect_Specifications_On_Body_Or_Stub. + (Analyze_Subprogram_Body_Helper): Rename the calls to + Analyze_Aspect_Specifications_On_Body_Or_Stub. + * sem_ch9.adb (Analyze_Entry_Body): Rename the call to + Analyze_Aspect_Specifications_On_Body_Or_Stub. + * sem_ch10.adb: Add with and use clause for Sem_Ch13. + (Analyze_Package_Body_Stub): Add constant Id. Decorate the package stub + prior to analyzing its aspects. + (Analyze_Protected_Body_Stub): Add constant Id. Decorate the package + stub prior to analyzing its aspects. Save and restore the configuration + switches. + (Analyze_Task_Body_Stub): Add constant Id. Decorate the package stub + prior to analyzing its aspects. + * sem_ch13.adb (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed + to Analyze_Aspects_On_Subprogram_Body_Or_Stub. + * sem_ch13.ads (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed + to Analyze_Aspects_On_Subprogram_Body_Or_Stub. + * sem_prag.adb: Code reformatting. + (Analyze_Refined_Depends_Global_Post): Consider task body stubs. + +2018-05-21 Jerome Lambourg + + * gcc-interface/Makefile.in: Add g-soliop__qnx.ads to the runtime build + for QNX. + +2018-05-21 Hristian Kirtchev + + * exp_cg.adb: Remove with and use clause for Exp_Disp. + * exp_ch9.adb: Remove with and use clause for Exp_Disp. + * exp_disp.adb (Is_Predefined_Dispatching_Operation): Moved to Sem_Util. + (Is_Predefined_Interface_Primitive): Moved to Sem_Util. + (Is_Predefined_Internal_Operation): Moved to Sem_Util. + * exp_disp.ads (Is_Predefined_Dispatching_Operation): Moved to Sem_Util. + (Is_Predefined_Interface_Primitive): Moved to Sem_Util. + (Is_Predefined_Internal_Operation): Moved to Sem_Util. + * exp_dist.adb: Remove with and use clause for Exp_Disp. + * freeze.adb: Remove with and use clause for Exp_Disp. + * sem_cat.adb: Remove with and use clause for Exp_Disp. + * sem_ch6.adb: Remove with and use clause for Exp_Disp. + * sem_ch12.adb: Remove with and use clause for Exp_Disp. + * sem_elab.adb (Check_Overriding_Primitive): Do not process predefined + primitives. + * sem_util.adb: Remove with and use clause for Exp_Disp. + (Is_Predefined_Dispatching_Operation): Moved from Exp_Disp. + (Is_Predefined_Interface_Primitive): Moved from Exp_Disp. + (Is_Predefined_Internal_Operation): Moved from Exp_Disp. + * sem_util.ads (Is_Predefined_Dispatching_Operation): Moved from + Exp_Disp. + (Is_Predefined_Interface_Primitive): Moved from Exp_Disp. + (Is_Predefined_Internal_Operation): Moved from Exp_Disp. + +2018-05-21 Ed Schonberg + + * sem_res.adb (Valid_Conversion): Improve error message on an illegal + type conversion whose expression has a limited view of a type. + +2018-05-21 Ed Schonberg + + * exp_ch5.adb (Build_Formal_Container_Iteration): If source has + explicit name for iterator loop, preserve that name in expanded + construct, for possible use in exit statements. + +2018-05-21 Javier Miranda + + * sem_ch4.adb (Analyze_Membership_Op): Avoid compiler crash when the + spec of a unit has Ada 2012 membership tests with multiple choices and + the unit body is not compiled under Ada 2012 mode. + +2018-05-21 Doug Rupp + + * sigtramp-vxworks-target.inc: Set cfa_reg properly from sigcontext + pregs. + (CFI_COMMON_REGS): Restore LR jic probed from prologue. + (REGNO_PC_OFFSET): Change to correct value for Aarch64. + +2018-05-21 Jose Ruiz + + * doc/gnat_ugn/gnat_utility_programs.rst, exp_attr.adb, + libgnarl/s-tassta.adb: Minor typo fixes + +2018-05-21 Ed Schonberg + + * sem_ch4.adb (Analyze_One_Call): Recognize complex cases where an + indexed call originally in prefix forn is itself the prefix of a + further call. + +2018-05-21 Piotr Trojanek + + * sem_eval.adb (Is_Null_Range): Clarify access to the full view of a + type. + (Not_Null_Range): Same as above. + +2018-05-21 Hristian Kirtchev + + * exp_ch3.adb: Minor reformatting. + * exp_ch6.adb: Likewise. + * freeze.adb: Likewise. + * inline.adb: Likewise. + * sem_util.adb: Likewise. + +2018-05-21 Yannick Moy + + * inline.adb (Expand_Inlined_Call.Process_Formals): Use a type + conversion instead of an unchecked type conversion when inlining a + return statement, unless type qualification is required (for character + and string literal) or no check can result from the conversion (for + access types). + * opt.ads: Update comment. + +2018-05-21 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Install the elaboration + model of the compilation unit spec, if any. + * sem_ch7.adb (Analyze_Package_Body_Helper): Install the elaboration + model of the compilation unit spec, if any. + * sem_ch10.adb (Analyze_Subunit): Install the elaboration model of the + parent compilation unit spec, if any. + * sem_elab.adb (Check_Elaboration_Scenarios): Restore the elaboration + model of the main unit. + (Is_Same_Unit): The routine now uses Unit_Entity. + (Is_Subunit): Removed. + (Normalize_Unit): Removed. + (Unit_Entity): New routine. + * sem_prag.adb (Analyze_Pragma): Reimplement the handling of pragma + Elaboration_Checks. The analysis now ensures that the pragma appears at + the configuration level, and on the initial declaration of a unit. + Other placements are either flagged as illegal, or ignored. + (Check_Duplicate_Elaboration_Checks_Pragma): New routine. + (Ignore_Elaboration_Checks_Pragma): New routine. + * sem_util.adb (Install_Elaboration_Model): New routine. + * sem_util.ads (Install_Elaboration_Model): New routine. + * doc/gnat_rm/implementation_defined_pragmas.rst: Update the + documentation of pragma Elaboration_Checks. + * gnat_rm.texi: Regenerate. + +2018-05-21 Olivier Hainque + + * libgnat/s-trasym__dwarf.adb (Executable_Name): Return argv[0] instead + of empty string when argv[0] couldn't be found on PATH. + (Enable_Cache): Raise Program_Error instead of attempting a null + pointer dereference when the Exec_Module initialization failed. + +2018-05-21 Piotr Trojanek + + * libgnarl/a-reatim.ads (Clock_Time): Remove External aspect. + * libgnarl/a-taside.ads (Tasking_State): Likewise. + * libgnat/a-calend.ads (Clock_Time): Likewise. + +2018-05-21 Yannick Moy + + * sem_ch6.adb (Analyze_Procedure_Call): Refine test to recognize prefix + call notation in inlined call in GNATprove mode. + +2018-05-21 Hristian Kirtchev + + * einfo.adb (Is_External_State): An abstract state is also external + when it is declared with option "synchronous". + * einfo.ads: Update the documentation of synthesized attribute + Is_External_State. + * sem_util.adb (Find_Simple_Properties): New routine. + (Is_Enabled_External_Property): New routine. + (State_Has_Enabled_Property): Reimplemented. The two flavors of option + External have precedence over option Synchronous when determining + whether a property is in effect. + +2018-05-21 Yannick Moy + + * sem_eval.adb (Static_Length): Take into account case of variable of + subtype string literal. + +2018-05-21 Olivier Hainque + + * libgnat/s-objrea.ads (Get_Memory_Bounds): Rename as Get_Xcode_Bounds. + (Object_Section): Rename Flag_Alloc component as Flag_Xcode. + * libgnat/s-objrea.adb (Get_Xcode_Bounds): Adjust to new subprogram and + component name. + (Get_Section, ELF case): Set Flag_Xcode from SHF_EXECINSTR. + * libgnat/s-dwalin.adb (Open): Adjust to the Get_Memory_Bounds name + change. + +2018-05-21 Olivier Hainque + + * libgnat/s-dwalin.ads (Dwarf_Context): Change type of Load_Address to + Address, and type of Low, High to Storage_Offset. + (Low): Rename as Low_Address and convey that the return value is a + runtime reference accounting for a load address. + * libgnat/s-dwalin.adb (Read_Aranges_Entry): Adjust to the + address/offset type changes. + (Aranges_Lookup): Likewise. + (Symbolic_Address): Likewise. + (Symbolic_Traceback): Likewise. + (Dump_Cache): Likewise. + (Is_Inside): Likewise. + (Open): Likewise. + (Set_Load_Address): Likewise. + (Low_Address): Likewise, and account for C.Load_Address. + * libgnat/s-trasym__dwarf.adb (Lt): Use Low_Address instead of Low. + (Multi_Module_Symbolic_Traceback): Compare address in traceback + with module Low_Address instead of Low. + +2018-05-21 Olivier Hainque + + * libgnat/s-dwalin.ads (Dwarf_Context): Rename Load_Slide as + Load_Address. + * libgnat/s-dwalin.adb (Is_Inside): Adjust accordingly. + (Set_Load_Address): Likewise. + (Symbolic_Traceback): Likewise. + +2018-05-21 Olivier Hainque + + * libgnat/s-trasym__dwarf.adb (Add_Module_To_Cache): Expect a + Load_Address argument and pass it down to Init_Module. + * libgnat/s-tsmona__linux.adb (Build_Cache_For_All_Modules): Pass + lm.l_addr as the Load_Address to Add_Module_To_Cache. + +2018-05-21 Piotr Trojanek + + * einfo.adb (Has_Discriminants): Stronger assertion. + (Set_Has_Discriminants): Stronger assertion. + * sem_ch13.adb (Push_Scope_And_Install_Discriminants): Adapt to respect + the stronger assertion on Has_Discriminant. + (Uninstall_Discriminants_And_Pop_Scope): Same as above. + * sem_util.adb (New_Copy_Tree): Same as above. + * sem_ch7.adb (Generate_Parent_References): Prevent calls to + Has_Discriminant on non-type entities that might happen when the + compiled code has errors. + * sem_ch3.adb (Derived_Type_Declaration): Only call + Set_Has_Discriminant on type entities. + +2018-05-21 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprogram): Unnest all subprograms relevant for + code generation. + +2018-05-21 Piotr Trojanek + + * lib.ads: Fix typo in enumeration in comment. + +2018-05-21 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute, case Scalar_Storage_Order): The + attribute reference is legal within a generic unit when the prefix is a + formal private type. + +2018-05-21 Hristian Kirtchev + + * exp_ch7.adb (Establish_Transient_Scope): Code cleanup. Do not + delegate the secondary stack management when there is no suitable + transient context, and the transient scope was intended to manage the + secondary stack because this causes premature reclamation. Change the + transient scope creation logic by special casing assignment statements + of controlled components for type initialization procedures. + (Find_Node_To_Be_Wrapped): Renamed to Find_Transient_Context. Update + the comment on usage. + (Find_Transient_Context): Change the initinte loop into a while loop. + Iterations schemes and iterator specifications are not valid transient + contexts because they rely on special processing. Assignment statements + are now treated as a normal transient context, special cases are + handled by the caller. Add special processing for pragma Check. + (Is_OK_Construct): Removed. Its functionality has been merged in + routine Find_Transient_Context. + * sem_ch5.adb (Check_Call): Reimplemented. Add code to properly + retrieve the subprogram being invoked. Use a more accurate predicate + (Requires_Transient_Scope) to determine that the function will emply + the secondary stack. + +2018-05-21 Piotr Trojanek + + * ada_get_targ.adb: Fix subprogram body headers. + * adabkend.adb: Likewise. + * checks.adb: Likewise. + * exp_ch3.adb: Likewise. + * exp_ch5.adb: Likewise. + * exp_ch9.adb: Likewise. + * exp_dist.adb: Likewise. + * exp_tss.adb: Likewise. + * inline.adb: Likewise. + * lib-writ.adb: Likewise. + * lib-xref-spark_specific.adb: Likewise. + * libgnarl/s-osinte__darwin.adb: Likewise. + * libgnarl/s-stusta.adb: Likewise. + * libgnarl/s-taprop__solaris.adb: Likewise. + * libgnarl/s-tposen.adb: Likewise. + * libgnarl/s-vxwext__kernel-smp.adb: Likewise. + * libgnarl/s-vxwext__kernel.adb: Likewise. + * libgnat/a-btgbso.adb: Likewise. + * libgnat/a-cfdlli.adb: Likewise. + * libgnat/a-cfhama.adb: Likewise. + * libgnat/a-cfinve.adb: Likewise. + * libgnat/a-cimutr.adb: Likewise. + * libgnat/a-coboho.adb: Likewise. + * libgnat/a-cofove.adb: Likewise. + * libgnat/a-cofuve.adb: Likewise. + * libgnat/a-comutr.adb: Likewise. + * libgnat/a-exexda.adb: Likewise. + * libgnat/a-tags.adb: Likewise. + * libgnat/a-tideau.adb: Likewise. + * libgnat/a-wtdeau.adb: Likewise. + * libgnat/a-ztdeau.adb: Likewise. + * libgnat/g-alleve.adb: Likewise. + * libgnat/s-excdeb.adb: Likewise. + * libgnat/s-parint.adb: Likewise. + * libgnat/s-shasto.adb: Likewise. + * libgnat/s-traceb__hpux.adb: Likewise. + * prepcomp.adb: Likewise. + * sem_ch4.adb: Likewise. + * sem_ch6.adb: Likewise. + * sem_dist.adb: Likewise. + * sem_prag.adb: Likewise. + * sem_util.adb: Likewise. + * sinfo.adb: Likewise. + * switch.adb: Likewise. + +2018-05-04 John Marino + + PR ada/85635 + * link.c (BSD platforms): Add missing backslash. + +2018-04-27 Eric Botcazou + + PR ada/85540 + * init.c (__gnat_handle_vms_condition): Add missing parentheses. + +2018-04-25 Eric Botcazou + + PR ada/85007 + * gnat_ugn.texi: Regenerate. + +2018-03-23 Eric Botcazou + + PR ada/85007 + * gnatlink.adb (Gnatlink): Remove handling of -b switch. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst (gnatlink): + Remove documentation of -b switch. + +2018-03-23 Eric Botcazou + + PR ada/85036 + * gnatlink.adb (Process_Args): Drop existing link switches if multiple + switches are passed for --LINK. + +2018-03-12 Eric Botcazou + + PR ada/82813 + * gcc-interface/misc.c (gnat_post_options): Disable string overflow + warnings. + +2018-03-10 Eric Botcazou + + * gcc-interface/trans.c (node_has_volatile_full_access) : + Consider only entities for objects. + +2018-03-07 Sebastian Huber + + * gcc-interface/Makefile.in (OSCONS_CPP): Remove redundant + $(GNATLIBCFLAGS). + (OSCONS_EXTRACT): Add $(GNATLIBCFLAGS_FOR_C). + +2018-03-06 Eric Botcazou + + * gcc-interface/trans.c (convert_with_check): Fix typo in the condition + guarding the overflow check emitted for the upper bound of a floating- + point conversion. + +2018-03-06 Eric Botcazou + + * gcc-interface/utils.c (def_builtin_1): Bail out on error_mark_node. + +2018-02-28 Eric Botcazou + + * libgnat/i-cexten.ads (Float_128): New type. + +2018-02-02 Eric Botcazou + + * gcc-interface/decl.c (array_type_has_nonaliased_component): Return + false if the component type is a pointer. + +2018-01-11 Gary Dismukes + + * exp_ch3.adb (Default_Initialize_Object): Call New_Copy_Tree on the + result of Get_Simple_Init_Value and pass the source location of the + object declaration's object_definition. + +2018-01-11 Ed Schonberg + + * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Handle + properly object declarations with initializations that are + build-in-place function calls, when there is an address specification, + either as an aspect specification or an explicit attribute + specification clause, for the initialized object. + * freeze.adb (Check_Address_Clause): Do not remove side-effects from + initial expressions in the case of a build-in-place call. + +2018-01-11 Piotr Trojanek + + * sem_eval.adb (Is_Null_Range): Retrieve the full view when called on a + private (sub)type; refactor to avoid early return statement. + (Not_Null_Range): Same as above. + +2018-01-11 Hristian Kirtchev + + * freeze.adb (Freeze_Entity): Ensure that a Ghost type is not + concurrent, nor effectively volatile. + * ghost.adb (Check_Ghost_Type): New routine. + * ghost.ads (Check_Ghost_Type): New routine. + * sem_util.adb (Is_Declaration): Reimplemented. The routine can now + consider specific subsets of declarations. + (Is_Declaration_Other_Than_Renaming): Removed. Its functionality is + replicated by Is_Declaration. + * sem_util.ads (Is_Declaration): New parameter profile. Update the + comment on usage. + (Is_Declaration_Other_Than_Renaming): Removed. + +2018-01-11 Hristian Kirtchev + + * sem_ch5.adb (Analyze_Assignment): Assignments to variables that act + as Part_Of consituents of single protected types are illegal when they + take place inside a protected function. + (Diagnose_Non_Variable_Lhs): Use Within_Function to check for an + enclosing function. + (Is_Protected_Part_Of_Constituent): New routine. + (Within_Function): New routine. + +2018-01-11 Arnaud Charlet + + Bump copyright notices to 2018. + +2018-01-11 Hristian Kirtchev + + * binde.adb, par-ch6.adb, par-ch9.adb, sem_ch12.adb, sem_ch13.adb: + Minor reformatting. + +2018-01-11 Justin Squirek + + * par-ch6.adb (Scan_Body_Or_Expression_Function): Add additional check + to make sure a given expression function is properly parenthesized. + +2018-01-11 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Check the + categorization of a subprogram body which does not complete a previous + declaration. + +2018-01-11 Hristian Kirtchev + + * sem_ch10.adb (Check_Private_Child_Unit): Ensure that the enclosing + scope of package Ada is Standard. + +2018-01-11 Ed Schonberg + + * sem_ch13.adb (Replace_Type_Ref): Handle properly reference to a + subcomponent of the current entity when building the body for a dynamic + predicate function for a record with composite subcomponents. + +2018-01-11 Hristian Kirtchev + + * exp_aggr.adb (Convert_Aggr_In_Object_Decl): Update the call to + Establish_Transient_Scope. + (Convert_To_Assignments): Update the call to Establish_Transient_Scope. + (Expand_Array_Aggregate): Update the call to Establish_Transient_Scope. + * exp_ch6.adb (Expand_Call_Helper): Update the call to + Establish_Transient_Scope. + (Make_Build_In_Place_Call_In_Object_Declaration): Update the call to + Establish_Transient_Scope. + * exp_ch7.adb (Establish_Transient_Scope): Restructured. Delegate the + management of the secondary stack to an enclosing scope if there is no + suitable construct to wrap, and the transient scope was intended to + manage the secondary stack. + (Find_Node_To_Be_Wrapped): Restructured. A case_statement_alternative + is a valid boundary for a transient expression which comes from the + statements of the alternative, otherwise alternatives cannot be + wrapped. Assignments of controlled objects which have controlled + actions suppressed now stop the traversal as there is no point in + looking for an enclosing construct. Add several N_xxx_Body choices to + the termination conditions for completeness. + * exp_ch7.ads (Establish_Transient_Scope): Update the parameter profile + and the associated comment on usage. + * exp_smem.adb (Add_Shared_Var_Lock_Procs): Update the call to + Establish_Transient_Scope. + (Add_Write_After): Update the call to Establish_Transient_Scope. + * sem_res.adb (Check_Initialization_Call): Removed. + (Resolve_Actuals): Account for additional cases where finalization + actions are required by utilizing predicate Needs_Finalization rather + than Is_Controlled. + (Resolve_Call): Type initialization procedures can now utilize + transient scopes to manage the secondary stack, thus preventing leaks + during initialization. Remove the previous kludgy algorithm which + attempts to manage the secondary stack at the object creation site. + +2018-01-11 Jerome Lambourg + + * libgnat/g-soliop__qnx.ads: New. + * adaint.c, adaint.h, cstreams.c, s-oscons-tmplt.c, sysdep.c: Update + for QNX. + +2018-01-11 Bob Duff + + * par-ch9.adb (P_Protected_Operation_Declaration_Opt): Give an error if + a null procedure occurs in a protected definition. + +2018-01-11 Bob Duff + + * binderr.ads, namet.ads: Minor reformatting. + +2018-01-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Improve documentation of + xml2gnat. + +2018-01-11 Bob Duff + + * binde.adb (Force_Elab_Order): Give an error if there are duplicate + unit names. + +2018-01-11 Ed Schonberg + + * sem_ch6.adb (Freeze_Expr_Types): If an access value is the + controlling argument of a dispatching call. freeze the corresponding + designated type. + +2018-01-11 Ben Brosgol + + * doc/Makefile: Add Sphinx option -W to treat warnings as errors. + +2018-01-11 Ben Brosgol + + * doc/gnat_rm/implementation_defined_aspects.rst: Minor type/wording + corrections. + * gnat_rm.texi: Regenerate. + +2018-01-11 Ed Schonberg + + * sem_ch12.adb (Check_Fixed_Point_Type): Do not apply check if the + formsl type corresponding to the actual fixed point type is private, + because in this case there can be no suspicious arithmetic operations + in the generic unless they reference a formal subprogram. Clarify + warning. + +2018-01-11 Javier Miranda + + * exp_util.adb (Remove_Side_Effects): No action done for functions + returning class-wide types since it requires generating code using + 'reference and the CCG target has no secondary stack. + * gnat1drv.adb: Disable building static dispatch tables when generating + C code. + +2018-01-11 Piotr Trojanek + + * libgnat/a-direio.ads, libgnat/a-sequio.ads, libgnat/a-ststio.ads, + libgnat/a-textio.ads, libgnat/a-witeio.ads, libgnat/a-ztexio.ads + (File_Type): Add Default_Initial_Condition aspect. + +2018-01-11 Pascal Obry + + * libgnat/s-os_lib.adb (Normalize_Pathname): New implementation. + +2018-01-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Rewrite gnatpp documentation + to match what the Libadalang-based version does. + * doc/gnat_ugn/about_this_guide.rst: Update reference. + +2018-01-11 Hristian Kirtchev + + * sem_res.adb (Uses_SS): A controlled type requires the secondary stack + if it contains at least one component declaration employing a function + call returning on the secondary stack. + +2018-01-11 Yannick Moy + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Update description of restriction SPARK_05 with SPARK 2014. + * gnat_rm.texi: Regenerate. + +2018-01-11 Vasiliy Fofanov + + * doc/gnat_ugn/gnat_utility_programs.rst: Fix layout. + +2018-01-11 Hristian Kirtchev + + * exp_aggr.adb, exp_ch9.adb, exp_util.adb, sem_aggr.adb, sem_ch3.adb, + sem_res.adb, sem_util.adb: Minor reformatting. + +2018-01-11 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case Predicate): Indicate that the type + has a delayed aspect which must be processed at the point the type is + frozen. This mimics what is done when the predicate is provided by a + source aspect. + +2018-01-11 Doug Rupp + + * init.c (vxworks): Add macro checks for __aarch64__. + +2018-01-11 Hristian Kirtchev + + * exp_util.adb (Add_Failure_Expression): New routine. + (Make_Predicate_Check): Reimplement the handling of Predicate_Failure. + * sem_util.adb (Is_Current_Instance): Code cleanup. + +2018-01-11 Patrick Bernardi + + * libgnat/s-parame*.adb, libgnat/s-parame*.ads: Remove unneeded + Default_Sec_Stack_Size. + * libgnat/s-secsta.adb (SS_Allocate): Handle the fixed secondary stack + limit check so that the integer index does not overflow. Check the + dynamic stack allocation does not cause the secondary stack pointer to + overflow. + (SS_Info): Align colons. + (SS_Init): Cover the case when bootstraping with an old compiler that + does not set Default_SS_Size. + +2018-01-11 Ed Schonberg + + * sem_ch3.adb (Add_Internal_Interface_Entities): When checking the + legality of an inherited operation that may require overriding, ignore + primitive_wrappers that correspond to explicit operations that override + an interface primitive. + * exp_util.adb (Build_Class_Wide_Expression, Replace_Entity): If the + operation to which the class-wide expression applies is a protected op. + with a primitive_wrapper, verify that the updated inherited expression + does not contain an internal call to a protected function. This + completes the implementation of AI12-0166. + +2018-01-11 Hristian Kirtchev + + * ali.adb: Document the remaining letters available for ALI lines. + (Scan_ALI): A with clause is internal when it is encoded on a 'Z' line. + * ali.ads: Update type With_Record. Field + Implicit_With_From_Instantiation is no longer in use. Add field + Implicit_With. + * csinfo.adb (CSinfo): Remove the setup for attribute + Implicit_With_From_Instantiation. + * lib-writ.adb (Collect_Withs): Correct the logic which marks a unit as + either implicitly or explicitly withed. + (Is_Implicit_With_Clause): New routine. + (Write_ALI): Rename array Implicit_With to Has_Implicit_With to avoid + confusion with the with clause attribute by the same name. + (Write_With_Lines): Update the emission of 'W', 'Y', and 'Z' headers. + * rtsfind.adb (Maybe_Add_With): Code cleanup. + * sem_ch8.adb (Present_System_Aux): Code cleanup. + * sem_ch10.adb (Expand_With_Clause): Mark the with clause as generated + for a parent unit. + (Implicit_With_On_Parent): Mark the with clause as generated for a + parent unit. + * sem_ch12.adb (Inherit_Context): With clauses inherited by an + instantiation are no longer marked as Implicit_With_From_Instantiation + because they are already marked as implicit. + * sem_elab.adb (Ensure_Prior_Elaboration_Static): Remove the kludge + which marks implicit with clauses as related to an instantiation. + * sinfo.adb (Implicit_With_From_Instantiation): Removed. + (Parent_With): New routine. + (Set_Implicit_With_From_Instantiation): Removed. + (Set_Parent_With): New routine. + * sinfo.ads: Update the documentation of attribute Implicit_With. + Remove attribute Implicit_With_From_Instantiation along with + occurrences in nodes. Add attribute Parent_With along with occurrences + in nodes. + (Implicit_With_From_Instantiation): Removed along with pragma Inline. + (Parent_With): New routine along with pragma Inline. + (Set_Implicit_With_From_Instantiation): Removed along with pragma Inline. + (Set_Parent_With): New routine along with pragma Inline. + +2018-01-11 Hristian Kirtchev + + * sem_util.adb (Find_Enclosing_Scope): Return the unique defining + entity when the enclosing construct is a body. + +2018-01-11 Patrick Bernardi + + * exp_ch9.adb (Expand_N_Task_Type_Declaration): Simplified + Secondary_Stack_Size handling as a pragma is now generated for the + corresponding aspect instead of an attribute. Pragma expression is + relocated instead of evaluated. Discriminant of the corresponding + record type is referenced rather than the type discriminant. + (Create_Secondary_Stack_For_Task, Make_Task_Create_Call): Update + Secondary_Stack_Size rep item checks to only look for the pragma rep. + * sem_ch13.adb (Analyze_One_Aspect): Transform + Aspect_Secondary_Stack_Size into a pragma instead of an attribute + because the attribute does not have visibility on a task type's + discriminants when the type's definition is expanded. + (Analyze_Attribute_Definition_Clause): Remove handling of + Attribute_Secondary_Stack_Size. + * snames.adb-tmpl, snames.ads-tmpl: Remove + Attribute_Secondary_Stack_Size, no longer used. + +2018-01-11 Justin Squirek + + * sem_ch8.adb: Minor comment fix. + +2018-01-11 Hristian Kirtchev + + * exp_ch4.adb (Process_Action): Do not abandon the inspection of an + individual action because the action may denote a complex expression, + such as a case statement, which in turn may contain additional + transient objects. + +2018-01-11 Ed Schonberg + + * sem_aggr.adb (Resolve_Iterated_Component_Association): Perform + analysis on a copy of the expression with a copy of the index variable, + because full expansion will rewrite construct into a loop with the + original loop variable. + * exp_aggr.adb (Gen_Assign): Defer analysis and resolution if the + expression is an iterated component association. Full analysis takes + place when construct is rewritten as a loop. + (In_Place_Assign_OK, Safe_Component): An iterated_component_association + is not safe for in-place assignment. + * sem_util.adb (Remove_Entity): Handle properly the case of an isolated + entity with no homonym and no other entity in the scope. + +2018-01-11 Justin Squirek + + * sem_prag.adb (Analyze_Pragma:Pragma_Loop_Variant): Modify error + message to be printed on the pragma argument identifier. + +2018-01-11 Hristian Kirtchev + + * exp_util.adb (Build_Invariant_Procedure_Declaration): Set the last + entity of the generated invariant procedure in order to construct a + proper entity chain. + +2018-01-11 Piotr Trojanek + + * sem_ch13.adb (Build_Predicate_Functions): Fix minor issues in + comment. + +2018-01-11 Arnaud Charlet + + * einfo.ads, einfo.adb (Activation_Record_Component, + Set_Activation_Record_Component, Set_Is_Uplevel_Referenced_Entity): + Allow E_Discriminant. + +2018-01-10 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_component_type): Apply the check + for atomic access once the component size is taken into account and + also do it if the component type is Atomic or Volatile_Full_Access. + +2018-01-04 Eric Botcazou + + * gnatvsn.ads: Bump copyright year. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/misc.c (enumerate_modes): Treat GET_MODE_BITSIZE + as polynomial. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/misc.c (enumerate_modes): Treat GET_MODE_PRECISION + as polynomial. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/utils.c (gnat_types_compatible_p): Handle + polynomial TYPE_VECTOR_SUBPARTS. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/misc.c (enumerate_modes): Handle polynomial + GET_MODE_NUNITS. + +2018-01-03 Jakub Jelinek + + Update copyright years. + + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. + +Copyright (C) 2018 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index fbe92ade729..85bc1442a81 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -25,7 +25,7 @@ GNAT Reference Manual , Sep 24, 2018 AdaCore -Copyright @copyright{} 2008-2018, Free Software Foundation +Copyright @copyright{} 2008-2019, Free Software Foundation @end quotation @end copying diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index dc216df14e1..faf01c6f3c5 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -25,7 +25,7 @@ GNAT User's Guide for Native Platforms , Dec 05, 2018 AdaCore -Copyright @copyright{} 2008-2018, Free Software Foundation +Copyright @copyright{} 2008-2019, Free Software Foundation @end quotation @end copying diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index d1afa38886d..cc5ec6734cd 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,643 +1,8 @@ -2018-11-24 Iain Buclaw +2019-01-01 Jakub Jelinek - PR d/87866 - * d-incpath.cc (add_globalpaths): Use lrealpath to get canonical name. - (add_filepaths): Likewise. - -2018-11-17 Iain Buclaw - - PR d/87824 - * d-target.cc (Target::alignsize): Return min_align_of_type. - -2018-11-05 Iain Buclaw - - PR d/87865 - * d-system.h: New file. - -2018-11-01 Jakub Jelinek - - PR d/87824 - * lang.opt (Wpsabi): New option. - -2018-10-31 Iain Buclaw - - PR d/87825 - * Make-lang.in (d/idgen) Link with BUILD_LINKERFLAGS. - (d/impcvgen): Likewise. - -2018-10-26 Eugene Wissner - - * Make-lang.in (selftest-d): New. - * d-diagnostic.cc (vwarning): Fix warning emitting. - -2018-10-22 Iain Buclaw - - * d-spec.cc (lang_specific_driver): Always link against phobos if any - input file is given. - -2018-10-21 Iain Buclaw - - * d-lang.cc (d_get_alias_set): Always return zero. - -2018-10-21 Iain Buclaw - - * intrinsics.cc (maybe_set_intrinsic): Don't set built-in flag on - unsupported pow() overloads. - -2018-10-20 Iain Buclaw - - * expr.cc (ExprVisitor::binop_assignment): Call stabilize_reference on - LHS construct if it has side effects. - -2018-10-20 Iain Buclaw - - * intrinsics.cc (clear_intrinsic_flag): Remove function. - (maybe_expand_intrinsic): Remove clear_intrinsic_flag call. - -2018-10-20 Iain Buclaw - - * intrinsics.cc (expand_intrinsic_copysign): Use mathfn_built_in to - determine correct built-in to call. - (expand_intrinsic_pow): Likewise. - -2018-10-20 Iain Buclaw - - * intrinsics.cc (expand_intrinsic_sqrt): Remove implicit int to double - conversion. - (expand_intrinsic_pow): Likewise. - -2018-10-20 Iain Buclaw - - * d-codegen.cc (get_frame_for_symbol): Use error_at. - (build_frame_type): Likewise. - (get_framedecl): Likewise. - * d-lang.cc (d_parse_file): Likewise. - * decl.cc (DeclVisitor::visit(StructDeclaration)): Likewise. - (DeclVisitor::finish_vtable): Likewise. - (DeclVisitor::visit(ClassDeclaration)): Likewise. - (DeclVisitor::visit(InterfaceDeclaration)): Likewise. - (DeclVisitor::visit(EnumDeclaration)): Likewise. - (DeclVisitor::visit(VarDeclaration)): Likewise. - * toir.cc (IRVisitor::check_goto): Likewise. - (IRVisitor::check_previous_goto): Likewise. - (IRVisitor::visit(ThrowStatement)): Likewise. - -2018-10-20 Iain Buclaw - - * d-codegen.cc (get_array_length): Use quoted format flag in message. - (d_build_call): Likewise. - * d-lang.cc (d_handle_option): Likewise. - * decl.cc (DeclVisitor::finish_vtable): Likewise. - * expr.cc (ExprVisitor::visit(ArrayLengthExp)): Likewise. - (ExprVisitor::visit(DeleteExp)): Likewise. - (ExprVisitor::visit(RemoveExp)): Likewise. - (ExprVisitor::visit(RemoveExp)): Likewise. - (ExprVisitor::visit(CallExp)): Likewise. - (ExprVisitor::visit(DotVarExp)): Likewise. - (ExprVisitor::visit(VarExp)): Likewise. - (ExprVisitor::visit(ScopeExp)): Likewise. - (ExprVisitor::visit(TypeExp)): Likewise. - (build_expr): Likewise. - -2018-10-20 Iain Buclaw - - * d-diagnostic.cc (d_diagnostic_report_diagnostic): Skip translation - by instead calling diagnostic_set_info_translated. - -2018-10-20 Iain Buclaw - - * d-tree.h (bool_type_node): Rename to d_bool_type. - (byte_type_node): Rename to d_byte_type. - (ubyte_type_node): Rename to d_ubyte_type. - (short_type_node): Rename to d_short_type. - (ushort_type_node): Rename to d_ushort_type. - (int_type_node): Rename to d_int_type. - (uint_type_node): Rename to d_uint_type. - (long_type_node): Rename to d_long_type. - (ulong_type_node): Rename to d_ulong_type. - (cent_type_node): Rename to d_cent_type. - (ucent_type_node): Rename to d_ucent_type. - -2018-10-20 Iain Buclaw - - * expr.cc (ExprVisitor::visit(PowExp)): Remove function. - -2018-10-19 Iain Buclaw - - * d-attribs.c: Rename to d-attribs.cc. - * d-spec.c: Rename to d-spec.cc. - -2018-10-19 Iain Buclaw - - * d-lang.cc (d_gimplify_expr): Don't handle TREE_THIS_VOLATILE. - -2018-10-19 Iain Buclaw - - * d-diagnostic.cc (vwarning): Update to use Diagnostic enum. - (vdeprecation): Likewise. - (vdeprecationSupplemental): Likewise. - * d-lang.cc (d_init_options): Explicitly set warnings and deprecations - as DIAGNOSTICoff. - (d_handle_option): Update to use Diagnostic enum. - (d_post_options): Likewise. - -2018-10-18 Iain Buclaw - - * d-diagnostic.cc (expand_format): Rename to expand_d_format. - Updated all callers. - -2018-10-17 Iain Buclaw - - * d-codegen.cc (get_linemap): Rename function to make_location_t. - Updated all callers. - * d-tree.h (get_linemap): Rename declaration to make_location_t. - -2018-10-17 Iain Buclaw - - * expr.cc (ExprVisitor::binary_op): Use POINTER_DIFF_EXPR. - -2018-10-17 Iain Buclaw - - * intrinsics.cc (expand_intrinsic_bsf): Assert that built-in function - code is not END_BUILTINS. - (expand_intrinsic_bsr): Likewise. - (expand_intrinsic_bswap): Likewise. - (expand_intrinsic_popcnt): Likewise. - -2018-10-17 Iain Buclaw - - * config-lang.in (gtfiles): Add modules.cc. - * modules.cc: Include gt-d-modules.h. - (module_info): Mark with GTY. - (static_ctor_list): Likewise. - (static_dtor_list): Likewise. - -2018-10-17 Iain Buclaw - - * d-spec.c (lang_specific_driver): Use strrchr and strcmp to check - input file suffix. - -2018-10-17 Iain Buclaw - - * d-spec.c (phobos_action): New enum. - (library): Rename to phobos_library. - (lang_specific_driver): Update to use phobos_library. - (lang_specific_pre_link): Likewise. - -2018-10-16 Iain Buclaw - - * d-frontend.cc (Port::writelongLE): Remove function. - (Port::writelongBE): Remove function. - -2018-10-16 Iain Buclaw - - * d-convert.cc (convert): Remove goto maybe_fold. - -2018-10-16 Iain Buclaw - - * d-codegen.cc (warn_for_null_address): New function. - (build_boolop): Warn about comparing address of decl to null. - * d-convert.cc (decl_with_nonnull_addr_p): New function. - (d_truthvalue_conversion): Warn about evaluating address as boolean. - * d-tree.h (decl_with_nonnull_addr_p): Add declaration. - * lang.opt (Waddress): New option. - -2018-10-16 Iain Buclaw - - * d-codegen.cc (d_array_length): Assert that argument type is a - dynamic array. - (d_array_ptr): Likewise. - (d_array_value): Likewise. - (delegate_method): Assert that argument type is a delegate. - (delegate_object): Likewise. - -2018-10-16 Iain Buclaw - - * d-attribs.c (handle_malloc_attribute): Use gcc_assert instead of - gcc_unreachable. - (handle_pure_attribute): Likewise. - (handle_nothrow_attribute): Likewise. - -2018-10-16 Iain Buclaw - - * Make-lang.in: Rename compiler proper to d21. - * config-lang.in (compilers): Rename compiler to d21. - * d-spec.c (lang_specific_driver): Update comments. - * lang-specs.h: Rename compiler to d21. - -2018-10-16 Iain Buclaw - - * lang.opt: Add missing periods to the ends of sentences. - -2018-10-16 Iain Buclaw - - * d-lang.cc (d_handle_option): Remove handling of -fdeps. - (d_parse_file): Don't generate module dependencies. - * lang.opt (fdeps, fdeps=): Remove options. - (fintfc, fintfc-dir=, fintfc-file=): Remove options. - (ftransition=safe): Remove option. - -2018-10-16 Iain Buclaw - - * d-lang.cc (d_init_ts): Remove handling of IASM_EXPR. - (d_gimplify_expr): Likewise. - * d-tree.def (IASM_EXPR): Remove tree code. - -2018-10-15 Iain Buclaw - - * d-attrib.c (attr_noreturn_exclusions): Attribute not mutually - exclusive with self. - * typeinfo.cc (TypeInfoVisitor::layout_interfaces): Assert that - base class vtable is found in interface. - -2018-10-08 Iain Buclaw - - * decl.cc (DeclVisitor): Add using Visitor::visit. - * expr.cc (ExprVisitor): Likewise. - * imports.cc (ImportVisitor): Likewise. - * toir.cc (IRVisitor): Likewise. - * typeinfo.cc (TypeInfoVisitor): Likewise. - (TypeInfoDeclVisitor): Likewise. - (SpeculativeTypeVisitor): Likewise. - * types.cc (TypeVisitor): Likewise. - -2018-10-01 Iain Buclaw - - * d-frontend.cc: Include compiler.h, errors.h, expression.h. - (genCmain): Rename function to Compiler::genCmain. - (Compiler::paintAsType): New function. - (Compiler::loadModule): New function. - (getTypeInfoType): Call error function directly. - * d-lang.cc (deps_write): Use hash_set for dependency tracking. - (d_parse_file): Call Compiler::loadModule. - * d-target.cc: Remove include identifier.h, module.h. - (Target::paintAsType): Remove function. - (Target::loadModule): Remove function. - (Target::getTargetInfo): New function. - -2018-10-01 Eugene Wissner - - * decl.cc (finish_thunk): Adjust call to cgraph_node::create_thunk. - -2018-09-25 Eugene Wissner - - * d-codegen.cc (d_assert_call): Don't make STRING_CSTs larger than they - are. - * expr.cc (ExprVisitor::visit(StringExp)): Likewise. - * typeinfo.cc (TypeInfoVisitor::layout_string): Likewise. - -2018-09-24 Iain Buclaw - - * d-builtins.cc: Include expression.h, identifier.h. - * d-codegen.cc: Include identifier.h. - * d-convert.cc: Include declaration.h. - * d-frontend.cc: Include identifier.h. - * d-lang.cc: Include declaration.h, expression.h, identifier.h. - (d_parse_file): Call moduleToBuffer to get string dump of contents. - * d-target.cc: Include declaration.h, expression.h, identifier.h. - * expr.cc: Include identifier.h. - * imports.cc: Include identifier.h. - * intrinsics.cc: Include identifier.h. - * modules.cc: Include identifier.h. - * toir.cc: Include expression.h, identifier.h. - * typeinfo.cc: Include expression.h, identifier.h. - * types.cc: Include expression.h, identifier.h. - -2018-09-17 Iain Buclaw - - * Make-lang.in (D_INCLUDES): Rename dfrontend to dmd. - (d/%.o): Likewise. - (d/%.dmdgen.o): Likewise. - * verstr.h: Update to 2.076.1 - -2018-09-10 Iain Buclaw - - * intrinsics.cc (maybe_expand_intrinsic): Handle INTRINSIC_EXP. - * intrinsics.def (EXP): Add CTFE intrinsic. - -2018-09-07 Iain Buclaw - - * d-lang.cc: Include errors.h, mars.h. - * decl.cc: Include errors.h. - * typeinfo.cc: Include globals.h, errors.h. - -2018-09-05 Eugene Wissner - - * d-frontend.cc (eval_builtin): Replace DECL_BUILT_IN with - fndecl_built_in_p. - -2018-08-29 Iain Buclaw - - * d-target.cc (Target::prefixName): Remove function. - (Target::cppParameterType): New function. - -2018-08-25 Iain Buclaw - - * Make-lang.in (D_FRONTEND_OBJS): Add iasm.o, iasmgcc.o - * lang.opt (fproperty): Remove option. - * d-lang.cc (d_handle_option): Remove case for OPT_fproperty. - * toir.cc (IRVisitor::visit(ExtAsmStatement)): Rename override to - GccAsmStatement. - -2018-07-23 Eugene Wissner - - * d-lang.cc (d_handle_option): Change function argument to HOST_WIDE_INT. - * lang.opt (Walloca-larger-than=, Wno-alloca-larger-than): New options. - * opt.texi (Walloca-larger-than=, Wno-alloca-larger-than): Likewise. - -2018-07-21 Iain Buclaw - - * decl.cc (get_symbol_decl): Set all generated static symbols as - DECL_EXTERNAL. Move logic for determining TREE_STATIC ... - (start_function): ... here. - (d_finish_decl): Update TLS model after finishing variable linkage. - -2018-07-14 Iain Buclaw - - * Make-lang.in (d.tags): Rename dfrontend to dmd. - * d-attribs.c: Rename dfrontend includes to dmd. - * d-builtins.cc: Likewise. - * d-codegen.cc: Likewise. - * d-convert.cc: Likewise. - * d-diagnostic.cc: Likewise. - * d-frontend.cc: Likewise. - * d-incpath.cc: Likewise. - * d-lang.cc: Likewise. - * d-longdouble.cc: Likewise. - * d-target.cc: Likewise. - * decl.cc: Likewise. - * expr.cc: Likewise. - * imports.cc: Likewise. - * intrinsics.cc: Likewise. - * modules.cc: Likewise. - * runtime.cc: Likewise. - * toir.cc: Likewise. - * typeinfo.cc: Likewise. - * types.cc: Likewise. - -2018-07-14 Iain Buclaw - - * types.cc (same_type_p): Check type codes match before checking - equivalence. - -2018-07-09 Iain Buclaw - - * Makefile.in (d/verstr.h): Remove recipe. - (d.mostlyclean): Remove cleanup of verstr.h. - * verstr.h: New file. - -2018-07-06 Iain Buclaw - - * d-codegen.cc (lower_struct_comparison): Evaluate side effects of - empty struct. - (build_struct_comparison): Likewise. - -2018-07-06 Iain Buclaw - - * typeinfo.cc (TypeInfoVisitor::layout_interfaces): Only generate an - interface vtable for classes. - (TypeInfoVisitor::visit(TypeInfoClassDeclaration)): Likewise. - -2018-07-05 Iain Buclaw - - * d-lang.cc (deps_write): Ignore __main module. - (d_handle_option): Handle -fmain option. - (d_parse_file): Generate D main function if requested. - * lang.opt (fmain): New option. - -2018-07-04 Iain Buclaw - - * d-builtins.cc (d_build_builtins_module): Export __builtin_clonglong - and __builtin_culonglong to gcc builtins module. - -2018-07-04 Eugene Wissner - - * d-spec.c: Include opt-suggestions.h containing option_proposer used by - gcc.h. - -2018-07-01 Iain Buclaw - - * decl.cc (get_symbol_decl): Implicitly convert return type of 'void' - main to 'int' for both C and D entry functions. - * toir.cc (IRVisitor::visit(ReturnStatement)): Likewise. - -2018-06-30 Iain Buclaw - - * expr.cc (ExprVisitor::visit(FuncExp)): Don't error about nested - delegate literals. - -2018-06-29 Iain Buclaw - - * d-frontend.cc (eval_builtin): Allow both gcc and frontend builtins. - * intrinsics.cc (call_builtin_fn): Use convert. - (expand_intrinsic_sqrt): Use fold_convert. - (expand_intrinsic_copysign): New function. - (expand_intrinsic_pow): New function. - (maybe_expand_intrinsic): Handle many math intrinsics. - * intrinsics.def (EXPM1, EXP2, LOG, LOG2, LOG10, ROUND, FLOORF), - (FLOOR, FLOORL, CEILF, CEIL, CEILL, TRUNC, FMIN, FMAX, COPYSIGN), - (POW, FMA): Add math intrinsics. - -2018-06-27 Iain Buclaw - - * d-codegen.cc (find_aggregate_field): Move to decl.cc - (build_class_instance): Move to decl.cc, make static. - * d-tree.h (build_class_instance): Remove declaration. - * decl.cc (DeclVisitor::finish_vtable): New function. - -2018-06-26 Iain Buclaw - - * types.cc (TypeVisitor::visit(TypeClass)): Handle get_symbol_decl - returning an error_mark_node. - -2018-06-22 Iain Buclaw - - * decl.cc (DeclVisitor::visit(FuncDeclaration)): Move function - unnesting to... - (get_symbol_decl): ... here. - -2018-06-22 Iain Buclaw - - * d-lang.cc (d_post_options): Set global showColumns parameter. - -2018-06-22 Iain Buclaw - - * d-diagnostic.cc (expand_format): Handle whitespace format specifier. - (d_diagnostic_report_diagnostic): Change signature, updated all - callers. Handle writing messages verbatim. - (vmessage): New function. - * d-lang.cc (d_parse_file): Use message to emit verbose diagnostics. - * decl.cc (DeclVisitor::visit(FuncDeclaration)): Likewise. - (get_symbol_decl): Likewise. - -2018-06-22 Iain Buclaw - - * d-builtins.cc (build_frontend_type): Use Type::merge2 to merge - generated front-end types. - * d-codegen.cc (declaration_type): Likewise. - (type_passed_as): Likewise. - * d-convert.cc (convert_expr): Use ClassDeclaration::isCPPclass. - * d-lang.cc (d_build_eh_runtime_type): Likewise. - * toir.cc (IRVisitor::visit): Use ClassDecalration::isCPPclass. - * typeinfo.cc (TypeInfoVisitor::visit): Use Type::merge2 to merge - generated front-end types. - * types.cc (layout_aggregate_type): Use ClassDeclaration::isCPPclass. - -2018-05-28 Iain Buclaw - - * expr.cc (ExprVisitor::visit(StringExp)): Copy string literal from - the frontend to a null terminated string. - -2018-05-21 Iain Buclaw - - * expr.cc (ExprVisitor::binary_op): Don't do complex conversions if - already handling excess precision. - -2018-04-02 Iain Buclaw - - * d-lang.cc (doing_semantic_analysis_p): New variable. - (d_parse_file): Set when in semantic pass. - * d-tree.h (doing_semantic_analysis_p): Add declaration. - * intrinsics.cc (maybe_expand_intrinsic): Test for - doing_semantic_analysis_p. - -2018-03-18 Iain Buclaw - - * d-codegen.cc (stabilize_expr): Move modify expression rewrite... - * expr.cc (ExprVisitor::binop_assignment): ... here. - -2018-03-11 Iain Buclaw - - * expr.cc (ExprVisitor::visit(StringExp)): Include null terminator - in length when calling build_String. Generate static array string - literals as array constructors. - -2018-03-04 Iain Buclaw - - * d-lang.cc (d_handle_option): Rename OPT_fintfc cases to OPT_H. - * gdc.texi (Code Generation): Rename -fintfc options to -H. - * lang-specs.h: Add H, Hd, and Hf options. - * lang.opt (H, Hd, Hf): New options. - (fintfc, fintfc-dir=, fintfc-file=): Deprecate and alias new options. - -2018-03-04 Iain Buclaw - - * lang.opt (fdeps, fdeps=): Deprecate options. - * gdc.texi (Code Generation): Remove deprecated fdeps options. - -2018-02-25 Iain Buclaw - - * Make-lang.in (D_FRONTEND_OBJS): Remove inline.o and inlinecost.o. - -2018-02-24 Iain Buclaw - - * d-frontend.cc (CTFloat::fabs): Assign result to real_t directly. - (CTFloat::ldexp): Likewise. - * d-longdouble.cc (longdouble::from_int): Remove function. - (longdouble::from_uint): Likewise. - (longdouble::to_int): Update Signature. - (longdouble::to_uint): Likewise. - (longdouble::operator): Likewise. - (longdouble::add): New function, move operator overload headers. - (longdouble::sub, longdouble::mul, longdouble::div): Likewise. - (longdouble::mod, longdouble::neg): Likewise. - (longdouble::cmp, longdouble::equals): Likewise. - * d-target.cc (Target::_init): Construct assignment into real_t - directly. - -2018-02-19 Iain Buclaw - - * Make-lang.in (DMD_WARN_CXXFLAGS): Only filter out - -Wmissing-format-attribute from WARN_CXXFLAGS. - -2018-02-18 Iain Buclaw - - * d-builtins.cc (build_frontend_type): Set alignment of structs in - frontend. - -2018-02-17 Iain Buclaw - - * d-incpath.cc (add_environment_paths): Remove function. - * gdc.texi (Environment Variables): Remove section. - -2018-02-10 Iain Buclaw - - * expr.cc (ExprVisitor::AssertExp): Use builtin expect to mark assert - condition as being likely true. - -2018-02-11 Iain Buclaw - - * lang.opt (fd-vgc, fd-verbose, fd-vtls): Remove options. - (femit-moduleinfo, femit-templates): Likewise. - (fmake-deps, fmake-mdeps): Likewise. - (fin, fout, fXf): Likewise. - -2018-01-28 Iain Buclaw - - * gdc.texi (Runtime Options): Remove deprecated -fproperty option. - -2018-01-27 Iain Buclaw - - * d-lang.cc (d_gimplify_expr): Gimplify all CALL_EXPR_ARGS_ORDERED - call arguments, not just non-constant. - -2018-01-27 Iain Buclaw - - * decl.cc (DeclVisitor::visit(VarDeclaration)): Don't reuse existing - temporary for TARGET_EXPR. - (declare_local_var): Push all variables to current binding level. - -2018-01-27 Iain Buclaw - - * toir.cc (build_function_body): Set input_location. - -2018-01-23 Iain Buclaw - - * d-codegen.cc (build_frame_type): Don't add chain field for - functions without context pointer. - (build_closure): Don't set chain field for functions without context - pointer. - -2018-01-21 Iain Buclaw - - * decl.cc (DeclVisitor::visit(StructDeclaration)): Mark compiler - generated symbols as DECL_ONE_ONLY instead of DECL_COMDAT. - (DeclVisitor::visit(ClassDeclaration)): Likewise. - (DeclVisitor::visit(InterfaceDeclaration)): Likewise. - (DeclVisitor::visit(EnumDeclaration)): Likewise. - (get_symbol_decl): Mark template instantiations as DECL_ONE_ONLY - instead of DECL_COMDAT. Don't call mark_needed. - (declare_extern_var): Don't call mark_needed. - (d_finish_decl): Remove zero initializer for common symbols. - (finish_thunk): Don't call d_comdat_linkage on generic thunk. - (d_comdat_linkage): Don't set DECL_DECLARED_INLINE on functions. - * typeinfo.cc (TypeInfoDeclVisitor::visit(TypeInfoDeclaration)): Mark - built-in typeinfo symbols as DECL_ONE_ONLY instead of DECL_COMDAT. - -2018-01-21 Iain Buclaw - - * d-lang.cc (d_init): Disable flag_weak if not supported. - * decl.cc (d_comdat_linkage): Use flag_weak to guard setting - DECL_ONE_ONLY on decls. - (d_linkonce_linkage): New function. - * gdc.texi (Runtime Options): Document -fweak. - * lang.opt (fweak): Declare. - -2018-01-21 Iain Buclaw - - * decls.cc (get_symbol_decl): Use attribute to mark naked functions. - -2018-01-08 Eugene Wissner - - * d-builtins.cc (d_eval_constant_expression): Handle polynomial - VECTOR_CST_NELTS. - (build_frontend_type): Handle polynomial TYPE_VECTOR_SUBPARTS. - -2018-01-08 Iain Buclaw - - Update copyright years. + * gdc.texi: Bump @copyrights-d year. -Copyright (C) 2018 Free Software Foundation, Inc. +Copyright (C) 2019 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/d/ChangeLog-2018 b/gcc/d/ChangeLog-2018 new file mode 100644 index 00000000000..d1afa38886d --- /dev/null +++ b/gcc/d/ChangeLog-2018 @@ -0,0 +1,644 @@ +2018-11-24 Iain Buclaw + + PR d/87866 + * d-incpath.cc (add_globalpaths): Use lrealpath to get canonical name. + (add_filepaths): Likewise. + +2018-11-17 Iain Buclaw + + PR d/87824 + * d-target.cc (Target::alignsize): Return min_align_of_type. + +2018-11-05 Iain Buclaw + + PR d/87865 + * d-system.h: New file. + +2018-11-01 Jakub Jelinek + + PR d/87824 + * lang.opt (Wpsabi): New option. + +2018-10-31 Iain Buclaw + + PR d/87825 + * Make-lang.in (d/idgen) Link with BUILD_LINKERFLAGS. + (d/impcvgen): Likewise. + +2018-10-26 Eugene Wissner + + * Make-lang.in (selftest-d): New. + * d-diagnostic.cc (vwarning): Fix warning emitting. + +2018-10-22 Iain Buclaw + + * d-spec.cc (lang_specific_driver): Always link against phobos if any + input file is given. + +2018-10-21 Iain Buclaw + + * d-lang.cc (d_get_alias_set): Always return zero. + +2018-10-21 Iain Buclaw + + * intrinsics.cc (maybe_set_intrinsic): Don't set built-in flag on + unsupported pow() overloads. + +2018-10-20 Iain Buclaw + + * expr.cc (ExprVisitor::binop_assignment): Call stabilize_reference on + LHS construct if it has side effects. + +2018-10-20 Iain Buclaw + + * intrinsics.cc (clear_intrinsic_flag): Remove function. + (maybe_expand_intrinsic): Remove clear_intrinsic_flag call. + +2018-10-20 Iain Buclaw + + * intrinsics.cc (expand_intrinsic_copysign): Use mathfn_built_in to + determine correct built-in to call. + (expand_intrinsic_pow): Likewise. + +2018-10-20 Iain Buclaw + + * intrinsics.cc (expand_intrinsic_sqrt): Remove implicit int to double + conversion. + (expand_intrinsic_pow): Likewise. + +2018-10-20 Iain Buclaw + + * d-codegen.cc (get_frame_for_symbol): Use error_at. + (build_frame_type): Likewise. + (get_framedecl): Likewise. + * d-lang.cc (d_parse_file): Likewise. + * decl.cc (DeclVisitor::visit(StructDeclaration)): Likewise. + (DeclVisitor::finish_vtable): Likewise. + (DeclVisitor::visit(ClassDeclaration)): Likewise. + (DeclVisitor::visit(InterfaceDeclaration)): Likewise. + (DeclVisitor::visit(EnumDeclaration)): Likewise. + (DeclVisitor::visit(VarDeclaration)): Likewise. + * toir.cc (IRVisitor::check_goto): Likewise. + (IRVisitor::check_previous_goto): Likewise. + (IRVisitor::visit(ThrowStatement)): Likewise. + +2018-10-20 Iain Buclaw + + * d-codegen.cc (get_array_length): Use quoted format flag in message. + (d_build_call): Likewise. + * d-lang.cc (d_handle_option): Likewise. + * decl.cc (DeclVisitor::finish_vtable): Likewise. + * expr.cc (ExprVisitor::visit(ArrayLengthExp)): Likewise. + (ExprVisitor::visit(DeleteExp)): Likewise. + (ExprVisitor::visit(RemoveExp)): Likewise. + (ExprVisitor::visit(RemoveExp)): Likewise. + (ExprVisitor::visit(CallExp)): Likewise. + (ExprVisitor::visit(DotVarExp)): Likewise. + (ExprVisitor::visit(VarExp)): Likewise. + (ExprVisitor::visit(ScopeExp)): Likewise. + (ExprVisitor::visit(TypeExp)): Likewise. + (build_expr): Likewise. + +2018-10-20 Iain Buclaw + + * d-diagnostic.cc (d_diagnostic_report_diagnostic): Skip translation + by instead calling diagnostic_set_info_translated. + +2018-10-20 Iain Buclaw + + * d-tree.h (bool_type_node): Rename to d_bool_type. + (byte_type_node): Rename to d_byte_type. + (ubyte_type_node): Rename to d_ubyte_type. + (short_type_node): Rename to d_short_type. + (ushort_type_node): Rename to d_ushort_type. + (int_type_node): Rename to d_int_type. + (uint_type_node): Rename to d_uint_type. + (long_type_node): Rename to d_long_type. + (ulong_type_node): Rename to d_ulong_type. + (cent_type_node): Rename to d_cent_type. + (ucent_type_node): Rename to d_ucent_type. + +2018-10-20 Iain Buclaw + + * expr.cc (ExprVisitor::visit(PowExp)): Remove function. + +2018-10-19 Iain Buclaw + + * d-attribs.c: Rename to d-attribs.cc. + * d-spec.c: Rename to d-spec.cc. + +2018-10-19 Iain Buclaw + + * d-lang.cc (d_gimplify_expr): Don't handle TREE_THIS_VOLATILE. + +2018-10-19 Iain Buclaw + + * d-diagnostic.cc (vwarning): Update to use Diagnostic enum. + (vdeprecation): Likewise. + (vdeprecationSupplemental): Likewise. + * d-lang.cc (d_init_options): Explicitly set warnings and deprecations + as DIAGNOSTICoff. + (d_handle_option): Update to use Diagnostic enum. + (d_post_options): Likewise. + +2018-10-18 Iain Buclaw + + * d-diagnostic.cc (expand_format): Rename to expand_d_format. + Updated all callers. + +2018-10-17 Iain Buclaw + + * d-codegen.cc (get_linemap): Rename function to make_location_t. + Updated all callers. + * d-tree.h (get_linemap): Rename declaration to make_location_t. + +2018-10-17 Iain Buclaw + + * expr.cc (ExprVisitor::binary_op): Use POINTER_DIFF_EXPR. + +2018-10-17 Iain Buclaw + + * intrinsics.cc (expand_intrinsic_bsf): Assert that built-in function + code is not END_BUILTINS. + (expand_intrinsic_bsr): Likewise. + (expand_intrinsic_bswap): Likewise. + (expand_intrinsic_popcnt): Likewise. + +2018-10-17 Iain Buclaw + + * config-lang.in (gtfiles): Add modules.cc. + * modules.cc: Include gt-d-modules.h. + (module_info): Mark with GTY. + (static_ctor_list): Likewise. + (static_dtor_list): Likewise. + +2018-10-17 Iain Buclaw + + * d-spec.c (lang_specific_driver): Use strrchr and strcmp to check + input file suffix. + +2018-10-17 Iain Buclaw + + * d-spec.c (phobos_action): New enum. + (library): Rename to phobos_library. + (lang_specific_driver): Update to use phobos_library. + (lang_specific_pre_link): Likewise. + +2018-10-16 Iain Buclaw + + * d-frontend.cc (Port::writelongLE): Remove function. + (Port::writelongBE): Remove function. + +2018-10-16 Iain Buclaw + + * d-convert.cc (convert): Remove goto maybe_fold. + +2018-10-16 Iain Buclaw + + * d-codegen.cc (warn_for_null_address): New function. + (build_boolop): Warn about comparing address of decl to null. + * d-convert.cc (decl_with_nonnull_addr_p): New function. + (d_truthvalue_conversion): Warn about evaluating address as boolean. + * d-tree.h (decl_with_nonnull_addr_p): Add declaration. + * lang.opt (Waddress): New option. + +2018-10-16 Iain Buclaw + + * d-codegen.cc (d_array_length): Assert that argument type is a + dynamic array. + (d_array_ptr): Likewise. + (d_array_value): Likewise. + (delegate_method): Assert that argument type is a delegate. + (delegate_object): Likewise. + +2018-10-16 Iain Buclaw + + * d-attribs.c (handle_malloc_attribute): Use gcc_assert instead of + gcc_unreachable. + (handle_pure_attribute): Likewise. + (handle_nothrow_attribute): Likewise. + +2018-10-16 Iain Buclaw + + * Make-lang.in: Rename compiler proper to d21. + * config-lang.in (compilers): Rename compiler to d21. + * d-spec.c (lang_specific_driver): Update comments. + * lang-specs.h: Rename compiler to d21. + +2018-10-16 Iain Buclaw + + * lang.opt: Add missing periods to the ends of sentences. + +2018-10-16 Iain Buclaw + + * d-lang.cc (d_handle_option): Remove handling of -fdeps. + (d_parse_file): Don't generate module dependencies. + * lang.opt (fdeps, fdeps=): Remove options. + (fintfc, fintfc-dir=, fintfc-file=): Remove options. + (ftransition=safe): Remove option. + +2018-10-16 Iain Buclaw + + * d-lang.cc (d_init_ts): Remove handling of IASM_EXPR. + (d_gimplify_expr): Likewise. + * d-tree.def (IASM_EXPR): Remove tree code. + +2018-10-15 Iain Buclaw + + * d-attrib.c (attr_noreturn_exclusions): Attribute not mutually + exclusive with self. + * typeinfo.cc (TypeInfoVisitor::layout_interfaces): Assert that + base class vtable is found in interface. + +2018-10-08 Iain Buclaw + + * decl.cc (DeclVisitor): Add using Visitor::visit. + * expr.cc (ExprVisitor): Likewise. + * imports.cc (ImportVisitor): Likewise. + * toir.cc (IRVisitor): Likewise. + * typeinfo.cc (TypeInfoVisitor): Likewise. + (TypeInfoDeclVisitor): Likewise. + (SpeculativeTypeVisitor): Likewise. + * types.cc (TypeVisitor): Likewise. + +2018-10-01 Iain Buclaw + + * d-frontend.cc: Include compiler.h, errors.h, expression.h. + (genCmain): Rename function to Compiler::genCmain. + (Compiler::paintAsType): New function. + (Compiler::loadModule): New function. + (getTypeInfoType): Call error function directly. + * d-lang.cc (deps_write): Use hash_set for dependency tracking. + (d_parse_file): Call Compiler::loadModule. + * d-target.cc: Remove include identifier.h, module.h. + (Target::paintAsType): Remove function. + (Target::loadModule): Remove function. + (Target::getTargetInfo): New function. + +2018-10-01 Eugene Wissner + + * decl.cc (finish_thunk): Adjust call to cgraph_node::create_thunk. + +2018-09-25 Eugene Wissner + + * d-codegen.cc (d_assert_call): Don't make STRING_CSTs larger than they + are. + * expr.cc (ExprVisitor::visit(StringExp)): Likewise. + * typeinfo.cc (TypeInfoVisitor::layout_string): Likewise. + +2018-09-24 Iain Buclaw + + * d-builtins.cc: Include expression.h, identifier.h. + * d-codegen.cc: Include identifier.h. + * d-convert.cc: Include declaration.h. + * d-frontend.cc: Include identifier.h. + * d-lang.cc: Include declaration.h, expression.h, identifier.h. + (d_parse_file): Call moduleToBuffer to get string dump of contents. + * d-target.cc: Include declaration.h, expression.h, identifier.h. + * expr.cc: Include identifier.h. + * imports.cc: Include identifier.h. + * intrinsics.cc: Include identifier.h. + * modules.cc: Include identifier.h. + * toir.cc: Include expression.h, identifier.h. + * typeinfo.cc: Include expression.h, identifier.h. + * types.cc: Include expression.h, identifier.h. + +2018-09-17 Iain Buclaw + + * Make-lang.in (D_INCLUDES): Rename dfrontend to dmd. + (d/%.o): Likewise. + (d/%.dmdgen.o): Likewise. + * verstr.h: Update to 2.076.1 + +2018-09-10 Iain Buclaw + + * intrinsics.cc (maybe_expand_intrinsic): Handle INTRINSIC_EXP. + * intrinsics.def (EXP): Add CTFE intrinsic. + +2018-09-07 Iain Buclaw + + * d-lang.cc: Include errors.h, mars.h. + * decl.cc: Include errors.h. + * typeinfo.cc: Include globals.h, errors.h. + +2018-09-05 Eugene Wissner + + * d-frontend.cc (eval_builtin): Replace DECL_BUILT_IN with + fndecl_built_in_p. + +2018-08-29 Iain Buclaw + + * d-target.cc (Target::prefixName): Remove function. + (Target::cppParameterType): New function. + +2018-08-25 Iain Buclaw + + * Make-lang.in (D_FRONTEND_OBJS): Add iasm.o, iasmgcc.o + * lang.opt (fproperty): Remove option. + * d-lang.cc (d_handle_option): Remove case for OPT_fproperty. + * toir.cc (IRVisitor::visit(ExtAsmStatement)): Rename override to + GccAsmStatement. + +2018-07-23 Eugene Wissner + + * d-lang.cc (d_handle_option): Change function argument to HOST_WIDE_INT. + * lang.opt (Walloca-larger-than=, Wno-alloca-larger-than): New options. + * opt.texi (Walloca-larger-than=, Wno-alloca-larger-than): Likewise. + +2018-07-21 Iain Buclaw + + * decl.cc (get_symbol_decl): Set all generated static symbols as + DECL_EXTERNAL. Move logic for determining TREE_STATIC ... + (start_function): ... here. + (d_finish_decl): Update TLS model after finishing variable linkage. + +2018-07-14 Iain Buclaw + + * Make-lang.in (d.tags): Rename dfrontend to dmd. + * d-attribs.c: Rename dfrontend includes to dmd. + * d-builtins.cc: Likewise. + * d-codegen.cc: Likewise. + * d-convert.cc: Likewise. + * d-diagnostic.cc: Likewise. + * d-frontend.cc: Likewise. + * d-incpath.cc: Likewise. + * d-lang.cc: Likewise. + * d-longdouble.cc: Likewise. + * d-target.cc: Likewise. + * decl.cc: Likewise. + * expr.cc: Likewise. + * imports.cc: Likewise. + * intrinsics.cc: Likewise. + * modules.cc: Likewise. + * runtime.cc: Likewise. + * toir.cc: Likewise. + * typeinfo.cc: Likewise. + * types.cc: Likewise. + +2018-07-14 Iain Buclaw + + * types.cc (same_type_p): Check type codes match before checking + equivalence. + +2018-07-09 Iain Buclaw + + * Makefile.in (d/verstr.h): Remove recipe. + (d.mostlyclean): Remove cleanup of verstr.h. + * verstr.h: New file. + +2018-07-06 Iain Buclaw + + * d-codegen.cc (lower_struct_comparison): Evaluate side effects of + empty struct. + (build_struct_comparison): Likewise. + +2018-07-06 Iain Buclaw + + * typeinfo.cc (TypeInfoVisitor::layout_interfaces): Only generate an + interface vtable for classes. + (TypeInfoVisitor::visit(TypeInfoClassDeclaration)): Likewise. + +2018-07-05 Iain Buclaw + + * d-lang.cc (deps_write): Ignore __main module. + (d_handle_option): Handle -fmain option. + (d_parse_file): Generate D main function if requested. + * lang.opt (fmain): New option. + +2018-07-04 Iain Buclaw + + * d-builtins.cc (d_build_builtins_module): Export __builtin_clonglong + and __builtin_culonglong to gcc builtins module. + +2018-07-04 Eugene Wissner + + * d-spec.c: Include opt-suggestions.h containing option_proposer used by + gcc.h. + +2018-07-01 Iain Buclaw + + * decl.cc (get_symbol_decl): Implicitly convert return type of 'void' + main to 'int' for both C and D entry functions. + * toir.cc (IRVisitor::visit(ReturnStatement)): Likewise. + +2018-06-30 Iain Buclaw + + * expr.cc (ExprVisitor::visit(FuncExp)): Don't error about nested + delegate literals. + +2018-06-29 Iain Buclaw + + * d-frontend.cc (eval_builtin): Allow both gcc and frontend builtins. + * intrinsics.cc (call_builtin_fn): Use convert. + (expand_intrinsic_sqrt): Use fold_convert. + (expand_intrinsic_copysign): New function. + (expand_intrinsic_pow): New function. + (maybe_expand_intrinsic): Handle many math intrinsics. + * intrinsics.def (EXPM1, EXP2, LOG, LOG2, LOG10, ROUND, FLOORF), + (FLOOR, FLOORL, CEILF, CEIL, CEILL, TRUNC, FMIN, FMAX, COPYSIGN), + (POW, FMA): Add math intrinsics. + +2018-06-27 Iain Buclaw + + * d-codegen.cc (find_aggregate_field): Move to decl.cc + (build_class_instance): Move to decl.cc, make static. + * d-tree.h (build_class_instance): Remove declaration. + * decl.cc (DeclVisitor::finish_vtable): New function. + +2018-06-26 Iain Buclaw + + * types.cc (TypeVisitor::visit(TypeClass)): Handle get_symbol_decl + returning an error_mark_node. + +2018-06-22 Iain Buclaw + + * decl.cc (DeclVisitor::visit(FuncDeclaration)): Move function + unnesting to... + (get_symbol_decl): ... here. + +2018-06-22 Iain Buclaw + + * d-lang.cc (d_post_options): Set global showColumns parameter. + +2018-06-22 Iain Buclaw + + * d-diagnostic.cc (expand_format): Handle whitespace format specifier. + (d_diagnostic_report_diagnostic): Change signature, updated all + callers. Handle writing messages verbatim. + (vmessage): New function. + * d-lang.cc (d_parse_file): Use message to emit verbose diagnostics. + * decl.cc (DeclVisitor::visit(FuncDeclaration)): Likewise. + (get_symbol_decl): Likewise. + +2018-06-22 Iain Buclaw + + * d-builtins.cc (build_frontend_type): Use Type::merge2 to merge + generated front-end types. + * d-codegen.cc (declaration_type): Likewise. + (type_passed_as): Likewise. + * d-convert.cc (convert_expr): Use ClassDeclaration::isCPPclass. + * d-lang.cc (d_build_eh_runtime_type): Likewise. + * toir.cc (IRVisitor::visit): Use ClassDecalration::isCPPclass. + * typeinfo.cc (TypeInfoVisitor::visit): Use Type::merge2 to merge + generated front-end types. + * types.cc (layout_aggregate_type): Use ClassDeclaration::isCPPclass. + +2018-05-28 Iain Buclaw + + * expr.cc (ExprVisitor::visit(StringExp)): Copy string literal from + the frontend to a null terminated string. + +2018-05-21 Iain Buclaw + + * expr.cc (ExprVisitor::binary_op): Don't do complex conversions if + already handling excess precision. + +2018-04-02 Iain Buclaw + + * d-lang.cc (doing_semantic_analysis_p): New variable. + (d_parse_file): Set when in semantic pass. + * d-tree.h (doing_semantic_analysis_p): Add declaration. + * intrinsics.cc (maybe_expand_intrinsic): Test for + doing_semantic_analysis_p. + +2018-03-18 Iain Buclaw + + * d-codegen.cc (stabilize_expr): Move modify expression rewrite... + * expr.cc (ExprVisitor::binop_assignment): ... here. + +2018-03-11 Iain Buclaw + + * expr.cc (ExprVisitor::visit(StringExp)): Include null terminator + in length when calling build_String. Generate static array string + literals as array constructors. + +2018-03-04 Iain Buclaw + + * d-lang.cc (d_handle_option): Rename OPT_fintfc cases to OPT_H. + * gdc.texi (Code Generation): Rename -fintfc options to -H. + * lang-specs.h: Add H, Hd, and Hf options. + * lang.opt (H, Hd, Hf): New options. + (fintfc, fintfc-dir=, fintfc-file=): Deprecate and alias new options. + +2018-03-04 Iain Buclaw + + * lang.opt (fdeps, fdeps=): Deprecate options. + * gdc.texi (Code Generation): Remove deprecated fdeps options. + +2018-02-25 Iain Buclaw + + * Make-lang.in (D_FRONTEND_OBJS): Remove inline.o and inlinecost.o. + +2018-02-24 Iain Buclaw + + * d-frontend.cc (CTFloat::fabs): Assign result to real_t directly. + (CTFloat::ldexp): Likewise. + * d-longdouble.cc (longdouble::from_int): Remove function. + (longdouble::from_uint): Likewise. + (longdouble::to_int): Update Signature. + (longdouble::to_uint): Likewise. + (longdouble::operator): Likewise. + (longdouble::add): New function, move operator overload headers. + (longdouble::sub, longdouble::mul, longdouble::div): Likewise. + (longdouble::mod, longdouble::neg): Likewise. + (longdouble::cmp, longdouble::equals): Likewise. + * d-target.cc (Target::_init): Construct assignment into real_t + directly. + +2018-02-19 Iain Buclaw + + * Make-lang.in (DMD_WARN_CXXFLAGS): Only filter out + -Wmissing-format-attribute from WARN_CXXFLAGS. + +2018-02-18 Iain Buclaw + + * d-builtins.cc (build_frontend_type): Set alignment of structs in + frontend. + +2018-02-17 Iain Buclaw + + * d-incpath.cc (add_environment_paths): Remove function. + * gdc.texi (Environment Variables): Remove section. + +2018-02-10 Iain Buclaw + + * expr.cc (ExprVisitor::AssertExp): Use builtin expect to mark assert + condition as being likely true. + +2018-02-11 Iain Buclaw + + * lang.opt (fd-vgc, fd-verbose, fd-vtls): Remove options. + (femit-moduleinfo, femit-templates): Likewise. + (fmake-deps, fmake-mdeps): Likewise. + (fin, fout, fXf): Likewise. + +2018-01-28 Iain Buclaw + + * gdc.texi (Runtime Options): Remove deprecated -fproperty option. + +2018-01-27 Iain Buclaw + + * d-lang.cc (d_gimplify_expr): Gimplify all CALL_EXPR_ARGS_ORDERED + call arguments, not just non-constant. + +2018-01-27 Iain Buclaw + + * decl.cc (DeclVisitor::visit(VarDeclaration)): Don't reuse existing + temporary for TARGET_EXPR. + (declare_local_var): Push all variables to current binding level. + +2018-01-27 Iain Buclaw + + * toir.cc (build_function_body): Set input_location. + +2018-01-23 Iain Buclaw + + * d-codegen.cc (build_frame_type): Don't add chain field for + functions without context pointer. + (build_closure): Don't set chain field for functions without context + pointer. + +2018-01-21 Iain Buclaw + + * decl.cc (DeclVisitor::visit(StructDeclaration)): Mark compiler + generated symbols as DECL_ONE_ONLY instead of DECL_COMDAT. + (DeclVisitor::visit(ClassDeclaration)): Likewise. + (DeclVisitor::visit(InterfaceDeclaration)): Likewise. + (DeclVisitor::visit(EnumDeclaration)): Likewise. + (get_symbol_decl): Mark template instantiations as DECL_ONE_ONLY + instead of DECL_COMDAT. Don't call mark_needed. + (declare_extern_var): Don't call mark_needed. + (d_finish_decl): Remove zero initializer for common symbols. + (finish_thunk): Don't call d_comdat_linkage on generic thunk. + (d_comdat_linkage): Don't set DECL_DECLARED_INLINE on functions. + * typeinfo.cc (TypeInfoDeclVisitor::visit(TypeInfoDeclaration)): Mark + built-in typeinfo symbols as DECL_ONE_ONLY instead of DECL_COMDAT. + +2018-01-21 Iain Buclaw + + * d-lang.cc (d_init): Disable flag_weak if not supported. + * decl.cc (d_comdat_linkage): Use flag_weak to guard setting + DECL_ONE_ONLY on decls. + (d_linkonce_linkage): New function. + * gdc.texi (Runtime Options): Document -fweak. + * lang.opt (fweak): Declare. + +2018-01-21 Iain Buclaw + + * decls.cc (get_symbol_decl): Use attribute to mark naked functions. + +2018-01-08 Eugene Wissner + + * d-builtins.cc (d_eval_constant_expression): Handle polynomial + VECTOR_CST_NELTS. + (build_frontend_type): Handle polynomial TYPE_VECTOR_SUBPARTS. + +2018-01-08 Iain Buclaw + + Update copyright years. + +Copyright (C) 2018 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/d/gdc.texi b/gcc/d/gdc.texi index 36d9c59b512..faadffa2502 100644 --- a/gcc/d/gdc.texi +++ b/gcc/d/gdc.texi @@ -12,7 +12,7 @@ @include gcc-common.texi @c Copyright years for this manual. -@set copyrights-d 2006-2018 +@set copyrights-d 2006-2019 @copying @c man begin COPYRIGHT diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi index 568b8289430..8849ceb0708 100644 --- a/gcc/doc/cpp.texi +++ b/gcc/doc/cpp.texi @@ -10,7 +10,7 @@ @copying @c man begin COPYRIGHT -Copyright @copyright{} 1987-2018 Free Software Foundation, Inc. +Copyright @copyright{} 1987-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/cppinternals.texi b/gcc/doc/cppinternals.texi index e31a5e207ab..0476ced86c4 100644 --- a/gcc/doc/cppinternals.texi +++ b/gcc/doc/cppinternals.texi @@ -18,7 +18,7 @@ @ifinfo This file documents the internals of the GNU C Preprocessor. -Copyright (C) 2000-2018 Free Software Foundation, Inc. +Copyright (C) 2000-2019 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -47,7 +47,7 @@ into another language, under the above conditions for modified versions. @page @vskip 0pt plus 1filll @c man begin COPYRIGHT -Copyright @copyright{} 2000-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2000-2019 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi index 2572eb0ab90..5297b9cb5d0 100644 --- a/gcc/doc/gcc.texi +++ b/gcc/doc/gcc.texi @@ -40,7 +40,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi index 2554b31a952..99ec005e967 100644 --- a/gcc/doc/gccint.texi +++ b/gcc/doc/gccint.texi @@ -26,7 +26,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index 8046fd78e35..41a0ea6aacf 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -4,7 +4,7 @@ @ignore @c man begin COPYRIGHT -Copyright @copyright{} 1996-2018 Free Software Foundation, Inc. +Copyright @copyright{} 1996-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 443003b0fde..5cf007bd1ec 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -44,7 +44,7 @@ @settitle Installing GCC: GNU Free Documentation License @end ifset -@c Copyright (C) 1988-2018 Free Software Foundation, Inc. +@c Copyright (C) 1988-2019 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com @c IMPORTANT: whenever you modify this file, run `install.texi2html' to @@ -69,7 +69,7 @@ @c Part 2 Summary Description and Copyright @copying -Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. @sp 1 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 9f5dd3403cc..fe55c36133d 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -8,7 +8,7 @@ @c man end @c man begin COPYRIGHT -Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 04463651988..4041b4acad2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5604 +1,4 @@ -2018-12-31 Thomas Koenig - - PR fortran/82995 - * trans-expr.c (gfc_conv_procedure_call): Pass NULL pointer - for missing optional dummy arguments for library routines. - * trans-intinsic.c (conv_mask_condition): New function. - (gfc_conv_intrinsic_arith): Detect and handle optional mask. - (gfc_conv_intrinsic_minmaxloc): Likewise. - (gfc_conv_intrinsic_findloc): Likewise. - (gfc_conv_intrinsic_minmaxval): Likewise. - (gfc_inline_intrinsic_function_p): Do not inline for rank > 1 if - an optional mask is present. - -2018-12-29 Steven G. Kargl - - * expr.c (external_spec_function): Add ieee_support_subnormal to list - of IEEE inquiry functions. - -2018-12-29 Steven G. Kargl - - * cpp.c (gfc_cpp_init): Add pre-defined macros for INTEGER(1) - INTEGER(2), INTEGER(8) and INTEGER(16) if supported. Add pre-defined - macros for REAL(10) and REAL(16) if available. - * gfortran.texi: Document new macros. - -2018-12-27 Steven G. Kargl - - PR fortran/81027 - * expr.c (gfc_check_init_expr): Distinguish assumed-shape versus - deferred-shape dummy arguments in an error message. - -2018-12-26 Harald Anlauf - - PR fortran/85407 - * module.c (read_module): Convert assert to fatal error to give a - sensible error message. - -2018-12-24 Steven G. Kargl - - PR fortran/45513 - PR fortran/81509 - * check.c: Rename function gfc_check_iand to gfc_check_iand_ieor_ior. - * check.c (boz_args_check): New function. Check I and J not both BOZ. - (gfc_check_dshift,gfc_check_iand_ieor_ior, gfc_check_ishft, - gfc_check_and, gfc_check_merge_bits): Use it. - * check.c (gfc_check_iand_ieor_ior): Force conversion of BOZ to kind - type of other agrument. Remove silly GNU extension. - (gfc_check_ieor, gfc_check_ior): Delete now unused functions. - * intrinsic.c (add_functions): Use gfc_check_iand_ieor_ior. Wrap long - line. - * intrinsic.h: Rename gfc_check_iand to gfc_check_iand_ieor_ior. - Delete prototype for bool gfc_check_ieor and gfc_check_ior - * intrinsic.texi: Update documentation for boz-literal-constant. - -2018-12-23 Paul Thomas - - PR fortran/77703 - * resolve.c (get_temp_from_expr): Use the string length of - constant character expressions. - -2018-12-22 Steven G. Kargl - - PR fortran/88328 - * io.c (resolve_tag_format): Add error for zero-sized array. - (gfc_resolve_dt): Manipulate gfc_current_locus to get sensible error - message locus. - -2018-12-22 Steven G . Kargl - - PR fortran/85798 - * decl.c (gfc_match_data): If a component of a derived type entity - appears in data statement, check that does not have the allocatable - attribute. - -2018-12-22 Steven G. Kargl - - PR fortran/88169 - * module.c (mio_namelist): Remove an error condition/message that - is contrary to the Fortran standard. - -2018-12-22 Thomas Koenig - - PR fortran/85544 - * frontend-passes.c (optimize_power): Remove. - (optimize_op): Remove call to optimize_power. - * trans-expr.c (gfc_conv_power_op): Handle cases of 1**integer, - (2|4|8|16) ** integer and (-1) ** integer. - -2018-12-21 Paul Thomas - - PR fortran/87881 - * expr.c (find_inquiry_ref): Loop through the inquiry refs in - case there are two of them. - (simplify_ref_chain): Return true after a successful call to - find_inquiry_ref. - -2018-12-19 Steven G. Kargl - - PR fortran/87992 - * resolve.c (resolve_fl_variable): Avoid a NULL pointer. - -2018-12-16 Steven G. Kargl - - * resolve.c (resolve_transfer): Remove dead code. - -2018-12-16 Steven G. Kargl - - PR fortran/88116 - PR fortran/88467 - * array.c (gfc_match_array_constructor): Check return value of - gfc_convert_type(). Skip constructor elements with BT_UNKNOWN, - which need to go through resolution. - * intrinsic.c (gfc_convert_type_warn): Return early if the types - match (i.e., no conversion is required). - * simplify.c (gfc_convert_constant): Remove a gfc_internal_error, - and return gfc_bad_expr. - -2018-12-16 Steven G. Kargl - - * decl.c (variable_decl): Typo fixes in comment and error messsage. - -2018-12-16 Thomas Koenig - - PF fortran/88364 - * trans-expr.c (gfc_conv_expr_reference): Do not add clobber if - the expression contains a reference. - -2018-12-15 Steven G. Kargl - - PR fortran/87944 - * decl.c (match_data_constant): Allow inquiry parameter as data - constant in data statement. - -2018-12-15 Steven G. Kargl - - PR fortran/88138 - * decl.c (variable_decl): Check that a derived isn't being assigned - an incompatible entity in an initialization. - -2018-12-12 Jakub Jelinek - - PR fortran/88463 - * trans-openmp.c (gfc_omp_predetermined_sharing): Handle TREE_READONLY - VAR_DECLs with DECL_EXTERNAL like those with TREE_STATIC. - -2018-12-11 Steven G. Kargl - - PR fortran/88155 - * primary.c (gfc_match_structure_constructor): Set the locus of - an expression to avoid a NULL pointer dereference. - -2018-12-11 Steven G. Kargl - - PR fortran/88249 - * gfortran.h: Update prototype for gfc_resolve_filepos(). - * io.c (gfc_resolve_filepos): Check for UNIT number if ERR= is present. - Use passed in locus for error message. - * resolve.c (gfc_resolve_code): Pass locus in gfc_resolve_filepos() - call. - -2018-12-10 Steven G. Kargl - - PR fortran/97922 - * io.c (gfc_match_open): Additional checks on ASYNCHRONOUS. - -2018-12-10 Steven G. Kargl - - PR fortran/88269 - * io.c (io_constraint): Update macro. If locus line buffer is NULL, - use gfc_current_locus in error messages. - (check_io_constraints): Catch missing IO UNIT in write and read - statements. io_constraint macro is incompatible here. - -2018-12-09 Steven G. Kargl - - PR fortran/88205 - * io.c (gfc_match_open): Move NEWUNIT checks to after STATUS checks. - -2018-12-09 Steven G. Kargl - - PR fortran/88206 - * match.c (gfc_match_type_spec): REAL can be an intrinsic function. - -2018-12-09 Fritz Reese - - PR fortran/88228 - * resolve.c (resolve_operator): Do not call resolve_function. - Break like other cases. - -2018-12-09 Cesar Philippidis - - * trans-openmp.c (gfc_trans_oacc_combined_directive): Set the - location of combined acc loops. - -2018-12-09 Thomas Schwinge - - * openmp.c (resolve_oacc_loop_blocks): Remove checking of OpenACC - loop clauses. - - PR fortran/88420 - * openmp.c (resolve_oacc_loop_blocks): Remove "Clause SEQ - conflicts with INDEPENDENT" diagnostic. - -2018-12-08 Steven G. Kargl - - PR fortran/88048 - * resolve.c (check_data_variable): Named constant cannot be a - data object. - -2018-12-08 Steven G. Kargl - - PR fortran/87945 - * decl.c (var_element): Inquiry parameters cannit be data objects. - -2018-12-08 Steven G. Kargl - - PR fortran/88025 - * expr.c (gfc_apply_init): Remove asserts that cannot trigger. - Check for a NULL pointer. - -2018-12-08 Steven G. Kargl - - PR fortran/88357 - * class.c (insert_component_ref): Check for NULL pointer and - previous error message issued. - * parse.c (parse_associate): Check for NULL pointer. - * resolve.c (resolve_assoc_var): Check for NULL pointer. - -2018-12-07 Jakub Jelinek - - PR fortran/88377 - * trans-openmp.c (gfc_omp_clause_default_ctor, - gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op, - gfc_omp_clause_linear_ctor, gfc_omp_clause_dtor): Only consider - GFC_DECL_GET_SCALAR_ALLOCATABLE vars as scalar allocatables if they - have pointer type. - -2018-12-03 Fritz Reese - Mark Eggleston - - PR fortran/87919 - * options.c (SET_FLAG, SET_BITFLAG, SET_BITFLAG2): New macros. - (set_dec_flags): Set/unset DEC and std flags according to value. - (post_dec_flags, set_init_local_zero): New functions. - (gfc_init_options): Use set_init_local_zero and post_dec_flags. - (gfc_handle_options) : Use - SET_BITFLAG. - : Use set_init_local_zero. - : Pass value to set_dec_flags. - : Remove. - -2018-11-30 Thomas Schwinge - - * gfortran.h (struct gfc_omp_clauses): Remove "wait". Adjust all - users. - - * openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait - clauses. - -2018-11-27 Martin Liska - - * decl.c (gfc_match_gcc_builtin): New function. - * gfortran.h (struct vect_builtin_tuple): New. - (gfc_adjust_builtins): Likewise. - * lang-specs.h (TARGET_F951_OPTIONS): New. - (F951_OPTIONS): Use it. - * lang.opt: Add new option -fpre-include. - * match.h (gfc_match_gcc_builtin): Declare new function. - * parse.c (decode_gcc_attribute): Handle builtin. - (parse_progunit): Call gfc_adjust_builtins. - * scanner.c (gfc_new_file): Load pre-included header file - when provided. - * trans-intrinsic.c (add_simd_flag_for_built_in): New. - (gfc_adjust_builtins): Likewise. - -2018-11-24 Paul Thomas - - PR fortran/88143 - * resolve.c (resolve_variable): Check for associate names with - NULL target. - -2018-11-23 Jakub Jelinek - - * lang.opt (fpad-source): New option. - * scanner.c (load_line): Don't pad fixed form lines if - !flag_pad_source. - * invoke.texi (-fno-pad-source): Document. - -2018-11-21 Jakub Jelinek - - * invoke.texi (-fdec-include): Document. - -2018-11-21 Jakub Jelinek - Mark Eggleston - - * lang.opt (fdec-include): New option. - * options.c (set_dec_flags): Set also flag_dec_include. - * scanner.c (include_line): Change return type from bool to int. - In fixed form allow spaces in between include keyword letters. - For -fdec-include, allow in fixed form 0 in column 6. With - -fdec-include return -1 if the parsed line is not full include - statement and it could be successfully completed on continuation - lines. - (include_stmt): New function. - (load_file): Adjust include_line caller. If it returns -1, keep - trying include_stmt until it stops returning -1 whenever adding - further line of input. - -2018-11-18 Thomas Koenig - - PR fortran/88073 - * frontend-passes.c (combine_array_constructor): Do not do - anything if in a WHERE statement. - -2018-11-18 Thomas Koenig - - PR fortran/70260 - * expr.c (gfc_check_assign): Reject assigning to an external - symbol. - (gfc_check_pointer_assign): Add suppress_type_test - argument. Insert line after if. A non-proc pointer can not point - to a constant. Only check types if suppress_type_test is false. - * gfortran.h (gfc_check_pointer_assign): Add optional - suppress_type_test argument. - * resolve.c (gfc_resolve_code): Move up gfc_check_pointer_assign - and give it the extra argument. - (resolve_fl_procedure): Set error on value for a function with - an inizializer. - -2018-11-15 David Malcolm - - PR other/19165 - * error.c (gfc_diagnostic_finalizer): Add diagnostic_t param. - -2018-11-13 David Malcolm - - * cpp.c: Replace "source_location" with "location_t". - * gfortran.h: Likewise. - -2018-11-08 Jakub Jelinek - - * trans-openmp.c (gfc_trans_omp_clauses): Use - OMP_CLAUSE_DEFAULTMAP_SET_KIND. - (gfc_trans_omp_atomic): Set OMP_ATOMIC_MEMORY_ORDER - rather than OMP_ATOMIC_SEQ_CST. - (gfc_trans_omp_taskgroup): Build OMP_TASKGROUP using - make_node instead of build1_loc. - * types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR, - BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT, - BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, - BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR, - BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, - BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New. - (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): Formatting fix. - -2018-11-02 Thomas Koenig - - PR fortran/46020 - * decl.c (verify_bind_c_sym): Remove unnecessary space - in error message. - -2018-11-01 Thomas Koenig - - PR fortran/87782 - * frontend-passes.c (constant_string_length): If there is a - substring with a length which cannot be reduced to a constant, - return NULL. - -2018-11-01 Paul Thomas - - PR fortran/40196 - * dependency.c (are_identical_variables): Return false if the - inquiry refs are not the same. - (gfc_ref_needs_temporary_p): Break on an inquiry ref. - * dump_parse_tree.c (show_ref): Show the inquiry ref type. - * expr.c (gfc_free_ref_list): Break on an inquiry ref. - (gfc_copy_ref): Copy the inquiry ref types. - (find_inquiry_ref): New function. - (simplify_const_ref, simplify_ref_chain): Call it. Add new arg - to simplify_ref_chain. - (gfc_simplify_expr): Use the new arg in call to - simplify_ref_chain. - (gfc_get_full_arrayspec_from_expr, gfc_is_coarray): Break on - inquiry ref. - (gfc_traverse_expr): Return true for inquiry ref. - * frontend-passes.c (gfc_expr_walker): Break on inquiry ref. - * gfortran.h : Add enums and union member in gfc_ref to - implement inquiry refs. - * intrinsic.c : Fix white nois. - * match.c (gfc_match_assignment): A constant lavlue is an - error. - * module.c : Add DECL_MIO_NAME for inquiry_type and the mstring - for inquiry_types. - (mio_ref): Handle inquiry refs. - * primary.c (is_inquiry_ref): New function. - (gfc_match_varspec): Handle inquiry refs calling new function. - (gfc_variable_attr): Detect inquiry ref for disambiguation - with components. - (caf_variable_attr): Treat inquiry and substring refs in the - same way. - * resolve.c (find_array_spec): ditto. - (gfc_resolve_substring_charlen): If there is neither a charlen - ref not an inquiry ref, return. - (resolve_ref): Handle inqiry refs as appropriate. - (resolve_allocate_expr): Entities with an inquiry ref cannot be - allocated. - * simplify.c (simplify_bound, simplify_cobound): Punt on - inquiry refs. - * trans-array.c (get_array_ctor_var_strlen): Break on inquiry - ref. - *trans-expr.c (conv_inquiry): New function. - (gfc_conv_variable): Retain the last typespec to pass to - conv_inquiry on detecting an inquiry ref. - -2018-11-01 Thomas Koenig - - PR fortran/46020 - * decl.c (verify_bind_c_sym): Improve error message. - -2018-11-01 Thomas Koenig - - PR fortran/54613 - * gfortran.texi (File format of unformatted sequential files): - Replace random comma with period. - * intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu. - (FINDLOC): Document. - (MAXLOC): Add refrence to FINDLOC. - (MINLOC): Likewise. - -2018-10-31 Nathan Sidwell - - * cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call. - -2018-10-31 Martin Liska - - * trans-decl.c (struct module_hasher): Call htab_hash_string - for s->name and not for s. - -2018-10-30 Thomas Koenig - - PR fortran/85896 - * simplify.c (simplify_min_max): Do not convert the type of the - return expression. - -2017-10-28 Thomas Koenig - - PR fortran/54613 - * gfortran.h (gfc_isym_id): Add GFC_ISYM_FINDLOC. - (gfc_check_f): Add f6fl field. - (gfc_simplify_f): Add f6 field. - (gfc_resolve_f): Likewise. - (gfc_type_letter): Add optional logical_equas_int flag. - * check.c (intrinsic_type_check): New function. - (gfc_check_findloc): New function. - * intrinsics.c (gfc_type_letter): If logical_equals_int is - set, act accordingly. - (add_sym_5ml): Reformat comment. - (add_sym_6fl): New function. - (add_functions): Add findloc. - (check_arglist): Add sixth argument, handle it. - (resolve_intrinsic): Likewise. - (check_specific): Handle findloc. - * intrinsic.h (gfc_check_findloc): Add prototype. - (gfc_simplify_findloc): Likewise. - (gfc_resolve_findloc): Likewise. - (MAX_INTRINSIC_ARGS): Adjust. - * iresolve.c (gfc_resolve_findloc): New function. - * simplify.c (gfc_simplify_minmaxloc): Make static. - (simplify_findloc_to_scalar): New function. - (simplify_findloc_nodim): New function. - (simplify_findloc_to_array): New function. - (gfc_simplify_findloc): New function. - (gfc_conv_intrinsic_findloc): New function. - (gfc_conv_intrinsic_function): Handle GFC_ISYM_FINDLOC. - (gfc_is_intrinsic_libcall): Likewise. - -2018-10-27 Thomas Koenig - - PR fortran/86907 - * frontend-passes.c (check_locus_code): Add information that - warning about missing location information points to an - inconsisten internal state. - (check_locus_expr): Likewise. - -2018-10-25 Jakub Jelinek - - PR fortran/87725 - * openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and - nonmonotonic modifiers regardless of if they have been parsed - already or if the opposite one has. Fix up check whether - comma after modifier should be parsed. - (resolve_omp_clauses): Diagnose schedule modifier restrictions. - -2018-10-23 Paul Thomas - - PR fortran/85603 - * frontend-passes.c (get_len_call): New function to generate a - call to intrinsic LEN. - (create_var): Use this to make length expressions for variable - rhs string lengths. - Clean up some white space issues. - -2018-10-21 Paul Thomas - - PR fortran/71880 - * trans-expr.c (gfc_trans_pointer_assignment): Set the string - length for array valued deferred length lhs. - -2018-10-18 Tobias Burnus - - PR fortran/87625 - * trans-array.c (gfc_is_reallocatable_lhs): Detect allocatable - polymorphic arrays. - -2018-10-18 Paul Thomas - - PR fortran/58618 - * trans-stmt.c (trans_associate_var): All strings that return - as pointer types can be assigned directly to the associate - name so remove 'attr' and the condition that uses it. - -2018-10-18 Paul Thomas - - PR fortran/58618 - * trans-decl.c (gfc_get_symbol_decl): Deal correctly with the - initialization with NULL() of a deferred length pointer. - -2018-10-17 Tobias Burnus - - PR fortran/87632 - * resolve.c (resolve_select_type): Use correct variable. - -2018-10-17 David Malcolm - - * Make-lang.in (selftest-fortran): New. - -2018-10-17 Paul Thomas - - PR fortran/56386 - PR fortran/58906 - PR fortran/77385 - PR fortran/80260 - PR fortran/82077 - * resolve.c (resolve_variable): Fix up expressions with array - associate names, where the parser did not detect that this is - array and there was no array part_ref in the expression. - -2018-10-16 Tobias Burnus - - PR fortran/67125 - * trans-array.c (gfc_array_init_size, gfc_array_allocate): - Rename argument e3_is_array_constr to e3_has_nodescriptor - and update comments. - * trans-stmt.c (gfc_trans_allocate): Also fix lower bound - to 1 for nonalloc/nonpointer func results/vars besides - array constructors. - -2018-10-16 Tobias Burnus - - PR fortran/87556 - * trans-stmt.c (form_team, change_team, sync_team): - Don't ignore argse.pre/argse.post. - -2018-10-15 Paul Thomas - Tobias Burnus - - PR fortran/87566 - * resolve.c (resolve_assoc_var): Add missing array spec for - class associate names. - (resolve_select_type): Handle case where last typed component - of the selector has a different type to the expression. - * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Replace - call to gfc_expr_to_initialize with call to gfc_copy_expr. - (gfc_conv_class_to_class): Guard assignment to 'len' field - against case where zero constant is supplied. - -2018-10-12 Tobias Burnus - - PR fortran/87597 - * expr.c (gfc_simplify_expr): Avoid simplifying - the 'array' argument to lbound/ubound/lcobound/ - ucobound. - -2018-10-12 Tobias Burnus - - PR fortran/58787 - * decl.c (get_proc_name): Return with error before - creating sym_tree. - -2018-10-11 Tobias Burnus - - Revert: - 2018-10-09 Tobias Burnus - - PR fortran/83522 - * resolve.c (resolve_ref): Reject nonscalar - substring references. - -2018-10-09 David Malcolm - - * cpp.c (gfc_cpp_init_0): Update for renamings. - (cb_cpp_error): Rename to... - (cb_cpp_diagnostic): ...this, converting level and reason to - enums. - -2018-10-09 Tobias Burnus - - PR fortran/83522 - * resolve.c (resolve_ref): Reject nonscalar - substring references. - -2018-10-09 Paul Thomas - - PR fortran/87151 - * trans-array.c (gfc_get_array_span): Deal with deferred char - array components having a TYPE_MAX_VALUE of zero. - (gfc_array_init_size): Use the hidden string length component - to build the descriptor dtype. - (gfc_array_allocate): Remove the erroneous replacement of the - charlen backend decl with a temporary. - (gfc_conv_expr_descriptor): Use the ss_info string length in - the case of deferred character components. - (gfc_alloc_allocatable_for_assignment): Actually compare the - string lengths for deferred characters. Make sure that kind > 1 - is handled correctly. Set the span field of the descriptor. - * trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid - comment. - - PR fortran/80931 - * trans-array.c (gfc_array_allocate): Set the span field for - variable length character arrays. - -2018-10-08 Cesar Philippidis - - * expr.c (gfc_check_pointer_assign): Demote "Assignment to - contiguous pointer from non-contiguous target" to a warning. - -2018-10-08 Paul Thomas - - PR fortran/86372 - * trans-stmt.c (trans_associate_var): Character associate names - with variable string length do not have to be deferred length - for the string length to be set, if variable. - -2018-10-06 Thomas Koenig - - PR fortran/86111 - * gfortran.h (enum arith): Add ARITH_WRONGCONCAT. - * arith.h (gfc_arith_error): Issue error for ARITH_WRONGCONCAT. - (gfc_arith_concat): If the types of op1 and op2 are not - character of if their kinds do not match, issue ARITH_WRONGCONCAT. - -2018-10-06 Paul Thomas - - PR fortran/83999 - * resolve.c (resolve_fl_procedure): Include class functions in - the test that elemental function results be scalar. - -2018-10-06 Thomas Koenig - - PR fortran/84640 - * simplify.c (gfc_simplify_cshift): Extend size of hs_ex and ss_ex - by one. Set extents one past the array boundaries to zero to avoid - warning with instrumented compiler. - (gfc_simplify_eoshift): Likewise, only for ss_ex. - -2018-10-05 Paul Thomas - - PR fortran/87487 - * trans-decl.c (gfc_get_symbol_decl): Make sure that deferred - character length pointer initializer has the right type to fix - problem with deferred_character_24.f90 on big endian. - -2018-10-03 Jeff Law - - * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c. - -2018-10-01 Paul Thomas - - PR fortran/65677 - * trans-expr.c (gfc_trans_assignment_1): Set the 'identical' - flag in the call to gfc_check_dependency. - -2018-09-30 Paul Thomas - - PR fortran/87359 - * trans-array.c (gfc_is_reallocatable_lhs): Correct the problem - introduced by r264358, which prevented components of associate - names from being reallocated on assignment. - -2018-09-30 Paul Thomas - - PR fortran/70752 - PR fortran/72709 - * trans-array.c (gfc_conv_scalarized_array_ref): If this is a - deferred type and the info->descriptor is present, use the - info->descriptor - (gfc_conv_array_ref): Is the se expr is a descriptor type, pass - it as 'decl' rather than the symbol backend_decl. - (gfc_array_allocate): If the se string_length is a component - reference, fix it and use it for the expression string length - if the latter is not a variable type. If it is a variable do - an assignment. Make use of component ref string lengths to set - the descriptor 'span'. - (gfc_conv_expr_descriptor): For pointer assignment, do not set - the span field if gfc_get_array_span returns zero. - * trans.c (get_array_span): If the upper bound a character type - is zero, use the descriptor span if available. - -2018-09-30 Paul Thomas - - PR fortran/70149 - * trans-decl.c (gfc_get_symbol_decl): A deferred character - length pointer that is initialized needs the string length to - be initialized as well. - -2018-09-29 Paul Thomas - - PR fortran/65677 - * trans-expr.c (gfc_trans_assignment_1): If there is dependency - fix the rse stringlength. - -2018-09-25 Martin Liska - - PR fortran/87394 - * decl.c (add_hidden_procptr_result): Simplify condition - as we are in branch witch 'case1 || case2'. - -2018-09-25 Martin Liska - - * trans.c (remove_suffix): Remove - unused function. - -2018-09-24 Thomas Koenig - - PR fortran/87397 - * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) - for variables in an associate statement. - -2018-09-24 Bernhard Reuther-Fischer - Cesar Philippidis - - * openmp.c (resolve_oacc_loop_blocks): - -2018-09-23 Thomas Koenig - - PR fortran/87397 - * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) - for variables having the dimension attribute. - -2018-09-23 Janne Blomqvist - - * trans-expr.c (gfc_caf_get_image_index): Do array index - calculations in gfc_array_index_type. - * trans-intrinsic.c (conv_intrinsic_event_query): Likewise. - * trans-stmt.c (gfc_trans_lock_unlock): Likewise. - (gfc_trans_event_post_wait): Likewise. - -2018-09-23 Thomas Koenig - - PR fortran/87395 - * gfc_conv_procedure_call: Reformat comments slightly. Do not add - clobber on INTENT(OUT) for saved variables. - -2018-09-22 Thomas Koenig - - PR fortran/41453 - * trans.h (gfc_conv_expr_reference): Add optional argument - add_clobber to prototype. - (gfc_conv_procedure_call): Set add_clobber argument to - gfc_conv_procedure_reference to true for scalar, INTENT(OUT), - non-pointer, non-allocatable, non-dummy variables whose type - is neither BT_CHARACTER, BT_DERIVED or BT_CLASS, but only if - the procedure is not elemental. - * trans-expr.c (gfc_conv_procedure_reference): Add clobber - statement before call if add_clobber is set. - -2018-09-22 Paul Thomas - - PR fortran/85603 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Test - the charlen backend_decl before using the VAR_P macro. - -2018-09-21 Paul Thomas - - PR fortran/77325 - * trans-array.c (gfc_alloc_allocatable_for_assignment): If the - rhs has a charlen expression, convert that and use it. - * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the - assignment of deferred character array vars to a realocatable - lhs should not be added to the exterior block since vector - indices, for example, generate temporaries indexed within the - loop. - -2018-09-21 Paul Thomas - - PR fortran/87359 - * trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc - components if must_finalize is set for expr3. - -2018-09-21 Andrew Stubbs - Kwok Cheung Yeung - - * trans-expr.c (gfc_trans_structure_assign): Ensure that the first - argument of a call to _gfortran_caf_register is of size_type_node. - * trans-intrinsic.c (conv_intrinsic_event_query): Convert computed - index to a size_type_node type. - * trans-stmt.c (gfc_trans_event_post_wait): Likewise. - -2018-09-20 Allan Sandfeld Jensen - - * gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib. - -2018-09-20 Janus Weil - - * gfortran.h (gfc_str_startswith): New macro. - * decl.c (variable_decl, gfc_match_end): Use it. - * iresolve.c (is_trig_resolved): Ditto. - * module.c (load_omp_udrs, read_module): Ditto. - * options.c (gfc_handle_runtime_check_option): Ditto. - * primary.c (match_arg_list_function): Ditto. - * trans-decl.c (gfc_get_symbol_decl): Ditto. - * trans-expr.c (gfc_conv_procedure_call): Ditto. - * interface.c (dtio_op): Replace strncmp by strcmp. - * resolve.c (resolve_actual_arglist, resolve_function): Ditto. - * trans-expr.c (conv_arglist_function): Ditto. - * trans-intrinsic.c (gfc_conv_ieee_arithmetic_function): Replace macro - STARTS_WITH by gfc_str_startswith. - -2018-09-20 Cesar Philippidis - - * dump-parse-tree.c (show_omp_clauses): Add missing omp list_types - and reorder the switch cases to match the enum in gfortran.h. - -2018-09-19 Paul Thomas - - PR fortran/84109 - * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the - assignment of deferred character intrinsic elemental function - results to a realocatable lhs must not be added to the exterior - block if they are array valued but must go to the loop body. - -2018-09-18 Thomas Koenig - - PR fortran/29550 - * gfortran.h (gfc_expr): Add external_blas flag. - * frontend-passes.c (matrix_case): Add case A2TB2T. - (optimize_namespace): Handle flag_external_blas by - calling call_external_blas. - (get_array_inq_function): Add argument okind. If - it is nonzero, use it as the kind of argument - to be used. - (inline_limit_check): Remove m_case argument, add - limit argument instead. Remove assert about m_case. - Set the limit for inlining from the limit argument. - (matmul_lhs_realloc): Handle case A2TB2T. - (inline_matmul_assign): Handle inline limit for other cases with - two rank-two matrices. Remove no-op calls to inline_limit_check. - (call_external_blas): New function. - * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add - argument to external BLAS if external_blas is already set. - -2018-09-18 Paul Thomas - - PR fortran/87239 - * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the - assignment of deferred character elemental function results to - a realocatable lhs must not be added to the exterior block but - must go to the loop body. - -2018-09-18 Paul Thomas - - PR fortran/87336 - * trans-array.c (gfc_get_array_span): Try to get the element - length of incomplete types. Return NULL_TREE otherwise. - (gfc_conv_expr_descriptor): Only set the 'span' field if the - above does not return NULL_TREE. Set 'span' field if possible - for all new descriptors. - -2018-09-17 Paul Thomas - - PR fortran/64120 - * trans-decl.c (gfc_get_symbol_decl): Flag allocatable, scalar - characters with a variable length expression for deferred init. - (gfc_trans_deferred_vars): Perform the assignment for these - symbols by calling gfc_conv_string_length. - -2018-09-17 Paul Thomas - - PR fortran/85954 - * resolve.c (resolve_assoc_var): If the target expression is a - deferred charlen dummy and the associate name shares the - charlen, generate a new one. Make sure that new charlens are in - the namespace list so that they get cleaned up. - * trans-array.c (gfc_is_reallocatable_lhs): Associate names are - not reallocatable. - * trans-decl.c (gfc_get_symbol_decl): Put deferred character - length dummy and result arrays on the deferred initialization - list so that the variable length arrays can be correctly dealt - with. - * trans-expr.c (gfc_conv_string_length): Return if 'expr' is - NULL rather than ICEing.. - -2018-09-16 Janus Weil - - PR fortran/86484 - PR fortran/84543 - * match.c (gfc_match_assignment): For a polymorphic assignment, - make sure that the vtab for the rhs type is generated. - -2018-09-16 Thomas Koenig - - PR fortran/37802 - * frontend-passes.c (B_ERROR): New macro for matmul bounds - checking error messages. - (C_ERROR): Likewise. - (inline_matmul_assign): Reorganize bounds checking, use B_ERROR - and C_ERROR macros. - -2018-09-13 Bernd Edlinger - - * trans-array.c (gfc_conv_array_initializer): Remove excess precision - from overlength string initializers. - -2018-09-12 Paul Thomas - - PR fortran/87284 - * trans-expr.c (gfc_trans_class_init_assign): Access to - to array elements of the dynamic type requires that the array - reference be added to the class expression and not the _data - component, unlike scalar expressions. - -2018-09-11 Janus Weil - - PR fortran/87172 - * resolve.c (resolve_fl_derived): If a type has the 'use_assoc' - attribute, then it was declared in another module, so there should be - no error that it has not been declared. - -2018-09-11 Paul Thomas - - PR fortran/87277 - * expr.c (is_subref_array): Add the check of dimensionality for - class, dummy, pointer arrays. - -2018-09-11 Janus Weil - - PR fortran/86830 - * expr.c (gfc_is_simply_contiguous): Handle type-bound procedure calls - with non-polymorphic objects. - -2018-09-10 Janus Weil - - PR fortran/85395 - * decl.c (match_binding_attributes): Use correct default accessibility - for procedure pointer components. - -2018-09-03 Jerry DeLisle - - * simplify.c (gfc_simplify_modulo): Re-arrange code to test whether - 'P' is zero and issue an error if it is. - -2018-08-31 Paul Thomas - - PR fortran/86328 - PR fortran/86760 - * trans-array.c (gfc_conv_scalarized_array_ref): Do not fix - info->descriptor but pass it directly to gfc_build_array_ref. - (gfc_conv_array_ref): Likewise for se->expr. - * trans.c (gfc_build_array_ref): If 'decl' is a COMPONENT_REF - obtain the span field directly from it. - -2017-08-28 Paul Thomas - - PR fortran/80477 - * trans-expr.c (gfc_conv_procedure_call): Allocatable class - scalar results being passed to a derived type formal argument - are finalized if possible. Otherwise, rely on existing code for - deallocation. Make the deallocation of allocatable result - components conditional on finalization not taking place. Make - the freeing of data components after finalization conditional - on the data being NULL. - (gfc_trans_arrayfunc_assign): Change the gcc_assert to a - condition to return NULL_TREE. - (gfc_trans_assignment_1): If the assignment is class to class - and the rhs expression must be finalized but the assignment - is not marked as a polymorphic assignment, use the vptr copy - function instead of gfc_trans_scalar_assign. - - PR fortran/86481 - * trans-expr.c (gfc_conv_expr_reference): Do not add the post - block to the pre block if the expression is to be finalized. - * trans-stmt.c (gfc_trans_allocate): If the expr3 must be - finalized, load the post block into a finalization block and - add it right at the end of the allocation block. - -2018-08-27 David Malcolm - - PR 87091 - * error.c (gfc_format_decoder): Update for conversion of - show_caret_p to a tri-state. - -2018-08-25 Janus Weil - - PR fortran/86545 - * resolve.c (resolve_transfer): Correctly determine typespec for - generic function calls, in order to throw a proper error. - -2018-08-24 Thomas Koenig - - PR fortran/86837 - * frontend-passes.c (var_in_expr_callback): New function. - (var_in_expr): New function. - (traverse_io_block): Use var_in_expr instead of - gfc_check_dependency for checking if the variable depends on the - previous interators. - -2018-08-23 Janne Blomqvist - - * trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Delete - HONOR_SIGNED_ZEROS checks. - -2018-08-23 Paul Thomas - - PR fortran/86863 - * resolve.c (resolve_typebound_call): If the TBP is not marked - as a subroutine, check the specific symbol. - -2018-08-22 Thomas Koenig - - * gfortran.texi: Mention that asynchronous I/O does - not work on systems which lack condition variables, such - as AIX. - -2018-08-22 Janus Weil - - PR fortran/86935 - * match.c (gfc_match_associate): Improve diagnostics for the ASSOCIATE - statement. - -2018-08-22 Andrew Benson - - * module.c (load_generic_interfaces): Move call to find_symbol() - so that only occurs if actually needed. - -2018-08-22 Janus Weil - - PR fortran/86888 - * decl.c (gfc_match_data_decl): Allow allocatable components of - indirectly recursive type. - * resolve.c (resolve_component): Remove two errors messages ... - (resolve_fl_derived): ... and replace them by a new one. - -2018-08-21 Janne Blomqvist - - * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use - MAX_EXPR/MIN_EXPR unconditionally for real arguments. - * gfortran.texi (Compiler Characteristics): Document MAX/MIN - behavior wrt NaN. - -2018-08-21 Nicolas Koenig - Thomas Koenig - - PR fortran/25829 - * gfortran.texi: Add description of asynchronous I/O. - * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables - as volatile. - * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to - st_wait_async and change argument spec from ".X" to ".w". - (gfc_trans_wait): Pass ID argument via reference. - -2018-08-16 Nathan Sidwell - - * cpp.c (dump_macro): Use cpp_user_macro_p. - -2018-08-14 Janus Weil - - PR fortran/86116 - * interface.c (compare_type): Remove a CLASS/TYPE check. - (compare_type_characteristics): New function that behaves like the old - 'compare_type'. - (gfc_check_dummy_characteristics, gfc_check_result_characteristics): - Call 'compare_type_characteristics' instead of 'compare_type'. - -2018-08-12 Paul Thomas - - PR fortran/66679 - * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Class array - elements are returned as references to the data element. Get - the class expression by stripping back the references. Use this - for the element size. - -2018-08-12 Paul Thomas - - PR fortran/86906 - * resolve.c (resolve_fl_variable_derived): Check if the derived - type is use associated before checking for the host association - error. - -2018-08-10 Janus Weil - - PR fortran/57160 - * invoke.texi (frontend-optimize): Mention short-circuiting. - * options.c (gfc_post_options): Disable -ffrontend-optimize with -Og. - * resolve.c (resolve_operator): Warn about short-circuiting only with - -ffrontend-optimize. - * trans-expr.c (gfc_conv_expr_op): Use short-circuiting operators only - with -ffrontend-optimize. Without that flag, make sure that both - operands are evaluated. - -2018-08-08 Nathan Sidwell - - * cpp.c (cb_file_change): Use linemap_included_from. - -2018-08-07 Cesar Philippidis - - * trans-stmt.h: Remove stale reference to trans-openacc.c. - -2018-08-04 Janus Weil - - PR fortran/45521 - * interface.c (gfc_compare_interfaces): Apply additional - distinguishability criteria of F08 to operator interfaces. - -2018-07-31 Andre Vieira - - Revert 'AsyncI/O patch committed' - 2018-07-25 Nicolas Koenig - Thomas Koenig - - PR fortran/25829 - * gfortran.texi: Add description of asynchronous I/O. - * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables - as volatile. - * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to - st_wait_async and change argument spec from ".X" to ".w". - (gfc_trans_wait): Pass ID argument via reference. - -2018-07-25 Nicolas Koenig - Thomas Koenig - - PR fortran/25829 - * gfortran.texi: Add description of asynchronous I/O. - * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables - as volatile. - * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to - st_wait_async and change argument spec from ".X" to ".w". - (gfc_trans_wait): Pass ID argument via reference. - -2018-07-20 Martin Sebor - - PR middle-end/82063 - * gfortran.h (gfc_handle_option): Change function argument - to HOST_WIDE_INT. - * options.c (gfc_handle_option): Same. - -2018-07-20 Andrew Benson - - * gfortran.h (gfc_symbol): Add pointer to next derived type. - (gfc_dt_list, gfc_get_dt_list): Remove. - (gfc_namespace): Replace gfc_dt_list with gfc_symbol. - * parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with - simple nullification of gfc_derived_types. - * resolve.c (resolve_global_procedure): Replace gfc_dt_list with - gfc_symbol. - (add_dt_to_dt_list): Change derived type linked list insertion to - utilize dt_next pointers in gfc_symbol. - * symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2) - (get_iso_c_binding_dt, generate_isocbinding_symbol): Remove - gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type - linked list search/insertion to utilize dt_next pointers in gfc_symbol. - * trans-types.c (gfc_get_derived_type): Change derived type linked - list search to utilize dt_next pointers in gfc_symbol. - -2018-07-19 Kyrylo Tkachov - - * trans-intrinsic.c: (gfc_conv_intrinsic_minmax): Emit MIN_MAX_EXPR - or IFN_FMIN/FMAX sequence to calculate the min/max when possible. - -2018-07-18 Janus Weil - Thomas Koenig - - PR fortran/85599 - * dump-parse-tree.c (show_attr): Add handling of implicit_pure. - * frontend-passes.c (do_warn_function_elimination): Do not warn for - pure functions. - * gfortran.h: Add prototypes for gfc_pure_function and - gfc_implicit_pure_function. - * gfortran.texi: Add chapter on evaluation of logical expressions. - * invoke.texi: Mention that -Wfunction-elimination is implied - by -Wextra. - * lang.opt: Make -Wextra imply -Wfunction-elimination. - * resolve.c (pure_function): Rename to gfc_pure_function. - (gfc_implicit_pure_function): New function. - (check_pure_function): Use it here. - (impure_function_callback): New function. - (resolve_operator): Call it via gfc_expr_walker. - -2018-07-16 Fritz Reese - - PR fortran/83184 - * decl.c (match_old_style_init): Initialize locus of variable expr when - creating a data variable. - (match_clist_expr): Verify array is explicit shape/size before - attempting to allocate constant array constructor. - -2018-07-16 Fritz Reese - - PR fortran/86417 - * module.c (mio_component): Set component->loc when loading from module. - -2018-07-10 Jakub Jelinek - - PR fortran/86421 - * module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and - _UVAL suffixes. - (mio_omp_declare_simd): Save and restore ref, val and uval modifiers - on linear clauses. Initialize n->where to gfc_current_locus. - -2018-07-05 Paul Thomas - - PR fortran/86408 - * resolve.c.c (resolve_contained_fntype): Reference to C418 is - in F2008 and not F2003. - (resolve_function): Ditto in error message. Also, exclude - deferred character length results from the error. - -2018-07-05 Fritz Reese - - PR fortran/83183 - PR fortran/86325 - * expr.c (class_allocatable, class_pointer, comp_allocatable, - comp_pointer): New helpers. - (component_initializer): Generate EXPR_NULL for allocatable or pointer - components. Do not generate initializers for components within BT_CLASS. - Do not assign to comp->initializer. - (gfc_generate_initializer): Use new helpers; move code to generate - EXPR_NULL for class allocatable components into component_initializer(). - -2018-07-04 Jerry DeLisle - - PR fortran/82009 - * trans-decl.c (gfc_process_block_locals): Delete assert and set - saved_local_decls = NULL_TREE. - -2018-07-02 Richard Biener - - PR lto/86321 - * trans-types.c (gfc_get_array_type_bounds): Unshare TYPE_FIELDs - for the distinct type copy. - -2018-07-02 Paul Thomas - - PR fortran/82969 - PR fortran/86242 - * trans-array.c (structure_alloc_comps): Do not explicitly copy - procedure pointer components. - -2018-07-02 Paul Thomas - - PR fortran/45305 - * expr.c : Add a prototype for scalarize_intrinsic_call. - (gfc_simplify_expr): Use scalarize_intrinsic_call for elemental - intrinsic function calls. - (scalarize_intrinsic_call): Add 'init_flag' argument. Check if - the expression or any of the actual argument expressions are - NULL. Before calling gfc_check_init_expr, check 'init_flag'. - Only simplify the scalarized expressions if there are no errors - on the stack. - (gfc_check_init_expr): Set 'init_flag' true in the call to - scalarize_intrinsic_call. - -2018-06-28 Fritz Reese - - PR fortran/82865 - * decl.c (gfc_match_type): Refactor and check for PDT declarations. - -2018-06-28 Martin Liska - - * gfortranspec.c: Include opt-suggestions.h. - -2018-06-25 Fritz Reese - - PR fortran/82972 - PR fortran/83088 - PR fortran/85851 - * expr.c (component_initializer): Assign init expr to c->initializer. - (generate_isocbinding_initializer): New. - (gfc_generate_initializer): Call generate_isocbinding_initializer to - generate initializers for c_ptr and c_funptr with -finit-derived. - -2018-06-23 Jerry DeLisle - - PR fortran/85983 - * interface.c (check_dtio_interface1): Delete assert. - -2018-06-22 Paul Thomas - Rainer Orth - - PR fortran/86281 - * resolve.c (resolve_contained_fntype): Check for the charlen - before testing the length. - -2018-06-21 Paul Thomas - - PR fortran/49630 - * resolve.c (resolve_contained_fntype): Change standard ref. - from F95 to F2003: C418. Correct a spelling error in a comment. - It is an error for an abstract interface to have an assumed - character length result. - * trans-expr.c (gfc_conv_procedure_call): Likewise change the - standard reference. - -2018-06-21 Paul Thomas - - PR fortran/83118 - * resolve.c (resolve_ordinary_assign): Force the creation of a - vtable for assignment of non-polymorphic expressions to an - unlimited polymorphic object. - * trans-array.c (gfc_alloc_allocatable_for_assignment): Use the - size of the rhs type for such assignments. Set the dtype, _len - and vptrs appropriately. - * trans-expr.c (gfc_trans_assignment): Force the use of the - _copy function for these assignments. - -2018-06-20 Chung-Lin Tang - Thomas Schwinge - Cesar Philippidis - - * gfortran.h (gfc_omp_clauses): Add unsigned if_present, finalize - bitfields. - * openmp.c (enum omp_mask2): Remove OMP_CLAUSE_PRESENT_OR_*. Add - OMP_CLAUSE_{IF_PRESENT,FINALIZE}. - (gfc_match_omp_clauses): Update handling of copy, copyin, copyout, - create, deviceptr, present_of_*. Add support for finalize and - if_present. - (OACC_PARALLEL_CLAUSES): Remove PRESENT_OR_* clauses. - (OACC_KERNELS_CLAUSES): Likewise. - (OACC_DATA_CLAUSES): Likewise. - (OACC_DECLARE_CLAUSES): Likewise. - (OACC_UPDATE_CLAUSES): Add IF_PRESENT clause. - (OACC_ENTER_DATA_CLAUSES): Remove PRESENT_OR_* clauses. - (OACC_EXIT_DATA_CLAUSES): Add FINALIZE clause. - (gfc_match_oacc_declare): Update to OpenACC 2.5 semantics. - * trans-openmp.c (gfc_trans_omp_clauses): Add support for IF_PRESENT - and FINALIZE. - -2018-06-18 Eric Botcazou - - * trans-decl.c (gfc_get_fake_result_decl): Revert latest change. - -2018-06-17 Eric Botcazou - - * trans-decl.c (nonlocal_dummy_decl_pset): Delete. - (nonlocal_dummy_decls): Likewise. - (gfc_nonlocal_dummy_array_decl): Likewise. - (gfc_get_symbol_decl): Do not call gfc_nonlocal_dummy_array_decl. - (gfc_get_fake_result_decl): Do not generate a new DECL if simply - reusing the result of a recursive call. - (gfc_generate_function_code): Do not create, insert and destroy - nonlocal_dummy_decls. - -2018-06-13 Steven G. Kargl - - PR fortran/86110 - * array.c (gfc_resolve_character_array_constructor): Avoid NULL - pointer dereference. - -2018-06-13 Cesar Philippidis - - PR fortran/85703 - * parse.c (decode_oacc_directive): Set gfc_matching_function - to false. - (decode_omp_directive): Likewise. - -2018-06-13 Cesar Philippidis - - PR fortran/85702 - * openmp.c (gfc_match_oacc_wait): Use %C to report error location. - -2018-06-12 David Malcolm - - PR other/69968 - * misc.c (gfc_closest_fuzzy_match): Update for renaming of - levenshtein_distance to get_edit_distance. - -2018-06-12 Steven G. Kargl - - PR fortran/44491 - * expr.c (gfc_check_assign): Select non-NULL locus. - -2018-06-11 Janus Weil - - PR fortran/45521 - * interface.c (compare_ptr_alloc): New function. - (generic_correspondence): Call it. - -2018-06-10 Thomas Koenig - - * gfortran.h (gfc_expr): Add no_bounds_check field. - * frontend-passes.c (get_array_inq_function): Set no_bounds_check - on function and function argument. - (inline_matmul_assign): Set no_bounds_check on zero expression - and on lhs of zero expression. - Also handle A1B2 case if realloc on assigment is active. - * trans-array.c (gfc_conv_array_ref): Don't do range checking - if expr has no_bounds_check set. - (gfc_conv_expr_descriptor): Set no_bounds_check on ss if expr - has it set. - * trans-expr.c (gfc_trans_assignment_1): Set no_bounds_check - on lss and lss if the corresponding expressions have it set. - -2018-06-10 Dominique d'Humieres - - PR fortran/79854 - * trans-const.c: Remove include "diagnostic-core.h". - (gfc_conv_constant_to_tree): Replace fatal_error with gcc_unreachable. - -2018-06-10 Janus Weil - - PR fortran/85088 - * decl.c (match_attr_spec): Synchronize the DECL_* enum values with the - INTENT_* values from the enum 'sym_intent'. Call 'match_intent_spec' - and remove a TODO note. - * gfortran.h: Add a comment to sym_intent. - -2018-06-09 Steven G. Kargl - - PR fortran/38351 - * resolve.c (resolve_operator): Provide better error message for - derived type entity used in an binary intrinsic numeric operator. - -2018-06-09 Steven G. Kargl - - PR fortran/85138 - PR fortran/85996 - PR fortran/86051 - * decl.c (gfc_match_char_spec): Use private namespace in attempt to - reduce a charlen to a constant. - -2018-06-09 Steven G. Kargl - - PR fortran/78278 - * data.c (gfc_assign_data_value): Re-arrange code to allow for - an error for double initialization of CHARACTER entities. - -2018-06-09 Steven G. Kargl - - PR fortran/63514 - * symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588. - -2018-06-08 Thomas Koenig - - PR fortran/85631 - * trans.h (gfc_ss): Add field no_bounds_check. - * trans-array.c (gfc_conv_ss_startstride): If flag_realloc_lhs and - ss->no_bounds_check is set, do not use runtime checks. - * trans-expr.c (gfc_trans_assignment_1): Set lss->no_bounds_check - for reallocatable lhs. - -2018-06-08 Steven G. Kargl - - PR fortran/86059 - * array.c (match_array_cons_element): NULL() cannot be in an - array constructor. - -2018-06-08 Steven G. Kargl - - PR fortran/78571 - * data.c (create_character_initializer): Return early if type is - incompatible with CHARACTER. - -2018-06-07 Steven G. Kargl - - PR fortran/86045 - * simplify.c (gfc_simplify_mod): Re-arrange code to test whether - 'P' is zero and issue an error if it is. - -2018-06-06 Thomas Koenig - - PR fortran/85641 - * frontend-passes.c (is_fe_temp): Add prototype. - (realloc_string_callback): Early return for frontend-generated - temporary. - -2018-06-05 Cesar Philippidis - - PR fortran/85701 - - * openmp.c (gfc_resolve_oacc_declare): Error on functions and - subroutine data clause arguments. - -2018-06-04 Steven G. Kargl - - PR fortran/85981 - * resolve.c (resolve_allocate_deallocate): Check errmsg is default - character kind. - -2018-06-03 Paul Thomas - - PR fortran/36497 - * decl.c (variable_decl): Use gfc_add_type for cray pointees. - -2018-06-01 Steven G. Kargl - - PR fortran/63570 - * check.c (gfc_check_random_init): New function. Check arguments of - RANDOM_INIT. - * gfortran.h (GFC_ISYM_RANDOM_INIT): New enum token. - * intrinsic.c (add_subroutines): Add RANDOM_INIT to list of - subroutines. - (gfc_check_intrinsic_standard): Introduce Fortran 2018 check. - * intrinsic.h: Add prototypes for gfc_check_random_init and - gfc_resolve_random_init - * intrinsic.texi: Document new intrinsic subprogram. - * iresolve.c (gfc_resolve_random_init): Resolve routine name. - * trans-decl.c: Declare gfor_fndecl_random_init - * trans-intrinsic.c (conv_intrinsic_random_init): New function. - Translate call to RANDOM_INIT. - (gfc_conv_intrinsic_subroutine): Call it. - * trans.h: Declare gfor_fndecl_random_init - -2018-05-27 Steven G. Kargl - - * decl.c (match_data_constant): Fortran 2018 allows pointer - initialization in a data statement. - -2018-05-25 Janus Weil - - PR fortran/85839 - * match.c (gfc_match_block_data): Call gfc_notify_std to warn about - an obsolescent feature in Fortran 2018. - (gfc_match_equivalence): Ditto. - * resolve.c (resolve_common_blocks): Ditto. - (gfc_resolve_forall): Ditto. - * symbol.c (gfc_define_st_label): Ditto. - -2018-05-24 Steven G. Kargl - - PR fortran/85543 - * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL - pointer dereference. - -2018-05-24 Steven G. Kargl - - PR fortran/85780 - * resolve.c (resolve_fl_procedure): Avoid NULL dereference. - -2018-05-24 Steven G. Kargl - - PR fortran/85779 - * decl.c (gfc_match_derived_decl): Fix NULL point dereference. - -2018-05-24 Steven G. Kargl - - PR fortran/85895 - * resolve.c (resolve_sync): Resolve expression before checking for - an error. - -2018-05-22 Janus Weil - - PR fortran/85841 - * libgfortran.h: Remove the macros GFC_STD_F2008_TS and - GFC_STD_OPT_F08TS. - * error.c (notify_std_msg): Remove GFC_STD_F2008_TS. - * options.c (set_default_std_flags): Ditto. - (gfc_handle_option): Make -std=f2008ts an alias for -std=f2018. - * array.c (gfc_match_array_spec): Replace GFC_STD_F2008_TS by - GFC_STD_F2018. - * check.c (gfc_check_atomic, gfc_check_event_query, - gfc_check_c_f_pointer, gfc_check_c_f_procpointer, gfc_check_c_funloc, - gfc_check_c_loc, gfc_check_num_images, gfc_check_this_image): Ditto. - * decl.c (gfc_verify_c_interop_param, gfc_match_decl_type_spec): Ditto. - * intrinsic.c (add_functions, add_subroutines, - gfc_check_intrinsic_standard): Ditto. - * iso-c-binding.def: Ditto. - * iso-fortran-env.def: Ditto. - * match.c (gfc_match_event_post, gfc_match_event_wait, - gfc_match_fail_image, gfc_match_form_team, gfc_match_change_team, - gfc_match_end_team, gfc_match_sync_team): Ditto. - * gfortran.texi: Remove mention of -std=f2008ts. - Move TSs into F2018 section. - * invoke.texi: Update documentation of -std=f2008ts. - -2018-05-21 Janus Weil - - PR fortran/85841 - * libgfortran.h: New macros GFC_STD_OPT_*. - * error.c (notify_std_msg): New function. - (gfc_notify_std): Adjust such that it can handle combinations of - GFC_STD_* flags in the 'std' argument, not just a single one. - * match.c (match_arithmetic_if, gfc_match_if): Reject arithmetic if - in Fortran 2018. - (gfc_match_stopcode): Use GFC_STD_OPT_* macros. - * options.c (set_default_std_flags): Warn for F2018 deleted features - by default. - (gfc_handle_option): F2018 deleted features are allowed in earlier - standards. - * symbol.c (gfc_define_st_label, gfc_reference_st_label): Reject - nonblock do constructs in Fortran 2018. - -2018-05-20 Paul Thomas - - PR fortran/80657 - * resolve.c (flag_fn_result_spec): Use the 'sym' argument to - test for self refs to the function result in the character len - expression. If a self reference is found, emit an error and - return true. - (resolve_fntype): Use the function symbol in the calls to the - above. - -2018-05-20 Paul Thomas - - PR fortran/49636 - * trans-array.c (gfc_get_array_span): Renamed from - 'get_array_span'. - (gfc_conv_expr_descriptor): Change references to above. - * trans-array.h : Add prototype for 'gfc_get_array_span'. - * trans-intrinsic.c (gfc_conv_associated): Add pre and post - blocks for 'arg1'. - * trans-stmt.c (trans_associate_var): If the associate name is - a subref array pointer, use gfc_get_array_span for the span. - -2018-05-20 Paul Thomas - - PR fortran/82275 - * match.c (gfc_match_type_spec): Go through the array ref and - decrement 'rank' for every dimension that is an element. - -2018-05-19 Paul Thomas - - PR fortran/82923 - PR fortran/66694 - PR fortran/82617 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Set the - charlen backend_decl of the rhs expr to ss->info->string_length - so that the value in the current scope is used. - -2018-05-13 Steven G. Kargl - - PR fortran/63529 - * gfortran.texi: Clarify documentation for Cray pointer and - assumed-sized array. - -2018-05-13 Paul Thomas - - PR fortran/85742 - * trans-types.c (gfc_get_dtype_rank_type): Reorder evaluation - of 'size'. If the element type is a pointer use the size of the - TREE_TYPE of the type, unless it is VOID_TYPE. In this latter - case, set the size to zero. - -2018-05-13 Steven G. Kargl - - * gfortran.h: Remove prototype. - * symbol.c (gfc_new_undo_checkpoint): Remove unused function. - -2018-05-11 Steven G. Kargl - - PR fortran/85542 - * expr.c (check_inquiry): Avoid NULL pointer dereference. - -2018-05-10 Steven G. Kargl - - PR fortran/85687 - * check.c (gfc_check_rank): Check that the argument is a data object. - -2018-05-10 Steven G. Kargl - - PR fortran/85521 - * array.c (gfc_resolve_character_array_constructor): Substrings - with upper bound smaller than lower bound are zero length strings. - -2018-05-10 Steven G. Kargl - - PR fortran/70870 - * data.c (gfc_assign_data_value): Check that a data object does - not also have default initialization. - -2018-05-10 Marek Polacek - - PR fortran/85735 - * options.c (gfc_post_options): Set main_input_filename. - -2018-05-10 Thomas Koenig - - PR fortran/54613 - * intrinsic.texi: Document BACK for MINLOC and MAXLOC. - -2018-05-10 Paul Thomas - - PR fortran/68846 - PR fortran/70864 - * resolve.c (get_temp_from_expr): The temporary must not have - dummy or intent attributes. - -2018-05-08 Thomas Koenig - - PR fortran/54613 - * check.c (gfc_check_minmaxloc): Remove error for BACK not being - implemented. Use gfc_logical_4_kind for BACK. - * simplify.c (min_max_choose): Add optional argument back_val. - Handle it. - (simplify_minmaxloc_to_scalar): Add argument back_val. Pass - back_val to min_max_choose. - (simplify_minmaxloc_to_nodim): Likewise. - (simplify_minmaxloc_to_array): Likewise. - (gfc_simplify_minmaxloc): Add argument back, handle it. - Pass back_val to specific simplification functions. - (gfc_simplify_minloc): Remove ATTRIBUTE_UNUSED from argument back, - pass it on to gfc_simplify_minmaxloc. - (gfc_simplify_maxloc): Likewise. - * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Adjust - comment. If BACK is true, use greater or equal (or lesser or - equal) insteal of greater (or lesser). Mark the condition of - having found a value which exceeds the limit as unlikely. - -2018-05-07 Jeff Law - - * scanner.c (preprocessor_line): Call linemap_add after a line - directive that changes the current filename. - -2018-05-06 Andre Vehreschild - - PR fortran/85507 - * dependency.c (gfc_dep_resolver): Revert looking at coarray dimension - introduced by r259385. - * trans-intrinsic.c (conv_caf_send): Always report a dependency for - same variables in coarray assignments. - -2018-05-02 Tom de Vries - - PR libgomp/82428 - * f95-lang.c (DEF_GOACC_BUILTIN_ONLY): Define. - -2018-04-24 Steven G. Kargl - - PR fortran/85520 - * decl.c (gfc_match_char_spec): Check for negative length and set to 0. - -2018-04-14 Andre Vehreschild - - PR fortran/81773 - PR fortran/83606 - * dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored - during dependency computation. They define no data dependency. - * trans-array.c (conv_array_index_offset): The stride can not be set - here, prevent fail. - * trans-intrinsic.c (conv_caf_send): Add creation of temporary array - for caf_get's result and copying to the array with vectorial - indexing. - -2018-04-14 Thomas Koenig - - PR fortran/85387 - * frontend-passes.c (traverse_io_block): Check for start, end or - stride being defined by an outer implied DO loop. - -2018-04-12 Thomas Koenig - - PR fortran/83064 - PR testsuite/85346 - * trans-stmt.c (gfc_trans_forall_loop): Use annot_expr_ivdep_kind - for annotation and remove dependence on -ftree-parallelize-loops. - -2018-04-10 Jakub Jelinek - - PR fortran/85313 - * openmp.c (resolve_omp_do): Remove bogus if (j < i) break;. - (resolve_oacc_nested_loops): Likewise. Formatting fix. - -2018-04-09 Thomas Koenig - - PR fortran/83064 - * trans-stmt.c (gfc_trans_forall_loop): Remove annotation for - parallell processing of DO CONCURRENT -ftree-parallelize-loops - is set. - -2018-04-09 Thomas Koenig - - PR fortran/51260 - * resolve.c (resolve_variable): Simplify cases where access to a - parameter array results in a single constant. - -2018-04-02 Thomas Koenig - - PR fortran/85102 - * decl.c (variable_decl): If upper or lower bounds simplify - to a constant, use that. - -2018-03-30 Paul Thomas - - PR fortran/84931 - * simplify.c (gfc_convert_constant): Handle case of array - constructors within an array that has no iterator and improve - the conciseness of this section of code. - -2017-03-30 Thomas Koenig - - PR fortran/85111 - * array.c (gfc_resolve_character_array_constructor): Early - exit for zero-size arrays. - * simplify.c (simplify_transformation_to_array): Exit early - if the result size is zero. - (simplify_minmaxloc_to_array): Likewise. - -2018-03-28 Mikael Morin - - PR fortran/69497 - * symbol.c (gfc_symbol_done_2): Start freeing namespaces - from the root. - (gfc_free_namespace): Restore assert (revert r258839). - -2018-03-28 Jakub Jelinek - - * gfortran.h (gfc_dt): Rename default_exp field to dec_ext. - * ioparm.def (IOPARM_dt_default_exp): Rename to ... - (IOPARM_dt_dec_ext): ... this. - * trans-io.c (build_dt): Adjust for default_exp renaming to - dec_ext and IOPARM_dt_default_exp renaming to IOPARM_dt_dec_ext. - * io.c (match_io): Likewise. - -2018-03-27 Thomas Koenig - - PR fortran/85084 - * frontend-passes.c (gfc_run_passes): Do not run front-end - optimizations if a previous error occurred. - -2018-03-27 Thomas Koenig - Harald Anlauf - - PR fortran/85083 - * primary.c (gfc_convert_to_structure_constructor): Check - conformance of argument types in structure constructor. - -2018-03-26 Thomas Koenig - - PR fortran/66709 - * io.c: Include constructor.h. - (resolve_tag_format): For a constant character array, concatenate - into a single character expression. - -2018-03-25 Seth Johnson - Dominique d'Humieres - - PR fortran/84924 - * check.c (gfc_check_c_f_pointer): Allow scalar noninteroperable - scalar derived type with -std=f2003 and -std=f2008. - -2018-03-24 Jerry DeLisle - Dominique d'Humieres - - PR fortran/69497 - * symbol.c (gfc_free_namespace): Delete the assert and only if - refs count is equals zero, free the namespace. Otherwise, - something is halfway and other errors will resound. - -2018-03-24 Thomas Koenig - - PR fortran/70068 - * expr.c (find_substring_ref): Change types of start, end - and length variables to gfc_charlen_t. Set length to zero - for empty substring. - -2018-03-24 Steven G. Kargl - - PR fortran/42651 - * decl.c (check_function_name): Improved error message - (gfc_match_volatile, gfc_match_asynchronous) Use check_function_name. - -2018-03-22 Steven G. Kargl - - PR fortran/84922 - * decl.c (get_proc_name): If the MODULE prefix appears in interface - body, then it must appear on the contained subroutine or function. - While here, fix nearby mis-indented code. - -2018-03-21 Thomas Koenig - Harald Anlauf - - PR fortran/84957 - * trans-types.c (gfc_sym_type): Do not dereference NULL pointer. - -2018-03-21 Janne Blomqvist - - PR fortran/84615 - * trans-expr.c (gfc_conv_procedure_call): Convert charlen to - gfc_charlen_type_node when calling procedure. - -2018-03-20 Steven G. Kargl - - PR fortran/85001 - * interface.c (symbol_rank): Remove bogus null pointer check that - crept in when translating a ternary operator into an if-else - constructor. - -2018-03-19 Thomas Koenig - - PR fortran/84931 - * simplify.c (gfc_convert_constant): Correctly handle iterators - for type conversion. - -2018-03-18 Steven G. Kargl - - PR fortran/77414 - * decl.c (get_proc_name): Check for a subroutine re-defined in - the contain portion of a subroutine. Change language of existing - error message to better describe the issue. While here fix whitespace - issues. - -2018-03-18 Steven G. Kargl - - PR fortran/65453 - * decl.c (get_proc_name): Catch clash between a procedure statement - and a contained subprogram - -2018-03-16 Steven G. Kargl - - PR fortran/69395 - * decl.c (merge_array_spec): Correct the error condition. - -2018-03-15 Steven G. Kargl - - PR fortran/78741 - * decl.c (get_proc_name): Check for clash of entry name with - subroutine name. - -2018-03-15 Steven G. Kargl - - PR fortran/69395 - * decl.c (merge_array_spec): Limit the merging to maximum allowed - dimensions, and issue error message if limit is exceeded. - -2018-03-13 Steven G. Kargl - - * check.c (gfc_check_kill_sub): Remove check for INTEGER(4) or (8). - * intrinsic.c (add_functions): Remove reference to gfc_resolve_kill. - (add_subroutines): Remove reference to gfc_resolve_kill_sub. - * intrinsic.texi: Update documentation. - * iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove. - * trans-decl.c (gfc_build_intrinsic_function_decls): Add - gfor_fndecl_kill and gfor_fndecl_kill_sub - * trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new - functions. - (gfc_conv_intrinsic_function): Use conv_intrinsic_kill. - (gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub. - * trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub. - -2018-03-11 Paul Thomas - - PR fortran/84546 - * trans-array.c (structure_alloc_comps): Make sure that the - vptr is copied and that the unlimited polymorphic _len is used - to compute the size to be allocated. - * trans-expr.c (gfc_get_class_array_ref): If unlimited, use the - unlimited polymorphic _len for the offset to the element. - (gfc_copy_class_to_class): Set the new 'unlimited' argument. - * trans.h : Add the boolean 'unlimited' to the prototype. - -2018-03-11 Steven G. Kargl - - PR fortran/83939 - * resolve.c (resolve_fl_procedure): Enforce F2018:C15100. - -2018-03-11 Steven G. Kargl - - * check.c (gfc_check_kill): Check pid and sig are scalar. - (gfc_check_kill_sub): Restrict kind to 4 and 8. - * intrinsic.c (add_function): Sort keyword list. Add pid and sig - keywords for KILL. Remove redundant *back="back" in favor of the - original *bck="back". - (add_subroutines): Sort keyword list. Add pid and sig keywords - for KILL. - * intrinsic.texi: Fix documentation to consistently use pid and sig. - * iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8. Choose the - correct function. - (gfc_resolve_rename_sub): Add comment. - -2018-03-11 Thomas Koenig - - PR fortran/66128 - * simplify.c (simplify_transformation): Return default result for - empty array argument. - (gfc_simplify_all): Remove special-case handling for zerosize. - (gfc_simplify_any): Likewise. - (gfc_simplify_count): Likewise. - (gfc_simplify_iall): Likewise. - (gfc_simplify_iany): Likewise. - (gfc_simplify_iparity): Likewise. - (gfc_simplify_minval): Likewise. - (gfc_simplify_maxval): Likewise. - (gfc_simplify_norm2): Likewise. - (gfc_simplify_product): Likewise. - (gfc_simplify_sum): Likewise. - -2018-03-10 Steven G. Kargl - - PR fortran/84734 - * arith.c (check_result, eval_intrinsic): If result overflows, pass - the expression up the chain instead of a NULL pointer. - -2018-03-07 Steven G. Kargl - - PR fortran/64124 - PR fortran/70409 - * decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant. - -2017-03-06 Thomas Koenig - - PR fortran/84697 - PR fortran/66128 - * expr.c (simplify_parameter_variable): If p is a size zero array - and not an ARRAY_EXPR insert an empty array constructor and - return. - * gfortran.h: Add prototype for gfc_is_size_zero_array. - * simplify.c (is_size_zero_array): Make non-static and rename into - (gfc_is_size_zero_array): Check for parameter arrays of zero - size by comparing shape and absence of constructor. - (gfc_simplify_all): Use gfc_is_size_zero_array instead of - is_size_zero_array. - (gfc_simplify_count): Likewise. - (gfc_simplify_iall): Likewise. - (gfc_simplify_iany): Likewise. - (gfc_simplify_iparity): Likewise. - (gfc_simplify_minval): Likewise. - (gfc_simplify_maxval): Likewise. - (gfc_simplify_product): Likewise. - (gfc_simplify_sum): Likewise. - -2018-03-06 Steven G. Kargl - - PR fortran/56667 - * primary.c (match_sym_complex_part): Give the matcher for an implied - do-loop a chance to run. - -2018-03-03 Harald Anlauf - - PR fortran/71085 - * trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not - dereference NULL pointer. - -2018-03-03 Steven G. Kargl - - PR fortran/66128 - * simplify.c (is_size_zero_array): New function to check for size - zero array. - (gfc_simplify_all, gfc_simplify_any, gfc_simplify_count, - gfc_simplify_iall, gfc_simplify_iany, gfc_simplify_iparity, - gfc_simplify_minval, gfc_simplify_maxval, gfc_simplify_norm2, - gfc_simplify_product, gfc_simplify_sum): Use it, and implement - requirements from F2018. - -2018-03-03 Steven G. Kargl - - PR fortran/51434 - * simplify.c (gfc_simplify_transfer): Resolve mold. - -2018-03-03 Paul Thomas - - PR fortran/80965 - * resolve.c (build_loc_call): Change symtree name from 'loc' to - '_loc'. - -2018-03-01 Paul Thomas - - PR fortran/84219 - * target-memory.c (gfc_interpret_derived): Assert that BT_VOID - components are caf tokens. - (gfc_target_interpret_expr): Treat BT_VOID expressions as - integers. - -2018-03-01 Paul Thomas - - PR fortran/84538 - * class.c (class_array_ref_detected): Remove the condition that - there be no reference after the array reference. - (find_intrinsic_vtab): Remove excess whitespace. - * trans-array.c (gfc_conv_scalarized_array_ref): Rename 'tmp' - as 'base and call build_class_array_ref earlier. - -2018-02-28 Paul Thomas - - PR fortran/83901 - * trans-stmt.c (trans_associate_var): Make sure that the se - expression is a pointer type before converting it to the symbol - backend_decl type. - -2018-02-25 Steven G. Kargl - - PR fortran/83633 - * decl.c (variable_decl): Check that an explicit-shape-array with - nonconstant bounds is allowed. - -2018-02-25 Paul Thomas - - PR fortran/84523 - * trans-intrinsic.c (gfc_conv_allocated): If the argument se - has a pre block, add it to the expression pre block. - -2018-02-25 Thomas Koenig - - PR fortran/78238 - * gfortran.h (gfc_integer_4_kind): Define. - * resolve.c (resolve_select_type): Make sure that the - kind of c->high is gfc_integer_4_kind. - -2018-02-24 Steven G. Kargl - - PR fortran/30792 - * decl.c (gfc_match_data): Check for invalid substring in - data-implied-do - -2018-02-23 Steven G. Kargl - - * intrinsic.texi: Arguments to MATMUL cannot both be rank one. - -2018-02-23 Steven G. Kargl - - PR fortran/84511 - * trans-io.c (transfer_expr): Deal with C_LOC in transfer statement. - -2018-02-23 Steven G. Kargl - - PR fortran/84346 - * interface.c (compare_actual_formal): Issue error if keyword is - used in a statement function. - -2018-02-23 Jerry DeLisle - - PR fortran/84506 - * trans-io.c (set_parameter_value_inquire): Adjust range check of - negative unit values for kind=8 units to the kind=4 negative limit. - -2018-02-23 Paul Thomas - - PR fortran/83149 - * trans-types.c (gfc_sym_type): Test sym->ns->proc_name before - accessing its components. - -2018-02-23 Paul Thomas - - PR fortran/83149 - * trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name - before accessing its components. - -2018-02-23 Paul Thomas - - PR fortran/83148 - * trans-const.c : Clean up some whitespace issues. - * trans-expr.c (gfc_conv_initializer): If an iso_c_binding - derived type has a kind value of zero, set it to the default - integer kind. - -2018-02-23 Janne Blomqvist - - PR fortran/84519 - * trans-decl.c (gfc_build_builtin_function_decls): Add bool - argument to stop and error stop decls. - * trans-stmt.c (gfc_trans_stop): Add false value to argument - lists. - -2018-02-22 Janne Blomqvist - - PR 78534 - PR 84509 - * trans-decl.c (gfc_build_builtin_function_decls): Pass - gfc_int8_type node to pause_numeric, size_type_node to - pause_string. - * trans-stmt.c (gfc_trans_pause): Likewise. - -2018-02-22 Janne Blomqvist - - * gfortran.texi: Update Coarray API description. - * trans-decl.c (gfc_build_builtin_function_decls): Use size_t for - character lengths, int for exit codes. - (generate_coarray_sym_init): Use size_t for character length. - * trans-intrinsic.c (conv_co_collective): Likewise. - * trans-stmt.c (gfc_trans_lock_unlock): Likewise. - (gfc_trans_event_post_wait): Likewise. - (gfc_trans_sync): Likewise. - (gfc_trans_stop): Use size_t for character lengths, int for exit - codes. - -2018-02-20 Thomas Koenig - - PR fortran/48890 - PR fortran/83823 - * primary.c (gfc_convert_to_structure_constructor): - For a constant string constructor, make sure the length - is correct. - -2018-02-19 Paul Thomas - - PR fortran/83344 - PR fortran/83975 - * resolve.c (resolve_assoc_var): Rearrange the logic for the - determination of the character length of associate names. If - the associate name is missing a length expression or the length - expression is not a constant and the target is not a variable, - make the associate name allocatable and deferred length. - * trans-decl.c (gfc_get_symbol_decl): Null the character length - backend_decl for deferred length associate names that are not - variables. Set 'length' to gfc_index_zero_node for character - associate names, whose character length is a PARM_DECL. - -2018-02-19 Thomas Koenig - - PR fortran/35339 - * frontend-passes.c (traverse_io_block): Remove workaround for - PR 80945. - -2018-02-19 Andre Vehreschild - - * gfortran.texi: Document additional src/dst_type. Fix some typos. - * trans-decl.c (gfc_build_builtin_function_decls): Declare the new - argument of _caf_*_by_ref () with * e { get, send, sendget }. - * trans-intrinsic.c (gfc_conv_intrinsic_caf_get): Add the type of the - data referenced when generating a call to caf_get_by_ref (). - (conv_caf_send): Same but for caf_send_by_ref () and - caf_sendget_by_ref (). - -2018-02-18 Jerry DeLisle - - PR fortran/84389 - * io.c (check_format): Allow FMT_COLON. - -2018-02-18 Paul Thomas - - PR fortran/80945 - * trans-array.c (gfc_conv_expr_descriptor): Set parmtype from - the typenode in the case of deferred length characters. - -2018-02-17 Thomas Koenig - - PR fortran/84270 - * frontend-passes (scalarized_expr): If the expression - is an assumed size array, leave in the last reference - and pass AR_SECTION instead of AR_FULL to gfc_resolve - in order to avoid an error. - -2018-02-17 Paul Thomas - - PR fortran/84115 - * resolve.c (resolve_assoc_var): If a non-constant target expr. - has no string length expression, make the associate variable - into a deferred length, allocatable symbol. - * trans-decl.c (gfc_is_reallocatable_lhs): Add and use a ptr to - the symbol. - * trans-stmt.c (trans_associate_var): Null and free scalar - associate names that are allocatable. After assignment, remove - the allocatable attribute to prevent reallocation. - -2018-02-16 Jakub Jelinek - - PR fortran/84418 - * trans-openmp.c (gfc_trans_omp_clauses): For OMP_CLAUSE_LINEAR_REF - kind set OMP_CLAUSE_LINEAR_STEP to TYPE_SIZE_UNIT times last_step. - -2018-02-16 Dominique d'Humieres - - PR fortran/84354 - * decl.c (gfc_get_pdt_instance): Replace '%qs' with %qs. - -2018-02-15 Janus Weil - - PR fortran/84409 - * interface.c (check_dtio_arg_TKR_intent): Add a check for character - length. - -2018-02-14 Janus Weil - - PR fortran/84385 - * match.c (gfc_match_select_type): Fix check for selector in - SELECT TYPE statement. - -2018-02-13 Janus Weil - - PR fortran/84313 - * symbol.c (check_conflict): Reject procedure pointers in common blocks. - -2018-02-13 Alastair McKinstry - Janne Blomqvist - - * module.c (dump_module): Use lbasename to ensure that module - files are reproducible. - -2018-02-12 Janus Weil - - PR fortran/84273 - * resolve.c (resolve_component): Fix checks of passed argument in - procedure-pointer components. - -2018-02-11 Francois-Xavier Coudert - - PR fortran/35299 - * resolve.c (resolve_formal_arglist): Update error message. - -2018-02-11 Andre Vehreschild - - * gfortran.texi: Fix typos in documentation of caf_register (). - * trans-array.c (structure_alloc_comps): Only register a component of - a derived typed corray, not of an ultimate component coarray. - -2018-02-11 Steven G. Kargl - - PR fortran/54223 - PR fortran/84276 - * interface.c (compare_actual_formal): Add in_statement_function - bool parameter. Skip check of INTENT attribute for statement - functions. Arguments to a statement function cannot be optional, - issue error for missing argument. - (gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Use - in_statement_function. - -2018-02-11 Paul Thomas - - PR fortran/84074 - * trans-expr.c (gfc_conv_derived_to_class): Set the use_offset - flag. If the is a vector subscript or the expression is not a - variable, make the descriptor one-based. - -2018-02-10 Paul Thomas - - PR fortran/84141 - PR fortran/84155 - * trans-array.c (gfc_array_init_size): Revert the change made - in revision 257356 setting the dtype. - * trans-types.c (gfc_get_dtype): Do not use the cached dtype. - Call gfc_get_dtype_rank_type every time. - - PR fortran/56691 - * trans-array.c (gfc_conv_expr_descriptor): If the source array - is a descriptor type, use its offset, removing the condition - that is be a class expression. - -2018-02-07 Steven G. Kargl - - PR fortran/82994 - * match.c (gfc_match_deallocate): Check for NULL pointer. - -2018-02-07 Thomas Koenig - - PR fortran/68560 - * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function. - (gfc_conv_intrinsic_function): Call it. - -2018-02-07 Steven G. Kargl - - PR fortran/82049 - * match.c (gfc_match_type_spec): If the charlen is non-NULL, then - try to resolve it. While here return early if possible. - -2018-02-04 Paul Thomas - - PR fortran/84115 - * trans-decl.c (gfc_get_symbol_decl): Do not finish the decl of - 'length' if the symbol charlen backend_decl is an indirect ref. - -2018-02-03 Paul Thomas - - PR fortran/84141 - PR fortran/84155 - * trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype - use gfc_get_dtype_rank_type. - -2018-02-01 Janne Blomqvist - - PR 83975 - PR 83344 - * resolve.c (resolve_assoc_var): Generate an error if - target length unknown. - -2018-02-01 Janne Blomqvist - - PR fortran/83705 - * simplify.c (gfc_simplify_repeat): Increase limit for deferring - to runtime, print a warning message. - -2018-01-31 Jakub Jelinek - - PR fortran/84116 - * openmp.c (gfc_match_omp_clauses): If all the linear - gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist - nor set *head = NULL. Formatting fixes. - -2018-01-31 Paul Thomas - - PR fortran/84088 - * trans-expr.c (gfc_conv_procedure_call): If the parm expr is - an address expression passed to an assumed rank dummy, convert - to an indirect reference. - -2018-01-31 Thomas Koenig - - * dump-parse-tree.c (write_proc): Use sym_name (which may - be sym->binding_label) instead of sym->name. - -2018-01-31 Janne Blomqvist - - * trans-const.c (gfc_conv_string_init): Use gfc_charlen_t instead - of int for slen. - -2018-01-31 Janne Blomqvist - - PR fortran/78534 - * trans-expr.c (fill_with_spaces): Use memset instead of - generating loop. - (gfc_trans_string_copy): Improve opportunity to use builtins with - constant lengths. - -2018-01-30 Jakub Jelinek - - PR debug/84131 - * trans-array.c (gfc_get_descriptor_offsets_for_info): Set *data_off - to DATA_FIELD's offset rather than OFFSET_FIELD's offset. - -2018-01-30 Thomas Koenig - - PR fortran/84134 - * array.c (gfc_ref_dimen_size): Whitespace fixes. If stride is - zero, return false. - -2018-01-30 Thomas Koenig - - PR fortran/84133 - * frontend-passes (matmul_to_var_expr): Return early if - in association list. - (inline_matmul_assign): Likewise. - -2017-01-29 Thomas Koenig - - PR fortran/84073 - * resolve.c (resolve_component): Ensure BIND(C) character - components have length one. - (resolve_symbol): Likewise for variables. - -2018-01-27 Jakub Jelinek - - PR fortran/84065 - * decl.c (add_init_expr_to_sym): Ignore initializers for too large - lengths. - -2018-01-26 Damian Rouson - Alessandro Fanfarillo - Soren Rasmussen - - Partial support for Fortran 2018 teams features. - - * array.c (gfc_match_array_ref): add team attribute in coarray - transfers. - * check.c (gfc_check_get_team, gfc_check_team_number): add new - functions for get_team and team_number. - * dump-parse-tree.c (show_code_node): add new statements: form team, - change team, end team, and sync team. - * expr.c (gfc_find_team_co): add new function. - * gfortran.h: add new statements. - * intrinsic.c (add_functions): add get_team and team_number functions. - * intrinsic.h: add get_team and team_number prototypes for check, - simplify, and resolve. - * iresolve.c (gfc_resolve_get_team, gfc_resolve_team_number): add new - functions. - * iso-fortran-env.def: add the team_type derived type. - * match.c (gfc_match_if, gfc_match_form_team, gfc_match_team_number) - (gfc_match_end_team, gfc_match_sync_team, gfc_match_change_team): - add change team, end team, form team, sync team match and functions. - * match.h: add new prototypes for change team, end team, form team, - and sync team. - * parse.c (decode_statement): add cases for change team, end team, - form team, and sync team. - * resolve.c: add cases for exec form team, change team, end team, and - sync team. - * simplify.c (gfc_simplify_get_team): add new function for get team. - * st.c (gfc_free_statement): add cases exec for change team, end team, - form team, sync team. - * trans-decl.c (gfor_fndecl_caf_form_team) - (gfor_fndecl_caf_change_team, gfor_fndecl_caf_end_team) - (gfor_fndecl_caf_sync_team, gfor_fndecl_caf_get_team) - (gfor_fndecl_caf_team_number): add functions and definitions. - * trans-intrinsic.c (conv_caf_send, conv_intrinsic_team_number): add - new function and team_type argument support. - * trans-stmt.c (gfc_trans_form_team, gfc_trans_change_team) - (gfc_trans_end_team, gfc_trans_sync_team): add new functions. - * trans-stmt.h: add new prototypes. - * trans-types.c (gfc_get_derived_type): check condition for team_type. - * trans.c (trans_code): new exec cases for form team, change team, end - team, and sync team. - * trans.h: add new prototypes. - -2018-01-26 Steven G. Kargl - - PR fortran/83998 - * simplify.c (compute_dot_product): Initialize result to INTEGER(1) 0 - or .false. The summation does the correct type conversion. - (gfc_simplify_dot_product): Special case zero-sized arrays. - -2018-25-01 Paul Thomas - - PR fortran/37577 - * array.c (gfc_match_array_ref): If standard earlier than F2008 - it is an error if the reference dimension is greater than 7. - libgfortran.h : Increase GFC_MAX_DIMENSIONS to 15. Change the - dtype masks and shifts accordingly. - * trans-array.c (gfc_conv_descriptor_dtype): Use the dtype - type node to check the field. - (gfc_conv_descriptor_dtype): Access the rank field of dtype. - (duplicate_allocatable_coarray): Access the rank field of the - dtype descriptor rather than the dtype itself. - * trans-expr.c (get_scalar_to_descriptor_type): Store the type - of 'scalar' on entry and use its TREE_TYPE if it is ARRAY_TYPE - (ie. a character). - (gfc_conv_procedure_call): Pass TREE_OPERAND (tmp,0) to - get_scalar_to_descriptor_type if the actual expression is a - constant. - (gfc_trans_structure_assign): Assign the rank directly to the - dtype rank field. - * trans-intrinsic.c (gfc_conv_intrinsic_rank): Cast the result - to default integer kind. - (gfc_conv_intrinsic_sizeof): Obtain the element size from the - 'elem_len' field of the dtype. - * trans-io.c (gfc_build_io_library_fndecls): Replace - gfc_int4_type_node with dtype_type_node where necessary. - (transfer_namelist_element): Use gfc_get_dtype_rank_type for - scalars. - * trans-types.c : Provide 'get_dtype_type_node' to acces the - dtype_type_node and, if necessary, build it. - The maximum size of an array element is now determined by the - maximum value of size_t. - Update the description of the array descriptor, including the - type def for the dtype_type. - (gfc_get_dtype_rank_type): Build a constructor for the dtype. - Distinguish RECORD_TYPEs that are BT_DERIVED or BT_CLASS. - (gfc_get_array_descriptor_base): Change the type of the dtype - field to dtype_type_node. - (gfc_get_array_descr_info): Get the offset to the rank field of - the dtype. - * trans-types.h : Add a prototype for 'get_dtype_type_node ()'. - * trans.h : Define the indices of the dtype fields. - -2018-23-01 Paul Thomas - - PR fortran/83866 - * decl.c (gfc_match_derived_decl): If eos not matched, recover - and emit error about garbage after declaration. - -2018-23-01 Paul Thomas - - PR fortran/83898 - * trans-stmt.c (trans_associate_var): Do not set cst_array_ctor - for characters. - -2018-01-22 Janne Blomqvist - - PR 78534 - PR 83704 - * arith.c (gfc_arith_concat): Use size_t for string length. - (gfc_compare_string): Likewise. - (gfc_compare_with_Cstring): Likewise. - * array.c (gfc_resolve_character_array_constructor): Use - HOST_WIDE_INT, gfc_mpz_get_hwi. - * check.c (gfc_check_fe_runtime_error): Use size_t. - * data.c (create_character_initializer): Use HOST_WIDE_INT, - gfc_extract_hwi. - * decl.c (gfc_set_constant_character_len): Use gfc_charlen_t. - (add_init_expr_to_sym): Use HOST_WIDE_INT. - * expr.c (gfc_build_init_expr): Use HOST_WIDE_INT, - gfc_extract_hwi. - (gfc_apply_init): Likewise. - * match.h (gfc_set_constant_character_len): Update prototype. - * primary.c (match_string_constant): Use size_t. - * resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT, - gfc_mpz_get_hwi. - * simplify.c (init_result_expr): Likewise. - (gfc_simplify_len_trim): Use size_t. - * target-memory.c (gfc_encode_character): Use size_t. - (gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi. - (interpret_array): Use size_t. - (gfc_interpret_character): Likewise. - * target-memory.h (gfc_encode_character): Update prototype. - (gfc_interpret_character): Likewise. - (gfc_target_interpret_expr): Likewise. - * trans-const.c (gfc_build_string_const): Use size_t for length - argument. - (gfc_build_wide_string_const): Likewise. - * trans-const.h (gfc_build_string_const): Likewise. - (gfc_build_wide_string_const): Likewise. - -2018-01-20 Steven G. Kargl - - PR fortran/83900 - * simplify.c (gfc_simplify_matmul): Set return type correctly. - -2018-01-19 Steven G. Kargl - - PR fortran/83900 - * simplify.c (gfc_simplify_matmul): Delete bogus assertion. - -2018-01-17 Harald Anlauf - - PR fortran/83864 - * expr.c (add_init_expr_to_sym): Do not dereference NULL pointer. - -2018-01-17 Harald Anlauf - - PR fortran/83874 - * decl.c (add_init_expr_to_sym): Do not dereference NULL pointer. - -2018-01-15 Louis Krupp - - PR fortran/82257 - * interface.c (compare_rank): Don't try to retrieve CLASS_DATA - from symbol marked unlimited polymorphic. - * resolve.c (resolve_structure_cons): Likewise. - * misc.c (gfc_typename): Don't dereference derived->components - if it's NULL. - -2018-01-15 Thomas Koenig - - PR fortran/54613 - * gfortran.h (gfc_check_f): Rename f4ml to f5ml. - (gfc_logical_4_kind): New macro - * intrinsic.h (gfc_simplify_minloc): Add a gfc_expr *argument. - (gfc_simplify_maxloc): Likewise. - (gfc_resolve_maxloc): Likewise. - (gfc_resolve_minloc): Likewise. - * check.c (gfc_check_minloc_maxloc): Add checking for "back" - argument; also raise error if it is used (for now). Add it - if it isn't present. - * intrinsic.c (add_sym_4ml): Rename to - (add_sym_5ml), adjust for extra argument. - (add_functions): Add "back" constant. Adjust maxloc and minloc - for back argument. - * iresolve.c (gfc_resolve_maxloc): Add back argument. If back is - not of gfc_logical_4_kind, convert. - (gfc_resolve_minloc): Likewise. - * simplify.c (gfc_simplify_minloc): Add back argument. - (gfc_simplify_maxloc): Likewise. - * trans-intinsic.c (gfc_conv_intrinsic_minmaxloc): Rename last - argument to %VAL to ensure passing by value. - (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_minmaxloc - also for library calls. - -2018-01-13 Jerry DeLisle - - PR fortran/82007 - * resolve.c (resolve_transfer): Delete code looking for 'DT' - format specifiers in format strings. Set formatted to true if a - format string or format label is present. - * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix - whitespace. - -2018-01-13 Thomas Koenig - - PR fortran/83744 - * dump-parse-tree.c (get_c_type_name): Remove extra line. - Change for loop to use declaration in for loop. Handle BT_LOGICAL - and BT_CHARACTER. - (write_decl): Add where argument. Fix indentation. Replace - assert with error message. Add typename to warning - in comment. - (write_type): Adjust locus to call of write_decl. - (write_variable): Likewise. - (write_proc): Likewise. Replace assert with error message. - -2018-01-13 Paul Thomas - - PR fortran/52162 - * trans-expr.c (gfc_trans_scalar_assign): Flag is_alloc_lhs if - the rhs expression is neither an elemental nor a conversion - function. - - PR fortran/83622 - * trans-array.c (is_pointer_array): Remove unconditional return - of false for -fopenmp. - -2018-01-13 Thomas Koenig - - - PR fortran/83803 - * dump-parse-tree.c (write_proc): Always emit closing parenthesis - for functions. - -2018-01-10 Steven G. Kargl - - PR fortran/82367 - * resolve.c (resolve_allocate_expr): Check for NULL pointer. - -2018-01-10 Steven G. Kargl - - PR fortran/83093 - * resolve.c (resolve_charlen): Check the type of cl->length - after resolution. - -2018-01-10 Janne Blomqvist - - PR fortran/83740 - * trans-array.c (gfc_trans_array_ctor_element): Fix formatting. - -2018-01-10 Janne Blomqvist - - PR fortran/83740 - * trans-array.c (gfc_trans_array_ctor_element): Convert RHS to the - LHS type when assigning. - -2018-01-09 Steven G. Kargl - - PR fortran/83742 - * expr.c (gfc_is_simply_contiguous): Check for NULL pointer. - -2018-01-08 Steven G. Kargl - - * match.c (gfc_match_allocate): Check for NULL pointer. - -2018-01-08 Steven G. Kargl - - * expr.c (gfc_check_pointer_assign): Fix typo in comment. - -2018-01-08 Paul Thomas - - PR fortran/83611 - * decl.c (gfc_get_pdt_instance): If parameterized arrays have - an initializer, convert the kind parameters and add to the - component if the instance. - * trans-array.c (structure_alloc_comps): Add 'is_pdt_type' and - use it with case COPY_ALLOC_COMP. Call 'duplicate_allocatable' - for parameterized arrays. Clean up typos in comments. Convert - parameterized array initializers and copy into the array. - * trans-expr.c (gfc_trans_scalar_assign): Do a deep copy for - parameterized types. - *trans-stmt.c (trans_associate_var): Deallocate associate vars - as necessary, when they are PDT function results for example. - - PR fortran/83731 - * trans-array.c (structure_alloc_comps): Only compare len parms - when they are declared explicitly. - -2018-01-06 Janne Blomqvist - - PR fortran/50892 - * trans-expr.c (gfc_trans_pointer_assignment): fold_convert rhs to - lhs type. - -2018-01-05 Janne Blomqvist - - PR fortran/78534 - PR fortran/66310 - * array.c (got_charlen): Use gfc_charlen_int_kind. - * class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of - hardcoded kind. - (find_intrinsic_vtab): Likewise. - * decl.c (match_char_length): Use gfc_charlen_int_kind. - (add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind. - (gfc_match_implicit): Use gfc_charlen_int_kind. - * dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t. - (show_expr): Use HOST_WIDE_INT_PRINT_DEC. - * expr.c (gfc_get_character_expr): Length parameter of type - gfc_charlen_t. - (gfc_get_int_expr): Value argument of type HOST_WIDE_INT. - (gfc_extract_hwi): New function. - (simplify_const_ref): Make string_len of type gfc_charlen_t. - (gfc_simplify_expr): Use HOST_WIDE_INT for substring refs. - * frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind. - * gfortran.h (gfc_mpz_get_hwi): New prototype. - (gfc_mpz_set_hwi): Likewise. - (gfc_charlen_t): New typedef. - (gfc_expr): Use gfc_charlen_t for character lengths. - (gfc_size_kind): New extern variable. - (gfc_extract_hwi): New prototype. - (gfc_get_character_expr): Use gfc_charlen_t for character length. - (gfc_get_int_expr): Use HOST_WIDE_INT type for value argument. - * gfortran.texi: Update description of hidden string length argument. - * iresolve.c (check_charlen_present): Use gfc_charlen_int_kind. - (gfc_resolve_char_achar): Likewise. - (gfc_resolve_repeat): Pass string length directly without - temporary, use gfc_charlen_int_kind. - (gfc_resolve_transfer): Use gfc_charlen_int_kind. - * match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen. - * misc.c (gfc_mpz_get_hwi): New function. - (gfc_mpz_set_hwi): New function. - * module.c (atom_int): Change type from int to HOST_WIDE_INT. - (parse_integer): Don't complain about large integers. - (write_atom): Use HOST_WIDE_INT for integers. - (mio_integer): Handle integer type mismatch. - (mio_hwi): New function. - (mio_intrinsic_op): Use HOST_WIDE_INT. - (mio_array_ref): Likewise. - (mio_expr): Likewise. - * primary.c (match_substring): Use gfc_charlen_int_kind. - * resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind. - (resolve_character_operator): Likewise. - (resolve_assoc_var): Likewise. - (resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf. - (resolve_charlen): Use mpz_sgn to determine sign. - * simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t - instead of long. - * symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind. - * target-memory.c (size_character): Length argument of type - gfc_charlen_t. - (gfc_encode_character): Likewise. - (gfc_interpret_character): Use gfc_charlen_t. - * target-memory.h (gfc_encode_character): Modify prototype. - * trans-array.c (gfc_trans_array_ctor_element): Use existing type. - (get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type. - (trans_array_constructor): Use existing type. - (get_array_charlen): Likewise. - * trans-const.c (gfc_conv_mpz_to_tree_type): New function. - * trans-const.h (gfc_conv_mpz_to_tree_type): New prototype. - * trans-decl.c (gfc_trans_deferred_vars): Use existing type. - (add_argument_checking): Likewise. - * trans-expr.c (gfc_class_len_or_zero_get): Build const of type - gfc_charlen_type_node. - (gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of - 4, fold_convert to correct type. - (gfc_conv_class_to_class): Build const of type size_type_node for - size. - (gfc_copy_class_to_class): Likewise. - (gfc_conv_string_length): Use same type in expression. - (gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen. - (gfc_conv_string_tmp): Make sure len is of the right type. - (gfc_conv_concat_op): Use same type in expression. - (gfc_conv_procedure_call): Likewise. - (fill_with_spaces): Comment out memset() block due to spurious - -Wstringop-overflow warnings. - (gfc_trans_string_copy): Use gfc_charlen_type_node. - (alloc_scalar_allocatable_for_subcomponent_assignment): - fold_convert to right type. - (gfc_trans_subcomponent_assign): Likewise. - (trans_class_vptr_len_assignment): Build const of correct type. - (gfc_trans_pointer_assignment): Likewise. - (alloc_scalar_allocatable_for_assignment): fold_convert to right - type in expr. - (trans_class_assignment): Build const of correct type. - * trans-intrinsic.c (gfc_conv_associated): Likewise. - (gfc_conv_intrinsic_repeat): Do calculation in sizetype. - * trans-io.c (gfc_build_io_library_fndecls): Use - gfc_charlen_type_node for character lengths. - (set_string): Convert to right type in assignment. - * trans-stmt.c (gfc_trans_label_assign): Build const of - gfc_charlen_type_node. - (trans_associate_var): Likewise. - (gfc_trans_character_select): Likewise. - (gfc_trans_allocate): Likewise, don't typecast strlen result. - (gfc_trans_deallocate): Don't typecast strlen result. - * trans-types.c (gfc_size_kind): New variable. - (gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind - from size_type_node. - * trans-types.h: Fix comment. - -2018-01-04 Thomas Koenig - - PR fortran/83683 - PR fortran/45689 - * check.c (gfc_check_eoshift): Check for string length and - for conformance of boundary. - * intrinsic.c (add_functions): Add gfc_simplify_eoshift. - * intrinsic.h: Add prototype for gfc_simplify_eoshift. - * simplify.c (gfc_simplify_eoshift): New function. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_type_for_mode): Handle MODE_VECTOR_BOOL. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_type_for_mode): Check valid_vector_subparts_p. - -2018-01-03 Thomas Koenig - - PR fortran/83664 - * check.c (gfc_check_eoshift): Error for missing boundary if array - is not one of the standard types. - -2018-01-03 Jakub Jelinek - - Update copyright years. - - * gfortranspec.c (lang_specific_driver): Update copyright notice - dates. - * gfc-internals.texi: Bump @copying's copyright year. - * gfortran.texi: Ditto. - * intrinsic.texi: Ditto. - * invoke.texi: Ditto. - -2017-01-02 Thomas Koenig - - PR fortran/45689 - * intrinsic.c (add_function): Add gfc_simplify_maxloc and - gfc_simplify_minloc to maxloc and minloc, respectively. - * intrinsic.h: Add prototypes for gfc_simplify_minloc - and gfc_simplify_maxloc. - * simplify.c (min_max_chose): Adjust prototype. Modify function - to have a return value which indicates if the extremum was found. - (is_constant_array_expr): Fix typo in comment. - (simplify_minmaxloc_to_scalar): New function. - (simplify_minmaxloc_nodim): New function. - (new_array): New function. - (simplify_minmaxloc_to_array): New function. - (gfc_simplify_minmaxloc): New function. - (simplify_minloc): New function. - (simplify_maxloc): New function. - -2018-01-02 Thomas Koenig - - PR fortran/45689 - PR fortran/83650 - * simplify.c (gfc_simplify_cshift): Re-implement to allow full - range of arguments. - -2018-01-01 Paul Thomas - - PR fortran/83076 - * resolve.c (resolve_fl_derived0): Add caf_token fields for - allocatable and pointer scalars, when -fcoarray selected. - * trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token - field as well as the backend_decl. - (gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module - derived types that are not vtypes. Components with caf_token - attribute are pvoid types. For a component requiring it, find - the caf_token field and have the component token field point to - its backend_decl. - - PR fortran/83319 - *trans-types.c (gfc_get_array_descriptor_base): Add the token - field to the descriptor even when codimen not set. - -Copyright (C) 2018 Free Software Foundation, Inc. - -Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. - - PR fortran/87945 - * decl.c (var_element): Inquiry parameters cannit be data objects. - -2018-12-08 Steven G. Kargl - - PR fortran/88025 - * expr.c (gfc_apply_init): Remove asserts that cannot trigger. - Check for a NULL pointer. - -2018-12-08 Steven G. Kargl - - PR fortran/88357 - * class.c (insert_component_ref): Check for NULL pointer and - previous error message issued. - * parse.c (parse_associate): Check for NULL pointer. - * resolve.c (resolve_assoc_var): Check for NULL pointer. - -2018-12-07 Jakub Jelinek - - PR fortran/88377 - * trans-openmp.c (gfc_omp_clause_default_ctor, - gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op, - gfc_omp_clause_linear_ctor, gfc_omp_clause_dtor): Only consider - GFC_DECL_GET_SCALAR_ALLOCATABLE vars as scalar allocatables if they - have pointer type. - -2018-12-03 Fritz Reese - Mark Eggleston - - PR fortran/87919 - * options.c (SET_FLAG, SET_BITFLAG, SET_BITFLAG2): New macros. - (set_dec_flags): Set/unset DEC and std flags according to value. - (post_dec_flags, set_init_local_zero): New functions. - (gfc_init_options): Use set_init_local_zero and post_dec_flags. - (gfc_handle_options) : Use - SET_BITFLAG. - : Use set_init_local_zero. - : Pass value to set_dec_flags. - : Remove. - -2018-11-30 Thomas Schwinge - - * gfortran.h (struct gfc_omp_clauses): Remove "wait". Adjust all - users. - - * openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait - clauses. - -2018-11-27 Martin Liska - - * decl.c (gfc_match_gcc_builtin): New function. - * gfortran.h (struct vect_builtin_tuple): New. - (gfc_adjust_builtins): Likewise. - * lang-specs.h (TARGET_F951_OPTIONS): New. - (F951_OPTIONS): Use it. - * lang.opt: Add new option -fpre-include. - * match.h (gfc_match_gcc_builtin): Declare new function. - * parse.c (decode_gcc_attribute): Handle builtin. - (parse_progunit): Call gfc_adjust_builtins. - * scanner.c (gfc_new_file): Load pre-included header file - when provided. - * trans-intrinsic.c (add_simd_flag_for_built_in): New. - (gfc_adjust_builtins): Likewise. - -2018-11-24 Paul Thomas - - PR fortran/88143 - * resolve.c (resolve_variable): Check for associate names with - NULL target. - -2018-11-23 Jakub Jelinek - - * lang.opt (fpad-source): New option. - * scanner.c (load_line): Don't pad fixed form lines if - !flag_pad_source. - * invoke.texi (-fno-pad-source): Document. - -2018-11-21 Jakub Jelinek - - * invoke.texi (-fdec-include): Document. - -2018-11-21 Jakub Jelinek - Mark Eggleston - - * lang.opt (fdec-include): New option. - * options.c (set_dec_flags): Set also flag_dec_include. - * scanner.c (include_line): Change return type from bool to int. - In fixed form allow spaces in between include keyword letters. - For -fdec-include, allow in fixed form 0 in column 6. With - -fdec-include return -1 if the parsed line is not full include - statement and it could be successfully completed on continuation - lines. - (include_stmt): New function. - (load_file): Adjust include_line caller. If it returns -1, keep - trying include_stmt until it stops returning -1 whenever adding - further line of input. - -2018-11-18 Thomas Koenig - - PR fortran/88073 - * frontend-passes.c (combine_array_constructor): Do not do - anything if in a WHERE statement. - -2018-11-18 Thomas Koenig - - PR fortran/70260 - * expr.c (gfc_check_assign): Reject assigning to an external - symbol. - (gfc_check_pointer_assign): Add suppress_type_test - argument. Insert line after if. A non-proc pointer can not point - to a constant. Only check types if suppress_type_test is false. - * gfortran.h (gfc_check_pointer_assign): Add optional - suppress_type_test argument. - * resolve.c (gfc_resolve_code): Move up gfc_check_pointer_assign - and give it the extra argument. - (resolve_fl_procedure): Set error on value for a function with - an inizializer. - -2018-11-15 David Malcolm - - PR other/19165 - * error.c (gfc_diagnostic_finalizer): Add diagnostic_t param. - -2018-11-13 David Malcolm - - * cpp.c: Replace "source_location" with "location_t". - * gfortran.h: Likewise. - -2018-11-08 Jakub Jelinek - - * trans-openmp.c (gfc_trans_omp_clauses): Use - OMP_CLAUSE_DEFAULTMAP_SET_KIND. - (gfc_trans_omp_atomic): Set OMP_ATOMIC_MEMORY_ORDER - rather than OMP_ATOMIC_SEQ_CST. - (gfc_trans_omp_taskgroup): Build OMP_TASKGROUP using - make_node instead of build1_loc. - * types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR, - BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT, - BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, - BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR, - BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, - BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New. - (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): Formatting fix. - -2018-11-02 Thomas Koenig - - PR fortran/46020 - * decl.c (verify_bind_c_sym): Remove unnecessary space - in error message. - -2018-11-01 Thomas Koenig - - PR fortran/87782 - * frontend-passes.c (constant_string_length): If there is a - substring with a length which cannot be reduced to a constant, - return NULL. - -2018-11-01 Paul Thomas - - PR fortran/40196 - * dependency.c (are_identical_variables): Return false if the - inquiry refs are not the same. - (gfc_ref_needs_temporary_p): Break on an inquiry ref. - * dump_parse_tree.c (show_ref): Show the inquiry ref type. - * expr.c (gfc_free_ref_list): Break on an inquiry ref. - (gfc_copy_ref): Copy the inquiry ref types. - (find_inquiry_ref): New function. - (simplify_const_ref, simplify_ref_chain): Call it. Add new arg - to simplify_ref_chain. - (gfc_simplify_expr): Use the new arg in call to - simplify_ref_chain. - (gfc_get_full_arrayspec_from_expr, gfc_is_coarray): Break on - inquiry ref. - (gfc_traverse_expr): Return true for inquiry ref. - * frontend-passes.c (gfc_expr_walker): Break on inquiry ref. - * gfortran.h : Add enums and union member in gfc_ref to - implement inquiry refs. - * intrinsic.c : Fix white nois. - * match.c (gfc_match_assignment): A constant lavlue is an - error. - * module.c : Add DECL_MIO_NAME for inquiry_type and the mstring - for inquiry_types. - (mio_ref): Handle inquiry refs. - * primary.c (is_inquiry_ref): New function. - (gfc_match_varspec): Handle inquiry refs calling new function. - (gfc_variable_attr): Detect inquiry ref for disambiguation - with components. - (caf_variable_attr): Treat inquiry and substring refs in the - same way. - * resolve.c (find_array_spec): ditto. - (gfc_resolve_substring_charlen): If there is neither a charlen - ref not an inquiry ref, return. - (resolve_ref): Handle inqiry refs as appropriate. - (resolve_allocate_expr): Entities with an inquiry ref cannot be - allocated. - * simplify.c (simplify_bound, simplify_cobound): Punt on - inquiry refs. - * trans-array.c (get_array_ctor_var_strlen): Break on inquiry - ref. - *trans-expr.c (conv_inquiry): New function. - (gfc_conv_variable): Retain the last typespec to pass to - conv_inquiry on detecting an inquiry ref. - -2018-11-01 Thomas Koenig - - PR fortran/46020 - * decl.c (verify_bind_c_sym): Improve error message. - -2018-11-01 Thomas Koenig - - PR fortran/54613 - * gfortran.texi (File format of unformatted sequential files): - Replace random comma with period. - * intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu. - (FINDLOC): Document. - (MAXLOC): Add refrence to FINDLOC. - (MINLOC): Likewise. - -2018-10-31 Nathan Sidwell - - * cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call. - -2018-10-31 Martin Liska - - * trans-decl.c (struct module_hasher): Call htab_hash_string - for s->name and not for s. - -2018-10-30 Thomas Koenig - - PR fortran/85896 - * simplify.c (simplify_min_max): Do not convert the type of the - return expression. - -2017-10-28 Thomas Koenig - - PR fortran/54613 - * gfortran.h (gfc_isym_id): Add GFC_ISYM_FINDLOC. - (gfc_check_f): Add f6fl field. - (gfc_simplify_f): Add f6 field. - (gfc_resolve_f): Likewise. - (gfc_type_letter): Add optional logical_equas_int flag. - * check.c (intrinsic_type_check): New function. - (gfc_check_findloc): New function. - * intrinsics.c (gfc_type_letter): If logical_equals_int is - set, act accordingly. - (add_sym_5ml): Reformat comment. - (add_sym_6fl): New function. - (add_functions): Add findloc. - (check_arglist): Add sixth argument, handle it. - (resolve_intrinsic): Likewise. - (check_specific): Handle findloc. - * intrinsic.h (gfc_check_findloc): Add prototype. - (gfc_simplify_findloc): Likewise. - (gfc_resolve_findloc): Likewise. - (MAX_INTRINSIC_ARGS): Adjust. - * iresolve.c (gfc_resolve_findloc): New function. - * simplify.c (gfc_simplify_minmaxloc): Make static. - (simplify_findloc_to_scalar): New function. - (simplify_findloc_nodim): New function. - (simplify_findloc_to_array): New function. - (gfc_simplify_findloc): New function. - (gfc_conv_intrinsic_findloc): New function. - (gfc_conv_intrinsic_function): Handle GFC_ISYM_FINDLOC. - (gfc_is_intrinsic_libcall): Likewise. - -2018-10-27 Thomas Koenig - - PR fortran/86907 - * frontend-passes.c (check_locus_code): Add information that - warning about missing location information points to an - inconsisten internal state. - (check_locus_expr): Likewise. - -2018-10-25 Jakub Jelinek - - PR fortran/87725 - * openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and - nonmonotonic modifiers regardless of if they have been parsed - already or if the opposite one has. Fix up check whether - comma after modifier should be parsed. - (resolve_omp_clauses): Diagnose schedule modifier restrictions. - -2018-10-23 Paul Thomas - - PR fortran/85603 - * frontend-passes.c (get_len_call): New function to generate a - call to intrinsic LEN. - (create_var): Use this to make length expressions for variable - rhs string lengths. - Clean up some white space issues. - -2018-10-21 Paul Thomas - - PR fortran/71880 - * trans-expr.c (gfc_trans_pointer_assignment): Set the string - length for array valued deferred length lhs. - -2018-10-18 Tobias Burnus - - PR fortran/87625 - * trans-array.c (gfc_is_reallocatable_lhs): Detect allocatable - polymorphic arrays. - -2018-10-18 Paul Thomas - - PR fortran/58618 - * trans-stmt.c (trans_associate_var): All strings that return - as pointer types can be assigned directly to the associate - name so remove 'attr' and the condition that uses it. - -2018-10-18 Paul Thomas - - PR fortran/58618 - * trans-decl.c (gfc_get_symbol_decl): Deal correctly with the - initialization with NULL() of a deferred length pointer. - -2018-10-17 Tobias Burnus - - PR fortran/87632 - * resolve.c (resolve_select_type): Use correct variable. - -2018-10-17 David Malcolm - - * Make-lang.in (selftest-fortran): New. - -2018-10-17 Paul Thomas - - PR fortran/56386 - PR fortran/58906 - PR fortran/77385 - PR fortran/80260 - PR fortran/82077 - * resolve.c (resolve_variable): Fix up expressions with array - associate names, where the parser did not detect that this is - array and there was no array part_ref in the expression. - -2018-10-16 Tobias Burnus - - PR fortran/67125 - * trans-array.c (gfc_array_init_size, gfc_array_allocate): - Rename argument e3_is_array_constr to e3_has_nodescriptor - and update comments. - * trans-stmt.c (gfc_trans_allocate): Also fix lower bound - to 1 for nonalloc/nonpointer func results/vars besides - array constructors. - -2018-10-16 Tobias Burnus - - PR fortran/87556 - * trans-stmt.c (form_team, change_team, sync_team): - Don't ignore argse.pre/argse.post. - -2018-10-15 Paul Thomas - Tobias Burnus - - PR fortran/87566 - * resolve.c (resolve_assoc_var): Add missing array spec for - class associate names. - (resolve_select_type): Handle case where last typed component - of the selector has a different type to the expression. - * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Replace - call to gfc_expr_to_initialize with call to gfc_copy_expr. - (gfc_conv_class_to_class): Guard assignment to 'len' field - against case where zero constant is supplied. - -2018-10-12 Tobias Burnus - - PR fortran/87597 - * expr.c (gfc_simplify_expr): Avoid simplifying - the 'array' argument to lbound/ubound/lcobound/ - ucobound. - -2018-10-12 Tobias Burnus - - PR fortran/58787 - * decl.c (get_proc_name): Return with error before - creating sym_tree. - -2018-10-11 Tobias Burnus - - Revert: - 2018-10-09 Tobias Burnus - - PR fortran/83522 - * resolve.c (resolve_ref): Reject nonscalar - substring references. - -2018-10-09 David Malcolm - - * cpp.c (gfc_cpp_init_0): Update for renamings. - (cb_cpp_error): Rename to... - (cb_cpp_diagnostic): ...this, converting level and reason to - enums. - -2018-10-09 Tobias Burnus - - PR fortran/83522 - * resolve.c (resolve_ref): Reject nonscalar - substring references. - -2018-10-09 Paul Thomas - - PR fortran/87151 - * trans-array.c (gfc_get_array_span): Deal with deferred char - array components having a TYPE_MAX_VALUE of zero. - (gfc_array_init_size): Use the hidden string length component - to build the descriptor dtype. - (gfc_array_allocate): Remove the erroneous replacement of the - charlen backend decl with a temporary. - (gfc_conv_expr_descriptor): Use the ss_info string length in - the case of deferred character components. - (gfc_alloc_allocatable_for_assignment): Actually compare the - string lengths for deferred characters. Make sure that kind > 1 - is handled correctly. Set the span field of the descriptor. - * trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid - comment. - - PR fortran/80931 - * trans-array.c (gfc_array_allocate): Set the span field for - variable length character arrays. - -2018-10-08 Cesar Philippidis - - * expr.c (gfc_check_pointer_assign): Demote "Assignment to - contiguous pointer from non-contiguous target" to a warning. - -2018-10-08 Paul Thomas - - PR fortran/86372 - * trans-stmt.c (trans_associate_var): Character associate names - with variable string length do not have to be deferred length - for the string length to be set, if variable. - -2018-10-06 Thomas Koenig - - PR fortran/86111 - * gfortran.h (enum arith): Add ARITH_WRONGCONCAT. - * arith.h (gfc_arith_error): Issue error for ARITH_WRONGCONCAT. - (gfc_arith_concat): If the types of op1 and op2 are not - character of if their kinds do not match, issue ARITH_WRONGCONCAT. - -2018-10-06 Paul Thomas - - PR fortran/83999 - * resolve.c (resolve_fl_procedure): Include class functions in - the test that elemental function results be scalar. - -2018-10-06 Thomas Koenig - - PR fortran/84640 - * simplify.c (gfc_simplify_cshift): Extend size of hs_ex and ss_ex - by one. Set extents one past the array boundaries to zero to avoid - warning with instrumented compiler. - (gfc_simplify_eoshift): Likewise, only for ss_ex. - -2018-10-05 Paul Thomas - - PR fortran/87487 - * trans-decl.c (gfc_get_symbol_decl): Make sure that deferred - character length pointer initializer has the right type to fix - problem with deferred_character_24.f90 on big endian. - -2018-10-03 Jeff Law - - * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c. - -2018-10-01 Paul Thomas - - PR fortran/65677 - * trans-expr.c (gfc_trans_assignment_1): Set the 'identical' - flag in the call to gfc_check_dependency. - -2018-09-30 Paul Thomas - - PR fortran/87359 - * trans-array.c (gfc_is_reallocatable_lhs): Correct the problem - introduced by r264358, which prevented components of associate - names from being reallocated on assignment. - -2018-09-30 Paul Thomas - - PR fortran/70752 - PR fortran/72709 - * trans-array.c (gfc_conv_scalarized_array_ref): If this is a - deferred type and the info->descriptor is present, use the - info->descriptor - (gfc_conv_array_ref): Is the se expr is a descriptor type, pass - it as 'decl' rather than the symbol backend_decl. - (gfc_array_allocate): If the se string_length is a component - reference, fix it and use it for the expression string length - if the latter is not a variable type. If it is a variable do - an assignment. Make use of component ref string lengths to set - the descriptor 'span'. - (gfc_conv_expr_descriptor): For pointer assignment, do not set - the span field if gfc_get_array_span returns zero. - * trans.c (get_array_span): If the upper bound a character type - is zero, use the descriptor span if available. - -2018-09-30 Paul Thomas - - PR fortran/70149 - * trans-decl.c (gfc_get_symbol_decl): A deferred character - length pointer that is initialized needs the string length to - be initialized as well. - -2018-09-29 Paul Thomas - - PR fortran/65677 - * trans-expr.c (gfc_trans_assignment_1): If there is dependency - fix the rse stringlength. - -2018-09-25 Martin Liska - - PR fortran/87394 - * decl.c (add_hidden_procptr_result): Simplify condition - as we are in branch witch 'case1 || case2'. - -2018-09-25 Martin Liska - - * trans.c (remove_suffix): Remove - unused function. - -2018-09-24 Thomas Koenig - - PR fortran/87397 - * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) - for variables in an associate statement. - -2018-09-24 Bernhard Reuther-Fischer - Cesar Philippidis - - * openmp.c (resolve_oacc_loop_blocks): - -2018-09-23 Thomas Koenig - - PR fortran/87397 - * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) - for variables having the dimension attribute. - -2018-09-23 Janne Blomqvist - - * trans-expr.c (gfc_caf_get_image_index): Do array index - calculations in gfc_array_index_type. - * trans-intrinsic.c (conv_intrinsic_event_query): Likewise. - * trans-stmt.c (gfc_trans_lock_unlock): Likewise. - (gfc_trans_event_post_wait): Likewise. - -2018-09-23 Thomas Koenig - - PR fortran/87395 - * gfc_conv_procedure_call: Reformat comments slightly. Do not add - clobber on INTENT(OUT) for saved variables. - -2018-09-22 Thomas Koenig - - PR fortran/41453 - * trans.h (gfc_conv_expr_reference): Add optional argument - add_clobber to prototype. - (gfc_conv_procedure_call): Set add_clobber argument to - gfc_conv_procedure_reference to true for scalar, INTENT(OUT), - non-pointer, non-allocatable, non-dummy variables whose type - is neither BT_CHARACTER, BT_DERIVED or BT_CLASS, but only if - the procedure is not elemental. - * trans-expr.c (gfc_conv_procedure_reference): Add clobber - statement before call if add_clobber is set. - -2018-09-22 Paul Thomas - - PR fortran/85603 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Test - the charlen backend_decl before using the VAR_P macro. - -2018-09-21 Paul Thomas - - PR fortran/77325 - * trans-array.c (gfc_alloc_allocatable_for_assignment): If the - rhs has a charlen expression, convert that and use it. - * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the - assignment of deferred character array vars to a realocatable - lhs should not be added to the exterior block since vector - indices, for example, generate temporaries indexed within the - loop. - -2018-09-21 Paul Thomas - - PR fortran/87359 - * trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc - components if must_finalize is set for expr3. - -2018-09-21 Andrew Stubbs - Kwok Cheung Yeung - - * trans-expr.c (gfc_trans_structure_assign): Ensure that the first - argument of a call to _gfortran_caf_register is of size_type_node. - * trans-intrinsic.c (conv_intrinsic_event_query): Convert computed - index to a size_type_node type. - * trans-stmt.c (gfc_trans_event_post_wait): Likewise. - -2018-09-20 Allan Sandfeld Jensen - - * gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib. - -2018-09-20 Janus Weil - - * gfortran.h (gfc_str_startswith): New macro. - * decl.c (variable_decl, gfc_match_end): Use it. - * iresolve.c (is_trig_resolved): Ditto. - * module.c (load_omp_udrs, read_module): Ditto. - * options.c (gfc_handle_runtime_check_option): Ditto. - * primary.c (match_arg_list_function): Ditto. - * trans-decl.c (gfc_get_symbol_decl): Ditto. - * trans-expr.c (gfc_conv_procedure_call): Ditto. - * interface.c (dtio_op): Replace strncmp by strcmp. - * resolve.c (resolve_actual_arglist, resolve_function): Ditto. - * trans-expr.c (conv_arglist_function): Ditto. - * trans-intrinsic.c (gfc_conv_ieee_arithmetic_function): Replace macro - STARTS_WITH by gfc_str_startswith. - -2018-09-20 Cesar Philippidis - - * dump-parse-tree.c (show_omp_clauses): Add missing omp list_types - and reorder the switch cases to match the enum in gfortran.h. - -2018-09-19 Paul Thomas - - PR fortran/84109 - * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the - assignment of deferred character intrinsic elemental function - results to a realocatable lhs must not be added to the exterior - block if they are array valued but must go to the loop body. - -2018-09-18 Thomas Koenig - - PR fortran/29550 - * gfortran.h (gfc_expr): Add external_blas flag. - * frontend-passes.c (matrix_case): Add case A2TB2T. - (optimize_namespace): Handle flag_external_blas by - calling call_external_blas. - (get_array_inq_function): Add argument okind. If - it is nonzero, use it as the kind of argument - to be used. - (inline_limit_check): Remove m_case argument, add - limit argument instead. Remove assert about m_case. - Set the limit for inlining from the limit argument. - (matmul_lhs_realloc): Handle case A2TB2T. - (inline_matmul_assign): Handle inline limit for other cases with - two rank-two matrices. Remove no-op calls to inline_limit_check. - (call_external_blas): New function. - * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add - argument to external BLAS if external_blas is already set. - -2018-09-18 Paul Thomas - - PR fortran/87239 - * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the - assignment of deferred character elemental function results to - a realocatable lhs must not be added to the exterior block but - must go to the loop body. - -2018-09-18 Paul Thomas - - PR fortran/87336 - * trans-array.c (gfc_get_array_span): Try to get the element - length of incomplete types. Return NULL_TREE otherwise. - (gfc_conv_expr_descriptor): Only set the 'span' field if the - above does not return NULL_TREE. Set 'span' field if possible - for all new descriptors. - -2018-09-17 Paul Thomas - - PR fortran/64120 - * trans-decl.c (gfc_get_symbol_decl): Flag allocatable, scalar - characters with a variable length expression for deferred init. - (gfc_trans_deferred_vars): Perform the assignment for these - symbols by calling gfc_conv_string_length. - -2018-09-17 Paul Thomas - - PR fortran/85954 - * resolve.c (resolve_assoc_var): If the target expression is a - deferred charlen dummy and the associate name shares the - charlen, generate a new one. Make sure that new charlens are in - the namespace list so that they get cleaned up. - * trans-array.c (gfc_is_reallocatable_lhs): Associate names are - not reallocatable. - * trans-decl.c (gfc_get_symbol_decl): Put deferred character - length dummy and result arrays on the deferred initialization - list so that the variable length arrays can be correctly dealt - with. - * trans-expr.c (gfc_conv_string_length): Return if 'expr' is - NULL rather than ICEing.. - -2018-09-16 Janus Weil - - PR fortran/86484 - PR fortran/84543 - * match.c (gfc_match_assignment): For a polymorphic assignment, - make sure that the vtab for the rhs type is generated. - -2018-09-16 Thomas Koenig - - PR fortran/37802 - * frontend-passes.c (B_ERROR): New macro for matmul bounds - checking error messages. - (C_ERROR): Likewise. - (inline_matmul_assign): Reorganize bounds checking, use B_ERROR - and C_ERROR macros. - -2018-09-13 Bernd Edlinger - - * trans-array.c (gfc_conv_array_initializer): Remove excess precision - from overlength string initializers. - -2018-09-12 Paul Thomas - - PR fortran/87284 - * trans-expr.c (gfc_trans_class_init_assign): Access to - to array elements of the dynamic type requires that the array - reference be added to the class expression and not the _data - component, unlike scalar expressions. - -2018-09-11 Janus Weil - - PR fortran/87172 - * resolve.c (resolve_fl_derived): If a type has the 'use_assoc' - attribute, then it was declared in another module, so there should be - no error that it has not been declared. - -2018-09-11 Paul Thomas - - PR fortran/87277 - * expr.c (is_subref_array): Add the check of dimensionality for - class, dummy, pointer arrays. - -2018-09-11 Janus Weil - - PR fortran/86830 - * expr.c (gfc_is_simply_contiguous): Handle type-bound procedure calls - with non-polymorphic objects. - -2018-09-10 Janus Weil - - PR fortran/85395 - * decl.c (match_binding_attributes): Use correct default accessibility - for procedure pointer components. - -2018-09-03 Jerry DeLisle - - * simplify.c (gfc_simplify_modulo): Re-arrange code to test whether - 'P' is zero and issue an error if it is. - -2018-08-31 Paul Thomas - - PR fortran/86328 - PR fortran/86760 - * trans-array.c (gfc_conv_scalarized_array_ref): Do not fix - info->descriptor but pass it directly to gfc_build_array_ref. - (gfc_conv_array_ref): Likewise for se->expr. - * trans.c (gfc_build_array_ref): If 'decl' is a COMPONENT_REF - obtain the span field directly from it. - -2017-08-28 Paul Thomas - - PR fortran/80477 - * trans-expr.c (gfc_conv_procedure_call): Allocatable class - scalar results being passed to a derived type formal argument - are finalized if possible. Otherwise, rely on existing code for - deallocation. Make the deallocation of allocatable result - components conditional on finalization not taking place. Make - the freeing of data components after finalization conditional - on the data being NULL. - (gfc_trans_arrayfunc_assign): Change the gcc_assert to a - condition to return NULL_TREE. - (gfc_trans_assignment_1): If the assignment is class to class - and the rhs expression must be finalized but the assignment - is not marked as a polymorphic assignment, use the vptr copy - function instead of gfc_trans_scalar_assign. - - PR fortran/86481 - * trans-expr.c (gfc_conv_expr_reference): Do not add the post - block to the pre block if the expression is to be finalized. - * trans-stmt.c (gfc_trans_allocate): If the expr3 must be - finalized, load the post block into a finalization block and - add it right at the end of the allocation block. - -2018-08-27 David Malcolm - - PR 87091 - * error.c (gfc_format_decoder): Update for conversion of - show_caret_p to a tri-state. - -2018-08-25 Janus Weil - - PR fortran/86545 - * resolve.c (resolve_transfer): Correctly determine typespec for - generic function calls, in order to throw a proper error. - -2018-08-24 Thomas Koenig - - PR fortran/86837 - * frontend-passes.c (var_in_expr_callback): New function. - (var_in_expr): New function. - (traverse_io_block): Use var_in_expr instead of - gfc_check_dependency for checking if the variable depends on the - previous interators. - -2018-08-23 Janne Blomqvist - - * trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Delete - HONOR_SIGNED_ZEROS checks. - -2018-08-23 Paul Thomas - - PR fortran/86863 - * resolve.c (resolve_typebound_call): If the TBP is not marked - as a subroutine, check the specific symbol. - -2018-08-22 Thomas Koenig - - * gfortran.texi: Mention that asynchronous I/O does - not work on systems which lack condition variables, such - as AIX. - -2018-08-22 Janus Weil - - PR fortran/86935 - * match.c (gfc_match_associate): Improve diagnostics for the ASSOCIATE - statement. - -2018-08-22 Andrew Benson - - * module.c (load_generic_interfaces): Move call to find_symbol() - so that only occurs if actually needed. - -2018-08-22 Janus Weil - - PR fortran/86888 - * decl.c (gfc_match_data_decl): Allow allocatable components of - indirectly recursive type. - * resolve.c (resolve_component): Remove two errors messages ... - (resolve_fl_derived): ... and replace them by a new one. - -2018-08-21 Janne Blomqvist - - * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use - MAX_EXPR/MIN_EXPR unconditionally for real arguments. - * gfortran.texi (Compiler Characteristics): Document MAX/MIN - behavior wrt NaN. - -2018-08-21 Nicolas Koenig - Thomas Koenig - - PR fortran/25829 - * gfortran.texi: Add description of asynchronous I/O. - * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables - as volatile. - * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to - st_wait_async and change argument spec from ".X" to ".w". - (gfc_trans_wait): Pass ID argument via reference. - -2018-08-16 Nathan Sidwell - - * cpp.c (dump_macro): Use cpp_user_macro_p. - -2018-08-14 Janus Weil - - PR fortran/86116 - * interface.c (compare_type): Remove a CLASS/TYPE check. - (compare_type_characteristics): New function that behaves like the old - 'compare_type'. - (gfc_check_dummy_characteristics, gfc_check_result_characteristics): - Call 'compare_type_characteristics' instead of 'compare_type'. - -2018-08-12 Paul Thomas - - PR fortran/66679 - * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Class array - elements are returned as references to the data element. Get - the class expression by stripping back the references. Use this - for the element size. - -2018-08-12 Paul Thomas - - PR fortran/86906 - * resolve.c (resolve_fl_variable_derived): Check if the derived - type is use associated before checking for the host association - error. - -2018-08-10 Janus Weil - - PR fortran/57160 - * invoke.texi (frontend-optimize): Mention short-circuiting. - * options.c (gfc_post_options): Disable -ffrontend-optimize with -Og. - * resolve.c (resolve_operator): Warn about short-circuiting only with - -ffrontend-optimize. - * trans-expr.c (gfc_conv_expr_op): Use short-circuiting operators only - with -ffrontend-optimize. Without that flag, make sure that both - operands are evaluated. - -2018-08-08 Nathan Sidwell - - * cpp.c (cb_file_change): Use linemap_included_from. - -2018-08-07 Cesar Philippidis - - * trans-stmt.h: Remove stale reference to trans-openacc.c. - -2018-08-04 Janus Weil - - PR fortran/45521 - * interface.c (gfc_compare_interfaces): Apply additional - distinguishability criteria of F08 to operator interfaces. - -2018-07-31 Andre Vieira - - Revert 'AsyncI/O patch committed' - 2018-07-25 Nicolas Koenig - Thomas Koenig - - PR fortran/25829 - * gfortran.texi: Add description of asynchronous I/O. - * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables - as volatile. - * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to - st_wait_async and change argument spec from ".X" to ".w". - (gfc_trans_wait): Pass ID argument via reference. - -2018-07-25 Nicolas Koenig - Thomas Koenig - - PR fortran/25829 - * gfortran.texi: Add description of asynchronous I/O. - * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables - as volatile. - * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to - st_wait_async and change argument spec from ".X" to ".w". - (gfc_trans_wait): Pass ID argument via reference. - -2018-07-20 Martin Sebor - - PR middle-end/82063 - * gfortran.h (gfc_handle_option): Change function argument - to HOST_WIDE_INT. - * options.c (gfc_handle_option): Same. - -2018-07-20 Andrew Benson - - * gfortran.h (gfc_symbol): Add pointer to next derived type. - (gfc_dt_list, gfc_get_dt_list): Remove. - (gfc_namespace): Replace gfc_dt_list with gfc_symbol. - * parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with - simple nullification of gfc_derived_types. - * resolve.c (resolve_global_procedure): Replace gfc_dt_list with - gfc_symbol. - (add_dt_to_dt_list): Change derived type linked list insertion to - utilize dt_next pointers in gfc_symbol. - * symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2) - (get_iso_c_binding_dt, generate_isocbinding_symbol): Remove - gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type - linked list search/insertion to utilize dt_next pointers in gfc_symbol. - * trans-types.c (gfc_get_derived_type): Change derived type linked - list search to utilize dt_next pointers in gfc_symbol. - -2018-07-19 Kyrylo Tkachov - - * trans-intrinsic.c: (gfc_conv_intrinsic_minmax): Emit MIN_MAX_EXPR - or IFN_FMIN/FMAX sequence to calculate the min/max when possible. - -2018-07-18 Janus Weil - Thomas Koenig - - PR fortran/85599 - * dump-parse-tree.c (show_attr): Add handling of implicit_pure. - * frontend-passes.c (do_warn_function_elimination): Do not warn for - pure functions. - * gfortran.h: Add prototypes for gfc_pure_function and - gfc_implicit_pure_function. - * gfortran.texi: Add chapter on evaluation of logical expressions. - * invoke.texi: Mention that -Wfunction-elimination is implied - by -Wextra. - * lang.opt: Make -Wextra imply -Wfunction-elimination. - * resolve.c (pure_function): Rename to gfc_pure_function. - (gfc_implicit_pure_function): New function. - (check_pure_function): Use it here. - (impure_function_callback): New function. - (resolve_operator): Call it via gfc_expr_walker. - -2018-07-16 Fritz Reese - - PR fortran/83184 - * decl.c (match_old_style_init): Initialize locus of variable expr when - creating a data variable. - (match_clist_expr): Verify array is explicit shape/size before - attempting to allocate constant array constructor. - -2018-07-16 Fritz Reese - - PR fortran/86417 - * module.c (mio_component): Set component->loc when loading from module. - -2018-07-10 Jakub Jelinek - - PR fortran/86421 - * module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and - _UVAL suffixes. - (mio_omp_declare_simd): Save and restore ref, val and uval modifiers - on linear clauses. Initialize n->where to gfc_current_locus. - -2018-07-05 Paul Thomas - - PR fortran/86408 - * resolve.c.c (resolve_contained_fntype): Reference to C418 is - in F2008 and not F2003. - (resolve_function): Ditto in error message. Also, exclude - deferred character length results from the error. - -2018-07-05 Fritz Reese - - PR fortran/83183 - PR fortran/86325 - * expr.c (class_allocatable, class_pointer, comp_allocatable, - comp_pointer): New helpers. - (component_initializer): Generate EXPR_NULL for allocatable or pointer - components. Do not generate initializers for components within BT_CLASS. - Do not assign to comp->initializer. - (gfc_generate_initializer): Use new helpers; move code to generate - EXPR_NULL for class allocatable components into component_initializer(). - -2018-07-04 Jerry DeLisle - - PR fortran/82009 - * trans-decl.c (gfc_process_block_locals): Delete assert and set - saved_local_decls = NULL_TREE. - -2018-07-02 Richard Biener - - PR lto/86321 - * trans-types.c (gfc_get_array_type_bounds): Unshare TYPE_FIELDs - for the distinct type copy. - -2018-07-02 Paul Thomas - - PR fortran/82969 - PR fortran/86242 - * trans-array.c (structure_alloc_comps): Do not explicitly copy - procedure pointer components. - -2018-07-02 Paul Thomas - - PR fortran/45305 - * expr.c : Add a prototype for scalarize_intrinsic_call. - (gfc_simplify_expr): Use scalarize_intrinsic_call for elemental - intrinsic function calls. - (scalarize_intrinsic_call): Add 'init_flag' argument. Check if - the expression or any of the actual argument expressions are - NULL. Before calling gfc_check_init_expr, check 'init_flag'. - Only simplify the scalarized expressions if there are no errors - on the stack. - (gfc_check_init_expr): Set 'init_flag' true in the call to - scalarize_intrinsic_call. - -2018-06-28 Fritz Reese - - PR fortran/82865 - * decl.c (gfc_match_type): Refactor and check for PDT declarations. - -2018-06-28 Martin Liska - - * gfortranspec.c: Include opt-suggestions.h. - -2018-06-25 Fritz Reese - - PR fortran/82972 - PR fortran/83088 - PR fortran/85851 - * expr.c (component_initializer): Assign init expr to c->initializer. - (generate_isocbinding_initializer): New. - (gfc_generate_initializer): Call generate_isocbinding_initializer to - generate initializers for c_ptr and c_funptr with -finit-derived. - -2018-06-23 Jerry DeLisle - - PR fortran/85983 - * interface.c (check_dtio_interface1): Delete assert. - -2018-06-22 Paul Thomas - Rainer Orth - - PR fortran/86281 - * resolve.c (resolve_contained_fntype): Check for the charlen - before testing the length. - -2018-06-21 Paul Thomas - - PR fortran/49630 - * resolve.c (resolve_contained_fntype): Change standard ref. - from F95 to F2003: C418. Correct a spelling error in a comment. - It is an error for an abstract interface to have an assumed - character length result. - * trans-expr.c (gfc_conv_procedure_call): Likewise change the - standard reference. - -2018-06-21 Paul Thomas - - PR fortran/83118 - * resolve.c (resolve_ordinary_assign): Force the creation of a - vtable for assignment of non-polymorphic expressions to an - unlimited polymorphic object. - * trans-array.c (gfc_alloc_allocatable_for_assignment): Use the - size of the rhs type for such assignments. Set the dtype, _len - and vptrs appropriately. - * trans-expr.c (gfc_trans_assignment): Force the use of the - _copy function for these assignments. - -2018-06-20 Chung-Lin Tang - Thomas Schwinge - Cesar Philippidis - - * gfortran.h (gfc_omp_clauses): Add unsigned if_present, finalize - bitfields. - * openmp.c (enum omp_mask2): Remove OMP_CLAUSE_PRESENT_OR_*. Add - OMP_CLAUSE_{IF_PRESENT,FINALIZE}. - (gfc_match_omp_clauses): Update handling of copy, copyin, copyout, - create, deviceptr, present_of_*. Add support for finalize and - if_present. - (OACC_PARALLEL_CLAUSES): Remove PRESENT_OR_* clauses. - (OACC_KERNELS_CLAUSES): Likewise. - (OACC_DATA_CLAUSES): Likewise. - (OACC_DECLARE_CLAUSES): Likewise. - (OACC_UPDATE_CLAUSES): Add IF_PRESENT clause. - (OACC_ENTER_DATA_CLAUSES): Remove PRESENT_OR_* clauses. - (OACC_EXIT_DATA_CLAUSES): Add FINALIZE clause. - (gfc_match_oacc_declare): Update to OpenACC 2.5 semantics. - * trans-openmp.c (gfc_trans_omp_clauses): Add support for IF_PRESENT - and FINALIZE. - -2018-06-18 Eric Botcazou - - * trans-decl.c (gfc_get_fake_result_decl): Revert latest change. - -2018-06-17 Eric Botcazou - - * trans-decl.c (nonlocal_dummy_decl_pset): Delete. - (nonlocal_dummy_decls): Likewise. - (gfc_nonlocal_dummy_array_decl): Likewise. - (gfc_get_symbol_decl): Do not call gfc_nonlocal_dummy_array_decl. - (gfc_get_fake_result_decl): Do not generate a new DECL if simply - reusing the result of a recursive call. - (gfc_generate_function_code): Do not create, insert and destroy - nonlocal_dummy_decls. - -2018-06-13 Steven G. Kargl - - PR fortran/86110 - * array.c (gfc_resolve_character_array_constructor): Avoid NULL - pointer dereference. - -2018-06-13 Cesar Philippidis - - PR fortran/85703 - * parse.c (decode_oacc_directive): Set gfc_matching_function - to false. - (decode_omp_directive): Likewise. - -2018-06-13 Cesar Philippidis - - PR fortran/85702 - * openmp.c (gfc_match_oacc_wait): Use %C to report error location. - -2018-06-12 David Malcolm - - PR other/69968 - * misc.c (gfc_closest_fuzzy_match): Update for renaming of - levenshtein_distance to get_edit_distance. - -2018-06-12 Steven G. Kargl - - PR fortran/44491 - * expr.c (gfc_check_assign): Select non-NULL locus. - -2018-06-11 Janus Weil - - PR fortran/45521 - * interface.c (compare_ptr_alloc): New function. - (generic_correspondence): Call it. - -2018-06-10 Thomas Koenig - - * gfortran.h (gfc_expr): Add no_bounds_check field. - * frontend-passes.c (get_array_inq_function): Set no_bounds_check - on function and function argument. - (inline_matmul_assign): Set no_bounds_check on zero expression - and on lhs of zero expression. - Also handle A1B2 case if realloc on assigment is active. - * trans-array.c (gfc_conv_array_ref): Don't do range checking - if expr has no_bounds_check set. - (gfc_conv_expr_descriptor): Set no_bounds_check on ss if expr - has it set. - * trans-expr.c (gfc_trans_assignment_1): Set no_bounds_check - on lss and lss if the corresponding expressions have it set. - -2018-06-10 Dominique d'Humieres - - PR fortran/79854 - * trans-const.c: Remove include "diagnostic-core.h". - (gfc_conv_constant_to_tree): Replace fatal_error with gcc_unreachable. - -2018-06-10 Janus Weil - - PR fortran/85088 - * decl.c (match_attr_spec): Synchronize the DECL_* enum values with the - INTENT_* values from the enum 'sym_intent'. Call 'match_intent_spec' - and remove a TODO note. - * gfortran.h: Add a comment to sym_intent. - -2018-06-09 Steven G. Kargl - - PR fortran/38351 - * resolve.c (resolve_operator): Provide better error message for - derived type entity used in an binary intrinsic numeric operator. - -2018-06-09 Steven G. Kargl - - PR fortran/85138 - PR fortran/85996 - PR fortran/86051 - * decl.c (gfc_match_char_spec): Use private namespace in attempt to - reduce a charlen to a constant. - -2018-06-09 Steven G. Kargl - - PR fortran/78278 - * data.c (gfc_assign_data_value): Re-arrange code to allow for - an error for double initialization of CHARACTER entities. - -2018-06-09 Steven G. Kargl - - PR fortran/63514 - * symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588. - -2018-06-08 Thomas Koenig - - PR fortran/85631 - * trans.h (gfc_ss): Add field no_bounds_check. - * trans-array.c (gfc_conv_ss_startstride): If flag_realloc_lhs and - ss->no_bounds_check is set, do not use runtime checks. - * trans-expr.c (gfc_trans_assignment_1): Set lss->no_bounds_check - for reallocatable lhs. - -2018-06-08 Steven G. Kargl - - PR fortran/86059 - * array.c (match_array_cons_element): NULL() cannot be in an - array constructor. - -2018-06-08 Steven G. Kargl - - PR fortran/78571 - * data.c (create_character_initializer): Return early if type is - incompatible with CHARACTER. - -2018-06-07 Steven G. Kargl - - PR fortran/86045 - * simplify.c (gfc_simplify_mod): Re-arrange code to test whether - 'P' is zero and issue an error if it is. - -2018-06-06 Thomas Koenig - - PR fortran/85641 - * frontend-passes.c (is_fe_temp): Add prototype. - (realloc_string_callback): Early return for frontend-generated - temporary. - -2018-06-05 Cesar Philippidis - - PR fortran/85701 - - * openmp.c (gfc_resolve_oacc_declare): Error on functions and - subroutine data clause arguments. - -2018-06-04 Steven G. Kargl - - PR fortran/85981 - * resolve.c (resolve_allocate_deallocate): Check errmsg is default - character kind. - -2018-06-03 Paul Thomas - - PR fortran/36497 - * decl.c (variable_decl): Use gfc_add_type for cray pointees. - -2018-06-01 Steven G. Kargl - - PR fortran/63570 - * check.c (gfc_check_random_init): New function. Check arguments of - RANDOM_INIT. - * gfortran.h (GFC_ISYM_RANDOM_INIT): New enum token. - * intrinsic.c (add_subroutines): Add RANDOM_INIT to list of - subroutines. - (gfc_check_intrinsic_standard): Introduce Fortran 2018 check. - * intrinsic.h: Add prototypes for gfc_check_random_init and - gfc_resolve_random_init - * intrinsic.texi: Document new intrinsic subprogram. - * iresolve.c (gfc_resolve_random_init): Resolve routine name. - * trans-decl.c: Declare gfor_fndecl_random_init - * trans-intrinsic.c (conv_intrinsic_random_init): New function. - Translate call to RANDOM_INIT. - (gfc_conv_intrinsic_subroutine): Call it. - * trans.h: Declare gfor_fndecl_random_init - -2018-05-27 Steven G. Kargl - - * decl.c (match_data_constant): Fortran 2018 allows pointer - initialization in a data statement. - -2018-05-25 Janus Weil - - PR fortran/85839 - * match.c (gfc_match_block_data): Call gfc_notify_std to warn about - an obsolescent feature in Fortran 2018. - (gfc_match_equivalence): Ditto. - * resolve.c (resolve_common_blocks): Ditto. - (gfc_resolve_forall): Ditto. - * symbol.c (gfc_define_st_label): Ditto. - -2018-05-24 Steven G. Kargl - - PR fortran/85543 - * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL - pointer dereference. - -2018-05-24 Steven G. Kargl - - PR fortran/85780 - * resolve.c (resolve_fl_procedure): Avoid NULL dereference. - -2018-05-24 Steven G. Kargl - - PR fortran/85779 - * decl.c (gfc_match_derived_decl): Fix NULL point dereference. - -2018-05-24 Steven G. Kargl - - PR fortran/85895 - * resolve.c (resolve_sync): Resolve expression before checking for - an error. - -2018-05-22 Janus Weil - - PR fortran/85841 - * libgfortran.h: Remove the macros GFC_STD_F2008_TS and - GFC_STD_OPT_F08TS. - * error.c (notify_std_msg): Remove GFC_STD_F2008_TS. - * options.c (set_default_std_flags): Ditto. - (gfc_handle_option): Make -std=f2008ts an alias for -std=f2018. - * array.c (gfc_match_array_spec): Replace GFC_STD_F2008_TS by - GFC_STD_F2018. - * check.c (gfc_check_atomic, gfc_check_event_query, - gfc_check_c_f_pointer, gfc_check_c_f_procpointer, gfc_check_c_funloc, - gfc_check_c_loc, gfc_check_num_images, gfc_check_this_image): Ditto. - * decl.c (gfc_verify_c_interop_param, gfc_match_decl_type_spec): Ditto. - * intrinsic.c (add_functions, add_subroutines, - gfc_check_intrinsic_standard): Ditto. - * iso-c-binding.def: Ditto. - * iso-fortran-env.def: Ditto. - * match.c (gfc_match_event_post, gfc_match_event_wait, - gfc_match_fail_image, gfc_match_form_team, gfc_match_change_team, - gfc_match_end_team, gfc_match_sync_team): Ditto. - * gfortran.texi: Remove mention of -std=f2008ts. - Move TSs into F2018 section. - * invoke.texi: Update documentation of -std=f2008ts. - -2018-05-21 Janus Weil - - PR fortran/85841 - * libgfortran.h: New macros GFC_STD_OPT_*. - * error.c (notify_std_msg): New function. - (gfc_notify_std): Adjust such that it can handle combinations of - GFC_STD_* flags in the 'std' argument, not just a single one. - * match.c (match_arithmetic_if, gfc_match_if): Reject arithmetic if - in Fortran 2018. - (gfc_match_stopcode): Use GFC_STD_OPT_* macros. - * options.c (set_default_std_flags): Warn for F2018 deleted features - by default. - (gfc_handle_option): F2018 deleted features are allowed in earlier - standards. - * symbol.c (gfc_define_st_label, gfc_reference_st_label): Reject - nonblock do constructs in Fortran 2018. - -2018-05-20 Paul Thomas - - PR fortran/80657 - * resolve.c (flag_fn_result_spec): Use the 'sym' argument to - test for self refs to the function result in the character len - expression. If a self reference is found, emit an error and - return true. - (resolve_fntype): Use the function symbol in the calls to the - above. - -2018-05-20 Paul Thomas - - PR fortran/49636 - * trans-array.c (gfc_get_array_span): Renamed from - 'get_array_span'. - (gfc_conv_expr_descriptor): Change references to above. - * trans-array.h : Add prototype for 'gfc_get_array_span'. - * trans-intrinsic.c (gfc_conv_associated): Add pre and post - blocks for 'arg1'. - * trans-stmt.c (trans_associate_var): If the associate name is - a subref array pointer, use gfc_get_array_span for the span. - -2018-05-20 Paul Thomas - - PR fortran/82275 - * match.c (gfc_match_type_spec): Go through the array ref and - decrement 'rank' for every dimension that is an element. - -2018-05-19 Paul Thomas - - PR fortran/82923 - PR fortran/66694 - PR fortran/82617 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Set the - charlen backend_decl of the rhs expr to ss->info->string_length - so that the value in the current scope is used. - -2018-05-13 Steven G. Kargl - - PR fortran/63529 - * gfortran.texi: Clarify documentation for Cray pointer and - assumed-sized array. - -2018-05-13 Paul Thomas - - PR fortran/85742 - * trans-types.c (gfc_get_dtype_rank_type): Reorder evaluation - of 'size'. If the element type is a pointer use the size of the - TREE_TYPE of the type, unless it is VOID_TYPE. In this latter - case, set the size to zero. - -2018-05-13 Steven G. Kargl - - * gfortran.h: Remove prototype. - * symbol.c (gfc_new_undo_checkpoint): Remove unused function. - -2018-05-11 Steven G. Kargl - - PR fortran/85542 - * expr.c (check_inquiry): Avoid NULL pointer dereference. - -2018-05-10 Steven G. Kargl - - PR fortran/85687 - * check.c (gfc_check_rank): Check that the argument is a data object. - -2018-05-10 Steven G. Kargl - - PR fortran/85521 - * array.c (gfc_resolve_character_array_constructor): Substrings - with upper bound smaller than lower bound are zero length strings. - -2018-05-10 Steven G. Kargl - - PR fortran/70870 - * data.c (gfc_assign_data_value): Check that a data object does - not also have default initialization. - -2018-05-10 Marek Polacek - - PR fortran/85735 - * options.c (gfc_post_options): Set main_input_filename. - -2018-05-10 Thomas Koenig - - PR fortran/54613 - * intrinsic.texi: Document BACK for MINLOC and MAXLOC. - -2018-05-10 Paul Thomas - - PR fortran/68846 - PR fortran/70864 - * resolve.c (get_temp_from_expr): The temporary must not have - dummy or intent attributes. - -2018-05-08 Thomas Koenig - - PR fortran/54613 - * check.c (gfc_check_minmaxloc): Remove error for BACK not being - implemented. Use gfc_logical_4_kind for BACK. - * simplify.c (min_max_choose): Add optional argument back_val. - Handle it. - (simplify_minmaxloc_to_scalar): Add argument back_val. Pass - back_val to min_max_choose. - (simplify_minmaxloc_to_nodim): Likewise. - (simplify_minmaxloc_to_array): Likewise. - (gfc_simplify_minmaxloc): Add argument back, handle it. - Pass back_val to specific simplification functions. - (gfc_simplify_minloc): Remove ATTRIBUTE_UNUSED from argument back, - pass it on to gfc_simplify_minmaxloc. - (gfc_simplify_maxloc): Likewise. - * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Adjust - comment. If BACK is true, use greater or equal (or lesser or - equal) insteal of greater (or lesser). Mark the condition of - having found a value which exceeds the limit as unlikely. - -2018-05-07 Jeff Law - - * scanner.c (preprocessor_line): Call linemap_add after a line - directive that changes the current filename. - -2018-05-06 Andre Vehreschild - - PR fortran/85507 - * dependency.c (gfc_dep_resolver): Revert looking at coarray dimension - introduced by r259385. - * trans-intrinsic.c (conv_caf_send): Always report a dependency for - same variables in coarray assignments. - -2018-05-02 Tom de Vries - - PR libgomp/82428 - * f95-lang.c (DEF_GOACC_BUILTIN_ONLY): Define. - -2018-04-24 Steven G. Kargl - - PR fortran/85520 - * decl.c (gfc_match_char_spec): Check for negative length and set to 0. - -2018-04-14 Andre Vehreschild - - PR fortran/81773 - PR fortran/83606 - * dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored - during dependency computation. They define no data dependency. - * trans-array.c (conv_array_index_offset): The stride can not be set - here, prevent fail. - * trans-intrinsic.c (conv_caf_send): Add creation of temporary array - for caf_get's result and copying to the array with vectorial - indexing. - -2018-04-14 Thomas Koenig - - PR fortran/85387 - * frontend-passes.c (traverse_io_block): Check for start, end or - stride being defined by an outer implied DO loop. - -2018-04-12 Thomas Koenig - - PR fortran/83064 - PR testsuite/85346 - * trans-stmt.c (gfc_trans_forall_loop): Use annot_expr_ivdep_kind - for annotation and remove dependence on -ftree-parallelize-loops. - -2018-04-10 Jakub Jelinek - - PR fortran/85313 - * openmp.c (resolve_omp_do): Remove bogus if (j < i) break;. - (resolve_oacc_nested_loops): Likewise. Formatting fix. - -2018-04-09 Thomas Koenig - - PR fortran/83064 - * trans-stmt.c (gfc_trans_forall_loop): Remove annotation for - parallell processing of DO CONCURRENT -ftree-parallelize-loops - is set. - -2018-04-09 Thomas Koenig - - PR fortran/51260 - * resolve.c (resolve_variable): Simplify cases where access to a - parameter array results in a single constant. - -2018-04-02 Thomas Koenig - - PR fortran/85102 - * decl.c (variable_decl): If upper or lower bounds simplify - to a constant, use that. - -2018-03-30 Paul Thomas - - PR fortran/84931 - * simplify.c (gfc_convert_constant): Handle case of array - constructors within an array that has no iterator and improve - the conciseness of this section of code. - -2017-03-30 Thomas Koenig - - PR fortran/85111 - * array.c (gfc_resolve_character_array_constructor): Early - exit for zero-size arrays. - * simplify.c (simplify_transformation_to_array): Exit early - if the result size is zero. - (simplify_minmaxloc_to_array): Likewise. - -2018-03-28 Mikael Morin - - PR fortran/69497 - * symbol.c (gfc_symbol_done_2): Start freeing namespaces - from the root. - (gfc_free_namespace): Restore assert (revert r258839). - -2018-03-28 Jakub Jelinek - - * gfortran.h (gfc_dt): Rename default_exp field to dec_ext. - * ioparm.def (IOPARM_dt_default_exp): Rename to ... - (IOPARM_dt_dec_ext): ... this. - * trans-io.c (build_dt): Adjust for default_exp renaming to - dec_ext and IOPARM_dt_default_exp renaming to IOPARM_dt_dec_ext. - * io.c (match_io): Likewise. - -2018-03-27 Thomas Koenig - - PR fortran/85084 - * frontend-passes.c (gfc_run_passes): Do not run front-end - optimizations if a previous error occurred. - -2018-03-27 Thomas Koenig - Harald Anlauf - - PR fortran/85083 - * primary.c (gfc_convert_to_structure_constructor): Check - conformance of argument types in structure constructor. - -2018-03-26 Thomas Koenig - - PR fortran/66709 - * io.c: Include constructor.h. - (resolve_tag_format): For a constant character array, concatenate - into a single character expression. - -2018-03-25 Seth Johnson - Dominique d'Humieres - - PR fortran/84924 - * check.c (gfc_check_c_f_pointer): Allow scalar noninteroperable - scalar derived type with -std=f2003 and -std=f2008. - -2018-03-24 Jerry DeLisle - Dominique d'Humieres - - PR fortran/69497 - * symbol.c (gfc_free_namespace): Delete the assert and only if - refs count is equals zero, free the namespace. Otherwise, - something is halfway and other errors will resound. - -2018-03-24 Thomas Koenig - - PR fortran/70068 - * expr.c (find_substring_ref): Change types of start, end - and length variables to gfc_charlen_t. Set length to zero - for empty substring. - -2018-03-24 Steven G. Kargl - - PR fortran/42651 - * decl.c (check_function_name): Improved error message - (gfc_match_volatile, gfc_match_asynchronous) Use check_function_name. - -2018-03-22 Steven G. Kargl - - PR fortran/84922 - * decl.c (get_proc_name): If the MODULE prefix appears in interface - body, then it must appear on the contained subroutine or function. - While here, fix nearby mis-indented code. - -2018-03-21 Thomas Koenig - Harald Anlauf - - PR fortran/84957 - * trans-types.c (gfc_sym_type): Do not dereference NULL pointer. - -2018-03-21 Janne Blomqvist - - PR fortran/84615 - * trans-expr.c (gfc_conv_procedure_call): Convert charlen to - gfc_charlen_type_node when calling procedure. - -2018-03-20 Steven G. Kargl - - PR fortran/85001 - * interface.c (symbol_rank): Remove bogus null pointer check that - crept in when translating a ternary operator into an if-else - constructor. - -2018-03-19 Thomas Koenig - - PR fortran/84931 - * simplify.c (gfc_convert_constant): Correctly handle iterators - for type conversion. - -2018-03-18 Steven G. Kargl - - PR fortran/77414 - * decl.c (get_proc_name): Check for a subroutine re-defined in - the contain portion of a subroutine. Change language of existing - error message to better describe the issue. While here fix whitespace - issues. - -2018-03-18 Steven G. Kargl - - PR fortran/65453 - * decl.c (get_proc_name): Catch clash between a procedure statement - and a contained subprogram - -2018-03-16 Steven G. Kargl - - PR fortran/69395 - * decl.c (merge_array_spec): Correct the error condition. - -2018-03-15 Steven G. Kargl - - PR fortran/78741 - * decl.c (get_proc_name): Check for clash of entry name with - subroutine name. - -2018-03-15 Steven G. Kargl - - PR fortran/69395 - * decl.c (merge_array_spec): Limit the merging to maximum allowed - dimensions, and issue error message if limit is exceeded. - -2018-03-13 Steven G. Kargl - - * check.c (gfc_check_kill_sub): Remove check for INTEGER(4) or (8). - * intrinsic.c (add_functions): Remove reference to gfc_resolve_kill. - (add_subroutines): Remove reference to gfc_resolve_kill_sub. - * intrinsic.texi: Update documentation. - * iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove. - * trans-decl.c (gfc_build_intrinsic_function_decls): Add - gfor_fndecl_kill and gfor_fndecl_kill_sub - * trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new - functions. - (gfc_conv_intrinsic_function): Use conv_intrinsic_kill. - (gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub. - * trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub. - -2018-03-11 Paul Thomas - - PR fortran/84546 - * trans-array.c (structure_alloc_comps): Make sure that the - vptr is copied and that the unlimited polymorphic _len is used - to compute the size to be allocated. - * trans-expr.c (gfc_get_class_array_ref): If unlimited, use the - unlimited polymorphic _len for the offset to the element. - (gfc_copy_class_to_class): Set the new 'unlimited' argument. - * trans.h : Add the boolean 'unlimited' to the prototype. - -2018-03-11 Steven G. Kargl - - PR fortran/83939 - * resolve.c (resolve_fl_procedure): Enforce F2018:C15100. - -2018-03-11 Steven G. Kargl - - * check.c (gfc_check_kill): Check pid and sig are scalar. - (gfc_check_kill_sub): Restrict kind to 4 and 8. - * intrinsic.c (add_function): Sort keyword list. Add pid and sig - keywords for KILL. Remove redundant *back="back" in favor of the - original *bck="back". - (add_subroutines): Sort keyword list. Add pid and sig keywords - for KILL. - * intrinsic.texi: Fix documentation to consistently use pid and sig. - * iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8. Choose the - correct function. - (gfc_resolve_rename_sub): Add comment. - -2018-03-11 Thomas Koenig - - PR fortran/66128 - * simplify.c (simplify_transformation): Return default result for - empty array argument. - (gfc_simplify_all): Remove special-case handling for zerosize. - (gfc_simplify_any): Likewise. - (gfc_simplify_count): Likewise. - (gfc_simplify_iall): Likewise. - (gfc_simplify_iany): Likewise. - (gfc_simplify_iparity): Likewise. - (gfc_simplify_minval): Likewise. - (gfc_simplify_maxval): Likewise. - (gfc_simplify_norm2): Likewise. - (gfc_simplify_product): Likewise. - (gfc_simplify_sum): Likewise. - -2018-03-10 Steven G. Kargl - - PR fortran/84734 - * arith.c (check_result, eval_intrinsic): If result overflows, pass - the expression up the chain instead of a NULL pointer. - -2018-03-07 Steven G. Kargl - - PR fortran/64124 - PR fortran/70409 - * decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant. - -2017-03-06 Thomas Koenig - - PR fortran/84697 - PR fortran/66128 - * expr.c (simplify_parameter_variable): If p is a size zero array - and not an ARRAY_EXPR insert an empty array constructor and - return. - * gfortran.h: Add prototype for gfc_is_size_zero_array. - * simplify.c (is_size_zero_array): Make non-static and rename into - (gfc_is_size_zero_array): Check for parameter arrays of zero - size by comparing shape and absence of constructor. - (gfc_simplify_all): Use gfc_is_size_zero_array instead of - is_size_zero_array. - (gfc_simplify_count): Likewise. - (gfc_simplify_iall): Likewise. - (gfc_simplify_iany): Likewise. - (gfc_simplify_iparity): Likewise. - (gfc_simplify_minval): Likewise. - (gfc_simplify_maxval): Likewise. - (gfc_simplify_product): Likewise. - (gfc_simplify_sum): Likewise. - -2018-03-06 Steven G. Kargl - - PR fortran/56667 - * primary.c (match_sym_complex_part): Give the matcher for an implied - do-loop a chance to run. - -2018-03-03 Harald Anlauf - - PR fortran/71085 - * trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not - dereference NULL pointer. - -2018-03-03 Steven G. Kargl - - PR fortran/66128 - * simplify.c (is_size_zero_array): New function to check for size - zero array. - (gfc_simplify_all, gfc_simplify_any, gfc_simplify_count, - gfc_simplify_iall, gfc_simplify_iany, gfc_simplify_iparity, - gfc_simplify_minval, gfc_simplify_maxval, gfc_simplify_norm2, - gfc_simplify_product, gfc_simplify_sum): Use it, and implement - requirements from F2018. - -2018-03-03 Steven G. Kargl - - PR fortran/51434 - * simplify.c (gfc_simplify_transfer): Resolve mold. - -2018-03-03 Paul Thomas - - PR fortran/80965 - * resolve.c (build_loc_call): Change symtree name from 'loc' to - '_loc'. - -2018-03-01 Paul Thomas - - PR fortran/84219 - * target-memory.c (gfc_interpret_derived): Assert that BT_VOID - components are caf tokens. - (gfc_target_interpret_expr): Treat BT_VOID expressions as - integers. - -2018-03-01 Paul Thomas - - PR fortran/84538 - * class.c (class_array_ref_detected): Remove the condition that - there be no reference after the array reference. - (find_intrinsic_vtab): Remove excess whitespace. - * trans-array.c (gfc_conv_scalarized_array_ref): Rename 'tmp' - as 'base and call build_class_array_ref earlier. - -2018-02-28 Paul Thomas - - PR fortran/83901 - * trans-stmt.c (trans_associate_var): Make sure that the se - expression is a pointer type before converting it to the symbol - backend_decl type. - -2018-02-25 Steven G. Kargl - - PR fortran/83633 - * decl.c (variable_decl): Check that an explicit-shape-array with - nonconstant bounds is allowed. - -2018-02-25 Paul Thomas - - PR fortran/84523 - * trans-intrinsic.c (gfc_conv_allocated): If the argument se - has a pre block, add it to the expression pre block. - -2018-02-25 Thomas Koenig - - PR fortran/78238 - * gfortran.h (gfc_integer_4_kind): Define. - * resolve.c (resolve_select_type): Make sure that the - kind of c->high is gfc_integer_4_kind. - -2018-02-24 Steven G. Kargl - - PR fortran/30792 - * decl.c (gfc_match_data): Check for invalid substring in - data-implied-do - -2018-02-23 Steven G. Kargl - - * intrinsic.texi: Arguments to MATMUL cannot both be rank one. - -2018-02-23 Steven G. Kargl - - PR fortran/84511 - * trans-io.c (transfer_expr): Deal with C_LOC in transfer statement. - -2018-02-23 Steven G. Kargl - - PR fortran/84346 - * interface.c (compare_actual_formal): Issue error if keyword is - used in a statement function. - -2018-02-23 Jerry DeLisle - - PR fortran/84506 - * trans-io.c (set_parameter_value_inquire): Adjust range check of - negative unit values for kind=8 units to the kind=4 negative limit. - -2018-02-23 Paul Thomas - - PR fortran/83149 - * trans-types.c (gfc_sym_type): Test sym->ns->proc_name before - accessing its components. - -2018-02-23 Paul Thomas - - PR fortran/83149 - * trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name - before accessing its components. - -2018-02-23 Paul Thomas - - PR fortran/83148 - * trans-const.c : Clean up some whitespace issues. - * trans-expr.c (gfc_conv_initializer): If an iso_c_binding - derived type has a kind value of zero, set it to the default - integer kind. - -2018-02-23 Janne Blomqvist - - PR fortran/84519 - * trans-decl.c (gfc_build_builtin_function_decls): Add bool - argument to stop and error stop decls. - * trans-stmt.c (gfc_trans_stop): Add false value to argument - lists. - -2018-02-22 Janne Blomqvist - - PR 78534 - PR 84509 - * trans-decl.c (gfc_build_builtin_function_decls): Pass - gfc_int8_type node to pause_numeric, size_type_node to - pause_string. - * trans-stmt.c (gfc_trans_pause): Likewise. - -2018-02-22 Janne Blomqvist - - * gfortran.texi: Update Coarray API description. - * trans-decl.c (gfc_build_builtin_function_decls): Use size_t for - character lengths, int for exit codes. - (generate_coarray_sym_init): Use size_t for character length. - * trans-intrinsic.c (conv_co_collective): Likewise. - * trans-stmt.c (gfc_trans_lock_unlock): Likewise. - (gfc_trans_event_post_wait): Likewise. - (gfc_trans_sync): Likewise. - (gfc_trans_stop): Use size_t for character lengths, int for exit - codes. - -2018-02-20 Thomas Koenig - - PR fortran/48890 - PR fortran/83823 - * primary.c (gfc_convert_to_structure_constructor): - For a constant string constructor, make sure the length - is correct. - -2018-02-19 Paul Thomas - - PR fortran/83344 - PR fortran/83975 - * resolve.c (resolve_assoc_var): Rearrange the logic for the - determination of the character length of associate names. If - the associate name is missing a length expression or the length - expression is not a constant and the target is not a variable, - make the associate name allocatable and deferred length. - * trans-decl.c (gfc_get_symbol_decl): Null the character length - backend_decl for deferred length associate names that are not - variables. Set 'length' to gfc_index_zero_node for character - associate names, whose character length is a PARM_DECL. - -2018-02-19 Thomas Koenig - - PR fortran/35339 - * frontend-passes.c (traverse_io_block): Remove workaround for - PR 80945. - -2018-02-19 Andre Vehreschild - - * gfortran.texi: Document additional src/dst_type. Fix some typos. - * trans-decl.c (gfc_build_builtin_function_decls): Declare the new - argument of _caf_*_by_ref () with * e { get, send, sendget }. - * trans-intrinsic.c (gfc_conv_intrinsic_caf_get): Add the type of the - data referenced when generating a call to caf_get_by_ref (). - (conv_caf_send): Same but for caf_send_by_ref () and - caf_sendget_by_ref (). - -2018-02-18 Jerry DeLisle - - PR fortran/84389 - * io.c (check_format): Allow FMT_COLON. - -2018-02-18 Paul Thomas - - PR fortran/80945 - * trans-array.c (gfc_conv_expr_descriptor): Set parmtype from - the typenode in the case of deferred length characters. - -2018-02-17 Thomas Koenig - - PR fortran/84270 - * frontend-passes (scalarized_expr): If the expression - is an assumed size array, leave in the last reference - and pass AR_SECTION instead of AR_FULL to gfc_resolve - in order to avoid an error. - -2018-02-17 Paul Thomas - - PR fortran/84115 - * resolve.c (resolve_assoc_var): If a non-constant target expr. - has no string length expression, make the associate variable - into a deferred length, allocatable symbol. - * trans-decl.c (gfc_is_reallocatable_lhs): Add and use a ptr to - the symbol. - * trans-stmt.c (trans_associate_var): Null and free scalar - associate names that are allocatable. After assignment, remove - the allocatable attribute to prevent reallocation. - -2018-02-16 Jakub Jelinek - - PR fortran/84418 - * trans-openmp.c (gfc_trans_omp_clauses): For OMP_CLAUSE_LINEAR_REF - kind set OMP_CLAUSE_LINEAR_STEP to TYPE_SIZE_UNIT times last_step. - -2018-02-16 Dominique d'Humieres - - PR fortran/84354 - * decl.c (gfc_get_pdt_instance): Replace '%qs' with %qs. - -2018-02-15 Janus Weil - - PR fortran/84409 - * interface.c (check_dtio_arg_TKR_intent): Add a check for character - length. - -2018-02-14 Janus Weil - - PR fortran/84385 - * match.c (gfc_match_select_type): Fix check for selector in - SELECT TYPE statement. - -2018-02-13 Janus Weil - - PR fortran/84313 - * symbol.c (check_conflict): Reject procedure pointers in common blocks. - -2018-02-13 Alastair McKinstry - Janne Blomqvist - - * module.c (dump_module): Use lbasename to ensure that module - files are reproducible. - -2018-02-12 Janus Weil - - PR fortran/84273 - * resolve.c (resolve_component): Fix checks of passed argument in - procedure-pointer components. - -2018-02-11 Francois-Xavier Coudert - - PR fortran/35299 - * resolve.c (resolve_formal_arglist): Update error message. - -2018-02-11 Andre Vehreschild - - * gfortran.texi: Fix typos in documentation of caf_register (). - * trans-array.c (structure_alloc_comps): Only register a component of - a derived typed corray, not of an ultimate component coarray. - -2018-02-11 Steven G. Kargl - - PR fortran/54223 - PR fortran/84276 - * interface.c (compare_actual_formal): Add in_statement_function - bool parameter. Skip check of INTENT attribute for statement - functions. Arguments to a statement function cannot be optional, - issue error for missing argument. - (gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Use - in_statement_function. - -2018-02-11 Paul Thomas - - PR fortran/84074 - * trans-expr.c (gfc_conv_derived_to_class): Set the use_offset - flag. If the is a vector subscript or the expression is not a - variable, make the descriptor one-based. - -2018-02-10 Paul Thomas - - PR fortran/84141 - PR fortran/84155 - * trans-array.c (gfc_array_init_size): Revert the change made - in revision 257356 setting the dtype. - * trans-types.c (gfc_get_dtype): Do not use the cached dtype. - Call gfc_get_dtype_rank_type every time. - - PR fortran/56691 - * trans-array.c (gfc_conv_expr_descriptor): If the source array - is a descriptor type, use its offset, removing the condition - that is be a class expression. - -2018-02-07 Steven G. Kargl - - PR fortran/82994 - * match.c (gfc_match_deallocate): Check for NULL pointer. - -2018-02-07 Thomas Koenig - - PR fortran/68560 - * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function. - (gfc_conv_intrinsic_function): Call it. - -2018-02-07 Steven G. Kargl - - PR fortran/82049 - * match.c (gfc_match_type_spec): If the charlen is non-NULL, then - try to resolve it. While here return early if possible. - -2018-02-04 Paul Thomas - - PR fortran/84115 - * trans-decl.c (gfc_get_symbol_decl): Do not finish the decl of - 'length' if the symbol charlen backend_decl is an indirect ref. - -2018-02-03 Paul Thomas - - PR fortran/84141 - PR fortran/84155 - * trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype - use gfc_get_dtype_rank_type. - -2018-02-01 Janne Blomqvist - - PR 83975 - PR 83344 - * resolve.c (resolve_assoc_var): Generate an error if - target length unknown. - -2018-02-01 Janne Blomqvist - - PR fortran/83705 - * simplify.c (gfc_simplify_repeat): Increase limit for deferring - to runtime, print a warning message. - -2018-01-31 Jakub Jelinek - - PR fortran/84116 - * openmp.c (gfc_match_omp_clauses): If all the linear - gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist - nor set *head = NULL. Formatting fixes. - -2018-01-31 Paul Thomas - - PR fortran/84088 - * trans-expr.c (gfc_conv_procedure_call): If the parm expr is - an address expression passed to an assumed rank dummy, convert - to an indirect reference. - -2018-01-31 Thomas Koenig - - * dump-parse-tree.c (write_proc): Use sym_name (which may - be sym->binding_label) instead of sym->name. - -2018-01-31 Janne Blomqvist - - * trans-const.c (gfc_conv_string_init): Use gfc_charlen_t instead - of int for slen. - -2018-01-31 Janne Blomqvist - - PR fortran/78534 - * trans-expr.c (fill_with_spaces): Use memset instead of - generating loop. - (gfc_trans_string_copy): Improve opportunity to use builtins with - constant lengths. - -2018-01-30 Jakub Jelinek - - PR debug/84131 - * trans-array.c (gfc_get_descriptor_offsets_for_info): Set *data_off - to DATA_FIELD's offset rather than OFFSET_FIELD's offset. - -2018-01-30 Thomas Koenig - - PR fortran/84134 - * array.c (gfc_ref_dimen_size): Whitespace fixes. If stride is - zero, return false. - -2018-01-30 Thomas Koenig - - PR fortran/84133 - * frontend-passes (matmul_to_var_expr): Return early if - in association list. - (inline_matmul_assign): Likewise. - -2017-01-29 Thomas Koenig - - PR fortran/84073 - * resolve.c (resolve_component): Ensure BIND(C) character - components have length one. - (resolve_symbol): Likewise for variables. - -2018-01-27 Jakub Jelinek - - PR fortran/84065 - * decl.c (add_init_expr_to_sym): Ignore initializers for too large - lengths. - -2018-01-26 Damian Rouson - Alessandro Fanfarillo - Soren Rasmussen - - Partial support for Fortran 2018 teams features. - - * array.c (gfc_match_array_ref): add team attribute in coarray - transfers. - * check.c (gfc_check_get_team, gfc_check_team_number): add new - functions for get_team and team_number. - * dump-parse-tree.c (show_code_node): add new statements: form team, - change team, end team, and sync team. - * expr.c (gfc_find_team_co): add new function. - * gfortran.h: add new statements. - * intrinsic.c (add_functions): add get_team and team_number functions. - * intrinsic.h: add get_team and team_number prototypes for check, - simplify, and resolve. - * iresolve.c (gfc_resolve_get_team, gfc_resolve_team_number): add new - functions. - * iso-fortran-env.def: add the team_type derived type. - * match.c (gfc_match_if, gfc_match_form_team, gfc_match_team_number) - (gfc_match_end_team, gfc_match_sync_team, gfc_match_change_team): - add change team, end team, form team, sync team match and functions. - * match.h: add new prototypes for change team, end team, form team, - and sync team. - * parse.c (decode_statement): add cases for change team, end team, - form team, and sync team. - * resolve.c: add cases for exec form team, change team, end team, and - sync team. - * simplify.c (gfc_simplify_get_team): add new function for get team. - * st.c (gfc_free_statement): add cases exec for change team, end team, - form team, sync team. - * trans-decl.c (gfor_fndecl_caf_form_team) - (gfor_fndecl_caf_change_team, gfor_fndecl_caf_end_team) - (gfor_fndecl_caf_sync_team, gfor_fndecl_caf_get_team) - (gfor_fndecl_caf_team_number): add functions and definitions. - * trans-intrinsic.c (conv_caf_send, conv_intrinsic_team_number): add - new function and team_type argument support. - * trans-stmt.c (gfc_trans_form_team, gfc_trans_change_team) - (gfc_trans_end_team, gfc_trans_sync_team): add new functions. - * trans-stmt.h: add new prototypes. - * trans-types.c (gfc_get_derived_type): check condition for team_type. - * trans.c (trans_code): new exec cases for form team, change team, end - team, and sync team. - * trans.h: add new prototypes. - -2018-01-26 Steven G. Kargl - - PR fortran/83998 - * simplify.c (compute_dot_product): Initialize result to INTEGER(1) 0 - or .false. The summation does the correct type conversion. - (gfc_simplify_dot_product): Special case zero-sized arrays. - -2018-25-01 Paul Thomas - - PR fortran/37577 - * array.c (gfc_match_array_ref): If standard earlier than F2008 - it is an error if the reference dimension is greater than 7. - libgfortran.h : Increase GFC_MAX_DIMENSIONS to 15. Change the - dtype masks and shifts accordingly. - * trans-array.c (gfc_conv_descriptor_dtype): Use the dtype - type node to check the field. - (gfc_conv_descriptor_dtype): Access the rank field of dtype. - (duplicate_allocatable_coarray): Access the rank field of the - dtype descriptor rather than the dtype itself. - * trans-expr.c (get_scalar_to_descriptor_type): Store the type - of 'scalar' on entry and use its TREE_TYPE if it is ARRAY_TYPE - (ie. a character). - (gfc_conv_procedure_call): Pass TREE_OPERAND (tmp,0) to - get_scalar_to_descriptor_type if the actual expression is a - constant. - (gfc_trans_structure_assign): Assign the rank directly to the - dtype rank field. - * trans-intrinsic.c (gfc_conv_intrinsic_rank): Cast the result - to default integer kind. - (gfc_conv_intrinsic_sizeof): Obtain the element size from the - 'elem_len' field of the dtype. - * trans-io.c (gfc_build_io_library_fndecls): Replace - gfc_int4_type_node with dtype_type_node where necessary. - (transfer_namelist_element): Use gfc_get_dtype_rank_type for - scalars. - * trans-types.c : Provide 'get_dtype_type_node' to acces the - dtype_type_node and, if necessary, build it. - The maximum size of an array element is now determined by the - maximum value of size_t. - Update the description of the array descriptor, including the - type def for the dtype_type. - (gfc_get_dtype_rank_type): Build a constructor for the dtype. - Distinguish RECORD_TYPEs that are BT_DERIVED or BT_CLASS. - (gfc_get_array_descriptor_base): Change the type of the dtype - field to dtype_type_node. - (gfc_get_array_descr_info): Get the offset to the rank field of - the dtype. - * trans-types.h : Add a prototype for 'get_dtype_type_node ()'. - * trans.h : Define the indices of the dtype fields. - -2018-23-01 Paul Thomas - - PR fortran/83866 - * decl.c (gfc_match_derived_decl): If eos not matched, recover - and emit error about garbage after declaration. - -2018-23-01 Paul Thomas - - PR fortran/83898 - * trans-stmt.c (trans_associate_var): Do not set cst_array_ctor - for characters. - -2018-01-22 Janne Blomqvist - - PR 78534 - PR 83704 - * arith.c (gfc_arith_concat): Use size_t for string length. - (gfc_compare_string): Likewise. - (gfc_compare_with_Cstring): Likewise. - * array.c (gfc_resolve_character_array_constructor): Use - HOST_WIDE_INT, gfc_mpz_get_hwi. - * check.c (gfc_check_fe_runtime_error): Use size_t. - * data.c (create_character_initializer): Use HOST_WIDE_INT, - gfc_extract_hwi. - * decl.c (gfc_set_constant_character_len): Use gfc_charlen_t. - (add_init_expr_to_sym): Use HOST_WIDE_INT. - * expr.c (gfc_build_init_expr): Use HOST_WIDE_INT, - gfc_extract_hwi. - (gfc_apply_init): Likewise. - * match.h (gfc_set_constant_character_len): Update prototype. - * primary.c (match_string_constant): Use size_t. - * resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT, - gfc_mpz_get_hwi. - * simplify.c (init_result_expr): Likewise. - (gfc_simplify_len_trim): Use size_t. - * target-memory.c (gfc_encode_character): Use size_t. - (gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi. - (interpret_array): Use size_t. - (gfc_interpret_character): Likewise. - * target-memory.h (gfc_encode_character): Update prototype. - (gfc_interpret_character): Likewise. - (gfc_target_interpret_expr): Likewise. - * trans-const.c (gfc_build_string_const): Use size_t for length - argument. - (gfc_build_wide_string_const): Likewise. - * trans-const.h (gfc_build_string_const): Likewise. - (gfc_build_wide_string_const): Likewise. - -2018-01-20 Steven G. Kargl - - PR fortran/83900 - * simplify.c (gfc_simplify_matmul): Set return type correctly. - -2018-01-19 Steven G. Kargl - - PR fortran/83900 - * simplify.c (gfc_simplify_matmul): Delete bogus assertion. - -2018-01-17 Harald Anlauf - - PR fortran/83864 - * expr.c (add_init_expr_to_sym): Do not dereference NULL pointer. - -2018-01-17 Harald Anlauf - - PR fortran/83874 - * decl.c (add_init_expr_to_sym): Do not dereference NULL pointer. - -2018-01-15 Louis Krupp - - PR fortran/82257 - * interface.c (compare_rank): Don't try to retrieve CLASS_DATA - from symbol marked unlimited polymorphic. - * resolve.c (resolve_structure_cons): Likewise. - * misc.c (gfc_typename): Don't dereference derived->components - if it's NULL. - -2018-01-15 Thomas Koenig - - PR fortran/54613 - * gfortran.h (gfc_check_f): Rename f4ml to f5ml. - (gfc_logical_4_kind): New macro - * intrinsic.h (gfc_simplify_minloc): Add a gfc_expr *argument. - (gfc_simplify_maxloc): Likewise. - (gfc_resolve_maxloc): Likewise. - (gfc_resolve_minloc): Likewise. - * check.c (gfc_check_minloc_maxloc): Add checking for "back" - argument; also raise error if it is used (for now). Add it - if it isn't present. - * intrinsic.c (add_sym_4ml): Rename to - (add_sym_5ml), adjust for extra argument. - (add_functions): Add "back" constant. Adjust maxloc and minloc - for back argument. - * iresolve.c (gfc_resolve_maxloc): Add back argument. If back is - not of gfc_logical_4_kind, convert. - (gfc_resolve_minloc): Likewise. - * simplify.c (gfc_simplify_minloc): Add back argument. - (gfc_simplify_maxloc): Likewise. - * trans-intinsic.c (gfc_conv_intrinsic_minmaxloc): Rename last - argument to %VAL to ensure passing by value. - (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_minmaxloc - also for library calls. - -2018-01-13 Jerry DeLisle - - PR fortran/82007 - * resolve.c (resolve_transfer): Delete code looking for 'DT' - format specifiers in format strings. Set formatted to true if a - format string or format label is present. - * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix - whitespace. - -2018-01-13 Thomas Koenig - - PR fortran/83744 - * dump-parse-tree.c (get_c_type_name): Remove extra line. - Change for loop to use declaration in for loop. Handle BT_LOGICAL - and BT_CHARACTER. - (write_decl): Add where argument. Fix indentation. Replace - assert with error message. Add typename to warning - in comment. - (write_type): Adjust locus to call of write_decl. - (write_variable): Likewise. - (write_proc): Likewise. Replace assert with error message. - -2018-01-13 Paul Thomas - - PR fortran/52162 - * trans-expr.c (gfc_trans_scalar_assign): Flag is_alloc_lhs if - the rhs expression is neither an elemental nor a conversion - function. - - PR fortran/83622 - * trans-array.c (is_pointer_array): Remove unconditional return - of false for -fopenmp. - -2018-01-13 Thomas Koenig - - - PR fortran/83803 - * dump-parse-tree.c (write_proc): Always emit closing parenthesis - for functions. - -2018-01-10 Steven G. Kargl - - PR fortran/82367 - * resolve.c (resolve_allocate_expr): Check for NULL pointer. - -2018-01-10 Steven G. Kargl - - PR fortran/83093 - * resolve.c (resolve_charlen): Check the type of cl->length - after resolution. - -2018-01-10 Janne Blomqvist - - PR fortran/83740 - * trans-array.c (gfc_trans_array_ctor_element): Fix formatting. - -2018-01-10 Janne Blomqvist - - PR fortran/83740 - * trans-array.c (gfc_trans_array_ctor_element): Convert RHS to the - LHS type when assigning. - -2018-01-09 Steven G. Kargl - - PR fortran/83742 - * expr.c (gfc_is_simply_contiguous): Check for NULL pointer. - -2018-01-08 Steven G. Kargl - - * match.c (gfc_match_allocate): Check for NULL pointer. - -2018-01-08 Steven G. Kargl - - * expr.c (gfc_check_pointer_assign): Fix typo in comment. - -2018-01-08 Paul Thomas - - PR fortran/83611 - * decl.c (gfc_get_pdt_instance): If parameterized arrays have - an initializer, convert the kind parameters and add to the - component if the instance. - * trans-array.c (structure_alloc_comps): Add 'is_pdt_type' and - use it with case COPY_ALLOC_COMP. Call 'duplicate_allocatable' - for parameterized arrays. Clean up typos in comments. Convert - parameterized array initializers and copy into the array. - * trans-expr.c (gfc_trans_scalar_assign): Do a deep copy for - parameterized types. - *trans-stmt.c (trans_associate_var): Deallocate associate vars - as necessary, when they are PDT function results for example. - - PR fortran/83731 - * trans-array.c (structure_alloc_comps): Only compare len parms - when they are declared explicitly. - -2018-01-06 Janne Blomqvist - - PR fortran/50892 - * trans-expr.c (gfc_trans_pointer_assignment): fold_convert rhs to - lhs type. - -2018-01-05 Janne Blomqvist - - PR fortran/78534 - PR fortran/66310 - * array.c (got_charlen): Use gfc_charlen_int_kind. - * class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of - hardcoded kind. - (find_intrinsic_vtab): Likewise. - * decl.c (match_char_length): Use gfc_charlen_int_kind. - (add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind. - (gfc_match_implicit): Use gfc_charlen_int_kind. - * dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t. - (show_expr): Use HOST_WIDE_INT_PRINT_DEC. - * expr.c (gfc_get_character_expr): Length parameter of type - gfc_charlen_t. - (gfc_get_int_expr): Value argument of type HOST_WIDE_INT. - (gfc_extract_hwi): New function. - (simplify_const_ref): Make string_len of type gfc_charlen_t. - (gfc_simplify_expr): Use HOST_WIDE_INT for substring refs. - * frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind. - * gfortran.h (gfc_mpz_get_hwi): New prototype. - (gfc_mpz_set_hwi): Likewise. - (gfc_charlen_t): New typedef. - (gfc_expr): Use gfc_charlen_t for character lengths. - (gfc_size_kind): New extern variable. - (gfc_extract_hwi): New prototype. - (gfc_get_character_expr): Use gfc_charlen_t for character length. - (gfc_get_int_expr): Use HOST_WIDE_INT type for value argument. - * gfortran.texi: Update description of hidden string length argument. - * iresolve.c (check_charlen_present): Use gfc_charlen_int_kind. - (gfc_resolve_char_achar): Likewise. - (gfc_resolve_repeat): Pass string length directly without - temporary, use gfc_charlen_int_kind. - (gfc_resolve_transfer): Use gfc_charlen_int_kind. - * match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen. - * misc.c (gfc_mpz_get_hwi): New function. - (gfc_mpz_set_hwi): New function. - * module.c (atom_int): Change type from int to HOST_WIDE_INT. - (parse_integer): Don't complain about large integers. - (write_atom): Use HOST_WIDE_INT for integers. - (mio_integer): Handle integer type mismatch. - (mio_hwi): New function. - (mio_intrinsic_op): Use HOST_WIDE_INT. - (mio_array_ref): Likewise. - (mio_expr): Likewise. - * primary.c (match_substring): Use gfc_charlen_int_kind. - * resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind. - (resolve_character_operator): Likewise. - (resolve_assoc_var): Likewise. - (resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf. - (resolve_charlen): Use mpz_sgn to determine sign. - * simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t - instead of long. - * symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind. - * target-memory.c (size_character): Length argument of type - gfc_charlen_t. - (gfc_encode_character): Likewise. - (gfc_interpret_character): Use gfc_charlen_t. - * target-memory.h (gfc_encode_character): Modify prototype. - * trans-array.c (gfc_trans_array_ctor_element): Use existing type. - (get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type. - (trans_array_constructor): Use existing type. - (get_array_charlen): Likewise. - * trans-const.c (gfc_conv_mpz_to_tree_type): New function. - * trans-const.h (gfc_conv_mpz_to_tree_type): New prototype. - * trans-decl.c (gfc_trans_deferred_vars): Use existing type. - (add_argument_checking): Likewise. - * trans-expr.c (gfc_class_len_or_zero_get): Build const of type - gfc_charlen_type_node. - (gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of - 4, fold_convert to correct type. - (gfc_conv_class_to_class): Build const of type size_type_node for - size. - (gfc_copy_class_to_class): Likewise. - (gfc_conv_string_length): Use same type in expression. - (gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen. - (gfc_conv_string_tmp): Make sure len is of the right type. - (gfc_conv_concat_op): Use same type in expression. - (gfc_conv_procedure_call): Likewise. - (fill_with_spaces): Comment out memset() block due to spurious - -Wstringop-overflow warnings. - (gfc_trans_string_copy): Use gfc_charlen_type_node. - (alloc_scalar_allocatable_for_subcomponent_assignment): - fold_convert to right type. - (gfc_trans_subcomponent_assign): Likewise. - (trans_class_vptr_len_assignment): Build const of correct type. - (gfc_trans_pointer_assignment): Likewise. - (alloc_scalar_allocatable_for_assignment): fold_convert to right - type in expr. - (trans_class_assignment): Build const of correct type. - * trans-intrinsic.c (gfc_conv_associated): Likewise. - (gfc_conv_intrinsic_repeat): Do calculation in sizetype. - * trans-io.c (gfc_build_io_library_fndecls): Use - gfc_charlen_type_node for character lengths. - (set_string): Convert to right type in assignment. - * trans-stmt.c (gfc_trans_label_assign): Build const of - gfc_charlen_type_node. - (trans_associate_var): Likewise. - (gfc_trans_character_select): Likewise. - (gfc_trans_allocate): Likewise, don't typecast strlen result. - (gfc_trans_deallocate): Don't typecast strlen result. - * trans-types.c (gfc_size_kind): New variable. - (gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind - from size_type_node. - * trans-types.h: Fix comment. - -2018-01-04 Thomas Koenig - - PR fortran/83683 - PR fortran/45689 - * check.c (gfc_check_eoshift): Check for string length and - for conformance of boundary. - * intrinsic.c (add_functions): Add gfc_simplify_eoshift. - * intrinsic.h: Add prototype for gfc_simplify_eoshift. - * simplify.c (gfc_simplify_eoshift): New function. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_type_for_mode): Handle MODE_VECTOR_BOOL. - -2018-01-03 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_type_for_mode): Check valid_vector_subparts_p. - -2018-01-03 Thomas Koenig - - PR fortran/83664 - * check.c (gfc_check_eoshift): Error for missing boundary if array - is not one of the standard types. - -2018-01-03 Jakub Jelinek - - Update copyright years. +2019-01-01 Jakub Jelinek * gfortranspec.c (lang_specific_driver): Update copyright notice dates. @@ -5606,50 +6,8 @@ notice and this notice are preserved. * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. - -2017-01-02 Thomas Koenig - - PR fortran/45689 - * intrinsic.c (add_function): Add gfc_simplify_maxloc and - gfc_simplify_minloc to maxloc and minloc, respectively. - * intrinsic.h: Add prototypes for gfc_simplify_minloc - and gfc_simplify_maxloc. - * simplify.c (min_max_chose): Adjust prototype. Modify function - to have a return value which indicates if the extremum was found. - (is_constant_array_expr): Fix typo in comment. - (simplify_minmaxloc_to_scalar): New function. - (simplify_minmaxloc_nodim): New function. - (new_array): New function. - (simplify_minmaxloc_to_array): New function. - (gfc_simplify_minmaxloc): New function. - (simplify_minloc): New function. - (simplify_maxloc): New function. - -2018-01-02 Thomas Koenig - - PR fortran/45689 - PR fortran/83650 - * simplify.c (gfc_simplify_cshift): Re-implement to allow full - range of arguments. - -2018-01-01 Paul Thomas - - PR fortran/83076 - * resolve.c (resolve_fl_derived0): Add caf_token fields for - allocatable and pointer scalars, when -fcoarray selected. - * trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token - field as well as the backend_decl. - (gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module - derived types that are not vtypes. Components with caf_token - attribute are pvoid types. For a component requiring it, find - the caf_token field and have the component token field point to - its backend_decl. - - PR fortran/83319 - *trans-types.c (gfc_get_array_descriptor_base): Add the token - field to the descriptor even when codimen not set. -Copyright (C) 2018 Free Software Foundation, Inc. +Copyright (C) 2019 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/fortran/ChangeLog-2018 b/gcc/fortran/ChangeLog-2018 new file mode 100644 index 00000000000..04463651988 --- /dev/null +++ b/gcc/fortran/ChangeLog-2018 @@ -0,0 +1,5656 @@ +2018-12-31 Thomas Koenig + + PR fortran/82995 + * trans-expr.c (gfc_conv_procedure_call): Pass NULL pointer + for missing optional dummy arguments for library routines. + * trans-intinsic.c (conv_mask_condition): New function. + (gfc_conv_intrinsic_arith): Detect and handle optional mask. + (gfc_conv_intrinsic_minmaxloc): Likewise. + (gfc_conv_intrinsic_findloc): Likewise. + (gfc_conv_intrinsic_minmaxval): Likewise. + (gfc_inline_intrinsic_function_p): Do not inline for rank > 1 if + an optional mask is present. + +2018-12-29 Steven G. Kargl + + * expr.c (external_spec_function): Add ieee_support_subnormal to list + of IEEE inquiry functions. + +2018-12-29 Steven G. Kargl + + * cpp.c (gfc_cpp_init): Add pre-defined macros for INTEGER(1) + INTEGER(2), INTEGER(8) and INTEGER(16) if supported. Add pre-defined + macros for REAL(10) and REAL(16) if available. + * gfortran.texi: Document new macros. + +2018-12-27 Steven G. Kargl + + PR fortran/81027 + * expr.c (gfc_check_init_expr): Distinguish assumed-shape versus + deferred-shape dummy arguments in an error message. + +2018-12-26 Harald Anlauf + + PR fortran/85407 + * module.c (read_module): Convert assert to fatal error to give a + sensible error message. + +2018-12-24 Steven G. Kargl + + PR fortran/45513 + PR fortran/81509 + * check.c: Rename function gfc_check_iand to gfc_check_iand_ieor_ior. + * check.c (boz_args_check): New function. Check I and J not both BOZ. + (gfc_check_dshift,gfc_check_iand_ieor_ior, gfc_check_ishft, + gfc_check_and, gfc_check_merge_bits): Use it. + * check.c (gfc_check_iand_ieor_ior): Force conversion of BOZ to kind + type of other agrument. Remove silly GNU extension. + (gfc_check_ieor, gfc_check_ior): Delete now unused functions. + * intrinsic.c (add_functions): Use gfc_check_iand_ieor_ior. Wrap long + line. + * intrinsic.h: Rename gfc_check_iand to gfc_check_iand_ieor_ior. + Delete prototype for bool gfc_check_ieor and gfc_check_ior + * intrinsic.texi: Update documentation for boz-literal-constant. + +2018-12-23 Paul Thomas + + PR fortran/77703 + * resolve.c (get_temp_from_expr): Use the string length of + constant character expressions. + +2018-12-22 Steven G. Kargl + + PR fortran/88328 + * io.c (resolve_tag_format): Add error for zero-sized array. + (gfc_resolve_dt): Manipulate gfc_current_locus to get sensible error + message locus. + +2018-12-22 Steven G . Kargl + + PR fortran/85798 + * decl.c (gfc_match_data): If a component of a derived type entity + appears in data statement, check that does not have the allocatable + attribute. + +2018-12-22 Steven G. Kargl + + PR fortran/88169 + * module.c (mio_namelist): Remove an error condition/message that + is contrary to the Fortran standard. + +2018-12-22 Thomas Koenig + + PR fortran/85544 + * frontend-passes.c (optimize_power): Remove. + (optimize_op): Remove call to optimize_power. + * trans-expr.c (gfc_conv_power_op): Handle cases of 1**integer, + (2|4|8|16) ** integer and (-1) ** integer. + +2018-12-21 Paul Thomas + + PR fortran/87881 + * expr.c (find_inquiry_ref): Loop through the inquiry refs in + case there are two of them. + (simplify_ref_chain): Return true after a successful call to + find_inquiry_ref. + +2018-12-19 Steven G. Kargl + + PR fortran/87992 + * resolve.c (resolve_fl_variable): Avoid a NULL pointer. + +2018-12-16 Steven G. Kargl + + * resolve.c (resolve_transfer): Remove dead code. + +2018-12-16 Steven G. Kargl + + PR fortran/88116 + PR fortran/88467 + * array.c (gfc_match_array_constructor): Check return value of + gfc_convert_type(). Skip constructor elements with BT_UNKNOWN, + which need to go through resolution. + * intrinsic.c (gfc_convert_type_warn): Return early if the types + match (i.e., no conversion is required). + * simplify.c (gfc_convert_constant): Remove a gfc_internal_error, + and return gfc_bad_expr. + +2018-12-16 Steven G. Kargl + + * decl.c (variable_decl): Typo fixes in comment and error messsage. + +2018-12-16 Thomas Koenig + + PF fortran/88364 + * trans-expr.c (gfc_conv_expr_reference): Do not add clobber if + the expression contains a reference. + +2018-12-15 Steven G. Kargl + + PR fortran/87944 + * decl.c (match_data_constant): Allow inquiry parameter as data + constant in data statement. + +2018-12-15 Steven G. Kargl + + PR fortran/88138 + * decl.c (variable_decl): Check that a derived isn't being assigned + an incompatible entity in an initialization. + +2018-12-12 Jakub Jelinek + + PR fortran/88463 + * trans-openmp.c (gfc_omp_predetermined_sharing): Handle TREE_READONLY + VAR_DECLs with DECL_EXTERNAL like those with TREE_STATIC. + +2018-12-11 Steven G. Kargl + + PR fortran/88155 + * primary.c (gfc_match_structure_constructor): Set the locus of + an expression to avoid a NULL pointer dereference. + +2018-12-11 Steven G. Kargl + + PR fortran/88249 + * gfortran.h: Update prototype for gfc_resolve_filepos(). + * io.c (gfc_resolve_filepos): Check for UNIT number if ERR= is present. + Use passed in locus for error message. + * resolve.c (gfc_resolve_code): Pass locus in gfc_resolve_filepos() + call. + +2018-12-10 Steven G. Kargl + + PR fortran/97922 + * io.c (gfc_match_open): Additional checks on ASYNCHRONOUS. + +2018-12-10 Steven G. Kargl + + PR fortran/88269 + * io.c (io_constraint): Update macro. If locus line buffer is NULL, + use gfc_current_locus in error messages. + (check_io_constraints): Catch missing IO UNIT in write and read + statements. io_constraint macro is incompatible here. + +2018-12-09 Steven G. Kargl + + PR fortran/88205 + * io.c (gfc_match_open): Move NEWUNIT checks to after STATUS checks. + +2018-12-09 Steven G. Kargl + + PR fortran/88206 + * match.c (gfc_match_type_spec): REAL can be an intrinsic function. + +2018-12-09 Fritz Reese + + PR fortran/88228 + * resolve.c (resolve_operator): Do not call resolve_function. + Break like other cases. + +2018-12-09 Cesar Philippidis + + * trans-openmp.c (gfc_trans_oacc_combined_directive): Set the + location of combined acc loops. + +2018-12-09 Thomas Schwinge + + * openmp.c (resolve_oacc_loop_blocks): Remove checking of OpenACC + loop clauses. + + PR fortran/88420 + * openmp.c (resolve_oacc_loop_blocks): Remove "Clause SEQ + conflicts with INDEPENDENT" diagnostic. + +2018-12-08 Steven G. Kargl + + PR fortran/88048 + * resolve.c (check_data_variable): Named constant cannot be a + data object. + +2018-12-08 Steven G. Kargl + + PR fortran/87945 + * decl.c (var_element): Inquiry parameters cannit be data objects. + +2018-12-08 Steven G. Kargl + + PR fortran/88025 + * expr.c (gfc_apply_init): Remove asserts that cannot trigger. + Check for a NULL pointer. + +2018-12-08 Steven G. Kargl + + PR fortran/88357 + * class.c (insert_component_ref): Check for NULL pointer and + previous error message issued. + * parse.c (parse_associate): Check for NULL pointer. + * resolve.c (resolve_assoc_var): Check for NULL pointer. + +2018-12-07 Jakub Jelinek + + PR fortran/88377 + * trans-openmp.c (gfc_omp_clause_default_ctor, + gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op, + gfc_omp_clause_linear_ctor, gfc_omp_clause_dtor): Only consider + GFC_DECL_GET_SCALAR_ALLOCATABLE vars as scalar allocatables if they + have pointer type. + +2018-12-03 Fritz Reese + Mark Eggleston + + PR fortran/87919 + * options.c (SET_FLAG, SET_BITFLAG, SET_BITFLAG2): New macros. + (set_dec_flags): Set/unset DEC and std flags according to value. + (post_dec_flags, set_init_local_zero): New functions. + (gfc_init_options): Use set_init_local_zero and post_dec_flags. + (gfc_handle_options) : Use + SET_BITFLAG. + : Use set_init_local_zero. + : Pass value to set_dec_flags. + : Remove. + +2018-11-30 Thomas Schwinge + + * gfortran.h (struct gfc_omp_clauses): Remove "wait". Adjust all + users. + + * openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait + clauses. + +2018-11-27 Martin Liska + + * decl.c (gfc_match_gcc_builtin): New function. + * gfortran.h (struct vect_builtin_tuple): New. + (gfc_adjust_builtins): Likewise. + * lang-specs.h (TARGET_F951_OPTIONS): New. + (F951_OPTIONS): Use it. + * lang.opt: Add new option -fpre-include. + * match.h (gfc_match_gcc_builtin): Declare new function. + * parse.c (decode_gcc_attribute): Handle builtin. + (parse_progunit): Call gfc_adjust_builtins. + * scanner.c (gfc_new_file): Load pre-included header file + when provided. + * trans-intrinsic.c (add_simd_flag_for_built_in): New. + (gfc_adjust_builtins): Likewise. + +2018-11-24 Paul Thomas + + PR fortran/88143 + * resolve.c (resolve_variable): Check for associate names with + NULL target. + +2018-11-23 Jakub Jelinek + + * lang.opt (fpad-source): New option. + * scanner.c (load_line): Don't pad fixed form lines if + !flag_pad_source. + * invoke.texi (-fno-pad-source): Document. + +2018-11-21 Jakub Jelinek + + * invoke.texi (-fdec-include): Document. + +2018-11-21 Jakub Jelinek + Mark Eggleston + + * lang.opt (fdec-include): New option. + * options.c (set_dec_flags): Set also flag_dec_include. + * scanner.c (include_line): Change return type from bool to int. + In fixed form allow spaces in between include keyword letters. + For -fdec-include, allow in fixed form 0 in column 6. With + -fdec-include return -1 if the parsed line is not full include + statement and it could be successfully completed on continuation + lines. + (include_stmt): New function. + (load_file): Adjust include_line caller. If it returns -1, keep + trying include_stmt until it stops returning -1 whenever adding + further line of input. + +2018-11-18 Thomas Koenig + + PR fortran/88073 + * frontend-passes.c (combine_array_constructor): Do not do + anything if in a WHERE statement. + +2018-11-18 Thomas Koenig + + PR fortran/70260 + * expr.c (gfc_check_assign): Reject assigning to an external + symbol. + (gfc_check_pointer_assign): Add suppress_type_test + argument. Insert line after if. A non-proc pointer can not point + to a constant. Only check types if suppress_type_test is false. + * gfortran.h (gfc_check_pointer_assign): Add optional + suppress_type_test argument. + * resolve.c (gfc_resolve_code): Move up gfc_check_pointer_assign + and give it the extra argument. + (resolve_fl_procedure): Set error on value for a function with + an inizializer. + +2018-11-15 David Malcolm + + PR other/19165 + * error.c (gfc_diagnostic_finalizer): Add diagnostic_t param. + +2018-11-13 David Malcolm + + * cpp.c: Replace "source_location" with "location_t". + * gfortran.h: Likewise. + +2018-11-08 Jakub Jelinek + + * trans-openmp.c (gfc_trans_omp_clauses): Use + OMP_CLAUSE_DEFAULTMAP_SET_KIND. + (gfc_trans_omp_atomic): Set OMP_ATOMIC_MEMORY_ORDER + rather than OMP_ATOMIC_SEQ_CST. + (gfc_trans_omp_taskgroup): Build OMP_TASKGROUP using + make_node instead of build1_loc. + * types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR, + BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT, + BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, + BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR, + BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, + BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New. + (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): Formatting fix. + +2018-11-02 Thomas Koenig + + PR fortran/46020 + * decl.c (verify_bind_c_sym): Remove unnecessary space + in error message. + +2018-11-01 Thomas Koenig + + PR fortran/87782 + * frontend-passes.c (constant_string_length): If there is a + substring with a length which cannot be reduced to a constant, + return NULL. + +2018-11-01 Paul Thomas + + PR fortran/40196 + * dependency.c (are_identical_variables): Return false if the + inquiry refs are not the same. + (gfc_ref_needs_temporary_p): Break on an inquiry ref. + * dump_parse_tree.c (show_ref): Show the inquiry ref type. + * expr.c (gfc_free_ref_list): Break on an inquiry ref. + (gfc_copy_ref): Copy the inquiry ref types. + (find_inquiry_ref): New function. + (simplify_const_ref, simplify_ref_chain): Call it. Add new arg + to simplify_ref_chain. + (gfc_simplify_expr): Use the new arg in call to + simplify_ref_chain. + (gfc_get_full_arrayspec_from_expr, gfc_is_coarray): Break on + inquiry ref. + (gfc_traverse_expr): Return true for inquiry ref. + * frontend-passes.c (gfc_expr_walker): Break on inquiry ref. + * gfortran.h : Add enums and union member in gfc_ref to + implement inquiry refs. + * intrinsic.c : Fix white nois. + * match.c (gfc_match_assignment): A constant lavlue is an + error. + * module.c : Add DECL_MIO_NAME for inquiry_type and the mstring + for inquiry_types. + (mio_ref): Handle inquiry refs. + * primary.c (is_inquiry_ref): New function. + (gfc_match_varspec): Handle inquiry refs calling new function. + (gfc_variable_attr): Detect inquiry ref for disambiguation + with components. + (caf_variable_attr): Treat inquiry and substring refs in the + same way. + * resolve.c (find_array_spec): ditto. + (gfc_resolve_substring_charlen): If there is neither a charlen + ref not an inquiry ref, return. + (resolve_ref): Handle inqiry refs as appropriate. + (resolve_allocate_expr): Entities with an inquiry ref cannot be + allocated. + * simplify.c (simplify_bound, simplify_cobound): Punt on + inquiry refs. + * trans-array.c (get_array_ctor_var_strlen): Break on inquiry + ref. + *trans-expr.c (conv_inquiry): New function. + (gfc_conv_variable): Retain the last typespec to pass to + conv_inquiry on detecting an inquiry ref. + +2018-11-01 Thomas Koenig + + PR fortran/46020 + * decl.c (verify_bind_c_sym): Improve error message. + +2018-11-01 Thomas Koenig + + PR fortran/54613 + * gfortran.texi (File format of unformatted sequential files): + Replace random comma with period. + * intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu. + (FINDLOC): Document. + (MAXLOC): Add refrence to FINDLOC. + (MINLOC): Likewise. + +2018-10-31 Nathan Sidwell + + * cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call. + +2018-10-31 Martin Liska + + * trans-decl.c (struct module_hasher): Call htab_hash_string + for s->name and not for s. + +2018-10-30 Thomas Koenig + + PR fortran/85896 + * simplify.c (simplify_min_max): Do not convert the type of the + return expression. + +2017-10-28 Thomas Koenig + + PR fortran/54613 + * gfortran.h (gfc_isym_id): Add GFC_ISYM_FINDLOC. + (gfc_check_f): Add f6fl field. + (gfc_simplify_f): Add f6 field. + (gfc_resolve_f): Likewise. + (gfc_type_letter): Add optional logical_equas_int flag. + * check.c (intrinsic_type_check): New function. + (gfc_check_findloc): New function. + * intrinsics.c (gfc_type_letter): If logical_equals_int is + set, act accordingly. + (add_sym_5ml): Reformat comment. + (add_sym_6fl): New function. + (add_functions): Add findloc. + (check_arglist): Add sixth argument, handle it. + (resolve_intrinsic): Likewise. + (check_specific): Handle findloc. + * intrinsic.h (gfc_check_findloc): Add prototype. + (gfc_simplify_findloc): Likewise. + (gfc_resolve_findloc): Likewise. + (MAX_INTRINSIC_ARGS): Adjust. + * iresolve.c (gfc_resolve_findloc): New function. + * simplify.c (gfc_simplify_minmaxloc): Make static. + (simplify_findloc_to_scalar): New function. + (simplify_findloc_nodim): New function. + (simplify_findloc_to_array): New function. + (gfc_simplify_findloc): New function. + (gfc_conv_intrinsic_findloc): New function. + (gfc_conv_intrinsic_function): Handle GFC_ISYM_FINDLOC. + (gfc_is_intrinsic_libcall): Likewise. + +2018-10-27 Thomas Koenig + + PR fortran/86907 + * frontend-passes.c (check_locus_code): Add information that + warning about missing location information points to an + inconsisten internal state. + (check_locus_expr): Likewise. + +2018-10-25 Jakub Jelinek + + PR fortran/87725 + * openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and + nonmonotonic modifiers regardless of if they have been parsed + already or if the opposite one has. Fix up check whether + comma after modifier should be parsed. + (resolve_omp_clauses): Diagnose schedule modifier restrictions. + +2018-10-23 Paul Thomas + + PR fortran/85603 + * frontend-passes.c (get_len_call): New function to generate a + call to intrinsic LEN. + (create_var): Use this to make length expressions for variable + rhs string lengths. + Clean up some white space issues. + +2018-10-21 Paul Thomas + + PR fortran/71880 + * trans-expr.c (gfc_trans_pointer_assignment): Set the string + length for array valued deferred length lhs. + +2018-10-18 Tobias Burnus + + PR fortran/87625 + * trans-array.c (gfc_is_reallocatable_lhs): Detect allocatable + polymorphic arrays. + +2018-10-18 Paul Thomas + + PR fortran/58618 + * trans-stmt.c (trans_associate_var): All strings that return + as pointer types can be assigned directly to the associate + name so remove 'attr' and the condition that uses it. + +2018-10-18 Paul Thomas + + PR fortran/58618 + * trans-decl.c (gfc_get_symbol_decl): Deal correctly with the + initialization with NULL() of a deferred length pointer. + +2018-10-17 Tobias Burnus + + PR fortran/87632 + * resolve.c (resolve_select_type): Use correct variable. + +2018-10-17 David Malcolm + + * Make-lang.in (selftest-fortran): New. + +2018-10-17 Paul Thomas + + PR fortran/56386 + PR fortran/58906 + PR fortran/77385 + PR fortran/80260 + PR fortran/82077 + * resolve.c (resolve_variable): Fix up expressions with array + associate names, where the parser did not detect that this is + array and there was no array part_ref in the expression. + +2018-10-16 Tobias Burnus + + PR fortran/67125 + * trans-array.c (gfc_array_init_size, gfc_array_allocate): + Rename argument e3_is_array_constr to e3_has_nodescriptor + and update comments. + * trans-stmt.c (gfc_trans_allocate): Also fix lower bound + to 1 for nonalloc/nonpointer func results/vars besides + array constructors. + +2018-10-16 Tobias Burnus + + PR fortran/87556 + * trans-stmt.c (form_team, change_team, sync_team): + Don't ignore argse.pre/argse.post. + +2018-10-15 Paul Thomas + Tobias Burnus + + PR fortran/87566 + * resolve.c (resolve_assoc_var): Add missing array spec for + class associate names. + (resolve_select_type): Handle case where last typed component + of the selector has a different type to the expression. + * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Replace + call to gfc_expr_to_initialize with call to gfc_copy_expr. + (gfc_conv_class_to_class): Guard assignment to 'len' field + against case where zero constant is supplied. + +2018-10-12 Tobias Burnus + + PR fortran/87597 + * expr.c (gfc_simplify_expr): Avoid simplifying + the 'array' argument to lbound/ubound/lcobound/ + ucobound. + +2018-10-12 Tobias Burnus + + PR fortran/58787 + * decl.c (get_proc_name): Return with error before + creating sym_tree. + +2018-10-11 Tobias Burnus + + Revert: + 2018-10-09 Tobias Burnus + + PR fortran/83522 + * resolve.c (resolve_ref): Reject nonscalar + substring references. + +2018-10-09 David Malcolm + + * cpp.c (gfc_cpp_init_0): Update for renamings. + (cb_cpp_error): Rename to... + (cb_cpp_diagnostic): ...this, converting level and reason to + enums. + +2018-10-09 Tobias Burnus + + PR fortran/83522 + * resolve.c (resolve_ref): Reject nonscalar + substring references. + +2018-10-09 Paul Thomas + + PR fortran/87151 + * trans-array.c (gfc_get_array_span): Deal with deferred char + array components having a TYPE_MAX_VALUE of zero. + (gfc_array_init_size): Use the hidden string length component + to build the descriptor dtype. + (gfc_array_allocate): Remove the erroneous replacement of the + charlen backend decl with a temporary. + (gfc_conv_expr_descriptor): Use the ss_info string length in + the case of deferred character components. + (gfc_alloc_allocatable_for_assignment): Actually compare the + string lengths for deferred characters. Make sure that kind > 1 + is handled correctly. Set the span field of the descriptor. + * trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid + comment. + + PR fortran/80931 + * trans-array.c (gfc_array_allocate): Set the span field for + variable length character arrays. + +2018-10-08 Cesar Philippidis + + * expr.c (gfc_check_pointer_assign): Demote "Assignment to + contiguous pointer from non-contiguous target" to a warning. + +2018-10-08 Paul Thomas + + PR fortran/86372 + * trans-stmt.c (trans_associate_var): Character associate names + with variable string length do not have to be deferred length + for the string length to be set, if variable. + +2018-10-06 Thomas Koenig + + PR fortran/86111 + * gfortran.h (enum arith): Add ARITH_WRONGCONCAT. + * arith.h (gfc_arith_error): Issue error for ARITH_WRONGCONCAT. + (gfc_arith_concat): If the types of op1 and op2 are not + character of if their kinds do not match, issue ARITH_WRONGCONCAT. + +2018-10-06 Paul Thomas + + PR fortran/83999 + * resolve.c (resolve_fl_procedure): Include class functions in + the test that elemental function results be scalar. + +2018-10-06 Thomas Koenig + + PR fortran/84640 + * simplify.c (gfc_simplify_cshift): Extend size of hs_ex and ss_ex + by one. Set extents one past the array boundaries to zero to avoid + warning with instrumented compiler. + (gfc_simplify_eoshift): Likewise, only for ss_ex. + +2018-10-05 Paul Thomas + + PR fortran/87487 + * trans-decl.c (gfc_get_symbol_decl): Make sure that deferred + character length pointer initializer has the right type to fix + problem with deferred_character_24.f90 on big endian. + +2018-10-03 Jeff Law + + * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c. + +2018-10-01 Paul Thomas + + PR fortran/65677 + * trans-expr.c (gfc_trans_assignment_1): Set the 'identical' + flag in the call to gfc_check_dependency. + +2018-09-30 Paul Thomas + + PR fortran/87359 + * trans-array.c (gfc_is_reallocatable_lhs): Correct the problem + introduced by r264358, which prevented components of associate + names from being reallocated on assignment. + +2018-09-30 Paul Thomas + + PR fortran/70752 + PR fortran/72709 + * trans-array.c (gfc_conv_scalarized_array_ref): If this is a + deferred type and the info->descriptor is present, use the + info->descriptor + (gfc_conv_array_ref): Is the se expr is a descriptor type, pass + it as 'decl' rather than the symbol backend_decl. + (gfc_array_allocate): If the se string_length is a component + reference, fix it and use it for the expression string length + if the latter is not a variable type. If it is a variable do + an assignment. Make use of component ref string lengths to set + the descriptor 'span'. + (gfc_conv_expr_descriptor): For pointer assignment, do not set + the span field if gfc_get_array_span returns zero. + * trans.c (get_array_span): If the upper bound a character type + is zero, use the descriptor span if available. + +2018-09-30 Paul Thomas + + PR fortran/70149 + * trans-decl.c (gfc_get_symbol_decl): A deferred character + length pointer that is initialized needs the string length to + be initialized as well. + +2018-09-29 Paul Thomas + + PR fortran/65677 + * trans-expr.c (gfc_trans_assignment_1): If there is dependency + fix the rse stringlength. + +2018-09-25 Martin Liska + + PR fortran/87394 + * decl.c (add_hidden_procptr_result): Simplify condition + as we are in branch witch 'case1 || case2'. + +2018-09-25 Martin Liska + + * trans.c (remove_suffix): Remove + unused function. + +2018-09-24 Thomas Koenig + + PR fortran/87397 + * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) + for variables in an associate statement. + +2018-09-24 Bernhard Reuther-Fischer + Cesar Philippidis + + * openmp.c (resolve_oacc_loop_blocks): + +2018-09-23 Thomas Koenig + + PR fortran/87397 + * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) + for variables having the dimension attribute. + +2018-09-23 Janne Blomqvist + + * trans-expr.c (gfc_caf_get_image_index): Do array index + calculations in gfc_array_index_type. + * trans-intrinsic.c (conv_intrinsic_event_query): Likewise. + * trans-stmt.c (gfc_trans_lock_unlock): Likewise. + (gfc_trans_event_post_wait): Likewise. + +2018-09-23 Thomas Koenig + + PR fortran/87395 + * gfc_conv_procedure_call: Reformat comments slightly. Do not add + clobber on INTENT(OUT) for saved variables. + +2018-09-22 Thomas Koenig + + PR fortran/41453 + * trans.h (gfc_conv_expr_reference): Add optional argument + add_clobber to prototype. + (gfc_conv_procedure_call): Set add_clobber argument to + gfc_conv_procedure_reference to true for scalar, INTENT(OUT), + non-pointer, non-allocatable, non-dummy variables whose type + is neither BT_CHARACTER, BT_DERIVED or BT_CLASS, but only if + the procedure is not elemental. + * trans-expr.c (gfc_conv_procedure_reference): Add clobber + statement before call if add_clobber is set. + +2018-09-22 Paul Thomas + + PR fortran/85603 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Test + the charlen backend_decl before using the VAR_P macro. + +2018-09-21 Paul Thomas + + PR fortran/77325 + * trans-array.c (gfc_alloc_allocatable_for_assignment): If the + rhs has a charlen expression, convert that and use it. + * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the + assignment of deferred character array vars to a realocatable + lhs should not be added to the exterior block since vector + indices, for example, generate temporaries indexed within the + loop. + +2018-09-21 Paul Thomas + + PR fortran/87359 + * trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc + components if must_finalize is set for expr3. + +2018-09-21 Andrew Stubbs + Kwok Cheung Yeung + + * trans-expr.c (gfc_trans_structure_assign): Ensure that the first + argument of a call to _gfortran_caf_register is of size_type_node. + * trans-intrinsic.c (conv_intrinsic_event_query): Convert computed + index to a size_type_node type. + * trans-stmt.c (gfc_trans_event_post_wait): Likewise. + +2018-09-20 Allan Sandfeld Jensen + + * gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib. + +2018-09-20 Janus Weil + + * gfortran.h (gfc_str_startswith): New macro. + * decl.c (variable_decl, gfc_match_end): Use it. + * iresolve.c (is_trig_resolved): Ditto. + * module.c (load_omp_udrs, read_module): Ditto. + * options.c (gfc_handle_runtime_check_option): Ditto. + * primary.c (match_arg_list_function): Ditto. + * trans-decl.c (gfc_get_symbol_decl): Ditto. + * trans-expr.c (gfc_conv_procedure_call): Ditto. + * interface.c (dtio_op): Replace strncmp by strcmp. + * resolve.c (resolve_actual_arglist, resolve_function): Ditto. + * trans-expr.c (conv_arglist_function): Ditto. + * trans-intrinsic.c (gfc_conv_ieee_arithmetic_function): Replace macro + STARTS_WITH by gfc_str_startswith. + +2018-09-20 Cesar Philippidis + + * dump-parse-tree.c (show_omp_clauses): Add missing omp list_types + and reorder the switch cases to match the enum in gfortran.h. + +2018-09-19 Paul Thomas + + PR fortran/84109 + * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the + assignment of deferred character intrinsic elemental function + results to a realocatable lhs must not be added to the exterior + block if they are array valued but must go to the loop body. + +2018-09-18 Thomas Koenig + + PR fortran/29550 + * gfortran.h (gfc_expr): Add external_blas flag. + * frontend-passes.c (matrix_case): Add case A2TB2T. + (optimize_namespace): Handle flag_external_blas by + calling call_external_blas. + (get_array_inq_function): Add argument okind. If + it is nonzero, use it as the kind of argument + to be used. + (inline_limit_check): Remove m_case argument, add + limit argument instead. Remove assert about m_case. + Set the limit for inlining from the limit argument. + (matmul_lhs_realloc): Handle case A2TB2T. + (inline_matmul_assign): Handle inline limit for other cases with + two rank-two matrices. Remove no-op calls to inline_limit_check. + (call_external_blas): New function. + * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add + argument to external BLAS if external_blas is already set. + +2018-09-18 Paul Thomas + + PR fortran/87239 + * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the + assignment of deferred character elemental function results to + a realocatable lhs must not be added to the exterior block but + must go to the loop body. + +2018-09-18 Paul Thomas + + PR fortran/87336 + * trans-array.c (gfc_get_array_span): Try to get the element + length of incomplete types. Return NULL_TREE otherwise. + (gfc_conv_expr_descriptor): Only set the 'span' field if the + above does not return NULL_TREE. Set 'span' field if possible + for all new descriptors. + +2018-09-17 Paul Thomas + + PR fortran/64120 + * trans-decl.c (gfc_get_symbol_decl): Flag allocatable, scalar + characters with a variable length expression for deferred init. + (gfc_trans_deferred_vars): Perform the assignment for these + symbols by calling gfc_conv_string_length. + +2018-09-17 Paul Thomas + + PR fortran/85954 + * resolve.c (resolve_assoc_var): If the target expression is a + deferred charlen dummy and the associate name shares the + charlen, generate a new one. Make sure that new charlens are in + the namespace list so that they get cleaned up. + * trans-array.c (gfc_is_reallocatable_lhs): Associate names are + not reallocatable. + * trans-decl.c (gfc_get_symbol_decl): Put deferred character + length dummy and result arrays on the deferred initialization + list so that the variable length arrays can be correctly dealt + with. + * trans-expr.c (gfc_conv_string_length): Return if 'expr' is + NULL rather than ICEing.. + +2018-09-16 Janus Weil + + PR fortran/86484 + PR fortran/84543 + * match.c (gfc_match_assignment): For a polymorphic assignment, + make sure that the vtab for the rhs type is generated. + +2018-09-16 Thomas Koenig + + PR fortran/37802 + * frontend-passes.c (B_ERROR): New macro for matmul bounds + checking error messages. + (C_ERROR): Likewise. + (inline_matmul_assign): Reorganize bounds checking, use B_ERROR + and C_ERROR macros. + +2018-09-13 Bernd Edlinger + + * trans-array.c (gfc_conv_array_initializer): Remove excess precision + from overlength string initializers. + +2018-09-12 Paul Thomas + + PR fortran/87284 + * trans-expr.c (gfc_trans_class_init_assign): Access to + to array elements of the dynamic type requires that the array + reference be added to the class expression and not the _data + component, unlike scalar expressions. + +2018-09-11 Janus Weil + + PR fortran/87172 + * resolve.c (resolve_fl_derived): If a type has the 'use_assoc' + attribute, then it was declared in another module, so there should be + no error that it has not been declared. + +2018-09-11 Paul Thomas + + PR fortran/87277 + * expr.c (is_subref_array): Add the check of dimensionality for + class, dummy, pointer arrays. + +2018-09-11 Janus Weil + + PR fortran/86830 + * expr.c (gfc_is_simply_contiguous): Handle type-bound procedure calls + with non-polymorphic objects. + +2018-09-10 Janus Weil + + PR fortran/85395 + * decl.c (match_binding_attributes): Use correct default accessibility + for procedure pointer components. + +2018-09-03 Jerry DeLisle + + * simplify.c (gfc_simplify_modulo): Re-arrange code to test whether + 'P' is zero and issue an error if it is. + +2018-08-31 Paul Thomas + + PR fortran/86328 + PR fortran/86760 + * trans-array.c (gfc_conv_scalarized_array_ref): Do not fix + info->descriptor but pass it directly to gfc_build_array_ref. + (gfc_conv_array_ref): Likewise for se->expr. + * trans.c (gfc_build_array_ref): If 'decl' is a COMPONENT_REF + obtain the span field directly from it. + +2017-08-28 Paul Thomas + + PR fortran/80477 + * trans-expr.c (gfc_conv_procedure_call): Allocatable class + scalar results being passed to a derived type formal argument + are finalized if possible. Otherwise, rely on existing code for + deallocation. Make the deallocation of allocatable result + components conditional on finalization not taking place. Make + the freeing of data components after finalization conditional + on the data being NULL. + (gfc_trans_arrayfunc_assign): Change the gcc_assert to a + condition to return NULL_TREE. + (gfc_trans_assignment_1): If the assignment is class to class + and the rhs expression must be finalized but the assignment + is not marked as a polymorphic assignment, use the vptr copy + function instead of gfc_trans_scalar_assign. + + PR fortran/86481 + * trans-expr.c (gfc_conv_expr_reference): Do not add the post + block to the pre block if the expression is to be finalized. + * trans-stmt.c (gfc_trans_allocate): If the expr3 must be + finalized, load the post block into a finalization block and + add it right at the end of the allocation block. + +2018-08-27 David Malcolm + + PR 87091 + * error.c (gfc_format_decoder): Update for conversion of + show_caret_p to a tri-state. + +2018-08-25 Janus Weil + + PR fortran/86545 + * resolve.c (resolve_transfer): Correctly determine typespec for + generic function calls, in order to throw a proper error. + +2018-08-24 Thomas Koenig + + PR fortran/86837 + * frontend-passes.c (var_in_expr_callback): New function. + (var_in_expr): New function. + (traverse_io_block): Use var_in_expr instead of + gfc_check_dependency for checking if the variable depends on the + previous interators. + +2018-08-23 Janne Blomqvist + + * trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Delete + HONOR_SIGNED_ZEROS checks. + +2018-08-23 Paul Thomas + + PR fortran/86863 + * resolve.c (resolve_typebound_call): If the TBP is not marked + as a subroutine, check the specific symbol. + +2018-08-22 Thomas Koenig + + * gfortran.texi: Mention that asynchronous I/O does + not work on systems which lack condition variables, such + as AIX. + +2018-08-22 Janus Weil + + PR fortran/86935 + * match.c (gfc_match_associate): Improve diagnostics for the ASSOCIATE + statement. + +2018-08-22 Andrew Benson + + * module.c (load_generic_interfaces): Move call to find_symbol() + so that only occurs if actually needed. + +2018-08-22 Janus Weil + + PR fortran/86888 + * decl.c (gfc_match_data_decl): Allow allocatable components of + indirectly recursive type. + * resolve.c (resolve_component): Remove two errors messages ... + (resolve_fl_derived): ... and replace them by a new one. + +2018-08-21 Janne Blomqvist + + * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use + MAX_EXPR/MIN_EXPR unconditionally for real arguments. + * gfortran.texi (Compiler Characteristics): Document MAX/MIN + behavior wrt NaN. + +2018-08-21 Nicolas Koenig + Thomas Koenig + + PR fortran/25829 + * gfortran.texi: Add description of asynchronous I/O. + * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables + as volatile. + * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to + st_wait_async and change argument spec from ".X" to ".w". + (gfc_trans_wait): Pass ID argument via reference. + +2018-08-16 Nathan Sidwell + + * cpp.c (dump_macro): Use cpp_user_macro_p. + +2018-08-14 Janus Weil + + PR fortran/86116 + * interface.c (compare_type): Remove a CLASS/TYPE check. + (compare_type_characteristics): New function that behaves like the old + 'compare_type'. + (gfc_check_dummy_characteristics, gfc_check_result_characteristics): + Call 'compare_type_characteristics' instead of 'compare_type'. + +2018-08-12 Paul Thomas + + PR fortran/66679 + * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Class array + elements are returned as references to the data element. Get + the class expression by stripping back the references. Use this + for the element size. + +2018-08-12 Paul Thomas + + PR fortran/86906 + * resolve.c (resolve_fl_variable_derived): Check if the derived + type is use associated before checking for the host association + error. + +2018-08-10 Janus Weil + + PR fortran/57160 + * invoke.texi (frontend-optimize): Mention short-circuiting. + * options.c (gfc_post_options): Disable -ffrontend-optimize with -Og. + * resolve.c (resolve_operator): Warn about short-circuiting only with + -ffrontend-optimize. + * trans-expr.c (gfc_conv_expr_op): Use short-circuiting operators only + with -ffrontend-optimize. Without that flag, make sure that both + operands are evaluated. + +2018-08-08 Nathan Sidwell + + * cpp.c (cb_file_change): Use linemap_included_from. + +2018-08-07 Cesar Philippidis + + * trans-stmt.h: Remove stale reference to trans-openacc.c. + +2018-08-04 Janus Weil + + PR fortran/45521 + * interface.c (gfc_compare_interfaces): Apply additional + distinguishability criteria of F08 to operator interfaces. + +2018-07-31 Andre Vieira + + Revert 'AsyncI/O patch committed' + 2018-07-25 Nicolas Koenig + Thomas Koenig + + PR fortran/25829 + * gfortran.texi: Add description of asynchronous I/O. + * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables + as volatile. + * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to + st_wait_async and change argument spec from ".X" to ".w". + (gfc_trans_wait): Pass ID argument via reference. + +2018-07-25 Nicolas Koenig + Thomas Koenig + + PR fortran/25829 + * gfortran.texi: Add description of asynchronous I/O. + * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables + as volatile. + * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to + st_wait_async and change argument spec from ".X" to ".w". + (gfc_trans_wait): Pass ID argument via reference. + +2018-07-20 Martin Sebor + + PR middle-end/82063 + * gfortran.h (gfc_handle_option): Change function argument + to HOST_WIDE_INT. + * options.c (gfc_handle_option): Same. + +2018-07-20 Andrew Benson + + * gfortran.h (gfc_symbol): Add pointer to next derived type. + (gfc_dt_list, gfc_get_dt_list): Remove. + (gfc_namespace): Replace gfc_dt_list with gfc_symbol. + * parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with + simple nullification of gfc_derived_types. + * resolve.c (resolve_global_procedure): Replace gfc_dt_list with + gfc_symbol. + (add_dt_to_dt_list): Change derived type linked list insertion to + utilize dt_next pointers in gfc_symbol. + * symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2) + (get_iso_c_binding_dt, generate_isocbinding_symbol): Remove + gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type + linked list search/insertion to utilize dt_next pointers in gfc_symbol. + * trans-types.c (gfc_get_derived_type): Change derived type linked + list search to utilize dt_next pointers in gfc_symbol. + +2018-07-19 Kyrylo Tkachov + + * trans-intrinsic.c: (gfc_conv_intrinsic_minmax): Emit MIN_MAX_EXPR + or IFN_FMIN/FMAX sequence to calculate the min/max when possible. + +2018-07-18 Janus Weil + Thomas Koenig + + PR fortran/85599 + * dump-parse-tree.c (show_attr): Add handling of implicit_pure. + * frontend-passes.c (do_warn_function_elimination): Do not warn for + pure functions. + * gfortran.h: Add prototypes for gfc_pure_function and + gfc_implicit_pure_function. + * gfortran.texi: Add chapter on evaluation of logical expressions. + * invoke.texi: Mention that -Wfunction-elimination is implied + by -Wextra. + * lang.opt: Make -Wextra imply -Wfunction-elimination. + * resolve.c (pure_function): Rename to gfc_pure_function. + (gfc_implicit_pure_function): New function. + (check_pure_function): Use it here. + (impure_function_callback): New function. + (resolve_operator): Call it via gfc_expr_walker. + +2018-07-16 Fritz Reese + + PR fortran/83184 + * decl.c (match_old_style_init): Initialize locus of variable expr when + creating a data variable. + (match_clist_expr): Verify array is explicit shape/size before + attempting to allocate constant array constructor. + +2018-07-16 Fritz Reese + + PR fortran/86417 + * module.c (mio_component): Set component->loc when loading from module. + +2018-07-10 Jakub Jelinek + + PR fortran/86421 + * module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and + _UVAL suffixes. + (mio_omp_declare_simd): Save and restore ref, val and uval modifiers + on linear clauses. Initialize n->where to gfc_current_locus. + +2018-07-05 Paul Thomas + + PR fortran/86408 + * resolve.c.c (resolve_contained_fntype): Reference to C418 is + in F2008 and not F2003. + (resolve_function): Ditto in error message. Also, exclude + deferred character length results from the error. + +2018-07-05 Fritz Reese + + PR fortran/83183 + PR fortran/86325 + * expr.c (class_allocatable, class_pointer, comp_allocatable, + comp_pointer): New helpers. + (component_initializer): Generate EXPR_NULL for allocatable or pointer + components. Do not generate initializers for components within BT_CLASS. + Do not assign to comp->initializer. + (gfc_generate_initializer): Use new helpers; move code to generate + EXPR_NULL for class allocatable components into component_initializer(). + +2018-07-04 Jerry DeLisle + + PR fortran/82009 + * trans-decl.c (gfc_process_block_locals): Delete assert and set + saved_local_decls = NULL_TREE. + +2018-07-02 Richard Biener + + PR lto/86321 + * trans-types.c (gfc_get_array_type_bounds): Unshare TYPE_FIELDs + for the distinct type copy. + +2018-07-02 Paul Thomas + + PR fortran/82969 + PR fortran/86242 + * trans-array.c (structure_alloc_comps): Do not explicitly copy + procedure pointer components. + +2018-07-02 Paul Thomas + + PR fortran/45305 + * expr.c : Add a prototype for scalarize_intrinsic_call. + (gfc_simplify_expr): Use scalarize_intrinsic_call for elemental + intrinsic function calls. + (scalarize_intrinsic_call): Add 'init_flag' argument. Check if + the expression or any of the actual argument expressions are + NULL. Before calling gfc_check_init_expr, check 'init_flag'. + Only simplify the scalarized expressions if there are no errors + on the stack. + (gfc_check_init_expr): Set 'init_flag' true in the call to + scalarize_intrinsic_call. + +2018-06-28 Fritz Reese + + PR fortran/82865 + * decl.c (gfc_match_type): Refactor and check for PDT declarations. + +2018-06-28 Martin Liska + + * gfortranspec.c: Include opt-suggestions.h. + +2018-06-25 Fritz Reese + + PR fortran/82972 + PR fortran/83088 + PR fortran/85851 + * expr.c (component_initializer): Assign init expr to c->initializer. + (generate_isocbinding_initializer): New. + (gfc_generate_initializer): Call generate_isocbinding_initializer to + generate initializers for c_ptr and c_funptr with -finit-derived. + +2018-06-23 Jerry DeLisle + + PR fortran/85983 + * interface.c (check_dtio_interface1): Delete assert. + +2018-06-22 Paul Thomas + Rainer Orth + + PR fortran/86281 + * resolve.c (resolve_contained_fntype): Check for the charlen + before testing the length. + +2018-06-21 Paul Thomas + + PR fortran/49630 + * resolve.c (resolve_contained_fntype): Change standard ref. + from F95 to F2003: C418. Correct a spelling error in a comment. + It is an error for an abstract interface to have an assumed + character length result. + * trans-expr.c (gfc_conv_procedure_call): Likewise change the + standard reference. + +2018-06-21 Paul Thomas + + PR fortran/83118 + * resolve.c (resolve_ordinary_assign): Force the creation of a + vtable for assignment of non-polymorphic expressions to an + unlimited polymorphic object. + * trans-array.c (gfc_alloc_allocatable_for_assignment): Use the + size of the rhs type for such assignments. Set the dtype, _len + and vptrs appropriately. + * trans-expr.c (gfc_trans_assignment): Force the use of the + _copy function for these assignments. + +2018-06-20 Chung-Lin Tang + Thomas Schwinge + Cesar Philippidis + + * gfortran.h (gfc_omp_clauses): Add unsigned if_present, finalize + bitfields. + * openmp.c (enum omp_mask2): Remove OMP_CLAUSE_PRESENT_OR_*. Add + OMP_CLAUSE_{IF_PRESENT,FINALIZE}. + (gfc_match_omp_clauses): Update handling of copy, copyin, copyout, + create, deviceptr, present_of_*. Add support for finalize and + if_present. + (OACC_PARALLEL_CLAUSES): Remove PRESENT_OR_* clauses. + (OACC_KERNELS_CLAUSES): Likewise. + (OACC_DATA_CLAUSES): Likewise. + (OACC_DECLARE_CLAUSES): Likewise. + (OACC_UPDATE_CLAUSES): Add IF_PRESENT clause. + (OACC_ENTER_DATA_CLAUSES): Remove PRESENT_OR_* clauses. + (OACC_EXIT_DATA_CLAUSES): Add FINALIZE clause. + (gfc_match_oacc_declare): Update to OpenACC 2.5 semantics. + * trans-openmp.c (gfc_trans_omp_clauses): Add support for IF_PRESENT + and FINALIZE. + +2018-06-18 Eric Botcazou + + * trans-decl.c (gfc_get_fake_result_decl): Revert latest change. + +2018-06-17 Eric Botcazou + + * trans-decl.c (nonlocal_dummy_decl_pset): Delete. + (nonlocal_dummy_decls): Likewise. + (gfc_nonlocal_dummy_array_decl): Likewise. + (gfc_get_symbol_decl): Do not call gfc_nonlocal_dummy_array_decl. + (gfc_get_fake_result_decl): Do not generate a new DECL if simply + reusing the result of a recursive call. + (gfc_generate_function_code): Do not create, insert and destroy + nonlocal_dummy_decls. + +2018-06-13 Steven G. Kargl + + PR fortran/86110 + * array.c (gfc_resolve_character_array_constructor): Avoid NULL + pointer dereference. + +2018-06-13 Cesar Philippidis + + PR fortran/85703 + * parse.c (decode_oacc_directive): Set gfc_matching_function + to false. + (decode_omp_directive): Likewise. + +2018-06-13 Cesar Philippidis + + PR fortran/85702 + * openmp.c (gfc_match_oacc_wait): Use %C to report error location. + +2018-06-12 David Malcolm + + PR other/69968 + * misc.c (gfc_closest_fuzzy_match): Update for renaming of + levenshtein_distance to get_edit_distance. + +2018-06-12 Steven G. Kargl + + PR fortran/44491 + * expr.c (gfc_check_assign): Select non-NULL locus. + +2018-06-11 Janus Weil + + PR fortran/45521 + * interface.c (compare_ptr_alloc): New function. + (generic_correspondence): Call it. + +2018-06-10 Thomas Koenig + + * gfortran.h (gfc_expr): Add no_bounds_check field. + * frontend-passes.c (get_array_inq_function): Set no_bounds_check + on function and function argument. + (inline_matmul_assign): Set no_bounds_check on zero expression + and on lhs of zero expression. + Also handle A1B2 case if realloc on assigment is active. + * trans-array.c (gfc_conv_array_ref): Don't do range checking + if expr has no_bounds_check set. + (gfc_conv_expr_descriptor): Set no_bounds_check on ss if expr + has it set. + * trans-expr.c (gfc_trans_assignment_1): Set no_bounds_check + on lss and lss if the corresponding expressions have it set. + +2018-06-10 Dominique d'Humieres + + PR fortran/79854 + * trans-const.c: Remove include "diagnostic-core.h". + (gfc_conv_constant_to_tree): Replace fatal_error with gcc_unreachable. + +2018-06-10 Janus Weil + + PR fortran/85088 + * decl.c (match_attr_spec): Synchronize the DECL_* enum values with the + INTENT_* values from the enum 'sym_intent'. Call 'match_intent_spec' + and remove a TODO note. + * gfortran.h: Add a comment to sym_intent. + +2018-06-09 Steven G. Kargl + + PR fortran/38351 + * resolve.c (resolve_operator): Provide better error message for + derived type entity used in an binary intrinsic numeric operator. + +2018-06-09 Steven G. Kargl + + PR fortran/85138 + PR fortran/85996 + PR fortran/86051 + * decl.c (gfc_match_char_spec): Use private namespace in attempt to + reduce a charlen to a constant. + +2018-06-09 Steven G. Kargl + + PR fortran/78278 + * data.c (gfc_assign_data_value): Re-arrange code to allow for + an error for double initialization of CHARACTER entities. + +2018-06-09 Steven G. Kargl + + PR fortran/63514 + * symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588. + +2018-06-08 Thomas Koenig + + PR fortran/85631 + * trans.h (gfc_ss): Add field no_bounds_check. + * trans-array.c (gfc_conv_ss_startstride): If flag_realloc_lhs and + ss->no_bounds_check is set, do not use runtime checks. + * trans-expr.c (gfc_trans_assignment_1): Set lss->no_bounds_check + for reallocatable lhs. + +2018-06-08 Steven G. Kargl + + PR fortran/86059 + * array.c (match_array_cons_element): NULL() cannot be in an + array constructor. + +2018-06-08 Steven G. Kargl + + PR fortran/78571 + * data.c (create_character_initializer): Return early if type is + incompatible with CHARACTER. + +2018-06-07 Steven G. Kargl + + PR fortran/86045 + * simplify.c (gfc_simplify_mod): Re-arrange code to test whether + 'P' is zero and issue an error if it is. + +2018-06-06 Thomas Koenig + + PR fortran/85641 + * frontend-passes.c (is_fe_temp): Add prototype. + (realloc_string_callback): Early return for frontend-generated + temporary. + +2018-06-05 Cesar Philippidis + + PR fortran/85701 + + * openmp.c (gfc_resolve_oacc_declare): Error on functions and + subroutine data clause arguments. + +2018-06-04 Steven G. Kargl + + PR fortran/85981 + * resolve.c (resolve_allocate_deallocate): Check errmsg is default + character kind. + +2018-06-03 Paul Thomas + + PR fortran/36497 + * decl.c (variable_decl): Use gfc_add_type for cray pointees. + +2018-06-01 Steven G. Kargl + + PR fortran/63570 + * check.c (gfc_check_random_init): New function. Check arguments of + RANDOM_INIT. + * gfortran.h (GFC_ISYM_RANDOM_INIT): New enum token. + * intrinsic.c (add_subroutines): Add RANDOM_INIT to list of + subroutines. + (gfc_check_intrinsic_standard): Introduce Fortran 2018 check. + * intrinsic.h: Add prototypes for gfc_check_random_init and + gfc_resolve_random_init + * intrinsic.texi: Document new intrinsic subprogram. + * iresolve.c (gfc_resolve_random_init): Resolve routine name. + * trans-decl.c: Declare gfor_fndecl_random_init + * trans-intrinsic.c (conv_intrinsic_random_init): New function. + Translate call to RANDOM_INIT. + (gfc_conv_intrinsic_subroutine): Call it. + * trans.h: Declare gfor_fndecl_random_init + +2018-05-27 Steven G. Kargl + + * decl.c (match_data_constant): Fortran 2018 allows pointer + initialization in a data statement. + +2018-05-25 Janus Weil + + PR fortran/85839 + * match.c (gfc_match_block_data): Call gfc_notify_std to warn about + an obsolescent feature in Fortran 2018. + (gfc_match_equivalence): Ditto. + * resolve.c (resolve_common_blocks): Ditto. + (gfc_resolve_forall): Ditto. + * symbol.c (gfc_define_st_label): Ditto. + +2018-05-24 Steven G. Kargl + + PR fortran/85543 + * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL + pointer dereference. + +2018-05-24 Steven G. Kargl + + PR fortran/85780 + * resolve.c (resolve_fl_procedure): Avoid NULL dereference. + +2018-05-24 Steven G. Kargl + + PR fortran/85779 + * decl.c (gfc_match_derived_decl): Fix NULL point dereference. + +2018-05-24 Steven G. Kargl + + PR fortran/85895 + * resolve.c (resolve_sync): Resolve expression before checking for + an error. + +2018-05-22 Janus Weil + + PR fortran/85841 + * libgfortran.h: Remove the macros GFC_STD_F2008_TS and + GFC_STD_OPT_F08TS. + * error.c (notify_std_msg): Remove GFC_STD_F2008_TS. + * options.c (set_default_std_flags): Ditto. + (gfc_handle_option): Make -std=f2008ts an alias for -std=f2018. + * array.c (gfc_match_array_spec): Replace GFC_STD_F2008_TS by + GFC_STD_F2018. + * check.c (gfc_check_atomic, gfc_check_event_query, + gfc_check_c_f_pointer, gfc_check_c_f_procpointer, gfc_check_c_funloc, + gfc_check_c_loc, gfc_check_num_images, gfc_check_this_image): Ditto. + * decl.c (gfc_verify_c_interop_param, gfc_match_decl_type_spec): Ditto. + * intrinsic.c (add_functions, add_subroutines, + gfc_check_intrinsic_standard): Ditto. + * iso-c-binding.def: Ditto. + * iso-fortran-env.def: Ditto. + * match.c (gfc_match_event_post, gfc_match_event_wait, + gfc_match_fail_image, gfc_match_form_team, gfc_match_change_team, + gfc_match_end_team, gfc_match_sync_team): Ditto. + * gfortran.texi: Remove mention of -std=f2008ts. + Move TSs into F2018 section. + * invoke.texi: Update documentation of -std=f2008ts. + +2018-05-21 Janus Weil + + PR fortran/85841 + * libgfortran.h: New macros GFC_STD_OPT_*. + * error.c (notify_std_msg): New function. + (gfc_notify_std): Adjust such that it can handle combinations of + GFC_STD_* flags in the 'std' argument, not just a single one. + * match.c (match_arithmetic_if, gfc_match_if): Reject arithmetic if + in Fortran 2018. + (gfc_match_stopcode): Use GFC_STD_OPT_* macros. + * options.c (set_default_std_flags): Warn for F2018 deleted features + by default. + (gfc_handle_option): F2018 deleted features are allowed in earlier + standards. + * symbol.c (gfc_define_st_label, gfc_reference_st_label): Reject + nonblock do constructs in Fortran 2018. + +2018-05-20 Paul Thomas + + PR fortran/80657 + * resolve.c (flag_fn_result_spec): Use the 'sym' argument to + test for self refs to the function result in the character len + expression. If a self reference is found, emit an error and + return true. + (resolve_fntype): Use the function symbol in the calls to the + above. + +2018-05-20 Paul Thomas + + PR fortran/49636 + * trans-array.c (gfc_get_array_span): Renamed from + 'get_array_span'. + (gfc_conv_expr_descriptor): Change references to above. + * trans-array.h : Add prototype for 'gfc_get_array_span'. + * trans-intrinsic.c (gfc_conv_associated): Add pre and post + blocks for 'arg1'. + * trans-stmt.c (trans_associate_var): If the associate name is + a subref array pointer, use gfc_get_array_span for the span. + +2018-05-20 Paul Thomas + + PR fortran/82275 + * match.c (gfc_match_type_spec): Go through the array ref and + decrement 'rank' for every dimension that is an element. + +2018-05-19 Paul Thomas + + PR fortran/82923 + PR fortran/66694 + PR fortran/82617 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Set the + charlen backend_decl of the rhs expr to ss->info->string_length + so that the value in the current scope is used. + +2018-05-13 Steven G. Kargl + + PR fortran/63529 + * gfortran.texi: Clarify documentation for Cray pointer and + assumed-sized array. + +2018-05-13 Paul Thomas + + PR fortran/85742 + * trans-types.c (gfc_get_dtype_rank_type): Reorder evaluation + of 'size'. If the element type is a pointer use the size of the + TREE_TYPE of the type, unless it is VOID_TYPE. In this latter + case, set the size to zero. + +2018-05-13 Steven G. Kargl + + * gfortran.h: Remove prototype. + * symbol.c (gfc_new_undo_checkpoint): Remove unused function. + +2018-05-11 Steven G. Kargl + + PR fortran/85542 + * expr.c (check_inquiry): Avoid NULL pointer dereference. + +2018-05-10 Steven G. Kargl + + PR fortran/85687 + * check.c (gfc_check_rank): Check that the argument is a data object. + +2018-05-10 Steven G. Kargl + + PR fortran/85521 + * array.c (gfc_resolve_character_array_constructor): Substrings + with upper bound smaller than lower bound are zero length strings. + +2018-05-10 Steven G. Kargl + + PR fortran/70870 + * data.c (gfc_assign_data_value): Check that a data object does + not also have default initialization. + +2018-05-10 Marek Polacek + + PR fortran/85735 + * options.c (gfc_post_options): Set main_input_filename. + +2018-05-10 Thomas Koenig + + PR fortran/54613 + * intrinsic.texi: Document BACK for MINLOC and MAXLOC. + +2018-05-10 Paul Thomas + + PR fortran/68846 + PR fortran/70864 + * resolve.c (get_temp_from_expr): The temporary must not have + dummy or intent attributes. + +2018-05-08 Thomas Koenig + + PR fortran/54613 + * check.c (gfc_check_minmaxloc): Remove error for BACK not being + implemented. Use gfc_logical_4_kind for BACK. + * simplify.c (min_max_choose): Add optional argument back_val. + Handle it. + (simplify_minmaxloc_to_scalar): Add argument back_val. Pass + back_val to min_max_choose. + (simplify_minmaxloc_to_nodim): Likewise. + (simplify_minmaxloc_to_array): Likewise. + (gfc_simplify_minmaxloc): Add argument back, handle it. + Pass back_val to specific simplification functions. + (gfc_simplify_minloc): Remove ATTRIBUTE_UNUSED from argument back, + pass it on to gfc_simplify_minmaxloc. + (gfc_simplify_maxloc): Likewise. + * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Adjust + comment. If BACK is true, use greater or equal (or lesser or + equal) insteal of greater (or lesser). Mark the condition of + having found a value which exceeds the limit as unlikely. + +2018-05-07 Jeff Law + + * scanner.c (preprocessor_line): Call linemap_add after a line + directive that changes the current filename. + +2018-05-06 Andre Vehreschild + + PR fortran/85507 + * dependency.c (gfc_dep_resolver): Revert looking at coarray dimension + introduced by r259385. + * trans-intrinsic.c (conv_caf_send): Always report a dependency for + same variables in coarray assignments. + +2018-05-02 Tom de Vries + + PR libgomp/82428 + * f95-lang.c (DEF_GOACC_BUILTIN_ONLY): Define. + +2018-04-24 Steven G. Kargl + + PR fortran/85520 + * decl.c (gfc_match_char_spec): Check for negative length and set to 0. + +2018-04-14 Andre Vehreschild + + PR fortran/81773 + PR fortran/83606 + * dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored + during dependency computation. They define no data dependency. + * trans-array.c (conv_array_index_offset): The stride can not be set + here, prevent fail. + * trans-intrinsic.c (conv_caf_send): Add creation of temporary array + for caf_get's result and copying to the array with vectorial + indexing. + +2018-04-14 Thomas Koenig + + PR fortran/85387 + * frontend-passes.c (traverse_io_block): Check for start, end or + stride being defined by an outer implied DO loop. + +2018-04-12 Thomas Koenig + + PR fortran/83064 + PR testsuite/85346 + * trans-stmt.c (gfc_trans_forall_loop): Use annot_expr_ivdep_kind + for annotation and remove dependence on -ftree-parallelize-loops. + +2018-04-10 Jakub Jelinek + + PR fortran/85313 + * openmp.c (resolve_omp_do): Remove bogus if (j < i) break;. + (resolve_oacc_nested_loops): Likewise. Formatting fix. + +2018-04-09 Thomas Koenig + + PR fortran/83064 + * trans-stmt.c (gfc_trans_forall_loop): Remove annotation for + parallell processing of DO CONCURRENT -ftree-parallelize-loops + is set. + +2018-04-09 Thomas Koenig + + PR fortran/51260 + * resolve.c (resolve_variable): Simplify cases where access to a + parameter array results in a single constant. + +2018-04-02 Thomas Koenig + + PR fortran/85102 + * decl.c (variable_decl): If upper or lower bounds simplify + to a constant, use that. + +2018-03-30 Paul Thomas + + PR fortran/84931 + * simplify.c (gfc_convert_constant): Handle case of array + constructors within an array that has no iterator and improve + the conciseness of this section of code. + +2017-03-30 Thomas Koenig + + PR fortran/85111 + * array.c (gfc_resolve_character_array_constructor): Early + exit for zero-size arrays. + * simplify.c (simplify_transformation_to_array): Exit early + if the result size is zero. + (simplify_minmaxloc_to_array): Likewise. + +2018-03-28 Mikael Morin + + PR fortran/69497 + * symbol.c (gfc_symbol_done_2): Start freeing namespaces + from the root. + (gfc_free_namespace): Restore assert (revert r258839). + +2018-03-28 Jakub Jelinek + + * gfortran.h (gfc_dt): Rename default_exp field to dec_ext. + * ioparm.def (IOPARM_dt_default_exp): Rename to ... + (IOPARM_dt_dec_ext): ... this. + * trans-io.c (build_dt): Adjust for default_exp renaming to + dec_ext and IOPARM_dt_default_exp renaming to IOPARM_dt_dec_ext. + * io.c (match_io): Likewise. + +2018-03-27 Thomas Koenig + + PR fortran/85084 + * frontend-passes.c (gfc_run_passes): Do not run front-end + optimizations if a previous error occurred. + +2018-03-27 Thomas Koenig + Harald Anlauf + + PR fortran/85083 + * primary.c (gfc_convert_to_structure_constructor): Check + conformance of argument types in structure constructor. + +2018-03-26 Thomas Koenig + + PR fortran/66709 + * io.c: Include constructor.h. + (resolve_tag_format): For a constant character array, concatenate + into a single character expression. + +2018-03-25 Seth Johnson + Dominique d'Humieres + + PR fortran/84924 + * check.c (gfc_check_c_f_pointer): Allow scalar noninteroperable + scalar derived type with -std=f2003 and -std=f2008. + +2018-03-24 Jerry DeLisle + Dominique d'Humieres + + PR fortran/69497 + * symbol.c (gfc_free_namespace): Delete the assert and only if + refs count is equals zero, free the namespace. Otherwise, + something is halfway and other errors will resound. + +2018-03-24 Thomas Koenig + + PR fortran/70068 + * expr.c (find_substring_ref): Change types of start, end + and length variables to gfc_charlen_t. Set length to zero + for empty substring. + +2018-03-24 Steven G. Kargl + + PR fortran/42651 + * decl.c (check_function_name): Improved error message + (gfc_match_volatile, gfc_match_asynchronous) Use check_function_name. + +2018-03-22 Steven G. Kargl + + PR fortran/84922 + * decl.c (get_proc_name): If the MODULE prefix appears in interface + body, then it must appear on the contained subroutine or function. + While here, fix nearby mis-indented code. + +2018-03-21 Thomas Koenig + Harald Anlauf + + PR fortran/84957 + * trans-types.c (gfc_sym_type): Do not dereference NULL pointer. + +2018-03-21 Janne Blomqvist + + PR fortran/84615 + * trans-expr.c (gfc_conv_procedure_call): Convert charlen to + gfc_charlen_type_node when calling procedure. + +2018-03-20 Steven G. Kargl + + PR fortran/85001 + * interface.c (symbol_rank): Remove bogus null pointer check that + crept in when translating a ternary operator into an if-else + constructor. + +2018-03-19 Thomas Koenig + + PR fortran/84931 + * simplify.c (gfc_convert_constant): Correctly handle iterators + for type conversion. + +2018-03-18 Steven G. Kargl + + PR fortran/77414 + * decl.c (get_proc_name): Check for a subroutine re-defined in + the contain portion of a subroutine. Change language of existing + error message to better describe the issue. While here fix whitespace + issues. + +2018-03-18 Steven G. Kargl + + PR fortran/65453 + * decl.c (get_proc_name): Catch clash between a procedure statement + and a contained subprogram + +2018-03-16 Steven G. Kargl + + PR fortran/69395 + * decl.c (merge_array_spec): Correct the error condition. + +2018-03-15 Steven G. Kargl + + PR fortran/78741 + * decl.c (get_proc_name): Check for clash of entry name with + subroutine name. + +2018-03-15 Steven G. Kargl + + PR fortran/69395 + * decl.c (merge_array_spec): Limit the merging to maximum allowed + dimensions, and issue error message if limit is exceeded. + +2018-03-13 Steven G. Kargl + + * check.c (gfc_check_kill_sub): Remove check for INTEGER(4) or (8). + * intrinsic.c (add_functions): Remove reference to gfc_resolve_kill. + (add_subroutines): Remove reference to gfc_resolve_kill_sub. + * intrinsic.texi: Update documentation. + * iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove. + * trans-decl.c (gfc_build_intrinsic_function_decls): Add + gfor_fndecl_kill and gfor_fndecl_kill_sub + * trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new + functions. + (gfc_conv_intrinsic_function): Use conv_intrinsic_kill. + (gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub. + * trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub. + +2018-03-11 Paul Thomas + + PR fortran/84546 + * trans-array.c (structure_alloc_comps): Make sure that the + vptr is copied and that the unlimited polymorphic _len is used + to compute the size to be allocated. + * trans-expr.c (gfc_get_class_array_ref): If unlimited, use the + unlimited polymorphic _len for the offset to the element. + (gfc_copy_class_to_class): Set the new 'unlimited' argument. + * trans.h : Add the boolean 'unlimited' to the prototype. + +2018-03-11 Steven G. Kargl + + PR fortran/83939 + * resolve.c (resolve_fl_procedure): Enforce F2018:C15100. + +2018-03-11 Steven G. Kargl + + * check.c (gfc_check_kill): Check pid and sig are scalar. + (gfc_check_kill_sub): Restrict kind to 4 and 8. + * intrinsic.c (add_function): Sort keyword list. Add pid and sig + keywords for KILL. Remove redundant *back="back" in favor of the + original *bck="back". + (add_subroutines): Sort keyword list. Add pid and sig keywords + for KILL. + * intrinsic.texi: Fix documentation to consistently use pid and sig. + * iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8. Choose the + correct function. + (gfc_resolve_rename_sub): Add comment. + +2018-03-11 Thomas Koenig + + PR fortran/66128 + * simplify.c (simplify_transformation): Return default result for + empty array argument. + (gfc_simplify_all): Remove special-case handling for zerosize. + (gfc_simplify_any): Likewise. + (gfc_simplify_count): Likewise. + (gfc_simplify_iall): Likewise. + (gfc_simplify_iany): Likewise. + (gfc_simplify_iparity): Likewise. + (gfc_simplify_minval): Likewise. + (gfc_simplify_maxval): Likewise. + (gfc_simplify_norm2): Likewise. + (gfc_simplify_product): Likewise. + (gfc_simplify_sum): Likewise. + +2018-03-10 Steven G. Kargl + + PR fortran/84734 + * arith.c (check_result, eval_intrinsic): If result overflows, pass + the expression up the chain instead of a NULL pointer. + +2018-03-07 Steven G. Kargl + + PR fortran/64124 + PR fortran/70409 + * decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant. + +2017-03-06 Thomas Koenig + + PR fortran/84697 + PR fortran/66128 + * expr.c (simplify_parameter_variable): If p is a size zero array + and not an ARRAY_EXPR insert an empty array constructor and + return. + * gfortran.h: Add prototype for gfc_is_size_zero_array. + * simplify.c (is_size_zero_array): Make non-static and rename into + (gfc_is_size_zero_array): Check for parameter arrays of zero + size by comparing shape and absence of constructor. + (gfc_simplify_all): Use gfc_is_size_zero_array instead of + is_size_zero_array. + (gfc_simplify_count): Likewise. + (gfc_simplify_iall): Likewise. + (gfc_simplify_iany): Likewise. + (gfc_simplify_iparity): Likewise. + (gfc_simplify_minval): Likewise. + (gfc_simplify_maxval): Likewise. + (gfc_simplify_product): Likewise. + (gfc_simplify_sum): Likewise. + +2018-03-06 Steven G. Kargl + + PR fortran/56667 + * primary.c (match_sym_complex_part): Give the matcher for an implied + do-loop a chance to run. + +2018-03-03 Harald Anlauf + + PR fortran/71085 + * trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not + dereference NULL pointer. + +2018-03-03 Steven G. Kargl + + PR fortran/66128 + * simplify.c (is_size_zero_array): New function to check for size + zero array. + (gfc_simplify_all, gfc_simplify_any, gfc_simplify_count, + gfc_simplify_iall, gfc_simplify_iany, gfc_simplify_iparity, + gfc_simplify_minval, gfc_simplify_maxval, gfc_simplify_norm2, + gfc_simplify_product, gfc_simplify_sum): Use it, and implement + requirements from F2018. + +2018-03-03 Steven G. Kargl + + PR fortran/51434 + * simplify.c (gfc_simplify_transfer): Resolve mold. + +2018-03-03 Paul Thomas + + PR fortran/80965 + * resolve.c (build_loc_call): Change symtree name from 'loc' to + '_loc'. + +2018-03-01 Paul Thomas + + PR fortran/84219 + * target-memory.c (gfc_interpret_derived): Assert that BT_VOID + components are caf tokens. + (gfc_target_interpret_expr): Treat BT_VOID expressions as + integers. + +2018-03-01 Paul Thomas + + PR fortran/84538 + * class.c (class_array_ref_detected): Remove the condition that + there be no reference after the array reference. + (find_intrinsic_vtab): Remove excess whitespace. + * trans-array.c (gfc_conv_scalarized_array_ref): Rename 'tmp' + as 'base and call build_class_array_ref earlier. + +2018-02-28 Paul Thomas + + PR fortran/83901 + * trans-stmt.c (trans_associate_var): Make sure that the se + expression is a pointer type before converting it to the symbol + backend_decl type. + +2018-02-25 Steven G. Kargl + + PR fortran/83633 + * decl.c (variable_decl): Check that an explicit-shape-array with + nonconstant bounds is allowed. + +2018-02-25 Paul Thomas + + PR fortran/84523 + * trans-intrinsic.c (gfc_conv_allocated): If the argument se + has a pre block, add it to the expression pre block. + +2018-02-25 Thomas Koenig + + PR fortran/78238 + * gfortran.h (gfc_integer_4_kind): Define. + * resolve.c (resolve_select_type): Make sure that the + kind of c->high is gfc_integer_4_kind. + +2018-02-24 Steven G. Kargl + + PR fortran/30792 + * decl.c (gfc_match_data): Check for invalid substring in + data-implied-do + +2018-02-23 Steven G. Kargl + + * intrinsic.texi: Arguments to MATMUL cannot both be rank one. + +2018-02-23 Steven G. Kargl + + PR fortran/84511 + * trans-io.c (transfer_expr): Deal with C_LOC in transfer statement. + +2018-02-23 Steven G. Kargl + + PR fortran/84346 + * interface.c (compare_actual_formal): Issue error if keyword is + used in a statement function. + +2018-02-23 Jerry DeLisle + + PR fortran/84506 + * trans-io.c (set_parameter_value_inquire): Adjust range check of + negative unit values for kind=8 units to the kind=4 negative limit. + +2018-02-23 Paul Thomas + + PR fortran/83149 + * trans-types.c (gfc_sym_type): Test sym->ns->proc_name before + accessing its components. + +2018-02-23 Paul Thomas + + PR fortran/83149 + * trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name + before accessing its components. + +2018-02-23 Paul Thomas + + PR fortran/83148 + * trans-const.c : Clean up some whitespace issues. + * trans-expr.c (gfc_conv_initializer): If an iso_c_binding + derived type has a kind value of zero, set it to the default + integer kind. + +2018-02-23 Janne Blomqvist + + PR fortran/84519 + * trans-decl.c (gfc_build_builtin_function_decls): Add bool + argument to stop and error stop decls. + * trans-stmt.c (gfc_trans_stop): Add false value to argument + lists. + +2018-02-22 Janne Blomqvist + + PR 78534 + PR 84509 + * trans-decl.c (gfc_build_builtin_function_decls): Pass + gfc_int8_type node to pause_numeric, size_type_node to + pause_string. + * trans-stmt.c (gfc_trans_pause): Likewise. + +2018-02-22 Janne Blomqvist + + * gfortran.texi: Update Coarray API description. + * trans-decl.c (gfc_build_builtin_function_decls): Use size_t for + character lengths, int for exit codes. + (generate_coarray_sym_init): Use size_t for character length. + * trans-intrinsic.c (conv_co_collective): Likewise. + * trans-stmt.c (gfc_trans_lock_unlock): Likewise. + (gfc_trans_event_post_wait): Likewise. + (gfc_trans_sync): Likewise. + (gfc_trans_stop): Use size_t for character lengths, int for exit + codes. + +2018-02-20 Thomas Koenig + + PR fortran/48890 + PR fortran/83823 + * primary.c (gfc_convert_to_structure_constructor): + For a constant string constructor, make sure the length + is correct. + +2018-02-19 Paul Thomas + + PR fortran/83344 + PR fortran/83975 + * resolve.c (resolve_assoc_var): Rearrange the logic for the + determination of the character length of associate names. If + the associate name is missing a length expression or the length + expression is not a constant and the target is not a variable, + make the associate name allocatable and deferred length. + * trans-decl.c (gfc_get_symbol_decl): Null the character length + backend_decl for deferred length associate names that are not + variables. Set 'length' to gfc_index_zero_node for character + associate names, whose character length is a PARM_DECL. + +2018-02-19 Thomas Koenig + + PR fortran/35339 + * frontend-passes.c (traverse_io_block): Remove workaround for + PR 80945. + +2018-02-19 Andre Vehreschild + + * gfortran.texi: Document additional src/dst_type. Fix some typos. + * trans-decl.c (gfc_build_builtin_function_decls): Declare the new + argument of _caf_*_by_ref () with * e { get, send, sendget }. + * trans-intrinsic.c (gfc_conv_intrinsic_caf_get): Add the type of the + data referenced when generating a call to caf_get_by_ref (). + (conv_caf_send): Same but for caf_send_by_ref () and + caf_sendget_by_ref (). + +2018-02-18 Jerry DeLisle + + PR fortran/84389 + * io.c (check_format): Allow FMT_COLON. + +2018-02-18 Paul Thomas + + PR fortran/80945 + * trans-array.c (gfc_conv_expr_descriptor): Set parmtype from + the typenode in the case of deferred length characters. + +2018-02-17 Thomas Koenig + + PR fortran/84270 + * frontend-passes (scalarized_expr): If the expression + is an assumed size array, leave in the last reference + and pass AR_SECTION instead of AR_FULL to gfc_resolve + in order to avoid an error. + +2018-02-17 Paul Thomas + + PR fortran/84115 + * resolve.c (resolve_assoc_var): If a non-constant target expr. + has no string length expression, make the associate variable + into a deferred length, allocatable symbol. + * trans-decl.c (gfc_is_reallocatable_lhs): Add and use a ptr to + the symbol. + * trans-stmt.c (trans_associate_var): Null and free scalar + associate names that are allocatable. After assignment, remove + the allocatable attribute to prevent reallocation. + +2018-02-16 Jakub Jelinek + + PR fortran/84418 + * trans-openmp.c (gfc_trans_omp_clauses): For OMP_CLAUSE_LINEAR_REF + kind set OMP_CLAUSE_LINEAR_STEP to TYPE_SIZE_UNIT times last_step. + +2018-02-16 Dominique d'Humieres + + PR fortran/84354 + * decl.c (gfc_get_pdt_instance): Replace '%qs' with %qs. + +2018-02-15 Janus Weil + + PR fortran/84409 + * interface.c (check_dtio_arg_TKR_intent): Add a check for character + length. + +2018-02-14 Janus Weil + + PR fortran/84385 + * match.c (gfc_match_select_type): Fix check for selector in + SELECT TYPE statement. + +2018-02-13 Janus Weil + + PR fortran/84313 + * symbol.c (check_conflict): Reject procedure pointers in common blocks. + +2018-02-13 Alastair McKinstry + Janne Blomqvist + + * module.c (dump_module): Use lbasename to ensure that module + files are reproducible. + +2018-02-12 Janus Weil + + PR fortran/84273 + * resolve.c (resolve_component): Fix checks of passed argument in + procedure-pointer components. + +2018-02-11 Francois-Xavier Coudert + + PR fortran/35299 + * resolve.c (resolve_formal_arglist): Update error message. + +2018-02-11 Andre Vehreschild + + * gfortran.texi: Fix typos in documentation of caf_register (). + * trans-array.c (structure_alloc_comps): Only register a component of + a derived typed corray, not of an ultimate component coarray. + +2018-02-11 Steven G. Kargl + + PR fortran/54223 + PR fortran/84276 + * interface.c (compare_actual_formal): Add in_statement_function + bool parameter. Skip check of INTENT attribute for statement + functions. Arguments to a statement function cannot be optional, + issue error for missing argument. + (gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Use + in_statement_function. + +2018-02-11 Paul Thomas + + PR fortran/84074 + * trans-expr.c (gfc_conv_derived_to_class): Set the use_offset + flag. If the is a vector subscript or the expression is not a + variable, make the descriptor one-based. + +2018-02-10 Paul Thomas + + PR fortran/84141 + PR fortran/84155 + * trans-array.c (gfc_array_init_size): Revert the change made + in revision 257356 setting the dtype. + * trans-types.c (gfc_get_dtype): Do not use the cached dtype. + Call gfc_get_dtype_rank_type every time. + + PR fortran/56691 + * trans-array.c (gfc_conv_expr_descriptor): If the source array + is a descriptor type, use its offset, removing the condition + that is be a class expression. + +2018-02-07 Steven G. Kargl + + PR fortran/82994 + * match.c (gfc_match_deallocate): Check for NULL pointer. + +2018-02-07 Thomas Koenig + + PR fortran/68560 + * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function. + (gfc_conv_intrinsic_function): Call it. + +2018-02-07 Steven G. Kargl + + PR fortran/82049 + * match.c (gfc_match_type_spec): If the charlen is non-NULL, then + try to resolve it. While here return early if possible. + +2018-02-04 Paul Thomas + + PR fortran/84115 + * trans-decl.c (gfc_get_symbol_decl): Do not finish the decl of + 'length' if the symbol charlen backend_decl is an indirect ref. + +2018-02-03 Paul Thomas + + PR fortran/84141 + PR fortran/84155 + * trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype + use gfc_get_dtype_rank_type. + +2018-02-01 Janne Blomqvist + + PR 83975 + PR 83344 + * resolve.c (resolve_assoc_var): Generate an error if + target length unknown. + +2018-02-01 Janne Blomqvist + + PR fortran/83705 + * simplify.c (gfc_simplify_repeat): Increase limit for deferring + to runtime, print a warning message. + +2018-01-31 Jakub Jelinek + + PR fortran/84116 + * openmp.c (gfc_match_omp_clauses): If all the linear + gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist + nor set *head = NULL. Formatting fixes. + +2018-01-31 Paul Thomas + + PR fortran/84088 + * trans-expr.c (gfc_conv_procedure_call): If the parm expr is + an address expression passed to an assumed rank dummy, convert + to an indirect reference. + +2018-01-31 Thomas Koenig + + * dump-parse-tree.c (write_proc): Use sym_name (which may + be sym->binding_label) instead of sym->name. + +2018-01-31 Janne Blomqvist + + * trans-const.c (gfc_conv_string_init): Use gfc_charlen_t instead + of int for slen. + +2018-01-31 Janne Blomqvist + + PR fortran/78534 + * trans-expr.c (fill_with_spaces): Use memset instead of + generating loop. + (gfc_trans_string_copy): Improve opportunity to use builtins with + constant lengths. + +2018-01-30 Jakub Jelinek + + PR debug/84131 + * trans-array.c (gfc_get_descriptor_offsets_for_info): Set *data_off + to DATA_FIELD's offset rather than OFFSET_FIELD's offset. + +2018-01-30 Thomas Koenig + + PR fortran/84134 + * array.c (gfc_ref_dimen_size): Whitespace fixes. If stride is + zero, return false. + +2018-01-30 Thomas Koenig + + PR fortran/84133 + * frontend-passes (matmul_to_var_expr): Return early if + in association list. + (inline_matmul_assign): Likewise. + +2017-01-29 Thomas Koenig + + PR fortran/84073 + * resolve.c (resolve_component): Ensure BIND(C) character + components have length one. + (resolve_symbol): Likewise for variables. + +2018-01-27 Jakub Jelinek + + PR fortran/84065 + * decl.c (add_init_expr_to_sym): Ignore initializers for too large + lengths. + +2018-01-26 Damian Rouson + Alessandro Fanfarillo + Soren Rasmussen + + Partial support for Fortran 2018 teams features. + + * array.c (gfc_match_array_ref): add team attribute in coarray + transfers. + * check.c (gfc_check_get_team, gfc_check_team_number): add new + functions for get_team and team_number. + * dump-parse-tree.c (show_code_node): add new statements: form team, + change team, end team, and sync team. + * expr.c (gfc_find_team_co): add new function. + * gfortran.h: add new statements. + * intrinsic.c (add_functions): add get_team and team_number functions. + * intrinsic.h: add get_team and team_number prototypes for check, + simplify, and resolve. + * iresolve.c (gfc_resolve_get_team, gfc_resolve_team_number): add new + functions. + * iso-fortran-env.def: add the team_type derived type. + * match.c (gfc_match_if, gfc_match_form_team, gfc_match_team_number) + (gfc_match_end_team, gfc_match_sync_team, gfc_match_change_team): + add change team, end team, form team, sync team match and functions. + * match.h: add new prototypes for change team, end team, form team, + and sync team. + * parse.c (decode_statement): add cases for change team, end team, + form team, and sync team. + * resolve.c: add cases for exec form team, change team, end team, and + sync team. + * simplify.c (gfc_simplify_get_team): add new function for get team. + * st.c (gfc_free_statement): add cases exec for change team, end team, + form team, sync team. + * trans-decl.c (gfor_fndecl_caf_form_team) + (gfor_fndecl_caf_change_team, gfor_fndecl_caf_end_team) + (gfor_fndecl_caf_sync_team, gfor_fndecl_caf_get_team) + (gfor_fndecl_caf_team_number): add functions and definitions. + * trans-intrinsic.c (conv_caf_send, conv_intrinsic_team_number): add + new function and team_type argument support. + * trans-stmt.c (gfc_trans_form_team, gfc_trans_change_team) + (gfc_trans_end_team, gfc_trans_sync_team): add new functions. + * trans-stmt.h: add new prototypes. + * trans-types.c (gfc_get_derived_type): check condition for team_type. + * trans.c (trans_code): new exec cases for form team, change team, end + team, and sync team. + * trans.h: add new prototypes. + +2018-01-26 Steven G. Kargl + + PR fortran/83998 + * simplify.c (compute_dot_product): Initialize result to INTEGER(1) 0 + or .false. The summation does the correct type conversion. + (gfc_simplify_dot_product): Special case zero-sized arrays. + +2018-25-01 Paul Thomas + + PR fortran/37577 + * array.c (gfc_match_array_ref): If standard earlier than F2008 + it is an error if the reference dimension is greater than 7. + libgfortran.h : Increase GFC_MAX_DIMENSIONS to 15. Change the + dtype masks and shifts accordingly. + * trans-array.c (gfc_conv_descriptor_dtype): Use the dtype + type node to check the field. + (gfc_conv_descriptor_dtype): Access the rank field of dtype. + (duplicate_allocatable_coarray): Access the rank field of the + dtype descriptor rather than the dtype itself. + * trans-expr.c (get_scalar_to_descriptor_type): Store the type + of 'scalar' on entry and use its TREE_TYPE if it is ARRAY_TYPE + (ie. a character). + (gfc_conv_procedure_call): Pass TREE_OPERAND (tmp,0) to + get_scalar_to_descriptor_type if the actual expression is a + constant. + (gfc_trans_structure_assign): Assign the rank directly to the + dtype rank field. + * trans-intrinsic.c (gfc_conv_intrinsic_rank): Cast the result + to default integer kind. + (gfc_conv_intrinsic_sizeof): Obtain the element size from the + 'elem_len' field of the dtype. + * trans-io.c (gfc_build_io_library_fndecls): Replace + gfc_int4_type_node with dtype_type_node where necessary. + (transfer_namelist_element): Use gfc_get_dtype_rank_type for + scalars. + * trans-types.c : Provide 'get_dtype_type_node' to acces the + dtype_type_node and, if necessary, build it. + The maximum size of an array element is now determined by the + maximum value of size_t. + Update the description of the array descriptor, including the + type def for the dtype_type. + (gfc_get_dtype_rank_type): Build a constructor for the dtype. + Distinguish RECORD_TYPEs that are BT_DERIVED or BT_CLASS. + (gfc_get_array_descriptor_base): Change the type of the dtype + field to dtype_type_node. + (gfc_get_array_descr_info): Get the offset to the rank field of + the dtype. + * trans-types.h : Add a prototype for 'get_dtype_type_node ()'. + * trans.h : Define the indices of the dtype fields. + +2018-23-01 Paul Thomas + + PR fortran/83866 + * decl.c (gfc_match_derived_decl): If eos not matched, recover + and emit error about garbage after declaration. + +2018-23-01 Paul Thomas + + PR fortran/83898 + * trans-stmt.c (trans_associate_var): Do not set cst_array_ctor + for characters. + +2018-01-22 Janne Blomqvist + + PR 78534 + PR 83704 + * arith.c (gfc_arith_concat): Use size_t for string length. + (gfc_compare_string): Likewise. + (gfc_compare_with_Cstring): Likewise. + * array.c (gfc_resolve_character_array_constructor): Use + HOST_WIDE_INT, gfc_mpz_get_hwi. + * check.c (gfc_check_fe_runtime_error): Use size_t. + * data.c (create_character_initializer): Use HOST_WIDE_INT, + gfc_extract_hwi. + * decl.c (gfc_set_constant_character_len): Use gfc_charlen_t. + (add_init_expr_to_sym): Use HOST_WIDE_INT. + * expr.c (gfc_build_init_expr): Use HOST_WIDE_INT, + gfc_extract_hwi. + (gfc_apply_init): Likewise. + * match.h (gfc_set_constant_character_len): Update prototype. + * primary.c (match_string_constant): Use size_t. + * resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT, + gfc_mpz_get_hwi. + * simplify.c (init_result_expr): Likewise. + (gfc_simplify_len_trim): Use size_t. + * target-memory.c (gfc_encode_character): Use size_t. + (gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi. + (interpret_array): Use size_t. + (gfc_interpret_character): Likewise. + * target-memory.h (gfc_encode_character): Update prototype. + (gfc_interpret_character): Likewise. + (gfc_target_interpret_expr): Likewise. + * trans-const.c (gfc_build_string_const): Use size_t for length + argument. + (gfc_build_wide_string_const): Likewise. + * trans-const.h (gfc_build_string_const): Likewise. + (gfc_build_wide_string_const): Likewise. + +2018-01-20 Steven G. Kargl + + PR fortran/83900 + * simplify.c (gfc_simplify_matmul): Set return type correctly. + +2018-01-19 Steven G. Kargl + + PR fortran/83900 + * simplify.c (gfc_simplify_matmul): Delete bogus assertion. + +2018-01-17 Harald Anlauf + + PR fortran/83864 + * expr.c (add_init_expr_to_sym): Do not dereference NULL pointer. + +2018-01-17 Harald Anlauf + + PR fortran/83874 + * decl.c (add_init_expr_to_sym): Do not dereference NULL pointer. + +2018-01-15 Louis Krupp + + PR fortran/82257 + * interface.c (compare_rank): Don't try to retrieve CLASS_DATA + from symbol marked unlimited polymorphic. + * resolve.c (resolve_structure_cons): Likewise. + * misc.c (gfc_typename): Don't dereference derived->components + if it's NULL. + +2018-01-15 Thomas Koenig + + PR fortran/54613 + * gfortran.h (gfc_check_f): Rename f4ml to f5ml. + (gfc_logical_4_kind): New macro + * intrinsic.h (gfc_simplify_minloc): Add a gfc_expr *argument. + (gfc_simplify_maxloc): Likewise. + (gfc_resolve_maxloc): Likewise. + (gfc_resolve_minloc): Likewise. + * check.c (gfc_check_minloc_maxloc): Add checking for "back" + argument; also raise error if it is used (for now). Add it + if it isn't present. + * intrinsic.c (add_sym_4ml): Rename to + (add_sym_5ml), adjust for extra argument. + (add_functions): Add "back" constant. Adjust maxloc and minloc + for back argument. + * iresolve.c (gfc_resolve_maxloc): Add back argument. If back is + not of gfc_logical_4_kind, convert. + (gfc_resolve_minloc): Likewise. + * simplify.c (gfc_simplify_minloc): Add back argument. + (gfc_simplify_maxloc): Likewise. + * trans-intinsic.c (gfc_conv_intrinsic_minmaxloc): Rename last + argument to %VAL to ensure passing by value. + (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_minmaxloc + also for library calls. + +2018-01-13 Jerry DeLisle + + PR fortran/82007 + * resolve.c (resolve_transfer): Delete code looking for 'DT' + format specifiers in format strings. Set formatted to true if a + format string or format label is present. + * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix + whitespace. + +2018-01-13 Thomas Koenig + + PR fortran/83744 + * dump-parse-tree.c (get_c_type_name): Remove extra line. + Change for loop to use declaration in for loop. Handle BT_LOGICAL + and BT_CHARACTER. + (write_decl): Add where argument. Fix indentation. Replace + assert with error message. Add typename to warning + in comment. + (write_type): Adjust locus to call of write_decl. + (write_variable): Likewise. + (write_proc): Likewise. Replace assert with error message. + +2018-01-13 Paul Thomas + + PR fortran/52162 + * trans-expr.c (gfc_trans_scalar_assign): Flag is_alloc_lhs if + the rhs expression is neither an elemental nor a conversion + function. + + PR fortran/83622 + * trans-array.c (is_pointer_array): Remove unconditional return + of false for -fopenmp. + +2018-01-13 Thomas Koenig + + + PR fortran/83803 + * dump-parse-tree.c (write_proc): Always emit closing parenthesis + for functions. + +2018-01-10 Steven G. Kargl + + PR fortran/82367 + * resolve.c (resolve_allocate_expr): Check for NULL pointer. + +2018-01-10 Steven G. Kargl + + PR fortran/83093 + * resolve.c (resolve_charlen): Check the type of cl->length + after resolution. + +2018-01-10 Janne Blomqvist + + PR fortran/83740 + * trans-array.c (gfc_trans_array_ctor_element): Fix formatting. + +2018-01-10 Janne Blomqvist + + PR fortran/83740 + * trans-array.c (gfc_trans_array_ctor_element): Convert RHS to the + LHS type when assigning. + +2018-01-09 Steven G. Kargl + + PR fortran/83742 + * expr.c (gfc_is_simply_contiguous): Check for NULL pointer. + +2018-01-08 Steven G. Kargl + + * match.c (gfc_match_allocate): Check for NULL pointer. + +2018-01-08 Steven G. Kargl + + * expr.c (gfc_check_pointer_assign): Fix typo in comment. + +2018-01-08 Paul Thomas + + PR fortran/83611 + * decl.c (gfc_get_pdt_instance): If parameterized arrays have + an initializer, convert the kind parameters and add to the + component if the instance. + * trans-array.c (structure_alloc_comps): Add 'is_pdt_type' and + use it with case COPY_ALLOC_COMP. Call 'duplicate_allocatable' + for parameterized arrays. Clean up typos in comments. Convert + parameterized array initializers and copy into the array. + * trans-expr.c (gfc_trans_scalar_assign): Do a deep copy for + parameterized types. + *trans-stmt.c (trans_associate_var): Deallocate associate vars + as necessary, when they are PDT function results for example. + + PR fortran/83731 + * trans-array.c (structure_alloc_comps): Only compare len parms + when they are declared explicitly. + +2018-01-06 Janne Blomqvist + + PR fortran/50892 + * trans-expr.c (gfc_trans_pointer_assignment): fold_convert rhs to + lhs type. + +2018-01-05 Janne Blomqvist + + PR fortran/78534 + PR fortran/66310 + * array.c (got_charlen): Use gfc_charlen_int_kind. + * class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of + hardcoded kind. + (find_intrinsic_vtab): Likewise. + * decl.c (match_char_length): Use gfc_charlen_int_kind. + (add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind. + (gfc_match_implicit): Use gfc_charlen_int_kind. + * dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t. + (show_expr): Use HOST_WIDE_INT_PRINT_DEC. + * expr.c (gfc_get_character_expr): Length parameter of type + gfc_charlen_t. + (gfc_get_int_expr): Value argument of type HOST_WIDE_INT. + (gfc_extract_hwi): New function. + (simplify_const_ref): Make string_len of type gfc_charlen_t. + (gfc_simplify_expr): Use HOST_WIDE_INT for substring refs. + * frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind. + * gfortran.h (gfc_mpz_get_hwi): New prototype. + (gfc_mpz_set_hwi): Likewise. + (gfc_charlen_t): New typedef. + (gfc_expr): Use gfc_charlen_t for character lengths. + (gfc_size_kind): New extern variable. + (gfc_extract_hwi): New prototype. + (gfc_get_character_expr): Use gfc_charlen_t for character length. + (gfc_get_int_expr): Use HOST_WIDE_INT type for value argument. + * gfortran.texi: Update description of hidden string length argument. + * iresolve.c (check_charlen_present): Use gfc_charlen_int_kind. + (gfc_resolve_char_achar): Likewise. + (gfc_resolve_repeat): Pass string length directly without + temporary, use gfc_charlen_int_kind. + (gfc_resolve_transfer): Use gfc_charlen_int_kind. + * match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen. + * misc.c (gfc_mpz_get_hwi): New function. + (gfc_mpz_set_hwi): New function. + * module.c (atom_int): Change type from int to HOST_WIDE_INT. + (parse_integer): Don't complain about large integers. + (write_atom): Use HOST_WIDE_INT for integers. + (mio_integer): Handle integer type mismatch. + (mio_hwi): New function. + (mio_intrinsic_op): Use HOST_WIDE_INT. + (mio_array_ref): Likewise. + (mio_expr): Likewise. + * primary.c (match_substring): Use gfc_charlen_int_kind. + * resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind. + (resolve_character_operator): Likewise. + (resolve_assoc_var): Likewise. + (resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf. + (resolve_charlen): Use mpz_sgn to determine sign. + * simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t + instead of long. + * symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind. + * target-memory.c (size_character): Length argument of type + gfc_charlen_t. + (gfc_encode_character): Likewise. + (gfc_interpret_character): Use gfc_charlen_t. + * target-memory.h (gfc_encode_character): Modify prototype. + * trans-array.c (gfc_trans_array_ctor_element): Use existing type. + (get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type. + (trans_array_constructor): Use existing type. + (get_array_charlen): Likewise. + * trans-const.c (gfc_conv_mpz_to_tree_type): New function. + * trans-const.h (gfc_conv_mpz_to_tree_type): New prototype. + * trans-decl.c (gfc_trans_deferred_vars): Use existing type. + (add_argument_checking): Likewise. + * trans-expr.c (gfc_class_len_or_zero_get): Build const of type + gfc_charlen_type_node. + (gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of + 4, fold_convert to correct type. + (gfc_conv_class_to_class): Build const of type size_type_node for + size. + (gfc_copy_class_to_class): Likewise. + (gfc_conv_string_length): Use same type in expression. + (gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen. + (gfc_conv_string_tmp): Make sure len is of the right type. + (gfc_conv_concat_op): Use same type in expression. + (gfc_conv_procedure_call): Likewise. + (fill_with_spaces): Comment out memset() block due to spurious + -Wstringop-overflow warnings. + (gfc_trans_string_copy): Use gfc_charlen_type_node. + (alloc_scalar_allocatable_for_subcomponent_assignment): + fold_convert to right type. + (gfc_trans_subcomponent_assign): Likewise. + (trans_class_vptr_len_assignment): Build const of correct type. + (gfc_trans_pointer_assignment): Likewise. + (alloc_scalar_allocatable_for_assignment): fold_convert to right + type in expr. + (trans_class_assignment): Build const of correct type. + * trans-intrinsic.c (gfc_conv_associated): Likewise. + (gfc_conv_intrinsic_repeat): Do calculation in sizetype. + * trans-io.c (gfc_build_io_library_fndecls): Use + gfc_charlen_type_node for character lengths. + (set_string): Convert to right type in assignment. + * trans-stmt.c (gfc_trans_label_assign): Build const of + gfc_charlen_type_node. + (trans_associate_var): Likewise. + (gfc_trans_character_select): Likewise. + (gfc_trans_allocate): Likewise, don't typecast strlen result. + (gfc_trans_deallocate): Don't typecast strlen result. + * trans-types.c (gfc_size_kind): New variable. + (gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind + from size_type_node. + * trans-types.h: Fix comment. + +2018-01-04 Thomas Koenig + + PR fortran/83683 + PR fortran/45689 + * check.c (gfc_check_eoshift): Check for string length and + for conformance of boundary. + * intrinsic.c (add_functions): Add gfc_simplify_eoshift. + * intrinsic.h: Add prototype for gfc_simplify_eoshift. + * simplify.c (gfc_simplify_eoshift): New function. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_type_for_mode): Handle MODE_VECTOR_BOOL. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_type_for_mode): Check valid_vector_subparts_p. + +2018-01-03 Thomas Koenig + + PR fortran/83664 + * check.c (gfc_check_eoshift): Error for missing boundary if array + is not one of the standard types. + +2018-01-03 Jakub Jelinek + + Update copyright years. + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + +2017-01-02 Thomas Koenig + + PR fortran/45689 + * intrinsic.c (add_function): Add gfc_simplify_maxloc and + gfc_simplify_minloc to maxloc and minloc, respectively. + * intrinsic.h: Add prototypes for gfc_simplify_minloc + and gfc_simplify_maxloc. + * simplify.c (min_max_chose): Adjust prototype. Modify function + to have a return value which indicates if the extremum was found. + (is_constant_array_expr): Fix typo in comment. + (simplify_minmaxloc_to_scalar): New function. + (simplify_minmaxloc_nodim): New function. + (new_array): New function. + (simplify_minmaxloc_to_array): New function. + (gfc_simplify_minmaxloc): New function. + (simplify_minloc): New function. + (simplify_maxloc): New function. + +2018-01-02 Thomas Koenig + + PR fortran/45689 + PR fortran/83650 + * simplify.c (gfc_simplify_cshift): Re-implement to allow full + range of arguments. + +2018-01-01 Paul Thomas + + PR fortran/83076 + * resolve.c (resolve_fl_derived0): Add caf_token fields for + allocatable and pointer scalars, when -fcoarray selected. + * trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token + field as well as the backend_decl. + (gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module + derived types that are not vtypes. Components with caf_token + attribute are pvoid types. For a component requiring it, find + the caf_token field and have the component token field point to + its backend_decl. + + PR fortran/83319 + *trans-types.c (gfc_get_array_descriptor_base): Add the token + field to the descriptor even when codimen not set. + +Copyright (C) 2018 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + + PR fortran/87945 + * decl.c (var_element): Inquiry parameters cannit be data objects. + +2018-12-08 Steven G. Kargl + + PR fortran/88025 + * expr.c (gfc_apply_init): Remove asserts that cannot trigger. + Check for a NULL pointer. + +2018-12-08 Steven G. Kargl + + PR fortran/88357 + * class.c (insert_component_ref): Check for NULL pointer and + previous error message issued. + * parse.c (parse_associate): Check for NULL pointer. + * resolve.c (resolve_assoc_var): Check for NULL pointer. + +2018-12-07 Jakub Jelinek + + PR fortran/88377 + * trans-openmp.c (gfc_omp_clause_default_ctor, + gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op, + gfc_omp_clause_linear_ctor, gfc_omp_clause_dtor): Only consider + GFC_DECL_GET_SCALAR_ALLOCATABLE vars as scalar allocatables if they + have pointer type. + +2018-12-03 Fritz Reese + Mark Eggleston + + PR fortran/87919 + * options.c (SET_FLAG, SET_BITFLAG, SET_BITFLAG2): New macros. + (set_dec_flags): Set/unset DEC and std flags according to value. + (post_dec_flags, set_init_local_zero): New functions. + (gfc_init_options): Use set_init_local_zero and post_dec_flags. + (gfc_handle_options) : Use + SET_BITFLAG. + : Use set_init_local_zero. + : Pass value to set_dec_flags. + : Remove. + +2018-11-30 Thomas Schwinge + + * gfortran.h (struct gfc_omp_clauses): Remove "wait". Adjust all + users. + + * openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait + clauses. + +2018-11-27 Martin Liska + + * decl.c (gfc_match_gcc_builtin): New function. + * gfortran.h (struct vect_builtin_tuple): New. + (gfc_adjust_builtins): Likewise. + * lang-specs.h (TARGET_F951_OPTIONS): New. + (F951_OPTIONS): Use it. + * lang.opt: Add new option -fpre-include. + * match.h (gfc_match_gcc_builtin): Declare new function. + * parse.c (decode_gcc_attribute): Handle builtin. + (parse_progunit): Call gfc_adjust_builtins. + * scanner.c (gfc_new_file): Load pre-included header file + when provided. + * trans-intrinsic.c (add_simd_flag_for_built_in): New. + (gfc_adjust_builtins): Likewise. + +2018-11-24 Paul Thomas + + PR fortran/88143 + * resolve.c (resolve_variable): Check for associate names with + NULL target. + +2018-11-23 Jakub Jelinek + + * lang.opt (fpad-source): New option. + * scanner.c (load_line): Don't pad fixed form lines if + !flag_pad_source. + * invoke.texi (-fno-pad-source): Document. + +2018-11-21 Jakub Jelinek + + * invoke.texi (-fdec-include): Document. + +2018-11-21 Jakub Jelinek + Mark Eggleston + + * lang.opt (fdec-include): New option. + * options.c (set_dec_flags): Set also flag_dec_include. + * scanner.c (include_line): Change return type from bool to int. + In fixed form allow spaces in between include keyword letters. + For -fdec-include, allow in fixed form 0 in column 6. With + -fdec-include return -1 if the parsed line is not full include + statement and it could be successfully completed on continuation + lines. + (include_stmt): New function. + (load_file): Adjust include_line caller. If it returns -1, keep + trying include_stmt until it stops returning -1 whenever adding + further line of input. + +2018-11-18 Thomas Koenig + + PR fortran/88073 + * frontend-passes.c (combine_array_constructor): Do not do + anything if in a WHERE statement. + +2018-11-18 Thomas Koenig + + PR fortran/70260 + * expr.c (gfc_check_assign): Reject assigning to an external + symbol. + (gfc_check_pointer_assign): Add suppress_type_test + argument. Insert line after if. A non-proc pointer can not point + to a constant. Only check types if suppress_type_test is false. + * gfortran.h (gfc_check_pointer_assign): Add optional + suppress_type_test argument. + * resolve.c (gfc_resolve_code): Move up gfc_check_pointer_assign + and give it the extra argument. + (resolve_fl_procedure): Set error on value for a function with + an inizializer. + +2018-11-15 David Malcolm + + PR other/19165 + * error.c (gfc_diagnostic_finalizer): Add diagnostic_t param. + +2018-11-13 David Malcolm + + * cpp.c: Replace "source_location" with "location_t". + * gfortran.h: Likewise. + +2018-11-08 Jakub Jelinek + + * trans-openmp.c (gfc_trans_omp_clauses): Use + OMP_CLAUSE_DEFAULTMAP_SET_KIND. + (gfc_trans_omp_atomic): Set OMP_ATOMIC_MEMORY_ORDER + rather than OMP_ATOMIC_SEQ_CST. + (gfc_trans_omp_taskgroup): Build OMP_TASKGROUP using + make_node instead of build1_loc. + * types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR, + BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT, + BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, + BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR, + BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR, + BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New. + (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): Formatting fix. + +2018-11-02 Thomas Koenig + + PR fortran/46020 + * decl.c (verify_bind_c_sym): Remove unnecessary space + in error message. + +2018-11-01 Thomas Koenig + + PR fortran/87782 + * frontend-passes.c (constant_string_length): If there is a + substring with a length which cannot be reduced to a constant, + return NULL. + +2018-11-01 Paul Thomas + + PR fortran/40196 + * dependency.c (are_identical_variables): Return false if the + inquiry refs are not the same. + (gfc_ref_needs_temporary_p): Break on an inquiry ref. + * dump_parse_tree.c (show_ref): Show the inquiry ref type. + * expr.c (gfc_free_ref_list): Break on an inquiry ref. + (gfc_copy_ref): Copy the inquiry ref types. + (find_inquiry_ref): New function. + (simplify_const_ref, simplify_ref_chain): Call it. Add new arg + to simplify_ref_chain. + (gfc_simplify_expr): Use the new arg in call to + simplify_ref_chain. + (gfc_get_full_arrayspec_from_expr, gfc_is_coarray): Break on + inquiry ref. + (gfc_traverse_expr): Return true for inquiry ref. + * frontend-passes.c (gfc_expr_walker): Break on inquiry ref. + * gfortran.h : Add enums and union member in gfc_ref to + implement inquiry refs. + * intrinsic.c : Fix white nois. + * match.c (gfc_match_assignment): A constant lavlue is an + error. + * module.c : Add DECL_MIO_NAME for inquiry_type and the mstring + for inquiry_types. + (mio_ref): Handle inquiry refs. + * primary.c (is_inquiry_ref): New function. + (gfc_match_varspec): Handle inquiry refs calling new function. + (gfc_variable_attr): Detect inquiry ref for disambiguation + with components. + (caf_variable_attr): Treat inquiry and substring refs in the + same way. + * resolve.c (find_array_spec): ditto. + (gfc_resolve_substring_charlen): If there is neither a charlen + ref not an inquiry ref, return. + (resolve_ref): Handle inqiry refs as appropriate. + (resolve_allocate_expr): Entities with an inquiry ref cannot be + allocated. + * simplify.c (simplify_bound, simplify_cobound): Punt on + inquiry refs. + * trans-array.c (get_array_ctor_var_strlen): Break on inquiry + ref. + *trans-expr.c (conv_inquiry): New function. + (gfc_conv_variable): Retain the last typespec to pass to + conv_inquiry on detecting an inquiry ref. + +2018-11-01 Thomas Koenig + + PR fortran/46020 + * decl.c (verify_bind_c_sym): Improve error message. + +2018-11-01 Thomas Koenig + + PR fortran/54613 + * gfortran.texi (File format of unformatted sequential files): + Replace random comma with period. + * intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu. + (FINDLOC): Document. + (MAXLOC): Add refrence to FINDLOC. + (MINLOC): Likewise. + +2018-10-31 Nathan Sidwell + + * cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call. + +2018-10-31 Martin Liska + + * trans-decl.c (struct module_hasher): Call htab_hash_string + for s->name and not for s. + +2018-10-30 Thomas Koenig + + PR fortran/85896 + * simplify.c (simplify_min_max): Do not convert the type of the + return expression. + +2017-10-28 Thomas Koenig + + PR fortran/54613 + * gfortran.h (gfc_isym_id): Add GFC_ISYM_FINDLOC. + (gfc_check_f): Add f6fl field. + (gfc_simplify_f): Add f6 field. + (gfc_resolve_f): Likewise. + (gfc_type_letter): Add optional logical_equas_int flag. + * check.c (intrinsic_type_check): New function. + (gfc_check_findloc): New function. + * intrinsics.c (gfc_type_letter): If logical_equals_int is + set, act accordingly. + (add_sym_5ml): Reformat comment. + (add_sym_6fl): New function. + (add_functions): Add findloc. + (check_arglist): Add sixth argument, handle it. + (resolve_intrinsic): Likewise. + (check_specific): Handle findloc. + * intrinsic.h (gfc_check_findloc): Add prototype. + (gfc_simplify_findloc): Likewise. + (gfc_resolve_findloc): Likewise. + (MAX_INTRINSIC_ARGS): Adjust. + * iresolve.c (gfc_resolve_findloc): New function. + * simplify.c (gfc_simplify_minmaxloc): Make static. + (simplify_findloc_to_scalar): New function. + (simplify_findloc_nodim): New function. + (simplify_findloc_to_array): New function. + (gfc_simplify_findloc): New function. + (gfc_conv_intrinsic_findloc): New function. + (gfc_conv_intrinsic_function): Handle GFC_ISYM_FINDLOC. + (gfc_is_intrinsic_libcall): Likewise. + +2018-10-27 Thomas Koenig + + PR fortran/86907 + * frontend-passes.c (check_locus_code): Add information that + warning about missing location information points to an + inconsisten internal state. + (check_locus_expr): Likewise. + +2018-10-25 Jakub Jelinek + + PR fortran/87725 + * openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and + nonmonotonic modifiers regardless of if they have been parsed + already or if the opposite one has. Fix up check whether + comma after modifier should be parsed. + (resolve_omp_clauses): Diagnose schedule modifier restrictions. + +2018-10-23 Paul Thomas + + PR fortran/85603 + * frontend-passes.c (get_len_call): New function to generate a + call to intrinsic LEN. + (create_var): Use this to make length expressions for variable + rhs string lengths. + Clean up some white space issues. + +2018-10-21 Paul Thomas + + PR fortran/71880 + * trans-expr.c (gfc_trans_pointer_assignment): Set the string + length for array valued deferred length lhs. + +2018-10-18 Tobias Burnus + + PR fortran/87625 + * trans-array.c (gfc_is_reallocatable_lhs): Detect allocatable + polymorphic arrays. + +2018-10-18 Paul Thomas + + PR fortran/58618 + * trans-stmt.c (trans_associate_var): All strings that return + as pointer types can be assigned directly to the associate + name so remove 'attr' and the condition that uses it. + +2018-10-18 Paul Thomas + + PR fortran/58618 + * trans-decl.c (gfc_get_symbol_decl): Deal correctly with the + initialization with NULL() of a deferred length pointer. + +2018-10-17 Tobias Burnus + + PR fortran/87632 + * resolve.c (resolve_select_type): Use correct variable. + +2018-10-17 David Malcolm + + * Make-lang.in (selftest-fortran): New. + +2018-10-17 Paul Thomas + + PR fortran/56386 + PR fortran/58906 + PR fortran/77385 + PR fortran/80260 + PR fortran/82077 + * resolve.c (resolve_variable): Fix up expressions with array + associate names, where the parser did not detect that this is + array and there was no array part_ref in the expression. + +2018-10-16 Tobias Burnus + + PR fortran/67125 + * trans-array.c (gfc_array_init_size, gfc_array_allocate): + Rename argument e3_is_array_constr to e3_has_nodescriptor + and update comments. + * trans-stmt.c (gfc_trans_allocate): Also fix lower bound + to 1 for nonalloc/nonpointer func results/vars besides + array constructors. + +2018-10-16 Tobias Burnus + + PR fortran/87556 + * trans-stmt.c (form_team, change_team, sync_team): + Don't ignore argse.pre/argse.post. + +2018-10-15 Paul Thomas + Tobias Burnus + + PR fortran/87566 + * resolve.c (resolve_assoc_var): Add missing array spec for + class associate names. + (resolve_select_type): Handle case where last typed component + of the selector has a different type to the expression. + * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Replace + call to gfc_expr_to_initialize with call to gfc_copy_expr. + (gfc_conv_class_to_class): Guard assignment to 'len' field + against case where zero constant is supplied. + +2018-10-12 Tobias Burnus + + PR fortran/87597 + * expr.c (gfc_simplify_expr): Avoid simplifying + the 'array' argument to lbound/ubound/lcobound/ + ucobound. + +2018-10-12 Tobias Burnus + + PR fortran/58787 + * decl.c (get_proc_name): Return with error before + creating sym_tree. + +2018-10-11 Tobias Burnus + + Revert: + 2018-10-09 Tobias Burnus + + PR fortran/83522 + * resolve.c (resolve_ref): Reject nonscalar + substring references. + +2018-10-09 David Malcolm + + * cpp.c (gfc_cpp_init_0): Update for renamings. + (cb_cpp_error): Rename to... + (cb_cpp_diagnostic): ...this, converting level and reason to + enums. + +2018-10-09 Tobias Burnus + + PR fortran/83522 + * resolve.c (resolve_ref): Reject nonscalar + substring references. + +2018-10-09 Paul Thomas + + PR fortran/87151 + * trans-array.c (gfc_get_array_span): Deal with deferred char + array components having a TYPE_MAX_VALUE of zero. + (gfc_array_init_size): Use the hidden string length component + to build the descriptor dtype. + (gfc_array_allocate): Remove the erroneous replacement of the + charlen backend decl with a temporary. + (gfc_conv_expr_descriptor): Use the ss_info string length in + the case of deferred character components. + (gfc_alloc_allocatable_for_assignment): Actually compare the + string lengths for deferred characters. Make sure that kind > 1 + is handled correctly. Set the span field of the descriptor. + * trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid + comment. + + PR fortran/80931 + * trans-array.c (gfc_array_allocate): Set the span field for + variable length character arrays. + +2018-10-08 Cesar Philippidis + + * expr.c (gfc_check_pointer_assign): Demote "Assignment to + contiguous pointer from non-contiguous target" to a warning. + +2018-10-08 Paul Thomas + + PR fortran/86372 + * trans-stmt.c (trans_associate_var): Character associate names + with variable string length do not have to be deferred length + for the string length to be set, if variable. + +2018-10-06 Thomas Koenig + + PR fortran/86111 + * gfortran.h (enum arith): Add ARITH_WRONGCONCAT. + * arith.h (gfc_arith_error): Issue error for ARITH_WRONGCONCAT. + (gfc_arith_concat): If the types of op1 and op2 are not + character of if their kinds do not match, issue ARITH_WRONGCONCAT. + +2018-10-06 Paul Thomas + + PR fortran/83999 + * resolve.c (resolve_fl_procedure): Include class functions in + the test that elemental function results be scalar. + +2018-10-06 Thomas Koenig + + PR fortran/84640 + * simplify.c (gfc_simplify_cshift): Extend size of hs_ex and ss_ex + by one. Set extents one past the array boundaries to zero to avoid + warning with instrumented compiler. + (gfc_simplify_eoshift): Likewise, only for ss_ex. + +2018-10-05 Paul Thomas + + PR fortran/87487 + * trans-decl.c (gfc_get_symbol_decl): Make sure that deferred + character length pointer initializer has the right type to fix + problem with deferred_character_24.f90 on big endian. + +2018-10-03 Jeff Law + + * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c. + +2018-10-01 Paul Thomas + + PR fortran/65677 + * trans-expr.c (gfc_trans_assignment_1): Set the 'identical' + flag in the call to gfc_check_dependency. + +2018-09-30 Paul Thomas + + PR fortran/87359 + * trans-array.c (gfc_is_reallocatable_lhs): Correct the problem + introduced by r264358, which prevented components of associate + names from being reallocated on assignment. + +2018-09-30 Paul Thomas + + PR fortran/70752 + PR fortran/72709 + * trans-array.c (gfc_conv_scalarized_array_ref): If this is a + deferred type and the info->descriptor is present, use the + info->descriptor + (gfc_conv_array_ref): Is the se expr is a descriptor type, pass + it as 'decl' rather than the symbol backend_decl. + (gfc_array_allocate): If the se string_length is a component + reference, fix it and use it for the expression string length + if the latter is not a variable type. If it is a variable do + an assignment. Make use of component ref string lengths to set + the descriptor 'span'. + (gfc_conv_expr_descriptor): For pointer assignment, do not set + the span field if gfc_get_array_span returns zero. + * trans.c (get_array_span): If the upper bound a character type + is zero, use the descriptor span if available. + +2018-09-30 Paul Thomas + + PR fortran/70149 + * trans-decl.c (gfc_get_symbol_decl): A deferred character + length pointer that is initialized needs the string length to + be initialized as well. + +2018-09-29 Paul Thomas + + PR fortran/65677 + * trans-expr.c (gfc_trans_assignment_1): If there is dependency + fix the rse stringlength. + +2018-09-25 Martin Liska + + PR fortran/87394 + * decl.c (add_hidden_procptr_result): Simplify condition + as we are in branch witch 'case1 || case2'. + +2018-09-25 Martin Liska + + * trans.c (remove_suffix): Remove + unused function. + +2018-09-24 Thomas Koenig + + PR fortran/87397 + * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) + for variables in an associate statement. + +2018-09-24 Bernhard Reuther-Fischer + Cesar Philippidis + + * openmp.c (resolve_oacc_loop_blocks): + +2018-09-23 Thomas Koenig + + PR fortran/87397 + * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) + for variables having the dimension attribute. + +2018-09-23 Janne Blomqvist + + * trans-expr.c (gfc_caf_get_image_index): Do array index + calculations in gfc_array_index_type. + * trans-intrinsic.c (conv_intrinsic_event_query): Likewise. + * trans-stmt.c (gfc_trans_lock_unlock): Likewise. + (gfc_trans_event_post_wait): Likewise. + +2018-09-23 Thomas Koenig + + PR fortran/87395 + * gfc_conv_procedure_call: Reformat comments slightly. Do not add + clobber on INTENT(OUT) for saved variables. + +2018-09-22 Thomas Koenig + + PR fortran/41453 + * trans.h (gfc_conv_expr_reference): Add optional argument + add_clobber to prototype. + (gfc_conv_procedure_call): Set add_clobber argument to + gfc_conv_procedure_reference to true for scalar, INTENT(OUT), + non-pointer, non-allocatable, non-dummy variables whose type + is neither BT_CHARACTER, BT_DERIVED or BT_CLASS, but only if + the procedure is not elemental. + * trans-expr.c (gfc_conv_procedure_reference): Add clobber + statement before call if add_clobber is set. + +2018-09-22 Paul Thomas + + PR fortran/85603 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Test + the charlen backend_decl before using the VAR_P macro. + +2018-09-21 Paul Thomas + + PR fortran/77325 + * trans-array.c (gfc_alloc_allocatable_for_assignment): If the + rhs has a charlen expression, convert that and use it. + * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the + assignment of deferred character array vars to a realocatable + lhs should not be added to the exterior block since vector + indices, for example, generate temporaries indexed within the + loop. + +2018-09-21 Paul Thomas + + PR fortran/87359 + * trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc + components if must_finalize is set for expr3. + +2018-09-21 Andrew Stubbs + Kwok Cheung Yeung + + * trans-expr.c (gfc_trans_structure_assign): Ensure that the first + argument of a call to _gfortran_caf_register is of size_type_node. + * trans-intrinsic.c (conv_intrinsic_event_query): Convert computed + index to a size_type_node type. + * trans-stmt.c (gfc_trans_event_post_wait): Likewise. + +2018-09-20 Allan Sandfeld Jensen + + * gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib. + +2018-09-20 Janus Weil + + * gfortran.h (gfc_str_startswith): New macro. + * decl.c (variable_decl, gfc_match_end): Use it. + * iresolve.c (is_trig_resolved): Ditto. + * module.c (load_omp_udrs, read_module): Ditto. + * options.c (gfc_handle_runtime_check_option): Ditto. + * primary.c (match_arg_list_function): Ditto. + * trans-decl.c (gfc_get_symbol_decl): Ditto. + * trans-expr.c (gfc_conv_procedure_call): Ditto. + * interface.c (dtio_op): Replace strncmp by strcmp. + * resolve.c (resolve_actual_arglist, resolve_function): Ditto. + * trans-expr.c (conv_arglist_function): Ditto. + * trans-intrinsic.c (gfc_conv_ieee_arithmetic_function): Replace macro + STARTS_WITH by gfc_str_startswith. + +2018-09-20 Cesar Philippidis + + * dump-parse-tree.c (show_omp_clauses): Add missing omp list_types + and reorder the switch cases to match the enum in gfortran.h. + +2018-09-19 Paul Thomas + + PR fortran/84109 + * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the + assignment of deferred character intrinsic elemental function + results to a realocatable lhs must not be added to the exterior + block if they are array valued but must go to the loop body. + +2018-09-18 Thomas Koenig + + PR fortran/29550 + * gfortran.h (gfc_expr): Add external_blas flag. + * frontend-passes.c (matrix_case): Add case A2TB2T. + (optimize_namespace): Handle flag_external_blas by + calling call_external_blas. + (get_array_inq_function): Add argument okind. If + it is nonzero, use it as the kind of argument + to be used. + (inline_limit_check): Remove m_case argument, add + limit argument instead. Remove assert about m_case. + Set the limit for inlining from the limit argument. + (matmul_lhs_realloc): Handle case A2TB2T. + (inline_matmul_assign): Handle inline limit for other cases with + two rank-two matrices. Remove no-op calls to inline_limit_check. + (call_external_blas): New function. + * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add + argument to external BLAS if external_blas is already set. + +2018-09-18 Paul Thomas + + PR fortran/87239 + * trans-expr.c (gfc_trans_assignment_1): The rse.pre for the + assignment of deferred character elemental function results to + a realocatable lhs must not be added to the exterior block but + must go to the loop body. + +2018-09-18 Paul Thomas + + PR fortran/87336 + * trans-array.c (gfc_get_array_span): Try to get the element + length of incomplete types. Return NULL_TREE otherwise. + (gfc_conv_expr_descriptor): Only set the 'span' field if the + above does not return NULL_TREE. Set 'span' field if possible + for all new descriptors. + +2018-09-17 Paul Thomas + + PR fortran/64120 + * trans-decl.c (gfc_get_symbol_decl): Flag allocatable, scalar + characters with a variable length expression for deferred init. + (gfc_trans_deferred_vars): Perform the assignment for these + symbols by calling gfc_conv_string_length. + +2018-09-17 Paul Thomas + + PR fortran/85954 + * resolve.c (resolve_assoc_var): If the target expression is a + deferred charlen dummy and the associate name shares the + charlen, generate a new one. Make sure that new charlens are in + the namespace list so that they get cleaned up. + * trans-array.c (gfc_is_reallocatable_lhs): Associate names are + not reallocatable. + * trans-decl.c (gfc_get_symbol_decl): Put deferred character + length dummy and result arrays on the deferred initialization + list so that the variable length arrays can be correctly dealt + with. + * trans-expr.c (gfc_conv_string_length): Return if 'expr' is + NULL rather than ICEing.. + +2018-09-16 Janus Weil + + PR fortran/86484 + PR fortran/84543 + * match.c (gfc_match_assignment): For a polymorphic assignment, + make sure that the vtab for the rhs type is generated. + +2018-09-16 Thomas Koenig + + PR fortran/37802 + * frontend-passes.c (B_ERROR): New macro for matmul bounds + checking error messages. + (C_ERROR): Likewise. + (inline_matmul_assign): Reorganize bounds checking, use B_ERROR + and C_ERROR macros. + +2018-09-13 Bernd Edlinger + + * trans-array.c (gfc_conv_array_initializer): Remove excess precision + from overlength string initializers. + +2018-09-12 Paul Thomas + + PR fortran/87284 + * trans-expr.c (gfc_trans_class_init_assign): Access to + to array elements of the dynamic type requires that the array + reference be added to the class expression and not the _data + component, unlike scalar expressions. + +2018-09-11 Janus Weil + + PR fortran/87172 + * resolve.c (resolve_fl_derived): If a type has the 'use_assoc' + attribute, then it was declared in another module, so there should be + no error that it has not been declared. + +2018-09-11 Paul Thomas + + PR fortran/87277 + * expr.c (is_subref_array): Add the check of dimensionality for + class, dummy, pointer arrays. + +2018-09-11 Janus Weil + + PR fortran/86830 + * expr.c (gfc_is_simply_contiguous): Handle type-bound procedure calls + with non-polymorphic objects. + +2018-09-10 Janus Weil + + PR fortran/85395 + * decl.c (match_binding_attributes): Use correct default accessibility + for procedure pointer components. + +2018-09-03 Jerry DeLisle + + * simplify.c (gfc_simplify_modulo): Re-arrange code to test whether + 'P' is zero and issue an error if it is. + +2018-08-31 Paul Thomas + + PR fortran/86328 + PR fortran/86760 + * trans-array.c (gfc_conv_scalarized_array_ref): Do not fix + info->descriptor but pass it directly to gfc_build_array_ref. + (gfc_conv_array_ref): Likewise for se->expr. + * trans.c (gfc_build_array_ref): If 'decl' is a COMPONENT_REF + obtain the span field directly from it. + +2017-08-28 Paul Thomas + + PR fortran/80477 + * trans-expr.c (gfc_conv_procedure_call): Allocatable class + scalar results being passed to a derived type formal argument + are finalized if possible. Otherwise, rely on existing code for + deallocation. Make the deallocation of allocatable result + components conditional on finalization not taking place. Make + the freeing of data components after finalization conditional + on the data being NULL. + (gfc_trans_arrayfunc_assign): Change the gcc_assert to a + condition to return NULL_TREE. + (gfc_trans_assignment_1): If the assignment is class to class + and the rhs expression must be finalized but the assignment + is not marked as a polymorphic assignment, use the vptr copy + function instead of gfc_trans_scalar_assign. + + PR fortran/86481 + * trans-expr.c (gfc_conv_expr_reference): Do not add the post + block to the pre block if the expression is to be finalized. + * trans-stmt.c (gfc_trans_allocate): If the expr3 must be + finalized, load the post block into a finalization block and + add it right at the end of the allocation block. + +2018-08-27 David Malcolm + + PR 87091 + * error.c (gfc_format_decoder): Update for conversion of + show_caret_p to a tri-state. + +2018-08-25 Janus Weil + + PR fortran/86545 + * resolve.c (resolve_transfer): Correctly determine typespec for + generic function calls, in order to throw a proper error. + +2018-08-24 Thomas Koenig + + PR fortran/86837 + * frontend-passes.c (var_in_expr_callback): New function. + (var_in_expr): New function. + (traverse_io_block): Use var_in_expr instead of + gfc_check_dependency for checking if the variable depends on the + previous interators. + +2018-08-23 Janne Blomqvist + + * trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Delete + HONOR_SIGNED_ZEROS checks. + +2018-08-23 Paul Thomas + + PR fortran/86863 + * resolve.c (resolve_typebound_call): If the TBP is not marked + as a subroutine, check the specific symbol. + +2018-08-22 Thomas Koenig + + * gfortran.texi: Mention that asynchronous I/O does + not work on systems which lack condition variables, such + as AIX. + +2018-08-22 Janus Weil + + PR fortran/86935 + * match.c (gfc_match_associate): Improve diagnostics for the ASSOCIATE + statement. + +2018-08-22 Andrew Benson + + * module.c (load_generic_interfaces): Move call to find_symbol() + so that only occurs if actually needed. + +2018-08-22 Janus Weil + + PR fortran/86888 + * decl.c (gfc_match_data_decl): Allow allocatable components of + indirectly recursive type. + * resolve.c (resolve_component): Remove two errors messages ... + (resolve_fl_derived): ... and replace them by a new one. + +2018-08-21 Janne Blomqvist + + * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use + MAX_EXPR/MIN_EXPR unconditionally for real arguments. + * gfortran.texi (Compiler Characteristics): Document MAX/MIN + behavior wrt NaN. + +2018-08-21 Nicolas Koenig + Thomas Koenig + + PR fortran/25829 + * gfortran.texi: Add description of asynchronous I/O. + * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables + as volatile. + * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to + st_wait_async and change argument spec from ".X" to ".w". + (gfc_trans_wait): Pass ID argument via reference. + +2018-08-16 Nathan Sidwell + + * cpp.c (dump_macro): Use cpp_user_macro_p. + +2018-08-14 Janus Weil + + PR fortran/86116 + * interface.c (compare_type): Remove a CLASS/TYPE check. + (compare_type_characteristics): New function that behaves like the old + 'compare_type'. + (gfc_check_dummy_characteristics, gfc_check_result_characteristics): + Call 'compare_type_characteristics' instead of 'compare_type'. + +2018-08-12 Paul Thomas + + PR fortran/66679 + * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Class array + elements are returned as references to the data element. Get + the class expression by stripping back the references. Use this + for the element size. + +2018-08-12 Paul Thomas + + PR fortran/86906 + * resolve.c (resolve_fl_variable_derived): Check if the derived + type is use associated before checking for the host association + error. + +2018-08-10 Janus Weil + + PR fortran/57160 + * invoke.texi (frontend-optimize): Mention short-circuiting. + * options.c (gfc_post_options): Disable -ffrontend-optimize with -Og. + * resolve.c (resolve_operator): Warn about short-circuiting only with + -ffrontend-optimize. + * trans-expr.c (gfc_conv_expr_op): Use short-circuiting operators only + with -ffrontend-optimize. Without that flag, make sure that both + operands are evaluated. + +2018-08-08 Nathan Sidwell + + * cpp.c (cb_file_change): Use linemap_included_from. + +2018-08-07 Cesar Philippidis + + * trans-stmt.h: Remove stale reference to trans-openacc.c. + +2018-08-04 Janus Weil + + PR fortran/45521 + * interface.c (gfc_compare_interfaces): Apply additional + distinguishability criteria of F08 to operator interfaces. + +2018-07-31 Andre Vieira + + Revert 'AsyncI/O patch committed' + 2018-07-25 Nicolas Koenig + Thomas Koenig + + PR fortran/25829 + * gfortran.texi: Add description of asynchronous I/O. + * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables + as volatile. + * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to + st_wait_async and change argument spec from ".X" to ".w". + (gfc_trans_wait): Pass ID argument via reference. + +2018-07-25 Nicolas Koenig + Thomas Koenig + + PR fortran/25829 + * gfortran.texi: Add description of asynchronous I/O. + * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables + as volatile. + * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to + st_wait_async and change argument spec from ".X" to ".w". + (gfc_trans_wait): Pass ID argument via reference. + +2018-07-20 Martin Sebor + + PR middle-end/82063 + * gfortran.h (gfc_handle_option): Change function argument + to HOST_WIDE_INT. + * options.c (gfc_handle_option): Same. + +2018-07-20 Andrew Benson + + * gfortran.h (gfc_symbol): Add pointer to next derived type. + (gfc_dt_list, gfc_get_dt_list): Remove. + (gfc_namespace): Replace gfc_dt_list with gfc_symbol. + * parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with + simple nullification of gfc_derived_types. + * resolve.c (resolve_global_procedure): Replace gfc_dt_list with + gfc_symbol. + (add_dt_to_dt_list): Change derived type linked list insertion to + utilize dt_next pointers in gfc_symbol. + * symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2) + (get_iso_c_binding_dt, generate_isocbinding_symbol): Remove + gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type + linked list search/insertion to utilize dt_next pointers in gfc_symbol. + * trans-types.c (gfc_get_derived_type): Change derived type linked + list search to utilize dt_next pointers in gfc_symbol. + +2018-07-19 Kyrylo Tkachov + + * trans-intrinsic.c: (gfc_conv_intrinsic_minmax): Emit MIN_MAX_EXPR + or IFN_FMIN/FMAX sequence to calculate the min/max when possible. + +2018-07-18 Janus Weil + Thomas Koenig + + PR fortran/85599 + * dump-parse-tree.c (show_attr): Add handling of implicit_pure. + * frontend-passes.c (do_warn_function_elimination): Do not warn for + pure functions. + * gfortran.h: Add prototypes for gfc_pure_function and + gfc_implicit_pure_function. + * gfortran.texi: Add chapter on evaluation of logical expressions. + * invoke.texi: Mention that -Wfunction-elimination is implied + by -Wextra. + * lang.opt: Make -Wextra imply -Wfunction-elimination. + * resolve.c (pure_function): Rename to gfc_pure_function. + (gfc_implicit_pure_function): New function. + (check_pure_function): Use it here. + (impure_function_callback): New function. + (resolve_operator): Call it via gfc_expr_walker. + +2018-07-16 Fritz Reese + + PR fortran/83184 + * decl.c (match_old_style_init): Initialize locus of variable expr when + creating a data variable. + (match_clist_expr): Verify array is explicit shape/size before + attempting to allocate constant array constructor. + +2018-07-16 Fritz Reese + + PR fortran/86417 + * module.c (mio_component): Set component->loc when loading from module. + +2018-07-10 Jakub Jelinek + + PR fortran/86421 + * module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and + _UVAL suffixes. + (mio_omp_declare_simd): Save and restore ref, val and uval modifiers + on linear clauses. Initialize n->where to gfc_current_locus. + +2018-07-05 Paul Thomas + + PR fortran/86408 + * resolve.c.c (resolve_contained_fntype): Reference to C418 is + in F2008 and not F2003. + (resolve_function): Ditto in error message. Also, exclude + deferred character length results from the error. + +2018-07-05 Fritz Reese + + PR fortran/83183 + PR fortran/86325 + * expr.c (class_allocatable, class_pointer, comp_allocatable, + comp_pointer): New helpers. + (component_initializer): Generate EXPR_NULL for allocatable or pointer + components. Do not generate initializers for components within BT_CLASS. + Do not assign to comp->initializer. + (gfc_generate_initializer): Use new helpers; move code to generate + EXPR_NULL for class allocatable components into component_initializer(). + +2018-07-04 Jerry DeLisle + + PR fortran/82009 + * trans-decl.c (gfc_process_block_locals): Delete assert and set + saved_local_decls = NULL_TREE. + +2018-07-02 Richard Biener + + PR lto/86321 + * trans-types.c (gfc_get_array_type_bounds): Unshare TYPE_FIELDs + for the distinct type copy. + +2018-07-02 Paul Thomas + + PR fortran/82969 + PR fortran/86242 + * trans-array.c (structure_alloc_comps): Do not explicitly copy + procedure pointer components. + +2018-07-02 Paul Thomas + + PR fortran/45305 + * expr.c : Add a prototype for scalarize_intrinsic_call. + (gfc_simplify_expr): Use scalarize_intrinsic_call for elemental + intrinsic function calls. + (scalarize_intrinsic_call): Add 'init_flag' argument. Check if + the expression or any of the actual argument expressions are + NULL. Before calling gfc_check_init_expr, check 'init_flag'. + Only simplify the scalarized expressions if there are no errors + on the stack. + (gfc_check_init_expr): Set 'init_flag' true in the call to + scalarize_intrinsic_call. + +2018-06-28 Fritz Reese + + PR fortran/82865 + * decl.c (gfc_match_type): Refactor and check for PDT declarations. + +2018-06-28 Martin Liska + + * gfortranspec.c: Include opt-suggestions.h. + +2018-06-25 Fritz Reese + + PR fortran/82972 + PR fortran/83088 + PR fortran/85851 + * expr.c (component_initializer): Assign init expr to c->initializer. + (generate_isocbinding_initializer): New. + (gfc_generate_initializer): Call generate_isocbinding_initializer to + generate initializers for c_ptr and c_funptr with -finit-derived. + +2018-06-23 Jerry DeLisle + + PR fortran/85983 + * interface.c (check_dtio_interface1): Delete assert. + +2018-06-22 Paul Thomas + Rainer Orth + + PR fortran/86281 + * resolve.c (resolve_contained_fntype): Check for the charlen + before testing the length. + +2018-06-21 Paul Thomas + + PR fortran/49630 + * resolve.c (resolve_contained_fntype): Change standard ref. + from F95 to F2003: C418. Correct a spelling error in a comment. + It is an error for an abstract interface to have an assumed + character length result. + * trans-expr.c (gfc_conv_procedure_call): Likewise change the + standard reference. + +2018-06-21 Paul Thomas + + PR fortran/83118 + * resolve.c (resolve_ordinary_assign): Force the creation of a + vtable for assignment of non-polymorphic expressions to an + unlimited polymorphic object. + * trans-array.c (gfc_alloc_allocatable_for_assignment): Use the + size of the rhs type for such assignments. Set the dtype, _len + and vptrs appropriately. + * trans-expr.c (gfc_trans_assignment): Force the use of the + _copy function for these assignments. + +2018-06-20 Chung-Lin Tang + Thomas Schwinge + Cesar Philippidis + + * gfortran.h (gfc_omp_clauses): Add unsigned if_present, finalize + bitfields. + * openmp.c (enum omp_mask2): Remove OMP_CLAUSE_PRESENT_OR_*. Add + OMP_CLAUSE_{IF_PRESENT,FINALIZE}. + (gfc_match_omp_clauses): Update handling of copy, copyin, copyout, + create, deviceptr, present_of_*. Add support for finalize and + if_present. + (OACC_PARALLEL_CLAUSES): Remove PRESENT_OR_* clauses. + (OACC_KERNELS_CLAUSES): Likewise. + (OACC_DATA_CLAUSES): Likewise. + (OACC_DECLARE_CLAUSES): Likewise. + (OACC_UPDATE_CLAUSES): Add IF_PRESENT clause. + (OACC_ENTER_DATA_CLAUSES): Remove PRESENT_OR_* clauses. + (OACC_EXIT_DATA_CLAUSES): Add FINALIZE clause. + (gfc_match_oacc_declare): Update to OpenACC 2.5 semantics. + * trans-openmp.c (gfc_trans_omp_clauses): Add support for IF_PRESENT + and FINALIZE. + +2018-06-18 Eric Botcazou + + * trans-decl.c (gfc_get_fake_result_decl): Revert latest change. + +2018-06-17 Eric Botcazou + + * trans-decl.c (nonlocal_dummy_decl_pset): Delete. + (nonlocal_dummy_decls): Likewise. + (gfc_nonlocal_dummy_array_decl): Likewise. + (gfc_get_symbol_decl): Do not call gfc_nonlocal_dummy_array_decl. + (gfc_get_fake_result_decl): Do not generate a new DECL if simply + reusing the result of a recursive call. + (gfc_generate_function_code): Do not create, insert and destroy + nonlocal_dummy_decls. + +2018-06-13 Steven G. Kargl + + PR fortran/86110 + * array.c (gfc_resolve_character_array_constructor): Avoid NULL + pointer dereference. + +2018-06-13 Cesar Philippidis + + PR fortran/85703 + * parse.c (decode_oacc_directive): Set gfc_matching_function + to false. + (decode_omp_directive): Likewise. + +2018-06-13 Cesar Philippidis + + PR fortran/85702 + * openmp.c (gfc_match_oacc_wait): Use %C to report error location. + +2018-06-12 David Malcolm + + PR other/69968 + * misc.c (gfc_closest_fuzzy_match): Update for renaming of + levenshtein_distance to get_edit_distance. + +2018-06-12 Steven G. Kargl + + PR fortran/44491 + * expr.c (gfc_check_assign): Select non-NULL locus. + +2018-06-11 Janus Weil + + PR fortran/45521 + * interface.c (compare_ptr_alloc): New function. + (generic_correspondence): Call it. + +2018-06-10 Thomas Koenig + + * gfortran.h (gfc_expr): Add no_bounds_check field. + * frontend-passes.c (get_array_inq_function): Set no_bounds_check + on function and function argument. + (inline_matmul_assign): Set no_bounds_check on zero expression + and on lhs of zero expression. + Also handle A1B2 case if realloc on assigment is active. + * trans-array.c (gfc_conv_array_ref): Don't do range checking + if expr has no_bounds_check set. + (gfc_conv_expr_descriptor): Set no_bounds_check on ss if expr + has it set. + * trans-expr.c (gfc_trans_assignment_1): Set no_bounds_check + on lss and lss if the corresponding expressions have it set. + +2018-06-10 Dominique d'Humieres + + PR fortran/79854 + * trans-const.c: Remove include "diagnostic-core.h". + (gfc_conv_constant_to_tree): Replace fatal_error with gcc_unreachable. + +2018-06-10 Janus Weil + + PR fortran/85088 + * decl.c (match_attr_spec): Synchronize the DECL_* enum values with the + INTENT_* values from the enum 'sym_intent'. Call 'match_intent_spec' + and remove a TODO note. + * gfortran.h: Add a comment to sym_intent. + +2018-06-09 Steven G. Kargl + + PR fortran/38351 + * resolve.c (resolve_operator): Provide better error message for + derived type entity used in an binary intrinsic numeric operator. + +2018-06-09 Steven G. Kargl + + PR fortran/85138 + PR fortran/85996 + PR fortran/86051 + * decl.c (gfc_match_char_spec): Use private namespace in attempt to + reduce a charlen to a constant. + +2018-06-09 Steven G. Kargl + + PR fortran/78278 + * data.c (gfc_assign_data_value): Re-arrange code to allow for + an error for double initialization of CHARACTER entities. + +2018-06-09 Steven G. Kargl + + PR fortran/63514 + * symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588. + +2018-06-08 Thomas Koenig + + PR fortran/85631 + * trans.h (gfc_ss): Add field no_bounds_check. + * trans-array.c (gfc_conv_ss_startstride): If flag_realloc_lhs and + ss->no_bounds_check is set, do not use runtime checks. + * trans-expr.c (gfc_trans_assignment_1): Set lss->no_bounds_check + for reallocatable lhs. + +2018-06-08 Steven G. Kargl + + PR fortran/86059 + * array.c (match_array_cons_element): NULL() cannot be in an + array constructor. + +2018-06-08 Steven G. Kargl + + PR fortran/78571 + * data.c (create_character_initializer): Return early if type is + incompatible with CHARACTER. + +2018-06-07 Steven G. Kargl + + PR fortran/86045 + * simplify.c (gfc_simplify_mod): Re-arrange code to test whether + 'P' is zero and issue an error if it is. + +2018-06-06 Thomas Koenig + + PR fortran/85641 + * frontend-passes.c (is_fe_temp): Add prototype. + (realloc_string_callback): Early return for frontend-generated + temporary. + +2018-06-05 Cesar Philippidis + + PR fortran/85701 + + * openmp.c (gfc_resolve_oacc_declare): Error on functions and + subroutine data clause arguments. + +2018-06-04 Steven G. Kargl + + PR fortran/85981 + * resolve.c (resolve_allocate_deallocate): Check errmsg is default + character kind. + +2018-06-03 Paul Thomas + + PR fortran/36497 + * decl.c (variable_decl): Use gfc_add_type for cray pointees. + +2018-06-01 Steven G. Kargl + + PR fortran/63570 + * check.c (gfc_check_random_init): New function. Check arguments of + RANDOM_INIT. + * gfortran.h (GFC_ISYM_RANDOM_INIT): New enum token. + * intrinsic.c (add_subroutines): Add RANDOM_INIT to list of + subroutines. + (gfc_check_intrinsic_standard): Introduce Fortran 2018 check. + * intrinsic.h: Add prototypes for gfc_check_random_init and + gfc_resolve_random_init + * intrinsic.texi: Document new intrinsic subprogram. + * iresolve.c (gfc_resolve_random_init): Resolve routine name. + * trans-decl.c: Declare gfor_fndecl_random_init + * trans-intrinsic.c (conv_intrinsic_random_init): New function. + Translate call to RANDOM_INIT. + (gfc_conv_intrinsic_subroutine): Call it. + * trans.h: Declare gfor_fndecl_random_init + +2018-05-27 Steven G. Kargl + + * decl.c (match_data_constant): Fortran 2018 allows pointer + initialization in a data statement. + +2018-05-25 Janus Weil + + PR fortran/85839 + * match.c (gfc_match_block_data): Call gfc_notify_std to warn about + an obsolescent feature in Fortran 2018. + (gfc_match_equivalence): Ditto. + * resolve.c (resolve_common_blocks): Ditto. + (gfc_resolve_forall): Ditto. + * symbol.c (gfc_define_st_label): Ditto. + +2018-05-24 Steven G. Kargl + + PR fortran/85543 + * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL + pointer dereference. + +2018-05-24 Steven G. Kargl + + PR fortran/85780 + * resolve.c (resolve_fl_procedure): Avoid NULL dereference. + +2018-05-24 Steven G. Kargl + + PR fortran/85779 + * decl.c (gfc_match_derived_decl): Fix NULL point dereference. + +2018-05-24 Steven G. Kargl + + PR fortran/85895 + * resolve.c (resolve_sync): Resolve expression before checking for + an error. + +2018-05-22 Janus Weil + + PR fortran/85841 + * libgfortran.h: Remove the macros GFC_STD_F2008_TS and + GFC_STD_OPT_F08TS. + * error.c (notify_std_msg): Remove GFC_STD_F2008_TS. + * options.c (set_default_std_flags): Ditto. + (gfc_handle_option): Make -std=f2008ts an alias for -std=f2018. + * array.c (gfc_match_array_spec): Replace GFC_STD_F2008_TS by + GFC_STD_F2018. + * check.c (gfc_check_atomic, gfc_check_event_query, + gfc_check_c_f_pointer, gfc_check_c_f_procpointer, gfc_check_c_funloc, + gfc_check_c_loc, gfc_check_num_images, gfc_check_this_image): Ditto. + * decl.c (gfc_verify_c_interop_param, gfc_match_decl_type_spec): Ditto. + * intrinsic.c (add_functions, add_subroutines, + gfc_check_intrinsic_standard): Ditto. + * iso-c-binding.def: Ditto. + * iso-fortran-env.def: Ditto. + * match.c (gfc_match_event_post, gfc_match_event_wait, + gfc_match_fail_image, gfc_match_form_team, gfc_match_change_team, + gfc_match_end_team, gfc_match_sync_team): Ditto. + * gfortran.texi: Remove mention of -std=f2008ts. + Move TSs into F2018 section. + * invoke.texi: Update documentation of -std=f2008ts. + +2018-05-21 Janus Weil + + PR fortran/85841 + * libgfortran.h: New macros GFC_STD_OPT_*. + * error.c (notify_std_msg): New function. + (gfc_notify_std): Adjust such that it can handle combinations of + GFC_STD_* flags in the 'std' argument, not just a single one. + * match.c (match_arithmetic_if, gfc_match_if): Reject arithmetic if + in Fortran 2018. + (gfc_match_stopcode): Use GFC_STD_OPT_* macros. + * options.c (set_default_std_flags): Warn for F2018 deleted features + by default. + (gfc_handle_option): F2018 deleted features are allowed in earlier + standards. + * symbol.c (gfc_define_st_label, gfc_reference_st_label): Reject + nonblock do constructs in Fortran 2018. + +2018-05-20 Paul Thomas + + PR fortran/80657 + * resolve.c (flag_fn_result_spec): Use the 'sym' argument to + test for self refs to the function result in the character len + expression. If a self reference is found, emit an error and + return true. + (resolve_fntype): Use the function symbol in the calls to the + above. + +2018-05-20 Paul Thomas + + PR fortran/49636 + * trans-array.c (gfc_get_array_span): Renamed from + 'get_array_span'. + (gfc_conv_expr_descriptor): Change references to above. + * trans-array.h : Add prototype for 'gfc_get_array_span'. + * trans-intrinsic.c (gfc_conv_associated): Add pre and post + blocks for 'arg1'. + * trans-stmt.c (trans_associate_var): If the associate name is + a subref array pointer, use gfc_get_array_span for the span. + +2018-05-20 Paul Thomas + + PR fortran/82275 + * match.c (gfc_match_type_spec): Go through the array ref and + decrement 'rank' for every dimension that is an element. + +2018-05-19 Paul Thomas + + PR fortran/82923 + PR fortran/66694 + PR fortran/82617 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Set the + charlen backend_decl of the rhs expr to ss->info->string_length + so that the value in the current scope is used. + +2018-05-13 Steven G. Kargl + + PR fortran/63529 + * gfortran.texi: Clarify documentation for Cray pointer and + assumed-sized array. + +2018-05-13 Paul Thomas + + PR fortran/85742 + * trans-types.c (gfc_get_dtype_rank_type): Reorder evaluation + of 'size'. If the element type is a pointer use the size of the + TREE_TYPE of the type, unless it is VOID_TYPE. In this latter + case, set the size to zero. + +2018-05-13 Steven G. Kargl + + * gfortran.h: Remove prototype. + * symbol.c (gfc_new_undo_checkpoint): Remove unused function. + +2018-05-11 Steven G. Kargl + + PR fortran/85542 + * expr.c (check_inquiry): Avoid NULL pointer dereference. + +2018-05-10 Steven G. Kargl + + PR fortran/85687 + * check.c (gfc_check_rank): Check that the argument is a data object. + +2018-05-10 Steven G. Kargl + + PR fortran/85521 + * array.c (gfc_resolve_character_array_constructor): Substrings + with upper bound smaller than lower bound are zero length strings. + +2018-05-10 Steven G. Kargl + + PR fortran/70870 + * data.c (gfc_assign_data_value): Check that a data object does + not also have default initialization. + +2018-05-10 Marek Polacek + + PR fortran/85735 + * options.c (gfc_post_options): Set main_input_filename. + +2018-05-10 Thomas Koenig + + PR fortran/54613 + * intrinsic.texi: Document BACK for MINLOC and MAXLOC. + +2018-05-10 Paul Thomas + + PR fortran/68846 + PR fortran/70864 + * resolve.c (get_temp_from_expr): The temporary must not have + dummy or intent attributes. + +2018-05-08 Thomas Koenig + + PR fortran/54613 + * check.c (gfc_check_minmaxloc): Remove error for BACK not being + implemented. Use gfc_logical_4_kind for BACK. + * simplify.c (min_max_choose): Add optional argument back_val. + Handle it. + (simplify_minmaxloc_to_scalar): Add argument back_val. Pass + back_val to min_max_choose. + (simplify_minmaxloc_to_nodim): Likewise. + (simplify_minmaxloc_to_array): Likewise. + (gfc_simplify_minmaxloc): Add argument back, handle it. + Pass back_val to specific simplification functions. + (gfc_simplify_minloc): Remove ATTRIBUTE_UNUSED from argument back, + pass it on to gfc_simplify_minmaxloc. + (gfc_simplify_maxloc): Likewise. + * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Adjust + comment. If BACK is true, use greater or equal (or lesser or + equal) insteal of greater (or lesser). Mark the condition of + having found a value which exceeds the limit as unlikely. + +2018-05-07 Jeff Law + + * scanner.c (preprocessor_line): Call linemap_add after a line + directive that changes the current filename. + +2018-05-06 Andre Vehreschild + + PR fortran/85507 + * dependency.c (gfc_dep_resolver): Revert looking at coarray dimension + introduced by r259385. + * trans-intrinsic.c (conv_caf_send): Always report a dependency for + same variables in coarray assignments. + +2018-05-02 Tom de Vries + + PR libgomp/82428 + * f95-lang.c (DEF_GOACC_BUILTIN_ONLY): Define. + +2018-04-24 Steven G. Kargl + + PR fortran/85520 + * decl.c (gfc_match_char_spec): Check for negative length and set to 0. + +2018-04-14 Andre Vehreschild + + PR fortran/81773 + PR fortran/83606 + * dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored + during dependency computation. They define no data dependency. + * trans-array.c (conv_array_index_offset): The stride can not be set + here, prevent fail. + * trans-intrinsic.c (conv_caf_send): Add creation of temporary array + for caf_get's result and copying to the array with vectorial + indexing. + +2018-04-14 Thomas Koenig + + PR fortran/85387 + * frontend-passes.c (traverse_io_block): Check for start, end or + stride being defined by an outer implied DO loop. + +2018-04-12 Thomas Koenig + + PR fortran/83064 + PR testsuite/85346 + * trans-stmt.c (gfc_trans_forall_loop): Use annot_expr_ivdep_kind + for annotation and remove dependence on -ftree-parallelize-loops. + +2018-04-10 Jakub Jelinek + + PR fortran/85313 + * openmp.c (resolve_omp_do): Remove bogus if (j < i) break;. + (resolve_oacc_nested_loops): Likewise. Formatting fix. + +2018-04-09 Thomas Koenig + + PR fortran/83064 + * trans-stmt.c (gfc_trans_forall_loop): Remove annotation for + parallell processing of DO CONCURRENT -ftree-parallelize-loops + is set. + +2018-04-09 Thomas Koenig + + PR fortran/51260 + * resolve.c (resolve_variable): Simplify cases where access to a + parameter array results in a single constant. + +2018-04-02 Thomas Koenig + + PR fortran/85102 + * decl.c (variable_decl): If upper or lower bounds simplify + to a constant, use that. + +2018-03-30 Paul Thomas + + PR fortran/84931 + * simplify.c (gfc_convert_constant): Handle case of array + constructors within an array that has no iterator and improve + the conciseness of this section of code. + +2017-03-30 Thomas Koenig + + PR fortran/85111 + * array.c (gfc_resolve_character_array_constructor): Early + exit for zero-size arrays. + * simplify.c (simplify_transformation_to_array): Exit early + if the result size is zero. + (simplify_minmaxloc_to_array): Likewise. + +2018-03-28 Mikael Morin + + PR fortran/69497 + * symbol.c (gfc_symbol_done_2): Start freeing namespaces + from the root. + (gfc_free_namespace): Restore assert (revert r258839). + +2018-03-28 Jakub Jelinek + + * gfortran.h (gfc_dt): Rename default_exp field to dec_ext. + * ioparm.def (IOPARM_dt_default_exp): Rename to ... + (IOPARM_dt_dec_ext): ... this. + * trans-io.c (build_dt): Adjust for default_exp renaming to + dec_ext and IOPARM_dt_default_exp renaming to IOPARM_dt_dec_ext. + * io.c (match_io): Likewise. + +2018-03-27 Thomas Koenig + + PR fortran/85084 + * frontend-passes.c (gfc_run_passes): Do not run front-end + optimizations if a previous error occurred. + +2018-03-27 Thomas Koenig + Harald Anlauf + + PR fortran/85083 + * primary.c (gfc_convert_to_structure_constructor): Check + conformance of argument types in structure constructor. + +2018-03-26 Thomas Koenig + + PR fortran/66709 + * io.c: Include constructor.h. + (resolve_tag_format): For a constant character array, concatenate + into a single character expression. + +2018-03-25 Seth Johnson + Dominique d'Humieres + + PR fortran/84924 + * check.c (gfc_check_c_f_pointer): Allow scalar noninteroperable + scalar derived type with -std=f2003 and -std=f2008. + +2018-03-24 Jerry DeLisle + Dominique d'Humieres + + PR fortran/69497 + * symbol.c (gfc_free_namespace): Delete the assert and only if + refs count is equals zero, free the namespace. Otherwise, + something is halfway and other errors will resound. + +2018-03-24 Thomas Koenig + + PR fortran/70068 + * expr.c (find_substring_ref): Change types of start, end + and length variables to gfc_charlen_t. Set length to zero + for empty substring. + +2018-03-24 Steven G. Kargl + + PR fortran/42651 + * decl.c (check_function_name): Improved error message + (gfc_match_volatile, gfc_match_asynchronous) Use check_function_name. + +2018-03-22 Steven G. Kargl + + PR fortran/84922 + * decl.c (get_proc_name): If the MODULE prefix appears in interface + body, then it must appear on the contained subroutine or function. + While here, fix nearby mis-indented code. + +2018-03-21 Thomas Koenig + Harald Anlauf + + PR fortran/84957 + * trans-types.c (gfc_sym_type): Do not dereference NULL pointer. + +2018-03-21 Janne Blomqvist + + PR fortran/84615 + * trans-expr.c (gfc_conv_procedure_call): Convert charlen to + gfc_charlen_type_node when calling procedure. + +2018-03-20 Steven G. Kargl + + PR fortran/85001 + * interface.c (symbol_rank): Remove bogus null pointer check that + crept in when translating a ternary operator into an if-else + constructor. + +2018-03-19 Thomas Koenig + + PR fortran/84931 + * simplify.c (gfc_convert_constant): Correctly handle iterators + for type conversion. + +2018-03-18 Steven G. Kargl + + PR fortran/77414 + * decl.c (get_proc_name): Check for a subroutine re-defined in + the contain portion of a subroutine. Change language of existing + error message to better describe the issue. While here fix whitespace + issues. + +2018-03-18 Steven G. Kargl + + PR fortran/65453 + * decl.c (get_proc_name): Catch clash between a procedure statement + and a contained subprogram + +2018-03-16 Steven G. Kargl + + PR fortran/69395 + * decl.c (merge_array_spec): Correct the error condition. + +2018-03-15 Steven G. Kargl + + PR fortran/78741 + * decl.c (get_proc_name): Check for clash of entry name with + subroutine name. + +2018-03-15 Steven G. Kargl + + PR fortran/69395 + * decl.c (merge_array_spec): Limit the merging to maximum allowed + dimensions, and issue error message if limit is exceeded. + +2018-03-13 Steven G. Kargl + + * check.c (gfc_check_kill_sub): Remove check for INTEGER(4) or (8). + * intrinsic.c (add_functions): Remove reference to gfc_resolve_kill. + (add_subroutines): Remove reference to gfc_resolve_kill_sub. + * intrinsic.texi: Update documentation. + * iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove. + * trans-decl.c (gfc_build_intrinsic_function_decls): Add + gfor_fndecl_kill and gfor_fndecl_kill_sub + * trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new + functions. + (gfc_conv_intrinsic_function): Use conv_intrinsic_kill. + (gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub. + * trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub. + +2018-03-11 Paul Thomas + + PR fortran/84546 + * trans-array.c (structure_alloc_comps): Make sure that the + vptr is copied and that the unlimited polymorphic _len is used + to compute the size to be allocated. + * trans-expr.c (gfc_get_class_array_ref): If unlimited, use the + unlimited polymorphic _len for the offset to the element. + (gfc_copy_class_to_class): Set the new 'unlimited' argument. + * trans.h : Add the boolean 'unlimited' to the prototype. + +2018-03-11 Steven G. Kargl + + PR fortran/83939 + * resolve.c (resolve_fl_procedure): Enforce F2018:C15100. + +2018-03-11 Steven G. Kargl + + * check.c (gfc_check_kill): Check pid and sig are scalar. + (gfc_check_kill_sub): Restrict kind to 4 and 8. + * intrinsic.c (add_function): Sort keyword list. Add pid and sig + keywords for KILL. Remove redundant *back="back" in favor of the + original *bck="back". + (add_subroutines): Sort keyword list. Add pid and sig keywords + for KILL. + * intrinsic.texi: Fix documentation to consistently use pid and sig. + * iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8. Choose the + correct function. + (gfc_resolve_rename_sub): Add comment. + +2018-03-11 Thomas Koenig + + PR fortran/66128 + * simplify.c (simplify_transformation): Return default result for + empty array argument. + (gfc_simplify_all): Remove special-case handling for zerosize. + (gfc_simplify_any): Likewise. + (gfc_simplify_count): Likewise. + (gfc_simplify_iall): Likewise. + (gfc_simplify_iany): Likewise. + (gfc_simplify_iparity): Likewise. + (gfc_simplify_minval): Likewise. + (gfc_simplify_maxval): Likewise. + (gfc_simplify_norm2): Likewise. + (gfc_simplify_product): Likewise. + (gfc_simplify_sum): Likewise. + +2018-03-10 Steven G. Kargl + + PR fortran/84734 + * arith.c (check_result, eval_intrinsic): If result overflows, pass + the expression up the chain instead of a NULL pointer. + +2018-03-07 Steven G. Kargl + + PR fortran/64124 + PR fortran/70409 + * decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant. + +2017-03-06 Thomas Koenig + + PR fortran/84697 + PR fortran/66128 + * expr.c (simplify_parameter_variable): If p is a size zero array + and not an ARRAY_EXPR insert an empty array constructor and + return. + * gfortran.h: Add prototype for gfc_is_size_zero_array. + * simplify.c (is_size_zero_array): Make non-static and rename into + (gfc_is_size_zero_array): Check for parameter arrays of zero + size by comparing shape and absence of constructor. + (gfc_simplify_all): Use gfc_is_size_zero_array instead of + is_size_zero_array. + (gfc_simplify_count): Likewise. + (gfc_simplify_iall): Likewise. + (gfc_simplify_iany): Likewise. + (gfc_simplify_iparity): Likewise. + (gfc_simplify_minval): Likewise. + (gfc_simplify_maxval): Likewise. + (gfc_simplify_product): Likewise. + (gfc_simplify_sum): Likewise. + +2018-03-06 Steven G. Kargl + + PR fortran/56667 + * primary.c (match_sym_complex_part): Give the matcher for an implied + do-loop a chance to run. + +2018-03-03 Harald Anlauf + + PR fortran/71085 + * trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not + dereference NULL pointer. + +2018-03-03 Steven G. Kargl + + PR fortran/66128 + * simplify.c (is_size_zero_array): New function to check for size + zero array. + (gfc_simplify_all, gfc_simplify_any, gfc_simplify_count, + gfc_simplify_iall, gfc_simplify_iany, gfc_simplify_iparity, + gfc_simplify_minval, gfc_simplify_maxval, gfc_simplify_norm2, + gfc_simplify_product, gfc_simplify_sum): Use it, and implement + requirements from F2018. + +2018-03-03 Steven G. Kargl + + PR fortran/51434 + * simplify.c (gfc_simplify_transfer): Resolve mold. + +2018-03-03 Paul Thomas + + PR fortran/80965 + * resolve.c (build_loc_call): Change symtree name from 'loc' to + '_loc'. + +2018-03-01 Paul Thomas + + PR fortran/84219 + * target-memory.c (gfc_interpret_derived): Assert that BT_VOID + components are caf tokens. + (gfc_target_interpret_expr): Treat BT_VOID expressions as + integers. + +2018-03-01 Paul Thomas + + PR fortran/84538 + * class.c (class_array_ref_detected): Remove the condition that + there be no reference after the array reference. + (find_intrinsic_vtab): Remove excess whitespace. + * trans-array.c (gfc_conv_scalarized_array_ref): Rename 'tmp' + as 'base and call build_class_array_ref earlier. + +2018-02-28 Paul Thomas + + PR fortran/83901 + * trans-stmt.c (trans_associate_var): Make sure that the se + expression is a pointer type before converting it to the symbol + backend_decl type. + +2018-02-25 Steven G. Kargl + + PR fortran/83633 + * decl.c (variable_decl): Check that an explicit-shape-array with + nonconstant bounds is allowed. + +2018-02-25 Paul Thomas + + PR fortran/84523 + * trans-intrinsic.c (gfc_conv_allocated): If the argument se + has a pre block, add it to the expression pre block. + +2018-02-25 Thomas Koenig + + PR fortran/78238 + * gfortran.h (gfc_integer_4_kind): Define. + * resolve.c (resolve_select_type): Make sure that the + kind of c->high is gfc_integer_4_kind. + +2018-02-24 Steven G. Kargl + + PR fortran/30792 + * decl.c (gfc_match_data): Check for invalid substring in + data-implied-do + +2018-02-23 Steven G. Kargl + + * intrinsic.texi: Arguments to MATMUL cannot both be rank one. + +2018-02-23 Steven G. Kargl + + PR fortran/84511 + * trans-io.c (transfer_expr): Deal with C_LOC in transfer statement. + +2018-02-23 Steven G. Kargl + + PR fortran/84346 + * interface.c (compare_actual_formal): Issue error if keyword is + used in a statement function. + +2018-02-23 Jerry DeLisle + + PR fortran/84506 + * trans-io.c (set_parameter_value_inquire): Adjust range check of + negative unit values for kind=8 units to the kind=4 negative limit. + +2018-02-23 Paul Thomas + + PR fortran/83149 + * trans-types.c (gfc_sym_type): Test sym->ns->proc_name before + accessing its components. + +2018-02-23 Paul Thomas + + PR fortran/83149 + * trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name + before accessing its components. + +2018-02-23 Paul Thomas + + PR fortran/83148 + * trans-const.c : Clean up some whitespace issues. + * trans-expr.c (gfc_conv_initializer): If an iso_c_binding + derived type has a kind value of zero, set it to the default + integer kind. + +2018-02-23 Janne Blomqvist + + PR fortran/84519 + * trans-decl.c (gfc_build_builtin_function_decls): Add bool + argument to stop and error stop decls. + * trans-stmt.c (gfc_trans_stop): Add false value to argument + lists. + +2018-02-22 Janne Blomqvist + + PR 78534 + PR 84509 + * trans-decl.c (gfc_build_builtin_function_decls): Pass + gfc_int8_type node to pause_numeric, size_type_node to + pause_string. + * trans-stmt.c (gfc_trans_pause): Likewise. + +2018-02-22 Janne Blomqvist + + * gfortran.texi: Update Coarray API description. + * trans-decl.c (gfc_build_builtin_function_decls): Use size_t for + character lengths, int for exit codes. + (generate_coarray_sym_init): Use size_t for character length. + * trans-intrinsic.c (conv_co_collective): Likewise. + * trans-stmt.c (gfc_trans_lock_unlock): Likewise. + (gfc_trans_event_post_wait): Likewise. + (gfc_trans_sync): Likewise. + (gfc_trans_stop): Use size_t for character lengths, int for exit + codes. + +2018-02-20 Thomas Koenig + + PR fortran/48890 + PR fortran/83823 + * primary.c (gfc_convert_to_structure_constructor): + For a constant string constructor, make sure the length + is correct. + +2018-02-19 Paul Thomas + + PR fortran/83344 + PR fortran/83975 + * resolve.c (resolve_assoc_var): Rearrange the logic for the + determination of the character length of associate names. If + the associate name is missing a length expression or the length + expression is not a constant and the target is not a variable, + make the associate name allocatable and deferred length. + * trans-decl.c (gfc_get_symbol_decl): Null the character length + backend_decl for deferred length associate names that are not + variables. Set 'length' to gfc_index_zero_node for character + associate names, whose character length is a PARM_DECL. + +2018-02-19 Thomas Koenig + + PR fortran/35339 + * frontend-passes.c (traverse_io_block): Remove workaround for + PR 80945. + +2018-02-19 Andre Vehreschild + + * gfortran.texi: Document additional src/dst_type. Fix some typos. + * trans-decl.c (gfc_build_builtin_function_decls): Declare the new + argument of _caf_*_by_ref () with * e { get, send, sendget }. + * trans-intrinsic.c (gfc_conv_intrinsic_caf_get): Add the type of the + data referenced when generating a call to caf_get_by_ref (). + (conv_caf_send): Same but for caf_send_by_ref () and + caf_sendget_by_ref (). + +2018-02-18 Jerry DeLisle + + PR fortran/84389 + * io.c (check_format): Allow FMT_COLON. + +2018-02-18 Paul Thomas + + PR fortran/80945 + * trans-array.c (gfc_conv_expr_descriptor): Set parmtype from + the typenode in the case of deferred length characters. + +2018-02-17 Thomas Koenig + + PR fortran/84270 + * frontend-passes (scalarized_expr): If the expression + is an assumed size array, leave in the last reference + and pass AR_SECTION instead of AR_FULL to gfc_resolve + in order to avoid an error. + +2018-02-17 Paul Thomas + + PR fortran/84115 + * resolve.c (resolve_assoc_var): If a non-constant target expr. + has no string length expression, make the associate variable + into a deferred length, allocatable symbol. + * trans-decl.c (gfc_is_reallocatable_lhs): Add and use a ptr to + the symbol. + * trans-stmt.c (trans_associate_var): Null and free scalar + associate names that are allocatable. After assignment, remove + the allocatable attribute to prevent reallocation. + +2018-02-16 Jakub Jelinek + + PR fortran/84418 + * trans-openmp.c (gfc_trans_omp_clauses): For OMP_CLAUSE_LINEAR_REF + kind set OMP_CLAUSE_LINEAR_STEP to TYPE_SIZE_UNIT times last_step. + +2018-02-16 Dominique d'Humieres + + PR fortran/84354 + * decl.c (gfc_get_pdt_instance): Replace '%qs' with %qs. + +2018-02-15 Janus Weil + + PR fortran/84409 + * interface.c (check_dtio_arg_TKR_intent): Add a check for character + length. + +2018-02-14 Janus Weil + + PR fortran/84385 + * match.c (gfc_match_select_type): Fix check for selector in + SELECT TYPE statement. + +2018-02-13 Janus Weil + + PR fortran/84313 + * symbol.c (check_conflict): Reject procedure pointers in common blocks. + +2018-02-13 Alastair McKinstry + Janne Blomqvist + + * module.c (dump_module): Use lbasename to ensure that module + files are reproducible. + +2018-02-12 Janus Weil + + PR fortran/84273 + * resolve.c (resolve_component): Fix checks of passed argument in + procedure-pointer components. + +2018-02-11 Francois-Xavier Coudert + + PR fortran/35299 + * resolve.c (resolve_formal_arglist): Update error message. + +2018-02-11 Andre Vehreschild + + * gfortran.texi: Fix typos in documentation of caf_register (). + * trans-array.c (structure_alloc_comps): Only register a component of + a derived typed corray, not of an ultimate component coarray. + +2018-02-11 Steven G. Kargl + + PR fortran/54223 + PR fortran/84276 + * interface.c (compare_actual_formal): Add in_statement_function + bool parameter. Skip check of INTENT attribute for statement + functions. Arguments to a statement function cannot be optional, + issue error for missing argument. + (gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Use + in_statement_function. + +2018-02-11 Paul Thomas + + PR fortran/84074 + * trans-expr.c (gfc_conv_derived_to_class): Set the use_offset + flag. If the is a vector subscript or the expression is not a + variable, make the descriptor one-based. + +2018-02-10 Paul Thomas + + PR fortran/84141 + PR fortran/84155 + * trans-array.c (gfc_array_init_size): Revert the change made + in revision 257356 setting the dtype. + * trans-types.c (gfc_get_dtype): Do not use the cached dtype. + Call gfc_get_dtype_rank_type every time. + + PR fortran/56691 + * trans-array.c (gfc_conv_expr_descriptor): If the source array + is a descriptor type, use its offset, removing the condition + that is be a class expression. + +2018-02-07 Steven G. Kargl + + PR fortran/82994 + * match.c (gfc_match_deallocate): Check for NULL pointer. + +2018-02-07 Thomas Koenig + + PR fortran/68560 + * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function. + (gfc_conv_intrinsic_function): Call it. + +2018-02-07 Steven G. Kargl + + PR fortran/82049 + * match.c (gfc_match_type_spec): If the charlen is non-NULL, then + try to resolve it. While here return early if possible. + +2018-02-04 Paul Thomas + + PR fortran/84115 + * trans-decl.c (gfc_get_symbol_decl): Do not finish the decl of + 'length' if the symbol charlen backend_decl is an indirect ref. + +2018-02-03 Paul Thomas + + PR fortran/84141 + PR fortran/84155 + * trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype + use gfc_get_dtype_rank_type. + +2018-02-01 Janne Blomqvist + + PR 83975 + PR 83344 + * resolve.c (resolve_assoc_var): Generate an error if + target length unknown. + +2018-02-01 Janne Blomqvist + + PR fortran/83705 + * simplify.c (gfc_simplify_repeat): Increase limit for deferring + to runtime, print a warning message. + +2018-01-31 Jakub Jelinek + + PR fortran/84116 + * openmp.c (gfc_match_omp_clauses): If all the linear + gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist + nor set *head = NULL. Formatting fixes. + +2018-01-31 Paul Thomas + + PR fortran/84088 + * trans-expr.c (gfc_conv_procedure_call): If the parm expr is + an address expression passed to an assumed rank dummy, convert + to an indirect reference. + +2018-01-31 Thomas Koenig + + * dump-parse-tree.c (write_proc): Use sym_name (which may + be sym->binding_label) instead of sym->name. + +2018-01-31 Janne Blomqvist + + * trans-const.c (gfc_conv_string_init): Use gfc_charlen_t instead + of int for slen. + +2018-01-31 Janne Blomqvist + + PR fortran/78534 + * trans-expr.c (fill_with_spaces): Use memset instead of + generating loop. + (gfc_trans_string_copy): Improve opportunity to use builtins with + constant lengths. + +2018-01-30 Jakub Jelinek + + PR debug/84131 + * trans-array.c (gfc_get_descriptor_offsets_for_info): Set *data_off + to DATA_FIELD's offset rather than OFFSET_FIELD's offset. + +2018-01-30 Thomas Koenig + + PR fortran/84134 + * array.c (gfc_ref_dimen_size): Whitespace fixes. If stride is + zero, return false. + +2018-01-30 Thomas Koenig + + PR fortran/84133 + * frontend-passes (matmul_to_var_expr): Return early if + in association list. + (inline_matmul_assign): Likewise. + +2017-01-29 Thomas Koenig + + PR fortran/84073 + * resolve.c (resolve_component): Ensure BIND(C) character + components have length one. + (resolve_symbol): Likewise for variables. + +2018-01-27 Jakub Jelinek + + PR fortran/84065 + * decl.c (add_init_expr_to_sym): Ignore initializers for too large + lengths. + +2018-01-26 Damian Rouson + Alessandro Fanfarillo + Soren Rasmussen + + Partial support for Fortran 2018 teams features. + + * array.c (gfc_match_array_ref): add team attribute in coarray + transfers. + * check.c (gfc_check_get_team, gfc_check_team_number): add new + functions for get_team and team_number. + * dump-parse-tree.c (show_code_node): add new statements: form team, + change team, end team, and sync team. + * expr.c (gfc_find_team_co): add new function. + * gfortran.h: add new statements. + * intrinsic.c (add_functions): add get_team and team_number functions. + * intrinsic.h: add get_team and team_number prototypes for check, + simplify, and resolve. + * iresolve.c (gfc_resolve_get_team, gfc_resolve_team_number): add new + functions. + * iso-fortran-env.def: add the team_type derived type. + * match.c (gfc_match_if, gfc_match_form_team, gfc_match_team_number) + (gfc_match_end_team, gfc_match_sync_team, gfc_match_change_team): + add change team, end team, form team, sync team match and functions. + * match.h: add new prototypes for change team, end team, form team, + and sync team. + * parse.c (decode_statement): add cases for change team, end team, + form team, and sync team. + * resolve.c: add cases for exec form team, change team, end team, and + sync team. + * simplify.c (gfc_simplify_get_team): add new function for get team. + * st.c (gfc_free_statement): add cases exec for change team, end team, + form team, sync team. + * trans-decl.c (gfor_fndecl_caf_form_team) + (gfor_fndecl_caf_change_team, gfor_fndecl_caf_end_team) + (gfor_fndecl_caf_sync_team, gfor_fndecl_caf_get_team) + (gfor_fndecl_caf_team_number): add functions and definitions. + * trans-intrinsic.c (conv_caf_send, conv_intrinsic_team_number): add + new function and team_type argument support. + * trans-stmt.c (gfc_trans_form_team, gfc_trans_change_team) + (gfc_trans_end_team, gfc_trans_sync_team): add new functions. + * trans-stmt.h: add new prototypes. + * trans-types.c (gfc_get_derived_type): check condition for team_type. + * trans.c (trans_code): new exec cases for form team, change team, end + team, and sync team. + * trans.h: add new prototypes. + +2018-01-26 Steven G. Kargl + + PR fortran/83998 + * simplify.c (compute_dot_product): Initialize result to INTEGER(1) 0 + or .false. The summation does the correct type conversion. + (gfc_simplify_dot_product): Special case zero-sized arrays. + +2018-25-01 Paul Thomas + + PR fortran/37577 + * array.c (gfc_match_array_ref): If standard earlier than F2008 + it is an error if the reference dimension is greater than 7. + libgfortran.h : Increase GFC_MAX_DIMENSIONS to 15. Change the + dtype masks and shifts accordingly. + * trans-array.c (gfc_conv_descriptor_dtype): Use the dtype + type node to check the field. + (gfc_conv_descriptor_dtype): Access the rank field of dtype. + (duplicate_allocatable_coarray): Access the rank field of the + dtype descriptor rather than the dtype itself. + * trans-expr.c (get_scalar_to_descriptor_type): Store the type + of 'scalar' on entry and use its TREE_TYPE if it is ARRAY_TYPE + (ie. a character). + (gfc_conv_procedure_call): Pass TREE_OPERAND (tmp,0) to + get_scalar_to_descriptor_type if the actual expression is a + constant. + (gfc_trans_structure_assign): Assign the rank directly to the + dtype rank field. + * trans-intrinsic.c (gfc_conv_intrinsic_rank): Cast the result + to default integer kind. + (gfc_conv_intrinsic_sizeof): Obtain the element size from the + 'elem_len' field of the dtype. + * trans-io.c (gfc_build_io_library_fndecls): Replace + gfc_int4_type_node with dtype_type_node where necessary. + (transfer_namelist_element): Use gfc_get_dtype_rank_type for + scalars. + * trans-types.c : Provide 'get_dtype_type_node' to acces the + dtype_type_node and, if necessary, build it. + The maximum size of an array element is now determined by the + maximum value of size_t. + Update the description of the array descriptor, including the + type def for the dtype_type. + (gfc_get_dtype_rank_type): Build a constructor for the dtype. + Distinguish RECORD_TYPEs that are BT_DERIVED or BT_CLASS. + (gfc_get_array_descriptor_base): Change the type of the dtype + field to dtype_type_node. + (gfc_get_array_descr_info): Get the offset to the rank field of + the dtype. + * trans-types.h : Add a prototype for 'get_dtype_type_node ()'. + * trans.h : Define the indices of the dtype fields. + +2018-23-01 Paul Thomas + + PR fortran/83866 + * decl.c (gfc_match_derived_decl): If eos not matched, recover + and emit error about garbage after declaration. + +2018-23-01 Paul Thomas + + PR fortran/83898 + * trans-stmt.c (trans_associate_var): Do not set cst_array_ctor + for characters. + +2018-01-22 Janne Blomqvist + + PR 78534 + PR 83704 + * arith.c (gfc_arith_concat): Use size_t for string length. + (gfc_compare_string): Likewise. + (gfc_compare_with_Cstring): Likewise. + * array.c (gfc_resolve_character_array_constructor): Use + HOST_WIDE_INT, gfc_mpz_get_hwi. + * check.c (gfc_check_fe_runtime_error): Use size_t. + * data.c (create_character_initializer): Use HOST_WIDE_INT, + gfc_extract_hwi. + * decl.c (gfc_set_constant_character_len): Use gfc_charlen_t. + (add_init_expr_to_sym): Use HOST_WIDE_INT. + * expr.c (gfc_build_init_expr): Use HOST_WIDE_INT, + gfc_extract_hwi. + (gfc_apply_init): Likewise. + * match.h (gfc_set_constant_character_len): Update prototype. + * primary.c (match_string_constant): Use size_t. + * resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT, + gfc_mpz_get_hwi. + * simplify.c (init_result_expr): Likewise. + (gfc_simplify_len_trim): Use size_t. + * target-memory.c (gfc_encode_character): Use size_t. + (gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi. + (interpret_array): Use size_t. + (gfc_interpret_character): Likewise. + * target-memory.h (gfc_encode_character): Update prototype. + (gfc_interpret_character): Likewise. + (gfc_target_interpret_expr): Likewise. + * trans-const.c (gfc_build_string_const): Use size_t for length + argument. + (gfc_build_wide_string_const): Likewise. + * trans-const.h (gfc_build_string_const): Likewise. + (gfc_build_wide_string_const): Likewise. + +2018-01-20 Steven G. Kargl + + PR fortran/83900 + * simplify.c (gfc_simplify_matmul): Set return type correctly. + +2018-01-19 Steven G. Kargl + + PR fortran/83900 + * simplify.c (gfc_simplify_matmul): Delete bogus assertion. + +2018-01-17 Harald Anlauf + + PR fortran/83864 + * expr.c (add_init_expr_to_sym): Do not dereference NULL pointer. + +2018-01-17 Harald Anlauf + + PR fortran/83874 + * decl.c (add_init_expr_to_sym): Do not dereference NULL pointer. + +2018-01-15 Louis Krupp + + PR fortran/82257 + * interface.c (compare_rank): Don't try to retrieve CLASS_DATA + from symbol marked unlimited polymorphic. + * resolve.c (resolve_structure_cons): Likewise. + * misc.c (gfc_typename): Don't dereference derived->components + if it's NULL. + +2018-01-15 Thomas Koenig + + PR fortran/54613 + * gfortran.h (gfc_check_f): Rename f4ml to f5ml. + (gfc_logical_4_kind): New macro + * intrinsic.h (gfc_simplify_minloc): Add a gfc_expr *argument. + (gfc_simplify_maxloc): Likewise. + (gfc_resolve_maxloc): Likewise. + (gfc_resolve_minloc): Likewise. + * check.c (gfc_check_minloc_maxloc): Add checking for "back" + argument; also raise error if it is used (for now). Add it + if it isn't present. + * intrinsic.c (add_sym_4ml): Rename to + (add_sym_5ml), adjust for extra argument. + (add_functions): Add "back" constant. Adjust maxloc and minloc + for back argument. + * iresolve.c (gfc_resolve_maxloc): Add back argument. If back is + not of gfc_logical_4_kind, convert. + (gfc_resolve_minloc): Likewise. + * simplify.c (gfc_simplify_minloc): Add back argument. + (gfc_simplify_maxloc): Likewise. + * trans-intinsic.c (gfc_conv_intrinsic_minmaxloc): Rename last + argument to %VAL to ensure passing by value. + (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_minmaxloc + also for library calls. + +2018-01-13 Jerry DeLisle + + PR fortran/82007 + * resolve.c (resolve_transfer): Delete code looking for 'DT' + format specifiers in format strings. Set formatted to true if a + format string or format label is present. + * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix + whitespace. + +2018-01-13 Thomas Koenig + + PR fortran/83744 + * dump-parse-tree.c (get_c_type_name): Remove extra line. + Change for loop to use declaration in for loop. Handle BT_LOGICAL + and BT_CHARACTER. + (write_decl): Add where argument. Fix indentation. Replace + assert with error message. Add typename to warning + in comment. + (write_type): Adjust locus to call of write_decl. + (write_variable): Likewise. + (write_proc): Likewise. Replace assert with error message. + +2018-01-13 Paul Thomas + + PR fortran/52162 + * trans-expr.c (gfc_trans_scalar_assign): Flag is_alloc_lhs if + the rhs expression is neither an elemental nor a conversion + function. + + PR fortran/83622 + * trans-array.c (is_pointer_array): Remove unconditional return + of false for -fopenmp. + +2018-01-13 Thomas Koenig + + + PR fortran/83803 + * dump-parse-tree.c (write_proc): Always emit closing parenthesis + for functions. + +2018-01-10 Steven G. Kargl + + PR fortran/82367 + * resolve.c (resolve_allocate_expr): Check for NULL pointer. + +2018-01-10 Steven G. Kargl + + PR fortran/83093 + * resolve.c (resolve_charlen): Check the type of cl->length + after resolution. + +2018-01-10 Janne Blomqvist + + PR fortran/83740 + * trans-array.c (gfc_trans_array_ctor_element): Fix formatting. + +2018-01-10 Janne Blomqvist + + PR fortran/83740 + * trans-array.c (gfc_trans_array_ctor_element): Convert RHS to the + LHS type when assigning. + +2018-01-09 Steven G. Kargl + + PR fortran/83742 + * expr.c (gfc_is_simply_contiguous): Check for NULL pointer. + +2018-01-08 Steven G. Kargl + + * match.c (gfc_match_allocate): Check for NULL pointer. + +2018-01-08 Steven G. Kargl + + * expr.c (gfc_check_pointer_assign): Fix typo in comment. + +2018-01-08 Paul Thomas + + PR fortran/83611 + * decl.c (gfc_get_pdt_instance): If parameterized arrays have + an initializer, convert the kind parameters and add to the + component if the instance. + * trans-array.c (structure_alloc_comps): Add 'is_pdt_type' and + use it with case COPY_ALLOC_COMP. Call 'duplicate_allocatable' + for parameterized arrays. Clean up typos in comments. Convert + parameterized array initializers and copy into the array. + * trans-expr.c (gfc_trans_scalar_assign): Do a deep copy for + parameterized types. + *trans-stmt.c (trans_associate_var): Deallocate associate vars + as necessary, when they are PDT function results for example. + + PR fortran/83731 + * trans-array.c (structure_alloc_comps): Only compare len parms + when they are declared explicitly. + +2018-01-06 Janne Blomqvist + + PR fortran/50892 + * trans-expr.c (gfc_trans_pointer_assignment): fold_convert rhs to + lhs type. + +2018-01-05 Janne Blomqvist + + PR fortran/78534 + PR fortran/66310 + * array.c (got_charlen): Use gfc_charlen_int_kind. + * class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of + hardcoded kind. + (find_intrinsic_vtab): Likewise. + * decl.c (match_char_length): Use gfc_charlen_int_kind. + (add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind. + (gfc_match_implicit): Use gfc_charlen_int_kind. + * dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t. + (show_expr): Use HOST_WIDE_INT_PRINT_DEC. + * expr.c (gfc_get_character_expr): Length parameter of type + gfc_charlen_t. + (gfc_get_int_expr): Value argument of type HOST_WIDE_INT. + (gfc_extract_hwi): New function. + (simplify_const_ref): Make string_len of type gfc_charlen_t. + (gfc_simplify_expr): Use HOST_WIDE_INT for substring refs. + * frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind. + * gfortran.h (gfc_mpz_get_hwi): New prototype. + (gfc_mpz_set_hwi): Likewise. + (gfc_charlen_t): New typedef. + (gfc_expr): Use gfc_charlen_t for character lengths. + (gfc_size_kind): New extern variable. + (gfc_extract_hwi): New prototype. + (gfc_get_character_expr): Use gfc_charlen_t for character length. + (gfc_get_int_expr): Use HOST_WIDE_INT type for value argument. + * gfortran.texi: Update description of hidden string length argument. + * iresolve.c (check_charlen_present): Use gfc_charlen_int_kind. + (gfc_resolve_char_achar): Likewise. + (gfc_resolve_repeat): Pass string length directly without + temporary, use gfc_charlen_int_kind. + (gfc_resolve_transfer): Use gfc_charlen_int_kind. + * match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen. + * misc.c (gfc_mpz_get_hwi): New function. + (gfc_mpz_set_hwi): New function. + * module.c (atom_int): Change type from int to HOST_WIDE_INT. + (parse_integer): Don't complain about large integers. + (write_atom): Use HOST_WIDE_INT for integers. + (mio_integer): Handle integer type mismatch. + (mio_hwi): New function. + (mio_intrinsic_op): Use HOST_WIDE_INT. + (mio_array_ref): Likewise. + (mio_expr): Likewise. + * primary.c (match_substring): Use gfc_charlen_int_kind. + * resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind. + (resolve_character_operator): Likewise. + (resolve_assoc_var): Likewise. + (resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf. + (resolve_charlen): Use mpz_sgn to determine sign. + * simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t + instead of long. + * symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind. + * target-memory.c (size_character): Length argument of type + gfc_charlen_t. + (gfc_encode_character): Likewise. + (gfc_interpret_character): Use gfc_charlen_t. + * target-memory.h (gfc_encode_character): Modify prototype. + * trans-array.c (gfc_trans_array_ctor_element): Use existing type. + (get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type. + (trans_array_constructor): Use existing type. + (get_array_charlen): Likewise. + * trans-const.c (gfc_conv_mpz_to_tree_type): New function. + * trans-const.h (gfc_conv_mpz_to_tree_type): New prototype. + * trans-decl.c (gfc_trans_deferred_vars): Use existing type. + (add_argument_checking): Likewise. + * trans-expr.c (gfc_class_len_or_zero_get): Build const of type + gfc_charlen_type_node. + (gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of + 4, fold_convert to correct type. + (gfc_conv_class_to_class): Build const of type size_type_node for + size. + (gfc_copy_class_to_class): Likewise. + (gfc_conv_string_length): Use same type in expression. + (gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen. + (gfc_conv_string_tmp): Make sure len is of the right type. + (gfc_conv_concat_op): Use same type in expression. + (gfc_conv_procedure_call): Likewise. + (fill_with_spaces): Comment out memset() block due to spurious + -Wstringop-overflow warnings. + (gfc_trans_string_copy): Use gfc_charlen_type_node. + (alloc_scalar_allocatable_for_subcomponent_assignment): + fold_convert to right type. + (gfc_trans_subcomponent_assign): Likewise. + (trans_class_vptr_len_assignment): Build const of correct type. + (gfc_trans_pointer_assignment): Likewise. + (alloc_scalar_allocatable_for_assignment): fold_convert to right + type in expr. + (trans_class_assignment): Build const of correct type. + * trans-intrinsic.c (gfc_conv_associated): Likewise. + (gfc_conv_intrinsic_repeat): Do calculation in sizetype. + * trans-io.c (gfc_build_io_library_fndecls): Use + gfc_charlen_type_node for character lengths. + (set_string): Convert to right type in assignment. + * trans-stmt.c (gfc_trans_label_assign): Build const of + gfc_charlen_type_node. + (trans_associate_var): Likewise. + (gfc_trans_character_select): Likewise. + (gfc_trans_allocate): Likewise, don't typecast strlen result. + (gfc_trans_deallocate): Don't typecast strlen result. + * trans-types.c (gfc_size_kind): New variable. + (gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind + from size_type_node. + * trans-types.h: Fix comment. + +2018-01-04 Thomas Koenig + + PR fortran/83683 + PR fortran/45689 + * check.c (gfc_check_eoshift): Check for string length and + for conformance of boundary. + * intrinsic.c (add_functions): Add gfc_simplify_eoshift. + * intrinsic.h: Add prototype for gfc_simplify_eoshift. + * simplify.c (gfc_simplify_eoshift): New function. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_type_for_mode): Handle MODE_VECTOR_BOOL. + +2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_type_for_mode): Check valid_vector_subparts_p. + +2018-01-03 Thomas Koenig + + PR fortran/83664 + * check.c (gfc_check_eoshift): Error for missing boundary if array + is not one of the standard types. + +2018-01-03 Jakub Jelinek + + Update copyright years. + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + +2017-01-02 Thomas Koenig + + PR fortran/45689 + * intrinsic.c (add_function): Add gfc_simplify_maxloc and + gfc_simplify_minloc to maxloc and minloc, respectively. + * intrinsic.h: Add prototypes for gfc_simplify_minloc + and gfc_simplify_maxloc. + * simplify.c (min_max_chose): Adjust prototype. Modify function + to have a return value which indicates if the extremum was found. + (is_constant_array_expr): Fix typo in comment. + (simplify_minmaxloc_to_scalar): New function. + (simplify_minmaxloc_nodim): New function. + (new_array): New function. + (simplify_minmaxloc_to_array): New function. + (gfc_simplify_minmaxloc): New function. + (simplify_minloc): New function. + (simplify_maxloc): New function. + +2018-01-02 Thomas Koenig + + PR fortran/45689 + PR fortran/83650 + * simplify.c (gfc_simplify_cshift): Re-implement to allow full + range of arguments. + +2018-01-01 Paul Thomas + + PR fortran/83076 + * resolve.c (resolve_fl_derived0): Add caf_token fields for + allocatable and pointer scalars, when -fcoarray selected. + * trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token + field as well as the backend_decl. + (gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module + derived types that are not vtypes. Components with caf_token + attribute are pvoid types. For a component requiring it, find + the caf_token field and have the component token field point to + its backend_decl. + + PR fortran/83319 + *trans-types.c (gfc_get_array_descriptor_base): Add the token + field to the descriptor even when codimen not set. + +Copyright (C) 2018 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/fortran/gfc-internals.texi b/gcc/fortran/gfc-internals.texi index 7b6718c16a4..e8e05f04f32 100644 --- a/gcc/fortran/gfc-internals.texi +++ b/gcc/fortran/gfc-internals.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfc-internals.info -@set copyrights-gfortran 2007-2018 +@set copyrights-gfortran 2007-2019 @include gcc-common.texi diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 60c5d5d4bfc..9b13346b305 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfortran.info -@set copyrights-gfortran 1999-2018 +@set copyrights-gfortran 1999-2019 @include gcc-common.texi diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c index 7aa2dd78a05..b971093c71c 100644 --- a/gcc/fortran/gfortranspec.c +++ b/gcc/fortran/gfortranspec.c @@ -278,7 +278,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, case OPT__version: printf ("GNU Fortran %s%s\n", pkgversion_string, version_string); - printf ("Copyright %s 2018 Free Software Foundation, Inc.\n", + printf ("Copyright %s 2019 Free Software Foundation, Inc.\n", _("(C)")); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 8ea04c38391..ae24dc61f07 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -1,5 +1,5 @@ @ignore -Copyright (C) 2005-2018 Free Software Foundation, Inc. +Copyright (C) 2005-2019 Free Software Foundation, Inc. This is part of the GNU Fortran manual. For copying conditions, see the file gfortran.texi. diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index d6a278b1cc2..7b5597e4536 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -1,10 +1,10 @@ -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c This is part of the GNU Fortran manual. @c For copying conditions, see the file gfortran.texi. @ignore @c man begin COPYRIGHT -Copyright @copyright{} 2004-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2004-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/gcc.c b/gcc/gcc.c index 955a08cc8e8..ee1a91bf38b 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -7963,7 +7963,7 @@ driver::maybe_print_and_exit () const { printf (_("%s %s%s\n"), progname, pkgversion_string, version_string); - printf ("Copyright %s 2018 Free Software Foundation, Inc.\n", + printf ("Copyright %s 2019 Free Software Foundation, Inc.\n", _("(C)")); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), diff --git a/gcc/gcov-dump.c b/gcc/gcov-dump.c index 7762e4e8190..4dcb12851ad 100644 --- a/gcc/gcov-dump.c +++ b/gcc/gcov-dump.c @@ -138,7 +138,7 @@ static void print_version (void) { printf ("gcov-dump %s%s\n", pkgversion_string, version_string); - printf ("Copyright (C) 2018 Free Software Foundation, Inc.\n"); + printf ("Copyright (C) 2019 Free Software Foundation, Inc.\n"); printf ("This is free software; see the source for copying conditions.\n" "There is NO warranty; not even for MERCHANTABILITY or \n" "FITNESS FOR A PARTICULAR PURPOSE.\n\n"); diff --git a/gcc/gcov-tool.c b/gcc/gcov-tool.c index 173ed5e5af2..211b03cb949 100644 --- a/gcc/gcov-tool.c +++ b/gcc/gcov-tool.c @@ -525,7 +525,7 @@ static void print_version (void) { fnotice (stdout, "%s %s%s\n", progname, pkgversion_string, version_string); - fnotice (stdout, "Copyright %s 2018 Free Software Foundation, Inc.\n", + fnotice (stdout, "Copyright %s 2019 Free Software Foundation, Inc.\n", _("(C)")); fnotice (stdout, _("This is free software; see the source for copying conditions.\n" diff --git a/gcc/gcov.c b/gcc/gcov.c index 23d75f89265..8f25c70a121 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -914,7 +914,7 @@ static void print_version (void) { fnotice (stdout, "gcov %s%s\n", pkgversion_string, version_string); - fprintf (stdout, "Copyright %s 2018 Free Software Foundation, Inc.\n", + fprintf (stdout, "Copyright %s 2019 Free Software Foundation, Inc.\n", _("(C)")); fnotice (stdout, _("This is free software; see the source for copying conditions.\n" diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 01781edb50c..460e742590c 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2019-01-01 Jakub Jelinek + + * gccgo.texi: Bump @copyrights-go year. + 2018-11-27 Ian Lance Taylor * go-gcc.cc (Gcc_backend::function): Handle function_only_inline diff --git a/gcc/go/gccgo.texi b/gcc/go/gccgo.texi index f42be9a52a6..23101954199 100644 --- a/gcc/go/gccgo.texi +++ b/gcc/go/gccgo.texi @@ -12,7 +12,7 @@ @include gcc-common.texi @c Copyright years for this manual. -@set copyrights-go 2010-2018 +@set copyrights-go 2010-2019 @copying @c man begin COPYRIGHT diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index aa69f42d3ca..47e07c0fd1a 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,7 @@ +2019-01-01 Jakub Jelinek + + * libgomp.texi: Bump @copying's copyright year. + 2018-12-28 Thomas Schwinge * oacc-parallel.c (GOACC_parallel_keyed, GOACC_parallel) diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index e6c20525bc0..4991271528c 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -7,7 +7,7 @@ @copying -Copyright @copyright{} 2006-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2006-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 5ca36bb31b6..71479c99dda 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,7 @@ +2019-01-01 Jakub Jelinek + + * libitm.texi: Bump @copying's copyright year. + 2018-12-16 Jakub Jelinek PR c++/88482 diff --git a/libitm/libitm.texi b/libitm/libitm.texi index d0b7b07e90b..a84ca6e0d7d 100644 --- a/libitm/libitm.texi +++ b/libitm/libitm.texi @@ -7,7 +7,7 @@ @copying -Copyright @copyright{} 2011-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2011-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog index 3c3197e72a4..a758e4167f5 100644 --- a/libquadmath/ChangeLog +++ b/libquadmath/ChangeLog @@ -1,3 +1,7 @@ +2019-01-01 Jakub Jelinek + + * libquadmath.texi: Bump @copying's copyright year. + 2018-12-11 Jakub Jelinek PR c/88430 diff --git a/libquadmath/libquadmath.texi b/libquadmath/libquadmath.texi index b2cda531917..131a2ccf449 100644 --- a/libquadmath/libquadmath.texi +++ b/libquadmath/libquadmath.texi @@ -6,7 +6,7 @@ @c %**end of header @copying -Copyright @copyright{} 2010-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2010-2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document