From: Vladimir Makarov Date: Wed, 18 Jul 2018 23:21:38 +0000 (+0000) Subject: backport: common.opt (fira-select): New. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3fceb4462a7484503f3048a2c402e7996c72cc7c;p=thirdparty%2Fgcc.git backport: common.opt (fira-select): New. 2018-07-18 Vladimir Makarov Merge with trunk. * common.opt (fira-select): New. Choose the selection algorithm by default. * ira-costs.c (struct op_info, op_infos, insn_selection): New. (insn_selections): New. (CONST_POOL_OK_P, SMALL_REGISTER_CLASS_P, general_constant_p): New. (insn_constraints, setup_insn_alt): New. (record_address_regs): Forward declaration. (define_op_cost_from_alt): New. (scan_one_insn): Call setup_insn_alt and define_op_cost_from_alt for the selection algorithm. (find_costs_and_classes): Release insn_constraints and insn_selections. Don't reuse already calculated pseudo classes for the selection algorithm. From-SVN: r262866 --- 3fceb4462a7484503f3048a2c402e7996c72cc7c diff --cc gcc/ChangeLog index 4a82c39ecb2b,bf1942cdff1e..c6f7c0936e8b --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@@ -1,27809 -1,19113 +1,19131 @@@ - 2016-10-31 Vladimir Makarov ++2018-07-18 Vladimir Makarov + ++ Merge with trunk. + * common.opt (fira-select): New. Choose the selection algorithm + by default. + * ira-costs.c (struct op_info, op_infos, insn_selection): New. + (insn_selections): New. + (CONST_POOL_OK_P, SMALL_REGISTER_CLASS_P, general_constant_p): + New. + (insn_constraints, setup_insn_alt): New. + (record_address_regs): Forward declaration. + (define_op_cost_from_alt): New. + (scan_one_insn): Call setup_insn_alt and define_op_cost_from_alt + for the selection algorithm. + (find_costs_and_classes): Release insn_constraints and + insn_selections. Don't reuse already calculated pseudo classes + for the selection algorithm. + - 2016-10-26 Michael Matz - - PR tree-optimization/78060 - PR tree-optimization/78061 - PR tree-optimization/78088 - * tree-ssa-loop-split.c (easy_exit_values): New function. - (tree_ssa_split_loops): Use it. - (compute_new_first_bound): Change order of operations, - fix invalid use of types. - - 2016-10-26 Georg-Johann Lay - - gen-pass-instances.awk is sensitive to the order in which - passes are added; passes that appear later have to be added first. - - PR target/71676 - PR target/71678 - * config/avr/avr-passes.def: Swap order of directives for - gen-pass-instances.awk. - - 2016-10-25 Jeff Law - - * config/vax/vax.c (vad_address_cost_1): Add missing FALLTHRU comment. - (vax_notice_update_cc): Likewise. - - 2016-10-25 Eric Botcazou - - * config.gcc (sparc*-*-solaris2*): Adjust. - (sparc64-*-linux*): Likewise. - * config/sparc/default-64.h: Rename to... - * config/sparc/default64.h: ...this. - * config/sparc/sparc.c (sparc_option_override): Replace TARGET_64BIT - with TARGET_ARCH64. - (sparc_mangle_type): Replace !TARGET_64BIT with TARGET_ARCH32. - * config/sparc/sparc.h: Minor tweaks. - * config/sparc/sparc.md: Replace !TARGET_64BIT and !TARGET_ARCH64 with - TARGET_ARCH32 throughout. Minor various tweaks throughout. - - 2016-10-25 David Malcolm - - * input.c (fcache::file_patch): Add comment about lifetime. - (selftest::cpp_reader_ptr): New class. - (selftest::lexer_test): Convert m_parser from cpp_reader * - to a cpp_reader_ptr, and move m_tempfile to after it. - (selftest::lexer_test::lexer_test): Update for above reordering. - (lexer_test::~lexer_test): Move cleanup of m_parser to - cpp_reader_ptr's dtor. - - 2016-10-25 David Malcolm - - * toplev.c (toplev::main): Remove call to - location_adhoc_data_fini. - - 2016-10-25 Eric Botcazou - - * tree.h (wi::fits_to_tree_p): Accept only 0 and 1 for boolean types. - * tree.c (int_fits_type_p): Likewise. Adjust head comment. - - 2016-10-25 David Malcolm - - * ggc-tests.c (forcibly_ggc_collect): Rename to... - (selftest::forcibly_ggc_collect): ...this, and remove "static". - (test_basic_struct): Update for above renaming. - (test_length): Likewise. - (test_union): Likewise. - (test_finalization): Likewise. - (test_deletable_global): Likewise. - (test_inheritance): Likewise. - (test_chain_next): Likewise. - (test_user_struct): Likewise. - (test_tree_marking): Likewise. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::forcibly_ggc_collect at the end of the selftests. - * selftest.h (selftest::forcibly_ggc_collect): New decl. - - 2016-10-25 Jakub Jelinek - - PR target/78102 - * optabs.def (vcondeq_optab, vec_cmpeq_optab): New optabs. - * optabs.c (expand_vec_cond_expr): For comparison codes - EQ_EXPR and NE_EXPR, attempt vcondeq_optab as fallback. - (expand_vec_cmp_expr): For comparison codes - EQ_EXPR and NE_EXPR, attempt vec_cmpeq_optab as fallback. - * optabs-tree.h (expand_vec_cmp_expr_p, expand_vec_cond_expr_p): - Add enum tree_code argument. - * optabs-query.h (get_vec_cmp_eq_icode, get_vcond_eq_icode): New - inline functions. - * optabs-tree.c (expand_vec_cmp_expr_p): Add CODE argument. For - CODE EQ_EXPR or NE_EXPR, attempt to use vec_cmpeq_optab as - fallback. - (expand_vec_cond_expr_p): Add CODE argument. For CODE EQ_EXPR or - NE_EXPR, attempt to use vcondeq_optab as fallback. - * tree-vect-generic.c (expand_vector_comparison, - expand_vector_divmod, expand_vector_condition): Adjust - expand_vec_cmp_expr_p and expand_vec_cond_expr_p callers. - * tree-vect-stmts.c (vectorizable_condition, - vectorizable_comparison): Likewise. - * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern, - check_bool_pattern, search_type_for_mask_1): Likewise. - * expr.c (do_store_flag): Likewise. - * doc/md.texi (@code{vec_cmpeq@var{m}@var{n}}, - @code{vcondeq@var{m}@var{n}}): Document. - * config/i386/sse.md (vec_cmpeqv2div2di, vcondeqv2di): - New expanders. - - 2016-10-25 Jeff Law - - * config/v850/v850.c (v850_handle_data_area_attribute): Fix fallthru - comment. - (v850_output_aligned_bss): Add missing break. - - * config/m68k/m68k.c (m68k_get_reloc_decoration): Add gcc_unreachable. - - 2016-10-25 Martin Liska + 2018-07-18 Richard Biener - PR sanitizer/78106 - * sanopt.c (imm_dom_path_with_freeing_call): Handle gasm - statements as they can also contain possibly a freeing call. + PR tree-optimization/86557 + * tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle + EXACT_DIV_EXPR. - 2016-10-25 H.J. Lu - Martin Liska - - PR ipa/78099 - * common.opt: Mark flag_ipa_icf_variables as Optimization flag. - * ipa-icf.c (sem_function::get_hash): Add target optimization - node to hash. - - 2016-10-25 Wilco Dijkstra - - PR target/78041 - * config/arm/neon.md (ashldi3_neon): Add "r 0 i" and "&r r i" variants. - Remove partial overlap check for shift by 1. - (ashldi3_neon): Likewise. - - 2016-10-25 Thomas Preud'homme - - * config/arm/constraints.md (Q constraint): Document its use for - Thumb-1. - (Pf constraint): New constraint for relaxed, consume or relaxed memory - models. - * config/arm/sync.md (atomic_load): Add new ARMv8-M Baseline only - alternatives to allow any register when memory model matches Pf and - thus lda is used, but only low registers otherwise. Use unpredicated - output template for Thumb-1 targets. - (atomic_store): Likewise for stl. - (arm_load_exclusive): Add new ARMv8-M Baseline only alternative - whose output template does not have predication. - (arm_load_acquire_exclusive): Likewise. - (arm_load_exclusivesi): Likewise. - (arm_load_acquire_exclusivesi): Likewise. - (arm_store_release_exclusive): Likewise. - (arm_store_exclusive): Use unpredicated output template for - Thumb-1 targets. - - 2016-10-25 Jakub Jelinek - - * internal-fn.def (LAUNDER): New internal function. - * internal-fn.c (expand_LAUNDER): New function. - - 2016-10-25 Georg-Johann Lay - Pitchumani Sivanupandi - - New avr target pass to work around performance loss by PR fix. - - PR target/71676 - PR target/71678 - * config/avr/avr.md (casesi__sequence) [qi,hi]: New insn. - (*cmp) [qi,qq,uqq,hi,hq,uhq,ha,uha]: Rename to cmp3. - * config/avr/predicates.md (extend_operator): New. - * config/avr/avr-passes.def (avr_pass_casesi): Register new pass. - * config/avr/avr-protos.h (avr_casei_sequence_check_operands) - (make_avr_pass_casesi): New prototypes. - * config/avr/avr.c (print-rtl.h): Include it. - (pass_data avr_pass_data_casesi): Data for new pass. - (avr_pass_casesi): New class implementing rtl_opt_pass .avr-casesi. - (make_avr_pass_casesi, avr_parallel_insn_from_insns) - (avr_is_casesi_sequence, avr_casei_sequence_check_operands) - (avr_optimize_casesi): New functions. - - 2016-10-25 Georg-Johann Lay - Pitchumani Sivanupandi - - PR target/71676 - PR target/71678 - * config/avr/avr.md (casesi): Rewrite avoiding subregs of SI. - - 2016-10-24 Jakub Jelinek - - * dwarf2out.c (gen_subprogram_die): Add DW_AT_reference or - DW_AT_rvalue_reference attributes. - - 2016-10-24 Bernd Edlinger - - * doc/invoke.text (Wint-in-bool-context): Update documentation. - * value-prof.c (stringop_block_profile): Fix a warning. - - 2016-10-24 Martin Sebor - - PR middle-end/77735 - * builtins.c (string_length): New function. - (c_strlen): Use string_length. Correctly handle wide strings. - * gimple-ssa-sprintf.c (target_max_value, target_size_max): New - functions. - (target_int_max): Call target_max_value. - (format_result::knownrange): New data member. - (fmtresult::fmtresult): Define default constructor. - (format_integer): Use it and set format_result::knownrange. - Handle global constants. - (format_floating_max): Add third argument. - (format_floating): Recompute maximum value for %a for each argument. - (get_string_length): Use fmtresult default ctor. - (format_string): Set format_result::knownrange. - (format_directive): Check format_result::knownrange. - (add_bytes): Same. Correct caret placement in diagnostics. - (pass_sprintf_length::compute_format_length): Set - format_result::knownrange. - (pass_sprintf_length::handle_gimple_call): Use target_size_max. - - 2016-10-24 Jakub Jelinek - - * config/i386/i386.c (ix86_in_large_data_p, ix86_expand_builtin): Use - VAR_P (x) instead of TREE_CODE (x) == VAR_DECL. - - 2016-10-24 Ximin Luo - - PR debug/77985 - * dwarf2out.c (file_table_relative_p): Remove. - (gen_compile_unit_die, dwarf2out_early_finish): Emit DW_AT_comp_dir - also for absolute paths. - * doc/tm.texi: Update. - * doc/tm.texi.in (SDB and DWARF) : Remove. - * target.def (force_at_comp_dir): Remove hook. - * config/darwin.h (TARGET_FORCE_AT_COMP_DIR): Remove define. - - 2016-10-24 Richard Biener - - * tree-vrp.c (evrp_dom_walker::before_dom_children): Ignore - backedges when identifying the single predecessor to take - conditional info from. Use SCEV to get at ranges for loop IVs. - * lto-streamer-out.c (lto_write_mode_table): CSE inner mode to - avoid false warning. - - 2016-10-24 Georg-Johann Lay - - PR target/78093 - * doc/extend.texi (AVR Variable Attributes) [absdata]: Document it. - * config/avr/avr.c (AVR_SYMBOL_FLAG_TINY_ABSDATA): New macro. - (avr_address_tiny_absdata_p): New static function. - (avr_legitimate_address_p, avr_legitimize_address) [AVR_TINY]: Use - it to determine validity of constant addresses. - (avr_attribute_table) [absdata]: New variable attribute... - (avr_handle_absdata_attribute): ...and handler. - (avr_decl_absdata_p): New static function. - (avr_encode_section_info) [AVR_TINY]: Use it to add flag - AVR_SYMBOL_FLAG_TINY_ABSDATA to respective symbols_refs. - (avr_address_cost) [AVR_TINY]: absdata addresses cost 2. - - 2016-10-24 Richard Biener - - PR tree-optimization/78076 - * tree-ssa-loop-split.c (tree_ssa_split_loops): Reset aux - also on the loop tree root. - - 2016-10-24 Jakub Jelinek + 2018-07-18 Ilya Leoshkevich - * config/i386/i386.c (ix86_fold_builtin): Handle - IX86_BUILTIN_BEXTR{,I}{32,64}, IX86_BUILTIN_BZHI{32,64}, - IX86_BUILTIN_PDEP{32,64} and IX86_BUILTIN_PEXT{32,64}. - (ix86_gimple_fold_builtin): Handle IX86_BUILTIN_BZHI{32,64}, - IX86_BUILTIN_PDEP{32,64} and IX86_BUILTIN_PEXT{32,64}. - - 2016-10-24 Martin Liska - - PR sanitizer/77966 - * opts.c (finish_options): Skip conditionally. - - 2016-10-23 Martin Sebor - - PR target/77837 - * config/rs6000/linux.h (TARGET_PRINTF_POINTER_FORMAT): Define. - * config/rs6000/linux64.h (TARGET_PRINTF_POINTER_FORMAT): Likewise. - - 2016-10-23 Eric Botcazou - - * config/sparc/sparc.md (cpu_feature): Minor tweak. - (enabled): Likewise. - (movsi_insn, movdi_insn_sp32, movdi_insn_sp64, movsf_insn, - movdf_insn_sp32, movdf_insn_sp64, zero_extendsidi2_insn_sp64, - sign_extendsidi2_insn, mov_insn, mov_insn_sp64, - mov_insn_sp32, not_, nand_vis, - _not1_vi, _not2_vis, one_cmpl2, - fcmp, pdistn_vis): Likewise. - - 2016-10-23 Eric Botcazou - - * config/sparc/sparc-c.c (sparc_target_macros): Replace TARGET_64BIT - with TARGET_ARCH64. Define __VIS to 0x400 if TARGET_VIS4. - - 2016-10-21 Andrew Pinski - - * config/aarch64/aarch64-cores.def: Rewrite so IMP and PART are - integer constants. - * config/aarch64/driver-aarch64.c (struct aarch64_core_data): Change - implementer_id to unsigned char. - Change part_no to unsigned int. - (AARCH64_BIG_LITTLE): New define. - (INVALID_IMP): New define. - (INVALID_CORE): New define. - (cpu_data): Change the last element's implementer_id and part_no to - integers. - (valid_bL_string_p): Rewrite to .. - (valid_bL_core_p): this for integers instead of strings. - (parse_field): New function. - (contains_string_p): Rewrite to ... - (contains_core_p): this for integers and only for the part_no. - (host_detect_local_cpu): Rewrite handling of implementation and - par num to be integers; simplifying the code. - - 2016-10-21 Kugan Vivekanandarajah - - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Create nonzero - value range for pointers in more cases. - - 2016-10-21 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_add_constant_internal): - Add extra argument to allow emitting the move immediate. - Use add/sub with positive immediate. - (aarch64_add_constant): Add inline function. - (aarch64_add_sp): Likewise. - (aarch64_sub_sp): Likewise. - (aarch64_expand_prologue): Call aarch64_sub_sp. - (aarch64_expand_epilogue): Call aarch64_add_sp. - Decide when to leave out move. - (aarch64_output_mi_thunk): Call aarch64_add_constant. - - 2016-10-21 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_layout_frame): - Align FP callee-saves. - - 2016-10-21 Jakub Jelinek - - * config/i386/adxintrin.h (_subborrow_u32, _addcarry_u32, - _addcarryx_u32, _subborrow_u64, _addcarry_u64, _addcarryx_u64): - Formatting fixes. - * config/i386/rdseedintrin.h (_rdseed16_step, _rdseed32_step, - _rdseed64_step): Likewise. - * config/i386/tbmintrin.h (__bextri_u32): Likewise. - - PR target/78057 - * config/i386/i386.c: Include fold-const-call.h, tree-vrp.h - and tree-ssanames.h. - (ix86_fold_builtin): Fold IX86_BUILTIN_[LT]ZCNT{16,32,64} - with INTEGER_CST argument. - (ix86_gimple_fold_builtin): New function. - (TARGET_GIMPLE_FOLD_BUILTIN): Define. - - * dwarf2out.c (ranges_table): Change into vec *. - (ranges_by_label): Change into vec *. - (ranges_table_allocated, ranges_table_in_use, - ranges_by_label_allocated, ranges_by_label_in_use, - RANGES_TABLE_INCREMENT): Removed. - (add_ranges_num): Use vec_safe_push into ranges_table. - (add_ranges_by_labels): Use vec_safe_push into ranges_by_label. - (output_ranges): Adjust for ranges_table and ranges_by_label - conversion from arrays to vec. - (add_high_low_attributes, dwarf2out_finish): Adjust for range_table - conversion from arrays to vec. - (dwarf2out_c_finalize): Don't clear ranges_table_allocated, - ranges_table_in_use, ranges_by_label_allocated and - ranges_by_label_in_use. Set ranges_by_label to NULL instead of 0. - - * dwarf2out.c (gen_variable_die): Emit DW_AT_const_expr attribute - if needed. Re-add origin_die variable and its initialization. - - * gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns - even for -fstack-reuse=none, or for volatile vars etc. - - 2016-10-21 David Malcolm - - * print-rtl-function.c (flag_compact): Move extern decl to... - * print-rtl.h (flag_compact): ...here. - * rtl-tests.c (selftests::assert_rtl_dump_eq): New function. - (ASSERT_RTL_DUMP_EQ): New macro. - (selftest::test_dumping_regs): New function. - (selftest::test_dumping_insns): New function. - (selftest::test_uncond_jump): Add uses of ASSERT_RTL_DUMP_EQ on - the insns. - (selftest::rtl_tests_c_tests): Call the new test functions. - - 2016-10-21 Trevor Saunders - - * cfgcleanup.c (merge_blocks_move_successor_nojumps): Adjust. - (outgoing_edges_match): Likewise. - (try_crossjump_to_edge): Likewise. - * cfgrtl.c (try_redirect_by_replacing_jump): Likewise. - (rtl_tidy_fallthru_edge): Likewise. - * rtl.h (tablejump_p): Adjust prototype. - * rtlanal.c (tablejump_p): Return the label as a rtx_insn *. - - 2016-10-21 Trevor Saunders - - * rtl.h (label_ref_label): New function. - (set_label_ref_label): New function. - (LABEL_REF_LABEL): Delete. - * alias.c (rtx_equal_for_memref_p): Adjust. - * cfgbuild.c (make_edges): Likewise. - (purge_dead_tablejump_edges): Likewise. - * cfgexpand.c (convert_debug_memory_address): Likewise. - * cfgrtl.c (patch_jump_insn): Likewise. - * combine.c (distribute_notes): Likewise. - * cse.c (hash_rtx_cb): Likewise. - (exp_equiv_p): Likewise. - (fold_rtx): Likewise. - (check_for_label_ref): Likewise. - * cselib.c (rtx_equal_for_cselib_1): Likewise. - (cselib_hash_rtx): Likewise. - * emit-rtl.c (mark_label_nuses): Likewise. - * explow.c (convert_memory_address_addr_space_1): Likewise. - * final.c (output_asm_label): Likewise. - (output_addr_const): Likewise. - * gcse.c (add_label_notes): Likewise. - * genconfig.c (walk_insn_part): Likewise. - * genrecog.c (validate_pattern): Likewise. - * ifcvt.c (cond_exec_get_condition): Likewise. - (noce_emit_store_flag): Likewise. - (noce_get_alt_condition): Likewise. - (noce_get_condition): Likewise. - * jump.c (maybe_propagate_label_ref): Likewise. - (mark_jump_label_1): Likewise. - (redirect_exp_1): Likewise. - (rtx_renumbered_equal_p): Likewise. - * lra-constraints.c (operands_match_p): Likewise. - * print-rtl.c (print_value): Likewise. - * reload.c (find_reloads): Likewise. - * reload1.c (set_label_offsets): Likewise. - * reorg.c (get_branch_condition): Likewise. - * rtl-tests.c (test_uncond_jump): Likewise. - * rtl.c (rtx_equal_p_cb): Likewise. - (rtx_equal_p): Likewise. - * rtlanal.c (reg_mentioned_p): Likewise. - (rtx_referenced_p): Likewise. - (get_condition): Likewise. - * varasm.c (const_hash_1): Likewise. - (compare_constant): Likewise. - (const_rtx_hash_1): Likewise. - (output_constant_pool_1): Likewise. - - 2016-10-21 Senthil Kumar Selvaraj - - PR target/71627 - * reload.c (find_valid_class_1): Allow regclass if atleast one - regno in regclass is ok. Compute and use rclass size based on - actually available regnos for mode in rclass. - - 2016-10-21 Eric Botcazou - - * config/sparc/sparc-modes.def (CCV): New. - (CCXV): Likewise. - * config/sparc/predicates.md (v_comparison_operator): New. - (icc_comparison_operator): Add support for CCV/CCXV. - (xcc_comparison_operator): Likewise. - * config/sparc/sparc.c (output_cbranch): Likewise. - (sparc_print_operand): Likewise. - * config/sparc/sparc.md (UNSPEC_{ADD,SUB,NEG}V): New constants. - (uaddvdi4): New expander. - (addvdi4): Likewise. - (uaddvdi4_sp32): New instruction. - (addvdi4_sp32): Likewise. - (uaddvsi4): New expander. - (addvsi4): Likewise. - (cmp_ccc_plus_sltu_set): New instruction. - (cmp_ccv_plus): Likewise. - (cmp_ccxv_plus): Likewise. - (cmp_ccv_plus_set): Likewise. - (cmp_ccxv_plus_set): Likewise. - (cmp_ccv_plus_sltu_set): Likewise. - (uaddvdi4): New expander. - (subvdi4): Likewise. - (usubdi4_sp32): New instruction. - (subvdi4_sp32): Likewise. - (usubvsi4): New expander. - (subvsi4): Likewise. - (cmpsi_minus_sltu_set): New instruction. - (cmp_ccv_minus): Likewise. - (cmp_ccxv_minus): Likewise. - (cmp_ccv_minus_set): Likewise. - (cmp_ccxv_minus_set): Likewise. - (cmp_ccv_minus_sltu_set): Likewise. - (unegvdi3): New expander. - (negvdi3): Likewise. - (unegdi3_sp32): New instruction. - (negvdi3_sp32): Likewise. - (unegvsi3): New expander. - (negvsi3): Likewise. - (cmp_ccc_neg_sltu_set): New instruction. - (cmp_ccv_neg): Likewise. - (cmp_ccxv_neg): Likewise. - (cmp_ccv_neg_set): Likewise. - (cmp_ccxv_neg_set): Likewise. - (cmp_ccv_neg_sltu_set): Likewise. - - * tree-ssa-loop-split.c: Remove trailing spaces. - * match.pd: Likewise. + * config/s390/s390.c (s390_function_profiler): Generate CFI. - 2016-10-21 Kyrylo Tkachov - - PR rtl-optimization/78038 - * ree.c (get_defs): Return NULL if a defining insn for REG cannot - be deduced to set REG through the RTL structure. - (make_defs_and_copies_lists): Return false on a failing get_defs call. - - 2016-10-21 Richard Biener - - PR tree-optimization/78051 - * tree-vrp.c (evrp_dom_walker::before_dom_children): Update stmt - and mark replaced if folding did something. - - 2016-10-21 David Edelsohn - - * config/rs6000/rs6000.c (rs6000_assemble_visibility): Swap "internal" - and "protected" in visibility types. - (rs6000_xcoff_declare_function_name): Fix formatting. - (rs6000_xcoff_declare_object_name): Fix formatting. - - 2016-10-21 Uros Bizjak - - * config/i386/i386.c (ix86_fold_builtin): Handle IX86_BUILTIN_INFQ - and IX86_BUILTIN_HUGE_VALQ here ... - (ix86_expand_builtin): ... not here. - - 2016-10-20 Jakub Jelinek - - * doc/gty.texi (for_user): Use @item next to @findex. - - 2016-10-20 Uros Bizjak - - PR target/78037 - * config/i386/bmiintrin.h (__tzcnt_u16): Call __builtin_ia32_tzcnt_u16. - (__tzcnt_u32, _tzcnt_u32): Call __builtin_ia32_tzcnt_u32. - (__tzcnt_u64, _tzcnt_u64): Call __builtin_ia32_tzcnt_u64. - * config/i386/lzcntintrin.h (__lzcnt_u16): Call - __builtin_ia32_lzcnt_u16. - (__lzcnt_u32, _lzcnt_u32): Call __builtin_ia32_lzcnt_u32. - (__lzcnt_u64, _lzcnt_u64): Call __builtin_ia32_lzcnt_u64. - * config/i386/i386.md (UNSPEC_LZCNT, UNSPEC_TZCNT): New unspecs. - (ctz2, *ctz2): Use SWI48 mode iterator. - (bmi_tzcnt_): New expander. - (*bmi_tzcnt__falsedep_1): New define_insn_and_split pattern. - (*bmi_tzcnt__falsedep, *bmi_tzcnt_): New insn patterns. - (clz2_lzcnt, *clz2_lzcnt): Use SWI48 mode iterator. - (lzcnt_): New expander. - (*lzcnt__falsedep_1): New define_insn_and_split pattern. - (*lzcnt__falsedep, *lzcnt_): New insn patterns. - * config/i386/i386-builtin-types.def (UINT_FTYPE_UINT): New. - (UINT64_FTYPE_UINT64): New. - * config/i386/i386-builtin.def (__builtin_clzs): Remove description. - (__builtin_ia32_lzcnt_u16): New description. - (__builtin_ia32_lzcnt_u32): Ditto. - (__builtin_ia32_lzcnt_u64): Ditto. - (__builtin_ctzs): Remove description. - (__builtin_ia32_tzcnt_u16): New description. - (__builtin_ia32_tzcnt_u32): Ditto. - (__builtin_ia32_tzcnt_u64): Ditto. - * config/i386/i386.c (ix86_expand_args_builtin): Handle - UINT_FTYPE_UINT and UINT64_FTYPE_UINT64. - - 2016-10-20 Martin Liska - - PR lto/78049 - * lto-streamer-in.c (fixup_call_stmt_edges_1): Replace value - comparison with STMT_UID_NOT_IN_RANGE. - (fixup_call_stmt_edges): Do not fixup edges of a thunk in - LTRANS. - - 2016-10-20 Eric Botcazou - - * compare-elim.c (conforming_compare): Accept UNSPECs. - (find_comparison_dom_walker::before_dom_children): Deal with - instructions both using and killing the flags register. - (equivalent_reg_at_start): New function extracted from... - (try_eliminate_compare): ...here. Use it and add support for - registers and UNSPECs as second operand of the compare. - * config/visium/visium-modes.def (CCV): New. - * config/visium/predicates.md (visium_v_comparison_operator): New. - (visium_branch_operator): Deal with CCV mode. - * config/visium/visium.c (visium_select_cc_mode): Likewise. - (output_cbranch): Likewise. - * config/visium/visium.md (UNSPEC_{ADD,SUB,NEG}V): New constants. - (uaddv4): New expander. - (addv4): Likewise. - (add3_insn_set_carry): New instruction. - (add3_insn_set_overflow): Likewise. - (addsi3_insn_set_overflow): Likewise. - (usubv4): New expander. - (subv4): Likewise. - (sub3_insn_set_carry): New instruction. - (sub3_insn_set_overflow): Likewise. - (subsi3_insn_set_overflow): Likewise. - (unegv3): New expander. - (negv3): Likewise. - (neg2_insn_set_overflow): New instruction. - (addv_tst): Likewise. - (subv_tst): Likewise. - (negv_tst): Likewise. - (cbranch4_addv_insn): New splitter and instruction. - (cbranch4_subv_insn): Likewise. - (cbranch4_negv_insn): Likewise. - - 2016-10-20 Richard Biener - - * tree-ssa-alias.c (ptrs_compare_unequal): Remove code duplication. - Handle decls possibly not bound. - * tree-ssa-structalias.c (get_constraint_for_ssa_var): Add - nothing_id for decls that might not be bound if we are interested - for the address. - (get_constraint_for_component_ref): Deal with that. - - 2016-10-20 Michael Matz - - Loop splitting. - * common.opt (-fsplit-loops): New flag. - * passes.def (pass_loop_split): Add. - * opts.c (default_options_table): Add OPT_fsplit_loops entry at -O3. - (enable_fdo_optimizations): Add loop splitting. - * timevar.def (TV_LOOP_SPLIT): Add. - * tree-pass.h (make_pass_loop_split): Declare. - * tree-ssa-loop-manip.h (rewrite_into_loop_closed_ssa_1): Declare. - * tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h, - * tree-ssa-loop-split.c: New file. - * Makefile.in (OBJS): Add tree-ssa-loop-split.o. - * doc/invoke.texi (fsplit-loops): Document. - * doc/passes.texi (Loop optimization): Add paragraph about loop - splitting. - - 2016-10-20 Richard Biener - - * cgraphunit.c (analyze_functions): Set node->definition to - false to signal symbol removal to debug_hooks->late_global_decl. - * ipa.c (symbol_table::remove_unreachable_nodes): When not in - WPA signal symbol removal to the debuginfo machinery. - * dwarf2out.c (dwarf2out_late_global_decl): Instead of - using early_finised to guard the we're called for symbol - removal case look at the symtabs definition flag. - (gen_variable_die): Remove redundant check. - - 2016-10-20 Andreas Krebbel - - * config/s390/s390.md ("prefetch"): Add fallthrough comment. - - 2016-10-20 Prathamesh Kulkarni - - PR tree-optimization/53979 - * match.pd ((a ^ b) | a -> a | b): New pattern. - - 2016-10-19 John David Anglin - - * config/pa/pa64-hpux.h (PA_INIT_FRAME_DUMMY_ASM_OP): Move to - config/pa/pa64-hpux-lib.h. - (PA_CRTBEGIN_HACK): Likewise. - (DTOR_LIST_BEGIN): Likewise. - - 2016-10-19 Bernd Edlinger - - * config/arm/arm.c (arm_emit_coreregs_64bit_shift): Clear the result - register only if "in" and "out" are different registers. - - 2016-10-19 Eric Botcazou - - * omp-low.c (pass_oacc_device_lower::gate): New method. - (execute): Always call execute_oacc_device_lower. - - 2016-10-19 Bill Schmidt - - PR tree-optimization/77916 - PR tree-optimization/77937 - * gimple-ssa-strength-reduction.c (analyze_increments): Remove - stopgap fix. - (insert_initializers): Requirement of initializer for -1 should be - based on pointer-typedness of the candidate basis. - - 2016-10-19 Bin Cheng - - PR tree-optimization/78005 - * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Compute - upper (included) bound for niters of prolog loop. - (vect_gen_scalar_loop_niters): Change parameter VF to VFM1. - Compute niters of scalar loop above which vectorized loop is - preferred, as well as the upper (included) bound for the niters. - (vect_do_peeling): Record niter bound for loops accordingly. - - 2016-10-19 Thomas Schwinge - - PR lto/77458 - * tree-core.h (enum tree_index): Put the complex types after their - component types. - * tree-streamer.c (verify_common_node_recorded): New function. - (preload_common_nodes) : Use it. - - 2016-10-19 Martin Liska - - * cgraph.h (cgraph_edge::binds_to_current_def_p): - Replace NULL with false as a return value. - - 2016-10-19 Thomas Schwinge - - PR tree-optimization/78024 - * omp-low.c (oacc_loop_discovery): Call clear_bb_flags before, and - don't clear BB_VISITED after processing. - - 2016-10-19 Richard Biener - - * domwalk.c (dom_walker::walk): Use RPO order. - - 2016-10-19 Richard Biener - - * tree-vrp.c (evrp_dom_walker::evrp_dom_walker): Initialize - stmts_to_remove. - (evrp_dom_walker::~evrp_dom_walker): Free it. - (evrp_dom_walker::stmts_to_remove): Add. - (evrp_dom_walker::before_dom_children): Mark PHIs and stmts - whose output we fully propagate for removal. Propagate - into BB destination PHI arguments. - (execute_early_vrp): Remove queued stmts. Dump value ranges - before stmt removal. - - 2016-10-18 Aldy Hernandez - - * Makefile.in (OBJS): Add gimple-ssa-warn-alloca.o. - * passes.def: Add two instances of pass_walloca. - * tree-pass.h (make_pass_walloca): New. - * gimple-ssa-warn-alloca.c: New file. - * doc/invoke.texi: Document -Walloca, -Walloca-larger-than=, and - -Wvla-larger-than= options. - - 2016-10-18 Thomas Schwinge - - * cfg.c (clear_bb_flags): Use FOR_ALL_BB_FN. - * config/nvptx/nvptx.c (nvptx_find_sese): Likewise. - - 2016-10-18 Kelvin Nilsen - - * config/rs6000/altivec.h (vec_xl_len): New macro. - (vec_xst_len): New macro. - (vec_cmpnez): New macro. - (vec_cntlz_lsbb): New macro. - (vec_cnttz_lsbb): New macro. - (vec_xlx): New macro. - (vec_xrx): New macro. - (vec_all_nez): New C++ predicate template. - (vec_any_eqz): New C++ predicate template. - (vec_all_ne): Revised C++ predicate template under _ARCH_PWR9 - conditional compilation. - (vec_any_eq): Revised C++ predicate template under _ARCH_PWR9 - conditional compilation. - (vec_all_nez): New macro. - (vec_any_eqz): New macro. - (vec_all_ne): Revised macro under _ARCH_PWR9 conditional - compilation. - (vec_any_eq): Revised macro under _ARCH_PWR9 conditional - compilation. - * config/rs6000/vector.md (VI): Moved this mode iterator - definition from altivec.md to vector.md. - (UNSPEC_NEZ_P): New value. - (vector_ne__p): New expansion for implementation of - vec_all_ne and vec_any_eq built-in functions. - (vector_nez__p): New expansion for implementation of - vec_all_nez and vec_any_eqz built-in functions. - (vector_ne_v2di_p): New expansion for implementation of vec_all_ne - and vec_any_eq built-in function. - (cr6_test_for_zero): New commentary to explain this expansion. - (cr6_test_for_zero_reverse): New commentary to explain this expansion. - (cr6_test_for_lt): New commentary to explain this expansion. - (cr6_test_for_lt_reverse): New commentary to explain this - expansion. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - overloaded function prototypes for vec_all_ne, vec_all_nez, - vec_any_eq, vec_any_eqz, vec_cmpnez, vec_cntlz_lsbb, - vec_cnttz_lsbb, vec_xl_len, vec_xst_len, vec_xlx, and vec_xrx - built-in functions. - (altivec_resolve_overloaded_builtin): Modify the handling of - ALTIVEC_BUILTIN_VEC_CMPNE to use the Power9 instructions when - the compiler is configured to support TARGET_P9_VECTOR. - * config/rs6000/rs6000-builtin.def (BU_ALTIVEC_P): Add commentary - to explain the special processing that is given to predicate - built-ins introduced using this macro. - (BU_ALTIVEC_OVERLOAD_P): Add commentary to alert maintainers to - the special processing given to predicate built-ins introduced - using this macro. - (BU_VSX_P): Likewise. - (BU_P8V_AV_P): Likewise. - (BU_P9V_AV_P): Likewise. - (BU_P9V_AV_X): New macro. - (BU_P9V_64BIT_AV_X): New macro. - (BU_P9V_VSX_3): New macro. - (BU_P9V_OVERLOAD_P): New macro. - (LXVL): New BU_P9V_64BIT_VSX_2. - (VEXTUBLX): New BU_P9V_AV_2. - (VEXTUBRX): Likewise. - (VEXTUHLX): Likewise. - (VEXTUHRX): Likewise. - (VEXTUWLX): Likewise. - (VEXTUWRX): Likewise. - (STXVL): New BU_P9V_64BIT_AV_X. - (VCLZLSBB): New BU_P9V_AV_1. - (VCTZLSBB): Likewise. - (CMPNEB): New BU_P9V_AV_2. - (CMPNEH): Likewise. - (CMPNEW): Likewise. - (CMPNEF): Likewise. - (CMPNED): Likewise. - (VCMPNEB_P): New BU_P9V_AV_P. - (VCMPNEH_P): Likewise. - (VCMPNEW_P): Likewise. - (VCMPNED_P): Likewise. - (VCMPNEFP_P): Likewise. - (VCMPNEDP_P): Likewise. - (CMPNEZB): New BU_P9V_AV_2. - (CMPNEZH): Likewise. - (CMPNEZW): Likewise. - (VCMPNEZB_P): New BU_P9V_AV_P. - (VCMPNEZH_P): Likewise. - (VCMPNEZW_P): Likewise. - (LXVL): New BU_P9V_OVERLOAD_2. - (STXVL): New BU_P9V_OVERLOAD_3. - (VEXTULX): New BU_P9V_OVERLOAD_2. - (VEXTURX): Likewise. - (CMPNEZ): Likewise. - (VCMPNEZ_P): New BU_P9V_OVERLOAD_P. - (VCMPNE_P): Likewise. - (VCLZLSBB): New BU_P9V_OVERLOAD_1. - (VCTZLSBB): Likewise. - * config/rs6000/rs6000.c (altivec_expand_predicate_builtin): Add - comment to explain mode used for scratch register. - (altivec_expand_stxvl_builtin): New function. - (altivec_expand_builtin): Add case for new constant P9V_BUILTIN_STXVL. - (altivec_init_builtins): Add initialized variable - void_ftype_v16qi_pvoid_long and use this type to define the - built-in function __builtin_altivec_stxvl. - * config/rs6000/vsx.md (UNSPEC_LXVL): New value. - (UNSPEC_STXVL): New value. - (UNSPEC_VCLZLSBB): New value. - (UNSPEC_VCTZLSBB): New value. - (UNSPEC_VEXTUBLX): New value. - (UNSPEC_VEXTUHLX): New value. - (UNSPEC_VEXTUWLX): New value. - (UNSPEC_VEXTUBRX): New value. - (UNSPEC_VEXTUHRX): New value. - (UNSPEC_VEXTUWRX): New value. - (UNSPEC_VCMPNEB): New value. - (UNSPEC_VCMPNEZB): New value. - (UNSPEC_VCMPNEH): New value. - (UNSPEC_VCMPNEZH): New value. - (UNSPEC_VCMPNEW): New value. - (UNSPEC_VCMPNEZW): New value. - (*vsx_ne__p): New insn for vector test all not equal with - vector of integer modes. - (*vsx_ne__p): New insn for vector test all not equal with - vector of float or double modes. - (*vector_nez__p): New insn for vector test all not equal or - zero. - (lxvl): New expand for load VSX vector with length. - (*lxvl): New insn for load VSX vector with length. - (stxvl): New expand for store VSX vector with length. - (*stxvl): New insn for store VSX vector with length. - (vcmpneb): New insn for vector of byte compare not equal. - (vcmpnezb): New insn for vector of byte compare not equal or zero. - (vcmpneh): New insn for vector of half word compare not equal. - (vcmpnezh): New insn for vector of half word compare not equal or - zero. - (vcmpnew): New insn for vector of word compare not equal. - (vcmpne): New insn for vector of float or double compare not - equal. - (vcmpnezw): New insn for vector of word compare not equal or zero. - (vclzlsbb): New insn for vector count leading zero - least-significant bits byte. - (vctzlsbb): New insn for vector count trailing zero least - signficant bits byte. - (vextublx): New insn for vector extract unsigned byte left - indexed. - (vextubrx): New insn for vector extract unsigned byte right - indexed. - (vextuhlx): New insn for vector extract unsigned half word left - indexed. - (vextuhrx): New insn for vector extract unsigned half word right - indexed. - (vextuwlx): New insn for vector extract unsigned word left - indexed. - (vextuwrx): New insn for vector extract unsigned word right - indexed. - * config/rs6000/rs6000.h (RS6000_BTC_CONST): Enhance comment to - clarify intent of this constant. - * config/rs6000/altivec.md (VI): Move this mode iterator to vsx.md. - * doc/extend.texi (PowerPC Altivec Built-in Functions): Add - documentation for vec_all_nez, vec_any_eqz, vec_cmpnez, - vec_cntlz_lsbb, vec_cnttz_lsbb, vec_xl_len, vec_xst_len, vec_xlx, - and vec_xrx functions. - - 2016-10-18 Andrew Pinski - - PR tree-opt/65950 - * predict.c (is_exit_with_zero_arg): New function. - (tree_bb_level_predictions): Don't consider paths leading to exit(0) - as nottaken. - - 2016-10-18 Uros Bizjak - - PR target/77991 - * config/i386/i386.c (legitimize_tls_address) - : For TARGET_64BIT || TARGET_ANY_GNU_TLS - convert dest to Pmode if different than Pmode. - - 2016-10-18 Bill Schmidt - - PR tree-optimization/77916 - * gimple-ssa-strength-reduction.c (analyze_increments): Reinstate - stopgap fix, as pointers with -1 increment are still broken. - - 2016-10-18 David Edelsohn - - * config/rs6000/rs6000.c (rs6000_output_symbol_ref): Move storage - mapping class decoration from here... - (rs6000_xcoff_encode_section): ...to here. - - (rs6000_savres_strategy) [AIX,ELFv2]: Inline FPR save and restore - if shrink-wrapping and optimizing for speed. - - 2016-10-18 Richard Biener - - * tree-vrp.c (evrp_dom_walker::before_dom_children): Handle - not visited but non-executable predecessors. Return taken edge. - Simplify conditions and refactor propagation vs. folding step. - - 2016-10-18 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_savres_strategy): Do not select - {SAVE,REST}_MULTIPLE if shrink-wrapping separate components. - (rs6000_get_separate_components): Assert we do not have those - strategies selected. - - 2016-10-18 Richard Biener - - * tree-ssa-propagate.h (substitute_and_fold): Adjust prototype. - * tree-ssa-propagate.c (ssa_prop_fini): Remove final BB_VISITED - clearing. - (substitute_and_fold_dom_walker): Adjust constructor. - (substitute_and_fold_dom_walker::before_dom_children): Remove - do_dce flag and handling (always true). - (substitute_and_fold): Likewise. - * tree-vrp.c (vrp_finalize): Adjust. - (execute_early_vrp): Remove final BB_VISITED clearing. - * tree-ssa-ccp.c (ccp_finalize): Adjust. - * tree-ssa-copy.c (fini_copy_prop): Likewise. - * ira.c (ira): Call clear_bb_flags. - - 2016-10-18 Richard Biener - - * genmatch.c (dt_operand::gen_gimple_expr): Use get_name to - get at the operand to look at with TREE_OPERAND for generic - sub-nodes. - - 2016-10-18 David Malcolm - - * genattrtab.c (attr_string): Use rtx_reader_ptr for call to - copy_md_ptr_loc. - (gen_attr): Use rtx_reader_ptr for lookup_enum_type call. - (write_test_expr): Use rtx_reader_ptr for calls to - fprint_c_condition. - (write_attr_value): Likewise. - * genconditions.c (write_one_condition): Use rtx_reader_ptr for - call to print_md_ptr_loc. - (write_one_condition): Likewise for calls to print_c_condition. - * genconstants.c: Include "statistics.h" and "vec.h". - (main): Update for conversion to member functions. - * genemit.c (emit_c_code): Use rtx_reader_ptr for - call to print_md_ptr_loc. - * genenums.c: Include "statistics.h" and "vec.h". - (main): Update for conversion of traverse_enum_types to a method. - * genmddeps.c: Include "statistics.h" and "vec.h". - * genoutput.c (process_template): Use rtx_reader_ptr for call to - print_md_ptr_loc. - * genpreds.c (write_predicate_subfunction): Likewise. - (write_predicate_expr): Likewise for calls to print_c_condition. - * genrecog.c (print_test): Likewise. - * gensupport.c (process_rtx): Likewise for calls to - copy_md_ptr_loc and join_c_conditions. - (alter_test_for_insn): Likewise for call to join_c_conditions. - (process_substs_on_one_elem): Likewise. - (gen_mnemonic_setattr): Update for move of string_obstack to a - field of rtx_reader. - (mnemonic_htab_callback): Likewise. Fix formatting. - (gen_mnemonic_attr): Likewise. - * gentarget-def.c (def_target_insn): Use rtx_reader_ptr for calls - to print_c_condition. - * read-md.c: Include "statistics.h" and "vec.h". - (string_obstack): Convert this global to field "m_string_obstack" - of class rtx_reader. - (ptr_locs): Likewise, as "m_ptr_locs". - (ptr_loc_obstack): Likewise, as "m_ptr_loc_obstack". - (joined_conditions): Likewise, as "m_joined_conditions". - (joined_conditions_obstack): Likewise, as "m_joined_conditions_obstack". - (md_constants): Likewise, as "m_md_constants". - (enum_types): Likewise, as "m_enum_types". - (set_md_ptr_loc): Convert to... - (rtx_reader::set_md_ptr_loc): ...member function. - (get_md_ptr_loc): Convert to... - (rtx_reader::get_md_ptr_loc): ...member function. - (copy_md_ptr_loc): Convert to... - (rtx_reader::copy_md_ptr_loc): ...member function. - (fprint_md_ptr_loc): Convert to... - (rtx_reader::fprint_md_ptr_loc): ...member function. - (print_md_ptr_loc): Convert to... - (rtx_reader::print_md_ptr_loc): ...member function. - (join_c_conditions): Convert to... - (rtx_reader::join_c_conditions): ...member function. - (fprint_c_condition): Convert to... - (rtx_reader::fprint_c_condition): ...member function. - (print_c_condition): Convert to... - (rtx_reader::print_c_condition): ...member function. - (read_name): Convert to... - (rtx_reader::read_name): ...member function. - (read_escape): Convert to... - (rtx_reader::read_escape): ...member function. - (read_quoted_string): Convert to... - (rtx_reader::read_quoted_string): ...member function. - (read_braced_string): Convert to... - (rtx_reader::read_braced_string): ...member function. - (read_string): Convert to... - (rtx_reader::read_string): ...member function. - (read_skip_construct): Convert to... - (rtx_reader::read_skip_construct): ...member function. - (handle_constants): Convert to... - (rtx_reader::handle_constants): ...member function. - (traverse_md_constants): Convert to... - (rtx_reader::traverse_md_constants): ...member function. - (handle_enum): Convert to... - (rtx_reader::handle_enum): ...member function. - (lookup_enum_type): Convert to... - (rtx_reader::lookup_enum_type): ...member function. - (traverse_enum_types): Convert to... - (rtx_reader::traverse_enum_types): ...member function. - (rtx_reader::rtx_reader): Move initializations - of various former global data from rtx_reader::read_md_files to - here, as fields, along with the call to unlock_std_streams. - (rtx_reader::~rtx_reader): Clean up m_base_dir, and clean up - the new fields. - (rtx_reader::read_md_files): Move initializations of various - global data from here to the ctor. - * read-md.h (read_name): Convert to... - (rtx_reader::read_name): ...member function. - (rtx_reader::read_escape): New method decl. - (read_quoted_string): Convert to... - (rtx_reader::read_quoted_string): ...member function. - (rtx_reader::read_braced_string): New method decl. - (read_string): Convert to... - (rtx_reader::read_string): ...member function. - (rtx_reader::read_skip_construct): New method decl. - (rtx_reader::set_md_ptr_loc): New method decl. - (rtx_reader::get_md_ptr_loc): New method decl. - (copy_md_ptr_loc): Convert to... - (rtx_reader::copy_md_ptr_loc): ...member function. - (fprint_md_ptr_loc): Convert to... - (rtx_reader::fprint_md_ptr_loc): ...member function. - (print_md_ptr_loc): Convert to... - (rtx_reader::print_md_ptr_loc): ...member function. - (rtx_reader::lookup_enum_type): New method decl. - (rtx_reader::traverse_enum_types): New method decl. - (rtx_reader::handle_constants): New method decl. - (traverse_md_constants): Convert to... - (rtx_reader::traverse_md_constants): ...member function. - (rtx_reader::handle_enum): New method decl. - (rtx_reader::join_c_conditions): New method decl. - (fprint_c_condition): Convert to... - (rtx_reader::fprint_c_condition): ...member function. - (print_c_condition): Convert to... - (rtx_reader::print_c_condition): ...member function. - (rtx_reader::apply_iterator_to_string): New method decl. - (rtx_reader::copy_rtx_for_iterators): New method decl. - (rtx_reader::read_conditions): New method decl. - (rtx_reader::record_potential_iterator_use): New method decl. - (rtx_reader::read_mapping): New method decl. - (rtx_reader::read_rtx): New method decl. - (rtx_reader::read_rtx_code): New method decl. - (rtx_reader::read_rtx_operand): New method decl. - (rtx_reader::read_nested_rtx): New method decl. - (rtx_reader::read_rtx_variadic): New method decl. - (rtx_reader::get_string_obstack): New method. - (rtx_reader::get_md_constants): New method. - (string_obstack): Convert global variable decl to... - (rtx_reader::m_string_obstack): ...this new field. - (rtx_reader::m_ptr_locs): New field. - (rtx_reader::m_ptr_loc_obstack): New field. - (rtx_reader::m_joined_conditions): New field. - (rtx_reader::m_joined_conditions_obstack): New field. - (rtx_reader::m_md_constants): New field. - (rtx_reader::m_enum_types): New field. - * read-rtl.c (apply_iterator_to_string): Convert to... - (rtx_reader::apply_iterator_to_string): ...member function. - (copy_rtx_for_iterators): Convert to... - (rtx_reader::copy_rtx_for_iterators): ...member function. - (add_condition_to_string): Use rtx_reader_ptr for - calls join_c_conditions. - (apply_iterators): Use rtx_reader_ptr for calls to - join_c_conditions and copy_rtx_for_iterators. - (read_conditions): Convert to... - (rtx_reader::read_conditions): ...member function. - (record_potential_iterator_use): Convert to... - (rtx_reader::record_potential_iterator_use): ...member function. - (read_mapping): Convert to... - (rtx_reader::read_mapping): ...member function. - (read_subst_mapping): Use rtx_reader_ptr for read_string call. - (read_rtx): Convert to... - (rtx_reader::read_rtx): ...member function. - (read_rtx_code): Convert to... - (rtx_reader::read_rtx_code): ...member function. - (read_rtx_operand): Convert to... - (rtx_reader::read_rtx_operand): ...member function. Update for move - of string_obstack to a field. - (read_nested_rtx): Convert to.. - (rtx_reader::read_nested_rtx): ...member function. - (read_rtx_variadic): Convert to.. - (rtx_reader::read_rtx_variadic): ...member function. - - 2016-10-18 Kugan Vivekanandarajah - - * tree-vrp.c (get_value_range): Check get_ptr_nonnull. - - 2016-10-18 Kugan Vivekanandarajah - - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Set value range - for pointer type too. - (ipcp_update_vr): set_ptr_nonnull for pointer. - - 2016-10-18 Kugan Vivekanandarajah - - * tree-ssa-alias.h (pt_solution_singleton_or_null_p): Renamed from - pt_solution_singleton_p. - * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Use renamed - pt_solution_singleton_or_null_p from pt_solution_singleton_p. - * tree-ssa-structalias.c (find_what_p_points_to): Preserve - pointer nonnull computed by VRP. - Also Conservatively set pt.null to 1. - (pt_solution_reset): Conservatively set pt.null to 1. - (pt_solution_singleton_or_null_p): Renamed from - pt_solution_singleton_p. - * tree-ssanames.h (set_ptr_nonnull): Declare. - (get_ptr_nonnull): Likewise. - * tree-ssanames.c (set_ptr_nonnull): New. - (get_ptr_nonnull): Likewise. - * tree-vrp.c (vrp_finalize): Set ptr that are nonnull. - (evrp_dom_walker::before_dom_children): Likewise. - - 2016-10-17 Eric Botcazou - - * config/i386/i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to... - * config/i386/i386.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here. - * config/ia64/ia64.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to... - * config/ia64/ia64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here. - * config/rs6000/rs6000.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to. - * config/rs6000/rs6000.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here. - (rs6000_option_override_internal): Clear it if ABI_AIX. - * config/sparc/sparc.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to... - * config/sparc/sparc.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ... here. - - 2016-10-17 Bill Schmidt - - * gimple-ssa-strength-reduction.c (record_increment): Remove - garbage comment. - - 2016-10-17 Eric Botcazou - - * expmed.c (expand_shift_1): Add MAY_FAIL parameter and do not assert - that the result is non-zero if it is true. - (maybe_expand_shift): New wrapper around expand_shift_1. - (emit_store_flag): Call maybe_expand_shift in lieu of expand_shift. - - 2016-10-17 Bill Schmidt - - PR tree-optimization/77916 - * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge): - Don't allow a MINUS_EXPR for pointer arithmetic for either known - or unknown strides. - (record_increment): Increments of -1 for unknown strides just use - a multiply initializer like other negative values. - (analyze_increments): Remove stopgap solution for -1 increment - applied to pointer arithmetic. - - 2016-10-17 Yuri Rumyantsev - - * dominance.c (dom_info::dom_info): Add new constructor for region - which is vector of basic blocks. - (dom_init): New method to initialize members common for both - constructors. - (dom_info::dom_info): Invoke dom_init for partial initialization. - (dom_info::get_idom): Add check to corner cases on basic blocks which - are not in region. - (dom_info::calc_dfs_tree): Check M_FAKE_EXIT_EDGE instead of M_REVERSE - to detect unreachable bbs. - (dom_info::calc_idoms): Likewise. - (compute_dom_fast_query_in_region): New function. - (calculate_dominance_info_for_region): Likewise. - (free_dominance_info_for_region): Likewise. - * dominance.h: Add prototypes for introduced region-based functions - tree-if-conv.c: (build_region): New function. - (if_convertible_loop_p_1): Invoke local version of post-dominators - calculation before basic block predication with subsequent freeing - post-dominator info. - (tree_if_conversion): Remove free of post-dominator info - (pass_if_conversion::execute): Delete detection of infinite loops - and fake edges to exit block since post-dominator calculation is - performed per if-converted loop only. - - 2016-10-17 Bernd Edlinger - - PR target/77308 - * config/arm/arm.c (arm_emit_coreregs_64bit_shift): Clear the result - register explicitly. - * config/arm/arm.md (ashldi3, ashrdi3, lshrdi3): Don't FAIL if - optimizing for size. - - 2016-10-17 Kyrylo Tkachov - - * config/aarch64/aarch64.c: Delete inclusion of - cortex-a57-fma-steering.h. - (aarch64_override_options): Delete call - to aarch64_register_fma_steering. - * config/aarch64/aarch64-protos.h (make_pass_fma_steering): Declare. - * config/aarch64/cortex-a57-fma-steering.h: Delete. - * config/aarch64/aarch64-passes.def: New file. - * config/aarch64/cortex-a57-fma-steering.c - (aarch64_register_fma_steering): Delete definition. - (make_pass_fma_steering): Remove static qualifier. - * config/aarch64/t-aarch64 (PASSES_EXTRA): New directive. - (cortex-a57-fma-steering.o): Remove dependency on - cortex-a57-fma-steering.h. - - 2016-10-17 Eric Botcazou - - * explow.c (validize_mem): Do not modify the argument in-place. - - 2016-10-17 Thomas Schwinge - - * tree-streamer.c (record_common_node): Explicitly list expected - tree codes. - - 2016-10-17 Richard Biener - - PR tree-optimization/77988 - * tree-vrp.c (remove_range_assertions): Use replace_uses_by. - - 2016-10-17 Marek Polacek - - * Makefile.in (C_COMMON_OBJS): Add c-family/c-attribs.o. - - 2016-10-17 Richard Biener - - * bb-reorder.c (reorder_basic_blocks_simple): Clear BB_VISITED - before using it. - - 2016-10-17 Prathamesh Kulkarni - - PR tree-optimization/71636 - * match.pd (x & ((1 << b) - 1) -> x & ~(~0 << b)): New pattern. - - 2016-10-17 Richard Biener - - * gimplify.c (gimplify_function_tree): Do not move the outer - binds block. - - 2016-10-17 Jakub Jelinek - - * langhooks.h (struct lang_hooks_for_decls): Remove - function_decl_explicit_p, function_decl_deleted_p and - function_decl_defaulted hooks. Add decl_dwarf_attribute hook. - * langhooks-def.h (lhd_decl_dwarf_attribute): Declare. - (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P, - LANG_HOOKS_FUNCTION_DECL_DELETED_P, - LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove. - (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Define. - (LANG_HOOKS_DECLS): Remove LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P, - LANG_HOOKS_FUNCTION_DECL_DELETED_P and - LANG_HOOKS_FUNCTION_DECL_DEFAULTED. Add - LANG_HOOKS_DECL_DWARF_ATTRIBUTE. - * langhooks.c (lhd_decl_dwarf_attribute): New function. - * dwarf2out.c (gen_subprogram_die): Use - lang_hooks.decls.decl_dwarf_attribute instead of - lang_hooks.decls.function_decl_*. - - 2016-10-16 Eric Botcazou - - PR ada/37139 - PR ada/67205 - * common.opt (-ftrampolines): New option. - * doc/invoke.texi (Code Gen Options): Document it. - * doc/tm.texi.in (Trampolines): Add TARGET_CUSTOM_FUNCTION_DESCRIPTORS. - * doc/tm.texi: Regenerate. - * builtins.def: Add init_descriptor and adjust_descriptor. - * builtins.c (expand_builtin_init_trampoline): Do not issue a warning - on platforms with descriptors. - (expand_builtin_init_descriptor): New function. - (expand_builtin_adjust_descriptor): Likewise. - (expand_builtin) : New case. - : Likewise. - * calls.c (prepare_call_address): Remove SIBCALLP parameter and add - FLAGS parameter. Deal with indirect calls by descriptor and adjust. - Set STATIC_CHAIN_REG_P on the static chain register, if any. - (call_expr_flags): Set ECF_BY_DESCRIPTOR for calls by descriptor. - (expand_call): Likewise. Move around call to prepare_call_address - and pass all flags to it. - * cfgexpand.c (expand_call_stmt): Reinstate CALL_EXPR_BY_DESCRIPTOR. - * gimple.h (enum gf_mask): New GF_CALL_BY_DESCRIPTOR value. - (gimple_call_set_by_descriptor): New setter. - (gimple_call_by_descriptor_p): New getter. - * gimple.c (gimple_build_call_from_tree): SetCALL_EXPR_BY_DESCRIPTOR. - (gimple_call_flags): Deal with GF_CALL_BY_DESCRIPTOR. - * langhooks.h (struct lang_hooks): Add custom_function_descriptors. - * langhooks-def.h (LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS): Define. - (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS. - * rtl.h (STATIC_CHAIN_REG_P): New macro. - * rtlanal.c (find_first_parameter_load): Skip static chain registers. - * target.def (custom_function_descriptors): New POD hook. - * tree.h (FUNC_ADDR_BY_DESCRIPTOR): New flag on ADDR_EXPR. - (CALL_EXPR_BY_DESCRIPTOR): New flag on CALL_EXPR. - * tree-core.h (ECF_BY_DESCRIPTOR): New mask. - Document FUNC_ADDR_BY_DESCRIPTOR and CALL_EXPR_BY_DESCRIPTOR. - * tree.c (make_node_stat) : Use FUNCTION_ALIGNMENT. - (build_common_builtin_nodes): Initialize init_descriptor and - adjust_descriptor. - * tree-nested.c: Include target.h. - (struct nesting_info): Add 'any_descr_created' field. - (get_descriptor_type): New function. - (lookup_element_for_decl): New function extracted from... - (create_field_for_decl): Likewise. - (lookup_tramp_for_decl): ...here. Adjust. - (lookup_descr_for_decl): New function. - (convert_tramp_reference_op): Deal with descriptors. - (build_init_call_stmt): New function extracted from... - (finalize_nesting_tree_1): ...here. Adjust and deal with descriptors. - * defaults.h (FUNCTION_ALIGNMENT): Define. - (TRAMPOLINE_ALIGNMENT): Set to above instead of FUNCTION_BOUNDARY. - * config/i386/i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define. - * config/ia64/ia64.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Likewise. - * config/rs6000/rs6000.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS):Likewise. - * config/sparc/sparc.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Likewise. - - 2016-10-16 Eric Botcazou - - * config/sparc/sparc.c (sparc_expand_vector_init): Only accept literal - constants in CONST_VECTORs. - - 2016-10-15 Eric Botcazou - - * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): Use a scratch - register as destination of bmask. - (vector_init_bshuffle): Likewise. - * config/sparc/sparc.md (vec_perm_constv8qi): Likewise. - (bmaskdi_vis): Enable only in 64-bit mode. - - 2016-10-15 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_get_separate_components): Do not - make LR a separately shrink-wrapped component unless savres_strategy - contains all of {SAVE,REST}_INLINE_{GPRS,FPRS,VRS}. Do not wrap - GPRs unless both {SAVE,REST}_INLINE_GPRS. Do not disallow all - wrapping when not both {SAVE,REST}_INLINE_GPRS. - - 2016-10-15 Eric Botcazou - - * optabs.c (expand_parity): Fix mode mismatch, add final conversion - and keep looping on failure. - - 2016-10-14 David Malcolm - - * print-rtl-function.c (print_edge): Omit "(flags)" when none are - set. - (print_rtx_function): Update example in comment for... - * print-rtl.c (print_rtx_operand_code_r): In compact mode, print - non-virtual pseudos with a '%' sigil followed by the regno, offset - by (LAST_VIRTUAL_REGISTER + 1), so that the first non-virtual - pseudo is dumped as "%0". - - 2016-10-14 Jakub Jelinek - - PR middle-end/77959 - * expr.c (expand_expr_real_1) : For EXPAND_WRITE - return a MEM. - - 2016-10-14 Eric Botcazou - - * config/sparc/sparc-passes.def: New file. - * config/sparc/t-sparc (PASSES_EXTRA): Add sparc-passes.def. - * config/sparc/sparc-protos.h (make_pass_work_around_errata): New. - * config/sparc/sparc.c (sparc_option_override): Don't register passes. - - 2016-10-14 Pat Haugen - - * loop-unroll.c (unroll_loop_runtime_iterations): Condition initial - loop peel to loops with exit test at the beginning. - - 2016-10-14 Pat Haugen - - PR rtl-optimization/68212 - * cfgloopmanip.c (duplicate_loop_to_header_edge): Use preheader edge - frequency when computing scale factor for peeled copies. - * loop-unroll.c (unroll_loop_runtime_iterations): Fix freq/count - values for switch/peel blocks/edges. - - 2016-10-14 Pedro Alves - - * coretypes.h (OVERRIDE, FINAL): Delete, moved to include/ansidecl.h. - - 2016-10-14 Catherine Moore - - * gcc/config/mips/mips.c (mips_prepare_pch_save): Initialize - micromips_globals to zero. - - 2016-10-14 Richard Biener - - PR tree-optimization/77979 - * tree-vrp.c (compare_name_with_value): Handle released SSA names - in the equivalency sets. - (compare_names): Likewise. + 2018-07-17 Jeff Law - 2016-10-14 Martin Liska + * config/arm/arm.c (get_label_padding): Update for recent + changes to label_to_alignment. - * builtins.h(target_char_cst_p): Declare the function. - * builtins.c (fold_builtin_memchr): Remove. - (target_char_cst_p): Move the function from gimple-fold.c. - (fold_builtin_3): Do not call the function. - * gimple-fold.c (gimple_fold_builtin_memchr): New function. - (gimple_fold_builtin): Call the function. - * fold-const-call.c (fold_const_call_1): Handle CFN_BUILT_IN_MEMCHR. + PR tree-optimization/86010 + * tree-ssa-dse.c (compute_trims): Fix typo/thinko. - 2016-10-14 Martin Liska + * config/mips/mips.c (vr4130_align_insns): Update for recent + changes to label_to_alignment. - * builtins.c (fold_builtin_strcmp): Remove function. - (fold_builtin_strncmp): Likewise. - (fold_builtin_2): Remove call of the function. - (fold_builtin_3): Likewise. - * fold-const-call.c (fold_const_call): Add constant folding - for CFN_BUILT_IN_STRCASECMP and CFN_BUILT_IN_STRNCASECMP. - * fold-const-call.h (build_cmp_result): Declare the function. - * gimple-fold.c (gimple_load_first_char): New function. - (gimple_fold_builtin_string_compare): Likewise. - (gimple_fold_builtin): Call the function. + * 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. - 2016-10-14 Nathan Sidwell + 2018-07-16 Richard Biener - * gcov-io.c (gcov_open): Deconstify 'mode'. + PR lto/86523 + * dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents + for function-local FUNCTION_DECL and RESULT_DECL immediately. - 2016-10-14 Martin Liska + 2018-07-16 Martin Liska - * fold-const.c (c_getstr): Support of properly \0-terminated - string constants. New argument is added. - * fold-const.h: New argument is added. + PR ipa/86529 + * ipa-pure-const.c (malloc_candidate_p): Revert ::get + to ::get_create. - 2016-10-14 Kyrylo Tkachov + 2017-07-16 Claudiu Zissulescu - * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): - New function. - (aarch64_print_hint_for_core): Likewise. - (aarch64_print_hint_for_arch): Likewise. - (aarch64_validate_march): Use it. Fix indentation in type signature. - (aarch64_validate_mcpu): Use aarch64_print_hint_for_core_or_arch. - (aarch64_validate_mtune): Likewise. - (aarch64_handle_attr_arch): Likewise. - (aarch64_handle_attr_cpu): Likewise. - (aarch64_handle_attr_tune): Likewise. + * config/arc/arcHS.md: Update ARCHS scheduling rules. - 2016-10-14 Prathamesh Kulkarni + 2017-07-16 Claudiu Zissulescu - * optabs.def: Remove optab function gen_int_libfunc for sdivmod_optab - and udivmod_optab. + * 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. - 2016-10-13 Andreas Schwab + 2018-07-16 Tom de Vries - * config/m68k/m68k.c (m68k_option_override): Check - opt_fstack_limit_symbol_arg and opt_fstack_limit_register_no - instead of stack_limit_rtx. + PR debug/86455 + * var-tracking.c (vt_initialize): Fix pre_dec handling. - 2016-10-13 Jakub Jelinek + 2018-07-16 Ramana Radhakrishnan - * dwarf2out.c (gen_member_die): Handle inline static data member - definitions. + * config/aarch64/atomics.md (aarch64_store_execlusive): Add + early clobber. - 2016-10-13 Nathan Sidwell - - * gcov-io.c (gcov_open): Fix documentation. Simplify setting - gcov_var.mode. Remove unnecessary fstat. - - 2016-10-13 Segher Boessenkool - - PR bootstrap/77962 - * function.c (thread_prologue_and_epilogue_insns): Call all - make_*logue_seq in the same order as traditional. Call them - all a second time if shrink_wrapped_separate. - - 2016-10-13 Marek Polacek - - * Makefile.in (insn-attrtab.o-warn, insn-dfatab.o-warn, - insn-latencytab.o-warn, insn-output.o-warn, insn-emit.o-warn): Don't - use -Wno-error. - - 2016-10-13 Bill Schmidt - - PR tree-optimization/77937 - * gimple-ssa-strength-reduction.c (analyze_increments): Set cost - to infinite when we have a pointer with an increment of -1. - - 2016-10-13 Thomas Preud'homme - - * coretypes.h: Move MEMMODEL_* macros and enum memmodel definition - into ... - * memmodel.h: This file. - * alias.c, asan.c, auto-inc-dec.c, bb-reorder.c, bt-load.c, - caller-save.c, calls.c, ccmp.c, cfgbuild.c, cfgcleanup.c, - cfgexpand.c, cfgloopanal.c, cfgrtl.c, cilk-common.c, combine.c, - combine-stack-adj.c, common/config/aarch64/aarch64-common.c, - common/config/arm/arm-common.c, common/config/bfin/bfin-common.c, - common/config/c6x/c6x-common.c, common/config/i386/i386-common.c, - common/config/ia64/ia64-common.c, common/config/nvptx/nvptx-common.c, - compare-elim.c, config/aarch64/aarch64-builtins.c, - config/aarch64/aarch64-c.c, config/aarch64/cortex-a57-fma-steering.c, - config/arc/arc.c, config/arc/arc-c.c, config/arm/arm-builtins.c, - config/arm/arm-c.c, config/avr/avr.c, config/avr/avr-c.c, - config/avr/avr-log.c, config/bfin/bfin.c, config/c6x/c6x.c, - config/cr16/cr16.c, config/cris/cris.c, config/darwin-c.c, - config/darwin.c, config/epiphany/epiphany.c, - config/epiphany/mode-switch-use.c, - config/epiphany/resolve-sw-modes.c, config/fr30/fr30.c, - config/frv/frv.c, config/ft32/ft32.c, config/h8300/h8300.c, - config/i386/i386-c.c, config/i386/winnt.c, config/iq2000/iq2000.c, - config/lm32/lm32.c, config/m32c/m32c.c, config/m32r/m32r.c, - config/m68k/m68k.c, config/mcore/mcore.c, - config/microblaze/microblaze.c, config/mmix/mmix.c, - config/mn10300/mn10300.c, config/moxie/moxie.c, - config/msp430/msp430.c, config/nds32/nds32-cost.c, - config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c, - config/nds32/nds32-memory-manipulation.c, - config/nds32/nds32-predicates.c, config/nds32/nds32.c, - config/nios2/nios2.c, config/nvptx/nvptx.c, config/pa/pa.c, - config/pdp11/pdp11.c, config/rl78/rl78.c, config/rs6000/rs6000-c.c, - config/rx/rx.c, config/s390/s390-c.c, config/s390/s390.c, - config/sh/sh.c, config/sh/sh-c.c, config/sh/sh-mem.cc, - config/sh/sh_treg_combine.cc, config/sol2.c, config/spu/spu.c, - config/stormy16/stormy16.c, config/tilegx/tilegx.c, - config/tilepro/tilepro.c, config/v850/v850.c, config/vax/vax.c, - config/visium/visium.c, config/vms/vms-c.c, config/xtensa/xtensa.c, - coverage.c, cppbuiltin.c, cprop.c, cse.c, cselib.c, dbxout.c, dce.c, - df-core.c, df-problems.c, df-scan.c, dojump.c, dse.c, dwarf2asm.c, - dwarf2cfi.c, dwarf2out.c, emit-rtl.c, except.c, explow.c, expmed.c, - expr.c, final.c, fold-const.c, function.c, fwprop.c, gcse.c, - ggc-page.c, haifa-sched.c, hsa-brig.c, hsa-gen.c, hw-doloop.c, - ifcvt.c, init-regs.c, internal-fn.c, ira-build.c, ira-color.c, - ira-conflicts.c, ira-costs.c, ira-emit.c, ira-lives.c, ira.c, jump.c, - loop-doloop.c, loop-invariant.c, loop-iv.c, loop-unroll.c, - lower-subreg.c, lra.c, lra-assigns.c, lra-coalesce.c, - lra-constraints.c, lra-eliminations.c, lra-lives.c, lra-remat.c, - lra-spills.c, mode-switching.c, modulo-sched.c, omp-low.c, passes.c, - postreload-gcse.c, postreload.c, predict.c, print-rtl-function.c, - recog.c, ree.c, reg-stack.c, regcprop.c, reginfo.c, regrename.c, - reload.c, reload1.c, reorg.c, resource.c, rtl-chkp.c, rtl-tests.c, - rtlanal.c, rtlhooks.c, sched-deps.c, sched-rgn.c, sdbout.c, - sel-sched-ir.c, sel-sched.c, shrink-wrap.c, simplify-rtx.c, - stack-ptr-mod.c, stmt.c, stor-layout.c, target-globals.c, - targhooks.c, toplev.c, tree-nested.c, tree-outof-ssa.c, - tree-profile.c, tree-ssa-coalesce.c, tree-ssa-ifcombine.c, - tree-ssa-loop-ivopts.c, tree-ssa-loop.c, tree-ssa-reassoc.c, - tree-ssa-sccvn.c, tree-vect-data-refs.c, ubsan.c, valtrack.c, - var-tracking.c, varasm.c: Include memmodel.h. - * genattrtab.c (write_header): Include memmodel.h in generated file. - * genautomata.c (main): Likewise. - * gengtype.c (open_base_files): Likewise. - * genopinit.c (main): Likewise. - * genconditions.c (write_header): Include memmodel.h earlier in - generated file. - * genemit.c (main): Likewise. - * genoutput.c (output_prologue): Likewise. - * genpeep.c (main): Likewise. - * genpreds.c (write_insn_preds_c): Likewise. - * genrecog.c (write_header): Likewise. - * Makefile.in (PLUGIN_HEADERS): Include memmodel.h - - 2016-10-13 David Malcolm - - * function-tests.c (selftest::test_expansion_to_rtl): Add "true" - for new "compact" param of print_rtx_function. Check for "cinsn" - rather than "insn". - * print-rtl-function.c (flag_compact): New decl. - (print_rtx_function): Add param "compact" and use it to set - flag_compact, adding a description of the effect to the leading - comment, and updating the example output. - * print-rtl.c (flag_compact): New variable. - (print_rtx_operand_code_0): Omit the JUMP_LABEL reference in compact - mode. - (print_rtx_operand_code_i): When printing source locations, wrap - xloc.file in quotes. Don't print INSN_CODEs in compact mode. - (print_rtx_operand_code_r): Don't print regnos for hard regs and - virtuals in compact mode. - (print_rtx_operand_code_u): Don't print insn UIDs in compact mode, - apart from in LABEL_REFs. - (print_rtx_operand): In case 'w', don't print in hex in compact mode. - Don't print basic block ids in compact mode. - (print_rtx): In compact mode, prefix the code of insns with "c", - only print the INSN_UID of CODE_LABELs, and omit their LABEL_NUSES. - * print-rtl.h (print_rtx_function): Add "compact" param. - - 2016-10-13 Richard Earnshaw - - * arm.h (TARGET_VFP): Delete. - (TARGET_VFPD32): Remove references to TARGET_VFP. - (TARGET_VFP3, TARGET_VFP5): Likewise. - (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Likewise. - (TARGET_NEON_FP16): Likewise. - (TARGET_FMA): Likewise. - (TARGET_CRYPTO): Likewise. - (TARGET_NEON): Likewise. - (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise. - (FUNCTION_ARG_REGNO_P): Likewise. - * arm.c (arm_option_check_internal): Likewise. - (arm_option_override): Likewise. - (use_return_insn): Likewise. - (arm_function_value_regno_p): Likewise. - (arm_apply_result_size): Likewise. - (use_vfp_abi): Likewise. - (arm_legitimate_address_outer_p): Likewise. - (thumb2_legitimate_address_p): Likewise. - (arm_legitimate_index_p): Likewise. - (thumb2_legitimate_index_p): Likewise. - (arm_legitimate_address): Likewise. - (arm_get_vfp_saved_size): Likewise. - (arm_emit_vfp_multi_reg_pop): Likewise. - (arm_get_frame_offsets): Likewise. - (arm_save_coproc_regs): Likewise. - (arm_hard_regno_mode_ok): Likewise. - (arm_expand_epilogue_apcs_frame): Likewise. - (arm_expand_epilogue): Likewise. - (arm_file_start): Likewise. - (arm_conditional_register_usage): Likewise. - (arm_validize_comparison): Use vfp_compare_operand directly. - * arm-builtins.c (arm_init_builtins): Remove references to TARGET_VFP. - (arm_expand_vfp_builtin): Use TARGET_HARD_FLOAT for detecting - unsupported usage. - (arm_atomic_assign_expand_fenv): Likewise. - * arm.md (divsf3): Likewise. - (arm_negsi2): Likewise. - (absdf2): Likewise. - (arm_movdi): Likewise. - (arm_movt): Likewise. - (cbranchsf4): Change predicate to vfp_compare_operand. - (cbranchdf4): Change predicate to vfp_compare_operand. - (cstorehf4): Change predicate to vfp_compare_operand. - (cstoresf4): Change predicate to vfp_compare_operand. - (cstoredf4): Change predicate to vfp_compare_operand. - (vfp_pop_multiple_with_writeback): Remove references to TARGET_VFP. - (movhi_insn_arch4, movhi_bytes): Likewise. - * constraints.md (Dt): Likewise. - (Dp): Likewise. - * iterators.md (SDF): Likewise. - * predicates.md (arm_float_compare_operand): Delete. - (const_double_vcvt_power_of_two_reciprocal): Remove references to - TARGET_VFP. - (const_double_vcvt_power_of_two): Likewise. - * thumb2.md thumb2_movsi_insn): Likewise. - * vfp.md (arm_movhi_vfp, thumb2_movhi_vfp): Likewise. - (movhf_vfp): Likewise. - (arm_movsi_vfp, thumb2_movsi_vfp): Likewise. - (movdi_vfp, movdi_vfp_cortexa8): Likewise. - (movsf_vfp, thumb2_movsf_vfp): Likewise. - (movdf_vfp, thumb2_movdf_vfp): Likewise. - (movsfcc_vfp, abssf2_vfp, negsf2_vfp, addsf3_vfp): Likewise. - (subsf3_vfp, divsf3_vfp): Likewise. - (mulsf3_vfp, mulsf3negsf_vfp, negmulsf3_vfp): Likewise. - (mulsf3addsf_vfp, (mulsf3subsf_vfp, mulsf3negsfaddsf_vfp): Likewise. - (mulsf3negsfsubsf_vfp): Likewise. - (truncsisf2_vfp, fixuns_truncsfsi2, floatsisf2_vfp): Likewise. - (floatunssisf2, sqrtsf2_vfp): Likewise. - (movcc_vfp): Likewise. - (cmpsf_split_vfp, cmpsf_trap_split_vfp): Likewise. - (cmpsf_vfp, cmpsf_trap_vfp): Likewise. - (push_multi_vfp): Likewise. - (set_fpscr, get_fpscr): Likewise. - * arm-c.c (arm_cpu_builtins): Unconditionally define __VFP_FP__. - - 2016-10-13 Richard Earnshaw - - * arm.h (TARGET_VFP): Unconditionally define to 1. - (arm_fpu_desc): Remove 'model' field. - (TARGET_FPU_MODEL): Delete. - * arm.c (all_fpus): Don't initialize the model field. - (arm_can_inline_p): Don't check the FPU model. - * arm-fpus.def: Remove redundant model field from all FPU - descriptions. - - 2016-10-13 Richard Biener - - PR middle-end/77826 - * genmatch.c (struct capture): Add value_match member. - (commutate): Preserve value_match. - (lower_opt_convert): Likewise. - (lower_cond): Likewise. - (replace_id): Likewise. - (struct dt_operand): Add value_match member. - (decision_tree::cmp_node): Compare it. - (decision_tree::insert_operand): Honor it when finding and - when appending a DT_MATCH. - (dt_operand::gen_match_op): Generate a type check after - operand_equal_p if ! value_match for both GENERIC and GIMPLE. - (parser::get_internal_capture_id): New helper. - (parser::finish_match_operand): New function lowering @@. - (parser::parse_capture): Parse @@ as value-match. - (parser::parse_expr): Use get_internal_capture_id. - (parser::parse_simplify): Call finish_match_operand. - (walk_captures): New helper. - * match.pd (X - (X / Y) * Y -> X % Y): Use value-matching instead - of operand_equal_p. - ((X /[ex] A) * A -> X): Likewise. - ((X | Y) ^ X -> Y & ~ X): Handle constants properly by using - convert[12] and value-matching. - ((A | B) & (A | C) -> A | (B & C)): Likewise. - ((X | Y) | Y -> X | Y): Likewise. - ((X ^ Y) ^ Y -> X): Likewise. - (A - (A & B) -> ~B & A): Likewise. - ((T)(P + A) - (T)P -> (T) A): Likewise. - ((T)P - (T)(P + A) -> -(T) A): Likewise. - ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Likewise. - * doc/match-and-simplify.texi: Amend capture section. - - 2016-10-13 Claudiu Zissulescu - - * config/arc/arc.md (umul_600): Remove predicated variant. - (umul64_600): Likewise. - - 2016-10-13 Claudiu Zissulescu - - * config/arc/arc.h (INSN_LENGTH_ALIGNMENT): Change. - - 2016-10-13 Bin Cheng - - * tree-vect-loop.c (loop_niters_no_overflow): New func. - (vect_transform_loop): Call loop_niters_no_overflow. Pass the - no-overflow information to vect_do_peeling_for_loop_bound and - vect_gen_vector_loop_niters. - - 2016-10-13 Bin Cheng - - * tree-predcom.c (tree_predictive_commoning_loop): Skip loop that only - iterates 1 time. - - 2016-10-13 Bin Cheng - - * tree-vect-loop-manip.c (adjust_vec_debug_stmts): Don't release - adjust_vec automatically. - (slpeel_add_loop_guard): Remove param cond_expr_stmt_list. Rename - param exit_bb to guard_to. - (slpeel_checking_verify_cfg_after_peeling): - (set_prologue_iterations): - (create_lcssa_for_virtual_phi): New func which is factored out from - slpeel_tree_peel_loop_to_edge. - (slpeel_tree_peel_loop_to_edge): - (iv_phi_p): New func. - (vect_can_advance_ivs_p): Call iv_phi_p. - (vect_update_ivs_after_vectorizer): Call iv_phi_p. Directly insert - new gimple stmts in basic block. - (vect_gen_niters_for_prolog_loop): Rename to... - (vect_gen_prolog_loop_niters): ...Rename from. Change parameters and - adjust implementation. - (vect_update_inits_of_drs): Fix code style issue. Convert niters to - sizetype if necessary. - (vect_build_loop_niters): Move to here from tree-vect-loop.c. Change - it to external function. - (vect_gen_scalar_loop_niters, vect_gen_vector_loop_niters): New. - (vect_gen_vector_loop_niters_mult_vf): New. - (slpeel_update_phi_nodes_for_loops): New. - (slpeel_update_phi_nodes_for_guard1): Reimplement. - (find_guard_arg, slpeel_update_phi_nodes_for_guard2): Reimplement. - (slpeel_update_phi_nodes_for_lcssa, vect_do_peeling): New. - * tree-vect-loop.c (vect_build_loop_niters): Move to file - tree-vect-loop-manip.c - (vect_generate_tmps_on_preheader): Delete. - (vect_transform_loop): Rename vectorization_factor to vf. Call - vect_do_peeling instead of vect_do_peeling-* functions. - * tree-vectorizer.h (vect_do_peeling): New decl. - (vect_build_loop_niters, vect_gen_vector_loop_niters): New decls. - (vect_do_peeling_for_loop_bound): Delete. - (vect_do_peeling_for_alignment): Delete. - - 2016-10-13 Bin Cheng - - * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Put - duplicated loop after its preheader and after the original loop. - - 2016-10-13 Bin Cheng - - * tree-vect-loop.c (vect_analyze_loop_2): Check and skip loop if it - has no enough iterations for LOOP_VINFO_PEELING_FOR_GAPS. - - 2016-10-13 Bin Cheng - - * tree-vect-loop.c (vectorizable_live_operation): Support handling - for live variable outside loop but not in lcssa form. - - 2016-10-13 Bin Cheng - - * cfg.c (reset_original_copy_tables): New func. - * cfg.h (reset_original_copy_tables): New decl. - - 2016-10-13 Jakub Jelinek - - PR c/77946 - * tree.h (FALLTHROUGH_LABEL_P): Use private_flag instead of - public_flag. - * varasm.c (default_binds_local_p_3): Formatting fix. - - 2016-10-13 Bin Cheng - - * tree-vect-loop-manip.c (slpeel_can_duplicate_loop_p): Fix code - style issue. - (vect_do_peeling_for_loop_bound, vect_do_peeling_for_alignment): - Remove useless code. - - 2016-10-13 Martin Liska - - PR tree-optimization/77943 - * tree-ssa-tail-merge.c (merge_stmts_p): Do not merge BBs with - a different EH landing pads. - - 2016-10-13 Jakub Jelinek - - PR target/77957 - * hooks.h (hook_tree_void_null): Declare. - * hooks.c (hook_tree_void_null): New function. - * langhooks.c (lhd_return_null_tree_v): Remove. - * langhooks-def.h (lhd_return_null_tree_v): Remove. - * cfgexpand.c (stack_protect_prologue): If guard_decl is NULL, - set y to const0_rtx. - * function.c (stack_protect_epilogue): Likewise. - * config/tilepro/tilepro.c (TARGET_STACK_PROTECT_GUARD): Redefine - if TARGET_THREAD_SSP_OFFSET is defined. - * config/s390/s390.c (TARGET_STACK_PROTECT_GUARD): Likewise. - * config/sparc/sparc.c (TARGET_STACK_PROTECT_GUARD): Likewise. - * config/tilegx/tilegx.c (TARGET_STACK_PROTECT_GUARD): Likewise. - * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Likewise. - * config/i386/i386.c (TARGET_STACK_PROTECT_GUARD): Likewise. - (ix86_stack_protect_guard): New function. - - 2016-10-13 Richard Biener - - * dwarf2out.c (tree_add_const_value_attribute): Do not try - rtl_for_decl_init during early phase. - (gen_variable_die): Do not create locations during early phase. - (gen_label_die): Likewise. - (decls_for_scope): Do not waste time handling BLOCK_NONLOCALIZED_VARs - twice. - - 2016-10-12 Richard Biener - - * tree-vrp.c (evrp_dom_walker::try_find_new_range): Renamed from - try_add_new_range and made to eturn new range. - (evrp_dom_walker::before_dom_children): Push op1 value range before - pushing op0 value range. - - 2016-10-12 Bill Schmidt - - PR tree-optimization/77937 - * gimple-ssa-strength-reduction.c (analyze_increments): Use - POINTER_TYPE_P on the candidate type to determine whether - candidates in this chain require pointer arithmetic. - - 2016-10-12 Eric Botcazou - - * config/visium/visium.c (visium_gimplify_va_arg): Emit a big-endian - correction if the type is smaller than a word. - (visium_select_cc_mode): Add ... fall through ... comment. - - 2016-10-12 Segher Boessenkool - - * config/rs6000/rs6000.c (machine_function): Add new fields - gpr_is_wrapped_separately and lr_is_wrapped_separately. - (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS, - TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB, - TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS, - TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS, - TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS, - TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Define. - (rs6000_get_separate_components): New function. - (rs6000_components_for_bb): New function. - (rs6000_disqualify_components): New function. - (rs6000_emit_prologue_components): New function. - (rs6000_emit_epilogue_components): New function. - (rs6000_set_handled_components): New function. - (rs6000_emit_prologue): Don't emit LR save if lr_is_wrapped_separately. - Don't emit GPR saves if gpr_is_wrapped_separately for that register. - (restore_saved_lr): Don't restore LR if lr_is_wrapped_separately. - (rs6000_emit_epilogue): Don't emit GPR restores if - gpr_is_wrapped_separately for that register. Don't make a - REG_CFA_RESTORE note for registers we did not restore, either. - - 2016-10-12 Segher Boessenkool - - * function.c (thread_prologue_and_epilogue_insns): Call - try_shrink_wrapping_separate. Compute the prologue_seq afterwards, - if it has possibly changed. Compute the split_prologue_seq and - epilogue_seq later, too. - * shrink-wrap.c: #include cfgbuild.h and insn-config.h. - (dump_components): New function. - (struct sw): New struct. - (SW): New function. - (init_separate_shrink_wrap): New function. - (fini_separate_shrink_wrap): New function. - (place_prologue_for_one_component): New function. - (spread_components): New function. - (disqualify_problematic_components): New function. - (emit_common_heads_for_components): New function. - (emit_common_tails_for_components): New function. - (insert_prologue_epilogue_for_components): New function. - (try_shrink_wrapping_separate): New function. - * shrink-wrap.h: Declare try_shrink_wrapping_separate. - - 2016-10-12 Segher Boessenkool - - * regrename.c (build_def_use): Invalidate chains that have a - REG_CFA_RESTORE on some instruction. - - 2016-10-12 Segher Boessenkool - - * dce.c (delete_unmarked_insns): Don't delete instructions with - a REG_CFA_RESTORE note. - - 2016-10-12 Segher Boessenkool - - * common.opt (-fshrink-wrap-separate): New flag. - * doc/invoke.texi: Document it. - * doc/tm.texi.in (Shrink-wrapping separate components): New subsection. - * doc/tm.texi: Regenerate. - * emit-rtl.h (struct rtl_data): New field shrink_wrapped_separate. - * target.def (shrink_wrap): New hook vector. - (get_separate_components, components_for_bb, disqualify_components, - emit_prologue_components, emit_epilogue_components, - set_handled_components): New hooks. + 2018-07-16 Eric Botcazou - 2016-10-12 Segher Boessenkool + 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. - * config/rs6000/rs6000.c (rs6000_return_in_memory): Warn for - vector return by reference only if -Wpsabi. - (rs6000_pass_by_reference): Similarly, for argument passing. + 2018-07-16 Tom de Vries - 2016-10-12 David Malcolm + * var-tracking.c (vt_initialize): Print adjusted insn slim if + dump_flags request TDF_SLIM. - * function-tests.c: Include "print-rtl.h". - (selftest::test_expansion_to_rtl): Call print_rtx_function on the - function, and verify what is dumped. - * print-rtl-function.c (print_edge): New function. - (begin_any_block): New function. - (end_any_block): New function. - (can_have_basic_block_p): New function. - (print_rtx_function): Track the basic blocks of insns in the - chain, wrapping those that are within blocks within "(block)" - directives. Remove the "(cfg)" directive. + 2018-07-16 Aldy Hernandez - 2016-10-12 David Malcolm + * 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. - * selftest.c (selftest::read_file): New function. - (selftest::test_read_file): New function. - (selftest::selftest_c_tests): Call test_read_file. - * selftest.h (selftest::read_file): New decl. + 2018-07-15 Jeff Law - 2016-10-12 Richard Biener + PR target/85993 + * config/sh/sh.c (output_mi_thunk): Remove dead conditional + block. - PR debug/77947 - * cgraphunit.c (analyze_functions): Preserve cgraph nodes - function context. + 2018-07-14 Jim Wilson - 2016-10-12 Thomas Schwinge + * config/riscv/linux.h (TARGET_ASM_FILE_END): New. - * lto-streamer.c: Fix LTO_STREAMER_DEBUG build. + 2018-07-14 Paul Koning - * dwarf2out.c (dwarf2_lineno_debug_hooks): Use - dwarf2out_assembly_start. + * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes. - * Makefile.in (SELFTEST_FLAGS): Add -nostdinc. + 2018-07-13 Jan Hubicka - * Makefile.in (SELFTEST_FLAGS): New variable. - (s-selftest, selftest-gdb, selftest-valgrind): Use it. + * lto-streamer-out.c (copy_function_or_variable): Dump info about + copying section. - * vmsdbgout.c (vmsdbg_debug_hooks): Add filename parameter to - early_finish hook. + 2018-07-13 Bill Schmidt + Steve Munroe - 2016-10-12 Georg-Johann Lay + * config/rs6000/emmintrin.h (_mm_and_si128): New function. + (_mm_andnot_si128): Likewise. + (_mm_or_si128): Likewise. + (_mm_xor_si128): Likewise. - * rtl.h (struct rtx_def): Comment how RTX_FLAGS will be - dumped in RTL dumps. + 2018-07-13 Qing Zhao - 2016-10-12 Martin Liska + 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. - * gimple-fold.c (create_tmp_reg_or_ssa_name): New function. - (gimple_fold_builtin_memory_op): Use the function. - (gimple_fold_builtin_strchr): Likewise. - (gimple_fold_builtin_strcat): Likewise. - (gimple_build): Likewise. + 2018-07-13 Richard Earnshaw - 2016-10-12 Nathan Sidwell + * 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. - * diagnostic.c (diagnostc_report_diagnostic): Fix formatting. + 2018-07-13 Richard Biener - 2016-10-12 Pierre-Marie de Rodat - - * dwarf2out.c (int_loc_descriptor): Generate opcodes for another - equivalent 32-bit constant (modulo 2**32) when that yields - smaller instructions. - (size_of_int_loc_descriptor): Update accordingly. + PR middle-end/85974 + * match.pd (addr1 - addr2): Allow either of the operand to + have a conversion. - 2016-10-12 Pierre-Marie de Rodat + 2018-07-13 Tom de Vries - * dwarf2out.c (dwarf2out_early_global_decl): For nested - functions, call dwarf2out_decl on the parent function first. - - 2016-10-12 Richard Biener - - * match.pd ((X /[ex] A) * A -> X): Remove unnecessary constraint - on the conversion. + * tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated + in remap_ssa_name. - 2016-10-12 Richard Biener - - * tree-ssa-propagate.c - (substitute_and_fold_dom_walker::before_dom_children): Do not - ignore ASSERT_EXPRs but only preserve them. - * tree-vrp.c (remove_range_assertions): Deal with ASSERT_EXPRs - that have been propagated into. - (vrp_finalize): Enable DCE for substitute_and_fold. - - 2016-10-12 Richard Biener - - PR tree-optimization/77920 - * tree-vrp.c (simplify_div_or_mod_using_ranges): Simplify. - (simplify_min_or_max_using_ranges): Pass in gsi and use it. - (simplify_abs_using_ranges): Likewise. - (simplify_conversion_using_ranges): Likewise. - (simplify_stmt_using_ranges): Adjust. + 2018-07-13 Jackson Woodruff - 2016-10-12 Jakub Jelinek + * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use + arrays instead of numbered variables. - PR tree-optimization/77929 - * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle - (*ops)[ranges[i].idx]->op != ranges[i].exp case. + 2018-07-13 Eric Botcazou - 2016-10-12 Aaron Sawdey + * config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete. + * config/sparc/sparc.c (sparc_compute_frame_size): Make static. - PR target/77934 - * config/rs6000/vmx.md (vsx_concat_): The mtvsrdd instruction - needs a base register for arg 1. + 2018-07-13 Richard Biener - 2016-10-12 Jakub Jelinek + PR debug/86452 + * dwarf2out.c (gen_type_die_with_usage): Use scope_die_for + instead of get_context_die. - * common.opt (Wimplicit-fallthrough) Turn into alias to - -Wimplicit-fallthrough=3. Remove EnabledBy. - (Wimplicit-fallthrough=): New option. - * gimplify.c (warn_implicit_fallthrough_r): Use - OPT_Wimplicit_fallthrough_ instead of OPT_Wimplicit_fallthrough. - * doc/invoke.texi (-Wimplicit-fallthrough): Document as alias - to -Wimplicit-fallthrough=3. - (-Wimplicit-fallthrough=): Document. + 2018-07-13 Kugan Vivekanandarajah + Richard Biener - 2016-10-11 Eric Botcazou + 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. - * config/sparc/sparc.c (emit_scc_insn): Remove direct support for EQ - and GEU in DImode if TARGET_SUBXC. - * config/sparc/sparc.md (seqdi_zero): Remove TARGET_SUBXC. - (seqdi_zero_subxc): Delete. - (neg_seqdi_zero): Remove TARGET_VIS3. - (neg_seqdi_zero_vis3): Delete. - (plus_seqdi_zero): Likewise. - (minus_seqdi_zero): Likewise. - (plus_plus_sltu): Accept only register. - (addx): Likewise. - (plus_sltu_vis3): Likewise. - (plus_plus_sltu_vis3): Likewise. - (neg_sgeu_vis3): Delete. - (minus_sgeu_vis3): Likewise. - (addxc): Accept only registers. - (neg_sltu_subxc): Write %%g0 instead of 0. - (minus_neg_sltu_subxc): Accept only register. - (neg_plus_sltu_subxc): Likewise. - (minus_sltu_subxc): Write %%g0 instead of 0. - (minus_minus_sltu_subxc): Accept only register. - (sgeu_insn_subxc): Delete. - (plus_sgeu_subxc): Likewise. - (subxc): Accept only register. - (scc splitter): Split always GEU again. - - 2016-10-11 Jeff Law - - PR tree-optimization/77424 - * tree-ssa-threadupdate.c (thread_through_all_blocks): Remove - dead conditionals. Assert that all e->aux fields are NULL. - - 2016-10-11 David Malcolm - - * print-rtl.c (print_rtx): Rename "i" to "idx". Split out the - operand-printing "switch" statement into... - (print_rtx_operand_code_0): ...this new function, ... - (print_rtx_operand_code_e): ...this new function, ... - (print_rtx_operand_codes_E_and_V): ...this new function, ... - (print_rtx_operand_code_i): ...this new function, ... - (print_rtx_operand_code_r): ...this new function, ... - (print_rtx_operand_code_u): ...this new function, ... - (print_rtx_operand): ...and this new function. - - 2016-10-11 Uros Bizjak - - * config/alpha/alpha-passes.def: New file. - * config/alpha/t-alpha: New file. - * config/alpha/alpha-protos.h (gcc::context, rtl_opt_pass): Declare. - (make_pass_handle_trap_shadows): New prototype. - (make_pass_align_insns): Ditto. - * config/alpha/alpha.c (alpha_option_override): Don't register - passes here. - * config.gcc (alpha*-*-*) Add alpha/t-alpha to tmake_file. - - 2016-10-11 Michael Meissner - - PR target/77924 - * config/rs6000/rs6000.c (rs6000_init_builtins): Only create the - distinct __ibm128 IBM extended double type if long doubles are - 128-bits and the default format for long double is IEEE 128-bit. - - 2016-10-11 Richard Biener - - * dwarf2out.c (DEBUG_STR_OFFSETS_SECTION): Remove conditional. - (init_sections_and_labels): Use DEBUG_DWO_STR_OFFSETS_SECTION. - (verify_die): New function. - (dwarf2out_finish): Call it. - (output_line_info): Handle case of -gsplit-dwarf without - DWARF2_ASM_LINE_DEBUG_INFO. - - 2016-10-11 Richard Biener - - PR debug/77931 - * gimple-low.c (lower_gimple_bind): Handle arbitrary common - sub-chains of BLOCK_VARS and gimple_bind_vars. - - 2016-10-11 Venkataramanan Kumar - - * config/i386/znver1.md : Fix imov/imovx load type reservations. - - 2016-10-11 Eric Botcazou - - * config/sparc/sparc.opt (msubxc): New option. - * doc/invoke.texi (SPARC options): Document it and tidy up. - * doc/tm.texi.in (Condition Codes): Adjust SPARC example. + 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. - * config/sparc/sparc-modes.def (CC_NOOV): Rename into... - (CCNZ): ...this. - (CCX_NOOV): Rename into... - (CCXNZ): ...this. - (CCC): New. - (CCXC): Likewise. - * config/sparc/predicates.m (fcc_register_operand): Simplify. - (fcc0_register_operand): Likewise. - (icc_register_operand): New. - (icc_or_fcc_register_operand): Simplify. - (nz_comparison_operator): New. - (c_comparison_operator): Likewise. - (noov_compare_operator): Rename into... - (icc_comparison_operator): ...this. Use above predicates. - (noov_compare64_operator): Rename into... - (v9_comparison_operator): ...this and tidy up. - (fcc_comparison_operator): New. - (icc_or_fcc_comparison_operator): Likewise. - (v9_register_compare_operator): Rename info... - (v9_register_comparison_operator): ...this. - * config/sparc/sparc.c (TARGET_FIXED_CONDITION_CODE_REGS): Define. - (sparc_option_override): Remove redundant VIS masks and add MASK_SUBXC - for Niagara-7. - (sparc_fixed_condition_code_regs): New function. - (select_cc_mode): Remove ATTRIBUTE_UNUSED. Adjust for CCNZ/CCXNZ - renaming and add support for CCC/CCXC. - (output_cbranch): Likewise. - (sparc_print_operand): Likewise. - (gen_v9_scc): Remove obsolete assertion. - (emit_scc_insn): Emit RTL directly for EQ and NE. Add direct support - for EQ in DImode if TARGET_SUBXC. Remove test on TARGET_VIS3 for GEU. - (output_cbcond): Remove bogus handling of CC modes. - (sparc_register_move_cost): Return 100 for NO_REGS. - * config/sparc/sparc.md (W): New mode iterator. - (length): Adjust for noov_compare64_operator renaming. - (cmpsi_sne): New instruction. - (cmpdi_sne): Likewise. - (seqdi_special): Delete. - (seqdi_special): Likewise. - (snesi_special): Likewise. - (snedi_special): Likewise. - (snedi_special_vis3): Likewise. - (snesi patterns): Use W iterator. - (snedi patterns): Likewise. Add TARGET_SUBXC patterns. - (sltu patterns): Likewise. - (sgeu patterns): Likewise. - (scc splitter): Do not split GEU in DImode if TARGET_SUBXC. - (normal_branch): Use icc_comparison_operator predicate. - (inverted_branch): Likewise. - (cbcond_sp32): Use comparison_operator predicate. - (cbcond_sp64): Likewise. - (normal_int_branch_sp64): Adjust for renaming - (inverted_int_branch_sp64): Likewise. - (mov_cc_reg_sp64): Likewise. - (movsf_cc_reg_sp6): Likewise. - (movdf_cc_reg_sp64): Likewise. - (movtf_cc_reg_hq_sp64): Likewise. - (movtf_cc_reg_sp64): Likewise. - (mov_cc_v9): Use icc_or_fcc_comparison_operator predicate. - (movsf_cc_v9): Likewise. - (movdf_cc_v9): Likewise. - (movtf_cc_hq_v9): Likewise. - (movtf_cc_v9): Likewise. - (adddi3): Call gen_adddi3_sp32. - (adddi3_insn_sp32): Rename to... - (adddi3_sp32): ...this. Accept only register_operand as operand #1 - and use CCCmode for the carry. - (addx_extend_sp32): Use CCCmode for the carry. - (addx_extend_sp64): Delete. - (adddi3_extend_sp32): Use CCCmode for the carry. - (cmp_plus patterns): Use CCNZ/CCXNZ mode and add C variants. - (subdi3): Call gen_subdi3_sp32. - (subdi3_insn_sp32): Rename to... - (subdi3_sp32): ...this and use CCmode for the carry. - (subx_extend_sp32): Use CCCmode for the carry. - (subx_extend_sp64): Delete. - (subdi3_extend_sp32): Use CCmode for the carry. - (cmp_minus patterns): Use CCNZ/CCXNZ mode and add C variants. - (negdi3): Call gen_negdi3_sp32. - (negdi3_sp32): Use CCCmode for the carry. - (cmp_neg patterns): Use CCNZ/CCXNZ mode and add C variants. - (cmp_nz_ashift_1): Use CCNZ mode. - (cmp_nz_set_ashift_1): Likewise. - (ctrapsi4): Use comparison_operator predicate. - (ctrapdi4): Likewise. - (trapsi_insn): Use icc_comparison_operator predicate. - (trapdi_insn): Likewise. - (edge8 patterns): Use CCNZmode. - (edge16 patterns): Likewise. - (edge32 patterns): Likewise. - - 2016-10-11 Eric Botcazou - - * config/visium/visium-modes.def (CC_NOOV): Rename into... - (CCNZ): ...this. - (CC_BTST): Rename into... - (CCC): ...this. - * config/visium/predicates.md (real_add_operand): New. - (visium_btst_operator): Rename into... - (visium_equality_comparison_operator): ...this. - (visium_noov_operator): Rename into... - (visium_nz_comparison_operator): ...this. - (visium_c_comparison_operator): New. - (visium_branch_operator): Adjust and deal with all CC modes. - * config/visium/visium.c (visium_adjust_cost): Adjust. - (visium_split_double_add): Use the *_set_carry patterns. - (visium_select_cc_mode): Add support for CCC mode and adjust. - (output_cbranch): Adjust and use the carry-based operators for - floating-point comparisons. - * config/visium/visium.md (flags_subst_arith): Adjust. - (addsi3_insn_set_carry): New instruction. - (subsi3_insn_set_carry): Likewise. - (negsi2_insn_set_carry): Likewise. - (btst): Adjust. - (cmp_sne): Likewise. - (cbranch4): Use ordered_comparison_operator. - (cbranch4_insn): Likewise. - (cbranchsi4_btst_insn): Adjust. - - 2016-10-11 Tom de Vries - - PR middle-end/77558 - * builtins.c (std_canonical_va_list_type): Remove RECORD_TYPE - special-casing. - - 2016-10-11 Eric Botcazou - - * tree.h (build_complex_type): Add second parameter with default. - * tree.c (build_complex_type): Add NAMED second parameter and adjust - recursive call. Create a TYPE_DECL only if NAMED is true. - (build_common_tree_nodes): Pass true in calls to build_complex_type. - - 2016-10-11 Georg-Johann Lay - - New avr-passes.def to register AVR specific passes. - - * config/avr/avr-passes.def: New file. - * config/avr/t-avr (PASSES_EXTRA): Add avr-passes.def. - * config/avr/avr-protos.h (gcc::context, rtl_opt_pass): Declare. - (make_avr_pass_recompute_note): New proto. - * config/avr/avr.c (make_avr_pass_recompute_notes): New function. - (avr_pass_recompute_notes): Use anonymous namespace. - (avr_register_passes): Remove function... - (avr_option_override): ...and its call. - - 2016-10-11 Robert Suchanek - - * config/mips/mips-cpus.def: Replace PTF_AVOID_BRANCHLIKELY with - PTF_AVOID_BRANCHLIKELY_ALWAYS for generic architecture and with - PTF_AVOID_BRANCHLIKELY_SPEED for others. - (mips2, mips3, mips4): Add PTF_AVOID_BRANCHLIKELY_SIZE to tune - flags. - * config/mips/mips.c (mips_option_override): Enable the branch - likely depending on the tune flags and optimization level. - * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): Remove. - (PTF_AVOID_BRANCHLIKELY_SPEED): Define. - (PTF_AVOID_BRANCHLIKELY_SIZE): Likewise. - (PTF_AVOID_BRANCHLIKELY_ALWAYS): Likewise. - - 2016-10-11 Richard Biener - - * lto-streamer-out.c (collect_block_tree_leafs): New helper. - (output_function): Properly stream the whole block tree. - * lto-streamer-in.c (input_function): Likewise. - - 2016-10-11 Marek Polacek - - * Makefile.in (C_COMMON_OBJS): Add c-family/c-warn.o. - - 2016-10-11 Kugan Vivekanandarajah - - * tree-vrp.c (evrp_dom_walker::try_add_new_range): New. - (evrp_dom_walker::before_dom_children): Infer and push new value - ranges for x in y < x. - - 2016-10-10 Joseph Myers - - PR target/77586 - * config/ia64/ia64.c (ia64_libgcc_floating_mode_supported_p) - (TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Remove. - * config/ia64/elf.h (IA64_NO_LIBGCC_TFMODE): Likewise. - * config/ia64/freebsd.h (IA64_NO_LIBGCC_TFMODE): Likewise. - * config/ia64/vms.h (IA64_NO_LIBGCC_XFMODE) - (IA64_NO_LIBGCC_TFMODE): Likewise. - - 2016-10-11 Kugan Vivekanandarajah - - * tree-vrp.c (vrp_intersect_ranges_1): Allocate bitmap before - copying. - - 2016-10-10 Andreas Tobler - - * config.gcc: Add aarch64-*-freebsd* support. - * config.host: Likewise. - * config/aarch64/aarch64-freebsd.h: New file. - * config/aarch64/t-aarch64-freebsd: Ditto. - - 2016-10-10 Jeff Law - - PR tree-optimization/71947 - * tree-ssa-dom.c (cprop_into_stmt): Avoid replacing A with B, then - B with A within a single statement. - - 2016-10-10 Bill Schmidt - - PR tree-optimization/77824 - * gimple-ssa-strength-reduction.c (stmt_cost): Explicitly return - zero cost for copies. - (find_candidates_dom_walker::before_dom_children): Replace - MODIFY_EXPR with SSA_NAME. - (replace_mult_candidate): Likewise. - (replace_profitable_candidates): Likewise. - - 2016-10-10 Andreas Krebbel - - * config/s390/s390.h: Wrap more macros args in brackets and fix - - 2016-10-10 Georg-Johann Lay - - * config/avr/gen-avr-mmcu-texi.c (string.h): Include. - - 2016-10-10 Andreas Schwab - - PR target/77738 - * config/ia64/ia64.md ("doloop_end"): Reject if mode of loop - pseudo is not DImode. - - 2016-10-10 Claudiu Zissulescu - - * common/config/arc/arc-common.c (arc_option_optimization_table): - Remove compact casesi option. - * config/arc/arc.c (arc_override_options): Use compact casesi - option only for pre-ARCv2 cores. - * doc/invoke.texi (mcompact-casesi): Update text. - - 2016-10-09 Aaron Sawdey - - * config/rs6000/rs6000.h (TARGET_EFFICIENT_OVERLAPPING_UNALIGNED): - Add macro to say we can efficiently handle overlapping unaligned - loads. - * config/rs6000/rs6000.c (expand_block_compare): Avoid generating - poor code for processors older than p8. - - 2016-10-09 Eric Botcazou - - * gen-pass-instances.awk: Remove GNUism. - - 2016-10-09 Prathamesh Kulkarni - - * ipa-prop.c (ipcp_transform_function): Set fields m_vr and bits to - NULL of (*ipcp_transformations)][node->uid]. - - 2016-10-09 John David Anglin - - * config/pa/pa.h (BIGGEST_ALIGNMENT): Adjust comment. - (MALLOC_ABI_ALIGNMENT): Define. - - 2016-10-09 Jakub Jelinek - - * tree-ssa.c (target_for_debug_bind, verify_phi_args, - ssa_undefined_value_p, maybe_optimize_var): Use VAR_P and/or - VAR_OR_FUNCTION_DECL_P macros. - * tree-chkp.c (chkp_register_var_initializer, chkp_make_static_bounds, - chkp_get_bounds_for_decl_addr, chkp_parse_array_and_component_ref, - chkp_find_bounds_1): Likewise. - * ipa-polymorphic-call.c (decl_maybe_in_construction_p): Likewise. - * hsa-gen.c (get_symbol_for_decl): Likewise. - * cgraphunit.c (check_global_declaration, analyze_functions, - handle_alias_pairs, thunk_adjust, cgraph_node::expand_thunk): - Likewise. - * gimple-fold.c (can_refer_decl_in_current_unit_p, - canonicalize_constructor_val, gimple_get_virt_method_for_vtable): - Likewise. - * tree.c (set_decl_section_name, copy_node_stat, - need_assembler_name_p, free_lang_data_in_decl, find_decls_types_r, - merge_dllimport_decl_attributes, handle_dll_attribute, - decl_init_priority_insert, auto_var_in_fn_p, array_at_struct_end_p, - verify_type): Likewise. - * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior, - find_explicit_erroneous_behavior): Likewise. - * sdbout.c (sdbout_toplevel_data, sdbout_late_global_decl): Likewise. - * ipa.c (process_references): Likewise. - * tree-chkp-opt.c (chkp_get_check_result): Likewise. - * varasm.c (get_block_for_decl, use_blocks_for_decl_p, make_decl_rtl, - notice_global_symbol, assemble_variable, mark_decl_referenced, - build_constant_desc, output_constant_def_contents, do_assemble_alias, - make_decl_one_only, default_section_type_flags, - categorize_decl_for_section, default_encode_section_info): Likewise. - * trans-mem.c (requires_barrier): Likewise. - * gimple-expr.c (mark_addressable): Likewise. - * cfgexpand.c (add_scope_conflicts_1, expand_one_var, - expand_used_vars_for_block, clear_tree_used, stack_protect_decl_p, - expand_debug_expr): Likewise. - * tree-dump.c (dequeue_and_dump): Likewise. - * ubsan.c (instrument_bool_enum_load): Likewise. - * tree-pretty-print.c (print_declaration): Likewise. - * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise. - * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise. - * asan.c (asan_protect_global, instrument_derefs): Likewise. - * tree-into-ssa.c (rewrite_stmt, maybe_register_def, - pass_build_ssa::execute): Likewise. - * var-tracking.c (var_debug_decl, track_expr_p): Likewise. - * tree-ssa-loop-ivopts.c (force_expr_to_var_cost, split_address_cost): - Likewise. - * ipa-split.c (test_nonssa_use, consider_split, mark_nonssa_use): - Likewise. - * tree-inline.c (insert_debug_decl_map, remap_ssa_name, - can_be_nonlocal, remap_decls, copy_debug_stmt, - initialize_inlined_parameters, add_local_variables, - reset_debug_binding, replace_locals_op): Likewise. - * dse.c (can_escape): Likewise. - * ipa-devirt.c (compare_virtual_tables, referenced_from_vtable_p): - Likewise. - * tree-diagnostic.c (default_tree_printer): Likewise. - * tree-streamer-in.c (unpack_ts_decl_common_value_fields, - unpack_ts_decl_with_vis_value_fields, - lto_input_ts_decl_common_tree_pointers): Likewise. - * builtins.c (builtin_save_expr, fold_builtin_expect, - readonly_data_expr): Likewise. - * tree-ssa-structalias.c (new_var_info, get_constraint_for_ssa_var, - create_variable_info_for, set_uids_in_ptset, visit_loadstore): - Likewise. - * gimple-streamer-out.c (output_gimple_stmt): Likewise. - * gimplify.c (force_constant_size, gimplify_bind_expr, - gimplify_decl_expr, gimplify_var_or_parm_decl, - gimplify_compound_lval, gimplify_init_constructor, - gimplify_modify_expr, gimplify_asm_expr, gimplify_oacc_declare, - gimplify_type_sizes): Likewise. - * cgraphbuild.c (record_reference, record_type_list, mark_address, - mark_load, mark_store, pass_build_cgraph_edges::execute): Likewise. - * tree-ssa-live.c (mark_all_vars_used_1, remove_unused_scope_block_p, - remove_unused_locals): Likewise. - * tree-ssa-alias.c (ptr_deref_may_alias_decl_p, ptrs_compare_unequal, - ref_maybe_used_by_call_p_1, call_may_clobber_ref_p_1): Likewise. - * function.c (instantiate_expr, instantiate_decls_1, - setjmp_vars_warning, add_local_decl): Likewise. - * alias.c (ao_ref_from_mem, get_alias_set, compare_base_symbol_refs): - Likewise. - * tree-stdarg.c (find_va_list_reference, va_list_counter_struct_op, - va_list_ptr_read, va_list_ptr_write, check_all_va_list_escapes, - optimize_va_list_gpr_fpr_size): Likewise. - * tree-nrv.c (pass_nrv::execute): Likewise. - * tsan.c (instrument_expr): Likewise. - * tree-ssa-dce.c (remove_dead_stmt): Likewise. - * vtable-verify.c (verify_bb_vtables): Likewise. - * tree-dfa.c (ssa_default_def, set_ssa_default_def, - get_ref_base_and_extent): Likewise. - * toplev.c (wrapup_global_declaration_1, wrapup_global_declaration_2): - Likewise. - * tree-sra.c (static bool constant_decl_p, find_var_candidates, - analyze_all_variable_accesses): Likewise. - * tree-nested.c (get_nonlocal_debug_decl, - convert_nonlocal_omp_clauses, note_nonlocal_vla_type, - note_nonlocal_block_vlas, convert_nonlocal_reference_stmt, - get_local_debug_decl, convert_local_omp_clauses, - convert_local_reference_stmt, nesting_copy_decl, remap_vla_decls): - Likewise. - * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Likewise. - * stmt.c (decl_overlaps_hard_reg_set_p): Likewise. - * dbxout.c (dbxout_late_global_decl, dbxout_type_fields, - dbxout_symbol, dbxout_common_check): Likewise. - * expr.c (expand_assignment, expand_expr_real_2, expand_expr_real_1, - string_constant): Likewise. - * hsa.c (hsa_get_declaration_name): Likewise. - * passes.c (rest_of_decl_compilation): Likewise. - * tree-ssanames.c (make_ssa_name_fn): Likewise. - * tree-streamer-out.c (pack_ts_decl_common_value_fields, - pack_ts_decl_with_vis_value_fields, - write_ts_decl_common_tree_pointers): Likewise. - * stor-layout.c (place_field): Likewise. - * symtab.c (symtab_node::maybe_create_reference, - symtab_node::verify_base, symtab_node::make_decl_local, - symtab_node::copy_visibility_from, - symtab_node::can_increase_alignment_p): Likewise. - * dwarf2out.c (add_var_loc_to_decl, tls_mem_loc_descriptor, - decl_by_reference_p, reference_to_unused, rtl_for_decl_location, - fortran_common, add_location_or_const_value_attribute, - add_scalar_info, add_linkage_name, set_block_abstract_flags, - local_function_static, gen_variable_die, dwarf2out_late_global_decl, - optimize_one_addr_into_implicit_ptr, - optimize_location_into_implicit_ptr): Likewise. - * gimple-low.c (record_vars_into): Likewise. - * ipa-visibility.c (update_vtable_references): Likewise. - * tree-ssa-address.c (fixed_address_object_p, copy_ref_info): - Likewise. - * lto-streamer-out.c (tree_is_indexable, get_symbol_initial_value, - DFS::DFS_write_tree_body, write_symbol): Likewise. - * langhooks.c (lhd_warn_unused_global_decl, - lhd_set_decl_assembler_name): Likewise. - * attribs.c (decl_attributes): Likewise. - * except.c (output_ttype): Likewise. - * varpool.c (varpool_node::get_create, ctor_for_folding, - varpool_node::assemble_decl, varpool_node::create_alias): Likewise. - * fold-const.c (fold_unary_loc): Likewise. - * ipa-prop.c (ipa_compute_jump_functions_for_edge, - ipa_find_agg_cst_from_init): Likewise. - * omp-low.c (expand_omp_regimplify_p, expand_omp_taskreg, - expand_omp_target, lower_omp_regimplify_p, - grid_reg_assignment_to_local_var_p, grid_remap_prebody_decls, - find_link_var_op): Likewise. - * tree-chrec.c (chrec_contains_symbols): Likewise. - * tree-cfg.c (verify_address, verify_expr, verify_expr_location_1, - gimple_duplicate_bb, move_stmt_op, replace_block_vars_by_duplicates, - execute_fixup_cfg): Likewise. - - PR tree-optimization/77901 - * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Only optimize - if ranges[i].exp is SSA_NAME when looking for >= and only when - ranges[i].exp is NULL or SSA_NAME when looking for the other - comparison. - - 2016-10-09 Prathamesh Kulkarni - - * ipa-cp.c (ipcp_alignment_lattice): Remove. - (ipcp_param_lattices): Remove field alignment. - (print_all_lattices): Remove call to ipcp_alignment_lattice::print. - (set_all_contains_variable): Remove call to - ipcp_alignment_lattice::set_to_bottom. - (initialize_node_lattices): Likewise. - (propagate_alignment_accross_jump_function): Remove. - (propagate_constants_accross_call): Remove call to - propagate_alignment_accross_jump_function. - (ipcp_store_alignment_results): Remove. - (ipcp_driver): Remove call to ipcp_store_alignment_results. - (propagate_bits_accross_jump_function): Handle ancestor jump function. - * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Remove - pretty-printing of alignment jump function. - (ipa_set_jf_unknown): Remove assignment to jfunc->alignment.known. - (ipa_compute_jump_functions_for_edge): Adjust ipa_bits jump function for - alignments and remove computing ipa_alignment jump function. - (ipa_node_params_t::duplicate): Remove copying of src_trans->alignments. - (ipa_write_jump_functions): Remove streaming for ipa_alignment. - (ipa_read_jump_function): Remove reading of ipa_alignment. - (write_ipcp_transformation_info): Remove streaming for alignment - propagation summary. - (read_ipcp_transformation_info): Remove reading of alignment - propagation summary. - (ipcp_update_alignments): Remove. - (ipcp_update_bits): Adjust to set alignment for parameters of pointer - type. - (ipcp_transform_function): Remove call to ipcp_update_alignments() - and remove assignment to (*ipcp_transformations)[node->uid].alignments. - * ipa-prop.h (ipa_alignment): Remove. - (ipa_jump_func): Remove field alignment. - (ipcp_transformation_summary): Remove field alignments. - * doc/invoke.texi: Mark fipa-cp-alignment as obsolete. - * opts.c (default_options_table): Remove entry for fipa-cp-alignment. - (enable_fdo_optimizations): Remove checking for fipa-cp-alignment. - - 2016-10-08 Eric Botcazou - - * config/sparc/sparc.h (FIXED_REGISTERS): Add %icc. - - * config/visium/visium.c (visium_expand_int_cstore): Revert latest - change. - (visium_expand_fp_cstore): Likewise. - - 2016-10-08 Prathamesh Kulkarni - - * diagnostic-core.h (warning_at_rich_loc_n): Declare. - * diagnostic.c (warning_at_rich_loc_n): New function. - (diagnostic_n_impl_richloc): Likewise. - (diagnostic_n_impl): Move most of the function to - diagnostic_n_impl_richloc and call it. - - 2016-10-08 Jakub Jelinek - - * gen-pass-instances.awk: Rewritten. - * Makefile.in (pass-instances.def): Depend on $(PASSES_EXTRA), pass - $(PASSES_EXTRA) after passes.def to the script. - * config/i386/t-i386 (PASSES_EXTRA): Add i386-passes.def. - * config/i386/i386-passes.def: New file. - * config/i386/i386-protos.h (make_pass_insert_vzeroupper, - make_pass_stv): Declare. - * config/i386/i386.c (pass_stv::pass_stv): Initialize timode_p to - false. - (pass_stv::gate): Depending on timode_p member require TARGET_64BIT - or !TARGET_64BIT. - (pass_stv::clone, pass_stv::set_pass_param): New methods. - (pass_stv::timode_p): New non-static data member. - (ix86_option_override): Don't register passes here. - - * doc/invoke.texi: Document accepting Else, fallthrough. - - * doc/invoke.texi (-Wimplicit-fallthrough): Document FALLTHRU comment - style changes. - - * doc/invoke.texi (-Wimplicit-fallthrough): Document the accepted - FALLTHRU comment styles. - - 2016-10-07 Andrew Pinski - - * config/aarch64/aarch64-arches.def (AARCH64_ARCH): #undef at the end. - * config/aarch64/aarch64-cores.def (AARCH64_CORE): Likewise. - * config/aarch64/aarch64-fusion-pairs.def (AARCH64_FUSION_PAIR): - Likewise. - * config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION): - Likewise. - * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION): - Likewise. - * config/aarch64/aarch64-opts.h (AARCH64_CORE): Don't #undef here. - (AARCH64_ARCH): Likewise. - * common/config/aarch64/aarch64-common.c (AARCH64_OPT_EXTENSION): - Likewise. - (AARCH64_CORE): Likewise. - (AARCH64_ARCH): Likewise. - * config/aarch64/aarch64-protos.h (AARCH64_FUSION_PAIR): Likewise. - (AARCH64_EXTRA_TUNING_OPTION): Likewise. - * config/aarch64/aarch64.c (AARCH64_FUION_PAIR): Likewise. - (AARCH64_EXTRA_TUNING_OPTION): Likewise. - (AARCH64_ARCH): Likewise. - (AARCH64_CORE): Likewise. - * config/aarch64/aarch64.h (AARCH64_CORE): Likewise. - * config/aarch64/driver-aarch64.c (AARCH64_OPT_EXTENSION): Likewise. - (AARCH64_CORE): Likewise. - (AARCH64_ARCH): Likewise. - - 2016-10-06 Michael Meissner - - * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Split - -mfloat128 into -mfloat128-type that enables the IEEE 128-bit - floating point type infrastructre, and -mfloat128 that enables the - keyword. Define __FLOAT128__ if -mfloat128, and __FLOAT128_TYPE__ - if -mfloat128-type. Define __ibm128 to be long double by default. - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print whether - the IEEE 128-bit floating point type infrastructure should - automatically be enabled. - (rs6000_init_hard_regno_mode_ok): Switch to use -mfloat128-type - instead of -mfloat128 to enable KFmode. - (rs6000_option_override_internal): Split the option -mfloat128 - into -mfloat128-type and -mfloat128. On Linux PowerPC 64-bit - systems, automatically set -mfloat128-type, but don't enable it on - other operating systems. Move setting the long double size and - IEEE quad support before the IEEE 128-bit floating point changes. - (rs6000_init_builtins): Do not create a unique type for __ibm128 - if long double is IBM extended double, instead rely on __ibm128 - being defined as 'long double'. If -mfloat128-type and not - -mfloat128, create the KFmode type with an undocumented __ieee128 - keyword. - (rs6000_init_libfuncs): Use -mfloat128-type instead of - -mfloat128 for tests about the types, but keep tests for - -mfloat128 to enable the keyword support. - (rs6000_complex_function_value): Likewise. - (rs6000_scalar_mode_supported_p): Likewise. - (rs6000_floatn_mode): Likewise. - (rs6000_c_mode_for_suffix): Likewise. - (rs6000_opt_masks): Add -mfloat128-type. - * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add support for - -mfloat128-type being split from -mfloat128. Add - -mfloat128-hardware, which was missing. - * config/rs6000/rs6000.opt (-mfloat128): Split -mfloat128 into - -mfloat128 and -mfloat128-type: - (-mfloat128-type): Likewise. - * config/rs6000/linux64.h (TARGET_FLOAT128_ENABLE_TYPE): Define so - that 64-bit Linux systems with enable -mfloat128-type by default - on VSX systems. - * config/rs6000/rs6000.h (TARGET_FLOAT128_ENABLE_TYPE): Likewise. - (FLOAT128_VECTOR_P): Switch IEEE 128-bit floating points to use - -mfloat128-type instead of -mfloat128. - (FLOAT128_2REG_P): Likewise. - (MASK_FLOAT128_TYPE): Likewise. - (ALTIVEC_ARG_MAX_RETURN): Likewise. - (RS6000_BTM_FLOAT128): Likewise. - (TARGET_FLOAT128): Poison old identifiers. - (OPTION_MASK_FLOAT128): Likewise. - (MASK_FLOAT128): Likewise. - * config/rs6000/rs6000.md (FP): Likewise. - (FLOAT128): Likewise. - (fix_truncdi2): Likewise. - (fixuns_trunc2): Likewise. - (floatdi2): Likewise. - (floatuns2): Likewise. - (neg2, FLOAT128 iterator): Likewise. - (abs2, FLOAT128 iterator): Likewise. - (ieee_128bit_negative_zero): Likewise. - (ieee_128bit_vsx_neg2): Likewise. - (ieee_128bit_vsx_neg2_internal): Likewise. - (ieee_128bit_vsx_abs2): Likewise. - (ieee_128bit_vsx_abs2_internal): Likewise. - (ieee_128bit_vsx_nabs2): Likewise. - (ieee_128bit_vsx_nabs2_internal): Likewise. - (extendiftf2): Likewise. - (extendifkf2): Likewise. - (extendtfkf2): Likewise. - (trunciftf2): Likewise. - (truncifkf2): Likewise. - (trunckftf2): Likewise. - (trunctfif2): Likewise. - (extendkftf2): Likewise. - (trunctfkf2): Likewise. - - 2016-10-07 Kyrylo Tkachov - - * simplify-rtx.c (simplify_immed_subreg): Zero-initialize tmp array - before merging in bytes to pass down to real_from_target. - - 2016-10-07 Richard Biener - - * tree-ssa-propagate.c (replace_phi_args_in): Remove no longer - required hack. - (substitute_and_fold_dom_walker::before_dom_children): - Substitute and fold before pass specific folding to avoid - feeding that with SSA names that will be later released. - * tree-ssa-ccp.c (get_value_for_expr): Guard for new SSA names - introduced by folding and visited by evaluate_stmt called during - ccp_fold_stmt. - (likely_value): Likewise. - (evaluate_stmt): Likewise. - * tree-vrp.c (simplify_truth_ops_using_ranges): Fold modified stmt. - (simplify_div_or_mod_using_ranges): Likewise. - (simplify_min_or_max_using_ranges): Likewise. - (simplify_abs_using_ranges): Likewise. - (simplify_conversion_using_ranges): Likewise. - (simplify_float_conversion_using_ranges): Likewise. - (simplify_stmt_using_ranges): Likewise. - - 2016-10-07 Marek Polacek - - * gimplify.c (should_warn_for_implicit_fallthrough): Check for - FALLTHROUGH_LABEL_P here... - (warn_implicit_fallthrough_r): ...not here. - - 2016-10-07 Bernd Schmidt - - PR tree-optimization/77880 - * expr.c (by_pieces_ninsns): Use unsigned HOST_WIDE_INT where - necessary. - - 2016-10-07 Marek Polacek - - PR c++/77803 - * gimplify.c (last_stmt_in_scope): Add check for FALLTHROUGH (). - - 2016-10-07 Richard Biener - - * bitmap.h: Document constraints on bitmap modification while - iterating over it. - - 2016-10-07 Richard Biener - - * bitmap.c (bitmap_elem_to_freelist): Set indx to -1. - * bitmap.h (bmp_iter_set): When advancing to the next element - check that we didn't remove the current one. - (bmp_iter_and): Likewise. - (bmp_iter_and_compl): Likewise. - * tree-ssa.c (release_defs_bitset): Do not remove worklist bit - we currently iterate on but keep a one-level queue. - * sched-deps.c (remove_from_deps): Do not clear current bit - but keep a one-level queue. - - 2016-10-07 Jakub Jelinek - - PR tree-optimization/77664 - * tree-ssa-reassoc.c (update_range_test): Also clear low and high - for the other ranges. - (optimize_range_tests_diff): Fix up formatting. - (optimize_range_tests_var_bound): New function. - (optimize_range_tests): Use it. - - 2016-10-07 Martin Liska - - * coverage.c (build_gcov_exit_decl): Fix priority what - should be really 99. - - 2016-10-07 Richard Biener - - * gimple-low.c (lower_gimple_bind): Clear DECL_CHAIN of - vars in gimple_bind_vars but not in BLOCK_VARS. - - 2016-10-07 Richard Biener + * 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. - PR tree-optimization/77879 - * tree-ssa-structalias.c (handle_const_call): Properly handle - NRV return slots. - (handle_pure_call): Likewise. + 2018-07-12 Jan Hubicka - 2016-10-06 Aaron Sawdey + * 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. - * config/rs6000/rs6000.c (rs6000_elf_asm_out_constructor) - (rs6000_elf_asm_out_destructor): increase size of buf to avoid - possible overflow. + 2018-07-12 Richard Biener - 2016-10-06 Andrew Pinski + PR debug/86462 + * dwarf2out.c (gen_block_die): Only output blocks when they have + at least one !DECL_IGNORED_P variable. - * config/aarch64/aarch64-cores.def: Add a comment before each - set of cores. + 2018-07-12 Richard Biener - 2016-10-06 Kugan Vivekanandarajah + PR target/84829 + * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC): + Remove -mieee-fp handling. - PR tree-optimization/77862 - * tree-vrp.c (add_equivalence): Use get_value_range so that - num_vr_values is checked before accessing vr_values. + 2018-07-12 Richard Biener - 2016-10-06 Kugan Vivekanandarajah + * tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus + left-over from last patch. - * tree-vrp.c (evrp_dom_walker::before_dom_children): Handle - POINTER_TYPE_P. + 2018-07-12 Jakub Jelinek - 2016-10-05 Jeff Law + 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. - PR tree-optimization/71661 - * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Handle case when - removal of a forwarder exposes a new natural loop. + 2018-07-12 Richard Biener - 2016-10-06 Uros Bizjak + PR middle-end/86479 + * fold-const.c (fold_binary_op_with_conditional_arg): Do not + move possibly trapping operations into the conditional. - * config/i386/sse.md (andnot3): Add FALLTHRU comments. - Introduce ssesuffix variable. - (3): Ditto. - (*3): Ditto. + 2018-07-12 Richard Biener - 2016-10-06 Jan Hubicka + * 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. - * postreload.c (reload_cse_simplify): Skip also USE when detecting - noop move. + 2018-07-06 Paul Koning - 2016-10-06 Richard Biener + * doc/md.texi (define_split): Document DONE and FAIL. + (define_peephole2): Ditto. - PR tree-optimization/77855 - * tree-ssa-pre.c (prune_clobbered_mems): Queue exprs to remove - instead of removing the current item while iterating over the set - which is not safe. + 2018-07-05 Jeff Law - 2016-10-06 James Clarke - Eric Botcazou + PR tree-optimization/86010 + * tree-ssa-dse.c (compute_trims): More aggressively trim at + both the head and tail of mem* and str* calls. - PR target/77759 - * config/sparc/sparc.c (classify_data_t): Remove int_regs field. - (classify_registers): Don't set it - (function_arg_slotno): Don't initialize and test it. Tidy up. + 2018-07-05 Jim Wilson - 2016-10-06 Richard Biener + * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*. - PR tree-optimization/77839 - * tree-ssa-sccvn.c (set_ssa_val_to): Forbid value -> constant value - lattice transition. + 2018-07-05 Indu Bhagat - 2016-10-06 Martin Liska + * config/aarch64/aarch64-simd.md: correct flags text for + MIN_EXPR replacement. - * gcc.c: Set -fprofile-update=atomic when profiling is - enabled and -pthread is set. Warn when one combines - -pthread and -fprofile-update=single for an app using - profiling code. + 2018-07-05 James Clarke - 2016-10-06 Martin Liska + * configure: Regenerated. - PR bootstrap/77788 - * expmed.h (mul_highpart_cost_ptr): Add an gcc_assert. - * gimple-ssa-strength-reduction.c (slsr_process_cast): - Initialize a pointer to NULL. - (slsr_process_copy): Likewise. - * input.c (location_get_source_line): Likewise. - * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise. + 2018-07-05 Carl Love - 2016-10-05 Andrew Senkevich - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCOMMIT_UNSET, - OPTION_MASK_ISA_PCOMMIT_SET): Deleted definitions. - (ix86_handle_option): Deleted handle of OPT_mpcommit. - * config.gcc: Deleted pcommitintrin.h - * config/i386/pcommitintrin.h: Deleted file. - * config/i386/cpuid.h (bit_PCOMMIT): Deleted. - * config/i386/driver-i386.c (host_detect_local_cpu): Deleted pcommit - detection. - * config/i386/i386-c.c (ix86_target_macros_internal): Deleted define - __PCOMMIT__. - * config/i386/i386.c (ix86_target_string): Deleted -mpcommit. - (PTA_PCOMMIT): Deleted define. - (ix86_option_override_internal): Deleted handle of option. - (ix86_valid_target_attribute_inner_p): Deleted pcommit. - * config/i386/i386-builtin.def (IX86_BUILTIN_PCOMMIT, - __builtin_ia32_pcommit): Deleted. - * config/i386/i386.h (TARGET_PCOMMIT, TARGET_PCOMMIT_P): Deleted. - * config/i386/i386.md (unspecv): Deleted UNSPECV_PCOMMIT. - (pcommit): Deleted instruction. - * config/i386/i386.opt: Mention -mpcommit deprecation. - * config/i386/x86intrin.h: Deleted inclusion of pcommitintrin.h. - - 2016-10-05 Uros Bizjak - - PR target/77874 - * config/i386/sse.md (3): - Remove wrong assert. - (float2: - Use as operand 1 constraint. - - 2016-10-05 Jakub Jelinek - - PR sanitizer/66343 - * ubsan.c (ubsan_create_data): Call initialize_sanitizer_builtins here. - (ubsan_instrument_float_cast): And not here. - - PR sanitizer/66343 - * ubsan.c (ubsan_ids): New GTY(()) array. - (ubsan_type_descriptor, ubsan_create_data): Use ubsan_ids - instead of static local counters. - - 2016-10-05 Martin Sebor - - PR bootstrap/77819 - * config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Define macro. - * config/linux.c (gnu_libc_printf_pointer_format): Remove. - * targhooks.c [DEFAULT_LIBC == LIBC_UCLIBC) && SINGLE_LIBC] - (default_printf_pointer_format): Define function. - * targhooks.c (linux_printf_pointer_format): Define new function. - * targhooks.h (linux_printf_pointer_format): Declare. - (gnu_libc_printf_pointer_format): Remove declaration. - - 2016-10-05 Kyrylo Tkachov + * 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. - * fold-const.c (native_encode_real): Fix logic for selecting offset - to write to when BYTES_BIG_ENDIAN. - - 2016-10-05 Wilco Dijkstra - - * builtins.c (fold_builtin_strchr): Remove function. - (fold_builtin_strrchr): Likewise. - (fold_builtin2): Remove strchr, index, strrchr, rindex cases. - * gimple-fold.c (target_char_cst_p): New function. - (gimple_fold_builtin_strchr) Add more foldings. - (gimple_fold_builtin): Add index, strrchr, rindex cases. + 2018-07-05 Martin Sebor - 2016-10-05 Richard Biener + 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. - PR middle-end/77863 - * genmatch.c (capture_info::walk_c_expr): Diagnose unknown - capture ids in c-exprs. + 2018-07-05 Nathan Sidwell - 2016-10-05 Richard Biener + 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. - PR middle-end/77826 - * genmatch.c (dt_operand::gen_match_op): Amend operand_equal_p - with types_match for GIMPLE code gen to handle type mismatched - constants properly. - (dt_operand::gen): Adjust. - * match.pd ((X /[ex] A) * A -> X): Properly handle converted - and constant A. + 2018-07-05 Tamar Christina - 2016-10-05 Richard Biener + 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. - * match.pd (copysign(x, CST) -> [-]abs (x)): New pattern. + 2018-07-05 Tamar Christina - 2016-10-05 Richard Biener + PR target/84711 + * rtlanal.c (set_noop_p): Constrain on mode change, + include hard-reg-set.h - PR middle-end/77842 - * genmatch.c (parser::parse_c_expr): Handle premature EOF. + 2018-07-05 Tamar Christina - 2016-10-05 Pierre-Marie de Rodat + * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size. - * dwarf2out.c (dwarf2out_imported_module_or_decl): Move DWARF - version check to protect only DW_TAG_imported_module generation. + 2018-07-05 Jakub Jelinek - 2016-10-05 Richard Biener + Revert + 2018-07-04 Maxim Ostapenko - PR middle-end/55152 - * match.pd (min(a,-a) -> -abs(a)): New pattern. - - 2016-10-04 Ian Lance Taylor - - * explow.c (allocate_dynamic_stack_space): Call - do_pending_stack_adjust before handling flag_split_stack. + 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. - 2016-10-04 David Malcolm + 2018-07-04 Maxim Ostapenko - * genattrtab.c (make_internal_attr): Supply dummy column number to - file_location ctor. - (main): Likewise. - * genoutput.c (init_insn_for_nothing): Likewise. - * gensupport.c (add_define_attr): Likewise. - * read-md.c (message_at_1): Print column number. - (fatal_with_file_and_line): Likewise. - (rtx_reader::read_char): Track column numbers. - (rtx_reader::unread_char): Likewise. - (rtx_reader::rtx_reader): Initialize m_read_md_colno. - (rtx_reader::handle_include): Stash and restore m_read_md_colno. - (rtx_reader::handle_file): Initialize m_read_md_colno. - (rtx_reader::get_current_location): Supply column number to - file_location ctor. - * read-md.h (struct file_location): Add field "colno". - (file_location::file_location): Likewise. - (rtx_reader::get_colno): New accessor. - (rtx_reader::m_read_md_colno): New field. - (rtx_reader::m_last_line_colno): New field. + 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. - 2016-10-04 Jakub Jelinek + 2018-07-04 Eric Botcazou - * doc/extend.texi (Java Exceptions): Remove. - (java_interface): Remove. + PR middle-end/86380 + * expmed.c (choose_multiplier): Fix incorrect comparison with mask. - 2016-10-04 Doug Gilmore + 2018-07-04 Aldy Hernandez - PR tree-optimization/77808 - * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Check base_addr - and addr are different before copying points-to information. + * tree-vrp.c (extract_range_from_binary_expr_1): Initialize + neg_*_op* variables. - 2016-10-04 Uros Bizjak + 2018-07-04 Martin Liska - * config/i386/x86-tune.def (X86_TUNE_VECTORIZE_DOUBLE): Remove. - * config/i386/i386.h (TARGET_VECTORIZE_DOUBLE): Remove. - * config/i386/i386.c (ix86_add_stmt_cost): Use TARGET_BONNEL instead - of !TARGET_VECTORIZE_DOUBLE when penalizing DFmode vector ops. + * tree-switch-conversion.c: Define + max_ratio_for_speed and max_ratio_for_size constants. - 2016-10-04 Richard Biener + 2018-07-04 Denys Vlasenko + Martin Liska - PR tree-optimization/77399 - * tree-ssa-forwprop.c (simplify_vector_constructor): Properly - verify the target can convert. + 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. - 2016-10-04 Richard Biener + 2018-06-27 Jeff Law - PR middle-end/77833 - * explow.c (plus_constant): Verify the mode of the constant - pool offset before calling plus_constant. + * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align. + (MULTILIB_DIRNAMES): Similarly. - 2016-10-04 Richard Biener + 2018-06-27 Eric Botcazou - PR middle-end/77407 - * match.pd (X / abs (X) -> X < 0 ? -1 : 1): Drop vector - type support, mark with :C. - (X / -X -> -1): Mark with :C. + * 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. - 2016-10-04 Jakub Jelinek + 2018-06-27 Rasmus Villemoes - * defaults.h (JCR_SECTION_NAME, TARGET_USE_JCR_SECTION): Remove. - * system.h (JCR_SECTION_NAME, TARGET_USE_JCR_SECTION): Poison. - * doc/tm.texi.in (TARGET_USE_JCR_SECTION): Remove. - * doc/tm.texi: Regenerated. - * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Remove. - * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Remove. - * config/darwin.h (JCR_SECTION_NAME): Remove. - * config/pa/pa64-hpux.h (JCR_SECTION_NAME): Remove. - * config/rs6000/aix71.h (TARGET_USE_JCR_SECTION): Remove. - * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Remove. - * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Remove. - * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Remove. - * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Remove. - - 2016-10-03 Prathamesh Kulkarni - - * ipa-cp.c (propagate_bits_accross_jump_function): Introduce space - between "because" and "param" in dump message in call to fprintf. - - 2016-10-03 Jeff Law - - PR tree-optimization/71550 - PR tree-optimization/71403 - * tree-ssa-threadbackward.c: Include tree-vectorizer.h - (profitable_jump_thread_path): Also return boolean indicating if - the realized path will create an irreducible loop. - Remove loop depth tests from 71403. - (fsm_find_control_statement_thread_paths): Remove loop depth tests - from 71403. If threading will create an irreducible loop, then - throw away loop iteration and related information. - - 2016-10-03 Uros Bizjak - - * configure.ac (strict_warn): Merge -Wmissing-format-attribute and - -Woverloaded-virtual checks for warning options. + * configure.ac: Add --disable-gcov option. * configure: Regenerate. + * Makefile.in: Honour @enable_gcov@. + * doc/install.texi: Document --disable-gcov. - 2016-10-03 Bernd Edlinger + 2018-06-27 Kyrylo Tkachov - PR preprocessor/77699 - * input.c (maybe_grow): Don't allocate one byte extra headroom. - (get_next_line): Return false on error. - (read_next_line): Removed, use get_next_line instead. - (read_line_num): Don't copy the line. - (location_get_source_line): Don't use static data. - (selftest::test_reading_source_line): Add more test cases. - - 2016-10-03 Kyrylo Tkachov - - Revert - 2016-09-30 Kyrylo Tkachov - - * ifcvt.c (noce_try_avoid_const_materialization): New function. - (noce_process_if_block): Use it. - - 2016-10-03 Bernd Edlinger + * 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. - * doc/invoke.texi: Update -Wint-in-bool-context. + 2018-06-27 Tamar Christina - 2016-10-02 Jakub Jelinek + PR target/85769 + * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern. - * dwarf2out.c (output_fde, output_call_frame_info, - dwarf2out_do_cfi_startproc, set_indirect_string, - gen_internal_sym, output_die, output_line_info): Use - MAX_ARTIFICIAL_LABEL_BYTES as char array sizes for - ASM_GENERATE_INTERNAL_LABEL output. + 2018-06-27 Siddhesh Poyarekar - 2016-10-01 Richard Biener + * 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. - PR middle-end/77798 - * genmatch.c (get_operand_type): Add operand position arg - and handle COND_EXPR comparison operand with fixed boolean_type_node. - (expr::gen_transform): Adjust. - (dt_simplify::gen_1): Likewise. + 2018-06-26 Richard Biener - 2016-10-01 Jakub Jelinek + 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. - * config/i386/sse.md (): Add FALLTHRU - comments. Simplify asserts, remove unnecessary conditions. - Formatting fixes. - (*3): Likewise. + 2018-06-26 Richard Biener - 2016-09-30 Jakub Jelinek + PR middle-end/86271 + * fold-const.c (fold_convertible_p): Pointer extension + isn't valid. - * doc/invoke.texi (-Wregister): Document. + 2018-06-26 Alexandre Oliva - 2016-09-30 Bernd Edlinger + PR debug/86064 + * dwarf2out.c (loc_list_has_views): Adjust comments. + (dw_loc_list): Split single cross-partition range with + nonzero locview. - * configure.ac: Split CHECKING_P into CHECKING_P and - ENABLE_EXTRA_CHECKING. - * configure: Regenerated. - * config.in: Adjust commment of CHECKING_P. Add ENABLE_EXTRA_CHECKING. - * common.opt (flag_checking): Use CHECKING_P and ENABLE_EXTRA_CHECKING. + 2018-06-25 Jeff Law - 2016-09-30 Prasad Ghangal + * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn + on -mbig-switch by default. - PR other/31566 - * gcc.c (process_command): For @filename handling, output - the correct name if the file does not exist. + * 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 - 2016-09-30 Marek Polacek + 2018-06-26 Gerald Pfeifer - * config/aarch64/aarch64-simd.md: Adjust fall through comments. - * config/alpha/predicates.md: Likewise. + * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5. + Simplify logic for FreeBSD (twice). - 2016-09-30 Kyrylo Tkachov + 2018-06-25 Martin Sebor - * ifcvt.c (noce_try_avoid_const_materialization): New function. - (noce_process_if_block): Use it. + 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. - 2016-09-30 Martin Liska + 2018-06-25 Martin Sebor - * doc/invoke.texi: Document asan-use-after-return that - it's disabled by default in runtime. + 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. - 2016-09-30 Richard Biener + 2018-06-25 Martin Sebor - * tree-vrp.c (intersect_ranges): If we failed to handle - the intersection choose a constant singleton range if available. + * doc/extend.texi (Zero-length arrays): Update and clarify. - 2016-09-30 Richard Biener + 2018-06-25 Michael Meissner - PR tree-optimization/77399 - * tree-ssa-forwprop.c (simplify_vector_constructor): Handle - float <-> int conversions. + * 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. - 2016-09-30 Alan Modra + 2018-06-25 Alexander Monakov - * config/rs6000/rs6000.c (rs6000_opt_vars): Revert last change. + PR middle-end/86311 + * sort.cc (REORDER_23): Avoid memcpy with same destination and source. + (REORDER_45): Likewise. - 2016-09-29 Uros Bizjak + 2018-06-25 Jeff Law - * config/i386/driver-i386.c (host_detect_local_cpu): Check maximum - ext_level before calling CPUID with 0x80000008. - Simplify xgetbv checks. + * config/v850/v850.md (divmodhi4): Make sure to sign extend the + dividend to 32 bits. Adjust length. + (udivmodhi4): Cleanup output template. Fix length. - 2016-09-29 David Malcolm + 2018-06-25 Carl Love - * Makefile.in (OBJS): Add print-rtl-function.o. - * print-rtl-function.c: New file. - * print-rtl.h (print_rtx_function): New decl. + * config/rs6000/vsx.md: Change word selector to prefered location. - 2016-09-29 Uros Bizjak + 2018-06-25 Richard Biener - PR target/77756 - * config/i386/cpuid.h (__get_cpuid_count): New. - (__get_cpuid): Rename __level to __leaf. + PR tree-optimization/86304 + * tree-vectorizer.c (vectorize_loops): Walk over new possibly + epilogue-if-converted loops as well. - 2016-09-29 Marek Polacek + 2018-06-25 Jan Hubicka - * genattrtab.c (write_attr_case): Also emit FALLTHRU marker. + * lto-section-out.c (lto_begin_section): Do not print section + name for noaddr and unnumbered dumps. - 2016-09-29 Bernd Schmidt + 2018-06-25 Richard Biener - * builtins.c (expand_builtin_memcmp): don't swap args unless - result is only being compared with zero. + * 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. - 2016-09-29 Marek Polacek + 2018-06-25 Richard Biener - * dwarf2out.c (loc_descriptor): Add fall through comment. - (add_const_value_attribute): Likewise. + * 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. - 2016-09-29 Matthew Wahab + 2018-06-25 Richard Biener - * config/arm/arm.md (*arm_movsi_insn): Replace "t2" arch attribute - with "v6t2". Move "arch" attribute above "pool_range". - * config/arm/vfp.md (*arm_movhi_vfp): Replace "t2" arch attribute - with "v6t2". - (*thumb2_movhi_vfp): Likewise. - (*arm_movhi_fp16): Likewise. - (*thumb2_movhi_fp16): Likewise. - (*arm_movsi_vfp): Remove "arch" attribute. - (*thumb2_movsi_vfp): Likewise. + * tree-vect-data-refs.c (vect_check_gather_scatter): Fail + for reverse storage order accesses rather than asserting + they cannot happen here. - 2016-09-29 Martin Liska + 2018-06-25 Tom de Vries - * doc/extend.texi: Remove limitation of Objective C for - __attribute__((constructor)) and __attribute__((destructor)). + PR debug/86257 + * config/i386/i386.md (define_insn "*tls_global_dynamic_64_"): + Use data16 instead of .byte for insn prefix. - 2016-09-29 Richard Biener + 2018-06-25 Andreas Krebbel - PR tree-optimization/77768 - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - Handle stores to readonly memory when removing redundant stores. + 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. - 2016-09-29 Richard Biener + 2018-06-24 Maya Rashish - PR middle-end/77407 - * match.pd: Add X / abs (X) -> X < 0 ? -1 : 1 and - X / -X -> -1 simplifications. + * ginclude/stddef.h: Simplify conditions around avoiding + re-definition of __size_t. - 2016-09-29 Richard Biener + 2018-06-22 Jan Hubicka - PR middle-end/55152 - * match.pd: Add max(a,-a) -> abs(a) pattern. - * tree-ssa-phiopt.c (minmax_replacement): Disable for - HONOR_SIGNED_ZEROS types. + * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable + unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL. - 2016-09-29 James Greenhalgh + 2018-06-22 Maya Rashish - * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Remove. - * system.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Poison. + * doc/invoke.texi (mno-fancy-math-387): Update for changes + made to OpenBSD and NetBSD through the years. - 2016-09-29 Richard Biener + 2018-06-22 Kelvin Nilsen - * tree-vrp.c (set_defs_to_varying): New helper avoiding - writing to vr_const_varying. - (vrp_initialize): Call it. - (vrp_visit_stmt): Likewise. - (evrp_dom_walker::before_dom_children): Likewise. + * 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). - 2016-09-29 Richard Biener + 2018-06-22 Olivier Hainque - * tree-vect-stmts.c (vectorizable_load): Avoid emitting vector - constructors with vector elements. + * gimplify.c (gimplify_function_tree): Prevent creation + of a trampoline for the address of the current function + passed to entry/exit instrumentation hooks. - 2016-09-29 Richard Biener + 2018-06-22 Aaron Sawdey - PR tree-optimization/77768 - * tree-ssa-sccvn.c (visit_reference_op_store): Properly deal - with stores to a place we know has a constant value. + PR target/86222 + * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32 + correctly. - 2016-09-29 Alan Modra + 2018-06-22 Martin Liska - * config/rs6000/sysv4.opt (mgnu-attribute): New option. - * doc/invoke.texi: Document it. - * config/rs6000/rs6000.c (HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE): Define. - (rs6000_passes_float): Comment. - (rs6000_passes_long_double): New static var. - (call_ABI_of_interest): Return false unless rs6000_gnu_attr is set. - (init_cumulative_args): Set up to emit fp .gnu_attribute for - ELF 64-bit ABIs as well as 32-bit ELF. Correct rs6000_passes_float - to include fp values returned in vectors. - Set rs6000_passes_long_double. - (rs6000_function_arg_advance_1): Likewise for function args. - (rs6000_elf_file_end): Emit fp .gnu_attribute for ELF 64-bit ABIs, - and SPE. Emit long double tag value too. - (rs6000_opt_vars): Add gnu-attr. - * configure.ac (HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE): New ppc32 test. - * configure: Regenerate. - * config.in: Regenerate. + 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. - 2016-09-28 Jakub Jelinek + 2018-06-22 Jan Hubicka - * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Use x > 0 instead - of 0 < x. - (format_floating, format_string, format_directive, - get_destination_size, pass_sprintf_length::handle_gimple_call): - Likewise. + * 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. - 2016-09-28 Jakub Jelinek + 2018-06-22 Jan Hubicka - * gimple-ssa-sprintf.c: Fix comment formatting. - (format_integer): Use is_gimple_assign. - (pass_sprintf_length::handle_gimple_call): Use gimple_call_builtin_p - and gimple_call_fndecl. Reorder case BUILT_IN_SPRINTF_CHK. Fix up - BUILT_IN_SNPRINTF_CHK comment. Replace "to to" with "to" in comment. - (pass_sprintf_length::execute): Use is_gimple_call. - - 2016-09-28 Wilco Dijkstra - - * gimple-fold.c (gimple_fold_builtin): After failing to fold - strchr, also try the generic folding. + * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs. - 2016-09-28 Martin Sebor - - PR c/77762 - * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): - Fix typos. - - 2016-09-28 Martin Sebor + 2018-06-22 Martin Liska - PR middle-end/77683 - * gimple-ssa-sprintf.c (format_integer): Fail gracefully when - length modifier is not expected. - (format_floating): Ignore l length modifier and fail gracefuly - when it isn't one of the other expected ones. + * 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. - 2016-09-28 Martin Sebor + 2018-06-22 Rainer Orth - PR bootstrap/77753 - * varasm.c (assemble_addr_to_section): Increase local buffer size. + PR target/85994 + * config/i386/sol2.h (CPP_SPEC): Don't pass -P for + -x assembler-with-cpp. - 2016-09-27 Richard Biener + 2018-06-22 Rainer Orth - * dwarf2out.c (cu_die_list): New global. - (dwarf2out_finish): Walk cu_die_list instead of limbo DIEs. Add - main_comp_unit_die to cu_die_list if we created it. - Move break_out_includes ... - (dwarf2out_early_finish): ... here. Push created CU DIEs onto - the cu_die_list. - - 2016-09-28 Richard Biener - - * dwarf2out.c (struct die_struct): Add removed flag. - (lookup_type_die): If the DIE is marked as removed, clear - TYPE_SYMTAB_DIE and return NULL. - (lookup_decl_die): If the DIE is marked as removed, remove it - from the hash and return NULL. - (mark_removed): New helper. - (prune_unused_types_prune): Call it for removed DIEs. - (gen_subprogram_die): Move the premark_used_types call to after - DIEs for the functions scopes are generated. - (process_scope_var): Do not re-create pruned types or type decls. - Make sure to also re-parent type decls. - (dwarf2out_finish): Move unused type pruning and debug_types - handling ... - (dwarf2out_early_finish): ... here. + * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define + _FILE_OFFSET_BITS=64 for C++. - 2016-09-29 Claudiu Zissulescu + 2018-06-21 Michael Meissner - * config/arc/arc-c.c: New file. - * config/arc/arc-c.def: Likewise. - * config/arc/t-arc: Likewise. - * config.gcc: Include arc-c.o as c and cpp object. - * config/arc/arc-protos.h (arc_cpu_cpp_builtins): Add prototype. - * config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): Use - arc_cpu_cpp_builtins. + * 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. - 2016-09-29 Claudiu Zissulescu + 2018-06-21 Eric Botcazou - * config/arc/arc.md (*rotrsi3_cnt1): New pattern. - (*ashlsi2_cnt1, *lshrsi3_cnt1, *ashrsi3_cnt1): Likewise. + * 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. - 2016-09-28 Nathan Sidwell + 2018-06-21 Eric Botcazou - * gimple-pretty-print.c (dump_gimple_call_args): Simplify "' " - printing. + * except.c (finish_eh_generation): Commit edge insertions only after + the EH edges have been redirected from post-landing to landing pads. - 2016-09-28 Wilco Dijkstra + 2018-06-21 Eric Botcazou - PR tree-optimization/61056 - * gimple-fold.c (gimple_fold_builtin_strchr): - New function to optimize strchr (s, 0) to strlen. - (gimple_fold_builtin): Add BUILT_IN_STRCHR case. + * 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. - 2016-09-27 Robin Dapp + 2018-06-21 Eric Botcazou - PR tree-optimization/77724 - * tree-vect-loop-manip.c (create_intersect_range_checks_index): - Add tree_fits_shwi_p check. + * 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. - 2016-09-27 Jakub Jelinek + 2018-06-21 Martin Liska - * auto-inc-dec.c (try_merge): Remove break after return. - * cselib.c (autoinc_split): Likewise. - * explow.c (promote_mode): Likewise. - * fixed-value.c (fixed_arithmetic): Likewise. - * hsa.c (hsa_internal_fn::get_arity): Likewise. - * rtlanal.c (modified_between_p, modified_in_p): Likewise. - * trans-mem.c (get_attrs_for): Likewise. - * tree-if-conv.c (if_convertible_stmt_p): Likewise. - * tree-vrp.c (simplify_stmt_using_ranges): Likewise. - * config/aarch64/aarch64-builtins.c (aarch64_fold_builtin): Likewise. - * config/aarch64/aarch64.c (aarch64_get_condition_code_1): Likewise. - * config/c6x/c6x.c (c6x_get_unit_specifier): Likewise. - * config/cr16/cr16.c (legitimate_pic_operand_p): Likewise. - * config/cris/cris.c (cris_op_str): Likewise. - * config/mn10300/mn10300.c (cc_flags_for_code): Likewise. - * config/tilepro/tilepro.c (tilepro_emit_setcc_internal_di): Likewise. + * ipa-pure-const.c (propagate_nothrow): Use + funct_state_summaries->get. + (dump_malloc_lattice): Likewise. + (propagate_malloc): Likewise. - 2016-09-27 Nathan Sidwell + 2018-06-21 Richard Biener - * internal-fn.h (IFN_UNIQUE_CODES, IFN_GOACC_LOOP_CODES, - IFN_GOACC_REDUCTION_CODES): New. - (enum ifn_unique_kind, enum ifn_goacc_loop_kind, enum - ifn_goacc_reduction_kind): Use them. - * gimple-pretty-print.c (dump_gimple_call_args): Decode first arg - of internal functions, when applicable. - - 2016-09-27 Maciej W. Rozycki - - * config/mips/constraints.md (d): Fix documentation. - * doc/md.texi (Machine Constraints): Update accordingly. - - 2016-09-27 Richard Biener - - * dwarf2out.c (dwarf2out_init): Move text_section_line_info, - cur_line_info_table initialization ... - (dwarf2out_assembly_start): ... here. - - 2016-09-27 Matthew Wahab - - * config/arm/arm.md (*arm_movsi_insn): Add "arch" attribute. - * config/arm/vfp.md (*arm_movhi_vfp): Likewise. - (*thumb2_movhi_vfp): Likewise. - (*arm_movhi_fp16): Remove predication operand from VMOV.F16 - template. Expand predicable attribute to mark VMOV.F16 as not - predicable. Add "arch" attribute. - (*thumb2_movhi_fp16): Likewise. - (*arm_movsi_vfp): Break a long line. Add "arch" attribute. - (*thumb2_movsi_vfp): Add "arch" attribute. - - 2016-09-27 David Edelsohn - - * config/rs6000/rs6000.c (rs6000_output_symbol): Don't modify - VAR_DECL string. - - 2016-09-27 Marek Polacek - - * config/ia64/ia64.c (ia64_print_operand): Adjust fall through + * 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. - * config/c6x/c6x.h: Adjust fall through comment. - * config/sh/sh.c (final_prescan_insn): Likewise. - * config/visium/visium.c (visium_expand_int_cstore): Likewise. - (visium_expand_fp_cstore): Likewise. + 2018-06-21 David Malcolm - 2016-09-27 Kyrylo Tkachov + * 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. - * config/arm/arm.c (const_ok_for_op): Use "Fall through" comment form - expected by -Wimplicit-fallthrough. - (thumb1_size_rtx_costs): Likewise. - (thumb2_reorg): Likewise. - (tls_mentioned_p): Add "Fall through" comment. - (thumb2_reorg): Likewise. - * config/arm/arm-builtins.c (arm_expand_neon_args): Use "Fall through" - comment form expected by -Wimplicit-fallthrough. + 2018-06-21 Tom de Vries - 2016-09-27 Martin Liska + 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. - PR gcov-profile/46266 - * input.h (RESERVED_LOCATION_P): New macro. - * profile.c (branch_prob): Use RESERVED_LOCATION_P and - instread of comparison with UNKNOWN_LOCATION. - - 2016-09-27 Richard Biener - - PR tree-optimization/77745 - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - When removing redundant stores make sure to check compatibility - of the TBAA state for downstream accesses. - * tree-ssa-sccvn.c (visit_reference_op_store): Likewise for when - value-numbering virtual operands for store matches. - - 2016-09-27 Oleg Endo + 2018-06-21 Richard Biener - PR target/51244 - * config/sh/sh.c (sh_rtx_costs): Fix return value of SET of movt and - movrt patterns. Match them before anything else in the SET case. + PR tree-optimization/86232 + * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust + max for constant niter. - 2016-09-27 Martin Liska + 2018-06-21 Andre Vieira - PR gcov-profile/7970 - PR gcov-profile/16855 - PR gcov-profile/44779 - * coverage.c (build_gcov_exit_decl): New function. - (coverage_obj_init): Call the function and generate __gcov_exit - destructor. - * doc/gcov.texi: Document when __gcov_exit function is called. + * 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. - 2016-09-27 Marek Polacek + 2018-06-18 David Malcolm - PR bootstrap/77751 - * Makefile.in (insn-attrtab.o-warn, insn-dfatab.o-warn, - insn-latencytab.o-warn, insn-output.o-warn, insn-emit.o-warn): Use - -Wno-error instead of -Wno-implicit-fallthrough. - - 2016-09-27 Martin Liska - - PR bootstrap/77749 - * gcov-counter.def: Remove GCOV_COUNTER_V_DELTA. - - 2016-09-27 Jakub Jelinek - - * combine.c (simplify_comparison): Add canonical FALLTHROUGH comments. - * config/i386/i386.c (ix86_dep_by_shift_count_body): Add FALLTHROUGH - comments. Remove break after return. - (ix86_fp_compare_code_to_integer, has_dispatch, - ix86_simd_clone_usable): Remove break after return. - - 2016-09-27 Bernd Edlinger - - PR rlt-optimization/77714 - * lra-eliminations.c (eliminate_regs_in_insn): Avoid alias on - REG_EQUAL note. - - 2016-09-27 Kugan Vivekanandarajah - - PR ipa/77677 - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Use - extract_range_from_unary_expr to convert value_range. - * tree-vrp.c (extract_range_from_unary_expr_1): Rename to. - (extract_range_from_unary_expr): This. - * tree-vrp.h (extract_range_from_unary_expr): Declare. - - 2016-09-27 Segher Boessenkool - - * config/rs6000/rs6000.md (movcc_internal1): Disparage using CTR or LR. - - 2016-09-26 Rainer Orth - - * config/i386/i386.c (ix86_print_operand) - [HAVE_AS_IX86_CMOV_SUN_SYNTAX]: Add gcc_fallthrough. - * config/sparc/sparc.c (check_pic): Add fallthrough comment. - (epilogue_renumber): Likewise. - - 2016-09-26 Kugan Vivekanandarajah - - PR middle-end/77719 - * tree-ssa-reassoc.c (make_new_ssa_for_def): Use gimple_get_lhs - to get lhs instead of gimple_assign_lhs as stmt can be builtins too. - - 2016-09-26 Thomas Preud'homme - - * tree.h (memmodel_from_int, memmodel_base, is_mm_relaxed, - is_mm_consume, is_mm_acquire, is_mm_release, is_mm_acq_rel, - is_mm_seq_cst, is_mm_sync): Move to ... - * memmodel.h: This. New file. - * builtins.c: Include memmodel.h. - * optabs.c: Likewise. - * tsan.c: Likewise. - * config/aarch64/aarch64.c: Likewise. - * config/alpha/alpha.c: Likewise. - * config/arm/arm.c: Likewise. - * config/i386/i386.c: Likewise. - * config/ia64/ia64.c: Likewise. - * config/mips/mips.c: Likewise. - * config/rs6000/rs6000.c: Likewise. - * config/sparc/sparc.c: Likewise. - * genconditions.c: Include memmodel.h in generated file. - * genemit.c: Likewise. - * genoutput.c: Likewise. - * genpeep.c: Likewise. - * genpreds.c: Likewise. - * genrecog.c: Likewise. - - 2016-09-26 David Malcolm - - * read-rtl.c (read_rtx_code): Rename local "i" to "idx", and use - "c" instead when parsing characters. Move operand parsing into... - (read_rtx_operand): ...this new function, renaming "i" to "idx", - and tightening the scope of various locals. - - 2016-09-26 Liu Hao - - * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Fix typo. - - 2016-09-26 Marek Polacek - - * system.h: Use __has_attribute to check whether the fallthrough - attribute is supported. - - 2016-09-26 Marek Polacek - - * ipa-inline-analysis.c (find_foldable_builtin_expect): Use - gimple_call_internal_p. - * ipa-split.c (find_return_bb): Likewise. - (execute_split_functions): Likewise. - * omp-low.c (dump_oacc_loop_part): Likewise. - (oacc_loop_xform_head_tail): Likewise. - * predict.c (predict_loops): Likewise. - * sanopt.c (pass_sanopt::execute): Likewise. - * tree-cfg.c (get_abnormal_succ_dispatcher): Likewise. - * tree-parloops.c (oacc_entry_exit_ok_1): Likewise. - * tree-stdarg.c (gimple_call_ifn_va_arg_p): Remove function. - (expand_ifn_va_arg_1): Use gimple_call_internal_p. - (expand_ifn_va_arg): Likewise. + * 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. - (optimize_mask_stores): Likewise. - * tree-vect-stmts.c (vect_simd_lane_linear): Likewise. - (vect_transform_stmt): Likewise. - * tree-vectorizer.c (vect_loop_vectorized_call): Likewise. - * tsan.c (instrument_memory_accesses): Likewise. - - 2016-09-26 Kyrylo Tkachov - Alexander Monakov - - * regrename.c (rename_chains): Check - HARD_FRAME_POINTER_IS_FRAME_POINTER rather than - HARD_FRAME_POINTER_REGNUM when picking unavailable registers. - * sel-sched.c (mark_unavailable_hard_regs): Likewise. - - 2016-09-26 Andreas Krebbel - - * config/s390/s390.c (s390_rtx_costs): Add /* fallthrough */. - (s390_sched_score): Likewise. - - 2016-09-26 Martin Liska - - * doc/gcov.texi: Update program output of gcov tool. - - 2016-09-26 Martin Liska - - PR gcov-profile/23332 - * profile.c (instrument_values): Do not handle HIST_TYPE_CONST_DELTA. - * tree-profile.c (gimple_gen_const_delta_profiler): Remove. - * value-prof.c (dump_histogram_value): Do not handle - HIST_TYPE_CONST_DELTA. - (stream_in_histogram_value): Likewise. - (gimple_find_values_to_profile): Likewise. - * value-prof.h (enum hist_type): Likewise. - - 2016-09-26 Martin Liska - - * common.opt: Exclude SANITIZE_UNREACHABLE and SANITIZE_RETURN - from default sanitize recover values. - * doc/invoke.texi: Fix documentation related to -fsanitize=leak, - -fsanitize=address, -fsanitize=thread and -fsanitize-recover. - * flag-types.h: Replace couple of 1 << x to 1UL << x, make it - consistent. - * opts.c (finish_options): Do a generic loop over options - that can be recovered. - (parse_sanitizer_options): Exclude SANITIZE_UNREACHABLE and - SANITIZE_RETURN. - (common_handle_option): Likewise. - * opts.h: Declare can_recover to sanitizer_opts_s. - - 2016-09-26 Andre Vieira - - * target.def(elf_flags_numeric): Change documentation to present tense. - * doc/tm.texi: Regenerate. - - 2016-09-26 Marek Polacek - - PR c/7652 - * Makefile.in (insn-attrtab.o-warn, insn-dfatab.o-warn, - insn-latencytab.o-warn, insn-output.o-warn, insn-emit.o-warn): Add - -Wno-switch-fallthrough. - * builtins.c (expand_builtin_int_roundingfn_2): Add gcc_fallthrough. - (expand_builtin): Likewise. - * config/rs6000/rs6000.c (rs6000_builtin_vectorized_libmass): Likewise. - * convert.c (convert_to_real_1): Likewise. - (convert_to_integer_1): Likewise. - * final.c (output_alternate_entry_point): Likewise. - * genattrtab.c (make_canonical): Likewise. - (write_test_expr): Likewise. - * genpreds.c (validate_exp): Likewise. - * gimple-ssa-strength-reduction.c - (find_candidates_dom_walker::before_dom_children): Likewise. - * godump.c (go_format_type): Likewise. - * reload1.c (elimination_effects): Likewise. - * resource.c (mark_referenced_resources): Likewise. - (mark_set_resources): Likewise. - * tree-ssa-loop-ivopts.c (find_deriving_biv_for_expr): Likewise. - * varasm.c (output_addressed_constants): Likewise. - - 2016-09-26 Marek Polacek - - PR c/7652 - * common.opt (Wimplicit-fallthrough): New option. - * doc/extend.texi: Document statement attributes and the fallthrough - attribute. - * doc/invoke.texi: Document -Wimplicit-fallthrough. - * gimple.h (gimple_call_internal_p): New function. - * gimplify.c (struct gimplify_ctx): Add in_switch_expr. - (struct label_entry): New struct. - (find_label_entry): New function. - (case_label_p): New function. - (collect_fallthrough_labels): New function. - (last_stmt_in_scope): New function. - (should_warn_for_implicit_fallthrough): New function. - (warn_implicit_fallthrough_r): New function. - (maybe_warn_implicit_fallthrough): New function. - (expand_FALLTHROUGH_r): New function. - (expand_FALLTHROUGH): New function. - (gimplify_switch_expr): Call maybe_warn_implicit_fallthrough and - expand_FALLTHROUGH for the innermost GIMPLE_SWITCH. - (gimplify_label_expr): New function. - (gimplify_case_label_expr): Set location. - (gimplify_expr): Call gimplify_label_expr. - * internal-fn.c (expand_FALLTHROUGH): New function. - * internal-fn.def (FALLTHROUGH): New internal function. - * langhooks.c (lang_GNU_OBJC): New function. - * langhooks.h (lang_GNU_OBJC): Declare. - * system.h (gcc_fallthrough): Define. - * tree-core.h: Add FALLTHROUGH_LABEL_P comment. - * tree.h (FALLTHROUGH_LABEL_P): Define. - - 2016-09-26 Richard Biener - - * dwarf2out.c (stripattributes): Remove unused function. - (DEBUG_NORM_MACINFO_SECTION): Rename to DEBUG_MACINFO_SECTION. - Push dwarf_split_debug_info handling into init_sections_and_labels. - (DEBUG_NORM_MACRO_SECTION): Likewise to DEBUG_MACRO_SECTION. - (DEBUG_MACRO_SECTION_FLAGS): Remove. - (debug_macinfo_section_name): New global. - (output_macinfo): Use debug_macinfo_section_name. - (init_sections_and_labels): Split out section and label generation - from dwarf2out_init. Set debug_macinfo_section_name. - (dwarf2out_init): Move text section label generation and emission - to ... - (dwarf2out_assembly_start): ... here. - (dwarf2out_finish): Call init_sections_and_labels before DWARF - output starts. - - 2016-09-26 Richard Biener - - PR debug/77692 - * cgraphunit.c (analyze_functions): Before early removing - global vars calls the late_global_decl debug handler mark - the variable as readonly. - - 2016-09-25 Oleg Endo - - PR target/51244 - * config/sh/sh.c (sh_movt_set_dest, sh_movrt_set_dest): Add overloads. - (sh_rtx_costs): Handle SET of movt and movrt patterns. - * cnofig/sh/sh-protos.h (sh_movt_set_dest, sh_movrt_set_dest): Forward - declare new overloads. - * config/sh/sh.md (*cset_zero): Add variant that takes a treg_set_expr - operand. - - 2016-09-24 Aaron Sawdey - - * config/rs6000/rs6000.c (expand_block_compare, do_load_for_compare): - Change TARGET_LITTLE_ENDIAN to !BYTES_BIG_ENDIAN. - - 2016-09-24 David Edelsohn - - * configure.ac (gcc_cv_as_aix_dwloc): Fix typo in assembly fragment. - * configure: Regenerate. - - 2016-09-24 Marek Polacek - - PR c/77490 - * doc/invoke.texi: Document -Wbool-operation. - - 2016-09-23 Aaron Sawdey - - * config/rs6000/rs6000.md (cmpmemsi): New define_expand. - * config/rs6000/rs6000.c (expand_block_compare): New function used by - cmpmemsi pattern to do builtin expansion of memcmp (). - (compute_current_alignment): Add helper function for - expand_block_compare used to compute alignment as the compare proceeds. - (select_block_compare_mode): Used by expand_block_compare to select - the mode used for reading the next chunk of bytes in the compare. - (do_load_for_compare): Used by expand_block_compare to emit the load - insns for the compare. - (rs6000_emit_dot_insn): Moved this function to avoid a forward - reference from expand_block_compare (). - * config/rs6000/rs6000-protos.h (expand_block_compare): Add a - prototype for this function. - * config/rs6000/rs6000.opt (mblock-compare-inline-limit): Add a new - target option for controlling how much code inline expansion of - memcmp() will be allowed to generate. - - 2016-09-23 Jakub Jelinek - - * hooks.c (hook_bool_bool_false, hook_bool_bool_gcc_optionsp_false, - hook_bool_mode_false, hook_bool_mode_true, - hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true, - hook_bool_mode_rtx_false, hook_bool_mode_rtx_true, - hook_bool_const_rtx_insn_const_rtx_insn_true, - hook_bool_mode_uhwi_false, hook_void_FILEptr_constcharptr, - hook_bool_FILEptr_rtx_false, hook_bool_gsiptr_false, - hook_bool_const_tree_hwi_hwi_const_tree_false, - hook_bool_const_tree_hwi_hwi_const_tree_true, - default_can_output_mi_thunk_no_vcall, hook_int_uint_mode_1, - hook_int_const_tree_0, hook_int_const_tree_const_tree_1, - hook_int_rtx_0, hook_int_rtx_bool_0, hook_void_tree, - hook_void_constcharptr, hook_void_tree_treeptr, hook_void_int_int, - hook_bool_tree_false, hook_bool_const_tree_false, hook_bool_tree_true, - hook_bool_const_tree_true, hook_bool_tree_tree_false, - hook_bool_tree_tree_true, hook_bool_tree_bool_false, - hook_bool_rtx_insn_true, hook_bool_rtx_false, - hook_bool_uintp_uintp_false, - hook_bool_rtx_mode_int_int_intp_bool_false, hook_rtx_rtx_null, - hook_rtx_tree_int_null, hook_uint_mode_0, - hook_constcharptr_const_tree_null, hook_tree_tree_int_treep_bool_null, - hook_tree_tree_tree_null, hook_tree_tree_tree_tree_null, - hook_constcharptr_const_rtx_insn_null, - hook_constcharptr_const_tree_const_tree_null, - hook_constcharptr_int_const_tree_null, - hook_constcharptr_int_const_tree_const_tree_null, - hook_tree_const_tree_null, hook_bool_rtx_insn_int_false, - hook_void_rtx_insn_int, hook_void_gcc_optionsp): For arguments with - ATTRIBUTE_UNUSED, remove parameter name as well as ATTRIBUTE_UNUSED. - - * vec.h (vNULL): Extend comment to say = vNULL initialization - isn't needed for static vars. - - * sel-sched-ir.c (sel_global_bb_info, sel_region_bb_info, - loop_nests, s_i_d, last_added_blocks): Remove unnecessary - = vNULL initialization of file scope vec. - * passes.c (pass_tab, enabled_pass_uid_range_tab, - disabled_pass_uid_range_tab): Likewise. - * haifa-sched.c (sched_luids, h_i_d): Likewise. - * tree-chkp-opt.c (check_infos): Likewise. - * sel-sched.c (vec_av_set, vec_temp_moveop_nops): Likewise. - - * vec.h (vnull::operator vec): Add constexpr keyword for - C++11 and later. - - 2016-09-23 Doug Gilmore - - PR tree-optimization/77654 - * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Add call - to duplicate_ssa_name_ptr_info. - - 2016-09-23 David Malcolm - - PR preprocessor/77672 - * input.c (selftest::test_lexer_string_locations_simple): Update - test to expect location information of the terminator character - at the location of the final closing quote. - (selftest::test_lexer_string_locations_hex): Likewise. - (selftest::test_lexer_string_locations_oct): Likewise. - (selftest::test_lexer_string_locations_letter_escape_1): Likewise. - (selftest::test_lexer_string_locations_letter_escape_2): Likewise. - (selftest::test_lexer_string_locations_ucn4): Likewise. - (selftest::test_lexer_string_locations_ucn8): Likewise. - (selftest::test_lexer_string_locations_u8): Likewise. - (selftest::test_lexer_string_locations_utf8_source): Likewise. - (selftest::test_lexer_string_locations_concatenation_1): Likewise. - (selftest::test_lexer_string_locations_concatenation_2): Likewise. - (selftest::test_lexer_string_locations_concatenation_3): Likewise. - (selftest::test_lexer_string_locations_macro): Likewise. - (selftest::test_lexer_string_locations_long_line): Likewise. - - 2016-09-23 Richard Biener - - * tree-ssa-sccvn.c (visit_reference_op_call): Value number - virtual definition to virtual use if the call devirtualizes - to a const or pure function. - (visit_use): Also visit calls we can devirtualize to a - const or pure function. - - 2016-09-23 Richard Biener - - PR tree-optimization/77697 - * tree-ssa-forwprop.c (defcodefor_name): Remove bogus code, - signal error if we have sth ternary or unhandled. - - 2016-09-23 Matthew Wahab - - * config/arm/arm_neon.h (vabd_f16): New. - (vabdq_f16): New. - (vabs_f16): New. - (vabsq_f16): New. - (vadd_f16): New. - (vaddq_f16): New. - (vcage_f16): New. - (vcageq_f16): New. - (vcagt_f16): New. - (vcagtq_f16): New. - (vcale_f16): New. - (vcaleq_f16): New. - (vcalt_f16): New. - (vcaltq_f16): New. - (vceq_f16): New. - (vceqq_f16): New. - (vceqz_f16): New. - (vceqzq_f16): New. - (vcge_f16): New. - (vcgeq_f16): New. - (vcgez_f16): New. - (vcgezq_f16): New. - (vcgt_f16): New. - (vcgtq_f16): New. - (vcgtz_f16): New. - (vcgtzq_f16): New. - (vcle_f16): New. - (vcleq_f16): New. - (vclez_f16): New. - (vclezq_f16): New. - (vclt_f16): New. - (vcltq_f16): New. - (vcltz_f16): New. - (vcltzq_f16): New. - (vcvt_f16_s16): New. - (vcvt_f16_u16): New. - (vcvt_s16_f16): New. - (vcvt_u16_f16): New. - (vcvtq_f16_s16): New. - (vcvtq_f16_u16): New. - (vcvtq_s16_f16): New. - (vcvtq_u16_f16): New. - (vcvta_s16_f16): New. - (vcvta_u16_f16): New. - (vcvtaq_s16_f16): New. - (vcvtaq_u16_f16): New. - (vcvtm_s16_f16): New. - (vcvtm_u16_f16): New. - (vcvtmq_s16_f16): New. - (vcvtmq_u16_f16): New. - (vcvtn_s16_f16): New. - (vcvtn_u16_f16): New. - (vcvtnq_s16_f16): New. - (vcvtnq_u16_f16): New. - (vcvtp_s16_f16): New. - (vcvtp_u16_f16): New. - (vcvtpq_s16_f16): New. - (vcvtpq_u16_f16): New. - (vcvt_n_f16_s16): New. - (vcvt_n_f16_u16): New. - (vcvtq_n_f16_s16): New. - (vcvtq_n_f16_u16): New. - (vcvt_n_s16_f16): New. - (vcvt_n_u16_f16): New. - (vcvtq_n_s16_f16): New. - (vcvtq_n_u16_f16): New. - (vfma_f16): New. - (vfmaq_f16): New. - (vfms_f16): New. - (vfmsq_f16): New. - (vmax_f16): New. - (vmaxq_f16): New. - (vmaxnm_f16): New. - (vmaxnmq_f16): New. - (vmin_f16): New. - (vminq_f16): New. - (vminnm_f16): New. - (vminnmq_f16): New. - (vmul_f16): New. - (vmul_lane_f16): New. - (vmul_n_f16): New. - (vmulq_f16): New. - (vmulq_lane_f16): New. - (vmulq_n_f16): New. - (vneg_f16): New. - (vnegq_f16): New. - (vpadd_f16): New. - (vpmax_f16): New. - (vpmin_f16): New. - (vrecpe_f16): New. - (vrecpeq_f16): New. - (vrnd_f16): New. - (vrndq_f16): New. - (vrnda_f16): New. - (vrndaq_f16): New. - (vrndm_f16): New. - (vrndmq_f16): New. - (vrndn_f16): New. - (vrndnq_f16): New. - (vrndp_f16): New. - (vrndpq_f16): New. - (vrndx_f16): New. - (vrndxq_f16): New. - (vrsqrte_f16): New. - (vrsqrteq_f16): New. - (vrecps_f16): New. - (vrecpsq_f16): New. - (vrsqrts_f16): New. - (vrsqrtsq_f16): New. - (vsub_f16): New. - (vsubq_f16): New. - - 2016-09-23 Matthew Wahab - - * config.gcc (extra_headers): Add arm_fp16.h - * config/arm/arm_fp16.h: New. - * config/arm/arm_neon.h: Include "arm_fp16.h". - - 2016-09-23 Matthew Wahab - - * config/arm/arm_neon_builtins.def (vadd): New (v8hf, v4hf - variants). - (vmulf): New (v8hf, v4hf variants). - (vfma): New (v8hf, v4hf variants). - (vfms): New (v8hf, v4hf variants). - (vsub): New (v8hf, v4hf variants). - (vcage): New (v8hf, v4hf variants). - (vcagt): New (v8hf, v4hf variants). - (vcale): New (v8hf, v4hf variants). - (vcalt): New (v8hf, v4hf variants). - (vceq): New (v8hf, v4hf variants). - (vcgt): New (v8hf, v4hf variants). - (vcge): New (v8hf, v4hf variants). - (vcle): New (v8hf, v4hf variants). - (vclt): New (v8hf, v4hf variants). - (vceqz): New (v8hf, v4hf variants). - (vcgez): New (v8hf, v4hf variants). - (vcgtz): New (v8hf, v4hf variants). - (vcltz): New (v8hf, v4hf variants). - (vclez): New (v8hf, v4hf variants). - (vabd): New (v8hf, v4hf variants). - (vmaxf): New (v8hf, v4hf variants). - (vmaxnm): New (v8hf, v4hf variants). - (vminf): New (v8hf, v4hf variants). - (vminnm): New (v8hf, v4hf variants). - (vpmaxf): New (v4hf variant). - (vpminf): New (v4hf variant). - (vpadd): New (v4hf variant). - (vrecps): New (v8hf, v4hf variants). - (vrsqrts): New (v8hf, v4hf variants). - (vabs): New (v8hf, v4hf variants). - (vneg): New (v8hf, v4hf variants). - (vrecpe): New (v8hf, v4hf variants). - (vrnd): New (v8hf, v4hf variants). - (vrnda): New (v8hf, v4hf variants). - (vrndm): New (v8hf, v4hf variants). - (vrndn): New (v8hf, v4hf variants). - (vrndp): New (v8hf, v4hf variants). - (vrndx): New (v8hf, v4hf variants). - (vrsqrte): New (v8hf, v4hf variants). - (vmul_lane): Add v4hf and v8hf variants. - (vmul_n): Add v4hf and v8hf variants. - (vext): New (v8hf, v4hf variants). - (vcvts): New (v8hi, v4hi variants). - (vcvts): New (v8hf, v4hf variants). - (vcvtu): New (v8hi, v4hi variants). - (vcvtu): New (v8hf, v4hf variants). - (vcvts_n): New (v8hf, v4hf variants). - (vcvtu_n): New (v8hi, v4hi variants). - (vcvts_n): New (v8hi, v4hi variants). - (vcvtu_n): New (v8hf, v4hf variants). - (vbsl): New (v8hf, v4hf variants). - (vcvtas): New (v8hf, v4hf variants). - (vcvtau): New (v8hf, v4hf variants). - (vcvtms): New (v8hf, v4hf variants). - (vcvtmu): New (v8hf, v4hf variants). - (vcvtns): New (v8hf, v4hf variants). - (vcvtnu): New (v8hf, v4hf variants). - (vcvtps): New (v8hf, v4hf variants). - (vcvtpu): New (v8hf, v4hf variants). - - 2016-09-23 Matthew Wahab - - * config/arm/arm-builtins.c (hf_UP): New. - (si_UP): New. - (vfp_builtin_data): New. Update comment. - (enum arm_builtins): Include "arm_vfp_builtins.def". - (ARM_BUILTIN_VFP_PATTERN_START): New. - (arm_init_vfp_builtins): New. - (arm_init_builtins): Add arm_init_vfp_builtins. - (arm_expand_vfp_builtin): New. - (arm_expand_builtins): Update for arm_expand_vfp_builtin. Fix - long line. - * config/arm/arm_vfp_builtins.def: New file. - * config/arm/t-arm (arm.o): Add arm_vfp_builtins.def. - (arm-builtins.o): Likewise. - - 2016-09-23 Kugan Vivekanandarajah - - PR ipa/77677 - * ipa-cp.c (propagate_vr_accross_jump_function): Drop TREE_OVERFLOW - from constant while creating value range. - - 2016-09-23 Renlin Li - - * ira.c (ira): Move ira_use_lra_p initialization code to ... - (ira_init_once): Here. - - 2016-09-23 Uros Bizjak - Jakub Jelinek - - * hooks.h (hook_uint_uintp_false): Rename to... - (hook_bool_uint_uintp_false): ... this. - * hooks.c (hook_uint_uintp_false): Rename to... - (hook_bool_uint_uintp_false): ... this. - * target.def (elf_flags_numeric): Use hook_bool_uint_uintp_false - instead of hook_uint_uintp_false. - - 2016-09-23 Matthew Wahab - - * config/arm/arm-builtins.c (arm_init_neon_builtin): New. - (arm_init_builtins): Move body of a loop to the standalone - function arm_init_neon_builtin. - (arm_expand_neon_builtin_1): New. Update comment. Function body - moved from arm_neon_builtin with some white-space fixes. - (arm_expand_neon_builtin): Move code into the standalone function - arm_expand_neon_builtin_1. - - 2016-09-23 Matthew Wahab - - * config/arm/iterators.md (VCVTHI): New. - (NEON_VCMP): Add UNSPEC_VCLT and UNSPEC_VCLE. Fix a long line. - (NEON_VAGLTE): New. - (VFM_LANE_AS): New. - (VH_CVTTO): New. - (V_reg): Add HF, V4HF and V8HF. Fix white-space. - (V_HALF): Add V4HF. Fix white-space. - (V_if_elem): Add HF, V4HF and V8HF. Fix white-space. - (V_s_elem): Likewise. - (V_sz_elem): Fix white-space. - (V_elem_ch): Likewise. - (VH_elem_ch): New. - (scalar_mul_constraint): Add V8HF and V4HF. - (Is_float_mode): Fix white-space. - (Is_d_reg): Add V4HF and V8HF. Fix white-space. - (q): Add HF. Fix white-space. - (float_sup): New. - (float_SUP): New. - (cmp_op_unsp): Add UNSPEC_VCALE and UNSPEC_VCALT. - (neon_vfm_lane_as): New. - * config/arm/neon.md (add3_fp16): New. - (sub3_fp16): New. - (mul3add_neon): New. - (fma4_intrinsic): New. - (fmsub4_intrinsic): Fix white-space. - (fmsub4_intrinsic): New. - (2): New. - (neon_v): New. - (neon_v): New. - (neon_vrsqrte): New. - (neon_vpaddv4hf): New. - (neon_vadd): New. - (neon_vsub): New. - (neon_vmulf): New. - (neon_vfma): New. - (neon_vfms): New. - (neon_vc): New. - (neon_vc_fp16insn): New - (neon_vc_fp16insn_unspec): New. - (neon_vca): New. - (neon_vca_fp16insn): New. - (neon_vca_fp16insn_unspec): New. - (neon_vcz): New. - (neon_vabd): New. - (neon_vf): New. - (neon_vpfv4hf: New. - (neon_): New. - (neon_vrecps): New. - (neon_vrsqrts): New. - (neon_vrecpe): New (VH variant). - (neon_vdup_lane_internal): New. - (neon_vdup_lane): New. - (neon_vcvt): New (VCVTHI variant). - (neon_vcvt): New (VH variant). - (neon_vcvt_n): New (VH variant). - (neon_vcvt_n): New (VCVTHI variant). - (neon_vcvt): New. - (neon_vmul_lane): New. - (neon_vmul_n): New. - * config/arm/unspecs.md (UNSPEC_VCALE): New - (UNSPEC_VCALT): New. - (UNSPEC_VFMA_LANE): New. - (UNSPECS_VFMS_LANE): New. - - 2016-09-23 Dominik Vogt - - * config/s390/s390.md ("*extzv_zEC12", "*extzv_z10") - ("*extzv"): - Correct a typo in a comment. - Merged patterns. - ("*insv_zEC12", "*insv_z10") - ("*insv"): Ditto. - ("*insv_zEC12_appendbitsleft") - ("*insv_appendbitsleft") - ("*insv_z10_appendbitsleft"): Ditto. - ("*insv_zEC12_noshift", "*insv_z10_noshift") - ("*insv_noshift"): Ditto. - Provide pattern with operands switched. - ("*pre_z10_extv"): - Use new subst patterns. - ("*extzvdi_lshiftrt", "*_ior_and_sr_ze") - ("*extvsidi", "*_and_subregdi_rotr") - ("*_and_subregdi_rotl", "*_di_and_rot") - ("*insv_z10_noshift_cc", "*insv_z10_noshift_cconly") - ("*__ior_and_lshiftrt") - ("*_sidi_ior_and_lshiftrt") - ("*trunc_sidi_and_subreg_lshrt"): - New patterns. - ("*extzv__sll", "*extzv__srl") - ("*extzv__srl") - ("*extzv__sll"): Renamed patterns, use risbgn - on zEC12. - ("SINT"): New mode_iterator with SI, HI, QI. - * config/s390/subst.md ("clobbercc_or_nocc_subst", "z10_or_zEC12_cond") - ("clobbercc_or_nocc", "risbg_n"): New constructs for risbg pattern - duplication. - - 2016-09-23 Dominik Vogt - - * config/s390/predicates.md ("contiguous_bitmask_operand"): Adapt to - new interface of s390_contiguous_bitmask_p. - ("contiguous_bitmask_nowrap_operand"): New predicate. - ("*anddi3_cc", "*anddi3_cconly", "*anddi3"): Replace NxxDq with NxxDw. - * config/s390/constraints.md ("NxxDw", "NxxSq"): Adapt to new interface - of s390_contiguous_bitmask_p. - ("NxxDw"): Rename NxxDq constraint to NxxDw. - ("NxxSw"): New constraint. - * config/s390/s390.md ("*andsi3_zarch"): Enable bitmask wraparound. - * config/s390/s390-protos.h (s390_contiguous_bitmask_p): Updated - interface. - (s390_contiguous_bitmask_nowrap_p): Export. - * config/s390/s390.c (s390_contiguous_bitmask_nowrap_p): New name of - former s390_contiguous_bitmask_p. - (s390_contiguous_bitmask_p): Use s390_contiguous_bitmask_nowrap_p to - detect contiguous bit ranges with wraparound. Change signature to - return START and END position instead of POS and LENGTH. - (s390_contiguous_bitmask_vector_p): Remove extra code for continous bit - ranges with wraparound. - (s390_extzv_shift_ok): Use s390_contiguous_bitmask_nowrap_p. - (s390_contiguous_bitmask_vector_p,s390_extzv_shift_ok,print_operand): - Adapt to new signature of s390_contiguous_bitmask_p. - - 2016-09-23 Bin Cheng - - * tree-vect-loop-manip.c (create_intersect_range_checks_index): New. - (create_intersect_range_checks): New. - (vect_create_cond_for_alias_checks): Call above function. - - 2016-09-23 Matthew Wahab - - * config/arm/iterators.md (Code iterators): Fix some white-space - in the comments. - (GLTE): New. - (ABSNEG): New - (FCVT): Moved from vfp.md. - (VCVT_HF_US_N): New. - (VCVT_SI_US_N): New. - (VCVT_HF_US): New. - (VCVTH_US): New. - (FP16_RND): New. - (absneg_str): New. - (FCVTI32typename): Moved from vfp.md. - (sup): Add UNSPEC_VCVTA_S, UNSPEC_VCVTA_U, UNSPEC_VCVTM_S, - UNSPEC_VCVTM_U, UNSPEC_VCVTN_S, UNSPEC_VCVTN_U, UNSPEC_VCVTP_S, - UNSPEC_VCVTP_U, UNSPEC_VCVT_HF_S_N, UNSPEC_VCVT_HF_U_N, - UNSPEC_VCVT_SI_S_N, UNSPEC_VCVT_SI_U_N, UNSPEC_VCVTH_S_N, - UNSPEC_VCVTH_U_N, UNSPEC_VCVTH_S and UNSPEC_VCVTH_U. - (vcvth_op): New. - (fp16_rnd_str): New. - (fp16_rnd_insn): New. - * config/arm/unspecs.md (UNSPEC_VCVT_HF_S_N): New. - (UNSPEC_VCVT_HF_U_N): New. - (UNSPEC_VCVT_SI_S_N): New. - (UNSPEC_VCVT_SI_U_N): New. - (UNSPEC_VCVTH_S): New. - (UNSPEC_VCVTH_U): New. - (UNSPEC_VCVTA_S): New. - (UNSPEC_VCVTA_U): New. - (UNSPEC_VCVTM_S): New. - (UNSPEC_VCVTM_U): New. - (UNSPEC_VCVTN_S): New. - (UNSPEC_VCVTN_U): New. - (UNSPEC_VCVTP_S): New. - (UNSPEC_VCVTP_U): New. - (UNSPEC_VCVTP_S): New. - (UNSPEC_VCVTP_U): New. - (UNSPEC_VRND): New. - (UNSPEC_VRNDA): New. - (UNSPEC_VRNDI): New. - (UNSPEC_VRNDM): New. - (UNSPEC_VRNDN): New. - (UNSPEC_VRNDP): New. - (UNSPEC_VRNDX): New. - * config/arm/vfp.md (hf2): New. - (neon_vabshf): New. - (neon_vhf): New. - (neon_vrndihf): New. - (addhf3): New. - (subhf3): New. - (divhf3): New. - (mulhf3): New. - (*mulsf3neghf_vfp): New. - (*negmulhf3_vfp): New. - (*mulsf3addhf_vfp): New. - (*mulhf3subhf_vfp): New. - (*mulhf3neghfaddhf_vfp): New. - (*mulhf3neghfsubhf_vfp): New. - (fmahf4): New. - (neon_vfmahf): New. - (fmsubhf4_fp16): New. - (neon_vfmshf): New. - (*fnmsubhf4): New. - (*fnmaddhf4): New. - (neon_vsqrthf): New. - (neon_vrsqrtshf): New. - (FCVT): Move to iterators.md. - (FCVTI32typename): Likewise. - (neon_vcvthhf): New. - (neon_vcvthsi): New. - (neon_vcvth_nhf_unspec): New. - (neon_vcvth_nhf): New. - (neon_vcvth_nsi_unspec): New. - (neon_vcvth_nsi): New. - (neon_vcvthsi): New. - (neon_hf): New. - - 2016-09-23 Dominik Vogt - - * config/s390/s390.md (bitoff, bitoff_plus): Neq mode attributes. - ("*extzv_zEC12", "*insv_zEC12", "*insv_z10") - ("*insv_zEC12_appendbitsleft") - ("*insv_z10_appendbitsleft", "*rsbg__sll") - ("*rsbg__srl"): Use new attributes. - - 2016-09-23 Jakub Jelinek - - * ipa-cp.c (ipcp_store_vr_results): Avoid static local var zero. - * sreal.h (sreal::min, sreal::max): Avoid static local vars, - construct values without normalization. - * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't initialize - static local lhs_ops to vNULL. - - 2016-09-23 Matthew Wahab - Jiong Wang - - * config/arm/arm.c (coproc_secondary_reload_class): Make HFmode - available when FP16 instructions are available. - (output_move_vfp): Add support for 16-bit data moves. - (arm_validize_comparison): Fix some white-space. Support HFmode - by conversion to SFmode. - * config/arm/arm.md (truncdfhf2): Fix a comment. - (extendhfdf2): Likewise. - (cstorehf4): New. - (movsicc): Fix some white-space. - (movhfcc): New. - (movsfcc): Fix some white-space. - (*cmovhf): New. - * config/arm/vfp.md (*arm_movhi_vfp): Disable when VFP FP16 - instructions are available. - (*thumb2_movhi_vfp): Likewise. - (*arm_movhi_fp16): New. - (*thumb2_movhi_fp16): New. - (*movhf_vfp_fp16): New. - (*movhf_vfp_neon): Disable when VFP FP16 instructions are available. - (*movhf_vfp): Likewise. - (extendhfsf2): Enable when VFP FP16 instructions are available. - (truncsfhf2): Enable when VFP FP16 instructions are available. - - 2016-09-23 Martin Liska - - * config/s390/vx-builtins.md: Replace 'adress' with 'address'. - - 2016-09-23 Matthew Wahab - - * config/arm/arm.c (arm_evpc_neon_vuzp): Add support for V8HF and - V4HF modes. - (arm_evpc_neon_vtrn): Likewise. - (arm_evpc_neon_vrev): Likewise. - (arm_evpc_neon_vext): Likewise. - * config/arm/arm_neon.h (vbsl_f16): New. - (vbslq_f16): New. - (vdup_n_f16): New. - (vdupq_n_f16): New. - (vdup_lane_f16): New. - (vdupq_lane_f16): New. - (vext_f16): New. - (vextq_f16): New. - (vmov_n_f16): New. - (vmovq_n_f16): New. - (vrev64_f16): New. - (vrev64q_f16): New. - (vtrn_f16): New. - (vtrnq_f16): New. - (vuzp_f16): New. - (vuzpq_f16): New. - (vzip_f16): New. - (vzipq_f16): New. - * config/arm/arm_neon_buillins.def (vdup_n): New (v8hf, v4hf variants). - (vdup_lane): New (v8hf, v4hf variants). - (vext): New (v8hf, v4hf variants). - (vbsl): New (v8hf, v4hf variants). - * config/arm/iterators.md (VDQWH): New. - (VH): New. - (V_double_vector_mode): Add V8HF and V4HF. Fix white-space. - (Scalar_mul_8_16): Fix white-space. - (Is_d_reg): Add V4HF and V8HF. - * config/arm/neon.md (neon_vdup_lane_internal): New. - (neon_vdup_lane): New. - (neon_vtrn_internal): Replace VDQW with VDQWH. - (*neon_vtrn_insn): Likewise. - (neon_vzip_internal): Likewise. Also fix white-space. - (*neon_vzip_insn): Likewise - (neon_vuzp_internal): Likewise. - (*neon_vuzp_insn): Likewise - * config/arm/vec-common.md (vec_perm_const): New. - - 2016-09-23 Jiong Wang - Matthew Wahab - - * config/arm/arm.c (output_move_vfp): Weaken assert to allow HImode. - (arm_hard_regno_mode_ok): Allow HImode values in VFP registers. - * config/arm/arm.md (*movhi_bytes): Disable when VFP registers are - available. Also fix some white-space. - * config/arm/vfp.md (*arm_movhi_vfp): New. - (*thumb2_movhi_vfp): New. - - 2016-09-23 Matthew Wahab - - * config/arm/arm-c.c (arm_cpu_builtins): Define - "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC" and - "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC". - - 2016-09-23 Matthew Wahab - - * doc/sourcebuild.texi (ARM-specific attributes): Add anchor for - arm_v8_1a_neon_ok. Add entries for arm_v8_2a_fp16_scalar_ok, - arm_v8_2a_fp16_scalar_hw, arm_v8_2a_fp16_neon_ok and - arm_v8_2a_fp16_neon_hw. - (Add options): Add entries for arm_v8_1a_neon, arm_v8_2a_scalar, - arm_v8_2a_neon. - - 2016-09-23 Matthew Wahab - - * doc/sourcebuild.texi (ARM-specific attributes): Add entries for - arm_fp16_alternative_ok and arm_fp16_none_ok. - - 2016-09-23 Martin Liska - - * ipa-icf.c (sem_variable::merge): Replace adress with address. - - 2016-09-23 Matthew Wahab - - * config/arm/arm-arches.def ("armv8.1-a"): Add FL_CRC32. - ("armv8.2-a"): New. - ("armv8.2-a+fp16"): New. - * config/arm/arm-protos.h (FL2_ARCH8_2): New. - (FL2_FP16INST): New. - (FL2_FOR_ARCH8_2A): New. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm.c (arm_arch8_2): New. - (arm_fp16_inst): New. - (arm_option_override): Set arm_arch8_2 and arm_fp16_inst. Check - for incompatible fp16-format settings. - * config/arm/arm.h (TARGET_VFP_FP16INST): New. - (TARGET_NEON_FP16INST): New. - (arm_arch8_2): Declare. - (arm_fp16_inst): Declare. - * config/arm/bpabi.h (BE8_LINK_SPEC): Add entries for - march=armv8.2-a and march=armv8.2-a+fp16. - * config/arm/t-aprofile (Arch Matches): Add entries for armv8.2-a - and armv8.2-a+fp16. - * doc/invoke.texi (ARM Options): Add "-march=armv8.1-a", - "-march=armv8.2-a" and "-march=armv8.2-a+fp16". - - 2016-09-23 Martin Liska - - * doc/extend.texi: Remove fused-madd from i386 target options. - - 2016-09-23 Martin Liska - - * config/i386/i386.c (ix86_valid_target_attribute_inner_p): - Handle movbe. - - 2016-09-23 Martin Liska - - * config/i386/i386.c (ix86_valid_target_attribute_inner_p): - Handle crc32. - - 2016-09-23 Martin Liska - - PR target/71652 - * config/i386/i386.c (ix86_option_override_internal): Change - signature and return false when there's an error related to - arch string. - (release_options_strings): New function. - (ix86_valid_target_attribute_tree): Call the function. - - 2016-09-23 Jakub Jelinek - - * hsa-gen.c (hsa_op_immed::hsa_op_immed Use CONSTRUCTOR_NELTS (...) - instead of vec_safe_length (CONSTRUCTOR_ELTS (...)). - (gen_hsa_ctor_assignment): Likewise. - * print-tree.c (print_node): Likewise. - * tree-dump.c (dequeue_and_dump): Likewise. - * tree-sra.c (sra_modify_constructor_assign): Likewise. - * expr.c (store_constructor): Likewise. - * fold-const.c (operand_equal_p): 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. - * hsa-brig.c (hsa_op_immed::emit_to_buffer): Likewise. - * ipa-icf-gimple.c (func_checker::compare_operand): Likewise. - - 2016-09-23 Richard Biener - - * hooks.h (hook_uint_uintp_false): Declare. - - 2016-09-22 Senthil Kumar Selvaraj - - * config/avr/avr.c (avr_rtx_costs_1): Handle DImode MULT. - (avr_address_cost): Replace 61 with MAX_LD_OFFSET(mode). - - 2016-09-22 Martin Sebor - - PR target/77676 - * gimple-ssa-sprintf.c (target_int_min, target_int_max): Use - HOST_BITS_PER_WIDE_INT, make a static local variable auto. - (target_int_min): Correct computation. - (format_integer): Use long long as the argument for the ll length - modifier. - (format_floating): Use target_int_max(). - (get_string_length): Same. - (format_string): Avoid setting the bounded flag for strings - of unknown length. - (try_substitute_return_value): Avoid setting range info when - the result isn't bounded. - * varasm.c (assemble_name): Increase buffer size. - - 2016-09-22 Andre Vieira - Terry Guo - - * target.def (elf_flags_numeric): New target hook. - * targhooks.h (default_asm_elf_flags_numeric): New. - * varasm.c (default_asm_elf_flags_numeric): New. - (default_elf_asm_named_section): Use new target hook. - * config/arm/arm.opt (mpure-code): New. - * config/arm/arm.h (SECTION_ARM_PURECODE): New. - * config/arm/arm.c (arm_asm_init_sections): Add section - attribute to default text section if -mpure-code. - (arm_option_check_internal): Diagnose use of option with - non supported targets and/or options. - (arm_asm_elf_flags_numeric): New. - (arm_function_section): New. - (arm_elf_section_type_flags): New. - * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Disable - for -mpure-code. - * gcc/doc/texi (TARGET_ASM_ELF_FLAGS_NUMERIC): New. - * gcc/doc/texi.in (TARGET_ASM_ELF_FLAGS_NUMERIC): Likewise. - - 2016-09-22 Jan Hubicka - - * regcprop.c (copyprop_hardreg_forward_1): Remove noop moves. - - 2016-09-22 Trevor Saunders - - * emit-rtl.c (next_cc0_user): Make argument type rtx_insn *. - * rtl.h: Adjust prototype. - - 2016-09-22 Trevor Saunders - - * emit-rtl.c (next_active_insn): Change argument type to rtx_insn *. - (prev_active_insn): Likewise. - (active_insn_p): Likewise. - * rtl.h: Adjust prototypes. - * cfgcleanup.c (merge_blocks_move_successor_nojumps): Adjust. - * config/arc/arc.md: Likewise. - * config/pa/pa.c (branch_to_delay_slot_p): Likewise. - (branch_needs_nop_p): Likewise. - (use_skip_p): Likewise. - * config/sh/sh.c (gen_block_redirect): Likewise. - (split_branches): Likewise. - * reorg.c (optimize_skip): Likewise. - (fill_simple_delay_slots): Likewise. - (fill_slots_from_thread): Likewise. - (relax_delay_slots): Likewise. - * resource.c (mark_target_live_regs): Likewise. - - 2016-09-22 Trevor Saunders - - * config/cris/cris.c (cris_asm_output_case_end): Change argument - type to rtx_insn *. - * emit-rtl.c (next_nonnote_nondebug_insn): Likewise. - (prev_nonnote_nondebug_insn): Likewise. - * config/cris/cris-protos.h: Adjust prototype. - * rtl.h: Likewise. - * jump.c (rtx_renumbered_equal_p): Adjust. - - 2016-09-22 Trevor Saunders - - * emit-rtl.c (prev_real_insn): Change argument type to rtx_insn *. - * rtl.h: Adjust prototype. - * config/sh/sh.md: Adjust. - * dwarf2out.c (add_var_loc_to_decl): Likewise. - - 2016-09-22 Trevor Saunders - - * emit-rtl.c (next_nondebug_insn): Change argument type to rtx_insn *. - (prev_nondebug_insn): Likewise. - * loop-doloop.c (doloop_condition_get): Likewise. - * rtl.h: Adjust prototype. - * cfgloop.h: Likewise. - - 2016-09-22 Trevor Saunders - - * emit-rtl.c (next_nonnote_insn): Change argument type to rtx_insn *. - (prev_nonnote_insn): Likewise. - * jump.c (reversed_comparison_code_parts): Likewise. - (reversed_comparison): Likewise. - * rtl.h: Adjust prototypes. - * config/arc/arc.md: Adjust. - * cse.c (find_comparison_args): Likewise. - * reorg.c (redundant_insn): Change return type to rtx_insn *. - (fix_reg_dead_note): Change argument type to rtx_insn *. - (delete_prior_computation): Likewise. - (delete_computation): Likewise. - (fill_slots_from_thread): Adjust. - (relax_delay_slots): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - (simplify_relational_operation_1): Likewise. - (simplify_ternary_operation): Likewise. - - 2016-09-22 Trevor Saunders - - * config/arc/arc-protos.h (arc_label_align): Change type of - variables from rtx to rtx_insn *. - * config/arc/arc.c (arc_label_align): Likewise. - * config/arm/arm.c (any_sibcall_could_use_r3): Likewise. - * config/bfin/bfin.c (workaround_speculation): Likewise. - * config/c6x/c6x.c (find_next_cycle_insn): Likewise. - (find_last_same_clock): Likewise. - (reorg_split_calls): Likewise. - * config/cris/cris-protos.h (cris_cc0_user_requires_cmp): Likewise. - * config/cris/cris.c (cris_cc0_user_requires_cmp): Likewise. - * config/h8300/h8300-protos.h (same_cmp_preceding_p): Likewise. - (same_cmp_following_p): Likewise. - * config/h8300/h8300.c (same_cmp_preceding_p): Likewise. - (same_cmp_following_p): Likwise. - * config/m32r/m32r.c (m32r_expand_epilogue): Likewise. - * config/nds32/nds32-protos.h (nds32_target_alignment): Likewise. - * config/nds32/nds32.c (nds32_target_alignment): Likewise. - * config/rl78/rl78.c (rl78_alloc_physical_registers_op2): Likewise. - (rl78_alloc_physical_registers_cmp): Likewise. - (rl78_alloc_physical_registers_umul): Likewise. - (rl78_calculate_death_notes): Likewise. - * config/s390/s390-protos.h (s390_label_align): Likewise. - * config/s390/s390.c (s390_label_align): Likewise. - * config/sh/sh.c (barrier_align): Likewise. - * config/sparc/sparc-protos.h (emit_cbcond_nop): Likewise. - * config/sparc/sparc.c (sparc_asm_function_epilogue): Likewise. - (emit_cbcond_nop): Likewise. - - 2016-09-22 Martin Liska - - PR ipa/77653 - * ipa-icf.c (sem_variable::merge): Yield merge operation if - alias address matters, not necessarily address of original. - - 2016-09-22 Richard Biener - - PR middle-end/77697 - * gimple-fold.c (fold_array_ctor_reference): Turn asserts into - fold fails. - - 2016-09-22 Richard Biener - - PR middle-end/77677 - * gimple-match-head.c (gimple_resimplify1): Drop TREE_OVERFLOW - from constant folding results. - (gimple_resimplify2): Likewise. - (gimple_resimplify3): Likewise. - - 2016-09-22 Richard Biener - - PR middle-end/77678 - * expr.c (expand_expr_real_1): Guard array access against negative - offset. - - 2016-09-22 Rainer Orth - - * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN instead - of MPFR_RNDN. - (format_floating): Likewise. - - 2016-09-22 Jakub Jelinek - - PR fortran/77665 - * tree-inline.c (remap_gimple_stmt): Set has_simduid_loops - for all IFN_GOMP_SIMD_* internal fns, not just for - IFN_GOMP_SIMD_ORDERED_*. - - 2016-09-21 Michael Meissner - - PR target/77670 - * config/rs6000/predicates.md (invert_fpmask_comparison_operator): - New predicate that matches the ISA 3.0 XSCMP{EQ,GT,GE}DP - instructions when you want to invert the test. - * config/rs6000/rs6000.md (fpmask): Use the arguments in the - correct order for XXSEL. - (movcc_invert_p9): Define the inverted test - for using XSCMP{EQ,GT,GE}DP. - - 2016-09-21 David Malcolm - - * genconstants.c (main): Introduce noop_reader and convert call - to read_md_files to a method call. - * genenums.c (main): Likewise. - * genmddeps.c (main): Likewise. - * genpreds.c (write_tm_constrs_h): Replace use of "in_fname" with - rtx_reader_ptr->get_top_level_filename (). - (write_tm_preds_h): Likewise. - (write_insn_preds_c): Likewise. - * gensupport.c (class gen_reader): New subclass of rtx_reader. - (rtx_handle_directive): Convert to... - (gen_reader::handle_unknown_directive): ...this. - (init_rtx_reader_args_cb): Convert return type from bool to - rtx_reader *. Create a gen_reader instance, using it for the - call to read_md_files. Return it if no errors occur. - (init_rtx_reader_args): Convert return type from bool to - rtx_reader *. - * gensupport.h (init_rtx_reader_args_cb): Likewise. - (init_rtx_reader_args_cb): Likewise. - * read-md.c (struct file_name_list): Move to class rtx_reader. - (read_md_file): Delete in favor of rtx_reader::m_read_md_file. - (read_md_filename): Delete in favor of - rtx_reader::m_read_md_filename. - (read_md_lineno): Delete in favor of rtx_reader::m_read_md_lineno. - (in_fname): Delete in favor of rtx_reader::m_toplevel_fname. - (base_dir): Delete in favor of rtx_reader::m_base_dir. - (first_dir_md_include): Delete in favor of - rtx_reader::m_first_dir_md_include. - (last_dir_md_include_ptr): Delete in favor of - rtx_reader::m_last_dir_md_include_ptr. - (max_include_len): Delete. - (rtx_reader_ptr): New. - (fatal_with_file_and_line): Use get_filename and get_lineno - accessors of rtx_reader_ptr. - (require_char_ws): Likewise. - (rtx_reader::read_char): New method, based on ::read_char. - (rtx_reader::unread_char): New method, based on ::unread_char. - (read_escape): Use get_filename and get_lineno accessors of - rtx_reader_ptr. - (read_braced_string): Use get_lineno accessor of rtx_reader_ptr. - (read_string): Use get_filename and get_lineno accessors of - rtx_reader_ptr. - (rtx_reader::rtx_reader): New ctor. - (rtx_reader::~rtx_reader): New dtor. - (handle_include): Convert from a function to... - (rtx_reader::handle_include): ...this method, converting - handle_directive from a callback to a virtual function. - (handle_file): Likewise, converting to... - (rtx_reader::handle_file): ...this method. - (handle_toplevel_file): Likewise, converting to... - (rtx_reader::handle_toplevel_file): ...this method. - (rtx_reader::get_current_location): New method. - (parse_include): Convert from a function to... - (rtx_reader::add_include_path): ...this method, dropping redundant - update to unused max_include_len. - (read_md_files): Convert from a function to... - (rtx_reader::read_md_files): ...this method, converting - handle_directive from a callback to a virtual function. - (noop_reader::handle_unknown_directive): New method. - * read-md.h (directive_handler_t): Delete this typedef. - (in_fname): Delete. - (read_md_file): Delete. - (read_md_lineno): Delete. - (read_md_filename): Delete. - (class rtx_reader): New class. - (rtx_reader_ptr): New decl. - (class noop_reader): New subclass of rtx_reader. - (read_char): Reimplement in terms of rtx_reader::read_char. - (unread_char): Reimplement in terms of rtx_reader::unread_char. - (read_md_files): Delete. - * read-rtl.c (read_rtx_code): Update for deletion of globals - read_md_filename and read_md_lineno. - - 2016-09-21 Jason Merrill - - * input.h (from_macro_definition_at): New. - - 2016-09-21 Segher Boessenkool - - * doc/rtl.texi (JUMP_LABEL): Document RETURN and SIMPLE_RETURN values. - - 2016-09-21 Bernd Edlinger - - PR tree-optimization/77550 - * tree-vect-stmts.c (create_array_ref): Change parameters. - (get_group_alias_ptr_type): New function. - (vectorizable_store, vectorizable_load): Use get_group_alias_ptr_type. - - 2016-09-21 Marek Polacek - - * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length): - Add falls through comment. - - 2016-09-21 Richard Biener - - * dwarf2out.c (remove_child_with_prev): Clear child->die_sib. - (replace_child): Likewise. - (remove_child_TAG): Adjust. - (move_marked_base_types): Likewise. - (prune_unused_types_prune): Clear die_sib of removed children. - - 2016-09-21 Georg-Johann Lay - - PR target/77326 - * config/avr/avr.c (avr_notice_update_cc) [CC_NONE]: If insn - touches some regs mentioned in cc_status, do CC_STATUS_INIT. - - 2016-09-21 Richard Biener - - PR tree-optimization/77648 - * tree-ssa-structalias.c (process_constraint): Handle all DEREF - with complex RHS. - (make_transitive_closure_constraints): Adjust comment. - (make_any_offset_constraints): New function. - (handle_rhs_call): Make sure to first expand a pointer to all - subfields before transitively closing it. - (handle_const_call): Likewise. Properly expand returned - pointers as well. - (handle_pure_call): Likewise. - - 2016-09-21 Richard Biener - Jakub Jelinek - - PR tree-optimization/77621 - * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Split - group at non-vectorizable stmts. - - 2016-09-21 Kugan Vivekanandarajah - - PR tree-optimization/72835 - * tree-ssa-reassoc.c (make_new_ssa_for_def): New. - (make_new_ssa_for_all_defs): Likewise. - (zero_one_operation): Replace all SSA_NAMEs defined in the chain. - - 2016-09-20 Martin Sebor - - PR middle-end/49905 - * Makefile.in (OBJS): Add gimple-ssa-sprintf.o. - * config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Redefine. - * config/linux.c (gnu_libc_printf_pointer_format): New function. - * config/sol2.h (TARGET_PRINTF_POINTER_FORMAT): Same. - * config/sol2.c (solaris_printf_pointer_format): New function. - * doc/invoke.texi (-Wformat-length, -fprintf-return-value): New - options. - * doc/tm.texi.in (TARGET_PRINTF_POINTER_FORMAT): Document. - * doc/tm.texi: Regenerate. - * gimple-fold.h (get_range_strlen): New function. - (get_maxval_strlen): Declare existing function. - * gimple-fold.c (get_range_strlen): Add arguments and compute both - maximum and minimum. - (get_range_strlen): Define overload. - (get_maxval_strlen): Adjust. - * gimple-ssa-sprintf.c: New file and pass. - * passes.def (pass_sprintf_length): Add new pass. - * targhooks.h (default_printf_pointer_format): Declare new function. - (gnu_libc_printf_pointer_format): Same. - (solaris_libc_printf_pointer_format): Same. - * targhooks.c (default_printf_pointer_format): Define new function. - * tree-pass.h (make_pass_sprintf_length): Declare new function. - * print-tree.c: Increase buffer size. - - 2016-09-21 Kugan Vivekanandarajah - - * tree-vrp.c (get_value_range): Teach PARM_DECL to use ipa-vrp results. - - 2016-09-21 Kugan Vivekanandarajah - - * common.opt: New option -fipa-vrp. - * ipa-cp.c (ipa_get_vr_lat): New. - (ipcp_vr_lattice::print): Likewise. - (print_all_lattices): Call ipcp_vr_lattice::print. - (ipcp_vr_lattice::meet_with): New. - (ipcp_vr_lattice::meet_with_1): Likewise. - (ipcp_vr_lattice::top_p): Likewise. - (ipcp_vr_lattice::bottom_p): Likewsie. - (ipcp_vr_lattice::set_to_bottom): Likewise. - (set_all_contains_variable): Call VR set_to_bottom. - (initialize_node_lattices): Init VR lattices. - (propagate_vr_accross_jump_function): New. - (propagate_constants_accross_call): Call - propagate_vr_accross_jump_function. - (ipcp_store_vr_results): New. - (ipcp_driver): Handle VR. - * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Handle VR. - (ipa_set_jf_unknown): Likewise. - (ipa_compute_jump_functions_for_edge): Likewise. - (ipa_node_params_t::duplicate): Likewise. - (ipa_write_jump_function): Likewise. - (ipa_read_jump_function): Likewise. - (write_ipcp_transformation_info): Likewise. - (read_ipcp_transformation_info): Likewise. - (ipcp_update_vr): New. - (ipcp_transform_function): Handle VR. - * ipa-prop.h (struct ipa_vr): New. - * cgraph.c: Include tree-vrp.h. - * cgraphunit.c: Likewise. - * ipa-utils.c: Likewise. - * ipa.c: Likewise. - * opts.c: Likewise. - * toplev.c: Likewise. - * ipa-devirt.c: Likewise. - * ipa-inline-transform.c: Likewise. - * ipa-inline.c: Likewise. - * ipa-profile.c: Likewise. - - 2016-09-21 Kugan Vivekanandarajah - - * doc/invoke.texi: Document -fdump-tree-evrp. - * passes.def: Define new pass_early_vrp. - * timevar.def: Define new TV_TREE_EARLY_VRP. - * tree-pass.h (make_pass_early_vrp): New. - * tree-ssa-propagate.c: Make replace_uses_in non static. - * tree-ssa-propagate.h: Export replace_uses_in. - * tree-vrp.c (extract_range_for_var_from_comparison_expr): New. - (extract_range_from_assert): Factor out - extract_range_for_var_from_comparison_expr. - (vrp_initialize_lattice): New. - (vrp_initialize): Factor out vrp_initialize_lattice. - (vrp_valueize): Fix it to reject complex value ranges. - (vrp_free_lattice): New. - (evrp_dom_walker::before_dom_children): Likewise. - (evrp_dom_walker::after_dom_children): Likewise. - (evrp_dom_walker::push_value_range): Likewise. - (evrp_dom_walker::pop_value_range): Likewise. - (execute_early_vrp): Likewise. - (execute_vrp): Call vrp_initialize_lattice and vrp_free_lattice. - (make_pass_early_vrp): New. + * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise. + * tree.def (ABSU_EXPR): New. - 2016-09-20 Uros Bizjak + 2018-06-16 Jakub Jelinek - * config/i386/i386.md (mult->ashift peephole2s): Use pow2p_hwi - instead of exact_log2. + 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. - 2016-09-20 Uros Bizjak - - PR target/77621 - * config/i386/i386.c (ix86_preferred_simd_mode) : - Don't return word_mode for !TARGET_VECTORIZE_DOUBLE. - (ix86_add_stmt_cost): Penalize DFmode vector operations - for !TARGET_VECTORIZE_DOUBLE. - - 2016-09-20 Gerald Pfeifer + 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. - * doc/invoke.texi (Warning Options): Simplify language. - (Optimize Options): Complete sentence. + 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 - 2016-09-20 David Edelsohn + * 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. - * dbxout.c (xcoff_debug_hooks): Add filename parameter to - early_finish hook. + 2018-06-12 Martin Sebor - 2016-09-20 Michael Meissner + 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. - PR target/71395 - * config/rs6000/rs6000.c (rs6000_expand_vector_init): For V4SF - inits on power8 and above, use the VMRGEW instruction instead of a - permute. + 2018-06-12 Martin Sebor - * config/rs6000/altivec.md (UNSPEC_VMRGEW_DIRECT): New unspec. - (p8_vmrgew_v4sf_direct): New VMRGEW insn for V4SF floating - initialization. + PR c/85931 + * fold-const.c (operand_equal_p): Handle SAVE_EXPR. - 2016-09-20 Tamar Christina + 2018-06-12 Will Schmidt - * config/aarch64/arm_neon.h - (vst2_s64, vst2_u64, vst2_f64, vst2_s8): Add missing attributes. - (vst3_s64, vst3_u64, vst3_f64, vst3_s8): Likewise. - (vst4_s64, vst4_u64, vst4_f64, vst4_s8): Likewise. + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + BUILTIN_VEC_XST entries for pointer to double and long long. - 2016-09-20 Bernd Edlinger + 2018-06-12 H.J. Lu - * config/var/vax.h (ELIMINABLE_REGS): Define. - (INITIAL_ELIMINATION_OFFSET): Define. + 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. - 2016-09-20 Jakub Jelinek + 2018-06-12 Martin Liska - PR middle-end/77624 - * builtins.c (fold_builtin_atomic_always_lock_free): Only look through - cast to void * if the cast is from some other pointer type. + * doc/options.texi: Document IntegerRange. - 2016-09-20 Richard Biener + 2018-06-12 Martin Liska - PR tree-optimization/77646 - * tree-ssa-sccvn.c (visit_reference_op_call): Always value-number - a VDEF. + * 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. - 2016-09-20 Tamar Christina + 2018-06-12 Martin Liska - * config/aarch64/arm_neon.h: Add gnu_inline and artificial - attributes to all inlined functions and make them extern. + * doc/options.texi: Document Deprecated option flag. - 2016-09-20 Richard Biener + 2018-06-12 Claudiu Zissulescu - * debug.h (gcc_debug_hooks): Add filename parameter to early_finish - hook. - * debug.c (do_nothing_debug_hooks): Adjust. - * dbxout.c (dbx_debug_hooks): Likewise. - * sdbout.c (sdb_debug_hooks): Likewise. - * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise. - (dwarf2out_finish): Move producer, filename and - path annotation ... - (dwarf2out_early_finish): ... here. Remove in_lto_p special-casing. - * cgraphunit.c (symbol_table::finalize_compilation_unit): Adjust. + * 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. - 2016-09-19 Bernd Edlinger + 2018-06-12 Claudiu Zissulescu - PR c++/77434 - * doc/invoke.texi: Document -Wint-in-bool-context. + * 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. - PR middle-end/77421 - * dwarf2out.c (output_loc_operands): Fix an assertion. + 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. - 2016-09-19 Joseph Myers + 2018-06-08 Segher Boessenkool - * ginclude/float.h [__STDC_WANT_IEC_60559_BFP_EXT__] - (CR_DECIMAL_DIG): New macro. + * config/rs6000/rs6000.c (min, max): Delete. - 2016-09-19 Joseph Myers + 2018-06-08 Segher Boessenkool - * ginclude/stddef.h (max_align_t) [__i386__]: Add __float128 - element. + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of + -mabi=spe and -mabi=no-spe. - 2016-09-19 Vladimir Makarov + 2018-06-08 Martin Liska - PR rtl-optimization/77416 - * lra-remat.c (operand_to_remat): Process hard coded insn - registers. + * ipa-pure-const.c (propagate_pure_const): Use ::get at places + where we expect an existing summary. - 2016-09-19 Kyrylo Tkachov + 2018-06-08 Martin Liska - * simplify-rtx.c (simplify_relational_operation_1): Add transformation - (GTU (PLUS a C) (C - 1)) --> (LTU a -C). + * ipa-inline-analysis.c (simple_edge_hints): Use ::get method. + * ipa-inline.h (estimate_edge_growth): Likewise. - 2016-09-19 Segher Boessenkool + 2018-06-08 Martin Liska - * target.def (lra_p): Wordsmithing. - * doc/tm.texi: Regenerate. + * 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 + + * gcc/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 + + * gcc/config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the + symbol defined for msp430i* devices to be lower case. + + gcc/testsuite/gcc.target/msp430/ + * msp430i-device-symbol.c: New test. + * msp430f-device-symbol.c: New test. + * msp430.h: New test header file. + + 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 + + * gcc/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. + * gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB, + P9V_BUILTIN_VCLZLSBB_V16QI. + * gcc/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. - 2016-09-19 Jakub Jelinek - Jan Hubicka + 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. - PR target/77587 - * cgraph.c (cgraph_node::rtl_info): Pass &avail to - ultimate_alias_target call, return NULL if avail < AVAIL_AVAILABLE. - Call ultimate_alias_target just once, not up to 4 times. + 2018-06-06 David Malcolm - 2016-09-19 Richard Biener + * 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. - * dwarf2out.c (early_dwarf_finished): New global. - (set_early_dwarf::set_early_dwarf): Assert early_dwarf_finished - is false. - (dwarf2out_early_finish): Set early_dwarf_finished at the end, - if called from LTO exit early. - (dwarf2out_late_global_decl): When being during the early - debug phase do not add locations but only const value attributes. - Adjust the way we generate early DIEs for LTO. + 2018-06-06 Eric Botcazou - 2016-09-19 Richard Biener + PR tree-optimization/86066 + * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR + for BIT_INSERT_EXPR stores. - PR middle-end/77605 - * tree-data-ref.c (analyze_subscript_affine_affine): Use the - proper niter to bound the loops. + 2018-06-06 Richard Biener - 2016-09-19 Richard Biener + PR tree-optimization/86062 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary + component refs ontop + of to be offsetted base. - PR tree-optimization/77514 - * tree-ssa-pre.c (create_expression_by_pieces): Optimize - search for folded stmt. + 2018-06-06 Jozef Lawrynowicz - 2016-09-17 Jan Hubicka + * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers + to be static and remove check on interrupt attribute name. + + gcc/testsuite/gcc.target/msp430/ + * function-attributes-4.c: New test. + * static-interrupts.c: New test. + + 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. - * passes.def (pass_early_thread_jumps): Schedule after forwprop. - * tree-pass.h (make_pass_early_thread_jumps): Declare. - * tree-ssa-threadbackward.c (fsm_find_thread_path, - fsm_find_thread_path, profitable_jump_thread_path, - fsm_find_control_statement_thread_paths, - find_jump_threads_backwards): Add speed_p parameter. - (pass_data_early_thread_jumps): New pass. - (make_pass_early_thread_jumps): New function. + 2018-06-05 Martin Liska - 2016-09-17 Andreas Schwab + PR gcov-profile/84846 + * gcov.c (output_lines): Print working directory only + in intermediate format. - * config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add cast. - * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Likewise. + 2018-06-05 Andreas Krebbel - 2016-09-16 Eric Botcazou + * config/s390/s390-builtin-types.def: Add void function type. + * config/s390/s390-builtins.def: Use the function type for the + tbeginc builtin. - * recog.c (rest_of_handle_split_after_reload): Delete. - (pass_split_after_reload::gate): New method. - (pass_split_after_reload::execute): Call split_all_insns directly. + 2018-06-04 Jim Wilson - 2016-09-16 Jonathan Wakely + * 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. - * doc/extend.texi (Integer Overflow Builtins): Fix type of out - parameters for functions taking long long arguments. + 2018-06-04 Eric Botcazou - 2016-09-16 Bill Schmidt + * 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. - PR target/77613 - * config/rs6000/rs6000.c (rtx_is_swappable_p): Add support for - splat with truncate. + 2018-06-04 Richard Biener - 2016-09-16 Jason Merrill + PR tree-optimization/85955 + * builtins.c (fold_builtin_sincos): Convert pointers to + destination to appropriate type before dereferencing. - * hwint.h (least_bit_hwi, pow2_or_zerop, pow2p_hwi, ctz_or_zero): - New. - * hwint.c (exact_log2): Use pow2p_hwi. - (ctz_hwi, ffs_hwi): Use least_bit_hwi. - * alias.c (memrefs_conflict_p): Use pow2_or_zerop. - * builtins.c (get_object_alignment_2, get_object_alignment) - (get_pointer_alignment, fold_builtin_atomic_always_lock_free): Use - least_bit_hwi. - * calls.c (compute_argument_addresses, store_one_arg): Use - least_bit_hwi. - * cfgexpand.c (expand_one_stack_var_at): Use least_bit_hwi. - * combine.c (force_to_mode): Use least_bit_hwi. - (contains_muldiv, find_split_point, combine_simplify_rtx) - (simplify_if_then_else, simplify_set, force_to_mode) - (if_then_else_cond, simplify_and_const_int_1) - (simplify_compare_const): Use pow2p_hwi. - * cse.c (fold_rtx): Use pow2p_hwi. - * emit-rtl.c (set_mem_attributes_minus_bitpos, adjust_address_1): - Use least_bit_hwi. - * expmed.c (synth_mult, expand_divmod): Use ctz_or_zero, ctz_hwi. - (init_expmed_one_conv): Use pow2p_hwi. - * expr.c (is_aligning_offset): Use pow2p_hwi. - * fold-const.c (round_up_loc, round_down_loc): Use pow2_or_zerop. - (fold_binary_loc): Use pow2p_hwi. - * function.c (assign_parm_find_stack_rtl): Use least_bit_hwi. - * gimple-fold.c (gimple_fold_builtin_memory_op): Use pow2p_hwi. - * gimple-ssa-strength-reduction.c (replace_ref): Use least_bit_hwi. - * hsa-gen.c (gen_hsa_addr_with_align, hsa_bitmemref_alignment): - Use least_bit_hwi. - * ifcvt.c (noce_try_store_flag_constants): Use pow2p_hwi. - * ipa-cp.c (ipcp_alignment_lattice::meet_with_1): Use least_bit_hwi. - * ipa-prop.c (ipa_modify_call_arguments): Use least_bit_hwi. - * omp-low.c (oacc_loop_fixed_partitions) - (oacc_loop_auto_partitions): Use least_bit_hwi. - * rtlanal.c (nonzero_bits1): Use ctz_or_zero. - * stor-layout.c (place_field): Use least_bit_hwi. - * tree-pretty-print.c (dump_generic_node): Use pow2p_hwi. - * tree-sra.c (build_ref_for_offset): Use least_bit_hwi. - * tree-ssa-ccp.c (ccp_finalize): Use least_bit_hwi. - * tree-ssa-math-opts.c (bswap_replace): Use least_bit_hwi. - * tree-ssa-strlen.c (handle_builtin_memcmp): Use pow2p_hwi. - * tree-vect-data-refs.c (vect_analyze_group_access_1) - (vect_grouped_store_supported, vect_grouped_load_supported) - (vect_permute_load_chain, vect_shift_permute_load_chain) - (vect_transform_grouped_load): Use pow2p_hwi. - * tree-vect-generic.c (expand_vector_divmod): Use ctz_or_zero. - * tree-vect-patterns.c (vect_recog_divmod_pattern): Use ctz_or_zero. - * tree-vect-stmts.c (vectorizable_mask_load_store): Use - least_bit_hwi. - * tsan.c (instrument_expr): Use least_bit_hwi. - * var-tracking.c (negative_power_of_two_p): Use pow2_or_zerop. - - 2016-09-16 Andreas Schwab - - * config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Use parameter - OFFSET, not offset. - * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Likewise. - - 2016-09-16 Jakub Jelinek - - PR target/77526 - * combine.c (rest_of_handle_combine): If any edges have been purged, - free dominators if available. - - 2016-09-16 Jakub Jelinek - Eric Botcazou - - PR middle-end/77594 - * internal-fn.c (expand_arith_overflow) : Don't fall - through into expand_addsub_overflow after expand_neg_overflow. - - 2016-09-15 David Malcolm - - * diagnostic-show-locus.c - (selftest::test_fixit_insert_containing_newline): New function. - (selftest::test_fixit_replace_containing_newline): New function. - (selftest::diagnostic_show_locus_c_tests): Call the above. - - 2016-09-15 Bin Cheng - - PR tree-optimization/77503 - * tree-vect-loop.c (vectorizable_reduction): Record reduction - code for CONST_COND_REDUCTION at analysis stage and use it at - transform stage. - * tree-vectorizer.h (struct _stmt_vec_info): New field. - (STMT_VINFO_VEC_CONST_COND_REDUC_CODE): New macro. - * tree-vect-stmts.c (new_stmt_vec_info): Initialize above new - field. + 2018-06-04 Segher Boessenkool - 2016-09-15 Richard Biener + * config/rs6000/rs6000.md (abs2 for FLOAT128): Handle IFmode. - PR middle-end/77544 - * fold-const.c (split_tree): Do not split constant ~X. + 2018-06-04 Richard Sandiford - 2016-09-15 Jakub Jelinek + * 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. - PR rtl-optimization/77425 - * sched-int.h (sd_iterator_cond): Don't update it_ptr->linkp if list - is NULL. + 2018-06-04 Jakub Jelinek - PR middle-end/77475 - * config/i386/i386.c (ix86_parse_stringop_strategy_string): Simplify, - use %qs instead of %s where desirable, use argument instead of arg in - the diagnostic wording, add list of supported strategies and - spellcheck hint. - (ix86_option_override_internal): Emit target("m...") instead of - option("m...") in the diagnostic. Use %qs instead of %s in invalid - -march/-mtune option diagnostic. Add list of supported arches/tunings - and spellcheck hint. Remove prefix, suffix and sw variables, use - main_args_p ? "..." : "..." in diagnostics to make translation - possible. - - 2016-09-15 Richard Biener - - * dwarf2asm.h (dw2_asm_output_offset): Add overload with - extra offset argument. - * dwarf2asm.c (dw2_asm_output_offset): Implement that. - * doc/tm.texi.in (ASM_OUTPUT_DWARF_OFFSET): Adjust documentation - to reflect new offset parameter. - * doc/tm.texi: Regenerate. - * config/darwin.h (ASM_OUTPUT_DWARF_OFFSET): Adjust. - * config/darwin-protos.h (darwin_asm_output_dwarf_delta): Add - offset argument. - (darwin_asm_output_dwarf_offset): Likewise. - * config/darwin.c (darwin_asm_output_dwarf_delta): Add offset - argument. - (darwin_asm_output_dwarf_offset): Pass offset argument through. - * config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Adjust. - * config/i386/cygmin.h (ASM_OUTPUT_DWARF_OFFSET): Likewise. + PR target/85832 + PR target/86036 + * config/i386/sse.md (_eq3_1): + Use vptestnm rather than vptestm in (=Yc,v,C) variant. - 2016-09-15 Chung-Lin Tang + 2018-06-04 Richard Biener - PR fortran/72743 - * ipa-icf.c (set_alias_uids): New function. - (sem_variable::merge): Use set_alias_uids to set DECL_PT_UID of - all the merged variable's referring aliases. + * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into... + (cleanup_tree_cfg_noloop): ... single caller. Do + start_recording_case_labels later. - 2016-09-15 Richard Biener + 2018-06-04 Sebastian Peryt - PR tree-optimization/77514 - * tree-ssa-pre.c (create_expression_by_pieces): Handle garbage - only forced_stmts sequence. + * 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. - 2016-09-15 Kugan Vivekanandarajah + 2018-06-04 Richard Biener - * tree-ssanames.h (FOR_EACH_SSA_NAME): New. - * cfgexpand.c (update_alias_info_with_stack_vars): Use - FOR_EACH_SSA_NAME to iterate over SSA variables. - (pass_expand::execute): Likewise. - * omp-simd-clone.c (ipa_simd_modify_function_body): Likewise. - * tree-cfg.c (dump_function_to_file): Likewise. - * tree-into-ssa.c (pass_build_ssa::execute): Likewise. - (update_ssa): Likewise. - * tree-ssa-alias.c (dump_alias_info): Likewise. - * tree-ssa-ccp.c (ccp_finalize): Likewise. - * tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise. - (create_outofssa_var_map): Likewise. - (coalesce_ssa_name): Likewise. - * tree-ssa-operands.c (dump_immediate_uses): Likewise. - * tree-ssa-pre.c (compute_avail): Likewise. - * tree-ssa-sccvn.c (init_scc_vn): Likewise. - (scc_vn_restore_ssa_info): Likewise. - (free_scc_vn): Likwise. - (run_scc_vn): Likewise. - * tree-ssa-structalias.c (compute_points_to_sets): Likewise. - * tree-ssa-ter.c (new_temp_expr_table): Likewise. - * tree-ssa-copy.c (fini_copy_prop): Likewise. - * tree-ssa.c (verify_ssa): Likewise. - - 2016-09-14 Matthew Fortune - - * config.gcc (mips*-mti-elf*, mips*-mti-linux*): Set mips32r2 - and mips64r2 as default 32-bit and 64-bit architectures. - (mips*-img-elf*, mips*-img-linux*): Set mips32r6 and mips64r6 - as default 32-bit and 64-bit architectures. - - 2016-09-14 Pat Haugen - - * loop-unroll.c (unroll_loop_runtime_iterations): Set probability - of succ edge. - - 2016-09-14 Segher Boessenkool - - * target.def (lra_p): Change commentary (for the manual) for the - new default. - * doc/tm.texi: Regenerate. + PR tree-optimization/86038 + * tracer.c (find_best_successor): Check probability for + being initialized, bail out if not. - 2016-09-14 Segher Boessenkool - - * config/aarch64/aarch64.c (TARGET_LRA_P): Delete macro. - * config/arm/arm.c (TARGET_LRA_P): Delete macro. - * config/i386/i386.c (TARGET_LRA_P): Delete macro. - * config/nds32/nds32.c (TARGET_LRA_P): Delete macro. - - 2016-09-14 Segher Boessenkool - - * targhooks.c (default_lra_p): Return true instead of false. - - 2016-09-14 Segher Boessenkool - - * config/alpha/alpha.c (TARGET_LRA_P): New macro, defined to - hook_bool_void_false. - * config/avr/avr.c: Ditto. - * config/bfin/bfin.c: Ditto. - * config/c6x/c6x.c: Ditto. - * config/cr16/cr16.c: Ditto. - * config/cris/cris.c: Ditto. - * config/epiphany/epiphany.c: Ditto. - * config/fr30/fr30.c: Ditto. - * config/frv/frv.c: Ditto. - * config/h8300/h8300.c: Ditto. - * config/ia64/ia64.c: Ditto. - * config/iq2000/iq2000.c: Ditto. - * config/lm32/lm32.c: Ditto. - * config/m32c/m32c.c: Ditto. - * config/m32r/m32r.c: Ditto. - * config/m68k/m68k.c: Ditto. - * config/mcore/mcore.c: Ditto. - * config/microblaze/microblaze.c: Ditto. - * config/mmix/mmix.c: Ditto. - * config/mn10300/mn10300.c: Ditto. - * config/moxie/moxie.c: Ditto. - * config/msp430/msp430.c: Ditto. - * config/nios2/nios2.c: Ditto. - * config/nvptx/nvptx.c: Ditto. - * config/pa/pa.c: Ditto. - * config/pdp11/pdp11.c: Ditto. - * config/rl78/rl78.c: Ditto. - * config/sparc/sparc.c: Ditto. - * config/spu/spu.c: Ditto. - * config/stormy16/stormy16.c: Ditto. - * config/tilegx/tilegx.c: Ditto. - * config/tilepro/tilepro.c: Ditto. - * config/v850/v850.c: Ditto. - * config/vax/vax.c: Ditto. - * config/visium/visium.c: Ditto. - * config/xtensa/xtensa.c: Ditto. - - 2016-09-14 Jakub Jelinek - - PR sanitizer/68260 - * tsan.c: Include target.h. - (enum tsan_atomic_action): Add bool_clear and bool_test_and_set. - (BOOL_CLEAR, BOOL_TEST_AND_SET): Define. - (tsan_atomic_table): Add BUILT_IN_ATOMIC_CLEAR and - BUILT_IN_ATOMIC_TEST_AND_SET entries. - (instrument_builtin_call): Handle bool_clear and bool_test_and_set. - - 2016-09-14 Bernd Edlinger - Martin Liska + 2018-06-04 Richard Earnshaw - PR middle-end/77574 - * predict.c (force_edge_cold): Add braces to a condition. + PR target/86003 + * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list + of bits to ignore when comparing architectures. - 2016-09-13 Bernd Edlinger + 2018-06-04 Jakub Jelinek - PR rtl-optimization/77289 - * lra-constraints.c (get_final_hard_regno): Removed. - (get_hard_regno): Add new parameter final_p. - (get_reg_class): Directly call lra_get_elimination_hard_regno. - (operands_match_p): Adjust call to get_hard_regno. - (uses_hard_regs_p): Likewise. - (process_alt_operands): Likewise. + 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, -]. - 2016-09-13 Joe Seymour + PR c++/86025 + * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. + + 2018-06-03 Eric Botcazou - PR target/70713 - * config/msp430/msp430.c (msp430_start_function): Emit an error - if a function is both weak and specifies an interrupt number. + 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). - 2016-09-13 Jakub Jelinek + 2018-06-03 Chung-Ju Wu - PR tree-optimization/77454 - * tree-ssa-dom.c (optimize_stmt): Set modified flag on stmt after - changing GIMPLE_COND. Move update_stmt_if_modified call after this. - Formatting fix. + * common/config/nds32/nds32-common.c (nds32_option_optimization_table): + Disable -fdelete-null-pointer-checks for ELF toolchain. - 2016-09-13 Tamar Christina + 2018-06-02 Chung-Ju Wu + Kito Cheng - * config/aarch64/aarch64-builtins.c - (aarch64_init_simd_builtins): Fix builtin type signature printing. - - 2016-09-13 Uros Bizjak - - * config/alpha/alpha.c (alpha_pass_by_reference): Pass un-named - SFmode and SCmode arguments by reference. - - 2016-09-13 David Malcolm - - * diagnostic-show-locus.c (selftest::test_one_liner_fixit_insert): - Rename to... - (selftest::test_one_liner_fixit_insert_before): ...this, and update - for renaming of add_fixit_insert to add_fixit_insert_before. - (selftest::test_one_liner_fixit_insert_after): New function. - (selftest::test_one_liner_fixit_validation_adhoc_locations): - Update for renaming of add_fixit_insert to add_fixit_insert_before. - (selftest::test_one_liner_many_fixits): Likewise. - (selftest::test_diagnostic_show_locus_one_liner): Update for - renaming, call new test function. - (selftest::test_diagnostic_show_locus_fixit_lines): Update for - renaming of add_fixit_insert to add_fixit_insert_before. - (selftest::test_fixit_consolidation): Likewise. - * diagnostic.c (selftest::test_print_parseable_fixits_insert): - Likewise. - * edit-context.c (selftest::test_applying_fixits_insert): Rename to... - (selftest::test_applying_fixits_insert_before): ...this. - (selftest::test_applying_fixits_insert): Update for renaming of - add_fixit_insert to add_fixit_insert_before. - (selftest::test_applying_fixits_insert_after): New function. - (selftest::test_applying_fixits_insert_after_at_line_end): New - function. - (selftest::test_applying_fixits_insert_after_failure): New function. - (selftest::test_applying_fixits_multiple): Update for renaming of - add_fixit_insert to add_fixit_insert_before. - (selftest::change_line): Likewise. - (selftest::test_applying_fixits_unreadable_file): Likewise. - (selftest::test_applying_fixits_line_out_of_range): Likewise. - (selftest::test_applying_fixits_column_validation): Likewise. - (selftest::test_applying_fixits_column_validation): Likewise. - (selftest::edit_context_c_tests): Update for renamed test function; - call new test functions. - - 2016-09-13 Pat Haugen - - PR tree-optimization/77536 - PR rtl-optimization/68212 - * config/rs6000/rs6000.md (div->recip splitter): Remove - optimize_insn_for_speed_p condition. - - 2016-09-13 Maciej W. Rozycki - - * optabs.c (prepare_cmp_insn): Update documentation comment. - - 2016-09-13 Jakub Jelinek - Manuel Lopez-Ibanez - - PR middle-end/77475 - * opts.h (candidates_list_and_hint): Declare. - * opts-common.c (candidates_list_and_hint): New function. - (cmdline_handle_error): Use it. - - 2016-09-12 David Malcolm - - * edit-context.c (edited_line::get_len): New accessor. - (edited_file::print_diff): Split out hunk-printing into... - (edited_file::print_diff_hunk): New method. - (edited_file::print_diff_line): New method. - - 2016-09-12 Andrew Pinski - - * config/aarch64/aarch64-tuning-flags.def (SLOW_UNALIGNED_LDPW): - New tuning option. - * config/aarch64/aarch64.c (thunderx_tunings): Enable - AARCH64_EXTRA_TUNE_SLOW_UNALIGNED_LDPW. - (aarch64_operands_ok_for_ldpstp): Return false if - AARCH64_EXTRA_TUNE_SLOW_UNALIGNED_LDPW and the mode - was SImode and the alignment is less than 8 byte. - (aarch64_operands_adjust_ok_for_ldpstp): Likewise. - - 2016-09-12 Orlando Arias - - PR target/77570 - * config/msp430/msp430.md (delay_cycles_32x): Fix pushm/popm. - - 2016-09-12 Marek Polacek - - * doc/extend.texi: Use lowercase "boolean". - * doc/invoke.texi: Likewise. - * doc/md.texi: Likewise. - * target.def: Likewise. - * doc/tm.texi: Regenerated. - - 2016-09-12 Kyrylo Tkachov - - PR middle-end/77426 - * expmed.c (synth_mult): Delete duplicate mode check. - - 2016-09-10 Tom de Vries - - PR C/71602 - * builtins.c (std_canonical_va_list_type): Strictly return non-null for - va_list type only. - * config/i386/i386.c (ix86_canonical_va_list_type): Same. - * gimplify.c (gimplify_va_arg_expr): Handle &va_list. - - 2016-09-09 Peter Bergner - - PR rtl-optimization/77289 - * lra-constraints.c (get_final_hard_regno): Add support for non hard - register numbers. Remove support for subregs. - (get_hard_regno): Use SUBREG_P. Don't call get_final_hard_regno(). - (get_reg_class): Delete removed get_final_hard_regno() argument. - (uses_hard_regs_p): Call get_final_hard_regno(). - - 2016-09-09 Martin Sebor - - PR c/77520 - PR c/77521 - * pretty-print.c (pp_quoted_string): New function. - (pp_format): Call it for %c and %s directives. - - 2016-09-10 Bernd Edlinger - - * doc/tm.texi.in (INITIAL_FRAME_POINTER_OFFSET): Remove. - (ELIMINABLE_REGS, TARGET_CAN_ELIMINATE, - INITIAL_ELIMINATION_OFFSET) : Update documentation. - * target.def (frame_pointer_required, can_eliminate): Likewise. - * doc/tm.texi: Regenerated. - * builtins.c (expand_builtin_setjmp_receiver): Remove #ifdef - ELIMINABLE_REGS. - * df-scan.c (df_hard_reg_init): Likewise. - * ira.c (ira_setup_eliminable_regset): Likewise. - * lra-eliminations.c (reg_eliminate_1, (update_reg_eliminate, - init_elim_table): Likewise. - * reload1.c (reg_eliminate_1, verify_initial_elim_offsets, - set_initial_elim_offsets, update_eliminables, - init_elim_table): Likewise. - * rtlanal.c (get_initial_register_offset): Likewise. - * config/ft32/ft32.h (INITIAL_FRAME_POINTER_OFFSET): Remove. - * config/m32r/m32r.h (INITIAL_FRAME_POINTER_OFFSET): Likewise. - * config/moxie/moxie.h (INITIAL_FRAME_POINTER_OFFSET): Likewise. - * config/vax/vax.h (INITIAL_FRAME_POINTER_OFFSET): Likewise. - * config/fr30/fr30.h: Fix comment. - * config/frv/frv.c: Likewise. - * config/frv/frv.h: Likewise. - * config/ft32/ft32.h: Likewise. - * config/visium/visium.h: Likewise. - * config/pa/pa64-linux.h: Likewise. - * config/v850/v850.h: Likewise. - * config/cris/cris.c: Likewise. - * config/ia64/ia64.h: Likewise. - * config/moxie/moxie.h: Likewise. - * config/m32r/m32r.h: Likewise. - - 2016-09-10 Alexander Ivchenko - - PR target/77267 - * config.in: Regenerate. - * config/i386/linux-common.h (MPX_LD_AS_NEEDED_GUARD_PUSH): - New macro. - (MPX_LD_AS_NEEDED_GUARD_PUSH): Ditto. - (LIBMPXWRAPPERS_SPEC): Remove "--no-whole-archive" from - static-libmpxwrappers case. - (LIBMPX_SPEC): Add guards with MPX_LD_AS_NEEDED_GUARD_PUSH and - MPX_LD_AS_NEEDED_GUARD_POP. - * configure: Regenerate. - * configure.ac (HAVE_LD_PUSHPOPSTATE_SUPPORT): New variable. - defined if linker support "--push-state"/"--pop-state". - - 2016-09-09 Bernd Edlinger - - * doc/cpp.texi (__*_WIDTH__): Small wording fixes. - - 2016-09-09 Joseph Myers - - * doc/cpp.texi (__SCHAR_WIDTH__, __SHRT_WIDTH__, __INT_WIDTH__) - (__LONG_WIDTH__, __LONG_LONG_WIDTH__, __PTRDIFF_WIDTH__) - (__SIG_ATOMIC_WIDTH__, __SIZE_WIDTH__, __WCHAR_WIDTH__) - (__WINT_WIDTH__, __INT_LEAST8_WIDTH__, __INT_LEAST16_WIDTH__) - (__INT_LEAST32_WIDTH__, __INT_LEAST64_WIDTH__) - (__INT_FAST8_WIDTH__, __INT_FAST16_WIDTH__, __INT_FAST32_WIDTH__) - (__INT_FAST64_WIDTH__, __INTPTR_WIDTH__, __INTMAX_WIDTH__): - Document. - * ginclude/stdint-gcc.h [__STDC_WANT_IEC_60559_BFP_EXT__]: Define - width macros from TS 18661-1. - * glimits.h [__STDC_WANT_IEC_60559_BFP_EXT__]: Likewise. - - 2016-09-08 Jakub Jelinek - - PR fortran/77516 - * omp-low.c (lower_rec_simd_input_clauses): Use max_vf for non-positive - OMP_CLAUSE_SAFELEN_EXPR. - - 2016-09-07 David Malcolm - - * Makefile.in (OBJS): Add substring-locations.o. - * langhooks-def.h (class substring_loc): New forward decl. - (lhd_get_substring_location): New decl. - (LANG_HOOKS_GET_SUBSTRING_LOCATION): New macro. - (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_GET_SUBSTRING_LOCATION. - * langhooks.c (lhd_get_substring_location): New function. - * langhooks.h (class substring_loc): New forward decl. - (struct lang_hooks): Add field get_substring_location. - * substring-locations.c: New file, taking definition of - format_warning_va and format_warning_at_substring from - c-family/c-format.c, making them non-static. - * substring-locations.h (class substring_loc): Move class here - from c-family/c-common.h. Add and rewrite comments. - (format_warning_va): New decl. - (format_warning_at_substring): New decl. - (get_source_location_for_substring): Add comment. - - 2016-09-07 Eric Gallager - - * config/i386/i386.c: Add 'U' suffix to processor feature bits - to avoid -Wnarrowing warning. - * config/i386/x86-tune.def: Likewise for DEF_TUNE selector bitmasks. - * opts.c: Likewise for SANITIZER_OPT bitmasks. - - 2016-09-07 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_legitimize_address): - Avoid use of base_offset if offset already in range. - - 2016-09-07 Kaz Kojima - - * config/sh/sh-protos.h (struct sh_atomic_model, - selected_atomic_model, TARGET_ATOMIC_ANY, TARGET_ATOMIC_STRICT, - TARGET_ATOMIC_SOFT_GUSA, TARGET_ATOMIC_HARD_LLCS, - TARGET_ATOMIC_SOFT_TCB, TARGET_ATOMIC_SOFT_IMASK): Move to... - * config/sh/sh.h (struct sh_atomic_model, - selected_atomic_model, TARGET_ATOMIC_ANY, TARGET_ATOMIC_STRICT, - TARGET_ATOMIC_SOFT_GUSA, TARGET_ATOMIC_HARD_LLCS, - TARGET_ATOMIC_SOFT_TCB, TARGET_ATOMIC_SOFT_IMASK): ...here. - Guard with __cplusplus. - - 2016-09-06 Jakub Jelinek - - PR target/69255 - * config/i386/i386.c (ix86_expand_builtin): For builtin with - unsupported or unknown ISA, use expand_call. - - 2016-09-06 Martin Liska - - PR gcov-profile/77378 - PR gcov-profile/77466 - * tree-profile.c (tree_profiling): Detect whether target can use - -fprofile-update=atomic. - - 2016-09-06 Richard Biener - - PR tree-optimization/77479 - * tree-vrp.c (update_value_range): Extend overflow handling to - VARYING. - - 2016-09-05 Jakub Jelinek - - PR target/77476 - * config/i386/i386.md (isa): Add x64_avx512bw. - (*zero_extendsidi2): For alternative 11 use x64_avx512bw isa. - (kmov_isa): New mode attr. - (zero_extenddi2): Use isa for the last alternative. - (*zero_extendsi2): Likewise. - (*zero_extendqihi2): Use avx512dq isa for the last alternative. - - 2016-09-05 Gerald Pfeifer - - * doc/invoke.texi (SPU Options): nops -> NOPs. - (x86 Options): Ditto. - - 2016-09-05 Jakub Jelinek - - PR middle-end/77475 - * toplev.c (process_options): Temporarily set input_location - to UNKNOWN_LOCATION around targetm.target_option.override () call. - - 2016-09-05 Uros Bizjak - - PR rtl-optimization/77452 - * explow.c (plus_constant) : Extract scalar constant from - inner-mode reference to a CONST_VECTOR constant in the constant pool. - - 2016-09-05 Marek Polacek - - PR c/77423 - * doc/invoke.texi: Update -Wlogical-not-parentheses documentation. - - 2016-09-05 Jakub Jelinek - - PR other/77421 - * gensupport.c (alter_output_for_subst_insn): Remove redundant - *insn_out == '*' test. Don't copy unnecessary to yet another - memory buffer, and don't leak it. - - PR rtl-optimization/77425 - * ipa-devirt.c (get_odr_type): Set val->id unconditionally. - - 2016-09-03 Kirill Yukhin - - * ubsan.c (ubsan_use_new_style_p): Fix check for empty string. - - 2016-09-02 David Malcolm - - * common.opt (fdiagnostics-generate-patch): New option. - * diagnostic.c: Include "edit-context.h". - (diagnostic_initialize): Initialize context->edit_context_ptr. - (diagnostic_finish): Delete context->edit_context_ptr. - (diagnostic_report_diagnostic): Add fix-it hints from the - diagnostic to context->edit_context_ptr, if any. - * diagnostic.h (class edit_context): Add forward decl. - (struct diagnostic_context): Add field "edit_context_ptr". - * doc/invoke.texi (Diagnostic Message Formatting Options): Add - -fdiagnostics-generate-patch. - (-fdiagnostics-generate-patch): New item. - * toplev.c: Include "edit-context.h". - (process_options): Set global_dc->edit_context_ptr to a new - edit_context if the options need one. - (toplev::main): Handle -fdiagnostics-generate-patch by using - global_dc->edit_context_ptr. - - 2016-09-02 Jakub Jelinek - - PR c/65467 - * gimplify.c (gimplify_adjust_omp_clauses_1): Diagnose implicit - map and firstprivate clauses on target construct for _Atomic - qualified decls. - (gimplify_adjust_omp_clauses): Diagnose explicit firstprivate clauses - on target construct for _Atomic qualified decls. - * omp-low.c (use_pointer_for_field): Return true for _Atomic qualified - decls. - * omp-simd-clone.c (simd_clone_clauses_extract): Warn and give up for - _Atomic qualified arguments not mentioned in uniform clause. - - 2016-09-02 David Malcolm - - * Makefile.in (OBJS-libcommon): Add edit-context.o. - * diagnostic-color.c (color_dict): Add "diff-filename", - "diff-hunk", "diff-delete", and "diff-insert". - (parse_gcc_colors): Update default value of GCC_COLORS in comment - to reflect above changes. - * doc/invoke.texi (-fdiagnostics-color): Update description of - default GCC_COLORS, and of the supported capabilities. - * edit-context.c: New file. - * edit-context.h: New file. - * input.c (struct fcache): Add field "missing_trailing_newline". - (diagnostics_file_cache_forcibly_evict_file): Initialize it to - true. - (add_file_to_cache_tab): Likewise. - (fcache::fcache): Likewise. - (get_next_line): Update c->missing_trailing_newline. - (location_missing_trailing_newline): New function. - * input.h (location_missing_trailing_newline): New decl. - * selftest-run-tests.c (selftest::run_tests): Call - edit_context_c_tests. - * selftest.h (edit_context_c_tests): New decl. - - 2016-09-02 Jakub Jelinek - Richard Biener - - PR tree-optimization/77444 - * tree-ssa-loop-ivopts.c (cand_value_at): For pointers use sizetype - as steptype, remove redundant initialization. - - 2016-09-02 Jakub Jelinek - - PR sanitizer/77396 - * sanopt.c: Include gimple-ssa.h, tree-phinodes.h and ssa-iterators.h. - (sanopt_optimize_walker): Optimize away - __asan_before_dynamic_init (...) followed by - __asan_after_dynamic_init () without intervening memory loads/stores. - * ipa-pure-const.c (special_builtin_state): Handle - BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT and - BUILT_IN_ASAN_AFTER_DYNAMIC_INIT. - - 2016-09-02 Prathamesh Kulkarni - - * cfg.c (free_original_copy_tables): Replace second assignment of - bb_copy = NULL by bb_original = NULL. - - 2016-09-02 Jakub Jelinek - - PR other/77421 - * config/i386/i386.c (ix86_expanded_args_builtin): Remove redundant - assignment added in r216794. - - 2016-09-02 David Malcolm - - * Makefile.in (OBJS): Add typed-splay-tree.o. - * selftest-run-tests.c (selftest::run_tests): Call - typed_splay_tree_c_tests. - * selftest.h (typed_splay_tree_c_tests): New decl. - * typed-splay-tree.c: New file. - * typed-splay-tree.h (typed_splay_tree::foreach_fn): New typedef. - (typed_splay_tree::max): New method. - (typed_splay_tree::min): New method. - (typed_splay_tree::foreach): New method. - (typed_splay_tree::closure): New struct. - (typed_splay_tree::inner_foreach_fn): New function. - - 2016-09-02 Prathamesh Kulkarni - - * ipa-cp.c (ipcp_store_bits_results): Change option name from - -fipa-cp-bit to -fipa-bit-cp. - - 2016-09-01 Martin Sebor - - PR tree-optimization/71831 - * tree-object-size.h: Return bool instead of the size and add - argument for the size. - * tree-object-size.c (compute_object_offset): Update signature. - (addr_object_size): Same. - (compute_builtin_object_size): Return bool instead of the size - and add argument for the size. Handle POINTER_PLUS_EXPR when - optimization is disabled. - (expr_object_size): Adjust. - (plus_stmt_object_size): Adjust. - (pass_object_sizes::execute): Adjust. - * builtins.c (fold_builtin_object_size): Adjust. - * doc/extend.texi (Object Size Checking): Update. - * ubsan.c (instrument_object_size): Adjust. - - 2016-09-01 Martin Sebor - - * genmatch.c (parser::parse_expr): Increase buffer size to guarantee - it fits the output of the formatted function regardless of its - arguments. - * gcc/genmodes.c (parser::parse_expr): Same. - * gimplify.c (gimplify_asm_expr): Same. - * passes.c (pass_manager::register_one_dump_file): Same. - * print-tree.c (print_node): Same. - - 2016-09-01 Segher Boessenkool - - * config/rs6000/altivec.md: Use VSCR_REGNO instead of 110 throughout. - - 2016-09-01 Segher Boessenkool - - * config/rs6000/altivec.md: Use VRSAVE_REGNO instead of 109 throughout. - - 2016-09-01 Segher Boessenkool - - * config/rs6000/altivec.md: Use CR6_REGNO instead of 74 throughout. - * config/rs6000/vector.md: Ditto. - * config/rs6000/vsx.md: Ditto. - - 2016-09-01 Eric Botcazou - - * ipa-inline-analysis.c (param_change_prob): Get to the base object - first in all cases. - - 2016-09-01 Segher Boessenkool - - * config/rs6000/rs6000.md (*restore_gpregs__r11, - *restore_gpregs__r12, *restore_gpregs__r1, - *return_and_restore_gpregs__r11, - *return_and_restore_gpregs__r12, - *return_and_restore_gpregs__r1, - *return_and_restore_fpregs__r11, - *return_and_restore_fpregs__r12, - *return_and_restore_fpregs__r1): Use the hard register LR_REGNO - directly instead of via the "l" constraint. Renumber operands. - Fix whitespace. - - 2016-09-01 Segher Boessenkool - - * config/rs6000/altivec.md (*save_world, *save_vregs__r11, - save_vregs__r12, *restore_vregs__r11, - *restore_vregs__r12): Use LR_REGNO instead of 65. - * config/rs6000/darwin.md (load_macho_picbase, load_macho_picbase_si, - load_macho_picbase_di, *call_indirect_nonlocal_darwin64, - *call_nonlocal_darwin64, *call_value_indirect_nonlocal_darwin64, - *call_value_nonlocal_darwin64, reload_macho_picbase, - reload_macho_picbase_si, reload_macho_picbase_di): Ditto. - * config/rs6000/rs6000.h (RETURN_ADDR_IN_PREVIOUS_FRAME): Ditto. - * config/rs6000/rs6000.md (*save_gpregs__r11, - *save_gpregs__r12, *save_gpregs__r1, - *save_fpregs__r11, *save_fpregs__r12, - *save_fpregs__r1): Ditto. - * config/rs6000/spe.md (*save_gpregs_spe, *restore_gpregs_spe, - *return_and_restore_gpregs_spe): Ditto. - - 2016-09-01 Segher Boessenkool - - * config/rs6000/rs6000.md - (define_insn "*return_and_restore_fpregs_aix__r11"): Delete - the use of the link register. - (define_insn "*return_and_restore_fpregs_aix__r1"): Ditto. - - 2016-09-01 Bill Schmidt - Michael Meissner - - PR target/72827 - * config/rs6000/rs6000.c (rs6000_legitimize_address): Avoid - reg+reg addressing for TImode. - (rs6000_legitimate_address_p): Only allow register indirect - addressing for TImode, even without TARGET_QUAD_MEMORY. - - 2016-09-01 Richard Biener - - PR middle-end/77436 - * tree-chrec.c (tree_fold_binomial): Use widest_int, properly - check whether the result fits the desired result type. - - 2016-09-01 Nathan Sidwell - - * config/nvptx/nvptx.md (cbranch4): Op 2 can be const. - - 2016-09-01 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement): - New function. - (TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT): Define. - - 2016-09-01 Kyrylo Tkachov - - * config/aarch64/aarch64.md (*ands_compare0): New pattern. - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_NZmode - for comparisons of integer ZERO_EXTEND against zero. - - 2016-09-01 Eric Botcazou - - * config/i386/i386.c (ix86_option_override_internal): Also disable the - STV pass if -mstackrealign is enabled. - - 2016-08-31 Ilya Verbin - - * config/i386/driver-i386.c (host_detect_local_cpu): Fix detection of - AVX512IFMA. - - 2016-08-31 David Malcolm - - * diagnostic-show-locus.c (class layout): Add field m_fixit_hints. - (layout_range::intersects_line_p): New method. - (test_range_contains_point_for_single_point): Rename to... - (test_layout_range_for_single_point): ...this, and add testing - for layout_range::intersects_line_p. - (test_range_contains_point_for_single_line): Rename to... - (test_layout_range_for_single_line): ...this, and add testing - for layout_range::intersects_line_p. - (test_range_contains_point_for_multiple_lines): Rename to... - (test_layout_range_for_multiple_lines): ...this, and add testing - for layout_range::intersects_line_p. - (layout::layout): Populate m_fixit_hints. - (layout::get_expanded_location): Handle the case of a line-span - for a fix-it hint. - (layout::validate_fixit_hint_p): New method. - (get_line_span_for_fixit_hint): New function. - (layout::calculate_line_spans): Add spans for fixit-hints. - (layout::should_print_annotation_line_p): New method. - (layout::print_any_fixits): Drop param "richloc", instead using - validated fixits in m_fixit_hints. Add "const" to hint pointers. - (diagnostic_show_locus): Avoid printing blank annotation lines. - (selftest::test_diagnostic_context::test_diagnostic_context): - Initialize show_column and start_span. - (selftest::test_diagnostic_context::start_span_cb): New static - function. - (selftest::test_diagnostic_show_locus_fixit_lines): New function. - (selftest::diagnostic_show_locus_c_tests): Update for function - renamings. Call test_diagnostic_show_locus_fixit_lines. - - 2016-08-31 Marc Glisse - - PR tree-optimization/73714 - * match.pd (a * (1 << b)): Revert change from 2016-05-23. - - 2016-08-31 David Malcolm - - * selftest.c: Move "namespace selftest {" to top of file, - removing explicit "selftest::" qualifiers throughout. - - 2016-08-31 Marc Glisse - - * config/i386/avx512fintrin.h (__m512_u, __m512i_u, __m512d_u): - New types. - (_mm512_loadu_pd, _mm512_storeu_pd, _mm512_loadu_ps, - _mm512_storeu_ps, _mm512_loadu_si512, _mm512_storeu_si512): - Replace builtin with vector extension. - * config/i386/avxintrin.h (__m256_u, __m256i_u, __m256d_u): - New types. - (_mm256_loadu_pd, _mm256_storeu_pd, _mm256_loadu_ps, - _mm256_storeu_ps, _mm256_loadu_si256, _mm256_storeu_si256): - Replace builtin with vector extension. - * config/i386/emmintrin.h (__m128i_u, __m128d_u): New types. - (_mm_loadu_pd, _mm_storeu_pd, _mm_loadu_si128, _mm_storeu_si128): - Replace builtin with vector extension. - * config/i386/xmmintrin.h (__m128_u): New type. - (_mm_loadu_ps, _mm_storeu_ps): Replace builtin with vector extension. - (_mm_load_ps, _mm_store_ps): Simplify. - - 2016-08-31 Eric Botcazou - - * config/arm/arm.c (thumb1_size_rtx_costs) : Add missing guard. - - 2016-08-30 David Malcolm - - * diagnostic-show-locus.c (colorizer::begin_state): Support more - than 3 ranges per diagnostic by alternating between color 1 and - color 2. - (layout::layout): Replace use of rich_location::MAX_RANGES - with richloc->get_num_locations (). - (layout::calculate_line_spans): Replace use of - rich_location::MAX_RANGES with m_layout_ranges.length (). - (layout::print_annotation_line): Handle arbitrary numbers of - ranges in caret-printing by defaulting to '^'. - (selftest::test_one_liner_many_fixits): New function. - (test_diagnostic_show_locus_one_liner): Call it. - * diagnostic.c (diagnostic_initialize): Update for renaming - of rich_location::MAX_RANGES to - rich_location::STATICALLY_ALLOCATED_RANGES. - * diagnostic.h (struct diagnostic_context): Likewise. - - 2016-08-30 David Malcolm - - * selftest.c (selftest::named_temp_file::named_temp_file): New - ctor. - (selftest::temp_source_file::~temp_source_file): Move to... - (selftest::named_temp_file::~named_temp_file): ...here. - (selftest::test_named_temp_file): New function. - (selftest::selftest_c_tests): Call test_named_temp_file. - * selftest.h (class named_temp_file): New class. - (class temp_source_file): Convert to a subclass of named_temp_file. - - 2016-08-30 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_emit_epilogue): Do not emit - USEs of LR_REGNO in returns and sibcalls. - (rs6000_output_mi_thunk): Similar. - (rs6000_sibcall_aix): Similar. - * config/rs6000/rs6000.md (sibcall, sibcall_value, sibcall_local32, - sibcall_local64, sibcall_value_local32, sibcall_value_local64, - sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): - Remove the USE of LR_REGNO from the patterns as well. Delete an - obsolete comment. - (return_internal_): Delete. - - 2016-08-30 Tamar Christina - - * gcc/config/aarch64/aarch64-simd.md - (aarch64_ld2_dreg_le): New. - (aarch64_ld2_dreg_be): New. - (aarch64_ld2_dreg): Removed. - (aarch64_ld3_dreg_le): New. - (aarch64_ld3_dreg_be): New. - (aarch64_ld3_dreg): Removed. - (aarch64_ld4_dreg_le): New. - (aarch64_ld4_dreg_be): New. - (aarch64_ld4_dreg): Removed. - (aarch64_ld): Wrapper around _le, _be. - - 2016-08-30 David Malcolm - - * diagnostic-show-locus.c (test_one_liner_fixit_insert): Remove - redundant location param. - (test_one_liner_fixit_remove): Likewise. - (test_one_liner_fixit_replace): Likewise. - (test_one_liner_fixit_replace_equal_secondary_range): Likewise. - * gcc-rich-location.c - (gcc_rich_location::add_fixit_misspelled_id): Eliminate call to - get_range_from_loc. Drop overload taking a const char *. - * gcc-rich-location.h - (gcc_rich_location::add_fixit_misspelled_id): Drop overload taking - a const char *. - - 2016-08-30 Szabolcs Nagy - - * config/linux.c (linux_libc_has_function): Return true on musl. - - 2016-08-30 Szabolcs Nagy - - * config.gcc (*-*-*musl*): Disable gnu-indirect-function. - - 2016-08-30 Eric Botcazou - - * postreload-gcse.c (bb_has_well_behaved_predecessors): Tweak criterion - used for abnormal egdes. - - 2016-08-30 Jakub Jelinek - - PR tree-optimization/72866 - * tree-vect-patterns.c (search_type_for_mask): Turn into - a small wrapper, move all code to ... - (search_type_for_mask_1): ... this new function. Add caching - and adjust recursive calls. - - PR debug/77363 - * dwarf2out.c (modified_type_die): Use lookup_type_die (type) - instead of lookup_type_die (type_main_variant (type)) even for array - types. - - PR middle-end/77377 - * simplify-rtx.c (avoid_constant_pool_reference): For out of bounds - constant pool reference return x instead of c. - - 2016-08-29 Segher Boessenkool - - * config/rs6000/rs6000.h (CALL_REALLY_USED_REGISTERS): Do not - include MQ. - - 2016-08-29 David Malcolm - - * input.c - (selftest::test_make_location_nonpure_range_endpoints): Fix - header comment. - - 2016-08-29 David Malcolm - - * diagnostic-show-locus.c - (selftest::test_one_liner_fixit_validation_adhoc_locations): New - function. - (selftest::test_diagnostic_show_locus_one_liner): Call it. - * input.c (get_pure_location): Move to libcpp/line-map.c. - * input.h (get_pure_location): Convert decl to an inline function - calling implementation in libcpp. - - 2016-08-29 Uros Bizjak - - PR target/77403 - * config/i386/sse.md (vec_set_lo_): Fix assembler - template for intel asm dialect. - (vec_set_hi_): Ditto. - - 2016-08-29 David Malcolm - - * selftest.h (selftest::fail): Add ATTRIBUTE_NORETURN. - (selftest::fail_formatted): Likewise. - - 2016-08-29 David Malcolm - - * input.c (make_location): Call get_start and get_finish - on the endpoints to avoid storing packed ranges or ad-hoc - ranges in them. - (selftest::test_make_location_nonpure_range_endpoints): New function. - (selftest::input_c_tests): Call it. - * input.h (get_start): New inline function. - - 2016-08-29 Tom de Vries - - PR c/77398 - * gimplify.c (gimplify_va_arg_expr): Replace first argument type error - with assert. - - 2016-08-29 Eric Botcazou - - * Makefile.in (gcov-iov.h): Add dummy recipe. - - 2016-08-29 Nathan Sidwell - - * config/nvptx/nvptx.c: #include tree-vrp.h. - - 2016-08-28 Eric Botcazou - - PR target/77324 - * config/sparc/sparc.c (sparc_legitimate_address_p): Accept special - HIGH+LO construct during reload. - - 2016-08-28 Tom de Vries - - PR lto/70955 - * config/i386/i386.c (ix86_build_builtin_va_list_64): Tag type with - 'sysv_abi va_list' attribute. - (ix86_build_builtin_va_list): Tag type with 'ms_abi va_list' attribute. - (ix86_canonical_va_list_type): Handle 'sysv_abi/ms_abi va_list' - attributes. - - 2016-08-27 Trevor Saunders - - * emit-rtl.h (struct rtl_data): Make stack_slot_list a vector. - * emit-rtl.c (unshare_all_rtl_1): Adjust. - (unshare_all_rtl_again): Likewise. - * function.c (assign_stack_local_1): Likewise. - (assign_stack_temp_for_type): Likewise. - - 2016-08-27 Trevor Saunders - - * cfgbuild.c (make_edges): Adjust. - * cfgrtl.c (can_delete_label_p): Likewise. - * dwarf2cfi.c (create_trace_edges): Likewise. - * except.c (sjlj_emit_dispatch_table): Likewise. - * function.h (struct expr_status): make x_forced_labels a vector. - * jump.c (rebuild_jump_labels_1): Adjust. - * reload1.c (set_initial_label_offsets): Likewise. - * stmt.c (force_label_rtx): Likewise. - (expand_label): Likewise. - - 2016-08-27 Trevor Saunders - - * haifa-sched.c (fix_recovery_deps): Make ready_list a vector. - - 2016-08-27 Patrick Palka - - PR tree-optimization/71077 - PR tree-optimization/68542 - * fold-const.c (fold_relational_const): Fix folding of - VECTOR_CST comparisons that have a scalar boolean result type. - (selftest::test_vector_folding): New static function. - (selftest::fold_const_c_tests): Call it. - - 2016-08-27 Gerald Pfeifer - - * doc/extend.texi (SPU Built-in Functions): Remove stale - references to material formerly at IBM and Sony. - - 2016-08-26 David Edelsohn - - PR target/77349 - * config/rs6000/xcoff.h (DWARF_OFFSET_SIZE): Define as PTR_SIZE. - - 2016-08-26 David Malcolm - - * diagnostic-show-locus.c - (selftest::test_fixit_consolidation): New function. - (selftest::diagnostic_show_locus_c_tests): Call it. - * gcc-rich-location.h (gcc_rich_location): Eliminate unused - constructor based on source_range. - - 2016-08-26 David Malcolm - - * diagnostic-color.c (color_dict): Add "fixit-insert" and - "fixit-delete". - (parse_gcc_colors): Update description of default GCC_COLORS. - * diagnostic-show-locus.c (colorizer::set_fixit_hint): Delete. - (colorizer::set_fixit_insert): New method. - (colorizer::set_fixit_delete): New method. - (colorizer::get_color_by_name): New method. - (colorizer::STATE_FIXIT_INSERT): New constant. - (colorizer::STATE_FIXIT_DELETE): New constant. - (class colorizer): Drop "_cs" suffix from fields. Delete "_ce" - fields in favor of new field "m_stop_color". Add fields - "m_fixit_insert" and "m_fixit_delete". - (colorizer::colorizer): Update for above changes. Replace - colorize_start calls with calls to get_color_by_name. - (colorizer::begin_state): Handle STATE_FIXIT_INSERT and - STATE_FIXIT_DELETE. Update for field renamings. - (colorizer::finish_state): Simplify by using m_stop_color, - rather than multiple identical "*_ce" fields. - (colorizer::get_color_by_name): New method. - (layout::print_any_fixits): Print insertions and replacements - using the "fixit-insert" color, and deletions using the - "fixit-delete" color. - * doc/invoke.texi (-fdiagnostics-color): Update description of - default GCC_COLORS, and of the supported capabilities. - - 2016-08-26 Max Filippov - - * config/xtensa/xtensa.c (xtensa_expand_prologue): Update - current_function_static_stack_size variable with the static - stack frame size of the current function when - flag_stack_usage_info is enabled. - - 2016-08-26 Nathan Sidwell - - * ipa-inline-analysis.c (inline_write_summary): Remove unnecessary - assignment inside if condition. - - 2016-08-26 Richard Biener - - PR tree-optimization/69047 - * tree-ssa.c (maybe_rewrite_mem_ref_base): Handle general bitfield - extracts similar to what FRE does. - (non_rewritable_mem_ref_base): Likewise. - - 2016-08-26 Joseph Myers - - * config/i386/i386.c (ix86_libgcc_floating_mode_supported_p) - (TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Remove. - * config/i386/i386elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. - * config/i386/lynx.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. - * config/i386/netbsd-elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE): - Likewise. - * config/i386/netbsd64.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. - * config/i386/nto.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. - * config/i386/openbsd.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. - * config/i386/rtemself.h (IX86_NO_LIBGCC_TFMODE): Likewise. - * config/i386/vxworks.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. - - 2016-08-26 Kyrylo Tkachov - - PR target/70473 - * config/arm/cortex-a8-neon.md (cortex_a8_vfp_muld): Reduce - reservation duration to 15 cycles. - (cortex_a8_vfp_macs): Likewise. - (cortex_a8_vfp_macd): Likewise. - (cortex_a8_vfp_divs): Likewise. - (cortex_a8_vfp_divd): Likewise. - - 2016-08-26 Kyrylo Tkachov - - * config/arm/arm.c (arm_sets_movw_movt_fusible_p): New function. - (aarch_macro_fusion_pair_p): Use above to avoid early return. - - 2016-08-26 Prathamesh Kulkarni - Martin Jambhor - - * common.opt: New option -fipa-bit-cp. - * doc/invoke.texi: Document -fipa-bit-cp. - * opts.c (default_options_table): Add entry for -fipa-bit-cp. - (enable_fdo_optimizations): Check for flag_ipa_bit_cp. - * tree-ssa-ccp.h: New header file. - * tree-ssa-ccp.c: Include tree-ssa-ccp.h - (bit_value_binop_1): Change to bit_value_binop_1 and export it. - Replace all occurences of tree parameter by two new params: signop, int. - (bit_value_unop_1): Change to bit_value_unop and export it. - Replace all occurences of tree parameter by two new params: signop, - int. - (bit_value_binop): Change call from bit_value_binop_1 to - bit_value_binop. - (bit_value_assume_aligned): Likewise. - (bit_value_unop): Change call from bit_value_unop_1 to bit_value_unop. - (do_ssa_ccp): Pass nonzero_p || flag_ipa_cp_bit instead of nonzero_p - to ccp_finalize. - (ccp_finalize): Skip processing if val->mask == 0. - * ipa-cp.c: Include tree-ssa-ccp.h - (ipcp_bits_lattice): New class. - (ipcp_param_lattice (bits_lattice): New member. - (print_all_lattices): Call ipcp_bits_lattice::print. - (set_all_contains_variable): Call ipcp_bits_lattice::set_to_bottom. - (initialize_node_lattices): Likewise. - (propagate_bits_accross_jump_function): New function. - (propagate_constants_accross_call): Call - propagate_bits_accross_jump_function. - (ipcp_propagate_stage): Store parameter types when in_lto_p is true. - (ipcp_store_bits_results): New function. - (ipcp_driver): Call ipcp_store_bits_results. - * ipa-prop.h (ipa_bits): New struct. - (ipa_jump_func): Add new member bits of type ipa_bits. - (ipa_param_descriptor): Change decl to decl_or_type. - (ipa_get_param): Change decl to decl_or_type and assert on - PARM_DECL. - (ipa_get_type): New function. - (ipcp_transformation_summary): New member bits. - * ipa-prop.c (ipa_get_param_decl_index_1): s/decl/decl_or_type. - (ipa_populate_param_decls): Likewise. - (ipa_dump_param): Likewise. - (ipa_print_node_jump_functions_for_edge): Pretty-print ipa_bits jump - function. - (ipa_set_jf_unknown): Set ipa_bits::known to false. - (ipa_compute_jump_functions_for_edge): Compute jump function for bits - propagation. - (ipa_node_params_t::duplicate): Copy src->bits into dst->bits. - (ipa_write_jump_function): Add streaming for ipa_bits. - (ipa_read_jump_function): Add support for reading streamed ipa_bits. - (write_ipcp_transformation_info): Add streaming for ipa_bits - summary for ltrans. - (read_ipcp_transfomration_info): Add support for reading streamed - ipa_bits. - (ipcp_update_bits): New function. - (ipcp_transform_function): Call ipcp_update_bits. - - 2016-08-25 Szabolcs Nagy - - * config/mips/linux.h (MUSL_DYNAMIC_LINKER32): Update. - (MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERN32): Update. - - 2016-08-25 David Edelsohn - - * multiple_target.c (pass_data_dispatcher_calls): Fix typo. - - 2016-08-25 Richard Biener - - * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes): - Only add locations in late dwarf. - (gen_scheduled_generic_parms_dies): Do not set early dwarf here. - (dwarf2out_early_finish): But do it here. - - 2016-08-24 Michael Collison - Michael Collison - - * config/arm/arm-modes.def: Add new condition code mode CC_V - to represent the overflow bit. - * config/arm/arm.c (maybe_get_arm_condition_code): - Add support for CC_Vmode. - (arm_gen_unlikely_cbranch): New function to generate common - rtl conditional branches for overflow patterns. - * config/arm/arm-protos.h: Add prototype for - arm_gen_unlikely_cbranch. - * config/arm/arm.md (addv4, add3_compareV, - addsi3_compareV_upper): New patterns to support signed - builtin overflow add operations. - (uaddv4, add3_compareC, addsi3_compareV_upper): - New patterns to support unsigned builtin add overflow operations. - (subv4, sub3_compare1): New patterns to support signed - builtin overflow subtract operations, - (usubv4): New patterns to support unsigned builtin subtract - overflow operations. - (negvsi3, negvdi3, negdi2_compare, negsi2_carryin_compare): New patterns - to support builtin overflow negate operations. - - 2016-08-24 Andreas Krebbel - - Revert - 2016-08-23 Dominik Vogt - - * explow.c (get_dynamic_stack_size): Take known alignment of stack - pointer + STACK_DYNAMIC_OFFSET into account when calculating the size - needed. - - 2016-08-24 Thomas Preud'homme - - * doc/fragments.texi (MULTILIB_REUSE): Mention that only options in - MULTILIB_OPTIONS should be used. Small wording fixes. - * genmultilib: Memorize set of all option combinations in - combination_space. Detect if RHS of MULTILIB_REUSE uses an option not - found in MULTILIB_OPTIONS by checking if option set is listed in - combination_space. Output new and existing error message to stderr. - - 2016-08-24 Thomas Preud'homme - - * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping for - -mcpu=cortex-a7, -mfpu=neon-fp16, -mfpu=fpv5-d16 and -mfpu=fp-armv8. - Fix typo in -mfpu=vfpv3-d16-fp16 mapping. - (MULTILIB_REUSE): Remove reuse rules for option set including - -mfpu=fp-armv8 and -mfpu=vfpv4 - - 2016-08-24 Sebastian Huber - - * config/arm/t-rtems: Add vfp multilib. - - 2016-08-23 Ian Lance Taylor - - * config/s390/s390.c (s390_asm_file_start): Call - default_file_start. - - 2016-08-23 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_expand_vector_init): Set - initialization of all 0's to the 0 constant, instead of directly - generating XOR. Add support for V4SImode vector initialization on - 64-bit systems with direct move, and rework the ISA 3.0 V4SImode - initialization. Change variables used in V4SFmode vector - intialization. For V4SFmode vector splat on ISA 3.0, make sure - any memory addresses are in index form. Add support for using - VSPLTH/VSPLTB to initialize vector short and vector char vectors - with all of the same element. - (regno_or_subregno): New helper function to return a register - number for either REG or SUBREG. - (rs6000_adjust_vec_address): Do not generate ADDI ,R0,. - Use regno_or_subregno where possible. - (rs6000_split_v4si_init_di_reg): New helper function to build up a - DImode value from two SImode values in order to generate V4SImode - vector initialization on 64-bit systems with direct move. - (rs6000_split_v4si_init): Split up the insns for a V4SImode vector - initialization. - (rtx_is_swappable_p): V4SImode vector initialization insn is not - swappable. - * config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Add - declaration. - * config/rs6000/vsx.md (VSX_SPLAT_I): New mode iterators and - attributes to initialize V8HImode and V16QImode vectors with the - same element. - (VSX_SPLAT_COUNT): Likewise. - (VSX_SPLAT_SUFFIX): Likewise. - (UNSPEC_VSX_VEC_INIT): New unspec. - (vsx_concat_v2sf): Eliminate using 'preferred' register classes. - Allow SFmode values to come from Altivec registers. - (vsx_init_v4si): New insn/split for V4SImode vector initialization - on 64-bit systems with direct move. - (vsx_splat_, VSX_W iterator): Rework V4SImode and V4SFmode - vector initializations, to allow V4SImode vector initializations - on 64-bit systems with direct move. - (vsx_splat_v4si): Likewise. - (vsx_splat_v4si_di): Likewise. - (vsx_splat_v4sf): Likewise. - (vsx_splat_v4sf_internal): Likewise. - (vsx_xxspltw_, VSX_W iterator): Eliminate using 'preferred' - register classes. - (vsx_xxspltw__direct, VSX_W iterator): Likewise. - (vsx_vsplt_di): New insns to support - initializing V8HImode and V16QImode vectors with the same - element. - * config/rs6000/rs6000.h (TARGET_DIRECT_MOVE_64BIT): Disallow - optimization if -maltivec=be. - - 2016-08-23 Christophe Lyon - - * config/arm/arm.md (arm_movqi_insn): Swap predicable_short_it - attribute for alternatives 3 and 4. - - 2016-08-23 David Malcolm - - * selftest.c (selftest::assert_str_contains): New function. - (selftest::test_assertions): Verify ASSERT_STR_CONTAINS. - * selftest.h (selftest::assert_str_contains): New decl. - (ASSERT_STR_CONTAINS): New macro. - - 2016-08-23 Richard Biener - - PR tree-optimization/77286 - * tree-vect-loop.c (vect_analyze_loop_form_1): Do not modify - the CFG here. - (vect_transform_loop): Split exit edges of loop and scalar - loop if required and at the appropriate time. - - 2016-08-23 Dominik Vogt - - * explow.c (get_dynamic_stack_size): Take known alignment of stack - pointer + STACK_DYNAMIC_OFFSET into account when calculating the size - needed. - Correct a typo in a comment. - - 2016-08-23 Dominik Vogt - - * config/s390/s390.md ("*andc_split"): New splitter for and with - complement. - - 2016-08-23 Richard Biener - - PR tree-optimization/27336 - * tree-vrp.c (infer_value_range): Handle stmts that can throw - by looking for a non-EH edge. - (process_assert_insertions_for): Likewise. - - 2016-08-23 Richard Biener - - PR middle-end/77305 - * statistics.c (statistics_counter_event): Robustify against - NULL current_pass. - - 2016-08-23 Venkataramanan Kumar - - * config/i386/i386.c (processor_alias_table): Enable PTA_PRFCHW - for targets amdfam10 and barcelona. - - 2016-08-22 Uros Bizjak - - * config/i386/i386.md (*zero_extendsidi2): Add (*r,*k) alternative. - (zero_extenddi2): Ditto. - (*zero_extendsi2): Ditto. - (*zero_extendqihi2): Ditto. - - 2016-08-22 Joseph Myers - - PR middle-end/77269 - * builtins.c (fold_builtin_classify): Use builtin_decl_explicit - (BUILT_IN_SIGNBIT) to expand __builtin_isinf_sign. - - 2016-08-22 Patrick Palka - - * print-tree.c (print_node) [VECTOR_CST]: Coalesce the output of - identical consecutive elements. - [SSA_NAME]: Print the name's def stmt on its own line. When printing - the node's def stmt, avoid printing an unwanted trailing newline by - replacing the call to print_gimple_stmt() with its inlined body and - adjusting it to not set pp_needs_newline and to call pp_flush() - instead of pp_newline_and_flush(). - - 2016-08-22 Joseph Myers - - * tree.h (CASE_FLT_FN_FLOATN_NX, float16_type_node) - (float32_type_node, float64_type_node, float32x_type_node) - (float128x_type_node): New macros. - * builtin-types.def (BT_FLOAT16, BT_FLOAT32, BT_FLOAT64) - (BT_FLOAT128, BT_FLOAT32X, BT_FLOAT64X, BT_FLOAT128X) - (BT_FN_FLOAT16, BT_FN_FLOAT32, BT_FN_FLOAT64, BT_FN_FLOAT128) - (BT_FN_FLOAT32X, BT_FN_FLOAT64X, BT_FN_FLOAT128X) - (BT_FN_FLOAT16_FLOAT16, BT_FN_FLOAT32_FLOAT32) - (BT_FN_FLOAT64_FLOAT64, BT_FN_FLOAT128_FLOAT128) - (BT_FN_FLOAT32X_FLOAT32X, BT_FN_FLOAT64X_FLOAT64X) - (BT_FN_FLOAT128X_FLOAT128X, BT_FN_FLOAT16_CONST_STRING) - (BT_FN_FLOAT32_CONST_STRING, BT_FN_FLOAT64_CONST_STRING) - (BT_FN_FLOAT128_CONST_STRING, BT_FN_FLOAT32X_CONST_STRING) - (BT_FN_FLOAT64X_CONST_STRING, BT_FN_FLOAT128X_CONST_STRING) - (BT_FN_FLOAT16_FLOAT16_FLOAT16, BT_FN_FLOAT32_FLOAT32_FLOAT32) - (BT_FN_FLOAT64_FLOAT64_FLOAT64, BT_FN_FLOAT128_FLOAT128_FLOAT128) - (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X) - (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X) - (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X): New type definitions. - * builtins.def (DEF_GCC_FLOATN_NX_BUILTINS): New macro. - (copysign, fabs, huge_val, inf, nan, nans): Use it. - * builtins.c (expand_builtin): Use CASE_FLT_FN_FLOATN_NX for fabs - and copysign. - (fold_builtin_0): Use CASE_FLT_FN_FLOATN_NX for inf and huge_val. - (fold_builtin_1): Use CASE_FLT_FN_FLOATN_NX for fabs. - * doc/extend.texi (Other Builtins): Document these built-in - functions. - * fold-const-call.c (fold_const_call): Use CASE_FLT_FN_FLOATN_NX - for nan and nans. - - 2016-08-22 Gerald Pfeifer - - * doc/install.texi (Binaries): www.opencsw.org now uses https. - - 2016-08-22 Richard Biener - - * tree-ssa-forwprop.c (pass_forwprop::execute): Use RPO order. - - 2016-08-21 Uros Bizjak - - PR target/77270 - * config/i386/i386.md (prefetch): When TARGET_PRFCHW or - TARGET_PREFETCHWT1 are disabled, emit 3dNOW! write prefetches for - non-SSE2 athlons only, otherwise prefer SSE prefetches. - - 2016-08-20 Kugan Vivekanandarajah - - * tree-vrp.c (vrp_visit_assignment_or_call): Changed to Return VR. - (vrp_visit_cond_stmt): Just sets TAKEN_EDGE_P. - (vrp_visit_switch_stmt): Likewise. - (extract_range_from_stmt): Factored out from vrp_visit_stmt. - (extract_range_from_phi_node): Factored out from vrp_visit_phi_stmt. - (vrp_visit_stmt): Use extract_range_from_stmt. - (vrp_visit_phi_node): Use extract_range_from_phi_node. - - 2016-08-20 Kugan Vivekanandarajah - - * Makefile.in: Add tree-vrp.h to GTFILES. - * gengtype.c (open_base_files): Add tree-vrp.h. - * asan.c: Add tree-vrp.h which now has the definition value_range_type. - * builtins.c: Likewise. - * fold-const.c: Likewise. - * gimple-builder.c: Likewise. - * gimple-laddress.c: Likewise. - * hsa-gen.c: Likewise. - * internal-fn.c: Likewise. - * ssa.h: Likewise. - * targhooks.c: Liewise, - * tree-ssa-address.c: Likewise. - * tree-ssanames.h (value_range_type: Move to tree-vrp.h. - * tree-vrp.c (struct value_range): Move to tree-vrp.h - * tree-vrp.h: New file. - - 2016-08-20 Kugan Vivekanandarajah - - PR tree-optimization/61839 - * tree-vrp.c (two_valued_val_range_p): New. - (simplify_stmt_using_ranges): Convert CST BINOP VAR where VAR is - two-valued to VAR == VAL1 ? (CST BINOP VAL1) : (CST BINOP VAL2). - Also Convert VAR BINOP CST where VAR is two-valued to - VAR == VAL1 ? (VAL1 BINOP CST) : (VAL2 BINOP CST). - - 2016-08-19 David Malcolm - - * diagnostic-show-locus.c - (layout::annotation_line_showed_range_p): New method. - (layout::print_any_fixits): Remove case fixit_hint::REMOVE. - Reimplement case fixit_hint::REPLACE to cover removals, and - replacements where the range of the replacement isn't one - of the ranges in the rich_location. - (test_one_liner_fixit_replace): Likewise. - (selftest::test_one_liner_fixit_replace_non_equal_range): New - function. - (selftest::test_one_liner_fixit_replace_equal_secondary_range): - New function. - (selftest::test_diagnostic_show_locus_one_liner): Call the new - functions. - * diagnostic.c (print_parseable_fixits): Remove case - fixit_hint::REMOVE. - - 2016-08-19 Uros Bizjak - - PR target/77270 - * config/i386/i386.c (ix86_option_override_internal): Remove - PTA_PRFCHW from entries that also have PTA_3DNOW flag. - Enable SSE prefetch also for TARGET_PREFETCHWT1. - Do not try to enable TARGET_PRFCHW ISA flag here. - * config/i386/i386.md (prefetch): Enable also for TARGET_3DNOW. - Rewrite expander function body. - (*prefetch_3dnow): Enable for TARGET_3DNOW and TARGET_PREFETCHWT1. - - 2016-08-19 Joseph Myers - - PR c/32187 - * tree-core.h (TI_COMPLEX_FLOAT16_TYPE) - (TI_COMPLEX_FLOATN_NX_TYPE_FIRST, TI_COMPLEX_FLOAT32_TYPE) - (TI_COMPLEX_FLOAT64_TYPE, TI_COMPLEX_FLOAT128_TYPE) - (TI_COMPLEX_FLOAT32X_TYPE, TI_COMPLEX_FLOAT64X_TYPE) - (TI_COMPLEX_FLOAT128X_TYPE, TI_FLOAT16_TYPE, TI_FLOATN_TYPE_FIRST) - (TI_FLOATN_NX_TYPE_FIRST, TI_FLOAT32_TYPE, TI_FLOAT64_TYPE) - (TI_FLOAT128_TYPE, TI_FLOATN_TYPE_LAST, TI_FLOAT32X_TYPE) - (TI_FLOATNX_TYPE_FIRST, TI_FLOAT64X_TYPE, TI_FLOAT128X_TYPE) - (TI_FLOATNX_TYPE_LAST, TI_FLOATN_NX_TYPE_LAST): New enum - tree_index values. - (NUM_FLOATN_TYPES, NUM_FLOATNX_TYPES, NUM_FLOATN_NX_TYPES): New - macros. - (struct floatn_type_info): New structure type. - (floatn_nx_types): New variable declaration. - * tree.h (FLOATN_TYPE_NODE, FLOATN_NX_TYPE_NODE) - (FLOATNX_TYPE_NODE, float128_type_node, float64x_type_node) - (COMPLEX_FLOATN_NX_TYPE_NODE): New macros. - * tree.c (floatn_nx_types): New variable. - (build_common_tree_nodes): Initialize _FloatN, _FloatNx and - corresponding complex types. - * target.def (floatn_mode): New hook. - * targhooks.c: Include "real.h". - (default_floatn_mode): New function. - * targhooks.h (default_floatn_mode): New prototype. - * doc/extend.texi (Floating Types): Document _FloatN and _FloatNx - types. - * doc/sourcebuild.texi (float@var{n}, float@var{n}x): Document new - effective-target and dg-add-options keywords. - (float@var{n}_runtime, float@var{n}x_runtime, floatn_nx_runtime): - Document new effective-target keywords. - * doc/tm.texi.in (TARGET_FLOATN_MODE): New @hook. - * doc/tm.texi: Regenerate. - * ginclude/float.h (LDBL_DECIMAL_DIG): Define to - __LDBL_DECIMAL_DIG__, not __DECIMAL_DIG__. - [__STDC_WANT_IEC_60559_TYPES_EXT__]: Define macros from TS - 18661-3. - * real.h (struct real_format): Add field ieee_bits. - * real.c (ieee_single_format, mips_single_format) - (motorola_single_format, spu_single_format, ieee_double_format) - (mips_double_format, motorola_double_format) - (ieee_extended_motorola_format, ieee_extended_intel_96_format) - (ieee_extended_intel_128_format) - (ieee_extended_intel_96_round_53_format, ibm_extended_format) - (mips_extended_format, ieee_quad_format, mips_quad_format) - (vax_f_format, vax_d_format, vax_g_format, decimal_single_format) - (decimal_double_format, decimal_quad_format, ieee_half_format) - (arm_half_format, real_internal_format: Initialize ieee_bits - field. - * config/i386/i386.c (ix86_init_builtin_types): Do not initialize - float128_type_node. Set float80_type_node to float64x_type_node - if appropriate and long_double_type_node not appropriate. - * config/ia64/ia64.c (ia64_init_builtins): Likewise. - * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): - Initialize ieee_bits field. - * config/rs6000/rs6000.c (TARGET_FLOATN_MODE): New macro. - (rs6000_init_builtins): Set ieee128_float_type_node to - float128_type_node. - (rs6000_floatn_mode): New function. - - 2016-08-19 Jakub Jelinek - - * config/i386/rdseedintrin.h (_rdseed16_step, _rdseed32_step, - _rdseed64_step): Uglify argument names and/or local variable names - in inline functions. - * config/i386/rtmintrin.h (_xabort): Likewise. - * config/i386/avx512vlintrin.h (_mm256_ternarylogic_epi64, - _mm256_mask_ternarylogic_epi64, _mm256_maskz_ternarylogic_epi64, - _mm256_ternarylogic_epi32, _mm256_mask_ternarylogic_epi32, - _mm256_maskz_ternarylogic_epi32, _mm_ternarylogic_epi64, - _mm_mask_ternarylogic_epi64, _mm_maskz_ternarylogic_epi64, - _mm_ternarylogic_epi32, _mm_mask_ternarylogic_epi32, - _mm_maskz_ternarylogic_epi32): Likewise. - * config/i386/lwpintrin.h (__llwpcb, __lwpval32, __lwpval64, - __lwpins32, __lwpins64): Likewise. - * config/i386/avx2intrin.h (_mm_i32gather_pd, _mm_mask_i32gather_pd, - _mm256_i32gather_pd, _mm256_mask_i32gather_pd, _mm_i64gather_pd, - _mm_mask_i64gather_pd, _mm256_i64gather_pd, _mm256_mask_i64gather_pd, - _mm_i32gather_ps, _mm_mask_i32gather_ps, _mm256_i32gather_ps, - _mm256_mask_i32gather_ps, _mm_i64gather_ps, _mm_mask_i64gather_ps, - _mm256_i64gather_ps, _mm256_mask_i64gather_ps, _mm_i32gather_epi64, - _mm_mask_i32gather_epi64, _mm256_i32gather_epi64, - _mm256_mask_i32gather_epi64, _mm_i64gather_epi64, - _mm_mask_i64gather_epi64, _mm256_i64gather_epi64, - _mm256_mask_i64gather_epi64, _mm_i32gather_epi32, - _mm_mask_i32gather_epi32, _mm256_i32gather_epi32, - _mm256_mask_i32gather_epi32, _mm_i64gather_epi32, - _mm_mask_i64gather_epi32, _mm256_i64gather_epi32, - _mm256_mask_i64gather_epi32): Likewise. - * config/i386/pmm_malloc.h (_mm_malloc, _mm_free): Likewise. - * config/i386/ia32intrin.h (__writeeflags): Likewise. - * config/i386/pkuintrin.h (_wrpkru): Likewise. - * config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i32gather_pd, - _mm512_mask_prefetch_i32gather_ps, _mm512_mask_prefetch_i64gather_pd, - _mm512_mask_prefetch_i64gather_ps, _mm512_prefetch_i32scatter_pd, - _mm512_prefetch_i32scatter_ps, _mm512_mask_prefetch_i32scatter_pd, - _mm512_mask_prefetch_i32scatter_ps, _mm512_prefetch_i64scatter_pd, - _mm512_prefetch_i64scatter_ps, _mm512_mask_prefetch_i64scatter_pd, - _mm512_mask_prefetch_i64scatter_ps): Likewise. - * config/i386/gmm_malloc.h (_mm_malloc, _mm_free): Likewise. - * config/i386/avx512fintrin.h (_mm512_ternarylogic_epi64, - _mm512_mask_ternarylogic_epi64, _mm512_maskz_ternarylogic_epi64, - _mm512_ternarylogic_epi32, _mm512_mask_ternarylogic_epi32, - _mm512_maskz_ternarylogic_epi32, _mm512_i32gather_ps, - _mm512_mask_i32gather_ps, _mm512_i32gather_pd, _mm512_i64gather_ps, - _mm512_i64gather_pd, _mm512_i32gather_epi32, _mm512_i32gather_epi64, - _mm512_i64gather_epi32, _mm512_i64gather_epi64): Likewise. - - * config/i386/fxsrintrin.h (_fxsave): Remove return keyword in inlines - returning void. - (_fxrstor, _fxsave64, _fxrstor64): Likewise. - * config/i386/xsaveintrin.h (_xsave, _xrstor, _xsave64, _xrstor64): - Likewise. - * config/i386/xsaveoptintrin.h (_xsaveopt, _xsaveopt64): Likewise. - * config/i386/pkuintrin.h (_wrpkru): Likewise. Add space after - function name. - (_rdpkru_u32): Add space after function name. - - * config/i386/t-i386 (i386-c.o): Don't depend on - i386-builtin-types.inc. - (i386.o): Depend on i386-builtin-types.inc. - - 2016-08-19 Matthew Wahab - - PR target/77281 - * config/arm/arm.c (neon_valid_immediate): Delete declaration. - Use const_vec_duplicate to check for duplicated elements. - - 2016-08-19 Richard Biener - - PR tree-optimization/77290 - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - Fix flag_tree_parallelize_loops check. - - 2016-08-19 Richard Biener - - * match.pd (x | 0 -> x): Add. - - 2016-08-19 Richard Biener - - PR tree-optimization/77286 - * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): - Deal with virtual PHIs being out-of-order. - - 2016-08-18 David Malcolm - - * doc/invoke.texi (fverbose-asm): Note that source code lines - are emitted, and provide an example. - * final.c (asm_show_source): New function. - (final_scan_insn): Call asm_show_source. - - 2016-08-18 David Malcolm - - * diagnostic-show-locus.c (colorizer::colorizer): Replace diagnostic - param with diagnostic_kind. - (class colorizer): Similarly replace field m_diagnostic with - m_diagnostic_kind. - (colorizer::colorizer): Replace diagnostic - param with diagnostic_kind. - (colorizer::begin_state): Update for above field change. - (layout::layout): Replace diagnostic param with rich_location * - and diagnostic_kind. - (diagnostic_show_locus): Replace diagnostic param with richloc - and diagnostic_kind. - (class selftest::test_diagnostic_context): New class. - (selftest::test_diagnostic_show_locus_unknown_location): New - function. - (selftest::test_one_liner_simple_caret): New function. - (selftest::test_one_liner_caret_and_range): New function. - (selftest::test_one_liner_multiple_carets_and_ranges): New - function. - (selftest::test_one_liner_fixit_remove): New function. - (selftest::test_one_liner_fixit_replace): New function. - (selftest::test_diagnostic_show_locus_one_liner): New function. - (selftest::diagnostic_show_locus_c_tests): Call the new test - functions. - * diagnostic.c (diagnostic_initialize): Initialize - colorize_source_p, show_ruler_p and parseable_fixits_p. - (default_diagnostic_finalizer): Update for change to - diagnostic_show_locus. - (diagnostic_append_note): Likewise. - * diagnostic.h (diagnostic_show_locus): Replace - const diagnostic_info * param with location * and diagnostic_t. - - 2016-08-18 David Malcolm - - * input.c (saved_line_table): New global. - (class selftest::temp_line_table): Rename to line_table_test and - move declaration to selftest.h, and drop field m_old_line_table. - (selftest::temp_line_table::temp_line_table): Rename ctor to... - (selftest::line_table_test::line_table_test): ...this. Add a - default ctor. Store current value of line_table within - saved_line_table. - (selftest::temp_line_table::~temp_line_table): Rename dtor to... - (selftest::line_table_test::~line_table_test): ...this, and - restore line_table from the saved_line_table, rather than - m_old_line_table. - (selftest::test_accessing_ordinary_linemaps): Update for above - renaming. - (selftest::test_lexer): Likewise. - (struct selftest::lexer_test): Likewise. - (selftest::lexer_test::lexer_test): Likewise. - (selftest::input_c_tests): Move the looping over test cases from - here into... - (selftest::for_each_line_table_case): New function. - * input.h (saved_line_table): New decl. - * selftest.h (struct selftest::line_table_case): New forward decl. - (class selftest::line_table_test): New class, moved here from - selftest::temp_line_table in input.c, and renamed. - (selftest::for_each_line_table_case): New decl. - - 2015-08-18 H.J. Lu - - PR target/72839 - * config/i386/i386.c (lakemont_cost): Set MOVE_RATIO to 17. - - 2016-08-18 Chung-Lin Tang - - PR middle-end/70895 - * gimplify.c (omp_add_variable): Adjust/add variable mapping on - enclosing parallel construct for reduction variables on OpenACC loop - directives. - - 2016-08-18 Pierre-Marie de Rodat - - * dwarf2out.c (copy_dwarf_procedure): Remove obsolete comment. - (new_dwarf_proc_die): Emit DW_TAG_dwarf_procedure DIEs even for - -gdwarf-3. - (function_to_dwarf_procedure): Update comment. - - 2016-08-18 David Malcolm - - * input.c (diagnostics_file_cache_forcibly_evict_file): New - function. - * input.h (diagnostics_file_cache_forcibly_evict_file): New - declaration. - * selftest.c (selftest::temp_source_file::~temp_source_file): - Evict m_filename from the diagnostic file cache. - - 2016-08-18 Richard Biener - - * tree-pass.h (make_pass_materialize_all_clones): Declare. - * ipa.c (pass_data_materialize_all_clones, pass_materialize_all_clones, - make_pass_materialize_all_clones): New simple IPA pass encapsulating - clone materialization. - * passes.def (all_late_ipa_passes): Start with - pass_materialize_all_clones. - * cgraphunit.c (symbol_table::compile): Remove call to - materialize_all_clones. - * tree-into-ssa.c: Include statistics.h. - (update_ssa): Count number of times we do incremental/rewrite - SSA update. - - 2016-08-18 Richard Biener - - PR tree-optimization/77282 - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - When doing auto-parallelizing also prevent use of PHIs that - carry dependences across loop backedges. - - 2016-08-18 Tamar Christina - Ramana Radhakrishnan - - * varasm.c (default_use_anchors_for_symbol_p): Reject too large decls. - - 2016-08-18 Richard Biener - - * ssa-iterators.h (ssa_vuse_operand): New inline. - * tree-if-conv.c (ifc_temp_var): Update virtual operand. - (predicate_all_scalar_phis): Use remove_phi_node to remove - phi nodes predicated. Delay removing virtual PHIs. - (predicate_mem_writes): Update virtual operands. - (combine_blocks): Likewise. Propagate out remaining virtual PHIs. - (tree_if_conversion): Do not rewrite virtual SSA form. - * tree-phinodes.c (release_phi_node): Make static. - * tree-phinodes.h (release_phi_node): Remove. - - 2016-08-18 Jakub Jelinek - - * config/i386/i386.c (enum ix86_builtins): Remove IX86_BUILTIN_* - codes that appear in bdesc_* arrays, instead include i386-builtin.def - twice to define those. - (bdesc_comi, bdesc_pcmpestr, bdesc_pcmpistr, bdesc_special_args, - bdesc_args, bdesc_round_args, bdesc_mpx, bdesc_mpx_const, - bdesc_multi_arg): Define by including i386-builtin.def the third time. - * config/i386/i386-builtin.def: New file. - - 2016-08-17 David Malcolm - - * input.c (get_source_range_for_char): Rename to... - (selftest::get_source_range_for_char): ...this, and move within - the #if CHECKING_P guard. - (get_num_source_ranges_for_substring): Rename to... - (selftest::get_num_source_ranges_for_substring): ...this, move - within the #if CHECKING_P guard, and make static. - (selftest::assert_num_substring_ranges): Initialize - actual_num_ranges. - - 2016-08-18 Alan Modra - - PR rtl-optimization/72771 - * reload.c (find_reloads): Don't assume that a subreg mem is OK - when find_reloads_toplev returns address_reloaded==-1. - (alternative_allows_const_pool_ref): Update comment. - - 2015-08-17 Alan Hayward - - PR tree-optimization/71752 - * tree-vect-loop.c (vectorizable_reduction): Keep SLP operand ordering. - * tree-vect-slp.c (vect_get_slp_defs): Handle null operands. - - 2016-08-17 Jakub Jelinek - - * gimple-fold.c (gimple_fold_call): Use gimple_call_noreturn_p - instead of testing ECF_NORETURN bit in gimple_call_flags. - * tree-cfg.c (make_edges_bb, execute_fixup_cfg): Likewise. - * predict.c (tree_bb_level_predictions): Likewise. - * gimple-low.c (gimple_stmt_may_fallthru): Likewise. - - PR middle-end/77259 - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): If - turning a call into __builtin_unreachable-like noreturn call, adjust - gimple_call_set_fntype. - * tree-cfgcleanup.c (fixup_noreturn_call): Remove lhs also if - gimple_call_fntype has void return type. - - 2016-08-17 Chung-Lin Tang - - * omp-low.c (lower_oacc_reductions): Adjust variable lookup to use - maybe_lookup_decl, to handle nested acc loop directives. - - 2016-08-17 Richard Biener - - PR tree-optimization/76490 - * tree-vrp.c (update_value_range): Preserve overflow infinities - when intersecting with ranges from get_range_info. - (operand_less_p): Handle overflow infinities correctly. - (value_range_constant_singleton): Use vrp_operand_equal_p - to handle overflow max/min correctly. - (vrp_valueize): Likewise. - (union_ranges): Likewise. - (intersect_ranges): Likewise. - (vrp_visit_phi_node): Improve iteration limitation to only - apply when we'll possibly re-visit the PHI via a changed argument - on the backedge. - - 2016-08-17 Thomas Preud'homme - - * config/arm/t-aprofile (MULTILIB_EXCEPTIONS): Rewrite into ... - (MULTILIB_REQUIRED): This by specifying multilib needing to be built - rather than those that should not be built. - - 2016-08-17 Stanislaw Halik - - PR target/66488 - * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Define if __x86_64__. - - 2016-08-17 Richard Biener - - * tree-ssa.c: Include tree-cfg.h and tree-dfa.h. - (verify_vssa): New function verifying virtual SSA form. - (verify_ssa): Call it. - * tree-ssa-loop-manip.c (slpeel_update_phi_nodes_for_guard2): - Do not apply loop-closed SSA handling to virtuals. - * ssa-iterators.h (op_iter_init): Handle GIMPLE_TRANSACTION. - * tree-into-ssa.c (prepare_use_sites_for): Skip virtual SSA names - when rewriting their symbol. - (prepare_def_site_for): Likewise. - * tree-chkp-opt.c (chkp_reduce_bounds_lifetime): Clear virtual - operands of moved stmts. - - 2016-08-17 Richard Biener - - PR tree-optimization/23855 - * tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h. - (tree_unswitch_outer_loop): Iterate find_loop_guard as long as we - find guards to hoist. Do not update SSA form but rewrite virtuals - into loop closed SSA. - (find_loop_guard): Adjust to skip already hoisted guards. Do - not mark virtuals for renaming or update SSA form. - - 2016-08-17 Martin Liska - - * coverage.c (get_gcov_type): Replace GCOV_TYPE_SIZE with - a LONG_LONG_TYPE_SIZE comparison. - * gcov-io.h: Remove macro definitions. - * tree-profile.c (gimple_gen_edge_profiler): Replace usage - of GCOV_TYPE_ATOMIC_FETCH_ADD with a LONG_LONG_TYPE_SIZE - comparison. - - 2016-08-16 Jakub Jelinek - - * config/i386/i386.c (enum ix86_builtins): Reorder enumerators, so - that builtins not mentioned in bdesc_* arrays come first, then - the ones mentioned in bdesc_* arrays in the order they appear in - the arrays in between IX86_BUILTIN__BDESC_*_FIRST and - IX86_BUILTIN__BDESC_*_LAST enumerator. - (bdesc_mpx): Fix up a comment typo. - (bdesc_multi_arg): Remove __builtin_ia32_vpcomne[bwdq] and - __builtin_ia32_vpcomneu[bwdq] builtins. - (BDESC_VERIFY, BDESC_VERIFYS): Define. - (ix86_init_mmx_sse_builtins, ix86_init_mpx_builtins): Verify - enum ix86_builtins ordering. - (ix86_expand_builtin): Use enum ix86_builtins ordering assumption - for direct bdesc_* array member access instead of searching all the - arrays until an fcode match is found. - - 2016-08-16 Uros Bizjak - - * config/i386/i386.md (*ashl3_mask): Rewrite define_insn - pattern as define_insn_and_split. Split insn before reload to - ashl3_1. - (*3_mask): Ditto. Split insn before reload to - 3_1. - (*3_mask): Ditto. Split insn before reload to - 3_1. - - 2016-08-16 David Malcolm - - PR c/72857 - * input.c (get_source_range_for_substring): Rename to... - (get_source_location_for_substring): ...this, adding param - "caret_idx", and converting output param from source_range * to - location_t *. - (get_source_range_for_char): New function. - (get_num_source_ranges_for_substring): Update comment to reflect - above renaming. - (assert_char_at_range): Update to use get_source_range_for_char - rather than get_source_range_for_substring. - (test_lexer_string_locations_concatenation_2): Likewise. - * substring-locations.h (get_source_range_for_substring): Rename - to... - (get_source_location_for_substring): ...this, and adding param - "caret_idx", and converting output param from source_range * to - location_t *. - - 2016-08-16 David Malcolm - - * input.c (class selftest::temp_source_file): Move to - selftest.h. - (selftest::temp_source_file::temp_source_file): Move to - selftest.c. - (selftest::temp_source_file::~temp_source_file): Likewise. - * selftest.c (selftest::temp_source_file::temp_source_file): Move - here from input.c. - (selftest::temp_source_file::~temp_source_file): Likewise. - * selftest.h (class selftest::temp_source_file): Move here from - input.c - - 2016-08-16 Jakub Jelinek - - PR target/71910 - * tree-cfg.c (execute_fixup_cfg): Add node variable, use it. Before - inlining, add cgraph edge for the added __builtin_unreachable call. - - PR middle-end/67485 - * expmed.c (expand_mult_const): Change val_so_far's type to UHWI, - only cast it to SHWI for the final comparison. - - 2016-08-16 Martin Liska - - PR gcov-profile/36412 - * doc/gcov.texi: Document --hash-filenames(-x). - * gcov.c (print_usage): Add the option. - (process_args): Process the option, sort options alphabetically. - (md5sum_to_hex): New function. - (make_gcov_file_name): Do the md5sum and append it to a - filename. - - 2016-08-16 Bin Cheng - - PR tree-optimization/69848 - * config/aarch64/aarch64-simd.md (vcond): Invert NE - and swtich operands to avoid additional NOT instruction. - (vcond): Ditto. - (vcondu, vcondu): Ditto. - - 2016-08-16 Eric Botcazou - - * doc/install.texi (*-*-solaris2*): Adjust latest change. - - 2016-08-16 Richard Biener - - PR tree-optimization/76783 - * tree-ssa-propagate.c (ssa_prop_init): Use RPO order. Clear - BB visited flags at start. - - 2016-08-16 Bin Cheng - - PR tree-optimization/72817 - PR tree-optimization/73450 - * tree-ssa-loop-niter.c (number_of_iterations_ne): Check - multiple_of_p for adjusted IV.base. - - 2016-08-15 Uros Bizjak - - PR target/72867 - * config/i386/sse.md (3): - Emit ieee_3 - for !flag_finite_math_only or flag_signed_zeros. - (*3): Rename from - *3_finite. Do not - depend on flag_finite_math_only. - (ieee_3): - New insn pattern. - (*3): Remove. - (*ieee_smin3): Ditto. - (*ieee_smax3): Ditto. - * config/i386/mmx.md (mmx_v2sf3): Emit - mmx_ieee_v2sf3 for !flag_finite_math_only or - flag_signed_zeros. - (*mmx_v2sf3): Rename from *mmx_v2sf3_finite. Do not - depend on flag_finite_math_only. - (mmx_ieee_v2sf3): New insn pattern. - (*mmx_v2sf3): Remove. - * config/i386/subst.md (round_saeonly_mask_arg3): New subst attribute. - * config/i386/i386.c (ix86_expand_sse_fp_mimnax): Check - flag_signed_zeros instead of !flag_unsafe_math_optimizations. - - 2016-08-15 Segher Boessenkool - - PR rtl-optimization/73650 - * lra-constraints.c (simple_move_p): If the insn is multiple_sets - it is not a simple move. - - 2016-08-15 Martin Liska - - PR driver/72765 - * gcc.c (do_spec_1): Call save_string with the right size. - (save_string): Do an assert about string we copy. - - 2016-08-15 Richard Biener - - * ree.c (rest_of_handle_ree): Remove redundant timevar push/pop. - * config/i386/i386.c (pass_data_insert_vzeroupper): Account to - TV_MACH_DEP. - (pass_data_stv): Likewise. - - 2016-08-15 Richard Biener - - PR tree-optimization/73434 - * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Preserve - TBAA info on the base when forwarding a non-invariant address. - - 2016-08-15 Jakub Jelinek - - * dwarf2out.c (struct checksum_attributes): Add - at_string_length_bit_size and at_string_length_byte_size fields. - (collect_checksum_attributes): Handle DW_AT_string_length_bit_size - and DW_AT_string_length_byte_size. - (die_checksum_ordered): Handle at_string_length_bit_size and - at_string_length_byte_size. - (gen_array_type_die): For dwarf_version >= 5 emit - DW_AT_string_length_byte_size instead of DW_AT_byte_size. - (adjust_string_types): For dwarf_version >= 5 remove - DW_AT_string_length_byte_size instead of DW_AT_byte_size. - (resolve_addr): Likewise. - - PR debug/71906 - * dwarf2out.c (string_types): New variable. - (gen_array_type_die): Change early_dwarf handling of - DW_AT_string_length, create DW_OP_call4 referencing the - length var temporarily. Handle parameters that are pointers - to string length. - (adjust_string_types): New function. - (gen_subprogram_die): Temporarily set string_types to local var, - call adjust_string_types if needed. - (non_dwarf_expression, copy_deref_exprloc, optimize_string_length): - New functions. - (resolve_addr): Adjust DW_AT_string_length if it is DW_OP_call4. - - 2016-08-15 Eric Botcazou - - * doc/install.texi (*-*-solaris2*): Fix version number and document - requirement on GNU make for building libjava with the Solaris linker. - - 2016-08-15 Martin Liska - Jakub Jelinek - - PR tree-optimization/72824 - * tree-loop-distribution.c (const_with_all_bytes_same) - : Fix a typo. - - 2016-08-14 Uros Bizjak - - PR target/76342 - * config/i386/avx512fintrin.h (_mm512_undefined_epi32): - Renamed from _mm512_undefined_si512. - (_mm_undefined_si512): New definition. - - 2016-08-13 Richard Biener - - * tree-ssa-forwprop.c (pass_forwprop::execute): Propagate - into PHIs and update the lattice for its def. - - 2016-08-12 Jakub Jelinek - - PR c/71512 - * ubsan.c (instrument_si_overflow): Pass true instead of false - to gsi_replace. - (pass_ubsan::execute): Call gimple_purge_dead_eh_edges at the end - of bbs. Return TODO_cleanup_cfg if any returned true. - - 2016-08-12 Michael Meissner - - * config/rs6000/vsx.md (vsx_concat_): Add support for the - ISA 3.0 MTVSRDD instruction. - (vsx_splat_): Change cpu type of MTVSRDD instruction to - vecperm. - - 2016-08-12 Bernd Edlinger - - PR tree-optimization/71083 - * tree-predcom.c (ref_at_iteration): Use a COMPONENT_REF for the - bitfield access when possible. - - 2016-08-12 Patrick Palka - - PR middle-end/71654 - * match.pd ((T)A CMP (T)B -> A CMP B): Allow (T)A to be a - sign-changing cast from a shorter unsigned type to a wider - signed type. - - 2016-08-12 Jakub Jelinek - - * config/i386/sse.md (avx512dq_vextract64x2_1_maskm, - vec_extract_hi__mask, vec_extract_lo__mask, - vec_extract_hi__mask): Use Yk constraint instead of k. - - 2016-08-12 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): - Correct costs for vec_construct. - - 2016-08-12 Bin Cheng - - PR tree-optimization/69848 - * tree-vectorizer.h (enum vect_def_type): New condition reduction - type CONST_COND_REDUCTION. - * tree-vect-loop.c (vectorizable_reduction): Support new condition - reudction type CONST_COND_REDUCTION. - - 2016-08-12 Richard Biener - - PR tree-optimization/57326 - * tree-ssa-pre.c (fully_constant_expression): Handle simplification - returning an SSA name. - (phi_translate_1): When fully_constant_expression returns a NAME - make sure we have a leader for it. - - 2016-08-12 Martin Liska - Adam Fineman - - * gcov.c (process_file): Create .gcov file when .gcda - file is missing. - - 2016-08-12 Marek Polacek - - PR c/7652 - * alias.c (find_base_value): Adjust fall through comment. - * cfgexpand.c (expand_debug_expr): Likewise. - * combine.c (find_split_point): Likewise. - (expand_compound_operation): Likewise. Add FALLTHRU. - (make_compound_operation): Adjust fall through comment. - (canon_reg_for_combine): Add FALLTHRU. - (force_to_mode): Adjust fall through comment. - (simplify_shift_const_1): Likewise. - (simplify_comparison): Likewise. - * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Add - FALLTHRU. - * config/aarch64/predicates.md: Likewise. - * config/i386/i386.c (function_arg_advance_32): Likewise. - (ix86_gimplify_va_arg): Likewise. - (print_reg): Likewise. - (ix86_print_operand): Likewise. - (ix86_build_const_vector): Likewise. - (ix86_expand_branch): Likewise. - (ix86_sched_init_global): Adjust fall through comment. - (ix86_expand_args_builtin): Add FALLTHRU. - (ix86_expand_builtin): Likewise. - (ix86_expand_vector_init_one_var): Likewise. - * config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise. - (rs6000_adjust_cost): Likewise. - (insn_must_be_first_in_group): Likewise. - * config/rs6000/rs6000.md: Likewise. Adjust fall through comment. - * dbxout.c (dbxout_symbol): Adjust fall through comment. - * df-scan.c (df_uses_record): Likewise. - * dojump.c (do_jump): Add FALLTHRU. - * dwarf2out.c (mem_loc_descriptor): Likewise. Adjust fall through - comment. - (resolve_args_picking_1): Adjust fall through comment. - (loc_list_from_tree_1): Likewise. - * expmed.c (make_tree): Likewise. - * expr.c (expand_expr_real_2): Add FALLTHRU. - (expand_expr_real_1): Likewise. Adjust fall through comment. - * fold-const.c (const_binop): Adjust fall through comment. - (fold_truth_not_expr): Likewise. - (fold_cond_expr_with_comparison): Add FALLTHRU. - (fold_binary_loc): Likewise. - (contains_label_1): Adjust fall through comment. - (multiple_of_p): Likewise. - * gcov-tool.c (process_args): Add FALLTHRU. - * genattrtab.c (check_attr_test): Likewise. - (write_test_expr): Likewise. - * genconfig.c (walk_insn_part): Likewise. - * genpreds.c (validate_exp): Adjust fall through comment. - (needs_variable): Likewise. - * gensupport.c (get_alternatives_number): Add FALLTHRU. - (subst_dup): Likewise. - * gimple-pretty-print.c (dump_gimple_assign): Likewise. - * gimplify.c (gimplify_addr_expr): Adjust fall through comment. - (gimplify_scan_omp_clauses): Add FALLTHRU. - (goa_stabilize_expr): Likewise. - * graphite-isl-ast-to-gimple.c (substitute_ssa_name): Adjust fall - through comment. - * hsa-gen.c (get_address_from_value): Likewise. - * ipa-icf.c (sem_function::hash_stmt): Likewise. - * ira.c (ira_setup_alts): Add FALLTHRU. - * lra-eliminations.c (lra_eliminate_regs_1): Adjust fall through - comment. - * lto-streamer-out.c (lto_output_tree_ref): Add FALLTHRU. - * opts.c (common_handle_option): Likewise. - * read-rtl.c (read_rtx_code): Likewise. - * real.c (round_for_format): Likewise. - * recog.c (asm_operand_ok): Likewise. - * reginfo.c (reg_scan_mark_refs): Adjust fall through comment. - * reload1.c (set_label_offsets): Likewise. - (eliminate_regs_1): Likewise. - (reload_reg_reaches_end_p): Likewise. - * rtlanal.c (commutative_operand_precedence): Add FALLTHRU. - (rtx_cost): Likewise. - * sched-rgn.c (is_exception_free): Likewise. - * simplify-rtx.c (simplify_rtx): Adjust fall through comment. - * stor-layout.c (int_mode_for_mode): Likewise. - * toplev.c (print_to_asm_out_file): Likewise. - (print_to_stderr): Likewise. - * tree-cfg.c (gimple_verify_flow_info): Likewise. - * tree-chrec.c (chrec_fold_plus_1): Add FALLTHRU. - (chrec_fold_multiply): Likewise. - (evolution_function_is_invariant_rec_p): Likewise. - (for_each_scev_op): Likewise. - * tree-data-ref.c (siv_subscript_p): Likewise. - (get_references_in_stmt): Likewise. - * tree.c (find_placeholder_in_expr): Adjust fall through comment. - (substitute_in_expr): Likewise. - (type_cache_hasher::equal): Likewise. - (walk_type_fields): Likewise. - * var-tracking.c (adjust_mems): Add FALLTHRU. - (set_dv_changed): Adjust fall through comment. - * varasm.c (default_function_section): Add FALLTHRU. - - 2016-08-12 Marek Polacek - - PR c/7652 - * tree-complex.c (expand_complex_division): Add missing break. - - 2016-08-12 Richard Biener - - * passes.c (execute_todo): Do not push/pop TV_TODO. - (execute_one_ipa_transform_pass): Move timevar push/pop TODO execution. - (execute_one_pass): Likewise. - * common.opt (ftime-report-details): New switch. - * doc/invoke.texi (ftime-report-details): Document. - * timevar.h (timer::print_row): Adjust signature. - (timer::all_zero): New static helper. - (timer::child_map_t): New typedef. - (timer::time_var_def): Add children field. - * timevar.c (timer::named_items::print): Adjust. - (timer::~timer): Free timevar recorded children. - (timer::pop_internal): When -ftime-report-details record - time spent in sub-timevars. - (timer::print_row): Adjust. - (timer::print): Print sub-timevar stats, use all_zero. - * timevar.def (TV_TODO): Remove. - - 2016-08-12 Richard Biener - - PR tree-optimization/72851 - * tree-ssa-propagate.c: Include cfganal.h. Rewrite block and stmt - worklists to use bitmaps indexed in execution order. - (executable_blocks, cfg_blocks_num, cfg_blocks_tail, cfg_blocks_head, - bb_in_list, interesting_ssa_edges, varying_ssa_edges): Remove. - (cfg_blocks): Make a bitmap. - (bb_to_cfg_order, cfg_order_to_bb, ssa_edge_worklist, uid_to_stmt): - New globals. - (cfg_blocks_empty_p): Adjust. - (cfg_blocks_add): Likewise. - (cfg_blocks_get): Likewise. - (add_ssa_edge): Likewise. - (add_control_edge): Likewise. - (simulate_stmt): Likewise. - (process_ssa_edge_worklist): Likewise. - (simulate_block): Likewise. - (ssa_prop_init): Compute PRE order and stmt UIDs. - (ssa_prop_fini): Adjust. - (ssa_propagate): Adjust. - - 2016-08-12 Richard Biener - - * tree-vrp.c (vrp_visit_phi_node): Allow a last iteration if - the currently executable edges have fixed ranges. Always - go through update_value_range. - - 2016-08-12 Alexandre Oliva - - PR debug/63240 - * langhooks-def.h - (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Const_tree-ify. - (LANG_HOOKS_FUNCTION_DECL_DELETED_P): Likewise. - (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Set default. - (LANG_HOOKS_DECLS): Add it. - * langhooks.h (struct lang_hooks_for_decls): Add - function_decl_defaulted. Const_tree-ify - function_decl_explicit_p and function_decl_deleted_p. - * dwarf2out.c (gen_subprogram_die): Add DW_AT_defaulted - attribute. Add DW_AT_deleted instead of DW_AT_GNU_deleted, - also at strict DWARF v5. - - PR debug/55641 - * dwarf2out.c (decl_quals): Don't map TREE_READONLY to - TYPE_QUAL_CONST in reference-typed decls. - - PR debug/49366 - * dwarf2out.c (loc_list_from_tree_1): Expand some CONSTRUCTORs - in DW_OP_pieces, just enough to handle pointers to member - functions. - (gen_remaining_tmpl_value_param_die_attribute): Use a location - expression on DWARFv5 if a constant value doesn't work. - - 2016-08-11 David Malcolm - - * selftest-run-tests.c (selftest::run_tests): Call selftest_c_tests. - * selftest.c (selftest::test_assertions): New function. - (selftest::selftest_c_tests): New function. - * selftest.h (selftest::selftest_c_tests): New declaration. - - 2016-08-11 Richard Biener - Bill Schmidt - - PR rtl-optimization/72855 - * df-core.c (df_verify): Turn off DF_VERIFY_SCHEDULED at end. - - 2016-08-11 Bill Schmidt - - PR target/72863 - * vsx.md (vsx_load_): For P8LE, emit swaps at expand time. - (vsx_store_): Likewise. - - 2015-08-11 H.J. Lu - - * config/i386/i386.c (timode_scalar_to_vector_candidate_p): Allow - TImode CONST_WIDE_INT store. - (timode_scalar_chain::convert_insn): Handle CONST_WIDE_INT store. - - 2015-08-11 H.J. Lu - - * config/i386/i386.h (MOVE_MAX_PIECES): Use TImode in 64-bit - mode if unaligned SSE load and store are optimal. - - 2016-08-11 Bernd Edlinger - - PR tree-optimization/71083 - * tree-predcom.c (ref_at_iteration): Correctly align the - reference type. - - 2016-08-11 Andreas Krebbel - - * config/s390/s390-builtin-types.def: Add INT128 types. - * config/s390/s390-builtins.def: Add INT128 variants for the add - sub low-level builtins dealing with TImode. - * config/s390/s390.c (s390_expand_builtin): Allow mode conversions - via subreg when expanding a builtin. - * config/s390/s390.md: Remove UNSPEC_VEC_ADDC_U128, - UNSPEC_VEC_SUB_U128, and UNSPEC_VEC_SUBC_U128 constants. - Fix comment. - * config/s390/vecintrin.h: Adjust builtin names accordingly. - * config/s390/vx-builtins.md ("vec_add_u128"): Remove expander. - ("vec_addc", "vec_addc_u128"): Merge to - "vacc_". - ("vec_adde_u128"): Rename to "vacq". Change mode to TImode. - ("vec_addec_u128"): Rename to "vacccq". Change mode to TImode. - ("vec_subc", "vec_subc_u128"): Merge to - "vscbi_". - ("vec_sube_u128"): Rename to "vsbiq". Change mode to TImode. - ("vec_subec_u128"): Rename to "vsbcbiq". Change mode to TImode. - - 2016-08-11 Andreas Krebbel - - * config/s390/s390-builtins.def: Mark last operand of s390_vlvg* - - 2016-08-11 Bin Cheng - - * config/aarch64/aarch64-simd.md (vcond): Delete - unused declaration. - (vcond): Ditto. - (vcondu, vcondu): Ditto. - - 2016-08-11 Bin Cheng - - * config/aarch64/aarch64-simd.md (vec_cmp): Init - variable explicitly, also assert on it before use. - - 2016-08-11 Richard Biener - - PR tree-optimization/72772 - * cfgloopmanip.c (create_preheader): Use split_edge if there - is a single loop entry, avoiding degenerate PHIs. - - 2016-08-11 Richard Biener - - * tree-ssa-threadbackward.c (pass_data_thread_jumps): Remove - unconditional TODO_cleanup_cfg. - (pass_thread_jumps::execute): Initialize loops, perform a CFG - cleanup only if we threaded a jump. - - 2016-08-11 Alan Modra - - PR target/71680 - * lra-constraints.c (simplify_operand_subreg): Allow subreg - mode for mem when SLOW_UNALIGNED_ACCESS if inner mode is also - slow. Emit two reloads for slow mem case, first loading in - fast innermode, then converting to required mode. - - 2016-08-10 Kelvin Nilsen - - * config/rs6000/altivec.h (vec_extract_exp): New macro. - (vec_extract_sig): New macro. - (vec_insert_exp): New macro. - (vec_test_data_class): New macro. - (scalar_extract_exp): New macro. - (scalar_extract_sig): New macro. - (scalar_insert_exp): New macro. - (scalar_test_data_class): New macro. - (scalar_test_neg): New macro. - (scalar_cmp_exp_gt): New macro. - (scalar_cmp_exp_lt): New macro. - (scalar_cmp_exp_eq): New macro. - (scalar_cmp_exp_unordered): New macro. - * config/rs6000/predicates.md (u7bit_cint_operand): New predicate - to enforce constraint that operand is a 7-bit unsigned literal. - * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_1): New macro - for power9 built-ins. - (BU_P9V_VSX_2): Likewise. - (BU_P9V_64BIT_VSX_2): Likewise. - (VSEEDP): Add scalar extract exponent support. - (VSEESP): Add scalar extract signature support. - (VSTDCNDP): Add scalar test negative support. - (VSTDCNSP): Likewise. - (VSIEDP): Add scalar insert exponent support. - (VSCEDPGT): Add scalar compare exponent greater than support. - (VSCEDPLT): Add scalar compare exponent less than support. - (VSCEDPEQ): Add scalar compare exponent test-for-equality support. - (VSCEDPUO): Add scalar compare exponent test-for-unordered support. - (VSTDCDP): Add scalar test data class support. - (VSTDCSP): Likewise. - (VSEEDP): Add overload support for scalar extract exponent - operation. - (VSESDP): Add overload support for scalar extract signature - operation. - (VSTDCN): Add overload support for scalar test negative - operation. - (VSTDCNDP): Add overload support for scalar test negative - operation. - (VSTDCNSP): Add overload support for scalar test negative - operation. - (VSIEDP): Add overload support for scalar insert exponent - operation. - (VSTDC): Add overload support for scalar test data class - operation. - (VSTDCDP): Add overload support for scalar test data class - operation. - (VSTDCSP): Add overload support for scalar test data class - opreation. - (VSCEDPGT): Add overload support for scalar compare exponent - greater than operation. - (VSCEDPLT): Add overload support for scalar compare exponent - less than operation. - (VSCEDPEQ): Add overload support for scalar compare exponent - test-for-equality operation. - (VSCEDPUO): Add overload support for scalar compare exponent - test-for-unordered operation. - (VEEDP): Add vector extract exponent support. - (VEESP): Likewise. - (VESDP): Add vector extract significand support. - (VESSP): Likewise. - (VIEDP): Add vector insert exponent support. - (VIESP): Likewise. - (VTDCDP): Add vector test data class support. - (VTDCSP): Likewise. - (VES): Add overload support for vector extract significand operation. - (VESDP): Likewise. - (VESSP): Likewise - (VEE): Add overload support for vector extract exponent operation. - (VEEDP): Likewise. - (VEESP): Likewise. - (VTDC): Add overload support for vector test data class operation. - (VTDCDP): Likewise. - (VTDCSP): Likewise. - (VIE): Add overload support for vector insert exponent operation. - (VIEDP): Likewise. - (VIESP): Likewise. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - overloaded binary floating point functions. - (altivec_resolve_overloaded_builtin): Improve error messages to - distinguish between functions not supported in the current - compiler configuration and functions that were invoked with an - invalid parameter combination, and include the built-in function - name in both error messages. - * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_name): - New prototype. - * config/rs6000/rs6000.c (rs6000_overloaded_builtin_name): New - function. - (rs6000_expand_binop_builtin): Add check to enforce that argument - 2 of the test data class operations is a 7-bit unsigned literal. - (rs6000_invalid_builtin): Add code to issue an error message if a - built-in function that requires the power9_vector and -m32 - command-line options is compiled without these options. - * config/rs6000/vsx.md (UNSPEC_VSX_SXEXPDP): New value. - (UNSPEC_VSX_SXSIGDP): New value. - (UNSPEC_VSX_SXSIGPDP): New value. - (UNSPEC_VSX_SIEXPDP): New value. - (UNSPEC_VSX_SCMPEXPDP): New value. - (UNSPEC_VSX_STSTDC): New value. - (UNSPEC_VSX_VXEXP): New value. - (UNSPEC_VSX_VXSIG): New value. - (UNSPEC_VSX_VIEXP): New value. - (UNSPEC_VSX_VTSTDC): New value. - (xsxexpdp): New insn for scalar extract exponent. - (xsxsigdp): New insn for scalar extract significand. - (xsiexpdp): New insn for scalar insert exponent. - (xscmpexpdp_): New expansion for scalar compare exponents. - (*xscmpexpdp): New insn for scalar compare exponents. - (xststdc): New expansion for both single- and - double-precision scalar test for negative value operations. - (*xststdc): New insn for scalar test data class - operation. - (xvxexp): New insn for single- and double-precision - vector extract exponent operation. - (xvxsig): New insn for single- and double-precision - vector extract significand operation. - (xviexp): New insn for single- and double-precision - vector insert exponent operation. - (xvtstdc): New insn for single- and double-precision - vector test data class operation. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document - built-in functions to represent the Power9 binary floating-point - support instructions. - - 2016-08-10 bin cheng - - * doc/sourcebuild.texi (@item vect_cond_mixed): New item. - - 2016-08-10 Alan Lawrence - Renlin Li - Bin Cheng - - * config/aarch64/iterators.md (V_cmp_mixed, v_cmp_mixed): New. - * config/aarch64/aarch64-simd.md (v2di3): Call - gen_vcondv2div2di instead of gen_aarch64_vcond_internalv2div2di. - (aarch64_vcond_internal): Delete pattern. - (aarch64_vcond_internal): Ditto. - (vcond): Ditto. - (vcond): Re-implement using vec_cmp and vcond_mask. - (vcondu): Ditto. - (vcond): New pattern. - (vcondu): New pattern. - (aarch64_cmtst): Revise comment using aarch64_vcond instead - of aarch64_vcond_internal. - - 2016-08-10 Alan Lawrence - Renlin Li - Bin Cheng - - * config/aarch64/aarch64-simd.md (vec_cmp): New pattern. - (vec_cmp): New pattern. - (vec_cmpu): New pattern. - (vcond_mask_): New pattern. - - 2016-08-10 Yuri Rumyantsev - - PR tree-optimization/71734 - * tree-ssa-loop-im.c (ref_indep_loop_p): Add new argument - REF_LOOP, invoke ref_indep_loop_p_1. - (outermost_indep_loop): Pass LOOP argumnet where REF was defined - to ref_indep_loop_p. - (ref_indep_loop_p_1): Fix commentary, add argument REF_LOOP, - combine it with ref_indep_lopp_p_2, update SAFELEN if only REF - is inside LOOP, do not cache dpendence value for loops with - non-zero SAFELEN. - (ref_indep_loop_p_2): Delete function. - (can_sm_ref_p): Pass LOOP as additional argument to - ref_indep_loop_p. - - 2016-08-10 Michael Meissner - - PR target/72853 - * config/rs6000/rs6000.c (mem_operand_ds_form): Add check for op - being an offsettable address. - - 2016-08-10 Martin Liska - - PR gcov-profile/58306 - * tree-profile.c (gimple_init_edge_profiler): Create conditionally - atomic variants of profile update functions. - - 2016-08-10 Martin Liska - - Cherry picked (and modified) from google-4_7 branch - 2012-12-26 Rong Xu - * common.opt (fprofile-update): Add new flag. - * coretypes.h: Define enum profile_update. - * doc/invoke.texi: Document -fprofile-update. - * gcov-io.h: Declare GCOV_TYPE_ATOMIC_FETCH_ADD and - GCOV_TYPE_ATOMIC_FETCH_ADD_FN. - * tree-profile.c (gimple_init_edge_profiler): Generate - also atomic profiler update. - (gimple_gen_edge_profiler): Likewise. - - 2016-08-10 David Malcolm - - * toplev.c (finalize): Set aux_info_file, asm_out_file, and - stack_usage_file to NULL after fclose calls. - - 2016-08-10 Senthil Kumar Selvaraj - - PR target/71873 - * reload.c (push_reload): Compute subreg_in_class for - subregs of constants and plus expressions. Remove special - handling of SYMBOL_REFs. - - 2016-08-10 Alan Modra - - PR target/71680 - * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Return - SImode for TARGET_E500_DOUBLE when given SImode. - - 2016-08-09 David Wohlferd - - * config/i3836/avx512fintrin.h (_mm512_cvtsepi64_epi32): Remove - unused variable __O. - - 2016-08-09 Martin Liska - - * doc/gcov.texi: Change _gcov_dump to __gcov_dump and - _gcov_reset to __gcov_reset. - * doc/gcov-tool.texi: Fix typo. - - 2016-08-09 Martin Liska - - * value-prof.c (gimple_divmod_values_to_profile): Do not - instrument MOD histogram if a value is not a SSA name. - - 2016-08-09 Martin Liska - - * value-prof.c (dump_histogram_value): Swap pow2 and non-pow2 - values. - - 2016-08-09 Renlin Li - - PR middle-end/64971 - * calls.c (prepare_call_address): Convert funexp to Pmode when - necessary. - * config/aarch64/aarch64.md (sibcall): Remove fix for PR 64971. - (sibcall_value): Likewise. - - 2016-08-09 Marek Polacek - - PR c/7652 - * cselib.c (cselib_expand_value_rtx_1): Add return. - * gengtype.c (dbgprint_count_type_at): Likewise. - * hsa-gen.c (gen_hsa_insn_for_internal_fn_call): Likewise. - * reg-stack.c (get_true_reg): Restructure to avoid fallthrough warning. - - 2016-08-09 Martin Jambor - - PR ipa/71981 - * ipa-polymorphic-call.c (get_dynamic_type): Bail out gracefully - if instance is a MEM_REF. - - 2016-08-09 Uros Bizjak - - PR target/72843 - * config/i386/i386.md (*movtf_internal): Use - lra_in_progress || reload_completed instead of !can_create_pseudo_p - in the insn constraint. - (*movxf_internal): Ditto. - (*movdf_internal): Ditto. - (*movsf_internal): Ditto. - - 2016-08-09 Bin Cheng - - PR tree-optimization/72772 - * tree-ssa-loop-niter.c (loop_exits_before_overflow): Check equality - for expanded base. - - 2016-08-09 Bin Cheng - - PR tree-optimization/72772 - * tree-ssa-loop-niter.h (simplify_using_initial_conditions): Delete - parameter STOP. - * tree-ssa-loop-niter.c (tree_simplify_using_condition_1): Delete - parameter STOP and update calls. Move expand_simple_operations - function call from here... - (simplify_using_initial_conditions): ...to here. Delete parameter - STOP. - (tree_simplify_using_condition): Delete parameter STOP. - * tree-scalar-evolution.c (simple_iv_with_niters): Update call to - simplify_using_initial_conditions. - - 2016-08-09 Matthew Fortune - - PR c/65345 - * config/mips/mips.c (mips_atomic_assign_expand_fenv): - Use create_tmp_var_raw instead of create_tmp_var. - - 2016-08-09 Richard Biener - - * tree-ssa-threadbackward.c (profitable_jump_thread_path): - Treat same SSA names related. - - 2016-08-09 Jakub Jelinek - - PR tree-optimization/72824 - * tree-loop-distribution.c (const_with_all_bytes_same): Verify - real_zerop is not negative. - - 2016-08-09 Richard Biener - - PR tree-optimization/71802 - * tree-cfgcleanup.c (cleanup_tree_cfg_bb): Make sure to catch - all merge opportunities with the predecessor. - - 2016-08-09 Richard Biener - - PR ipa/68273 - * ipa-prop.c (ipa_modify_formal_parameters): Build - parameter types with natural alignment also for the - over-aligned case. - - 2016-08-08 Andi Kleen - - * tree-vrp.c (get_single_symbol): Always initialize inv and neg. - - 2016-08-08 David Malcolm - - PR c/64955 - * langhooks-def.h (LANG_HOOKS_RUN_LANG_SELFTESTS): New default - do-nothing langhook. - (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_RUN_LANG_SELFTESTS. - * langhooks.h (struct lang_hooks): Add run_lang_selftests. - * selftest-run-tests.c: Include "tree.h" and "langhooks.h". - (selftest::run_tests): Call lang_hooks.run_lang_selftests. - - 2016-08-08 David Malcolm - - PR bootstrap/72844 - * input.c: Ensure that HAVE_ICONV is defined. - - 2016-08-08 Jakub Jelinek - - PR middle-end/72781 - * omp-low.c (lower_lastprivate_clauses): Set TREE_NO_WARNING on the - private vars for lastprivate and for linear iterator. - - PR middle-end/68762 - * omp-simd-clone.c: Include varasm.h. - (simd_clone_create): Copy over DECL_COMDAT, DECL_WEAK, DECL_EXTERNAL, - DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, DECL_DLLIMPORT_P and for - DECL_ONE_ONLY call make_decl_one_only. Fix up spelling in comment and - update function name. - - 2016-07-29 Pitchumani Sivanupandi - - * config/avr/driver-avr.c (specfiles_doc_url): Remove. - (avr_diagnose_devicespecs_error): Remove. - (avr_devicespecs_file): Remove composing absolute path for specfile - and its verbose info. Remove conditions to check specs-file, - - 2016-08-08 Jakub Jelinek - - PR rtl-optimization/72821 - * lra-spills.c (regno_in_use_p): Don't use BLOCK_FOR_INSN on barriers, - just return false for them. - - 2016-08-08 Alan Modra - - PR target/72771 - * config/rs6000/rs6000.c (toc_relative_expr_p): Allow (lo_sum (high)) - toc refs created during reload. Update function comment. - - 2016-08-08 Alan Modra - - PR target/72802 - * config/rs6000/rs6000.md (mov_hardfloat): Sort - alternatives. Put loads first, then stores, and reg/reg moves - within same class later. Delete attr length. - - 2016-08-08 Alan Modra - - PR target/72802 - * config/rs6000/rs6000.c (mem_operand_gpr): Remove vsx dform test. - (mem_operand_ds_form): New predicate. - * config/rs6000/rs6000-protos.h (mem_operand_ds_form): Declare. - * config/rs6000/constraints.md (wY): Use mem_operand_df_form. - * config/rs6000/predicates.md (offsettable_mem_14bit_operand): Delete. - * config/rs6000/rs6000.md (f32_lm2, f32_sm2): Use wY for SF. - (extendsfdf2_fpr): Replace o constraint with wY. - - 2016-08-07 Jan Hubicka - - * tree-ssa-threadbackward.c: Include tree-inline.h - (profitable_jump_thread_path): Use estimate_num_insns to estimate - size of copied block; for cold paths reduce duplication. - (find_jump_threads_backwards): Remove redundant tests. - (pass_thread_jumps::gate): Enable for -Os. - - 2016-08-07 Jakub Jelinek - - PR c/72816 - * stor-layout.c (layout_decl): Fix up formatting. - (relayout_decl): Allow DECL to be FIELD_DECL. - - 2016-08-07 Alan Modra - - * config/rs6000/rs6000.md (fix_truncsi2): Fix mode of reg. - - 2016-08-07 Kugan Vivekanandarajah - - * data-streamer-in.c (streamer_read_wide_int): New. - (streamer_read_widest_int): Renamed function. - * data-streamer-out.c (streamer_write_wide_int): New - (streamer_write_widest_int): Renamed function. - * lto-streamer-in.c (streamer_read_wi): Renamed and moved to - data-stream-in.c. - (input_cfg): Call renamed function. - * lto-streamer-out.c (streamer_write_wi): Renamed and moved to - data-stream-out.c. - (output_cfg): Call renamed function. - * data-streamer.h: Add declarations. - - 2016-08-08 Prathamesh Kulkarni - - * tree-ssa-ccp.c (extend_mask): New param sgn. - Remove ORing with wi::mask. - (get_default_value): Adjust call to extend_mask to pass sign. - (evaluate_stmt): Likewise. - - 2016-08-06 Jakub Jelinek - - * gcov.c (handle_cycle): Use INTTYPE_MAXIMUM (int64_t) instead of - INT64_MAX. - - 2016-08-06 Prathamesh Kulkarni - - * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Disable - transform if operand's type is pointer to function or method. - - 2016-08-05 Patrick Palka - - PR tree-optimization/18046 - * tree-ssa-threadedge.c: Include cfganal.h. - (simplify_control_statement_condition): If simplifying a - GIMPLE_SWITCH, replace the index operand of the GIMPLE_SWITCH - with the dominating ASSERT_EXPR before handing it off to VRP. - Mention that a CASE_LABEL_EXPR may be returned. - (thread_around_empty_blocks): Adjust to handle - simplify_control_statement_condition() returning a - CASE_LABEL_EXPR. - (thread_through_normal_block): Likewise. - * tree-vrp.c (simplify_stmt_for_jump_threading): Simplify - a switch statement by trying to determine which case label - will be taken. - - 2016-08-05 Vladimir Makarov - - PR rtl-optimization/69847 - * lra-constraints.c (process_invariant_for_inheritance): Save - pattern instead of src. - (remove_inheritance_pseudos): Use the pattern. Add assert. - - 2016-08-05 David Malcolm - - * input.c (string_concat::string_concat): New constructor. - (string_concat_db::string_concat_db): New constructor. - (string_concat_db::record_string_concatenation): New method. - (string_concat_db::get_string_concatenation): New method. - (string_concat_db::get_key_loc): New method. - (class auto_cpp_string_vec): New class. - (get_substring_ranges_for_loc): New function. - (get_source_range_for_substring): New function. - (get_num_source_ranges_for_substring): New function. - (class selftest::lexer_test_options): New class. - (struct selftest::lexer_test): New struct. - (class selftest::ebcdic_execution_charset): New class. - (selftest::ebcdic_execution_charset::s_singleton): New variable. - (selftest::lexer_test::lexer_test): New constructor. - (selftest::lexer_test::~lexer_test): New destructor. - (selftest::lexer_test::get_token): New method. - (selftest::assert_char_at_range): New function. - (ASSERT_CHAR_AT_RANGE): New macro. - (selftest::assert_num_substring_ranges): New function. - (ASSERT_NUM_SUBSTRING_RANGES): New macro. - (selftest::assert_has_no_substring_ranges): New function. - (ASSERT_HAS_NO_SUBSTRING_RANGES): New macro. - (selftest::test_lexer_string_locations_simple): New function. - (selftest::test_lexer_string_locations_ebcdic): New function. - (selftest::test_lexer_string_locations_hex): New function. - (selftest::test_lexer_string_locations_oct): New function. - (selftest::test_lexer_string_locations_letter_escape_1): New function. - (selftest::test_lexer_string_locations_letter_escape_2): New function. - (selftest::test_lexer_string_locations_ucn4): New function. - (selftest::test_lexer_string_locations_ucn8): New function. - (selftest::uint32_from_big_endian): New function. - (selftest::test_lexer_string_locations_wide_string): New function. - (selftest::uint16_from_big_endian): New function. - (selftest::test_lexer_string_locations_string16): New function. - (selftest::test_lexer_string_locations_string32): New function. - (selftest::test_lexer_string_locations_u8): New function. - (selftest::test_lexer_string_locations_utf8_source): New function. - (selftest::test_lexer_string_locations_concatenation_1): New - function. - (selftest::test_lexer_string_locations_concatenation_2): New - function. - (selftest::test_lexer_string_locations_concatenation_3): New - function. - (selftest::test_lexer_string_locations_macro): New function. - (selftest::test_lexer_string_locations_stringified_macro_argument): - New function. - (selftest::test_lexer_string_locations_non_string): New function. - (selftest::test_lexer_string_locations_long_line): New function. - (selftest::test_lexer_char_constants): New function. - (selftest::input_c_tests): Call the new test functions once per - case within the line_table test matrix. - * input.h (struct string_concat): New struct. - (struct location_hash): New struct. - (class string_concat_db): New class. - * substring-locations.h: New header. - - 2016-08-05 Patrick Palka - - PR tree-optimization/72810 - * tree-vrp.c (simplify_switch_using_ranges): Avoid changing - the type of the case labels when truncating. - - 2016-08-05 James Greenhalgh - - PR Target/72819 - * config/aarch64/aarch64.h (aarch64_fp16_type_node): Declare. - (aarch64_fp16_ptr_type_node): Likewise. - * config/aarch64/aarch64-simd-builtins.c - (aarch64_fp16_ptr_type_node): Define. - (aarch64_init_fp16_types): New, refactored out of... - (aarch64_init_builtins): ...here, update to call - aarch64_init_fp16_types. - * config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr): Handle - HFmode. - (aapcs_vfp_sub_candidate): Likewise. - - 2016-08-05 Martin Liska - Joshua Cranmer - - * gcov.c (line_t::has_block): New function. - (enum loop_type): New enum. - (handle_cycle): New function. - (unblock): Likewise. - (circuit): Likewise. - (get_cycles_count): Likewise. - (accumulate_line_counts): Use new loop detection algorithm. - - 2016-08-05 Martin Liska - - * gcov.c (output_intermediate_file): Rename - function_info::line_next to next_file_fn. - (process_file): Likewise. - (read_graph_file): Likewise. - (accumulate_line_counts): Likewise. - (output_lines): Likewise. - - 2016-08-05 Richard Biener - - * tree-ssa-threadupdate.c (thread_block_1): Remove unnecessary - restriction on threading to a loop header. - - 2016-08-05 Richard Biener - - * tree-cfgcleanup.c (tree_forwarder_block_p): Use bb_loop_header_p. - * cfghooks.c (force_nonfallthru): If we ended up splitting a latch - adjust loop info accordingly. - - 2016-08-05 Kugan Vivekanandarajah - - * tree-vrp.c (extract_range_basic): Check cfun->after_inlining - before folding call to __builtin_constant_p with parameters to false. - - 2016-08-05 Alan Modra - - * config/rs6000/rs6000.c (rs6000_preferred_reload_class): Delete - code accidentally committed 2016-05-02 providing class when given - NO_REGS. - - 2016-08-04 Patrick Palka - - * tree-vrp.c (simplify_switch_using_ranges): Try to truncate - the case label ranges that partially overlap with OP's value - range. - - 2016-08-04 Uros Bizjak - - PR target/72805 - * config/i386/avx512fintrin.h (_mm512_cmp_epi32_mask) [!__OPTIMIZE__]: - Cast builtin function result to __mmask16 instead of __mmask8. - (_mm512_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto. - (_mm512_mask_cmp_epi32_mask) [!__OPTIMIZE__]: Ditto. - (_mm512_mask_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto. - - 2016-08-04 David Malcolm - - * selftest.h (ASSERT_TRUE): Reimplement in terms of... - (ASSERT_TRUE_AT): New macro. - (ASSERT_FALSE): Reimplement in terms of... - (ASSERT_FALSE_AT): New macro. - (ASSERT_STREQ_AT): Fix typo in comment. - - 2016-08-04 Patrick Palka - - * gimple.c (preprocess_case_label_vec_for_gimple): When the case - labels are exhaustive, designate the label with the widest - range to be the default label. - - 2016-08-04 Andrew Pinski - - * config/aarch64/aarch64.c (thunderx_vector_cost): New variable. - (thunderx_tunings): Use thunderx_vector_cost instead of - generic_vector_cost. - - 2016-08-04 Martin Liska - - * gcov.c (main): Fix GNU coding style. - (output_intermediate_file): Likewise. - (process_file): Likewise. - (generate_results): Likewise. - (release_structures): Likewise. - (create_file_names): Likewise. - (find_source): Likewise. - (read_graph_file): Likewise. - (find_exception_blocks): Likewise. - (canonicalize_name): Likewise. - (make_gcov_file_name): Likewise. - (mangle_name): Likewise. - (accumulate_line_counts): Likewise. - (output_branch_count): Likewise. - (read_line): Likewise. - - 2016-08-04 Bernd Edlinger - - PR rtl-optimization/71779 - * emit-rtl.c (set_reg_attrs_from_value): Only propagate REG_POINTER, - if the value was sign-extended according to POINTERS_EXTEND_UNSIGNED - or if it was truncated. - - PR rtl-optimization/70903 - * cse.c (cse_insn): If DEST is a paradoxical SUBREG, don't record DEST. - - 2016-08-04 Kugan Vivekanandarajah - - * tree-inline.c (remap_ssa_name): Check for POINTER_TYPE_P before - accessing SSA_NAME_PTR_INFO. - - 2016-08-04 Georg-Johann Lay - - PR 70677 - * common/config/avr/avr-common.c (avr_option_optimization_table) - [OPT_LEVELS_ALL]: Turn off -fcaller-saves. - - 2016-08-04 Georg-Johann Lay - - PR 55181 - * config/avr/avr.md: New pattern to work around do_store_flag - generating shift instructions for bit extractions. - - 2016-08-04 Kugan Vivekanandarajah - - * tree-vrp.c (set_value_range): Use vrp_equiv_obstack with - BITMAP_ALLOC. - (add_equivalence): Likewise. - (get_value_range): Allocate value range with vrp_value_range_pool. - (vrp_initialize): Initialize vrp_equiv_obstack for equiv allocation. - (vrp_finalize): Relase vrp_equiv_obstack and vrp_value_range_pool. - - 2016-08-03 Peter Bergner - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Make LRA - the default for the rs6000 port. - - 2016-08-03 Bernd Edlinger - - PR middle-end/71876 - * calls.c (special_function_p): Remove special handling of - "setjmp_syscall", "qsetjmp", "longjmp", "siglongjmp" and the - prefix "__x". Recognize "savectx", "vfork" and "getcontext" only - without prefix. Remove potentially unsafe ECF_LEAF and ECF_NORETURN. - - 2016-08-03 Vladimir Makarov - - PR middle-end/72778 - * lra-spills.c (regno_in_use_p): Check bb and regno modification. - Don't stop on regular insns. - - 2016-08-03 Nathan Sidwell - - * config/nvptx/nvptx.c (nvptx_declare_function_name): Round frame - size to DImode boundary. - (nvptx_propagate): Likewise. - - 2016-08-03 Alan Modra - - * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Make scalar - float access depend on TARGET_EFFICIENT_UNALIGNED_VSX. - * config/rs6000/rs6000.opt (-mefficient-unaligned-vsx): Renamed - from -mefficient-unaligned-vector. Note that this affects fp too. - - 2016-08-03 Alan Modra - - * config/rs6000/rs6000.c (rs6000_rtx_costs): Make unaligned mem - cost more. - - 2016-08-03 Alan Modra - - * config/rs6000/rs6000.md (fix_truncsi2): Force source operand - to a reg. Localize vars. - - 2016-08-03 Alan Modra - - * config/rs6000/rs6000.opt: Remove negatives from help strings - and comments. - - 2016-08-03 Alan Modra - - * config/rs6000/rs6000.c (rs6000_secondary_reload_direct_move): - Delete duplicated code. - - 2016-08-02 Vladimir Makarov - - PR middle-end/72778 - * lra-spills.c (regno_in_use_p): New. - (lra_final_code_change): Use it. - - 2016-08-02 Vladimir Makarov - - PR rtl-optimization/69847 - * lra-int.h (struct lra-reg): Use restore_rtx instead of - restore_regno. - (lra_rtx_hash): New. - * lra.c (initialize_lra_reg_info_element): Use restore_rtx instead - of restore_regno. - (lra_rtx_hash): Rename and move lra-remat.c::rtx_hash. - * lra-remat.c (rtx_hash): Rename and Move to lra.c. - * lra-spills.c (lra_final_code_change): Don't delete insn when the - next insn is USE with the same reg as the current insn source. - * lra-constraints.c (curr_insn_transform): Use restore_rtx instead - of restore_regno. - (lra_constraints_init): Call initiate_invariants. - (lra_constraints_finish): Call finish_invariants. - (struct invariant, invariant_t, invariant_ptr_t): New. - (const_invariant_ptr_t, invariants, invariants_pool): New. - (invariant_table, invariant_hash, invariant_eq_p): New. - (insert_invariant, initiate_invariants, finish_invariants): New. - (clear_invariants, invalid_invariant_regs): New. - (inherit_reload_reg, split_reg, fix_bb_live_info): Use restore_rtx - instead of restore_regno. - (invariant_p, process_invariant_for_inheritance): New. - (inherit_in_ebb): Implement invariant inheritance. - (lra_inheritance): Initialize and finalize invalid_invariant_regs. - (remove_inheritance_pseudos): Implement undoing invariant - inheritance. - (undo_optional_reloads, lra_undo_inheritance): Use restore_rtx - instead of restore_regno. - * lra-assigns.c (regno_live_length): New. - (reload_pseudo_compare_func): Use regno_live_length. - (assign_by_spills): Use restore_rtx instead of restore_regno. - (lra_assign): Ditto. Initiate regno_live_length. - - 2016-02-08 James Greenhalgh - - * config/aarch64/arm_neon.h (vminnm_f64): Add back missing 'f' from - __builtin_aarch64_fmindf. - - 2016-08-02 Bin Cheng - - PR tree-optimization/34114 - * tree-ssa-loop-niter.c (number_of_iterations_ne): Prove no-overflow - information for more control IVs. - - 2016-08-02 Bin Cheng - - PR tree-optimization/34114 - * fold-const.c (multiple_of_p): Improve MULT_EXPR, PLUS_EXPR, - PLUS_EXPR case. Handle SSA_NAME case. - - 2016-08-02 Tamar Christina - - * config/aarch64/aarch64-simd-builtins.def - (__builtin_aarch64_fmindf): Change BUILTIN_VDQF to BUILTIN_VDQF_DF. - (__builtin_aarch64_fmaxdf): Likewise. - (__builtin_aarch64_smin_nandf): Likewise. - (__builtin_aarch64_smax_nandf): Likewise. - * config/aarch64/aarch64-simd.md (3): Remove. - * config/aarch64/aarch64.md (3): Rename to... - (3): ...this. - * config/aarch64/arm_neon.h (vmaxnm_f64): New. - (vminnm_f64): Likewise. - (vmin_f64): Likewise. - (vmax_f64): Likewise. - * config/aarch64/iterators.md (FMAXMIN): Merge with... - (FMAXMIN_UNS): ...this. - (fmaxmin): Merged with - (fmaxmin_op): ...this... - (maxmin_uns_op): ...in to this. - - 2016-08-01 Michael Meissner - - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Add support for vec_extract on vector float, vector int, vector - short, and vector char vector types. - * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add - vector float, vector int, vector short, and vector char - optimizations on 64-bit ISA 2.07 systems for both constant and - variable element numbers. - (rs6000_split_vec_extract_var): Likewise. - * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Allow SFmode to be - Altivec registers on ISA 2.07 and above. - (vsx_extract_v4sf): Delete alternative that hard coded element 0, - which never was matched due to the split occuring before register - allocation (and the code would not have worked on little endian - systems if it did match). Allow extracts to go to the Altivec - registers if ISA 2.07 (power8). Change from using "" around the - C++ code to using {}'s. - (vsx_extract_v4sf__load): New insn to optimize vector float - vec_extracts when the vector is in memory. - (vsx_extract_v4sf_var): New insn to optimize vector float - vec_extracts when the element number is variable on 64-bit ISA - 2.07 systems. - (vsx_extract_, VSX_EXTRACT_I iterator): Add optimizations - for 64-bit ISA 2.07 as well as ISA 3.0. - (vsx_extract__p9, VSX_EXTRACT_I iterator): Likewise. - (vsx_extract__p8, VSX_EXTRACT_I iterator): Likewise. - (vsx_extract__load, VSX_EXTRACT_I iterator): New insn to - optimize vector int, vector short, and vector char vec_extracts - when the vector is in memory. - (vsx_extract__var, VSX_EXTRACT_I iterator): New insn to - optimize vector int, vector short, and vector char vec_extracts - when the element number is variable. - - 2016-08-01 Georg-Johann Lay - - PR target/71948 - * config/avr/avr.c (AVR_SYMBOL_FLAG_TINY_PM): Use a value that - does not overlap with other symbol flags. - - 2016-08-01 Wilco Dijkstra - - * config/aarch64/aarch64.h (aarch64_frame): - Remove padding0 and hardfp_offset. Add locals_offset, - initial_adjust, callee_adjust, callee_offset and final_adjust. - * config/aarch64/aarch64.c (aarch64_layout_frame): - Remove unused padding0 and hardfp_offset initializations. - Choose frame layout and set frame variables accordingly. - Use INVALID_REGNUM instead of FIRST_PSEUDO_REGISTER. - (aarch64_push_regs): Use INVALID_REGNUM, not FIRST_PSEUDO_REGISTER. - (aarch64_pop_regs): Likewise. - (aarch64_expand_prologue): Remove all decision code, just emit - prolog according to frame variables. - (aarch64_expand_epilogue): Remove all decision code, just emit - epilog according to frame variables. - (aarch64_initial_elimination_offset): Use offset to local/arg area. - - 2015-08-01 H.J. Lu - - PR target/72748 - * config/i386/i386.c (timode_scalar_chain::convert_insn): Call - fix_debug_reg_uses after changing source register mode to - V1TImode if source register is undefined. - - 2015-08-01 Alan Hayward - - PR tree-optimization/71818 - * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Don't advance IVs - with non invariant evolutions - - 2016-08-01 Georg-Johann Lay - - PR target/72767 - * config/avr/avr.md (length) [branch]: Correct insn length - attribute for forward branches. - - 2016-08-01 Georg-Johann Lay - - * doc/extend.texi (AVR Built-in Functions): Document - __builtin_avr_nops. - * config/avr/builtins.def (NOPS): New. - * config/avr/avr.c (avr_expand_nops): New static function. - (avr_expand_builtin): Use it to handle AVR_BUILTIN_NOPS. - - 2016-08-01 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_classify_address): Use DImode when - performing aarch64_offset_7bit_signed_scaled_p check for TImode LDP/STP - addresses. - - 2016-08-01 Virendra Pathak - - * config/aarch64/aarch64.c (vulcan_tunings): Update - vulcan L1 cache_line_size. - - 2016-07-30 Michael Meissner - - * config/rs6000/rs6000-protos.h (rs6000_adjust_vec_address): New - function that takes a vector memory address, a hard register, an - element number and a temporary base register, and recreates an - address that points to the appropriate element within the vector. - * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Likewise. - (rs6000_split_vec_extract_var): Add support for the target of a - vec_extract with variable element number being a scalar memory - location. - (rtx_is_swappable_p): VLSO insns (UNSPEC_VSX_VSLOW) are not - swappable. - * config/rs6000/vsx.md (vsx_extract__load): Replace - vsx_extract__load insn with a new insn that optimizes - storing either element to a memory location, using scratch - registers to pick apart the vector and reconstruct the address. - (vsx_extract___load): Likewise. - (vsx_extract__store): Rework alternatives to more correctly - support Altivec registers. Add support for ISA 3.0 Altivec d-form - store instruction. - (vsx_extract__var): Add support for extracting a variable - element number from memory. - - 2016-07-29 Georg-Johann Lay - - * config/avr/avr.c (avr_out_compare): Use const0_rtx instead of 0 - when testing for compares against constants of the form 0xabab. - - 2016-07-29 Bin Cheng - - PR tree-optimization/57558 - * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks): New - function. - (vect_loop_versioning): Support versioning with niter assumptions. - * tree-vect-loop.c (tree-ssa-loop.h): Include header file. - (vect_get_loop_niters): New parameter. Reimplement to support - assumptions in loop niter info. - (vect_analyze_loop_form_1, vect_analyze_loop_form): Ditto. - (new_loop_vec_info): Init LOOP_VINFO_NITERS_ASSUMPTIONS. - (vect_estimate_min_profitable_iters): Use LOOP_REQUIRES_VERSIONING. - Support loop versioning for niters. - * tree-vectorizer.c (tree-ssa-loop-niter.h): Include header file. - (vect_free_loop_info_assumptions): New function. - (vectorize_loops): Free loop niter info for loops with flag - LOOP_F_ASSUMPTIONS set if vectorization failed. - * tree-vectorizer.h (struct _loop_vec_info): New field - num_iters_assumptions. - (LOOP_VINFO_NITERS_ASSUMPTIONS): New macro. - (LOOP_REQUIRES_VERSIONING_FOR_NITERS): New macro. - (LOOP_REQUIRES_VERSIONING): New macro. - (vect_free_loop_info_assumptions): New decl. - - 2016-07-29 Bin Cheng - - * cfgloop.h (struct loop): New field constraints. - (LOOP_C_INFINITE, LOOP_C_FINITE): New macros. - (loop_constraint_set, loop_constraint_clr, loop_constraint_set_p): New - functions. - * cfgloop.c (alloc_loop): Initialize new field. - * cfgloopmanip.c (copy_loop_info): Copy constraints. - * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions): - Adjust niter analysis wrto loop constraints. - * doc/loop.texi (@node Number of iterations): Add description for loop - constraints. - - 2016-07-29 Marek Polacek - - PR c/7652 - * config/i386/i386.c (ix86_expand_args_builtin): Add break. - (ix86_expand_round_builtin): Likewise. - - 2016-07-29 Segher Boessenkool - Georg-Johann Lay - - PR rtl-optimization/71976 - * combine.c (get_last_value): Return 0 if the argument for which - the function is called has a wider mode than the recorded value. - - 2016-07-29 Marek Polacek - - PR c/7652 - * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Add break. - (altivec_expand_st_builtin): Likewise. - - 2016-07-29 Georg-Johann Lay - - * config/avr/avr.md (addqi3) [cc]: Revert glitch in insn attribute - introduced in r238381. - - 2016-07-29 Kugan Vivekanandarajah - - PR middle-end/68217 - * tree-vrp.c (extract_range_from_binary_expr_1): In case of signed - & sign-bit-CST, generate [-INF, 0] instead of [-INF, INF]. - - 2016-07-28 Michael Meissner - - * config/rs6000/rs6000-protos.h (rs6000_split_vec_extract_var): - New declaration. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Add support for vec_extract of vector double or vector long having - a variable element number on 64-bit ISA 2.07 systems or newer. - * config/rs6000/rs6000.c (rs6000_expand_vector_extract): - Likewise. - (rs6000_split_vec_extract_var): New function to split a - vec_extract built-in function with variable element number. - (rtx_is_swappable_p): Variable vec_extracts and shifts are not - swappable. - * config/rs6000/vsx.md (UNSPEC_VSX_VSLO): New unspec. - (UNSPEC_VSX_EXTRACT): Likewise. - (vsx_extract_, VSX_D iterator): Fix constraints to allow - direct move instructions to be generated on 64-bit ISA 2.07 - systems and newer, and to take advantage of the ISA 3.0 MFVSRLD - instruction. - (vsx_vslo_): New insn to do VSLO on V2DFmode and V2DImode - arguments for vec_extract variable element. - (vsx_extract__var, VSX_D iterator): New insn to support - vec_extract with variable element on V2DFmode and V2DImode - vectors. - * config/rs6000/rs6000.h (TARGET_VEXTRACTUB): Remove - -mupper-regs-df requirement, since it isn't needed. - (TARGET_DIRECT_MOVE_64BIT): New macro to say whether we can - do direct moves on 64-bit systems, which allows optimization of - vec_extract on 64-bit ISA 2.07 systems and newer. - - 2016-07-28 Kristina Martsenko - 2016-07-28 Wilco Dijkstra - - * config/aarch64/aarch64.md - (zero_extend2_aarch64): Change output - statement and type. - (qihi2_aarch64): Likewise, and split into two. - (extendqihi2_aarch64): New. - (zero_extendqihi2_aarch64): New. - * config/aarch64/iterators.md (ldrxt): Remove. - * config/aarch64/aarch64.c (aarch64_rtx_costs): Change cost of - uxtb/uxth. - - 2016-07-28 Kristina Martsenko - - * config/aarch64/aarch64.c (aarch64_rtx_costs): Fix cost of zero extend. - - 2016-07-28 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_pushwb_pair_reg): Rename. - (aarch64_push_reg): New function to push 1 or 2 registers. - (aarch64_pop_reg): New function to pop 1 or 2 registers. - (aarch64_expand_prologue): Use aarch64_push_regs. - (aarch64_expand_epilogue): Use aarch64_pop_regs. - - 2016-07-28 Yuri Rumyantsev - - PR tree-optimization/71734 - * tree-ssa-loop-im.c (ref_indep_loop_p_1): Pass value of safelen - attribute instead of REF_LOOP and use it. - (ref_indep_loop_p_2): Use SAFELEN argument instead of REF_LOOP and - set it for Loops having non-zero safelen attribute. - (ref_indep_loop_p): Pass zero as initial value for safelen. - - 2016-07-28 Ilya Enkovich - - PR middle-end/72657 - PR target/72683 - * tree-chkp.c (chkp_retbnd_call_by_val): Check for instrumentation - call using chkp_gimple_call_builtin_p. - (chkp_copy_bounds_for_assign): Likewise. - - 2016-07-28 Trevor Saunders - - * config/alpha/alpha.c (alpha_adjust_cost): Adjust. - * config/arm/arm-protos.h (struct tune_params): Likewise. - * config/arm/arm.c (xscale_sched_adjust_cost): Likewise. - (cortex_a9_sched_adjust_cost): Likewise. - (fa726te_sched_adjust_cost): Likewise. - (arm_adjust_cost): Likewise. - * config/bfin/bfin.c (bfin_adjust_cost): Likewise. - * config/c6x/c6x.c (c6x_adjust_cost): Likewise. - * config/epiphany/epiphany.c (epiphany_adjust_cost): Likewise. - * config/i386/i386.c (ix86_adjust_cost): Likewise. - * config/ia64/ia64.c: Likewise. - * config/m68k/m68k.c: Likewise. - * config/mep/mep.c (mep_adjust_cost): Likewise. - * config/microblaze/microblaze.c (microblaze_adjust_cost): - * Likewise. - * config/mips/mips.c (mips_adjust_cost): Likewise. - * config/mn10300/mn10300.c (mn10300_adjust_sched_cost): - * Likewise. - * config/pa/pa.c (pa_adjust_cost): Likewise. - * config/rs6000/rs6000.c (rs6000_adjust_cost): Likewise. - (rs6000_debug_adjust_cost): Likewise. - * config/sh/sh.c (sh_adjust_cost): Likewise. - * config/sparc/sparc.c (supersparc_adjust_cost): Likewise. - (hypersparc_adjust_cost): Likewise. - (sparc_adjust_cost): Likewise. - * config/spu/spu.c (spu_sched_adjust_cost): Likewise. - * config/tilegx/tilegx.c (tilegx_sched_adjust_cost): Likewise. - * config/tilepro/tilepro.c (tilepro_sched_adjust_cost): - * Likewise. - * config/visium/visium.c (visium_adjust_cost): Likewise. - * doc/tm.texi: Regenerate. - * haifa-sched.c (dep_cost_1): Adjust. - * target.def: Merge adjust_cost and adjust_cost_2. - - 2016-07-28 Trevor Saunders - - * haifa-sched.c (add_to_speculative_block): Make twins a vector. - - 2016-07-28 Trevor Saunders - - * store-motion.c (struct st_expr): Make pattern_regs a vector. - (extract_mentioned_regs): Append to a vector instead of - returning a rtx_expr_list. - (st_expr_entry): Adjust. - (free_st_expr_entry): Likewise. - (store_ops_ok): Likewise. - (store_killed_in_insn): Likewise. - (find_moveable_store): Likewise. - - 2016-07-28 Martin Liska - - PR gcov-profile/68025 - * tree-profile.c (tree_profiling): Respect - no_profile_instrument_function attribute. - * doc/extend.texi: Document no_profile_instrument_function - attribute. - - 2016-07-28 Martin Liska - - PR rtl-optimization/70944 - * combine.c (make_compound_operation): - Do not allow make_compound_operation for vector mode - - 2016-07-28 Kugan Vivekanandarajah - - PR middle-end/71994 - * tree-ssa-reassoc.c (maybe_optimize_range_tests): Check tcc_comparison - before calling get_ops. - - 2016-07-27 Bernd Edlinger - - * defaults.h (LOG2_BITS_PER_UNIT): Move from here... - * tree.h (LOG2_BITS_PER_UNIT): ...to here. - (BITS_PER_UNIT_LOG): Remove. - (int_bit_position): Use LOG2_BITS_PER_UNIT instead of BITS_PER_UNIT_LOG. - * expr.c (expand_assignment): Likewise. - * stor-layout.c (initialize_sizetypes): Likewise. - - 2016-07-27 Michael Meissner - - * config/rs6000/vector.md (vec_extract): Change the calling - signature of rs6000_expand_vector_extract so that the element - number is a RTX instead of a constant integer. - * config/rs6000/rs6000-protos.h (rs6000_expand_vector_extract): - Likewise. - * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Likewise. - (altivec_expand_vec_ext_builtin): Likewise. - * config/rs6000/altivec.md (reduc_plus_scal_): Likewise. - * config/rs6000/vsx.md (vsx_extract_): Fix spelling of the - MFVSRLD instruction. - - 2016-07-27 David Malcolm - - * input.c (get_pure_location): Move here from tree.c. - (make_location): Likewise. Add header comment. - (selftest::test_accessing_ordinary_linemaps): Verify - pure_location_p, make_location, get_location_from_adhoc_loc and - get_range_from_loc. - * input.h (get_pure_location): Move declaration here from tree.h. - (get_finish): Likewise for inline function. - (make_location): Likewise for declaration. - * tree.c (get_pure_location): Move to input.c. - (make_location): Likewise. - * tree.h (get_pure_location): Move declaration to tree.h. - (get_finish): Likewise for inline function. - (make_location): Likewise for declaration. - - 2016-07-27 Prathamesh Kulkarni - - PR middle-end/71078 - * match.pd (x / abs(x) -> copysign(1.0, x)): New pattern. - - 2016-07-27 David Malcolm - - * system.h (STATIC_ASSERT): Use static_assert if building - with C++11 onwards. - - 2016-07-27 Richard Biener - - PR tree-optimization/72517 - * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): - Revert change to not compute read-read dependences. - - 2016-07-27 Richard Biener - - * predict.c (set_even_probabilities): Make nedges unsigned. - - 2016-07-27 Martin Liska - - * predict.c (set_even_probabilities): Handle unlikely edges. - (combine_predictions_for_bb): Likewise. - - 2016-07-26 Michael Meissner - - PR target/71869 - * config/rs6000/rs6000.c (rs6000_generate_compare): Rework - __float128 support when we don't have hardware support, so that - the IEEE built-in functions like isgreater, first call __unordkf3 - to make sure neither operand is a NaN, and if both operands are - ordered, do the normal comparison. - - 2016-07-26 Patrick Palka - - * tree-vrp.c (dump_asserts_for): Print loc->expr instead of - name. - (extract_code_and_val_from_cond_with_ops): Verify that name is - either cond_op0 or cond_op1. - - 2016-07-26 Patrick Palka - - PR tree-optimization/18046 - * genmodes.c (emit_mode_size_inline): Emit an assert that - verifies that mode is a valid array index. - (emit_mode_nuinits_inline): Likewise. - (emit_mode_inner_inline): Likewise. - (emit_mode_unit_size_inline): Likewise. - (emit_mode_unit_precision_inline): Likewise. - * tree-vrp.c: Include params.h. - (find_switch_asserts): Register edge assertions for the default - label which correspond to the anti-ranges of each case label. - * params.def (PARAM_MAX_VRP_SWITCH_ASSERTIONS): New. - * doc/invoke.texi: Document it. - - 2016-07-26 Bill Schmidt - - * gimple-ssa-strength-reduction.c (slsr_process_phi): Remove dead - and unnecessary call to gimple_bb. - - 2016-07-26 Richard Biener - - PR rtl-optimization/71984 - * simplify-rtx.c (simplify_subreg): Use GET_MODE_SIZE and prepare - for VOIDmode. - - 2016-07-26 Richard Biener - - PR middle-end/72517 - * expmed.c (extract_bit_field_1): Constrain the vector mode - with element size matching the extraction mode size when - choosing a better vector mode to do the extraction from. - - 2016-07-26 Richard Biener - Prathamesh Kulkarni - - PR middle-end/70920 - * match.pd ((intptr)x eq/ne CST to x eq/ne (typeof x) CST): New - pattern. - - 2016-07-26 Trevor Saunders - - * tree-ssa-structalias.c (struct scc_info): Change types of - members to auto_sbitmap and auto_vec. - (scc_info::scc_info): New constructor. - (scc_info::~scc_info): New destructor. - (init_scc_info): Remove. - (free_scc_info): Remove. - (find_indirect_cycles): Adjust. - (perform_var_substitution): Likewise. - (free_var_substitution_info): Likewise. - - 2016-07-26 Trevor Saunders - - * tree-outof-ssa.c (struct elim_graph): Change type of members - to auto_vec and auto_sbitmap. - (elim_graph::elim_graph): New constructor. - (delete_elim_graph): Remove. - (expand_phi_nodes): Adjust. - - 2016-07-26 Trevor Saunders - - * tree-outof-ssa.c (struct elim_graph): Remove typedef. - (new_elim_graph): Adjust. - (clear_elim_graph): Likewise. - (delete_elim_graph): Likewise. - (elim_graph_size): Likewise. - (elim_graph_add_node): Likewise. - (elim_graph_add_edge): Likewise. - (elim_graph_remove_succ_edge): Likewise. - (eliminate_name): Likewise. - (eliminate_build): Likewise. - (elim_forward): Likewise. - (elim_unvisited_predecessor): Likewise. - (elim_backward): Likewise. - (elim_create): Likewise. - (eliminate_phi): Likewise. - (expand_phi_nodes): Likewise. - - 2016-07-26 Trevor Saunders - - * bt-load.c (compute_out): Use auto_sbitmap class. - (link_btr_uses): Likewise. - * cfganal.c (mark_dfs_back_edges): Likewise. - (post_order_compute): Likewise. - (inverted_post_order_compute): Likewise. - (pre_and_rev_post_order_compute_fn): Likewise. - (single_pred_before_succ_order): Likewise. - * cfgexpand.c (pass_expand::execute): Likewise. - * cfgloop.c (verify_loop_structure): Likewise. - * cfgloopmanip.c (fix_bb_placements): Likewise. - (remove_path): Likewise. - (update_dominators_in_loop): Likewise. - * cfgrtl.c (break_superblocks): Likewise. - * ddg.c (check_sccs): Likewise. - (create_ddg_all_sccs): Likewise. - * df-core.c (df_worklist_dataflow): Likewise. - * dse.c (dse_step3): Likewise. - * except.c (eh_region_outermost): Likewise. - * function.c (thread_prologue_and_epilogue_insns): Likewise. - * gcse.c (prune_expressions): Likewise. - (prune_insertions_deletions): Likewise. - * gimple-ssa-backprop.c (backprop::~backprop): Likewise. - * graph.c (draw_cfg_nodes_no_loops): Likewise. - * ira-lives.c (remove_some_program_points_and_update_live_ranges): Likewise. - * lcm.c (compute_earliest): Likewise. - (compute_farthest): Likewise. - * loop-unroll.c (unroll_loop_constant_iterations): Likewise. - (unroll_loop_runtime_iterations): Likewise. - (unroll_loop_stupid): Likewise. - * lower-subreg.c (decompose_multiword_subregs): Likewise. - * lra-lives.c: Likewise. - * lra.c (lra): Likewise. - * modulo-sched.c (schedule_reg_moves): Likewise. - (optimize_sc): Likewise. - (get_sched_window): Likewise. - (sms_schedule_by_order): Likewise. - (check_nodes_order): Likewise. - (order_nodes_of_sccs): Likewise. - (order_nodes_in_scc): Likewise. - * recog.c (split_all_insns): Likewise. - * regcprop.c (pass_cprop_hardreg::execute): Likewise. - * reload1.c (reload): Likewise. - * sched-rgn.c (haifa_find_rgns): Likewise. - (split_edges): Likewise. - (compute_trg_info): Likewise. - * sel-sched.c (init_seqno): Likewise. - * store-motion.c (remove_reachable_equiv_notes): Likewise. - * tree-into-ssa.c (update_ssa): Likewise. - * tree-ssa-live.c (live_worklist): Likewise. - * tree-ssa-loop-im.c (fill_always_executed_in): Likewise. - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): - * Likewise. - (try_peel_loop): Likewise. - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): - * Likewise. - * tree-ssa-pre.c (compute_antic): Likewise. - * tree-ssa-reassoc.c (undistribute_ops_list): Likewise. - * tree-stdarg.c (reachable_at_most_once): Likewise. - * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Likewise. - * var-tracking.c (vt_find_locations): Likewise. - - 2016-07-26 Trevor Saunders - - * sbitmap.h (auto_sbitmap): New class. - - 2016-07-26 Alan Modra - - PR target/72103 - * config/rs6000/rs6000.c (rs6000_secondary_reload): Initialize - sri->t_icode. - - 2016-07-25 David Malcolm - - * input.c (selftest::temp_source_file::temp_source_file): Fix - missing "%s" in fprintf. - - 2016-07-25 John David Anglin - - PR middle-end/71732 - * cselib.c (cselib_process_insn): Invalidate argument slots for - const/pure calls. - - 2016-07-25 Jiong Wang - - * config/aarch64/arm_neon.h (vfmah_lane_f16, vfmah_laneq_f16, - vfmsh_lane_f16, vfmsh_laneq_f16, vmulh_lane_f16, vmulh_laneq_f16, - vmulxh_lane_f16, vmulxh_laneq_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-simd-builtins.def: Register new builtins. - * config/aarch64/aarch64.md (fma, fnma): Support HF. - * config/aarch64/arm_fp16.h (vfmah_f16, vfmsh_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-simd-builtins.def: Register new builtins. - * config/aarch64/aarch64.md (hf3): - New. - (hf3): Likewise. - (add3): Likewise. - (sub3): Likewise. - (mul3): Likewise. - (div3): Likewise. - (*div3): Likewise. - (3): Extend to HF. - * config/aarch64/aarch64-simd.md (aarch64_rsqrts): Likewise. - (fabd3): Likewise. - (3): Likewise. - (3): Likewise. - (aarch64_fmulx): Likewise. - (aarch64_fac): Likewise. - (aarch64_frecps): Likewise. - (hfhi3): New. - (hihf3): Likewise. - * config/aarch64/iterators.md (VHSDF_SDF): Delete. - (VSDQ_HSDI): Support HI. - (fcvt_target, FCVT_TARGET): Likewise. - * config/aarch64/arm_fp16.h (vaddh_f16, vsubh_f16, vabdh_f16, - vcageh_f16, vcagth_f16, vcaleh_f16, vcalth_f16, vceqh_f16, vcgeh_f16, - vcgth_f16, vcleh_f16, vclth_f16, vcvth_n_f16_s16, vcvth_n_f16_s32, - vcvth_n_f16_s64, vcvth_n_f16_u16, vcvth_n_f16_u32, vcvth_n_f16_u64, - vcvth_n_s16_f16, vcvth_n_s32_f16, vcvth_n_s64_f16, vcvth_n_u16_f16, - vcvth_n_u32_f16, vcvth_n_u64_f16, vdivh_f16, vmaxh_f16, vmaxnmh_f16, - vminh_f16, vminnmh_f16, vmulh_f16, vmulxh_f16, vrecpsh_f16, - vrsqrtsh_f16): New. - - 2016-07-25 Jiong Wang - - * config.gcc (aarch64*-*-*): Install arm_fp16.h. - * config/aarch64/aarch64-builtins.c (hi_UP): New. - * config/aarch64/aarch64-simd-builtins.def: Register new builtins. - * config/aarch64/aarch64-simd.md (aarch64_frsqrte): Extend to HF - mode. - (aarch64_frecp): Likewise. - (aarch64_cm): Likewise. - * config/aarch64/aarch64.md (2): Likewise. - (l2): Likewise. - (fix_trunc2): Likewise. - (sqrt2): Likewise. - (*sqrt2): Likewise. - (abs2): Likewise. - (hf2): New pattern for HF mode. - (hihf2): Likewise. - * config/aarch64/arm_neon.h: Include arm_fp16.h. - * config/aarch64/iterators.md (GPF_F16, GPI_F16, VHSDF_HSDF): New. - (w1, w2, v, s, q, Vmtype, V_cmp_result, fcvt_iesize, FCVT_IESIZE): - Support HF mode. - * config/aarch64/arm_fp16.h: New file. - (vabsh_f16, vceqzh_f16, vcgezh_f16, vcgtzh_f16, vclezh_f16, vcltzh_f16, - vcvth_f16_s16, vcvth_f16_s32, vcvth_f16_s64, vcvth_f16_u16, - vcvth_f16_u32, vcvth_f16_u64, vcvth_s16_f16, vcvth_s32_f16, - vcvth_s64_f16, vcvth_u16_f16, vcvth_u32_f16, vcvth_u64_f16, - vcvtah_s16_f16, vcvtah_s32_f16, vcvtah_s64_f16, vcvtah_u16_f16, - vcvtah_u32_f16, vcvtah_u64_f16, vcvtmh_s16_f16, vcvtmh_s32_f16, - vcvtmh_s64_f16, vcvtmh_u16_f16, vcvtmh_u32_f16, vcvtmh_u64_f16, - vcvtnh_s16_f16, vcvtnh_s32_f16, vcvtnh_s64_f16, vcvtnh_u16_f16, - vcvtnh_u32_f16, vcvtnh_u64_f16, vcvtph_s16_f16, vcvtph_s32_f16, - vcvtph_s64_f16, vcvtph_u16_f16, vcvtph_u32_f16, vcvtph_u64_f16, - vnegh_f16, vrecpeh_f16, vrecpxh_f16, vrndh_f16, vrndah_f16, vrndih_f16, - vrndmh_f16, vrndnh_f16, vrndph_f16, vrndxh_f16, vrsqrteh_f16, - vsqrth_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-simd-builtins.def (reduc_smax_scal_, - reduc_smin_scal_): Use VDQIF_F16. - (reduc_smax_nan_scal_, reduc_smin_nan_scal_): Use VHSDF. - * config/aarch64/aarch64-simd.md (reduc__scal_): - Use VHSDF. - (aarch64_reduc__internal): Likewise. - * config/aarch64/iterators.md (VDQIF_F16): New. - (vp): Support HF modes. - * config/aarch64/arm_neon.h (vmaxv_f16, vmaxvq_f16, vminv_f16, - vminvq_f16, vmaxnmv_f16, vmaxnmvq_f16, vminnmv_f16, vminnmvq_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-simd.md (*aarch64_mulx_elt_to_64v2df): Rename to - "*aarch64_mulx_elt_from_dup". - (*aarch64_mul3_elt): Update schedule type. - (*aarch64_mul3_elt_from_dup): Likewise. - (*aarch64_fma4_elt_from_dup): Likewise. - (*aarch64_fnma4_elt_from_dup): Likewise. - * config/aarch64/iterators.md (VMUL): Supprt half precision float modes. - (f, fp): Support HF modes. - * config/aarch64/arm_neon.h (vfma_lane_f16, vfmaq_lane_f16, - vfma_laneq_f16, vfmaq_laneq_f16, vfma_n_f16, vfmaq_n_f16, vfms_lane_f16, - vfmsq_lane_f16, vfms_laneq_f16, vfmsq_laneq_f16, vfms_n_f16, - vfmsq_n_f16, vmul_lane_f16, vmulq_lane_f16, vmul_laneq_f16, - vmulq_laneq_f16, vmul_n_f16, vmulq_n_f16, vmulx_lane_f16, - vmulxq_lane_f16, vmulx_laneq_f16, vmulxq_laneq_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-simd-builtins.def: Register new builtins. - * config/aarch64/aarch64-simd.md (fma4, fnma4): Extend to HF - modes. - * config/aarch64/arm_neon.h (vfma_f16, vfmaq_f16, vfms_f16, - vfmsq_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-simd-builtins.def: Register new builtins. - * config/aarch64/aarch64-simd.md - (aarch64_rsqrts): Extend to HF modes. - (fabd3): Likewise. - (3): Likewise. - (3): Likewise. - (aarch64_p): Likewise. - (3): Likewise. - (3): Likewise. - (3): Likewise. - (aarch64_faddp): Likewise. - (aarch64_fmulx): Likewise. - (aarch64_frecps): Likewise. - (*aarch64_fac): Rename to aarch64_fac. - (add3): Extend to HF modes. - (sub3): Likewise. - (mul3): Likewise. - (div3): Likewise. - (*div3): Likewise. - * config/aarch64/aarch64.c (aarch64_emit_approx_div): Return false for - HF, V4HF and V8HF. - * config/aarch64/iterators.md (VDQ_HSDI, VSDQ_HSDI): New mode iterator. - * config/aarch64/arm_neon.h (vadd_f16, vaddq_f16, vabd_f16, vabdq_f16, - vcage_f16, vcageq_f16, vcagt_f16, vcagtq_f16, vcale_f16, vcaleq_f16, - vcalt_f16, vcaltq_f16, vceq_f16, vceqq_f16, vcge_f16, vcgeq_f16, - vcgt_f16, vcgtq_f16, vcle_f16, vcleq_f16, vclt_f16, vcltq_f16, - vcvt_n_f16_s16, vcvtq_n_f16_s16, vcvt_n_f16_u16, vcvtq_n_f16_u16, - vcvt_n_s16_f16, vcvtq_n_s16_f16, vcvt_n_u16_f16, vcvtq_n_u16_f16, - vdiv_f16, vdivq_f16, vdup_lane_f16, vdup_laneq_f16, vdupq_lane_f16, - vdupq_laneq_f16, vdups_lane_f16, vdups_laneq_f16, vmax_f16, vmaxq_f16, - vmaxnm_f16, vmaxnmq_f16, vmin_f16, vminq_f16, vminnm_f16, vminnmq_f16, - vmul_f16, vmulq_f16, vmulx_f16, vmulxq_f16, vpadd_f16, vpaddq_f16, - vpmax_f16, vpmaxq_f16, vpmaxnm_f16, vpmaxnmq_f16, vpmin_f16, vpminq_f16, - vpminnm_f16, vpminnmq_f16, vrecps_f16, vrecpsq_f16, vrsqrts_f16, - vrsqrtsq_f16, vsub_f16, vsubq_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-builtins.c (TYPES_BINOP_USS): New. - * config/aarch64/aarch64-simd-builtins.def: Register new builtins. - * config/aarch64/aarch64-simd.md (aarch64_rsqrte): Extend to HF modes. - (neg2): Likewise. - (abs2): Likewise. - (2): Likewise. - (l2): Likewise. - (2): Likewise. - (2): Likewise. - (ftrunc2): Likewise. - (2): Likewise. - (sqrt2): Likewise. - (*sqrt2): Likewise. - (aarch64_frecpe): Likewise. - (aarch64_cm): Likewise. - * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Return false for - HF, V4HF and V8HF. - * config/aarch64/iterators.md (VHSDF, VHSDF_DF, VHSDF_SDF): New. - (VDQF_COND, fcvt_target, FCVT_TARGET, hcon): Extend mode attribute to HF modes. - (stype): New. - * config/aarch64/arm_neon.h (vdup_n_f16): New. - (vdupq_n_f16): Likewise. - (vld1_dup_f16): Use vdup_n_f16. - (vld1q_dup_f16): Use vdupq_n_f16. - (vabs_f16, vabsq_f16, vceqz_f16, vceqzq_f16, vcgez_f16, vcgezq_f16, - vcgtz_f16, vcgtzq_f16, vclez_f16, vclezq_f16, vcltz_f16, vcltzq_f16, - vcvt_f16_s16, vcvtq_f16_s16, vcvt_f16_u16, vcvtq_f16_u16, vcvt_s16_f16, - vcvtq_s16_f16, vcvt_u16_f16, vcvtq_u16_f16, vcvta_s16_f16, - vcvtaq_s16_f16, vcvta_u16_f16, vcvtaq_u16_f16, vcvtm_s16_f16, - vcvtmq_s16_f16, vcvtm_u16_f16, vcvtmq_u16_f16, vcvtn_s16_f16, - vcvtnq_s16_f16, vcvtn_u16_f16, vcvtnq_u16_f16, vcvtp_s16_f16, - vcvtpq_s16_f16, vcvtp_u16_f16, vcvtpq_u16_f16, vneg_f16, vnegq_f16, - vrecpe_f16, vrecpeq_f16, vrnd_f16, vrndq_f16, vrnda_f16, vrndaq_f16, - vrndi_f16, vrndiq_f16, vrndm_f16, vrndmq_f16, vrndn_f16, vrndnq_f16, - vrndp_f16, vrndpq_f16, vrndx_f16, vrndxq_f16, vrsqrte_f16, vrsqrteq_f16, - vsqrt_f16, vsqrtq_f16): New. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64-simd.md - (aarch64_): Use VALL_F16. - (aarch64_ext): Likewise. - (aarch64_rev): Likewise. - * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp, - aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev): Support V4HFmode - and V8HFmode. - * config/aarch64/arm_neon.h (__INTERLEAVE_LIST): Support float16x4_t, - float16x8_t. - (__aarch64_vdup_lane_f16, __aarch64_vdup_laneq_f16, - __aarch64_vdupq_lane_f16, __aarch64_vdupq_laneq_f16, vbsl_f16, - vbslq_f16, vdup_n_f16, vdupq_n_f16, vdup_lane_f16, vdup_laneq_f16, - vdupq_lane_f16, vdupq_laneq_f16, vduph_lane_f16, vduph_laneq_f16, - vext_f16, vextq_f16, vmov_n_f16, vmovq_n_f16, vrev64_f16, vrev64q_f16, - vtrn1_f16, vtrn1q_f16, vtrn2_f16, vtrn2q_f16, vtrn_f16, vtrnq_f16, - vuzp1_f16, vuzp1q_f16, vuzp2_f16, vuzp2q_f16, vzip1_f16, vzip2q_f16): - New. - (vmov_n_f16): Reimplement using vdup_n_f16. - (vmovq_n_f16): Reimplement using vdupq_n_f16.. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64.c (aarch64_add_constant): New parameter - "frame_related_p". Generate CFA annotation when it's necessary. - (aarch64_expand_prologue): Use aarch64_add_constant. - (aarch64_expand_epilogue): Likewise. - (aarch64_output_mi_thunk): Pass "false" when calling - aarch64_add_constant. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64.c (aarch64_add_constant): Optimize instruction - sequences. - - 2016-07-25 Jiong Wang - - * config/aarch64/aarch64.c (aarch64_add_constant): New parameter "mode". - Use aarch64_internal_mov_immediate instead of aarch64_build_constant. - (aarch64_output_mi_thunk): Pass Pmode when calling aarch64_add_constant. - (aarch64_build_constant): Delete. - - 2016-07-25 Alexander Monakov - - Revert - 2016-07-20 Alexander Monakov - - * config/nvptx/nvptx.c (nvptx_option_override): Do not set - flag_toplevel_reorder. - - 2016-07-25 Richard Biener - - * cgraph.c (cgraph_node::verify_node): Compare against builtin - by using DECL_BUILT_IN_CLASS and DECL_FUNCTION_CODE. - * tree-chkp.c (chkp_gimple_call_builtin_p): Likewise. - * tree-streamer.h (streamer_handle_as_builtin_p): Remove. - (streamer_get_builtin_tree): Likewise. - (streamer_write_builtin): Likewise. - * lto-streamer.h (LTO_builtin_decl): Remove. - * lto-streamer-in.c (lto_read_tree_1): Remove assert. - (lto_input_scc): Remove LTO_builtin_decl handling. - (lto_input_tree_1): Liekwise. - * lto-streamer-out.c (lto_output_tree_1): Remove special - handling of builtins. - (DFS::DFS): Likewise. - * tree-streamer-in.c (streamer_get_builtin_tree): Remove. - * tree-streamer-out.c (pack_ts_function_decl_value_fields): Remove - assert. - (streamer_write_builtin): Remove. - - 2016-07-25 Martin Liska - - * lto-cgraph.c (input_symtab): Don't call get_working_sets - if flag_auto_profile is set to true. - - 2016-07-25 Martin Liska - - PR gcov-profile/71868 - * cfgloopanal.c (expected_loop_iterations_unbounded): When we - have a function with multiple latches, count them all. - - 2016-07-25 Martin Liska - - * tree-ssa-loop-niter.c (loop_only_exit_p): Release body array. - - 2016-07-25 Martin Liska - - PR tree-optimization/71987 - * tree-ssa-reassoc.c (maybe_optimize_range_tests): Call get_ops - just for SSA_NAMEs. Fix GNU coding style. - - 2016-07-25 Martin Liska - - PR gcov-profile/64874 - * gcov-io.h: Update command about file format. - * gcov-iov.c (main): Adapt the numbering scheme. - - 2016-07-24 Kugan Vivekanandarajah - - PR middle-end/66726 - * tree-ssa-reassoc.c (optimize_vec_cond_expr): Handle tcc_compare stmt - whose result is used in PHI. - (final_range_test_p): Likewise. - (maybe_optimize_range_tests): Likewise. - - 2016-07-22 Michael Meissner - - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Reformat two multi-line strings. - - 2016-07-22 Martin Sebor - - * doc/extend.texi (Compound Literals): Add '@' missed in last commit. - - 2016-07-22 Martin Sebor - - PR c/71560 - * doc/extend.texi (Compound Literals): Correct and clarify. - (Cast to Union): Same. - - 2016-07-22 Kelvin Nilsen - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Add - comments to explain why certain error messages make mention of - undocumented options. - (rs6000_invalid_builtin): Change error messages to replace mention - of undocumented options with mention of the -mcpu=power9 option - that enables those undocumented options. - * config/rs6000/rs6000.h (MASK_FLOAT128): New macro. - (RS6000_BTM_FLOAT128): Use the new MASK_FLOAT128 macro in the - definition of this macro to correct an existing error. - * config/rs6000/rs6000.opt: Add the Undocumented qualifier to the - mpower9-fusion, mpower9-vector, mpower9-dform, and mmodulo entries. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Modify - descriptions of built-in functions so that they depend on - -mcpu=power9 instead of on the corresponding undocumented flags. - * doc/invoke.texi (Option Summary): Remove all mention of newly - undocumented flags. - (IBM RS/6000 and PowerPC Options): Likewise. - * doc/md.texi (Constraints for Particuliar Machines): Remove all - mention of newly undocumented flags. - - 2016-07-22 Evgeny Stupachenko - - * ipa-cp.c (determine_versionability): Do not create constprop clones, - when target_clones attribute is set. - - 2016-07-22 Bin Cheng - - * common.opt (funsafe-loop-optimizations): Mark ignore. - * doc/invoke.texi (funsafe-loop-optimizations): Remove. - * loop-iv.c (get_simple_loop_desc): Remove unsafe-loop-optimizations - related code. - * tree-ssa-loop-niter.c (finite_loop_p): Ditto. - * config/bfin/bfin.c (bfin_can_use_doloop_p): Ditto. - - 2016-07-22 Bin Cheng - - * tree-ssa-loop-niter.h (number_of_iterations_exit_assumptions): New - Parameter. - * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions): New - Parameter. - (number_of_iterations_exit): Warn missed loop optimization for - possible infinite loops. - - 2016-07-22 Segher Boessenkool - - PR target/71216 - * config/rs6000/rs6000.c (rs6000_file_start): Fix condition for - when to emit a ".machine" pseudo-op. - - 2016-07-22 Martin Liska - - PR gcov-profile/69028 - PR gcov-profile/62047 - * coverage.c (coverage_compute_lineno_checksum): Do not - calculate checksum for fns w/o xloc.file. - (coverage_compute_profile_id): Likewise. - - 2016-07-22 Georg-Johann Lay - - * config/avr/avr.c (TARGET_SECONDARY_RELOAD): Remove hook define... - (avr_secondary_reload): ...and implementation. - (avr_adjust_insn_length) [ADJUST_LEN_LPM]: Remove handling. - * config/avr/avr.md (reload_in): Remove insns. - (adjust_len) [lpm]: Remove insn attribute value. - * config/avr/predicates.md (flash_operand): Remove insn predicate. - - 2016-07-21 Bernd Edlinger - - PR middle-end/71876 - * builtin-attrs.def (ATTR_RT_NOTHROW_LEAF_LIST): New return twice - attribute. - * builtins.def (BUILT_IN_SETJMP): Use ATTR_RT_NOTHROW_LEAF_LIST here. - * calls.c (special_function_p): Remove the special handling of the - "__builtin_" prefix. - - 2016-07-21 Bernd Edlinger - - PR middle-end/71876 - * calls.c (gimple_maybe_alloca_call_p): New function. Return true - if STMT may be an alloca call. - (gimple_alloca_call_p, alloca_call_p): Return only true for the - builtin alloca call. - * calls.h (gimple_maybe_alloca_call_p): New function. - * tree-inline.c (inline_forbidden_p_stmt): Use - gimple_maybe_alloca_call_p here. - - 2016-07-21 David Malcolm - - * spellcheck-tree.c (best_macro_match::best_macro_match): - Explictly specify the template arguments when invoking the base - class constructor, to help older C++ compilers. - - 2016-07-21 Jakub Jelinek - - PR sanitizer/71953 - * asan.c (asan_dynamic_init_call): Call asan_init_shadow_ptr_types - before builtin_decl_implicit. - - 2016-07-21 James Greenhalgh - - * optabs.c (emit_condiitonal_move): Short circuit for identical - sources. - - 2016-07-21 James Greenhalgh - - * ifcvt.c (noce_if_info): New fields: speed_p, original_cost, - max_seq_cost. Removed fields: then_cost, else_cost, branch_cost. - (noce_conversion_profitable_p): New. - (noce_try_store_flag_constants): Use it. - (noce_try_addcc): Likewise. - (noce_try_store_flag_mask): Likewise. - (noce_try_cmove): Likewise. - (noce_try_cmove_arith): Likewise. - (bb_valid_for_noce_process_p): Add to the cost parameter rather than - overwriting it. - (noce_convert_multiple_sets): Move cost model to here, from... - (bb_ok_for_noce_convert_multiple_sets) ...here. - (noce_process_if_block): Update calls for above changes. - (noce_find_if_block): Record new noce_if_info parameters. - - 2016-07-21 James Greenhalgh - - * target.def (max_noce_ifcvt_seq_cost): New. - * doc/tm.texi.in (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Document it. - * doc/tm.texi: Regenerate. - * targhooks.h (default_max_noce_ifcvt_seq_cost): New. - * targhooks.c (default_max_noce_ifcvt_seq_cost): New. - * params.def (PARAM_MAX_RTL_IF_CONVERSION_PREDICTABLE_COST): New. - (PARAM_MAX_RTL_IF_CONVERSION_UNPREDICTABLE_COST): Likewise. - * doc/invoke.texi: Document new params. - - 2016-07-21 Richard Biener - - PR tree-optimization/71947 - * tree-vrp.c (extract_range_from_assert): Singleton symbolic - ranges have useful limit_vr information. - - 2016-07-21 Richard Biener - - * function-tests.c (build_trivial_generic_function): Set - BLOCK_SUPERCONTEXT of DECL_INITIAL. - * omp-low.c (create_omp_child_function): Likewise. - (grid_expand_target_grid_body): Likewise. - * cgraphunit.c (init_lowered_empty_function): Likewise. - (cgraph_node::expand_thunk): Likewise. - * tree-parloops.c (create_loop_fn): Likewise. - * ipa.c (cgraph_build_static_cdtor_1): Likewise. - - 2016-07-21 Prathamesh Kulkarni - - * tree-ssa-strlen.c (strlen_dom_walker::before_dom_children): Fix typo - in comment. - - 2016-07-21 Georg-Johann Lay - - * config/avr/avr.md (any_extract, any_shiftrt): New code iterators. - (*insv.extract, *insv.shiftrt, *insv.not-bit.0, *insv.not-bit.7) - (*insv.xor-extract, *insv.xor1-bit.0): New insns. - (adjust_len) [insv_notbit, insv_notbit_0, insv_notbit_7]: New - values for insn attribute. - * config/avr/avr.c (avr_out_insert_notbit): New function. - (avr_adjust_insn_length): Handle ADJUST_LEN_INSV_NOTBIT, - ADJUST_LEN_INSV_NOTBIT_0/_7. - * config/avr/avr-protos.h (avr_out_insert_notbit): New proto. - - 2016-07-21 Bin Cheng - - * tree-chrec.c (convert_affine_scev): New parameter. Pass new arg. - (chrec_convert_1, chrec_convert): Ditto. - * tree-chrec.h (chrec_convert, convert_affine_scev): New parameter. - * tree-scalar-evolution.c (interpret_rhs_expr): Pass new arg. - * tree-vrp.c (adjust_range_with_scev): Ditto. - * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Ditto. - (scev_var_range_cant_overflow): New function. - (scev_probably_wraps_p): New parameter. Call above function. - * tree-ssa-loop-niter.h (scev_probably_wraps_p): New parameter. - - 2016-07-21 Bin Cheng - - * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up - by removing computation of may_be_zero. - - 2016-07-21 Jakub Jelinek - - * tree-object-size.c (unknown): Use HOST_WIDE_INT_M1U instead of -1. - - 2016-07-21 Andrew Sutton - - Improving concepts performance and diagnostics. - * timevar.def (TV_CONSTRAINT_SAT, TV_CONSTRAINT_SUB): New time vars - for constraint satisfaction and subsumption. - * timevar.h (auto_timevar): New constructor that matches the push/pop - pattern of usage in pt.c. - - 2016-07-20 Uros Bizjak - - * hwint.h (HOST_WIDE_INT_0): New define. - (HOST_WIDE_INT_0U): Ditto. - * double-int.c: Use HOST_WIDE_INT_0 instead of (HOST_WIDE_INT) 0. - * dse.c: Use HOST_WIDE_INT_0U instead of (unsigned HOST_WIDE_INT) 0. - * simplify-rtx.c: Ditto. - * tree-object-size.c: Ditto. - - 2016-07-20 Andreas Krebbel - - * config/s390/s390.c (s390_encode_section_info): Remove mode size - check. - - 2016-07-20 Uros Bizjak - - * cse.c: Use HOST_WIDE_INT_M1 instead of ~(HOST_WIDE_INT) 0. - * combine.c: Use HOST_WIDE_INT_M1U instead of - ~(unsigned HOST_WIDE_INT) 0. - * double-int.h: Ditto. - * dse.c: Ditto. - * dwarf2asm.c:Ditto. - * expmed.c: Ditto. - * genmodes.c: Ditto. - * match.pd: Ditto. - * read-rtl.c: Ditto. - * tree-ssa-loop-ivopts.c: Ditto. - * tree-ssa-loop-prefetch.c: Ditto. - * tree-vect-generic.c: Ditto. - * tree-vect-patterns.c: Ditto. - * tree.c: Ditto. - - 2016-07-20 Georg-Johann Lay - - * gcc/config/avr.c (avr_legitimize_address) [AVR_TINY]: Force - constant addresses outside [0,0xc0] into a register. - (avr_out_movhi_r_mr_reg_no_disp_tiny): Pass insn. And handle - cases where the base address register is unused after. - (avr_out_movhi_r_mr_reg_disp_tiny): Same. - (avr_out_movhi_mr_r_reg_disp_tiny): Same. - (avr_out_store_psi_reg_disp_tiny): Same. - - 2016-07-20 Georg-Johann Lay - - Implement attribute progmem on reduced Tiny cores by adding - flash offset 0x4000 to respective symbols. - - PR target/71948 - * doc/extend.texi (AVR Variable Attributes) [progmem]: Add - documentation how it works on reduced Tiny cores. - (AVR Named Address Spaces): No support for reduced Tiny. - * config/avr/avr.c (AVR_SYMBOL_FLAG_TINY_PM): New macro. - (avr_address_tiny_pm_p): New static function. - (avr_print_operand_address) [AVR_TINY]: Add AVR_TINY_PM_OFFSET - if the address is in progmem. - (avr_assemble_integer): Same. - (avr_encode_section_info) [AVR_TINY]: Set AVR_SYMBOL_FLAG_TINY_PM - for symbol_ref in progmem. - * config/avr/avr.h (AVR_TINY_PM_OFFSET): New macro. - * config/avr/avr-c.c (avr_cpu_cpp_builtins): Use it instead of - magic 0x4000 when built-in def'ing __AVR_TINY_PM_BASE_ADDRESS__. - - 2016-07-20 Patrick Palka - - * configure.ac (thin_archive_support): New variable. AC_SUBST it. - * configure: Regenerate. - * Makefile.in (THIN_ARCHIVE_SUPPORT): New variable. - (USE_THIN_ARCHIVES): New variable. - (libbackend.a): If USE_THIN_ARCHIVES then pass T to ar to build - this archive as a thin archive. - - 2016-07-20 David Malcolm - - * diagnostic-show-locus.c (diagnostic_show_locus): If this is the - same location as last time, don't skip if we have fix-it hints. - Clarify the skipping logic by converting it from one "if" clause - to repeated "if" clauses. - * spellcheck-tree.c: Include "cpplib.h". - (find_closest_macro_cpp_cb): Move here from c/c-decl.c. - (best_macro_match::best_macro_match): New constructor. - * spellcheck-tree.h (struct edit_distance_traits): - Move here from c/c-decl.c. - (class best_macro_match): Move here from c/c-decl.c, converting - from a typedef to a subclass, gaining a ctor. - - 2016-07-20 Georg-Johann Lay - - * config/avr/avr-protos.h (avr_addr_space_supported_p): New prototype. - * config/avr/avr.c (TARGET_ADDR_SPACE_DIAGNOSE_USAGE): New hook - define... - (avr_addr_space_diagnose_usage): ...and implementation. - (avr_addr_space_supported_p): New function. - (avr_nonconst_pointer_addrspace, avr_pgm_check_var_decl): Only - report bad address space usage if that space is supported. - (avr_insert_attributes): Same. No more complain about unsupported - address spaces. - * config/avr/avr-c.c (tm_p.h): Include it. - (avr_cpu_cpp_builtins): Only define addr-space related built-in - macro if avr_addr_space_supported_p. - - 2016-07-20 Alexander Monakov - - * config/nvptx/nvptx.c (nvptx_option_override): Do not set - flag_toplevel_reorder. - - 2016-07-20 David Malcolm - - * gcc-rich-location.c - (gcc_rich_location::add_fixit_misspelled_id): New overload, taking - a const char *. - * gcc-rich-location.h - (gcc_rich_location::add_fixit_misspelled_id): Likewise. - - 2016-07-20 Georg-Johann Lay - - * target.def (addr_space): Add new diagnose_usage to hook vector. - * targhooks.c (default_addr_space_diagnose_usage): Add default - implementation and... - * targhooks.h (default_addr_space_diagnose_usage): ... its prototype. - * c/c-parser.c (c_lex_one_token) [CPP_NAME]: If the token - is some address space, call targetm.addr_space.diagnose_usage. - * doc/tm.texi.in (Named Address Spaces): Add anchor for - TARGET_ADDR_SPACE_DIAGNOSE_USAGE documentation. - * doc/tm.texi: Regenerate. - - 2016-07-20 Martin Liska - - PR middle-end/71898 - * graphite-isl-ast-to-gimple.c (later_of_the_two): - Properly handly PHI stmts. - - 2016-07-20 Bin Cheng - - PR tree-optimization/71503 - PR tree-optimization/71683 - * tree-if-conv.c (gen_phi_arg_condition): Record true predicate - and break. - - 2016-07-20 Martin Liska - - * doc/invoke.texi (-fipa-ra): Document when the option is - disabled. Fix a typo. - - 2016-07-20 Martin Liska - - * Makefile.in: Include fibonacci_heap.c - * fibonacci_heap.c: New file. - * fibonacci_heap.h (fibonacci_heap::insert): Use insert_node. - (fibonacci_heap::union_with): Fix deletion of the second heap. - * selftest-run-tests.c (selftest::run_tests): Incorporate - fibonacci heap tests. - * selftest.h: Declare fibonacci_heap_c_tests. - - 2016-07-20 Martin Liska - - * selftest-run-tests.c (selftest::run_tests): New function. - * selftest.h (sreal_c_tests): Declare. - * sreal.c (sreal_verify_basics): New function. - (verify_aritmetics): Likewise. - (sreal_verify_arithmetics): Likewise. - (verify_shifting): Likewise. - (sreal_verify_shifting): Likewise. - (void sreal_c_tests): Likewise. - - 2016-07-19 Jakub Jelinek - - PR rtl-optimization/71916 - * cfgrtl.c (contains_no_active_insn_p): Return false also for - bb which have a single succ fake edge. - - 2016-07-19 Aldy Hernandez - - PR debug/71855 - * dwarf2out.c (gen_subprogram_die): Only call - gen_unspecified_parameters_die while dumping early dwarf. - - 2016-07-19 Jakub Jelinek - - PR middle-end/71874 - * gimple-fold.c (fold_builtin_memory_op): Use - get_addr_base_and_unit_offset instead of get_ref_base_and_extent. - - 2016-07-19 Uros Bizjak - - * builtins.c: Use HOST_WIDE_INT_1 instead of (HOST_WIDE_INT) 1, - HOST_WIDE_INT_1U instead of (unsigned HOST_WIDE_INT) 1, - HOST_WIDE_INT_M1 instead of (HOST_WIDE_INT) -1 and - HOST_WIDE_INT_M1U instead of (unsigned HOST_WIDE_INT) -1. - * combine.c: Ditto. - * cse.c: Ditto. - * dojump.c: Ditto. - * double-int.c: Ditto. - * dse.c: Ditto. - * dwarf2out.c: Ditto. - * expmed.c: Ditto. - * expr.c: Ditto. - * fold-const.c: Ditto. - * function.c: Ditto. - * fwprop.c: Ditto. - * genmodes.c: Ditto. - * hwint.c: Ditto. - * hwint.h: Ditto. - * ifcvt.c: Ditto. - * loop-doloop.c: Ditto. - * loop-invariant.c: Ditto. - * loop-iv.c: Ditto. - * match.pd: Ditto. - * optabs.c: Ditto. - * real.c: Ditto. - * reload.c: Ditto. - * rtlanal.c: Ditto. - * simplify-rtx.c: Ditto. - * stor-layout.c: Ditto. - * toplev.c: Ditto. - * tree-ssa-loop-ivopts.c: Ditto. - * tree-vect-generic.c: Ditto. - * tree-vect-patterns.c: Ditto. - * tree.c: Ditto. - * tree.h: Ditto. - * ubsan.c: Ditto. - * varasm.c: Ditto. - * wide-int-print.cc: Ditto. - * wide-int.cc: Ditto. - * wide-int.h: Ditto. - - 2016-07-19 David Malcolm - - * selftest.c (selftest::assert_streq): Handle NULL values of - val_actual and val_expected. - - 2016-07-19 Martin Jambor - - PR fortran/71688 - * trans-decl.c (gfc_generate_function_code): Use cgraph_get_create_node - rather than cgraph_create_node to get a call graph node. - - 2016-07-19 Richard Biener - - * gimple-fold.c (get_base_constructor): Add VIEW_CONVERT case, - handle all tcc_constant bases and valueize SSA names. - * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle - tcc_constant bases. - - 2016-07-19 David Malcolm - - * function-tests.c (selftest::verify_three_block_rtl_cfg): Verify - the flags of the exit block and bb2, not just the entry block. - - 2016-07-19 Richard Biener - - PR tree-optimization/71901 - * tree-ssa-sccvn.h (struct vn_reference_op_struct): Add - align member, group stuff with the bitfield. - (vn_ref_op_align_unit): New inline. - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): For ARRAY_REFs - record element alignment and operand 3 unchanged. - (ao_ref_init_from_vn_reference): Adjust. - (valueize_refs_1): Likewise. - * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise. - - 2016-07-19 Richard Biener - - PR tree-optimization/71908 - * tree-ssa-structalias.c (get_constraint_for_component_ref): Handle - symbolic constants in a more reliable way. - - 2016-07-19 Ilya Enkovich - - * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Update - comment. - (vect_update_inits_of_drs): Likewise. - (vect_create_cond_for_alias_checks): Likewise. - * tree-vect-loop.c (vect_get_known_peeling_cost): Likewise. - - 2016-07-19 Richard Biener - - PR lto/71907 - * lto-streamer-out.c (DFS::DFS_write_tree_body): For blocks - with an abstract origin that is not an inlined function outer - scope add a self-reference as abstract origin. - * tree-streamer-out.c (write_ts_block_tree_pointers): Likewise. - - 2016-07-18 Michael Meissner - - PR target/71493 - * config/rs6000/rs6000.c (rs6000_function_value): Fix - unintentional System V.4 structure return breakage for structures - with a single floating point element. - - 2016-07-18 Yuri Rumyantsev - - PR tree-optimization/71734 - * tree-ssa-loop-im.c (ref_indep_loop_p_1): Add REF_LOOP argument which - contains REF, use it to check safelen, assume that safelen value - must be greater 1, fix style. - (ref_indep_loop_p_2): Add REF_LOOP argument. - (ref_indep_loop_p): Pass LOOP as additional argument to - ref_indep_loop_p_2. - - 2016-07-18 Dominik Vogt - - * cfgexpand.c (expand_stack_vars): Implement synamic stack space - allocation in the prologue. - * explow.c (get_dynamic_stack_base): New function to return an address - expression for the dynamic stack base. - (get_dynamic_stack_size): New function to do the required dynamic stack - space size calculations. - (allocate_dynamic_stack_space): Use new functions. - (align_dynamic_address): Move some code from - allocate_dynamic_stack_space to new function. - * explow.h (get_dynamic_stack_base, get_dynamic_stack_size): Export. - - 2016-07-18 Andreas Krebbel - - * config/s390/s390.c (s390_encode_section_info): Always set - notaligned marker if mode size is 0 or no MEM_ALIGN info could be - found. - - 2016-07-18 Richard Biener - - PR tree-optimization/71893 - * tree-ssa-pre.c (create_component_ref_by_pieces_1): Compensate - for sizetype cast added by array_ref_element_size. - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. - - 2016-07-16 John David Anglin - - * config/pa/pa.c (hppa_profile_hook): Allocate stack space for - register parameters. Remove code to initialize argument pointer - on TARGET_64BIT. Optimize call to _mcount when it can be reached - using a pc-relative branch. Cleanup conditional code. - * config/pa/pa.md (call_mcount): New expander. - (call_mcount_nonpic): New insn. - (call_mcount_pic): New insn and split. - (call_mcount_pic_post_reload): New insn. - (call_mcount_64bit): New insn and split. - (call_mcount_64bit_post_reload): New insn. - - 2016-07-15 Georg-Johann Lay - - * config/avr/predicates.md (const_m255_to_m1_operand): New. - * config/avr/constraints.md (Cn8, Ca1, Co1, Yx2): New constraints. - * config/avr/avr.md (add3) : Fix set_vzn for +/-2. - (*cmphi.zero-extend.0, *cmphi.zero-extend.1) - (*usum_widenqihi3, *udiff_widenqihi3) - (*addhi3_zero_extend.const): New combiner insns. - (andqi3, iorqi3): Provide "l" (NO_LD_REGS) alternative if - just 1 bit is affected. - * config/avr/avr.c (avr_out_bitop) : Don't access xop[3]. - (avr_out_compare) [EQ,NE]: Tweak comparing d-regs against -1. - - 2016-07-15 Cesar Philippidis - - * omp-low.c (lower_omp_target): Mark data clauses with - GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having - zero-length subarrays. - - 2016-07-15 Richard Biener - - PR tree-optimization/71881 - * tree-loop-distribution.c (destroy_loop): Remove blocks in - reverse DOM order to make debug temp generation happy. - - 2016-07-15 Richard Biener - - PR tree-optimization/71887 - * tree-ssa-phiopt.c (absorbing_element_p): Add rhs arg and - verify it is not zero for division / modulo handling. - (value_replacement): Adjust. - - 2016-07-15 Virendra Pathak - Julian Brown - - * config/aarch64/aarch64-cores.def: Update vulcan COSTS. - * config/aarch64/aarch64-cost-tables.h - (vulcan_extra_costs): New variable. - * config/aarch64/aarch64.c - (vulcan_addrcost_table): Likewise. - (vulcan_regmove_cost): Likewise. - (vulcan_vector_cost): Likewise. - (vulcan_branch_cost): Likewise. - (vulcan_tunings): Likewise. - - 2016-07-15 Alexander Monakov - - * cgraphunit.c (cgraph_order_sort_kind): New entry ORDER_VAR_UNDEF. - (output_in_order): Loop over undefined variables too. Output them - via assemble_undefined_decl. Skip variables that correspond to hard - registers or have value-exprs. - * varpool.c (symbol_table::output_variables): Handle undefined - variables together with defined ones. - - 2016-07-15 Richard Biener - - * tree-ssa-pre.c (get_representative_for): Make sure to return - the value number of SSA names. - (phi_translate_1): get_representative_for cannot return NULL. - (do_pre_regular_insertion): Remove redundant call to - fully_constant_expression. - (do_pre_partial_partial_insertion): Likewise. - - 2016-07-15 Bin Cheng - - * tree-scalar-evolution.c (simple_iv_with_niters): New funcion. - (derive_simple_iv_with_niters): New function. - (simple_iv): Rewrite using simple_iv_with_niters. - * tree-scalar-evolution.h (simple_iv_with_niters): New decl. - * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions): New - function. - (number_of_iterations_exit): Rewrite using above function. - * tree-ssa-loop-niter.h (number_of_iterations_exit_assumptions): New - Decl. - - 2016-07-15 Richard Biener - - * config/i386/i386.c (ix86_builtin_vectorization_cost): Adjust - vec_construct cost. - - 2016-07-14 Jakub Jelinek - - PR tree-optimization/71872 - * tree-data-ref.c (get_references_in_stmt): Ignore references - with is_gimple_constant get_base_address. - - 2016-07-14 Thomas Preud'homme - - * config/arm/arm.h (TARGET_HAVE_LDACQ): Enable for ARMv8-M Mainline. - (TARGET_HAVE_LDACQD): New macro. - * config/arm/sync.md (atomic_loaddi): Use TARGET_HAVE_LDACQD rather - than TARGET_HAVE_LDACQ. - (arm_load_acquire_exclusivedi): Likewise. - (arm_store_release_exclusivedi): Likewise. - - 2016-07-14 Thomas Preud'homme - - PR rtl-optimization/71878 - * lra-constraints.c (match_reload): Pass information about other - output operands. Create new unique register value if matching input - operand shares same register value as output operand being considered. - (curr_insn_transform): Record output operands already processed. - - 2016-07-14 Kyrylo Tkachov - - PR target/65951 - PR tree-optimization/70923 - * tree-vect-patterns.c: Include mult-synthesis.h. - (target_supports_mult_synth_alg): New function. - (synth_lshift_by_additions): Likewise. - (apply_binop_and_append_stmt): Likewise. - (vect_synth_mult_by_constant): Likewise. - (target_has_vecop_for_code): Likewise. - (vect_recog_mult_pattern): Use above functions to synthesize vector - multiplication by integer constants. - - 2016-07-14 Alan Modra - - * gcc/config/rs6000/altivec.md (altivec_mov): Disparage - gpr alternatives. Correct '*' placement on Y,r alternative. - Add '*' on operand 1 of r,r alternative. - - 2016-07-14 Kyrylo Tkachov - - * expmed.c (mult_variant, choose_mult_variant): Move declaration to... - * expmed.h: ... Here. - - 2016-07-14 Jan Hubicka - - * gimple.h (stmt_can_terminate_bb_p): New function. - * tree-cfg.c (need_fake_edge_p): Rename to ... - (stmt_can_terminate_bb_p): ... this; return true if stmt can - throw external; handle const and pure calls. - * tree-ssa-loop-niter.c (loop_only_exit_p): Use it. - - 2016-07-14 Richard Biener - - PR tree-optimization/71866 - * tree-ssa-pre.c (get_constant_for_value_id): Remove. - (do_hoist_insertion): Avoid endless recursion when we - didn't insert anything because we managed to simplify - things down to a constant or SSA name. - (fully_constant_expression): Re-write in terms of ... - * tree-ssa-sccvn.h (vn_nary_simplify): ... this. Declare. - * tree-ssa-sccvn.c (vn_nary_simplify): New wrapper around - vn_nary_build_or_lookup_1. - (vn_nary_build_or_lookup_1): Added flag and renamed from ... - (vn_nary_build_or_lookup): ... this which now wraps it. - - 2016-07-14 Alan Modra - - PR target/71733 - * config/rs6000/rs6000.c (rs6000_option_override_internal): Deal - with p9_vector override before power9-dform override. - - 2016-07-13 Andi Kleen - - * value-prof.c (gimple_value_profile_transformations): Don't run - when auto_profile is on. - - 2016-07-13 Andi Kleen - - * auto-profile.c (update_inlined_ind_target, - afdo_indirect_call): Print information to dump file. - - 2016-07-13 Andrew Burgess - - * genrecog.c (special_predicate_operand_p): New function. - (predicate_name): Move function. - (validate_pattern): Don't warn about missing mode for all - define_special_predicate predicates. - - 2016-07-13 Bin Cheng - - * tree-vect-data-refs.c (vect_no_alias_p): New function. - (vect_prune_runtime_alias_test_list): Call vect_no_alias_p to - resolve alias checks which are known at compilation time. - Truncate vector LOOP_VINFO_MAY_ALIAS_DDRS(loop_vinfo) if all - alias checks are resolved. Move dump info for too many runtime - alias checks to here... - * tree-vect-loop.c (vect_analyze_loop_2): ...From here. - - 2016-07-13 Richard Biener - - PR tree-optimization/24574 - * tree-ssa-phiopt.c (absorbing_element_p): Pass in argument - position and add shift, rotate, divison and modulo support - for left zero. - (value_replacement): Pass in argument position to absorbing_element_p. - - 2016-07-13 Ilya Enkovich - - PR ipa/71633 - * ipa-inline-transform.c (inline_call): Support - instrumented thunks. - - 2016-07-13 Thomas Preud'homme - - * config/arm/arm.h (TARGET_HAVE_CBZ): Define. - (TARGET_IDIV): Set for all Thumb targets provided they have hardware - divide feature. - * config/arm/arm.md (divsi3): New unpredicable alternative for ARMv8-M - Baseline. Make initial alternative TARGET_32BIT only. - (udivsi3): Likewise. - * config/arm/thumb1.md (thumb1_cbz): New define_insn. - * doc/sourcebuild.texi (arm_thumb1_cbz_ok): Document new effective - target. - - 2016-07-13 Thomas Preud'homme - - * config/arm/arm.h (TARGET_HAVE_MOVT): Include ARMv8-M as having MOVT. - * config/arm/arm.c (arm_arch_name): (const_ok_for_op): Check MOVT/MOVW - availability with TARGET_HAVE_MOVT. - (thumb_legitimate_constant_p): Strip the high part of a label_ref. - (thumb1_rtx_costs): Also return 0 if setting a half word constant and - MOVW is available and replace (unsigned HOST_WIDE_INT) INTVAL by - UINTVAL. - (thumb1_size_rtx_costs): Make set of half word constant also cost 1 - extra instruction if MOVW is available. Use a cost variable - incremented by COSTS_N_INSNS (1) when the condition match rather than - returning an arithmetic expression based on COSTS_N_INSNS. Make - constant with bottom half word zero cost 2 instruction if MOVW is - available. - * config/arm/arm.md (define_attr "arch"): Add v8mb. - (define_attr "arch_enabled"): Set to yes if arch value is v8mb and - target is ARMv8-M Baseline. - (arm_movt): New unpredicable alternative for ARMv8-M Baseline. - (arm_movtas_ze): Likewise. - * config/arm/thumb1.md (thumb1_movdi_insn): Add ARMv8-M Baseline only - alternative for constants satisfying j constraint. - (thumb1_movsi_insn): Likewise. - (movsi splitter for K alternative): Tighten condition to not trigger - if movt is available and j constraint is satisfied. - (Pe immediate splitter): Likewise. - (thumb1_movhi_insn): Add ARMv8-M Baseline only alternative for - constant fitting in an halfword to use MOVW. - * doc/sourcebuild.texi (arm_thumb1_movt_ok): Document new ARM - effective target. - - 2016-07-13 Richard Biener - - PR middle-end/71104 - * gimplify.c (gimplify_modify_expr): Gimplify the RHS before - gimplifying the LHS. Make sure to gimplify a returning twice - call LHS without using SSA names. - - 2016-07-12 Trevor Saunders - - * tree-data-ref.c (find_data_references_in_stmt): Remove - unnecessary call to vec::release. - (graphite_find_data_references_in_stmt): Likewise. - * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): Likewise. - * tree-vect-stmts.c (vectorizable_condition): Likewise. - - 2016-07-12 Trevor Saunders - - * cfgexpand.c (expand_used_vars): Make the type of a local - variable auto_vec. - * genmatch.c (lower_for): Likewise. - * haifa-sched.c (haifa_sched_init): Likewise. - (add_to_speculative_block): Likewise. - (create_check_block_twin): Likewise. - * predict.c (handle_missing_profiles): Likewise. - * tree-data-ref.c (loop_nest_has_data_refs): Likewise. - * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Likewise. - * tree-ssa-loop-niter.c (discover_iteration_bound_by_body_walk): - Likewise. - (maybe_lower_iteration_bound): Likewise. - * tree-ssa-sccvn.c (DFS): Likewise. - * tree-stdarg.c (reachable_at_most_once): Likewise. - * tree-vect-stmts.c (vectorizable_conversion): Likewise. - (vectorizable_store): Likewise. - - 2016-07-12 Trevor Saunders - - * tree-ssa-sccvn.c (sccvn_dom_walker::~sccvn_dom_walker): remove. - (sccvn_dom_walker): make cond_stack an auto_vec. - - 2016-07-12 Trevor Saunders - - * ree.c (struct ext_state): Make type of members auto_vec. - (find_and_remove_re): Adjust. - - 2016-07-12 Trevor Saunders - - * cfgexpand.c (struct stack_vars_data): Make type of fields - auto_vec. - (expand_used_vars): Adjust. - - 2016-07-12 Trevor Saunders - - * ipa.c (record_cdtor_fn): Adjust. - (build_cdtor_fns): Likewise. - (ipa_cdtor_merge): Make static_ctors and static_dtors local - variables. - - 2016-07-12 Trevor Saunders - - * genextract.c (struct accum_extract): Add constructor and make - members auto_vec. - (gen_insn): Adjust. - - 2016-07-12 Trevor Saunders - - * tree.c (struct free_lang_data_d): Add constructor and change - types of members to ones that automatically manage resources. - (fld_worklist_push): Adjust. - (find_decls_types): Likewise. - (find_decls_types_in_eh_region): Likewise. - (free_lang_data_in_cgraph): Stop manually creating and - destroying members of free_lang_data_d. - - 2016-07-13 Uros Bizjak - - PR rtl-optimization/68961 - * config/i386/sse.md (movsd/movhpd to movupd peephole2s): Add new - peephole variant. Use sse_reg_operand predicates. - - 2016-07-12 Uros Bizjak - - * config/i386/predicates.md (x86_64_immediate_operand) - : Remove unneeded truncation to DImode. - : Ditto. - (x86_64_zext_immediate_operand) : Ditto. - - 2016-07-12 Michael Meissner - - PR target/71805 - * config/rs6000/altivec.md (altivec_vperm__internal): - The xxperm and xxpermr instructions require that the 2nd input - operand overlap with the output operand, and not the 1st. - (altivec_vperm_v8hiv16qi): Likewise. - (altivec_vperm__uns_internal): Likewise. - (altivec_vpermr__internal): Likewise. - (vperm_v8hiv4si): Likewise. - (vperm_v16qiv8hi): Likewise. - - 2016-07-12 Nathan Sidwell - - * config/arm/arm.c (arm_option_override): Set MASK_SINGLE_PIC_BASE - when -mno-pic-data-is-text-relative is in effect, by default. - * doc/invoke.texi (mpic-data-is-text-relative): Document new - behavior and clarify. - - 2016-07-12 Martin Liska - - * params.def: Add avg-loop niter. - * tree-ssa-loop-ivopts.c (avg_loop_niter): Use the param. - * cfgloopanal.c (expected_loop_iterations_unbounded): Likewise. - * doc/invoke.texi: Document the new parameter. - - 2016-07-12 Kyrylo Tkachov - - PR middle-end/71700 - * expr.c (store_constructor): Mask sign-extended bits when widening - sub-word constructor element at the start of a word. - - 2016-07-12 Martin Liska - - * Makefile.in: Append rule for params-options.h. - * params-options.h: New file. - - 2016-07-12 Martin Liska - - * ira-build.c (mark_loops_for_removal): Properly iterate - loops. - - 2016-07-12 Steven Bosscher - Richard Biener - - PR tree-optimization/23286 - PR tree-optimization/70159 - * doc/invoke.texi: Document -fcode-hoisting. - * common.opt (fcode-hoisting): New flag. - * opts.c (default_options_table): Enable -fcode-hoisting at -O2+. - * tree-ssa-pre.c (pre_stats): Add hoist_insert. - (do_regular_insertion): Rename to ... - (do_pre_regular_insertion): ... this and amend general comments - on insertion strathegy. - (do_partial_partial_insertion): Rename to ... - (do_pre_partial_partial_insertion): ... this. - (do_hoist_insertion): New function. - (insert_aux): Take flags on whether to do PRE and/or hoist insertion - and call do_hoist_insertion properly. - (insert): Adjust. - (pass_pre::gate): Enable also if -fcode-hoisting is enabled. - (pass_pre::execute): Register hoist_insert stats. - - 2016-07-12 Jakub Jelinek - - PR middle-end/71716 - * gimple-fold.c (optimize_atomic_compare_exchange_p): Return false - for SCALAR_FLOAT_TYPE_P type of expected var, or if TYPE_PRECISION - is different from mode's bitsize. Small cleanup. - - 2016-07-12 Richard Biener - - PR rtl-optimization/68961 - * fwprop.c (propagate_rtx): Allow SUBREGs of VEC_CONCAT and CONCAT - to simplify to a non-constant. - - 2016-07-11 Jakub Jelinek - - PR middle-end/71758 - * omp-low.c (expand_omp_target): Gimplify device. - - PR tree-optimization/71823 - * tree-vect-stmts.c (vectorizable_operation): Use vect_get_vec_defs - to get vec_oprnds2 from op2. - - 2016-07-11 Uros Bizjak - - * config/i386/predicates.md (x86_64_immediate_operand) : - Hoist common subexpressions. - (x86_64_zext_immediate_operand) : Ditto. - - 2016-07-11 Pat Haugen - - PR target/71800 - * config/rs6000/rs6000.md (stfiwx): Change constraint to 'wu' to - prevent generation of 'stxsiwx' on pre Power8 hardware. - - 2016-07-11 David Malcolm - - * input.c: Include cpplib.h. - (selftest::temp_source_file): New class. - (selftest::temp_source_file::temp_source_file): New ctor. - (selftest::temp_source_file::~temp_source_file): New dtor. - (selftest::should_have_column_data_p): New function. - (selftest::test_should_have_column_data_p): New function. - (selftest::temp_line_table): New class. - (selftest::temp_line_table::temp_line_table): New ctor. - (selftest::temp_line_table::~temp_line_table): New dtor. - (selftest::test_accessing_ordinary_linemaps): Add case_ param; use - it to create a temp_line_table. - (selftest::assert_loceq): Only verify LOCATION_COLUMN for - locations that are known to have column data. - (selftest::line_table_case): New struct. - (selftest::test_reading_source_line): Move tempfile handling - to class temp_source_file. - (ASSERT_TOKEN_AS_TEXT_EQ): New macro. - (selftest::assert_token_loc_eq): New function. - (ASSERT_TOKEN_LOC_EQ): New macro. - (selftest::test_lexer): New function. - (selftest::boundary_locations): New array. - (selftest::input_c_tests): Call test_should_have_column_data_p. - Loop over a test matrix of interesting values of location and - default_range_bits, calling test_lexer on each case in the matrix. - Move call to test_accessing_ordinary_linemaps into the matrix. - * selftest.h (ASSERT_EQ): Reimplement in terms of... - (ASSERT_EQ_AT): New macro. - - 2016-07-11 H.J. Lu - - PR target/71801 - * config/i386/i386.c (timode_scalar_chain::fix_debug_reg_uses): - Don't convert TImode in debug insn. - - 2016-07-11 Bernd Edlinger - - Convert TYPE_ALIGN_OK to a TYPE_LANG_FLAG. - * tree-core.h (tree_base::nothrow_flag): Adjust comment. - (tree_type_common::lang_flag_7): New. - (tree_type_common::spare): Reduce size. - * tree.h (TYPE_ALIGN_OK): Remove. - (TYPE_LANG_FLAG_7): New. - (get_inner_reference): Adjust header. - * print-tree.c (print_node): Adjust. - * expr.c (get_inner_reference): Remove parameter keep_aligning. - (get_bit_range, expand_assignment, expand_expr_addr_expr_1): Adjust - calls to get_inner_reference. - (expand_expr_real_1): Adjust call to get_inner_reference. Remove - handling of TYPE_ALIGN_OK. - * builtins.c (get_object_alignment_2): Adjust call to - get_inner_reference. Remove handling of VIEW_CONVERT_EXPR. - * emit-rtl.c (set_mem_attributes_minus_bitpos): Remove handling of - TYPE_ALIGN_OK. - * asan.c (instrument_derefs): Adjust calls to get_inner_reference. - * cfgexpand.c (expand_debug_expr): Likewise. - * dbxout.c (dbxout_expand_expr): Likewise. - * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref, - loc_list_from_tree, fortran_common): Likewise. - * fold-const.c (optimize_bit_field_compare, - decode_field_reference, fold_unary_loc, fold_comparison, - split_address_to_core_and_offset): Likewise. - * gimple-laddress.c (execute): Likewise. - * gimple-ssa-strength-reduction.c (slsr_process_ref): Likewise. - * gimplify.c (gimplify_scan_omp_clauses): Likewise. - * hsa-gen.c (gen_hsa_addr): Likewise. - * simplifx-rtx.c (delegitimize_mem_from_attrs): Likewise. - * tsan.c (instrument_expr): Likewise. - * ubsan.c (instrument_bool_enum_load, instrument_object_size): Likewise. - * tree.c (verify_type_variant): Remove handling of TYPE_ALIGN_OK. - * tree-affine.c (tree_to_aff_combination, - get_inner_reference_aff): Adjust calls to get_inner_reference. - * tree-data-ref.c (split_constant_offset_1, - dr_analyze_innermost): Likewise. - * tree-scalar-evolution.c (interpret_rhs_expr): Likewise. - * tree-sra.c (ipa_sra_check_caller): Likewise. - * tree-ssa-loop-ivopts.c (split_address_cost): Likewise. - * tree-ssa-math-opts.c (find_bswap_or_nop_load, - bswap_replace): Likewise. - * tree-vect-data-refs.c (vect_check_gather, - vect_analyze_data_refs): Likewise. - * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise. - * config/pa/pa.c (pa_emit_move_sequence): Remove handling of - TYPE_ALIGN_OK. - - 2016-07-11 David Malcolm - - * Makefile.in (selftest-valgrind): New phony target. - * function-tests.c (selftest::build_cfg): Delete pass instances - created by the test. - (selftest::convert_to_ssa): Likewise. - (selftest::test_expansion_to_rtl): Likewise. - * tree-cfg.c (selftest::test_linear_chain): Release dominator - vectors. - (selftest::test_diamond): Likewise. - - 2016-07-11 Richard Biener - - PR tree-optimization/71816 - * tree-ssa-pre.c (compute_avail): Adjust alignment of ref rather - than replacing all of its operands. - - 2016-07-11 Alan Modra - - * config/rs6000/rs6000.md (UNSPEC_DOLOOP): New unspec. - (ctr): Add unspec. - (ctr_internal*): Likewise. - - 2016-07-08 James Bowman - - * config/ft32/ft32.c (ft32_elf_encode_section_info): New function. - * config/ft32/ft32.h (ASM_OUTPUT_SYMBOL_REF): New function. - - 2016-07-08 Vladimir Makarov - - PR rtl-optimization/71621 - * lra-constraints.c (process_alt_operands): Check combination of - reg class and mode. - - 2016-07-08 Jason Merrill - Richard Biener - - P0145: Refining Expression Order for C++. - * gimplify.c (initial_rhs_predicate_for): New. - (gimplfy_modify_expr): Gimplify RHS before LHS. - - 2016-07-08 Bill Schmidt - - PR target/71297 - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Allow standard error handling to take over when a wrong number - of arguments is presented to __builtin_vec_ld () or - __builtin_vec_st (). - - 2016-07-08 Jiong Wang - - * config/aarch64/aarch64-simd-builtins.def (smax): Remove float - variants. - (smin): Likewise. - (fmax): New entry. - (fmin): Likewise. - * config/aarch64/arm_neon.h (vmaxnm_f32): Use - __builtin_aarch64_fmaxv2sf. - (vmaxnmq_f32): Likewise. - (vmaxnmq_f64): Likewise. - (vminnm_f32): Likewise. - (vminnmq_f32): Likewise. - (vminnmq_f64): Likewise. - - 2016-07-08 Michael Meissner - - PR target/71806 - * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Do not - enable -mfloat128-hardware by default. - (ISA_3_0_MASKS_IEEE): New macro to give all of the VSX options - that IEEE 128-bit hardware support needs. - * config/rs6000/rs6000.c (rs6000_option_override_internal): If - -mcpu=power9 -mfloat128, enable -mfloat128-hardware by default. - Use ISA_3_0_MASKS_IEEE as the set of options that IEEE 128-bit - floating point requires. - * doc/invoke.texi (RS/6000 and PowerPC Options): Document - -mfloat128 and -mfloat128-hardware changes. - - 2016-07-08 Alan Hayward - - PR tree-optimization/71667 - * tree-vect-loop.c (vectorizable_live_operation): ignore DEBUG stmts - - 2016-07-08 Martin Liska - - PR middle-end/71606 - * fold-const.c (fold_convertible_p): As COMPLEX_TYPE - folding produces SAVE_EXPRs, thus return false for the type. - - 2016-07-07 Martin Liska - - * file-find.c (remove_prefix): New function. - * file-find.h (remove_prefix): Declare the function. - * gcc-ar.c (main): Skip a folder of the wrapper if - a wrapped binary would point to the same file. - - 2016-07-07 Jan Hubicka - - * tree-scalar-evolution.c (iv_can_overflow_p): export. - * tree-scalar-evolution.h (iv_can_overflow_p): Declare. - * tree-ssa-loop-ivopts.c (alloc_iv): Use it. - - 2016-07-07 Ilya Enkovich - - PR ipa/71624 - * ipa-inline-analysis.c (compute_inline_parameters): Set - local.can_change_signature to false for intrumentation - thunk callees. - - 2016-07-07 Thomas Preud'homme - - * config/arm/arm.h (TARGET_USE_MOVT): Check MOVT/MOVW availability - with TARGET_HAVE_MOVT. - (TARGET_HAVE_MOVT): Define. - * config/arm/arm.c (const_ok_for_op): Check MOVT/MOVW - availability with TARGET_HAVE_MOVT. - * config/arm/arm.md (arm_movt): Use TARGET_HAVE_MOVT to check MOVT - availability. - (addsi splitter): Use TARGET_THUMB && TARGET_HAVE_MOVT rather than - TARGET_THUMB2. - (symbol_refs movsi splitter): Remove TARGET_32BIT check. - (arm_movtas_ze): Use TARGET_HAVE_MOVT to check MOVT availability. - * config/arm/constraints.md (define_constraint "j"): Use - TARGET_HAVE_MOVT to check MOVT availability. - - 2016-07-07 Thomas Preud'homme - - * config/arm/arm-protos.h: Reindent FL_FOR_* macro definitions. - - 2016-07-07 Thomas Preud'homme - - * config/arm/arm-arches.def (armv8-m.base): Define new architecture. - (armv8-m.main): Likewise. - (armv8-m.main+dsp): Likewise. - * config/arm/arm-protos.h (FL_FOR_ARCH8M_BASE): Define. - (FL_FOR_ARCH8M_MAIN): Likewise. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/bpabi.h: Add armv8-m.base, armv8-m.main and - armv8-m.main+dsp to BE8_LINK_SPEC. - * config/arm/arm.h (TARGET_HAVE_LDACQ): Exclude ARMv8-M. - (enum base_architecture): Add BASE_ARCH_8M_BASE and BASE_ARCH_8M_MAIN. - * config/arm/arm.c (arm_arch_name): Increase size to work with ARMv8-M - Baseline and Mainline. - (arm_option_override_internal): Also disable arm_restrict_it when - !arm_arch_notm. Update comment for -munaligned-access to also cover - ARMv8-M Baseline. - (arm_file_start): Increase buffer size for printing architecture name. - * doc/invoke.texi: Document architectures armv8-m.base, armv8-m.main - and armv8-m.main+dsp. - (mno-unaligned-access): Clarify that this is disabled by default for - ARMv8-M Baseline architectures as well. - - 2016-07-07 Thomas Preud'homme - - * config/arm/elf.h: Use __ARM_ARCH_ISA_THUMB and __ARM_ARCH_ISA_ARM to - decide whether to prevent some libgcc routines being included for some - multilibs rather than __ARM_ARCH_6M__ and add comment to indicate the - link between this condition and the one in - libgcc/config/arm/lib1func.S. - - 2016-07-07 Richard Biener - - * tree-ssa-pre.c: Include alias.h. - (compute_avail): If we have multiple VN_REFERENCEs with the - same hashtable entry adjust that to make it a valid replacement - for all of them with respect to alignment and aliasing - when doing insertion. - * tree-ssa-sccvn.h (vn_reference_operands_for_lookup): Declare. - * tree-ssa-sccvn.c (vn_reference_operands_for_lookup): New function. - - 2016-07-06 Segher Boessenkool - - PR target/70098 - PR target/71763 - * config/rs6000/rs6000.md (*ctr_internal1, *ctr_internal2, - *ctr_internal5, *ctr_internal6): Add *wi to the output - constraint. - - 2016-07-06 Trevor Saunders - - * var-tracking.c (struct adjust_mem_data): Make side_effects a vector. - (adjust_mems): Adjust. - (adjust_insn): Likewise. - (prepare_call_arguments): Likewise. - - 2016-07-06 Trevor Saunders - - * gcse.c (struct ls_expr): Make stores field a vector. - (ldst_entry): Adjust. - (free_ldst_entry): Likewise. - (print_ldst_list): Likewise. - (compute_ld_motion_mems): Likewise. - (update_ld_motion_stores): Likewise. - - 2016-07-06 Trevor Saunders - - * gcse.c (struct ls_expr): Remove loads field. - (ldst_entry): Adjust. - (free_ldst_entry): Likewise. - (print_ldst_list): Likewise. - (compute_ld_motion_mems): Likewise. - - 2016-07-06 Trevor Saunders - - * store-motion.c (struct st_expr): Make antic_stores a vector. - (st_expr_entry): Adjust. - (free_st_expr_entry): Likewise. - (print_store_motion_mems): Likewise. - (find_moveable_store): Likewise. - (compute_store_table): Likewise. - (remove_reachable_equiv_notes): Likewise. - (replace_store_insn): Likewise. - (build_store_vectors): Likewise. - - 2016-07-06 Kyrylo Tkachov - - * config/arm/driver-arm.c (arm_cpu_table): Add entries for cortex-a32, - cortex-a35, cortex-a53, cortex-a57, cortex-a72, cortex-a73. - - 2016-07-06 Yuri Rumyantsev - - PR tree-optimization/71518 - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Adjust - misalign also for outer loops with negative step. - - 2016-07-06 Wilco Dijkstra - - * config/arm/cortex-a53.md: Use final_presence_set for in-order. - (cortex_a53_shift): Add mov_shift. - (cortex_a53_shift_reg): Add new reservation for register shifts. - (cortex_a53_alu): Remove bfm. - (cortex_a53_alu_shift): Add bfm, remove mov_shift. - (cortex_a53_alu_extr): Add new reservation for EXTR. - (bypasses): Improve bypass modelling. - - 2016-07-06 Senthil Kumar Selvaraj - - PR target/50739 - * config/avr/avr.c (avr_asm_select_section): Strip off - SECTION_DECLARED from flags when calling get_section. - - 2016-07-06 Richard Sandiford - - * tree-vectorizer.h (vect_memory_access_type): Add - VMAT_INVARIANT, VMAT_CONTIGUOUS_DOWN and VMAT_CONTIGUOUS_REVERSED. - * tree-vect-stmts.c (compare_step_with_zero): New function. - (perm_mask_for_reverse): Move further up file. - (get_group_load_store_type): Stick to VMAT_ELEMENTWISE if the - step is negative. - (get_negative_load_store_type): New function. - (get_load_store_type): Call it. Add an ncopies argument. - (vectorizable_mask_load_store): Update call accordingly and - remove tests for negative steps. - (vectorizable_store, vectorizable_load): Likewise. Handle new - memory_access_types. - - 2016-07-06 Richard Sandiford - - * tree-vectorizer.h (vect_memory_access_type): New enum. - (_stmt_vec_info): Add a memory_access_type field. - (STMT_VINFO_MEMORY_ACCESS_TYPE): New macro. - (vect_model_store_cost): Take an access type instead of a boolean. - (vect_model_load_cost): Likewise. - * tree-vect-slp.c (vect_analyze_slp_cost_1): Update calls to - vect_model_store_cost and vect_model_load_cost. - * tree-vect-stmts.c (vec_load_store_type): New enum. - (vect_model_store_cost): Take an access type instead of a - store_lanes_p boolean. Simplify tests. - (vect_model_load_cost): Likewise, but for load_lanes_p. - (get_group_load_store_type, get_load_store_type): New functions. - (vectorizable_store): Use get_load_store_type. Record the access - type in STMT_VINFO_MEMORY_ACCESS_TYPE. - (vectorizable_load): Likewise. - (vectorizable_mask_load_store): Likewise. Replace is_store - variable with vls_type. - - 2016-07-06 Richard Sandiford - - * tree-vectorizer.h (vect_grouped_load_supported): Add a - single_element_p parameter. - * tree-vect-data-refs.c (vect_grouped_load_supported): Likewise. - Check the PR65518 case here rather than in vectorizable_load. - * tree-vect-loop.c (vect_analyze_loop_2): Update call accordignly. - * tree-vect-stmts.c (vectorizable_load): Likewise. - - 2016-07-06 Richard Sandiford - - * tree-vectorizer.h (gather_scatter_info): New structure. - (vect_check_gather_scatter): Return a bool rather than a decl. - Replace return-by-pointer arguments with a single - gather_scatter_info *. - * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise. - (vect_analyze_data_refs): Update call accordingly. - * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise. - (vectorizable_mask_load_store): Likewise. Also record the - offset dt and vectype in the gather_scatter_info. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - - 2016-07-06 Richard Sandiford - - * tree-vect-stmts.c (vect_model_store_cost): For non-SLP - strided groups, use the cost of N scalar accesses instead - of ncopies vector accesses. - (vect_model_load_cost): Likewise. - - 2016-07-06 Richard Sandiford - - * tree-vect-stmts.c (vect_cost_group_size): Delete. - (vect_model_store_cost): Avoid calling it. Use first_stmt_p - variable to indicate when once-per-group costs are being used. - (vect_model_load_cost): Likewise. Fix comment and misindented code. - - 2016-07-06 Richard Sandiford - - * tree-vect-stmts.c (vectorizable_load): Remove unnecessary - peeling-for-gaps condition. - - 2016-07-06 Andreas Krebbel - - * config/s390/s390.c (s390_expand_vec_init): Force initializer - element to register if it doesn't match general_operand. - - 2016-07-05 Michael Meissner - Bill Schmidt - - * config/rs6000/rs6000-protos.h (rs6000_split_signbit): New - prototype. - * config/rs6000/rs6000.c (rs6000_split_signbit): New function. - * config/rs6000/rs6000.md (UNSPEC_SIGNBIT): New constant. - (SIGNBIT): New mode iterator. - (Fsignbit): New mode attribute. - (signbit2): Change operand1 to match FLOAT128 instead of - IBM128; dispatch to gen_signbit{kf,tf}2_dm for __float128 - when direct moves are available. - (signbit2_dm): New define_insn_and_split). - (signbit2_dm2): New define_insn. - - 2016-07-05 Kyrylo Tkachov - - PR rtl-optimization/71594 - * ifcvt.c (noce_convert_multiple_sets): Wrap new_val or old_val - into subregs of appropriate mode before trying to emit a conditional - move. - - 2016-07-05 Jan Hubicka - - * tree-scalar-evolution.c (iv_can_overflow_p): New function. - (simple_iv): Use it. - - 2016-07-05 Jan Hubicka - - * tree-ssa-loop-niter.c (nowrap_type_p): Use ANY_INTEGRAL_TYPE_P. - - 2016-07-05 Jiong Wang - - * lra-constraints.c (process_alt_operands): Don't add spilling cost for - "offmemok". - - 2016-07-05 Jan Hubicka - - * tree-scalar-evoluiton.c (simple_iv): Use nowrap_type to check if - IV can overflow. - - 2016-07-05 Richard Biener - - * gimple-ssa-split-paths.c (find_block_to_duplicate_for_splitting_pa): - Handle empty else block. - (is_feasible_trace): Likewise. - (split_paths): Likewise. - - 2016-07-05 Richard Biener - - * tree-loop-distribution.c (distribute_loop): Fix issue with - the cost model loop. - - 2016-07-05 Christophe Lyon - - * config/arm/neon-testgen.ml: Delete. - * config/arm/neon.ml: Delete. - - 2016-07-04 Jakub Jelinek - - PR c++/71739 - * tree.c (attribute_value_equal): Use get_attribute_name instead of - directly using TREE_PURPOSE. - - 2016-07-04 Jiong Wang - - * config/aarch64/aarch64.h: Rename "ARMv8.1" to "ARMv8.1-A". - * config/aarch64/aarch64_neon.h: Likewise. - * config/aarch64/arm_neon.h: Likewise. - * config/aarch64/atomics.md: Likewise. - * config/aarch64/aarch64-simd-builtins.def: Likewise. - * doc/invoke.texi: Likewise. - - 2016-07-04 Dominik Vogt - - * config/s390/s390.md: Add "z13" cpu_facility. - ("*movcc"): Add support for z13 instructions lochi and locghi. - * config/s390/predicates.md ("loc_operand"): New predicate for "load on - condition" type instructions. - - 2016-07-04 Dominik Vogt - Jeff Law - - * explow.c (allocate_dynamic_stack_space): Simplify knowing that - MUST_ALIGN was always true and extra_align ist always BITS_PER_UNIT. - - 2016-07-04 Yuri Rumyantsev - - * config/i386/i386.c (ix86_expand_vec_perm): Add handle one-operand - permutation for TARGET_AVX512F. - (ix86_expand_vec_one_operand_perm_avx512): New function. - (expand_vec_perm_1): Invoke introduced function. - * tree-vect-loop.c (vect_transform_loop): Clear-up safelen value since - it may be not valid after vectorization. - - 2016-07-04 Ramana Radhakrishnan - - PR target/63874 - * config/aarch64/aarch64.c (aarch64_classify_symbol): Fix - typo in comment. Only force to memory if it is a weak - external reference. - - 2016-07-04 Matthew Wahab - Jiong Wang - - * config/aarch64/aarch64-arches.def: Add "armv8.2-a". - * config/aarch64/aarch64.h (AARCH64_FL_V8_2): New. - (AARCH64_FL_F16): New. - (AARCH64_FL_FOR_ARCH8_2): New. - (AARCH64_ISA_8_2): New. - (AARCH64_ISA_F16): New. - (TARGET_FP_F16INST): New. - (TARGET_SIMD_F16INST): New. - * config/aarch64/aarch64-option-extensions.def ("fp16"): New entry. - ("fp"): Disabling "fp" also disables "fp16". - * config/aarch64/aarch64-c.c (arch64_update_cpp_builtins): - Conditionally define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC - and __ARM_FEATURE_FP16_VECTOR_ARITHMETIC. - * doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and "fp16". - - 2016-07-04 Jan Beulich - - * gcc.c (default_compilers["@c-header"]): Conditionalize "-o". - - 2016-07-01 Michael Meissner - - PR target/71720 - * config/rs6000/vsx.md (vsx_splat_v4sf_internal): When splitting - the insns, use an insn form that does not adjust the offset on - little endian systems. - - 2016-07-01 Jan Beulich - - * varasm.c (get_variable_section): Validate initializer in - named .bss-like sections. - - 2016-07-01 Kelvin Nilsen - - * config/rs6000/altivec.md (*altivec_vpermr__internal): - Exchange the order of the second and third operands in the vpermr - instruction tmeplate. - - 2016-07-01 Peter Bergner - - PR target/71698 - * config/rs6000/rs6000.c (rs6000_secondary_reload_simple_move): - Disallow TDmode values. - - 2016-07-01 Alan Modra - - PR rtl-optimization/71709 - * ira-lives.c (find_call_crossed_cheap_reg): Exit loop on arg reg - being set, not referenced. - - 2016-07-01 Yuri Rumyantsev - - PR tree-optimization/70729 - * tree-vectorizer.c (adjust_simduid_builtins): Nullify safelen field - of loop since it can be not valid after transformation. - - 2016-07-01 Kyrylo Tkachov - - * config/arm/arm.c (thumb_reload_in_hi): Delete. - * config/arm/arm-protos.h (thumb_reload_in_hi): Delete prototype. - - 2016-07-01 Eric Botcazou - - * config/arm/arm.c (arm_function_ok_for_sibcall): Add another check - for NULL decl. - - 2016-06-30 Michael Meissner - - PR target/71677 - * config/rs6000/constraints.md (wY constraint): New constraint to - match the requirements for the LXSD and STXSD instructions. - * config/rs6000/predicates.md (offsettable_mem_14bit_operand): New - predicate to match the requirements for the LXSD and STXSD - instructions. - * config/rs6000/rs6000.md (mov_hardfloat32, FMOVE64 case): - Use constaint wY for LXSD/STXSD instructions instead of 'o' or 'Y' - to make sure that the bottom 2 bits of offset are 0, the address - form is offsettable, and no updating is done in the address mode. - (mov_hardfloat64, FMOVE64 case): Likewise. - (movdi_internal32): Likewise - (movdi_internal64): Likewise. - - 2016-06-30 Jakub Jelinek - - PR tree-optimization/71707 - * tree-ssa-strlen.c (get_stridx_plus_constant): Handle already present - strinfo even for ADDR_EXPR ptr. - - 2016-06-30 Kelvin Nilsen - - * config/rs6000/altivec.md (darn_32): Change the condition to - TARGET_P9_MISC instead of TARGET_MODULO. - (darn_raw): Replace TARGET_MODULO with TARGET_P9_MISC in the - condition expression. - (darn): Replace TARGET_MODULO with TARGET_P9_MISC in the - condition expression. - * config/rs6000/dfp.md (UNSPEC_DTSTSFI): New unspec constant. - (DFP_TEST): New code iterator. - (dfptstsfi__mode>): New define_expand. - (*dfp_sgnfcnc_): New define_insn. - * config/rs6000/rs6000-builtin.def (BU_P9_MISC_0): Move this macro - definition next to BU_P9_MISC_1 definition and change the MASK - value to RS6000_BTM_P9_MISC. - (BU_P9_MISC_1): Change the MASK value to RS6000_BTM_P9_MISC. - (BU_P9_64BIT_MISC_0): Likewise. - (BU_P9_DFP_MISC_0): New macro definition. - (BU_P9_DFP_MISC_1): New macro definition. - (BU_P9_DFP_MISC_2): New macro definition. - (BU_P9_DFP_OVERLOAD_1): New macro definition. - (BU_P9_DFP_OVERLOAD_2): New macro definition. - (BU_P9_DFP_OVERLOAD_3): New macro definition. - (TSTSFI_LT_DD): New BU_P9_DFP_MISC_2. - (TSTSFI_LT_TD): Likewise. - (TSTSFI_EQ_DD): Likewise. - (TSTSFI_EQ_TD): Likewise. - (TSTSFI_GT_DD): Likewise. - (TSTSFI_GT_TD): Likewise. - (TSTSFI_OV_DD): Likewise. - (TSTSFI_OV_TD): Likewise. - (TSTSFI_LT): New BU_P9_DFP_OVERLOAD_2. - (TSTSFI_LT_DD): Likewise. - (TSTSFI_LT_TD): Likewise. - (TSTSFI_EQ): Likewise. - (TSTSFI_EQ_DD): Likewise. - (TSTSFI_EQ_TD): Likewise. - (TSTSFI_GT): Likewise. - (TSTSFI_GT_DD): Likewise. - (TSTSFI_GT_TD): Likewise. - (TSTSFI_OV): Likewise. - (TSTSFI_OV_DD): Likewise. - (TSTSFI_OV_TD): Likewise. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - overloaded test significance functions. - * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add - OPTION_MASK_P9_MISC into the representation of this mask. - (POWERPC_MASKS): Add OPTION_MASK_P9_MISC into the representation - of this mask. - * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Set the - RS6000_BTM_P9_MISC flag in the return value if TARGET_P9_MISC is - non-zero. - (rs6000_expand_binop_builtin): Enforce that argument 0 of the exp - argument is a 6-bit unsigned literal value if the icode argument - represents a DFP test significance built-in call. - (rs6000_invalid_builtin): Add support for the RS6000_BTM_P9_MISC - flag used independently and in combination with the - RS6000_BTM_64BIT flag. - (rs6000_opt_masks): Add entry for power9-misc command-line option. - (rs6000_builtin_mask_names): Add entry for power9-misc - command-line option. - * config/rs6000/rs6000.h: Redefine TARGET_P9_MISC as 0 if - HAVE_AS_POWER9 is not a defined macro. Define MASK_P9_MISC and - RS6000_BTM_P9_MISC macros. - * config/rs6000/rs6000.opt: Add support for the -mpower9-misc - option and change the description of the -mpower9-vector option to - enable only vector instructions, removing its erroneously claimed - support for scalar instructions. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document - the ISA 3.0 digital floating point test significance built-in - functions. - - 2016-06-30 Wilco Dijkstra - - * config/aarch64/aarch64.c (cortexa35_tunings): - Enable AES fusion. Use cortexa57_branch_cost. - (cortexa53_tunings): Use cortexa57_branch_cost. - (cortexa72_tunings): Use cortexa57_branch_cost. - Use AUTOPREFETCHER_WEAK. - (cortexa73_tunings): Use cortexa57_branch_cost. - - 2016-06-30 Kyrylo Tkachov - James Greenhalgh - - * config/aarch64/arm_neon.h (vcopyq_lane_f32, vcopyq_lane_f64, - vcopyq_lane_p8, vcopyq_lane_p16, vcopyq_lane_s8, vcopyq_lane_s16, - vcopyq_lane_s32, vcopyq_lane_s64, vcopyq_lane_u8, vcopyq_lane_u16, - vcopyq_lane_u32, vcopyq_lane_u64): Reimplement in C. - (vcopy_lane_f32, vcopy_lane_f64, vcopy_lane_p8, vcopy_lane_p16, - vcopy_lane_s8, vcopy_lane_s16, vcopy_lane_s32, vcopy_lane_s64, - vcopy_lane_u8, vcopy_lane_u16, vcopy_lane_u32, vcopy_lane_u64, - vcopy_laneq_f32, vcopy_laneq_f64, vcopy_laneq_p8, vcopy_laneq_p16, - vcopy_laneq_s8, vcopy_laneq_s16, vcopy_laneq_s32, vcopy_laneq_s64, - vcopy_laneq_u8, vcopy_laneq_u16, vcopy_laneq_u32, vcopy_laneq_u64, - vcopyq_laneq_f32, vcopyq_laneq_f64, vcopyq_laneq_p8, vcopyq_laneq_p16, - vcopyq_laneq_s8, vcopyq_laneq_s16, vcopyq_laneq_s32, vcopyq_laneq_s64, - vcopyq_laneq_u8, vcopyq_laneq_u16, vcopyq_laneq_u32, vcopyq_laneq_u64): - New intrinsics. - - 2016-06-30 James Greenhalgh - Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane): - New define_insn. - (*aarch64_simd_vec_copy_lane_): Likewise. - - 2016-06-30 David Malcolm - - PR driver/71651 - * gcc.c (driver::build_option_suggestions): Pass "option" to - add_misspelling_candidates. - * opts-common.c (add_misspelling_candidates): Add "option" param; - use it to avoid adding negated forms for options marked with - RejectNegative. - * opts.h (add_misspelling_candidates): Add "option" param. - - 2016-06-30 Jakub Jelinek - - PR middle-end/71693 - * fold-const.c (fold_binary_loc) : Cast - TREE_OPERAND (arg0, 0) and TREE_OPERAND (arg0, 1) to type - first when permuting bitwise operation with rotate. Cast - TREE_OPERAND (arg0, 0) to type when cancelling two rotations. - - 2016-06-29 David Malcolm - - * opts.c (handle_param): Use find_param_fuzzy to offer suggestions - for misspelled param names. - * params.c: Include spellcheck.h. - (find_param_fuzzy): New function. - * params.h (find_param_fuzzy): New prototype. - * spellcheck.c (struct edit_distance_traits): Move to... - * spellcheck.h (struct edit_distance_traits): - ...here. - - 2016-06-29 Michael Meissner - - * config/rs6000/predicates.md (const_0_to_7_operand): New - predicate, recognize 0..7. - * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add - support for doing extracts from V16QImode, V8HImode, V4SImode - under ISA 3.0. - * config/rs6000/vsx.md (VSX_EXTRACT_I): Mode iterator for ISA 3.0 - vector extract support. - (VSX_EXTRACT_PREDICATE): Mode attribute to validate element number - for ISA 3.0 vector extract. - (VSX_EX): Constraints to use for ISA 3.0 vector extract. - (vsx_extract_, VSX_EXTRACT_I): Add support for doing - extracts of a constant element number from small integer vectors - on 64-bit ISA 3.0 systems. - (vsx_extract__di): Likewise. - * config/rs6000/rs6000.h (TARGET_VEXTRACTUB): New target macro to - say when we can do ISA 3.0 vector extracts. - * config/rs6000/rs6000.md (stfiwx): Allow DImode in Altivec - registers, using the stxsiwx instruction. - - 2016-06-29 Jim Wilson - - * config/aarch64/aarch64-cores.def (qdf24xx): Use qdf24xx tuning. - * config/aarch64/aarch64.c (qdf24xx_addrcost_table, - qdf24xx_regmove_cost, qdf24xx_tunings): New. - * config/arm/aarch64-cost-tables.h (qdf24xx_extra_costs): New. - * config/arm/arm-cores.def (qdf24xx): Use qdf24xx tuning. - * config/arm/arm.c (arm_qdf24xx_tune): New. - - 2016-06-29 Wilco Dijkstra - - * config/aarch64/aarch64.c (cortexa53_tunings): - Increase loop alignment to 8. Set function alignment to 16. - (cortexa35_tunings): Likewise. - (cortexa57_tunings): Increase loop alignment to 8. - (cortexa72_tunings): Likewise. - (cortexa73_tunings): Likewise. - - 2016-06-29 Matthew Wahab - - * doc/sourcebuild.texi (Effective-Target keywords): Add entries - for arm_fp16_ok and arm_fp16_hw. - (Add Options): Add entries for arm_fp16, arm_fp16_ieee and - arm_fp16_alternative. - - 2016-06-29 Ilya Enkovich - - PR tree-optimization/71655 - * tree-vect-stmts.c (vectorizable_comparison): Swap definition - types when swapping operands. - - 2016-06-29 Martin Liska - - PR middle-end/71585 - * common.opt (flag_stack_protect): Mark the flag as optimization flag. - * ipa-inline-transform.c (inline_call): Remove unnecessary call - of build_optimization_node. - - 2016-06-29 Yuri Rumyantsev - - PR tree-optimization/70729 - * tree-ssa-loop-im.c (ref_indep_loop_p_1): Consider memory reference as - independent in loops having positive safelen value. - * tree-vect-loop.c (vect_transform_loop): Clear-up safelen value since - it may be not valid after vectorization. - - 2016-06-29 Jakub Jelinek - - PR tree-optimization/71625 - * tree-ssa-strlen.c (get_addr_stridx): Add PTR argument. Assume list - is sorted by ascending list->offset. If PTR is non-NULL and there is - previous strinfo, call get_stridx_plus_constant. - (get_stridx): Pass exp as second argument to get_addr_stridx. - (addr_stridxptr): Add missing list = list->next, so that there can be - more than one entries in the list. Bump limit from 16 to 32. Ensure - the list is sorted by ascending list->offset. - (get_stridx_plus_constant): Adjust so that it can be also called with - ADDR_EXPR instead of SSA_NAME as PTR. - (handle_char_store): Pass NULL_TREE as second argument to - get_addr_stridx. - - 2016-06-29 Richard Biener - - PR rtl-optimization/68961 - * simplify-rtx.c (simplify_subreg): Handle VEC_CONCAT like CONCAT. - - 2016-06-29 Richard Biener - - PR middle-end/71002 - * alias.c (component_uses_parent_alias_set_from): Handle - type punning through union accesses by using the union alias set. - * gimple.c (gimple_get_alias_set): Remove union type punning case. - - 2016-07-29 Richard Biener - - * match.pd ((T)(T2)x -> (T)x): Remove restriction on final - precision not matching mode precision. - - 2016-06-28 John David Anglin - - * config/pa/pa.md (call_symref_64bit_post_reload): Don't call - pa_output_arg_descriptor. - (call_val_symref_64bit_post_reload): Likewise. - (call_val_powf_64bit_post_reload): Likewise. - (sibcall_internal_symref_64bit): Likewise. - (sibcall_value_internal_symref_64bit): Likewise. - - 2016-06-28 Jakub Jelinek - - PR middle-end/71626 - * config/i386/i386.c (ix86_expand_vector_move): For SUBREG of - a constant, force its SUBREG_REG into memory or register instead - of whole op1. - - 2016-06-28 Pitchumani Sivanupandi - - PR target/58655 - * config/avr/avr.opt (-mfract-convert-truncate): Update description. - * doc/invoke.texi (AVR Options): Document it. - - 2016-06-28 Walter Lee - - * config/tilegx/linux.h: Do not include arch/icache.h - (CLEAR_INSN_CACHE): Provide inlined definition directly. - * config/tilepro/linux.h: Do not include arch/icache.h - (CLEAR_INSN_CACHE): Provide inlined definition directly. - - 2016-06-28 Wilco Dijkstra - - * tree-ssa-math-opts.c (find_bswap_or_nop_1): Adjust bitnumbering - for big-endian BIT_FIELD_REF. - - 2016-06-28 Pat Haugen - - * config/rs6000/rs6000.md ('type' attribute): Add htmsimple/dfp types. - ('size' attribute): Add '128'. - Include power9.md. - (*mov_hardfloat32, *mov_hardfloat64, *movdi_internal32, - *movdi_internal64, *movdf_update1): Set size attribute to '64'. - (add3, sub3, mul3, div3, sqrt2, - copysign3, neg2_hw, abs2_hw, *nabs2_hw, - *fma4_hw, *fms4_hw, *nfma4_hw, *nfms4_hw, - extend2_hw, truncdf2_hw, - *xscvqpwz_, *xscvqpdz_, *xscvdqp_, - *truncdf2_odd): Set size attribute to '128'. - (*cmp_hw): Change type to veccmp and set size attribute to '128'. - * config/rs6000/power6.md (power6-fp): Include dfp type. - * config/rs6000/power7.md (power7-fp): Likewise. - * config/rs6000/power8.md (power8-fp): Likewise. - * config/rs6000/power9.md: New file. - * config/rs6000/t-rs6000 (MD_INCLUDES): Add power9.md. - * config/rs6000/htm.md (*tabort, *tabortc, *tabortci, - *trechkpt, *treclaim, *tsr, *ttest): Change type attribute to - htmsimple. - * config/rs6000/dfp.md (extendsddd2, truncddsd2, extendddtd2, - trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3, - divtd3, *cmpdd_internal1, *cmptd_internal1, floatdidd2, floatditd2, - ftruncdd2, fixdddi2, ftrunctd2, fixtddi2, dfp_ddedpd_, - dfp_denbcd_, dfp_dxex_, dfp_diex_, dfp_dscli_, - dfp_dscri_): Change type attribute to dfp. - * config/rs6000/crypto.md (crypto_vshasigma): Change type - attribute to vecsimple. - * config/rs6000/rs6000.c (power9_cost): Update costs, cache size - and prefetch streams. - (rs6000_option_override_internal): Remove temporary code setting - tuning to power8. Don't set rs6000_sched_groups for power9. - (last_scheduled_insn): Change to rtx_insn *. - (divide_cnt, vec_load_pendulum): New variables. - (rs6000_adjust_cost): Add Power9 to test for store->load separation. - (rs6000_issue_rate): Set issue rate for Power9. - (is_power9_pairable_vec_type): New. - (power9_sched_reorder2): New. - (rs6000_sched_reorder2): Call new function for Power9 specific - reordering. - (insn_must_be_first_in_group): Remove Power9. - (insn_must_be_last_in_group): Likewise. - (force_new_group): Likewise. - (rs6000_sched_init): Fix initialization of last_scheduled_insn. - Initialize divide_cnt/vec_load_pendulum. - (_rs6000_sched_context, rs6000_init_sched_context, - rs6000_set_sched_context): Handle context save/restore of new - variables. - - 2016-06-28 Richard Biener - - * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): - Properly handle DECL_BIT_FIELD_REPRESENTATIVE occuring as - COMPONENT_REF operand. - (nonoverlapping_component_refs_p): Likewise. - * stor-layout.c (start_bitfield_representative): Mark - DECL_BIT_FIELD_REPRESENTATIVE as DECL_NONADDRESSABLE_P. - - 2016-06-28 Jakub Jelinek - - * Makefile.in: Don't cat ../stage_current if it does not exist. - - * doc/extend.texi (__builtin_add_overflow_p): Clarify behavior when - last argument is a bit-field. - - PR rtl-optimization/71673 - * internal-fn.c (expand_arith_overflow_result_store): Use - OPTAB_LIB_WIDEN instead of OPTAB_DIRECT as last argument to - expand_simple_binop. - - PR middle-end/66867 - * builtins.c (expand_ifn_atomic_compare_exchange_into_call, - expand_ifn_atomic_compare_exchange): New functions. - * internal-fn.c (expand_ATOMIC_COMPARE_EXCHANGE): New function. - * tree.h (build_call_expr_internal_loc): Rename to ... - (build_call_expr_internal_loc_array): ... this. Fix up type of - last argument. - * internal-fn.def (ATOMIC_COMPARE_EXCHANGE): New internal fn. - * predict.c (expr_expected_value_1): Handle IMAGPART_EXPR of - ATOMIC_COMPARE_EXCHANGE result. - * builtins.h (expand_ifn_atomic_compare_exchange): New prototype. - * gimple-fold.h (optimize_atomic_compare_exchange_p, - fold_builtin_atomic_compare_exchange): New prototypes. - * gimple-fold.c (optimize_atomic_compare_exchange_p, - fold_builtin_atomic_compare_exchange): New functions.. - * tree-ssa.c (execute_update_addresses_taken): If - optimize_atomic_compare_exchange_p, ignore &var in 2nd argument - of call when finding addressable vars, and if such var becomes - non-addressable, call fold_builtin_atomic_compare_exchange. - - 2016-06-27 Segher Boessenkool - - PR target/71670 - * config/rs6000/rs6000.md (ashdi3_extswsli_dot): Use - gen_ashdi3_extswsli_dot2 instead of gen_ashdi3_extswsli_dot. - - 2016-06-27 Pat Haugen - - * config/rs6000/rs6000.md ('type' attribute): Add - veclogical,veccmpfx,vecexts,vecmove insn types. - (*abs2_fpr, *nabs2_fpr, *neg2_fpr, *extendsfdf2_fpr, - copysign3_fcpsgn, truncdf2_internal1, neg2_internal, - p8_fmrgow_, pack): Change type to fpsimple. - (*xxsel, copysign3_hard, neg2_hw, abs2_hw, - *nabs2_hw): Change type to vecmove. - (*and3_internal, *bool3_internal, *boolc3_internal, - *boolcc3_internal, *eqv3_internal, - *one_cmpl3_internal, *ieee_128bit_vsx_neg2_internal, - *ieee_128bit_vsx_abs2_internal, - *ieee_128bit_vsx_nabs2_internal, extendkftf2, trunctfkf2, - *ieee128_mfvsrd_64bit, *ieee128_mfvsrd_32bit, *ieee128_mtvsrd_64bit, - *ieee128_mtvsrd_32bit): Change type to veclogical. - (mov_hardfloat, *mov_hardfloat32, *mov_hardfloat64, - *movdi_internal32, *movdi_internal64): Update insn types. - * config/rs6000/vsx.md (*vsx_le_undo_permute_, - vsx_extract_): Change type to veclogical. - (*vsx_xxsel, *vsx_xxsel_uns): Change type to vecmove. - (vsx_sign_extend_qi_, *vsx_sign_extend_hi_, - *vsx_sign_extend_si_v2di): Change type to vecexts. - * config/rs6000/altivec.md (*altivec_mov, *altivec_movti): Change - type to veclogical. - (*altivec_eq, *altivec_gt, *altivec_gtu, - *altivec_vcmpequ_p, *altivec_vcmpgts_p, - *altivec_vcmpgtu_p): Change type to veccmpfx. - (*altivec_vsel, *altivec_vsel_uns): Change type to vecmove. - * config/rs6000/dfp.md (*negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr, - negtd2, *abstd2_fpr, *nabstd2_fpr): Change type to fpsimple. - * config/rs6000/40x.md (ppc405-float): Add fpsimple. - * config/rs6000/440.md (ppc440-fp): Add fpsimple. - * config/rs6000/476.md (ppc476-fp): Add fpsimple. - * config/rs6000/601.md (ppc601-fp): Add fpsimple. - * config/rs6000/603.md (ppc603-fp): Add fpsimple. - * config/rs6000/6xx.md (ppc604-fp): Add fpsimple. - * config/rs6000/7xx.md (ppc750-fp): Add fpsimple. - (ppc7400-vecsimple): Add veclogical, vecmove, veccmpfx. - * config/rs6000/7450.md (ppc7450-fp): Add fpsimple. - (ppc7450-vecsimple): Add veclogical, vecmove. - (ppc7450-veccmp): Add veccmpfx. - * config/rs6000/8540.md (ppc8540_simple_vector): Add veclogical, - vecmove. - (ppc8540_vector_compare): Add veccmpfx. - * config/rs6000/a2.md (ppca2-fp): Add fpsimple. - * config/rs6000/cell.md (cell-fp): Add fpsimple. - (cell-vecsimple): Add veclogical, vecmove. - (cell-veccmp): Add veccmpfx. - * config/rs6000/e300c2c3.md (ppce300c3_fp): Add fpsimple. - * config/rs6000/e6500.md (e6500_vecsimple): Add veclogical, vecmove, - veccmpfx. - * config/rs6000/mpc.md (mpccore-fp): Add fpsimple. - * config/rs6000/power4.md (power4-fp): Add fpsimple. - (power4-vecsimple): Add veclogical, vecmove. - (power4-veccmp): Add veccmpfx. - * config/rs6000/power5.md (power5-fp): Add fpsimple. - * config/rs6000/power6.md (power6-fp): Add fpsimple. - (power6-vecsimple): Add veclogical, vecmove. - (power6-veccmp): Add veccmpfx. - * config/rs6000/power7.md (power7-fp): Add fpsimple. - (power7-vecsimple): Add veclogical, vecmove, veccmpfx. - * config/rs6000/power8.md (power8-fp): Add fpsimple. - (power8-vecsimple): Add veclogical, vecmove, veccmpfx. - * config/rs6000/rs64.md (rs64a-fp): Add fpsimple. - * config/rs6000/titan.md (titan_fp): Add fpsimple. - * config/rs6000/xfpu.md (fp-default, fp-addsub-s, fp-addsub-d): Add - fpsimple. - * config/rs6000/rs6000.c (rs6000_adjust_cost): Add TYPE_FPSIMPLE. - - 2016-06-27 Peter Bergner - - PR target/71656 - * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add - OPTION_MASK_P9_DFORM_VECTOR. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not - disable -mpower9-dform-vector when using reload. - (quad_address_p): Remove 'gpr_p' argument and all associated code. - New 'strict' argument. Update all callers. Add strict addressing - support. - (rs6000_legitimate_offset_address_p): Remove call to - virtual_stack_registers_memory_p. - (rs6000_legitimize_reload_address): Add quad address support. - (rs6000_legitimate_address_p): Move call to quad_address_p above - call to virtual_stack_registers_memory_p. Adjust quad_address_p args - to account for new strict usage. - (rs6000_output_move_128bit): Adjust quad_address_p args to account - for new strict usage. - * config/rs6000/predicates.md (quad_memory_operand): Likewise. - - 2016-06-26 Uros Bizjak - - PR target/70902 - PR target/71453 - PR target/71555 - PR target/71596 - PR target/71657 - * config/i386/i386.c (ix86_spill_class): Disable condition to - always return NO_REGS. - - 2016-06-26 Jan Hubicka - - * predict.c: Include gimple-pretty-print.h - (predicted_by_loop_heuristics_p): Check also - PRED_LOOP_EXIT_WITH_RECURSION - (predict_loops): Find self recursive calls and use special purpose - predictors for them; dump log about decisions. - (pass_profile::execute): Dump info about #of iterations. - * predict.def (PRED_LOOP_EXIT_WITH_RECURSION, - (PRED_LOOP_GUARD_WITH_RECURSION): New predictors. - - 2016-06-26 John David Anglin - - * config/pa/pa.c (pa_output_indirect_call): Rework to combine - output_asm_insn calls and shorten long lines. Output .CALL - argument descriptor using pa_output_arg_descriptor. Add various - inline $$dyncall and other optimizations. - (pa_attr_length_indirect_call): Adjust ordering and lengths. - - 2016-06-25 Jakub Jelinek - - PR tree-optimization/71643 - * tree-ssa-tail-merge.c (find_clusters_1): Ignore basic blocks with - EH preds. - - * tree-ssa-tail-merge.c (deps_ok_for_redirect_from_bb_to_bb): Don't - leak a bitmap if dep_bb is NULL. - - PR tree-optimization/71631 - * tree-ssa-reassoc.c (reassociate_bb): Pass true as last argument - to rewrite_expr_tree even if negate_result, move new_lhs var - declaration and initialization earlier, for powi_result set afterwards - new_lhs to lhs. For negate_result, use new_lhs instead of tmp - if new_lhs != lhs, and don't shadow gsi var. - - 2016-06-24 Jan Hubicka - - * predict.c (predict_paths_leading_to, predict_paths_leading_to_edge): - Add in_loop parameter. - (predict_loops): Add loop guard heuristics. - * predict.def (PRED_LOOP_GUARD): New heuristics. - - 2016-06-24 Jan Hubicka - - * predict.c: Include ipa-utils.h - (tree_bb_level_prediction): Predict recursive calls. - (tree_estimate_probability_bb): Skip inexpensive calls for call - predictor. - * predict.def (PRED_RECURSIVE_CALL): New. - - 2016-06-24 Bill Schmidt - - * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2): New #define. - (BU_FLOAT128_1): Likewise. - (FABSQ): Likewise. - (COPYSIGNQ): Likewise. - (RS6000_BUILTIN_NANQ): Likewise. - (RS6000_BUILTIN_NANSQ): Likewise. - (RS6000_BUILTIN_INFQ): Likewise. - (RS6000_BUILTIN_HUGE_VALQ): Likewise. - * config/rs6000/rs6000.c (rs6000_fold_builtin): New prototype. - (TARGET_FOLD_BUILTIN): New #define. - (rs6000_builtin_mask_calculate): Add TARGET_FLOAT128 entry. - (rs6000_invalid_builtin): Add handling for RS6000_BTM_FLOAT128. - (rs6000_fold_builtin): New target hook implementation, handling - folding of 128-bit NaNs and infinities. - (rs6000_init_builtins): Initialize const_str_type_node; ensure all - entries are filled in to avoid problems during bootstrap - self-test; define builtins for 128-bit NaNs and infinities. - (rs6000_opt_mask): Add entry for float128. - * config/rs6000/rs6000.h (RS6000_BTM_FLOAT128): New #define. - (RS6000_BTM_COMMON): Include RS6000_BTM_FLOAT128. - (rs6000_builtin_type_index): Add RS6000_BTI_const_str. - (const_str_type_node): New #define. - * config/rs6000/rs6000.md (copysign3 for IEEE128): Convert - to a define_expand that dispatches to either copysign3_soft - or copysign3_hard. - (copysign3_hard): Rename from copysign3. - (copysign3_soft): New define_insn. - * doc/extend.texi: Document new builtins. - - 2016-06-24 Jakub Jelinek - - * cfgloop.c (flow_loop_dump): Cast nit to uint64_t and print it using - PRIu64 instead of lu. - - 2016-06-24 Eric Botcazou - - PR debug/71642 - * tree-inline.c (remap_decl): When fixing up DECL_ORIGINAL_TYPE, just - copy the type name. - - 2016-06-24 Jakub Jelinek - - PR tree-optimization/71647 - * omp-low.c (lower_rec_input_clauses): Convert - omp_clause_aligned_alignment (c) to size_type_node for the - last argument of __builtin_assume_aligned. - - 2016-06-24 H.J. Lu - - * configure.ac (calling ___tls_get_addr via GOT): New - assembler/linker check. - (HAVE_AS_IX86_TLS_GET_ADDR_GOT): New. Defined to 1 if 32-bit - assembler and linker supports calling ___tls_get_addr via GOT. - Otherise, defined to 0. - * config.in: Regenerated. - * configure: Likewise. - * config/i386/constraints.md (Yb): New constraint. - * config/i386/i386.h (reg_class): Add TLS_GOTBASE_REGS. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - * config/i386/i386.md (*tls_global_dynamic_32_gnu): Replace - the b constraint with the Yb constraint. Call ___tls_get_addr - via GOT for GNU TLS with -fno-plt if HAVE_AS_IX86_TLS_GET_ADDR_GOT - is 1. - (*tls_local_dynamic_base_32_gnu): Likewise. - (*tls_global_dynamic_64_): Call _tls_get_addr via GOT for - GNU TLS with -fno-plt if HAVE_AS_IX86_TLS_GET_ADDR_GOT is 1. - (*tls_local_dynamic_base_64_): Likewise. - - 2016-06-24 Martin Liska - - * cfgloop.c (flow_loop_dump): Dump average number of loop iterations. - * cfgloop.h: Change 'struct loop' to 'const struct loop' for a - few functions. - * cfgloopanal.c (expected_loop_iterations_unbounded): Set a new - argument to true if the expected number of iterations is - loop-based. - - 2016-06-24 Uros Bizjak - - * configure.ac (HAVE_AS_GOTOF_IN_DATA): Use $as_ix86_gas_32_opt to - assemble for 32bit target. - (HAVE_AS_IX86_TLSGDPLT): Use $as_ix86_gas_32_opt to assemble - and $ld_ix86_gld_32_opt to link for 32bit target. - (HAVE_AS_IX86_TLSLDMPLT): Ditto. - * configure: Regenerate. - - 2016-06-24 Kyrylo Tkachov - - * config/arm/arm.c (int_log2): Delete definition and prototype. - (shift_op): Use exact_log2 instead of int_log2. - (vfp3_const_double_for_fract_bits): Likewise. - - 2016-06-24 Jakub Jelinek - - * internal-fn.c (expand_arith_set_overflow): New function. - (expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow): - Use it. - (expand_arith_overflow_result_store): Likewise. Handle precision - smaller than mode precision. - * tree-vrp.c (extract_range_basic): For imag part, handle - properly signed 1-bit precision result. - * doc/extend.texi (__builtin_add_overflow): Document that last - argument can't be pointer to enumerated or boolean type. - (__builtin_add_overflow_p): Document that last argument can't - have enumerated or boolean type. - - 2016-06-23 Michael Meissner - Bill Schmidt - - * config/rs6000/predicates.md (splat_input_operand): Rework. - Don't allow constants, since the insns that use this predicate - don't support constants. Constants are handled by other insns - that are created via combine. During and after register - allocation, only allow indexed or indirect addresses, and not - general addresses. Only allow modes supported by the hardware. - * config/rs6000/rs6000.c (xxsplitb_constant_p): Update usage - comment. Move check for using VSPLTIS to a common location, - instead of doing it in two different places. - - 2016-06-23 Jocelyn Mayer - - * config/i386/driver-i386.c (host_detect_local_cpu): Set - PROCESSOR_PENTIUMPRO for signature_CENTAUR_ebx family >= 9. - : Pass c7 or nehemiah for - signature_CENTAUR_ebx. - - 2016-06-23 H.J. Lu - - PR target/66232 - PR target/67400 - * configure.ac (as_ix86_tls_ldm_opt): Renamed to ... - (as_ix86_gas_32_opt): This. - (ld_ix86_tls_ldm_opt): Renamed to ... - (ld_ix86_gld_32_opt): This. - (R_386_TLS_LDM reloc): Updated. - (R_386_GOT32X reloc): New assembler/linker check. - (HAVE_AS_IX86_GOT32X): New. Defined to 1 if 32-bit assembler and - linker support "jmp *_start@GOT" and "cmpl $0, bar@GOT". Otherise, - defined to 0. - * config.in: Regenerated. - * configure: Likewise. - * config/i386/i386.c (ix86_force_load_from_GOT_p): Return - true if HAVE_AS_IX86_GOT32X is 1 in 32-bit mode. - (ix86_legitimate_address_p): Allow UNSPEC_GOT for -fno-plt - if ix86_force_load_from_GOT_p returns true. - (ix86_print_operand_address_as): Also support UNSPEC_GOT if - ix86_force_load_from_GOT_p returns true. - (ix86_expand_move): Generate UNSPEC_GOT in 32-bit mode to load - the external function address via the GOT slot. - (ix86_nopic_noplt_attribute_p): Check both TARGET_64BIT and - HAVE_AS_IX86_GOT32X before returning false. - (ix86_output_call_insn): Generate "%!jmp/call\t*%p0@GOT" in - 32-bit mode if ix86_nopic_noplt_attribute_p returns true. - - 2016-06-23 Eric Botcazou - - * tree-inline.c (remap_decl): Preserve DECL_ORIGINAL_TYPE invariant. - - 2016-06-23 Andi Kleen - - * Makefile.in: Regenerate. - * doc/install.texi: Document autoprofiledbootstrap. - - 2016-06-23 Andi Kleen - - * config/i386/gcc-auto-profile: New file. - - 2016-06-23 Martin Liska - - PR middle-end/71619 - * predict.c (predict_loops): Revert the hunk that was removed - in r237103. - - 2016-06-23 Jakub Sejdak - - * config.gcc: Add support for arm*-*-phoenix* targets. - * config/arm/t-phoenix: New. - * config/phoenix.h: New. - - 2016-06-23 Uros Bizjak - H.J. Lu - - PR target/67400 - * config/i386/i386-protos.h (ix86_force_load_from_GOT_p): New. - * config/i386/i386.c (ix86_force_load_from_GOT_p): New function. - (ix86_legitimate_constant_p): Do not allow UNSPEC_GOTPCREL if - ix86_force_load_from_GOT_p returns true. - (ix86_legitimate_address_p): Allow UNSPEC_GOTPCREL if - ix86_force_load_from_GOT_p returns true. - (ix86_print_operand_address_as): Support UNSPEC_GOTPCREL if - ix86_force_load_from_GOT_p returns true. - (ix86_expand_move): Load the external function address via the - GOT slot if ix86_force_load_from_GOT_p returns true. - * config/i386/predicates.md (x86_64_immediate_operand): Return - false for SYMBOL_REFs where ix86_force_load_from_GOT_p returns true. - (x86_64_zext_immediate_operand): Ditto. - - 2016-06-22 Uros Bizjak - - * config/i386/i386.c (ix86_expand_move): Simplify SYMBOL_REF handling. - - 2016-06-22 David Malcolm - - PR c/70339 - * diagnostic-core.h (pedwarn_at_rich_loc): New prototype. - * diagnostic.c (pedwarn_at_rich_loc): New function. - * spellcheck.h (best_match::best_match): Add a - "best_distance_so_far" optional parameter. - (best_match::set_best_so_far): New method. - (best_match::get_best_distance): New accessor. - (best_match::get_best_candidate_length): New accessor. - - 2016-06-22 Nick Clifton - - * dwarf2out.c (scompare_loc_descriptor): Use SCALAR_INT_MODE_P() in - place of GET_MODE_CLASS() == MODE_INT, so that partial integer - modes are accepted as well. - (ucompare_loc_descriptor): Likewise. - (minmax_loc_descriptor): Likewise. - (clz_loc_descriptor): Likewise. - (popcount_loc_descriptor): Likewise. - (bswap_loc_descriptor): Likewise. - (rotate_loc_descriptor): Likewise. - (mem_loc_descriptor): Likewise. - (loc_descriptor): Likewise. - - 2016-06-22 David Malcolm - - * common.opt (fdiagnostics-parseable-fixits): New option. - * diagnostic.c: Include "selftest.h". - (print_escaped_string): New function. - (print_parseable_fixits): New function. - (diagnostic_report_diagnostic): Call print_parseable_fixits. - (selftest::assert_print_escaped_string): New function. - (ASSERT_PRINT_ESCAPED_STRING_STREQ): New macro. - (selftest::test_print_escaped_string): New function. - (selftest::test_print_parseable_fixits_none): New function. - (selftest::test_print_parseable_fixits_insert): New function. - (selftest::test_print_parseable_fixits_remove): New function. - (selftest::test_print_parseable_fixits_replace): New function. - (selftest::diagnostic_c_tests): New function. - * diagnostic.h (struct diagnostic_context): Add field - "parseable_fixits_p". - * doc/invoke.texi (Diagnostic Message Formatting Options): Add - -fdiagnostics-parseable-fixits. - (-fdiagnostics-parseable-fixits): New option. - * opts.c (common_handle_option): Handle - -fdiagnostics-parseable-fixits. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::diagnostic_c_tests. - * selftest.h (selftest::diagnostic_c_tests): New prototype. - - 2016-06-22 Ilya Enkovich - - PR tree-optimization/71488 - * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Support - comparison of boolean vectors. - * tree-vect-stmts.c (vectorizable_comparison): Vectorize comparison - of boolean vectors using bitwise operations. - - 2016-06-22 Andreas Schwab - - * config/aarch64/aarch64-protos.h (aarch64_elf_asm_named_section): - Remove declaration. - - 2016-06-22 Eric Botcazou - - * function.c (assign_parm_setup_reg): Prevent sharing in another case. - - 2016-06-22 Bernd Edlinger - - * config/i386/i386.c (print_reg): Emit an error message on attempt to - print FLAGS_REG. - - 2016-06-22 Kyrylo Tkachov - - * config/arm/arm.c (arm_cortex_a73_tune): New struct. - * config/arm/arm-cores.def (cortex-a73): New entry. - (cortex-a73.cortex-a35): Likewise. - (cortex-a73.cortex-a53): Likewise. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Likewise. - * config/arm/bpabi.h (BE8_LINK_SPEC): Handle mcpu=cortex-a73, - mcpu=cortex-a73.cortex-a35 and mcpu=cortex-a73.cortex-a53. - * config/arm/t-aprofile: Handle mcpu=cortex-a73, - mcpu=cortex-a73.cortex-a35 and mcpu=cortex-a73.cortex-a53. - * doc/invoke.texi (ARM Options): Document cortex-a73, - cortex-a73.cortex-a35 and cortex-a73.cortex-a53. - - 2016-06-22 Kyrylo Tkachov - - * config/aarch64/aarch64.c (cortexa73_tunings): New struct. - * config/aarch64/aarch64-cores.def (cortex-a73): New entry. - (cortex-a73.cortex-a35): Likewise. - (cortex-a73.cortex-a53): Likewise. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi (AArch64 Options): Document cortex-a73, - cortex-a73.cortex-a35 and cortex-a73.cortex-a53 arguments to - -mcpu and -mtune. - - 2016-06-22 Rainer Orth - - * configure.ac (gcc_cv_as_compress_debug): Remove - --compress-debug-sections as extra as switch. - Handle gas --compress-debug-sections=type. - (gcc_cv_ld_compess_debug): Remove bogus ld_date check. - Handle gld --compress-debug-sections=type. - * configure: Regenerate. - - 2016-06-21 Andrew Burgess - - * bb-reorder.c (pass_partition_blocks::gate): Update comment. - - 2016-06-21 John David Anglin - - * gcov-tool.c (profile_rewrite): Use int64_t instead of long long. - (do_rewrite): likewise. - - 2016-06-21 Trevor Saunders - - * common/config/mep/mep-common.c: Remove. - * config.gcc: Remove mep-* support. - * config/mep/constraints.md: Remove. - * config/mep/default.h: Remove. - * config/mep/intrinsics.h: Remove. - * config/mep/intrinsics.md: Remove. - * config/mep/ivc2-template.h: Remove. - * config/mep/mep-c5.cpu: Remove. - * config/mep/mep-core.cpu: Remove. - * config/mep/mep-default.cpu: Remove. - * config/mep/mep-ext-cop.cpu: Remove. - * config/mep/mep-intrin.h: Remove. - * config/mep/mep-ivc2.cpu: Remove. - * config/mep/mep-pragma.c: Remove. - * config/mep/mep-protos.h: Remove. - * config/mep/mep.c: Remove. - * config/mep/mep.cpu: Remove. - * config/mep/mep.h: Remove. - * config/mep/mep.md: Remove. - * config/mep/mep.opt: Remove. - * config/mep/predicates.md: Remove. - * config/mep/t-mep: Remove. - * doc/install.texi: Remove mep-* documentation. - * doc/md.texi: Likewise. - - 2016-06-21 Trevor Saunders - - * config.gcc: Remove support for avr-rtems. - * config/avr/gen-avr-mmcu-specs.c: Likewise. - * config/avr/rtems.h: Remove. - * config/avr/t-rtems: Remove. - - 2016-06-21 Trevor Saunders - - * config.gcc: Remove m32r-rtems support. - * config/m32r/rtems.h: Remove. - - 2016-06-21 Trevor Saunders - - * config.gcc: Remove h8300-rtems support. - * config/h8300/rtems.h: Remove. - * config/h8300/t-rtems: Remove. - - 2016-06-21 Trevor Saunders - - * config.gcc: Remove support for knetbsd. - * configure.ac: Likewise. - * config/i386/knetbsd-gnu.h: Remove. * config/i386/knetbsd-gnu64.h: Remove. - * config/knetbsd-gnu.h: Remove. - * configure: Regenerate. - - 2016-06-21 Trevor Saunders - - * config.gcc: Remove support for openbsd 2 and 3. - * config/openbsd-oldgas.h: Remove. - - 2016-06-21 Trevor Saunders - - * config.gcc: Remove interix support. - * config/i386/i386-interix.h: Remove. - * config/i386/interix.opt: Remove. - * config/i386/t-interix: Remove. - * configure: Regenerate. - * configure.ac: Remove interix support. - * doc/install.texi: Remove interix documentation. - - 2016-06-21 Kelvin Nilsen - - * config/rs6000/rs6000.h: Add conditional preprocessing directives - to disable Power9-specific compiler features if HAVE_AS_POWER9 is - not defined. - - 2016-06-21 Eric Botcazou - - * tree.c (verify_type_variant): Skip TYPE_SIZE and TYPE_SIZE_UNIT if - they are both PLACEHOLDER_EXPRs. - - 2016-06-21 Michael Meissner - - * stor-layout.c (layout_type): Move setting complex MODE to - layout_type, instead of setting it ahead of time by the caller. - * tree.c (build_complex_type): Likewise. - - 2016-06-21 Martin Liska - - * predict.c (force_edge_cold): Replace imposisble with - impossible. - - 2016-06-21 Ilya Verbin - - * config/i386/i386.c (ix86_emit_swsqrtsf): Emit vrsqrt28ps. - * config/i386/sse.md (define_expand "rsqrtv16sf2"): New. - - 2016-06-21 Ilya Verbin - - * config/i386/i386.c (ix86_emit_swdivsf): Emit vrcp28ps. - - 2016-06-21 H.J. Lu - Ilya Enkovich - - PR target/71549 - * config/i386/i386.c (timode_scalar_chain::fix_debug_reg_uses): - New member function to convert V1TImode register to SUBREG - TImode in debug insn. - (timode_scalar_chain::convert_insn): Call fix_debug_reg_uses - after changing register mode to V1TImode. - - 2016-06-21 Virendra Pathak - - * config/aarch64/aarch64-cores.def (vulcan): New core. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi: Document vulcan as an available option. - - 2016-06-21 Eric Botcazou - - * cse.c (canon_asm_operands): New function extracted from... - (canonicalize_insn): ...here. Call it to canonicalize an ASM_OPERANDS - either standalone or member of a PARALLEL. - - 2016-06-21 Georg-Johann Lay - - PR target/30417 - * config/avr/gen-avr-mmcu-specs.c (print_mcu): - [*link_data_start]: Wrap -Tdata into %{!Tdata:...}. - [*link_text_start]: Wrap -Ttext into %{!Ttext:...}. - - 2016-06-21 Georg-Johann Lay - - PR target/71103 - * config/avr/avr.md (movqi): Only handle loading subreg:qi of - constant addresses if can_create_pseudo_p. - - 2016-06-21 Jakub Jelinek - - PR tree-optimization/71588 - * tree-ssa-strlen.c (valid_builtin_call): New function. - (adjust_last_stmt, handle_builtin_memset, strlen_optimize_stmt): Use - it. - - 2016-06-20 Jakub Jelinek - - PR middle-end/71581 - * tree-ssa-uninit.c (warn_uninit): If EXPR and VAR are NULL, - see if T isn't anonymous SSA_NAME with COMPLEX_EXPR created - for conversion of scalar user var to complex type and use the - underlying SSA_NAME_VAR in that case. If EXPR is still NULL, - punt. - - PR rtl-optimization/71591 - * toplev.c (toplev::run_self_tests): If no_backend, complain and - don't run any tests. - - 2016-06-20 Hans-Peter Nilsson - - PR target/71571 - * config/cris/cris.c (cris_asm_output_mi_thunk): Add missing "ba" - delay-slot "nop" for PIC with CRIS v32. Also add missing leading - space for PIC with non-v32 and the common non-PIC "jump". - - 2016-06-20 Jakub Jelinek - - PR target/71559 - * config/i386/i386.c (ix86_fp_cmp_code_to_pcmp_immediate): Fix up - returned values and add UN*/LTGT/*ORDERED cases with values matching - D operand modifier on vcmp for AVX. - - 2016-06-20 Wilco Dijkstra - - * config/aarch64/aarch64.opt - (mpc-relative-literal-loads): Rename internal option name. - * config/aarch64/aarch64.c - (aarch64_nopcrelative_literal_loads): Rename to - aarch64_pcrelative_literal_loads. - (aarch64_expand_mov_immediate): Likewise. - (aarch64_secondary_reload): Likewise. - (aarch64_can_use_per_function_literal_pools_p): Likewise. - (aarch64_override_options_after_change_1): Rename and simplify logic. - (aarch64_classify_symbol): Merge large model checks into switch, - remove pc-relative load check. - - 2016-06-20 James Greenhalgh - - * config/arm/aarch-cost-tables.h (cortexa53_extra_costs): Make FP - costs relative to the cost of a register move. - - 2016-06-20 James Greenhalgh - - * config/aarch64/arm_neon.h (vcvt_n_f64_s64): New. - (vcvt_n_f64_u64): Likewise. - (vcvt_n_s64_f64): Likewise. - (vcvt_n_u64_f64): Likewise. - (vcvt_f64_s64): Likewise. - (vrecpe_f64): Likewise. - (vcvt_f64_u64): Likewise. - (vrecps_f64): Likewise. - - 2016-06-20 James Greenhalgh - - * config/aarch64/aarch64.md - (3): Add attributes to - iterators. - (3): Likewise. Correct - attributes. - * config/aarch64/aarch64-builtins.c - (aarch64_types_binop_uss_qualifiers): Delete. - (TYPES_BINOP_USS): Likewise. - (aarch64_types_binop_sus_qualifiers): Likewise. - (TYPES_BINOP_SUS): Likewise. - (aarch64_types_fcvt_from_unsigned_qualifiers): New. - (TYPES_FCVTIMM_SUS): Likewise. - * config/aarch64/aarch64-simd-builtins.def (scvtf): Use SHIFTIMM - rather than BINOP. - (ucvtf): Use FCVTIMM_SUS rather than BINOP_SUS. - (fcvtzs): Use SHIFTIMM rather than BINOP. - (fcvtzu): Use SHIFTIMM_USS rather than BINOP_USS. - - 2016-06-20 James Greenhalgh - - * config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Make FP - costs relative to the cost of a register move. - - 2016-06-20 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_modes_tieable_p): - Allow scalar/single vector modes to be tieable. - - 2016-06-20 Wilco Dijkstra - - * config/arm/cortex-a57.md (cortex_a57_fp_cpys): Add fcsel. - - 2016-06-20 Kyrylo Tkachov - - * params.def (PARAM_ALIGN_LOOP_ITERATIONS): Use "alignment" instead of - "alignement". - * tree.h (TYPE_ALIGN): Likewise. - - 2016-06-20 Georg-Johann Lay - - PR target/71103 - * config/avr/avr.md (movqi): Handle loading subreg:qi (const). - - 2016-06-20 Georg-Johann Lay - - * config/avr/avr.c (avr_print_operand): Fix "format not a string - literal" build warnings. - (avr_print_operand_address): Dito. - - 2016-06-19 David Edelsohn - - PR target/71375 - * config/rs6000/aix51.h (TARGET_EXTRA_BUILTINS): Define as 0. - * config/rs6000/aix43.h (TARGET_EXTRA_BUILTINS): Same. - - 2016-06-18 John David Anglin - - * config/pa/pa.h (TARGET_LONG_PIC_PCREL_CALL): Remove. - - 2016-06-18 Eric Botcazou - - PR bootstrap/71435 - * reload1.c (reload): Pass 0 to finish_spills when called because - update_eliminables_and_spill returns true and remove did_spill. - (finish_spills): Adjust comment and document GLOBAL parameter. - - 2016-06-17 DJ Delorie - - PR target/71338 - * config/rl78/rl78-expand.c (umulqihi3): Enable for G10. - * config/rl78/rl78-virtual.c (umulhi3_shift_virt): Likewise. - (umulqihi3_virt): Likewise. - * config/rl78/rl78-real.c (umulhi3_shift_real): Likewise. - (umulqihi3_real): Likewise. - - 2016-06-17 Martin Liska - - * tree-ssa-reassoc.c (transform_add_to_multiply): Use auto_vec. - - 2016-06-17 Martin Liska - - * predict.def: PRED_LOOP_EXIT from 92 to 85. - - 2016-06-17 James Greenhalgh - - * config/arm/arm_neon.h (vadd_f32): replace __FAST_MATH with - __FAST_MATH__. - (vaddq_f32): Likewise. - (vmul_f32): Likewise. - (vmulq_f32): Likewise. - (vsub_f32): Likewise. - (vsubq_f32): Likewise. - - 2016-06-17 Bin Cheng - - PR tree-optimization/71347 - * tree-ssa-loop-ivopts.c (determine_group_iv_cost_address): Compute - cost for all uses in group. - - 2016-06-17 Bin Cheng - - * tree-vect-loop.c (vect_create_epilog_for_reduction): Only - insert gimple seq if it's not empty. - - 2016-06-17 Bin Cheng - - * tree-vectorizer.h (struct dr_with_seg_len): Remove class - member OFFSET. - * tree-vect-data-refs.c (operator ==): Handle DR_OFFSET directly, - rather than OFFSET. - (comp_dr_with_seg_len_pair): Ditto. - (vect_prune_runtime_alias_test_list): Ditto. Also Canonicalize - struct dr_with_seg_len_pair against DR_OFFSET. - * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): Handle - DR_OFFSET directly. - - 2016-06-17 Szabolcs Nagy - - * config/aarch64/geniterators.sh: Handle parenthesised conditions. - - 2016-06-16 John David Anglin - - * config/pa/pa.c (pa_output_pic_pcrel_sequence): New. - (pa_output_lbranch): Use pa_output_pic_pcrel_sequence. - (pa_output_millicode_call): Likewise. - (pa_output_call): Likewise. - (pa_output_indirect_call): Likewise. - (pa_asm_output_mi_thunk): Likewise. - - 2016-06-16 Bernhard Reutner-Fischer - - * doc/invoke.texi (x86 Options): Fix -mno-fp-ret-in-387 typo. - - 2016-06-16 Martin Liska - - * predict.c (combine_predictions_for_insn): When we find a first - match predictor, we should consider just predictors with - PRED_FLAG_FIRST_MATCH. Print either first match (if any) or - DS theory predictor. - (combine_predictions_for_bb): Likewise. - - 2016-06-16 Jakub Jelinek - - * gimplify.c (gimplify_scan_omp_clauses): Handle COMPONENT_REFs - with base of reference to struct. - - 2016-06-16 Uros Bizjak - - * doc/invoke.texi (x86 Options): Document -m80387 and -mhard-float. - - 2016-06-16 Senthil Kumar Selvaraj - - PR target/71151 - * config/avr/avr.c (avr_asm_init_sections): Remove setup of - progmem_swtable_section. - (progmem_swtable_section): Remove. - (avr_asm_function_rodata_section): Remove. - (TARGET_ASM_FUNCTION_RODATA_SECTION): Remove. - * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION: Define to 1. - - 2016-06-16 Jocelyn Mayer - - * config/i386/driver-i386.c (host_detect_local_cpu): Set - PROCESSOR_K8 for signature_CENTAUR_ebx with has_longmode. - : Pass nano-3000, nano, eden-x2 or k8 for - signature_CENTAUR_ebx. - * config/i386/i386.c (ix86_option_override_internal): Add - definitions for VIA c7, samuel-2, nehemiah, esther, eden-x2, eden-x4, - nano, nano-1000, nano-2000, nano-3000, nano-x2 and nano-x4. - * doc/invoke.texi (x86 Options): Document new VIA -march entries. - - 2016-06-16 Martin Liska - - * predict.def: Add fortran loop preheader predictor. - * gimple-fold.c (gimple_fold_stmt_to_constant_1): Properly - fold IFN_BUILTIN_EXPECT with a known constant argument. - - 2016-06-16 Martin Liska - - * predict.def: Add 'Fortran' to display text of all - PRED_FORTRAN_* predictors. - - 2016-06-16 Uros Bizjak - - PR target/71242 - * config/ia64/ia64.c (enum ia64_builtins) [IA64_BUILTIN_NANQ]: New. - [IA64_BUILTIN_NANSQ]: Ditto. - (ia64_fold_builtin): New function. - (TARGET_FOLD_BUILTIN): New define. - (ia64_init_builtins) Declare const_string_type node. - Add __builtin_nanq and __builtin_nansq builtin functions. - (ia64_expand_builtin): Handle IA64_BUILTIN_NANQ and IA64_BUILTIN_NANSQ. - - 2016-06-16 Nick Clifton - - * config/msp430/msp430-opts.h (msp430_hwmult_types): Add - MSP430_HWMULT_ prefix to enum values. - (msp430_regions): Add MSP430_REGION_ prefix to enum values. - * config/msp430/msp430.c: Update use of enum values. - * config/msp430/msp430.md: Likewise. - * config/msp430/msp430.opt: Likewise. - - 2016-06-16 Jan Hubicka - - * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix estimation - of comparsions in the last iteration. - - 2016-06-16 Claudiu Zissulescu - Joern Rennecke - - * config/arc/arc.c (arc_print_operand_address): Handle pc-relative - addresses. - (arc_needs_pcl_p): Add GOTOFFPC. - (arc_legitimate_pic_addr_p): Likewise. - (arc_output_pic_addr_const): Likewise. - (arc_legitimize_pic_address): Generate a pc-relative address using - GOTOFFPC. - (arc_output_libcall): Use @pcl syntax. - (arc_delegitimize_address_0): Delegitimize ARC_UNSPEC_GOTOFFPC. - * config/arc/arc.md ("unspec"): Add ARC_UNSPEC_GOTOFFPC. - (*movsi_insn): Use @pcl syntax. - (doloop_begin_i): Likewise. - - 2016-06-16 Martin Liska - - * predict.def: Define a new predictor. - - 2016-06-16 Claudiu Zissulescu - - * config/arc/arc.opt (mtp-regno): Update text. - - 2016-06-16 Renlin Li - - * config/aarch64/aarch64.c (aarch64_legitimize_address): Fix a typo. - - 2016-06-16 Jakub Jelinek - - PR target/71554 - * config/i386/i386.md (setcc + movzbl peephole2): Use reg_set_p. - (setcc + and peephole2): Likewise. - - PR rtl-optimization/71532 - * cse.c (cse_insn): For const/pure calls, invalidate argument passing - memory slots. - - 2016-06-15 Michael Meissner - - * config/rs6000/vsx.md (VSINT_84): Add DImode to enable loading - DImode constants with XXSPLTIB in vector registers. - (vsx_extract_, V2DImode/V2DFmode): Combine both - vsx_extract__internal{1,2} into a single insn that handles - direct move (both ISA 2.07 and ISA 3.0 versions), and optimizes - extraction of the element at the top of the register as a scalar - value. - (vsx_extract__internal1): Likewise. - (vsx_extract__internal2): Likewise. - * config/rs6000/constraints.md (wi constraint): Remove a comment - about DImode not being allowed in Altivec registers. - (wB constraint): New constraint for constants that can be - generated in Altivec registers with VSPLTISW/VUPKHSW. - * config/rs6000/predicates.md (xxspltib_constant_split): Update - comments. - (xxspltib_constant_nosplit): Likewise. - * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Add - support for -mupper-regs-di to enable DImode to go into Altivec - registers. - (POWERPC_MASKS): Likewise. - (power7 cpu): Likewise. - * config/rs6000/rs6000.opt (-mupper-regs-di): Likewise. - * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Add support - for DImode being allowed in Altivec registers. Update wi/wj - constraints. Set scalar_in_vmx_p flag. - (rs6000_option_override_internal): Add checks for -mupper-regs-di. - (xxspltib_constant_p): Allow CONST_INT's with VOIDmode. Don't - return true if we could use VSPLTISW/VUPKHSW instead of XXSPLTIB. - (rs6000_opt_masks): Add -mupper-regs-di. - * config/rs6000/rs6000.md (lfiwax): Update clobbers that don't use - direct move to use wi and not wj. - (lfiwzx): Likewise. - (floatsi2_lfiwax_mem): Combine alternatives into a single - alternative. - (floatunssi2_lfiwzx_mem): Likewise. - (fix_truncdi2_fctidz): Change second alternative to allow - any VSX register, instead of just Altivec registers, to allow - either operand to be an Altivec register or both. - (fixuns_truncdi2_fctiduz): Likewise. - (movdi_internal32): Add support for -mupper-regs-di. Add support - to load constants via XXSPLTIB or VSPLTISW. Add spacing to allow - the alternatives and attributes to be lined up to be easier to - read. - (movdi_internal64): Likewise. - (64-bit DImode splitters): Change predicates to only split loading - up GPR registers. Add splits for using XXSPLTIB or VSPLTISW to - load constants in ISA 3.0 or ISA 2.07 respectively. - * doc/invoke.texi (RS/6000 and PowerPC Options): Document - -mupper-regs-di. Update -mupper-regs-df and -mupper-regs-sf to - mention -mcpu=power9 sets these options. - * doc/md.texi (PowerPC and IBM RS6000 constraints): Document the - wB constraint. - - 2016-06-15 Pitchumani Sivanupandi - - PR target/67353 - * config/avr/avr.c (avr_set_current_function): Warn misspelled - interrupt/ signal handler if -Wmisspelled-isr flag is enabled. - * config/avr/avr.opt (Wmisspelled-isr): New warning flag. Enabled - by default to warn misspelled interrupt/ signal handler. - * doc/invoke.texi (AVR Options): Document it. Update description - for -nodevicelib option. - - 2016-06-15 Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md (aarch64_shll_n): Clean - up parentheses. Use GET_MODE_UNIT_BITSIZE. - (aarch64_shll2_n): Likewise. - - 2016-06-15 Ilya Enkovich - - PR middle-end/71529 - * ipa-chkp.c (chkp_build_instrumented_fndecl): Fix - DECL_CONTEXT for copied arguments. - - 2016-06-15 Alan Hayward - - PR tree-optimization/71483 - * tree-vect-loop.c (vectorizable_live_operation): Pick correct index - for slp - - 2016-06-15 Martin Liska - - * predict.c (tree_predict_by_opcode): Call predict_edge_def - instead of predict_edge w/o a probability. - - 2016-06-15 Alan Hayward - - PR tree-optimization/71439 - * tree-vect-loop.c (vect_analyze_loop_operations): Additional check for - live PHIs. - - 2016-06-15 Kyrylo Tkachov - - * ifcvt.c (bb_ok_for_noce_multiple_sets): Allow simple lowpart - register subregs in SET_SRC. - - 2016-06-15 Richard Biener - - * tree-vect-stmts.c (vectorizable_store): Remove strided grouped - store restrictions. - - 2016-06-15 Richard Biener - - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Do - not consider dependences between accesses that belong to the - same group. - (vect_analyze_data_ref_dependences): Do not analyze read-read - or self-dependences. - - 2016-06-14 David Malcolm - - * spellcheck-tree.c: Include spellcheck-tree.h rather than - spellcheck.h. - (find_closest_identifier): Reimplement in terms of - best_match. - * spellcheck-tree.h: New file. - * spellcheck.c (struct edit_distance_traits): New - struct. - (find_closest_string): Reimplement in terms of - best_match. - * spellcheck.h (levenshtein_distance): Move prototype of tree-based - overload to spellcheck-tree.h. - (find_closest_identifier): Likewise. - (struct edit_distance_traits): New template. - (class best_match): New class. - - 2016-06-14 David Malcolm - - * selftest-run-tests.c (selftest::run_tests): Call - selftest::spellcheck_tree_c_tests. - * selftest.h (selftest::spellcheck_tree_c_tests): New decl. - * spellcheck-tree.c: Include selftest.h and stringpool.h. - (selftest::test_find_closest_identifier): New function. - (selftest::spellcheck_tree_c_tests): New function. - * spellcheck.c (selftest::test_find_closest_string): Verify that - the order of the vec does not affect the results for this case. - (selftest::test_data): New array. - (selftest::test_metric_conditions): New function. - (selftest::spellcheck_c_tests): Add a test of case-comparison. - Call selftest::test_metric_conditions. - - 2016-06-14 Bill Schmidt - - * config/rs6000/rs6000-builtin.def (commentary): Typo. - (BU_P9_MISC_1): Likewise. - (BU_P9_64BIT_MISC_0): Likewise. - (BU_P9_MISC_0): Likewise. - - 2016-06-14 David Malcolm - - * gcc-rich-location.c - (gcc_rich_location::add_fixit_misspelled_id): New method. - * gcc-rich-location.h - (gcc_rich_location::add_fixit_misspelled_id): Add decl. - - 2016-06-14 Andreas Tobler - - * config/arm/freebsd.h: Only enable unaligned access for armv6 on - FreeBSD 11 and above. - - 2016-06-14 Uros Bizjak - - * config/i386/i386.md (signbittf2): Emit sse_movmskps for TARGET_SSE. - - 2016-06-14 Kyrylo Tkachov - - * expmed.h: Close parenthesis in "at your option" in copyright - boilerplate. - * lower-subreg.h: Likewise. - - 2016-06-14 Richard Biener - - PR middle-end/71526 - * genmatch.c (expr::gen_transform): Use in_type for comparisons - if available. - - 2015-06-14 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p): - New function. - (aarch64_rtx_costs): Use it. Rewrite CONST_INT_P (op1) case to handle - mask+shift version. - * config/aarch64/aarch64-protos.h (aarch64_mask_and_shift_for_ubfiz_p): - New prototype. - * config/aarch64/aarch64.md (*andim_ashift_bfiz): Replace - matching condition with aarch64_mask_and_shift_for_ubfiz_p. - - 2016-06-14 Richard Biener - - PR tree-optimization/71522 - * tree-ssa.c (non_rewritable_lvalue_p): Do not rewrite non-float - copying into float copying. - - 2016-06-14 Jakub Jelinek - - PR tree-optimization/71520 - * tree-ssa-tail-merge.c (find_duplicate): Handle labels. - (replace_block_by): Move user labels from bb1 to bb2. - - 2016-06-14 Richard Biener - - PR middle-end/71310 - PR bootstrap/71510 - * expr.h (get_bit_range): Declare. - * expr.c (get_bit_range): Export. - * fold-const.c (optimize_bit_field_compare): Use get_bit_range and - word_mode again to constrain the bitfield access. - - 2016-06-14 Richard Biener - - PR tree-optimization/71521 - * tree-vrp.c (extract_range_from_binary_expr_1): Guard - division int_const_binop against zero divisor. - - 2016-06-13 Uros Bizjak - - * config/i386/i386.md (signbittf2): New expander. - * config/i386/sse.md (ptesttf2): New insn pattern. - - 2016-06-13 David Malcolm - - PR bootstrap/71481 - * input.c (selftest::test_reading_source_line): Avoid reading from - __FILE__ by creating a tempfile with known content and reading - from that instead. - - 2016-06-13 David Malcolm - - * pretty-print.c (assert_pp_format_colored): Skip the test if - GCC_COLORS is set. - (test_pp_format): Remove comment about GCC_COLORS. - - 2016-06-13 David Malcolm - - * input.c (test_reading_source_line): Use SELFTEST_LOCATION. - * pretty-print.c (assert_pp_format_va): Add location param and use - it with ASSERT_STREQ_AT. - (assert_pp_format): Add location param and pass it to - assert_pp_format_va. - (assert_pp_format_colored): Likewise. - (ASSERT_PP_FORMAT_1): New. - (ASSERT_PP_FORMAT_2): New. - (ASSERT_PP_FORMAT_3): New. - (test_pp_format): Provide SELFTEST_LOCATION throughout, either - explicitly, or implicitly via the above macros. - * selftest.c (selftest::pass): Use a selftest::location rather - than file and line. - (selftest::fail): Likewise. Print the function name. - (selftest::fail_formatted): Likewise. - (selftest::assert_streq): Use a selftest::location rather than - file and line. - * selftest.h (selftest::location): New struct. - (SELFTEST_LOCATION): New macro. - (selftest::pass): Accept a const location & rather than file - and line. - (selftest::fail): Likewise. - (selftest::fail_formatted): Likewise. - (selftest::assert_streq): Likewise. - (ASSERT_TRUE): Update for above changes, using SELFTEST_LOCATION. - (ASSERT_FALSE): Likewise. - (ASSERT_EQ): Likewise. - (ASSERT_NE): Likewise. - (ASSERT_STREQ): Likewise. - (ASSERT_PRED1): Likewise. - (ASSERT_STREQ_AT): New macro. - - 2016-06-13 David Malcolm - - * selftest.c (selftest::fail_formatted): New function. - (selftest::assert_streq): New function. - * selftest.h (selftests::fail_formatted): New decl. - (selftest::assert_streq): New decl. - (ASSERT_STREQ): Reimplement in terms of selftest::assert_streq. - - 2016-06-13 Jeff Law - - PR tree-optimization/71403 - * tree-ssa-threadbackward.c - (convert_and_register_jump_thread_path): No longer accept reference - to path. Do not pop items off the path anymore. - (fsm_find_control_statement_thread_paths): Do not allow threading - to a deeper loop nest. Pop the last item off the path here rather - than in convert_and_register_jump_thread_path. - - 2016-06-13 Evandro Menezes - Wilco Dijkstra - - [AArch64] Emit division using the Newton series - - * config/aarch64/aarch64-protos.h - (cpu_approx_modes): Add new member "division". - (aarch64_emit_approx_div): Declare new function. - * config/aarch64/aarch64.c - (generic_approx_modes): New member "division". - (exynosm1_approx_modes): Likewise. - (xgene1_approx_modes): Likewise. - (aarch64_emit_approx_div): Define new function. - * config/aarch64/aarch64.md ("div3"): New expansion. - * config/aarch64/aarch64-simd.md ("div3"): Likewise. - * config/aarch64/aarch64.opt (-mlow-precision-div): Add new option. - * doc/invoke.texi (-mlow-precision-div): Describe new option. - - 2016-06-13 Evandro Menezes - Wilco Dijkstra - - [AArch64] Emit square root using the Newton series - - * config/aarch64/aarch64-protos.h - (aarch64_emit_approx_rsqrt): Replace with new function - "aarch64_emit_approx_sqrt". - (cpu_approx_modes): New member "sqrt". - * config/aarch64/aarch64.c - (generic_approx_modes): New member "sqrt". - (exynosm1_approx_modes): Likewise. - (xgene1_approx_modes): Likewise. - (aarch64_emit_approx_rsqrt): Replace with new function - "aarch64_emit_approx_sqrt". - (aarch64_override_options_after_change_1): Handle new option. - * config/aarch64/aarch64-simd.md - (rsqrt2): Use new function instead. - (sqrt2): New expansion and insn definitions. - * config/aarch64/aarch64.md: Likewise. - * config/aarch64/aarch64.opt - (mlow-precision-sqrt): Add new option description. - * doc/invoke.texi (mlow-precision-sqrt): Likewise. - - 2016-06-13 Evandro Menezes - - [AArch64] Add more choices for the reciprocal square root approximation - - Allow a target to prefer such operation depending on the operation mode. - - * config/aarch64/aarch64-protos.h - (AARCH64_APPROX_MODE): New macro. - (AARCH64_APPROX_{NONE,ALL}): Likewise. - (cpu_approx_modes): New structure. - (tune_params): New member "approx_modes". - * config/aarch64/aarch64-tuning-flags.def - (AARCH64_EXTRA_TUNE_APPROX_RSQRT): Remove macro. - * config/aarch64/aarch64.c - (generic_approx_modes): New core "cpu_approx_modes" structure. - (exynosm1_approx_modes): Likewise. - (xgene1_approx_modes): Likewise. - (generic_tunings): New member "approx_modes". - (cortexa35_tunings): Likewise. - (cortexa53_tunings): Likewise. - (cortexa57_tunings): Likewise. - (cortexa72_tunings): Likewise. - (exynosm1_tunings): Likewise. - (thunderx_tunings): Likewise. - (xgene1_tunings): Likewise. - (use_rsqrt_p): New argument for the mode and use new member from - "tune_params". - (aarch64_builtin_reciprocal): Devise mode from builtin. - (aarch64_optab_supported_p): New argument for the mode. - * doc/invoke.texi (-mlow-precision-recip-sqrt): Reword description. - - 2016-06-13 Kelvin Nilsen - - * config/rs6000/rs6000.h (RS6000_BTM_COMMON): Add the - RS6000_BTM_MODULO flag into the set of flags that are considered - to be part of the common configuration. - - 2016-06-13 Kelvin Nilsen - - * config/rs6000/altivec.h (vec_absd): New macro for vector absolute - difference unsigned. - (vec_absdb): New macro for vector absolute difference unsigned - byte. - (vec_absdh): New macro for vector absolute difference unsigned - half-word. - (vec_absdw): New macro for vector absolute difference unsigned word. - * config/rs6000/altivec.md (UNSPEC_VADU): New value. - (vadu3): New insn. - (*p9_vadu3): New insn. - * config/rs6000/rs6000-builtin.def (vadub): New built-in - definition. - (vaduh): New built-in definition. - (vaduw): New built-in definition. - (vadu): New overloaded built-in definition. - (vadub): New overloaded built-in definition. - (vaduh): New overloaded built-in definition. - (vaduw): New overloaded built-in definition. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - overloaded vector absolute difference unsigned functions. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document - the ISA 3.0 vector absolute difference unsigned built-in functions. - - 2016-06-13 Eric Botcazou - - * tree-ssa-sccvn.c (vn_reference_lookup_3): Use a uniform test and - update shared_lookup_references only once after changing operands. - - 2016-06-13 Thomas Schwinge - - PR middle-end/71373 - * tree-nested.c (convert_nonlocal_omp_clauses) - (convert_local_omp_clauses): Document missing OMP_CLAUSE_*. - - * tree-cfg.c (edge_to_cases_cleanup): Fix CASE_CHAIN typo. - * tree.def (CASE_LABEL_EXPR): Likewise. - - 2016-06-13 Bernd Edlinger - - PR bootstrap/71481 - * input.c (test_builtins): Fix an assertion. - - 2016-06-13 Uros Bizjak - - * config/i386/i386.md (paritydi2): Use ix86_expand_setcc. - (paritysi2): Ditto. - (isinfxf2): Ditto. - (isinf2): Ditto. - - 2016-06-13 Uros Bizjak - - * ggc-tests.c (test_finalization): Only test need_finalization_p - for GCC_VERSION >= 4003. - - 2016-06-13 Andreas Krebbel - - * config/s390/vecintrin.h: Fix file description in comment. - - 2016-06-13 Andreas Krebbel - - * config/s390/s390-builtin-types.def: Change builtin type naming - scheme to match builtin-types.def. - - 2016-06-13 Marc Glisse - - * fold-const.c (optimize_minmax_comparison): Remove. - (fold_comparison): Remove call to the above. - * match.pd (MIN (X, Y) == X, MIN (X, 5) == 0, MIN (X, C1) < C2): - New transformations. - - 2016-06-13 Alan Hayward - - PR tree-optimization/71416 - * tree-vect-loop.c (vectorizable_live_operation): Let worklist have - multiple entries - - 2016-06-13 Martin Liska - - * predict.c (enum predictor_reason): Prefix enum with REASON_. - (combine_predictions_for_insn): Likewise. - (prune_predictions_for_bb): Likewise. - (combine_predictions_for_bb): Likewise. - - 2016-06-13 Richard Biener - - PR tree-optimization/71505 - * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Make - assert match comment. - - 2016-06-13 Marek Polacek - - PR middle-end/71476 - * gimplify.c (maybe_warn_switch_unreachable): Factored out of - gimplify_switch_expr. - (warn_switch_unreachable_r): New function. - - 2016-06-13 Andreas Krebbel - - PR target/71379 - * config/s390/s390.c (s390_expand_builtin): Increase MAX_ARGS by - one. - - 2016-06-13 Richard Biener - - PR middle-end/64516 - * fold-const.c (fold_unary_loc): Preserve alignment when - folding a VIEW_CONVERT_EXPR into a MEM_REF. - - 2016-06-13 Martin Liska - - PR sanitizer/71458 - * toplev.c (process_options): Do not enable -fcheck-pointer-bounds - w/ -fsanitize=bounds. - - 2016-06-12 Uros Bizjak - - * config/i386/i386.c (ix86_init_builtins): Calculate - FLOAT128_FTYPE_CONST_STRING function type only once. - * doc/extend.texi (x86 Built-in Functions): Update text, __float128 - built-in functions are available for x86-32 and x86-64 targets. - - 2016-06-12 Uros Bizjak - - PR target/71241 - * config/i386/i386.i386-builtin-types.def (CONST_STRING): - New primitive type. - (FLOAT128_FTYPE_CONST_STRING): New function type. - * config/i386/i386.c (enum ix86_builtins) [IX86_BUILTIN_NANQ]: New. - [IX86_BUILTIN_NANSQ]: Ditto. - (ix86_fold_builtin): Handle IX86_BUILTIN_NANQ and IX86_BUILTIN_NANSQ. - (ix86_init_builtin_types): Declare const_string_type_node. - (ix86_init_builtins): Add __builtin_nanq and __builtin_nansq - builtin functions. - (ix86_expand_builtin): Handle IX86_BUILTIN_NANQ and IX86_BUILTIN_NANSQ. - * doc/extend.texi (x86 Built-in Functions): Document - __builtin_nanq and __builtin_nansq. - - 2016-06-11 Jiong Wang - - PR target/71061 - * config/arm/arm-protos.h (arm_attr_length_pop_multi): New declaration. - * config/arm/arm.c (arm_attr_length_pop_multi): New function to return - length for pop patterns. - (arm_attr_length_push_multi): Update comments. - * config/arm/arm.md (*load_multiple_with_writeback): Set "length" - attribute. - (*pop_multiple_with_writeback_and_return): Likewise. - (*pop_multiple_with_return): Likewise. - - 2016-06-11 Segher Boessenkool - - PR middle-end/71310 - * fold-const.c (optimize_bit_field_compare): Don't try to use - word_mode unconditionally for reading the bit field, look at - DECL_BIT_FIELD_REPRESENTATIVE instead. - - 2016-06-11 Kugan Vivekanandarajah - - PR middle-end/71478 - * tree-ssa-reassoc.c (reassociate_bb): Remove (-1) from ops list for - vector integer type. - - 2016-06-10 Jakub Jelinek - - PR middle-end/71494 - * tree-nested.c (convert_nonlocal_reference_stmt): For GIMPLE_GOTO - without LABEL_DECL, set *handled_ops_p to false instead of true. - - 2016-06-10 Martin Sebor - - PR c/71392 - * builtin-attrs.def (ATTR_NOTHROW_NONNULL_LEAF_LIST): New macro. - (ATTR_NOTHROW_NONNULL_TYPEGENERIC_LEAF): Same. - * builtins.def (BUILT_IN_SADD_OVERFLOW, BUILT_IN_SADDL_OVERFLOW): Use - them. - (BUILT_IN_SADDLL_OVERFLOW, BUILT_IN_SSUB_OVERFLOW): Same. - (BUILT_IN_SSUBL_OVERFLOW, BUILT_IN_SSUBLL_OVERFLOW): Same. - (BUILT_IN_SMUL_OVERFLOW, BUILT_IN_SMULL_OVERFLOW): Same. - (BUILT_IN_SMULLL_OVERFLOW, BUILT_IN_UADD_OVERFLOW): Same. - (BUILT_IN_UADDL_OVERFLOW, BUILT_IN_UADDLL_OVERFLOW): Same. - (BUILT_IN_USUB_OVERFLOW, BUILT_IN_USUBL_OVERFLOW): Same. - (BUILT_IN_USUBLL_OVERFLOW, BUILT_IN_UMUL_OVERFLOW): Same. - (BUILT_IN_UMULL_OVERFLOW, BUILT_IN_UMULLL_OVERFLOW): Same. - - 2016-06-10 Bernd Edlinger - - * config/arm/arm.h (pool_vector_label, - return_used_this_function): Remove. - - 2016-06-10 Jeff Law - - PR tree-optimization/71335 - * tree-ssa-threadbackward.c (profitable_jump_thread_path): Filter out - zero length paths here. - (convert_and_register_jump_thread_path): Remove hacks related to - duplicated blocks in the jump thread path. - (fsm_find_control_statement_thread_paths): Avoid putting the same - block on the thread path twice, but ensure the thread path is - unchanged from the caller's point of view. - - 2016-06-10 Jan Hubicka - - * predict.c (predict_loops): Remove PRED_LOOP_BRANCH. - * predict.def (PRED_LOOP_BRANCH): Remove. - - 2016-06-10 David Malcolm - - * Makefile.in (OBJS): Add ggc-tests.o. - (GTFILES): Add ggc-tests.c. - * ggc-tests.c: New file. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::ggc_tests_c_tests. - * selftest.h (selftest::ggc_tests_c_tests): New prototype. - - 2016-06-10 Alexander Monakov - - * match.pd (-1 / B < A): Use :c to avoid pattern duplication. - - 2016-06-10 Maxim Ostapenko - - PR sanitizer/71480 - * varasm.c (place_block_symbol): Adjust alignment for asan protected - STRING_CSTs even if TREE_CONSTANT_POOL_ADDRESS_P. - - 2016-06-10 Jan Hubicka - - * profile.c: Include cfgloop.h. - (branch_prob): Compute estimated number of iterations. - * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Do not - recompute estimate number of iterations from profile. - - 2016-06-10 Bernd Edlinger - - PR inline-asm/68843 - * reg-stack.c (check_asm_stack_operands): Explicit input arguments - must be grouped on top of stack. Don't force early clobber - on ordinary reg outputs. - - 2016-06-10 Richard Biener - - * targhooks.c (default_builtin_vectorization_cost): Adjust - vec_construct cost. - - 2016-06-10 Richard Biener - - * gimple-fold.c (gimple_fold_builtin_memory_op): Make sure - to fold the RHS to a constant if possible. - - 2016-06-10 Thomas Schwinge - - PR middle-end/71373 - * tree-nested.c (convert_nonlocal_omp_clauses) - (convert_local_omp_clauses): Handle OMP_CLAUSE_ASYNC, - OMP_CLAUSE_WAIT, OMP_CLAUSE_INDEPENDENT, OMP_CLAUSE_AUTO, - OMP_CLAUSE__CACHE_, OMP_CLAUSE_TILE. - - * gimplify.c (gimplify_adjust_omp_clauses): Discard - OMP_CLAUSE_TILE. - * omp-low.c (scan_sharing_clauses): Don't expect OMP_CLAUSE_TILE. - - * omp-low.c (scan_sharing_clauses): Don't expect - OMP_CLAUSE__CACHE_. - - 2016-06-10 Alan Hayward - - PR tree-optimization/71407 - PR tree-optimization/71416 - * tree-vect-loop.c (vectorizable_live_operation): Use vectype for - BIT_FIELD_REF type. - - 2016-06-10 Richard Biener - - PR middle-end/71477 - * cfgloop.c (alloc_loop): Initialize nb_iterations_likely_upper_bound. - - 2016-06-09 Eric Botcazou - - * df-problems.c (df_note_bb_compute): Guard use of DF_INSN_INFO_GET. - - 2016-06-09 Vladimir Makarov - Jiong Wang - - PR rtl-optimization/70751 - * lra-constraints.c (process_alt_operands): Recognize Non-pseudo - spilled into memory. - - 2016-06-09 Jonathan Yong <10walls@gmail.com> - - Revert: - 2015-09-21 Jonathan Yong <10walls@gmail.com> - - * config/i386/cygwin.h (STARTFILE_SPEC): Explicitly search - sysroot/usr/lib/32api for additional win32 libraries, - fixes failing Cygwin bootstrapping. - - 2016-06-09 Marcin Baczyński - - * diagnostic.h (diagnostic_line_cutoff, diagnostic_flush_buffer): - Delete. - - 2016-06-09 David Malcolm - - PR bootstrap/71471 - * pretty-print.c (pp_indent): Specify that %p is printed in a - host-dependent manner. - (test_pp_format): Remove the test for %p. - - 2016-06-09 Maciej W. Rozycki - - * config/mips/mips.c (mips_output_jump): Fix formatting. - - 2016-06-09 Richard Biener - - PR tree-optimization/71462 - * tree-ssa-loop-manip.c (find_uses_to_rename): Guard against - removed blocks. - - 2016-06-09 Martin Liska - - * predict.c (dump_prediction): Add new argument. - (enum predictor_reason): New enum. - (struct predictor_hash): New struct. - (predictor_hash::hash): New function. - (predictor_hash::equal): Likewise. - (not_removed_prediction_p): New function. - (prune_predictions_for_bb): Likewise. - (combine_predictions_for_bb): Prune predictions. - - 2016-06-09 Martin Liska - - * predict.c (filter_predictions): New function. - (remove_predictions_associated_with_edge): Use the filter - function. - (equal_edge_p): New function. - - 2016-06-09 Stefan Bruens - - * doc/invoke.texi (ARM Options): Use lexicographical ordering. - Correct usage of @samp vs @option, add @samp where appropriate. - Add -march={armv6k,armv6z,arm6zk}, remove -march=ep9312. - Add armv6s-m and document it, as it is no official ARM name. - - 2016-06-09 Kyrylo Tkachov - - * ifcvt.c (struct noce_if_info): Add transform_name field. - (noce_try_move): Set if_info->transform_name to the function name. - (noce_try_ifelse_collapse): Likewise. - (noce_try_store_flag): Likewise. - (noce_try_inverse_constants): Likewise. - (noce_try_store_flag_constants): Likewise. - (noce_try_addcc): Likewise. - (noce_try_store_flag_mask): Likewise. - (noce_try_cmove): Likewise. - (noce_try_cmove_arith): Likewise. - (noce_try_minmax): Likewise. - (noce_try_abs): Likewise. - (noce_try_sign_mask): Likewise. - (noce_try_bitop): Likewise. - (noce_convert_multiple_sets): Likewise. - (noce_process_if_block): Print if_info->transform_name to - dump_file if transformation succeeded. - - 2016-06-09 Kyrylo Tkachov - - * config/arm/cortex-a57.md (cortex_a57_alu): - Handle csel type. - - 2016-06-08 Martin Sebor - Jakub Jelinek - - PR c++/70507 - PR c/68120 - * builtins.def (BUILT_IN_ADD_OVERFLOW_P, BUILT_IN_SUB_OVERFLOW_P, - BUILT_IN_MUL_OVERFLOW_P): New builtins. - * builtins.c: Include gimple-fold.h. - (fold_builtin_arith_overflow): Handle - BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P. - (fold_builtin_3): Likewise. - * doc/extend.texi (Integer Overflow Builtins): Document - __builtin_{add,sub,mul}_overflow_p. - - 2016-06-08 Jose E. Marchesi - - * config/sparc/driver-sparc.c (cpu_names): Fix the entry for the - SPARC-M7 and add an entry for SPARC-S7 cpus (Sonoma). - - 2016-06-08 Alan Lawrence - - * config/aarch64/aarch64.c (aarch64_function_arg_alignment): - Rewrite, looking one level down for records and arrays. - - 2016-06-08 David Malcolm - - * pretty-print.c: Include "selftest.h". - (pp_format): Fix comment. - (identifier_to_locale): Likewise. - (selftest::test_basic_printing): New function. - (selftest::assert_pp_format): New function. - (selftest::test_pp_format): New function. - (selftest::pretty_print_c_tests): New function. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::pretty_print_c_tests. - * selftest.h (pretty_print_c_tests): New declaration. - - 2016-06-07 Jan Hubicka - - * invoke.texi (max-loop-headers-insns): Document. - * params.def (PARAM_MAX_LOOP_HEADER_INSNS): New. - * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Update comment. - (ch_base::copy_headers): Use PARAM_MAX_LOOP_HEADER_INSNS. - - 2016-06-08 Richard Biener - - * tree-vect-stmts.c (vectorizable_load): Remove restrictions - on strided SLP loads and fall back to scalar loads in case - we can't chunk them. - - 2016-06-08 Richard Biener - - PR tree-optimization/71452 - * tree-ssa.c (non_rewritable_lvalue_p): Make sure that the - type used for the SSA rewrite has enough precision to cover - the dynamic type of the location. - - 2016-06-08 Jakub Jelinek - Richard Biener - - PR c++/71448 - * fold-const.c (fold_comparison): Handle CONSTANT_CLASS_P (base0) - the same as DECL_P (base0) for indirect_base0. Use equality_code - in one further place. - - 2016-06-08 Richard Sandiford - - * expmed.c (store_bit_field_1): Do not restrict a multiword op0 - to one word if the field is known to overlap other words. - (extract_bit_field_1): Likewise. - (store_split_bit_field): Remove compensating code. - (extract_split_bit_field): Likewise. - - 2016-06-08 Bernd Schmidt - - PR debug/71432 - PR ada/71413 - * tree-ssa-strlen.c (handle_builtin_memcmp): Ignore debug insns. - - 2016-06-08 Jiong Wang - - * config/aarch64/aarch64-builtins.def (faddp): New builtins for modes in - VDQF. - * config/aarch64/aarch64-simd.md (aarch64_faddp): New. - (arch64_addpv4sf): Delete. - (reduc_plus_scal_v4sf): Use "gen_aarch64_faddpv4sf" instead of - "gen_aarch64_addpv4sf". - * config/aarch64/arm_neon.h (vpadd_f32): Remove inline assembly. Use - builtin. - (vpadds_f32): Likewise. - (vpaddq_f32): Likewise. - (vpaddq_f64): Likewise. - - 2016-06-08 Jiong Wang - - * config/aarch64/aarch64-builtins.def (fabd): New builtins for modes - VALLF. - * config/aarch64/aarch64-simd.md (fabd_3): Extend modes from VDQF - to VALLF. Rename to "fabd3". - "*fabd_scalar3): Delete. - * config/aarch64/arm_neon.h (vabds_f32): Remove inline assembly. - Use builtin. - (vabdd_f64): Likewise. - (vabd_f32): Likewise. - (vabd_f64): Likewise. - (vabdq_f32): Likewise. - (vabdq_f64): Likewise. - - 2016-06-08 Jiong Wang - - * config/aarch64/aarch64-builtins.def (rsqrts): New builtins for modes - VALLF. - * config/aarch64/aarch64-simd.md (aarch64_rsqrts_3): Rename to - "aarch64_rsqrts". - * config/aarch64/aarch64.c (get_rsqrts_type): Update gen* name. - * config/aarch64/arm_neon.h (vrsqrtss_f32): Remove inline assembly. Use - builtin. - (vrsqrtsd_f64): Likewise. - (vrsqrts_f32): Likewise. - (vrsqrts_f64): Likewise. - (vrsqrtsq_f32): Likewise. - (vrsqrtsq_f64): Likewise. - - 2016-06-08 Jiong Wang - - * config/aarch64/aarch64-builtins.def (rsqrte): New builtins for modes - VALLF. - * config/aarch64/aarch64-simd.md (aarch64_rsqrte_2): Rename to - "aarch64_rsqrte". - * config/aarch64/aarch64.c (get_rsqrte_type): Update gen* name. - * config/aarch64/arm_neon.h (vrsqrts_f32): Remove inline assembly. Use - builtin. - (vrsqrted_f64): Likewise. - (vrsqrte_f32): Likewise. - (vrsqrte_f64): Likewise. - (vrsqrteq_f32): Likewise. - (vrsqrteq_f64): Likewise. - - 2016-06-08 Jiong Wang - - * config/aarch64/aarch64-builtins.def (scvtf): Register vector modes. - (ucvtf): Likewise. - (fcvtzs): Likewise. - (fcvtzu): Likewise. - * config/aarch64/aarch64-simd.md - (3): New. - (3): Likewise. - * config/aarch64/arm_neon.h (vcvt_n_f32_s32): Remove inline assembly. - Use builtin. - (vcvt_n_f32_u32): Likewise. - (vcvt_n_s32_f32): Likewise. - (vcvt_n_u32_f32): Likewise. - (vcvtq_n_f32_s32): Likewise. - (vcvtq_n_f32_u32): Likewise. - (vcvtq_n_f64_s64): Likewise. - (vcvtq_n_f64_u64): Likewise. - (vcvtq_n_s32_f32): Likewise. - (vcvtq_n_s64_f64): Likewise. - (vcvtq_n_u32_f32): Likewise. - (vcvtq_n_u64_f64): Likewise. - * config/aarch64/iterators.md (VDQ_SDI): New mode iterator. - (VSDQ_SDI): Likewise. - (fcvt_target): Support V4DI, V4SI and V2SI. - (FCVT_TARGET): Likewise. - - 2016-06-08 Jiong Wang - - * config/aarch64/aarch64-builtins.c (TYPES_BINOP_USS): New - (TYPES_BINOP_SUS): Likewise. - (aarch64_simd_builtin_data): Update include file name. - (aarch64_builtins): Likewise. - * config/aarch64/aarch64-simd-builtins.def (scvtf): New entries - for conversion between scalar float-point and fixed-point. - (ucvtf): Likewise. - (fcvtzs): Likewise. - (fcvtzu): Likewise. - * config/aarch64/aarch64.md - (3: New - pattern for conversion between scalar float to fixed-pointer. - (: Likewise. - (UNSPEC_FCVTZS): New UNSPEC enumeration. - (UNSPEC_FCVTZU): Likewise. - (UNSPEC_SCVTF): Likewise. - (UNSPEC_UCVTF): Likewise. - * config/aarch64/arm_neon.h (vcvtd_n_f64_s64): Remove inline assembly. - Use builtin. - (vcvtd_n_f64_u64): Likewise. - (vcvtd_n_s64_f64): Likewise. - (vcvtd_n_u64_f64): Likewise. - (vcvtd_n_f32_s32): Likewise. - (vcvts_n_f32_u32): Likewise. - (vcvtd_n_s32_f32): Likewise. - (vcvts_n_u32_f32): Likewise. - * config/aarch64/iterators.md (fcvt_target): Support integer to float - mapping. - (FCVT_TARGET): Likewise. - (FCVT_FIXED2F): New iterator. - (FCVT_F2FIXED): Likewise. - (fcvt_fixed_insn): New define_int_attr. - - 2016-06-07 Jan Hubicka - - * predict.c (pass_strip_predict_hints::execute): Cleanup CFG if - some statements was removed. - - 2016-06-08 Alan Hayward - - * tree-vect-data-refs.c (vect_analyze_data_refs): Remove debug newline. - * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): likewise. - (vect_can_advance_ivs_p): likewise. - (vect_update_ivs_after_vectorizer): likewise. - * tree-vect-loop.c (vect_determine_vectorization_factor): likewise. - (vect_analyze_scalar_cycles_1): likewise. - (vect_analyze_loop_operations): likewise. - (report_vect_op): likewise. - (vect_is_slp_reduction): likewise. - (vect_is_simple_reduction): likewise. - (get_initial_def_for_induction): likewise. - (vect_transform_loop): likewise. - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): likewise. - (vect_recog_sad_pattern): likewise. - (vect_recog_widen_sum_pattern): likewise. - (vect_recog_widening_pattern): likewise. - (vect_recog_divmod_pattern): likewise. - * tree-vect-slp.c (vect-build-slp_tree_1): likewise. - (vect_analyze_slp_instance): likewise. - (vect_transform_slp_perm_load): likewise. - (vect_schedule_slp_instance): likewise. - - 2016-06-07 Jan Hubicka - - * predict.c (predict_iv_comparison): Mention that heuristics is broken. - (return_prediction): PRED_CONST_RETURN predict return as not taken. - * predict.def (PRED_CONTINUE): Change hitrate 50->67 - (PRED_LOOP_BRANCH): Document predictor as broken. - (PRED_LOOP_EXIT): Change hitrate 91->92. - (PRED_LOOP_EXTRA_EXIT): Change hitrate 91->83. - (PRED_POINTER, PRED_TREE_POINTER): Change hitrate 85->70. - (PRED_OPCODE_POSITIVE): Change hitrate 79->64. - (PRED_OPCODE_NONEQUAL): Change hitrate 91->66. - (PRED_TREE_OPCODE_POSITIVE): Change hitrate 73->64 - (PRED_TREE_OPCODE_NONEQUAL): Chnage hitrate 72->66 - (PRED_CALL): Chane hitrate 71->67. - (PRED_TREE_EARLY_RETURN): Document issues, change hitrate 61->54. - (PRED_GOTO): Document as unused right now. - (PRED_CONST_RETURN): Change hitrate 67->69 - (PRED_NEGATIVE_RETURN): Change hitrate 96->98 - (PRED_NULL_RETURN): Change hitrate 91->90. - (PRED_LOOP_IV_COMPARE_GUESS): Change hitrate to 98. - (PRED_FORTRAN_FAIL_ALLOC): Change hitrate to 62; document issues. - (PRED_FORTRAN_SIZE_ZERO): Change hitrate to 99. - - 2016-06-07 Bill Seurer - - * config/rs6000/altivec.h: Add __builtin_vec_mul. - * config/rs6000/rs6000-builtin.def (vec_mul): Change vec_mul to a - special case Altivec builtin. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove - VSX_BUILTIN_VEC_MUL (replaced with special case code). - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add - code for ALTIVEC_BUILTIN_VEC_MUL. - * config/rs6000/rs6000.c (altivec_init_builtins): Add definition - for __builtin_vec_mul. - - 2016-06-07 Peter Bergner - - * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mhtm and - -mno-htm. - - 2016-06-07 David Malcolm - - * spellcheck.c (selftest::test_find_closest_string): New function. - (spellcheck_c_tests): Call the above. - - 2016-06-07 Kyrylo Tkachov - - * simplify-rtx.c (simplify_cond_clz_ctz): Delete 'mode' local variable. - - 2016-06-07 Jakub Jelinek - - * config/i386/sse.md (avx_vec_concat): Add v=v,vm and - Yv=Yv,C alternatives. - - 2016-06-07 Richard Biener - - PR c/61564 - * common.opt (ffast-math): Make Optimization. - - 2016-06-07 Simon Dardis - Prachi Godbole - - * config/mips/p5600.md (p5600_fpu_fadd): Remove checking for - `fabs' and `fneg' type attributes. - (p5600_fpu_fabs): Add `fmove' to the comment. - - 2016-06-07 Jan Hubicka - - * gimple.c: Include builtins.h - (gimple_inexpensive_call_p): New function. - * gimple.h (gimple_inexpensive_call_p): Declare. - * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Use it. - * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise; - fix formatting. - - 2016-06-07 Paolo Carlini - - * diagnostic.c (diagnostic_impl, diagnostic_n_impl): New. - (inform, inform_at_rich_loc, inform_n, warning, warning_at, - warning_at_rich_loc, warning_n, pedwarn, permerror, - permerror_at_rich_loc, error, error_n, error_at, error_at_rich_loc, - sorry, fatal_error, internal_error, internal_error_no_backtrace): - Use the above. - - 2016-06-07 Richard Biener - - PR tree-optimization/71428 - * tree-ssa-math-opts.c (perform_symbolic_merge): Properly distinguish - BIT_FIELD_REF op vs. load. - - 2016-06-07 Richard Biener - - PR middle-end/71423 - * match.pd ((X | ~Y) -> Y <= X): Properly invert the comparison - for signed ops. - - 2016-06-06 John David Anglin - - * config/pa/pa.md (call): Generate indirect long calls to non-local - functions on TARGET_64BIT. - (call_value): Likewise. - - 2016-06-06 John David Anglin - - * config/pa/pa.md (call_val_reg_64bit): Remove "reg: DI " clobber from - pattern and subsequent splitters. - (call_val_reg_64bit_post_reload): Likewise. - - 2016-06-07 Kugan Vivekanandarajah - - PR middle-end/71408 - * tree-ssa-reassoc.c (zero_one_operation): Fix NEGATE_EXPR operand for - propagate_op_to_single_use. - - 2016-06-07 Kugan Vivekanandarajah - - PR middle-end/71281 - * tree-ssa-reassoc.c (reassociate_bb): Set uid for negate stmt. - - 2016-06-07 Uros Bizjak - - * config/i386/i386.h (enum ix86_enitity): Add X86_DIRFLAG. - (enum x86_dirflag_state): New enum. - (NUM_MODES_FOR_MODE_SWITCHING): Add X86_DIRFLAG_ANY. - (machine_function): Remove needs_cld. - (ix86_current_function_needs_cld): Remove. - * config/i386/i386.c (ix86_set_func_type): Set - ix86_optimize_mode_switching[X86_DIRFLAG] to 1. - (ix86_expand_prologue): Do not emit CLD here. - (ix86_dirflag_mode_needed): New function. - (ix86_dirflag_mode_entry): Ditto. - (ix86_mode_needed): Handle X86_DIRFLAG entity. - (ix86_mode_after): Ditto. - (ix86_mode_entry): Ditto. - (ix86_mode_exit): Ditto. - (ix86_emit_mode_set): Ditto. - * config/i386/i386.md (strmov_singleop): Set - ix86_optimize_mode_switching[X86_DIRFLAG] to 1 for TARGET_CLD. - Do not set ix86_current_function_needs_cld. - (rep_mov): Ditto. - (strset_singleop): Ditto. - (rep_stos): Ditto. - (cmpstrnqi_nz_1): Ditto. - (cmpstrnqi_1): Ditto. - (strlenqi_1): Ditto. - - 2016-06-06 Jakub Jelinek - - PR tree-optimization/71259 - * tree-vect-slp.c (vect_get_constant_vectors): For - VECTOR_BOOLEAN_TYPE_P, return all ones constant instead of - one for constant op, and use COND_EXPR for non-constant. - - 2016-06-06 David Malcolm - - * Makefile.in (OBJS): Add function-tests.o, - hash-map-tests.o, hash-set-tests.o, rtl-tests.o, - selftest-run-tests.o. - (OBJS-libcommon): Add selftest.o. - (OBJS-libcommon-target): Add selftest.o. - (all.internal): Add "selftest". - (all.cross): Likewise. - (selftest): New phony target. - (s-selftest): New target. - (selftest-gdb): New phony target. - (COLLECT2_OBJS): Add selftest.o. - * bitmap.c: Include "selftest.h". - (selftest::test_gc_alloc): New function. - (selftest::test_set_range): New function. - (selftest::test_clear_bit_in_middle): New function. - (selftest::test_copying): New function. - (selftest::test_bitmap_single_bit_set_p): New function. - (selftest::bitmap_c_tests): New function. - * common.opt (fself-test): New. - * diagnostic-show-locus.c: Include "selftest.h". - (make_range): New function. - (test_range_contains_point_for_single_point): New function. - (test_range_contains_point_for_single_line): New function. - (test_range_contains_point_for_multiple_lines): New function. - (assert_eq): New function. - (test_get_line_width_without_trailing_whitespace): New function. - (selftest::diagnostic_show_locus_c_tests): New function. - * et-forest.c: Include "selftest.h". - (selftest::test_single_node): New function. - (selftest::test_simple_tree): New function. - (selftest::test_disconnected_nodes): New function. - (selftest::et_forest_c_tests): New function. - * fold-const.c: Include "selftest.h". - (selftest::assert_binop_folds_to_const): New function. - (selftest::assert_binop_folds_to_nonlvalue): New function. - (selftest::test_arithmetic_folding): New function. - (selftest::fold_const_c_tests): New function. - * function-tests.c: New file. - * gimple.c: Include "selftest.h". - Include "gimple-pretty-print.h". - (selftest::verify_gimple_pp): New function. - (selftest::test_assign_single): New function. - (selftest::test_assign_binop): New function. - (selftest::test_nop_stmt): New function. - (selftest::test_return_stmt): New function. - (selftest::test_return_without_value): New function. - (selftest::gimple_c_tests): New function. - * hash-map-tests.c: New file. - * hash-set-tests.c: New file. - * input.c: Include "selftest.h". - (selftest::assert_loceq): New function. - (selftest::test_accessing_ordinary_linemaps): New function. - (selftest::test_unknown_location): New function. - (selftest::test_builtins): New function. - (selftest::test_reading_source_line): New function. - (selftest::input_c_tests): New function. - * rtl-tests.c: New file. - * selftest-run-tests.c: New file. - * selftest.c: New file. - * selftest.h: New file. - * spellcheck.c: Include "selftest.h". - (selftest::levenshtein_distance_unit_test_oneway): New function, - adapted from testsuite/gcc.dg/plugin/levenshtein_plugin.c. - (selftest::levenshtein_distance_unit_test): Likewise. - (selftest::spellcheck_c_tests): Likewise. - * toplev.c: Include selftest.h. - (toplev::run_self_tests): New. - (toplev::main): Handle -fself-test. - * toplev.h (toplev::run_self_tests): New. - * tree.c: Include "selftest.h". - (selftest::test_integer_constants): New function. - (selftest::test_identifiers): New function. - (selftest::test_labels): New function. - (selftest::tree_c_tests): New function. - * tree-cfg.c: Include "selftest.h". - (selftest::push_fndecl): New function. - (selftest::test_linear_chain): New function. - (selftest::test_diamond): New function. - (selftest::test_fully_connected): New function. - (selftest::tree_cfg_c_tests): New function. - * vec.c: Include "selftest.h". - (selftest::safe_push_range): New function. - (selftest::test_quick_push): New function. - (selftest::test_safe_push): New function. - (selftest::test_truncate): New function. - (selftest::test_safe_grow_cleared): New function. - (selftest::test_pop): New function. - (selftest::test_safe_insert): New function. - (selftest::test_ordered_remove): New function. - (selftest::test_unordered_remove): New function. - (selftest::test_block_remove): New function. - (selftest::reverse_cmp): New function. - (selftest::test_qsort): New function. - (selftest::vec_c_tests): New function.c. - * wide-int.cc: Include selftest.h and wide-int-print.h. - (selftest::from_int ): New function. - (selftest::from_int ): New function. - (selftest::from_int ): New function. - (selftest::assert_deceq): New function. - (selftest::assert_hexeq): New function. - (selftest::test_printing ): New function template. - (selftest::test_ops ): New function template. - (selftest::test_comparisons ): New function template. - (selftest::run_all_wide_int_tests ): New function - template. - (selftest::wide_int_cc_tests): New function. - - 2016-06-06 Kyrylo Tkachov - - PR middle-end/37780 - * ifcvt.c (noce_try_ifelse_collapse): New function. - Declare prototype. - (noce_process_if_block): Call noce_try_ifelse_collapse. - * simplify-rtx.c (simplify_cond_clz_ctz): New function. - (simplify_ternary_operation): Use the above to simplify - conditional CLZ/CTZ expressions. - - 2016-06-06 Kyrylo Tkachov - - PR middle-end/37780 - * config/aarch64/aarch64.md (ctz2): Convert to - define_insn_and_split. - - 2016-06-06 Kyrylo Tkachov - - PR middle-end/37780 - * config/arm/arm.md (ctzsi2): Convert to define_insn_and_split. - - 2016-06-06 Bernd Edlinger - - PR c/24414 - * cfgexpand.c (expand_asm_loc): Remove handling for ADDR_EXPR. - Implicitly clobber memory for basic asm with non-empty assembler - string. Use targetm.md_asm_adjust also here. - * compare-elim.c (arithmetic_flags_clobber_p): Use asm_noperands here. - * final.c (final_scan_insn): Handle basic asm in PARALLEL block. - * gimple.c (gimple_asm_clobbers_memory_p): Handle basic asm with - non-empty assembler string. - * ira.c (compute_regs_asm_clobbered): Use asm_noperands here. - * recog.c (asm_noperands): Handle basic asm in PARALLEL block. - (decode_asm_operands): Handle basic asm in PARALLEL block. - (extract_insn): Handle basic asm in PARALLEL block. - * doc/extend.texi: Mention new behavior of basic asm. - * config/ia64/ia64 (rtx_needs_barrier): Handle ASM_INPUT here. - * config/pa/pa.c (branch_to_delay_slot_p, branch_needs_nop_p, - branch_needs_nop_p): Use asm_noperands. - - 2016-06-06 Jose E. Marchesi - - * config/sparc/sparc.md (cpu): Add niagara7 cpu type. - Include the M7 SPARC DFA scheduler. - New attribute v3pipe. - Annotate insns with v3pipe where appropriate. - Define cpu_feature vis4. - Add lzd instruction type and set it on clzdi_sp64 and clzsi_sp64. - Add (V8QI "8") to vbits. - Add insns {add,sub}v8qi3 - Add insns ss{add,sub}v8qi3 - Add insns us{add,sub}{v8qi,v4hi}3 - Add insns {min,max}{v8qi,v4hi,v2si}3 - Add insns {minu,maxu}{v8qi,v4hi,v2si}3 - Add insns fpcmp{le,gt,ule,ug,ule,ugt}{8,16,32}_vis. - * config/sparc/niagara4.md: Add a comment explaining the - discrepancy between the documented latenty numbers and the - implemented ones. - * config/sparc/niagara7.md: New file. - * configure.ac (HAVE_AS_SPARC5_VIS4): Define if the assembler - supports SPARC5 and VIS 4.0 instructions. - * configure: Regenerate. - * config.in: Likewise. - * config.gcc: niagara7 is a supported cpu in sparc*-*-* targets. - * config/sparc/sol2.h (ASM_CPU32_DEFAUILT_SPEC): Set for - TARGET_CPU_niagara7. - (ASM_CPU64_DEFAULT_SPEC): Likewise. - (CPP_CPU_SPEC): Handle niagara7. - (ASM_CPU_SPEC): Likewise. - * config/sparc/sparc-opts.h (processor_type): Add - PROCESSOR_NIAGARA7. - (mvis4): New option. - * config/sparc/sparc.h (TARGET_CPU_niagara7): Define. - (AS_NIAGARA7_FLAG): Define. - (ASM_CPU64_DEFAULT_SPEC): Set for niagara7. - (CPP_CPU64_DEFAULT_SPEC): Likewise. - (CPP_CPU_SPEC): Handle niagara7. - (ASM_CPU_SPEC): Likewise. - * config/sparc/sparc.c (niagara7_costs): Define. - (sparc_option_override): Handle niagara7 and adjust cache-related - parameters with better values for niagara cpus. Also support VIS4. - (sparc32_initialize_trampoline): Likewise. - (sparc_use_sched_lookahead): Likewise. - (sparc_issue_rate): Likewise. - (sparc_register_move_cost): Likewise. - (dump_target_flag_bits): Support VIS4. - (sparc_vis_init_builtins): Likewise. - (sparc_builtins): Likewise. - * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__ for - VIS4 4.0. - * config/sparc/driver-sparc.c (cpu_names): Add SPARC-M7 and - UltraSparc M7. - * config/sparc/sparc.opt (sparc_processor_type): New value - niagara7. - * config/sparc/visintrin.h (__attribute__): Prototypes for the - VIS4 builtins. - * doc/invoke.texi (SPARC Options): Document -mcpu=niagara7 and - -mvis4. - * doc/extend.texi (SPARC VIS Built-in Functions): Document the - VIS4 builtins. - - 2016-06-06 Jonathan Wakely - - * doc/sourcebuild.texi (Directives): Remove extra closing braces. - - 2016-06-06 Richard Biener - - PR tree-optimization/71398 - * tree-ssa-loop-ivcanon.c (unloop_loops): First unloop, then - remove edges. - - 2016-06-05 James Bowman - - * config/ft32/ft32.c (ft32_setup_incoming_varargs, - ft32_expand_prolog, ft32_expand_epilogue): - Handle pretend_args. - * config/ft32/ft32.h: Remove OUTGOING_REG_PARM_STACK_SPACE. - * config/ft32/ft32.md: Add pretend_returner. - - 2016-06-06 Uros Bizjak - - PR target/71389 - * config/i386/i386.c (ix86_avx256_split_vector_move_misalign): - Copy op1 RTX to avoid invalid sharing. - (ix86_expand_vector_move_misalign): Ditto. - - 2016-06-05 John David Anglin - - * expr.c (move_by_pieces_d::generate): Mark mode parameter with - ATTRIBUTE_UNUSED. - - 2016-06-05 Jan Hubicka - - * predict.c (predicted_by_loop_heuristics_p): New function. - (predict_iv_comparison): Use it. - (predict_loops): Walk from innermost loops; do not predict edges - leaving multiple loops multiple times; implement - PRED_LOOP_ITERATIONS_MAX heuristics. - * predict.def (PRED_LOOP_ITERATIONS_MAX): New predictor. - - 2016-06-05 Jan Hubicka - - * cfg.c (check_bb_profile): Do not report mismatched profiles when - only edges out of BB are EH edges. - - 2016-06-04 Martin Sebor - Marcin Baczyński - - PR c/48116 - * doc/invoke.texi (-Wreturn-type): Mention not warning on return with - a void expression in a void function. - - 2016-06-03 Jan Hubicka - - * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Do not check - aux; dump reasons of decisions. - (should_duplicate_loop_header_p): Likewise. - (do_while_loop_p): Likewise. - (ch_base::copy_headers): Dump asi num insns duplicated. - - 2016-06-04 Jakub Jelinek - - PR tree-optimization/71405 - * tree-ssa.c (execute_update_addresses_taken): For clobber with - incompatible type, build a new clobber with the right type instead - of building a VIEW_CONVERT_EXPR around it. - - 2016-06-04 Oleg Endo - - PR tree-optimization/52171 - * config/sh/sh.c (sh_use_by_pieces_infrastructure_p): Use - by_pieces_ninsns instead of move_by_pieces_ninsns. - - 2016-06-04 Oleg Endo - - * config/sh/sh.c (sh_print_operand_address): Don't use hardcoded 'r0' - for reg+reg addressing mode. - - 2016-06-03 Bill Schmidt - - * rs6000-c.c (c/c-tree.h): Add #include. - (altivec_resolve_overloaded_builtin): Handle ARRAY_TYPE arguments - in C++ when found in the base position of vec_ld or vec_st. - - 2016-06-03 Jan Hubicka - - * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid - use of profile unless profile status is PROFILE_READ. - * profile.c (compute_branch_probabilities): Set profile status - only after reporting predictor hitrates. - - 2016-06-03 Joseph Myers - - PR target/71276 - PR target/71277 - * common.opt (ffp-int-builtin-inexact): New option. - * doc/invoke.texi (-fno-fp-int-builtin-inexact): Document. - * doc/md.texi (floor@var{m}2, btrunc@var{m}2, round@var{m}2) - (ceil@var{m}2): Document dependence on this option. - * ipa-inline-transform.c (inline_call): Handle - flag_fp_int_builtin_inexact. - * ipa-inline.c (can_inline_edge_p): Likewise. - * config/i386/i386.md (rintxf2): Do not test - flag_unsafe_math_optimizations. - (rint2_frndint): New define_insn. - (rint2): Do not test flag_unsafe_math_optimizations for 387 - or !flag_trapping_math for SSE. Just use gen_rint2_frndint - for 387 instead of extending and truncating. - (frndintxf2_): Test flag_fp_int_builtin_inexact || - !flag_trapping_math instead of flag_unsafe_math_optimizations. - Change to frndint2_. - (frndintxf2__i387): Likewise. Change to - frndint2__i387. - (xf2): Likewise. - (2): Test flag_fp_int_builtin_inexact || - !flag_trapping_math instead of flag_unsafe_math_optimizations for - x87. Test TARGET_ROUND || !flag_trapping_math || - flag_fp_int_builtin_inexact instead of !flag_trapping_math for - SSE. Use ROUND_NO_EXC in constant operand of - gen_sse4_1_round2. Just use gen_frndint2_ - for 387 instead of extending and truncating. - - 2016-06-03 H.J. Lu - Julia Koval - - PR target/66960 - PR target/67630 - PR target/67634 - PR target/67841 - PR target/68037 - PR target/68618 - PR target/68661 - PR target/69575 - PR target/69596 - PR target/69734 - * config/i386/i386-protos.h (ix86_epilogue_uses): New prototype. - * config/i386/i386.c (ix86_conditional_register_usage): Preserve - all registers, except for function return registers if there are - no caller-saved registers. - (ix86_set_func_type): New function. - (ix86_set_current_function): Call ix86_set_func_type to set - no_caller_saved_registers and func_type. Call reinit_regs if - caller-saved registers are changed. Don't allow MPX, SSE, MMX - nor x87 instructions in interrupt handler nor function with - no_caller_saved_registers attribute. - (ix86_function_ok_for_sibcall): Return false if there are no - caller-saved registers. - (type_natural_mode): Don't warn ABI change for MMX in interrupt - handler. - (ix86_function_arg_advance): Skip for callee in interrupt handler. - (ix86_function_arg): Return special arguments in interrupt handler. - (ix86_promote_function_mode): Promote pointer to word_mode only - for normal functions. - (ix86_can_use_return_insn_p): Don't use `ret' instruction in - interrupt handler. - (ix86_epilogue_uses): New function. - (ix86_hard_regno_scratch_ok): Likewise. - (ix86_save_reg): Preserve all registers in interrupt handler - after reload. Preserve all registers, except for function return - registers, if there are no caller-saved registers after reload. - (find_drap_reg): Always use callee-saved register if there are - no caller-saved registers. - (ix86_minimum_incoming_stack_boundary): Return MIN_STACK_BOUNDARY - for interrupt handler. - (ix86_expand_prologue): Don't allow DRAP in interrupt handler. - Emit cld instruction if stringops are used in interrupt handler - or interrupt handler isn't a leaf function. - (ix86_expand_epilogue): Generate interrupt return for interrupt - handler and pop the 'ERROR_CODE' off the stack before interrupt - return in exception handler. - (ix86_expand_call): Disallow calling interrupt handler directly. - If there are no caller-saved registers, mark all registers that - are clobbered by the call which returns as clobbered. - (ix86_handle_no_caller_saved_registers_attribute): New function. - (ix86_handle_interrupt_attribute): Likewise. - (ix86_attribute_table): Add interrupt and no_caller_saved_registers - attributes. - (TARGET_HARD_REGNO_SCRATCH_OK): Likewise. - * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Use argument - accumulation in interrupt function if stack may be realigned to - avoid DRAP. - (EPILOGUE_USES): New. - (function_type): New enum. - (machine_function): Add func_type and no_caller_saved_registers. - * config/i386/i386.md (UNSPEC_INTERRUPT_RETURN): New. - (interrupt_return): New pattern. - * doc/extend.texi: Document x86 interrupt and - no_caller_saved_registers attributes. - - 2016-06-03 Bernd Schmidt - - PR tree-optimization/52171 - * builtins.c (expand_cmpstrn_or_cmpmem): Delete, moved elsewhere. - (expand_builtin_memcmp): New arg RESULT_EQ. All callers changed. - Look for constant strings. Move some code to emit_block_cmp_hints - and use it. - * builtins.def (BUILT_IN_MEMCMP_EQ): New. - * defaults.h (COMPARE_MAX_PIECES): New macro. - * expr.c (move_by_pieces_d, store_by_pieces_d): Remove old structs. - (move_by_pieces_1, store_by_pieces_1, store_by_pieces_2): Remvoe. - (clear_by_pieces_1): Don't declare. Move definition before use. - (can_do_by_pieces): New static function. - (can_move_by_pieces): Use it. Return bool. - (by_pieces_ninsns): Renamed from move_by_pieces_ninsns. New arg - OP. All callers changed. Handle COMPARE_BY_PIECES. - (class pieces_addr); New. - (pieces_addr::pieces_addr, pieces_addr::decide_autoinc, - pieces_addr::adjust, pieces_addr::increment_address, - pieces_addr::maybe_predec, pieces_addr::maybe_postinc): New member - functions for it. - (class op_by_pieces_d): New. - (op_by_pieces_d::op_by_pieces_d, op_by_pieces_d::run): New member - functions for it. - (class move_by_pieces_d, class compare_by_pieces_d, - class store_by_pieces_d): New subclasses of op_by_pieces_d. - (move_by_pieces_d::prepare_mode, move_by_pieces_d::generate, - move_by_pieces_d::finish_endp, store_by_pieces_d::prepare_mode, - store_by_pieces_d::generate, store_by_pieces_d::finish_endp, - compare_by_pieces_d::generate, compare_by_pieces_d::prepare_mode, - compare_by_pieces_d::finish_mode): New member functions. - (compare_by_pieces, emit_block_cmp_via_cmpmem): New static - functions. - (expand_cmpstrn_or_cmpmem): Moved here from builtins.c. - (emit_block_cmp_hints): New function. - (move_by_pieces, store_by_pieces, clear_by_pieces): Rewrite to just - use the newly defined classes. - * expr.h (by_pieces_constfn): New typedef. - (can_store_by_pieces, store_by_pieces): Use it in arg declarations. - (emit_block_cmp_hints, expand_cmpstrn_or_cmpmem): Declare. - (move_by_pieces_ninsns): Don't declare. - (can_move_by_pieces): Change return value to bool. - * target.def (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Update docs. - (compare_by_pieces_branch_ratio): New hook. - * target.h (enum by_pieces_operation): Add COMPARE_BY_PIECES. - (by_pieces_ninsns): Declare. - * targethooks.c (default_use_by_pieces_infrastructure_p): Handle - COMPARE_BY_PIECES. - (default_compare_by_pieces_branch_ratio): New function. - * targhooks.h (default_compare_by_pieces_branch_ratio): Declare. - * doc/tm.texi.in (STORE_MAX_PIECES, COMPARE_MAX_PIECES): Document. - * doc/tm.texi: Regenerate. - * tree-ssa-strlen.c: Include "builtins.h". - (handle_builtin_memcmp): New static function. - (strlen_optimize_stmt): Call it for BUILT_IN_MEMCMP. - * tree.c (build_common_builtin_nodes): Create __builtin_memcmp_eq. - - 2016-06-03 Alan Hayward - - * tree-vect-stmts.c (vect_stmt_relevant_p): Do not vectorize non live - relevant stmts which are simple and invariant. - * tree-vect-loop.c (vectorizable_live_operation): Check relevance - instead of simple and invariant - - 2016-06-03 Alan Hayward - - * tree-vect-loop.c (vect_analyze_loop_operations): Allow live stmts. - (vectorizable_reduction): Check for new relevant state. - (vectorizable_live_operation): vectorize live stmts using - BIT_FIELD_REF. Remove special case for gimple assigns stmts. - * tree-vect-stmts.c (is_simple_and_all_uses_invariant): New function. - (vect_stmt_relevant_p): Check for stmts which are only used live. - (process_use): Use of a stmt does not inherit it's live value. - (vect_mark_stmts_to_be_vectorized): Simplify relevance inheritance. - (vect_analyze_stmt): Check for new relevant state. - * tree-vectorizer.h (vect_relevant): New entry for a stmt which is used - outside the loop, but not inside it. - - 2016-06-03 Alan Hayward - - * tree-vectorizer.h (vect_get_vec_def_for_operand_1): New. - * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): New. - (vect_get_vec_def_for_operand): Split out code. - - 2016-06-03 Segher Boessenkool - - * config/rs6000/rs6000.md (define_peepholes for two mfcr's): Delete. - - 2016-06-03 Alan Hayward - - * tree-vect-stmts.c (vectorizable_call) Remove GOMP_SIMD_LANE code. - - 2016-06-03 Kyrylo Tkachov - - * config/arm/thumb1.md (*thumb1_mulsi3): Fix typos in comment. - - 2016-06-03 Jakub Jelinek - - PR middle-end/71387 - * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): If redirecting - to noreturn e->callee->decl that has void return type and void - arguments, adjust gimple_call_fntype and remove lhs even if it had - previously addressable type. - - 2016-06-02 Jeff Law - - PR tree-optimization/71328 - * tree-ssa-threadupdate.c (duplicate_thread_path): Fix off-by-one - error when checking for a jump back onto the copied path. - - 2016-06-02 David Malcolm - - * config/microblaze/microblaze.c (get_branch_target): Add return - NULL_RTX for the non-CALL_P case. - (insert_wic_for_ilb_runout): Remove unused local "wic_addr1". - (insert_wic): Remove unused local "j". - - 2016-06-02 Martin Liska - - * predict.def: Fix typo in PRED_FORTRAN_FAIL_IO display name. - - 2016-06-02 H.J. Lu - Julia Koval - - * function.c (assign_parm_setup_stack): Force source into a - register if needed. - * target.def (function_incoming_arg): Update documentation to - allow arbitrary address computation based on hard register. - * doc/tm.texi: Regenerated. - - 2016-06-02 Martin Liska - - * predict.c (combine_predictions_for_bb): Fix first match in - cases where a first predictor contains more than one occurence - in list of predictors. Take the best value in such case. - - 2016-06-02 Kyrylo Tkachov - - PR rtl-optimization/71295 - * rtlanal.c (subreg_get_info): If taking a subreg at the requested - offset would go over the size of the inner mode reject it. - - 2016-06-02 Jakub Jelinek - - * config/i386/sse.md (*vec_concatv4si): Use v=v,v instead of - x=x,x and v=v,m instead of x=x,m. - - * config/i386/sse.md (*vec_concatv2si_sse4_1): Add avx512dq v=Yv,rm - alternative. Change x=x,x alternative to v=Yv,Yv and x=rm,C - alternative to v=rm,C. - - * config/i386/sse.md (*vec_concatv2di): Add x86_avx512dq v=Yv,rm - alternative. Change x=xm,C alternative to v=vm,C, x=x,x alternative - to v=Yv,Yv and x=x,m to v=v,m. Use maybe_evex prefix attribute - instead of vex for the last two above mentioned alternatives. - - 2016-06-02 Kyrylo Tkachov - - PR target/70830 - * config/arm/arm.c (arm_output_multireg_pop): Guard "pop" on update. - - 2016-06-02 Segher Boessenkool - - * config/rs6000/dfp.md (trunctddd2): Correct the "length" attribute. - - 2016-06-01 David Malcolm - - * config/rl78/rl78.c (rl78_expand_prologue): Convert local - from int to unsigned. - - 2016-05-31 Michael Meissner - - * config/rs6000/vsx.md (vsx_splat_, V2DI/V2DF): Simplify - alternatives, eliminating preferred register class. Add support - for the MTVSRDD instruction in ISA 3.0. - (vsx_splat_v4si_internal): Use splat_input_operand instead of - reg_or_indexed_operand. - (vsx_splat_v4sf_internal): Likewise. - - 2016-05-31 Michael Meissner - - PR target/71186 - * config/rs6000/vsx.md (xxspltib__nosplit): Add alternatives - for loading up all 0's or all 1's. - - 2016-06-01 Thomas Preud'homme - - * doc/sourcebuild.texi (arm_acq_rel): Document new effective target. - - 2016-06-01 Eduard Sanou - - * doc/cppenv.texi: Note that the `%s` in `date` is a non-standard - extension. - * gcc.c (driver_handle_option): Call set_source_date_epoch_envvar. - * gcc.c (set_source_date_epoch_envvar): New function, sets - the SOURCE_DATE_EPOCH environment variable to the current time. - - 2016-06-01 Eric Botcazou - - * tree-vect-loop.c (vect_determine_vectorization_factor): Also compute - the factor for live Phi nodes. - - 2016-06-01 Jan Hubicka - - * loop-dolop.c (doloop_optimize): Us likely max iteration bound. - * tree-parloops.c (parallelize_loops): likewise. - * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop, - tree_unswitch_outer_loop): likewise. - - 2016-06-01 Jakub Jelinek - - PR middle-end/71371 - * gimplify.c (gimplify_omp_for): Temporarily clear gimplify_omp_ctxp - around creation of the temporary. - - 2016-06-01 Richard Biener - - PR tree-optimization/71366 - * tree-ssa-loop-ivcanon.c (edges_to_remove): New global. - (unloop_loops): Move removing edges here ... - (try_unroll_loop_completely): ... from here. - (try_peel_loop): ... and here. - (tree_unroll_loops_completely_1): Track parent loops via - bitmap of header BBs. - (tree_unroll_loops_completely): Adjust for that. - - 2016-06-01 Kelvin Nilsen - - * config/rs6000/altivec.h (vec_slv): New macro. - (vec_srv): New macro. - * config/rs6000/altivec.md (UNSPEC_VSLV): New value. - (UNSPEC_VSRV): New value. - (vslv): New insn. - (vsrv): New insn. - * config/rs6000/rs6000-builtin.def (vslv): New builtin definition. - (vsrv): New builtin definition. - * config/rs6000/rs6000-c.c (P9V_BUILTIN_VSLV): Macro expansion to - define argument types for new builtin. - (P9V_BUILTIN_VSRV): Macro expansion to define argument types for - new builtin. - * doc/extend.texi: Document the new vec_vslv and vec_srv built-in - functions. - - 2016-06-01 Uros Bizjak - Jocelyn Mayer - - PR target/67310 - * config/i386/driver-i386.c (host_detect_local_cpu): Correctly - detect processor family for signature_CENTAUR_ebx. - : Pass c3, winchip2 or winchip-c6 for - signature_CENTAUR_ebx. - : Pass c3-2 for signature_CENTAUR_ebx. - : Pass x86-64 for has_longmode. - - 2016-06-01 Nathan Sidwell - - * config/nvptx/nvptx.c (nvptx_assemble_undefined_decl): Reject - undefined weak. - - 2016-06-01 Richard Biener - - PR tree-optimization/71261 - * tree-vect-patterns.c (check_bool_pattern): Gather a hash-set - of stmts successfully put in the bool pattern. Remove - single-use restriction. - (adjust_bool_pattern_cast): Add cast at the use site via the - pattern def sequence. - (adjust_bool_pattern): Remove recursion, maintain a hash-map - of patterned defs. Use the pattern def seqence instead of - multiple independent patterns. - (sort_after_uid): New qsort compare function. - (adjust_bool_stmts): New function to process stmts in the bool - pattern in IL order. - (vect_recog_bool_pattern): Adjust. - * tree-if-conv.c (ifcvt_split_def_stmt): Remove. - (ifcvt_walk_pattern_tree): Likewise. - (stmt_is_root_of_bool_pattern): Likewise. - (ifcvt_repair_bool_pattern): Likewise. - (tree_if_conversion): Do not call ifcvt_repair_bool_pattern. - - 2016-06-01 Jan Hubicka - - * loop-unroll.c (decide_unroll_constant_iterations, - decide_unroll_runtime_iterations, decide_unroll_stupid): Use - likely upper bounds. - * loop-iv.c (find_simple_exit): Dump likely upper bounds. - - 2016-06-01 Thomas Schwinge - - * tree-core.h (enum omp_clause_code): Remove - OMP_CLAUSE_DEVICE_RESIDENT. Adjust all users. - - 2016-06-01 Kyrylo Tkachov - - * config/arm/sync.md (arm_store_exclusive): - Use 'H' output modifier on operands[2] rather than creating a new - entry in out-of-bounds memory of the operands array. - (arm_store_release_exclusivedi): Likewise. - - 2016-06-01 Kyrylo Tkachov - - * config/arm/arm.c (arm_fusion_enabled_p): New function. - * config/arm/arm-protos.h (arm_fusion_enabled_p): Declare prototype. - * config/arm/crypto.md (crypto_, CRYPTO_UNARY): - Add "=w,0" alternative. Enable it when AES/AESMC fusion is enabled. - - 2016-06-01 Eric Botcazou - - * tree-vect-loop.c (vect_determine_vectorization_factor): Also take - into account live statements for mask producers. - - 2016-06-01 Richard Biener - - PR tree-optimization/71311 - * match.pd (@0 < @1 && @0 < @2 -> @0 < min(@1,@2)): Add :c and - restrict to non-INTEGER_CST @0. - - 2016-06-01 Richard Biener - - * match.pd ((A & B) - (A & ~B) -> B - (A ^ B)): Add missing :c. - (relational patterns): Use :c to avoid pattern duplications. - - 2016-06-01 Richard Biener - - * genmatch.c (comparison_code_p): New predicate. - (swap_tree_comparison): New function. - (commutate): Add for_vec parameter to append new for entries. - Support commutating relational operators by swapping it alongside - operands. - (lower_commutative): Adjust. - (dt_simplify::gen): Do not pass artificial operators to gen - functions. - (decision_tree::gen): Do not add artificial operators as parameters. - (parser::parse_expr): Verify operator commutativity when :c is - applied. Allow :C to override this. - * match.pd: Adjust patterns to use :C instead of :c where required. - - 2016-06-01 Patrick Palka - - PR tree-optimization/71077 - * tree-ssa-threadedge.c (simplify_control_stmt_condition_1): In - the combining step, use boolean_false_node and boolean_true_node - as the designated false/true return values. - - 2016-05-31 Jan Hubicka - - * predict.def (PRED_LOOP_EXTRA_EXIT): Define. - * predict.c (predict_iv_comparison): Also check PRED_LOOP_EXTRA_EXIT. - (predict_extra_loop_exits): Use PRED_LOOP_EXTRA_EXIT instead of - PRED_LOOP_EXIT. - - 2016-05-31 Jan Hubicka - - * doc/invoke.texi (-frename-registers): Drop -fpeel-loops from list - of flags impliying the register renaming. - * toplev.c (process_options): Do not imply flag_rename_registers with - loop peeling. - - 2016-05-31 Oleg Endo - - * config/sh/sh.h (ASM_OUTPUT_SYMBOL_REF): Remove macro and use the - default implementation. - - 2016-05-31 Nathan Sidwell - - * dwarf2out.c (cur_line_info_table): Add GTY marker. - - 2016-05-31 Oleg Endo - - * config/sh/constraints.md (b): Remove constraint. - * config/sh/predicates.md (arith_reg_operand): Remove - TARGET_REGISTER_P. - * config/sh/sh-modes.def (PDI): Remove. - * config/sh/sh.c (sh_target_reg_class, - sh_optimize_target_register_callee_saved): Remove functions. - (sh_option_override): Don't set MASK_SAVE_ALL_TARGET_REGS. - (sh_expand_epilogue): Update comment. - (sh_hard_regno_mode_ok, sh_register_move_cost, calc_live_regs, - sh_secondary_reload): Remove TARGET_REGS related code. - * config/sh/sh.h (FIRST_TARGET_REG, LAST_TARGET_REG, - TARGET_REGISTER_P): Remove macros. - (SH_DBX_REGISTER_NUMBER, REG_ALLOC_ORDER): Remove target regs. - * config/sh/sh.md (PR_MEDIA_REG, T_MEDIA_REG, FR23_REG, TR0_REG, - TR1_REG, TR2_REG): Remove constants. - * config/sh/sh.opt (SAVE_ALL_TARGET_REGS): Remove. - - 2016-05-31 Oleg Endo - - * config/sh/sh.md (adddi3, subdi3, negdi2, abs2): Remove - define_expand patterns. - (adddi3_compact): Rename to adddi3. - (subdi3_compact): Rename to subdi3. - (*negdi2): Rename to negdi2. - (*abs2): Rename to abs2. - - 2016-05-31 Oleg Endo - - * config/rx/rx.md (FETCHOP_NO_MINUS): New code iterator. - (atomic__fetchsi): Extract minus operator into ... - (atomic_sub_fetchsi): ... this new pattern. - (mvtc): Add CC_REG clobber. - - 2016-05-31 Marek Polacek - - * gimplify.c (gimplify_switch_expr): Also handle GIMPLE_TRY. - - 2016-05-31 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Use - aarch64_fusion_enabled_p to check for fusion capabilities. - - 2016-05-31 Richard Biener - - PR tree-optimization/71352 - * tree-ssa-reassoc.c (zero_one_operation): Handle op equal to - minus one and a negate. - - 2016-05-31 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_simd_attr_length_move): Delete. - * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_move): - Delete prototype. - * config/aarch64/iterators.md (insn_count): Add descriptive comment. - * config/aarch64/aarch64-simd.md (*aarch64_mov, VSTRUCT modes): - Remove use of aarch64_simd_attr_length_move, set length attribute - directly. - (*aarch64_be_movoi): Likewise. - (*aarch64_be_movci): Likewise. - (*aarch64_be_movxi): Likewise. - - 2016-05-31 Jan Hubicka - - * loop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops. - It no longer does that. - * toplev.c (process_options): Do not enable flag_web with -fpeel-loops. - - 2016-05-31 Wladimir J. van der Laan - - * config/aarch64/arm_neon.h (vdupb_laneq_s8): Remove spurious - attribute __unused__. - - 2016-05-31 Thomas Preud'homme - - * config/arm/arm-protos.h (arm_arch_thumb1): Declare. - * config/arm/arm.c (arm_arch_thumb1): Define. - (arm_option_override): Initialize arm_arch_thumb1. - * config/arm/arm.h (arm_arch_thumb1): Declare. - (TARGET_ARM_ARCH_ISA_THUMB): Use arm_arch_thumb to determine if target - support Thumb-1 ISA. - - 2016-05-31 Kirill Yukhin - - PR target/71346 - * config/i386/sse.md (define_insn_and_split "*vec_extractv4sf_0"): Use - `Yv' for scalar operand. - - 2016-05-31 Tom de Vries - - PR tree-optimization/69068 - * graphite-isl-ast-to-gimple.c (copy_bb_and_scalar_dependences): Handle - phis with more than two args. - - 2016-05-30 Andreas Tobler - - * config.gcc: Move hard float support for arm*hf*-*-freebsd* into - armv6*-*-freebsd* for FreeBSD 11. Eliminate the arm*hf*-*-freebsd* - target. - - 2016-05-30 Jose E. Marchesi - - * config.gcc (sparc*-*-*): Support cpu_32, cpu_64, tune_32 and - tune_64. - * doc/install.texi (--with-cpu-32, --with-cpu-64): Document - support on SPARC. - * config/sparc/linux64.h (OPTION_DEFAULT_SPECS): Add entries for - cpu_32, cpu_64, tune_32 and tune_64. - * config/sparc/sol2.h (OPTION_DEFAULT_SPECS): Likewise. - - 2016-05-30 Uros Bizjak - - * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)". - - 2016-05-30 Andi Kleen - - * auto-profile.c (read_profile): Replace asserts with errors - when file does not exist. - * gcov-io.c (gcov_read_words): Dito. - - 2016-05-30 Jan Hubicka - - * tree-cfg.c (print_loop): Print likely upper bounds. - - 2016-05-30 Jan Hubicka - - * doc/invoke.texi (-fpeel-loops,-O3): Update documentation. - * opts.c (default_options): Enable peel loops at -O3. - * tree-ssa-loop-ivcanon.c (peeled_loops): New static var. - (try_peel_loop): Do not re-peel already peeled loops; - use likely upper bounds; fix profile updating. - (pass_complete_unroll::execute): Initialize peeled_loops. - - 2016-05-30 Martin Liska - - * tree-ssa-loop-ivopts.c (get_computation_cost_at): Scale - computed costs by frequency of BB they belong to. - (get_scaled_computation_cost_at): New function. - - 2016-05-30 Alexander Monakov - Marc Glisse - - PR tree-optimization/71289 - * match.pd (-1 / B < A, A > -1 / B): New transformations. - - 2016-05-30 Jan Hubicka - - * tree-vect-loop.c (vect_transform_loop): Update likely bounds. - - 2016-05-30 Jan Hubicka - - * tree-ssa-loop-ivcanon.c (try_peel_loop): Correctly set wont_exit - for peeled copies; avoid underflow when updating estimates; correctly - scale loop profile. - - 2016-05-30 Kugan Vivekanandarajah - - * tree-ssa-reassoc.ci (swap_ops_for_binary_stmt): Fix typo from commit - r236875. Corrected oe3 to oe2 as obvious. - - 2016-05-30 Kugan Vivekanandarajah - - PR middle-end/71269 - PR middle-end/71252 - * tree-ssa-reassoc.c (insert_stmt_before_use): Use find_insert_point so - that inserted stmt will not dominate stmts that defines its operand. - (rewrite_expr_tree): Add stmt_to_insert before adding the use stmt. - (rewrite_expr_tree_parallel): Likewise. - - 2016-05-30 Kugan Vivekanandarajah - - PR middle-end/71252 - * tree-ssa-reassoc.c (swap_ops_for_binary_stmt): Fix swap such that - all fields including stmt_to_insert are swapped. - - 2016-05-30 Jan Hubicka - - * predict.h (force_edge_cold): Declare. - * predict.c (force_edge_cold): New function. - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Fix profile - updating. - (canonicalize_loop_induction_variables): Fix formating. - - 2016-05-30 Eric Botcazou - - * config/visium/visium.c (visium_split_double_add): Minor tweaks. - (visium_expand_copysign): Use gen_int_mode directly. - (visium_compute_frame_size): Minor tweaks. - - 2016-05-30 Jan Hubicka - - * tree-vect-loop.c (vect_analyze_loop_2): Use - likely_max_stmt_executions_int. - - 2016-05-30 Tom de Vries - - PR tree-optimization/69067 - * graphite-isl-ast-to-gimple.c (get_def_bb_for_const): Remove assert. - - 2016-05-29 Uros Bizjak - - PR target/71245 - * config/i386/sync.md (define_peephole2 atomic_storedi_fpu): - New peepholes to remove unneeded fild/fistp pairs. - (define_peephole2 atomic_loaddi_fpu): Ditto. - - 2016-05-27 Jan Hubicka - - * predict.c (maybe_hot_frequency_p): Avoid division. - - 2016-05-28 Gerald Pfeifer - - * doc/install.texi: Use https for shop.fsf.org. - - 2016-05-27 Jan Hubicka - - * tree-ssa-loop-ivopts.c (estimated_stmt_executions_int): Use - likely_max_stmt_executions_int. - - 2016-05-27 Jan Hubicka - - * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use - likely_max_stmt_executions_int. - - 2016-05-27 Jan Hubicka - - * profile.c (compute_branch_probabilities): Do not report hitrates - here. - (branch_prob): Report hitrates here. - * predict.c (gimple_predict_edge): Do not assert profile status; - fix formatting issues. - - 2016-05-27 Jan Hubicka - - * predict.c (edge_predicted_by_p): New function. - (predict_paths_for_bb): Do not put multiple predictions of the same type - on one edge. - - 2016-05-27 Jan Hubicka - - * tree-ssa-loop-niter.c (number_of_iterations_exit): Revert accidental - commit. - - 2016-05-28 Alan Modra - - * dominance.c (verify_dominators): Don't segfault on NULL imm_bb. - - 2016-05-28 Alan Modra - - PR rtl-optimization/71275 - * ira.c (ira): Free dominance info. - - 2016-05-27 Gerald Pfeifer - - * doc/sourcebuild.texi: New address for upstream Go repository. - - 2016-05-27 Thomas Preud'homme - - * config/arm/arm.h (TARGET_ARM_V6M): Remove. - (TARGET_ARM_V7M): Likewise. - - 2016-05-26 Jeff Law - - * tree-ssa-threadedge.c: Remove include of tree-ssa-threadbackward.h. - (thread_across_edge): Remove calls to find_jump_threads_backwards. - * passes.def: Add jump threading passes before DOM/VRP. - * tree-ssa-threadbackward.c (find_jump_threads_backwards): Change - argument to a basic block from an edge. Remove tests which are - handled elsewhere. - (pass_data_thread_jumps, class pass_thread_jumps): New. - (pass_thread_jumps::gate, pass_thread_jumps::execute): New. - (make_pass_thread_jumps): Likewise. - * tree-pass.h (make_pass_thread_jumps): Declare. - - 2016-05-27 Eric Botcazou - - * config/visium/visium-protos.h (split_double_move): Rename into... - (visium_split_double_move): ...this. - (visium_split_double_add): Declare. - * config/visium/visium.c (split_double_move): Rename into... - (visium_split_double_move): ...this. - (visium_split_double_add): New function. - (visium_expand_copysign): Renumber operands for consistency. - * config/visium/visium.md (DImode move splitter): Adjust to renaming. - (DFmode move splitter): Likewise. - (*addi3_insn): Split by means of visium_split_double_add. - (*adddi3_insn_flags): Delete. - (*plus_plus_sltu): New insn. - (*subdi3_insn): Split by means of visium_split_double_add. - (subdi3_insn_flags): Delete. - (*minus_minus_sltu): New insn. - (*negdi2_insn): Split by means of visium_split_double_add. - (*negdi2_insn_flags): Delete. - - 2016-05-27 Ulrich Weigand - - * configure.ac: Treat a --with-headers option without argument - the same as the default (i.e. consult sys-include directory). - * configure: Regenerate. - - 2016-05-27 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_fusion_enabled_p): New function. - * config/aarch64/aarch64-protos.h (aarch64_fusion_enabled_p): Declare - prototype. - * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi): - Add "=w,0" alternative. Enable it when AES/AESMC fusion is enabled. - - 2016-05-27 Jiong Wang - - PR target/63596 - * config/aarch64/aarch64.c (aarch64_expand_builtin_va_start): Honor - tree-stdarg analysis results. - (aarch64_setup_incoming_varargs): Likewise. - - 2016-05-27 Jiong Wang - - * config/aarch64/aarch64.c (aarch64_build_builtin_va_list): Initialize - va_list_gpr_counter_field and va_list_fpr_counter_field. - - 2016-05-27 Wilco Dijkstra - - PR67609 - * config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Remove. - * config/aarch64/aarch64.c - (aarch64_cannot_change_mode_class): Remove function. - * config/aarch64/aarch64-protos.h - (aarch64_cannot_change_mode_class): Remove. - - 2016-05-27 Jan Hubicka - - * cfgloop.c (record_niter_bound): Record likely upper bounds. - (likely_max_stmt_executions_int, get_likely_max_loop_iterations, - get_likely_max_loop_iterations_int): New. - * cfgloop.h (struct loop): Add nb_iterations_likely_upper_bound, - any_likely_upper_bound. - (get_likely_max_loop_iterations_int, get_likely_max_loop_iterations): - Declare. - * cfgloopmanip.c (copy_loop_info): Copy likely upper bounds. - * loop-unroll.c (unroll_loop_constant_iterations): Update likely - upper bound. - (unroll_loop_constant_iterations): Likewise. - (unroll_loop_runtime_iterations): Likewise. - * lto-streamer-in.c (input_cfg): Stream likely upper bounds. - * lto-streamer-out.c (output_cfg): Likewise. - * tree-ssa-loop-ivcanon.c (try_peel_loop): Update likely upper - bounds. - (canonicalize_loop_induction_variables): Dump likely upper bounds. - * tree-ssa-loop-niter.c (record_estimate): Record likely upper bounds. - (likely_max_loop_iterations): New. - (likely_max_loop_iterations_int): New. - (likely_max_stmt_executions): New. - * tree-ssa-loop-niter.h (likely_max_loop_iterations, - likely_max_loop_iterations_int, likely_max_stmt_executions_int, - likely_max_stmt_executions): Declare. - - 2016-05-27 Marek Polacek - - PR middle-end/71308 - * gimple-fold.c (gimple_fold_call): Check that LHS is not null. - - 2016-05-27 Andreas Krebbel - - * config/s390/s390.md (2x risbg splitters): Use - reg_overlap_mentioned_p instead of rtx_equal_p. - - 2016-05-27 Dominik Vogt - - * combine.c (make_compound_operation): Take known zero bits into - account when checking for possible zero_extend. - - 2016-05-27 Kyrylo Tkachov - - * config/aarch64/aarch64.md (ashl3, SHORT modes): - Use const_int_operand for operand 2 predicate. Simplify expand code - as a result. - - 2016-05-27 Ilya Enkovich - - PR middle-end/71279 - * fold-const.c (fold_ternary_loc): Don't fold VEC_COND_EXPR - into comparison. - - 2016-05-27 Kyrylo Tkachov - - * config/aarch64/aarch64-modes.def (CC_ZESWP, CC_SESWP): Delete. - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Remove condition - that returns CC_SESWPmode and CC_ZESWPmode. - (aarch64_get_condition_code_1): Remove handling of CC_SESWPmode - and CC_SESWPmode. - (aarch64_rtx_costs): Likewise. - - 2016-05-26 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_emit_p9_fp_minmax): New function - for ISA 3.0 min/max support. - (rs6000_emit_p9_fp_cmove): New function for ISA 3.0 floating point - conditional move support. - (rs6000_emit_cmove): Call rs6000_emit_p9_fp_minmax and - rs6000_emit_p9_fp_cmove if the ISA 3.0 instructions are - available. - * config/rs6000/rs6000.md (SFDF2): New iterator to allow doing - conditional moves where the comparison type is different from move - type. - (fp_minmax): New code iterator for smin/smax. - (minmax): New code attributes for min/max. - (SMINMAX): Likewise. - (smax3): Combine min, max insns into one insn using the - fp_minmax code iterator. Add support for ISA 3.0 min/max - instructions that don't need -ffast-math. - (s3): Likewise. - (smax3_vsx): Likewise. - (smin3): Likewise. - (s3_vsx): Likewise. - (smin3_vsx): Likewise. - (pre-VSX min/max splitters): Likewise. - (s3_fpr): Likewise. - (movsfcc): Rewrite floating point conditional moves to combine - SFmode/DFmode into a single insn. - (movcc): Likewise. - (movdfcc): Likewise. - (fselsfsf4): Combine FSEL cases into a single insn, using SFDF and - SFDF2 iterators to handle all combinations. - (fseldfsf4): Likewise. - (fsel4): Likewise. - (fseldfdf4): Likewise. - (fselsfdf4): Likewise. - (movcc_p9): Add support for the ISA 3.0 - comparison instructions that set a 0/-1 mask, and use it for - floating point conditional move via XXSEL. - (fpmask): Likewise. - (xxsel): Likewise. - * config/rs6000/predicates.md (min_max_operator): Delete, no - longer used. - (fpmask_comparison_operaton): New insn for ISA 3.0 comparison - instructions that generate a 0/-1 mask for use with XXSEL. - * config/rs6000/rs6000.h (TARGET_MINMAX_SF): New helper macros to - say whether floating point min/max is available, either through - FSEL, ISA 2.06 min/max, and ISA 3.0 min/max instrucitons. - (TARGET_MINMAX_DF): Likewise. - - 2016-05-27 Alan Modra - - PR rtl-optimization/71275 - * ira.c (ira): Call loop_optimizer_init to set up bb_loop_depth - for update_equiv_regs and combine_and_move_insns. - - 2016-05-26 Uros Bizjak - - * config/i386/i386.md (*movqi_internal) : Use - if_then_else or cond RTXes to calculate attribute value. - * config/i386/mmx.md (*vec_extractv2sf_1) : Ditto. - : Ditto. - (*vec_extractv2sf_1) : Ditto. - * config/i386/sse.md (sse_loadlps) : Ditto. - (*vec_concatv2sf_sse4_1) : Ditto. - : Ditto. - : Ditto. - : Ditto. - : Ditto. - : Ditto. - (vec_set_0) : Ditto. - : Ditto. - : Ditto. - : Ditto. - (*vec_interleave_highv2df) : Ditto. - (*vec_interleave_lowv2df) : Ditto. - (sse2_storelpd) : Ditto. - (sse2_loadhpd) : Ditto. - (sse2_loadlpd) : Ditto. - : Ditto. - : Ditto. - (sse2_movsd) : Ditto. - : Ditto. - (vec_concatv2df) : Ditto. - : Ditto. - (*vec_extractv4si) : Ditto. - (*vec_extractv2di_1) : Ditto. - : Ditto. - : Ditto. - : Ditto. - : Ditto. - (*vec_concatv2si_sse4_1) : Ditto. - : Ditto. - : Ditto. - (vec_concatv2di) : Ditto. - : Ditto. - : Ditto. - : Ditto. - - 2016-05-26 Martin Liska - - * tree-ssa-loop-ivopts.c (comp_cost::infinite_cost_p): New - function. - (operator+): Likewise. - (operator-): Likewise. - (comp_cost::operator+=): Likewise. - (comp_cost::operator-=): Likewise. - (comp_cost::operator/=): Likewise. - (comp_cost::operator*=): Likewise. - (operator<): Likewise. - (operator==): Likewise. - (operator<=): Likewise. - (new_cost): Remove. - (infinite_cost_p): Likewise. - (add_costs): Likewise. - (sub_costs): Likewise. - (compare_costs): Likewise. - (set_group_iv_cost): Use the newly introduced functions. - (get_address_cost): Likewise. - (get_shiftadd_cost): Likewise. - (force_expr_to_var_cost): Likewise. - (split_address_cost): Likewise. - (ptr_difference_cost): Likewise. - (difference_cost): Likewise. - (get_computation_cost_at): Likewise. - (determine_group_iv_cost_generic): Likewise. - (determine_group_iv_cost_address): Likewise. - (determine_group_iv_cost_cond): Likewise. - (autoinc_possible_for_pair): Likewise. - (determine_group_iv_costs): Likewise. - (cheaper_cost_pair): Likewise. - (iv_ca_recount_cost): Likewise. - (iv_ca_set_no_cp): Likewise. - (iv_ca_set_cp): Likewise. - (iv_ca_cost): Likewise. - (iv_ca_new): Likewise. - (iv_ca_dump): Likewise. - (iv_ca_narrow): Likewise. - (iv_ca_prune): Likewise. - (iv_ca_replace): Likewise. - (try_add_cand_for): Likewise. - (try_improve_iv_set): Likewise. - (find_optimal_iv_set): Likewise. - - 2016-05-26 Richard Sandiford - - * tree-ssa-loop-ivopts.c (loop_body_includes_call): Don't assume - that internal functions will clobber all caller-saved registers. - - 2016-05-26 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_case_values_threshold): - Return a better case_values_threshold when optimizing. - - 2016-05-26 Wilco Dijkstra - - * config/aarch64/aarch64-simd.md (aarch64_combinez): - Add ? to integer variant. - (aarch64_combinez_be): Likewise. - - 2016-05-26 Jakub Jelinek - - * config/i386/sse.md (*vcvtps2ph_store): Use v constraint - instead of x constraint. - (vcvtps2ph256): Likewise. - - * config/i386/sse.md (*ssse3_palignr_perm): Add avx512bw - alternative. Formatting fix. - - * config/i386/sse.md - (avx512vl_shuf_32x4_1): Rename - to ... - (avx512vl_shuf_32x4_1): ... this. - (*avx_vperm_broadcast_v4sf): Use v constraint instead of x. Use - maybe_evex prefix instead of vex. - (*avx_vperm_broadcast_): Use v constraint instead of x. Handle - EXT_REX_SSE_REG_P (op0) case in the splitter. - - 2016-05-25 Jeff Law - - PR tree-optimization/71272 - * tree-ssa-threadbackward.c (convert_and_register_jump_thread_path): - Update comments. Add test for empty path. - - 2016-05-25 Bill Seurer - - * config/rs6000/altivec.h (vec_cmpne): Add #define for vec_cmpne. - * config/rs6000/rs6000-builtin.def (vec_cmpne): Add vec_cmpne as a - special case builtin. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add - code for ALTIVEC_BUILTIN_VEC_CMPNE. - * config/rs6000/rs6000.c (altivec_init_builtins): Add definition - for __builtin_vec_cmpne. - - 2016-05-25 Eric Botcazou - - * tree-ssa-phiopt.c (factor_out_conditional_conversion): Remove - redundant test and bail out if the type of the new operand is not - a GIMPLE register type after stripping a VIEW_CONVERT_EXPR. - - 2016-05-25 Uros Bizjak - - * config/i386/i386.opt (ix86_target_flags_explicit): Remove. - (x_ix86_target_flags_explicit): Remove. - * config/i386/i386.c (ix86_function_specific_save): Do not copy - x_ix86_target_flags_explicit. - (ix86_function_specific_restore): Ditto. - - 2016-05-25 Uros Bizjak - H.J. Lu - - PR target/70738 - * common/config/i386/i386-common.c - (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): New. - (ix86_handle_option) : Disable - MPX, MMX, SSE and x87 instructions for -mgeneral-regs-only. - * config/i386/i386.opt (ix86_target_flags): Add new Variable. - (-mgeneral-regs-only): Add new option. - * config/i386/i386.c (ix86_option_override_internal): Don't enable - x87 instructions if only general registers are allowed. - (ix86_target_string): Add ix86_flags argument. Handle additional - flags options through ix86_flags argument. Update all callers. - * doc/invoke.texi (x86 Options): Document -mgeneral-regs-only. - - 2016-05-25 Kyrylo Tkachov - - PR rtl-optimization/66940 - * ifcvt.c (noce_get_alt_condition): Check that incrementing or - decrementing desired_val will not overflow before performing these - operations. - - 2016-05-25 Ilya Verbin - - * config/i386/i386-builtin-types.def: Add V16SI_FTYPE_V16SF, - V8DF_FTYPE_V8DF_ROUND, V16SF_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF_ROUND. - * config/i386/i386.c (enum ix86_builtins): Add - IX86_BUILTIN_CVTPS2DQ512_MASK, IX86_BUILTIN_FLOORPS512, - IX86_BUILTIN_FLOORPD512, IX86_BUILTIN_CEILPS512, IX86_BUILTIN_CEILPD512, - IX86_BUILTIN_TRUNCPS512, IX86_BUILTIN_TRUNCPD512, - IX86_BUILTIN_CVTPS2DQ512, IX86_BUILTIN_VEC_PACK_SFIX512, - IX86_BUILTIN_FLOORPS_SFIX512, IX86_BUILTIN_CEILPS_SFIX512, - IX86_BUILTIN_ROUNDPS_AZ_SFIX512. - (builtin_description bdesc_args): Add __builtin_ia32_floorps512, - __builtin_ia32_ceilps512, __builtin_ia32_truncps512, - __builtin_ia32_floorpd512, __builtin_ia32_ceilpd512, - __builtin_ia32_truncpd512, __builtin_ia32_cvtps2dq512, - __builtin_ia32_vec_pack_sfix512, __builtin_ia32_roundps_az_sfix512, - __builtin_ia32_floorps_sfix512, __builtin_ia32_ceilps_sfix512. - Change IX86_BUILTIN_CVTPS2DQ512 to IX86_BUILTIN_CVTPS2DQ512_MASK for - __builtin_ia32_cvtps2dq512_mask. - (ix86_expand_args_builtin): Handle V8DF_FTYPE_V8DF_ROUND, - V16SF_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF. - (ix86_builtin_vectorized_function): Handle builtins mentioned above. - * config/i386/sse.md - (avx512f_fix_notruncv16sfv16si): - Rename to ... - (avx512f_fix_notruncv16sfv16si): ... this. - (avx512f_cvtpd2dq512): Rename - to ... - (avx512f_cvtpd2dq512): ... this. - (avx512f_vec_pack_sfix_v8df): New define_expand. - (avx512f_roundpd512): Rename to ... - (avx512f_round512): ... this. Change iterator. - (avx512f_roundps512_sfix): New define_expand. - (round2_sfix): Change iterator. - - 2016-05-25 Nick Clifton - - * config/msp430/msp430.c (msp430_attr): Produce an error if a - static interrupt handler is detected. - * config/msp430/msp430.h (LIB_SPEC): Do not use msp430.ld as the - default linker script. - * config/msp430/msp430.md (movpsihi2_lo): New pattern for loading - the low part of a symbolic pointer. - - 2016-05-25 Richard Biener - - PR tree-optimization/71261 - * tree-if-conv.c (ifcvt_split_def_stmt): Walk uses on the - interesting stmt instead of immediate uses when looking - for the use operand to replace. - - 2016-05-25 Martin Liska - - * ipa-inline.c (edge_badness): Use 'w/' instead of 'w'. - - 2016-05-25 Richard Biener - - PR tree-optimization/71264 - * tree-vect-stmts.c (vect_init_vector): Properly deal with - vector type val. - - 2016-05-25 Martin Liska - - PR tree-optimization/71239 - * tree.c (array_at_struct_end_p): Do not call operand_equal_p - if DECL_SIZE is NULL. - - 2016-05-25 Richard Biener - - * timevar.def (TV_TREE_LOOP_IFCVT): Add. - * tree-if-conv.c (pass_data_if_conversion): Use it. - - 2016-05-25 Bernd Edlinger - - * cgraph.c (cgraph_node::get_availability): Fix typo in comment. - * symtab.c (symtab_node::binds_to_current_def_p): Likewise. - * varpool.c (varpool_node::get_availability): Likewise. - - 2016-05-24 Michael Meissner - - * config/rs6000/altivec.md (VNEG iterator): New iterator for - VNEGW/VNEGD instructions. - (p9_neg2): New insns for ISA 3.0 VNEGW/VNEGD. - (neg2): Add expander for V2DImode added in ISA 2.07, and - support for ISA 3.0 VNEGW/VNEGD instructions. - - 2016-05-24 Cesar Philippidis - - * gimplify.c (omp_notice_variable): Use zero-length arrays for data - pointers inside OACC_DATA regions. - (gimplify_scan_omp_clauses): Prune firstprivate clause associated - with OACC_DATA, OACC_ENTER_DATA and OACC_EXIT data regions. - (gimplify_adjust_omp_clauses): Fix typo in comment. - - 2016-05-24 Michael Meissner - - * config/rs6000/altivec.md (VParity): New mode iterator for vector - parity built-in functions. - (p9v_ctz2): Add support for ISA 3.0 vector count trailing - zeros. - (p9v_parity2): Likewise. - * config/rs6000/vector.md (VEC_IP): New mode iterator for vector - parity. - (ctz2): ISA 3.0 expander for vector count trailing zeros. - (parity2): ISA 3.0 expander for vector parity. - * config/rs6000/rs6000-builtin.def (BU_P9_MISC_1): New macros for - power9 built-ins. - (BU_P9_64BIT_MISC_0): Likewise. - (BU_P9_MISC_0): Likewise. - (BU_P9V_AV_1): Likewise. - (BU_P9V_AV_2): Likewise. - (BU_P9V_AV_3): Likewise. - (BU_P9V_AV_P): Likewise. - (BU_P9V_VSX_1): Likewise. - (BU_P9V_OVERLOAD_1): Likewise. - (BU_P9V_OVERLOAD_2): Likewise. - (BU_P9V_OVERLOAD_3): Likewise. - (VCTZB): Add vector count trailing zeros support. - (VCTZH): Likewise. - (VCTZW): Likewise. - (VCTZD): Likewise. - (VPRTYBD): Add vector parity support. - (VPRTYBQ): Likewise. - (VPRTYBW): Likewise. - (VCTZ): Add overloaded vector count trailing zeros support. - (VPRTYB): Add overloaded vector parity support. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - overloaded vector count trailing zeros and parity instructions. - * config/rs6000/rs6000.md (wd mode attribute): Add V1TI and TI for - vector parity support. - * config/rs6000/altivec.h (vec_vctz): Add ISA 3.0 vector count - trailing zeros support. - (vec_cntlz): Likewise. - (vec_vctzb): Likewise. - (vec_vctzd): Likewise. - (vec_vctzh): Likewise. - (vec_vctzw): Likewise. - (vec_vprtyb): Add ISA 3.0 vector parity support. - (vec_vprtybd): Likewise. - (vec_vprtybw): Likewise. - (vec_vprtybq): Likewise. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document - the ISA 3.0 vector count trailing zeros and vector parity built-in - functions. - - 2016-05-24 Kugan Vivekanandarajah - - * tree-ssa-reassoc.c (sort_by_operand_rank): Skip checking gimple_bb - when there is stmt_to_insert. - - 2016-05-24 Martin Sebor - - PR c++/71147 - * tree.h (complete_or_array_type_p): New inline function. - - 2016-05-24 Jakub Jelinek - - * config/i386/i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define. - * config/i386/constraints.md (Yr): Test TARGET_AVOID_4BYTE_PREFIXES - rather than X86_TUNE_AVOID_4BYTE_PREFIXES. - - * config/i386/sse.md (_round): - Limit 1st alternative to noavx isa, split 2nd alternative into one - noavx and one avx alternative, use *x and Bm in the former and - x and m in the latter. - - * config/i386/sse.md (vec_set_0): Use sse4_noavx isa instead - of sse4 for the first alternative, drop %v from the template - and d operand modifier. Split second alternative into one sse4_noavx - and one avx alternative, use *x instead of *v in the former and v - instead of *v in the latter. - (*sse4_1_extractps): Use noavx isa instead of * for the first - alternative, drop %v from the template. Split second alternative into - one noavx and one avx alternative, use *x instead of *v in the - former and v instead of *v in the latter. - (_movntdqa): Guard the first 2 alternatives - with noavx and the last one with avx. - (sse4_1_phminposuw): Guard first alternative with noavx isa, - split the second one into one noavx and one avx alternative, - use *x and Bm in the former and x and m in the latter one. - (_ptest): Use noavx instead of * for the first two - alternatives. - - * config/i386/sse.md (sse4_1_v8qiv8hi2): Limit - first two alternatives to noavx, use *x instead of *v in the second - one, add avx alternative without *. - (sse4_1_v4qiv4si2, sse4_1_v4hiv4si2, - sse4_1_v2qiv2di2, sse4_1_v2hiv2di2, - sse4_1_v2siv2di2): Likewise. - - 2016-05-24 Jeff Law - - * tree-ssa-threadbackwards.c (convert_and_register_jump_thread_path): - New function, extracted from... - (fsm_find_control_statement_thread_paths): Here. Use the new function. - Allow simple copies and constant initializations in the SSA chain. - - 2016-05-24 Marek Polacek - - PR c/71249 - * gimplify.c (gimplify_switch_expr): Look into the innermost lexical - scope. - - 2016-05-24 Jakub Jelinek - - PR c++/71257 - * tree-vect-stmts.c (vectorizable_simd_clone_call): Handle - SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP like - SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP. Add - SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP and - SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP cases explicitly. - - 2016-05-24 Richard Biener - - PR tree-optimization/71240 - * tree-ssa-math-opts.c (init_symbolic_number): Verify the source - has integral type. - - 2016-05-24 Richard Biener - - PR tree-optimization/71230 - * tree-ssa-reassoc.c (zero_one_operation): Handle negate special ops. - - 2016-05-24 Richard Sandiford - - * tree-vectorizer.h (vectorizable_comparison): Delete. - * tree-vect-loop.c (vectorizable_reduction): Remove redundant - PURE_SLP_STMT check. - * tree-vect-stmts.c (vectorizable_call): Likewise. - (vectorizable_simd_clone_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_load): Likewise. - (vectorizable_condition): Likewise. - (vectorizable_store): Likewise. Assert that we don't have - hybrid SLP. - (vectorizable_comparison): Make static. Remove redundant - PURE_SLP_STMT check. - (vect_transform_stmt): Assert that we always have an slp_node - if PURE_SLP_STMT. - - 2016-05-24 Kyrylo Tkachov - - * config/arm/neon.md (ashldi3_neon): Replace comparison of INTVAL of - operands[2] against 1 with comparison against CONST1_RTX. - (di3_neon): Likewise. - * config/arm/predicates.md (const0_operand): Replace with comparison - against CONST0_RTX. - - 2016-05-24 Kyrylo Tkachov - - * config/arm/arm.md (ashldi3): Replace comparison of INTVAL of - operands[2] against 1 with comparison against CONST1_RTX. - (ashrdi3): Likewise. - (lshrdi3): Likewise. - (ashlsi3): Replace cast of INTVAL to unsigned HOST_WIDE_INT with - UINTVAL. - (ashrsi3): Likewise. - (lshrsi3): Likewise. - (rotrsi3): Likewise. - (define_split above *compareqi_eq0): Likewise. - (define_split above "prologue"): Likewise. - * config/arm/arm.c (thumb1_size_rtx_costs): Likewise. - * config/arm/predicates.md (shift_operator): Likewise. - (shift_nomul_operator): Likewise. - (sat_shift_operator): Likewise. - (thumb1_cmp_operand): Likewise. - (const_neon_scalar_shift_amount_operand): Replace manual range - check with IN_RANGE. - * config/arm/thumb1.md (define_peephole2 above *thumb_subdi3): - Replace cast of INTVAL to unsigned HOST_WIDE_INT with UINTVAL. - - 2016-05-24 Kyrylo Tkachov - - * config/arm/arm.md (andsi3): Replace cast of 1 to HOST_WIDE_INT - with HOST_WIDE_INT_1. - (insv): Likewise. - * config/arm/arm.c (optimal_immediate_sequence): Replace cast of - 1 to unsigned HOST_WIDE_INT with HOST_WIDE_INT_1U. - (arm_canonicalize_comparison): Likewise. - (thumb1_rtx_costs): Replace cast of 1 to HOST_WIDE_INT with - HOST_WIDE_INT_1. - (thumb1_size_rtx_costs): Likewise. - (vfp_const_double_index): Replace cast of 1 to unsigned - HOST_WIDE_INT with HOST_WIDE_INT_1U. - (get_jump_table_size): Replace cast of 1 to HOST_WIDE_INT with - HOST_WIDE_INT_1. - (arm_asan_shadow_offset): Replace cast of 1 to unsigned - HOST_WIDE_INT with HOST_WIDE_INT_1U. - * config/arm/neon.md (vec_set): Replace cast of 1 to - HOST_WIDE_INT with HOST_WIDE_INT_1. - - 2016-05-24 Marek Polacek - - * tree-cfg.h (should_remove_lhs_p): New predicate. - * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Use it. - * gimplify.c (gimplify_modify_expr): Likewise. - * tree-cfg.c (verify_gimple_call): Likewise. - * tree-cfgcleanup.c (fixup_noreturn_call): Likewise. - * gimple-fold.c: Include "tree-cfg.h". - (gimple_fold_call): Use should_remove_lhs_p. - - 2016-05-24 Richard Biener - - PR tree-optimization/71253 - * cfganal.h (control_dependences): Make robust against edge - and BB removal. - (control_dependences::control_dependences): Remove edge_list argument. - (control_dependences::get_edge): Remove. - (control_dependences::get_edge_src): Add. - (control_dependences::get_edge_dest): Likewise. - (control_dependences::m_el): Make a vector of edge src/dest index. - * cfganal.c (control_dependences::find_control_dependence): Adjust. - (control_dependences::control_dependences): Likewise. - (control_dependences::~control_dependence): Likewise. - (control_dependences::get_edge): Remove. - (control_dependences::get_edge_src): Add. - (control_dependences::get_edge_dest): Likewise. - * tree-ssa-dce.c (mark_control_dependent_edges_necessary): Use - get_edge_src. - (perform_tree_ssa_dce): Adjust. - * tree-loop-distribution.c (create_edge_for_control_dependence): Use - get_edge_src. - (pass_loop_distribution::execute): Adjust. Do loop destroying - conditional on changed. - - 2016-05-24 Kyrylo Tkachov - - PR target/69857 - * config/arm/arm.c (gen_operands_ldrd_strd): Remove bogus early - return. Reindent transformation comment and mention the ARM state - behavior. - - 2016-05-24 Kugan Vivekanandarajah - - PR middle-end/71252 - * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Add stmt_to_insert - after build_and_add_sum creates new use stmt. - - 2016-05-24 Richard Sandiford - - * tree-vect-stmts.c (vectorizable_load): Reorder checks so that - load_lanes/grouped_load classification comes first. Don't check - whether the vectorization factor is a multiple of the group size - for load_lanes. - - 2016-05-24 Richard Sandiford - - * tree-vect-data-refs.c (vect_analyze_group_access_1): Set - GROUP_GAP for single-element interleaving. - * tree-vect-stmts.c (vectorizable_load): Remove force_peeling - variable. - - 2016-05-24 Richard Biener - - PR middle-end/70434 - PR c/69504 - * tree-ssa.c (non_rewritable_mem_ref_base): Make sure to mark - bases which are accessed with non-invariant indices. - * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Re-write - constant index ARRAY_REFs of vectors into BIT_FIELD_REFs. - - 2016-05-24 Kugan Vivekanandarajah - - PR middle-end/71170 - * tree-ssa-reassoc.c (struct operand_entry): Add field stmt_to_insert. - (add_to_ops_vec): Add stmt_to_insert. - (add_repeat_to_ops_vec): Init stmt_to_insert. - (insert_stmt_before_use): New. - (transform_add_to_multiply): Remove mult_stmt insertion and add it - to ops vector. - (get_ops): Init stmt_to_insert. - (maybe_optimize_range_tests): Likewise. - (rewrite_expr_tree): Insert stmt_to_insert before use stmt. - (rewrite_expr_tree_parallel): Likewise. - (reassociate_bb): Likewise. - - 2016-05-23 Michael Meissner - - PR target/71201 - * config/rs6000/altivec.md (altivec_vperm__internal): Drop - ISA 3.0 xxperm fusion alternative. - (altivec_vperm_v8hiv16qi): Likewise. - (altivec_vperm__uns_internal): Likewise. - (vperm_v8hiv4si): Likewise. - (vperm_v16qiv8hi): Likewise. - - 2016-05-23 Michael Meissner - Kelvin Nilsen - - * config/rs6000/rs6000.c (rs6000_expand_vector_set): Generate - vpermr/xxpermr on ISA 3.0. - (altivec_expand_vec_perm_le): Likewise. - * config/rs6000/altivec.md (UNSPEC_VPERMR): New unspec. - (altivec_vpermr__internal): Add VPERMR/XXPERMR support for - ISA 3.0. - - 2016-05-23 Uros Bizjak - - * config/i386/i386.h (IS_STACK_MODE): Enable for - TARGET_MIX_SSE_I387. Rewrite using X87_FLOAT_MODE_P and - SSE_FLOAT_MODE_P macros. - * config/i386/i386.c (ix86_preferred_reload_class): Use - IS_STACK_MODE, INTEGER_CLASS_P, FLOAT_CLASS_P and Q_CLASS_P macros. - Cleanup regclass processing for CONST_DOUBLE_P. - (ix86_preferred_output_reload_class): Use IS_STACK_MODE macro. - (ix86_rtx_costs): Remove redundant TARGET_80387 check - with IS_STACK_MODE macro. - * config/i386/i386.md: Replace SSE_FLOAT_MODE_P (DFmode) - with TARGET_SSE2. - (*movdf_internal): Use IS_STACK_MODE macro. - (*movsf_internal): Ditto. - - 2016-05-23 Marc Glisse - - * match.pd (a * (1 << b), ~x & ~y, ~X ^ ~Y, (X ^ Y) ^ Y, ~ (-A), - ~ (A - 1), ~(~X >> Y), ~(~X >>r Y)): Relax constraints. - - 2016-05-23 Jeff Law - - * tree-ssa-threadbackward.c (profitable_jump_thread_path): New function - extracted from ... - (fsm_find_control_statement_thread_paths): Call it. - - 2016-05-23 Martin Jambor - - PR ipa/71234 - * ipa-cp.c (ipa_get_indirect_edge_target_1): Only check value of - from_global_constant if t is not NULL. - - 2016-05-23 Marek Polacek - - PR c/49859 - * common.opt (Wswitch-unreachable): New option. - * doc/invoke.texi: Document -Wswitch-unreachable. - * gimplify.c (gimplify_switch_expr): Implement the -Wswitch-unreachable - warning. - - 2016-05-23 Bin Cheng - - * tree-ssa-address.c (copy_ref_info): Check NULL TMR_STEP when - TMR_INDEX is non-NULL. - - 2016-05-23 Richard Biener - - PR tree-optimization/71230 - * tree-ssa-reassoc.c (acceptable_pow_call): Move initial condition... - (try_special_add_to_ops): ... here. Always test for single-use. - - 2016-05-23 Martin Jambor - - * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Create an empty - default block if a PHI node in the original one would be resized. - - 2016-05-23 Venkataramanan Kumar - - PR tree-optimization/58135 - * tree-vect-slp.c: When group size is not multiple - of vector size, allow splitting of store group at - vector boundary. - - 2016-05-23 Christophe Lyon - - * config/arm/arm_neon.h (vtst_p16, vtstq_p16): New. - - 2016-05-22 Jakub Jelinek - - * config/i386/sse.md (vec_set_lo_, - vec_set_hi_): Add && - condition. For !TARGET_AVX512DQ, emit 32x4 instruction instead - of 64x2. - - * config/i386/sse.md (vec_set_lo_v16hi, vec_set_hi_v16hi, - vec_set_lo_v32qi, vec_set_hi_v32qi): Add alternative with - v constraint instead of x and vinserti32x4 insn. - - * config/i386/sse.md (i128vldq): New mode iterator. - (avx2_vbroadcasti128_, avx_vbroadcastf128_): Add - avx512dq and avx512vl alternatives. - - * config/i386/sse.md (avx2_vec_dupv4df): Use v instead of x - constraint, use maybe_evex prefix instead of vex. - (vec_dupv4sf): Use v constraint instead of x for output - operand except for noavx alternative, use Yv constraint - instead of x for input. Use maybe_evex prefix instead of vex. - (*vec_dupv4si): Likewise. - (*vec_dupv2di): Likewise. - - 2016-05-22 Kugan Vivekanandarajah - - PR middle-end/40921 - * tree-ssa-reassoc.c (try_special_add_to_ops): New. - (linearize_expr_tree): Call try_special_add_to_ops. - (reassociate_bb): Convert MULT_EXPR by (-1) to NEGATE_EXPR. - - 2016-05-21 Senthil Kumar Selvaraj - - * config/avr/avr.c (avr_expand_prologue): Add INCOMING_FRAME_SP_OFFSET - to computed stack_usage. - - 2016-05-21 Pitchumani Sivanupandi - - PR target/71103 - * config/avr/avr.md (define_expand "mov"): If the source - operand is subreg (symbol_ref) then move the symbol ref to register. - - 2016-05-21 Jan Hubicka - - * tree.c (array_at_struct_end_p): Look through MEM_REF. - - 2016-05-21 Kugan Vivekanandarajah - - PR middle-end/71179 - * tree-ssa-reassoc.c (transform_add_to_multiply): Disallow float - VECTOR type. - - 2016-05-20 Eric Botcazou - - * tree-vrp.c (compare_values_warnv): Simplify handling of symbolic - ranges by calling get_single_symbol and tidy up. Look more closely - into NAME + CST1 vs CST2 comparisons if type overflow is undefined. - - 2016-05-20 Jeff Law - - * bitmap.c (bitmap_find_bit): Remove useless test. - - 2016-05-20 Segher Boessenkool - - * function.c (thread_prologue_and_epilogue_insns): Commit the - insertion of the epilogue. - - 2016-05-20 Martin Jambor - - PR tree-optimization/70884 - * tree-sra.c (initialize_constant_pool_replacements): Do not check - should_scalarize_away_bitmap and cannot_scalarize_away_bitmap bits. - (sort_and_splice_var_accesses): Do not consider multiple scalar reads - of constant pool data as a reason for scalarization. - - 2016-05-20 Eric Botcazou - - * config/arm/arm.c (arm_expand_prologue): Set the stack usage to 0 - for naked functions. - (thumb1_expand_prologue): Likewise. - - 2016-05-20 Nathan Sidwell - - * config/nvptx/nptx.c (nvptx_option_override): Only set - flag_toplevel_reorder, if not explicitly specified. Set - flag_no_common, unless explicitly specified. - - 2016-05-20 David Malcolm - - * calls.c (can_implement_as_sibling_call_p): Mark param - reg_parm_stack_space with ATTRIBUTE_UNUSED. - - 2016-05-20 Uros Bizjak - - * config/i386/i386.c (ix86_rtx_costs) : - Use IS_STACK_MODE when calculating cost of standard 80387 constants. - Fallthru to CONST_VECTOR case to calculate cost of standard SSE - constants. - : Calculate cost of (MEM (SYMBOL_REF)). - (ix86_legitimate_constant_p): Use CASE_CONST_SCALAR_INT - and CASE_CONST_ANY. - - 2016-05-20 Cesar Philippidis - - * config/nvptx/nvptx.md (sincossf3): New pattern. - - 2016-05-20 David Malcolm - - * calls.c (maybe_complain_about_tail_call): New function. - (initialize_argument_information): Call - maybe_complain_about_tail_call when clearing *may_tailcall. - (can_implement_as_sibling_call_p): Call - maybe_complain_about_tail_call when returning false. - (expand_call): Read CALL_EXPR_MUST_TAIL_CALL and, if set, - ensure try_tail_call is set. Call maybe_complain_about_tail_call - if tail-call optimization fails. - * cfgexpand.c (expand_call_stmt): Initialize - CALL_EXPR_MUST_TAIL_CALL from gimple_call_must_tail_p. - * gimple-pretty-print.c (dump_gimple_call): Dump - gimple_call_must_tail_p. - * gimple.c (gimple_build_call_from_tree): Call - gimple_call_set_must_tail with the value of - CALL_EXPR_MUST_TAIL_CALL. - * gimple.h (enum gf_mask): Add GF_CALL_MUST_TAIL_CALL. - (gimple_call_set_must_tail): New function. - (gimple_call_must_tail_p): New function. - * print-tree.c (print_node): Update printing of TREE_STATIC - to reflect its use for CALL_EXPR_MUST_TAIL_CALL. - * tree-core.h (struct tree_base): Add MUST_TAIL_CALL to the - trailing comment listing applicable flags. - * tree.h (CALL_EXPR_MUST_TAIL_CALL): New macro. - - 2016-05-20 David Malcolm - - * calls.c (expand_call): Move "Rest of purposes for tail call - optimizations to fail" to... - (can_implement_as_sibling_call_p): ...this new function, and - split into multiple "if" statements. - - 2016-05-20 Jan Hubicka - - * cfgloop.h (expected_loop_iterations_unbounded, - expected_loop_iterations): Unconstify. - * cfgloopanal.c (expected_loop_iterations_unbounded): Sanity check the - profile with known upper bound; return 3 when profile is absent. - (expected_loop_iterations): Update. - - 2016-05-20 Jan Hubicka - - * loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int - and get_max_loop_iterations_int. - - 2016-05-20 Jan Hubicka - - * tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can not produce - realistic upper bounds here. - - 2016-05-20 Jakub Jelinek - - PR c++/71210 - * gimple-fold.c (gimple_fold_call): Do not remove lhs of noreturn - calls if the LHS is variable length or has addressable type. - If targets[0]->decl is a noreturn call with void return type and - zero arguments, adjust fntype and remove lhs in that case. - - 2016-05-20 Marc Glisse - - PR tree-optimization/71079 - PR tree-optimization/71206 - * match.pd ((X ^ Y) ^ (X ^ Z)): Convert the arguments. - - 2016-05-20 Prathamesh Kulkarni - - * tree-vectorizer.c (get_vec_alignment_for_decl): New static function. - (get_vec_alignment_for_array_decl): Likewise. - (get_vec_alignment_for_record_decl): Likewise. - (increase_alignment::execute): Move code to find alignment to - get_vec_alignment_for_array_decl and call get_vec_alignment_for_decl. - (type_align_map): New hash_map. - - 2016-05-20 Richard Guenther - - PR tree-optimization/29756 - * tree.def (BIT_INSERT_EXPR): New tcc_expression tree code. - * expr.c (expand_expr_real_2): Handle BIT_INSERT_EXPR. - * fold-const.c (operand_equal_p): Likewise. - (fold_ternary_loc): Add constant folding of BIT_INSERT_EXPR. - * gimplify.c (gimplify_expr): Handle BIT_INSERT_EXPR. - * tree-inline.c (estimate_operator_cost): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-ssa-operands.c (get_expr_operands): Likewise. - * cfgexpand.c (expand_debug_expr): Likewise. - * gimple-pretty-print.c (dump_ternary_rhs): Likewise. - * gimple.c (get_gimple_rhs_num_ops): Handle BIT_INSERT_EXPR. - * tree-cfg.c (verify_gimple_assign_ternary): Verify BIT_INSERT_EXPR. - * tree-ssa.c (non_rewritable_lvalue_p): We can rewrite - vector inserts using BIT_FIELD_REF or MEM_REF on the lhs. - (execute_update_addresses_taken): Do it. - - 2016-05-20 Richard Biener - - PR tree-optimization/71185 - * tree-ssa-loop-prefetch.c (gather_memory_references): Drop - register operations. - - 2016-05-20 Richard Biener - - * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Use - gimple_seq_add_seq_without_update. - (release_bb_predicate): Assert we have no operands to free. - (if_convertible_loop_p_1): Calculate post dominators later. - Do not free BB predicates here. - (combine_blocks): Do not recompute BB predicates. - (version_loop_for_if_conversion): Save BB predicates around - loop versioning. - - 2016-05-19 Segher Boessenkool - - * function.c (make_epilogue_seq): Remove epilogue_end parameter. - (thread_prologue_and_epilogue_insns): Remove bb_flags. Restructure - code. Ignore sibcalls on EDGE_IGNORE edges. - * shrink-wrap.c (handle_simple_exit): New function. Set EDGE_IGNORE - on edges for sibcalls that run without prologue. The rest of the - function is combined from... - (fix_fake_fallthrough_edge): ... this, and ... - (try_shrink_wrapping): ... a part of this. Remove the bb_with - function argument, make it a local variable. - - 2016-05-19 Sandra Loosemore - - * config/i386/cygming.h (DWARF2_UNWIND_INFO): Allow - --disable-sjlj-exceptions for TARGET_BI_ARCH to select DWARF-2 EH - for 32-bit mode and SEH for 64-bit. - * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): Handle - TARGET_64BIT_DEFAULT. - - 2016-05-19 Ryan Burn - - * Makefile.in (GTFILES): Add cilk.h and cilk-common.c. - * gengtype.c (open_base_files): Add cilk.h to ifiles. - - 2016-05-19 Uros Bizjak - - * sched-deps.c (sched_analyze_2) : Also - force pending loads from memory. - - 2016-05-19 Kelvin Nilsen - - * config/rs6000/altivec.md (UNSPEC_DARN): New unspec constant. - (UNSPEC_DARN_32): New unspec constant. - (UNSPEC_DARN_RAW): New unspec constant. - (darn_32): New instruction. - (darn_raw): New instruction. - (darn): New instruction. - * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_0): Add - support and documentation for this macro. - (BU_P9_MISC_1): New macro definition. - (BU_P9_64BIT_MISC_0): New macro definition. - (BU_P9_MISC_0): New macro definition. - (darn_32): New builtin definition. - (darn_raw): New builtin definition. - (darn): New builtin definition. - * config/rs6000/rs6000.c: Add #define RS6000_BUILTIN_0 and #undef - RS6000_BUILTIN_0 directives to surround each occurrence of - #include "rs6000-builtin.def". - (rs6000_builtin_mask_calculate): Add in the RS6000_BTM_MODULO and - RS6000_BTM_64BIT flags to the returned mask, depending on - configuration. - (def_builtin): Correct an error in the assignments made to the - debugging variable attr_string. - (rs6000_expand_builtin): Add support for no-operand built-in - functions. - (builtin_function_type): Remove fatal_error assertion that is no - longer valid. - (rs6000_common_init_builtins): Add support for no-operand built-in - functions. - * config/rs6000/rs6000.h (RS6000_BTM_MODULO): New macro - definition. - (RS6000_BTM_PURE): Enhance comment to clarify intent of this flag - definition. - (RS6000_BTM_64BIT): New macro definition. - * doc/extend.texi: Document __builtin_darn (void), - __builtin_darn_raw (void), and __builtin_darn_32 (void) built-in - functions. - - 2016-05-19 Jan Hubicka - - * tree-vect-loop.c (vect_analyze_loop_2): Use also - max_loop_iterations_int. - - 2016-05-19 Marek Polacek - - PR tree-optimization/71031 - * tree-vrp.c (extract_range_from_binary_expr_1): Turn assert into a - condition and adjust the code a bit. - - 2016-05-19 Martin Liska - - * tree-vect-stmts.c (vectorizable_simd_clone_call): Utilize - auto_vec instead of vec. - - 2016-05-19 Martin Liska - - * tree-parloops.c (oacc_entry_exit_ok): Release a vector. - - 2016-05-19 Martin Liska - - * tree-if-conv.c (ifcvt_repair_bool_pattern): Utilize auto_vecs. - - 2016-05-19 Martin Liska - - * ipa-pure-const.c (set_function_state): Remove an existing - funct_state. - (remove_node_data): Do not free it as it's released - in set_function_state. - - 2016-05-19 Martin Liska - - * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Release - bitmap. - - 2016-05-19 Martin Liska - - * omp-simd-clone.c (simd_clone_adjust): Release vector. - - 2016-05-19 Martin Liska - - * tree-ssa-reassoc.c (eliminate_duplicate_pair): Truncate - an auto_vec instead of re-creating it. - - 2016-05-19 Martin Liska - - * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Use - auto_vec instead of vec. - - 2016-05-19 Martin Liska - - * lto-section-in.c (lto_get_section_data): Call - lto_check_version with additional argument. - * lto-streamer.c (lto_check_version): Add new argument. - * lto-streamer.h (lto_check_version): Likewise. - - 2016-05-19 Kyrylo Tkachov - - * config/arm/arm.c (arm_new_rtx_costs, SIGN_EXTEND case): - Don't add cost of inner memory when handling sign-extended loads. - - 2016-05-19 Ilya Enkovich - - PR rtl-optimization/71148 - * cse.c (cse_main): Free dominance info. - (rest_of_handle_cse): Don't free dominance info. - (rest_of_handle_cse2): Likewise. - (rest_of_handle_cse_after_global_opts): Likewise. - - 2016-05-19 Kyrylo Tkachov - - PR target/71056 - * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Return - NULL_TREE early if NEON is not available. Remove now redundant check - in ARM_CHECK_BUILTIN_MODE. - - 2016-05-19 Maxim Ostapenko - - PR sanitizer/64354 - * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add new - builtin __SANITIZE_THREAD__ macros for fsanitize=thread switch. - * doc/cpp.texi: Document new macros. - - 2016-05-19 Bin Cheng - - PR tree-optimization/69848 - * tree-vect-loop.c (vectorizable_reduction): Don't factor - comparison expr out of VEC_COND_EXPR for COND_REDUCTION. - - 2016-05-19 Segher Boessenkool - - * function.c (thread_prologue_and_epilogue_insn): Move the - "goto epilogue_done" one block later. - - 2016-05-19 Richard Biener - - PR tree-optimization/70729 - * passes.def: Move LIM pass before PRE. Remove no longer - required copyprop and move first DCE out of the loop pipeline. - - 2016-05-18 David Malcolm - - PR driver/69265 - * Makefile.in (GCC_OBJS): Move spellcheck.o to... - (OBJS-libcommon-target): ...here. - * opts-common.c: Include spellcheck.h. - (cmdline_handle_error): Build a vec of valid options and use it - to suggest provide hints for misspelled arguments. - - 2016-05-18 Jakub Jelinek - - PR c++/71100 - * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Don't drop - lhs if it has TREE_ADDRESSABLE type. - - 2016-05-18 Uros Bizjak - - PR target/71145 - * config/alpha/alpha.md (trap): Add (use (reg:DI 29)). - (*exception_receiver_1): Return "#" for TARGET_EXPLICIT_RELOCS. - - 2016-05-18 Martin Jambor - - PR ipa/69708 - * ipa-cp.c (ipa_get_jf_pass_through_result): Allow non-ip constant - input for NOP_EXPR pass-through functions. - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Allow - aggregate global constant VAR_DECLs in constant jump functions. - - 2016-05-18 Martin Jambor - - PR ipa/69708 - * ipa-prop.c (parm_preserved_before_stmt_p): Return true for loads - from TREE_READONLY parameters. - - 2016-05-18 Martin Jambor - - PR ipa/69708 - * cgraph.h (cgraph_indirect_call_info): New field - guaranteed_unmodified. - * ipa-cp.c (ipa_get_indirect_edge_target_1): Also pass parameter value - to ipa_find_agg_cst_for_param, check guaranteed_unmodified when - appropriate. - * ipa-inline-analysis.c (evaluate_conditions_for_known_args): Also - pass the parameter value to ipa_find_agg_cst_for_param. - * ipa-prop.c (ipa_load_from_parm_agg): New parameter - guaranteed_unmodified, store AA results there instead of bailing out - if present. - (ipa_note_param_call): Also initialize guaranteed_unmodified flag. - (ipa_analyze_indirect_call_uses): Also set guaranteed_unmodified flag. - (find_constructor_constant_at_offset): New function. - (ipa_find_agg_cst_from_init): Likewise. - (ipa_find_agg_cst_for_param): Also seearch for aggregate values in - static initializers of contants, report back through a new paameter - from_global_constant if that was the case. - (try_make_edge_direct_simple_call): Also pass parameter value to - ipa_find_agg_cst_for_param, check guaranteed_unmodified when - appropriate. - (ipa_write_indirect_edge_info): Stream new flag guaranteed_unmodified. - (ipa_read_indirect_edge_info): Likewise. - * ipa-prop.h (ipa_find_agg_cst_for_param): Update declaration. - (ipa_load_from_parm_agg): Likewise. - - 2016-05-18 Jiong Wang - - PR rtl-optimization/71150 - * lra-constraint (process_addr_reg): Guard "in_class_p" with REG_P - check. - - 2016-05-18 Michael Meissner - - PR target/70915 - * config/rs6000/constraints.md (wE constraint): New constraint - for a vector constant that can be loaded with XXSPLTIB. - (wM constraint): New constraint for a vector constant of a 1's. - (wS constraint): New constraint for a vector constant that can be - loaded with XXSPLTIB and a vector sign extend instruction. - * config/rs6000/predicates.md (xxspltib_constant_split): New - predicates for wE/wS constraints. - (xxspltib_constant_nosplit): Likewise. - (easy_vector_constant): Add support for constants that can be - loaded via XXSPLTIB. - (all_ones_constant): New predicate for vector constant with all - 1's set. - (splat_input_operand): Add support for ISA 3.0 word splat operations. - * config/rs6000/rs6000.c (xxspltib_constant_p): New function to - return if a constant can be loaded with the ISA 3.0 XXSPLTIB - instruction and possibly with a sign extension. - (output_vec_const_move): Add support for XXSPLTIB. If we are - loading up 0/-1 into Altivec registers, prefer using VSPLTISW - instead of XXLXOR/XXLORC. - (rs6000_expand_vector_init): Add support for ISA 3.0 word splat - operations. - (rs6000_legitimize_reload_address): Likewise. - (rs6000_output_move_128bit): Use output_vec_const_move to emit - constants. - * config/rs6000/vsx.md (VSX_M): Add TImode (if -mvsx-timode) and - combine VSX_M and VSX_M2 into one iterator. - (VSX_M2): Likewise. - (VSINT_84): New iterators for loading constants with XXSPLTIB. - (VSINT_842): Likewise. - (UNSPEC_VSX_SIGN_EXTEND): New UNSPEC. - (xxspltib_v16qi): New insns to load up constants with the ISA 3.0 - XXSPLTIB instruction. - (xxspltib__nosplit): Likewise. - (xxspltib__split): New insn to load up constants with - XXSPLTIB and a sign extend instruction. - (vsx_mov): Replace single move that handled all vector types - with separate 32-bit and 64-bit moves. Combine the movti_ - moves (when -mvsx-timode is in effect) into the main vector - moves. Eliminate separate moves for , where the - preferred register class () is listed first, and the - secondary register class () is listed second with a '?' to - discourage use. Prefer loading 0/-1 in any VSX register for ISA - 3.0, and Altivec registers for ISA 2.06/2.07 (PR target/70915) so - that if the register was involved in a slow operation, the - clear/set operation does not wait for the slow operation to - finish. Adjust the length attributes for 32-bit mode. Use - rs6000_output_move_128bit and drop the use of the string - instructions for 32-bit movti when -mvsx-timode is in effect. Use - spacing so that the alternatives and attributes don't generate - long lines, and put things in columns, so that it is easier to - match up the operands and attributes with the insn alternatives. - (vsx_mov_64bit): Likewise. - (vsx_mov_32bit): Likewise. - (vsx_movti_64bit): Fold movti into normal vector moves. - (vsx_movti_32bit): Likewise. - (vsx_splat_, V4SI/V4SF modes): Add support for ISA 3.0 word - splat instructions. - (vsx_splat_v4si_internal): Likewise. - (vsx_splat_v4sf_internal): Likewise. - (vector fusion peepholes): Use VSX_M instead of VSX_M2. - (vsx_sign_extend_qi_): New ISA 3.0 instructions to sign - extend vector elements. - (vsx_sign_extend_hi_): Likewise. - (vsx_sign_extend_si_v2di): Likewise. - * config/rs6000/rs6000-protos.h (xxspltib_constant_p): Add - declaration. - * doc/md.texi (PowerPC constraints): Document the wE, wM, and wS - constraints. Add trailing period to wL documentation. - - 2016-05-18 Richard Sandiford - - PR middle-end/71020 - * tree-dfa.h (replace_abnormal_ssa_names): Declare. - * tree-dfa.c (replace_abnormal_ssa_names): New function. - * tree-call-cdce.c: Include tree-dfa.h. - (can_guard_call_p): New function, extracted from... - (can_use_internal_fn): ...here. - (shrink_wrap_one_built_in_call_with_conds): Remove failure path - and return void. - (shrink_wrap_one_built_in_call): Likewise. - (use_internal_fn): Likewise. - (shrink_wrap_conditional_dead_built_in_calls): Update accordingly - and return void. Call replace_abnormal_ssa_names. - (pass_call_cdce::execute): Check can_guard_call_p during the - initial walk. Assume shrink_wrap_conditional_dead_built_in_calls - will always change something. - - 2016-05-18 Martin Jambor - - PR ipa/70646 - * ipa-prop.c (determine_locally_known_aggregate_parts): Bail out early - if parameter PARAM_IPA_MAX_AGG_ITEMS is zero. - - 2016-05-18 Martin Jambor - - PR ipa/70646 - * ipa-inline.h (condition): New field size. - * ipa-inline-analysis.c (add_condition): New parameter SIZE, use it - for comaprison and store it into the new condition. - (evaluate_conditions_for_known_args): Use condition size to check - access sizes for all but CHANGED conditions. - (unmodified_parm_1): New parameter size_p, store access size into it. - (unmodified_parm): Likewise. - (unmodified_parm_or_parm_agg_item): Likewise. - (eliminated_by_inlining_prob): Pass NULL to unmodified_parm as size_p. - (set_cond_stmt_execution_predicate): Extract access sizes and store - them to conditions. - (set_switch_stmt_execution_predicate): Likewise. - (will_be_nonconstant_expr_predicate): Likewise. - (will_be_nonconstant_predicate): Likewise. - (inline_read_section): Stream condition size. - (inline_write_summary): Likewise. - - 2016-05-18 Richard Biener - - * tree-ssa-loop-im.c (determine_max_movement): Properly add - condition cost to PHI cost instead of total_cost. - - 2016-05-18 Martin Liska - - PR fortran/70856 - * ipa-icf.c (sem_variable::merge): Set DECL_PT_UID for - merged variables. - - 2016-05-18 Richard Biener - - * lto-streamer.h (LTO_major_version): Bump to 6. - - 2016-05-18 Segher Boessenkool - - * function.c (make_split_prologue_seq, make_prologue_seq, - make_epilogue_seq): New functions, factored out from... - (thread_prologue_and_epilogue_insns): Here. - - 2016-05-18 Segher Boessenkool - - * function.c (rest_of_handle_thread_prologue_and_epilogue): Call - cleanup_cfg with CLEANUP_EXPENSIVE after shrink-wrapping instead - of before. Add a comment. - - 2016-05-18 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_computation_cost_at): Check invariant - expression pointer, not pointer to the pointer. - - 2016-05-18 Jakub Jelinek - - * config/i386/sse.md (pbroadcast_evex_isa): New mode attr. - (avx2_pbroadcast): Add another alternative with v instead - of x constraints in it, using isa. - (avx2_pbroadcast_1): Similarly, add two such alternatives. - - * config/i386/sse.md (_palignr): Use - constraint x instead of v in second alternative, add avx512bw - alternative. - - * config/i386/sse.md (_pshufb3): Use - constraint x instead of v in second alternative, add avx512bw - alternative. - - * config/i386/sse.md (*_pmulhrsw3): Use - constraint x instead of v in second alternative, add avx512bw - alternative. - - * config/i386/sse.md (avx2_pmaddubsw256, ssse3_pmaddubsw128): Add - avx512bw alternative. - - 2016-05-18 Kirill Yukhin - - * config/i386/sse.md (define_insn "*andnot3"): Extend static - array to 128 chars. - (define_insn "*andnottf3"): Ditto. - (define_insn "*3"/any_logic): Ditto. - (define_insn "*tf3"/any_logic): Ditto. - (define_insn "sse2_storehpd"): Use Yv constraint for scalar - operand to block AVX-512VL insn variant emit when it is not enabled. - - 2016-05-18 Kirill Yukhin - - * config/i386/sse.md (define_insn "*vec_concatv2sf_sse4_1"): Use 'Yv' - constraint fot SF mode. - - 2016-05-18 Petr Murzin - Kirill Yukhin - - * config/i386/sse.md (define_insn "srcp14"): Use proper operand - modifiers. - (define_insn "rsqrt14"): Ditto. - (define_insn "avx512dq_cvtps2qqv2di"): Ditto. - (define_insn "fix_truncv2sfv2di2"): Ditto. - (define_insn "avx512f_v8div16qi2_mask_store"): Ditto. - (define_insn "vec_set_hi_"): Ditto. - (define_insn "avx512dq_broadcast"): - Ditto. - (define_insn "*avx512f_gatherdi"): Ditto. - (define_insn "*avx512f_scatterdi"): Ditto. - * config/i386/i386.c (ix86_print_operand): Expand check for size - override codes for Intel syntax. - - 2016-05-18 Richard Biener - - PR tree-optimization/71168 - * tree-loop-distribution.c (distribute_loop): Move *destroy_p - initialization earlier. - - 2016-05-18 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_reduc_plus_internal): Rename to... - (reduc_plus_scal): ...This, and remove previous implementation. - - 2016-05-18 Richard Biener - - * passes.def: Put late dse and cd_dce in canonical order. - - 2016-05-17 Jan Hubicka - - * ipa-inline-transform.c (preserve_function_body_p): Look for - first non-thunk clone. - (save_function_body): Save into first non-thunk. - * lto-cgraph.c (lto_output_edge): When streaming thunk do not look - up call stmt id. - (lto_output_node): Inline thunks don't need body in every - partition. - * lto-streamer-in.c: Do not fixup thunk clones. - * cgraphclones.c (cgraph_node::create_edge_including_clone): Skip - thunks. - * tree-inline.c (copy_bb): Be prepared for target node to be new after - folding suceeds. - - 2016-05-17 Kugan Vivekanandarajah - - PR middle-end/63586 - * tree-ssa-reassoc.c (transform_add_to_multiply): New. - (reassociate_bb): Call transform_add_to_multiply. - - 2016-05-17 Kugan Vivekanandarajah - - * config/aarch64/aarch64.c (all_extensions): Removed unused - static variable. - - 2016-05-17 Nathan Sidwell - - * config/nvptx/nvptx.c (nvptx_function_arg_boundary): New. - (TARGET_FUNCTION_ARG_BOUNDARY): Override. - - 2016-05-17 Mikhail Maltsev - - PR tree-optimization/54579 - PR middle-end/55299 - * match.pd (~(~X >> Y), ~(~X >>r Y), ~(~X < - - PR ipa/71146 - * tree-inline.c (expand_call_inline): Call - maybe_remove_unused_call_args. - - 2016-05-17 Jim Wilson - - * doc/cpp.texi (__GNUC__): Major version changes are no longer rare. - * doc/invoke.texi (-mnan=2008): Change signalling to signaling. - * doc/md.texi (fmin@var{m}3): Likewise. - - 2016-05-17 Marc Glisse - - * match.pd (X & C): New transformation. - - 2016-05-17 Marc Glisse - - * match.pd (~X & Y): New transformation. - - 2016-05-17 Marc Glisse - - * tree-vrp.c (simplify_truth_ops_using_ranges): Set range - information for new SSA_NAME. - (simplify_conversion_using_ranges): Get range through get_range_info - instead of get_value_range. - - 2016-05-17 Jiong Wang - - * config/aarch64/arm_neon.h (vmvn_s8): Reimplement using C operator. - Remove inline assembly. - (vmvn_s16): Likewise. - (vmvn_s32): Likewise. - (vmvn_u8): Likewise. - (vmvn_u16): Likewise. - (vmvn_u32): Likewise. - (vmvnq_s8): Likewise. - (vmvnq_s16): Likewise. - (vmvnq_s32): Likewise. - (vmvnq_u8): Likewise. - (vmvnq_u16): Likewise. - (vmvnq_u32): Likewise. - (vmvn_p8): Likewise. - (vmvnq_p16): Likewise. - - 2016-05-17 Jiong Wang - - * config/aarch64/aarch64-simd.md (vmul_n_f32): Remove inline assembly. - Use builtin. - (vmul_n_s16): Likewise. - (vmul_n_s32): Likewise. - (vmul_n_u16): Likewise. - (vmul_n_u32): Likewise. - (vmulq_n_f32): Likewise. - (vmulq_n_f64): Likewise. - (vmulq_n_s16): Likewise. - (vmulq_n_s32): Likewise. - (vmulq_n_u16): Likewise. - (vmulq_n_u32): Likewise. - - 2016-05-17 Jiong Wang - - * config/aarch64/aarch64-simd.md (*aarch64_mul3_elt_to_128df): Extend - to all supported modes. Rename to "*aarch64_mul3_elt_from_dup". - - 2016-05-17 Jiong Wang - - * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_to_128df): Rename - to *aarch64_fma4_elt_from_dup. - (*aarch64_fnma4_elt_to_128df): Rename to - *aarch64_fnma4_elt_from_dup. - * config/aarch64/arm_neon.h (vfma_n_f64): New. - (vfms_n_f32): Likewise. - (vfms_n_f64): Likewise. - (vfmsq_n_f32): Likewise. - (vfmsq_n_f64): Likewise. - - 2016-05-17 Gerald Pfeifer - - * wide-int.h: Change fixed_wide_int_storage from class to struct. - - 2016-05-17 Richard Biener - - PR tree-optimization/71132 - * tree-loop-distribution.c (create_rdg_cd_edges): Pass in loop. - Only add control dependences for blocks in the loop. - (build_rdg): Adjust. - (generate_code_for_partition): Return whether loop should - be destroyed and delay that. - (distribute_loop): Likewise. - (pass_loop_distribution::execute): Record loops to be destroyed - and perform delayed destroying of loops. - - 2016-05-17 Kyrylo Tkachov - - PR target/70809 - * config/aarch64/aarch64-simd.md (aarch64_vmls): Delete. - - 2016-05-17 James Greenhalgh - - * config/aarch64/aarch64-elf.h (ASM_OUTPUT_DEF): Delete. - - 2016-05-17 Ilya Enkovich - - PR target/71114 - * config/i386/i386.c (dimode_scalar_chain::convert_op): Fix - insertion point for instructions generated by validize_mem. - - 2016-05-17 James Greenhalgh - - * config/aarch64/aarch64.c (SHIFT_COUNT_TRUNCATED): Wrap definition - in brackets. - - 2016-05-17 James Greenhalgh - - * config/aarch64/aarch64.c - (aarch64_output_simd_mov_immediate): Make "buf_size" a variable - rather than a macro. - - 2016-05-16 Wilco Dijkstra - - * doc/invoke.texi (AArch64 Options): Various updates. - - 2016-05-16 Jan Hubicka - - * ipa-inline-analysis.c (compute_inline_parameters): Disable inlinig - into instrumentation thunks. - * cif-code.def (CIF_CHKP): New. - - 2016-05-16 Uros Bizjak - - * config/i386/xopintrin.h: Correct "unsinged" typo in the comments. - - 2016-05-16 Martin Jambor - - * hsa-gen.c (fillup_for_decl): Increase alignment to natural one. - (get_symbol_for_decl): Sorry if a global symbol in under-aligned. - - 2016-05-16 Marek Polacek - - * gimple.c (maybe_remove_unused_call_args): Fix typos in the - commentary. - - 2016-05-16 Martin Jambor - - PR hsa/70857 - * omp-low.c (grid_expand_target_grid_body): Copy RESULT_DECL of - the outlined kernel function. - - 2016-05-16 Robert Suchanek - - * config/mips/mips.h (ISA_HAS_LSA): Enable for -mmsa. - (ISA_HAS_DLSA): Ditto. - - 2016-05-16 Matthew Fortune - - * config/mips/m5100.md (m51_int_load): Update the latency to 2. - - 2016-05-16 Nathan Sidwell - - * config/nvptx/nvptx.c (nvptx_mangle_decl_assembler_name): Revert. - (nvptx_name_replacement): Restore. Add comment. - (write_fn_proto, write_fn_proto_from_insn, - nvptx_output_call_insn): Restore - (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Delete. - - 2016-05-16 Wilco Dijkstra - - * config/aarch64/aarch64.md - (add3_compareC_cconly_imm): Remove use of %w. - (add3_compareC_imm): Likewise. - (si3_uxtw): Split into register and immediate variants. - (andsi3_compare0_uxtw): Likewise. - (and3_compare0): Likewise. - (and3nr_compare0): Likewise. - (stack_protect_test_): Don't use %x for memory operands. - - 2016-05-16 Matthew Fortune - - * config/mips/mips-cpus.def (p5600): Add multi-line brackets. - - 2016-05-16 Wilco Dijkstra - - * config/aarch64/aarch64.md (aarch64_ashl_sisd_or_int_3): - Split integer shifts into shift_reg and bfm. - (aarch64_lshr_sisd_or_int_3): Likewise. - (aarch64_ashr_sisd_or_int_3): Likewise. - (ror3_insn): Likewise. - (si3_insn_uxtw): Likewise. - (3_insn): Change to rotate_imm. - (extr5_insn_alt): Likewise. - (extrsi5_insn_uxtw): Likewise. - (extrsi5_insn_uxtw_alt): Likewise. - - 2016-05-16 Matthew Wahab - - * doc/tm.texi: Regenerate. - * doc/tm.texi.in (TARGET_INVALID_PARAMETER_TYPE): Remove. - (TARGET_INVALID_RETURN_TYPE): Remove. - * system.h: Poison TARGET_INVALID_PARAMETER_TYPE and - TARGET_INVALID_RETURN_TYPE. - * target.def (invalid_parameter_type): Remove. - (invalid_return_type): Remove. - - 2016-05-16 Jan Hubicka - - * ipa-inline-analysis.c (compute_inline_parameters): Be more reailistic - on estimating thunk bodies; do not set inline_failed to CIF_THUNK for - calls from thunk. - * ipa-inline-transform.c (inline_call): When inlining into thunk produce - gimple body. - (preserve_function_body_p): No need to preserve function body - * cif-codes.def (CIF_THUNK): Remove. - * cgraphclones.c (duplicate_thunk_for_node): Thunks calls are inlinable. - - 2016-05-16 Jan Hubicka - - * tree-inline.c (expand_call_inline): recurse after inlining thunk. - - 2016-05-16 Jan Hubicka - - * tree.c (free_lang_data_in_decl): Also set target/optimization flags - for thunks. - - 2016-05-16 Jan Hubicka - - * ipa-inline.c (report_inline_failed_reason): Look into thunks, too - (inline_small_functions): Do not look for function symbol when - resetting caches. - - 2016-05-16 Jan Hubicka - - * lto-cgraph.c (compute_ltrans_boundary, output_symtab): Fix handling - of inline thunks - - 2016-05-16 Matthew Wahab - Ramana Radhakrishnan - Jiong Wang - - * config/arm/arm-c.c (arm_cpu_builtins): Use def_or_undef_macro - for __ARM_FP16_FORMAT_IEEE and __ARM_FP16_FORMAT_ALTERNATIVE. - Define __ARM_FP16_ARGS when appropriate. - * config/arm/arm.c (arm_invalid_parameter_type): Remove - declaration. - (arm_invalid_return_type): Likewise. - (TARGET_INVALID_PARAMETER_TYPE): Remove. - (TARGET_INVALID_RETURN_TYPE): Remove. - (aapcs_vfp_sub_candidate): Allow HFmode. - (aapcs_vfp_allocate): Add comment. Support HFmode. - (aapcs_vfp_allocate_return_reg): Likewise. - (struct aapcs_cp_arg_layout): Slightly reword comments for - is_return_candidate and allocate_return_reg. - (output_mov_vfp): Update assert. - (arm_hard_regno_mode_ok): Remove comment, update HF-mode - condition. - (arm_invalid_parameter_type): Remove. - (amr_invalid_return_type): Remove. - * config/arm/arm.h (TARGET_NEON_FP16): Fix definition. - * config/arm/arm.md (*arm32_movhf): Disable for TARGET_VFP. - * config/arm/vfp.md (*movhf_vfp): Enable for TARGET_VFP. - - 2016-05-16 Matthew Wahab - - * config/aarch64/aarch64.h (LEGITIMIZE_RELOAD_ADDRESS): Remove. - * config/aarch64/arch64-protos.h - (aarch64_legitimize_reload_address): Remove. - * config/aarch64/aarch64.c (aarch64_legitimize_reload_address): - Remove. - - 2016-05-16 Eric Botcazou - - * configure.ac: Add ACX_NONCANONICAL_HOST. - * configure: Regenerate. - * Makefile.in: Set host_noncanonical. - - 2016-05-14 Uros Bizjak - - PR target/71097 - * config/i386/i386.md (*movtf_internal): Before register allocation, - do not allow FP constants for CM_MEDIUM memory model, allow only - standard FP constants for CM_LARGE and CM_LARGE_PIC models. - (*movxf_internal): Ditto. - (*movdf_internal): Ditto. - (*movsf_internal): Ditto. - - 2016-05-13 Segher Boessenkool - - PR rtl-optimization/67483 - * combine.c (make_compound_operation): Don't call extract_left_shift - with negative shift amounts. - - 2016-05-13 Jakub Jelinek - - PR bootstrap/71071 - * fold-const.c (fold_checksum_tree): Allow modification - of TYPE_ALIAS_SET during folding. - - * config/i386/i386.c (ix86_compute_frame_layout, ix86_expand_prologue, - ix86_expand_split_stack_prologue): Use HOST_WIDE_INT_C macro. - (ix86_split_to_parts): Likewise. Fix up formatting. - - 2016-05-13 H.J. Lu - - * tree-ssa-loop-ivopts.c (create_new_ivs): Cast to - unsigned HOST_WIDE_INT with HOST_WIDE_INT_PRINT_UNSIGNED in - printf format. - - 2016-05-13 Nathan Sidwell - - * config/nvptx/nvptx.c (nvptx_mangle_decl_assembler_name): New. - (nvptx_name_replacement): Delete. - (write_fn_proto, write_fn_proto_from_insn, - nvptx_output_call_insn): Remove nvptx_name_replacement call. - (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Override. - * langhooks.c (add_builtin_funcction_common): Call - targetm.mangle_decl_assembler_name. - - * config/nvptx/nvptx.c (write_fn_proto): Handle - BUILT_IN_ATOMIC_COMPARE_EXCHANGE_n oddity. - - 2016-05-13 Martin Liska - - * tree-ssa-loop-ivopts.c (create_new_ivs): Use HOST_WIDE_INT_PRINT_DEC - and PRIu64 in printf format. - - 2016-05-13 Kyrylo Tkachov - - * tree-ssa-loop-ivanon.c (try_unroll_loop_completely): Typo fix in - comment. - - 2016-05-13 Kyrylo Tkachov - - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): - Change --param max-completely-peeled-times to - --param max-completely-peel-times in dump file printing. - - 2016-05-13 Richard Biener - - PR tree-optimization/42587 - * tree-ssa-math-opts.c (perform_symbolic_merge): Handle BIT_FIELD_REF. - (find_bswap_or_nop_1): Likewise. - (bswap_replace): Likewise. - - 2016-05-13 Martin Liska - - * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): - Initialize a variable with default value. - - 2016-05-13 Martin Liska - - * doc/invoke.texi: Enhance explanation of error recovery - of sanitizers. - - 2016-05-13 Martin Liska - - * tree-ssa-loop-ivopts.c (avg_loop_niter): Fix coding style. - (struct cost_pair): Change inv_expr_id (int) to inv_expr - (iv_inv_expr_ent *). - (struct iv_inv_expr_ent): Comment struct fields. - (sort_iv_inv_expr_ent): New function. - (struct ivopts_data): Rename inv_expr_id to max_inv_expr_id. - (struct iv_ca): Replace used_inv_expr and num_used_inv_expr with - a hash_map between iv_inv_expr_ent and number of usages. - (niter_for_exit): Fix coding style. - (tree_ssa_iv_optimize_init): Use renamed variable. - (determine_base_object): Fix coding style. - (alloc_iv): Likewise. - (find_interesting_uses_outside): Likewise. - (add_candidate_1): Likewise. - (add_standard_iv_candidates): Likewise. - (set_group_iv_cost): Replace inv_expr_id with inv_expr. - (prepare_decl_rtl): Fix coding style. - (get_address_cost): Likewise. - (get_shiftadd_cost): Likewise. - (force_expr_to_var_cost): Likewise. - (compare_aff_trees): Likewise. - (get_expr_id): Restructure the function. - (get_loop_invariant_expr_id): Renamed to - get_loop_invariant_expr. - (get_computation_cost_at): Replace usage of inv_expr_id with - inv_expr. - (get_computation_cost): Likewise. - (determine_group_iv_cost_generic): Likewise. - (determine_group_iv_cost_address): Likewise. - (iv_period): Fix coding style. - (iv_elimination_compare_lt): Likewise. - (may_eliminate_iv): Likewise. - (determine_group_iv_cost_cond): Replace usage of inv_expr_id with - inv_expr. - (determine_group_iv_costs): Dump invariant expressions. - (iv_ca_recount_cost): Use the newly added hash_map. - (iv_ca_set_remove_invariants): Fix coding style. - (iv_ca_set_add_invariants): Fix coding style. - (iv_ca_set_no_cp): Utilize the newly added hash_map for used - invariants. - (iv_ca_set_cp): Likewise. - (iv_ca_new): Initialize the newly added hash_map and remove - initialization of fields. - (iv_ca_free): Delete the hash_map. - (iv_ca_dump): Dump invariant expressions. - (iv_ca_extend): Fix coding style. - (try_add_cand_for): Likewise. - (create_new_ivs): Dump information about # of avg iterations and - # of used invariant expressions. - (rewrite_use_compare): Fix coding style. - (free_loop_data): Set default value for max_inv_expr_id. - - 2016-05-13 Ilya Enkovich - - * cse.c (rest_of_handle_cse): Use cleanup_cfg - returned value cse_cfg_altered computation. - (rest_of_handle_cse2): Likewise. - (rest_of_handle_cse_after_global_opts): Likewise. - - 2016-05-13 Ramana Radhakrishnan - - PR target/53440 - * config/arm/arm.c (arm32_output_mi_thunk): New. - (arm_output_mi_thunk): Rename to arm_thumb1_mi_thunk. Rework - to split Thumb1 vs TARGET_32BIT functionality. - (arm_thumb1_mi_thunk): New. - - 2016-05-13 Ramana Radhakrishnan - - * config/aarch64/aarch64.c (TARGET_OMIT_STRUCT_RETURN_REG): Set - to true. - - 2016-05-13 Rainer Orth - - PR target/71080 - * config/i386/i386.c (ix86_in_large_data_p): Guard against NULL exp. - - 2016-05-13 Eric Botcazou - - * builtins.c (expand_builtin_memcmp): Do not emit the call here. - (expand_builtin_trap): Emit a regular call. - (set_builtin_user_assembler_name): Remove obsolete cases. - * dse.c (scan_insn): Adjust. - * except.c: Include calls.h. - (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is defined, - emit a regular call to setjmp. - * expr.c (emit_block_move_hints): Call emit_block_copy_via_libcall. - (block_move_libcall_safe_for_call_parm): Use memcpy builtin. - (emit_block_move_via_libcall): Delete. - (block_move_fn): Delete. - (init_block_move_fn): Likewise. - (emit_block_move_libcall_fn): Likewise. - (emit_block_op_via_libcall): New function. - (set_storage_via_libcall): Tidy up and use memset builtin. - (block_clear_fn): Delete. - (init_block_clear_fn): Likewise. - (clear_storage_libcall_fn): Likewise. - (expand_assignment): Call emit_block_move_via_libcall. - Do not include gt-expr.h. - * expr.h (emit_block_op_via_libcall): Declare. - (emit_block_copy_via_libcall): New inline function. - (emit_block_move_via_libcall): Likewise. - (emit_block_comp_via_libcall): Likewise. - (block_clear_fn): Delete. - (init_block_move_fn): Likewise. - (init_block_clear_fn): Likewise. - (emit_block_move_via_libcall): Likewise. - (set_storage_via_libcall): Add default parameter value. - * libfuncs.h (enum libfunc_index): Remove obsolete values. - (abort_libfunc): Delete. - (memcpy_libfunc): Likewise. - (memmove_libfunc): Likewise. - (memcmp_libfunc): Likewise. - (memset_libfunc): Likewise. - (setbits_libfunc): Likewise. - (setjmp_libfunc): Likewise. - (longjmp_libfunc): Likewise. - (profile_function_entry_libfunc): Likewise. - (profile_function_exit_libfunc): Likewise. - (gcov_flush_libfunc): Likewise. - * optabs-libfuncs.c (build_libfunc_function): Set DECL_ARTIFICIAL - and DECL_VISIBILITY on the declaration. - (init_optabs): Do not initialize obsolete libfuncs. - * optabs.c (prepare_cmp_insn): Call emit_block_comp_via_libcall. - * tree-core.h (ECF_RET1): Define. - (ECF_TM_PURE): Adjust. - (ECF_TM_BUILTIN): Likewise. - * tree.c (set_call_expr_flags): Deal with ECF_RET1. - (build_common_builtin_nodes): Initialize abort builtin. - Add ECF_RET1 on memcpy, memmove and memset builtins. - Pass final flags for alloca and alloca_with_align builtins. - * config/alpha/alpha.c (alpha_init_libfuncs): Do not initialize - obsolete builtins. - * config/ia64/ia64.c (ia64_vms_init_libfuncs): Likewise. - * config/i386/i386.c (ix86_expand_set_or_movmem): Adjust call to - set_storage_via_libcall and call emit_block_copy_via_libcall. - - 2016-05-12 Uros Bizjak - - * config/i386/i386.md (*call_got_x32): Change operand 0 to - DImode before it is passed to ix86_output_call_operand. - (*call_value_got_x32): Ditto for operand 1. - - 2016-05-12 Jiong Wang - - PR rtl-optimization/70904 - * lra-constraint.c (process_addr_reg): Relax the restriction on subreg - reload for wide mode. - - 2016-05-12 Marek Polacek - - PR c/70756 - * langhooks-def.h (lhd_incomplete_type_error): Adjust declaration. - * langhooks.c (lhd_incomplete_type_error): Add location parameter. - * langhooks.h (incomplete_type_error): Likewise. - * tree.c (size_in_bytes_loc): Renamed from size_in_bytes. Add location - parameter, pass it down to incomplete_type_error. - * tree.h (size_in_bytes): New inline overload. - (size_in_bytes_loc): Renamed from size_in_bytes. - - 2016-05-12 Richard Biener - - PR tree-optimization/71059 - * tree-ssa-pre.c (phi_translate_1): Fully fold translated - nary before looking up or entering the expression into the VN - hashes. - * tree-ssa-sccvn.c (vn_nary_build_or_lookup): Fix comment typo. - Make sure to re-use NARYs without result as inserted by - phi-translation. - - 2016-05-12 Richard Biener - - PR tree-optimization/71062 - * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict - field. - * tree-ssa-structalias.c (set_uids_in_ptset): Set - vars_contains_restrict if the var is a restrict tag. - * tree-ssa-alias.c (ptrs_compare_unequal): If vars_contains_restrict - do not disambiguate pointers against it. - (dump_points_to_solution): Re-structure and adjust for new - vars_contains_restrict flag. - * gimple-pretty-print.c (pp_points_to_solution): Likewise. - - 2016-05-12 Martin Liska - - * doc/invoke.texi: Explain connection between - -fsanitize-recover=address and ASAN_OPTIONS="halt_on_error=1". - - 2016-05-12 Ilya Enkovich - - PR tree-optimization/71006 - * tree-vect-loop.c (vect_determine_vectorization_factor): Don't - consider COND_EXPR as a mask producer. - - 2016-05-12 Marek Polacek - - PR driver/71063 - * opts.c (common_handle_option): Detect missing argument for --help^. - - 2016-05-12 Kyrylo Tkachov - - PR target/70830 - * config/arm/arm.c (arm_output_multireg_pop): Avoid POP instruction - when popping the PC and within an interrupt handler routine. - Add missing tab to output of "ldmfd". - (output_return_instruction): Output LDMFD with SP update rather - than POP when returning from interrupt handler. - - 2016-05-12 Jakub Jelinek - - * config/i386/i386.md (isa): Add x64_avx512dq, enable if - TARGET_64BIT && TARGET_AVX512DQ. - * config/i386/sse.md (*vec_extract): Add avx512bw alternatives. - (*vec_extract_zext): Add avx512bw alternative. - (*vec_extract_0, *vec_extractv4si_0_zext, - *vec_extractv2di_0_sse): Use v constraint instead of x constraint. - (*vec_extractv4si): Add avx512dq and avx512bw alternatives. - (*vec_extractv4si_zext): Add avx512dq alternative. - (*vec_extractv2di_1): Add x64_avx512dq and avx512bw alternatives, - use v instead of x constraint in other alternatives where possible. - - * config/i386/sse.md (sse2_loadld): Use v instead of x - constraint in alternatives 0,1,4. - - * config/i386/sse.md (pinsr_evex_isa): New mode attr. - (_pinsr): Add 2 alternatives with - v constraints instead of x and isa attribute. - - PR target/71019 - * config/i386/sse.md (_packssdw, - _packusdw): Make sure EVEX encoded insn - is not emitted unless TARGET_AVX512BW. - (_packuswb, _packsswb): - Likewise. For TARGET_AVX512BW, use "=v" constraint instead of "=x" - for the result operand. - - * config/i386/sse.md (*vec_setv4sf_sse4_1, sse4_1_insertps): Use v - constraint instead of x in avx alternatives. Use maybe_evex instead - of vex prefix. - - * config/i386/constraints.md (Yv): New constraint. - * config/i386/i386.h (VALID_AVX512VL_128_REG_MODE): Allow - TFmode and V1TImode in xmm16+ registers for TARGET_AVX512VL. - * config/i386/i386.md (avx512fvecmode): New mode attr. - (*pushtf): Use v constraint instead of x. - (*movtf_internal): Likewise. For TARGET_AVX512VL and - xmm16+ registers, use vmovdqu64 or vmovdqa64 instructions. - (*absneg2): Use Yv constraint instead of x constraint. - (*absnegtf2_sse): Likewise. - (copysign3_const, copysign3_var): Likewise. - * config/i386/sse.md (*andnot3): Add avx512vl and - avx512f alternatives. - (*andnottf3, *3, *tf3): Likewise. - - 2016-05-12 Richard Biener - - PR tree-optimization/71060 - * tree-data-ref.c (initialize_data_dependence_relation): Do not - require exact match of DR_BASE_OBJECT but only matching address and - type. - - 2016-05-12 Richard Biener - - PR tree-optimization/70986 - * cfganal.c: Include cfgloop.h. - (dfs_find_deadend): Prefer to take edges exiting loops. - - 2016-05-11 Bill Schmidt - - * gcc.target/powerpc/pr70963.c: Require at least power8 at both - compile and run time. - - 2016-05-11 Mikhail Maltsev - - PR c/43651 - * doc/invoke.texi (Wduplicate-decl-specifier): Document new option. - - 2016-05-11 Uros Bizjak - - * config/i386/i386.c (legitimize_pic_address): Use - copy_to_suggested_reg instead of gen_movsi. - - 2016-05-11 Michael Meissner - - * config/rs6000/predicates.md (quad_memory_operand): Move most of - the code into quad_address_p and call it to share code with - vsx_quad_dform_memory_operand. - (vsx_quad_dform_memory_operand): New predicate for ISA 3.0 vector - d-form support. - * config/rs6000/rs6000.opt (-mlra): Switch to being an option mask - bit instead of being a separate word. Split -mpower9-dform into - two switches, -mpower9-dform-scalar and -mpower9-dform-vector. - * config/rs6000/rs6000.c (RELOAD_REG_QUAD_OFFSET): New addr_mask - for the register class supporting 128-bit quad word memory offsets. - (mode_supports_vsx_dform_quad): Helper function to return if the - register class uses quad word memory offsets. - (rs6000_debug_addr_mask): Add support for quad word memory offsets. - (rs6000_debug_reg_global): Always print if we are using LRA or not. - (rs6000_setup_reg_addr_masks): If ISA 3.0 vector d-form - instructions are enabled, set up the appropriate addr_masks for - 128-bit types. - (rs6000_init_hard_regno_mode_ok): wb constraint is now based on - -mpower9-dform-scalar, instead of -mpower9-dform. - (rs6000_option_override_internal): Split -mpower9-dform into two - switches, -mpower9-dform-scalar and -mpower9-dform-vector. The - -mpower9-dform switch sets or clears both. If we are not using - the LRA register allocator, do not enable -mpower9-dform-vector by - default. If we are using LRA, enable -mpower9-dform-vector and - -mvsx-timode if it is appropriate. Issue a warning if either - -mpower9-dform-vector or -mvsx-timode are explicitly used without - enabling LRA. - (quad_address_offset_p): New helper function to return if the - offset is legal for quad word memory instructions. - (quad_address_p): New function to determin if GPR or vector - register quad word memory addresses are legal. - (mem_operand_gpr): Validate quad word address offsets. - (reg_offset_addressing_ok_p): Add support for ISA 3.0 vector - d-form (register + offset) instructions. - (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): Add more debug statements for - -mdebug=addr. - (rs6000_legitimate_address_p): Add support for ISA 3.0 vector - d-form instructions. - (rs6000_secondary_reload_memory): Add support for ISA 3.0 vector - d-form instructions. Distinguish different cases in debug - output. (rs6000_secondary_reload_inner): Add support for ISA 3.0 vector - d-form instructions. - (rs6000_preferred_reload_class): Likewise. - (rs6000_output_move_128bit): Add support for ISA 3.0 d-form - instructions. If ISA 3.0 is available, generate lxvx/stxvx instead - of the ISA 2.06 indexed memory instructions. - (rs6000_emit_prologue): If we have ISA 3.0 d-form instructions, - use them to save/restore the saved vector registers instead of - using Altivec instructions. - (rs6000_emit_epilogue): Likewise. - (rs6000_lra_p): Use TARGET_LRA instead of the old option word. - (rs6000_opt_masks): Split -mpower9-dform into - -mpower9-dform-scalar and -mpower9-dform-vector. - (rs6000_print_options_internal): Print -mno- if - was not selected. - * config/rs6000/vsx.md (p9_vecload_): Delete hack to emit - ISA 3.0 vector indexed memory instructions, and fold the code into - the normal mov patterns. - (p9_vecstore_): Likewise. - (vsx_mov): Add support for ISA 3.0 vector d-form - instructions. - (vsx_movti_64bit): Likewise. - (vsx_movti_32bit): Likewise. - * config/rs6000/constraints.md (wO constraint): New constraint for - ISA 3.0 vector d-form support. - * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Use - -mpower9-dform-scalar instead of -mpower9-dform. Add note not to - include -mpower9-dform-vector until we switch over to LRA. - (POWERPC_MASKS): Add -mlra. Split -mpower9-dform into two. - switches, -mpower9-dform-scalar and -mpower9-dform-vector. - * config/rs6000/rs6000-protos.h (quad_address_p): Add declaration. - * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation - for -mpower9-dform and -mlra. - * doc/md.texi (wO constraint): Document wO constraint. - - 2016-05-11 Alexander Monakov - - * genattr.c (main): Change 'rtx' to 'rtx_insn *' in prototypes of - 'insn_latency', 'maximal_insn_latency', 'min_insn_conflict_delay'. - * genautomata.c (output_internal_insn_code_evaluation): Simplify. - Move handling of non-insn arguments inline into the sole user: - (output_trans_func): ...here. - (output_min_insn_conflict_delay_func): Change 'rtx' to 'rtx_insn *' - in emitted function prototype. - (output_internal_insn_latency_func): Ditto. Simplify. - (output_internal_maximal_insn_latency_func): Ditto. Delete - always-unused argument. - (output_insn_latency_func): Ditto. - (output_maximal_insn_latency_func): Ditto. - - 2016-05-11 Richard Biener - - PR tree-optimization/71055 - * tree-ssa-sccvn.c (vn_reference_lookup_3): When native-interpreting - sth with precision not equal to access size verify we don't chop - off bits. - - 2016-05-11 Richard Biener - - PR debug/71057 - * dwarf2out.c (retry_incomplete_types): Set early_dwarf. - (dwarf2out_finish): Move retry_incomplete_types call ... - (dwarf2out_early_finish): ... here. - - 2016-05-11 Richard Biener - - PR middle-end/71002 - * alias.c (reference_alias_ptr_type): Preserve alias-set zero - if the langhook insists on it. - * fold-const.c (make_bit_field_ref): Add arg for the original - reference and preserve its alias-set. - (decode_field_reference): Take exp by reference and adjust it - to the original memory reference. - (optimize_bit_field_compare): Adjust callers. - (fold_truth_andor_1): Likewise. - * gimplify.c (gimplify_expr): Adjust in-SSA form test. - - 2016-05-11 Ilya Enkovich - - PR middle-end/70807 - * cfgrtl.h (delete_insn_and_edges): Now return bool. - * cfgrtl.c (delete_insn_and_edges): Likewise. - * config/i386/i386.c (convert_scalars_to_vector): Remove - redundant code. - * cse.c (cse_insn): Compute cse_cfg_altered. - (delete_trivially_dead_insns): Likewise. - (cse_cc_succs): Likewise. - (rest_of_handle_cse): Free dominance info if required. - (rest_of_handle_cse2): Likewise. - (rest_of_handle_cse_after_global_opts): Likewise. - - 2016-05-11 Alan Modra - - * config/rs6000/rs6000.c (is_complex_IBM_long_double, - abi_v4_pass_in_fpr): New functions. - (rs6000_function_arg_boundary): Exclude complex IBM long double - from 64-bit alignment when ABI_V4. - (rs6000_function_arg, rs6000_function_arg_advance_1, - rs6000_gimplify_va_arg): Use abi_v4_pass_in_fpr. - - 2016-05-10 Segher Boessenkool - - PR rtl-optimization/71028 - * cfgcleanup.c (try_optimize_cfg): Do not flip a conditional - jump with just a return in the fallthrough block if the branch - block contains just a return as well. - - 2016-05-10 Marc Glisse - - * fold-const.c (fold_binary_loc) [(X ^ Y) & Y]: Remove and merge with... - * match.pd ((X & Y) ^ Y): ... this. - ((X & Y) & Y, (X | Y) | Y, (X ^ Y) ^ Y, (X & Y) & (X & Z), (X | Y) - | (X | Z), (X ^ Y) ^ (X ^ Z)): New transformations. - - 2016-05-10 David Malcolm - - * read-md.c (require_char_ws): New function. - (read_string): Simplify using require_char_ws. - (handle_constants): Likewise. - (handle_enum): Likewise. - (handle_file): Likewise. - * read-md.h (require_char_ws): New declaration. - * read-rtl.c (read_conditions): Simplify using require_char_ws. - (read_mapping): Likewise. - (read_rtx_code): Likewise. - (read_nested_rtx): Likewise. - - 2016-05-10 James Norris - - * config/rs6000/sysv4.h (CRTOFFLOADBEGIN): Define. Add crtoffloadbegin.o - if offloading is enabled and -fopenacc or -fopenmp is specified. - (CRTOFFLOADEND): Likewise. - (STARTFILE_LINUX_SPEC): Add CRTOFFLOADBEGIN. - (ENDFILE_LINUX_SPEC): Add CRTOFFLOADEND. - - 2016-05-10 Uros Bizjak - - * config/i386/i386.c (legitimize_pic_address): Merge 64-bit and 32-bit - gotoff_operand code paths. Use copy_to_suggested_regs and - expand_simple_binop where appropriate. Cleanup. - - 2016-05-10 Ilya Enkovich - - PR target/70799 - * config/i386/i386.c (dimode_scalar_to_vector_candidate_p): Allow - integer constants. - (dimode_scalar_chain::vector_const_cost): New. - (dimode_scalar_chain::compute_convert_gain): Handle constants. - (dimode_scalar_chain::convert_op): Likewise. - (dimode_scalar_chain::convert_insn): Likewise. - - 2016-05-10 Pierre-Marie de Rodat - - * dwarf2out.c (resolve_args_picking_1): Consider DW_OP_neg as an - unary operation, not a binary one. - - 2016-05-10 Ilya Enkovich - - PR middle-end/70877 - * tree-chkp.c (chkp_add_bounds_to_call_stmt): Handle - calls with type casted fndecl. - - 2016-05-10 Ilya Enkovich - - PR tree-optimization/70786 - * tree-chkp.c (chkp_find_bounds_1): Support WITH_SIZE_EXPR. - * calls.c (initialize_argument_information): Bind bounds - with corresponding args passed by reference. - - 2016-05-10 Jakub Jelinek - - PR target/70927 - * config/i386/sse.md (_andnot3), - *3): For !TARGET_AVX512DQ and EVEX encoding, - use vp*[dq] instead of v*p[sd] instructions and adjust mode attribute - accordingly. - - 2016-05-10 Bill Schmidt - - PR target/70963 - * config/rs6000/vsx.md (vsx_xvcvdpsxds_scale): Generate correct - code for a zero scale factor. - (vsx_xvcvdpuxds_scale): Likewise. - - 2016-05-10 David Malcolm - - * diagnostic-show-locus.c (layout::layout): Call show_ruler - if show_ruler_p was set on the context. - (layout::show_ruler): New method. - * diagnostic.h (struct diagnostic_context): Add field - "show_ruler_p". - - 2016-05-10 Richard Biener - - PR tree-optimization/71039 - * tree-ssa-phiprop.c: Include tree-ssa-loop.h. - (chk_uses): New function. - (propagate_with_phi): Verify we can safely replicate the lhs of an - aggregate assignment on all incoming edges. - - 2016-05-10 Oleg Endo - - * config/rx/rx-protos.h (is_interrupt_func, is_fast_interrupt_func): - Forward declare. - (rx_atomic_sequence): New class. - * config/rx/rx.c (rx_print_operand): Use symbolic names for PSW bits. - (is_interrupt_func, is_fast_interrupt_func): Make non-static and - non-inline. - (rx_atomic_sequence::rx_atomic_sequence, - rx_atomic_sequence::~rx_atomic_sequence): New functions. - * config/rx/rx.md (CTRLREG_PSW, CTRLREG_USP, CTRLREG_FPSW, CTRLREG_CPEN, - CTRLREG_BPSW, CTRLREG_BPC, CTRLREG_ISP, CTRLREG_FINTV, - CTRLREG_INTB): New constants. - (FETCHOP): New code iterator. - (fethcop_name, fetchop_name2): New iterator code attributes. - (QIHI): New mode iterator. - (atomic_exchange, atomic_exchangesi, xchg_mem, - atomic_fetch_si, atomic_fetch_nandsi, - atomic__fetchsi, atomic_nand_fetchsi): New patterns. - - 2016-05-10 Martin Liska - - * tree-inline.c (remap_dependence_clique): Do not remap - debugging statements. - - 2016-05-10 Andreas Krebbel - - * config/s390/s390.md ("*vec_cmpdf_cconly") - ("*fixuns_truncdfdi2_z13") - ("*fixuns_trunc2_z196") - ("*fix_truncdfdi2_bfp_z13", "*floatunsdidf2_z13") - ("*extendsfdf2_z13"): Replace TARGET_Z13 with TARGET_VX. - - 2016-05-10 Richard Biener - - PR tree-optimization/70497 - PR tree-optimization/28367 - * tree-ssa-sccvn.c (vn_nary_build_or_lookup): New function - split out from ... - (visit_reference_op_load): ... here. - (vn_reference_lookup_3): Use it to handle subreg-like accesses - with simplified BIT_FIELD_REFs. - * tree-ssa-pre.c (eliminate_insert): Handle inserting BIT_FIELD_REFs. - * tree-complex.c (extract_component): Handle BIT_FIELD_REFs - correctly. - - 2016-05-10 Pierre-Marie de Rodat - - * dwarf2out.c (add_abstract_origin_attribute): Adjust - documentation comment. For BLOCK nodes, add a - DW_AT_abstract_origin attribute that points to the DIE generated - for the origin BLOCK. - (gen_lexical_block_die): Call add_abstract_origin_attribute for - blocks from inlined functions. - - 2016-05-10 Alan Modra - - PR target/70947 - * config/rs6000/rs6000.c (rs6000_expand_split_stack_prologue): Stop - regrename modifying insns saving lr before __morestack call. - * config/rs6000/rs6000.md (split_stack_return): Similarly for - insns restoring lr after __morestack call. - - 2016-05-09 Jakub Jelinek - - * config/i386/i386.md (set_got, set_got_labelled, lwp_llwpcb, - lwp_lwpval3, lwp_lwpins3): Remove constraints from - expanders. - * config/i386/sse.md (vec_interleave_high, - vec_interleave_low, _vpermi2var3_maskz, - _vpermt2var3_maskz): Likewise. - - 2016-05-04 Aaron Sawdey - - * config/rs6000/rs6000.c (rs6000_reassociation_width): Add - function for TARGET_SCHED_REASSOCIATION_WIDTH to enable - parallel reassociation for power8 and forward. - - 2016-05-09 Uros Bizjak - - * config/i386/i386.md (absneg splitters with general regs): Use - general_reg_operand predicate. - (btsq peephole2): Use x86_64_immediate_operand to check if new - value is suitable for immediate operand. Generate emitted insn - using RTL expressions. - (btcq peephole2): Ditto. - (btrq peephole2): Ditto. Generate correct immediate operand - for AND masking. - - 2016-05-09 Richard Sandiford - - * cfgexpand.c (expand_debug_expr): Fix address offset for negative - bitpos. - - 2016-05-09 Richard Sandiford - - * tree-affine.c (wide_int_constant_multiple_p): Add missing - pointer dereference. - - 2016-05-09 Richard Biener - - PR tree-optimization/70985 - * match.pd (BIT_FIELD_REF -> (type)): Disable on GIMPLE when - op0 isn't a gimple register. - - 2016-05-09 Prachi Godbole - - * config/mips/i6400.md (i6400_fpu_intadd, i6400_fpu_logic) - (i6400_fpu_div, i6400_fpu_cmp, i6400_fpu_float, i6400_fpu_store) - (i6400_fpu_long_pipe, i6400_fpu_logic_l, i6400_fpu_float_l) - (i6400_fpu_mult): New cpu units. - (i6400_msa_add_d, i6400_msa_int_add, i6400_msa_short_logic3) - (i6400_msa_short_logic2, i6400_msa_short_logic, i6400_msa_move) - (i6400_msa_cmp, i6400_msa_short_float2, i6400_msa_div_d) - (i6400_msa_div_w, i6400_msa_div_h, i6400_msa_div_b) - (i6400_msa_copy, i6400_msa_branch, i6400_fpu_msa_store) - (i6400_fpu_msa_load, i6400_fpu_msa_move, i6400_msa_long_logic1) - (i6400_msa_long_logic2, i6400_msa_mult, i6400_msa_long_float2) - (i6400_msa_long_float4, i6400_msa_long_float5) - (i6400_msa_long_float8, i6400_msa_fdiv_df) - (i6400_msa_fdiv_sf): New reservations. - * config/mips/p5600.md (p5600_fpu_intadd, p5600_fpu_cmp) - (p5600_fpu_float, p5600_fpu_logic_a, p5600_fpu_logic_b) - (p5600_fpu_div, p5600_fpu_logic, p5600_fpu_float_a) - (p5600_fpu_float_b, p5600_fpu_float_c, p5600_fpu_float_d) - (p5600_fpu_mult, p5600_fpu_fdiv, p5600_fpu_load): New cpu units. - (msa_short_int_add, msa_short_logic, msa_short_logic_move_v) - (msa_short_cmp, msa_short_float2, msa_short_logic3) - (msa_short_store4, msa_long_load, msa_short_store) - (msa_long_logic, msa_long_float2, msa_long_float4) - (msa_long_float5, msa_long_float8, msa_long_mult) - (msa_long_fdiv, msa_long_div): New reservations. - - 2016-05-09 Robert Suchanek - Sameera Deshpande - Matthew Fortune - Graham Stott - Chao-ying Fu - - * config.gcc: Add MSA header file for mips*-*-* target. - * config/mips/constraints.md (YI, YC, YZ, Unv5, Uuv5, Usv5, Uuv6) - (Ubv8i, Urv8): New constraints. - * config/mips/mips-ftypes.def: Add function types for MSA - builtins. - * config/mips/mips-modes.def (V16QI, V8HI, V4SI, V2DI, V4SF) - (V2DF, V32QI, V16HI, V8SI, V4DI, V8SF, V4DF): New modes. - * config/mips/mips-msa.md: New file. - * config/mips/mips-protos.h - (mips_split_128bit_const_insns): New prototype. - (mips_msa_idiv_insns): Likewise. - (mips_split_128bit_move): Likewise. - (mips_split_128bit_move_p): Likewise. - (mips_split_msa_copy_d): Likewise. - (mips_split_msa_insert_d): Likewise. - (mips_split_msa_fill_d): Likewise. - (mips_expand_msa_branch): Likewise. - (mips_const_vector_same_val_p): Likewise. - (mips_const_vector_same_bytes_p): Likewise. - (mips_const_vector_same_int_p): Likewise. - (mips_const_vector_shuffle_set_p): Likewise. - (mips_const_vector_bitimm_set_p): Likewise. - (mips_const_vector_bitimm_clr_p): Likewise. - (mips_msa_vec_parallel_const_half): Likewise. - (mips_msa_output_division): Likewise. - (mips_ldst_scaled_shift): Likewise. - (mips_expand_vec_cond_expr): Likewise. - * config/mips/mips.c (enum mips_builtin_type): Add - MIPS_BUILTIN_MSA_TEST_BRANCH. - (mips_gen_const_int_vector_shuffle): New prototype. - (mips_const_vector_bitimm_set_p): New function. - (mips_const_vector_bitimm_clr_p): Likewise. - (mips_const_vector_same_val_p): Likewise. - (mips_const_vector_same_bytes_p): Likewise. - (mips_const_vector_same_int_p): Likewise. - (mips_const_vector_shuffle_set_p): Likewise. - (mips_symbol_insns): Forbid loading symbols via immediate for - MSA. - (mips_valid_offset_p): Limit offset to 10-bit for MSA loads and - stores. - (mips_valid_lo_sum_p): Forbid loadings symbols via %lo(base) for - MSA. - (mips_lx_address_p): Add support load indexed address for MSA. - (mips_address_insns): Add calculation of instructions needed for - stores and loads for MSA. - (mips_const_insns): Move CONST_DOUBLE below CONST_VECTOR. Handle - CONST_VECTOR for MSA and let it fall through. - (mips_ldst_scaled_shift): New function. - (mips_subword_at_byte): Likewise. - (mips_msa_idiv_insns): Likewise. - (mips_legitimize_move): Validate MSA moves. - (mips_rtx_costs): Add UNGE, UNGT, UNLE, UNLT cases. Add - calculation of costs for MSA division. - (mips_split_move_p): Check if MSA moves need splitting. - (mips_split_move): Split MSA moves if necessary. - (mips_split_128bit_move_p): New function. - (mips_split_128bit_move): Likewise. - (mips_split_msa_copy_d): Likewise. - (mips_split_msa_insert_d): Likewise. - (mips_split_msa_fill_d): Likewise. - (mips_output_move): Handle MSA moves. - (mips_expand_msa_branch): New function. - (mips_print_operand): Add 'E', 'B', 'w', 'v' and 'V' modifiers. - Reinstate 'y' modifier. - (mips_file_start): Add MSA .gnu_attribute. - (mips_hard_regno_mode_ok_p): Allow TImode and 128-bit vectors in - FPRs. - (mips_hard_regno_nregs): Always return 1 for MSA supported mode. - (mips_class_max_nregs): Add register size for MSA supported mode. - (mips_cannot_change_mode_class): Allow conversion between MSA - vector modes and TImode. - (mips_mode_ok_for_mov_fmt_p): Allow MSA to use move.v - instruction. - (mips_secondary_reload_class): Force MSA loads/stores via memory. - (mips_preferred_simd_mode): Add preffered modes for MSA. - (mips_vector_mode_supported_p): Add MSA supported modes. - (mips_autovectorize_vector_sizes): New function. - (mips_msa_output_division): Likewise. - (MSA_BUILTIN, MIPS_BUILTIN_DIRECT_NO_TARGET) - (MSA_NO_TARGET_BUILTIN, MSA_BUILTIN_TEST_BRANCH): New macros. - (CODE_FOR_msa_adds_s_b, CODE_FOR_msa_adds_s_h) - (CODE_FOR_msa_adds_s_w, CODE_FOR_msa_adds_s_d) - (CODE_FOR_msa_adds_u_b, CODE_FOR_msa_adds_u_h) - (CODE_FOR_msa_adds_u_w, CODE_FOR_msa_adds_u_du - (CODE_FOR_msa_addv_b, CODE_FOR_msa_addv_h, CODE_FOR_msa_addv_w) - (CODE_FOR_msa_addv_d, CODE_FOR_msa_and_v, CODE_FOR_msa_bmnz_v) - (CODE_FOR_msa_bmnzi_b, CODE_FOR_msa_bmz_v, CODE_FOR_msa_bmzi_b) - (CODE_FOR_msa_bnz_v, CODE_FOR_msa_bz_v, CODE_FOR_msa_bsel_v) - (CODE_FOR_msa_bseli_b, CODE_FOR_msa_ceqi_h, CODE_FOR_msa_ceqi_w) - (CODE_FOR_msa_ceqi_d, CODE_FOR_msa_clti_s_b) - (CODE_FOR_msa_clti_s_h, CODE_FOR_msa_clti_s_w) - (CODE_FOR_msa_clti_s_d, CODE_FOR_msa_clti_u_b) - (CODE_FOR_msa_clti_u_h, CODE_FOR_msa_clti_u_w) - (CODE_FOR_msa_clti_u_d, CODE_FOR_msa_clei_s_b) - (CODE_FOR_msa_clei_s_h, CODE_FOR_msa_clei_s_w) - (CODE_FOR_msa_clei_s_d, CODE_FOR_msa_clei_u_b) - (CODE_FOR_msa_clei_u_h, CODE_FOR_msa_clei_u_w) - (CODE_FOR_msa_clei_u_d, CODE_FOR_msa_div_s_b) - (CODE_FOR_msa_div_s_h, CODE_FOR_msa_div_s_w) - (CODE_FOR_msa_div_s_d, CODE_FOR_msa_div_u_b) - (CODE_FOR_msa_div_u_h, CODE_FOR_msa_div_u_w) - (CODE_FOR_msa_div_u_d, CODE_FOR_msa_fadd_w, CODE_FOR_msa_fadd_d) - (CODE_FOR_msa_fexdo_w, CODE_FOR_msa_ftrunc_s_w) - (CODE_FOR_msa_ftrunc_s_d, CODE_FOR_msa_ftrunc_u_w) - (CODE_FOR_msa_ftrunc_u_d, CODE_FOR_msa_ffint_s_w) - (CODE_FOR_msa_ffint_s_d, CODE_FOR_msa_ffint_u_w) - (CODE_FOR_msa_ffint_u_d, CODE_FOR_msa_fsub_w) - (CODE_FOR_msa_fsub_d, CODE_FOR_msa_fmsub_d, CODE_FOR_msa_fmadd_w) - (CODE_FOR_msa_fmadd_d, CODE_FOR_msa_fmsub_w, CODE_FOR_msa_fmul_w) - (CODE_FOR_msa_fmul_d, CODE_FOR_msa_fdiv_w, CODE_FOR_msa_fdiv_d) - (CODE_FOR_msa_fmax_w, CODE_FOR_msa_fmax_d, CODE_FOR_msa_fmax_a_w) - (CODE_FOR_msa_fmax_a_d, CODE_FOR_msa_fmin_w, CODE_FOR_msa_fmin_d) - (CODE_FOR_msa_fmin_a_w, CODE_FOR_msa_fmin_a_d) - (CODE_FOR_msa_fsqrt_w, CODE_FOR_msa_fsqrt_d) - (CODE_FOR_msa_max_s_b, CODE_FOR_msa_max_s_h) - (CODE_FOR_msa_max_s_w, CODE_FOR_msa_max_s_d) - (CODE_FOR_msa_max_u_b, CODE_FOR_msa_max_u_h) - (CODE_FOR_msa_max_u_w, CODE_FOR_msa_max_u_d) - (CODE_FOR_msa_min_s_b, CODE_FOR_msa_min_s_h) - (CODE_FOR_msa_min_s_w, CODE_FOR_msa_min_s_d) - (CODE_FOR_msa_min_u_b, CODE_FOR_msa_min_u_h) - (CODE_FOR_msa_min_u_w, CODE_FOR_msa_min_u_d) - (CODE_FOR_msa_mod_s_b, CODE_FOR_msa_mod_s_h) - (CODE_FOR_msa_mod_s_w, CODE_FOR_msa_mod_s_d) - (CODE_FOR_msa_mod_u_b, CODE_FOR_msa_mod_u_h) - (CODE_FOR_msa_mod_u_w, CODE_FOR_msa_mod_u_d) - (CODE_FOR_msa_mod_s_b, CODE_FOR_msa_mod_s_h) - (CODE_FOR_msa_mod_s_w, CODE_FOR_msa_mod_s_d) - (CODE_FOR_msa_mod_u_b, CODE_FOR_msa_mod_u_h) - (CODE_FOR_msa_mod_u_w, CODE_FOR_msa_mod_u_d) - (CODE_FOR_msa_mulv_b, CODE_FOR_msa_mulv_h, CODE_FOR_msa_mulv_w) - (CODE_FOR_msa_mulv_d, CODE_FOR_msa_nlzc_b, CODE_FOR_msa_nlzc_h) - (CODE_FOR_msa_nlzc_w, CODE_FOR_msa_nlzc_d, CODE_FOR_msa_nor_v) - (CODE_FOR_msa_or_v, CODE_FOR_msa_ori_b, CODE_FOR_msa_nori_b) - (CODE_FOR_msa_pcnt_b, CODE_FOR_msa_pcnt_h, CODE_FOR_msa_pcnt_w) - (CODE_FOR_msa_pcnt_d, CODE_FOR_msa_xor_v, CODE_FOR_msa_xori_b) - (CODE_FOR_msa_sll_b, CODE_FOR_msa_sll_h, CODE_FOR_msa_sll_w) - (CODE_FOR_msa_sll_d, CODE_FOR_msa_slli_b, CODE_FOR_msa_slli_h) - (CODE_FOR_msa_slli_w, CODE_FOR_msa_slli_d, CODE_FOR_msa_sra_b) - (CODE_FOR_msa_sra_h, CODE_FOR_msa_sra_w, CODE_FOR_msa_sra_d) - (CODE_FOR_msa_srai_b, CODE_FOR_msa_srai_h, CODE_FOR_msa_srai_w) - (CODE_FOR_msa_srai_d, CODE_FOR_msa_srl_b, CODE_FOR_msa_srl_h) - (CODE_FOR_msa_srl_w, CODE_FOR_msa_srl_d, CODE_FOR_msa_srli_b) - (CODE_FOR_msa_srli_h, CODE_FOR_msa_srli_w, CODE_FOR_msa_srli_d) - (CODE_FOR_msa_subv_b, CODE_FOR_msa_subv_h, CODE_FOR_msa_subv_w) - (CODE_FOR_msa_subv_d, CODE_FOR_msa_subvi_b, CODE_FOR_msa_subvi_h) - (CODE_FOR_msa_subvi_w, CODE_FOR_msa_subvi_d, CODE_FOR_msa_move_v) - (CODE_FOR_msa_vshf_b, CODE_FOR_msa_vshf_h, CODE_FOR_msa_vshf_w) - (CODE_FOR_msa_vshf_d, CODE_FOR_msa_ilvod_d, CODE_FOR_msa_ilvev_d) - (CODE_FOR_msa_pckod_d, CODE_FOR_msa_pckdev_d, CODE_FOR_msa_ldi_b) - (CODE_FOR_msa_ldi_hi, CODE_FOR_msa_ldi_w) - (CODE_FOR_msa_ldi_d): New code_aliasing macros. - (mips_builtins): Add MSA sll_b, sll_h, sll_w, sll_d, slli_b, - slli_h, slli_w, slli_d, sra_b, sra_h, sra_w, sra_d, srai_b, - srai_h, srai_w, srai_d, srar_b, srar_h, srar_w, srar_d, srari_b, - srari_h, srari_w, srari_d, srl_b, srl_h, srl_w, srl_d, srli_b, - srli_h, srli_w, srli_d, srlr_b, srlr_h, srlr_w, srlr_d, srlri_b, - srlri_h, srlri_w, srlri_d, bclr_b, bclr_h, bclr_w, bclr_d, - bclri_b, bclri_h, bclri_w, bclri_d, bset_b, bset_h, bset_w, - bset_d, bseti_b, bseti_h, bseti_w, bseti_d, bneg_b, bneg_h, - bneg_w, bneg_d, bnegi_b, bnegi_h, bnegi_w, bnegi_d, binsl_b, - binsl_h, binsl_w, binsl_d, binsli_b, binsli_h, binsli_w, - binsli_d, binsr_b, binsr_h, binsr_w, binsr_d, binsri_b, binsri_h, - binsri_w, binsri_d, addv_b, addv_h, addv_w, addv_d, addvi_b, - addvi_h, addvi_w, addvi_d, subv_b, subv_h, subv_w, subv_d, - subvi_b, subvi_h, subvi_w, subvi_d, max_s_b, max_s_h, max_s_w, - max_s_d, maxi_s_b, maxi_s_h, maxi_s_w, maxi_s_d, max_u_b, - max_u_h, max_u_w, max_u_d, maxi_u_b, maxi_u_h, maxi_u_w, - maxi_u_d, min_s_b, min_s_h, min_s_w, min_s_d, mini_s_b, mini_s_h, - mini_s_w, mini_s_d, min_u_b, min_u_h, min_u_w, min_u_d, mini_u_b, - mini_u_h, mini_u_w, mini_u_d, max_a_b, max_a_h, max_a_w, max_a_d, - min_a_b, min_a_h, min_a_w, min_a_d, ceq_b, ceq_h, ceq_w, ceq_d, - ceqi_b, ceqi_h, ceqi_w, ceqi_d, clt_s_b, clt_s_h, clt_s_w, - clt_s_d, clti_s_b, clti_s_h, clti_s_w, clti_s_d, clt_u_b, - clt_u_h, clt_u_w, clt_u_d, clti_u_b, clti_u_h, clti_u_w, - clti_u_d, cle_s_b, cle_s_h, cle_s_w, cle_s_d, clei_s_b, clei_s_h, - clei_s_w, clei_s_d, cle_u_b, cle_u_h, cle_u_w, cle_u_d, clei_u_b, - clei_u_h, clei_u_w, clei_u_d, ld_b, ld_h, ld_w, ld_d, st_b, st_h, - st_w, st_d, sat_s_b, sat_s_h, sat_s_w, sat_s_d, sat_u_b, sat_u_h, - sat_u_w, sat_u_d, add_a_b, add_a_h, add_a_w, add_a_d, adds_a_b, - adds_a_h, adds_a_w, adds_a_d, adds_s_b, adds_s_h, adds_s_w, - adds_s_d, adds_u_b, adds_u_h, adds_u_w, adds_u_d, ave_s_b, - ave_s_h, ave_s_w, ave_s_d, ave_u_b, ave_u_h, ave_u_w, ave_u_d, - aver_s_b, aver_s_h, aver_s_w, aver_s_d, aver_u_b, aver_u_h, - aver_u_w, aver_u_d, subs_s_b, subs_s_h, subs_s_w, subs_s_d, - subs_u_b, subs_u_h, subs_u_w, subs_u_d, subsuu_s_b, subsuu_s_h, - subsuu_s_w, subsuu_s_d, subsus_u_b, subsus_u_h, subsus_u_w, - subsus_u_d, asub_s_b, asub_s_h, asub_s_w, asub_s_d, asub_u_b, - asub_u_h, asub_u_w, asub_u_d, mulv_b, mulv_h, mulv_w, mulv_d, - maddv_b, maddv_h, maddv_w, maddv_d, msubv_b, msubv_h, msubv_w, - msubv_d, div_s_b, div_s_h, div_s_w, div_s_d, div_u_b, div_u_h, - div_u_w, div_u_d, hadd_s_h, hadd_s_w, hadd_s_d, hadd_u_h, - hadd_u_w, hadd_u_d, hsub_s_h, hsub_s_w, hsub_s_d, hsub_u_h, - hsub_u_w, hsub_u_d, mod_s_b, mod_s_h, mod_s_w, mod_s_d, mod_u_b, - mod_u_h, mod_u_w, mod_u_d, dotp_s_h, dotp_s_w, dotp_s_d, - dotp_u_h, dotp_u_w, dotp_u_d, dpadd_s_h, dpadd_s_w, dpadd_s_d, - dpadd_u_h, dpadd_u_w, dpadd_u_d, dpsub_s_h, dpsub_s_w, dpsub_s_d, - dpsub_u_h, dpsub_u_w, dpsub_u_d, sld_b, sld_h, sld_w, sld_d, - sldi_b, sldi_h, sldi_w, sldi_d, splat_b, splat_h, splat_w, - splat_d, splati_b, splati_h, splati_w, splati_d, pckev_b, - pckev_h, pckev_w, pckev_d, pckod_b, pckod_h, pckod_w, pckod_d, - ilvl_b, ilvl_h, ilvl_w, ilvl_d, ilvr_b, ilvr_h, ilvr_w, ilvr_d, - ilvev_b, ilvev_h, ilvev_w, ilvev_d, ilvod_b, ilvod_h, ilvod_w, - ilvod_d, vshf_b, vshf_h, vshf_w, vshf_d, and_v, andi_b, or_v, - ori_b, nor_v, nori_b, xor_v, xori_b, bmnz_v, bmnzi_b, bmz_v, - bmzi_b, bsel_v, bseli_b, shf_b, shf_h, shf_w, bnz_v, bz_v, - fill_b, fill_h, fill_w, fill_d, pcnt_b, pcnt_h, pcnt_w, - pcnt_d, nloc_b, nloc_h, nloc_w, nloc_d, nlzc_b, nlzc_h, nlzc_w, - nlzc_d, copy_s_b, copy_s_h, copy_s_w, copy_s_d, copy_u_b, - copy_u_h, copy_u_w, copy_u_d, insert_b, insert_h, insert_w, - insert_d, insve_b, insve_h, insve_w, insve_d, bnz_b, bnz_h, - bnz_w, bnz_d, bz_b, bz_h, bz_w, bz_d, ldi_b, ldi_h, ldi_w, ldi_d, - fcaf_w, fcaf_d, fcor_w, fcor_d, fcun_w, fcun_d, fcune_w, fcune_d, - fcueq_w, fcueq_d, fceq_w, fceq_d, fcne_w, fcne_d, fclt_w, fclt_d, - fcult_w, fcult_d, fcle_w, fcle_d, fcule_w, fcule_d, fsaf_w, - fsaf_d, fsor_w, fsor_d, fsun_w, fsun_d, fsune_w, fsune_d, - fsueq_w, fsueq_d, fseq_w, fseq_d, fsne_w, fsne_d, fslt_w, - fslt_d, fsult_w, fsult_d, fsle_w, fsle_d, fsule_w, fsule_d, - fadd_w, fadd_d, fsub_w, fsub_d, fmul_w, fmul_d, fdiv_w, fdiv_d, - fmadd_w, fmadd_d, fmsub_w, fmsub_d, fexp2_w, fexp2_d, fexdo_h, - fexdo_w, ftq_h, ftq_w, fmin_w, fmin_d, fmin_a_w, fmin_a_d, - fmax_w, fmax_d, fmax_a_w, fmax_a_d, mul_q_h, mul_q_w, mulr_q_h, - mulr_q_w, madd_q_h, madd_q_w, maddr_q_h, maddr_q_w, msub_q_h, - msub_q_w, msubr_q_h, msubr_q_w, fclass_w, fclass_d, fsqrt_w, - fsqrt_d, frcp_w, frcp_d, frint_w, frint_d, frsqrt_w, frsqrt_d, - flog2_w, flog2_d, fexupl_w, fexupl_d, fexupr_w, fexupr_d, ffql_w, - ffql_d, ffqr_w, ffqr_d, ftint_s_w, ftint_s_d, ftint_u_w, - ftint_u_d, ftrunc_s_w, ftrunc_s_d, ftrunc_u_w, ftrunc_u_d, - ffint_s_w, ffint_s_d, ffint_u_w, ffint_u_d, ctcmsa, cfcmsa, - move_v builtins. - (mips_get_builtin_decl_index): New array. - (MIPS_ATYPE_QI, MIPS_ATYPE_HI, MIPS_ATYPE_V2DI, MIPS_ATYPE_V4SI) - (MIPS_ATYPE_V8HI, MIPS_ATYPE_V16QI, MIPS_ATYPE_V2DF) - (MIPS_ATYPE_V4SF, MIPS_ATYPE_UV2DI, MIPS_ATYPE_UV4SI) - (MIPS_ATYPE_UV8HI, MIPS_ATYPE_UV16QI): New. - (mips_init_builtins): Initialize mips_get_builtin_decl_index - array. - (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target - hook. - (mips_expand_builtin_insn): Prepare operands for - CODE_FOR_msa_addvi_b, CODE_FOR_msa_addvi_h, CODE_FOR_msa_addvi_w, - CODE_FOR_msa_addvi_d, CODE_FOR_msa_clti_u_b, - CODE_FOR_msa_clti_u_h, CODE_FOR_msa_clti_u_w, - CODE_FOR_msa_clti_u_d, CODE_FOR_msa_clei_u_b, - CODE_FOR_msa_clei_u_h, CODE_FOR_msa_clei_u_w, - CODE_FOR_msa_clei_u_d, CODE_FOR_msa_maxi_u_b, - CODE_FOR_msa_maxi_u_h, CODE_FOR_msa_maxi_u_w, - CODE_FOR_msa_maxi_u_d, CODE_FOR_msa_mini_u_b, - CODE_FOR_msa_mini_u_h, CODE_FOR_msa_mini_u_w, - CODE_FOR_msa_mini_u_d, CODE_FOR_msa_subvi_b, - CODE_FOR_msa_subvi_h, CODE_FOR_msa_subvi_w, CODE_FOR_msa_subvi_d, - CODE_FOR_msa_ceqi_b, CODE_FOR_msa_ceqi_h, CODE_FOR_msa_ceqi_w, - CODE_FOR_msa_ceqi_d, CODE_FOR_msa_clti_s_b, - CODE_FOR_msa_clti_s_h, CODE_FOR_msa_clti_s_w, - CODE_FOR_msa_clti_s_d, CODE_FOR_msa_clei_s_b, - CODE_FOR_msa_clei_s_h, CODE_FOR_msa_clei_s_w, - CODE_FOR_msa_clei_s_d, CODE_FOR_msa_maxi_s_b, - CODE_FOR_msa_maxi_s_h, CODE_FOR_msa_maxi_s_w, - CODE_FOR_msa_maxi_s_d, CODE_FOR_msa_mini_s_b, - CODE_FOR_msa_mini_s_h, CODE_FOR_msa_mini_s_w, - CODE_FOR_msa_mini_s_d, CODE_FOR_msa_andi_b, CODE_FOR_msa_ori_b, - CODE_FOR_msa_nori_b, CODE_FOR_msa_xori_b, CODE_FOR_msa_bmzi_b, - CODE_FOR_msa_bmnzi_b, CODE_FOR_msa_bseli_b, CODE_FOR_msa_fill_b, - CODE_FOR_msa_fill_h, CODE_FOR_msa_fill_w, CODE_FOR_msa_fill_d, - CODE_FOR_msa_ilvl_b, CODE_FOR_msa_ilvl_h, CODE_FOR_msa_ilvl_w, - CODE_FOR_msa_ilvl_d, CODE_FOR_msa_ilvr_b, CODE_FOR_msa_ilvr_h, - CODE_FOR_msa_ilvr_w, CODE_FOR_msa_ilvr_d, CODE_FOR_msa_ilvev_b, - CODE_FOR_msa_ilvev_h, CODE_FOR_msa_ilvev_w, CODE_FOR_msa_ilvod_b, - CODE_FOR_msa_ilvod_h, CODE_FOR_msa_ilvod_w, CODE_FOR_msa_pckev_b, - CODE_FOR_msa_pckev_h, CODE_FOR_msa_pckev_w, CODE_FOR_msa_pckod_b, - CODE_FOR_msa_pckod_h, CODE_FOR_msa_pckod_w, CODE_FOR_msa_slli_b, - CODE_FOR_msa_slli_h, CODE_FOR_msa_slli_w, CODE_FOR_msa_slli_d, - CODE_FOR_msa_srai_b, CODE_FOR_msa_srai_h, CODE_FOR_msa_srai_w, - CODE_FOR_msa_srai_d, CODE_FOR_msa_srli_b, CODE_FOR_msa_srli_h, - CODE_FOR_msa_srli_w, CODE_FOR_msa_srli_d, CODE_FOR_msa_insert_b, - CODE_FOR_msa_insert_h, CODE_FOR_msa_insert_w, - CODE_FOR_msa_insert_d, CODE_FOR_msa_insve_b, - CODE_FOR_msa_insve_h, CODE_FOR_msa_insve_w, CODE_FOR_msa_insve_d, - CODE_FOR_msa_shf_b, CODE_FOR_msa_shf_h, CODE_FOR_msa_shf_w, - CODE_FOR_msa_shf_w_f, CODE_FOR_msa_vshf_b, CODE_FOR_msa_vshf_h, - CODE_FOR_msa_vshf_w, CODE_FOR_msa_vshf_d. - (mips_expand_builtin): Add case for MIPS_BULTIN_MSA_TEST_BRANCH. - (mips_set_compression_mode): Disallow MSA with MIPS16 code. - (mips_option_override): -mmsa requires -mfp64 and -mhard-float. - These are set implicitly and an error is reported if overridden. - (mips_expand_builtin_msa_test_branch): New function. - (mips_expand_msa_shuffle): Likewise. - (MAX_VECT_LEN): Increase maximum length of a vector to 16 bytes. - (TARGET_SCHED_REASSOCIATION_WIDTH): Define target hook. - (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Likewise. - (mips_expand_vec_unpack): Add support for MSA. - (mips_expand_vector_init): Likewise. - (mips_expand_vi_constant): Use CONST0_RTX (element_mode) - instead of const0_rtx. - (mips_msa_vec_parallel_const_half): New function. - (mips_gen_const_int_vector): Likewise. - (mips_gen_const_int_vector_shuffle): Likewise. - (mips_expand_msa_cmp): Likewise. - (mips_expand_vec_cond_expr): Likewise. - * config/mips/mips.h - (TARGET_CPU_CPP_BUILTINS): Add __mips_msa and __mips_msa_width. - (OPTION_DEFAULT_SPECS): Ignore --with-fp-32 if -mmsa is - specified. - (ASM_SPEC): Pass mmsa and mno-msa to the assembler. - (ISA_HAS_MSA): New macro. - (UNITS_PER_MSA_REG): Likewise. - (BITS_PER_MSA_REG): Likewise. - (BIGGEST_ALIGNMENT): Redefine using ISA_HAS_MSA. - (MSA_REG_FIRST): New macro. - (MSA_REG_LAST): Likewise. - (MSA_REG_NUM): Likewise. - (MSA_REG_P): Likewise. - (MSA_REG_RTX_P): Likewise. - (MSA_SUPPORTED_MODE_P): Likewise. - (HARD_REGNO_CALL_PART_CLOBBERED): Redefine using TARGET_MSA. - (ADDITIONAL_REGISTER_NAMES): Add named registers $w0-$w31. - * config/mips/mips.md: Include mips-msa.md. - (alu_type): Add simd_add. - (mode): Add V2DI, V4SI, V8HI, V16QI, V2DF, V4SF. - (type): Add simd_div, simd_fclass, simd_flog2, simd_fadd, - simd_fcvt, simd_fmul, simd_fmadd, simd_fdiv, simd_bitins, - simd_bitmov, simd_insert, simd_sld, simd_mul, simd_fcmp, - simd_fexp2, simd_int_arith, simd_bit, simd_shift, simd_splat, - simd_fill, simd_permute, simd_shf, simd_sat, simd_pcnt, - simd_copy, simd_branch, simd_cmsa, simd_fminmax, simd_logic, - simd_move, simd_load, simd_store. Choose "multi" for moves - for "qword_mode". - (qword_mode): New attribute. - (insn_count): Add instruction count for quad moves. - Increase the count for MIPS SIMD division. - (UNITMODE): Add UNITMODEs for vector types. - (addsub): New code iterator. - * config/mips/mips.opt (mmsa): New option. - * config/mips/msa.h: New file. - * config/mips/mti-elf.h: Don't infer -mfpxx if -mmsa is - specified. - * config/mips/mti-linux.h: Likewise. - * config/mips/predicates.md - (const_msa_branch_operand): New constraint. - (const_uimm3_operand): Likewise. - (const_uimm4_operand): Likewise. - (const_uimm5_operand): Likewise. - (const_uimm8_operand): Likewise. - (const_imm5_operand): Likewise. - (aq10b_operand): Likewise. - (aq10h_operand): Likewise. - (aq10w_operand): Likewise. - (aq10d_operand): Likewise. - (const_m1_operand): Likewise. - (reg_or_m1_operand): Likewise. - (const_exp_2_operand): Likewise. - (const_exp_4_operand): Likewise. - (const_exp_8_operand): Likewise. - (const_exp_16_operand): Likewise. - (const_vector_same_val_operand): Likewise. - (const_vector_same_simm5_operand): Likewise. - (const_vector_same_uimm5_operand): Likewise. - (const_vector_same_uimm6_operand): Likewise. - (const_vector_same_uimm8_operand): Likewise. - (par_const_vector_shf_set_operand): Likewise. - (reg_or_vector_same_val_operand): Likewise. - (reg_or_vector_same_simm5_operand): Likewise. - (reg_or_vector_same_uimm6_operand): Likewise. - * doc/extend.texi (MIPS SIMD Architecture Functions): New - section. - * doc/invoke.texi (-mmsa): Document new option. - - 2016-05-09 Rainer Orth - - * configure.ac (enable_vtable_verify): Handle --enable-vtable-verify. - * configure: Regenerate. - * config.in: Regenerate. - * gcc.c (VTABLE_VERIFICATION_SPEC) [!ENABLE_VTABLE_VERIFY]: Error - on -fvtable-verify. - * config/sol2.h [!ENABLE_VTABLE_VERIFY] (STARTFILE_VTV_SPEC): Define. - (ENDFILE_VTV_SPEC): Define. - - 2016-05-09 Kaushik Phatak - - * config/rl78/rl78.c (rl78_expand_prologue): Save the MDUC related - registers in all interrupt handlers if necessary. - (rl78_option_override): Add warning. - (MUST_SAVE_MDUC_REGISTERS): New macro. - (rl78_expand_epilogue): Restore the MDUC registers if necessary. - * config/rl78/rl78.c (check_mduc_usage): New function. - (mduc_regs): New structure to hold MDUC register data. - * config/rl78/rl78.md (is_g13_muldiv_insn): New attribute. - (mulsi3_g13): Add is_g13_muldiv_insn attribute. - (udivmodsi4_g13): Add is_g13_muldiv_insn attribute. - (mulhi3_g13): Add is_g13_muldiv_insn attribute. - * config/rl78/rl78.opt (msave-mduc-in-interrupts): New option. - * doc/invoke.texi (RL78 Options): Add -msave-mduc-in-interrupts. - - 2016-05-09 Bin Cheng - - * tree-if-conv.c (tree-ssa-loop.h): Include header file. - (tree-ssa-loop-niter.h): Ditto. - (idx_within_array_bound, ref_within_array_bound): New functions. - (ifcvt_memrefs_wont_trap): Check if array ref is within bound. - Factor out check on writable base object to ... - (base_object_writable): ... here. - - 2016-05-09 Kyrylo Tkachov - - * config/arm/arm.md (probe_stack): Add modes to set source - and destination. - - 2016-05-09 Bernd Schmidt - - * regrename.c (base_reg_class_for_rename): New static function. - (scan_rtx_address, scan_rtx): Use it instead of base_reg_class. - - 2016-05-08 Jan Hubicka - - * cgraph.c (thunk_adjust): Export. - * cgraphclones.c (cgraph_node::create_clone): Clone thunk info. - * cgraphunit.c (thunk_adjust): Export. - (cgraph_node::assemble_thunks_and_aliases): Do not assemble inlined - thunks. - * ipa-inline-analyssi.c (compute_inline_parameters): Thunks are - inlinable. - * tree-inline.c (expand_call_inline): Expand thunks inline. - - 2016-05-08 Uros Bizjak - - PR target/70998 - * config/i386/sse.md (*sse2_vd_cvtsd2ss): New insn pattern. - (*sse2_vd_cvtss2sd): Ditto. - * config/i386/i386.md - (TARGET_SSE_PARTIAL_REG_DEPENDENCY float_truncate df->sf splitter): - Generate *sse2_vd_cvtsd2ss pattern. - (TARGET_SSE_PARTIAL_REG_DEPENDENCY float_extend sf->df splitter): - Generate *sse2_vd_cvtss2sd pattern. - - 2016-05-08 Oleg Endo - - * config/sh/sh.h (GET_SH_ARG_CLASS): Convert macro into ... - * config/sh/sh.c (get_sh_arg_class): ... this new function. Update its - users. - - 2016-05-08 Oleg Endo - - * config/sh/sh-protos.h (sh_media_register_for_return): Remove. - * config/sh/sh.c: Define and declare variables on first use throughout - the file. - (current_function_interrupt): Change to bool type. - (frame_insn): Rename to emit_frame_insn and update users. - (push_regs): Use bool for 'interrupt_handler' argument. - (save_schedule_s): Remove. - (TARGET_ASM_UNALIGNED_DI_OP, TARGET_ASM_ALIGNED_DI_OP): Remove. - (sh_option_override): Don't nullify targetm.asm_out.aligned_op.di and - targetm.asm_out.unaligned_op.di. - (gen_far_branch): Remove redundant forward declaration. - (sh_media_register_for_return, MAX_SAVED_REGS, save_entry_s, save_entry, - MAX_TEMPS, save_schedule_ssave_schedule): Remove. - (sh_set_return_address, sh_function_ok_for_sibcall, - scavenge_reg): Update comments. - (sh_builtin_saveregs): Use TRAGET_FPU_ANY condition. - (sh2a_get_function_vector_number, sh2a_function_vector_p): Use for loop. - (sh_attr_renesas_p): Remove unnecessary parentheses. - (branch_dest): Simplify. - * config/sh/sh.h (sh_args): Remove byref, byref_regs, stack_regs fields. - Change force_mem, prototype_p, outgoing, renesas_abi fields to bool. - (CUMULATIVE_ARGS): Change macro to typedef. - (current_function_interrupt): Change to bool type. - (sh_arg_class, sh_args, CUMULATIVE_ARGS, current_function_interrupt): - Surround with __cplusplus ifdef. - (sh_compare_op0, sh_compare_op1): Remove. - (EPILOGUE_USES): Use TARGET_FPU_ANY condition. - - 2016-05-07 Jim Wilson - - * config/arm/arm.md: (arch): Add neon. - (arch_enabled): Return yes for arch neon when TARGET_NEON. - * config/arm/vfp.md (movdf_vfp): Add w/G as alternative 3. Add - neon_move as type for alt 3. Add arch attr enabling alt 3 for neon. - Emit vmov.i64 for alt 3. Renumber alternatives 3 to 8. Adjust - attributes for alt renumbering. Mark alt 3 as non-predicable. - (thumb2_movdf_vfp): Likewise. - - 2016-05-07 Uros Bizjak - - * config/i386/i386.md (*addqi_1): Add preferred_for_speed attribute - to disparage alternatives 3 and 4 for TARGET_PARTIAL_REG_STALL targets. - (*andqi_1): Add preferred_for_speed attribute to disparage - alternative 2 for TARGET_PARTIAL_REG_STALL targets. - (*qi_1): Ditto. - (*one_cmplqi2_1): Add preferred_for_speed attribute to disparage - alternative 1 for TARGET_PARTIAL_REG_STALL targets. - (*ashlqi3_1): Ditto. - (*swap): Merge from *swap_1 and *swap_2 patterns. - Add preferred_for_size attribute to disparage alternative 0 and - preferred_for_speed attribute to disparage alternative 1 for - TARGET_PARTIAL_REG_STALL targets. - - 2016-05-07 Tom de Vries - - PR tree-optimization/70956 - * graphite-scop-detection.c (build_cross_bb_scalars_def): Handle NULL - def. - - 2016-05-07 Oleg Endo - - * config/sh/sh-protos.h (sh_cbranch_distance): Declare new function. - * config/sh/sh.c (sh_cbranch_distance): Implement it. - * config/sh/sh.md (branch_zero): Remove define_attr. - (define_delay): Disable delay slot if branch distance is one insn. - - 2016-05-06 Uros Bizjak - - * config/i386/i386.md (LEAMODE): New mode attribute. - (plus to LEA splitter): Rewrite splitter using LEAMODE mode attribute. - (ashift to LEA splitter): Rewrte splitter using SWI mode iterator - and LEAMODE mode attribute. Use VOIDmode const_0_to_3_operand as - operand 2 predicate. - (*lea_general_2): Use VOIDmode for const248_operand. - (*lea_general_3): Ditto. - (*lea_general_4): Use VOIDmode for const_0_to_3_operand. - - 2016-05-06 Jakub Jelinek - - * genmddump.c (main): Convert argv from char ** to const char **. - - 2016-05-06 David Malcolm - - * coretypes.h (OVERRIDE): New macro. - (FINAL): New macro. - - 2016-05-06 Eric Botcazou - - * tree-ssa-coalesce.c (gimple_can_coalesce_p): In the optimized case, - allow coalescing if the types are compatible. - - 2016-05-06 David Malcolm - - * pass_manager.h (pass_manager::register_pass_name): New method. - (pass_manager::get_pass_by_name): New method. - (pass_manager::create_pass_tab): New method. - (pass_manager::m_name_to_pass_map): New field. - * passes.c (name_to_pass_map): Delete global in favor of field - "m_name_to_pass_map" of pass_manager. - (register_pass_name): Rename from a function to... - (pass_manager::register_pass_name): ...this method, updating - for renaming of global "name_to_pass_map" to field - "m_name_to_pass_map". - (create_pass_tab): Rename from a function to... - (pass_manager::create_pass_tab): ...this method, updating - for renaming of global "name_to_pass_map" to field. - (get_pass_by_name): Rename from a function to... - (pass_manager::get_pass_by_name): ...this method. - (enable_disable_pass): Convert use of get_pass_by_name to - a method call, locating the pass_manager singleton. - - 2016-05-06 David Malcolm - - * genattr-common.c (main): Convert argv from char ** to const char **. - * genattr.c (main): Likewise. - * genattrtab.c (main): Likewise. - * genautomata.c (initiate_automaton_gen): Likewise. - (main): Likewise. - * gencodes.c (main): Likewise. - * genconditions.c (main): Likewise. - * genconfig.c (main): Likewise. - * genconstants.c (main): Likewise. - * genemit.c (main): Likewise. - * genenums.c (main): Likewise. - * genextract.c (main): Likewise. - * genflags.c (main): Likewise. - * genmddeps.c (main): Likewise. - * genopinit.c (main): Likewise. - * genoutput.c (main): Likewise. - * genpeep.c (main): Likewise. - * genpreds.c (main): Likewise. - * genrecog.c (main): Likewise. - * gensupport.c (init_rtx_reader_args_cb): Likewise. - (init_rtx_reader_args): Likewise. - * gensupport.h (init_rtx_reader_args_cb): Likewise. - (init_rtx_reader_args): Likewise. - * gentarget-def.c (main): Likewise. - * read-md.c (read_md_files): Likewise. - * read-md.h (read_md_files): Likewise. - - 2016-05-06 Uros Bizjak - - * config/i386/i386.md (int cmove peephole2s): Use general_reg_operand - instead of register_and_not_any_fp_reg_operand as operand 0 predicate. - * config/i386/predicates.md (register_and_not_any_fp_reg_operand): - Remove unused predicate. - (register_and_not_fp_reg_operand): Ditto. - - 2016-05-06 Martin Liska - - * tree-if-conv.c (ifcvt_split_critical_edges): Use auto_vec - instead of vec as the vector is local to the function. - - 2016-05-06 Jakub Jelinek - - * config/i386/sse.md (*v8hi3, *v16qi3): Add - avx512bw alternative. - - * config/i386/sse.md (ashr3): Move - before the ashr3 pattern. - - * config/i386/sse.md (*avx2_pmaddwd, *sse2_pmaddwd): Use - v instead of x in vex or maybe_vex alternatives, use - maybe_evex instead of vex in prefix. - - * config/i386/sse.md (*vec_extractv4sf_0, *sse4_1_extractps, - *vec_extractv4sf_mem, vec_extract_lo_v16hi, vec_extract_hi_v16hi, - vec_extract_lo_v32qi, vec_extract_hi_v32qi): Use v instead of x - in vex or maybe_vex alternatives, use maybe_evex instead of vex - in prefix. - - * config/i386/sse.md (*vec_concatv2sf_sse4_1, *vec_concatv4sf): Use - v instead of x in vex or maybe_vex alternatives, use - maybe_evex instead of vex in prefix. - - * config/i386/sse.md (sse_shufps_, sse_storehps, sse_loadhps, - sse_storelps, sse_movss, avx2_vec_dup, avx2_vec_dupv8sf_1, - sse2_shufpd_, sse2_storehpd, sse2_storelpd, sse2_loadhpd, - sse2_loadlpd, sse2_movsd): Use v instead of x in vex or maybe_vex - alternatives, use maybe_evex instead of vex in prefix. - - * config/i386/sse.md (vec_interleave_lowv4sf, - *vec_interleave_highv2df, *vec_interleave_lowv2df): Use - v instead of x in vex or maybe_vex alternatives, use - maybe_evex instead of vex in prefix. - - * config/i386/sse.md (sse_movhlps, sse_movlhps): Use - v instead of x in vex or maybe_vex alternatives, use - maybe_evex instead of vex in prefix. - - * config/i386/sse.md (*avx_cvtpd2dq256_2, *avx_cvtps2pd256_2): Use - v constraint instead of x. - - 2016-05-06 Nathan Sidwell - - * gimple.c (gimple_call_same_target_p): Unique functions are eq. - * tree-ssa-tail-merge.c (same_succ::equal): Check pointer eq - equality first. - - 2016-05-06 Richard Biener - - PR tree-optimization/70948 - * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): - Properly clobber all fields of va_list for __builtin_va_start. - - 2016-05-06 Yuri Rumyantsev - - PR debug/70935 - * tree-ssa-loop-unswitch.c (find_loop_guard): Reject guard edge with - loop latch destination. - - 2016-05-06 Martin Liska - - * tree-ssa-uninit.c: Apply manual changes - to the GNU coding style. - (prune_uninit_phi_opnds): Rename from - prune_uninit_phi_opnds_in_unrealizable_paths. - - 2016-05-06 Oleg Endo - - * config/sh/sh.opt (madjust-unroll, minvalid-symbols, msoft-atomic, - mspace): Remove deprecated options. - * doc/invoke.texi (SH options): Remove -mspace. - - 2016-05-06 Oleg Endo - - * config/sh/sh.md (ic_invalidate_line_sh4a): Fix insn length. - - 2016-05-06 Oleg Endo - - * config/sh/sh.md (*cmpeqsi_t): Remove combine insn pattern and similar - corresponding combine split pattern. - - 2016-05-06 Oleg Endo - - PR target/58219 - * config/sh/predicates.md (long_displacement_mem_operand): New. - * config/sh/sh.md (movsi_i): Allow for SH2A, disallow for any FPU. - Add movi20, movi20s alternatives. Adjust length attribute for - alternatives. - (movsi_ie): Allow for any FPU. Adjust length attribute for - alternatives. - (movsi_i_lowpart): Add movi20, movi20s alternatives. Adjust length - attribute for alternatives. - (*mov): Use long_displacement_mem_operand for length attribute. - (*movdi_i, movdf_k, movdf_i4, movsf_i, movsf_ie, movsf_ie_ra): Adjust - length attribute for alternatives. - - 2016-05-06 Richard Biener - - PR tree-optimization/70960 - * tree-if-conv.c (ifcvt_walk_pattern_tree): Handle non-SSA ops. - - 2016-05-06 Oleg Endo - - PR target/52933 - * config/sh/sh.md (*cmp_div0s_7, *cmp_div0s_8): Add div0s variants. - * config/sh/sh.c (sh_rtx_costs): Add another div0s case. - - 2016-05-06 Marek Polacek - - PR sanitizer/70875 - * ubsan.c (get_ubsan_type_info_for_type): Remove assert. - - 2016-05-06 Oleg Endo - - PR target/54089 - * config/sh/sh.md (*rotcr): Add another variant. - - 2016-05-06 Richard Biener - - PR middle-end/70931 - * dwarf2out.c (native_encode_initializer): Skip zero-sized fields. - - 2016-05-06 Richard Biener - - PR middle-end/70941 - * fold-const.c (split_tree): Always convert to the original type - before negating. - - 2016-05-06 Richard Biener - - * fwprop.c (fwprop): Remove duplicate cleanup_cfg call. - (fwprop_addr): Likewise. - - 2016-05-06 Uros Bizjak - - PR target/70873 - * config/i386/i386-protos.h (ix86_standard_x87sse_constant_load_p): - New prototype. - * config/i386/i386.c (ix86_standard_x87sse_constant_load_p): New. - * config/i386/i386.md (push mem splitter): Use find_constant_src in - the splitter condition. - (FP load splitter): Use ix86_standard_x87sse_constant_load_p in - the splitter condition. - (FP float_extend load splitter): Ditto. - - 2016-05-05 Uros Bizjak - - * config/i386/i386.md (peehole2 patterns): Change true_regnum - to REGNO in all peephole2 patterns. - (post-reload splitters): Change true_regnum to REGNO in - post-reload splitters. - (zero_extend splitters): Use general_reg_operand and - nonimmediate_gr_operand predicates. - - 2016-05-05 Jakub Jelinek - - * config/i386/sse.md (_fmadd__mask3): Use - v constraint instead of x. - - 2016-05-05 Alan Modra - - PR target/68662 - * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Don't - set OPTION_MASK_RELOCATABLE when flag_pic == 2. Set - TARGET_NO_FP_IN_TOC for -mrelocatable. - (MINIMAL_TOC_SECTION_ASM_OP): Remove redundant - TARGET_RELOCATABLE test. - (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. - (ASM_PREFERRED_EH_DATA_FORMAT): Likewise. - * config/rs6000/linux64.h (MINIMAL_TOC_SECTION_ASM_OP): Likewise. - (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. - (ASM_PREFERRED_EH_DATA_FORMAT): Likewise. - * config/rs6000/freebsd64.h (MINIMAL_TOC_SECTION_ASM_OP): Likewise. - (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. - (ASM_PREFERRED_EH_DATA_FORMAT): Likewise. - * config/rs6000/predicates.md (easy_fp_constant): Likewise. - * config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op): - Likewise. - (rs6000_assemble_integer): Update TARGET_RELOCATABLE test. - (rs6000_stack_info): Likewise. - (rs6000_elf_asm_out_constructor): Likewise. - (rs6000_elf_asm_out_destructor): Likewise. - (rs6000_elf_declare_function_name): Likewise. - * config/rs6000/rs6000.md (load_toc_aix_di): Likewise. - * config/rs6000/rs6000.h (MASK_RELOCATABLE, MASK_MINIMAL_TOC): - Don't define. - - 2016-05-05 Alan Modra - - * config/rs6000/rs6000.c (rs6000_frame_related): Rewrite. - - 2016-05-05 Alan Modra - - * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use - out-of-line gpr restore for one or two regs if that would add - a save of lr. - - 2016-05-04 Uros Bizjak - - PR target/70873 - * config/i386/i386.md - (TARGET_SSE_PARTIAL_REG_DEPENDENCY float_extend sf->df peephole2): - Change to post-epilogue_completed late splitter. Use sse_reg_operand - as operand 0 predicate. - (TARGET_SSE_PARTIAL_REG_DEPENDENCY float_truncate df->sf peephole2): - Ditto. - (TARGET_SSE_PARTIAL_REG_DEPENDENCY float {si,di}->{sf,df} peephole2): - Ditto. Emit the pattern using RTX. - - (TARGET_USE_VECTOR_FP_CONVERTS float_extend sf->df splitter): - Use sse_reg_opreand as operand 0 predicate. Do not use true_regnum in - the post-reload splitter. Use lowpart_subreg instead of gen_rtx_REG. - (TARGET_USE_VECTOR_FP_CONVERTS float_truncate df->sf splitter): - Ditto. - (TARGET_USE_VECTOR_CONVERTS float si->{sf,df} splitter): Use - sse_reg_operand as operand 0 predicate. - - (TARGET_SPLIT_MEM_OPND_FOR_FP_CONVERTS float_extend sf->df peephole2): - Use sse_reg_opreand as operand 0 predicate. Use lowpart_subreg - instead of gen_rtx_REG. - (TARGET_SPLIT_MEM_OPND_FOR_FP_CONVERTS float_truncate sf->df peephole2): - Ditto. - - 2016-05-04 Segher Boessenkool - - * function.c (emit_use_return_register_into_block): Delete. - (gen_return_pattern): Delete. - (emit_return_into_block): Delete. - (active_insn_between): Delete. - (convert_jumps_to_returns): Delete. - (emit_return_for_exit): Delete. - (thread_prologue_and_epilogue_insns): Delete all code dealing with - simple_return for shrink-wrapped blocks. - * shrink-wrap.c (try_shrink_wrapping): Insert simple_return at the - end of blocks that need one. - (get_unconverted_simple_return): Delete. - (convert_to_simple_return): Delete. - * shrink-wrap.c (get_unconverted_simple_return): Delete declaration. - (convert_to_simple_return): Ditto. - - 2016-05-04 Segher Boessenkool - - * cfgcleanup.c (bb_is_just_return): New function. - (try_optimize_cfg): Simplify jumps to return, branches to return, - and branches around return. - - 2016-05-04 Segher Boessenkool - - * cfgcleanup.c (try_simplify_condjump): Don't try to simplify a - branch to a return. - - 2016-05-04 Jakub Jelinek - - PR c++/70906 - PR c++/70933 - * tree-core.h (enum operand_equal_flag): Add OEP_HASH_CHECK. - * tree.c (inchash::add_expr): If !IS_EXPR_CODE_CLASS (tclass), - assert flags & OEP_HASH_CHECK, instead of asserting it - never happens. Handle TARGET_EXPR. - * fold-const.c (operand_equal_p): For hash verification, - or in OEP_HASH_CHECK into flags. - - 2016-05-04 Eric Botcazou - - * tree-ssa-coalesce.c (gimple_can_coalesce_p): Fix reference in head - comment. - (compute_samebase_partition_bases): Fix typo. - - 2016-05-04 Jakub Jelinek - - * config/i386/sse.md (vec_interleave_highv8sf, - vec_interleave_lowv8sf, vec_interleave_highv4df, - vec_interleave_lowv4df): Remove constraints from expanders. - - * config/i386/sse.md (sse2_movq128): Use v constraint instead of x. - - 2016-05-04 Jan Hubicka - - * tree-inline.c (expand_call_inline): Fix path dealing with - making lhs of call statement undefined. - - 2016-05-04 Jan Hubicka - - * cgraph.c (cgraph_node::call_for_symbol_thunks_and_aliases): - Check availability on NODE, too. - * cgraph.h (symtab_node::call_for_symbol_and_aliases): Likewise. - (cgraph_node::call_for_symbol_and_aliases): Likewise. - (varpool_node::call_for_symbol_and_aliase): Likewise. - * ipa-pure-const.c (add_new_function): Analyze all bodies. - (propagate_pure_const): Propagate across interposable functions, too. - (skip_function_for_local_pure_const): Do not skip interposable bodies - with aliases. - (pass_local_pure_const::execute): Update. - - 2016-05-04 Marek Polacek - - * doc/invoke.texi: Document -Wdangling-else. - - 2016-05-04 Thomas Preud'homme - - * config.gcc: Error out when conflicting multilib is detected. Do not - loop over multilibs since no combination is legal. - - 2016-05-04 Alan Modra - - * config/rs6000/rs6000.h (PIC_OFFSET_TABLE_REGNUM): Correct. - * config/rs6000/sysv4.h (TARGET_TOC): Simplify. - * config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op): - Align .toc. - - 2016-05-04 Matthew Fortune - - * config/mips/mips-cpus.def (p5600): Avoid IMADD by default. - Clean up p5600 comments. - - 2016-05-04 Richard Biener - - * match.pd: Add BIT_FIELD_REF canonicalizations and vector - constructor simplifications. - * fold-const.c (fold_ternary_loc): Remove duplicate functionality here. - - 2016-05-04 Oleg Endo - - * config/sh/predicates (post_inc_mem, pre_dec_mem): New predicates. - * config/sh/sh-protos.h (sh_find_set_of_reg): Return null result if - result.set_rtx is null instead of aborting. - * config/sh/sh.h (USE_LOAD_POST_INCREMENT, USE_STORE_PRE_DECREMENT): - Always enable. - (USE_LOAD_PRE_DECREMENT, USE_STORE_POST_INCREMENT): Enable for SH2A. - * config/sh/sh.md (*extendsi2_predec, *mov_load_predec, - *mov_store_postinc): New patterns. - - 2016-05-04 Marc Glisse - - * match.pd ((A | B) & (A | C)): Generalize to BIT_XOR_EXPR. Mark - as commutative. Check both conversions are NOP. - ((A & B) OP (C & B)): Remove. - - 2016-05-04 Alan Modra - - * combine.c (simplify_set): Correct WORD_REGISTER_OPERATIONS test. - - 2016-05-04 Alan Modra - - PR target/70866 - * config/rs6000/rs6000.c (rs6000_stack_info): Don't set cr_save_p - when cr2,3,4 are all fixed regs. - - 2016-05-04 Bernd Schmidt - - PR rtl-optimization/57193 - * opts.c (default_options_table): Revert OPT_frename_registers change. - * doc/invoke.texi (-frename-registers, -O2): Likewise. - - 2016-05-03 Martin Sebor - - PR c++/66561 - * builtins.c (fold_builtin_FILE): New function. - (fold_builtin_FUNCTION, fold_builtin_LINE): New functions. - (fold_builtin_0): Call them. - * gimplify.c (gimplify_call_expr): Remove the handling of - BUILT_IN_FILE, BUILT_IN_FUNCTION, and BUILT_IN_LINE. - - PR c++/66561 - * doc/extend.texi (Other Builtins): Update __builtin_FILE, - __builtin_FUNCTION, and __builtin_LINE to reflect they yield - constants. - - PR c++/66639 - * doc/extend.texi (Function Names as Strings): Update __func__, - __FUNCTION__, __PRETTY_FUNCTION__ to reflect they evaluate to - constants. - - 2016-05-03 Jakub Jelinek - Richard Biener - - PR tree-optimization/70916 - * tree-if-conv.c: Include cfganal.h. - (pass_if_conversion::execute): Call connect_infinite_loops_to_exit - and remove_fake_exit_edges around the optimization pass. - - 2016-05-03 Jan Hubicka - - * cgraph.c (symbol_table::create_edge): Set inline_failed. - (cgraph_edge::make_direct): Likewise. - (cgraph_edge::dump_edge_flags): Dump call_stmt_cannot_inline_p. - * cgraphclones.c (duplicate_thunk_for_node): Set inline_failed. - * cif-code.def (CIF_LTO_MISMATCHED_DECLARATIONS): New code - (CIF_THUNK): New code. - * ipa-inline-analysis.c (initialize_inline_failed): Preserve - CIF_FINAL_ERROR codes; do not deal with call_stmt_cannot_inline_p. - (compute_inline_parameters): Set inline_failed for thunks. - (inline_analyze_function): Cleanup. - * ipa-inline.c (can_inline_edge_p): Do not deal with - call_stmt_cannot_inline_p. - (can_early_inline_edge_p): Likewise. - (early_inliner): Initialize inline_failed. - * lto-cgraph.c (lto_output_edge): Sanity check inline_failed. - - 2016-05-03 Uros Bizjak - - * config/i386/predicates.md (x87nonimm_ssenomem_operand): Rename - from nonimm_ssenomem_operand. - (nonimm_ssenomem_operand): New predicate. - * config/i386/i386.md (extendsfdf2): Use nonimm_ssenomem_operand - as operand 0 predicate. - (*extendsfdf2): Merge from *extendsfdf2_mixed and *extendsfdf2_i387. - Disable unsupported alternatives using "enabled" attribute. - Use register_ssemem_operand as operand 0 predicate. - (*fop__1): Use x87nonimm_ssenomem_operand as operand 1 predicate. - - 2016-05-03 Marek Polacek - - PR c/70859 - * input.c (expansion_point_location): New function. - * input.h (expansion_point_location): Declare. - - 2016-05-03 Pierre-Marie de Rodat - - * dwarf2out.c (resolve_args_picking_1): Replace the frame_offset - occurence with frame_offset_ ones. - - 2016-05-03 Alan Modra - - PR rtl-optimization/70890 - * ira.c (combine_and_move_insns): When moving def_insn, remove - equivs on use_insn. - - 2016-05-03 Dominik Vogt - - * config/s390/s390.md ("*rsbg__sll") - ("*rsbg__srl"): New define_insns. - ("*rsbg__srl_bitmask"): Rename by adding "_bitmask". - ("*rsbg__sll_bitmask"): Likewise. - - 2016-05-03 Alan Modra - - * config/rs6000/rs6000.c (rs6000_savres_strategy): Correct condition - for SAVE_MULTIPLE/STORE_MULTIPLE. - - 2016-05-03 Jakub Jelinek - - * config/i386/i386.md (*truncdfsf_mixed, *truncdfsf_i387, - *truncxfsf2_mixed, *truncxfdf2_mixed): Use v constraint instead of x. - - 2016-05-03 Richard Biener - - * gimplify.h (get_initialized_tmp_var): Add allow_ssa parameter - default true. - (gimplify_arg): Likewise. - * gimplify.c (gimplify_expr): Add overload with allow_ssa parameter, - re-writing the result to a decl if required. - (internal_get_tmp_var): Add allow_ssa parameter - and override into_ssa with it. - (get_formal_tmp_var): Adjust. - (get_initialized_tmp_var): Add allow_ssa parameter. - (gimplify_arg): Add allow_ssa parameter and avoid generating - SSA names for the result false. - (gimplify_call_expr): If the call may return twice do not - gimplify parameters into SSA. - (prepare_gimple_addressable): Do not allow an SSA name as temporary. - (gimplify_modify_expr): Adjust assert. For noreturn calls - with a SSA name LHS adjust its def. - (gimplify_save_expr): Do not allow an SSA name as save-expr result. - (gimplify_one_sizepos): Do not allow an SSA name as a sizepos. - (gimplify_body): Init GIMPLE SSA data structures and gimplify into-SSA. - (gimplify_scan_omp_clauses): Make sure OMP_CLAUSE_SIZE is not - an SSA name. Likewise for OMP_CLAUSE_REDUCTION operands. - (gimplify_omp_for): Likewise for OMP_CLAUSE_DECL. Likewise - for OMP_FOR_COND, OMP_FOR_INCR and OMP_CLAUSE_LINEAR_STEP. - (optimize_target_teams): Do not allow SSA names for clause operands. - (gimplify_expr): Likewise for where we mark the result addressable. - * passes.def (pass_init_datastructures): Remove. - * tree-into-ssa.c (mark_def_sites): Ignore existing SSA names. - (rewrite_stmt): Likewise. - * tree-inline.c (initialize_cfun): Properly transfer SSA state. - (replace_locals_op): Replace SSA names. - (copy_gimple_seq_and_replace_locals): Init src_cfun. - * gimple-low.c (lower_builtin_setjmp): Deal with SSA. - * cgraph.c (release_function_body): Free CFG annotations only - when we have a CFG. Simplify. - * gimple-fold.c (gimplify_and_update_call_from_tree): Use - force_gimple_operand instead of get_initialized_tmp_var. - * tree-pass.h (make_pass_init_datastructures): Remove. - * tree-ssa.c (execute_init_datastructures): Remove. - (pass_data_init_datastructures): Likewise. - (class pass_init_datastructures): Likewise. - (make_pass_init_datastructures): Likewise. - * omp-low.c (create_omp_child_function): Init SSA data structures. - (grid_expand_target_grid_body): Likewise. - * tree-cfg.c (move_block_to_fn): Double-check the DEF is an SSA - name before adding it to names_to_release. - (remove_bb): Always release SSA defs. - * tree-ssa-ccp.c (get_default_value): Check SSA_NAME_VAR - before dereferencing it. - * cgraphunit.c (init_lowered_empty_function): Always - int SSA data structures. - * tree-ssanames.c (release_defs): Remove assert that we are in - SSA form. - * trans-mem.c (diagnose_tm_1): Handle SSA name function. - - 2016-05-03 Jakub Jelinek - Uros Bizjak - - PR rtl-optimization/70467 - * config/i386/predicates.md (x86_64_hilo_int_operand, - x86_64_hilo_general_operand): New predicates. - * config/i386/constraints.md (Wd): New constraint. - * config/i386/i386.md (mode attr di): Use Wd instead of e. - (general_hilo_operand): New mode attr. - (add3, sub3): Use - instead of . - (*add3_doubleword, *sub3_doubleword): Use - x86_64_hilo_general_operand instead of . - - 2016-05-03 Jakub Jelinek - - PR tree-optimization/70916 - * tree-if-conv.c (constant_or_ssa_name): Removed. - (fold_build_cond_expr): Use is_gimple_val instead of - constant_or_ssa_name. - - PR tree-optimization/70916 - * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Give up - if COND_EXPR rhs1 is neither SSA_NAME nor COMPARISON_CLASS_P. - - PR target/49244 - * tree-ssa-ccp.c: Include stor-layout.h and optabs-query.h. - (optimize_atomic_bit_test_and): New function. - (pass_fold_builtins::execute): Use it. - * optabs.def (atomic_bit_test_and_set_optab, - atomic_bit_test_and_complement_optab, - atomic_bit_test_and_reset_optab): New optabs. - * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, - ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_BIT_TEST_AND_RESET): New ifns. - * builtins.h (expand_ifn_atomic_bit_test_and): New prototype. - * builtins.c (expand_ifn_atomic_bit_test_and): New function. - * internal-fn.c (expand_ATOMIC_BIT_TEST_AND_SET, - expand_ATOMIC_BIT_TEST_AND_COMPLEMENT, - expand_ATOMIC_BIT_TEST_AND_RESET): New functions. - * doc/md.texi (atomic_bit_test_and_set@var{mode}, - atomic_bit_test_and_complement@var{mode}, - atomic_bit_test_and_reset@var{mode}): Document. - * config/i386/sync.md (atomic_bit_test_and_set, - atomic_bit_test_and_complement, - atomic_bit_test_and_reset): New expanders. - (atomic_bit_test_and_set_1, - atomic_bit_test_and_complement_1, - atomic_bit_test_and_reset_1): New insns. - - 2016-05-03 Richard Sandiford - - PR rtl-optimization/70687 - * combine.c (change_zero_ext): Check for scalar modes. Use wide_int - instead of unsigned HOST_WIDE_INT. - - 2016-05-03 Bernd Schmidt - - PR rtl-optimization/44281 - * hard-reg-set.h (struct target_hard_regs): New field - x_fixed_nonglobal_reg_set. - (fixed_nonglobal_reg_set): New macro. - * reginfo.c (init_reg_sets_1): Initialize it. - * ira.c (setup_alloc_regs): Use fixed_nonglobal_reg_set instead - of fixed_reg_set. - * df-scan.c (df_insn_refs_collect): Asms may reference global regs. - - 2016-05-03 Bin Cheng - - PR tree-optimization/56541 - * doc/invoke.texi (@item max-tree-if-conversion-phi-args): New item. - * params.def (PARAM_MAX_TREE_IF_CONVERSION_PHI_ARGS): new param. - * tree-if-conv.c (MAX_PHI_ARG_NUM): new macro. - (any_complicated_phi): new static variable. - (aggressive_if_conv): delete. - (if_convertible_phi_p): support phis with more than two arguments. - (if_convertible_bb_p): remvoe check on aggressive_if_conv and - critical pred edges. - (ifcvt_split_critical_edges): support phis with more than two - arguments by checking new parameter. only split critical edges - if needed. - (tree_if_conversion): handle simd pragma marked loop using new - local variable aggressive_if_conv. check any_complicated_phi. - - 2016-05-03 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_computation_cost_at): Check depends_on - before using it. - - 2016-05-03 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber - cbase. - - 2016-05-03 Oleg Endo - - * config/sh/sh.md (udivsi3, divsi3, mulsi3): Simplify. - (mulhisi3, umulhisi3, (smulsi3_highpart, umulsi3_highpart): Convert to - define_insn_and_split. - (mulsi3_i): New define_insn_and_split. - (mulsi3_call): Convert to define_insn. - (mulsidi3, mulsidi3_compact, umulsidi3, umulsidi3_compact): - Remove constraints. - - 2016-05-02 Michael Meissner - - * machmode.h (mode_complex): Add support to give the complex mode - for a given mode. - (GET_MODE_COMPLEX_MODE): Likewise. - * stor-layout.c (layout_type): For COMPLEX_TYPE, use the mode - stored by build_complex_type and gfc_build_complex_type instead of - trying to figure out the appropriate mode based on the size. Raise - an assertion error, if the type was not set. - * genmodes.c (struct mode_data): Add field for the complex type of - the given type. - (blank_mode): Likewise. - (make_complex_modes): Remember the complex mode created in the - base type. - (emit_mode_complex): Write out the mode_complex array to map a - type mode to the complex version. - (emit_insn_modes_c): Likewise. - * tree.c (build_complex_type): Set the complex type to use before - calling layout_type. - * config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Add - support for __float128 complex datatypes. - (rs6000_hard_regno_mode_ok): Likewise. - (rs6000_setup_reg_addr_masks): Likewise. - (rs6000_complex_function_value): Likewise. - * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Likewise. - __float128 and __ibm128 complex. - (FLOAT128_IBM_P): Likewise. - (ALTIVEC_ARG_MAX_RETURN): Likewise. - * doc/extend.texi (Additional Floating Types): Document that - -mfloat128 must be used to enable __float128. Document complex - __float128 and __ibm128 support. - - 2016-05-02 Jakub Jelinek - - PR target/49244 - * gimple.c (gimple_builtin_call_types_compatible_p): Allow - char/short arguments promoted to int because of promote_prototypes. - - 2016-05-02 Uros Bizjak - - * config/i386/predicates.md (register_ssemem_operand): New predicate. - * config/i386/i386.md (*cmpi): Merge from - *cmpi_mixed and - *cmpi_i387. Disable unsupported - alternatives using "enabled" attribute. Use register_ssemem_operand - as operand 1 predicate. - (*cmpixf_i387): Split XFmode pattern from - *cmpi_i387. - (*absneg2): Merge from *absneg2_mixed and - *absneg2_i387. Disable unsupported alternatives using - "enabled" attribute. - (*absnegxf2_i387): Split XFmode pattern from *absneg2_i387. - - 2016-05-02 Nathan Sidwell - - * omp-low.c (lower_oacc_head_tail): Assert there is at least one - marker. - (oacc_loop_process): Check mask for loop termination. - - 2016-05-02 Jan Hubicka - - * cif-code.def (CIF_THUNK): Add. - * ipa-inline-analsysis.c (evaluate_conditions_for_known_args): Revert - accidental change. - - 2016-05-02 Jan Hubicka - - * ipa-inline-analysis.c (reset_inline_summary): Clear fp_expressions - (dump_inline_summary): Dump it. - (fp_expression_p): New predicate. - (estimate_function_body_sizes): Use it. - (inline_merge_summary): Merge fp_expressions. - (inline_read_section): Read fp_expressions. - (inline_write_summary): Write fp_expressions. - * ipa-inline.c (can_inline_edge_p): Permit inlining across fp math - codegen boundary if either caller or callee is !fp_expressions. - * ipa-inline.h (inline_summary): Add fp_expressions. - * ipa-inline-transform.c (inline_call): When inlining !fp_expressions - to fp_expressions be sure the fp generation flags are updated. - - 2016-05-02 Jakub Jelinek - - PR rtl-optimization/70467 - * cse.c (cse_insn): Handle no-op MEM moves after folding. - - PR rtl-optimization/70467 - * ipa-pure-const.c (check_call): Handle internal calls even in - ipa mode like in local mode. - - 2016-05-02 Bernd Edlinger - - * doc/install.texi: Document supported in-tree gmp/mpfr/mpc versions. - - 2016-05-02 Marc Glisse - - * match.pd (X u< X, X u> X): New transformations. - - 2016-05-02 Marc Glisse - - * flag-types.h (enum warn_strict_overflow_code): Move ... - * coretypes.h: ... here. - * fold-const.h (fold_overflow_warning): Declare. - * fold-const.c (fold_overflow_warning): Make non-static. - (fold_comparison): Move the transformation of X +- C1 CMP C2 - into X CMP C2 -+ C1 ... - * match.pd: ... here. - * gimple-fold.c (fold_stmt_1): Protect with - fold_defer_overflow_warnings. - - 2016-05-02 Nathan Sidwell - - * omp-low.c (struct oacc_loop): Add 'inner' field. - (new_oacc_loop_raw): Initialize it to zero. - (oacc_loop_fixed_partitions): Initialize it. - (oacc_loop_auto_partitions): Partition outermost loop to outermost - available partitioning. - - 2016-05-02 Claudiu Zissulescu - - * config/arc/arc.md (mulsidi3): Change operand 0 predicate to - register_operand. - (umulsidi3): Likewise. - (indirect_jump): Fix jump instruction assembly patterns. - - 2016-05-02 Thomas Schwinge - - PR target/70860 - * config/nvptx/nvptx.c (nvptx_libcall_value): Handle NULL cfun. - (nvptx_function_value): Assert non-NULL cfun. - - 2016-05-02 Eric Botcazou - - PR rtl-optimization/70886 - * sched-deps.c (estimate_dep_weak): Canonicalize cselib values. - - * cselib.h (rtx_equal_for_cselib_1): Declare. - (rtx_equal_for_cselib_p: New inline function. - * cselib.c (rtx_equal_for_cselib_p): Delete. - (rtx_equal_for_cselib_1): Make public. - - 2016-05-02 Uros Bizjak - - * config/i386/predicates.md (nonimm_ssenomem_operand): New predicate. - (register_mixssei387nonimm_operand): Remove predicate. - * config/i386/i386.md (*fop__comm): Merge from - *fop__comm_mixed and *fop__comm_i387. Disable unsupported - alternatives using "enabled" attribute. Also check X87_ENABLE_ARITH - for TARGET_MIX_SSE_I387 alternatives. - (*fop__1): Merge from *fop__1_mixed and *fop__1_i387. - Disable unsupported alternatives using "enabled" attribute. Use - nonimm_ssenomem_operand as operand 1 predicate. Also check - X87_ENABLE_ARITH for TARGET_MIX_SSE_I387 alternatives. - - 2016-05-02 Richard Sandiford - - * tree.c (cst_and_fits_in_hwi): Simplify. - - 2016-05-02 Richard Sandiford - - * tree.h (wi::to_wide): New function. - * expr.c (expand_expr_real_1): Use wi::to_wide. - * fold-const.c (int_const_binop_1): Likewise. - (extract_muldiv_1): Likewise. - - 2016-05-02 Richard Sandiford - - * wide-int.h: Update offset_int and widest_int documentation. - (WI_SIGNED_SHIFT_RESULT): New macro. - (wi::binary_shift): Define signed_shift_result_type for - shifts on offset_int- and widest_int-like types. - (generic_wide_int): Support <<= and >>= if << and >> are supported. - * tree.h (int_bit_position): Use shift operators instead of wi:: - shifts. - * alias.c (adjust_offset_for_component_ref): Likewise. - * expr.c (get_inner_reference): Likewise. - * fold-const.c (fold_comparison): Likewise. - * gimple-fold.c (fold_nonarray_ctor_reference): Likewise. - * gimple-ssa-strength-reduction.c (restructure_reference): Likewise. - * tree-dfa.c (get_ref_base_and_extent): Likewise. - * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise. - (stmt_kills_ref_p): Likewise. - * tree-ssa-ccp.c (bit_value_binop_1): Likewise. - * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise. - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. - (ao_ref_init_from_vn_reference): Likewise. - - 2016-05-02 Richard Sandiford - - * wide-int.h: Update offset_int and widest_int documentation. - (WI_SIGNED_BINARY_PREDICATE_RESULT): New macro. - (wi::binary_traits): Allow ordered comparisons between offset_int and - offset_int, between widest_int and widest_int, and between either - of these types and basic C types. - (operator <, <=, >, >=): Define for the same combinations. - * tree.h (tree_int_cst_lt): Use comparison operators instead - of wi:: comparisons. - (tree_int_cst_le): Likewise. - * gimple-fold.c (fold_array_ctor_reference): Likewise. - (fold_nonarray_ctor_reference): Likewise. - * gimple-ssa-strength-reduction.c (record_increment): Likewise. - * tree-affine.c (aff_comb_cannot_overlap_p): Likewise. - * tree-parloops.c (try_transform_to_exit_first_loop_alt): Likewise. - * tree-sra.c (completely_scalarize): Likewise. - * tree-ssa-alias.c (stmt_kills_ref_p): Likewise. - * tree-ssa-reassoc.c (extract_bit_test_mask): Likewise. - * tree-vrp.c (extract_range_from_binary_expr_1): Likewise. - (check_for_binary_op_overflow): Likewise. - (search_for_addr_array): Likewise. - * ubsan.c (ubsan_expand_objsize_ifn): Likewise. - - 2016-05-02 Claudiu Zissulescu - - * config/arc/arc.c (arc_preferred_simd_mode): Remove enum keyword. - (arc_save_restore): Likewise. - (arc_dwarf_register_span): Likewise. - (arc_output_pic_addr_const): Initialize suffix variable. - - 2016-05-02 Martin Liska - - * symbol-summary.h (function_summary::function_summary): - Remove checking assert for all cgraph nodes. - (function_summary::get): Check summary_uid. - (symtab_insertion): Check summary_uid. - - 2016-05-02 Claudiu Zissulescu - - * config/arc/arc-protos.h (compact_memory_operand_p): Declare. - * config/arc/arc.c (arc_output_commutative_cond_exec): Consider - bmaskn instruction. - (arc_dwarf_register_span): Remove enum keyword. - (compact_memory_operand_p): New function. - * config/arc/arc.h (reg_class): Add code density register classes. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - * config/arc/arc.md (*movqi_insn): Add code density instructions. - (*movhi_insn, *movsi_insn, *movsf_insn): Likewise. - (*extendhisi2_i, andsi3_i, cmpsi_cc_insn_mixed): Likewise. - (*cmpsi_cc_c_insn, *movsi_ne): Likewise. - * config/arc/constraints.md (C2p, Uts, Cm1, Cm3, Ucd): New - constraints. - (h, Rcd, Rsd, Rzd): New register constraints. - (T): Use compact_memory_operand_p function. - * config/arc/predicates.md (compact_load_memory_operand): Remove. - - 2016-05-02 Oleg Endo - - * config/sh/sh.md (*negnegt, *movtt): Remove. - - 2016-05-02 Marek Polacek - Tom de Vries - - PR tree-optimization/70700 - * tree-ssa-structalias.c (dump_pred_graph): Fix getting varinfo for ids - bigger than FIRST_REF_NODE. - - 2016-05-02 Oleg Endo - - PR target/52898 - * config/sh/sh.c (sh_option_override): Remove TARGET_CBRANCHDI4, - TARGET_CMPEQDI_T. - (prepare_cbranch_operands): Don't use scratch register. Assume that - function is used when pseudos can be created. - (expand_cbranchdi4): Likewise. Remove unused TARGET_CMPEQDI_T paths. - * config/sh/sh.md (cbranchsi4): Allow only when pseudos can be created. - (cbranchdi4, cbranchdi4_i): Simplify to single cbranchdi4 - define_expand. Allow it only when pseudos can be created. - * config/sh/sh.opt (mcbranchdi, mcmpeqdi): Delete. - - 2016-05-01 Uros Bizjak - - * config/i386/constraints.md (BC): Only allow -1 operands. - * config/i386/sse.md (mov_internal): Add (v,C) alternative. - Add "enabled" attribute. Update XI mode attribute calculation. - * config/i386/i386.md (*movxi_internal_avx512f): Add (v,C) alternative. - (*movoi_internal_avx): Update XI mode attribute calculation. - (*movti_internal): Ditto. - - 2016-05-01 Oleg Endo - - * config/sh/sh.md (push, pop, ic_invalidate_line, cstoresi4, cstoredi4, - cstoresf4, cstoredf4, fix_truncsfsi2): Remove constraints. - - 2016-05-01 Eric Botcazou - - * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Do not use switch - statement on instruction code. Remove trailing spaces. - (altivec_expand_stv_builtin): Likewise. - - 2016-05-01 Oleg Endo - - * config/sh/sh.h (TARGET_SH4): Remove and use default implementation. - (TARGET_FPU_DOUBLE): Simplify. - (BASE_ARG_REG, DOUBLE_TYPE_SIZE, OPTIMIZE_MODE_SWITCHING): Replace - 'TARGET_SH4 || TARGET_SH2A_DOUBLE' conditions with 'TARGET_FPU_DOUBLE'. - * config/sh/sh.c: Replace 'TARGET_SH4 || TARGET_SH2A_DOUBLE' conditions - with 'TARGET_FPU_DOUBLE'. - * config/sh/sh.md: Likewise. - - 2016-05-01 Yoshinori Sato - - * config/sh/linux.h (SH_DIV_STRATEGY_DEFAULT, - SH_DIV_STR_FOR_SIZE): Remove. - * config/sh/netbsd-elf.h (SH_DIV_STRATEGY_DEFAULT, - SH_DIV_STR_FOR_SIZE): Remove. - - 2016-05-01 Oleg Endo - - * config/sh/predicates.md (any_register_operand, zero_extend_operand, - logical_reg_operand): Delete. - (arith_operand, arith_reg_dest, arith_or_int_operand, cmpsi_operand, - arith_reg_or_0_operand, arith_reg_or_0_or_1_operand, logical_operand, - logical_and_operand, movsrc_no_disp_mem_operand): Rewrite using - match_operand and match_test. - (sh_const_vec, sh_1el_vec): Remove redundant checks. Declare local - variables on their first use. Return bool values. - * config/sh/sh.h (LOAD_EXTEND_OP): Update comment. - * config/sh/sh.md (andsi3, iorsi3): Use arith_reg_dest for result and - arith_reg_operand for input operand. Remove empty constraints. - (xorsi3): Delete. - (*xorsi3_compact): Rename to xorsi3. - (zero_extendsi2): Use arith_reg_operand for input operand. - (*zero_extendsi2_disp_mem): Update comment. - (mov_nop): Delete. - - 2016-04-30 Oleg Endo - - * config/sh/t-sh: Remove SH5 support. - * config.gcc: Likewise. - * configure: Likewise. - - 2016-04-30 Rainer Orth - - * config/darwin.h (LINK_COMMAND_SPEC_A): Handle -fcilkplus. - - 2016-04-30 Oleg Endo - - * config/sh/sh.c (register_sh_passes, sh_option_override, - sh_print_operand, prepare_move_operands, - sh_can_follow_jump): Remove TARGET_SH1 checks. - * config/sh/sh.h (TARGET_VARARGS_PRETEND_ARGS, VALID_REGISTER_P, - PROMOTE_MODE): Likewise. - * config/sh/sh.md (adddi3, addsi3, subdi3, subsi3, andsi3, - movdi): Likewise. - - 2016-04-30 Alan Modra - - * config/rs6000/rs6000.c (rs6000_savres_strategy): Force inline - restoring when fixed_reg_p, but allow out-of-line or stmw save. - Check for user regs later to avoid unnecessary looping over regs. - Merge user reg check with non-saved reg check. Don't force - inline VR restore when static chain used. - (rs6000_frame_related): Omit eh_frame info for user regs when - saving. - (fixed_regs_p): Delete. - - 2016-04-30 Alan Modra - - * config/rs6000/rs6000.c (SAVRES_MULTIPLE): Replace with.. - (SAVE_STRATEGY, REST_STRATEGY): ..this. Renumber and sort enum. - Update all uses. - - 2016-04-30 Alan Modra - - PR target/69645 - * config/rs6000/rs6000.c (fixed_reg_p): New function. - (fixed_regs_p): Rename from global_regs_p. Call fixed_reg_p. - Update all uses. - - 2016-04-30 Alan Modra - - * config/rs6000/rs6000.c (rs6000_conditional_register_usage): - Remove redundant PIC_OFFSET_TABLE_REGNUM test. Replace with - flag_pic test for Darwin. - - 2016-04-30 Alan Modra - - * regs.h (struct reg_info_t): Delete freq_calls_crossed and - throw_calls_crossed. - (REG_FREQ_CALLS_CROSSED): Delete. - (REG_N_THROWING_CALLS_CROSSED): Delete. - * regstat.c (regstat_bb_compute_ri): Don't calculate - REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED. - (dump_reg_info): Don't print call cross frequency. - * ira.c (combine_and_move_insns): Don't set REG_FREQ_CALLS_CROSSED - and REG_N_THROWING_CALLS_CROSSED. - - 2016-04-30 Alan Modra - - * regs.h (struct reg_info_t): Delete live_length. - (REG_LIVE_LENGTH): Delete macro. - * regstat.c (regstat_bb_compute_ri): Delete artificial_uses, - local_live, local_processed and local_live_last_luid params. - Replace bb_index param with bb. Don't set REG_LIVE_LENGTH. - Formatting fixes. - (regstat_compute_ri): Adjust for above. Don't set - REG_LIVE_LENGTH. - (dump_reg_info): Don't print live length. - * ira.c (update_equiv_regs): Replace test of REG_LIVE_LENGTH - with test of setjmp_crosses. Don't set REG_LIVE_LENGTH. - Localize loop_depth var. - - 2016-04-30 Alan Modra - - * ira.c (enum valid_equiv): New. - (validate_equiv_mem): Return enum. - (update_equiv_mem): Create replacement in more cases. - (add_store_equivs): Update validate_equiv_mem call. - - 2016-04-30 Alan Modra - - * ira.c (combine_and_move_insns): Rather than scanning insns, - use DF infrastucture to find use and def insns. - - 2016-04-30 Alan Modra - - ira.c (combine_and_move_insns): Move invariant conditions.. - (ira.c): ..to here. Call combine_and_move_insns before - add_store_equivs. Call grow_reg_equivs later. Allocate - req_equiv later using max_reg_num() rather than global max_regno. - (contains_replace_regs): Delete. - (add_store_equivs): Remove contains_replace_regs test. - - 2016-04-30 Alan Modra - - * ira.c (struct equiv_mem_data): New. - (equiv_mem, equiv_mem_modified): Delete static vars. - (validate_equiv_mem_from_store): Use "data" param to communicate.. - (validate_equiv_mem): ..from here. - - 2016-04-30 Alan Modra - - * ira.c (add_store_equivs, combine_and_move_insns): New functions, - split out from.. - (update_reg_equivs): ..here. Move allocation and freeing of - reg_equiv, and calls to grow_reg_equivs, init_alias_analysis, - end_alias_analysis to.. - (ira): ..here. - - 2016-04-30 Alan Modra - - * ira.c (pdx_subregs): Delete. - (struct equivalence): Add pdx_subregs field. - (set_paradoxical_subreg): Remove pdx_subregs param. Update - pdx_subregs access. - (update_equiv_regs): Don't create or free pdx_subregs. Update - pdx_subregs access. - - 2016-04-29 Bill Schmidt - - * config/rs6000/altivec.h: Change definitions of vec_xl and - vec_xst. - * config/rs6000/rs6000-builtin.def (LD_ELEMREV_V2DF): New. - (LD_ELEMREV_V2DI): New. - (LD_ELEMREV_V4SF): New. - (LD_ELEMREV_V4SI): New. - (LD_ELEMREV_V8HI): New. - (LD_ELEMREV_V16QI): New. - (ST_ELEMREV_V2DF): New. - (ST_ELEMREV_V2DI): New. - (ST_ELEMREV_V4SF): New. - (ST_ELEMREV_V4SI): New. - (ST_ELEMREV_V8HI): New. - (ST_ELEMREV_V16QI): New. - (XL): New. - (XST): New. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - descriptions for VSX_BUILTIN_VEC_XL and VSX_BUILTIN_VEC_XST. - * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Map from - TARGET_P9_VECTOR to RS6000_BTM_P9_VECTOR. - (altivec_expand_builtin): Add handling for - VSX_BUILTIN_ST_ELEMREV_ and VSX_BUILTIN_LD_ELEMREV_. - (rs6000_invalid_builtin): Add error-checking for - RS6000_BTM_P9_VECTOR. - (altivec_init_builtins): Define builtins used to implement vec_xl - and vec_xst. - (rs6000_builtin_mask_names): Define power9-vector. - * config/rs6000/rs6000.h (MASK_P9_VECTOR): Define. - (RS6000_BTM_P9_VECTOR): Define. - (RS6000_BTM_COMMON): Include RS6000_BTM_P9_VECTOR. - * config/rs6000/vsx.md (vsx_ld_elemrev_v2di): New define_insn. - (vsx_ld_elemrev_v2df): Likewise. - (vsx_ld_elemrev_v4sf): Likewise. - (vsx_ld_elemrev_v4si): Likewise. - (vsx_ld_elemrev_v8hi): Likewise. - (vsx_ld_elemrev_v16qi): Likewise. - (vsx_st_elemrev_v2df): Likewise. - (vsx_st_elemrev_v2di): Likewise. - (vsx_st_elemrev_v4sf): Likewise. - (vsx_st_elemrev_v4si): Likewise. - (vsx_st_elemrev_v8hi): Likewise. - (vsx_st_elemrev_v16qi): Likewise. - * doc/extend.texi: Add prototypes for vec_xl and vec_xst. Correct - grammar. - - 2016-04-29 Patrick Palka - - * tree-ssa-threadedge.c (simplify_control_stmt_condition): Split - out into ... - (simplify_control_stmt_condition_1): ... here. Recurse into - BIT_AND_EXPRs and BIT_IOR_EXPRs. - - 2016-04-29 David Edelsohn - - PR target/69810 - * config/rs6000/rs6000.md (EXTQI): Don't allow extension to HImode. - (zero_extendqi2_dot): Revert earlier conversion from - define_insn_and_split to define_insn. - (zero_extendqi2_dot2): Same. - (extendqi2_dot): Same. - (extendqi2_dot2): Same. - - 2016-04-29 Uros Bizjak - - * config/i386/i386.md (unspec): Add UNSPEC_PROBE_STACK. - (probe_stack): New expander. - (probe_stack_): New insn pattern. - - 2016-04-29 Uros Bizjak - - * config/i386/i386.md - (operations with memory inputs setting flags peephole2): - Remove uneeded REG_P checks. Cleanup pattern generation. - - 2016-04-29 Ilya Enkovich - - * tree-vect-loop.c (vect_transform_loop): Fix - nb_iterations_upper_bound computation for vectorized loop. - - 2016-04-29 Marek Polacek - Jakub Jelinek - - PR sanitizer/70342 - * fold-const.c (tree_single_nonzero_warnv_p): For TARGET_EXPR, use - TARGET_EXPR_SLOT as a base. - - 2016-04-29 Andrew Burgess - - * config/arc/arc.md (*loadqi_update): Replace use of 'rI' constraint - with 'rCm2' constraints to limit possible immediate size. - (*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. - - 2016-04-29 Uros Bizjak - - * config/i386/predicates.md (constm1_operand): Fix comparison. - - 2016-04-29 Claudiu Zissulescu - - * testsuite/gcc.target/arc/ieee_eq.c: New test. - - 2016-04-29 Oleg Endo - - * common/config/sh/sh-common.c (sh_option_optimization_table): Remove - remaining SH5 related settings. - * config/sh/sh-protos.h (shmedia_cleanup_truncate, - shmedia_prepare_call_address): Delete. - * config/sh/sh.c (sh_print_operand, output_stack_adjust, - DWARF_CIE_DATA_ALIGNMENT, LOCAL_ALIGNMENT): Update comments. - * config/sh/sh.h (SUBTARGET_ASM_RELAX_SPEC, - UNSUPPORTED_SH2A): Remove m5 checks. - (sh_divide_strategy_e): Remove SH5 division strategies. - (TARGET_PTRMEMFUNC_VBIT_LOCATION): Remove and use default. - * config/sh/sh.md (divsf3): Reinstate define_expand pattern. - - 2016-04-29 Dominik Vogt - - * config/s390/s390.c (s390_rtx_costs): Update documentation. - - 2016-04-29 Andreas Krebbel - - * config/s390/2964.md ("z13_unit_fxu", "z13_0"): Remove lder. - * config/s390/s390.md ("movsi_larl", "*movsi_esa", "mov"): - Change lder to ldr. - * config/s390/vector.md ("mov"): Likewise. - - 2016-04-29 Ulrich Weigand - - * config/s390/constraints.md ("U", "W"): Invoke - s390_mem_constraint with "ZR" and "ZT". - * config/s390/s390.c (s390_check_qrst_address): Reject invalid - addresses when using LRA. Accept also short displacements for S - and T constraints. Do not check for long displacement target for - S and T constraints. - (s390_mem_constraint): Remove handling of U and W constraints. - * config/s390/s390.md (various patterns): Remove the short - displacement constraints (Q and R) if a long displacement - constraint is present. Add longdisp as required CPU capability. - * config/s390/vector.md: Likewise. - * config/s390/vx-builtins.md: Likewise. - - 2016-04-29 Senthil Kumar Selvaraj - - PR target/60040 - * reload1.c (reload): Call finish_spills before - restarting reload loop. Skip select_reload_regs - if update_eliminables_and_spill returns true. - - 2016-04-29 Claudiu Zissulescu - - * config/arc/arc.h (UNSIGNED_INT12, UNSIGNED_INT16): Define. - * config/arc/arc.md (umulhisi3): Use arc_short_operand predicate. - (umulhisi3_imm): Update predicates and constraint letters. - (umulhisi3_reg): Declare instruction as commutative. - * config/arc/constraints.md (J12, J16): New constraints. - * config/arc/predicates.md (short_unsigned_const_operand): New - predicate. - (arc_short_operand): Likewise. - * testsuite/gcc.target/arc/umulsihi3_z.c: New file. - - 2016-04-29 Richard Biener - - PR tree-optimization/13962 - PR tree-optimization/65686 - * tree-ssa-alias.h (ptrs_compare_unequal): Declare. - * tree-ssa-alias.c (ptrs_compare_unequal): New function - using PTA to compare pointers. - * match.pd: Add pattern for pointer equality compare simplification - using ptrs_compare_unequal. - - 2016-04-29 Richard Biener - - * stor-layout.c (layout_type): Do not build a pointer-to-element - type for arrays. - - 2016-04-29 Uros Bizjak - - * config/i386/i386.md (Load+RegOp to Mov+MemOp peephole2): - Use SWI mode iterator. Use general_reg_operand predicate. - (Load+RegOp to Mov+MemOp peephole2 with vector regs): Split - peephole to MMX and SSE part. Use mmx_reg_operand and sse_reg_operand - predicates. - - 2016-04-29 Jakub Jelinek - - PR middle-end/70843 - * fold-const.c (operand_equal_p): Don't verify hash value equality - if arg0 == arg1. - * tree.c (inchash::add_expr): Handle STATEMENT_LIST. Ignore BLOCK - and OMP_CLAUSE. - - 2016-04-28 Jakub Jelinek - - PR target/70858 - * config/i386/i386.c (bdesc_special_args): Add | OPTION_MASK_ISA_64BIT - to __builtin_ia32_lwpval64 and __builtin_ia32_lwpins64. - (bdesc_args): Add | OPTION_MASK_ISA_64BIT to __builtin_ia32_bextr_u64, - __builtin_ia32_bextri_u64, __builtin_ia32_bzhi_di, - __builtin_ia32_pdep_di and __builtin_ia32_pext_di. - - 2016-04-28 Segher Boessenkool - - * config/rs6000/rs6000.c (compute_save_world_info): Rename info_ptr - to info. Don't initialize separate fields to 0. Clean up - formatting a bit. - - 2016-04-28 Uros Bizjak - - * config/i386/i386.md (peephole2s for operations with memory inputs): - Use SWI mode iterator. - (peephole2s for operations with memory outputs): Ditto. - Do not check for stack checking probe. - - (probe_stack): Remove expander. - - 2016-04-28 Joern Rennecke - Andrew Burgess - - * config/arc/arc.c (arc_print_operand): Print integer 'H' / 'L' - operands as 32-bits. - - 2016-04-28 Jason Merrill - - * gdbinit.in: Skip line-map.h. - - 2016-04-28 Joern Rennecke - Andrew Burgess - - * config/arc/arc.c (arc_conditional_register_usage): Take - TARGET_RRQ_CLASS into account. - (arc_print_operand): Support printing 'p' and 's' operands. - * config/arc/arc.h (TARGET_NPS_BITOPS_DEFAULT): Provide default - as 0. - (TARGET_RRQ_CLASS): Define. - (IS_POWEROF2_OR_0_P): Define. - * config/arc/arc.md (*movsi_insn): Add w/Clo, w/Chi, and w/Cbi - alternatives. - (*tst_movb): New define_insn. - (*tst): Avoid recognition if it could prevent '*tst_movb' - combination; replace c/CnL with c/Chs alternative. - (*tst_bitfield_tst): New define_insn. - (*tst_bitfield_asr): New define_insn. - (*tst_bitfield): New define_insn. - (andsi3_i): Add Rrq variant. - (extzv): New define_expand. - (insv): New define_expand. - (*insv_i): New define_insn. - (*movb): New define_insn. - (*movb_signed): New define_insn. - (*movb_high): New define_insn. - (*movb_high_signed): New define_insn. - (*movb_high_signed + 1): New define_split pattern. - (*mrgb): New define_insn. - (*mrgb + 1): New define_peephole2 pattern. - (*mrgb + 2): New define_peephole2 pattern. - * config/arc/arc.opt (mbitops): New option for nps400, uses - TARGET_NPS_BITOPS_DEFAULT. - * config/arc/constraints.md (q): Make register class conditional. - (Rrq): New register constraint. - (Chs): New constraint. - (Clo): New constraint. - (Chi): New constraint. - (Cbf): New constraint. - (Cbn): New constraint. - (C18): New constraint. - (Cbi): New constraint. - - 2016-04-28 Segher Boessenkool - - * cfganal.c (bitmap_intersection_of_succs): Delete assert checking - dst->popcount. - (bitmap_intersection_of_preds): Ditto. - (bitmap_union_of_succs): Ditto. - (bitmap_union_of_preds): Ditto. - * sbitmap.c (do_popcount): Delete. - (BITMAP_DEBUGGING): Delete. - (sbitmap_verify_popcount): Delete. - (sbitmap_alloc): Don't initialize the popcount field. - (sbitmap_alloc_with_popcount): Delete. - (sbitmap_resize): Don't resize the popcount array. - (sbitmap_vector_alloc): Don't initialize the popcount field. - (bitmap_copy): Don't copy the popcount array. - (bitmap_clear): Don't clear the popcount array. - (bitmap_clear): Delete the popcount array handling. - (bitmap_ior_and_compl): Delete the popcount assert. - (bitmap_not): Ditto. - (bitmap_and_compl): Ditto. - (bitmap_and): Delete the popcount array handling. - (bitmap_xor): Ditto. - (bitmap_ior): Ditto. - (bitmap_or_and): Delete the popcount assert. - (bitmap_and_or): Ditto. - (popcount_table): Delete. - (sbitmap_elt_popcount): Delete. - * sbitmap.h (simple_bitmap_def): Delete the popcount field. - (bitmap_set_bit): Delete the popcount assert. - (bitmap_clear_bit): Ditto. - (sbitmap_free): Don't free the popcount array. - (sbitmap_alloc_with_popcount): Delete declaration. - (sbitmap_popcount): Ditto. - - 2016-04-28 Joern Rennecke - Andrew Burgess - - * config/arc/arc.h (SYMBOL_FLAG_CMEM): Define. - (TARGET_NPS_CMEM_DEFAULT): Provide default definition. - * config/arc/arc.c (arc_address_cost): Return 0 for cmem_address. - (arc_encode_section_info): Set SYMBOL_FLAG_CMEM where indicated. - * config/arc/arc.opt (mcmem): New option. - * config/arc/arc.md (*extendqihi2_i): Add r/Uex alternative, - supply length for r/m alternative. - (*extendqisi2_ac): Likewise. - (*extendhisi2_i): Add r/Uex alternative, supply length for r/m and - r/Uex alternative. - (movqi_insn): Add r/Ucm and Ucm/?Rac alternatives. - (movhi_insn): Likewise. - (movsi_insn): Add r/Ucm,Ucm/w alternatives. - (*zero_extendqihi2_i): Add r/Ucm alternative. - (*zero_extendqisi2_ac): Likewise. - (*zero_extendhisi2_i): Likewise. - * config/arc/constraints.md (Uex): New memory constraint. - (Ucm): New define_constraint. - * config/arc/predicates.md (long_immediate_loadstore_operand): - Return 0 for MEM with cmem_address address. - (cmem_address_0): New predicates. - (cmem_address_1): Likewise. - (cmem_address_2): Likewise. - (cmem_address): Likewise. - - 2016-04-28 Segher Boessenkool - - * config/rs6000/rs6000.c (machine_function): Rename - insn_chain_scanned_p to spe_insn_chain_scanned_p. - (rs6000_stack_info): Adjust. - - 2016-04-28 Joern Rennecke - Andrew Burgess - - * config/arc/constraints.md (Usd): Convert to define_constraint. - (Us<): Likewise. - (Us>): Likewise. - - 2016-04-28 Jakub Jelinek - - PR target/70821 - * config/i386/sync.md (define_peephole2 *atomic_fetch_add_cmp): - Add new peephole2 where the first insn is *mov_or instead of - *mov_internal. - - 2016-04-28 Segher Boesssenkool - - * tracer.c (bb_seen): Make static. - - 2016-04-28 Andrew Burgess + * 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 - * common/config/arc/arc-common.c (arc_handle_option): Add NPS400 - support, setup defaults. - * config/arc/arc-opts.h (enum processor_type): Add NPS400. - * config/arc/arc.c (arc_init): Add NPS400 support. - * config/arc/arc.h (CPP_SPEC): Add NPS400 defines. - (TARGET_ARC700): NPS400 is also an ARC700. - * config/arc/arc.opt: Add NPS400 options to -mcpu=. + * 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. - 2016-04-28 Segher Boessenkool + 2018-06-01 Richard Sandiford - PR target/70668 - * config/nds32/nds32.md (casesi): Don't access the operands array - out of bounds. + 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. - 2016-04-28 Uros Bizjak + 2018-05-31 Jakub Jelinek - * config/i386/i386.md (zeroing peephole2): Use general_reg_operand. - (or $-1,reg peephole2): Ditto. - (strict_low_part zeroing peephole2): Use SWI12 mode iterator. + PR target/85984 + * bb-reorder.c (pass_partition_blocks::gate): Return false for + functions with naked attribute. - 2016-04-28 Markus Trippelsdorf + 2018-05-31 Uros Bizjak - * doc/extend.texi (Common Function Attributes) [optimize]: - Discourage use of the optimize attribute. + * 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. - 2016-04-28 Bill Seurer + 2018-05-31 Martin Sebor - * config/rs6000/rs6000-builtin.def (vec_adde): Change vec_adde to a - special case builtin. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove - ALTIVEC_BUILTIN_VEC_ADDE. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add - support for ALTIVEC_BUILTIN_VEC_ADDE. - * config/rs6000/rs6000.c (altivec_init_builtins): Add definition - for __builtin_vec_adde. + 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. - 2016-04-28 Jakub Jelinek + 2018-05-31 H.J. Lu - * config/i386/i386.md (sse4_1_round2): Add avx512f alternative. - * config/i386/sse.md (sse4_1_round): Likewise. + PR target/85829 + * config/i386/x86-tune.def: Re-enable partial_reg_dependency + and movx for Haswell. - 2016-04-28 Rainer Orth + 2018-05-31 Chung-Lin Tang + Cesar Philippidis - PR testsuite/70595 - * doc/sourcebuild.texi (Effective-Target Keywords, Other - attributes): Document cilkplus_runtime. + 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. - 2016-04-28 Martin Jambor + 2018-05-31 Sameera Deshpande - * tree-cfg.c (verify_expr): Verify that local declarations belong to - this function. Call verify_expr on MEM_REFs and bases of other - handled_components. + * 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 - 2016-04-28 Kyrylo Tkachov + 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 - * internal-fn.c (expand_arith_overflow): Convert preprocessor check - for WORD_REGISTER_OPERATIONS to runtime check. + 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. - 2016-04-28 Claudiu Zissulescu + 2018-05-29 Richard Biener - * config/arc/arc.h (ASM_SPEC): Pass mfpuda to assembler. + * 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. - 2016-04-28 Claudiu Zissulescu + 2018-05-29 Martin Liska - * config/arc/arc.c (arc_process_double_reg_moves): Fix for - big-endian compilation. - * config/arc/arc.md (addf3): Likewise. - (subdf3): Likewise. - (muldf3): Likewise. + PR gcov-profile/85759 + * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR + env variables. - 2016-04-28 Richard Biener + 2018-05-29 Jakub Jelinek - PR tree-optimization/70840 - * match.pd: powi(-x, y) and powi(|x|,y) -> powi(x,y) if y is even; - Fix pow(copysign(x, y), z) -> pow(x, z) and add powi variant; - Mark x * pow(x,c) -> pow(x,c+1) commutative. - Add powi(x,y) * powi(z,y) -> powi(x*z,y). + * 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. - 2015-04-28 Kyrylo Tkachov + 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. - * config/aarch64/aarch64.h (WORD_REGISTER_OPERATIONS): Define to 0 - and explain why in a comment. + 2018-05-29 Richard Biener - 2016-04-28 Claudiu Zissulescu + * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE. - * config/arc/arc.md (cpu_facility): Add fpx variant. - (subdf3): Prohibit use reverse sub when assist operations option - is enabled. - * config/arc/fpx.md (subdf3_insn, *dsubh_peep2_insn): Allow drsub - instructions only when FPX is enabled. - * testsuite/gcc.target/arc/trsub.c: New test. + 2018-05-29 Martin Liska + David Malcolm - 2016-04-28 Uros Bizjak + * vec.c (test_reverse): New. + (vec_c_tests): Add new test. + * vec.h (vl_ptr>::reverse): New function. - * config/i386/i386.md (*fop__1_mixed): Do not check for - mult_operator when calculating "type" attribute. - (*fop__1_i387): Ditto. - (*fop_xf_1_i387): Ditto. - (x87 stack loads peephole2): Add "reg = op (mem, reg)" peephole2. - Use std::swap to swap operands. Use RTL expressions to generate - converted pattern. + 2018-05-29 Gerald Pfeifer - 2016-04-28 Claudiu Zissulescu - Joern Rennecke + * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported. - * config/arc/arc-protos.h (arc_legitimize_pic_address): Remove - declaration. - (emit_pic_move): Remove. - (arc_eh_uses, insn_is_tls_gd_dispatch): Declare. - * config/arc/arc.c (emit_pic_move): Removed. - (TARGET_HAVE_TLS): Define. - (arc_conditional_register_usage): Test for arc_tp_regno. - (arc_print_operand, arc_print_operand_address): Handle TLS - unspecs. - (arc_needs_pcl_p): New function. - (arc_legitimate_pc_offset_p): Use arc_needs_pcl_p. - (arc_legitimate_pic_addr_p): Handle TLS unspecs. - (arc_raw_symbolic_reference_mentioned_p): Likewise. - (arc_get_tp, arc_emit_call_tls_get_addr): New function. - (arc_legitimize_tls_address): Likewise. - (DTPOFF_ZERO_SYM): Define. - (arc_legitimize_pic_address): Make it static, handle TLS cases. - (arc_output_pic_addr_const): Print TLS unspecs. - (prepare_pic_move): New function, replaces emit_pic_move. - (arc_legitimate_constant_p): Handle TLS unspecs. - (arc_legitimate_address_p): Likewise. - (arc_rewrite_small_data_p): Use assert for TLS constants. - (prepare_move_operands): Use prepare_pic_move. - (arc_legitimize_address): Legitimize tls addresses. - (arc_epilogue_uses): Check for arc_tp_regno. - (arc_eh_uses, insn_is_tls_gd_dispatch): New function. - * config/arc/arc.h [DEFAULT_LIBC != LIBC_UCLIBC] (EXTRA_SPECS): - Define. - [DEFAULT_LIBC != LIBC_UCLIBC] (ARC_TLS_EXTRA_START_SPEC): - Likewise. - [DEFAULT_LIBC != LIBC_UCLIBC] (STARTFILE_SPEC): Add - %(arc_tls_extra_start_spec). - (TARGET_CPU_CPP_BUILTINS): Define __ARC_TLS_REGNO__. - (REGNO_OK_FOR_BASE_P): Check for arc_tp_regno. - (EH_USES): Define. - (INSN_REFERENCES_ARE_DELAYED): Use insn_is_tls_gd_dispatch. - * config/arc/arc.md (UNSPEC_TLS_GD, UNSPEC_TLS_LD, UNSPEC_TLS_IE) - (UNSPEC_TLS_OFF): Add. - (R10_REG): Define. - (tls_load_tp_soft, tls_gd_load, tls_gd_get_addr, tls_gd_dispatch) - (get_thread_pointersi): New patterns. - * config/arc/arc.opt (mtp-regno): New option. - * config/arc/predicates.md (move_src_operand): Handle TLS symbols. - (move_dest_operand): Likewise. - * configure: Regenerate. - * configure.ac: Add arc*-*-* case to test for tls. - * doc/invoke.texi (ARC options): Document mtp-regno. - - 2016-04-28 Claudiu Zissulescu - - * config/arc/arc.c (arc_vector_mode_supported_p): Add support for - the new ARC HS SIMD instructions. - (arc_preferred_simd_mode): New function. - (arc_autovectorize_vector_sizes): Likewise. - (TARGET_VECTORIZE_PREFERRED_SIMD_MODE) - (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Define. - (arc_init_reg_tables): Accept new ARC HS SIMD modes. - (arc_init_builtins): Add new SIMD builtin types. - (arc_split_move): Handle 64 bit vector moves. - * config/arc/arc.h (TARGET_PLUS_DMPY, TARGET_PLUS_MACD) - (TARGET_PLUS_QMACW): Define. - * config/arc/builtins.def (QMACH, QMACHU, QMPYH, QMPYHU, DMACH) - (DMACHU, DMPYH, DMPYHU, DMACWH, DMACWHU, VMAC2H, VMAC2HU, VMPY2H) - (VMPY2HU, VADDSUB2H, VSUBADD2H, VADDSUB, VSUBADD, VADDSUB4H) - (VSUBADD4H): New builtins. - * config/arc/simdext.md: Add new ARC HS SIMD instructions. - * testsuite/gcc.target/arc/builtin_simdarc.c: New file. - - 2016-04-28 Eduard Sanou - Matthias Klose - - * doc/cppenv.texi: Document SOURCE_DATE_EPOCH environment variable. - - 2016-04-28 Richard Biener - - PR middle-end/70777 - * fold-const.c (fold_binary_loc): Remove x*x to pow(x,2.0) - canonicalization. - - 2016-04-28 Oleg Endo - - * common/config/sh/sh-common.c: Remove SH5 support. - * config/sh/constraints.md: Likewise. - * config/sh/config/sh/elf.h: Likewise. - * config/sh/linux.h: Likewise. - * config/sh/netbsd-elf.h: Likewise. - * config/sh/predicates.md: Likewise. - * config/sh/sh-c.c: Likewise. - * config/sh/sh-protos.h: Likewise. - * config/sh/sh.c: Likewise. - * config/sh/sh.h: Likewise. - * config/sh/sh.md: Likewise. - * config/sh/sh.opt: Likewise. - * config/sh/sync.md: Likewise. - * config/sh/sh64.h: Delete. - * config/sh/shmedia.h: Likewise. - * config/sh/shmedia.md: Likewise. - * config/sh/sshmedia.h: Likewise. - * config/sh/t-netbsd-sh5-64: Likewise. - * config/sh/t-sh64: Likewise. - * config/sh/ushmedia.h: Likewise. - - 2016-04-28 Uros Bizjak - - * config/i386/i386.md (sign_extend to memory peephole2s): Use - general_reg_operand instead of register_operand predicate. - - 2016-04-27 Prathamesh Kulkarni - - * params.def (MIN_PARTITION_SIZE): Set default value to 10000. - - 2016-04-27 Marc Glisse - - * match.pd (A - B > A, A + B < A): New transformations. - - 2016-04-27 Patrick Palka - - * genattrtab.c (write_test_expr): New parameter EMIT_PARENS - which defaults to true. Emit an outer pair of parentheses only if - EMIT_PARENS. When continuing a chain of && or || (or & or |), - don't emit parentheses for the right-hand operand. - - 2016-04-27 Jeff Law - - * tree-ssa-dom.c (record_temporary_equivalences): Fix typo in comment. - - 2016-04-27 Bill Schmidt - - * config/rs6000/altivec.md (altivec_lvx_): Remove. - (altivec_lvx__internal): Document. - (altivec_lvx__2op): New define_insn. - (altivec_lvx__1op): Likewise. - (altivec_lvx__2op_si): Likewise. - (altivec_lvx__1op_si): Likewise. - (altivec_stvx_): Remove. - (altivec_stvx__internal): Document. - (altivec_stvx__2op): New define_insn. - (altivec_stvx__1op): Likewise. - (altivec_stvx__2op_si): Likewise. - (altivec_stvx__1op_si): Likewise. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Expand vec_ld and vec_st during parsing. - * config/rs6000/rs6000.c (altivec_expand_lvx_be): Commentary - changes. - (altivec_expand_stvx_be): Likewise. - (altivec_expand_lv_builtin): Expand lvx built-ins to expose the - address-masking behavior in RTL. - (altivec_expand_stv_builtin): Expand stvx built-ins to expose the - address-masking behavior in RTL. - (altivec_expand_builtin): Change builtin code arguments for calls - to altivec_expand_stv_builtin and altivec_expand_lv_builtin. - (insn_is_swappable_p): Avoid incorrect swap optimization in the - presence of lvx/stvx patterns. - (alignment_with_canonical_addr): New function. - (alignment_mask): Likewise. - (find_alignment_op): Likewise. - (recombine_lvx_pattern): Likewise. - (recombine_stvx_pattern): Likewise. - (recombine_lvx_stvx_patterns): Likewise. - (rs6000_analyze_swaps): Perform a pre-pass to recognize lvx and - stvx patterns from expand. - * config/rs6000/vector.md (vector_altivec_load_): Use new - expansions. - (vector_altivec_store_): Likewise. - - 2016-04-26 Evandro Menezes - - * config/aarch64/aarch64.md - (*movhf_aarch64): Add "movi %0, #0" to zero up register and - remove the "fp" attributes. - (*movsf_aarch64): Add "movi %0, #0" to zero up register and - add the "simd" attributes. - (*movdf_aarch64): Likewise. - (*movtf_aarch64): Remove the "fp" attributes. - * testsuite/gcc.target/aarch64/fmovf-zero-reg.c: Update accordingly. - * testsuite/gcc.target/aarch64/fmovd-zero-reg.c: Likewise. - - 2016-04-27 David Malcolm - - * emit-rtl.c (maybe_set_first_label_num): Strengthen param from - rtx to rtx_code_label *. - * rtl.h (maybe_set_first_label_num): Likewise. - - 2016-04-27 David Malcolm - - * df-core.c (df_add_problem): Make the problem param be const. - (df_remove_problem): Make local "problem" be const. - * df-problems.c (problem_RD): Make const. - (problem_LR): Likewise. - (problem_LIVE): Likewise. - (problem_MIR): Likewise. - (problem_CHAIN): Likewise. - (problem_WORD_LR): Likewise. - (problem_NOTE): Likewise. - (problem_MD): Likewise. - * df-scan.c (problem_SCAN): Likewise. - * df.h (struct df_problem): Make field "dependent_problem" be - const. - (struct dataflow): Likewise for field "problem". - (df_add_problem): Make param const. - - 2016-04-27 Uros Bizjak - - * config/i386/i386.c (ix86_spill_class): Enable for TARGET_SSE2 when - inter-unit moves to/from vector registers are enabled. Do not disable - for TARGET_MMX. - - 2016-04-27 David Malcolm - - * df.h (DF_SCAN, DF_LR, DF_LIVE, DF_RD, DF_CHAIN, DF_WORD_LR, - DF_NOTE, DF_MD, DF_MIR, DF_LAST_PROBLEM_PLUS1): Convert from - #define to... - (enum df_problem_id): ...this new enum. - (struct df_problem): Convert field "id" from "int" to - enum df_problem_id. - - 2016-04-27 David Malcolm - - * rtl.def: Update comment for "things in the instruction chain" to - reflect the removal of the leading "i" field for INSN_UID in - r210360. Fix bogus apostrophe. - - 2016-04-27 Uros Bizjak - - * config/i386/i386.md - (lea arith with mem operand + setcc peephole2): Set operator mode. - - 2016-04-27 H.J. Lu - - PR target/70155 - * config/i386/i386.c (scalar_to_vector_candidate_p): Renamed to ... - (dimode_scalar_to_vector_candidate_p): This. - (timode_scalar_to_vector_candidate_p): New function. - (scalar_to_vector_candidate_p): Likewise. - (timode_check_non_convertible_regs): Likewise. - (timode_remove_non_convertible_regs): Likewise. - (remove_non_convertible_regs): Likewise. - (remove_non_convertible_regs): Renamed to ... - (dimode_remove_non_convertible_regs): This. - (scalar_chain::~scalar_chain): Make it virtual. - (scalar_chain::compute_convert_gain): Make it pure virtual. - (scalar_chain::mark_dual_mode_def): Likewise. - (scalar_chain::convert_insn): Likewise. - (scalar_chain::convert_registers): Likewise. - (scalar_chain::add_to_queue): Make it protected. - (scalar_chain::emit_conversion_insns): Likewise. - (scalar_chain::replace_with_subreg): Likewise. - (scalar_chain::replace_with_subreg_in_insn): Likewise. - (scalar_chain::convert_op): Likewise. - (scalar_chain::convert_reg): Likewise. - (scalar_chain::make_vector_copies): Likewise. - (scalar_chain::convert_registers): New pure virtual function. - (class dimode_scalar_chain): New class. - (class timode_scalar_chain): Likewise. - (scalar_chain::mark_dual_mode_def): Renamed to ... - (dimode_scalar_chain::mark_dual_mode_def): This. - (timode_scalar_chain::mark_dual_mode_def): New function. - (timode_scalar_chain::convert_insn): Likewise. - (dimode_scalar_chain::convert_registers): Likewise. - (scalar_chain::compute_convert_gain): Renamed to ... - (dimode_scalar_chain::compute_convert_gain): This. - (scalar_chain::replace_with_subreg): Renamed to ... - (dimode_scalar_chain::replace_with_subreg): This. - (scalar_chain::replace_with_subreg_in_insn): Renamed to ... - (dimode_scalar_chain::replace_with_subreg_in_insn): This. - (scalar_chain::make_vector_copies): Renamed to ... - (dimode_scalar_chain::make_vector_copies): This. - (scalar_chain::convert_reg): Renamed to ... - (dimode_scalar_chain::convert_reg ): This. - (scalar_chain::convert_op): Renamed to ... - (dimode_scalar_chain::convert_op): This. - (scalar_chain::convert_insn): Renamed to ... - (dimode_scalar_chain::convert_insn): This. - (scalar_chain::convert): Call convert_registers. - (convert_scalars_to_vector): Change to scalar_chain pointer to - use timode_scalar_chain in 64-bit mode and dimode_scalar_chain - in 32-bit mode. Delete scalar_chain pointer. Call - free_dominance_info in 64-bit mode. - (pass_stv::gate): Remove TARGET_64BIT check. - (ix86_option_override): Put the 64-bit STV pass before the CSE - pass. - - 2016-04-27 Pierre-Marie de Rodat - - * dwarf2out.h (struct dw_loc_descr_node): Remove the - dw_loc_frame_offset field. - * dwarf2out.c (new_loc_descr): Likewise. - (resolve_args_picking_1): Turn the VISITED hash set into a - FRAME_OFFSET hash map. Use it to associate a frame offset to - visited nodes. Remove uses of the CHECKING_P macro. - (resolve_args_picking): Update call to resolve_args_picking_1. - - 2016-04-27 Martin Liska - - * tree-ssa-loop-ivopts.c (iv_ca_dump): Fix level of indentation. - (free_loop_data): Release vuses of groups. - - 2016-04-27 Bin Cheng - - * tree-ssa-loop-ivopts.c (struct iv): Use pointer to struct iv_use - instead of redundant use_id and boolean have_use_for. - (struct iv_use): Change sub_id into group_id. Remove field next. - Move fields: related_cands, n_map_members, cost_map and selected - to ... - (struct iv_group): ... here. New structure. - (struct iv_common_cand): Use structure declaration directly. - (struct ivopts_data, iv_ca, iv_ca_delta): Rename fields. - (MAX_CONSIDERED_USES): Rename macro to ... - (MAX_CONSIDERED_GROUPS): ... here. - (n_iv_uses, iv_use, n_iv_cands, iv_cand): Delete. - (dump_iv, dump_use, dump_cand): Refactor format of dump information. - (dump_uses): Rename to ... - (dump_groups): ... here. Update all uses. - (tree_ssa_iv_optimize_init, alloc_iv): Update all uses. - (find_induction_variables): Refactor format of dump information. - (record_sub_use): Delete. - (record_use): Update all uses. - (record_group): New function. - (record_group_use, find_interesting_uses_op): Call above functions. - Update all uses. - (find_interesting_uses_cond): Ditto. - (group_compare_offset): New function. - (split_all_small_groups): Rename to ... - (split_small_address_groups_p): ... here. Update all uses. - (split_address_groups): Update all uses. - (find_interesting_uses): Refactor format of dump information. - (add_candidate_1): Update all uses. Remove redundant check on iv, - base and step. - (add_candidate, record_common_cand): Remove redundant assert. - (add_iv_candidate_for_biv): Update use. - (add_iv_candidate_derived_from_uses): Update all uses. - (add_iv_candidate_for_groups, record_important_candidates): Ditto. - (alloc_use_cost_map): Ditto. - (set_use_iv_cost, get_use_iv_cost): Rename to ... - (set_group_iv_cost, get_group_iv_cost): ... here. Update all uses. - (determine_use_iv_cost_generic): Ditto. - (determine_group_iv_cost_generic): Ditto. - (determine_use_iv_cost_address): Ditto. - (determine_group_iv_cost_address): Ditto. - (determine_use_iv_cost_condition): Ditto. - (determine_group_iv_cost_cond): Ditto. - (determine_use_iv_cost): Ditto. - (determine_group_iv_cost): Ditto. - (set_autoinc_for_original_candidates): Update all uses. - (find_iv_candidates): Update all uses. Refactor dump information. - (determine_use_iv_costs): Ditto. - (determine_iv_costs): Ditto. - (iv_ca_cand_for_use): Rename to ... - (iv_ca_cand_for_group): ... here. Update all uses. - (iv_ca_add_use, iv_ca_add_group): Ditto. - (iv_ca_set_cp, iv_ca_cost, iv_ca_delta_add): Update all uses. - (iv_ca_delta_join, iv_ca_delta_reverse, iv_ca_delta_free): Ditto. - (iv_ca_new, iv_ca_dump, iv_ca_extend, iv_ca_narrow): Ditto. - (iv_ca_prune, cheaper_cost_with_cand, iv_ca_replace): Ditto. - (try_add_cand_for, try_improve_iv_set, find_optimal_iv_set): Ditto. - (create_new_iv, adjust_iv_update_pos): Ditto. - (rewrite_use_address): Delete. - (rewrite_use_address_1): Rename to ... - (rewrite_use_address): ... here. - (rewrite_use_compare): Update all uses. - (rewrite_use): Delete. - (rewrite_uses): Rename to ... - (rewrite_groups): ... here. Update all uses. - (remove_unused_ivs, free_loop_data): Update all uses. - (tree_ssa_iv_optimize_finalize, tree_ssa_iv_optimize_loop): Ditto. - - 2016-04-27 Kyrylo Tkachov - - * rtlanal.c (nonzero_bits1): Convert preprocessor check - for WORD_REGISTER_OPERATIONS to runtime check. - - 2016-04-27 Richard Biener - - PR ipa/70760 - * tree-ssa-structalias.c (find_func_aliases_for_call): Use - aggregate_value_p to determine if a function result is - returned by reference. - (ipa_pta_execute): Functions having their address taken are - not automatically nonlocal. - - 2016-04-27 Jakub Jelinek - - PR sanitizer/70683 - * tree-core.h (enum operand_equal_flag): Add OEP_NO_HASH_CHECK. - * fold-const.c (operand_equal_p): If flag_checking and - OEP_NO_HASH_CHECK is not set in flag, recurse with OEP_NO_HASH_CHECK - and if it returns non-zero, assert iterative_hash_expr on both - args is the same. - - 2016-04-27 Bernd Schmidt - - * doc/invoke.texi (-frename-registers): Also enabled at -Os. - - 2016-04-27 Nick Clifton - - PR middle-end/49889 - * varasm.c (merge_weak): Generate an error if an attempt is made - to convert a non-weak static function into a weak, public function. - - 2016-04-27 Prathamesh Kulkarni - - * params.def (MAX_PARTITION_SIZE): New param. - * doc/invoke.texi: Document lto-max-partition. - - 2016-04-27 Richard Biener - - PR ipa/70785 - * tree-ssa-structalias.c (refered_from_nonlocal_fn): New - function cummulating used_from_other_partition, externally_visible - and force_output from aliases. - (refered_from_nonlocal_var): Likewise. - (ipa_pta_execute): Use call_for_symbol_and_aliases to cummulate - node flags properly. - - 2016-04-27 Bernd Schmidt - - * doc/invoke.texi (Warning Options): Add -Wmemset-elt-size. - (-Wmemset-elt-size): New item. - - 2016-04-27 Eric Botcazou - - PR ada/70759 - * stor-layout.h (internal_reference_types): Delete. - * stor-layout.c (reference_types_internal): Likewise. - (internal_reference_types): Likewise. - (layout_type) : Adjust. - - 2016-04-27 Jakub Jelinek - - PR sanitizer/70683 - * tree.h (inchash::add_expr): Add FLAGS argument. - * tree.c (inchash::add_expr): Likewise. If not OEP_ADDRESS_OF, - use STRIP_NOPS first. For INTEGER_CST assert not OEP_ADDRESS_OF. - For REAL_CST and !HONOR_SIGNED_ZEROS (t) hash +/- 0 the same. - Formatting fix. Adjust recursive calls. For tcc_comparison, - if swap_tree_comparison (code) is smaller than code, hash that - and arguments in the other order. Hash CONVERT_EXPR the same - as NOP_EXPR. For OEP_ADDRESS_OF hash MEM_REF with 0 offset - of ADDR_EXPR of decl as the decl itself. Add or remove - OEP_ADDRESS_OF from recursive flags as needed. For - FMA_EXPR, WIDEN_MULT_{PLUS,MINUS}_EXPR hash the first two - operands commutatively and only the third one normally. - For internal CALL_EXPR hash in CALL_EXPR_IFN. + * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5 + and later. - 2016-04-27 Sebastian Huber + 2018-05-28 Bernd Edlinger - * config/rtems.h (LIB_SPEC): Add -latomic. + * tree-dump.c (dump_node): Use splay_tree_delete_pointers. - 2016-04-27 Joel Sherrill + 2018-05-28 Richard Biener - * config/microblaze/rtems.h: Redefine LINK_SPEC to avoid - xilink.ld and flags not relevant to RTEMS. + PR tree-optimization/85933 + * tree-vect-data-refs.c (vect_record_base_alignments): Only + look at stmts marked as vectorizable. - 2016-04-26 Zhouyi Zhou + 2018-05-28 Richard Biener - * toplev.c (backend_init_target): Avoid calling init_reload when using - LRA. + PR tree-optimization/85934 + * tree-vect-generic.c (expand_vector_operations_1): Hoist + vector boolean check before scalar optimization. - 2016-04-26 Jakub Jelinek + 2018-05-28 Jakub Jelinek - * reorg.c (try_merge_delay_insns): Declare i and j inside the - for loops rather than one for the whole function. + * doc/invoke.texi (ARM Options): Use @item instead of @itemx + for armv5te. - 2016-04-26 Marc Glisse + 2018-05-28 Mark Wielaard - * match.pd (X + CST CMP X): New transformation. + * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2 + if it is an expression containing a minus sign. - 2016-04-26 Marc Glisse + 2018-05-27 John David Anglin - * genmatch.c (write_predicate): Add ATTRIBUTE_UNUSED. - * fold-const.c (fold_binary_loc): Remove 2 transformations - superseded by match.pd. - * match.pd (x+x -> x*2): Generalize to integers. + * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0. - 2016-04-26 Bernd Schmidt + 2018-05-27 Paul Koning - * config/i386/i386.md (operation on memory peephole): Duplicate an - existing peephole and adapt it to match lea rather than an operation - that clobbers CC. + * config/pdp11/pdp11.md (truncsihi2): Remove. - PR rtl-optimization/57193 - * opts.c (default_options_table): Add OPT_frename_registers at -O2 - and above. - * doc/invoke.texi (-frename-registers, -O2): Update documentation. - - 2016-04-26 Bin Cheng - - * tree-if-conv.c (any_pred_load_store): New static variable. - (if_convertible_gimple_assign_stmt_p): Remove parameter. Use - any_pred_load_store instead of and_mask_load_store. - (if_convertible_stmt_p, if_convertible_loop_p_1): Ditto. - (if_convertible_loop_p, insert_gimplified_predicates): Ditto. - (combine_blocks, tree_if_conversion): Ditto. - - 2016-04-26 Bin Cheng - - PR tree-optimization/70771 - PR tree-optimization/70775 - * tree-if-conv.c (if_convertible_phi_p): Remove check on special - virtual PHI nodes. Delete parameter. - (if_convertible_loop_p_1): Delete argument to above function. - (predicate_all_scalar_phis): Delete code handling single-argument - PHIs. - (tree_if_conversion): Mark and update virtual SSA. - - 2016-04-26 Rainer Orth - - PR target/61821 - * config/i386/i386.c (LARGECOMM_SECTION_ASM_OP): Define default. - (x86_elf_aligned_common): Rename to ... - (x86_elf_aligned_decl_common): ... this. - Add decl arg. Switch to .lbss for largecomm object. Use - LARGECOMM_SECTION_ASM_OP. - * config/i386/i386-protos.h (x86_elf_aligned_common): Reflect - renaming. - * config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_COMMON): Rename to ... - (ASM_OUTPUT_ALIGNED_DECL_COMMON): ... this. - Pass new decl arg. - * config/i386/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise. - [!USE_GAS] (LARGECOMM_SECTION_ASM_OP): Define. - - 2016-04-26 Rainer Orth - - PR target/59407 - * config/i386/i386.c (SECTION_LARGE): Define. - (x86_64_elf_select_section): Set it for large data/bss sections. - Only clear SECTION_WRITE for .lrodata. - (x86_64_elf_section_type_flags): Set SECTION_LARGE for large - data/bss sections. - * config/i386/sol2.h (MACH_DEP_SECTION_ASM_FLAG): Define. - * varasm.c (default_elf_asm_named_section): Grow flagchars. - [MACH_DEP_SECTION_ASM_FLAG] Emit MACH_DEP_SECTION_ASM_FLAG for - SECTION_MACH_DEP. - * doc/tm.texi.in (Sections, MACH_DEP_SECTION_ASM_FLAG): Describe. - * doc/tm.texi: Regenerate. + 2018-05-27 Monk Chiang + Chung-Ju Wu - 2016-04-26 Jakub Jelinek + * 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. - PR bootstrap/70704 - * configure.ac (--enable-checking): Document extra flag, for - non-release builds default to --enable-checking=yes,extra. - If misc checking and extra checking, define CHECKING_P to 2 instead - of 1. - * common.opt (fchecking=): Add. - * doc/invoke.texi (-fchecking=): Document. - * doc/install.texi: Document --enable-checking changes. - * configure: Regenerated. - * config.in: Regenerated. - - 2016-04-25 Uros Bizjak - - * config/i386/i386.md (*movxi_internal_avx512f): Use insn type - attribute instead of which_alternative. - * config/i386/sse.md (*mov_internal): Ditto. - Use EXT_REX_SSE_REG_P where appropriate. - - 2016-04-25 Uros Bizjak - - * config/i386/predicates.md (const0_operand): Do not match - const_wide_int code. - (const1_operand): Ditto. - - 2016-04-25 Uros Bizjak - - * config/i386/i386.md (*movoi_internal_avx): Set mode attribute to XI - for SSE constm1 operands and TARGET_AVX512VL. - (*movti_internal): Ditto. - (*mov_or): Use constm1_operand predicate. - * config/i386/sse.md (*mov_internal): Set mode attribute to XI - for SSE vector_all_ones operands and TARGET_AVX512VL. - * config/i386/predicates.md (constm1_operand): New predicate. - * config/i386/i386.c (standard_sse_constant_opcode): Simplify - emission of constant -1 load. - - 2016-04-25 Jason Merrill - - * gdbinit.in: Skip is-a.h. - - * attribs.c (register_scoped_attributes): Fix logic. - * attribs.h: Declare register_scoped_attributes. - - 2016-04-25 Bill Schmidt - - * config/rs6000/rs6000-builtin.def: Correct pasto error for - stxvd2x and stxvw4x built-in functions. - - 2016-04-25 DJ Delorie - - * config/msp430/msp430.md (ashlhi3): Optimize one bit shifts. - (ashrhi3): Likewise. - (lshrhi3): Likewise. - - 2016-04-25 Richard Biener - - PR tree-optimization/70780 - * tree-ssa-pre.c (compute_antic_aux): Also return true if the block - wasn't visited yet. - (compute_antic): Mark blocks with abnormal preds as visited as - they have a final empty antic-in solution already. - - 2016-04-25 Michael Collison - - * ChangeLog(2016-04-25): Fix ChangeLog formatting. - - 2016-04-25 Michael Collison - - * config/arm/neon.md (widen_sum): New patterns where - mode is VQI to improve mixed mode vectorization. - * config/arm/neon.md (vec_sel_widen_ssum_lo3): New - define_insn to match low half of signed vaddw. - * config/arm/neon.md (vec_sel_widen_ssum_hi3): New - define_insn to match high half of signed vaddw. - * config/arm/neon.md (vec_sel_widen_usum_lo3): New - define_insn to match low half of unsigned vaddw. - * config/arm/neon.md (vec_sel_widen_usum_hi3): New - define_insn to match high half of unsigned vaddw. - * config/arm/arm.c (arm_simd_vect_par_cnst_half): New function. - (arm_simd_check_vect_par_cnst_half_p): Likewise. - * config/arm/arm-protos.h (arm_simd_vect_par_cnst_half): Prototype - for new function. - (arm_simd_check_vect_par_cnst_half_p): Likewise. - * config/arm/predicates.md (vect_par_constant_high): Support - big endian and simplify by calling - arm_simd_check_vect_par_cnst_half - (vect_par_constant_low): Likewise. - - 2016-04-25 Uros Bizjak - - * config/i386/i386.md (*lea_general_4): Use const_0_to_3_operand - predicate for operand 2. - - 2016-04-24 Uros Bizjak - H.J. Lu - - * config/i386/i386-protos.h (standard_sse_constant_p): Add - machine_mode argument. - * config/i386/i386.c (standard_sse_constant_p): Return 2 for - constm1_rtx operands. For VOIDmode constants, get mode from - pred_mode. Check mode size if the mode is supported by ABI. - (standard_sse_constant_opcode): Do not use standard_constant_p. - Strictly check ABI support for all-ones operands. - (ix86_legitimate_constant_p): Handle TImode, OImode and XImode - immediates. Update calls to standard_sse_constant_p. - (ix86_expand_vector_move): Update calls to standard_sse_constant_p. - (ix86_rtx_costs): Ditto. - * config/i386/i386.md (*movxi_internal_avx512f): Use - nonimmediate_or_sse_const_operand instead of vector_move_operand. - Use (v,BC) alternative instead of (v,C). Use register_operand - checks instead of MEM_P. - (*movoi_internal_avx): Use nonimmediate_or_sse_const_operand instead - of vector_move_operand. Add (v,BC) alternative and corresponding avx2 - isa attribute. Use register_operand checks instead of MEM_P. - (*movti_internal): Use nonimmediate_or_sse_const_operand for - TARGET_SSE. Improve TARGET_SSE insn constraint. Add (v,BC) - alternative and corresponding sse2 isa attribute. - (*movtf_internal, *movdf_internal, *movsf_interal): Update calls - to standard_sse_constant_p. - (FP constant splitters): Ditto. - * config/i386/constraints.md (BC): Do not use standard_sse_constant_p. - (C): Ditto. - * config/i386/predicates.md (constm1_operand): Remove. - (nonimmediate_or_sse_const_operand): Rewrite using RTX. - * config/i386/sse.md (*_cvtmask2): Use - vector_all_ones_operand instead of constm1_operand. - - 2016-04-24 Trevor Saunders - - * print-rtl.c (print_rtx_insn_vec): New function. - * print-rtl.h: New prototype. - * store-motion.c (struct st_expr): Make avail_stores a vector. - (st_expr_entry): Adjust. - (free_st_expr_entry): Likewise. - (print_store_motion_mems): Likewise. - (find_moveable_store): Likewise. - (compute_store_table): Likewise. - (delete_store): Likewise. - (build_store_vectors): Likewise. - - 2016-04-24 Trevor Saunders - - * reorg.c (try_merge_delay_insns): Make merged_insns a vector. - - 2016-04-24 Trevor Saunders - - * vec.h (vec_safe_contains): New function. - (vec::contains): Likewise. - (vec::begin): Likewise. - (vec::end): Likewise. - - 2016-04-23 Jakub Jelinek - - PR sanitizer/70712 - * cfgexpand.c (expand_stack_vars): Fix typo. - - 2016-04-22 Szabolcs Nagy - - * system.h (list, map, set, vector): Include conditionally. - * auto-profile.c (INCLUDE_MAP, INCLUDE_SET): Define. - * graphite-isl-ast-to-gimple.c (INCLUDE_MAP): Define. - * ipa-icf.c (INCLUDE_LIST): Define. - * config/aarch64/cortex-a57-fma-steering.c (INCLUDE_LIST): Define. - * config/sh/sh.c (INCLUDE_VECTOR): Define. - * config/sh/sh_treg_combine.cc (INCLUDE_ALGORITHM): Define. - (INCLUDE_LIST, INCLUDE_VECTOR): Define. - * cp/logic.cc (INCLUDE_LIST): Define. - * fortran/trans-common.c (INCLUDE_MAP): Define. - - 2016-04-22 Szabolcs Nagy - - * auto-profile.c: Remove include. - * ipa-icf-gimple.c: Remove include. - * diagnostic.c: Remove include. - * genmatch.c: Likewise. - * pretty-print.c: Likewise. - * toplev.c: Likewise - * c/c-objc-common.c: Likewise. - * cp/error.c: Likewise. - * fortran/error.c: Likewise. - - 2016-04-22 Richard Biener - - * lto-streamer-in.c (input_ssa_names): Do not allocate - GIMPLE_NOP for all SSA names. - * lto-streamer-out.c (output_ssa_names): Do not output - SSA names that should have been released. - - 2016-04-22 Richard Biener - - PR tree-optimization/70740 - * tree-ssa-phiprop.c (propagate_with_phi): Handle inserted - VDEF. - - 2016-04-21 H.J. Lu - - PR target/70750 - * config/i386/predicates.md (call_insn_operand): Replace - sibcall_memory_operand with memory_operand. - - 2016-04-21 Patrick Palka - - * tree-vrp.c (register_edge_assert_for_2): Remove redundant - has_single_use() tests. - (register_edge_assert_for_1): Likewise. - (find_assert_locations_1): Check the liveness bitmap instead of - checking has_single_use(). + 2018-05-27 Chung-Ju Wu - 2016-04-21 Kirill Yukhin + * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns. - PR target/70728 - * config/i386/sse.md (define_insn "3"): - Extract AVX-512BW constraint from AVX. + 2018-05-27 Chung-Ju Wu - 2016-04-21 Richard Biener + * 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. - PR tree-optimization/70725 - * tree-if-conv.c (if_convertible_phi_p): Adjust guard - for phi_convertible_by_degenerating_args. - (predicate_all_scalar_phis): Handle single-argument PHIs. + 2018-05-27 Jakub Jelinek - 2016-04-21 Richard Biener + 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. - PR middle-end/70747 - * fold-const.c (fold_comparison): Return properly typed - constant boolean. + 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. - 2016-04-21 Bin Cheng + 2018-05-25 Richard Biener - PR tree-optimization/70715 - * tree-ssa-loop-niter.c (loop_exits_before_overflow): Check equality - after expanding BASE using expand_simple_operations. + * 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. - 2016-04-21 Marc Glisse + 2018-05-25 Rainer Orth - * match.pd (min(-x, -y), max(-x, -y), min(~x, ~y), max(~x, ~y)): - New transformations. + * 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. - 2016-04-21 Marc Glisse + 2018-05-25 Richard Sandiford - * match.pd (min(int_max, x), max(int_min, x)): New transformations. + * optabs.c (can_reuse_operands_p): New function. + (maybe_legitimize_operands): Try to reuse the results for + earlier operands. - 2016-04-20 Jan Hubicka + 2018-05-24 Uros Bizjak - * ipa-inline.c (can_inline_edge_p): Pass caller info to - ultiimate_alias_target. - (update_callee_keys): Likewise. - (lookup_recursive_calls): Likewise. - (speculation_useful_p): Likewise. - - 2016-04-20 Jan Hubicka - - PR ipa/70018 - * cgraph.c (cgraph_set_nothrow_flag_1): Rename to ... - (set_nothrow_flag_1): ... this; handle interposition correctly; - recurse on aliases and thunks. - (cgraph_node::set_nothrow_flag): New. - * ipa-pure-const.c (ignore_edge_for_nothrow): Ignore calls to - functions compiled with non-call exceptions that binds to current - def. - (propagate_nothrow): Be safe WRT interposition. - * cgraph.h (set_nothrow_flag): Update prototype. - - 2016-04-18 Jan Hubicka - - * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also - max_loop_iterations_int. - (tree_unswitch_outer_loop): Likewise. - - 2016-04-20 Bin Cheng - - PR tree-optimization/69489 - * tree-if-conv.c (phi_convertible_by_degenerating_args): New. - (if_convertible_phi_p): Call phi_convertible_by_degenerating_args. - Revise dump message. - (if_convertible_bb_p): Remove check on edge count of basic block's - predecessors. - - 2016-04-20 Bin Cheng - - PR tree-optimization/56625 - PR tree-optimization/69489 - * tree-data-ref.h (DR_INNERMOST): New macro. - * tree-if-conv.c (innermost_loop_behavior_hash): New class for - hashing struct innermost_loop_behavior. - (ref_DR_map): Remove. - (innermost_DR_map): New map. - (baseref_DR_map): Revise comment. - (hash_memrefs_baserefs_and_store_DRs_read_written_info): Store DR - to innermost_DR_map accroding to its innermost loop behavior. - (ifcvt_memrefs_wont_trap): Get DR from innermost_DR_map according - to its innermost loop behavior. - (if_convertible_loop_p_1): Remove intialization for ref_DR_map. - Add initialization for innermost_DR_map. Record memory reference - in DR_BASE_ADDRESS if the reference is compound one or it doesn't - have innermost loop behavior. - (if_convertible_loop_p): Remove release for ref_DR_map. Release - innermost_DR_map. - - 2016-04-20 Uros Bizjak - - * config/i386/i386.md (*lea_general_1): Rename from - *lea_general_1. Use explicit SWI12 mode interator. - (*lea_general_2): Rename from *lea_general_2. - Use explicit SWI12 mode interator. - (*lea_general_3): Rename from *lea_general_3. - Use explicit SWI12 mode interator. - (*lea_general_4): Split from *lea_general_4. - Use explicit SWI12 mode interator. - (*lea_general_4): Split from *lea_general_4. - Use explicit SWI48 mode interator. - - 2016-04-20 H.J. Lu - - * config/i386/i386.c (ix86_avx256_split_vector_move_misalign): - Short-cut unaligned load and store cases. Handle all integer - vector modes. - (ix86_expand_vector_move_misalign): Short-cut unaligned load - and store cases. Call ix86_avx256_split_vector_move_misalign - directly without checking mode class. - - 2016-04-20 Andrew Pinski - Kyrylo Tkachov + * config/i386/sse.md (cvtusi264): + Add {q} suffix to insn mnemonic. - PR target/64971 - * config/aarch64/aarch64.md (sibcall): Force call - address to be DImode for ILP32. - (sibcall_value): Likewise. - - 2016-04-20 H.J. Lu - - * doc/invoke.texi: Replace -skip-rax-setup with -mskip-rax-setup. - - 2016-04-20 Richard Biener - - * gimple-match.h (maybe_build_generic_op): Adjust prototype. - * gimple-match-head.c (maybe_build_generic_op): Pass all ops - by reference, clear op1 and op2 when GENERICizing BIT_FIELD_REF. - (maybe_push_res_to_seq): Adjust. - * gimple-fold.c (maybe_build_generic_op): Likewise. - - 2016-04-20 Marek Polacek - - * tree-if-conv.c (is_false_predicate): For NULL_TREE return false - rather than true. - - 2016-04-20 Ilya Enkovich - - * config/i386/sse.md (vec_unpacks_lo_hi): Always - use kmovw to support AVX512F target. - - 2016-04-20 Bin Cheng - - * tree-scalar-evolution.c (interpret_rhs_expr): Handle BIT_AND_EXPR. - - 2016-04-20 Marek Polacek - - PR tree-optimization/70725 - * tree-if-conv.c (is_false_predicate): New function. - (predicate_mem_writes): Use it. - - 2016-04-20 Richard Biener - - PR tree-optimization/70726 - * tree-vect-stmts.c (vectorizable_shift): Do not use scalar - shift amounts from a pattern stmt operand. - - 2016-04-20 Andreas Krebbel - - PR target/70674 - * config/s390/s390.c (s390_restore_gprs_from_fprs): Pick the new - stack_restore_from_fpr pattern when restoring r15. - (s390_optimize_prologue): Strip away the memory barrier in the - parallel when trying to get rid of restore insns. - * config/s390/s390.md ("stack_restore_from_fpr"): New insn - definition for loading the stack pointer from an FPR. Compared to - the normal move insn this pattern includes a full memory barrier. - - 2016-04-19 Jakub Jelinek - - PR middle-end/70680 - * gimplify.c (gimplify_omp_for): Call omp_notice_variable for - implicitly linear or lastprivate iterator on the outer context. - - 2016-04-19 H.J. Lu - - * config/i386/i386.c (ix86_legitimate_combined_insn): Remove - alignment check. - * config/i386/i386.md (ssememalign): Removed. - * config/i386/sse.md: Remove ssememalign attribute from patterns. - - 2016-04-19 H.J. Lu - - PR target/69201 - * config/i386/avx512bwintrin.h (_mm512_mask_loadu_epi16): Pass - const short * to __builtin_ia32_loaddquhi512_mask. - (_mm512_maskz_loadu_epi16): Likewise. - (_mm512_mask_storeu_epi16): Pass short * to - __builtin_ia32_storedquhi512_mask. - (_mm512_mask_loadu_epi8): Pass const char * to - __builtin_ia32_loaddquqi512_mask. - (_mm512_maskz_loadu_epi8): Likewise. - (_mm512_mask_storeu_epi8): Pass char * to - __builtin_ia32_storedquqi512_mask. - * config/i386/avx512fintrin.h (_mm512_loadu_pd): Pass - const double * to __builtin_ia32_loadupd512_mask. - (_mm512_mask_loadu_pd): Likewise. - (_mm512_maskz_loadu_pd): Likewise. - (_mm512_storeu_pd): Pass double * to - __builtin_ia32_storeupd512_mask. - (_mm512_mask_storeu_pd): Likewise. - (_mm512_loadu_ps): Pass const float * to - __builtin_ia32_loadups512_mask. - (_mm512_mask_loadu_ps): Likewise. - (_mm512_maskz_loadu_ps): Likewise. - (_mm512_storeu_ps): Pass float * to - __builtin_ia32_storeups512_mask. - (_mm512_mask_storeu_ps): Likewise. - (_mm512_mask_loadu_epi64): Pass const long long * to - __builtin_ia32_loaddqudi512_mask. - (_mm512_maskz_loadu_epi64): Likewise. - (_mm512_mask_storeu_epi64): Pass long long * - to __builtin_ia32_storedqudi512_mask. - (_mm512_loadu_si512): Pass const int * to - __builtin_ia32_loaddqusi512_mask. - (_mm512_mask_loadu_epi32): Likewise. - (_mm512_maskz_loadu_epi32): Likewise. - (_mm512_storeu_si512): Pass int * to - __builtin_ia32_storedqusi512_mask. - (_mm512_mask_storeu_epi32): Likewise. - * config/i386/avx512vlbwintrin.h (_mm256_mask_storeu_epi8): Pass - char * to __builtin_ia32_storedquqi256_mask. - (_mm_mask_storeu_epi8): Likewise. - (_mm256_mask_loadu_epi16): Pass const short * to - __builtin_ia32_loaddquhi256_mask. - (_mm256_maskz_loadu_epi16): Likewise. - (_mm_mask_loadu_epi16): Pass const short * to - __builtin_ia32_loaddquhi128_mask. - (_mm_maskz_loadu_epi16): Likewise. - (_mm256_mask_loadu_epi8): Pass const char * to - __builtin_ia32_loaddquqi256_mask. - (_mm256_maskz_loadu_epi8): Likewise. - (_mm_mask_loadu_epi8): Pass const char * to - __builtin_ia32_loaddquqi128_mask. - (_mm_maskz_loadu_epi8): Likewise. - (_mm256_mask_storeu_epi16): Pass short * to. - __builtin_ia32_storedquhi256_mask. - (_mm_mask_storeu_epi16): Pass short * to. - __builtin_ia32_storedquhi128_mask. - * config/i386/avx512vlintrin.h (_mm256_mask_loadu_pd): Pass - const double * to __builtin_ia32_loadupd256_mask. - (_mm256_maskz_loadu_pd): Likewise. - (_mm_mask_loadu_pd): Pass onst double * to - __builtin_ia32_loadupd128_mask. - (_mm_maskz_loadu_pd): Likewise. - (_mm256_mask_storeu_pd): Pass double * to - __builtin_ia32_storeupd256_mask. - (_mm_mask_storeu_pd): Pass double * to - __builtin_ia32_storeupd128_mask. - (_mm256_mask_loadu_ps): Pass const float * to - __builtin_ia32_loadups256_mask. - (_mm256_maskz_loadu_ps): Likewise. - (_mm_mask_loadu_ps): Pass const float * to - __builtin_ia32_loadups128_mask. - (_mm_maskz_loadu_ps): Likewise. - (_mm256_mask_storeu_ps): Pass float * to - __builtin_ia32_storeups256_mask. - (_mm_mask_storeu_ps): ass float * to - __builtin_ia32_storeups128_mask. - (_mm256_mask_loadu_epi64): Pass const long long * to - __builtin_ia32_loaddqudi256_mask. - (_mm256_maskz_loadu_epi64): Likewise. - (_mm_mask_loadu_epi64): Pass const long long * to - __builtin_ia32_loaddqudi128_mask. - (_mm_maskz_loadu_epi64): Likewise. - (_mm256_mask_storeu_epi64): Pass long long * to - __builtin_ia32_storedqudi256_mask. - (_mm_mask_storeu_epi64): Pass long long * to - __builtin_ia32_storedqudi128_mask. - (_mm256_mask_loadu_epi32): Pass const int * to - __builtin_ia32_loaddqusi256_mask. - (_mm256_maskz_loadu_epi32): Likewise. - (_mm_mask_loadu_epi32): Pass const int * to - __builtin_ia32_loaddqusi128_mask. - (_mm_maskz_loadu_epi32): Likewise. - (_mm256_mask_storeu_epi32): Pass int * to - __builtin_ia32_storedqusi256_mask. - (_mm_mask_storeu_epi32): Pass int * to - __builtin_ia32_storedqusi128_mask. - * config/i386/i386-builtin-types.def (PCSHORT): New. - (PINT64): Likewise. - (V64QI_FTYPE_PCCHAR_V64QI_UDI): Likewise. - (V32HI_FTYPE_PCSHORT_V32HI_USI): Likewise. - (V32QI_FTYPE_PCCHAR_V32QI_USI): Likewise. - (V16SF_FTYPE_PCFLOAT_V16SF_UHI): Likewise. - (V8DF_FTYPE_PCDOUBLE_V8DF_UQI): Likewise. - (V16SI_FTYPE_PCINT_V16SI_UHI): Likewise. - (V16HI_FTYPE_PCSHORT_V16HI_UHI): Likewise. - (V16QI_FTYPE_PCCHAR_V16QI_UHI): Likewise. - (V8SF_FTYPE_PCFLOAT_V8SF_UQI): Likewise. - (V8DI_FTYPE_PCINT64_V8DI_UQI): Likewise. - (V8SI_FTYPE_PCINT_V8SI_UQI): Likewise. - (V8HI_FTYPE_PCSHORT_V8HI_UQI): Likewise. - (V4DF_FTYPE_PCDOUBLE_V4DF_UQI): Likewise. - (V4SF_FTYPE_PCFLOAT_V4SF_UQI): Likewise. - (V4DI_FTYPE_PCINT64_V4DI_UQI): Likewise. - (V4SI_FTYPE_PCINT_V4SI_UQI): Likewise. - (V2DF_FTYPE_PCDOUBLE_V2DF_UQI): Likewise. - (V2DI_FTYPE_PCINT64_V2DI_UQI): Likewise. - (VOID_FTYPE_PDOUBLE_V8DF_UQI): Likewise. - (VOID_FTYPE_PDOUBLE_V4DF_UQI): Likewise. - (VOID_FTYPE_PDOUBLE_V2DF_UQI): Likewise. - (VOID_FTYPE_PFLOAT_V16SF_UHI): Likewise. - (VOID_FTYPE_PFLOAT_V8SF_UQI): Likewise. - (VOID_FTYPE_PFLOAT_V4SF_UQI): Likewise. - (VOID_FTYPE_PINT64_V8DI_UQI): Likewise. - (VOID_FTYPE_PINT64_V4DI_UQI): Likewise. - (VOID_FTYPE_PINT64_V2DI_UQI): Likewise. - (VOID_FTYPE_PINT_V16SI_UHI): Likewise. - (VOID_FTYPE_PINT_V8SI_UHI): Likewise. - (VOID_FTYPE_PINT_V4SI_UHI): Likewise. - (VOID_FTYPE_PSHORT_V32HI_USI): Likewise. - (VOID_FTYPE_PSHORT_V16HI_UHI): Likewise. - (VOID_FTYPE_PSHORT_V8HI_UQI): Likewise. - (VOID_FTYPE_PCHAR_V64QI_UDI): Likewise. - (VOID_FTYPE_PCHAR_V32QI_USI): Likewise. - (VOID_FTYPE_PCHAR_V16QI_UHI): Likewise. - (V64QI_FTYPE_PCV64QI_V64QI_UDI): Removed. - (V32HI_FTYPE_PCV32HI_V32HI_USI): Likewise. - (V32QI_FTYPE_PCV32QI_V32QI_USI): Likewise. - (V16HI_FTYPE_PCV16HI_V16HI_UHI): Likewise. - (V16QI_FTYPE_PCV16QI_V16QI_UHI): Likewise. - (V8HI_FTYPE_PCV8HI_V8HI_UQI): Likewise. - (VOID_FTYPE_PV32HI_V32HI_USI): Likewise. - (VOID_FTYPE_PV16HI_V16HI_UHI): Likewise. - (VOID_FTYPE_PV8HI_V8HI_UQI): Likewise. - (VOID_FTYPE_PV64QI_V64QI_UDI): Likewise. - (VOID_FTYPE_PV32QI_V32QI_USI): Likewise. - (VOID_FTYPE_PV16QI_V16QI_UHI): Likewise. - * config/i386/i386.c (ix86_emit_save_reg_using_mov): Don't - use UNSPEC_STOREU. - (ix86_emit_restore_sse_regs_using_mov): Don't use UNSPEC_LOADU. - (ix86_avx256_split_vector_move_misalign): Don't use unaligned - load nor store. - (ix86_expand_vector_move_misalign): Likewise. - (bdesc_special_args): Use CODE_FOR_movvNXY_internal and pointer - to scalar function prototype for unaligned load/store builtins. - (ix86_expand_special_args_builtin): Updated. - * config/i386/sse.md (UNSPEC_LOADU): Removed. - (UNSPEC_STOREU): Likewise. - (VI_ULOADSTORE_BW_AVX512VL): Likewise. - (VI_ULOADSTORE_F_AVX512VL): Likewise. - (ssescalarsize): Handle V4TI, V2TI and V1TI. - (_loadu): Likewise. - (*_loadu): Likewise. - (_storeu): Likewise. - (_storeu_mask): Likewise. - (_loaddqu): Likewise. - (*_loaddqu"): Likewise. - (sse2_avx_avx512f>_storedqu): Likewise. - (_storedqu_mask): Likewise. - (*sse4_2_pcmpestr_unaligned): Likewise. - (*sse4_2_pcmpistr_unaligned): Likewise. - (*mov_internal): Renamed to ... - (mov_internal): This. Remove check of AVX and IAMCU on - misaligned operand. Replace vmovdqu64 with vmovdqu. - (movsd/movhpd to movupd peephole): Don't use UNSPEC_LOADU. - (movlpd/movhpd to movupd peephole): Don't use UNSPEC_STOREU. - - 2016-04-19 Richard Biener - - PR tree-optimization/70171 - * tree-ssa-phiprop.c: Include stor-layout.h. - (phiprop_insert_phi): Handle the aggregate copy case. - (propagate_with_phi): Likewise. - - 2016-04-19 Uros Bizjak - - * config/i386/i386.c (ix86_decompose_address): Use lowpart_subreg - instead of simplify_gen_subreg (... , 0). - (ix86_delegitimize_address): Ditto. - (ix86_split_divmod): Ditto. - (ix86_split_copysign_const): Ditto. - (ix86_split_copysign_var): Ditto. - (ix86_expand_args_builtin): Ditto. - (ix86_expand_round_builtin): Ditto. - (ix86_expand_special_args_builtin): Ditto. - * config/i386/i386.md (TARGET_USE_VECTOR_FP_CONVERTS splitters): Ditto. - (TARGET_SSE_PARTIAL_REG_DEPENDENCY splitters and peephole2s): Ditto. - (udivmodqi4): Ditto. - (absneg splitters): Ditto. - (*jcc_bt_1): Ditto. - - 2016-04-19 Richard Biener - - PR tree-optimization/70724 - * tree-ssa-sccvn.c (scc_vn_restore_ssa_info): Split SSA info - restoring out from ... - (free_scc_vn): ... here. - * tree-ssa-sccvn.h (scc_vn_restore_ssa_info): Declare. - * tres-ssa-pre.c (pass_pre::execute): Restore SSA info before - tail merging. - (pass_fre::execute): Restore SSA info. - - 2016-04-19 Richard Biener - - * gimple-walk.h (struct walk_stmt_info): Add stmt member. - * gimple-walk.c (walk_gimple_op): Initialize it. - (walk_gimple_asm): Set wi->is_lhs before each callback invocation. - * tree-inline.c (remap_gimple_op_r): Set SSA_NAME_DEF_STMT when - remapping SSA names of defs. - (copy_bb): Remove walk over all SSA defs and SSA_NAME_DEF_STMT - adjustment. - - 2016-04-18 Vladimir Makarov - - PR middle-end/70689 - * lra-constraints.c (equiv_substition_p): New. - (process_alt_operands): Use it. - (swap_operands): Swap it. - (curr_insn_transform): Update it. - - 2016-04-18 Michael Matz - - * tree.h (TYPE_ALIGN, DECL_ALIGN): Return shifted amount. - (SET_TYPE_ALIGN, SET_DECL_ALIGN): New. - * tree-core.h (tree_type_common.align): Use bit-field. - (tree_type_common.spare): New. - (tree_decl_common.off_align): Make smaller. - (tree_decl_common.align): Use bit-field. - - * expr.c (expand_expr_addr_expr_1): Use SET_TYPE_ALIGN. - * omp-low.c (install_var_field): Use SET_DECL_ALIGN. - (scan_sharing_clauses): Ditto. - (finish_taskreg_scan): Use SET_DECL_ALIGN and SET_TYPE_ALIGN. - (omp_finish_file): Ditto. - * stor-layout.c (do_type_align): Use SET_DECL_ALIGN. - (layout_decl): Ditto. - (relayout_decl): Ditto. - (finalize_record_size): Use SET_TYPE_ALIGN. - (finalize_type_size): Ditto. - (finish_builtin_struct): Ditto. - (layout_type): Ditto. - (initialize_sizetypes): Ditto. - * targhooks.c (std_gimplify_va_arg_expr): Use SET_TYPE_ALIGN. - * tree-nested.c (insert_field_into_struct): Use SET_TYPE_ALIGN. - (lookup_field_for_decl): Use SET_DECL_ALIGN. - (get_chain_field): Ditto. - (get_trampoline_type): Ditto. - (get_nl_goto_field): Ditto. - * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use - SET_DECL_ALIGN. - (unpack_ts_type_common_value_fields): Use SET_TYPE_ALIGN. - * gimple-expr.c (copy_var_decl): Use SET_DECL_ALIGN. - * tree.c (make_node_stat): Use SET_DECL_ALIGN and SET_TYPE_ALIGN. - (build_qualified_type): Use SET_TYPE_ALIGN. - (build_aligned_type, build_range_type_1): Ditto. - (build_atomic_base): Ditto. - (build_common_tree_nodes): Ditto. - * cfgexpand.c (align_local_variable): Use SET_DECL_ALIGN. - (expand_one_stack_var_at): Ditto. - * coverage.c (build_var): Use SET_DECL_ALIGN. - * except.c (init_eh): Ditto. - * function.c (assign_parm_setup_block): Ditto. - * symtab.c (increase_alignment_1): Ditto. - * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Ditto. - * tree-vect-stmts.c (ensure_base_align): Ditto. - * varasm.c (align_variable): Ditto. - (assemble_variable): Ditto. - (build_constant_desc): Ditto. - (output_constant_def_contents): Ditto. - - * config/arm/arm.c (arm_relayout_function): Use SET_DECL_ALIGN. - * config/avr/avr.c (avr_adjust_type_node): Use SET_TYPE_ALIGN. - * config/mips/mips.c (mips_std_gimplify_va_arg_expr): Ditto. - * config/msp430/msp430.c (msp430_gimplify_va_arg_expr): Ditto. - * config/spu/spu.c (spu_build_builtin_va_list): Use SET_DECL_ALIGN. - - 2016-04-18 H.J. Lu - - PR target/70708 - * config/i386/sse.md (sse2_loadlpd): Accept load from "xm" and - replace %vmovsd with "%vmovq". - (vec_concatv2df): Likewise. - - 2016-04-18 Uros Bizjak - - * config/i386/mmx.md (*vec_extractv2sf_0): Use gen_lowpart. - (*vec_extractv2si_0): Ditto. - * config/i386/sse.md (*vec_extractv4sf_0): Ditto. - (zero_extended_scalar_load_operand splitters): Ditto. - (vec_extract splitters): Ditto. - (*vec_extractv4si_0_zext): Ditto. - (avx__): Use gen_lowpart - and lowpart_subreg. - (avx512f__): Ditto. - (avx512f__256): Ditto. - (*sse4_1_extractps): Use lowpart_subreg. - * config/i386/i386.md (x87 floatsplitter): Use gen_lowpart. - - 2016-04-18 Rainer Orth - - * doc/install.texi (Specific, i?86-*-solaris2.10): Update gas and - gld requirements. - (Specific, *-*-solaris2*): Update Solaris 11 bundled gcc versions. - Mention Solaris 11 packaging changes. - Update gas and gld requirements. - Remove reference to pre-Solaris 10 bug. - (Specific, sparc-sun-solaris2*): Remove reference to pre-Solaris 10 - systems and bugs. - (Specific, sparc64-*-solaris2*): Remove reference to bootstrap - with cc. - - 2016-04-17 Jan Hubicka - - * tree-ssa-loop-ivopts.c (avg_loop_niter): Use also - max_loop_iterations_int. - - 2016-04-18 Richard Biener - - PR tree-optimization/43434 - * tree-ssa-structalias.c (struct vls_data): New. - (visit_loadstore): Handle all pointer-based accesses. - (compute_dependence_clique): Compute a bitmap of restrict tags - assigned bases and pass it to visit_loadstore. - - 2016-04-18 Matthew Wahab - - PR target/70711 - * config/arm/bpabi.h (BE8_LINK_SPEC): Add entries for armv8+crc, - armv8.1-a and armv8.1-a+crc. - - 2016-04-18 Richard Biener - - PR tree-optimization/70701 - * tree-ssa-sccvn.c (vn_reference_lookup_3): Resolve fully constant - references after translating through a memcpy. - - 2016-04-18 Richard Biener - - * tree-ssa-pre.c (postorder, postorder_num): Make locals ... - (compute_antic): ... here. For partial antic use regular - postorder and scrap iteration. - (compute_partial_antic_aux): Remove unused return value. - (init_pre): Do not allocate postorder. - (fini_pre): Do not free postorder. - - 2016-04-18 Richard Biener - - PR middle-end/37870 - * expmed.c (extract_bit_field_1): Remove broken case - using a wider MODE_INT mode. - - 2016-04-18 Segher Boessenkool - - * has-brig.c (lendian16): Don't try to use __builtin_bswap16 - unless compiling with at least GCC-4.8. - - 2016-04-17 Jan Hubicka - - PR bootstrap/70706 - * graphite.c (graphite_finalize): Update call to - tree_estimate_probability. - * predict.h (tree_estimate_probability): Update prototype. - - 2016-04-17 Jan Hubicka - - * predict.c (combine_predictions_for_bb): Add dry_run parmaeter. - (tree_estimate_probability): Likewise. - (pass_profile::execute): Update. - (report_predictor_hitrates): New function. - * profile.c (compute_branch_probabilities): Use it. - * predict.h (report_predictor_hitrates): Declare. - - 2016-04-17 Jan Hubicka - - PR ipa/70018 - * cgraph.h (cgraph_node::set_const_flag, - cgraph_node::set_pure_flag): Update prototype to return bool; - update comment. - * cgraph.c (cgraph_node::call_for_symbol_thunks_and_aliases): Thunks - of interposable symbol are interposable, too. - (cgraph_set_const_flag_1): Rename to ... - (set_const_flag_1): ... this one; change to self recursive function - instead of call_for_symbol_thunks_and_aliases. Handle correctly - clearnig the flag in all variants and also virtual thunks of const - functions are pure; track if any change was done. - (cgraph_node::set_const_flag): Update. - (struct set_pure_flag_info): New struct. - (cgraph_set_pure_flag_1): Rename to ... - (set_pure_flag_1): ... this one; take set_pure_flag_info parameter - rather than pointer encoded flags; track if any changes was done; - handle correctly clearning flag and setting flag of aliases already - declared const. - (cgraph_node::set_pure_flag): Update. - (cgraph_node::set_nothrow_flag): Handle correctly clearning the flag. - - 2016-04-17 Tom de Vries + 2018-05-23 Jozef Lawrynowicz - PR other/70433 - * pretty-print.c (pp_write_text_as_dot_label_to_stream): Escape - backslash in label. - - 2016-04-17 Tom de Vries - - * pretty-print.c (pp_write_text_as_dot_label_to_stream): Classify chars - '{}<> ' as escape-for-record. + * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define. + (msp430_warn_func_return): New. - 2016-04-17 Tom de Vries + 2018-05-24 Roger Sayle - * pretty-print.c (pp_write_text_as_dot_label_to_stream): Simplify loop - structure. + * 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. - 2016-04-17 Tom de Vries + 2018-05-24 H.J. Lu - PR other/70185 - * tree-pass.h (class opt_pass): Remove graph_dump_initialized member. - * dumpfile.h (struct dump_file_info): Add graph_dump_initialized field. - * dumpfile.c (dump_files): Initialize graph_dump_initialized field. - * passes.c (finish_optimization_passes): Only call - finish_graph_dump_file if dfi->graph_dump_initialized. - (execute_function_dump, pass_init_dump_file): Use - dfi->graph_dump_initialized instead of pass->graph_dump_initialized. - - 2016-04-17 Tom de Vries - - PR tree-optimization/70256 - * tree-ssa-structalias.c (dump_varinfo, debug_varinfo, dump_varmap) - (debug_varmap): New function. - - 2016-04-17 Tom de Vries - - PR other/70183 - * passes.c (pass_manager::register_pass): Propagate pflags. - - 2016-04-17 Tom de Vries - - PR other/68875 - * pass_manager.h (TERMINATE_PASS_LIST): Add pass argument. - * passes.c (pass_manager::pass_manager): Declare and init p_start in - INSERT_PASSES_AFTER. Add pass parameter to TERMINATE_PASS_LIST, and - check if it's equal to p_start. - * passes.def: Add arguments to TERMINATE_PASS_LISTs. - - 2016-04-15 Jan Hubicka - - PR ipa/70018 - * cgraph.c (cgraph_set_const_flag_1): Only set as pure if - function does not bind to current def. - * ipa-pure-const.c (worse_state): Add FROM and TO parameters; - handle conservatively calls to functions that does not need to bind - to current def. - (check_call): Update call of worse_state. - (ignore_edge_for_nothrow): Update. - (ignore_edge_for_pure_const): Likewise. - (propagate_pure_const): Update calls to worse_state. - (skip_function_for_local_pure_const): Reformat comments. - - 2016-04-15 Jan Hubicka - - PR ipa/70018 - * cgraph.c (cgraph_node::get_availability): Add REF parameter. - (cgraph_node::function_symbol): Likewise. - (cgraph_node::function_or_virtual_thunk_symbol): Likewise. - * cgraph.h (symtab_node::get_availabbility): Add REF parameter. - (symtab_node::ultimate_alias_target): Add REF parameter. - (symtab_node::binds_to_current_def_p): Declare. - (symtab_node;:ultimate_alias_target_1): Add REF parameter. - (cgraph_node::function_symbol): Likewise. - (cgraph_node::function_or_virtual_thunk_symbol): Likewise. - (cgraph_node::get_availability): Likewise. - (cgraph_edge::binds_to_current_def_p): New inline function. - (varpool_node::get_availability): Add REF parameter. - (varpool_node::ultimate_alias_target): Likewise. - * symtab.c (symtab_node::ultimate_alias_target_1): Likewise. - (symtab_node::binds_to_current_def_p): Likewise. - * varpool.c (varpool_node::get_availability): Likewise. - - 2016-04-15 Kirill Yukhin - - PR target/70662 - * config/i386/sse.md(define_insn "_vec_dup"): - Fix mode size check. - - 2016-04-15 Jakub Jelinek - - * BASE-VER: Set to 7.0.0. + PR target/85900 + PR target/85345 + * varasm.c (assemble_alias): Check ifunc_resolver only on + FUNCTION_DECL. - 2016-04-15 Alexander Monakov + 2018-05-24 Uros Bizjak - * config/nvptx/nvptx.opt (moptimize): Add a period at end of help text. + PR target/85903 + * config/i386/sse.md (movdi_to_sse): Do not generate pseudo + when memory input operand is handled. - 2016-04-15 Kyrylo Tkachov + 2018-05-24 Luis Machado - * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T - architecture revisions. + * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static + global. + (qdf24xx_tunings) : Set to qdf24xx_addrcost_table. - 2016-04-15 Bernd Schmidt + 2018-05-24 Richard Sandiford - * config/i386/i386-protos.h (ix86_using_red_zone): Declare. - * config/i386/i386.c (ix86_using_red_zone): No longer static. - * config/i386/i386.md (stack decrement to push peepholes): Guard - with !x86_using_red_zone (). + * match.pd: Delay FMA folds until after vectorization. - 2016-04-15 Jakub Jelinek - - PR c++/70675 - * tree-pretty-print.c (do_niy): Add FLAGS argument, pass it down - to dump_generic_node. - (NIY): Pass also flags to do_niy. - - 2016-04-15 Thomas Schwinge - - * omp-low.c (simd_clone_struct_alloc, simd_clone_struct_copy) - (simd_clone_vector_of_formal_parm_types) - (simd_clone_clauses_extract, simd_clone_compute_base_data_type) - (simd_clone_mangle, simd_clone_create) - (simd_clone_adjust_return_type, create_tmp_simd_array) - (simd_clone_adjust_argument_types, simd_clone_init_simd_arrays) - (struct modify_stmt_info, ipa_simd_modify_stmt_ops) - (ipa_simd_modify_function_body, simd_clone_linear_addend) - (simd_clone_adjust, expand_simd_clones, ipa_omp_simd_clone) - (pass_data_omp_simd_clone, class pass_omp_simd_clone) - (pass_omp_simd_clone::gate, make_pass_omp_simd_clone): Move into... - * omp-simd-clone.c: ... this new file. - (simd_clone_vector_of_formal_parm_types): Make it static. - * Makefile.in (OBJS): Add omp-simd-clone.o. - - 2016-04-15 Kirill Yukhin + 2018-05-24 Andre Vieira - PR target/70662 - * config/i386/sse.md: Use proper memory operand modifiers. - - - 2016-04-15 Richard Biener - Alan Modra - - PR tree-optimization/70130 - * tree-vect-data-refs.c (vect_supportable_dr_alignment): Detect - when alignment stays not the same and no not use the realign - scheme then. - - 2016-04-14 Michael Meissner - - PR target/70669 - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add - direct move handlers for KFmode. Change TFmode handlers test from - FLOAT128_IEEE_P to FLOAT128_VECTOR_P. - - 2016-04-14 Jakub Jelinek - - PR c++/70594 - * ipa-utils.h (polymorphic_ctor_dtor_p): New prototype. - * ipa-polymorphic-call.c (polymorphic_ctor_dtor_p): New function. - (inlined_polymorphic_ctor_dtor_block_p): Use it. - * tree-ssa-live.c (remove_unused_scope_block_p): When - in_ctor_dtor_block, avoid discarding not just BLOCKs with - BLOCK_ABSTRACT_ORIGIN being FUNCTION_DECL, but even when - block_ultimate_origin is FUNCTION_DECL. - (remove_unused_locals): If current_function_decl is - polymorphic_ctor_dtor_p, pass initial true to - remove_unused_scope_block_p' is_ctor_dtor_block. + PR target/83009 + * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make + address check not strict. - 2016-04-14 Martin Sebor + 2018-05-24 Richard Sandiford - PR c++/69517 - PR c++/70019 - PR c++/70588 - * doc/extend.texi (Variable Length): Revert. + * 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. - 2016-04-14 Marek Polacek - Jan Hubicka + 2018-05-23 Luis Machado - PR c++/70029 - * tree.c (verify_type): Disable the canonical type of main variant - check. + * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type + modifier for printing the step amount. - 2016-04-14 Jason Merrill + 2018-05-23 Jozef Lawrynowicz - * cfgexpand.c, expr.c: Revert previous change. + PR target/78849 + * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN + types. - 2016-04-14 Cesar Philippidis + 2018-05-23 Segher Boessenkool - PR middle-end/70643 - * omp-low.c (lower_oacc_reductions): Check for TREE_CONSTANT - when building a mem ref for the incoming reduction variable. + * doc/sourcebuild.texi (Endianness): New subsubsection. - 2016-04-14 Richard Biener + 2018-05-23 Luis Machado - PR tree-optimization/70614 - * tree-scalar-evolution.c (analyze_evolution_in_loop): Terminate - loop if the evolution dropped to chrec_dont_know. - (interpret_condition_phi): Likewise. + * 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. - 2016-04-14 Richard Biener + 2018-05-23 Uros Bizjak - PR tree-optimization/70623 - * tree-ssa-pre.c (changed_blocks): Make global ... - (compute_antic): ... local here. Move and fix worklist - handling here. Do not clear EDGE_DFS_BACK or call mark_dfs_back_edges. - (compute_antic_aux): Add dumping for MAX assumed succs. Remove - worklist handling, dump when ANTIC_IN changed. - (compute_partial_antic_aux): Remove worklist handling. - (init_pre): Do not compute post dominators. Add a comment about - the CFG order chosen. - (fini_pre): Do not free post dominators. - - 2016-04-13 Martin Sebor + * 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. - PR c++/69517 - PR c++/70019 - PR c++/70588 - * doc/extend.texi (Variable Length): Document C++ specifics. - - 2016-04-13 Jakub Jelinek - - PR c++/70641 - * ipa-pure-const.c (pass_nothrow::execute): Call maybe_clean_eh_stmt - on all recursive call stmts. Return TODO_cleanup_cfg if any dead - eh edges have been purged. + 2018-05-23 Alexander Monakov - PR c++/70594 - * tree-sra.c (create_access_replacement, - get_replaced_param_substitute): Set DECL_NAMELESS on repl if it - gets fancy name. - * tree-pretty-print.c (dump_fancy_name): New function. - (dump_decl_name, dump_generic_node): Use it. + PR rtl-optimization/79985 + * df-scan.c (df_insn_refs_collect): Remove special case for + global registers and asm statements. - 2016-04-13 Jason Merrill + 2018-05-23 Alexander Monakov - * cfgexpand.c (pass_expand::execute): Handle attribute "abi warning". - * expr.c (expand_expr_real_1): Likewise. + * 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. - 2016-04-13 Ilya Enkovich + 2018-05-23 Richard Biener - * config/i386/i386.md (kunpckhi): Swap operands. - (kunpcksi): Likewise. - (kunpckdi): Likewise. - * config/i386/sse.md (vec_pack_trunc_qi): Likewise. - (vec_pack_trunc_): Likewise. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction + of fixed offset from memset VN. - 2016-04-13 Jakub Jelinek + 2018-05-23 Bill Schmidt - PR debug/70628 - * explow.c (convert_memory_address_addr_space_1): Formatting fix. + * 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. - PR middle-end/70633 - * gimplify.c (gimplify_init_constructor): Clear TREE_STATIC if - gimplification turns some element into non-constant. + 2018-05-23 Wilco Dijkstra - PR debug/70628 - * rtl.h (convert_memory_address_addr_space_1): New prototype. - * explow.c (convert_memory_address_addr_space_1): No longer static, - add NO_EMIT argument and don't call convert_modes if true, pass - it down recursively, remove break after return. - (convert_memory_address_addr_space): Adjust caller. - * simplify-rtx.c (simplify_unary_operation_1): Call - convert_memory_address_addr_space_1 instead of convert_memory_address, - if it returns NULL, don't simplify. + * 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. - 2016-04-12 Eric Botcazou + 2018-05-23 Sudakshina Das - PR target/70630 - * config/sparc/sparc.c (sparc_compute_frame_size): Add parentheses. + 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. - 2016-04-12 Jakub Jelinek + 2018-05-23 Richard Biener - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): - Bump the upper SIMDLEN limits, so that if the return type or - characteristic type if the return type is void can be passed in - all available SSE2/AVX/AVX2/AVX512-F registers, the SIMDLEN is - allowed. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary + memset constants via native_interpret_expr. - 2016-04-12 Michael Meissner + 2018-05-22 H.J. Lu - PR target/70640 - * config/rs6000/rs6000.md (ieee_128bit_vsx_neg2_internal): - Do not use "=" constraint on an input constraint. - (ieee_128bit_vsx_abs2_internal): Likewise. - (ieee_128bit_vsx_nabs2_internal): Likewise. - (ieee_128bit_vsx_nabs2): Correct splitter so that it - generates (neg (abs ...)) instead of (abs ...). + 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. - 2016-04-12 Jakub Jelinek + 2018-05-22 Luis Machado - PR rtl-optimization/70596 - * lra-spills.c (spill_pseudos): Don't delete debug insns, instead - just invalidate LRA data and reset them. Adjust dump wording. + * config/aarch64/aarch64.md (*ashift_extv_bfiz): New pattern. - 2016-04-12 Martin Liska + 2018-05-22 Martin Sebor - Revert - 2016-03-30 Jan Hubicka - - * tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can't get realistic - estimates here. - * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also - max_loop_iterations_int. - (tree_unswitch_outer_loop): Likewise. - * tree-ssa-loop-ivopts.c (avg_loop_niter): Likewise. - * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + 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. - 2016-04-12 Tom de Vries - - PR tree-optimization/68756 - * graphite-isl-ast-to-gimple.c (copy_cond_phi_args): Use new_expr - instead of new_name. - - 2016-04-12 Jakub Jelinek - - PR tree-optimization/70602 - * tree-sra.c (generate_subtree_copies): Don't write anything into - constant pool decls. - - * omp-low.c (lower_omp_target): Use GOMP_MAP_FIRSTPRIVATE_INT - regardless whether there are depend clauses or not. - - 2016-04-11 Michael Meissner - - PR target/70381 - * config/rs6000/rs6000.c (rs6000_opt_masks): Disable using the - target attribute and pragma from changing the -mfloat128 - and -mfloat128-hardware options. - - * doc/extend.texi (Additional Floating Types): Document PowerPC - __float128 restrictions. - - 2016-04-11 James Greenhalgh - - PR target/70133 - * config/aarch64/driver-aarch64.c - (aarch64_get_extension_string_for_isa_flags): New. - (arch_extension): Rename to... - (aarch64_arch_extension): ...This. - (ext_to_feat_string): Rename to... - (aarch64_extensions): ...This. - (aarch64_core_data): Keep track of architecture extension flags. - (cpu_data): Rename to... - (aarch64_cpu_data): ...This. - (aarch64_arch_driver_info): Keep track of architecture extension - flags. - (get_arch_name_from_id): Rename to... - (get_arch_from_id): ...This, change return type. - (host_detect_local_cpu): Update and reformat for renames, handle - extensions through common infrastructure. - - 2016-04-11 James Greenhalgh - - PR target/70133 - * config/aarch64/aarch64-common.c (aarch64_option_extension): Keep - track of a canonical flag name. - (all_extensions): Likewise. - (arch_to_arch_name): Also track extension flags enabled by the arch. - (all_architectures): Likewise. - (aarch64_parse_extension): Move to here. - (aarch64_get_extension_string_for_isa_flags): Take a new argument, - rework. - (aarch64_rewrite_selected_cpu): Update for above change. - * config/aarch64/aarch64-option-extensions.def: Rework the way flags - are handled, such that the single explicit value enabled by an - extension is kept seperate from the implicit values it also enables. - * config/aarch64/aarch64-protos.h (aarch64_parse_opt_result): Move - to here. - (aarch64_parse_extension): New. - * config/aarch64/aarch64.c (aarch64_parse_opt_result): Move from - here to config/aarch64/aarch64-protos.h. - (aarch64_parse_extension): Move from here to - common/config/aarch64/aarch64-common.c. - (aarch64_option_print): Update. - (aarch64_declare_function_name): Likewise. - (aarch64_start_file): Likewise. - * config/aarch64/driver-aarch64.c (arch_extension): Keep track of - the canonical flag for extensions. - * config.gcc (aarch64*-*-*): Extend regex for capturing extension - flags. - - 2016-04-11 James Greenhalgh - - * config/aarch64/aarch64.h (AARCH64_FL_FOR_ARCH8_1): Also add - AARCH64_FL_CRC. - - 2016-04-09 Tom de Vries - - PR tree-optimization/68953 - * graphite-sese-to-poly.c (pdr_add_memory_accesses): Order accesses from - first to last subscript. - - 2016-04-09 Jakub Jelinek - - PR tree-optimization/70586 - * tree-ssa-ifcombine.c (bb_no_side_effects_p): Return false - for any calls. - - 2016-04-08 Cesar Philippidis - - PR lto/70289 - PR ipa/70348 - PR tree-optimization/70373 - PR middle-end/70533 - PR middle-end/70534 - PR middle-end/70535 - * gimplify.c (gimplify_adjust_omp_clauses): Add or adjust data - clauses for acc parallel reductions as necessary. Error on those - that are private. - * omp-low.c (scan_sharing_clauses): Don't install variables which - are used in acc parallel reductions. - (lower_rec_input_clauses): Remove dead code. - (lower_oacc_reductions): Add support for reference reductions. - (lower_reduction_clauses): Remove dead code. - (lower_omp_target): Don't remap variables appearing in acc parallel - reductions. - * tree.h (OMP_CLAUSE_MAP_IN_REDUCTION): New macro. + 2018-05-22 Martin Sebor - 2016-04-08 Jakub Jelinek + * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment. - PR middle-end/70593 - * tree-ssa-coalesce.c (build_ssa_conflict_graph): For stmt - with multiple SSA_NAME defs, force the outputs other than first - to be live before calling live_track_process_def on each output. + 2018-05-22 Jackson Woodruff + Kyrylo Tkachov - PR rtl-optimization/70574 - * fwprop.c (forward_propagate_and_simplify): Don't add - REG_EQUAL note if DF_REF_REG (use) is a paradoxical subreg. - (try_fwprop_subst): Don't add REG_EQUAL note if there are any - paradoxical subregs within *loc. + * 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 - 2016-04-08 Thomas Schwinge + * 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. - * config/arc/arc.h (LINK_COMMAND_SPEC): Use gt to ignore - -ftree-parallelize-loops={0,1}. - * config/darwin.h (LINK_COMMAND_SPEC_A): Likewise. - * config/i386/mingw32.h (GOMP_SELF_SPECS): Likewise. - * config/ia64/hpux.h (LIB_SPEC): Likewise. - * config/pa/pa-hpux11.h (LIB_SPEC): Likewise. - * config/pa/pa64-hpux.h (LIB_SPEC): Likewise. + 2018-05-22 Martin Sebor - 2016-04-08 Maxim Ostapenko + 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. - PR sanitizer/70541 - * asan.c (instrument_derefs): If we get unknown location, extract it - with EXPR_LOCATION. - (maybe_instrument_call): Instrument gimple_call's arguments if needed. + 2018-05-22 Martin Sebor - 2016-04-08 Tom de Vries + PR tree-optimization/85826 + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid + assuming that a DECL necesarily has a constant size. - * omp-low.c (lower_omp_target): Set TREE_NO_WARNING for oacc - implicit firstprivate clause. + 2018-05-22 Richard Sandiford - 2016-04-08 Kyrylo Tkachov + PR middle-end/85862 + * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs. - PR target/70566 - * config/arm/thumb2.md (tst + branch-> lsls + branch - peephole below *orsi_not_shiftsi_si): Require that condition - register is dead after the peephole. - (second peephole after the above): Likewise. + 2018-05-22 Richard Biener - 2016-04-08 Alan Modra + PR tree-optimization/85834 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle + non-constant and non-zero memset arguments. - PR target/70117 - * builtins.c (fold_builtin_classify): For IBM extended precision, - look at just the high-order double to test for NaN. - (fold_builtin_interclass_mathfn): Similarly for Inf. For isnormal - test just the high double for Inf but both doubles for subnormal - limit. + 2018-05-22 Martin Liska - 2016-04-07 Jakub Jelinek + PR ipa/85607 + * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types. - * cgraph.h (struct cgraph_simd_clone): Add mask_mode field. - * omp-low.c (simd_clone_init_simd_arrays, simd_clone_adjust): Handle - node->simdclone->mask_mode != VOIDmode masks. - (simd_clone_adjust_argument_types): Likewise. Move sc var definition - earlier, use it instead of node->simdclone. - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): - Set clonei->mask_mode. + 2018-05-22 Richard Biener - 2016-04-06 Patrick Palka + 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. - PR c/70436 - * parser.c (cp_parser_iteration_statement): New parameter IF_P. - Pass it through to cp_parser_already_scoped_statement. - (cp_parser_already_scoped_statement): New parameter IF_P. Pass - it through to cp_parser_statement. - (cp_parser_statement): Pass IF_P through to - cp_parser_iteration_statement. - (cp_parser_pragma): Adjust call to - cp_parser_iteration_statement. + 2018-05-21 Michael Meissner - 2016-04-06 Patrick Palka + 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. - PR c/70436 - * gimplify.c (gimplify_omp_ordered): Add explicit braces to - resolve a future -Wparentheses warning. - * omp-low.c (scan_sharing_clauses): Likewise. - * tree-parloops.c (eliminate_local_variables): Likewise. + 2018-05-21 Richard Sandiford - 2016-04-06 Vladimir Makarov + 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. - PR rtl-optimization/70398 - * lra-constraints.c (process_address_1): Check zero scale and code - for reloading with zero scale. + 2018-05-21 Vladimir Mezentsev - 2016-04-06 Uros Bizjak + PR gcc/84923 + * varasm.c (weak_finish): Clean up weak_decls. - * config/i386/sse.md (shuffletype): Add V32HI and V4TI modes. - (ssescalarsize): Add V8SF, V4SF, V4DF and V2DF modes. + 2018-05-21 Kyrylo Tkachov - 2016-04-06 Jakub Jelinek + * 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. - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): - Add support for AVX512F clones, include them by default for - exported OpenMP declare simd functions. For AVX2 allow simdlen 32 - and use it if charasteric type is 8-bit, for AVX512F allow simdlen - up to 128. + 2018-05-21 Alexander Nesterovskiy - PR middle-end/70550 - * tree.h (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT): Define. - * gimplify.c (gimplify_adjust_omp_clauses_1): Set it for implicit - firstprivate clauses. - * omp-low.c (lower_send_clauses): Set TREE_NO_WARNING for - OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT !by_ref vars in task contexts. - (lower_omp_target): Set TREE_NO_WARNING for - non-addressable possibly uninitialized vars which are copied into - addressable temporaries or copied for GOMP_MAP_FIRSTPRIVATE_INT. + * 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. - 2016-04-05 John David Anglin + 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. - * config/pa/predicates.md (integer_store_memory_operand): Accept - REG+D operands with a large offset when reload_in_progress is true. - (floating_point_store_memory_operand): Likewise. + 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. - 2016-04-05 Jakub Jelinek + 2018-05-17 Richard Biener - PR c++/70336 - * match.pd (nested int casts): Limit to GIMPLE. + * tree-ssa-dse.c (dse_classify_store): Fix iterator increment + for pruning loop and prune defs feeding only already visited PHIs. - 2016-04-05 Jan Hubicka + 2018-05-17 Richard Biener - PR ipa/66223 - * ipa-devirt.c (maybe_record_node): Fix comment; use - SANITIZE_UNREACHABLE instead of SANITIZE_UNDEFINED. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling. - 2016-04-05 Jakub Jelinek + 2018-05-17 Bin Cheng + Richard Biener - PR rtl-optimization/70542 - * ree.c (add_removable_extension): For VECTOR_MODE_P punt - if there are any uses other than insn or debug insns. + PR tree-optimization/85793 + * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load + for VMAT_ELEMENTWISE. - 2016-04-05 Marc Glisse - Jakub Jelinek + 2018-05-17 Richard Sandiford - PR tree-optimization/70509 - * simplify-rtx.c (simplify_binary_operation_1) : - Shift HOST_WIDE_INT_1U instead of 1. - - 2016-04-05 Zdenek Sojka - - PR tree-optimization/70509 - * tree-ssa-forwprop.c (simplify_bitfield_ref): Use bitsize_int instead - of the vector base type for index. - - 2016-04-05 Uros Bizjak - - PR target/70510 - * config/i386/sse.md (iptr): Add V64QI, V32HI, V16SI and V8DI modes. - - 2016-04-05 Richard Biener - - PR tree-optimization/70526 - * tree-sra.c (build_ref_for_offset): Use prev_base to - extract the alias pointer type. - - 2016-04-05 Richard Biener - - * dse.c (struct store_info): Remove alias_set member. - (struct read_info_type): Likewise. - (clear_alias_group, clear_alias_mode_table, clear_alias_mode_holder, - spill_deleted, clear_alias_set_lookup): Remove. - (get_group_info): Remove dead base == NULL_RTX case. - (dse_step0): Remove initialization of removed variables. - (delete_dead_store_insn): Reomve alias set dumping. - (free_read_records): Remove alias_set handling. - (canon_address): Remove alias_set_out parameter. - (record_store): Remove spill_alias_set, it's always zero. - (check_mem_read_rtx): Likewise. - (dse_step2): Rename from ... - (dse_step2_nospill): ... this. Adjust. - (scan_stores): Rename from ... - (scan_stores_nospill): ... this. - (scan_reads): Rename from ... - (scan_reads_nospill): ... this. - (scan_stores_spill, scan_reads_spill): Remove. - (dse_step3_scan): Remove for_spills argument which is always false. - (dse_step3): Likewise. - (dse_step5): Rename from ... - (dse_step5_nospill): ... this. Remove alias_set handling. - (rest_of_handle_dse): Adjust. - - 2016-04-05 Jakub Jelinek - - PR target/70525 - * config/i386/sse.md (*andnot3): Simplify assertions. - Use vpandn for V16SI/V8DImode, vpandnq for - V32HI/V64QImode, don't use , fix up formatting. - (*andnot3_mask): Remove insn with VI12_AVX512VL iterator. - - 2016-04-05 Richard Biener - - PR middle-end/70499 - * gimplify-me.c (gimple_regimplify_operands): Do not rewrite - non-register type temporaries into SSA. - - 2016-04-04 Jan Hubicka - - PR ipa/66223 - * ipa-devirt.c (maybe_record_node): Do not optimize cxa_pure_virtual - calls when sanitizing. - (possible_polymorphic_call_target_p): Fix formatting. - - 2016-04-04 Bill Schmidt - Jakub Jelinek + * 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. - PR middle-end/70457 - * tree-inline.c (estimate_num_insn): Use gimple_call_builtin_p - to ensure a call statement is compatible with a built-in's - prototype. - * tree-ssa-math-opts.c (pass_optimize_windening_mul::execute): - Likewise. + 2018-05-17 Richard Sandiford - 2016-04-04 Richard Biener + * 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. - PR rtl-optimization/70484 - * rtl.h (canon_output_dependence): Declare. - * alias.c (canon_output_dependence): New function. - * dse.c (record_store): Use canon_output_dependence rather - than canon_true_dependence. + 2018-05-17 Martin Liska - 2016-03-30 Jan Hubicka + * gimple-ssa-sprintf.c (format_directive): Do not use + space in between 'G_' and '('. - PR ipa/68881 - * cgraph.h (symtab_node::copy_visibility_from): New function. - * symtab.c (symtab_node::copy_visibility_from): New function. - * ipa-visibility.c (optimize_weakref): New function. - (function_and_variable_visibility): Use it. + 2018-05-17 Jakub Jelinek - 2016-04-04 Martin Liska + PR target/85323 + * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts + even if the mask is not all ones. - PR hsa/70402 - * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Guard index - value that is really in range handled by SBR instruction. - * hsa-brig.c (emit_switch_insn): Do not emit unconditional jump. - * hsa-dump.c (dump_hsa_insn_1): Do not dump default BB. - * hsa.h (hsa_insn_sbr::m_default_bb): Remove field. + PR target/85323 + * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by + vector. + (ix86_gimple_fold_builtin): Likewise. - 2016-04-03 Oleg Endo + 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. - PR target/70416 - PR target/67391 - * config/sh/sh.md (*addsi3): Allow pattern when reload_in_progress is - set, but not for SP_REG operands. + * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8, + _mm512_setzero): New intrinsics. - 2016-04-02 Martin Sebor + 2018-05-17 James Greenhalgh + Kyrylo Tkachov - PR c++/67376 - * fold-const.c (maybe_nonzero_address): New function. - (fold_comparison): Call it. Fold equality and relational - expressions involving null pointers. - (tree_single_nonzero_warnv_p): Call maybe_nonzero_address. + * 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. - 2016-03-31 Evandro Menezes + 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. - Fix the predicate "aarch64_simd_reg_or_zero" to correctly validate - the "Y" constraint (scalar FP 0.0 immediate). + 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 - * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): - Add the "const_double" to the list of operand constraints. + PR tree-optimization/85692 + * tree-ssa-forwprop.c (simplify_vector_constructor): Try two + source permute as well. - 2016-04-01 Jakub Jelinek + 2018-05-11 Martin Liska - PR rtl-optimization/70467 - * config/i386/i386.md (*add3_doubleword, *sub3_doubleword): - If low word of the last operand is 0, just emit addition/subtraction - for the high word. + PR sanitizer/85556 + * doc/extend.texi: Document LLVM style format for no_sanitize + attribute. - 2016-04-01 Andreas Krebbel + 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. - PR target/70404 - * config/s390/s390.c (s390_expand_insv): Check for everything - constant instead of just VOIDmode stuff. + 2018-05-09 Jim Wilson - 2016-04-01 Ramana Radhakrishnan + 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. - PR target/70496 - * config/arm/arm.h (ASM_APP_OFF): Handle TARGET_ARM and TARGET_THUMB. + 2018-05-09 Richard Biener - 2016-04-01 Nathan Sidwell + * 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. - * tree.def (TRY_CATCH_EXPR): Correct documentation. + 2018-05-09 Segher Boessenkool - 2016-03-31 Vladimir Makarov + 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. - PR rtl-optimization/70461 - * ira-color.c (allocno_copy_cost_saving): Use allocno class if it - is necessary. + 2018-05-09 Segher Boessenkool - 2016-03-31 Martin Liska + 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. - PR hsa/70399 - * hsa-brig.c (hsa_op_immed::emit_to_buffer): Emit either - a tree value or an immediate integer value to a buffer - that is eventually copied to a BRIG section. - (emit_immediate_operand): Call the function here. - * hsa-dump.c (dump_hsa_immed): Remove checking assert. - * hsa-gen.c (hsa_op_immed::hsa_op_immed): Remove initialization - of class' fields that are removed. - (hsa_op_immed::~hsa_op_immed): Remove deinitialization. - * hsa.h (class hsa_op_immed): Remove m_brig_repr and - m_brig_repr_size fields. + 2018-05-09 Segher Boessenkool - 2016-03-31 Martin Liska + PR rtl-optimization/85645 + * regrename.c (build_def_use): Also kill the chains that include the + destination of a REG_CFA_REGISTER note. - PR hsa/70391 - * hsa-gen.c (hsa_function_representation::update_dominance): New - function. - (convert_addr_to_flat_segment): Likewise. - (gen_hsa_memory_set): New alignment argument. - (gen_hsa_ctor_assignment): Likewise. - (gen_hsa_insns_for_single_assignment): Provide alignment - to gen_hsa_ctor_assignment. - (gen_hsa_insns_for_direct_call): Add new argument. - (expand_lhs_of_string_op): New function. - (expand_string_operation_builtin): Likewise. - (expand_memory_copy): New function. - (expand_memory_set): New function. - (gen_hsa_insns_for_call): Use HOST_WIDE_INT. - (convert_switch_statements): Change signature. - (generate_hsa): Use a return value of the function. - (pass_gen_hsail::execute): Do not call - convert_switch_statements here. - * hsa-regalloc.c (hsa_regalloc): Call update_dominance. - * hsa.h (hsa_function_representation::m_modified_cfg): New flag. - (hsa_function_representation::update_dominance): New function. - - 2016-03-31 Martin Liska - - PR hsa/70391 - * hsa-brig.c (emit_directive_variable): Emit alignment - according to hsa_symbol::m_align. - * hsa-dump.c (hsa_byte_alignment): Move the function to another file. - (dump_hsa_symbol): Dump alignment of HSA symbols. - * hsa-gen.c (get_symbol_for_decl): Set-up alignment of a symbol. - (gen_hsa_addr_with_align): New function. - (hsa_bitmemref_alignment): Use newly added function. - (gen_hsa_insns_for_load): Likewise. - (gen_hsa_insns_for_store): Likewise. - (gen_hsa_memory_copy): New argument added. - (gen_hsa_insns_for_single_assignment): Respect - alignment for assignments processed via gen_hsa_memory_copy. - (gen_hsa_insns_for_direct_call): Likewise. - (gen_hsa_insns_for_return): Likewise. - (gen_function_def_parameters): Set default alignment. - * hsa.c (hsa_object_alignment): New function. - (hsa_byte_alignment): Pasted function. - * hsa.h (hsa_symbol::m_align): New field. - - 2016-03-31 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_computation_cost_at): Initialize - scratch field for goto case. - - 2016-03-31 James Greenhalgh - - * config/arm/linux-elf.h (ASM_OUTPUT_DEF): Delete. - - 2016-03-31 Ilya Enkovich - - PR target/70442 - * config/i386/i386.c (scalar_chain::convert_op): Fix description. - (scalar_chain::convert_insn): Call convert_op for reg - moves to handle undefined registers. - - 2016-03-31 Nathan Sidwell - - PR c++/70393 - * varasm.c (output_constructor_regular_field): Flush bitfield earlier. - Assert we don't want to move backwards. - - 2016-03-31 Kirill Yukhin - - PR target/70453 - * config/i386/sse.md (define_mode_attr shuffletype): Fix typo. - - 2016-03-31 Jakub Jelinek - - PR rtl-optimization/70460 - * ira.c (indirect_jump_optimize): Don't substitute LABEL_REF - with operand from REG_LABEL_OPERAND, instead substitute - SET_SRC or REG_EQUAL note content if it is a LABEL_REF. - Don't do anything for REG_NON_LOCAL_GOTO jumps. - - 2016-03-31 Martin Liska - - * passes.c (execute_one_pass): Do not call - todo_after for a discarded function. - - 2016-03-31 Bin Cheng - - * tree-ssa-loop-ivopts.c (struct comp_cost): New scrach field. - (no_cost, infinite_cost): Initialize the new field. - (get_computation_cost_at): Record setup cost. - (determine_use_iv_cost_address): Skip cost computation for sub - uses if we can estimate it without losing accuracy. - - 2016-03-30 Jan Hubicka - - * tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can't get realistic - estimates here. - * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also - max_loop_iterations_int. - (tree_unswitch_outer_loop): Likewise. - * tree-ssa-loop-ivopts.c (avg_loop_niter): Likewise. - * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + 2018-05-09 Segher Boessenkool - 2016-03-30 Richard Biener + PR rtl-optimization/85645 + * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an + insn that has a REG_CFA_REGISTER note. - PR middle-end/70450 - * fold-const.c (extract_muldiv_1): Fix thinko in wide_int::from usage. + 2018-05-09 Richard Sandiford - 2016-03-30 Jakub Jelinek + * 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. - PR target/70421 - * config/i386/i386.c (ix86_expand_vector_set): Fix up argument order - in gen_blendm expander. + 2018-05-09 Tom de Vries - 2016-03-30 Nick Clifton + PR target/85626 + * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true") + (define_insn "trap_if_false"): Add exit after trap. - PR target/62254 - * config/arm/arm.c (arm_reload_out_hi): Add code to handle the - case where we are already provided with an SImode SUBREG. + 2018-05-09 Eric Botcazou - 2016-03-30 H.J. Lu + 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. - PR target/70439 - * config/i386/i386.c (ix86_expand_epilogue): Properly check - conflict between DRAP register and __builtin_eh_return. + 2018-05-08 Kelvin Nilsen - 2016-03-30 Michael Matz - Richard Biener + 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. + * gcc/config/rs6000/titan.md: Adjust for fp_type removal. + * gcc/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. + * gcc/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. - PR ipa/12392 - * ipa-polymorphic-call.c (struct type_change_info): Change - speculative to an unsigned allowing to limit the work we do. - (csftc_abort_walking_p): New inline function.. - (check_stmt_for_type_change): Limit the number of may-defs - skipped for speculative devirtualization to - max-speculative-devirt-maydefs. - * params.def (max-speculative-devirt-maydefs): New param. - * doc/invoke.texi (--param max-speculative-devirt-maydefs): Document. + 2018-05-04 Jakub Jelinek - 2016-03-30 Mike Stump + 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. - PR target/63890 - * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Use when profiling - and TARGET_MACHO. + 2018-05-03 Nathan Sidwell - 2016-03-30 Patrick Palka + * doc/extend.texi (Deprecated Features): Remove + -ffriend-injection. + (Backwards Compatibility): Likewise. + * doc/invoke.texi (C++ Language Options): Likewise. + (C++ Dialect Options): Likewise. - PR tree-optimization/59124 - * tree-vrp.c (register_edge_assert_for_2): For NAME != CST1 - where NAME = A +- CST2 add the assertion A != (CST1 -+ CST2). + 2018-05-03 Jakub Jelinek - 2016-03-29 Jeff Law + PR target/85530 + * config/i386/avx512fintrin.h (_mm512_mullox_epi64, + _mm512_mask_mullox_epi64): New intrinsics. - * tree-ssa-coalesce.c (struct ssa_conflicts): Fix typo in comment. + 2018-05-03 Tom de Vries - 2016-03-10 Jan Hubicka + PR testsuite/85106 + * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization + dump files): Add offload-tree. - * tree-ssa-loop-ivcanon.c (try_peel_loop): Change type of peel - to HOST_WIDE_INT. + 2018-05-03 Richard Biener - 2016-03-29 Thomas Schwinge + 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. - * config/gnu.h (CPP_SPEC, LIB_SPEC): Don't override. - * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt1.o instead of - gcrt0.o if linking dynamically. + 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. - 2016-03-10 Jan Hubicka + 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 ipa/70283 - * ipa-devirt.c (methods_equal_p): New function. - (compare_virtual_tables): Use it. - * cgraph.h (symbol_table::symbol_suffix_separator): Declare. - * cgraphclones.c (clone_function_name_1): Use - symbol_table::symbol_suffix_separator. - * coverage.c (build_var): Likewise. - * symtab.c (symbol_table::symbol_suffix_separator): New. + PR web/85578 + * doc/install.texi2html: Replace _002d with - and _002a with * in + generated html files using sed. - 2016-03-29 Jakub Jelinek + 2018-04-30 David Malcolm - PR rtl-optimization/70429 - * combine.c (simplify_shift_const_1): For ASHIFTRT don't optimize - (cst1 >> count) >> cst2 into (cst1 >> cst2) >> count if - mode != result_mode. + 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. - PR c++/70353 - * tree-inline.c (remap_decls): Don't add_local_decl if cfun is null. + 2018-04-30 David Malcolm - PR tree-optimization/70405 - * ssa-iterators.h (num_imm_uses): Add missing braces. + * 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. + * gcc/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'. + * gcc/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, gcc/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. - 2016-03-29 Vladimir Makarov + 2018-04-27 Jeff Law - PR rtl-optimization/68695 - * ira-color.c (allocno_copy_cost_saving): New. - (improve_allocation): Use it. + * config.gcc: Mark tile* targets as deprecated/obsolete. - 2016-03-29 Richard Henderson + 2018-04-27 Richard Biener - PR middle-end/70355 - * lower-subreg.c (simplify_subreg_concatn): Reject paradoxical subregs. + * config/aarch64/aarch64.c: Simplify ap.__stack advance and + fix for ILP32. - 2016-03-29 Richard Biener + 2018-04-27 Richard Biener - PR middle-end/70424 - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Always - use alignment returned by get_pointer_alignment_1 if it is - bigger than BITS_PER_UNIT. - * builtins.c (get_pointer_alignment_1): Do not return true - for alignment extracted from SSA info. + * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable. - 2016-03-28 James Bowman + 2018-04-27 Uros Bizjak - * config/ft32/ft32.opt (mnodiv): New. - * config/ft32/ft32.md (*divsi3, *modsi3): Qualify with TARGET_NODIV. - * doc/invoke.texi (FT32 Options -mnodiv): New. + * 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. - 2016-03-28 Kirill Yukhin + 2018-04-27 Kyrylo Tkachov - PR target/70406 - * config/i386/i386.md (define_split, andn): Fix modes. + PR target/85512 + * config/aarch64/constraints.md (Usg): Limit to 31. + (Usj): Limit to 63. - 2016-03-26 Richard Biener - Prathamesh Kulkarni + 2018-04-27 Jakub Jelinek - PR ipa/70366 - * ipa-inline-transform.c (inline_call): Pass opts_for_fn (to->decl) - instead of - TREE_OPTIMIZATION (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (to->decl)) - as 2nd argument to cl_optimization_restore(). + 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. - 2016-03-25 Richard Henderson + 2018-04-26 Richard Biener + Jakub Jelinek - PR target/70120 - * config/aarch64/aarch64.c (aarch64_asm_output_pool_epilogue): New. - * config/aarch64/aarch64-protos.h: Declare it. - * config/aarch64/aarch64.h (ASM_OUTPUT_POOL_EPILOGUE): New. + * cgraph.h (symbol_table): Just declare debug method here. + * symtab.c (symbol_table::debug): Define. - 2016-03-25 Alan Modra + 2018-04-26 Eric Botcazou - PR target/70052 - * config/rs6000/constraints.md (j): Simplify. - * config/rs6000/predicates.md (easy_fp_constant): Exclude - decimal float 0.D. - * config/rs6000/rs6000.md (zero_fp): New mode_attr. - (mov_hardfloat, mov_hardfloat32, mov_hardfloat64, - mov_64bit_dm, mov_32bit): Use zero_fp in place of j - in all constraint alternatives. - (movtd_64bit_nodm): Delete "j" constraint alternative. + * loop-invariant.c (may_assign_reg_p): Return false for frame pointer. - 2016-03-24 Aldy Hernandez + 2018-04-26 Uros Bizjak - * tree-ssa-propagate.c: Enhance docs for - SSA_PROP_NOT_INTERESTING. + * 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. - 2016-03-24 Aldy Hernandez + 2018-04-26 Nathan Sidwell - * doc/extend.texi: Fix typo in documentation to pure attribute. + * dumpfile.c (dump_open): New. + (dump_open_alternate_stream, dump_start, dump_begin): Call it. + (dump_finish): Detect stdio/stderr by value not name. - 2016-03-24 John David Anglin + 2018-04-26 Jonathan Wakely - PR target/70319 - * config/pa/pa.md (bswapdi2): Use a scratch register. + * doc/invoke.texi (-Wreturn-type): Document default status for C++. - 2016-03-24 Richard Henderson + 2018-04-26 Tom de Vries - PR middle-end/69845 - * fold-const.c (extract_muldiv_1): Correct test for multiplication - overflow. + 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. - 2016-03-24 Uros Bizjak + 2018-04-26 Tom de Vries - * config/i386/i386.md (*anddi3_doubleword): Generate AND insn - using ix86_expand_binary_operator instead of gen_andsi3. + 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. - 2016-03-24 Richard Biener + 2018-04-26 Richard Biener + Tom de Vries - PR tree-optimization/70396 - * tree-vect-stmts.c (vectorizable_comparison): Use - get_vectype_for_scalar_type. + PR lto/85422 + * lto-streamer-out.c (output_function): Fixup loops if required to match + discovery done in the reader. - 2016-03-24 Richard Biener + 2018-04-26 Richard Biener - PR middle-end/70370 - * gimplify.c (gimplify_asm_expr): Handle !allows_mem outputs - with register bases. + 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. - 2016-03-24 Richard Biener + 2018-04-26 Richard Biener - PR tree-optimization/70372 - * tree-ssa-reassoc.c (eliminate_plus_minus_pair): Use - build_all_ones_cst to also handle vector types correctly. + * 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. - 2016-03-23 Michael Meissner + 2018-04-26 Richard Biener - PR target/70381 - * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Do not set - -mfloat128 here. + 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. - 2016-03-23 Marek Polacek + 2018-03-22 Hans-Peter Nilsson + Jean Lee - PR c++/69884 - * doc/invoke.texi: Document -Wignored-attributes. + * 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. - 2016-03-23 Bin Cheng + 2018-04-25 Mark Wielaard - PR tree-optimization/69042 - * params.def (PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND): Increase the - parameter from 30 to 40. + * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before + shorter ones. - 2016-03-23 Bin Cheng + 2018-04-25 Jakub Jelinek - PR tree-optimization/69042 - * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Add IV cand - for use with constant offset stripped in base. + * 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. - 2016-03-23 Richard Biener + PR middle-end/85414 + * simplify-rtx.c (simplify_unary_operation_1) : Pass SUBREG_REG (op) rather than op to + gen_lowpart_no_emit. - PR middle-end/70251 - * match.pd (A + (B vcmp C ? 1 : 0) -> A - (B vcmp C)): Adjust - mode compatibility check. - (A - (B vcmp C ? 1 : 0) -> A + (B vcmp C)): Likewise. + 2018-04-25 Sebastian Peryt - 2016-03-23 Jeff Law + 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. - PR tree-optimization/64058 - * tree-ssa-coalesce.c (struct coalesce_pair): Add new field - CONFLICT_COUNT. - (struct ssa_conflicts): Move up earlier in the file. - (conflicts_, var_map_): New static variables. - (initialize_conflict_count): New function to initialize the - CONFLICT_COUNT field for each conflict pair. - (compare_pairs): Lazily initialize the conflict count and use it - as the first tie-breaker. - (sort_coalesce_list): Add new arguments conflicts, map. Initialize - and wipe conflicts_ and map_ around the call to qsort. Remove - special case for 2 coalesce pairs. - * bitmap.c (bitmap_count_unique_bits): New function. - (bitmap_count_bits_in_word): New function, extracted from - bitmap_count_bits. - (bitmap_count_bits): Use bitmap_count_bits_in_word. - * bitmap.h (bitmap_count_unique_bits): Declare it. + 2018-04-25 Chung-Ju Wu - 2016-03-23 Ilya Enkovich + * 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. - PR target/69917 - * config/i386/sol2.h (ASM_OUTPUT_DEF_FROM_DECLS): Follow - transparent alias chain for decl assembler name. - * config/sol2.c (solaris_assemble_visibility): Likewise. + 2018-04-25 Chung-Ju Wu - 2016-03-23 Kyrylo Tkachov + * config/nds32/nds32-doubleword.md: New define_split pattern for + illegal register number. - * config/arm/arm1020e.md (1020call_op): Reduce reservation - duration. - (v10_fdivs): Likewise. - (v10_fdivd): Likewise. + 2018-04-25 Chung-Ju Wu - 2016-03-23 Kyrylo Tkachov + * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier. - PR driver/70132 - * config/arm/driver-arm.c (host_detect_local_cpu): Reorder exit logic - to not call fclose twice on file. + 2018-04-25 Chung-Ju Wu - 2016-03-23 Jakub Jelinek + * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character. - PR tree-optimization/70354 - * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern): If - oprnd0 is wider than oprnd1 and there is a cast from the wider - type to oprnd1, mask it with the mask of the narrower type. + 2018-04-25 Richard Biener - PR target/70321 - * config/i386/i386.md (*anddi3_doubleword, *di3_doubleword): - Optimize TARGET_STV splitters, if high or low word of last argument - is 0 or -1. + * lto-streamer.h (LTO_major_version): Bump to 8. - 2016-03-22 Jeff Law + 2018-04-25 Jakub Jelinek - PR target/70232 - tree-ssa-threadbackward.c - (fsm_find_control_statement_thread_paths): Correctly distinguish - between old style jump threads vs FSM jump threads. + * BASE-VER: Set to 9.0.0. - 2016-03-22 Ilya Enkovich + 2018-04-24 Segher Boessenkool - PR target/70302 - * config/i386/i386.c (scalar_chain::convert_op): Support - uninitialized register usage case. + * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes + in __abskf2 and __powikf2. - 2016-03-22 Richard Biener + 2018-04-24 Kyrylo Tkachov - PR middle-end/70251 - * genmatch.c (gen_transform): Adjust last parameter to a three-state - int... - (capture::gen_transform): ... to change behavior when substituting - a condition into cond or not-cond expr context. - (dt_simplify::gen_1): Adjust. - * gimple-match-head.c: Include gimplify.h for unshare_expr. - * match.pd (A + (B vcmp C ? 1 : 0) -> A - (B vcmp C)): Revert - last change and instead change to - A + (B vcmp C ? 1 : 0) -> A - (B vcmp C ? -1 : 0). - (A - (B vcmp C ? 1 : 0) -> A + (B vcmp C)): Likewise. + 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. - 2016-03-22 Anthony Green + 2018-04-24 H.J. Lu - * config/moxie/moxiebox.h (CC1_SPEC): Define. Fix endianness - issue for moxiebox targets. - (CC1PLUS_SPEC): Ditto. + 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. - 2016-03-22 Richard Biener + 2018-04-24 H.J. Lu - PR middle-end/70333 - * fold-const.c (extract_muldiv_1): Properly perform multiplication - in the wide type. + PR target/85485 + * doc/install.texi: Remove -mcet from bootstrap-cet. - 2016-03-22 Kirill Yukhin + 2018-04-24 Jakub Jelinek - * config/i386/i386.c (def_builtin): Remove duplicated functionality. + 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. - 2016-03-22 Kirill Yukhin - - PR target/70325 - * config/i386/i386.c (def_builtin): Handle - OPTION_MASK_ISA_AVX512VL to be and-ed with other - bits. - (const struct builtin_description bdesc_special_args[]): - Remove duplicate ISA bits. + 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. - 2016-03-22 Jakub Jelinek + 2018-04-24 Cesar Philippidis - PR target/70329 - * config/i386/i386.c (ix86_expand_vecop_qihi): Don't bother computing - d.perm[i] for i >= d.nelt. If not full_interleave, compute d.perm[i] - in a way that works also for AVX512BW. + * doc/install.texi: Update newlib dependency for nvptx. - PR target/70300 - * config/i386/i386.md (cvtsd2ss splitter): Unpack in destination - instead of source if operands[1] is xmm16 and above and - !TARGET_AVX512VL. Use avx512f_vec_dupv16sf_1 instead of - vec_interleave_lowv4sf if we need to unpack xmm16 and above. + 2018-04-24 Jakub Jelinek - PR c++/70295 - * gimplify.c (gimplify_modify_expr): Call gimple_set_no_warning - on assign if (*from_p) is a comparison, set it to - TREE_NO_WARNING (*from_p). + PR target/85508 + * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL + instead of INTVAL when shifting x left. - 2016-03-21 Jakub Jelinek + 2018-04-24 Andreas Krebbel - PR middle-end/70326 - * lra.c (restore_scratches): Ignore deleted insns. + PR tree-optimization/85478 + * tree-vect-loop.c (vect_analyze_loop_2): Do not call + vect_grouped_store_supported for single element vectors. - 2016-03-21 Marc Glisse - Jakub Jelinek + 2018-04-24 Richard Biener - PR tree-optimization/70317 - * match.pd (cmp @0 @0): Pass @0 instead of TYPE_MODE (TREE_TYPE (@0)) - to HONOR_NANS. + PR target/85491 + * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided + load cost increase to the case of non-constant step. - 2016-03-21 Uros Bizjak + 2018-04-24 Jakub Jelinek - PR target/70327 - * config/i386/i386.md (movxi): Use ix86_expand_vector_move instead - of ix86_expand_move. - (movoi): Ditto. - (movti): Use general_operand for operand 1 predicate. + PR target/84828 + * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead + destination if any_malformed_asm. - 2016-03-21 Martin Liska + 2018-04-23 Eric Botcazou - * hsa-dump.c (dump_hsa_insn_1): dump default branch of SBR - insns. - (dump_hsa_symbol): Dump BRIG offset of hsa_symbols. + 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. - 2016-03-21 Martin Liska + 2018-04-23 Andrey Belevantsev - PR ipa/70306 - * ipa-icf.c (sem_function::parse): Skip static - constructors and destructors. + 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. - 2016-03-21 Jakub Jelinek + 2018-04-23 Claudiu Zissulescu - PR target/70296 - * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If IDENT is - function-like macro, peek following token(s) if it is followed - by CPP_OPEN_PAREN token with optional padding in between, and - if not, don't treat it like a macro. + * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec + enums into a single definition. + (fls): Fix predicates and printing. + (seti): Likewise. - 2016-03-21 Thomas Schwinge - Alexander Monakov + 2018-04-23 Claudiu Zissulescu - * config/nvptx/nvptx.c (nvptx_option_override): Don't emit sorry - for the stabs debug format. + * 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. - 2016-03-21 Richard Biener + 2018-04-22 Chung-Ju Wu - PR tree-optimization/70310 - * tree-vect-generic.c (expand_vector_condition): Fold the built - condition. + * config/nds32/nds32.c (nds32_compute_stack_frame): Consider + flag_always_save_lp condition. + * config/nds32/nds32.opt (malways-save-lp): New option. - 2016-03-21 Kirill Yukhin + 2018-04-22 Shiva Chen - PR target/70293 - * config/i386/sse.md: (define_insn "*vec_dup"/AVX2): - Block third alternative for AVX-512VL target, + * 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. - 2016-03-21 Martin Liska + 2018-04-22 Shiva Chen - PR hsa/70234 - * hsa-brig.c (emit_function_directives): Mark unemitted - global variables for emission. - * hsa-gen.c (hsa_symbol::hsa_symbol): Initialize a new flag. - (get_symbol_for_decl): Likewise. - * hsa.h (struct hsa_symbol): New flag. + * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove. + * config/nds32/nds32.c (nds32_ls_333_p): Remove. - 2016-03-21 Richard Biener + 2018-04-22 Shiva Chen + Chung-Ju Wu - PR tree-optimization/70288 - * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Make sure - we do not estimate unsimplified all-constant conditionals or - switches as optimized away. + * 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. - 2016-03-21 Andrey Belevantsev + 2018-04-22 Chung-Ju Wu - PR rtl-optimization/69102 - * sched-deps.c (sched_analyze_insn): Do not set last_args_size field - when we have a readonly dependency context. + * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value. - 2016-03-18 Jeff Law + 2018-04-22 Chung-Ju Wu - PR rtl-optimization/70263 - * ira.c (memref_used_between_p): Assert we found END in the insn chain. - (update_equiv_regs): When trying to move a store to after the insn - that sets the source of the store, make sure the store occurs after - the insn that sets the source of the store. When successful note - the REG_EQUIV note created in the dump file. + * 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. - 2016-03-16 David Wohlferd - Bernd Schmidt + 2018-04-22 Chung-Ju Wu - * doc/extend.texi: Document more potential problems with basic asms. + * config/nds32/nds32.c + (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file. + (TARGET_MODES_TIEABLE_P): Likewise. - 2016-03-18 Bernd Schmidt + 2018-04-22 Chung-Ju Wu - PR rtl-optimization/70278 - * lra-constraints.c (split_reg): Handle the case where biggest_mode is - VOIDmode. + * config/nds32/nds32.c (nds32_asm_file_start): Display optimization + level Ofast and Og. - 2016-03-18 Jason Merrill + 2018-04-22 Monk Chiang + Chung-Ju Wu - * calls.c (load_register_parameters): Fix zero size sibcall logic. + * 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. - 2016-03-18 Kirill Yukhin + 2018-04-20 Kito Cheng - * config/i386/sse.md: Use vpbroadcastq for broadcasting DF - values to 128b regs. + * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if + -mno-relax is present. + * config/riscv/linux.h (LINK_SPEC): Ditto. - 2016-03-18 Ilya Enkovich + 2018-04-20 Martin Sebor - PR tree-optimization/70252 - * tree-vect-stmts.c (supportable_widening_operation): Check resulting - boolean vector has a proper number of elements. - (supportable_narrowing_operation): Likewise. + 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. - 2016-03-18 Tom de Vries + 2018-04-20 Michael Meissner - PR ipa/70269 - * cgraph.c (cgraph_node::get_body): Set dump_file to NULL after save. + PR target/85456 + * config/rs6000/rs6000.c (init_float128_ieee): Add support to call + __powikf2 when long double is IEEE 128-bit. - 2016-03-18 Jakub Jelinek + 2018-04-20 Kito Cheng - * reload1.c (emit_input_reload_insns): Use simplify_replace_rtx - instead of replace_rtx for DEBUG_INSNs. + * config/riscv/riscv.c (riscv_first_stack_step): Round up min + step to make sure stack always aligned. - 2016-03-18 Venkataramanan Kumar + 2018-04-20 Carl Love - * config/i386/znver1.md : Fix latencies of FP/SSE/AVX - load type reservations. + PR target/83402 + * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add + size check for arg0. - 2016-03-17 John David Anglin + 2018-04-20 Nathan Sidwell + Tom de Vries - PR target/70188 - * config/pa/constraints.md: Revert 2015-02-13 change. Use - define_constraint for "Q" and "T" constraints. + 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 - 2016-03-17 Evandro Menezes + * 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 - Tweak the pipeline model for Exynos M1 + Revert + 2018-03-02 Eric Botcazou - * config/aarch64/aarch64.c (exynosm1_tunings): Enable weak prefetching - model. + PR ipa/83983 + * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both + arguments if they are comparable. - 2016-03-17 David Malcolm + 2018-04-18 Martin Liska - PR c/70264 - * diagnostic-show-locus.c (compatible_locations_p): Handle the case - where one or both locations aren't within a line_map. + Revert + 2018-03-13 Eric Botcazou - 2016-03-17 H.J. Lu + PR lto/84805 + * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of + incomplete types. - PR driver/70192 - * opts.c (finish_options): Don't set flag_pie to the default if - -fpic, -fPIC, -fno-pic or -fno-PIC is used. Set flag_pic to 0 - if it is -1. + 2018-04-18 H.J. Lu - 2016-03-17 Joern Rennecke + PR target/85388 + * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert + ENDBR after calling __morestack. - * config/i386/i386.md (*movv4qicc_insn+1..36): Pass - true as ALL_REGS argument to replace_rtx. + 2018-04-18 David Malcolm - 2016-03-17 Richard Biener + 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. - PR debug/70271 - * dwarf2out.c (dwarf2out_early_finish): Process deferred_asm_name - last. + 2018-04-18 Jakub Jelinek - 2016-03-17 Jakub Jelinek + PR target/81084 + * config.gcc: Obsolete powerpc*-*-*spe*. - PR target/70245 - * rtl.h (replace_rtx): Add ALL_REGS argument. - * rtlanal.c (replace_rtx): Likewise. If true, use REGNO - equality and assert mode is the same, instead of just rtx pointer - equality. - * config/i386/i386.md (mov + arithmetics with load peephole): Pass - true as ALL_REGS argument to replace_rtx. + 2018-04-17 Jakub Jelinek - 2016-03-17 Ilya Enkovich + 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. - * match.pd (A + (B vcmp C ? 1 : 0) -> A - (B vcmp C)): Apply - for boolean vector with vector mode only. - (A - (B vcmp C ? 1 : 0) -> A + (B vcmp C)): Likewise. + 2018-04-17 Jim Wilson - 2016-03-17 Nick Clifton + 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. - PR target/70162 - * config/rx/rx.c (rx_print_integer): Print negative constants in - decimal. + 2018-04-17 Jakub Jelinek - 2016-03-17 Jakub Jelinek + PR rtl-optimization/85431 + * dse.c (record_store): Ignore zero width stores. - PR target/70261 - * rtlanal.c (replace_rtx): Revert 2016-03-16 change. + 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. - 2016-03-16 Richard Henderson - Richard Biener + 2018-04-17 Kelvin Nilsen - PR middle-end/70240 - PR middle-end/68215 - PR tree-opt/68714 - * gimplify.c (gimplify_expr) [VEC_COND_EXPR]: Gimplify the - first operand as is_gimple_condexpr. - - PR middle-end/70240 - PR middle-end/68215 - Revert r231575 - 2015-12-11 Eric Botcazou - * tree-vect-generic.c (tree_vec_extract): Remove GSI parameter. - Do not gimplify the result. - (do_unop): Adjust call to tree_vec_extract. - (do_binop): Likewise. - (do_compare): Likewise. - (do_plus_minus): Likewise. - (do_negate): Likewise. - (expand_vector_condition): Likewise. - (do_cond): Likewise. - - 2016-03-16 Richard Henderson - - PR target/70048 - * config/aarch64/aarch64.c (virt_or_elim_regno_p): New. - (aarch64_classify_address): Use it. - (aarch64_legitimize_address): Force all subexpressions of PLUS - into registers. Simplify as (sfp+const)+reg or (reg+reg)+const. - - 2016-03-16 Jakub Jelinek - Richard Biener + * 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. - PR target/70245 - * rtlanal.c (replace_rtx): For REG, if from is a REG, - return to even if only REGNO is equal, and assert - mode is the same. + 2018-04-17 Michael Meissner - 2016-03-11 Jeff Law + PR target/85424 + * config/rs6000/rs6000.md (pack): Do not try handle a pack + where the inputs overlap with the output. - PR rtl-optimization/70224 - * reorg.c (relax_delay_slots): Pass right argument to CROSSING_JUMP_P. + 2018-04-17 Jakub Jelinek - 2016-03-16 Richard Henderson + * 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 middle-end/70199 - * function.h (struct function): Add has_forced_label_in_static. - * gimplify.c (force_labels_r): Set it. - * lto-streamer-in.c (input_struct_function_base): Read it. - * lto-streamer-out.c (output_struct_function_base): Write it. - * tree-inline.c (has_label_address_in_static_1): Remove. - (copy_forbidden): Remove fndecl parameter; test - has_forced_label_in_static. - (inline_forbidden_p): Update call to copy_forbidden. - (tree_versionable_function_p): Likewise. - * ipa-chkp.c (chkp_instrumentable_p): Likewise. - (chkp_versioning): Likewise. - * tree-inline.h (copy_forbidden): Update decl. + 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. - 2016-03-16 Marek Polacek + 2018-04-16 Cesar Philippidis + Tom de Vries - PR c/70093 - * cgraphunit.c (cgraph_node::expand_thunk): Also build call to the - function being thunked if the result type doesn't have fixed size. - * gimplify.c (gimplify_modify_expr): Also set LHS if the result type - doesn't have fixed size. + PR middle-end/84955 + * omp-expand.c (expand_oacc_for): Add dummy false branch for + tiled basic blocks without omp continue statements. - 2016-03-16 Bin Cheng + 2018-04-16 Aaron Sawdey - * tree-vect-loop.c (vect_analyze_loop_2): Fix wrong dump info by - reporting malformed loop nest. + 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. - 2016-03-16 Tom de Vries + 2018-04-16 H.J. Lu - PR lto/70187 - * ipa-devirt.c (possible_polymorphic_call_targets): Move - nodes.length () == 1 test to before first nodes[0] access. + PR target/85403 + * config/i386/i386.c (get_builtin_code_for_version): Check + error_mark_node. - 2016-03-16 Tom de Vries + 2018-04-16 Olga Makhotina - PR tree-optimization/68715 - * graphite-scop-detection.c (scop_detection::merge_sese): Add missing - single_pred_p test. + PR target/84331 + * gcc/config.gcc: Support "skylake". + * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_SKYLAKE. + * gcc/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. + * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE. + (processor_type): Add PROCESSOR_SKYLAKE. - 2016-03-16 Tom de Vries + 2018-04-16 Paolo Carlini + Jason Merrill - PR tree-optimization/68809 - * graphite-scop-detection.c (same_close_phi_node): Test if result types - are the same. + 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. - 2016-03-16 Carlos O'Donell - Sandra Loosemore + 2018-04-16 Julia Koval - * doc/extend.texi (Common Function Attributes): Describe ifunc impact - on leaf attribute. Mention ELF interposition problems. + PR target/84413 + * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, + X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512 - 2016-03-16 Alan Modra + 2018-04-14 Segher Boessenkool - PR rtl-optimization/69195 - PR rtl-optimization/47992 - * ira.c (indirect_jump_optimize): Ignore artificial defs. - Add comments. + 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. - 2016-03-15 Eric Botcazou + 2018-04-13 Paul A. Clarke - PR bootstrap/69513 - * dwarf2out.c (flush_limbo_die_list): Really flush the limbo list. + 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}. - 2016-03-15 Senthil Kumar Selvaraj + 2018-04-13 Vladimir Makarov - * config/avr/avr.md (rotl3): Set mode for operand 2. + 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. - 2016-03-15 Jakub Jelinek + 2018-04-13 Jakub Jelinek - PR rtl-optimization/70222 - * combine.c (simplify_shift_const_1): For A >> B >> C LSHIFTRT - optimization if mode is different from result_mode, queue up masking - of the result in outer_op. Formatting fix. + 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 middle-end/70239 - * tree-ssa-sccvn.c (VN_INFO_GET): Use safe_grow_cleared instead - of safe_grow. + 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. - 2016-03-15 Andrey Belevantsev + 2018-04-13 Jan Hubicka + Bin Cheng - PR rtl-optimization/69032 - * sel-sched-ir.c (get_seqno_by_preds): Include both insn and head when - looping backwards over basic block insns. + 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 - 2016-03-15 Andrey Belevantsev + 2018-04-13 Jan Hubicka - PR target/66660 - * sel-sched-ir.c (merge_expr): Avoid changing the speculative pattern - to non-speculative when propagating trap bits. + PR lto/71991 + * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for + always inline. - 2016-03-15 Andrey Belevantsev + 2018-04-13 Martin Liska + Jakub Jelinek - PR rtl-optimization/63384 - * sel-sched.c (invoke_aftermath_hooks): Do not decrease issue_more on - DEBUG_INSN_P insns. + 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. - 2016-03-15 Andrey Belevantsev + 2018-04-12 Segher Boessenkool - PR target/64411 - * sched-deps.c (get_implicit_reg_pending_clobbers): New function, - factored out from ... - (sched_analyze_insn): ... here. - * sched-int.h (get_implicit_reg_pending_clobbers): Declare it. - * sel-sched-ir.c (setup_id_implicit_regs): New function, use - get_implicit_reg_pending_clobbers in it. - (setup_id_reg_sets): Use setup_id_implicit_regs. - (deps_init_id): Ditto. + 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. - 2016-03-15 Tom de Vries + 2018-04-12 Jakub Jelinek - PR ipa/70161 - * cgraph.c (cgraph_node::get_body): Save, reset and restore - dump_file_name. - * passes.c (execute_one_ipa_transform_pass): Add missing argument to - execute_function_dump. - (execute_one_pass): Don't dump function if it will be dumped after ipa - transform. + 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. - 2016-03-15 Segher Boessenkool + 2018-04-12 Cesar Philippidis - * genrecog.c (match_pattern_2): If pred is NULL don't call - safe_predicate_mode on it. + * lto-streamer-out.c (output_function): Revert 259346. + * omp-expand.c (expand_oacc_for): Likewise. - 2016-03-14 Jakub Jelinek + 2018-04-12 Alexander Monakov - PR middle-end/70219 - * lra-constraints.c (delete_move_and_clobber): Change assertion - to also allow dregno == 0. + PR rtl-optimization/85354 + * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call... + * sel-sched.c (sel_global_init): ... here. - 2016-03-14 Richard Henderson + 2018-04-12 Eric Botcazou - PR tree-opt/68714 - * tree-ssa-reassoc.c (ovce_extract_ops, optimize_vec_cond_expr): New. - (can_reassociate_p): Allow ANY_INTEGRAL_TYPE_P. - (reassociate_bb): Use optimize_vec_cond_expr; avoid - optimize_range_tests, attempt_builtin_copysign and attempt_builtin_powi - on vectors. + 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. - 2016-03-14 Bernd Schmidt + 2018-04-12 Cesar Philippidis + Richard Biener - PR target/70083 - * lra-lives.c (process_bb_lives): Also update biggest mode for hard - regs. - (lra_create_live_ranges_1): initialize hard register biggest_mode to - VOIDmode. - * lra-constraints.c (split_reg): For hard regs, try to find the - biggest single-register mode used in the function. + 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. - 2016-03-14 Richard Biener + 2018-04-12 Richard Biener - PR tree-optimization/56365 - * tree-ssa-phiopt.c (minmax_replacement): Handle alternate - constants to compare against. + 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. - 2016-03-14 Segher Boessenkool + 2018-04-12 Jakub Jelinek - PR target/70098 - * config/rs6000/rs6000.md (*ctr_internal1, *ctr_internal2, - *ctr_internal5, *ctr_internal6): Also allow "d" as output. - (define_split for the GPR case): Use int_reg_operand instead of - gpc_reg_operand for the output. + 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. - 2016-03-14 Tom de Vries + 2018-04-11 Alexander Monakov - PR tree-optimization/70045 - * graphite-isl-ast-to-gimple.c (graphite_create_new_loop_guard): Unshare - create_empty_if_region_on_edge argument. + PR rtl-optimization/84659 + * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg. - 2016-03-13 Eric Botcazou + 2018-04-11 Jakub Jelinek - * config/arm/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Define. - (STACK_CHECK_PROTECT): Likewise. - * config/i386/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Likewise - (STACK_CHECK_PROTECT): Likewise. - * config/rs6000/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Likewise - (STACK_CHECK_PROTECT): Likewise. - * config/rs6000/vxworksae.h (STACK_CHECK_PROTECT): Likewise. - * config/sparc/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Likewise. - (STACK_CHECK_PROTECT): Likewise. + 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. - 2016-03-12 Andrey Belevantsev + 2018-04-11 Thomas Preud'homme - PR rtl-optimization/69307 - * sel-sched.c (choose_best_pseudo_reg): Properly check for hard - registers in modes that span more than one register. + PR target/85261 + * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand + into register. - 2016-03-12 Vladimir Makarov + 2018-04-10 Aaron Sawdey - PR target/69614 - * lra-constraints.c (delete_move_and_clobber): New. - (remove_inheritance_pseudos): Use it. + 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. - 2016-03-12 Eric Botcazou + 2018-04-10 Segher Boessenkool - PR ada/70017 - * calls.c (emit_library_call_value_1): Clear the ECF_NOTHROW flag if - the libcall is LCT_THROW. - * explow.c (probe_stack_range): Pass LCT_THROW to emit_library_call - for the checking routine. + PR target/85287 + * gcc/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. - 2016-03-11 Michael Meissner + 2018-04-10 Segher Boessenkool - PR target/70131 - * config/rs6000/rs6000.md (round322_fprs): Do not do the - optimization if we have direct move. - (roundu322_fprs): Likewise. + * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct): + Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF. - 2016-03-11 Bernd Schmidt + 2018-04-10 Segher Boessenkool - PR target/70123 - * lra-remat.c (operand_to_remat): Disallow hard regs in the value t - be rematerialized. - (reg_overlap_for_remat_p): Renamed from input_regno_present_p. - Arguments swapped. All callers changed. Take reg_renumber into - account, and Calculate and compare register ranges for hard regs. + 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. - 2016-03-11 Jeff Law + 2018-04-10 Kelvin Nilsen - PR tree-optimization/70190 - * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): - Handle cases where we can not extract the taken edge, even though we - found a constant value. + * 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. - PR tree-optimization/64058 - * tree-ssa-coalesce.c (struct coalesce_pair): Add new field INDEX. - (num_coalesce_pairs): Move up earlier in file. - (find_coalesce_pair): Initialize the INDEX field for each pair - discovered. - (compare_pairs): No longer sort on the elements in each pair. - Instead break ties with the index of the coalesce pair. + 2018-04-10 Richard Sandiford - 2016-03-11 Kyrylo Tkachov + PR tree-optimization/85286 + * tree-vect-data-refs.c (vect_get_smallest_scalar_type): - PR target/70002 - * config/aarch64/aarch64-protos.h - (aarch64_save_restore_target_globals): New prototype. - * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): - Call the above when popping pragma. - * config/aarch64/aarch64.c (aarch64_save_restore_target_globals): - New function. - (aarch64_set_current_function): Rewrite using the above. + 2018-04-10 Richard Sandiford - 2016-03-11 Jakub Jelinek + * final.c (final_1): Set insn_last_address as well as + insn_current_address. - PR tree-optimization/70177 - * gimple-expr.h (extract_ops_from_tree_1): Renamed to ... - (extract_ops_from_tree): ... this. In the 2 argument - overload remove _1 suffix. - * gimple-expr.c (extract_ops_from_tree_1): Renamed to ... - (extract_ops_from_tree): ... this. - * gimple.c (gimple_build_assign, gimple_assign_set_rhs_from_tree): - Adjust callers. - * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise. - * tree-ssa-forwprop.c (defcodefor_name): Call 3 operand - extract_ops_from_tree instead of 2 operand one. + 2018-04-10 Kyrylo Tkachov - 2016-03-11 Alan Lawrence + 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. - PR tree-optimization/70013 - * tree-sra.c (analyze_access_subtree): Also set grp_unscalarized_data - for constant-pool entries. + 2018-04-09 Jan Hubicka - 2016-03-11 Jakub Jelinek + 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. - PR rtl-optimization/70174 - * expmed.c (store_bit_field_using_insv): Use gen_lowpart_if_possible - followed by gen_lowpart on force_reg instead of just gen_lowpart. + 2018-04-09 Martin Sebor - PR tree-optimization/70169 - * tree-ssa-loop.c (gen_lsm_tmp_name): Handle FUNCTION_DECL and - LABEL_DECL like VAR_DECL. Emit nothing instead of gcc_unreachable - for unknown codes. + * 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. - 2016-03-11 Ilya Enkovich - Jakub Jelinek + 2018-04-06 Chung-Ju Wu + Kito Cheng - PR target/70160 - * config/i386/i386.c (scalar_chain::convert_reg): Skip uses - of uninitialized values. + * 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. - 2016-03-11 Andreas Krebbel + 2018-04-06 Jakub Jelinek - * config/s390/s390.md ("trunctddd2"): Turn former define_insn into - define_expand. - ("*trunctddd2"): New pattern definition. - ("trunctdsd2"): Set prep_for_short_prec rounding mode for the - TD->DD truncation. - - 2016-03-11 Andreas Krebbel - - * config/s390/s390.md (BFP_RND_*, DFP_RND_*): Add new constant - definitions for BFP and DFP rounding modes. - ("fixuns_truncdddi2", "fixuns_trunctddi2") - ("fixuns_trunc2", "fixuns_truncsi2") - ("fix_trunc2", "fix_truncdi2") - ("fix_trunctf2"): Use the new constants instead of magic - numbers. - - 2016-03-11 Andreas Krebbel - - * config/s390/constraints.md: Adjust comment. - ("Y"): Adjust comment. Rename s390_decompose_shift_count to - s390_decompose_addrstyle_without_index. - * config/s390/predicates.md (shift_count_or_setmem_operand): - Rename to setmem_operand. - * config/s390/s390-protos.h - (s390_decompose_shift_count): Rename to - s390_decompose_addrstyle_without_index. - * config/s390/s390.c (s390_decompose_shift_count) - (s390_mem_constraint, print_shift_count_operand) - (print_operand_address, print_operand): Rename - s390_decompose_shift_count to - s390_decompose_addrstyle_without_index and rename - print_shift_count_operand to print_addrstyle_operand troughout the - file. - * config/s390/s390.md ("setmem_long_", "*setmem_long") - ("*setmem_long_and", "*setmem_long_31z", "*setmem_long_and_31z"): - Rename shift_count_or_setmem_operand to setmem_operand. - * config/s390/vx-builtins.md ("vec_insert") - ("vec_promote"): Replace shift_count_or_setmem_operand with - nonmemory_operand. + 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. - 2016-03-10 Ulrich Weigand + 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. - PR target/70168 - * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): - Handle overlapping retval and newval. + 2018-04-06 Tamar Christina - 2016-03-10 Nick Clifton + * expr.c (copy_blkmode_to_reg): Revert 254862. + * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise. - PR target/7044 - * config/aarch64/aarch64.c - (aarch64_override_options_after_change_1): When forcing - flag_omit_frame_pointer to be true, use a special value that can - be detected if this function is called again, thus preventing - flag_omit_leaf_frame_pointer from being forced to be false. + 2018-04-06 Richard Biener - 2016-03-10 Kyrylo Tkachov + 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. - * common/config/aarch64/aarch64-common.c (aarch64_handle_option): - Set x_flag_omit_leaf_frame_pointer when handling - -momit-leaf-frame-pointer. - - 2016-03-10 Jan Hubicka - - PR lto/69589 - * cgraph.c (cgraph_node::dump): Dump split_part and - indirect_call_target. - * cgraph.h (cgraph_node): Add indirect_call_target flag. - * ipa.c (has_addr_references_p): Cleanup. - (is_indirect_call_target_p): New. - (walk_polymorphic_call_targets): Do not mark virtuals that may be - called indirectly as local. - (symbol_table::remove_unreachable_nodes): Compute indirect_call_target. - - 2016-03-10 Jan Hubicka - - PR ipa/69630 - * ipa-devirt.c (possible_polymorphic_call_targets): Do not ICE - on cxa_pure_virtual. - - 2016-03-10 Jan Hubicka - - PR lto/69589 - * tree.c (free_lang_data_in_decl): Clear visibility of TYPE_DECL. - - 2016-03-10 Jan Hubicka - - PR lto/69589 - * tree.c (need_assembler_name_p): Only record main variant type names. - - 2016-03-10 Christophe Lyon - - PR target/70113. - * config/aarch64/aarch64.h (TARGET_FIX_ERR_A53_843419_DEFAULT): - Always define to 0 or 1. - (TARGET_FIX_ERR_A53_843419): New macro. - * config/aarch64/aarch64-elf-raw.h - (TARGET_FIX_ERR_A53_843419_DEFAULT): Update for above changes. - * config/aarch64/aarch64-linux.h: Likewise. - * config/aarch64/aarch64.c - (aarch64_override_options_after_change_1): Do not default - aarch64_nopcrelative_literal_loads to true if Cortex-A53 erratum - 843419 is on. - (aarch64_attributes): Handle fix-cortex-a53-843419. - (aarch64_can_inline_p): Likewise. - * config/aarch64/aarch64.opt (aarch64_fix_a53_err843419): Save. - - 2016-03-10 Alan Lawrence - Jakub Jelinek + 2018-04-06 Jakub Jelinek - * common.opt (funconstrained-commons, flag_unconstrained_commons): New. - * tree.c (array_at_struct_end_p): Do not limit to size of decl for - DECL_COMMONS if flag_unconstrained_commons is set. - * tree-dfa.c (get_ref_base_and_extent): Likewise. - * doc/invoke.texi (Optimize Options): Add -funconstrained-commons. - (funconstrained-commons): Document. + 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. - 2016-03-10 Christophe Lyon + 2018-04-06 Richard Biener - * config/aarch64/t-aarch64 (OPTIONS_H_EXTRA): Add - aarch64-fusion-pairs.def and aarch64-tuning-flags.def + 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. - 2016-03-10 Ilya Enkovich + 2018-04-06 Andreas Krebbel - * tree-vect-stmts.c (vectorizable_mask_load_store): Check mask - has a proper number of elements. + * 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. - 2016-03-10 Alan Modra + 2018-04-06 Kuan-Lin Chen - PR rtl-optimization/69195 - PR rtl-optimization/47992 - * ira.c (recorded_label_ref): Delete. - (update_equiv_regs): Return void. - (indirect_jump_optimize): New function. - (ira): Call indirect_jump_optimize and delete_trivially_dead_insns - before regstat_compute_ri. Don't rebuild_jump_labels here. - Delete update_regstat. + * common/config/nds32/nds32-common.c + (nds32_option_optimization_table): Enable -mreleax-hint by default. - 2016-03-10 Richard Biener + 2018-04-05 Jakub Jelinek - PR tree-optimization/70128 - * tree-ssa-structalias.c (set_uids_in_ptset): Set - vars_contains_nonlocal for any FUNCTION_DECL or LABEL_DECL. + PR middle-end/85195 + * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around + CONSTRUCTOR_ELT (ctor, ...)->value. - 2016-03-09 Jakub Jelinek + 2018-04-05 Uros Bizjak - PR tree-optimization/70152 - * tree-sra.c (replace_removed_params_ssa_names): Copy over - SSA_NAME_OCCURS_IN_ABNORMAL_PHI from old_name to new_name. + PR target/85193 + * config/i386/i386.md (define_attr "memory"): Handle rotate1 type. - PR target/70086 - * config/i386/i386.md (truncdfsf2 splitter): Use gen_vec_concatv2df - instead of gen_sse2_loadlpd. - * config/i386/sse.md (*vec_concatv2df): Rename to... - (vec_concatv2df): ... this. + 2018-04-05 Tom de Vries - PR tree-optimization/70127 - * fold-const.c (operand_equal_p): Revert the 2015-10-28 change. + PR target/85204 + * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only + cond jump. - 2016-03-09 David Malcolm + 2018-04-05 Shiva Chen + Kito Cheng - PR c/68473 - PR c++/70105 - * diagnostic-show-locus.c (compatible_locations_p): New function. - (layout::layout): Sanitize ranges using compatible_locations_p. + * 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. - 2016-03-09 David Malcolm + 2018-04-05 Shiva Chen + Kito Cheng - PR c/68473 - PR c++/70105 - * diagnostic-show-locus.c (layout_range::layout_range): Replace - location_range param with three const expanded_locations * and a - bool. - (layout::layout): Replace call to - rich_location::lazily_expand_location with get_expanded_location. - Extract the range and perform location expansion here, passing - the results to the layout_range ctor. - * diagnostic.c (source_range::debug): Delete. - * diagnostic.h (diagnostic_expand_location): Reimplement in terms - of rich_location::get_expanded_location. - * gcc-rich-location.c (get_range_for_expr): Delete. - (gcc_rich_location::add_expr): Reimplement to avoid the - rich_location::add_range overload that took a location_range, - passing a location_t instead. + * 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. - 2016-03-09 Richard Biener - Jakub Jelinek + 2018-04-05 Chung-Ju Wu - PR tree-optimization/70138 - * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): - Also skip vect_double_reduction_def. + * config/nds32/nds32.md: Use optimize_size in the condition for + alu-shift instructions. - 2016-03-09 Jakub Jelinek + 2018-04-05 Chung-Ju Wu - PR target/70049 - * config/i386/sse.md (*vec_extract): Use %0 instead of %k0 - if the operand is "m". + * config/nds32/nds32.md (divsi4, udivsi4): New patterns. - 2016-03-09 Nathan Sidwell + 2018-04-05 Chung-Ju Wu - * config/nvptx/nvptx.c (nvptx_option_override): Don't kill debug level. + * config/nds32/nds32.md (negsi2): Refine pattern. - 2016-03-09 Venkataramanan Kumar + 2018-04-05 Kito Cheng + Chung-Ju Wu - * config/i386/i386.c (processor_target_table): Fix cost table - intialization order for znver1. + * 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. - 2016-03-08 Jakub Jelinek + 2018-04-05 Chung-Ju Wu - * ipa-polymorphic-call.c (walk_ssa_copies): Fix spelling - - becuase -> because. - * ipa-reference.c (ignore_module_statics): Likewise. - * cgraph.c (cgraph_node::get_body): Likewise. - * ipa-inline.c (early_inliner): Likewise. - * ipa-devirt.c (types_same_for_odr): Likewise. - * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise. - * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Likewise. + * config/nds32/nds32.md (add3, sub3): Rename to ... + (addsi3, subsi3): ... this. - 2016-03-08 Kyrylo Tkachov + 2018-04-05 Chung-Ju Wu - * tree-ssa-math-opts.c: Fix typo in comment. + * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator. - 2016-03-08 Jakub Jelinek + 2018-04-05 Chung-Ju Wu - PR target/70110 - * config/i386/i386.c (scalar_chain::make_vector_copies, - scalar_chain::convert_reg): Call end_sequence in between - get_insns and emit_conversion_insns rather than after both - calls. + * config/nds32/nds32.md: Adjust indention. - 2016-03-07 Uros Bizjak + 2018-04-05 Kito Cheng - PR target/70064 - * config/i386/i386.h (machine_function): Add - pc_thunk_call_expanded flag. - (ix86_pc_thunk_call_expanded): New define. - * config/i386/i386.md (set_got, set_got_labelled): New expanders. - (*set_got): Rename insn pattern from set_got. - (*set_got_labelled): Rename inst pattern from set_got_labelled. - * config/i386/i386.c (ix86_compute_frame_layout): Use - ix86_pc_thunk_call_expanded to prevent red-zone. - - 2016-03-07 Martin Jambor - - * hsa.h (hsa_get_ctor_statements): Declare. - (hsa_get_dtor_statements): Likewise. - (hsa_get_kernel_dispatch_type): Likewise. - * hsa.c (hsa_get_ctor_statements): New function. - (hsa_get_dtor_statements): Likewise. - (hsa_get_kernel_dispatch_type): Likewise. - * hsa-brig.c (hsa_cdtor_statements): Removed. - (hsa_output_libgomp_mapping): Use hsa_get_ctor_statements and - hsa_get_dtor_statements. - * hsa-gen.c (hsa_kernel_dispatch_type): Removed. - (get_hsa_kernel_dispatch_offset): Use hsa_get_kernel_dispatch_type. - - 2016-03-07 Andre Vieira - - * config/arm/arm-cores.def (cortex-r8): New. - * config/arm/arm-tables.opt (cortex-r8): Regenerate. - * config/arm/arm-tune.md: Likewise. - * doc/invoke.texi: Add cortex-r8 to list of cpu values. + * config/nds32/nds32.md (feature): New attribute. - 2016-03-07 Martin Sebor + 2018-04-05 Chung-Ju Wu - PR rtl-optimization/19705 - * doc/invoke.texi (Options That Control Optimization): Clarify - -fno-branch-count-reg. + * config/nds32/nds32.md (subtype): New attribute. - 2016-02-26 Richard Biener - Jeff Law + 2018-04-04 Thomas Preud'homme - PR tree-optimization/69740 - * cfghooks.c (remove_edge): Request loop fixups if we delete - an edge that might turn an irreducible loop into a natural - loop. - * cfgloop.h (check_verify_loop_structure): Clear LOOPS_NEED_FIXUP. - Move after definition of loops_state_clear. + 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. - 2016-03-07 Bin Cheng + 2018-04-04 Peter Bergner - PR rtl-optimization/69052 - * rtlanal.c (commutative_operand_precedence): Set higher precedence - to CONST_WIDE_INT. + 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. - 2016-03-07 Tom de Vries + 2018-04-04 Michael Matz - PR tree-optimization/70116 - * tree-ssa-tail-merge.c (merge_stmts_p): New function, handling - is_tm_ending stmts and ubsan/asan internal functions. - (find_duplicate): Use it. Don't test is_tm_ending here. + * builtins.c (compute_objsize): Pass correct operand + to array_at_struct_end_p. - 2016-03-07 Richard Biener + 2018-04-04 Richard Biener - PR tree-optimization/70115 - * tree-ssa-loop-ivcanon.c (propagate_into_all_uses): Remove. - (propagate_constants_for_unrolling): Use replace_uses_by. + PR lto/85176 + * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces + from contexts for DINFO_LEVEL_TERSE and below. - 2016-03-07 Nathan Sidwell + 2018-04-04 Kito Cheng - PR middle-end/69916 - * omp-low.c (struct oacc_loop): Add ifns. - (new_oacc_loop_raw): Initialize it. - (finish_oacc_loop): Clear mask & flags if no ifns. - (oacc_loop_discover_walk): Count IFN_GOACC_LOOP calls. - (oacc_loop_xform_loop): Add ifns arg & adjust. - (oacc_loop_process): Adjust oacc_loop_xform_loop call. + * config/nds32/nds32-doubleword.md (move_): Require + resiter_operand condition. + * config/nds32/nds32.md (*move): Ditto. - 2016-03-07 Richard Henderson + 2018-04-04 Kito Cheng + Monk Chiang - PR rtl-opt/70061 - * tree-outofssa.c (emit_partition_copy): Flush pending stack adjust. - (insert_value_copy_on_edge): Likewise. + * config/nds32/nds32.md (movmisalign): New pattern. - 2016-03-07 Kyrylo Tkachov + 2018-04-04 Chung-Ju Wu - * config/arm/arm_neon.h: Show error if using with soft-float ABI. + * config/nds32/nds32.md (movqi, movhi): Merge into mov. - 2016-03-07 Rainer Orth + 2018-04-04 Chung-Ju Wu + Kito Cheng - PR target/62281 - * config/i386/sol2.h (STACK_REALIGN_DEFAULT): Define. + * 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. - 2016-03-05 Venkataramanan Kumar + 2018-04-04 Kito Cheng - * config/i386/i386.c (znver1_cost): Fix Multiply cost. + * config/nds32/nds32-doubleword.md: Refine all the instruction type. + * config/nds32/nds32.md: Ditto. + * config/nds32/pipelines.md: Ditto. - 2016-03-05 Venkataramanan Kumar + 2018-04-04 Richard Biener - Fix sseimul type attribute. - * config/i386/znver1.md - (znver1_sseimul, znver1_sseimul_avx256, znver1_sseimul_load, - znver1_sseimul_avx256_load) : Fix the type attribute. - (znver1_sseimul_di, znver1_sseimul_load_di): Fix type attribute, - pipe usage and latency. + PR tree-optimization/85168 + * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid + propagating abnormals. - 2016-03-05 Jakub Jelinek + 2018-04-04 Chung-Ju Wu - PR c++/70084 - * tree-inline.c (copy_tree_body_r): When cancelling ADDR_EXPR - of INDIRECT_REF and ADDR_EXPR changed type, fold_convert it - to the right type. + * config/nds32/nds32.md (enabled): Use yes/no for this attribute. - 2016-03-04 Bernd Schmidt + 2018-04-04 Chung-Ju Wu + Kito Cheng - PR c/69973 - * targhooks.c (default_vector_alignment): Limit to MAX_OFILE_ALIGNMENT. + * 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. - PR rtl-optimization/69941 - * postreload.c (reload_combine_recognize_pattern): Ensure all uses of - the reg share its mode. + 2018-04-03 Jakub Jelinek - 2016-03-04 Jeff Law + 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/69196 - * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): - If the both SSA_NAMEs are anonymous, then consider them unassociated - and include the PHI in the statement count. + PR tree-optimization/85156 + * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid + evaluating the argument multiple times. - 2016-03-05 Tom de Vries + 2018-04-03 Bill Schmidt - * omp-low.c (check_omp_nesting_restrictions): Check for non-oacc - construct in oacc routine. Check for oacc region in oacc routine. + * 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. - 2016-03-04 Jakub Jelinek + 2018-04-03 Martin Sebor - PR target/70062 - * config/i386/i386.c (decide_alg): Add RECUR argument. Revert - 2016-02-22 changes, instead don't recurse if RECUR is already true. - Don't change *dynamic_check if RECUR. Adjust recursive caller - to pass true to the new argument. - (ix86_expand_set_or_movmem): Adjust decide_alg caller. + * doc/extend.texi (Common Function Attributes): Clarify. + (const attribute): Likewise. + (pure attribute): Likewise. - PR target/70059 - * config/i386/sse.md (vec_set_lo_, - _vinsert_mask): Formatting - fixes. - (vec_set_hi_): Likewise. Swap VEC_CONCAT operands. + 2018-04-03 Jakub Jelinek - 2016-03-04 Bernd Schmidt + PR target/85169 + * config/i386/i386.c (ix86_expand_vector_set): Use + HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix. - PR rtl-optimization/57676 - * lra-assigns.c (lra_assign): Guard test for maximum iterations - with flag_checking. + 2018-04-03 Uros Bizjak - 2016-03-04 Ilya Enkovich + * 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. - * tree-vect-patterns.c (search_type_for_mask): Handle - comparison of booleans. + 2018-04-03 Martin Liska - 2016-03-04 Jakub Jelinek + PR tree-optimization/82491 + * rtl.h (strip_offset_and_add): Replace += suboffset with + poly_uint64 () + suboffset. - * doc/extend.texi (__builtin_alloca, __builtin_alloca_with_align): - Fix @xref usage. + 2018-03-29 Martin Liska + Martin Jambor - PR debug/69947 - * dwarf2out.c (prune_unused_types_walk_loc_descr): Handle - all other ops that have dw_val_class_die_ref operands, - and DW_OP_GNU_entry_value. + PR ipa/84947 + * ipa-cp.c (propagate_bits_across_jump_function): Bail out if + param_type is not an integral or pointer type. - 2016-03-03 Kyrylo Tkachov + 2018-04-03 Richard Biener - PR rtl-optimization/69904 - * config/arm/arm.c (arm_cannot_copy_insn_p): - Return true for load-exclusive instructions. + * sese.h (recompute_all_dominators): Remove. - 2016-03-03 Jakub Jelinek + 2018-04-02 Martin Sebor - PR target/70021 - * tree-vect-stmts.c (vect_mark_relevant): Remove USED_IN_PATTERN - argument, if STMT_VINFO_IN_PATTERN_P (stmt_info), always mark - the pattern no matter if it is used just by non-pattern, pattern - or mix thereof. - (process_use, vect_mark_stmts_to_be_vectorized): Adjust callers. - * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern): If - oprnd1 def_stmt is in pattern, don't look through it. + * doc/invoke.texi (-Wrestrict): Fix typos. - 2016-03-03 Marek Polacek + 2018-04-02 Jim Wilson - PR middle-end/70050 - * match.pd (X % -Y): Add INTEGRAL_TYPE_P check. + * 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. - 2016-03-03 Martin Liska + 2018-04-02 Gerald Pfeifer - PR tree-optimization/70043 - * tree-vect-loop.c (optimize_mask_stores): Move iterator to - previous statement if we see a debug statement. + * doc/cpp.texi (Variadic Macros): Fix line continuation in an + example. - 2016-03-03 Richard Biener + 2018-04-02 Chung-Ju Wu - PR tree-optimization/55936 - * tree-vrp.c (compare_name_with_value): Add use_equiv_p - parameter and guard unsafe equivalence use. - (vrp_evaluate_conditional_warnv_with_ops): Always use - safe equivalences but not via the quadratic compare_names - helper. + * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define. + (nds32_canonicalize_comparison): New function. - 2016-03-03 Michael Collison + 2018-04-01 Chung-Ju Wu + Kito Cheng + Kuan-Lin Chen - PR target/70014 - * config/arm/arm.md (*subsi3_carryin_const): Change predicate - for operand 1 to s_register_operand. Change predicate for operand - 2 to arm_not_immediate_operand. + * 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. - 2016-03-02 H.J. Lu + 2018-04-01 Kito Cheng - * doc/tm.texi: Regenerated. + * config/nds32/t-nds32: Modify files dependency. - 2016-03-02 Richard Henderson + 2018-04-01 Chung-Ju Wu - PR rtl-opt/67145 - * simplify-rtx.c (simplify_plus_minus): Allow reassoc without - simplification when all args are positive non-fixed registers. + * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character. + (PROFILE_HOOK): Define its implementation. - 2016-03-02 Manuel Lopez-Ibanez + 2018-04-01 Chung-Ju Wu - * target.def (lra_p): Specify that new ports should use LRA. + * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int + type and 32-bit size. - 2016-03-02 Jakub Jelinek + 2018-04-01 Jakub Jelinek - PR libgomp/69555 - * gimplify.c (gimplify_decl_expr): For decls with REFERENCE_TYPE, also - gimplify_type_sizes the type they refer to. - (omp_notice_variable): Handle reference vars to VLAs. - * omp-low.c (lower_omp_target): Emit setup of OMP_CLAUSE_PRIVATE - reference to VLA decls in the second pass instead of first pass. + 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. - 2016-03-02 Tom de Vries + 2018-03-31 Segher Boessenkool - PR tree-optimization/68659 - * graphite-isl-ast-to-gimple.c (collect_all_ssa_names): Handle - new_expr == NULL_TREE. - (get_new_name): Handle ADDR_EXPR. + PR target/83315 + * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet) + NaN inputs correctly. - 2016-03-02 Bin Cheng + 2018-03-30 Peter Bergner - PR rtl-optimization/69052 - * loop-invariant.c (canonicalize_address): New function. - (inv_can_prop_to_addr_use): Check validity of address expression - which is canonicalized by above function. + PR target/80546 + * config/rs6000/vsx.md (??r): New mode attribute. + (*vsx_mov_64bit): Use it. + (*vsx_mov_32bit): Likewise. - 2016-03-02 Alan Modra + 2018-03-30 Martin Sebor - PR ipa/69990 - * ipa-icf.c (sem_variable::merge): Do not merge an alias with - larger alignment. + PR tree-optimization/84818 + * builtins.c (check_access): Use warning_n. - 2016-03-02 Jakub Jelinek + 2018-03-30 Aaron Sawdey - PR target/70028 - * config/i386/i386.md (kmovw): Move m constraint to 2nd alternative. - (*movhi_internal): Put mask moves from and to memory separately - from moves from/to GPRs. + 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. - 2016-03-02 Richard Biener + 2018-03-30 Julia Koval - * genmatch.c (dt_node::gen_kids): Fix match code-gen for embedded - GENERIC expressions in GIMPLE. + PR target/84413 + * x86-tune.def (movx, partial_reg_dependency): Enable for + m_SKYLAKE_AVX512. - 2016-03-02 Richard Biener + 2018-03-29 Vladimir Makarov - * config/i386/i386.c (type_natural_mode): Fix typo. + PR inline-asm/84985 + * lra-constraints.c (process_alt_operands): Move setting + this_alternative_matches below. - 2016-03-02 Nick Clifton + 2018-03-29 Martin Liska - * config.gcc (mep-*-elf): Add newlib-stdint.h to tm_file. + 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. - 2016-03-02 Richard Biener - Uros Bizjak + 2018-03-29 Jakub Jelinek - PR target/67278 - * config/i386/i386.c (type_natural_mode): Handle XFmode vectors. + * config/i386/sse.md (_blendm): Use . - 2016-03-02 Richard Biener + 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. - PR middle-end/67278 - * tree-cfg.c (verify_expr): Adjust BIT_FIELD_REF case. + 2018-03-28 Peter Bergner - 2016-03-02 Marek Polacek + 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. - PR c/67854 - * gimplify.c (gimplify_va_arg_expr): Use expanded location for the - "is promoted to" warning. + 2018-03-28 Carl Love - 2016-03-01 DJ Delorie + 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 - * config.gcc: Deprecate mep-*. + 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. - 2016-03-01 Vladimir Makarov + 2018-03-28 Martin Liska - PR middle-end/70025 - * lra-constraints.c (regno_val_use_in): New. - (match_reload): Use it instead of regno_use_in. + PR target/84988 + * config/i386/i386.c (ix86_function_arg_advance): Do not call + chkp_type_bounds_count if MPX is not enabled. - 2016-03-01 Eric Botcazou + 2018-03-27 Chung-Ju Wu - PR rtl-optimization/70007 - * gcse.c (compute_ld_motion_mems): Tidy up and also invalidate memory - references present in REG_EQUAL notes attached to non-SET patterns. + * config/nds32/nds32.h (BRANCH_COST): Adjust cost. - 2016-03-01 Jeff Law + 2018-03-27 Michael Meissner - PR tree-optimization/69196 - * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): - Appropriately clamp the number of statements to copy when the - thread path does not traverse a loop backedge. + 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. - PR tree-optimization/69196 - * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): - Do count some PHIs in the thread path against the insn count. Decrease - final statement count by one as the control statement in the last - block will get removed. Remove special cased code for handling PHIs - in the last block. + 2018-03-27 H.J. Lu - 2016-03-01 Uros Bizjak + 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. - PR target/70027 - * config/i386/i386.c (ix86_output_call_insn): Add -masm=intel - asm dialect alternatives to explicit GOTPCREL calls. + 2018-03-27 Ramana Radhakrishnan - 2016-03-01 Eric Botcazou + PR target/81863 + * config/arm/arm.c (arm_valid_symbolic_address): Handle + arm_word_relocations. - PR ada/70017 - * ira.c (do_reload): Issue warning for generic stack checking here... - * reload1.c (reload): ...instead of here and streamline it. + 2018-03-27 Cesar Philippidis - 2016-03-01 Nick Clifton + PR target/85056 + * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to + extern array declarations. - * config.gcc (cr16-*-elf): Add newlib-stdint.h to tm_file. + 2018-03-27 Richard Biener - 2016-03-01 Richard Biener + PR middle-end/84067 + * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with + explicit single_use checks. - PR tree-optimization/69983 - * tree-chrec.c (eq_evolutions_p): Handle conversions, compare - types and fall back to operand_equal_p. + 2018-03-27 Richard Biener - 2016-03-01 Andreas Krebbel + PR tree-optimization/85082 + * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces): + Valueize the VUSE. - Revert - 2016-03-01 Andreas Krebbel + 2018-03-27 Ramana Radhakrishnan - * config/s390/constraints.md ("jm8"): New constraint. - * config/s390/predicates.md ("const_int_8bitset_operand"): New - predicate. - * config/s390/s390.md ("*setmem_long", "*setmem_long_and"): Merge - into ... - ("*setmem_long"): New pattern. - ("*setmem_long_31z", "*setmem_long_and_31z"): Merge - into ... - ("*setmem_long_31z"): New pattern. - * config/s390/subst.md ("setmem_31z_subst", "setmem_and_subst"): - New substitution rules with the required attributes. + * 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 - 2016-03-01 Andreas Krebbel + PR target/85073 + * config/i386/i386.md (*bmi_blsr__cmp): New insn pattern. + (*bmi_blsr__ccz): Ditto. - Revert - 2016-03-01 Andreas Krebbel + 2018-03-26 Tom de Vries - * gensupport.c (process_substs_on_one_elem): Split loop to - complete mark_operands_used_in_match_dup on all expressions in the - vector first. - (adjust_operands_numbers): Inline into process_substs_on_one_elem - and remove function. + 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. - 2016-03-01 Richard Biener + 2018-03-24 Richard Sandiford - PR middle-end/70022 - * fold-const.c (fold_indirect_ref_1): Fix range checking for - vector BIT_FIELD_REF extract. + 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. - 2016-03-01 Richard Biener + 2018-03-23 Jakub Jelinek - PR tree-optimization/69994 - * tree-ssa-reassoc.c (ops_equal_values_p): Handle missing case. + PR inline-asm/85022 + * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have + known size by default. - 2016-03-01 Ilya Enkovich + 2018-03-23 Vladimir Makarov - PR tree-optimization/69956 - * tree-vect-stmts.c (supportable_widening_operation): Support - multi-step conversion of boolean vectors. - (supportable_narrowing_operation): Likewise. + PR inline-asm/85030 + * lra-constraints.c (process_alt_operands): Don't match BLKmode + and non BLKmode operands. - 2016-03-01 Andreas Krebbel + 2018-03-23 Kyrylo Tkachov - * config/s390/s390.c (s390_decompose_address): Don't accept SImode - anymore. + PR target/85026 + * config/arm/arm.md (unaligned_loadhis): Remove first alternative. + Clean up attributes. - 2016-03-01 Andreas Krebbel + 2018-03-23 Richard Biener - * config/s390/subst.md (DSI_VI): New mode iterator. - ("addr_style_op_subst"): Use DSI_VI instead of DSI. - * config/s390/vector.md ("vec_set"): Move expander before - the insn definition. - ("*vec_set"): Change predicate and add alternative to - support only either register or const_int operands as element - selector. - ("*vec_set_plus"): New pattern to support reg + const_int - operands. - ("vec_extract"): New expander. - ("*vec_extract"): New insn definition supporting reg and - const_int element selectors. - ("*vec_extract_plus"): New insn definition supporting - reg+const_int element selectors. - ("rotl3", "ashl3", "ashr3"): Merge into the - following expander+insn definition. - ("3"): New expander. - ("*3"): New insn definition. - - 2016-03-01 Andreas Krebbel - - * config/s390/s390.md ("*tabort_1"): Change predicate to - nonmemory_operand. Add a second alternative to cover - register as well as const int operands. - ("*tabort_1_plus"): New pattern definition. - - 2016-03-01 Andreas Krebbel - - * config/s390/s390.md ("*ashrdi3_cc_31") - ("*ashrdi3_cconly_31""*ashrdi3_cc_31_and") - ("*ashrdi3_cconly_31_and", "*ashrdi3_31_and", "*ashrdi3_31"): - Merge insn definitions into ... - ("*ashrdi3_31"): - New pattern definition. - ("*ashr3_cc", "*ashr3_cconly", "ashr3", ) - ("*ashr3_cc_and", "*ashr3_cconly_and") - ("*ashr3_and"): Merge insn definitions into ... - ("*ashr3"): - New pattern definition. - * config/s390/subst.md ("addr_style_op_cc_subst") - ("masked_op_cc_subst", "setcc_subst", "cconly_subst"): New - substitutions patterns plus attributes. - Add ashiftrt to SUBST iterator. - - 2016-03-01 Andreas Krebbel - - * config/s390/s390.md ("3"): Change predicate of - op2 to nonmemory_operand. - ("*di3_31", "*di3_31_and"): - Merge into single pattern definition ... - ("*di3_31"): New pattern. - ("*3", "*3_and"): Merge into single - pattern definition ... - ("*3"): New pattern. - * config/s390/subst.md: Add ashift and lshiftrt to SUBST - iterator. - - 2016-03-01 Andreas Krebbel - - * config/s390/predicates.md (const_int_6bitset_operand): New - predicate. - * config/s390/s390.md: Include subst.md. - ("rotl3"): New expander. - ("rotl3", "*rotl3_and"): Merge insn definitions into - ... - ("*rotl3"): New insn definition. - * config/s390/subst.md: New file. - - 2016-03-01 Andreas Krebbel - - * config/s390/s390.md ("op_type", "atype", "length" attributes): - Remove RRR type. It doesn't really exist. - ("RRer", "f0", "v0", "vf", "vd", "op1", "Rf"): Remove mode - attributes. - ("BFP", "DFP", "nDSF", "nDFDI"): Add mode attributes. - ("*cmp_ccs", "floatdi2", "add3") - ("*add3_cc", "*add3_cconly", "sub3") - ("*sub3_cc", "*sub3_cconly", "mul3") - ("fma4", "fms4", "div3", "*neg2") - ("*abs2", "*negabs2", "sqrt2"): Override - `enabled' attribute. - - 2016-03-01 Andreas Krebbel - - * gensupport.c (process_substs_on_one_elem): Split loop to - complete mark_operands_used_in_match_dup on all expressions in the - vector first. - (adjust_operands_numbers): Inline into process_substs_on_one_elem - and remove function. - - 2016-02-29 Eric Botcazou - - PR target/69706 - * config/sparc/sparc.c (NWORDS_UP): Rename to... - (CEIL_NWORDS): ...this. Use CEIL macro. - (compute_fp_layout): Adjust to above renaming. - (function_arg_union_value): Likewise. - (sparc_arg_partial_bytes): Likewise. - (sparc_function_arg_advance): Likewise. - - 2016-02-29 Jeff Law - - PR tree-optimization/70005 - * tree-ssa-uncprop.c (associate_equivalences_with_edges): Handle case - where an object with a boolean range is compared against a value - outside [0..1]. - - PR tree-optimization/69999 - * gimple-ssa-split-paths.c (split_paths): When duplicating a block - with an outgoing edge marked with EDGE_IRREDUCIBLE_LOOP, schedule - loop cleanups. - - 2016-02-29 Richard Biener - - PR tree-optimization/69994 - * tree-ssa-reassoc.c (gimple_nop_conversion_p): New function. - (get_unary_op): Look through nop conversions. - (ops_equal_values_p): New function, look for equality diregarding - nop conversions. - (eliminate_plus_minus_pair): Use ops_equal_values_p - (repropagate_negates): Do not use get_unary_op here. - - 2016-02-29 Martin Liska - - * system.h: Poison ENABLE_CHECKING macro. - - 2016-02-29 Martin Liska - - * hsa-gen.c (gen_body_from_gimple): Dump only if TDF_DETAILS - is presented in dump flags. - * hsa-regalloc.c (linear_scan_regalloc): Likewise. - (hsa_regalloc): Likewise. - - 2016-02-19 Richard Biener - - PR tree-optimization/69980 - * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Update - permutation of those we need to keep. - - 2016-02-29 Eric Botcazou - - PR target/69706 - * config/sparc/sparc.c (ROUND_ADVANCE): Rename to... - (NWORDS_UP): ...this - (init_cumulative_args): Minor tweaks. - (sparc_promote_function_mode): Likewise. - (scan_record_type): Delete. - (traverse_record_type): New function template. - (classify_data_t): New structure type. - (classify_registers): New inline function. - (function_arg_slotno): In 64-bit mode, bail out early if FP slots are - exhausted. Instantiate traverse_record_type on classify_registers and - deal with the case of a structure passed in slot #15 with no FP field - in the first word. - (assign_data_t): New structure type. - (compute_int_layout): New static function. - (compute_fp_layout): Likewise. - (count_registers): New inline function. - (assign_int_registers): New static function. - (assign_fp_registers): Likewise. - (assign_registers): New inline function. - (function_arg_record_value_1): Delete. - (function_arg_record_value_2): Likewise. - (function_arg_record_value_3): Likewise. - (function_arg_record_value): Adjust to above changes. Instantiate - traverse_record_type on count_registers to first count the number of - registers to be used and then on assign_registers to assign them. - (function_arg_union_value): Adjust to above renaming. - (sparc_function_arg_1); Minor tweaks. Remove commented out code. - (sparc_arg_partial_bytes): Adjust to above renaming. Deal with the - case of a structure passed in slot #15 - (sparc_function_arg_advance): Likewise. - (function_arg_padding): Minor tweak. - - 2016-02-29 Richard Biener - - PR tree-optimization/69720 - * tree-vect-loop.c (get_initial_def_for_reduction): Avoid - the adjustment_def path for possibly vectorized defs. - (vect_create_epilog_for_reduction): Handle vectorized initial - defs properly. - - 2016-02-28 Eric Botcazou - - * config/i386/cygming.h (STACK_REALIGN_DEFAULT): Define. - - 2016-02-27 Jeff Law + PR debug/85020 + * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when + we are going to emit early debug for LTO. - Revert - 2016-02-26 Richard Biener - Jeff Law - - PR tree-optimization/69740 - * cfghooks.c (remove_edge): Request loop fixups if we delete - an edge that might turn an irreducible loop into a natural - loop. - - 2016-02-27 Jakub Jelinek - - PR rtl-optimization/69896 - * tree-vect-generic.c (get_compute_type): Avoid single element - vector types. - - 2016-02-26 Evandro Menezes - - Rename the AArch64 tuning option and related functions to enable the - Newton series for the reciprocal square root to reflect its - approximative characteristic. - - * config/aarch64/aarch64-protos.h (aarch64_emit_swrsqrt): Rename - function to "aarch64_emit_approx_rsqrt". - * config/aarch64/aarch64-tuning-flags.def: Rename tuning flag to - AARCH64_EXTRA_TUNE_APPROX_RSQRT. - * config/aarch64/aarch64.c (exynosm1_tunigs): Use new flag name. - (xgene1_tunings): Likewise. - (use_rsqrt_p): Likewise. - (aarch64_emit_swrsqrt): Use new function name. - * config/aarch64/aarch64-simd.md (aarch64_rsqrts_*): Likewise. - * config/aarch64/aarch64.opt (mlow-precision-recip-sqrt): Reword the - text explaining this option. - * doc/invoke.texi (-mlow-precision-recip-sqrt): Likewise. - - 2016-02-26 Jakub Jelinek - - PR target/69969 - * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't - complain about -mallow-movmisalign without -mvsx if - TARGET_ALLOW_MOVMISALIGN was not set explicitly. + 2018-03-23 Jakub Jelinek - 2016-02-26 Joel Sherrill + 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. - * config.gcc: Add x86_64-*-rtems*. - * config/i386/rtems-64.h: New file. + PR inline-asm/85022 + * alias.c (write_dependence_p): Don't require for x_canonicalized + non-VOIDmode if x has VOIDmode. - 2016-02-26 Joel Sherrill + 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. - * config.gcc: Add aarch64-*-rtems*. - * config/aarch64/rtems.h: New file. + 2018-03-22 Kelvin Nilsen - 2016-02-26 Segher Boessenkool + * 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_. - PR target/69946 - * config/rs6000/rs6000.c (rs6000_insn_for_shift_mask): Print rlwinm - shift amount using %h. Add comment. + 2018-03-22 Sudakshina Das - 2016-02-26 Richard Biener - Jeff Law + 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. - PR tree-optimization/69740 - * cfghooks.c (remove_edge): Request loop fixups if we delete - an edge that might turn an irreducible loop into a natural - loop. + 2018-03-22 Kelvin Nilsen - 2016-02-26 Martin Jambor + 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. - PR middle-end/69920 - * tree-sra.c (sra_modify_assign): Do not remove loads of - uninitialized aggregates to SSA_NAMEs. + 2018-03-22 Jakub Jelinek - 2016-02-26 Richard Henderson + 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. - PR target/69709 - * config/s390/s390.md (risbg and risbgn splitters): Allocate new - pseudo in case the target rtx matches the source of the left - shift. + 2018-03-22 Tom de Vries - 2016-02-26 Martin Jambor + PR tree-optimization/84956 + * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with + bb_has_abnormal_pred. - PR hsa/69568 - * hsa.h (hsa_type_packed_p): Declare. - * hsa.c (hsa_type_packed_p): New function. - * hsa-gen.c (mem_type_for_type): Use unsigned type for packed - loads. - (gen_hsa_insns_for_store): Use hsa_type_packed_p. - * hsa-brig.c (emit_basic_insn): Likewise. + 2018-03-22 Jakub Jelinek - 2016-02-26 Martin Jambor + 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. - pr hsa/69674 - * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Use proper hsa type for - pointers. - (gen_hsa_addr): Allow integer constants in TMR_INDEX2. + 2018-03-21 Joseph Myers - 2016-02-26 Martin Jambor + * doc/extend.texi (__builtin_tgmath): Document when complex + integer types are treated as _Complex _Float64. - * hsa.h (is_a_helper): New overload for hsa_op_immed for - hsa_op_with_type operands. - (hsa_unsigned_type_for_type): Declare. - * hsa.c (hsa_unsigned_type_for_type): New function. - * hsa-gen.c (gen_hsa_binary_operation): Use hsa_unsigned_type_for_type. - (gen_hsa_insns_for_operation_assignment): Satisfy constrains of - the finalizer. Do not emit extra move. + 2018-03-21 Tom de Vries - 2016-02-26 Martin Jambor + * doc/extend.texi (__builtin_extend_pointer): Remove pasto. - * hsa-gen.c (gen_hsa_ternary_atomic_for_builtin): Fail in presence of - atomic operations in private segment. + 2018-03-21 Jakub Jelinek - 2016-02-26 Martin Jambor + 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. - * omp-low.c (grid_find_ungridifiable_statement): Store problematic - statements to wi->info. Also disallow omp simd constructs. - (grid_target_follows_gridifiable_pattern): Use wi.info to dump reason - for not gridifying. Dump special string for omp_for. + 2018-03-21 Richard Sandiford - 2016-02-26 Kyrylo Tkachov + 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. - PR target/69245 - * config/aarch64/aarch64.c (aarch64_set_current_function): - Save/restore target globals when switching to - target_option_default_node. + 2018-03-21 Jakub Jelinek - 2016-02-26 Kyrylo Tkachov + 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. - PR target/69613 - * config/aarch64/aarch64.c (aarch64_shift_truncation_mask): - Return 0 if !SHIFT_COUNT_TRUNCATED. + 2018-03-21 Nathan Sidwell - 2016-02-26 Jakub Jelinek - Eric Botcazou + * doc/extend.texi (Deprecated Features): Remove mention of + long-deleted deprecations. - PR rtl-optimization/69891 - * dse.c (scan_insn): If we can't figure out memset arguments - or they are non-constant, call clear_rhs_from_active_local_stores. + 2018-03-21 Rainer Orth - 2016-02-26 Martin Liska + PR jit/84288 + * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set. + * configure: Regenerate. - * doc/extend.texi: Mention clog10, clog10f an clog10l - in Builtins section. + 2018-03-21 Tom de Vries - 2016-02-26 Martin Liska + PR tree-optimization/83126 + * tree-parloops.c (num_phis): New function. + (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure. - * dwarf2out.c (new_loc_descr): Replace ENABLE_CHECKING with - CHECKING_P. - (resolve_args_picking_1): Likewise. - * dwarf2out.h (struct GTY): Likewise. + 2018-03-21 Nathan Sidwell - 2016-02-26 Martin Liska + * doc/extend.texi (Deprecated Features): Update deprecated flags, + mention anon-struct/union members and trailing attributes. - * hsa-gen.c (generate_hsa): Replace ENABLE_CHECKING macro - with flag_checking. - * hsa-regalloc.c (linear_scan_regalloc): Likewise. + 2018-03-21 Bin Cheng - 2016-02-26 Markus Trippelsdorf - Martin Liska + PR tree-optimization/84969 + * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder + builtin memset partitions if they set different rhs values. - * doc/install.texi: Mention --enable-valgrind-annotations. + 2018-03-21 Jakub Jelinek - 2016-02-26 Richard Biener + PR rtl-optimization/84989 + * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify + VEC_DUPLICATE with scalar result mode. - PR tree-optimization/69551 - * tree-ssa-structalias.c (get_constraint_for_ssa_var): When - looking through aliases adjust DECL_PT_UID to refer to the - ultimate alias target. + 2018-03-21 Martin Liska - 2016-02-25 Martin Liska + PR ipa/84963 + * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove + not intended return statement. - PR middle-end/69919 - * alloc-pool.c (after_memory_report): New variable. - * alloc-pool.h (base_pool_allocator ::release): Do not use - the infrastructure if after_memory_report. - * toplev.c (toplev::main): Mark after memory report. + 2018-03-21 Martin Liska - 2016-02-25 Richard Biener + PR target/84988 + * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro. + (chkp_find_bound_slots_1): Limit number of iterations. - PR tree-optimization/48795 - * tree-vrp.c (check_array_ref): Use array_at_struct_end_p. + 2018-03-20 David H. Gutteridge - 2016-02-25 Ilya Verbin + PR target/84838 + * Minor grammar fixes for x86 options. - PR driver/68463 - * config/gnu-user.h (CRTOFFLOADBEGIN): Define. Add crtoffloadbegin.o if - offloading is enabled and -fopenacc or -fopenmp is specified. - (CRTOFFLOADEND): Likewise. - (GNU_USER_TARGET_STARTFILE_SPEC): Add CRTOFFLOADBEGIN. - (GNU_USER_TARGET_ENDFILE_SPEC): Add CRTOFFLOADEND. - * lto-wrapper.c (offloadbegin, offloadend): Remove static vars. - (offload_objects_file_name): New static var. - (tool_cleanup): Remove offload_objects_file_name file. - (find_offloadbeginend): Replace with ... - (find_crtoffloadtable): ... this. - (run_gcc): Remove offload_argc and offload_argv. - Get offload_objects_file_name from -foffload-objects=... option. - Read names of object files with offload from this file, pass them to - compile_images_for_offload_targets. Don't call find_offloadbeginend and - don't pass offloadbegin and offloadend to the linker. Don't pass - offload non-LTO files to the linker, because now they're not claimed. + 2018-03-20 Jakub Jelinek - 2016-02-25 Jan Hubicka + 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. - PR ipa/69630 - * ipa-devirt.c (possible_polymorphic_call_targets): Do not ICE - on builtin_unreachable. + 2018-03-20 Peter Bergner - 2016-02-25 Jakub Jelinek + 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. - PR rtl-optimization/69896 - * regcprop.c: Include cfgrtl.h. - (copyprop_hardreg_forward_1): If noop_p insn uses narrower - than remembered mode, either delete it (if noop_move_p), or - treat like copy_p but not noop_p instruction. + 2018-03-20 Kyrylo Tkachov - 2016-02-24 Jakub Jelinek + PR target/82518 + * config/arm/arm.c (arm_array_mode_supported_p): Return false for + BYTES_BIG_ENDIAN. - PR debug/69705 - * dwarf2out.c (gen_variable_die): Work around buggy LTO - - allow NULL decl for Fortran DW_TAG_common_block variables. + 2018-03-20 Richard Biener - 2016-02-24 Jason Merrill + 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. - * common.opt (flifetime-dse): Add -flifetime-dse=1. + 2018-03-20 Martin Liska - 2016-02-24 Richard Biener - Jakub Jelinek + PR ipa/84825 + * predict.c (rebuild_frequencies): Handle case when we have + PROFILE_ABSENT, but flag_guess_branch_prob is false. - PR middle-end/69760 - * tree-scalar-evolution.c (interpret_rhs_expr): Re-write - conditionally executed ops to well-defined overflow behavior. + 2018-03-20 Jakub Jelinek - 2016-02-24 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 middle-end/69915 - * tree.c (build_vector_from_ctor): Fix handling of VECTOR_CST - elements. + 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. - 2016-02-24 Kyrylo Tkachov + 2018-03-20 Tom de Vries - PR rtl-optimization/69886 - * gcse.c (can_assign_to_reg_without_clobbers_p): Accept mode - argument. Use it when checking validity of set instructions. - (want_to_gcse_p): Pass mode to can_assign_to_reg_without_clobbers_p. - (compute_ld_motion_mems): Update can_assign_to_reg_without_clobbers_p - callsite. - * rtl.h (can_assign_to_reg_without_clobbers_p): Update prototype. - * store-motion.c (find_moveable_store): Update - can_assign_to_reg_without_clobbers_p callsite. + PR target/84952 + * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync. + (nvptx_process_pars): Emit bar.sync asap and alap. - 2016-02-24 Richard Biener + 2018-03-20 Tom de Vries - PR middle-end/68963 - * tree-ssa-loop-niter.c (derive_constant_upper_bound_ops): Fix - bogus check. - (record_nonwrapping_iv): Do not fall back to the low/high bound - for non-constant IV bases if the stmt is not always executed. + PR target/84954 + * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update + seen_label if seen_label is already set. - 2016-02-24 Kyrylo Tkachov + 2018-03-20 Jakub Jelinek - * config/arm/arm-cores.def (cortex-a32): New entry. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Regenerate. - * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a32. - * config/arm/t-aprofile: Handle mcpu=cortex-a32. - * doc/invoke.texi (ARM Options): Document cortex-a32 as value - for -mcpu and -mtune. + 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. - 2016-02-24 Kyrylo Tkachov + PR c/84953 + * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type + instead of TREE_TYPE (s1) for the return value. - PR target/69875 - * config/arm/arm.h (TARGET_HAVE_LPAE): Define. - * config/arm/unspecs.md (VUNSPEC_LDRD_ATOMIC): New value. - * config/arm/sync.md (arm_atomic_loaddi2_ldrd): New pattern. - (atomic_loaddi_1): Delete. - (atomic_loaddi): Rewrite expander using the above changes. + 2018-03-19 Jakub Jelinek - 2016-02-24 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 c/69918 - * params.def (PARAM_MAX_SSA_NAME_QUERY_DEPTH): Bump default from - 2 to 3. + 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. - 2016-02-24 Jakub Jelinek - Richard Biener + PR rtl-optimization/84643 + * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator. - PR middle-end/69909 - * expr.c (expand_expr_real_1) : Avoid - set_mem_attributes if tem is SSA_NAME which got expanded - as a MEM. + 2018-03-19 Maxim Ostapenko - 2016-02-24 Richard Biener + PR sanitizer/78651 + * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before + calling assemble_variable. - PR tree-optimization/69907 - * tree-vect-stmts.c (vectorizable_load): Check for gaps at the - end of permutations for BB vectorization. + 2018-03-19 Sudakshina Das - 2016-02-24 Christian Bruel + PR target/81647 + * config/aarch64/aarch64-simd.md (vec_cmp): Modify + instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED. - * config/arm/arm-c.c (arm_option_override): Initialize - target_option_current_node. - * config/arm/arm.c (arm_pragma_target_parse): Replace - build_target_option_node call by target_option_current_node. - Set target_option_current_node. - Fix comments. + 2018-03-19 Jim Wilson - 2016-02-23 David Edelsohn + 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. - PR target/69810 - * config/rs6000/rs6000.md (zero_extendqi2_dot): Convert from - define_insn_and_split to define_insn. - (zero_extendqi2_dot2): Same. - (extendqi2_dot): Same. - (extendqi2_dot2): Same. + 2018-03-19 Richard Biener - 2016-02-23 Evandro Menezes + 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. - * config/arm/exynos-m1.md: Change cost of STP, fix bypass for stores - and add bypass for AES{D,E} and AESMC pairs. - * config/aarch64/aarch64.c (exynosm1_tunings): Enable fusion of AES{D,E} - and AESMC pairs. + 2018-03-19 Richard Biener - 2016-02-23 Evandro Menezes + 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. - * config/aarch64/aarch64.c (exynosm1_tunings): Enable the Newton - series for reciprocal square root in Exynos M1. + 2018-03-19 Richard Biener - 2016-02-23 Martin Sebor + PR tree-optimization/84929 + * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard + chrec_is_positive against non-chrec arg. - PR c/69759 - * doc/extend.texi (Other Builtins): Document __builtin_alloca and - __builtin_alloca_with_align. + 2018-03-19 Tamar Christina - 2016-02-23 Richard Henderson + PR target/84711 + * config/arm/arm.c (arm_can_change_mode_class): revert r258554. - * config/i386/i386-c.c (ix86_target_macros): Remove __SEG_TLS. - (ix86_register_pragmas): Remove __seg_tls. - * config/i386/i386-protos.h (ADDR_SPACE_SEG_TLS): Remove. - * config/i386/i386.c (ix86_print_operand_address_as): Don't handle it. - (ix86_addr_space_subset_p, TARGET_ADDR_SPACE_SUBSET_P): Remove. - (ix86_addr_space_convert, TARGET_ADDR_SPACE_CONVERT): Remove. - (ix86_addr_space_debug, TARGET_ADDR_SPACE_DEBUG): Remove. - * doc/extend.texi (__seg_tls): Remove item. + 2018-03-18 Martin Liska - 2016-02-23 Richard Biener + PR rtl-optimization/84635 + * regrename.c (build_def_use): Use matches_mode only when + matches >= 0. - * alloc-pool.h (struct allocation_object): Make id member - conditional on CHECKING_P again. - (get_instance): Adjust. - (base_pool_allocator): Likewise. + 2018-03-18 Richard Sandiford - 2016-02-23 Thomas Schwinge + PR tree-optimization/84913 + * tree-vect-loop.c (vectorizable_reduction): Don't try to + vectorize chains of COND_EXPRs. - * tree-parloops.c (create_parallel_loop, gen_parallel_loop) - (parallelize_loops): In OpenACC kernels mode, set n_threads to - zero. - (pass_parallelize_loops::gate): In OpenACC kernels mode, gate on - flag_openacc. - * tree-ssa-loop.c (gate_oacc_kernels): Likewise. + 2018-03-18 Chung-Ju Wu - 2016-02-23 Richard Biener + * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value. - * mem-stats.h (struct mem_usage): Use PRIu64 for printing size_t. - * bitmap.h (struct bitmap_usage): Likewise. - (bitmap_move): Declare. - * bitmap.c (register_overhead): Take size_t argument. - (bitmap_move): New function. - * df-problems.c (df_rd_transfer_function): Use bitmap_move - to properly account overhead. - * tree.c (free_node): Use tree_size. + 2018-03-18 Chung-Ju Wu - 2016-02-23 Jakub Jelinek + * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define. - PR c++/69902 - * fold-const.c (fold_truth_not_expr): Propagate TREE_NO_WARNING - when inverting comparison. + 2018-03-18 Chung-Ju Wu - PR c/69900 - * common.opt (Wunreachable-code): Add Warning flag. + * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define. - 2016-02-23 Mark Wielaard - Jakub Jelinek + 2018-03-17 Chung-Ju Wu + Kito Cheng - PR c/69911 - * cgraphunit.c (check_global_declaration): Check main_input_filename - and DECL_SOURCE_FILE are not NULL. + * 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. - 2016-02-23 Martin Jambor + 2018-03-17 Kito Cheng - PR tree-optimization/69666 - * tree-sra.c (sra_modify_assign): Do not attempt to create - default_def replacements for unscalarizable regions. + * config/nds32/nds32.c (nds32_asm_output_mi_thunk, + nds32_print_operand, nds32_print_operand_address): Use + HOST_WIDE_INT_PRINT_DEC instead. - 2016-02-20 Mark Wielaard + 2018-03-17 Chung-Ju Wu - PR c/28901 - * cgraphunit.c (check_global_declaration): Check level of - warn_unused_const_variable and main_input_filename. - * doc/invoke.texi (Warning Options): Add -Wunused-const-variable=. - (-Wunused-variable): For C implies -Wunused-const-variable=1. - (-Wunused-const-variable): Explain levels 1 and 2. + * config/nds32/nds32.c (nds32_register_priority): Modify cost. - 2016-02-22 Jakub Jelinek + 2018-03-17 Jakub Jelinek - PR target/69888 - * config/i386/i386.c (decide_alg): Ensure we don't recurse with - identical arguments. Formatting and spelling fixes. + 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. - PR target/69885 - * doc/md.texi (ashl@var{m}3): Document that mode of operand 2 must - be specified. + 2018-03-16 Jakub Jelinek - PR target/69894 - PR target/69895 - * config/m68k/t-opts (OPTIONS_H_EXTRA): Add m68k-microarchs.def - and m68k-devices.def. - * config/c6x/t-c6x (OPTIONS_H_EXTRA): Add c6x-isas.def. - * config/aarch64/t-aarch64 (OPTIONS_H_EXTRA): Add aarch64-arches.def. + 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. - 2016-02-22 Cesar Philippidis + 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. - * config/nvptx/nvptx.c (nvptx_gen_shuffle): Add support for QImode - and HImode registers. + 2018-03-16 Vladimir Makarov - 2016-02-22 Richard Biener + 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. - PR tree-optimization/69882 - * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Properly - preserve permutations present because of gaps. - (vect_supported_load_permutation_p): Always continue checking - permutations after vect_attempt_slp_rearrange_stmts. + 2018-03-16 Martin Liska - 2016-02-22 Bin Cheng + PR ipa/84833 + * multiple_target.c (create_dispatcher_calls): Redirect + reference in the symbol table. - * tree-vect-loop.c (vect_estimate_min_profitable_iters): Dump - min_profitable_estimate, rather than min_profitable_iters. + 2018-03-16 Martin Liska - 2016-02-22 Jakub Jelinek + PR ipa/84722 + * multiple_target.c (create_dispatcher_calls): Redirect also + an alias. - PR target/69885 - * config/m68k/m68k.md (ashldi3, ashrdi3, lshrdi3): Use - SImode for last match_operand. + 2018-03-16 Jakub Jelinek - 2016-02-22 Martin Liska + 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. - * hsa-gen.c (gen_hsa_clrsb): In case of zero value, - return bitsize - 1 as the return value. + 2018-03-16 Julia Koval - 2016-02-22 Oleg Endo + * doc/invoke.texi (Skylake Server): Add CLWB. + Cannonlake): Remove CLWB. - PR target/69806 - PR target/54089 - * config/sh/sh.c (sh_lshrsi_clobbers_t_reg_p, sh_dynamicalize_shift_p): - Handle negative shift counts. - * config/sh/sh.md (ashlsi3, lshrsi3_n, lshrsi3_n_clobbers_t): Don't use - force_reg on the shift constant. - (lshrsi3): Likewise. Expand into lshrsi3_n* instead of lshrsi3_d. - (lshrsi3_d): Handle negative shift counts. + 2018-03-16 Jakub Jelinek - 2016-02-22 Richard Biener - Tom de Vries + 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. - * graph.c: Include dumpfile.h. - (print_graph_cfg): Split into three overloads. - * gdbhooks.py (class DotFn): Add and instantiate, adding command dot-fn. + 2018-03-15 Sandra Loosemore - 2016-02-22 Tom de Vries + * config/nios2/nios2.md (movsi_internal): Fix thinko in + split predicate. - * gdbhooks.py (class DumpFn): Add and instantiate, adding command - dump-fn. + 2018-03-15 Jakub Jelinek - 2016-02-22 Richard Biener + PR c++/79085 + * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment + check and use address of target always. - PR ipa/37448 - * ipa-inline-transform.c (inline_call): When not updating - overall summaries adjust self size by the growth estimate. - * ipa-inline.c (inline_to_all_callers_1): Add to the callers - hash-set, do not update overall summaries here. Renamed from ... - (inline_to_all_callers): ... this which is now wrapping the - above and performing delayed overall summary update. - (early_inline_small_functions): Delay updating of the overall - summary. + 2018-03-15 H.J. Lu - 2016-02-21 Markus Trippelsdorf + 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. - * tree-chkp.c (chkp_mark_invalid_bounds_walker): Initialize - variable. + 2018-03-15 Olga Makhotina - 2016-02-19 Jakub Jelinek + * config/i386/sgxintrin.h (_enclv_u32): New intrinsic. + (__enclv_bc, __enclv_cd, __enclv_generic): New definitions. + (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves. - PR driver/69805 - * gcc.c (LINK_COMMAND_SPEC, GOMP_SELF_SPECS): Use - :%* in %:gt() argument. - (greater_than_spec_func): Adjust for expecting only numbers, - if there are more than two numbers, compare the last two. + 2018-03-15 David Malcolm + Paul Hua - 2016-02-19 Jonathan Wakely + PR c/84852 + * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp. - * doc/invoke.texi (C++ Dialect Options): Clarify interaction of - -Wnarrowing with -std. + 2018-03-15 Segher Boessenkool - 2016-02-19 Jakub Jelinek + * 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. - PR c++/69851 - * expr.c (store_field): Don't use bit-field path if exp is - COMPONENT_REF with TREE_ADDRESSABLE type, where TYPE_SIZE is - different from bitsize, but DECL_SIZE of FIELD_DECL is bitsize - and the assignment can be performed by bitwise copy. Formatting - fix. + 2018-03-15 Tamar Christina - PR middle-end/69838 - * lra.c (lra_process_new_insns): If non-call exceptions are enabled, - call copy_reg_eh_region_note_forward on before and/or after sequences - and remove note from insn if it no longer can throw. + 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. - PR target/69820 - * config/i386/sse.md (VI_512): Only include V64QImode and V32HImode - if TARGET_AVX512BW. + 2018-03-15 Vladimir Mezentsev - 2016-02-19 Andreas Krebbel + 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 (). - * config/s390/vector.md: Add missing commutative operand markers - to the patterns which qualify for one. - * config/s390/vx-builtins.md: Likewise. + 2018-03-15 Jakub Jelinek - 2016-02-19 Andreas Krebbel + 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. - * config/s390/vector.md (VI, VI_QHS): Add single element vector - types to mode iterators. - (vec_double): ... and mode attribute. - * config/s390/vx-builtins.md (non_vec_int): Likewise. + 2018-03-15 Julia Koval - 2016-02-19 Andreas Krebbel + * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ, + F_AVX512VNNI, F_AVX512BITALG): New. - * config/s390/vector.md ("add3", "sub3"): - Change the predicate of op2 from nonimmediate to general and let - reload fix it if necessary. + 2018-03-14 John David Anglin - 2016-02-19 Andreas Krebbel + PR target/83451 + * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload + insn for floating-point loads and stores. - * config/s390/vecintrin.h (vec_sub_u128): Define missing macro. + 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. - 2016-02-19 Andreas Krebbel + 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. - * config/s390/s390.c (s390_expand_vcond): Use the compare operand - mode. + 2018-03-14 Segher Boessenkool - 2016-02-19 Andreas Krebbel + PR rtl-optimization/84780 + * combine.c (distribute_links): Don't make a link based on pc_rtx. - * config/s390/s390-protos.h: Add s390_expand_vec_movstr prototype. - * config/s390/s390.c (s390_expand_vec_movstr): New function. - * config/s390/s390.md ("movstr"): Call - s390_expand_vec_movstr. + 2018-03-14 Martin Liska - 2016-02-19 Andreas Krebbel + * 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. - * config/s390/s390.md: Add missing output modifier for operand 1 - to print it as address properly. + 2018-03-14 Richard Biener - 2016-02-19 Andreas Krebbel + * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts + that the value-set of ANTIC_IN doesn't grow. - * config/s390/2827.md: Rename ooo_* insn attributes to zEC12_*. - * config/s390/2964.md: New file. - * config/s390/s390.c (s390_get_sched_attrmask): Use the right set - of insn grouping attributes depending on the CPU level. - (s390_get_unit_mask): New function. - (s390_sched_score): Remove the OOO from the scheduling macros. - Add loop to calculate a score for the instruction mix. - (s390_sched_reorder): Likewise plus improve debug output. - (s390_sched_variable_issue): Rename macros as above. Calculate - the unit distances after actually scheduling an insn. Improve - debug output. - (s390_sched_init): Clear last_scheduled_unit_distance array. - * config/s390/s390.md: Include 2964.md. + 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. - 2016-02-18 Jakub Jelinek + 2018-03-14 Jakub Jelinek - PR target/69671 - * config/i386/sse.md (*floatv2div2sf2_mask_1, - *avx512vl_v2div2qi2_mask_1, *avx512vl_v4qi2_mask_1, - *avx512vl_v8qi2_mask_1, *avx512vl_v4hi2_mask_1, - *avx512vl_v2div2hi2_mask_1, *avx512vl_v2div2si2_mask_1, - *avx512f_v8div16qi2_mask_1): New insns. + 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. - 2016-02-18 Michael Meissner + PR target/84844 + Revert + 2017-04-20 Uros Bizjak - PR target/68404 - * config/rs6000/predicates.md (fusion_gpr_addis): Revert - 2016-02-09 change. + 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. - * config/rs6000/rs6000.md (fusion_gpr_load_): Remove - earlyclobber from target. Use wF constraint for fused memory - address. - (fusion_gpr___load): Likewise. + 2018-03-14 Richard Biener - 2016-02-18 Jakub Jelinek - Martin Liska + PR tree-optimization/84830 + * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN + with the old one to avoid oscillations. - PR sanitizer/69863 - * cfgexpand.c (asan_sanitize_stack_p): New function. - (partition_stack_vars): Use the function. - (expand_stack_vars): Likewise. - (defer_stack_allocation): Likewise. - (expand_used_vars): Likewise. + 2018-03-13 Vladimir Makarov - 2016-02-18 Richard Biener + 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. - PR middle-end/69553 - * fold-const.c (operand_equal_p): Properly compare offsets for - IMAGPART_EXPR and ARRAY_REF. + 2018-03-13 Eric Botcazou - 2016-02-18 Nick Clifton + PR lto/84805 + * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of + incomplete types. - PR target/62254 - PR target/69610 - * config/arm/arm.c (arm_option_override_internal): Disable - interworking if the target does not support thumb instructions. - (arm_reload_in_hi): Handle the case where a register to register - move needs reloading because there is no simple pattern to handle - it. - (arm_reload_out_hi): Likewise. + 2018-03-13 Martin Liska - 2016-02-18 Richard Biener + 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. - PR middle-end/69854 - * match.pd: Don't use fold_binary or fold_unary for folding - constants. + 2018-03-13 Jakub Jelinek - 2016-02-17 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 c++/69850 - * gimplify.c (gimplify_cond_expr): Call gimple_set_no_warning - on the cond_stmt from TREE_NO_WARNING on COND_EXPR_COND. - * gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Don't - warn on gimple_no_warning_p statements. + 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. - 2016-02-17 Jonathan Wakely + PR target/84827 + * config/i386/i386.md (round2): For 387 fancy math, disable + pattern if -ftrapping-math -fno-fp-int-builtin-inexact. - * doc/extend.texi (C++ Attributes): Correct description of - warn_unused type attribute. + 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. - 2016-02-17 Bill Schmidt + PR target/84786 + * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v + on the last operand. - * config/rs6000/altivec.md (*altivec_lvxl__internal): Output - correct instruction. + PR c++/84704 + * tree.c (stabilize_reference_1): Return save_expr (e) for + STATEMENT_LIST even if it doesn't have side-effects. - 2016-02-17 Richard Biener + 2018-03-12 Jonathan Wakely - PR rtl-optimization/69609 - * bb-reorder.c (struct bbro_basic_block_data): Add priority member. - (find_traces_1_round): When ending a trace update cached priority - of successors. - (bb_to_key): Use cached priority when available. - (copy_bb): Initialize cached priority. - (reorder_basic_blocks_software_trace_cache): Likewise. + * doc/invoke.texi (-mclflushopt): Fix spelling of option. - 2016-02-17 Kyrylo Tkachov + 2018-03-12 Renlin Li - PR target/69161 - * config/aarch64/predicates.md (aarch64_comparison_operator_mode): - New predicate. - (aarch64_comparison_operator): Break overly long line into two. - (aarch64_comparison_operation): Likewise. - * config/aarch64/aarch64.md (cstorecc4): Use - aarch64_comparison_operator_mode instead of - aarch64_comparison_operator. - (cstore4): Likewise. - (aarch64_cstore): Likewise. - (*cstoresi_insn_uxtw): Likewise. - (cstore_neg): Likewise. - (*cstoresi_neg_uxtw): Likewise. - - 2016-02-17 Kyrylo Tkachov - - PR target/69161 - * config/arm/predicates.md (arm_comparison_operator_mode): - New predicate. - * config/arm/arm.md (*mov_scc): Use arm_comparison_operator_mode - instead of arm_comparison_operator. - (*mov_negscc): Likewise. - (*mov_notscc): Likewise. - * config/arm/thumb2.md (*thumb2_mov_scc): Likewise. - (*thumb2_mov_negscc): Likewise. - (*thumb2_mov_negscc_strict_it): Likewise. - (*thumb2_mov_notscc): Likewise. - (*thumb2_mov_notscc_strict_it): Likewise. - - 2016-02-17 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_internal_mov_immediate): - Add missing return. - - 2016-02-17 Eric Botcazou - - * config/visium/visium.c (machine_libfunc_index): New enum. - (machine_libfuncs): New structure. - (visium_libfuncs): New static variable. - (TARGET_INIT_LIBFUNCS): Define to... - (visium_init_libfuncs): ...this. New function. - (expand_block_move_4): Use the appropriate libfunc. - (expand_block_move_2): Likewise. - (expand_block_move_1): Likewise. - (expand_block_set_4): Likewise. - (expand_block_set_2): Likewise. - (expand_block_set_1): Likewise. - (visium_trampoline_init): Likewise. - - 2016-02-17 Nick Clifton - - * config/msp430/msp430.c (msp430_mcu_data): Sync with data from - TI's devices.csv file as of March 2016. - - 2016-02-16 Kelvin Nilsen - - PR Target/48344 - * opts-global.c (handle_common_deferred_options): Introduce and - initialize two global variables to remember command-line options - specifying a stack-limiting register. - * opts.h: Add extern declarations of the two new global variables. - * emit-rtl.c (init_emit_once): Initialize the stack_limit_rtx - variable based on the values of the two new global variables. - - 2016-02-16 Jakub Jelinek - - PR c/69835 - * common.opt (Wnonnull-compare): New warning. - * doc/invoke.texi (-Wnonnull): Remove text about comparison - of arguments against NULL. - (-Wnonnull-compare): Document. - * Makefile.in (OBJS): Add gimple-ssa-nonnull-compare.o. - * tree-pass.h (make_pass_warn_nonnull_compare): Declare. - * passes.def (pass_warn_nonnull_compare): Add. - * gimple-ssa-nonnull-compare.c: New file. - - 2016-02-16 James Greenhalgh - - * config/aarch64/aarch64.c (cortexa57_tunings): Remove - AARCH64_EXTRA_TUNE_RECIP_SQRT. - - 2016-02-16 James Greenhalgh - - * config/aarch64/aarch64.c (use_rsqrt_p): Always use software - reciprocal sqrt for -mlow-precision-recip-sqrt. - - 2016-02-16 James Greenhalgh - Ramana Radhakrishnan - - * config/aarch64/aarch64.c (aarch64_expand_vector_init): Refactor, - always use lane loads to construct non-constant vectors. - - 2016-02-16 James Greenhalgh - - * config/aarch64/aarch64.md - (arch64_sqrdmlh_lane): Fix register - constraints for operand 3. - (aarch64_sqrdmlh_laneq): Likewise. - - 2016-02-16 Jakub Jelinek - Richard Biener + * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to + aarch64_output_scalar_simd_mov_immediate. - PR tree-optimization/69820 - * tree-vect-patterns.c (type_conversion_p): Return false if - *orig_type is unsigned single precision or boolean. - (vect_recog_dot_prod_pattern, vect_recog_widen_mult_pattern): - Formatting fix. - - 2016-02-16 Jakub Jelinek - - PR rtl-optimization/69764 - PR rtl-optimization/69771 - * optabs.c (expand_binop): Ensure for shift optabs invalid CONST_INT - op1 is valid for GET_MODE_INNER (mode) and force it into a reg. - - 2016-02-16 Richard Biener - - PR tree-optimization/69776 - * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Get alias - sets from caller. - (indirect_refs_may_alias_p): Likewise. - (refs_may_alias_p_1): Pass alias sets as from ao_ref. - * tree-ssa-sccvn.c (vn_reference_lookup): Also adjust vr alias-set - according to tbaa_p. - * tree-ssa-dom.c (lookup_avail_expr): Add tbaa_p flag. - (optimize_stmt): For redundant store discovery do not allow tbaa. - - 2016-02-16 Bernd Schmidt - - PR tree-optimization/69714 - * tree-ssa-math-opts.c (find_bswap_or_nop): Revert previous change. - Return NULL if we have irrelevant high bytes on BIG_ENDIAN. - - 2016-02-16 Claudiu Zissulescu - - * config/arc/arc-modes.def (CC_FPU, CC_FPU_UNEQ): New modes. - * config/arc/arc-opts.h (FPU_SP, FPU_SF, FPU_SC, FPU_SD, FPU_DP) - (FPU_DF, FPU_DC, FPU_DD, FXP_DP): Define. - * config/arc/arc.c (arc_init): Check FPU options. - (get_arc_condition_code): Handle new CC_FPU* modes. - (arc_select_cc_mode): Likewise. - (arc_conditional_register_usage): Allow 64 bit datum into even-odd - register pair only. Allow access for ARCv2 accumulator. - (gen_compare_reg): Whenever we have FPU support use FPU compare - instructions. - (arc_reorg): Don't generate brcc insns when FPU compare - instructions are involved. - * config/arc/arc.h (TARGET_DPFP): Add TARGET_FP_DPAX condition. - (TARGET_OPTFPE): Add condition when ARC EM can use optimized - floating point emulation. - (ACC_REG_FIRST, ACC_REG_LAST, ACCL_REGNO, ACCH_REGNO): Define. - (REVERSE_CONDITION): Add new CC_FPU* modes. - (TARGET_FP_SP_BASE): Define. - (TARGET_FP_DP_BASE): Likewise. - (TARGET_FP_SP_FUSED): Likewise. - (TARGET_FP_DP_FUSED): Likewise. - (TARGET_FP_SP_CONV): Likewise. - (TARGET_FP_DP_CONV): Likewise. - (TARGET_FP_SP_SQRT): Likewise. - (TARGET_FP_DP_SQRT): Likewise. - (TARGET_FP_DP_AX): Likewise. - * config/arc/arc.md (ARCV2_ACC): New constant. - (type): New fpu type attribute. - (SDF): Conditional iterator. - (cstore, cbranch): Change expand condition. - (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3): New expands, - handles FPU/FPX cases as well. - * config/arc/arc.opt (mfpu): New option. - * config/arc/fpx.md (addsf3_fpx, subsf3_fpx, mulsf3_fpx): - Renamed. - (adddf3, muldf3, subdf3): Removed. - * config/arc/predicates.md (proper_comparison_operator): Recognize - CC_FPU* modes. - * config/arc/fpu.md: New file. - * doc/invoke.texi (ARC Options): Document mfpu option. - - 2016-02-16 Richard Biener - - PR rtl-optimization/69291 - * ifcvt.c (noce_try_store_flag_constants): Re-instantiate - noce_operand_ok check. - - 2016-02-16 Tom de Vries - - PR lto/67709 - * omp-low.c (simd_clone_create): Remove call to - symtab->call_cgraph_insertion_hooks. - - 2016-02-16 Jakub Jelinek - - PR tree-optimization/69802 - * tree-ssa-reassoc.c (update_range_test): If op is - SSA_NAME_IS_DEFAULT_DEF, give up unless tem is a positive - op == 1 test of precision 1 integral op, otherwise handle - that case as op itself. Fix up formatting. - (optimize_range_tests_to_bit_test, optimize_range_tests): Fix - up formatting. - - 2016-02-16 Richard Biener - - PR tree-optimization/69586 - * tree-vrp.c (register_edge_assert_for_2): Handle all integral - types for conversion sources. - - 2016-02-16 Richard Biener - - PR middle-end/69801 - * fold-const.c (operand_equal_p): For COND_EXPR zero operand - mask OEP_ADDRESS_OF. - - 2016-02-16 Alan Modra - - PR target/68973 - * config/rs6000/rs6000.md (reload_vsx_from_gprsf): Rewrite splitter. - (p8_mtvsrd_df, p8_mtvsrd_sf): New. - (p8_mtvsrd_1, p8_mtvsrd_2): Delete. - (p8_mtvsrwz): New. - (p8_mtvsrwz_1, p8_mtvsrwz_2): Delete. - (p8_xxpermdi_): Take two DF inputs rather than one TF. - (p8_fmrgow_): Likewise. - (reload_vsx_from_gpr): Make clobber IF. Adjust for above - changes. - (reload_fpr_from_gpr): Similarly. Use "d" for op0 constraint. - (reload_vsx_from_gprsf): Use p8_mtvsrd_sf rather than attempting - to use movdi_internal64. Remove op0_di. - * config/rs6000/vsx.md (vsx_xscvspdpn_directmove): Make op1 SFmode. - - 2016-02-15 Evandro Menezes - - Add support for the FCCMP insn types - - * config/aarch64/aarch64.md (fccmp): Change insn type. - (fccmpe): Likewise. - * config/aarch64/thunderx.md (thunderx_fcmp): Add "fccmp{s,d}" types. - * config/arm/cortex-a53.md (cortex_a53_fpalu): Likewise. - * config/arm/cortex-a57.md (cortex_a57_fp_cmp): Likewise. - * config/arm/xgene1.md (xgene1_fcmp): Likewise. - * config/arm/exynos-m1.md (exynos_m1_fp_ccmp): New insn reservation. - * config/arm/types.md (fccmps): Add new insn type. - (fccmpd): Likewise. - - 2016-02-15 Bernd Edlinger - - * alias.c (get_alias_set): Fix a typo in comment. - - 2016-02-15 Richard Biener - - PR tree-optimization/69595 - * match.pd: Complete range test simplification to true. - - 2016-02-15 Bernd Schmidt - - PR rtl-optimization/69648 - * lra-constraints.c (update_ebb_live_info): Don't remove sets of - pic_offset_table_rtx. - - PR rtl-optimization/69752 - * ira.c (update_equiv_regs): When looking for more than a single SET, - also take other side effects into account. - - 2016-02-15 Marcin Kościelnicki + 2018-03-12 Martin Sebor - * config/s390/s390.c (s390_function_profiler): Add a new sequence - for z900+ CPUs in 31-bit mode. + 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. - 2016-02-15 Marcin Kościelnicki + 2018-03-12 Segher Boessenkool - * common/config/s390/s390-common.c (s390_supports_split_stack): - New function. - (TARGET_SUPPORTS_SPLIT_STACK): New macro. - * config/s390/s390-protos.h: Add s390_expand_split_stack_prologue. - * config/s390/s390.c (struct machine_function): New field - split_stack_varargs_pointer. - (s390_register_info): Mark r12 as clobbered if it'll be used as temp - in s390_emit_prologue. - (s390_emit_prologue): Use r12 as temp if r1 is taken by split-stack - vararg pointer. - (morestack_ref): New global. - (SPLIT_STACK_AVAILABLE): New macro. - (s390_expand_split_stack_prologue): New function. - (s390_live_on_entry): New function. - (s390_va_start): Use split-stack vararg pointer if appropriate. - (s390_asm_file_end): Emit the split-stack note sections. - (TARGET_EXTRA_LIVE_ON_ENTRY): New macro. - * config/s390/s390.md (UNSPEC_STACK_CHECK): New unspec. - (UNSPECV_SPLIT_STACK_CALL): New unspec. - (UNSPECV_SPLIT_STACK_DATA): New unspec. - (split_stack_prologue): New expand. - (split_stack_space_check): New expand. - (split_stack_data): New insn. - (split_stack_call): New expand. - (split_stack_call_*): New insn. - (split_stack_cond_call): New expand. - (split_stack_cond_call_*): New insn. - - 2016-02-15 Richard Biener - - PR tree-optimization/69783 - * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): - Add trivially correct cases. - - 2016-02-15 Tom de Vries - - PR lto/69655 - * lto-cgraph.c (input_offload_tables): Add and handle bool parameter - do_force_output. - * lto-streamer.h (input_offload_tables): Add and handle bool parameter. - - 2016-02-15 Richard Biener - - PR tree-optimization/69776 - * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype. - * tree-ssa-sccvn.c (vn_reference_lookup): Add parameter to - indicate whether we can use TBAA to disambiguate against stores. - Use alias-set zero if not. - (visit_reference_op_store): Do not use TBAA when looking up - redundant stores. - * tree-ssa-pre.c (compute_avail): Use TBAA here. - (eliminate_dom_walker::before_dom_children): But not when looking - up redundant stores. - - 2016-02-14 John David Anglin - - * config/pa/pa.md (absqi2, absghi2, bswaphi2, bswapsi2, bswapdi2): New. - - 2016-02-14 Venkataramanan Kumar - - * config/i386/znver1.md - (znver1_pop, znver1_pop_mem, - znver1_load_imov_double_store, - znver1_load_imov_direct_store, - znver1_load_imov_direct_load, - znver1_load_imov_double_load): Add new. - (znver1_insn, znver1_insn_load): Add icmov type. - (znver1_sseavx_fma, - znver1_sseavx_fma_load, - znver1_avx256_fma, - znver1_avx256_fma_load): Fix pipe usage. - - 2016-02-14 Alan Modra - - PR target/68973 - * reload.c (find_reloads_address_1): For pre/post-inc/dec - with an invalid hard reg, reload just the reg not the entire - pre/post-inc/dec address expression. - - 2016-02-13 Oleg Endo - - PR target/67260 - * config/sh/sh.md (sibcall_value_pcrel): Replace =&k scratch reg with - fixed R1_REG scratch reg. - (sibcall_value_pcrel_fdpic): Likewise. - - 2016-02-13 Oleg Endo - - PR target/67636 - PR target/64345 - * config/sh/sh.md (*zero_extract_3): New insn_and_split pattern. - - 2016-02-12 Walter Lee - - * config/tilepro/t-tilepro: Replace CC_FOR_BUILD with CXX_FOR_BUILD. - * config/tilegx/t-tilegx: Likewise. - - 2016-02-12 David Malcolm - - PR other/69554 - * diagnostic-show-locus.c (struct line_span): New struct. - (layout::get_first_line): Delete. - (layout::get_last_line): Delete. - (layout::get_num_line_spans): New member function. - (layout::get_line_span): Likewise. - (layout::print_heading_for_line_span_index_p): Likewise. - (layout::get_expanded_location): Likewise. - (layout::calculate_line_spans): Likewise. - (layout::m_first_line): Delete. - (layout::m_last_line): Delete. - (layout::m_line_spans): New field. - (layout::layout): Update comment. Replace m_first_line and - m_last_line with m_line_spans, replacing their initialization - with a call to calculate_line_spans. - (diagnostic_show_locus): When printing source lines and - annotations, rather than looping over a single span - of lines, instead loop over each line_span within - the layout, with an inner loop over the lines within them. - Call the context's start_span callback when changing line spans. - * diagnostic.c (diagnostic_initialize): Initialize start_span. - (diagnostic_build_prefix): Break out the building of the location - part of the string into... - (diagnostic_get_location_text): ...this new function, rewriting - it from nested ternary expressions to a sequence of "if" - statements. - (default_diagnostic_start_span_fn): New function. - * diagnostic.h (diagnostic_start_span_fn): New typedef. - (diagnostic_context::start_span): New field. - (default_diagnostic_start_span_fn): New prototype. - - 2016-02-12 David Malcolm - - PR driver/69779 - * gcc.c (driver::finalize): Fix cleanup of "specs". - - 2016-02-12 David Malcolm - - PR driver/69265 - PR driver/69453 - * gcc.c (driver::driver): Initialize m_option_suggestions. - (driver::~driver): Clean up m_option_suggestions. - (suggest_option): Convert to... - (driver::suggest_option): ...this, and split out into - driver::build_option_suggestions and find_closest_string. - (driver::build_option_suggestions): New function, from - first half of suggest_option. Special-case - OPT_fsanitize_ and OPT_fsanitize_recover_, making use of - the sanitizer_opts array. For options of enum types, add the - various enum values to the candidate strings. - (driver::handle_unrecognized_options): Remove "const". - * gcc.h (driver::handle_unrecognized_options): Likewise. - (driver::build_option_suggestions): New decl. - (driver::suggest_option): New decl. - (driver::m_option_suggestions): New field. - * opts-common.c (add_misspelling_candidates): New function. - * opts.c (sanitizer_opts): Remove decl of struct sanitizer_opts_s - and make non-static. - * opts.h (sanitizer_opts): New array decl. - (add_misspelling_candidates): New function decl. - * spellcheck.c (find_closest_string): New function. - * spellcheck.h (find_closest_string): New function decl. - - 2016-02-12 Jakub Jelinek - - PR rtl-optimization/69764 - PR rtl-optimization/69771 - * optabs.c (expand_binop_directly): For shift_optab_p, force - convert_modes with VOIDmode if xop1 has VOIDmode. - - 2016-02-12 Ilya Enkovich - - PR target/69729 - * lto-streamer-out.c (lto_output): Use thunk.add_pointer_bounds_args - to correctly determine instrumentation thunks. - - 2016-02-12 Jakub Jelinek - - PR ipa/69241 - * ipa-split.c (split_function): If split part returns TREE_ADDRESSABLE - type by reference, force lhs on the call. - - PR ipa/68672 - * ipa-split.c (split_function): Don't compute/use main_part_return_p. - Compute retval and retbnd early in all cases if split_part_return_p - and return_bb is not EXIT. Remove all clobber stmts and reset - all debug stmts that refer to SSA_NAMEs defined in split part, - except if it is retval, in that case replace the old retval with the - lhs of the call to the split part. - - 2016-02-12 Kugan Vivekanandarajah - - revert: - 2016-02-12 Kugan Vivekanandarajah - - PR middle-end/66726 - * tree-ssa-reassoc.c (optimize_range_tests): Handle tcc_compare stmt - whose result is used in PHI. - (maybe_optimize_range_tests): Likewise. - (final_range_test_p): Likweise. - - 2016-02-12 Kugan Vivekanandarajah - - PR middle-end/66726 - * tree-ssa-reassoc.c (optimize_range_tests): Handle tcc_compare stmt - whose result is used in PHI. - (maybe_optimize_range_tests): Likewise. - (final_range_test_p): Likweise. - - 2016-02-12 Jakub Jelinek - - * cgraph.c: Spelling fixes - behaviour -> behavior and - neighbour -> neighbor. - * target.def: Likewise. - * sel-sched.c: Likewise. - * config/mips/mips.c: Likewise. - * config/arc/arc.md: Likewise. - * config/arm/cortex-a57.md: Likewise. - * config/arm/arm.c: Likewise. - * config/arm/neon.md: Likewise. - * config/arm/arm-c.c: Likewise. - * config/vms/vms-c.c: Likewise. - * config/s390/s390.c: Likewise. - * config/i386/znver1.md: Likewise. - * config/i386/i386.c: Likewise. - * config/ia64/hpux-unix2003.h: Likewise. - * config/msp430/msp430.md: Likewise. - * config/rx/rx.c: Likewise. - * config/rx/rx.md: Likewise. - * config/aarch64/aarch64-simd.md: Likewise. - * config/aarch64/aarch64.c: Likewise. - * config/nvptx/nvptx.c: Likewise. - * config/bfin/bfin.c: Likewise. - * config/cris/cris.opt: Likewise. - * config/rs6000/rs6000.c: Likewise. - * target.h: Likewise. - * spellcheck.c: Likewise. - * ira-build.c: Likewise. - * tree-inline.c: Likewise. - * builtins.c: Likewise. - * lra-constraints.c: Likewise. - * explow.c: Likewise. - * hwint.h: Likewise. - * targhooks.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * expr.c: Likewise. - * doc/tm.texi: Likewise. - * doc/extend.texi: Likewise. - * doc/install.texi: Likewise. - * doc/md.texi: Likewise. - * tree-ssa-tail-merge.c: Likewise. - * sched-int.h: Likewise. - * match.pd: Likewise. - * sched-ebb.c: Likewise. - * target.def (omit_struct_return_reg): Likewise. - * gimple-ssa-isolate-paths.c: Likewise. - (find_implicit_erroneous_behaviour): Renamed to... - (find_implicit_erroneous_behavior): ... this. - (find_explicit_erroneous_behaviour): Renamed to... - (find_explicit_erroneous_behavior): ... this. - (gimple_ssa_isolate_erroneous_paths): Adjust caller. - - 2016-02-11 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. - PR rtl-optimization/64682 - PR rtl-optimization/69567 - PR rtl-optimization/69737 - * combine.c (distribute_notes) : If the register is set - in I2 as well, just lose it. + 2018-03-12 Segher Boessenkool - 2016-02-11 Kyrylo Tkachov + 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. - * config/aarch64/aarch64.c (aarch64_last_printed_arch_string): - New variable. - (aarch64_last_printed_tune_string): Likewise. - (aarch64_declare_function_name): Only output .arch assembler - directive if it will be different from the previously output - directive. Same for .tune comment but only if -dA is set. - (aarch64_start_file): New function. - (TARGET_ASM_FILE_START): Define. + 2018-03-12 Richard Biener - 2016-02-11 David Malcolm + PR tree-optimization/84803 + * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything + for refs DR analysis didn't process. - PR plugins/69758 - * Makefile.in (PLUGIN_HEADERS): Add params.list. + 2018-03-12 Richard Biener - 2016-02-11 Jakub Jelinek + 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. - PR target/65313 - * tree-vect-slp.c (vect_schedule_slp_instance): Avoid - -Wmaybe-uninitialized warning. + 2018-03-12 Chung-Ju Wu - 2016-02-11 Oleg Endo + * config/nds32/nds32.c (nds32_md_asm_adjust): New function. + (TARGET_MD_ASM_ADJUST): Define. - PR target/69713 - * config/sh/sh.md (casesi_worker_0): Add T_REG use. + 2018-03-12 Monk Chiang + Kito Cheng + Chung-Ju Wu - 2016-02-11 Richard Biener + * 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. - PR rtl-optimization/69291 - * ifcvt.c (noce_try_store_flag_constants): Do not allow - subexpressions affected by changing the result. - - 2016-02-10 Vladimir Makarov - - PR target/69148 - * lra-constraints.c (curr_insn_transform): Find in/out operands - for secondary memory moves. Update dups. - - 2016-02-10 Yuri Rumyantsev - - PR tree-optimization/69652 - * tree-vect-loop.c (optimize_mask_stores): Move declaration of STMT1 - to nested loop, did source re-formatting, skip debug statements, - add check on statement with volatile operand, remove dead scalar - statements. - - 2016-02-10 Jakub Jelinek - Patrick Palka - - PR ipa/69241 - PR c++/69649 - * gimplify.c (gimplify_modify_expr): Set lhs even for noreturn - calls if the return type is TREE_ADDRESSABLE. - * cgraphunit.c (cgraph_node::expand_thunk): Likewise. - * ipa-split.c (split_function): Fix doubled "we" in comment. - Use void return type for the split part even if - !split_point->split_part_set_retval. - - 2016-02-10 Bin Cheng - - PR tree-optimization/68021 - * tree-ssa-loop-ivopts.c (get_computation_aff): Set ratio to 1 if - when computing the value of biv cand by itself. - - 2016-02-10 Wilco Dijkstra - - * config/aarch64/aarch64.c (cortexa53_tunings): Enable AES fusion. - (cortexa57_tunings): Likewise. - (cortexa72_tunings): Likewise. - (arch_macro_fusion_pair_p): Add support for AES fusion. - * config/aarch64/aarch64-fusion-pairs.def: Add AES_AESMC entry. - * config/arm/aarch-common.c (aarch_crypto_can_dual_issue): - Allow virtual registers before reload so early scheduling works. - * config/arm/cortex-a57.md (cortex_a57_crypto_simple): Use - correct latency and pipeline. - (cortex_a57_crypto_complex): Likewise. - (cortex_a57_crypto_xor): Likewise. - (define_bypass): Add AES bypass. - - 2016-02-10 Richard Biener - - PR tree-optimization/69726 - * passes.def: Add DCE pass before late uninit. - * match.pd: Add A ? B : (!A ? C : X) -> A ? B : C patterns to - really fixup if-conversions job. - - 2016-02-10 Wilco Dijkstra - - * config/arm/arm.c (arm_cortex_a53_tune): Enable AES fusion. - (arm_cortex_a57_tune): Likewise. - (aarch_macro_fusion_pair_p): Add support for AES fusion. - * config/arm/arm-protos.h (fuse_ops): Add FUSE_AES_AESMC. - - 2016-02-10 Eric Botcazou - - * timevar.def (TV_PHASE_DBGINFO): Delete. - (TV_PHASE_CHECK_DBGINFO): Likewise. - * varpool.c (varpool_node::assemble_decl): Do not change timevar. - - 2016-02-10 Richard Biener - - PR tree-optimization/69719 - * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): - Adjust previous fix by ensuring that dr_a1 is left of dr_a2. - - 2016-02-09 Andrew Pinski - - PR tree-opt/69282 - * optabs-tree.c (expand_vec_cond_expr_p): Don't early return if - get_vcond_mask_icode returns false. - - 2016-02-09 Michael Meissner - - PR target/68404 - * config/rs6000/predicates.md (fusion_gpr_addis): Prevent fusing - an ADDIS that adds a pointer to a large constant that sets the - upper16 bits with a load operation. - - 2016-02-09 Charles Baylis - - PR target/68532 - * config/arm/arm.c (arm_evpc_neon_vzip): Allow for big endian lane - order. - * config/arm/arm_neon.h (vzipq_s8): Adjust shuffle patterns for big - endian. - (vzipq_s16): Likewise. - (vzipq_s32): Likewise. - (vzipq_f32): Likewise. - (vzipq_u8): Likewise. - (vzipq_u16): Likewise. - (vzipq_u32): Likewise. - (vzipq_p8): Likewise. - (vzipq_p16): Likewise. - - 2016-02-09 Charles Baylis - - PR target/68532 - * config/arm/arm.c (neon_endian_lane_map): New function. - (neon_vector_pair_endian_lane_map): New function. - (arm_evpc_neon_vuzp): Allow for big endian lane order. - * config/arm/arm_neon.h (vuzpq_s8): Adjust shuffle patterns for big - endian. - (vuzpq_s16): Likewise. - (vuzpq_s32): Likewise. - (vuzpq_f32): Likewise. - (vuzpq_u8): Likewise. - (vuzpq_u16): Likewise. - (vuzpq_u32): Likewise. - (vuzpq_p8): Likewise. - (vuzpq_p16): Likewise. - - 2016-02-11 Alexandre Oliva - - PR target/69634 - * regstat.c (regstat_bb_compute_calls_crossed): Disregard - debug insns. + 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. - 2016-02-09 Uros Bizjak + 2018-03-11 Kito Cheng + Chung-Ju Wu - * config/i386/i386.md (insv_1): Use gen_int_mode to - truncate const_int operand 1 to QImode. + * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define + __NDS32_VH__ macro. + * config/nds32/nds32.opt (mvh): New option. - 2016-02-09 Eric Botcazou + 2018-03-11 Kito Cheng + Chung-Ju Wu - * gimple-ssa-backprop.c (optimize_phi): Do not replace an argument - corresponding to an abnormal edge. + * 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. - 2016-02-09 Tom de Vries + 2018-03-11 Kito Cheng + Chung-Ju Wu - PR tree-optimization/69599 - * tree-ssa-structalias.c (fndecl_maybe_in_other_partition): New + * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New function. - (find_func_aliases_for_builtin_call, find_func_clobbers) - (ipa_pta_execute): Handle case that foo and foo._0 are not in same lto - partition. + * 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 - 2016-02-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. - PR tree-optimization/69715 - * tree-ssa.c (execute_update_addresses_taken): Mark non-decl - LHS on calls as non-rewritable. + 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. - 2016-02-09 Tom de Vries + 2018-03-09 Eric Botcazou - PR lto/69707 - * lto-wrapper.c (append_diag_options): New function. - (compile_offload_image): Call append_diag_options. + PR target/84763 + * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation + when the function accesses prior frames. - 2016-02-08 Sandra Loosemore + 2018-03-08 Jakub Jelinek - PR other/69722 - * doc/extend.texi (Flag Output Operands): Correct sectioning. - Minor copy-edit to fix verb tenses. + PR debug/84456 + * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call + gen_llsym, otherwise call maybe_gen_llsym. - 2016-02-08 Jakub Jelinek + PR inline-asm/84742 + * recog.c (asm_operand_ok): Return 0 if multi-character constraint + has ',' character inside of it. - PR tree-optimization/69209 - * ipa-split.c (split_function): If split part is not - returning retval, retval has gimple type but is not - gimple value, force it into a SSA_NAME first. + 2018-03-08 Kyrylo Tkachov - 2016-02-08 Nicklas Bo Jensen + PR target/84748 + * config/aarch64/aarch64.md (*compare_cstore_insn): Mark pattern + as clobbering CC_REGNUM. - * doc/tree-ssa.texi (Preserving the virtual SSA form): Remove - outdated section. + 2018-03-08 Richard Biener - 2016-02-08 Jason Merrill + 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. - PR c++/69631 - * convert.c (convert_to_integer_1): Check dofold on truncation - distribution. - (convert_to_pointer_maybe_fold, convert_to_real_maybe_fold) - (convert_to_integer_maybe_fold, convert_to_complex_maybe_fold): - Rename from *_nofold. - * convert.h (convert_to_pointer_nofold, convert_to_integer_nofold) - (convert_to_real_nofold, convert_to_complex_nofold): New inlines. + 2018-03-08 Richard Biener - 2016-02-08 Bernd Schmidt + 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. - PR target/60410 - * tree.c (build_common_tree_nodes): Remove short_double argument. - All callers changed. - * tree.h (build_common_tree_nodes): Adjust declaration. - * doc/invoke.texi (-fshort-double): Remove documentation. - * config/mips/t-img-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, - MULTILIB_EXCEPTIONS): Remove -fshort-double variant. - * lto-wrapper.c (merge_and_complain, append_compiler_options) - (append_linker_options): Don't handle OPT_fshort_double. + 2018-03-08 David Malcolm - PR rtl-optimization/68730 - * lra-remat.c (insn_to_cand_activation): New static variable. - (lra_remat): Allocate and free it. - (create_cand): New arg activation. Initialize a field in - insn_to_cand_activation if it is nonnull. - (create_cands): Pass the activation insn to create_cand when making - a candidate involving an output reload. Reorganize code a little. - (do_remat): Keep track of active status of candidates in a separate - bitmap. + 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. - 2016-02-08 Richard Biener + 2018-03-08 Richard Biener - PR tree-optimization/69719 - * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): - Properly use absolute of the difference of the two offsets to - compare or adjust the segment length. + 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. - 2016-02-08 Richard Biener - Jeff Law + 2018-03-08 Martin Liska - PR target/68273 - * tree-ssanames.c (make_ssa_name_fn): Always use unqualified - types for anonymous SSA names. + PR gcov-profile/84735 + * doc/gcov.texi: Document usage of profile files. + * gcov-io.h: Document changes in the format. - 2016-02-08 Richard Biener + 2018-03-08 Alexandre Oliva - PR rtl-optimization/69274 - * ira.c (ira_setup_alts): Do not change recog_data.operand order. + 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. - 2016-02-08 Jeff Law + 2018-03-08 Jakub Jelinek - PR tree-optimization/65917 - * tree-ssa-dom.c (record_temporary_equivalences): Record both - equivalences from if (x == y) style conditionals. - (loop_depth_of_name): Remove. - (record_equality): Remove loop depth check. - * tree-ssa-scopedtables.h (const_and_copies): Refine comments. - (const_and_copies::record_const_or_copy_raw): New member function. - * tree-ssa-scopedtables.c - (const_and_copies::record_const_or_copy_raw): New, factored out of - (const_and_copies::record_const_or_copy): Call new member function. + 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 - 2016-02-05 Jeff Law + 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. - PR tree-optimization/68541 - * gimple-ssa-split-paths.c: Include tree-cfg.h and params.h. - (count_stmts_in_block): New function. - (poor_ifcvt_candidate_code): Likewise. - (is_feasible_trace): Add some heuristics to determine when path - splitting is profitable. - (find_block_to_duplicate_for_splitting_paths): Make sure the graph - is a diamond with a single exit. + 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. - 2016-02-05 Martin Sebor + 2018-03-02 Jakub Jelinek - PR c++/69662 - * doc/invoke.texi: Update -Wplacement-new to take an optional + * 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. - 2016-02-06 Richard Henderson + 2018-03-02 Jakub Jelinek - PR c/69643 - * tree.c (tree_nop_conversion_p): Do not strip casts into or - out of non-standard address spaces. + PR target/56540 + * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine + __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY. - 2016-02-05 Jakub Jelinek + PR target/56540 + * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine + __SIZEOF_{FPREG,FLOAT{80,128}}__ macros. - PR rtl-optimization/69691 - * lra-eliminations.c (move_plus_up): Don't add the addend twice. + * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED + instead of -1U in last predictors element's probability member. - 2016-02-05 Pat Haugen + 2018-03-02 Eric Botcazou - * config/rs6000/crypto.md (crypto_vpermxor_): Correct insn type. - * config/rs6000/rs6000.md (mov_hardfloat): Likewise. - (*ieee128_mfvsrd_64bit): Likewise. - (*ieee128_mfvsrd_32bit): Likewise. + PR ipa/83983 + * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both + arguments if they are comparable. - 2016-02-05 Ilya Enkovich + 2018-03-02 Richard Sandiford - PR target/69369 - Revert r232560: - 2016-01-19 Jan Hubicka + 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. - * cgraphunit.c (cgraph_node::reset): Clear thunk info and - instrumented_version. + 2018-03-02 Richard Sandiford - 2016-01-05 Jeremy Bennett + * 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. - * doc/invoke.texi (Optimize Options): In table of --param options - rename second occurrence of tracer-min-branch-ratio to - tracer-min-branch-probability, rename - tracer-min-branch-ratio-feedback to - tracer-min-branch-probability-feedback and clarify description, - rename sched-spec-state-edge-prob-cutoff to - sched-state-edge-prob-cutoff, rename selsched-max-insns-to-rename - to selsched-insns-to-rename, rename lto-minpartition to - lto-min-partition, delete reorder-blocks-duplicate and - reorder-blocks-duplicate-feedback. + 2018-03-02 Jakub Jelinek - 2016-02-05 Andreas Krebbel + 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. - * config/s390/s390.c (s390_register_info_set_ranges): Remove - superfluous loops. + 2018-03-02 Richard Biener - 2016-02-05 Dominik Vogt + 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. - * doc/extend.texi: S/390: Correct some typos. + 2018-03-01 Martin Liska - 2016-02-05 Andreas Krebbel + PR sanitizer/82484 + * sanopt.c (sanitize_rewrite_addressable_params): Do not handle + volatile arguments. - * config/s390/s390.c (s390_emit_call): Add missing 64 bit check. + 2018-03-01 Richard Biener - 2016-02-05 Andreas Krebbel + PR debug/84645 + * dwarf2out.c (gen_variable_die): Properly handle late VLA + type annotation with LTO when debug was disabled at compile-time. - PR target/69625 - * config/s390/s390.c (SAVE_SLOT_NONE, SAVE_SLOT_STACK): New defines. - (s390_register_info_gprtofpr): Use new macros above. - (s390_register_info_stdarg_fpr): Adjust max_fpr to better match - its name. - (s390_register_info_stdarg_gpr): Adjust max_gpr to better match - its name. Adjust restore and save gpr ranges. - (s390_register_info_set_ranges): New function. - (s390_register_info): Use new macros above. Call - s390_register_info_set_ranges. - (s390_optimize_register_info): Likewise. - (s390_hard_regno_rename_ok): Use new macros. - (s390_hard_regno_scratch_ok): Likewise. - (s390_emit_epilogue): Likewise. - (s390_can_use_return_insn): Likewise. - (s390_optimize_prologue): Likewise. - * config/s390/s390.md (GPR2_REGNUM, GPR6_REGNUM): New constants. + 2018-03-01 Matthew Fortune - 2016-02-05 Jakub Jelinek + * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect + XINT with INTVAL. + (mips_final_postscan_insn): Likewise. - PR bootstrap/69677 - * config/i386/i386.c (convert_scalars_to_vector): Readd stack - alignment fixes. - (ix86_option_override_internal): Disable TARGET_STV even for - -m{incoming,preferred}-stack-boundary=3. + 2018-03-01 Richard Sandiford - 2016-02-03 Trevor Saunders + 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. - * config.gcc: Mark deprecated rtems targets as obsolete. + 2018-03-01 Tom de Vries - 2016-02-04 Segher Boessenkool + 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. - PR rtl-optimization/64682 - PR rtl-optimization/69567 - * combine.c (distribute_notes) : Place the death note - before I2 only if the register is both used and set in I2. + 2018-02-28 David Edelsohn - 2016-02-04 DJ Delorie + * 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. - * config/msp430/msp430.c (msp430_start_function): Add function type. + 2018-02-28 Jakub Jelinek - 2016-02-04 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 fortran/69368 - * tree-dfa.c (get_ref_base_and_extent): Remove unreachable code. + 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. - 2016-02-04 Uros Bizjak + 2018-02-28 Eric Botcazou - PR rtl-optimization/69577 - Revert: - 2015-10-29 Richard Henderson + * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove + superfluous parentheses and trailing spaces. - PR target/68124 - PR rtl-opt/67609 - * config/i386/i386.c (ix86_cannot_change_mode_class): Tighten - sse check to the exact conditions of PR 67609. + 2018-02-28 Richard Biener - 2016-02-04 Michael Meissner + PR tree-optimization/84584 + * graphite-scop-detection.c (scop_detection::add_scop): Discard + SCoPs with fake exit edge. - PR target/69667 - * config/rs6000/rs6000.md (mov_64bit_dm): Use 'd' constraint - instead of 'ws', and 'wh' instead of 'wm' since TFmode/IFmode are - not allowed into the traditional Altivec registers. - (movtd_64bit_nodm): Likewise. - (mov_32bit, FMOVE128_FPR iterator): Likewise. + 2018-02-28 Martin Liska - 2016-02-04 David Malcolm + PR testsuite/84597 + * timevar.c (timer::print): Fix format to properly print 100% + values. - * config/aarch64/cortex-a57-fma-steering.c - (aarch64_register_fma_steering): Remove "static" from arguments - to register_pass. + 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 + * gcc/doc/invoke.texi (-Wmissing-attributes): New option. + * gcc/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. - 2016-02-04 Wilco Dijkstra + 2018-02-26 Richard Sandiford - PR target/69619 - * ccmp.c (expand_ccmp_expr_1): Avoid evaluating gs0/gs1 - twice when complex. + 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. - 2016-02-04 Mike Frysinger + 2018-02-22 Steve Ellcey - * doc/invoke.texi: Delete -mno-fma4. + PR target/83335 + * config/aarch64/aarch64.c (aarch64_print_address_internal): + Change gcc_assert call to output_operand_lossage. - 2016-02-04 Richard Sandiford + 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. - PR rtl-optimization/69577 - * reginfo.c (record_subregs_of_mode): Add a partial_def parameter. - (find_subregs_of_mode): Update accordingly. Iterate over partial - definitions. + 2018-02-21 Segher Boessenkool - 2016-02-04 Alan Lawrence - - * config/arm/arm-protos.h (neon_reinterpret): Remove. - * config/arm/arm.c (neon_reinterpret): Remove. - * config/arm/arm_neon_builtins.def (vreinterpretv8qi, vreinterpretv4hi, - vreinterpretv2si, vreinterpretv2sf, vreinterpretdi, vreinterpretv16qi, - vreinterpretv8hi, vreinterpretv4si, vreinterpretv4sf, vreinterpretv2di, - vreinterpretti): Remove. - * config/arm/neon.md (neon_vreinterpretv8qi, - neon_vreinterpretv4hi, neon_vreinterpretv2si, - neon_vreinterpretv2sf, neon_vreinterpretdi, - neon_vreinterpretti, neon_vreinterpretv16qi, - neon_vreinterpretv8hi, neon_vreinterpretv4si, - neon_vreinterpretv4sf, neon_vreinterpretv2di): Remove. - * config/arm/arm_neon.h (vreinterpret_p8_p16, vreinterpret_p8_f32, - vreinterpret_p8_p64, vreinterpret_p8_s64, vreinterpret_p8_u64, - vreinterpret_p8_s8, vreinterpret_p8_s16, vreinterpret_p8_s32, - vreinterpret_p8_u8, vreinterpret_p8_u16, vreinterpret_p8_u32, - vreinterpret_p16_p8, vreinterpret_p16_f32, vreinterpret_p16_p64, - vreinterpret_p16_s64, vreinterpret_p16_u64, vreinterpret_p16_s8, - vreinterpret_p16_s16, vreinterpret_p16_s32, vreinterpret_p16_u8, - vreinterpret_p16_u16, vreinterpret_p16_u32, vreinterpret_f32_p8, - vreinterpret_f32_p16, vreinterpret_f32_p64, vreinterpret_f32_s64, - vreinterpret_f32_u64, vreinterpret_f32_s8, vreinterpret_f32_s16, - vreinterpret_f32_s32, vreinterpret_f32_u8, vreinterpret_f32_u16, - vreinterpret_f32_u32, vreinterpret_p64_p8, vreinterpret_p64_p16, - vreinterpret_p64_f32, vreinterpret_p64_s64, vreinterpret_p64_u64, - vreinterpret_p64_s8, vreinterpret_p64_s16, vreinterpret_p64_s32, - vreinterpret_p64_u8, vreinterpret_p64_u16, vreinterpret_p64_u32, - vreinterpret_s64_p8, vreinterpret_s64_p16, vreinterpret_s64_f32, - vreinterpret_s64_p64, vreinterpret_s64_u64, vreinterpret_s64_s8, - vreinterpret_s64_s16, vreinterpret_s64_s32, vreinterpret_s64_u8, - vreinterpret_s64_u16, vreinterpret_s64_u32, vreinterpret_u64_p8, - vreinterpret_u64_p16, vreinterpret_u64_f32, vreinterpret_u64_p64, - vreinterpret_u64_s64, vreinterpret_u64_s8, vreinterpret_u64_s16, - vreinterpret_u64_s32, vreinterpret_u64_u8, vreinterpret_u64_u16, - vreinterpret_u64_u32, vreinterpret_s8_p8, vreinterpret_s8_p16, - vreinterpret_s8_f32, vreinterpret_s8_p64, vreinterpret_s8_s64, - vreinterpret_s8_u64, vreinterpret_s8_s16, vreinterpret_s8_s32, - vreinterpret_s8_u8, vreinterpret_s8_u16, vreinterpret_s8_u32, - vreinterpret_s16_p8, vreinterpret_s16_p16, vreinterpret_s16_f32, - vreinterpret_s16_p64, vreinterpret_s16_s64, vreinterpret_s16_u64, - vreinterpret_s16_s8, vreinterpret_s16_s32, vreinterpret_s16_u8, - vreinterpret_s16_u16, vreinterpret_s16_u32, vreinterpret_s32_p8, - vreinterpret_s32_p16, vreinterpret_s32_f32, vreinterpret_s32_p64, - vreinterpret_s32_s64, vreinterpret_s32_u64, vreinterpret_s32_s8, - vreinterpret_s32_s16, vreinterpret_s32_u8, vreinterpret_s32_u16, - vreinterpret_s32_u32, vreinterpret_u8_p8, vreinterpret_u8_p16, - vreinterpret_u8_f32, vreinterpret_u8_p64, vreinterpret_u8_s64, - vreinterpret_u8_u64, vreinterpret_u8_s8, vreinterpret_u8_s16, - vreinterpret_u8_s32, vreinterpret_u8_u16, vreinterpret_u8_u32, - vreinterpret_u16_p8, vreinterpret_u16_p16, vreinterpret_u16_f32, - vreinterpret_u16_p64, vreinterpret_u16_s64, vreinterpret_u16_u64, - vreinterpret_u16_s8, vreinterpret_u16_s16, vreinterpret_u16_s32, - vreinterpret_u16_u8, vreinterpret_u16_u32, vreinterpret_u32_p8, - vreinterpret_u32_p16, vreinterpret_u32_f32, vreinterpret_u32_p64, - vreinterpret_u32_s64, vreinterpret_u32_u64, vreinterpret_u32_s8, - vreinterpret_u32_s16, vreinterpret_u32_s32, vreinterpret_u32_u8, - vreinterpret_u32_u16, vreinterpretq_p8_p16, vreinterpretq_p8_f32, - vreinterpretq_p8_p64, vreinterpretq_p8_p128, vreinterpretq_p8_s64, - vreinterpretq_p8_u64, vreinterpretq_p8_s8, vreinterpretq_p8_s16, - vreinterpretq_p8_s32, vreinterpretq_p8_u8, vreinterpretq_p8_u16, - vreinterpretq_p8_u32, vreinterpretq_p16_p8, vreinterpretq_p16_f32, - vreinterpretq_p16_p64, vreinterpretq_p16_p128, vreinterpretq_p16_s64, - vreinterpretq_p16_u64, vreinterpretq_p16_s8, vreinterpretq_p16_s16, - vreinterpretq_p16_s32, vreinterpretq_p16_u8, vreinterpretq_p16_u16, - vreinterpretq_p16_u32, vreinterpretq_f32_p8, vreinterpretq_f32_p16, - vreinterpretq_f32_p64, vreinterpretq_f32_p128, vreinterpretq_f32_s64, - vreinterpretq_f32_u64, vreinterpretq_f32_s8, vreinterpretq_f32_s16, - vreinterpretq_f32_s32, vreinterpretq_f32_u8, vreinterpretq_f32_u16, - vreinterpretq_f32_u32, vreinterpretq_p64_p8, vreinterpretq_p64_p16, - vreinterpretq_p64_f32, vreinterpretq_p64_p128, vreinterpretq_p64_s64, - vreinterpretq_p64_u64, vreinterpretq_p64_s8, vreinterpretq_p64_s16, - vreinterpretq_p64_s32, vreinterpretq_p64_u8, vreinterpretq_p64_u16, - vreinterpretq_p64_u32, vreinterpretq_p128_p8, vreinterpretq_p128_p16, - vreinterpretq_p128_f32, vreinterpretq_p128_p64, vreinterpretq_p128_s64, - vreinterpretq_p128_u64, vreinterpretq_p128_s8, vreinterpretq_p128_s16, - vreinterpretq_p128_s32, vreinterpretq_p128_u8, vreinterpretq_p128_u16, - vreinterpretq_p128_u32, vreinterpretq_s64_p8, vreinterpretq_s64_p16, - vreinterpretq_s64_f32, vreinterpretq_s64_p64, vreinterpretq_s64_p128, - vreinterpretq_s64_u64, vreinterpretq_s64_s8, vreinterpretq_s64_s16, - vreinterpretq_s64_s32, vreinterpretq_s64_u8, vreinterpretq_s64_u16, - vreinterpretq_s64_u32, vreinterpretq_u64_p8, vreinterpretq_u64_p16, - vreinterpretq_u64_f32, vreinterpretq_u64_p64, vreinterpretq_u64_p128, - vreinterpretq_u64_s64, vreinterpretq_u64_s8, vreinterpretq_u64_s16, - vreinterpretq_u64_s32, vreinterpretq_u64_u8, vreinterpretq_u64_u16, - vreinterpretq_u64_u32, vreinterpretq_s8_p8, vreinterpretq_s8_p16, - vreinterpretq_s8_f32, vreinterpretq_s8_p64, vreinterpretq_s8_p128, - vreinterpretq_s8_s64, vreinterpretq_s8_u64, vreinterpretq_s8_s16, - vreinterpretq_s8_s32, vreinterpretq_s8_u8, vreinterpretq_s8_u16, - vreinterpretq_s8_u32, vreinterpretq_s16_p8, vreinterpretq_s16_p16, - vreinterpretq_s16_f32, vreinterpretq_s16_p64, vreinterpretq_s16_p128, - vreinterpretq_s16_s64, vreinterpretq_s16_u64, vreinterpretq_s16_s8, - vreinterpretq_s16_s32, vreinterpretq_s16_u8, vreinterpretq_s16_u16, - vreinterpretq_s16_u32, vreinterpretq_s32_p8, vreinterpretq_s32_p16, - vreinterpretq_s32_f16, vreinterpretq_s32_f32, vreinterpretq_s32_p64, - vreinterpretq_s32_p128, vreinterpretq_s32_s64, vreinterpretq_s32_u64, - vreinterpretq_s32_s8, vreinterpretq_s32_s16, vreinterpretq_s32_u8, - vreinterpretq_s32_u16, vreinterpretq_s32_u32, vreinterpretq_u8_p8, - vreinterpretq_u8_p16, vreinterpretq_u8_f32, vreinterpretq_u8_p64, - vreinterpretq_u8_p128, vreinterpretq_u8_s64, vreinterpretq_u8_u64, - vreinterpretq_u8_s8, vreinterpretq_u8_s16, vreinterpretq_u8_s32, - vreinterpretq_u8_u16, vreinterpretq_u8_u32, vreinterpretq_u16_p8, - vreinterpretq_u16_p16, vreinterpretq_u16_f32, vreinterpretq_u16_p64, - vreinterpretq_u16_p128, vreinterpretq_u16_s64, vreinterpretq_u16_u64, - vreinterpretq_u16_s8, vreinterpretq_u16_s16, vreinterpretq_u16_s32, - vreinterpretq_u16_u8, vreinterpretq_u16_u32, vreinterpretq_u32_p8, - vreinterpretq_u32_p16, vreinterpretq_u32_f32, vreinterpretq_u32_p64, - vreinterpretq_u32_p128, vreinterpretq_u32_s64, vreinterpretq_u32_u64, - vreinterpretq_u32_s8, vreinterpretq_u32_s16, vreinterpretq_u32_s32, - vreinterpretq_u32_u8, vreinterpretq_u32_u16): Rewrite using casts. - - 2016-02-04 Martin Liska - - PR sanitizer/69276 - * asan.c (has_stmt_been_instrumented_p): Instrument gimple calls - that are gimple_store_p. - (maybe_instrument_call): Likewise. - - 2016-02-04 Bin Cheng - - * config/aarch64/aarch64.c (aarch64_legitimize_address): Force - register scaling out of memory reference and comment why. - - 2016-02-04 Kyrylo Tkachov - - PR target/65932 - PR target/67714 - * cse.c (cse_insn): Pass NULL to fold_rtx when initially - folding the source of a SET. - - 2016-02-04 Kyrylo Tkachov - - PR target/65932 - PR target/67714 - * config/arm/arm.c (arm_new_rtx_costs, MULT case): Properly extract - the operands of the SIGN_EXTENDs from a SMUL[TB][TB] rtx. - - 2016-02-04 Jim Wilson - - PR target/65932 - PR target/67714 - * config/arm/arm.h (PROMOTE_MODE): Don't set UNSIGNEDP for QImode and - HImode. - - 2016-02-04 Christian Bruel - - * config/arm/arm-c.c (arm_reset_previous_fndecl): Style fix and typo. - * config/arm/arm.c (arm_set_current_function): Likewise. - - 2016-02-04 Jakub Jelinek - Ilya Enkovich - H.J. Lu - - PR target/69454 - * config/i386/i386.c (convert_scalars_to_vector): Remove - stack alignment fixes. - (ix86_option_override_internal): Disable TARGET_STV if stack - might not be aligned enough. - (ix86_minimum_alignment): Assert that TARGET_STV is false. - - 2016-02-04 Victoria Stepanyan - - * config/i386/x86-tune.def: Disable default prefetching - for -march=znver1. - - 2016-02-03 Michael Meissner - Vladimir Makarov - - PR target/69461 - * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Fix thinko - in validating fused toc addresses. - - 2016-02-03 Jakub Jelinek - - PR c/69627 - * diagnostic-show-locus.c (layout::get_state_at_point): Don't read - range->m_caret fields if range->m_show_caret_p is false. + * 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. - PR target/69644 - * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): - Force oldval into register if it does not satisfy reg_or_short_operand - predicate. Fix up formatting. + 2018-02-21 Jason Merrill - 2016-02-03 Vladimir Makarov - Alexandre Oliva + PR c++/84314 - ICE with templates and fastcall attribute. + * attribs.c (build_type_attribute_qual_variant): Remove assert. - PR target/69461 - * lra-constraints.c (simplify_operand_subreg): Check additionally - address validity after potential reloading. - (process_address_1): Check insns validity. In case of failure do - nothing. + 2018-02-21 Jan Hubicka - 2016-02-03 Kirill Yukhin + * ipa-cp.c (determine_versionability): Fix comment typos. - PR target/69118 - * config/i386/sse.md (define_insn "avx512f_maskcmp3"): - Fix target. + 2018-02-21 Jan Hubicka - 2016-02-02 Jakub Jelinek + PR c/84229 + * ipa-cp.c (determine_versionability): Do not version functions caling + va_arg_pack. - * wide-int.cc (canonize_uhwi): New function. - (wi::divmod_internal): Use it. + 2018-02-21 Martin Liska - 2016-02-02 James Norris + 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. - * gimplify.c (omp_notice_variable): Add usage check. + 2018-02-21 Martin Liska - 2016-02-02 Alexander Monakov + 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. - * config/nvptx/nvptx.c (nvptx_print_operand): Treat LEU, GEU, LTU, GTU - like LE, GE, LT, GT when emitting relational operator. + 2018-02-21 Jakub Jelinek + Martin Sebor - 2016-02-02 Wilco Dijkstra + 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. - * ira-costs.c (find_costs_and_classes): Add extra argument. - * target.def (ira_change_pseudo_allocno_class): Add parameter. - * targhooks.h (ira_change_pseudo_allocno_class): Likewise. - * targhooks.c (ira_change_pseudo_allocno_class): Likewise. - * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class) - Add best_class parameter, and return it if not ALL_REGS. - * config/mips/mips.c (mips_ira_change_pseudo_allocno_class): - Add parameter. - * doc/tm.texi (TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): - Update target hook. + PR c++/84444 + * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t) + is ADDR_EXPR. - 2016-02-02 Wilco Dijkstra + 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. - * config/aarch64/aarch64.c - (TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): New define. - (aarch64_ira_change_pseudo_allocno_class): New function. + 2018-02-19 Martin Liska - 2016-02-02 Uros Bizjak + PR sanitizer/82183 + * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0. - PR target/67032 - * config/i386/i386.c (geode_cost): Increase cost of MMX and SSE moves. + 2018-02-19 Martin Liska + Richard Sandiford - 2016-02-02 Senthil Kumar Selvaraj + PR tree-optimization/82491 + * gimple-fold.c (get_base_constructor): Make earlier bail out + to prevent ubsan. - * config/avr/avr.c (avr_option_override): Set - PARAM_ALLOW_STORE_DATA_RACES to 1. + 2018-02-19 Carl Love - 2016-02-02 Richard Biener + * 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. - PR tree-optimization/69595 - * match.pd: Add range test simplifications to true/false. + 2018-02-19 Sebastian Perta - 2016-02-02 Thomas Schwinge + * config/rl78/rl78.md (movdf): New define expand. - * omp-builtins.def (BUILT_IN_GOACC_HOST_DATA): Remove. - * omp-low.c (expand_omp_target): Use BUILT_IN_GOACC_DATA_START - instead. + 2018-02-19 Martin Liska - 2016-02-02 Richard Biener - - PR tree-optimization/69606 - * tree-ssa-math-opts.c (bswap_replace): Clear flow sensitive - info on the result before moving a stmt. - - 2016-02-02 Yuri Rumyantsev - - PR middle-end/68542 - * config/i386/i386.c (ix86_expand_branch): Add support for conditional - branch with vector comparison. - * config/i386/sse.md (VI48_AVX): New mode iterator. - (define_expand "cbranch4): Add support for conditional branch - with vector comparison. - * tree-vect-loop.c (optimize_mask_stores): New function. - * tree-vect-stmts.c (vectorizable_mask_load_store): Initialize - has_mask_store field of vect_info. - * tree-vectorizer.c (vectorize_loops): Invoke optimaze_mask_stores for - vectorized loops having masked stores after vec_info destroy. - * tree-vectorizer.h (loop_vec_info): Add new has_mask_store field and - correspondent macros. - (optimize_mask_stores): Add prototype. + PR other/80589 + * doc/invoke.texi: Fix typo. + * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise. - 2016-02-02 Alan Modra + 2018-02-18 Segher Boessenkool - PR target/69548 - * config/rs6000/predicates.md (quad_int_reg_operand): Don't - allow subregs. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't + handle rs6000_single_float and rs6000_double_float specially for + e500 family CPUs. - 2016-02-02 Alan Modra + 2018-02-16 Jeff Law - PR target/68662 - * config/rs6000/rs6000.c (need_toc_init): New var, set it - whenever toc_label_name used. - (rs6000_file_start): Don't set up toc section here, - (rs6000_output_function_epilogue): do so here instead, - (rs6000_xcoff_file_start): and here. - * config/rs6000/rs6000.md (load_toc_aix_si): Set need_toc_init. - (load_toc_aix_di): Likewise. + * config/rx/rx.c (add_pop_cfi_notes): New function.; + (pop_regs): Use it. - 2016-02-01 Jakub Jelinek + 2018-02-16 Jakub Jelinek - PR rtl-optimization/69592 - * rtlanal.c (nonzero_bits_binary_arith_p): New inline function. - (cached_nonzero_bits): Use it instead of ARITHMETIC_P. - (num_sign_bit_copies_binary_arith_p): New inline function. - (cached_num_sign_bit_copies): Use it instead of ARITHMETIC_P. + PR ipa/84425 + * ipa-inline.c (inline_small_functions): Fix a typo. - 2016-02-01 Jeff Law + 2018-02-16 Nathan Sidwell - PR tree-optimization/69580 - * params.def (FSM_MAXIMUM_PHI_ARGUMENTS): New param. - * tree-ssa-threadbackward.c - (fsm_find_control_statement_thread_paths): Do not try to walk - through large PHI nodes. + * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'. - 2016-02-01 Jakub Jelinek + 2018-02-16 Carl Love - * ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Return false - when count is incremented above limit, don't analyze further - insns afterwards. + * 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. - * omp-low.c (oacc_parse_default_dims): Avoid - -Wsign-compare warning, make sure value fits into int - rather than just unsigned int. + 2018-02-16 Vladimir Makarov - 2016-02-01 Bin Cheng - - PR tree-optimization/67921 - * fold-const.c (split_tree): New parameters. Convert pointer - type variable part to proper type before negating. - (fold_binary_loc): Pass new arguments to split_tree. - - 2016-02-01 Nathan Sidwell - - * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): New. - (nvptx_goacc_validate_dims): Extend to handle global defaults. - * target.def (OACC_VALIDATE_DIMS): Extend documentation. - * doc/tm.texti: Rebuilt. - * doc/invoke.texi (fopenacc-dim): Document. - * lto-wrapper.c (merge_and_complain): Add OPT_fopenacc_dim_ case. - (append_compiler_options): Likewise. - * omp-low.c (oacc_default_dims, oacc_min_dims): New. - (oacc_parse_default_dims): New. - (oacc_validate_dims): Add USED arg. Select non-unity default when - possible. - (oacc_loop_fixed_partitions): Return mask of used partitions. - (oacc_loop_auto_partitions): Emit dump info. - (oacc_loop_partition): Return mask of used partitions. - (execute_oacc_device_lower): Parse default dimension arg. Adjust - loop partitioning and validation calls. - - 2016-02-01 Richard Biener - - PR middle-end/69556 - * match.pd: Guard (C1/X)*C2 -> (C1*C2)/X with single_use. - - 2016-02-01 Richard Biener - - PR tree-optimization/69574 - * tree-chrec.c (hide_evolution_in_other_loops_than_loop): Instead - of asserting return chrec_dont_know. - - 2016-02-01 Martin Liska - - * mem-stats-traits.h: Add copyright header. - * mem-stats.h: Likewise. - - 2016-02-01 Richard Biener - - PR tree-optimization/69579 - * tree-ssa-loop-ivcanon.c (propagate_constants_for_unrolling): - Do not propagate through abnormal PHI results. - - 2016-02-01 Eric Botcazou - - * postreload.c (reload_cse_simplify): Remove dead code. - - 2016-02-01 Jakub Jelinek - - PR rtl-optimization/69570 - * ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Return true only - if there is more than one set, not if there is a single set. - - 2016-02-01 Richard Henderson - - PR rtl-opt/69535 - * combine.c (make_compound_operation): When looking through a - subreg, make sure to re-extend to the width of the outer mode. - - 2016-01-30 Jakub Jelinek - - PR tree-optimization/69546 - * wide-int.cc (wi::divmod_internal): For unsigned division - where both operands fit into uhwi, if o1 is 1 and o0 has - msb set, if divident_prec is larger than bits per hwi, - clear another quotient word and return 2 instead of 1. - Similarly for remainder with msb in HWI set, if dividend_prec - is larger than bits per hwi. + PR rtl-optimization/70023 + * lra-constraints.c (inherit_in_ebb): Take hard reg mode of + src_regno into account. - 2016-01-29 Martin Jambor + 2018-02-16 Carl Love - * hsa-gen.c (get_memory_order_name): Mask with MEMMODEL_BASE_MASK. - Use short lowercase names. - (get_memory_order): Mask with MEMMODEL_BASE_MASK. Support - MEMMODEL_CONSUME with acquire semantics and MEMMODEL_SEQ_CST with - acq_rel one. Protect warning agains segfaults if - get_memory_order_name returns NULL. - (gen_hsa_ternary_atomic_for_builtin): Support with MEMMODEL_SEQ_CST - with release semantics. Do not warn if get_memory_order already did. - (gen_hsa_insns_for_call): Support with MEMMODEL_SEQ_CST with acquire - semantics. Fix check for relaxed or acquire semantics. Do not warn - if get_memory_order already did. + * 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. - 2016-01-29 Sebastian Pop + 2018-02-16 Carl Love - * doc/install.texi: Document that isl-0.16 is supported. + * 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. - 2016-01-29 Vladimir Makarov + 2018-02-16 Nathan Sidwell - PR target/69299 - * config/i386/constraints.md (Bm): Describe as special memory - constraint. - * doc/md.texi (DEFINE_SPECIAL_MEMORY_CONSTRAINT): Describe it. - * genoutput.c (main): Process DEFINE_SPECIAL_MEMORY_CONSTRAINT. - * genpreds.c (struct constraint_data): Add is_special_memory. - (have_special_memory_constraints, special_memory_start): New - static vars. - (special_memory_end): Ditto. - (add_constraint): Add new arg is_special_memory. Add code to - process its true value. Update have_special_memory_constraints. - (process_define_constraint): Pass the new arg. - (process_define_register_constraint): Ditto. - (choose_enum_order): Process special memory. - (write_tm_preds_h): Generate enum const CT_SPECIAL_MEMORY and - function insn_extra_special_memory_constraint. - (main): Process DEFINE_SPECIAL_MEMORY_CONSTRAINT. - * gensupport.c (process_rtx): Process - DEFINE_SPECIAL_MEMORY_CONSTRAINT. - * ira-costs.c (record_reg_classes): Process CT_SPECIAL_MEMORY. - * ira-lives.c (single_reg_class): Use - insn_extra_special_memory_constraint. - * ira.c (ira_setup_alts): Process CT_SPECIAL_MEMORY. - * lra-constraints.c (process_alt_operands): Ditto. - (curr_insn_transform): Use insn_extra_special_memory_constraint. - * recog.c (asm_operand_ok, preprocess_constraints): Process - CT_SPECIAL_MEMORY. - * reload.c (find_reloads): Ditto. - * rtl.def (DEFINE_SPECIFAL_MEMORY_CONSTRAINT): New. - * stmt.c (parse_input_constraint): Use - insn_extra_special_memory_constraint. + * doc/extend.texi (Backwards Compatibility): Mention friend + injection. Note for-scope is deprecated. + * doc/invoke.texi (-ffriend-injection): Deprecate. - 2016-01-29 H.J. Lu + 2018-02-16 Segher Boessenkool - PR target/69530 - * lra-splill.c (lra_final_code_change): Revert r229087 by - removing all sub-registers. + * 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). - 2016-01-29 Steve Ellcey + 2018-02-16 Oleg Endo - PR target/65604 - * config/mips/mips.c (mips_output_division): Check flag_delayed_branch. + PR target/83831 + * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand + to QImode. - 2016-01-29 Jakub Jelinek + 2018-02-16 Richard Biener - PR target/69551 - * config/i386/i386.c (ix86_expand_vector_set) : For - SSE1, copy target into the temporary reg first before recursing - on it. - - 2016-01-29 H.J. Lu - - * config/i386/sse.md (sse2_cvtps2pd): Replace vBm - with vm. - - 2016-01-29 Jonathan Wakely - - * ginclude/stdarg.h: Test __cplusplus instead of - __GXX_EXPERIMENTAL_CXX0X__. - - 2016-01-29 Richard Biener - - PR tree-optimization/69547 - * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): - Do not mark clobbers necessary. - (mark_all_reaching_defs_necessary_1): Likewise. - - 2016-01-29 Dominik Vogt - - * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Format - declaration name with %qs and print it in both error messages. - Also fix indentation. - - 2016-01-29 Dominik Vogt - - PR other/69006 - * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Remove - trailing blank line from error message. - - 2016-01-29 Jonathan Wakely - - PR c++/69462 - * ginclude/float.h: Also provide FLT_EVAL_METHOD and DECIMAL_DIG - for C++-11. - - 2016-01-29 Richard Biener - - PR middle-end/69537 - * match.pd: Allow all integral types when simplifying a - widening or sign-changing conversion. - - 2016-01-28 Sebastian Pop - - * graphite-isl-ast-to-gimple.c (get_rename_from_scev): Revert assert - back to setting codegen_error to fail codegen. - - 2016-01-28 Uros Bizjak - - PR target/69459 - * config/i386/constraints.md (C): Only accept constant zero operand. - (BC): New constraint. - * config/i386/sse.md (*mov_internal): Use BC constraint - instead of C constraint. - * doc/md.texi (Machine Constraints): Update description - of C constraint. - - 2016-01-28 Steve Ellcey - - PR target/68400 - * config/mips/mips.c (and_operands_ok): Add MIPS16 check. + 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. - 2016-01-28 Jakub Jelinek + 2018-02-16 Richard Biener - PR middle-end/69542 - * lra-remat.c (calculate_local_reg_remat_bb_data): Only consider - non-debug insns. + 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. - 2016-01-28 Pat Haugen + 2018-02-16 Martin Liska - * config/rs6000/rs6000.c (output_cbranch): Don't statically predict - branches if using guessed profile. + PR sanitizer/84307 + * internal-fn.def (ASAN_CHECK): Set proper flags. + (ASAN_MARK): Likewise. - 2016-01-28 H.J. Lu + 2018-02-16 Julia Koval - * graphite-optimize-isl.c (optimize_isl): Fix dump. + * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB + from PTA_CANNONLAKE. - 2016-01-28 Richard Henderson + 2018-02-16 Jakub Jelinek - PR target/69305 - * config/aarch64/aarch64-modes.def (CC_Cmode): New - * config/aarch64/aarch64-protos.h: Update. - * config/aarch64/aarch64.c (aarch64_zero_extend_const_eq): New. - (aarch64_select_cc_mode): Add check for use of CC_Cmode. - (aarch64_get_condition_code_1): Handle CC_Cmode. - * config/aarch64/aarch64.md (addti3): Use adddi3_compareC. - (*add3_compareC_cconly_imm): New. - (*add3_compareC_cconly): New. - (*add3_compareC_imm): New. - (add3_compareC): New. - (add3_carryin, *addsi3_carryin_uxtw): Sort compare operand - to be first. Use aarch64_carry_operation. - (*add3_carryin_alt1, *addsi3_carryin_alt1_uxtw): Remove. - (*add3_carryin_alt2, *addsi3_carryin_alt2_uxtw): Remove. - (*add3_carryin_alt3, *addsi3_carryin_alt3_uxtw): Remove. - (subti3): Use subdi3_compare1. - (*sub3_compare0): Rename from sub3_compare0. - (sub3_compare1): New. - (*sub3_carryin0, *subsi3_carryin_uxtw): New. - (*sub3_carryin): Use aarch64_borrow_operation. - (*subsi3_carryin_uxtw): Likewise. - (*ngc, *ngcsi_uxtw): Likewise. - (*sub3_carryin_alt, *subsi3_carryin_alt_uxtw): New. - * config/aarch64/iterators.md (DWI): New. - * config/aarch64/predicates.md (aarch64_carry_operation): New. - (aarch64_borrow_operation): New. + 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. - 2016-01-28 Abderrazek Zaafrani + 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. - * graphite-optimize-isl.c (optimize_isl): Print a different debug - message when isl does not return a valid schedule. + 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. - 2016-01-28 Sebastian Pop + 2018-02-16 Eric Botcazou - * graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple): - Remove comments from class declarations: they are already in the code - close by the defs. + PR rtl-optimization/81443 + * rtlanal.c (num_sign_bit_copies1) : Do not propagate results + from inner REGs to paradoxical SUBREGs. - 2016-01-28 Sebastian Pop + 2018-02-16 Richard Biener - * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Call - codegen_error_p. - (ternary_op_to_tree): Same. - (unary_op_to_tree): Same. - (nary_op_to_tree): Same. - (gcc_expression_from_isl_expr_op): Same. - (gcc_expression_from_isl_expression): Same. - (graphite_create_new_loop): Same. - (graphite_create_new_loop_guard): Same. - (build_iv_mapping): Same. - (graphite_create_new_guard): Same. - (translate_isl_ast_to_gimple::copy_loop_phi_nodes): Same. - (translate_isl_ast_to_gimple::translate_pending_phi_nodes): Same. + 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. - 2016-01-28 Sebastian Pop + 2018-02-16 Richard Biener - * graphite-isl-ast-to-gimple.c (get_rename_from_scev): Assert - instead of setting codegen_error to fail codegen. + PR tree-optimization/84190 + * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch + volatile accesses if the decl isn't volatile. - 2016-01-28 Jason Merrill + 2018-02-15 Jason Merrill - * tree.h (BINFO_FLAG_0): Rename from BINFO_MARKED. + 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. - 2016-01-28 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_if_then_else_costs): - Remove CONST_INT_P check in CCMP cost calculation. - - 2016-01-28 Wilco Dijkstra - - * config/aarch64/aarch64.c (generic_vector_cost): - Set vec_permute_cost. - (cortexa57_vector_cost): Likewise. - (exynosm1_vector_cost): Likewise. - (xgene1_vector_cost): Likewise. - (aarch64_builtin_vectorization_cost): Use vec_permute_cost. - * config/aarch64/aarch64-protos.h (cpu_vector_cost): - Add vec_permute_cost entry. + 2018-02-15 Jakub Jelinek - 2016-01-28 Wilco Dijkstra - - * config/aarch64/aarch64.md (ccmp): Disassemble - immediate as %1. - (add3_compare0): Likewise. - (addsi3_compare0_uxtw): Likewise. - (add3nr_compare0): Likewise. - (compare_neg): Likewise. - (3): Likewise. - - 2016-01-28 Ilya Enkovich - - * tree-vect-stmts.c (vectorizable_comparison): Add - NULL check for vectype. - - 2016-01-28 Richard Biener - - PR tree-optimization/69466 - * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): - Account for PHIs we couldn't duplicate. - - 2016-01-28 Martin Liska - - PR pch/68758 - * ggc-common.c (gt_pch_save): Use ENABLE_VALGRIND_ANNOTATIONS macro - instead of ENABLE_VALGRIND_CHECKING. - - 2016-01-27 Richard Henderson - - PR rtl-opt/69447 - * lra-remat.c (subreg_regs): New. - (dump_candidates_and_remat_bb_data): Dump it. - (operand_to_remat): Reject if operand in subreg_regs. - (set_bb_regs): Collect subreg_regs. - (lra_remat): Init and free subreg_regs. Compute - calculate_local_reg_remat_bb_data before create_cands. + 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. - 2016-01-27 H.J. Lu + PR tree-optimization/84334 + * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is + also a CONSTANT_CLASS_P, punt. - PR target/68986 - * config/i386/i386.c (ix86_update_stack_boundary): Don't - change stack_alignment_needed for __tls_get_addr call. + 2018-02-14 Jim Wilson - 2016-01-27 Segher Boessenkool + * 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. - * config/rs6000/rs6000.c (print_operand): Rollback 's' removal. + 2018-02-14 Indu Bhagat - 2016-01-27 Jeff Law + * doc/invoke.texi: Correct -Wformat-overflow code sample. - PR tree-optimization/68398 - PR tree-optimization/69196 - * params.def (PARAM_FSM_SCALE_PATH_STMTS): New parameter. - (PARAM_FSM_SCALE_PATH_BLOCKS): Likewise. - * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): - Only count PHIs in the last block in the path. The others will - const/copy propagate away. Add heuristic to allow more irreducible - subloops to be created when it is likely profitable to do so. + 2018-02-14 Martin Sebor - * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): - Fix typo in comment. Use gsi_after_labels and remove the GIMPLE_LABEL - check from within the loop. Use gsi_next_nondebug rather than gsi_next. + 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. - 2016-01-27 Jakub Jelinek + 2018-02-14 Martin Sebor - PR lto/69254 - * sanitizer.def: Add BEGIN_SANITIZER_BUILTINS and - END_SANITIZER_BUILTINS markers using DEF_BUILTIN_STUB. - * asan.c (DEF_BUILTIN_STUB): Temporarily define. - * tree-streamer-in.c: Include asan.h. - (streamer_get_builtin_tree): For builtins in sanitizer - range call initialize_sanitizer_builtins and retry. + PR c/84108 + * attribs.c (diag_attr_exclusions): Consider the exclusion(s) + that correspond to the kind of a declaration. - 2016-01-27 Ian Lance Taylor + 2018-02-14 John David Anglin - * common.opt (fkeep-gc-roots-live): New undocumented option. - * tree-ssa-loop-ivopts.c (add_candidate_1): If - -fkeep-gc-roots-live, skip pointers. - (add_iv_candidate_for_biv): Handle add_candidate_1 returning - NULL. + PR target/83984 + * config/pa/pa.md: Load address of PIC label using the linkage table + if the label is nonlocal. - 2016-01-27 Uros Bizjak + 2018-02-14 Kelvin Nilsen - PR target/69512 - * config/i386/i386.md (*zext_doubleword_and): New pattern. - (*zext_doubleword): Disable for TARGET_ZERO_EXTEND_WITH_AND. + * 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. - 2016-01-27 Thomas Klausner + 2018-02-14 Igor Tsimbalist - PR target/68380 - * configure.ac: NetBSD provides SSP in its C library. - * configure: Updated. + 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. - 2016-01-27 Richard Biener + 2018-02-14 Richard Sandiford - PR tree-optimization/69166 - * tree-vect-loop.c (vect_is_simple_reduction): Always check - reduction code for commutativity / associativity. + PR tree-optimization/84357 + * tree-data-ref.c (object_address_invariant_in_loop_p): Check + operand 1 of an ARRAY_REF too. - 2016-01-27 Martin Jambor + 2018-02-14 Oleg Endo - PR tree-optimization/69355 - * tree-sra.c (analyze_access_subtree): Correct hole detection when - total_scalarization fails. + 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. - 2016-01-27 David Edelsohn + 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 - * config/rs6000/driver-rs6000.c (detect_processor_aix): Add - power9. + 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. - 2016-01-27 Christian Bruel + 2018-02-09 Sebastian Perta - PR target/69245 - * config/arm/arm-c.c (arm_pragma_target_parse): Add comments. - Move arm_reset_previous_fndecl and set_target_option_current_node in - the conditional part. Call save_restore_target_globals. - * config/arm/arm.c (arm_set_current_function): - Refactor to better support #pragma target and attribute mix. - Call save_restore_target_globals. - * config/arm/arm-protos.h (save_restore_target_globals): New function. + * 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. - 2016-01-27 Martin Liska + 2018-02-09 Pierre-Marie de Rodat - * hsa.c (hsa_summary_t::link_functions): Create IPA_REF_ADDR - reference for an HSA kernel and its host function. + 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. - 2016-01-27 Jakub Jelinek + 2018-02-09 Eric Botcazou - PR tree-optimization/69399 - * wide-int.h (wi::lrshift): For larger precisions, only - use fast path if shift is known to be < HOST_BITS_PER_WIDE_INT. + * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison + instead of a libcall for UNORDERED. - 2016-01-27 Claudiu Zissulescu + 2018-02-09 Tamar Christina - * config/arc/predicates.md (proper_comparison_operator): Reject - constant-constant comparison. + 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. - 2016-01-26 Tom de Vries + 2018-02-09 Andreas Krebbel - PR tree-optimization/69110 - * tree-data-ref.c (initialize_data_dependence_relation): Handle - DR_NUM_DIMENSIONS == 0. + PR target/PR84295 + * config/s390/s390.c (s390_set_current_function): Invoke + s390_indirect_branch_settings also if fndecl didn't change. - 2016-01-26 Abderrazek Zaafrani - Sebastian Pop + 2018-02-09 Alexandre Oliva - * graphite-isl-ast-to-gimple.c (ternary_op_to_tree): Handle - isl_ast_op_cond and isl_ast_op_select. - (gcc_expression_from_isl_expr_op): Same. + * config/rs6000/rs6000.md (blockage): Set length to zero. - 2016-01-26 Jason Merrill + 2018-02-09 Eric Botcazou - PR c++/68782 - * tree.c (recompute_constructor_flags): Split out from - build_constructor. - (verify_constructor_flags): New. - * tree.h: Declare them. + * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion. - 2016-01-26 Iain Buclaw + 2018-02-09 Jakub Jelinek - PR rtl-optimization/69217 - * var-tracking.c (tracked_record_parameter_p): Don't segfault if there - are no TYPE_FIELDS set for the record type. + PR sanitizer/84285 + * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS, + STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like + -static-lib*san. - 2016-01-26 Jakub Jelinek + 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 target/68662 - * config/rs6000/rs6000.c (rs6000_option_override_internal): Initialize - toc_label_name unconditionally. - (rs6000_emit_load_toc_table): Call ggc_strdup on toc_label_name for - SYMBOL_REF string. Use toc_label_name instead of constructing - LCTOC1. - (rs6000_elf_declare_function_name): Use toc_label_name instead of - constructing LCTOC1. + 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. - 2016-01-26 Martin Sebor + 2018-02-09 Marek Polacek + Jakub Jelinek - PR other/69477 - * doc/extend.texi (Common Type Attributes): Move text that talks about - attribute packed from attribute aligned to the section discussing - the former attribute for clarity. + 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. - 2016-01-26 Richard Henderson + 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. - PR middle-end/60908 - * trans-mem.c (tm_region_init): Mark entry block as visited. + 2018-02-08 Richard Sandiford - 2016-01-26 David Malcolm + * lra-constraints.c (match_reload): Unconditionally use + gen_lowpart_SUBREG, rather than selecting between that + and equivalent gen_rtx_SUBREG code. - PR other/69006 - * diagnostic-show-locus.c (layout::print_source_line): Replace - call to pp_newline with call to layout::print_newline. - (layout::print_annotation_line): Likewise. - (layout::move_to_column): Likewise. - (layout::print_any_fixits): After printing any fixits, print a - trailing newline, if necessary. - (layout::print_newline): New method, resetting any colorization - before a newline. - (diagnostic_show_locus): Move the pp_newline to before the - early bailout. Remove dummy block enclosing the layout instance. - * diagnostic.c (default_diagnostic_finalizer): Replace invocation - of pp_newline_and_flush with pp_flush. - (diagnostic_append_note): Delete use of pp_newline. - (diagnostic_append_note_at_rich_loc): Delete. - * diagnostic.h (diagnostic_append_note_at_rich_loc): Delete. - * pretty-print.h (output_buffer_append_r): Reset buff->line_length - when newline characters are added to the buffer. - - 2016-01-26 Michael Matz - - * configure.ac (ac_cv_std_swap_in_utility): New test. - * system.h (): Check HAVE_SWAP_IN_UTILITY as well. - * configure: Regenerate. - * config.in: Regenerate. + 2018-02-08 Richard Biener - 2016-01-26 Claudiu Zissulescu + PR tree-optimization/84233 + * tree-ssa-phiprop.c (propagate_with_phi): Use separate + changed flag instead of boguously re-using phi_inserted. - * config/arc/arc.md (cstoresi4): Force operand into register. - (arcset): Fix predicate. - (arcsetltu): Likewise. - (arcsetgeu): Likewise. - (arcsethi): Likewise. - (arcsetls): Likewise. + 2018-02-08 Martin Jambor - 2016-01-26 Jakub Jelinek + * hsa-gen.c (get_symbol_for_decl): Set program allocation for + static local variables. - PR tree-optimization/69483 - * gimple-fold.c (canonicalize_constructor_val): Return NULL - if base has error_mark_node type. + 2018-02-08 Richard Biener - 2016-01-26 Christophe Lyon + 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. - PR target/68620 - * config/arm/arm.c (neon_valid_immediate): Handle FP16 vectors. - * config/arm/arm_neon.h (__ARM_NUM_LANES, __arm_lane, arm_lanq): - New helper macros. - (vget_lane_f16): Handle big-endian. - (vgetq_lane_f16): Likewise. - (vset_lane_f16): Likewise. - (vsetq_lane_f16): Likewise. - * config/arm/iterators.md (VQXMOV): Add V8HF. - (VDQ): Add V4HF and V8HF. - (V_reg): Handle V4HF and V8HF. - (Is_float_mode): Likewise. - * config/arm/neon.md (movv4hf, movv8hf, neon_vdup_nv4hf, - neon_vdup_nv8hf): New patterns. - (vec_set_internal, vec_extract, neon_vld1_dup): - Use VD_LANE iterator. - (neon_vld1_dup): Use VQ2 iterator. + 2018-02-08 Wilco Dijkstra - 2016-01-26 Nathan Sidwell + * config/aarch64/aarch64.c (aarch64_components_for_bb): + Increase LDP/STP opportunities by adding adjacent callee-saves. - * omp-low.h (oacc_fn_attrib_kernels_p): Declare. - (set_oacc_fn_attrib): Add IS_KERNEL arg. - * omp-low.c (set_oacc_fn_attrib): Add IS_KERNEL arg. - (oacc_fn_attrib_kernels_p, oacc_fn_attrib_level): New. - (expand_omp_target): Pass is_kernel to set_oacc_fn_attrib. - (oacc_validate_dims): Add LEVEL arg, don't return level. - (new_oacc_loop_routine): Use oacc_fn_attrib_level, not - oacc_validate_dims. - (execute_oacc_device_lower): Adjust, add more dump output. - * tree-ssa-loop.c (gate_oacc_kernels): Use - oacc_fn_attrib_kernels_p. - * tree-parloops.c (create_parallel_loop): Adjust - set_oacc_fn_attrib call. + 2018-02-08 Wilco Dijkstra - 2016-01-26 Jakub Jelinek + PR rtl-optimization/84068 + PR rtl-optimization/83459 + * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting. - PR lto/69254 - * lto-wrapper.c (merge_and_complain): Handle -fcilkplus. - (append_compiler_options): Handle -fcilkplus. - (append_linker_options): Ignore -fno-{openmp,openacc,cilkplus}. + 2018-02-08 Aldy Hernandez - 2016-01-26 Nick Clifton + 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. - PR target/66655 - * config/i386/winnt.c (i386_pe_binds_local_p): If a function has - been marked as DECL_ONE_ONLY but we do not the means to make it - so, then do not allow it to bind locally. + 2018-02-07 Iain Sandoe - 2016-01-26 Jakub Jelinek + 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. - PR lto/69254 - * opts.h (parse_sanitizer_options): New prototype. - * opts.c (sanitizer_opts): New array. - (parse_sanitizer_options): New function. - (common_handle_option): Use parse_sanitizer_options. + 2018-02-07 Michael Meissner - 2016-01-26 H.J. Lu + * doc/install.texi (Configuration): Document the + --with-long-double-format={ibm,ieee} PowerPC configuration + options. - PR target/68986 - * config/i386/i386.c (ix86_compute_frame_layout): Move stack - alignment adjustment to ... - (ix86_update_stack_boundary): Here. Don't over-align stack for - __tls_get_addr. - (ix86_finalize_stack_realign_flags): Use stack_alignment_needed - if __tls_get_addr is called. + 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. - 2016-01-26 Christian Bruel + 2018-02-06 Jakub Jelinek - * doc/sourcebuild.texi (arm_crypto_pragma_ok): Remove. + 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. - 2016-01-26 Eric Botcazou + 2018-02-06 Michael Collison - * config/ia64/ia64.c (ia64_expand_vecint_compare): Use gen_int_mode. + * config/arm/thumb2.md: + (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it. + (*thumb_mov_notscc): Ditto. - 2016-01-26 Richard Biener + 2018-02-06 Michael Meissner - PR middle-end/69467 - * match.pd: Guard X * CST CMP 0 pattern with single_use. + PR target/84154 + * config/rs6000/rs6000.md (su code attribute): Use "u" for + unsigned_fix, not "s". - 2016-01-26 Richard Biener + 2018-02-06 Rainer Orth - PR tree-optimization/69452 - * tree-ssa-loop-im.c (move_computations_dom_walker): Remove. - (move_computations_dom_walker::before_dom_children): Rename - to ... - (move_computations_worker): This. - (move_computations): Perform an RPO rather than a DOM walk. - - 2016-01-26 Jakub Jelinek - - PR target/69442 - * combine.c (combine_instructions): For REG_EQUAL note with - SET_DEST being ZERO_EXTRACT, also temporarily set SET_DEST - to the underlying register. - * doc/rtl.texi (REG_EQUAL): Document the behavior of - REG_EQUAL/REG_EQUIV notes if SET_DEST is ZERO_EXTRACT. - - 2016-01-26 Roger Ferrer Ibáñez - - PR target/67896 - * config/aarch64/aarch64-builtins.c - (aarch64_init_simd_builtin_types): Do not set structural - equality to __Poly{8,16,64,128}_t types. - - 2016-01-26 Richard Sandiford - - PR tree-optimization/69400 - * wide-int.cc (wi_pack): Take the precision as argument and - perform canonicalization here rather than in the callers. - Use the main loop to handle all full-width HWIs. Add a - zero HWI if in_len isn't a full result. - (wi::divmod_internal): Update accordingly. - (wi::mul_internal): Likewise. Simplify. - - 2016-01-25 Aditya Kumar - Sebastian Pop - - * graphite-poly.c (apply_poly_transforms): Simplify. - (print_isl_set): Use more readable format: ISL_YAML_STYLE_BLOCK. - (print_isl_map): Same. - (print_isl_union_map): Same. - (print_isl_schedule): New. - (debug_isl_schedule): New. - * graphite-dependences.c (scop_get_reads): Do not call - isl_union_map_add_map that is undocumented isl functionality. - (scop_get_must_writes): Same. - (scop_get_may_writes): Same. - (scop_get_original_schedule): Remove. - (scop_get_dependences): Do not call isl_union_map_compute_flow that - is deprecated in isl 0.15. Instead, use isl_union_access_* interface. - (compute_deps): Remove. - * graphite-isl-ast-to-gimple.c (print_schedule_ast): New. - (debug_schedule_ast): New. - (translate_isl_ast_to_gimple::scop_to_isl_ast): Call - set_separate_option. - (graphite_regenerate_ast_isl): Add dump. - (translate_isl_ast_to_gimple::scop_to_isl_ast): Generate code - from scop->transformed_schedule. - (graphite_regenerate_ast_isl): Add more dump. - * graphite-optimize-isl.c (optimize_isl): Set - scop->transformed_schedule. Check whether schedules are equal. - (apply_poly_transforms): Move here. - * graphite-poly.c (apply_poly_transforms): ... from here. - (free_poly_bb): Static. - (free_scop): Static. - (pbb_number_of_iterations_at_time): Remove. - (print_isl_ast): New. - (debug_isl_ast): New. - (debug_scop_pbb): New. - * graphite-scop-detection.c (print_edge): Move. - (print_sese): Move. - * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons): Remove. - (build_scop_scattering): Remove. - (create_pw_aff_from_tree): Assert instead of bailing out. - (add_condition_to_pbb): Remove unused code, do not fail. - (add_conditions_to_domain): Same. - (add_conditions_to_constraints): Remove. - (build_scop_context): New. - (add_iter_domain_dimension): New. - (build_iteration_domains): Initialize pbb->iterators. - Call add_conditions_to_domain. - (nested_in): New. - (loop_at): New. - (index_outermost_in_loop): New. - (index_pbb_in_loop): New. - (outermost_pbb_in): New. - (add_in_sequence): New. - (add_outer_projection): New. - (outer_projection_mupa): New. - (add_loop_schedule): New. - (build_schedule_pbb): New. - (build_schedule_loop): New. - (embed_in_surrounding_loops): New. - (build_schedule_loop_nest): New. - (build_original_schedule): New. - (build_poly_scop): Call build_original_schedule. - * graphite.h: Declare print_isl_schedule and debug_isl_schedule. - (free_poly_dr): Remove. - (struct poly_bb): Add iterators. Remove schedule, transformed, saved. - (free_poly_bb): Remove. - (debug_loop_vec): Remove. - (print_isl_ast): Declare. - (debug_isl_ast): Declare. - (scop_do_interchange): Remove. - (scop_do_strip_mine): Remove. - (scop_do_block): Remove. - (flatten_all_loops): Remove. - (optimize_isl): Remove. - (pbb_number_of_iterations_at_time): Remove. - (debug_scop_pbb): Declare. - (print_schedule_ast): Declare. - (debug_schedule_ast): Declare. - (struct scop): Remove schedule. Add original_schedule, - transformed_schedule. - (free_gimple_poly_bb): Remove. - (print_generated_program): Remove. - (debug_generated_program): Remove. - (unify_scattering_dimensions): Remove. - * sese.c (print_edge): ... here. - (print_sese): ... here. - (debug_edge): ... here. - (debug_sese): ... here. - * sese.h (print_edge): Declare. - (print_sese): Declare. - (dump_edge): Declare. - (dump_sese): Declare. - - 2016-01-25 Aditya Kumar - Sebastian Pop - - * Makefile.in: Set ISLVER in site.exp. - - 2016-01-25 Jakub Jelinek - - * omp-low.c (lower_omp_target) : Set - DECL_VALUE_EXPR of new_var even for the non-array case. Look - through DECL_VALUE_EXPR for expansion. - - 2016-01-25 Bernd Edlinger - - * config/mips/mips.c (mips_compute_frame_info): Skip re-computing - the frame info after reload completed. - - 2016-01-25 Jeff Law - - PR tree-optimization/69196 - PR tree-optimization/68398 - * tree-ssa-threadupdate.h (enum bb_dom_status): Moved here from - tree-ssa-threadupdate.c. - (determine_bb_domination_status): Prototype - * tree-ssa-threadupdate.c (enum bb_dom_status): Remove - (determine_bb_domination_status): No longer static. - (valid_jump_thread_path): Remove code to detect characteristics - of the jump thread path not associated with correctness. - * tree-ssa-threadbackward.c (fsm_find_control_statment_thread_paths): - Correct test for thread path length. Count PHIs for real operands as - statements that need to be copied. Do not count ASSERT_EXPRs. - Look at all the blocks in the thread path. Compute and selectively - filter thread paths based on threading through the latch, threading - a multiway branch or crossing a multiway branch. - - 2016-01-25 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_keep_leaf_when_profiled): Add - decl with __attribute__ ((unused)) annotation. - - 2016-01-25 Ilya Enkovich - - PR target/69421 - * tree-vect-stmts.c (vectorizable_condition): Check vectype - of operands is compatible with a statement vectype. - - 2016-01-25 Eric Botcazou - - * doc/extend.texi (scalar_storage_order type attribute): Fix typo and - improve wording for mixed storage order support. - - 2016-01-25 Bilyan Borisov - - * config/aarch64/arm_neon.h (vcvt_s64_f64): New intrinsic. - (vcvt_u64_f64): Likewise. - (vcvta_s64_f64): Likewise. - (vcvta_u64_f64): Likewise. - (vcvtm_s64_f64): Likewise. - (vcvtm_u64_f64): Likewise. - (vcvtn_s64_f64): Likewise. - (vcvtn_u64_f64): Likewise. - (vcvtp_s64_f64): Likewise. - (vcvtp_u64_f64): Likewise. - - 2016-01-25 Claudiu Zissulescu - - * config/arc/arc.c (TARGET_DWARF_REGISTER_SPAN): Define. - (arc_init): Check validity mll64 option. - (arc_save_restore): Use double load/store instruction. - (arc_expand_movmem): Likewise. - (arc_split_move): Don't split if we have double load/store - instructions. Returns a boolean. - (arc_process_double_reg_moves): Change function to return boolean - instead of a sequence of instructions. - (arc_dwarf_register_span): New function. - * config/arc/arc-protos.h (arc_split_move): Change prototype. - * config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): Define __ARC_LL64__. - * config/arc/arc.md (*movdi_insn): Emit ldd/std instructions. - (*movdf_insn): Likewise. - * config/arc/arc.opt (mll64): New option. - * config/arc/predicates.md (even_register_operand): New predicate. - * doc/invoke.texi (ARC Options): Add mll64 documentation. - - 2016-01-25 Richard Biener - - PR lto/69393 - * dwarf2out.c (is_naming_typedef_decl): Not when DECL_NAMELESS. - * tree-streamer-out.c (pack_ts_base_value_fields): Stream - DECL_NAMELESS. - * tree-streamer-in.c (unpack_ts_base_value_fields): Likewise. - - 2016-01-25 Richard Biener - - PR tree-optimization/69376 - * tree-ssa-sccvn.h (struct vn_ssa_aux): Add range_info_anti_range_p - flag. - (VN_INFO_ANTI_RANGE_P): New inline. - (VN_INFO_RANGE_TYPE): Likewise. - * tree-ssa-sccvn.c (set_ssa_val_to): Also record and copy - SSA_NAME_ANTI_RANGE_P. - (free_scc_vn): Restore SSA_NAME_ANTI_RANGE_P. - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - Properly query VN_INFO_RANGE_TYPE. - - 2016-01-25 Nick Clifton - - PR target/66655 - * config/i386/cygming.h (MAKE_DECL_ONE_ONLY): Remove definition. - - 2016-01-23 Tom de Vries - - PR tree-optimization/69426 - * tree-parloops.c (eliminate_local_variables_stmt): Handle vdef of - removed clobber. - - 2016-01-23 Jakub Jelinek - - * tree-ssanames.c (release_free_names_and_compact_live_names): Replace - "the the" with "the" in the comments. - * ipa-devirt.c (build_type_inheritance_graph, - update_type_inheritance_graph): Likewise. - * tree.c (build_function_type_list_1): Likewise. - * cfgloopmanip.c (scale_loop_profile): Likewise. - * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Likewise. - * gimple-ssa-split-paths.c - (find_block_to_duplicate_for_splitting_paths): Likewise. - * tree-sra.c (init_subtree_with_zero, clobber_subtree): Likewise. - * expr.c (convert_move): Likewise. - * var-tracking.c (vt_stack_adjustments): Likewise. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise. - * tree-vrp.c (test_for_singularity): Likewise. + * 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. - * tree-vect-stmts.c (vectorizable_condition): Build a VEC_COND_EXPR - directly instead of building a temporary tree. + 2018-02-06 Andrew Jenner - PR bootstrap/69434 - * genrecog.c: Define INCLUDE_ALGORITHM before including system.h, - remove include. + * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove + irrelevant options. - 2016-01-22 Jakub Jelinek + 2018-02-06 Bill Schmidt - PR target/69432 - * config/i386/i386.c: Include dojump.h. - (expand_small_movmem_or_setmem, - expand_set_or_movmem_prologue_epilogue_by_misaligned_moves): Spelling - fixes. - (ix86_expand_set_or_movmem): Call do_pending_stack_adjust () early - if dynamic_check != -1. + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Display warning message for -mno-speculate-indirect-jumps. - 2016-01-21 Jeff Law + 2018-02-06 Andrew Jenner - PR middle-end/69347 - * tree-ssa-dom.c (back_propagate_equivalences): Factored out of - record_temporary_equivalences. Rewritten to avoid unnecessary calls - into dominated_by_p. - (cprop_into_successor_phis): Avoid unnecessary tests. + * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add + Undocumented. + * config/powerpcspe/sysv4.opt (mbit-align): Likewise. - 2016-01-22 Richard Henderson + 2018-02-06 Aldy Hernandez - PR target/69416 - * config/aarch64/aarch64.md (UNSPEC_NZCV): New. - (ccmp, fccmp, fccmpe): Use it. + PR tree-optimization/84225 + * tree-eh.c (find_trapping_overflow): Only call + operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P. - 2016-01-22 Michael Matz + 2018-02-06 Igor Tsimbalist - * system.h (string, algorithm): Include only conditionally. - (new): Include always under C++. - * bb-reorder.c (toplevel): Define INCLUDE_ALGORITHM. - * final.c (toplevel): Ditto. - * ipa-chkp.c (toplevel): Define INCLUDE_STRING. - * genconditions.c (write_header): Make gencondmd.c define - INCLUDE_STRING. - * mem-stats.h (mem_usage::print_dash_line): Don't use std::string. + 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 '='. - * config/aarch64/aarch64.c (toplevel): Define INCLUDE_STRING. - * common/config/aarch64/aarch64-common.c (toplevel): Ditto. + 2018-02-06 Marek Polacek - 2016-01-22 Christian Bruel + PR tree-optimization/84228 + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements. - PR target/68674 - * expr.c (expand_expr_real_1): Reset DECL_MODE if VECTOR_TYPE_P changed. + 2018-02-06 Tamar Christina - 2016-01-22 Kyrylo Tkachov + 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. - PR target/69403 - * config/arm/thumb2.md (*thumb2_ior_scc_strict_it): Convert to - define_insn_and_split. Ensure operands[1] and operands[0] do not - get assigned the same register. + 2018-02-06 Richard Biener - 2016-01-22 Kugan Vivekanandarajah + * config/i386/i386.c (print_reg): Fix typo. + (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll. - * ipa-prop.c (ipa_set_jf_constant): Remove redundant unshare_expr. + 2018-02-06 Eric Botcazou - 2016-01-22 Christian Bruel + * configure: Regenerate. - * config/arm/arm-c.c (arm_pragma_target_parse): - Remove warn_builtin_macro_redefined overwrite. + 2018-02-05 Martin Sebor - 2016-01-22 Eric Botcazou + PR tree-optimization/83369 + * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print + inlining context. - * ipa-inline.c (can_inline_edge_p): Back out overzealous check on - flag_non_call_exceptions compatibility. + 2018-02-05 Martin Liska - 2016-01-22 Jakub Jelinek + * doc/invoke.texi: Cherry-pick upstream r323995. - PR debug/66668 - * dwarf2out.c (add_child_die_after): New function. - (dwarf_qual_info_t): New type. - (dwarf_qual_info): New variable. - (qualified_die_p): New function. - (modified_type_die): For -fdebug-types-section, ensure - canonical order of qualifiers. Put qualified DIEs adjacent - to the corresponding non-qualified type DIE and search there - for existing qualified DIEs. + 2018-02-05 Richard Sandiford - 2016-01-22 Eric Botcazou + * ira.c (ira_init_register_move_cost): Adjust comment. - * doc/extend.texi (scalar_storage_order type attribute): Document - restriction on type punning and aliasing, and remove future tense. + 2018-02-05 Martin Liska - 2016-01-21 Roman Zhuykov + PR gcov-profile/84137 + * doc/gcov.texi: Fix typo in documentation. - PR target/69252 - * modulo-sched.c (optimize_sc): Allow branch-scheduling to add a new - first stage. + 2018-02-05 Martin Liska - 2016-01-21 Jeff Law + PR gcov-profile/83879 + * doc/gcov.texi: Document necessity of --dynamic-list-data when + using dlopen functionality. - PR middle-end/69347 - * tree-ssa-dom.c (dom_opt_dom_walker::thread_across_edge): Avoid - useless call to record_temporary_equivalences. - * tree-ssa-threadbackward.c (find_jump_threads_backwards): Just - allocate 10 slots in the bb_path vector and let it grow as needed. - (fsm_find_control_statement_thread_paths): Similarly for the next_path - vector. + 2018-02-05 Olga Makhotina - 2016-01-21 David Edelsohn + * 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. - * configure.ac (gcc_cv_as_powerpc_mfcrf, gcc_cv_as_machine_directive): - Detangle. - * configure: Regenerate. + 2018-02-02 Andrew Jenner - 2016-01-21 Pat Haugen + * 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. - * config/rs6000/aix71.h (ASM_CPU_SPEC): Add entry for Power9. - * config/rs6000/driver-rs6000.c (struct asm_names): Likewise. + 2018-02-01 Richard Sandiford - 2016-01-21 Bernd Schmidt + 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. - PR middle-end/66178 - * expr.c (expand_expr_real_2) [PLUS_EXPR, MINUS_EXPR]: Don't - drop EXPAND_INITIALIZER. - * rtl.h (contains_symbolic_reference_p): Declare. - * rtlanal.c (contains_symbolic_reference_p): New function. - * simplify-rtx.c (simplify_binary_operation_1): Don't turn - a subtraction into a NOT if symbolic constants are involved. + 2018-02-01 Renlin Li - 2016-01-21 Anton Blanchard - Bill Schmidt + 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. - PR target/63354 - * config/rs6000/linux64.h (TARGET_KEEP_LEAF_WHEN_PROFILED): New - #define. - * config/rs6000/rs6000.c (rs6000_keep_leaf_when_profiled): New - function. + 2018-02-01 Richard Sandiford - 2016-01-21 Ajit Agarwal + * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer + the TImode handling for big-endian targets. - * config/microblaze/microblaze.c - (get_branch_target): New. - (insert_wic_for_ilb_runout): New. - (insert_wic): New. - (microblaze_machine_dependent_reorg): New. - (TARGET_MACHINE_DEPENDENT_REORG): Define macro. - * config/microblaze/microblaze.md - (UNSPEC_IPREFETCH): Define. - (iprefetch): New pattern - * config/microblaze/microblaze.opt - (mxl-prefetch): New flag. + 2018-02-01 Richard Sandiford - 2016-01-21 Ajit Agarwal + * 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. - * config/microblaze/microblaze.h - (FIXED_REGISTERS): Update in macro. - (CALL_USED_REGISTERS): Update in macro. + 2018-02-01 Richard Sandiford - 2016-01-21 Yuri Rumyantsev + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle + all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single + duplicated element. - PR rtl-optimization/68920 - * ifcvt.c (cond_move_process_if_block): Limit number of conditional - moves. + 2018-02-01 Richard Sandiford - 2016-01-21 Vladimir Makarov + PR tearget/83845 + * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten + check for operands that need to go through aarch64_sve_reload_be. - PR rtl-optimization/68990 - * lra-coalesce.c (lra_coalesce): Invalidate value for the result - pseudo instead of inheritance ones. + 2018-02-01 Jakub Jelinek - 2016-01-21 Bernd Edlinger - Nick Clifton + 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. - PR target/69129 - PR target/69012 - * config/mips/mips.c (mips_compute_frame_info): Initialise - args_size and hard_frame_pointer_offset fields of the frame - structure before calling mips_global_pointer. + 2018-01-31 Uros Bizjak - 2016-01-21 David Edelsohn + PR rtl-optimization/84123 + * combine.c (change_zero_ext): Check if hard register satisfies + can_change_dest_mode before calling gen_lowpart_SUBREG. - * configure.ac (gcc_cv_as_dwloc): Test support for debug frame section - label reference. - * configure: Regenerate. + 2018-01-31 Vladimir Makarov - 2016-01-21 Richard Biener + PR target/82444 + * ira.c (ira_init_register_move_cost): Remove assert. - * graphite-optimize-isl.c (get_schedule_map): Fix typo. + 2018-01-31 Eric Botcazou - 2016-01-21 Marcin Kościelnicki + PR rtl-optimization/84071 + * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case. + * doc/tm.texi: Regenerate. - * config/s390/s390.c (s390_asm_declare_function_size): Add code - to actually emit the .size directive. + 2018-01-31 Richard Biener - 2016-01-21 Stefan Sørensen - Jakub Jelinek + 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. - PR target/69187 - PR target/65624 - * config/arm/arm-builtins.c (arm_expand_neon_builtin): Increase - args array size by one to avoid buffer overflow. + 2018-01-31 Julia Koval - 2016-01-21 Marcin Kościelnicki + 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. - * config/s390/s390.md (pool_section_start): Use switch_to_section - to select proper read-only data section instead of hardcoding - .rodata. - (pool_section_end): Use switch_to_section to match the above. + 2018-01-29 Aldy Hernandez - 2016-01-21 Richard Biener + PR lto/84105 + * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with + an IDENTIFIER_NODE for FUNCTION_TYPE's. - PR tree-optimization/69378 - * tree-ssa-sccvn.c (dominated_by_p_w_unex): New function. - (set_ssa_val_to): Use it for dominance checks taking into - account not executable edges. + 2018-01-31 Eric Botcazou - 2016-01-21 Jakub Jelinek + Revert + 2018-01-12 Eric Botcazou - PR c++/69355 - * tree-dfa.c (get_ref_base_and_extent): Use GET_MODE_BITSIZE (mode) - for bitsize instead of GET_MODE_PRECISION (mode). + * config/sparc/sparc.md (vxworks_load_got): Set the GOT register. - 2016-01-20 Martin Sebor + 2018-01-31 Eric Botcazou - PR c/52291 - * extend.texi (__sync Builtins): Clarify the semantics of - __sync_fetch_and_OP built-ins on pointers. - (__atomic Builtins): Same. + 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. - 2016-01-21 Aditya Kumar - Sebastian Pop + 2018-01-31 Claudiu Zissulescu - * graphite-isl-ast-to-gimple.c (enum phi_node_kind): New. - (class translate_isl_ast_to_gimple): Use phi_node_kind instead of bool. - (is_valid_rename): Same. - (translate_isl_ast_to_gimple::get_rename): Same. - (translate_isl_ast_to_gimple::rename_all_uses): Same. - (translate_isl_ast_to_gimple::rename_uses): Same. - (get_new_name): Check for close_phi nodes. - (copy_loop_phi_args): Use phi_node_kind. - (translate_isl_ast_to_gimple::copy_loop_close_phi_args): Same. - (translate_isl_ast_to_gimple::copy_cond_phi_args): Same. + * 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. - 2016-01-21 Aditya Kumar - Sebastian Pop + 2018-01-31 Claudiu Zissulescu - Revert commit r229783. - * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id): - Remove use of parameter_rename_map. - (copy_def): Remove. - (copy_internal_parameters): Remove. - (graphite_regenerate_ast_isl): Remove call to copy_internal_parameters. - * sese.c (new_sese_info): Do not initialize parameter_rename_map. - (free_sese_info): Do not free parameter_rename_map. - (set_rename): Do not use parameter_rename_map. - (rename_uses): Update call to set_rename. - (graphite_copy_stmts_from_block): Do not use parameter_rename_map. - * sese.h (parameter_rename_map_t): Remove. - (struct sese_info_t): Remove field parameter_rename_map. + * 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. + * gcc/doc/extend.texi (ARC Type Attribute): New subsection. - 2016-01-21 Aditya Kumar - Sebastian Pop + 2018-01-31 Jakub Jelinek - * graphite-isl-ast-to-gimple.c: Fix comment. - * graphite-scop-detection.c (defined_in_loop_p): New. - (canonicalize_loop_closed_ssa): Do not add close phi nodes for SSA - names defined in loop. + PR c/84100 + * common.opt (falign-functions=, falign-jumps=, falign-labels=, + falign-loops=): Add Optimization flag. - 2016-01-21 Aditya Kumar - Sebastian Pop + 2018-01-30 Jeff Law - * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): - Discard unstructured if-then-else regions. + 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. - 2016-01-21 Aditya Kumar - Sebastian Pop + 2018-01-30 Rainer Orth - * graphite-sese-to-poly.c (set_scop_parameter_dim): Remove. - (cleanup_loop_iter_dom): Remove. - (build_loop_iteration_domains): Remove. - (build_scop_context): Remove. - (build_scop_iteration_domain): Remove. - (add_loop_constraints): New. - (build_iteration_domains): New. - (build_poly_scop): Call build_iteration_domains. + PR target/40411 + * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*, + -std=iso9899:199409 instead of -pedantic to select values-Xc.o. - 2016-01-21 Aditya Kumar - Sebastian Pop + 2018-01-30 Vladimir Makarov - * graphite-scop-detection.c - (scop_detection::harmful_loop_in_region): Free dom and loops. - (scop_detection::loop_body_is_valid_scop): Free bbs. - - 2016-01-21 Aditya Kumar - Sebastian Pop - - * graphite-scop-detection.c (record_loop_in_sese): New. - (gather_bbs::before_dom_children): Call record_loop_in_sese. - (build_scops): Remove call to build_sese_loop_nests. - * sese.c (sese_record_loop): Remove. - (build_sese_loop_nests): Remove. - (new_sese_info): Remove region->loops. - (free_sese_info): Same. - * sese.h (sese_contains_loop): Same. - (build_sese_loop_nests): Remove. - (sese_contains_loop): Remove. - - 2016-01-21 Aditya Kumar - Sebastian Pop - - * graphite-scop-detection.c (loop_is_valid_scop): Renamed - loop_is_valid_in_scop. - (scop_detection::harmful_stmt_in_region): Renamed - harmful_loop_in_region. - Call loop_is_valid_in_scop. - - 2016-01-21 Aditya Kumar - Sebastian Pop - - * graphite-isl-ast-to-gimple.c (translate_isl_ast): Also handle - isl_ast_node_mark. - - 2016-01-21 Aditya Kumar - Sebastian Pop - - * graphite-poly.c (new_poly_bb): Remove use of PBB_IS_REDUCTION. - * graphite.h (struct poly_bb): Remove field is_reduction. - (PBB_IS_REDUCTION): Remove. - - 2016-01-21 Aditya Kumar - Sebastian Pop - - * graphite-dependences.c (constrain_domain): Add call to isl_*_coalesce. - (add_pdr_constraints): Same. - (scop_get_reads): Same. - (scop_get_must_writes): Same. - (scop_get_may_writes): Same. - (scop_get_original_schedule): Same. - (extend_schedule): Same. - (apply_schedule_on_deps): Same. - (carries_deps): Same. - (compute_deps): Same. - (scop_get_dependences): Same. - * graphite-isl-ast-to-gimple.c - (translate_isl_ast_to_gimple::generate_isl_schedule): Same. - * graphite-optimize-isl.c (get_schedule_for_band): Same. - (get_schedule_for_band_list): Same. - (get_schedule_map): Same. - (apply_schedule_map_to_scop): Same. - * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons): Same. - (build_loop_iteration_domains): Same. - (add_condition_to_pbb): Same. - (add_param_constraints): Same. - (pdr_add_memory_accesses): Same. - (pdr_add_data_dimensions): Same. - - 2016-01-20 Sandra Loosemore - - * doc/invoke.texi (Instrumentation Options): Clarify -mmpx linking - requirements. - - 2016-01-20 Sandra Loosemore - - * common.opt (feliminate-dwarf2-dups): Replace references to - "DWARF 2" with just "DWARF". - * config/ia64/ia64.opt (mdwarf2-asm): Likewise. - * doc/extend.texi: Likewise. - * doc/cpp.texi: Likewise. - * doc/invoke.texi: Likewise. - (Option Summary): Add -gdwarf to list of Debugging Options. - (Debugging Options): Document -gdwarf. - * doc/contrib.texi: Spell "DWARF" like that. - - 2016-01-21 Jakub Jelinek - - * omp-low.c (expand_omp_target): Avoid -Wmaybe-uninitialized - warning. Fix up formatting. - - PR middle-end/67653 - * gimplify.c (gimplify_asm_expr): Warn if it is too late to - attempt to mark memory input operand addressable and - call prepare_gimple_addressable in that case. Don't adjust - input_location for diagnostics, use error_at instead. - - 2016-01-20 Peter Bergner - - * config/rs6000/ppc-auxv.h: New file. - * config/rs6000/rs6000-builtin.def (cpu_init): Add new builtin. - (cpu_is): Likewise. - (cpu_supports): Likewise. - * config/rs6000/rs6000.c: include "ppc-auxv.h". - (cpu_is_info): New variable. - (cpu_supports_info): Likewise. - (tcb_verification_symbol): Likewise. - (cpu_builtin_p): Likewise. - (cpu_expand_builtin): New function. - (rs6000_expand_ternop_builtin): Add support for CPU builtin functions. - (rs6000_init_builtins): Likewise. - (rs6000_elf_file_end): Emit HWCAP in TCB verification symbol. - * config/rs6000/rs6000.h (TLS_REGNUM): New define. - * configure.ac (gcc_cv_libc_provides_hwcap_in_tcb): New test. - * configure: Regenerate. - * config.in: Likewise. - * doc/extend.texi (PowerPC Built-in Functions): Document - __builtin_cpu_init, __builtin_cpu_is and __builtin_cpu_supports. + PR target/84112 + * lra-constraints.c (curr_insn_transform): Process AND in the + address. - 2016-01-20 David Edelsohn + 2018-01-30 Jakub Jelinek - PR target/68609 - * config/rs6000/rs6000.c (rs6000_emit_swsqrt): Add vector sqrt - domain check. - * config/rs6000/vector.md (sqrt2): Call rs6000_emit_swsqrt - for V4SFmode. + 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. - 2016-01-20 Richard Henderson + 2018-01-30 Alexandre Oliva - PR bootstrap/69343 - PR bootstrap/69339 - PR tree-opt/68964 - Revert: - * tree.c (tm_define_builtin): New. - (find_tm_vector_type): New. - (build_tm_vector_builtins): New. - (build_common_builtin_nodes): Call it. + PR tree-optimization/81611 + * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening + copies. - 2016-01-20 Christophe Lyon + 2018-01-30 Aaron Sawdey - * doc/sourcebuild.texi (arm_crypto_pragma_ok): Document new entry. - (arm_fp_ok): Likewise. - (arm_fp): Likewise. - (arm_crypto): Likewise. + PR target/83758 + * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return + a reg rtx. - 2016-01-20 Ilya Enkovich - Richard Biener + 2018-01-30 Richard Biener + Jakub Jelinek - PR tree-optimization/69328 - * tree-vect-stmts.c (vect_is_simple_cond): Check compared - vectors have same number of elements. - (vectorizable_condition): Fix masked version recognition. + 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. - 2016-01-20 Richard Biener + 2018-01-30 Jan Hubicka - PR tree-optimization/69345 - * tree-ssa-sccvn.h (VN_INFO_RANGE_INFO): New inline function. - (VN_INFO_PTR_INFO): Likewise. - * tree-ssa-sccvn.c (set_ssa_val_to): Avoid clearing points-to - info when it is equal between non-dominating SSA names. - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - Make sure to look at original SSA infos. + 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. - 2016-01-20 Jeff Law + 2018-01-30 Jan Hubicka - PR target/25114 - * config/m68k/predicates.md (pow2_m1_operand): New predicate - extracted from ... - (reg_or_pow2_m1_operand): Call pow2_m1_operand. - (pc_or_label_operand): New predicate. - * config/m68k/m68k.md: Add new peephole2 patterns for GTU/LEU - tests for small integers that are 2^n - 1. + * profile-count.c (profile_count::combine_with_ipa_count): Handle + zeros correctly. - 2016-01-20 Jonathan Wakely + 2018-01-30 Richard Biener - * doc/invoke.texi (Options Summary): Add '.' after @xref. + 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. - 2016-01-19 Jeff Law + 2018-01-30 Rainer Orth - PR middle-end/69347 - * tree-ssa-threadbackwards.c - (fsm_find_control_statement_thread_paths): Do not try to lookup - FSM paths for SSA_NAMEs appearing in abnormal PHIs. + PR bootstrap/84017 + * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86. + * configure: Regenerate. - 2016-01-20 Kugan Vivekanandarajah + 2018-01-30 Richard Sandiford - * doc/lto.texi: Remove text that says only Gold has linker plugin - support. + * 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. - 2016-01-19 Eric Botcazou - - * dwarf2out.c (need_endianity_attribute_p): New inline predicate. - (base_type_die): Add REVERSE parameter and attach DW_AT_endianity to - the DIE accordingly. - (modified_type_die): Add REVERSE parameter and pass it recursively, - as well as to base_type_die. Adjust presence check accordingly. - (base_type_for_mode): Adjust call to modified_type_die. - (add_type_attribute): Add REVERSE parameter and pass it to - modified_type_die. - (generic_parameter_die): Adjust call to add_type_attribute. - (add_scalar_info): Likewise. - (add_subscript_info): Likewise. - (gen_array_type_die): Likewise. - (gen_descr_array_type_die): Likewise. - (gen_entry_point_die): Likewise. - (gen_enumeration_type_die): Likewise. - (gen_formal_parameter_die): Likewise. - (gen_subprogram_die): Likewise. - (gen_variable_die ): Likewise. - (gen_const_die): Likewise. - (gen_field_die): Likewise. - (gen_pointer_type_die): Likewise. - (gen_reference_type_die): Likewise. - (gen_ptr_to_mbr_type_die): Likewise. - (gen_inheritance_die): Likewise. - (gen_subroutine_type_die): Likewise. - (gen_typedef_die): Likewise. - (force_type_die): Adjust call to modified_type_die. - - 2016-01-19 Sandra Loosemore - - * doc/standards.texi: Copy-editing for grammar, markup, and sentence - flow throughout the file. Fix broken link to Objective-C 2.0 - documentation. - * doc/invoke.texi: More copy-editing; fix numerous typos and spelling - errors. - - 2016-01-19 Wilco Dijkstra - - * ccmp.c (expand_ccmp_expr_1): Avoid spurious unused warnings. - - 2016-01-19 Jan Hubicka - - PR ipa/66223 - * ipa-devirt.c (is_cxa_pure_virtual_p): New function. - (maybe_record_node): Record cxa_pure_virtual as the only possible - target if there are not ohter candidates. - (possible_polymorphic_call_target_p): Accept cxa_pure_virtual. - - 2016-01-19 Richard Biener - - * hsa-gen.c (get_memory_order_name): Use MEMMODEL_ constants. - (get_memory_order): Likewise. - - 2016-01-19 Kirill Yukhin - - * tree-vect-stmts.c (vectorizable_store): Check - rhs vectype. - - 2016-01-19 David Malcolm - - PR jit/68446 - * gcc.c (driver::decode_argv): Add call to - init_opts_obstack before init_options_struct. - * opts.c (init_opts_obstack): Remove idempotency. - (init_options_struct): Replace call to init_opts_obstack - with a gcc_assert to verify that it has already been called. - * toplev.c (toplev::main): Add call to init_opts_obstack before - calls to init_options_struct. - (toplev::finalize): Move cleanup of opts_obstack next to - cleanup of save_decoded_options, clearing the latter, and - save_decoded_options_count. - - 2016-01-19 Kyrylo Tkachov - - PR target/69135 - * config/arm/vfp.md (lsi2): Set "conds" - attribute to unconditional. Remove %? from output template. - - 2015-01-19 Wilco Dijkstra - Jiong Wang - - * ccmp.c (expand_ccmp_expr_1): Cost the instruction sequences - generated from different expand order. - - 2015-01-19 Wilco Dijkstra - - * /config/aarch64/aarch64.c (aarch64_if_then_else_costs): - Add support for CCMP costing. - - 2015-01-19 Wilco Dijkstra - - * ccmp.c (ccmp_candidate_p): Remove integer-only restriction. - * config/aarch64/aarch64.md (fccmp): New pattern. - (fccmpe): Likewise. - (fcmp): Rename to fcmp and globalize pattern. - (fcmpe): Likewise. - * config/aarch64/aarch64.c (aarch64_gen_ccmp_first): Add FP support. - (aarch64_gen_ccmp_next): Add FP support. - - 2015-01-19 Wilco Dijkstra - - * target.def (gen_ccmp_first): Update documentation. - (gen_ccmp_next): Likewise. - * doc/tm.texi (gen_ccmp_first): Update documentation. - (gen_ccmp_next): Likewise. - * ccmp.c (expand_ccmp_expr): Extract cmp_code from return value of - expand_ccmp_expr_1. Improve comments. - * config/aarch64/aarch64.md (ccmp_and): Use if_then_else for ccmp. - (ccmp_ior): Remove pattern. - (cmp): Remove expand. - (cmp): Globalize pattern. - (cstorecc4): Use cc_register. - (movcc): Remove ccmp_cc_register check. - * config/aarch64/aarch64.c (aarch64_get_condition_code_1): - Simplify after removal of CC_DNE/* modes. - (aarch64_ccmp_mode_to_code): Remove. - (aarch64_print_operand): Remove 'K' case. Merge 'm' and 'M' cases. - In 'k' case use integer as condition. - (aarch64_nzcv_codes): Remove inverted cases. - (aarch64_code_to_ccmode): Remove. - (aarch64_gen_ccmp_first): Use cmp pattern directly. Return the correct - comparison with CC register to be used in folowing CCMP/branch/CSEL. - (aarch64_gen_ccmp_next): Use previous comparison and mode in CCMP - pattern. Return the comparison with CC register. Invert conditions - when bitcode is OR. - * config/aarch64/aarch64-modes.def: Remove CC_DNE/* modes. - * config/aarch64/predicates.md (ccmp_cc_register): Remove. - - 2016-01-19 Jan Hubicka - - * cgraphunit.c (cgraph_node::reset): Clear thunk info and - instrumented_version. - - 2016-01-19 Richard Biener - - PR tree-optimization/69336 - * tree-ssa-scopedtables.c (avail_expr_hash): Handle all - handled components with get_ref_base_and_extent. - (equal_mem_array_ref_p): Adjust. - - 2016-01-19 Jakub Jelinek - - PR debug/65779 - * shrink-wrap.c: Include valtrack.h. - (move_insn_for_shrink_wrap): Add DEBUG argument. If - MAY_HAVE_DEBUG_INSNS, call dead_debug_add on DEBUG_INSNs - in between insn and where it will be moved to. Call - dead_debug_insert_temp. - (prepare_shrink_wrap): Adjust caller. Call dead_debug_local_init - first and dead_debug_local_finish at the end. - For uses and defs bitmap, handle all regs in between REGNO and - END_REGNO, not just the first one. - - 2016-01-19 Richard Biener - - PR tree-optimization/69352 - * tree-ssa-scopedtables.c (avail_expr_hash): Check for size == -1. - (equal_mem_array_ref_p): Constrain size and max size properly. - Compare the reverse flag. - - 2016-01-19 Bernd Schmidt - - * ira.c (ira): Update regstat data if we deleted insns. - - 2016-01-19 Jakub Jelinek - - PR rtl-optimization/68955 - PR rtl-optimization/64557 - * dse.c (record_store, check_mem_read_rtx): Don't call get_addr - here. Fix up formatting. - * alias.c (get_addr): Handle VALUE +/- CONST_SCALAR_INT_P. - - 2016-01-19 Jan Hubicka - - PR lto/69133 - * cgraphunit.c (cgraph_node::expand_thunk): When forcing gimple - assume that the node has body. - * cgraph.c (cgraph_node::get_untransformed_body): Use gimple_body_p - check. - - 2016-01-19 Jan Hubicka - - * lto-streamer-out.c (lto_output): Do not stream instrumentation - thunks. + 2018-01-30 Richard Sandiford - 2016-01-19 Jan Hubicka + * lra-constraints.c (match_reload): Use subreg_lowpart_offset + rather than 0 when creating partial subregs. - * symtab.c (symtab_node::asm_name): Do not call printable name directly. - (symtab_node::name): Report name as unnamed if DECL_NAME is not set. + 2018-01-30 Richard Sandiford - 2016-01-19 Martin Jambor - Martin Liska - Michael Matz - - * Makefile.in (OBJS): Add new source files. - (GTFILES): Add hsa.c. - * common.opt (disable_hsa): New variable. - (-Whsa): New warning. - * config.in (ENABLE_HSA): New. - * configure.ac: Treat hsa differently from other accelerators. - (OFFLOAD_TARGETS): Define ENABLE_OFFLOADING according to - $enable_offloading. - (ENABLE_HSA): Define ENABLE_HSA according to $enable_hsa. - * doc/install.texi (Configuration): Document --with-hsa-runtime, - --with-hsa-runtime-include, --with-hsa-runtime-lib and - --with-hsa-kmt-lib. - * doc/invoke.texi (-Whsa): Document. - (hsa-gen-debug-stores): Likewise. - * lto-wrapper.c (compile_images_for_offload_targets): Do not attempt - to invoke offload compiler for hsa acclerator. - * opts.c (common_handle_option): Determine whether HSA offloading - should be performed. - * params.def (PARAM_HSA_GEN_DEBUG_STORES): New parameter. - * builtin-types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New. - (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed. - (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New. - * gimple-low.c (lower_stmt): Also handle GIMPLE_OMP_GRID_BODY. - * gimple-pretty-print.c (dump_gimple_omp_for): Also handle - GF_OMP_FOR_KIND_GRID_LOOP. - (dump_gimple_omp_block): Also handle GIMPLE_OMP_GRID_BODY. - (pp_gimple_stmt_1): Likewise. - * gimple-walk.c (walk_gimple_stmt): Likewise. - * gimple.c (gimple_build_omp_grid_body): New function. - (gimple_copy): Also handle GIMPLE_OMP_GRID_BODY. - * gimple.def (GIMPLE_OMP_GRID_BODY): New. - * gimple.h (enum gf_mask): Added GF_OMP_PARALLEL_GRID_PHONY, - GF_OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY and - GF_OMP_TEAMS_GRID_PHONY. - (gimple_statement_omp_single_layout): Updated comments. - (gimple_build_omp_grid_body): New function. - (gimple_has_substatements): Also handle GIMPLE_OMP_GRID_BODY. - (gimple_omp_for_grid_phony): New function. - (gimple_omp_for_set_grid_phony): Likewise. - (gimple_omp_parallel_grid_phony): Likewise. - (gimple_omp_parallel_set_grid_phony): Likewise. - (gimple_omp_teams_grid_phony): Likewise. - (gimple_omp_teams_set_grid_phony): Likewise. - (gimple_return_set_retbnd): Also handle GIMPLE_OMP_GRID_BODY. - * omp-builtins.def (BUILT_IN_GOMP_OFFLOAD_REGISTER): New. - (BUILT_IN_GOMP_OFFLOAD_UNREGISTER): Likewise. - (BUILT_IN_GOMP_TARGET): Updated type. - * omp-low.c: Include symbol-summary.h, hsa.h and params.h. - (adjust_for_condition): New function. - (get_omp_for_step_from_incr): Likewise. - (extract_omp_for_data): Moved parts to adjust_for_condition and - get_omp_for_step_from_incr. - (build_outer_var_ref): Handle GIMPLE_OMP_GRID_BODY. - (fixup_child_record_type): Bail out if receiver_decl is NULL. - (scan_sharing_clauses): Handle OMP_CLAUSE__GRIDDIM_. - (scan_omp_parallel): Do not create child functions for phony - constructs. - (check_omp_nesting_restrictions): Handle GIMPLE_OMP_GRID_BODY. - (scan_omp_1_op): Checking assert we are not remapping to - ERROR_MARK. Also also handle GIMPLE_OMP_GRID_BODY. - (parallel_needs_hsa_kernel_p): New function. - (expand_parallel_call): Register apprpriate parallel child - functions as HSA kernels. - (grid_launch_attributes_trees): New type. - (grid_attr_trees): New variable. - (grid_create_kernel_launch_attr_types): New function. - (grid_insert_store_range_dim): Likewise. - (grid_get_kernel_launch_attributes): Likewise. - (get_target_argument_identifier_1): Likewise. - (get_target_argument_identifier): Likewise. - (get_target_argument_value): Likewise. - (push_target_argument_according_to_value): Likewise. - (get_target_arguments): Likewise. - (expand_omp_target): Call get_target_arguments instead of looking - up for teams and thread limit. - (grid_expand_omp_for_loop): New function. - (grid_arg_decl_map): New type. - (grid_remap_kernel_arg_accesses): New function. - (grid_expand_target_kernel_body): New function. - (expand_omp): Call it. - (lower_omp_for): Do not emit phony constructs. - (lower_omp_taskreg): Do not emit phony constructs but create for them - a temporary variable receiver_decl. - (lower_omp_taskreg): Do not emit phony constructs. - (lower_omp_teams): Likewise. - (lower_omp_grid_body): New function. - (lower_omp_1): Call it. - (grid_reg_assignment_to_local_var_p): New function. - (grid_seq_only_contains_local_assignments): Likewise. - (grid_find_single_omp_among_assignments_1): Likewise. - (grid_find_single_omp_among_assignments): Likewise. - (grid_find_ungridifiable_statement): Likewise. - (grid_target_follows_gridifiable_pattern): Likewise. - (grid_remap_prebody_decls): Likewise. - (grid_copy_leading_local_assignments): Likewise. - (grid_process_kernel_body_copy): Likewise. - (grid_attempt_target_gridification): Likewise. - (grid_gridify_all_targets_stmt): Likewise. - (grid_gridify_all_targets): Likewise. - (execute_lower_omp): Call grid_gridify_all_targets. - (make_gimple_omp_edges): Handle GIMPLE_OMP_GRID_BODY. - * tree-core.h (omp_clause_code): Added OMP_CLAUSE__GRIDDIM_. - (tree_omp_clause): Added union field dimension. - * tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__GRIDDIM_. - * tree.c (omp_clause_num_ops): Added number of arguments of - OMP_CLAUSE__GRIDDIM_. - (omp_clause_code_name): Added name of OMP_CLAUSE__GRIDDIM_. - (walk_tree_1): Handle OMP_CLAUSE__GRIDDIM_. - * tree.h (OMP_CLAUSE_GRIDDIM_DIMENSION): New. - (OMP_CLAUSE_SET_GRIDDIM_DIMENSION): Likewise. - (OMP_CLAUSE_GRIDDIM_SIZE): Likewise. - (OMP_CLAUSE_GRIDDIM_GROUP): Likewise. - * passes.def: Schedule pass_ipa_hsa and pass_gen_hsail. - * tree-pass.h (make_pass_gen_hsail): Declare. - (make_pass_ipa_hsa): Likewise. - * ipa-hsa.c: New file. - * lto-section-in.c (lto_section_name): Add hsa section name. - * lto-streamer.h (lto_section_type): Add hsa section. - * timevar.def (TV_IPA_HSA): New. - * hsa-brig-format.h: New file. - * hsa-brig.c: New file. - * hsa-dump.c: Likewise. - * hsa-gen.c: Likewise. - * hsa.c: Likewise. - * hsa.h: Likewise. - * toplev.c (compile_file): Call hsa_output_brig. - * hsa-regalloc.c: New file. - - 2016-01-18 Jeff Law - - PR tree-optimization/69320 - * tree-ssa-dom.c (record_edge_info): For comparisons against a boolean - ranged object, do nothing if the RHS constant is not [0..1]. - (optimize_stmt): Comparing a boolean ranged object against a - constant outside [0..1] results in a compile-time constant. - - * tree-ssanames.c (ssa_name_has_boolean_range): Remove unnecessary - test. + * vec-perm-indices.c (vec_perm_indices::series_p): Give examples + of usage. - 2016-01-18 Sandra Loosemore - - * doc/invoke.texi (Invoking GCC): Add new section to menu. - (Option Summary): Update to reflect new section and moved options. - (C++ Dialect Options): Move -fstats to new section. - (Debugging Options): Move all dump, statistics, and other GCC - developer options to new section. Rewrite section introduction - and re-order remaining options to put the more basic ones first. - (Optimization Options): Move -fira-verbose and -flto-report* to - new section. - (Developer Options): New section incorporating moved options. - * doc/cppopts.texi (-dM): Update cross-reference. - - 2016-01-18 Richard Henderson - - PR target/69176 - * config/aarch64/aarch64.md (add3): Move long immediate - operands to pseudo only if CSE is expected. Split long immediate - operands only after reload, and for the stack pointer. - (*add3_pluslong): Remove. - (*addsi3_aarch64, *adddi3_aarch64): Merge into... - (*add3_aarch64): ... here. Add r/rk/Upl alternative. - (*addsi3_aarch64_uxtw): Add r/rk/Upl alternative. - (*add3 peepholes): New. - (*add3 splitters): New. - * config/aarch64/constraints.md (Upl): New. - * config/aarch64/predicates.md (aarch64_pluslong_strict_immedate): New. - - 2016-01-18 Richard Biener - - PR tree-optimization/69297 - * tree-vect-slp.c (vect_bb_slp_scalar_cost): Count each scalar - stmt at most once. - (vect_bb_vectorization_profitable_p): Clear visited flag again. - - 2016-01-18 Yuri Rumyantsev - - PR middle-end/68542 - * fold-const.c (fold_binary_op_with_conditional_arg): Bail out for case - of mixind vector and scalar types. - (fold_relational_const): Add handling of vector - comparison with boolean result. - * tree-cfg.c (verify_gimple_comparison): Add argument CODE, allow - comparison of vector operands with boolean result for EQ/NE only. - (verify_gimple_assign_binary): Adjust call for verify_gimple_comparison. - (verify_gimple_cond): Likewise. - * tree-vrp.c (extract_code_and_val_from_cond_with_ops): Modify check on - valid type of VAL. - - 2016-01-18 Joseph Myers - - * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): Require - !TARGET_OCTEON. - - 2016-01-18 Richard Biener - - PR middle-end/69308 - * gimple.c (gimple_could_trap_p_1): Handle GIMPLE_COND. - - 2016-01-18 Tom de Vries - - * passes.def: Add pass_parallelize_loops to pass_oacc_kernels. - - 2016-01-18 Tom de Vries - - * omp-low.c (set_oacc_fn_attrib): Make extern. - * omp-low.h (set_oacc_fn_attrib): Declare. - * tree-parloops.c (struct reduction_info): Add reduc_addr field. - (create_call_for_reduction_1): Handle case that reduc_addr is non-NULL. - (create_parallel_loop, gen_parallel_loop, try_create_reduction_list): - Add and handle function parameter oacc_kernels_p. - (find_reduc_addr, get_omp_data_i_param): New function. - (ref_conflicts_with_region, oacc_entry_exit_ok_1) - (oacc_entry_exit_single_gang, oacc_entry_exit_ok): New function. - (parallelize_loops): Add and handle function parameter oacc_kernels_p. - Calculate dominance info. Skip loops that are not in a kernels region - in oacc_kernels_p mode. Skip inner loops of parallelized loops. - (pass_parallelize_loops::execute): Call parallelize_loops with - oacc_kernels_p argument. - (pass_parallelize_loops::clone, pass_parallelize_loops::set_pass_param): - New member function. - (pass_parallelize_loops::bool oacc_kernels_p): New member var. - * passes.def: Add argument to pass_parallelize_loops instantation. - - 2016-01-18 Tom de Vries - - * tree-parloops.c (pass_parallelize_loops::execute): Allow - pass_parallelize_loops to be run outside the loop pipeline. - - 2016-01-18 Alan Lawrence - - * tree-scalar-evolution.c (follow_copies_to_constant): New. - (analyze_initial_condition, analyze_scalar_evolution_1): Call previous. + 2018-01-29 Michael Meissner - 2016-01-18 Alan Lawrence - - PR target/63679 - * tree-ssa-scopedtables.c (avail_expr_hash): Hash MEM_REF and ARRAY_REF - using get_ref_base_and_extent. - (equal_mem_array_ref_p): New. - (hashable_expr_equal_p): Add call to previous. - - 2016-01-18 Alan Lawrence - - PR target/63679 - * tree-sra.c (disqualified_constants, constant_decl_p): New. - (sra_initialize): Allocate disqualified_constants. - (sra_deinitialize): Free disqualified_constants. - (disqualify_candidate): Update disqualified_constants when appropriate. - (create_access): Scan for constant-pool entries as we go along. - (scalarizable_type_p): Add check against type_contains_placeholder_p. - (maybe_add_sra_candidate): Allow constant-pool entries. - (load_assign_lhs_subreplacements): Bind debug for constant pool vars. - (initialize_constant_pool_replacements): New. - (sra_modify_assign): Avoid mangling assignments created by previous, - and don't generate writes into constant pool. - (sra_modify_function_body): Call initialize_constant_pool_replacements. - - 2016-01-18 Ilya Enkovich + 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. - * config/i386/i386.c (scalar_to_vector_candidate_p): Support - andnot instruction. - (scalar_chain::convert_op): Likewise. - * config/i386/i386.md (*andndi3_doubleword): New. + 2018-01-29 Richard Biener + Kelvin Nilsen - 2016-01-18 Richard Biener + PR bootstrap/80867 + * tree-vect-stmts.c (vectorizable_call): Don't call + targetm.vectorize_builtin_md_vectorized_function if callee is + NULL. - PR tree-optimization/69170 - * tree-vect-slp.c (vect_build_slp_tree): Verify we are not - building a vector from scalar results of a pattern stmt. + 2018-01-22 Carl Love - 2016-01-18 Jakub Jelinek + * doc/extend.tex: Fix typo in second arg in + __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}. - * haifa-sched.c (autopref_multipass_init): Work around - -Wmaybe-uninitialized warning. + 2018-01-29 Richard Biener - 2016-01-18 Thomas Preud'homme + 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. - * config/arm/arm.c (thumb1_reorg): Check that the comparison is - against the constant 0. + 2018-01-29 Richard Biener - 2016-01-17 Bill Schmidt + PR tree-optimization/84057 + * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already + removed paths when removing edges. - PR tree-optimization/68799 - * gimple-ssa-strength-reduction.c (create_phi_basis): Directly - look up phi candidates in the statement-candidate map. - (phi_add_costs): Likewise. - (record_phi_increments): Likewise. - (phi_incr_cost): Likewise. - (ncd_with_phi): Likewise. - (all_phi_incrs_profitable): Likewise. + 2018-01-27 H.J. Lu - 2016-01-17 Jakub Jelinek + * doc/invoke.texi: Replace -mfunction-return==@var{choice} with + -mfunction-return=@var{choice}. - * omp-low.c (mark_loops_in_oacc_kernels_region): Work around - -Wmaybe-uninitialized warning. + 2018-01-27 Bernd Edlinger - 2016-01-16 Sandra Loosemore + 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. - * doc/invoke.texi (Invoking GCC): Add new section to menu. - (Option Summary): Update to reflect new section and moved options. - (C++ Dialect Options): Move -fvtable-verify and related options. - (Debugging Options): Move Sanitizer, Pointer Bounds Checker, - and profiling-related options. - (Optimization Options): Move profile generation options and - -fstack-protector and related options. - (Instrumentation Options): New section incorporating moved options. - (Code Generation Options): Move -finstrument-functions and - related options, -fstack-check, -fstack-limit*, and -fbounds-check. + 2018-01-27 Jakub Jelinek - 2016-01-16 Tom de Vries + PR middle-end/84040 + * sched-deps.c (sched_macro_fuse_insns): Return immediately for + debug insns. - * passes.def: Move pass_expand_omp_ssa out of pass_parallelize_loops. + 2018-01-26 Jim Wilson - 2016-01-16 Tom de Vries + * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New. - * omp-low.c (expand_omp_atomic_fetch_op): Release defs of update stmt. + * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs + specified. - 2016-01-16 Richard Sandiford + 2018-01-26 Kyrylo Tkachov - * hash-table.h (hash_table::empty): Turn into an inline wrapper - that checks whether the table is already empty. Rename the - original implementation to... - (hash_table::empty_slot): ...this new private function. + * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS + and CMP + SUB-immediate -> SUBS. - 2016-01-15 David Malcolm + 2018-01-26 Martin Sebor - PR diagnostic/68899 - * diagnostic-show-locus.c (layout::print_source_line): Move x - offset of line until after call to - get_line_width_without_trailing_whitespace. + 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. - 2016-01-15 Jeff Law + 2018-01-26 Uros Bizjak - PR tree-optimization/69270 - * tree-ssanames.c (ssa_name_has_boolean_range): Moved here from - tree-ssa-dom.c. Improve test for [0..1] ranve from VRP. - * tree-ssa-dom.c (ssa_name_has_boolean_range): Remove. - * tree-ssanames.h (ssa_name_has_boolean_range): Prototype. - * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use - ssa_name_has_boolean_range and constant_boolean_node. + 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. - 2016-01-15 Vladimir Makarov + 2018-01-26 Richard Biener - PR rtl-optimization/69030 - * lra-spills.c (remove_pseudos): Check nrefs and make the function - returning bool. - (spill_pseudos): Delete debug insn for dead pseudo. - (lra_spill): Initiate spill_hard_reg and slots memory separately. + 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. - 2016-01-15 Jiong Wang + 2018-01-26 Jakub Jelinek - * config/aarch64/aarch64-builtins.c (aarch64_types_unopus_qualifiers): - New. - (TYPES_UNOPUS): Likewise. - * config/aarch64/aarch64-simd-builtins.def (lbtruncuv2sf): Correct - builtin type, from UNOP to UNOPUS. - (lbtruncuv4sf): Likewise. - (lbtruncuv2df): Likewise. - (lrounduv2sf): Likewise. - (lrounduv4sf): Likewise. - (lrounduv2df): Likewise. - (lroundusf): Likewise. - (lroundusf): Likewise. - (lceiluv2sf): Likewise. - (lceiluv4sf): Likewise. - (lceiluv2df): Likewise. - (lceilusf): Likewise. - (lceiludf): Likewise. - (lflooruv2sf): Likewise. - (lflooruv4sf): Likewise. - (lflooruv2df): Likewise. - (lfloorusf): Likewise. - (lfloorudf): Likewise. - (lfrintnuv2sf): Likewise. - (lfrintnuv4sf): Likewise. - (lfrintnuv2df): Likewise. - (lfrintnusf): Likewise. - (lfrintnudf): Likewise. - * config/aarch64/arm_neon.h (vcvt_u32_f32): Remove unncessary type - conversion. - (vcvtq_u32_f32): Likewise. - (vcvtq_u64_f64): Likewise. - (vcvta_u32_f32): Likewise. - (vcvtaq_u32_f32): Likewise. - (vcvtaq_u64_f64): Likewise. - (vcvtm_u32_f32): Likewise. - (vcvtmq_u32_f32): Likewise. - (vcvtmq_u64_f64): Likewise. - (vcvtn_u32_f32): Likwise. - (vcvtnq_u32_f32): Likewise. - (vcvtnq_u64_f64): Likewise. - (vcvtp_u32_f32): Likewise. - (vcvtpq_u32_f32): Likewise. - (vcvtpq_u64_f64): Likewise. - (vcvtmd_u64_f64): Likewise. - (vcvtms_u32_f32): Likewise. - (vcvtad_u64_f64): Likewise. - (vcvtas_u32_f32): Likewise. - (vcvtnd_u64_f64): Likewise. - (vcvtns_u32_f32): Likewise. - (vcvtpd_u64_f64): Likewise. - (vcvtps_u32_f32): Likewise. + 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. - 2016-01-15 Kyrylo Tkachov + 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. - * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Handle - CSEL of zero_extended registers. + 2018-01-26 Claudiu Zissulescu - 2016-01-15 Kyrylo Tkachov + * 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. - * config/aarch64/aarch64.c (aarch64_rtx_costs, COMPARE case): - Handle COMPARE of ZERO_EXTRACT against zero form of TST-immediate. + 2018-01-26 Sebastian Perta - 2016-01-15 Kyrylo Tkachov + * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const + avoid addition with 0 and use incw and decw where possible. - * config/aarch64/aarch64.c (aarch64_process_one_target_attr): Return - false when argument string is not found in the attributes table - at all. + 2018-01-26 Richard Biener - 2016-01-15 David Edelsohn + 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. - PR target/68609 - * config/rs6000/rs6000.c (rs6000_emit_msub): Delete. - (rs6000_emit_swsqrt): Convert to Goldschmidt's Algorithm - * config/rs6000/rs6000.md (sqrt2): Limit swsqrt to high - precision estimate. + 2018-01-26 Rainer Orth - 2016-01-15 Richard Biener + * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove. + * configure.ac (hidden_linkonce): New test. + * configure: Regenerate. + * config.in: Regenerate. - PR tree-optimization/66856 - * tree-vect-loop.c (vect_transform_loop): Free SLP instances here. - * tree-vect-slp.c (vect_free_slp_tree): Decrement stmt reference count. - (vect_create_new_slp_node): Increment stmt reference count. - (vect_get_and_check_slp_defs): Make sure stmts are nor already in - an SLP tree before swapping operands. - (vect_build_slp_tree): Likewise. - (destroy_bb_vec_info): Free stmt info after SLP instances. - * tree-vect-stmts.c (new_stmt_vec_info): Initialize reference count. - * tree-vectorizer.h (struct _stmt_vec_info): Add num_slp_uses field. - (STMT_VINFO_NUM_SLP_USES): New macro. + 2018-01-26 Julia Koval - 2016-01-15 Richard Biener + * 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. - PR debug/69137 - * dwarf2out.c (add_linkage_name_raw): New function split out from ... - (add_linkage_name): ... here. - (gen_typedef_die): Use add_linkage_name_raw instead of - add_linkage_attr to delay DECL_ASSEMBLER_NAME computation - if necessary. + 2018-01-26 Alan Modra - 2016-01-15 Cesar Philippidis + PR target/84033 + * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude + UNSPEC_VBPERMQ. Sort other unspecs. - * gimplify.c (oacc_default_clause): Decode reference and pointer - types for both kernels and parallel regions. + 2018-01-25 David Edelsohn - 2016-01-15 Richard Sandiford + * doc/invoke.texi (PowerPC Options): Document 'native' cpu type. - PR middle-end/69246 - * calls.c (emit_call_1): Force n_popped to zero for sibcalls. + 2018-01-25 Jan Hubicka - 2016-01-15 Ilya Enkovich + 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. - * config/i386/i386.c (scalar_chain::compute_convert_gain): Fix typo. - (convert_scalars_to_vector): Likewise. + 2018-01-25 Jakub Jelinek - 2016-01-15 Jonathan Wakely + 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. - * doc/extend.texi (Type Traits): Fix grammar. + 2018-01-25 Tom de Vries - 2016-01-15 Martin Jambor + PR target/84028 + * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call + for neutered workers. - * tree-inline.c (remap_decl): Use existing dclarations if - remapping a type and prevent_decl_creation_for_types. - (replace_locals_stmt): Do an initial remapping of non-VLA typed - decls first. Do real remapping with - prevent_decl_creation_for_types set. - * tree-inline.h (copy_body_data): New field - prevent_decl_creation_for_types, moved remap_var_for_cilk to avoid - padding. + 2018-01-24 Joseph Myers - 2016-01-15 Dominik Vogt + PR target/68467 + * config/m68k/m68k.c (m68k_promote_function_mode): New function. + (TARGET_PROMOTE_FUNCTION_MODE): New macro. - * config/s390/s390.opt (mmvcle): More verbose help text. + 2018-01-24 Jeff Law - 2016-01-15 Dominik Vogt + 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. - * config/s390/s390.opt: Add period to -mzvector option text. + 2018-01-24 Vladimir Makarov - 2016-01-15 Richard Biener + PR target/84014 + * ira-build.c (setup_min_max_allocno_live_range_point): Set up + min/max for never referenced object. - PR tree-optimization/68961 - * tree-vect-slp.c (vect_analyze_slp_cost_1): Consider cost - of invariants in stores again. + 2018-01-24 Jakub Jelinek - 2016-01-15 Sebastian Huber + 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. - * config/arm/t-rtems: Add cortex-m7/fpv5-d16 multilib. + 2018-01-24 Richard Sandiford - 2016-01-15 Ilya Enkovich + PR tree-optimization/83979 + * fold-const.c (fold_comparison): Use constant_boolean_node + instead of boolean_{true,false}_node. - * config/i386/i386.c (ix86_expand_branch): Don't split - DI mode xor instruction to SI mode. + 2018-01-24 Jan Hubicka - 2016-01-15 Jan Hubicka + * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls + with zero counts. - PR ipa/68148 - * ipa-icf.c (sem_function::merge): Virtual functions may become - reachable even if they address is not taken and there are no - idrect calls. + 2018-01-24 Bill Schmidt - 2016-01-15 Jan Hubicka + * 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. - * lto-streamer-out.c (subtract_estimated_size): New function. - (get_symbol_initial_value): Use it. + 2018-01-24 Tom de Vries - 2016-01-15 Christian Bruel + 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. - PR target/65837 - * config/arm/arm-builtins.c (ARM_BUILTIN_CRYPTO_BASE): New enum tag. - (arm_init_neon_builtins_internal): Rename arm_init_neon_builtins, - (arm_init_crypto_builtins_internal): Rename arm_init_crypto_builtins. - use add_builtin_function_ext_scope instead of add_builtin_function. - (neon_set_p, neon_crypto_set_p): Remove. - (arm_init_builtins): Always call arm_init_neon_builtins and - arm_init_crypto_builtins. - (arm_expand_builtin): Check that builtins are allowed for the arch. - * config/arm/arm-protos.h (arm_init_neon_builtins): Remove prototype. - * config/arm/arm.c (arm_valid_target_attribute_tree): Remove - arm_init_neon_builtins call. + 2018-01-24 Tom de Vries - 2016-01-15 Richard Biener + 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. - PR tree-optimization/69117 - * tree-ssa-sccvn.h (struct vn_ssa_aux): Add info member. - * tree-ssa-sccvn.c (set_ssa_val_to): Save and adjust SSA name info - of the leader conservatively. - (free_scc_vn): Restore original SSA name infos. + 2018-01-24 Richard Biener - 2016-01-14 Jeff Law + PR tree-optimization/83176 + * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. } + operands. - PR tree-optimization/69270 - * tree-ssa-dom.c (ssa_name_has_boolean_range): If the type has a - single bit of precision, verify it's also unsigned. - (record_edge_info): Use constant_boolean_node rather than fold_convert - to convert boolean_true/boolean_false to the right type. + 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. - 2016-01-14 Richard Henderson + 2018-01-23 Jakub Jelinek - PR rtl-opt/69014 - * loop-doloop.c (record_reg_sets): New. - (doloop_optimize): Reject the transform if the sequence - clobbers registers live at the end of the loop block. - (doloop_optimize_loops): Enable df_live if needed. + PR c++/83918 + * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than + VIEW_CONVERT_EXPR to wrap CONST_DECLs. - 2016-01-14 Michael Meissner + 2018-01-22 Jakub Jelinek - * config/rs6000/rs6000-builtin.def: Revert 2016-01-13 change. - * config/rs6000/rs6000.c: Likewise. - * config/rs6000/rs6000.h: Likewise. - * config/rs6000/rs6000.md: Likewise. - * doc/extend.texi: Likewsie. + PR tree-optimization/83957 + * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove + semicolon after for body surrounded by braces. - 2016-01-14 Jeff Law + 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. - * tree-ssa-dom.c (ssa_name_has_boolean_range): Fix comment - typo. + 2018-01-22 David Malcolm - 2016-01-14 Richard Henderson + PR tree-optimization/69452 + * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove + decl. - PR c/69272 - PR tree-opt/68964 - * trans-mem.c (tm_log_emit_stmt): Fix unit size to bit size. - * tree.c (build_tm_vector_builtins): Use builtin_decl_explicit_p - instead of builtin_decl_declared_p to test for declaration. + 2018-01-22 Sebastian Perta - 2016-01-14 Nicklas Bo Jensen + * 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. - * doc/loop.texi (Loop Analysis and Representation): Document - loop_depth function. + 2018-01-22 Sebastian Perta - 2016-01-14 Tom de Vries + * 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. - PR tree-optimization/68773 - * omp-low.c (expand_omp_target): Don't set force_output. - * varpool.c (varpool_node::get_create): Same. - * lto-cgraph.c (input_offload_tables): Mark entries in offload_vars and - offload_funcs with force_output. + 2018-01-22 Michael Meissner - 2016-01-14 Jakub Jelinek + 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. - PR debug/69244 - * lra-eliminations.c (move_plus_up): Don't change anything if either - the outer or inner subreg mode is not MODE_INT. - * dwarf2out.c (mem_loc_descriptor): For SUBREG, if outer mode is - integral <= DWARF2_ADDR_SIZE, convert to untyped afterwards. + 2018-01-19 Andreas Krebbel - 2016-01-14 Alan Lawrence + PR rtl-optimization/83147 + * lra-constraints.c (remove_inheritance_pseudos): Use + lra_substitute_pseudo_within_insn. - * doc/md.texi (reduc_smin_@var{m}, reduc_smax_@var{m}, - reduc_umin_@var{m}, reduc_umax_@var{m}, reduc_splus_@var{m}, - reduc_uplus_@var{m}): Remove. - * expr.c (expand_expr_real_2): Remove expansion path for - reduc_[us](min|max|plus) optabs. - * optabs-tree.c (scalar_reduc_to_vector): Remove. - * optabs-tree.h (scalar_reduc_to_vector): Remove. - * optabs.def (reduc_smax_optab, reduc_smin_optab, reduc_splus_optab, - reduc_umax_optab, reduc_umin_optab, reduc_uplus_optab): Remove. - * tree-vect-loop.c (vectorizable_reduction): Remove test for - reduc_[us](min|max|plus) optabs. + 2018-01-19 Tom de Vries + Cesar Philippidis - 2016-01-14 Alan Lawrence + PR target/83920 + * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround. - * config/mips/mips-ps-3d.md (reduc_splus_v2sf): Remove. - (reduc_plus_scal_v2sf): New. - (reduc_smax_v2sf): Rename to... - (reduc_smax_scal_v2sf): ...here, make result SFmode, add vec_extract. - (reduc_smin_v2sf): Rename to... - (reduc_smin_scal_v2sf): ...here, make result SFmode, add vec_extract. - - 2016-01-14 Jan Hubicka + 2018-01-19 Cesar Philippidis - * alias.c (compare_base_symbol_refs): New function. - (rtx_equal_for_memref_p, base_alias_check, memrefs_conflict_p): Use - it. + PR target/83790 + * config/nvptx/nvptx.c (output_init_frag): Don't use generic address + spaces for function labels. - 2016-01-14 Jakub Jelinek + 2018-01-19 Martin Liska - PR middle-end/68146 - PR tree-optimization/69155 - * tree-complex.c: Include cfganal.h. - (phis_to_revisit): New variable. - (extract_component): Add phiarg_p argument. Assert that returned - SSA_NAME has non-NULL SSA_NAME_DEF_STMT unless phiarg_p is true. - (update_phi_components): Partly rewrite to use loop over real/imag - components instead of code duplication. If extract_component returns - SSA_NAME with NULL SSA_NAME_DEF_STMT, store SSA_NAME_VAR or - create_tmp_reg into the PHI node instead, and mention the phi triplet - in phis_to_revisit. - (tree_lower_complex): Walk bbs in rpo order. Adjust phis recorded - in phis_to_revisit at the end. + * 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 - 2016-01-14 Richard Biener + 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. - PR tree-optimization/68060 - * tree-vect-loop.c (vect_is_simple_reduction): Check the - outer loop reduction is only used in the inner loop before - detecting a double reduction. + * 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 - 2016-01-14 Jakub Jelinek + 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. - PR target/68269 - * combine.c (expand_field_assignment): Punt if compute_mode is - unsupported scalar mode. + 2018-01-10 Kelvin Nilsen - 2016-01-14 Richard Biener + * 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. - PR tree-optimization/66856 - * tree-vect-slp.c (vect_build_slp_tree): Refactor to build - SLP node only if it built successfully. - (vect_analyze_slp_instance): Adjust. + 2018-01-13 Richard Sandiford - 2016-01-14 Jeff Law + * 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. - PR tree-optimization/69270 - * tree-ssa-dom.c (ssa_name_has_boolean_range): New function. - (record_edge_info): Use it. Convert boolean_{true,false}_node - to the type of op0. + 2018-01-13 Richard Sandiford + Alan Hayward + David Sherwood - 2016-01-13 Jan Hubicka + * fold-const.c (fold_binary_loc): Check the argument types + rather than the result type when testing for a vector operation. - PR ipa/66487 - * ipa-polymorphic-call.c (inlined_polymorphic_ctor_dtor_block_p): - use block_ultimate_origin - (noncall-stmt_may_be_vtbl_ptr_store): Likewise. + 2018-01-13 Richard Sandiford - 2016-01-13 Sandra Loosemore + * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document. + * doc/tm.texi: Regenerate. - * doc/invoke.texi (Submodel Options): Rename section to - "Machine-Dependent Options" to better reflect its content. - Rewrite introductory text to remove archaic CPU names. - Update references. + 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. - 2016-01-13 Sandra Loosemore - - * doc/invoke.texi (Code Gen Options): Move section up in file, - before target-specific options. Update menu and option summary - to reflect the new section ordering. + 2018-01-12 Martin Liska - 2016-01-13 Jonathan Wakely + * profile-count.h (enum profile_quality): Use 0 as invalid + enum value of profile_quality. - * doc/invoke.texi (C Dialect Options): Adjust -std default for C++. - (C++ Dialect Options): Add cross-reference to -std option. - * doc/standards.texi (C++ Language): Document C++14 support. + 2018-01-12 Chung-Ju Wu - 2016-01-13 Michael Meissner + * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and + -mext-string options. - * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2): Add support - for pack/unpack functions for __ibm128. - (PACK_IF): Likewise. - (UNPACK_IF): Likewise. + 2018-01-12 Richard Biener - * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add - support for __ibm128 pack/unpack functions. - (rs6000_invalid_builtin): Likewise. - (rs6000_init_builtins): Likewise. - (rs6000_opt_masks): Likewise. - - * config/rs6000/rs6000.h (MASK_FLOAT128): Add short name. - (RS6000_BTM_FLOAT128): Add support for __ibm128 pack/unpack - functions - (RS6000_BTM_COMMON): Likewise. - - * config/rs6000/rs6000.md (f128_vsx): New mode attribute. - (unpack): Use FMOVE128_FPR iterator instead of FMOVE128, to - disallow __builtin_{pack,unpack}_longdouble if long double is IEEE - 128-bit floating point. Add support for the double values to be - in Altivec registers for TF/IF packing and unpacking, but restrict - TD packing sub-fields to be FPR registers. Don't allow overlapped - register support for packing. Allow pack inputs to be memory - locations. Don't build generator functions for unpack_dm - and unpack_nodm. - (unpack_dm): Likewise. - (unpack_nodm): Likewise. - (pack): Likewise. - - * config/rs6000/rs6000-builtin.def (__builtin_pack_ibm128): Add - built-in functions to pack/unpack explicit __ibm128 values. - (__builtin_unpack_ibm128): Likewise. - - * doc/extend.texi (PowerPC Built-in Functions): Document - __builtin_pack_ibm128 and __builtin_unpack_ibm128. - - 2016-01-13 Bernd Schmidt - - PR c/66208 - * c-common.c (check_function_nonnull): Remove unnecessary declaration. - Add new arg loc and pass it down as context. - (check_nonnull_arg): Don't mark ctx arg as unused. Use it as a pointer - to the location to use for the warning. - (check_function_arguments): New arg loc. All callers changed. Pass - it to check_function_nonnull. - * c-common.h (check_function_arguments): Adjust declaration. - - 2016-01-13 Jakub Jelinek - - PR tree-optimization/69156 - * gimple.c (validate_type): Removed. - (gimple_builtin_call_types_compatible_p): Use - useless_type_conversion_p instead of validate_type. - * value-prof.c (gimple_stringop_fixed_value): Fold - icall_size to correct type. - - 2016-01-13 Jonathan Wakely - - * doc/extend.texi (__atomic Builtins): Clarify compare_exchange - effects. - - 2016-01-13 Richard Henderson - - PR tree-opt/68964 - * target.def (builtin_tm_load, builtin_tm_store): Remove. - * config/i386/i386.c (ix86_builtin_tm_load): Remove. - (ix86_builtin_tm_store): Remove. - (TARGET_VECTORIZE_BUILTIN_TM_LOAD): Remove. - (TARGET_VECTORIZE_BUILTIN_TM_STORE): Remove. - * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_TM_LOAD): Remove. - (TARGET_VECTORIZE_BUILTIN_TM_STORE): Remove. - * doc/tm.texi: Rebuild. - - * gtm-builtins.def (BUILT_IN_TM_MEMCPY_RNWT): New. - (BUILT_IN_TM_MEMCPY_RTWN): New. - * trans-mem.c (tm_log_emit_stmt): Rearrange code for better - fallback from vector to integer helpers. - (build_tm_load): Handle vector types directly, instead of - via target hook. - (build_tm_store): Likewise. - (expand_assign_tm): Prepare for register types not handled by - the above. Copy them to memory and use memcpy. - * tree.c (tm_define_builtin): New. - (find_tm_vector_type): New. - (build_tm_vector_builtins): New. - (build_common_builtin_nodes): Call it. - - 2016-01-13 Uros Bizjak - - * config/i386/i386.h (TARGET_FLT_EVAL_METHOD): Return -1 for - TARGET_SSE_MATH without TARGET_SSE2. Rewrite. - - 2016-01-13 Tom de Vries - - PR tree-optimization/69169 - * tree-ssa-structalias.c (create_variable_info_for_1): Add and handle - handled_struct_type param. - (create_variable_info_for, intra_create_variable_infos): Call - create_variable_info_for_1 with extra arg. - - 2016-01-13 Yvan Roux - - * config/arm/arm-arches.def: Remove spurious whitespace in "armv8.1-a" - and "armv8.1-a+crc" entries. - - 2016-01-13 Alexander Fomin - - PR target/69228 - * config/i386/sse.md (define_expand "avx512pf_gatherpfsf"): - Change first operand predicate from register_or_constm1_operand - to register_operand. - (define_expand "avx512pf_gatherpfdf"): Likewise. - (define_expand "avx512pf_scatterpfsf"): Likewise. - (define_expand "avx512pf_scatterpfdf"): Likewise. - (define_insn "*avx512pf_gatherpfsf"): Remove. - (define_insn "*avx512pf_gatherpfdf"): Likewise. - (define_insn "*avx512pf_scatterpfsf"): Likewise. - (define_insn "*avx512pf_scatterpfdf"): Likewise. - * config/i386/i386.c (ix86_expand_builtin): Remove first operand - comparison with constm1_rtx from vec_prefetch_gen part. - - 2016-01-13 Richard Biener - - PR tree-optimization/69013 - * tree-ssa-uninit.c (prune_uninit_phi_opnds_in_unrealizable_paths): - Exchange assert for a test. - - 2016-01-13 Andreas Krebbel - - PR target/69247 - * config/s390/s390.md (bswaphi splitter): Use simplify_gen_subreg. - - 2016-01-13 Richard Biener - - PR tree-optimization/69242 - * tree-ssa-sccvn.c (visit_reference_op_load): Replace bogus - assert with a check. - - 2016-01-13 Richard Biener - - PR tree-optimization/69186 - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): - Properly guard vect_update_misalignment_for_peel call. - - 2016-01-12 Jeff Law - - PR tree-optimization/pr67755 - * tree-ssa-threadupdate.c (struct ssa_local_info_t): Add new field - "need_profile_correction". - (thread_block_1): Initialize new field to false by default. If we - have multiple thread paths through a common joiner to different - final targets, then set new field to true. - (compute_path_counts): Only do count adjustment when it's really - needed. + * 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. - 2016-01-12 Sandra Loosemore + 2018-01-11 Michael Meissner - * doc/invoke.texi (Spec Files): Move section down in file, past - all command-line option descriptions. + * 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. - 2016-01-12 Trevor Saunders + 2018-01-11 Bill Schmidt - PR middle-end/54809 - * doc/gty.texi: Remove documentation of mark_hook. - * gengtype.c (struct write_types_data): Remove code to support - mark_hook attribute. - (walk_type): Likewise. - (write_func_for_structure): Likewise. + * 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. - 2016-01-12 Sandra Loosemore + 2018-01-11 Jakub Jelinek - * doc/invoke.texi (Option Summary) Move -no-canonical-prefixes to - Directory Options, and -specs= to Overall Options. - (Overall Options): Adjust similarly. Reorder to group related - options together. Make -specs= cross-reference the spec file details. - (Directory Options): Adjust similarly. + 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. - 2016-01-12 Jeff Law + 2018-01-11 Kyrylo Tkachov - * tree-ssa-threadupdate.c: Various whitespace and typo fixes. + * 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. - 2016-01-12 Olivier Hainque + 2018-01-11 Oleg Endo - * gcc.c (spec_undefvar_allowed): New global. - (process_command): Set to true when running for --version or --help, - alone or together. - (getenv_spec_function): When the variable is not defined, use the - variable name as the variable value if we're allowed not to issue - a fatal error. + PR target/81821 + * config/rx/rx.md (BW): New mode attribute. + (sync_lock_test_and_setsi): Add mode suffix to insn output. - 2016-01-12 Bin Cheng + 2018-01-11 Richard Biener - PR tree-optimization/68911 - * tree-vrp.c (adjust_range_with_scev): Check overflow in range - information computed for expression "init + nit * step". + 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. - 2016-01-12 Sandra Loosemore + 2018-01-11 Richard Sandiford + Alan Hayward + David Sherwood - * doc/invoke.texi (Invoking GCC): Copy-edit. Incorporate information - about name of GCC executable. Remove deleted node from menu. - (Directory Options) <-B>: Remove cross-reference to deleted node. - (Target Options): Delete section. + * 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. - 2016-01-12 Christian Bruel + 2018-01-11 Richard Sandiford - PR target/69180 - * config/arm/arm-c.c (arm_pragma_target_parse): Set NODE_CONDITIONAL - for __ARM_NEON_FP, __ARM_FP, _ARM_FEATURE_LDREX. + * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int): + Use scalar_float_mode. - 2016-01-12 Jakub Jelinek + 2018-01-11 Richard Sandiford - PR target/69198 - * config/i386/i386.c (ix86_expand_special_args_builtin): Ensure - aligned_mem is properly set for AVX512-VL floating point masked - stores. + * 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 target/69175 - * ifcvt.c (cond_exec_process_if_block): When removing the last - insn from then_bb, remove also any possible barriers that follow it. + PR tree-optimization/83501 + PR tree-optimization/81703 - 2016-01-12 H.J. Lu + * tree-ssa-strlen.c (get_string_cst): Rename... + (get_string_len): ...to this. Handle global constants. + (handle_char_store): Adjust. - PR target/68456 - PR target/69226 - * config/i386/iamcu.h (SIZE_TYPE): New macro. - (PTRDIFF_TYPE): Likewise. - (WCHAR_TYPE): Likewise. - (WCHAR_TYPE_SIZE): Likewise. - (STDINT_LONG32): Likewise. + 2018-01-10 Kito Cheng + Jim Wilson - 2016-01-12 Richard Biener + * 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. - PR tree-optimization/69053 - * tree-vect-loop.c (get_initial_def_for_reduction): Properly - convert initial value for cond reductions. + 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. - 2016-01-12 Richard Biener + 2018-01-10 Christophe Lyon - PR tree-optimization/69007 - * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Move - widen_sum after dot_prod and sad. + * config/arm/arm.opt (-mbranch-cost): New option. + * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into + account. - 2016-01-12 Richard Biener + 2018-01-10 Segher Boessenkool - PR tree-optimization/69168 - * tree-vect-loop.c (vect_analyze_loop_2): Reset both main and - pattern stmt SLP type. - * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Patterns may - end up unused so cope with that case. + 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. - 2016-01-12 Richard Biener + 2018-01-10 Richard Biener - PR tree-optimization/69157 - * tree-vect-stmts.c (vectorizable_mask_load_store): Check - stmts def type only during analyze phase. - (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. + 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. - 2016-01-12 Richard Biener - - PR tree-optimization/69174 - * tree-vect-stmts.c (vect_mark_relevant): Remove excessive vertical - space. - (vectorizable_load): Properly compute the number of loads needed - for permuted strided SLP loads and do not spuriously assign - to SLP_TREE_VEC_STMTS. - - 2016-01-12 Andris Pavenis - - * config/i386/djgpp.h (PREFERRED_DEBUGGING_TYPE): Define to DWARF2 - (TARGET_ASM_OUTPUT_IDENT): Define to default_asm_output_ident_directive - (MD_EXEC_PREFIX): Remove. - (MD_STARTFILE_PREFIX) Removee. - (FILE_NAME_ABSOLUTE_P): Remove. - (CPP_SPEC): Do not read macros from sys/version.h. - (LINK_COMMAND_SPEC): Remove. - (LOCAL_INCLUDE_DIR): Remove. - (TARGET_ASM_NAMED_SECTION): Define to i386_djgpp_asm_named_section - (TARGET_OS_CPP_BUILTINS): Add DJGPP (non ISO only), __DJGPP, __DJGPP__, unix. - (POST_LINK_SPEC): Define to invoke stubify after linker - (LIBSTDCXX): Remove define - (DBX_REGISTER_NUMBER): Define to svr4_dbx_register_map. - (DEFAULT_PCC_STRUCT_RETURN): Define to 1. - (SUBTARGET_OVERRIDE_OPTIONS): Remove warning about -mbnu2210. - (SUBTARGET_OVERRIDE_OPTIONS): Ignore -fPIC and generate message. - (SUBTARGET_OVERRIDE_OPTIONS): Default to DWARF2 debugging info. - (IX86_MAYBE_NO_LIBGCC_TFMODE): Remove. - (i386_djgpp_asm_named_section): Add propotype of new procedure - - * config/i386/xm-djgpp.h (NATIVE_SYSTEM_HEADER_DIR): Define. - (MD_EXEC_PREFIX): Define (moved from config/i386/djgpp.h). - (STANDARD_STARTFILE_PREFIX_1): Define (moved from MD_STARTFILE_PREFIX - in config/i386/djgpp.h). - (STANDARD_STARTFILE_PREFIX_2): Define identical to - STANDARD_STARTFILE_PREFIX_1. - (LOCAL_INCLUDE_DIR): Define (moved from config/i386/djgpp.h). - (GCC_DRIVER_HOST_INITIALIZATION): Fix reporting fatal - installation errors. - (MAX_OFILE_ALIGNMENT): Define to 128. - (HAVE_FTW_H): Undefine as DJGPP do not have nftw, but have ftw.h. - - * config/i386/djgpp.c: New file. Add implementation of - i386_djgpp_asm_named_section. - - * config/i386/djgpp.opt: Remove obsolete option -mbnu210. - - * config/i386/t-djgpp: New file. Add djgpp.o to EXTRA_OBJS. - Add rule for building djgpp.o. - - 2016-01-11 Bill Schmidt - - * config/rs6000/rs6000.c (v2df_reduction_p): New function. - (rtx_is_swappable_p): Reductions are swappable. - (insn_is_swappable_p): V2DF reductions are swappable. - - 2016-01-11 John David Anglin - - * config/pa/pa.c (pa_emit_move_sequence): Handle floating point - reloads for other unsupported memory operands. - - 2016-01-12 Kugan Vivekanandarajah - Jim Wilson - - PR target/69194 - * config/arm/arm-builtins.c (arm_expand_neon_args): Call - copy_to_mode_reg instead of force_reg. - - 2016-01-11 H.J. Lu - - PR target/69225 - * config/i386/i386.h (TARGET_FLT_EVAL_METHOD): Set to 2 only if - TARGET_80387 is true. - - 2016-01-11 Jakub Jelinek - - PR target/69071 - * lra-eliminations.c (move_plus_up): Only move plus up - if subreg of the constant can be simplified into constant - and use the simplified subreg of the constant instead of - the original constant. - - * fold-const.c (fold_convertible_p): Don't return true - for conversion of VECTOR_TYPE to same sized integral type. - (fold_convert_loc): Fix up formatting. Fold conversion of - VECTOR_TYPE to same sized integral type using VIEW_CONVERT_EXPR - instead of NOP_EXPR. - - PR tree-optimization/69214 - * tree-vrp.c (simplify_cond_using_ranges): Don't propagate - innerop into a comparison if SSA_NAME_OCCURS_IN_ABNORMAL_PHI. - Formatting fix. - - PR tree-optimization/69207 - * tree-vect-slp.c (vect_get_constant_vectors): For - VECTOR_BOOLEAN_TYPE_P, assert op has integral type instead of - fold_convertible_p to vector_type's element type, and always - use VCE for non-VECTOR_BOOLEAN_TYPE_P. - - 2016-01-11 Richard Biener - - PR tree-optimization/69173 - * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Only - fixup the cycle if all stmts are in a pattern. - - 2016-01-11 Uros Bizjak - - PR middle-end/68999 - * alias.c (base_alias_check): Move check for addresses with - alignment ANDs before the call for compare_base_decls. - (memrefs_conflict_p): Return -1 for different decls - that went through alignment adjustments. - - 2016-01-11 Kyrylo Tkachov - - PR rtl-optimization/68796 - * config/aarch64/aarch64.md (*and_compare0): New pattern. - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Handle HImode - and QImode comparisons against zero with CC_NZmode. - * config/aarch64/iterators.md (short_mask): New mode_attr. + 2018-01-10 Richard Sandiford - 2016-01-11 H.J. Lu + 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. - * config/i386/sse.md (_load_mask): Remove snprintf. - (_store_mask): Likewise. + 2018-01-10 Jan Hubicka - 2016-01-11 Bernd Schmidt - Kyrylo Tkachov + 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. - PR rtl-optimization/68841 - * ifcvt.c (struct noce_if_info): Add orig_x field. - (bbs_ok_for_cmove_arith): Add to_rename parameter. - Don't record conflicts on to_rename if it's present. - Allow memory destinations in sets. - (noce_try_cmove_arith): Call bbs_ok_for_cmove_arith even on simple - blocks, passing orig_x to the checks. - (noce_process_if_block): Set if_info->orig_x appropriately. + 2018-01-10 Martin Liska - 2016-01-11 Tom de Vries + 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. - PR tree-optimization/69069 - * tree-parloops.c (create_parallel_loop): Add missing phi args. + 2018-01-10 Richard Sandiford - 2016-01-11 Yuri Rumyantsev + * 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. - PR rtl-optimization/68920 - * config/i386/i386.c (ix86_option_override_internal): Restrict number - of conditional moves for RTL if-conversion to 1 for - TARGET_ONE_IF_CONV_INSN. - * config/i386/i386.h (TARGET_ONE_IF_CONV_INSN): New macros. - * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): New macros. - * params.def (PARAM_MAX_RTL_IF_CONVERSION_INSNS) : Introduce new - parameter to restirct number of conditional moves for - RTL if-conversion. - * doc/invoke.texi (max-rtl-if-conversion-insns): Document it. - * ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Limit number of - conditionl moves. + 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. - 2016-01-11 Alexandre Oliva + 2018-01-09 Uros Bizjak - PR bootstrap/69123 - * var-tracking.c (drop_overlapping_mem_locs): Operate on all - onepart vars. Fix typo in comment. Fix reversed condition in - unshare test. - (dataflow_set_remove_mem_locs): Operate on all onepart vars. + PR target/83628 + * combine.c (force_int_to_mode) : Use mode instead of + op_mode in the force_to_mode call. - PR bootstrap/69123 - * var-tracking.c (dump_onepart_variable_differences): New. - (dataflow_set_different): If a detailed dump is requested, - delay early returns and dump differences between onepart - variables present before and after, and added variables. + 2018-01-09 Richard Sandiford - 2016-01-11 Ilya Enkovich + * 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. - PR target/69010 - * expr.c (expand_expr_real_1): For boolean vector constants - with a scalar mode use const_scalar_mask_from_tree. - (const_scalar_mask_from_tree): New. - * optabs.c (expand_vec_cond_mask_expr): Use mask mode - assigned to a mask type to handle constants. + 2018-01-09 Richard Sandiford - 2016-01-11 Martin Jambor + * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix + order of HIGH and CONST checks. - PR ipa/69044 - * ipa-cp.c (estimate_local_effects): Do not clone for removal of - useless parameters if we cannot change function signature. + 2018-01-09 Richard Sandiford - 2016-01-11 Martin Jambor + * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable + if the destination isn't an SSA_NAME. - PR ipa/66616 - * cgraphclones.c (duplicate_thunk_for_node): Copy can_change_signature - flag. + 2018-01-09 Richard Biener - 2016-01-11 Tom de Vries + 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. - PR tree-optimization/69109 - * tree-parloops.c (try_transform_to_exit_first_loop_alt): Don't allow - latch with phi. + 2018-01-09 Joseph Myers - 2016-01-11 Tom de Vries + PR tree-optimization/64811 + * match.pd: When optimizing comparisons with Inf, avoid + introducing or losing exceptions from comparisons with NaN. - PR tree-optimization/69108 - * tree-parloops.c (gather_scalar_reductions): Handle case that outer phi - res is not used in a phi. + 2018-01-09 Martin Liska - 2016-01-11 Yury Gribov + PR sanitizer/82517 + * asan.c (shadow_mem_size): Add gcc_assert. - PR 67425 - * common.opt (frandom-seed): Fix parameter name. - * doc/invoke.texi (frandom-seed): Ditto and describe parameter. + 2018-01-09 Georg-Johann Lay - 2016-01-11 Tom de Vries + Don't save registers in main(). - PR tree-optimization/69058 - * tree-parloops.c (pass_parallelize_loops::execute): Return 0 if libgomp - not supported. + 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. - 2016-01-11 Andrew Burgess + 2018-01-09 Richard Biener - * config/arc/arc.opt (mdiv-rem): Add period to the end. - (mcode-density): Likewise. + PR tree-optimization/83572 + * graphite.c: Include cfganal.h. + (graphite_transform_loops): Connect infinite loops to exit + and remove fake edges at the end. - 2016-01-10 Tom de Vries + 2018-01-09 Jan Hubicka - PR tree-optimization/69062 - * tree-parloops.c (loop_has_phi_with_address_arg): New function. - (parallelize_loops): Don't paralelize loop that has phi with address - arg. + * ipa-inline.c (edge_badness): Revert accidental checkin. - 2016-01-10 Tom de Vries + 2018-01-09 Jan Hubicka - PR tree-optimization/69039 - * tree-parloops.c (try_create_reduction_list): Only allow single exit - phi for reduction. + PR ipa/80763 + * ipa-comdats.c (set_comdat_group): Only set comdat group of real + symbols; not inline clones. - 2016-01-09 John David Anglin + 2018-01-09 Jakub Jelinek - PR middle-end/68743 - * match.pd: Require target has function_c99_misc before doing - truncl(extend(x)) and trunc(extend(x)) -> extend(truncf(x)), etc. + PR target/83507 + * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move + hard registers. Formatting fixes. - 2016-01-09 Gerald Pfeifer + 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. - * configure.ac (isl_options_set_schedule_serialize_sccs): Also - use GMPINC. - * configure: Regenerate. + 2018-01-08 Monk Chiang + Kito Cheng - 2016-01-09 Jakub Jelinek + * 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. - PR middle-end/50865 - PR tree-optimization/69097 - * fold-const.h (expr_not_equal_to): New prototype. - * fold-const.c: Include stringpool.h and tree-ssanames.h. - (expr_not_equal_to): New function. - * match.pd (X % -Y is the same as X % Y): Don't optimize - unless X is known not to be equal to minimum or Y is known - not to be equal to -1. - * tree-vrp.c (simplify_div_or_mod_using_ranges): Add GSI argument. - fold TRUNC_MOD_EXPR if the second argument is not a power of two. - (simplify_stmt_using_ranges): Adjust caller. - (vrp_finalize): Call set_value_range on SSA_NAMEs before calling - substitute_and_fold. + 2018-01-08 Aaron Sawdey - 2016-01-09 Jan Hubicka + * 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. - * ipa-icf.c (sem_item_optimizer::merge_classes): Do not ICE on VAR_DECL - w/o DECL_NAME. + 2018-01-08 Jeff Law - 2016-01-08 Jakub Jelinek + 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 tree-optimization/69167 - * gimple-fold.c (replace_stmt_with_simplification): Also punt if - new SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs appear in operands of - ops[0] comparison. - * gimple-match-head.c (maybe_push_res_to_seq): Likewise. + PR rtl-optimization/81308 + * recog.c (split_all_insns): Conditionally cleanup the CFG after + splitting insns. - 2016-01-08 Alan Lawrence - Richard Biener + 2018-01-08 Vidya Praveen - PR tree-optimization/68707 - * tree-vect-slp.c (vect_analyze_slp_instance): Cancel permuted SLP - instances that can be handled via vect_load_lanes. + 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. - 2016-01-08 Uros Bizjak + 2018-01-08 Kyrylo Tkachov - * symtab.c (symtab_node::equal_address_to): Return -1 instead of 2 - if we can't determine address equivalence. - * alias.c (compare_base_decl): Update for changed return value of - symtab_node::equal_address_to. + * 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. - 2016-01-08 Jason Merrill + 2018-01-08 Aaron Sawdey - PR c++/68983 - PR c++/67557 - * function.c (assign_temp): Guard against TREE_ADDRESSABLE types here. - * expr.c (store_field): Not here. - * tree-cfgcleanup.c (fixup_noreturn_call): Don't clear LHS of a - call with TREE_ADDRESSABLE type. - * tree-cfg.c (verify_gimple_call): Adjust. + * 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. - 2016-01-08 Olivier Hainque + 2018-01-08 Richard Biener - * config/vxworks.h (VXWORKS_LIBGCC_SPEC): Don't link shared RTPs with - libc_internal. + PR tree-optimization/83563 + * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV + cache. - 2016-01-08 Alan Lawrence + 2018-01-08 Richard Biener - * gcc.target/rs6000/paired.md (reduc_smax_v2sf): Rename to... - (reduc_smax_scal_v2sf): ...here, make result SFmode, extract element. - (reduc_smin_v2sf): Rename to... - (reduc_smin_scal_v2sf): ...here, make result SFmode, extract element. - (reduc_splus_v2sf): Rename to... - (reduc_plus_scal_v2sf): ...here, make result SFmode, extract element. + PR middle-end/83713 + * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks. - 2016-01-08 Jakub Jelinek + 2018-01-08 Richard Biener - PR tree-optimization/69162 - * gimplify.c (gimplify_va_arg_expr): Encode original type of - valist argument in another argument. - (gimplify_modify_expr): Adjust for the above change. Cleanup. - * tree-stdarg.c (expand_ifn_va_arg_1): Use new 3rd argument - to determine the va_list type, build a MEM_REF instead of - build_fold_indirect_ref. + PR tree-optimization/83685 + * tree-ssa-pre.c (create_expression_by_pieces): Do not insert + references to abnormals. - PR tree-optimization/69172 - * gimple-fold.c (gimple_fold_builtin_memory_chk): Pass type to - gimple_build. + 2018-01-08 Richard Biener - 2016-01-08 Thomas Preud'homme + PR lto/83719 + * dwarf2out.c (output_indirect_strings): Handle empty + skeleton_debug_str_hash. + (dwarf2out_early_finish): Index strings for -gsplit-dwarf. - PR tree-optimization/67781 - * tree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg - and cmpnop in two steps: first the ones not accessed in original - gimple expression in a endian independent way and then the ones not - accessed in the final result in an endian-specific way. + 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 - 2016-01-08 Jakub Jelinek + 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. - PR tree-optimization/69083 - * tree-vect-slp.c (vect_get_constant_vectors): For - VECTOR_BOOLEAN_TYPE_P assert op is fold_convertible_p to vector_type's - element type. If op is fold_convertible_p to vector_type's element - type, use NOP_EXPR instead of VCE. + 2018-01-04 Rainer Orth - 2016-01-08 Segher Boessenkool + 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. - PR rtl-optimization/67778 - PR rtl-optimization/68634 - PR rtl-optimization/68909 - * shrink-wrap.c (try_shrink_wrapping): Add comment. Don't pop - block from the stack until done with it. Remove a superfluous - bitmap set. Remove a superfluous bitmap test. + 2018-01-04 Richard Sandiford - 2016-01-07 Martin Sebor + * 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. - PR c/68966 - * doc/extend.texi (__atomic Builtins, __sync Builtins): Document - constraint on the type of arguments. + 2018-01-04 Jeff Law - 2016-01-07 Andreas Tobler + * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove + redundant test in assertion. - * config/arm/freebsd.h: Rename SUBTARGET_OVERRIDE_OPTIONS to - SUBTARGET_OVERRIDE_INTERNAL_OPTIONS. Adjust to check - unaligned_access on the gcc_options set. - * config/arm/arm.c (arm_option_override_internal): Use - SUBTARGET_OVERRIDE_INTERNAL_OPTIONS. + 2018-01-04 Richard Sandiford - 2016-01-07 Uros Bizjak + * doc/rtl.texi: Document machine_mode wrapper classes. - PR target/69140 - * config/i386/i386.c (ix86_frame_pointer_required): Enable - frame pointer for TARGET_64BIT_MS_ABI when stack is misaligned. + 2018-01-04 Richard Sandiford - 2016-01-07 Uros Bizjak + * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before + using tree_to_uhwi. - Revert - 2016-01-06 Uros Bizjak + 2018-01-04 Richard Sandiford - PR target/69140 - * config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid - depending on frame_pointer_needed before remaining integer and SSE - registers are saved. + * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow + the VEC_PERM_EXPR fold to fail. - 2016-01-07 Sandra Loosemore + 2018-01-04 Jakub Jelinek - PR 1078 - * doc/extend.texi (Nvidia PDX Function Attributes): New section. + PR debug/83585 + * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition + to switched_sections. - 2016-01-07 H.J. Lu + 2018-01-04 Richard Sandiford - PR target/69171 - * config/i386/sse.md (_sqrt2): - Use the "xBm" constraint. - (float2): Use round_nimm_scalar_predicate. - (sse_cvtsi2ssq): Likewise. - (sse_cvtss2si): Likewise. - (sse_cvtss2siq): Likewise. - (sse2_cvtsi2sdq): Likewise. - (sse2_cvtsd2si): Likewise. - (sse2_cvtsd2siq): Likewise. - * config/i386/subst.md (round_nimm_scalar_predicate): New - predicate. + PR target/83680 + * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted + test for d.testing. - 2015-12-15 Bernd Schmidt + 2018-01-04 Peter Bergner - PR middle-end/67639 - * varasm.c (make_decl_rtl): Mark invalid register vars as - DECL_EXTERNAL. + PR target/83387 + * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not + allow arguments in FP registers if TARGET_HARD_FLOAT is false. - PR rtl-optimization/66206 - * bt-load.c (find_btr_use): Change first arg to be a pointer to an rtx. - All callers changed. + 2018-01-04 Jakub Jelinek - 2016-01-07 Jakub Jelinek + PR debug/83666 + * cfgexpand.c (expand_debug_expr) : Punt if mode + is BLKmode and bitpos not zero or mode change is needed. - PR tree-optimization/69141 - * tree-ssa-pre.c: Include langhooks.h. - (eliminate_dom_walker::before_dom_children): Use - lang_hooks.decl_printable_name instead of - cgraph_node::get ()->name (). + 2018-01-04 Richard Sandiford - PR middle-end/68960 - * gimple-expr.c (copy_var_decl): If var has DECL_USER_ALIGN set, copy - it and DECL_ALIGN too. + PR target/83675 + * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require + TARGET_VIS2. - 2016-01-06 Robert Suchanek + 2018-01-04 Uros Bizjak - * config/mips/mips-ftypes.def: Sort to lexicographical order. + 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. - 2016-01-06 Uros Bizjak + 2018-01-04 Martin Liska - PR target/69140 - * config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid - depending on frame_pointer_needed before remaining integer and SSE - registers are saved. + 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. - 2015-01-06 Bill Schmidt + 2018-01-04 Martin Liska - * config/rs6000/vsx.md (*p9_vecload_): Replace VSX_M - mode iterator with VSX_M2. - (*p9_vecstore_): Likewise. - (*vsx_le_permute_): Restrict to !TARGET_P9_VECTOR. - (*vsx_le_perm_load_ for VSX_LE_128): Likewise. - (*vsx_le_perm_store_ for VSX_LE_128): Likewise. - (define_split for VSX_LE128 stores): Likewise. - (define_peephole2 for TImode LE swaps): Likewise. - (define_split for VSX_LE128 post-reload stores): Likewise. + PR ipa/82352 + * ipa-icf.c (sem_function::merge): Do not cross comdat boundary. - 2016-01-06 Marek Polacek + 2018-01-04 Jakub Jelinek - PR sanitizer/69099 - * convert.c (convert_to_integer_1): Adjust call to - ubsan_instrument_float_cast. Use NULL_TREE instead of NULL. - * ubsan.c (ubsan_instrument_float_cast): Drop the ARG parameter. Use - EXPR instead of ARG. - * ubsan.h (ubsan_instrument_float_cast): Adjust declaration. + * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi. - 2016-01-05 Sandra Loosemore + 2018-01-03 Martin Sebor - PR 1078 - * doc/extend.texi (RL78 Variable Attributes): New section. + PR tree-optimization/83655 + * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid + checking calls with invalid arguments. - 2016-01-05 Marek Polacek + 2018-01-03 Richard Sandiford - PR c/69104 - * builtins.c (get_memmodel): Use expansion point location rather than - the input location. Call warning_at rather than warning. - (expand_builtin_atomic_compare_exchange): Likewise. - (expand_builtin_atomic_load): Likewise. - (expand_builtin_atomic_store): Likewise. - (expand_builtin_atomic_clear): Likewise. + * 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. - 2016-01-05 H.J. Lu + 2018-01-03 Richard Sandiford - PR target/68991 - * config/i386/i386.c (ix86_expand_vector_logical_operator): - Replace nonimmediate_operand with vector_operand. - * config/i386/predicates.md (vector_operand): New predicate. - (general_vector_operand): Replace nonimmediate_operand with - vector_operand. - * config/i386/sse.md: Replace nonimmediate_operand with - vector_operand and m constraint with Bm constraint on SSE - patterns with 16-byte memory operand. - * config/i386/subst.md (round_nimm_predicate): Replace - nonimmediate_operand with vector_operand. - (round_saeonly_nimm_predicate): Likewise. - (round_saeonly_nimm_scalar_predicate): New. + * tree-vect-stmts.c (vect_build_gather_load_calls): New function, + split out from.., + (vectorizable_mask_load_store): ...here. + (vectorizable_load): ...and here. - 2016-01-05 H.J. Lu + 2018-01-03 Richard Sandiford - PR target/68991 - * config/i386/constraints.md (Bm): New constraint. - * config/i386/predicates.md (vector_memory_operand): New - predicate. - * config/i386/sse.md: Replace xm with xBm in plusminus and - any_logic patterns. + * tree-vect-stmts.c (vect_build_all_ones_mask) + (vect_build_zero_merge_argument): New functions, split out from... + (vectorizable_load): ...here. - 2016-01-05 Sandra Loosemore + 2018-01-03 Richard Sandiford - PR 1078 - * doc/extend.texi (V850 Function Attributes): New section. - (V850 Variable Attributes): New section. + * tree-vect-stmts.c (vect_check_store_rhs): New function, + split out from... + (vectorizable_mask_load_store): ...here. + (vectorizable_store): ...and here. - 2016-01-05 Sandra Loosemore + 2018-01-03 Richard Sandiford - PR 1078 - * doc/extend.texi (MicroBlaze Function Attributes): Document - interrupt_handler and fast_interrupt attributes. + * tree-vect-stmts.c (vect_check_load_store_mask): New function, + split out from... + (vectorizable_mask_load_store): ...here. - 2016-01-05 Sergei Trofimovich + 2018-01-03 Richard Sandiford - PR other/60465 - * config/ia64/ia64.c (ia64_expand_load_address): Use gprel64 - for local symbolic operands. - * config/ia64/predicates.md (local_symbolic_operand64): New - predicate. + * 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. - 2016-01-05 Kyrylo Tkachov + 2018-01-03 Richard Sandiford - PR rtl-optimization/68651 - * combine.c (combine_simplify_rtx): Canonicalize x + x into - x << 1. + * 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. - 2016-01-05 Nathan Sidwell + 2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood - * alias.c (compare_base_decls): Use symtab_node::get. + * expmed.c (extract_bit_field_1): For vector extracts, + fall back to extract_bit_field_as_subreg if vec_extract + isn't available. - 2016-01-05 Nick Clifton + 2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood - PR target/68770 - * ira-costs.c (copy_cost): Initialise the t_icode field of the - secondary_reload_info structure. + * 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. - PR target/66655 - * config/i386/cygming.h (MAKE_DECL_ONE_ONLY): Define to use weak - decls if weak support is available. + 2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood - 2016-01-04 Martin Sebor + * 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. - * doc/invoke.texi (Warning Options): Document -Winvalid-memory-model. + 2018-01-03 Richard Sandiford - 2016-01-04 Michael Meissner + * 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. - * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add - OPTION_MASK_P9_DFORM. + 2018-01-03 Richard Sandiford + Alan Hayward + David Sherwood - * config/rs6000/constraints.md (wo constraint): New constraint for - ISA 3.0 (power9). + * 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. - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add support - for wo constraint. - (rs6000_init_hard_regno_mode_ok): Likewise. + 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 - * config/rs6000/rs6000.h (r6000_reg_class_enum): Add support for - wo constraint. + 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. - * config/rs6000/altivec.md (altivec_vperm_): Clean up vperm - expanders not to have constraints. Add support for ISA 3.0 xxperm - instruction. Add support for fusing xxlor with xxperm. - (altivec_vperm__internal): Likewise. - (altivec_vperm_v8hiv16qi): Likewise. - (altivec_vperm_v16q): Likewise. - (altivec_vperm__uns): Likewise. - (vperm_v8hiv4si): Likewise. - (vperm_v16qiv8hi): Likewise. + 2018-01-03 Jan Beulich - * doc/md.texi (RS/6000 constraints): Document wo constraint. + * sse.md (mov_internal): Tighten condition for when to use + vmovdqu for TI and OI modes. - 2016-01-04 Jakub Jelinek + 2018-01-03 Jakub Jelinek Update copyright years. diff --cc gcc/ira-costs.c index 533d86946fe3,2b4ae38f410c..bc010e223b14 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@@ -478,928 -478,6 +478,928 @@@ copy_cost (rtx x, machine_mode mode, re +/* Some insn operand info after choosing an insn alternative. */ +struct op_info +{ + /* Flags of that insn alternative permits the operand to be in + memory or an address. */ + bool allows_mem_p; + bool allows_addr_p; + /* Class of the operand permitted by the insn alternative. It is an + approximation. The accuracy can be improved if we have a set of + register classes. Does we need such accuracy? The question is + open. */ + enum reg_class op_class; +}; + +/* Container of the above info about the insn operands. */ +static vec op_infos; + +/* Info about selected alternative of the insns. We could use set of + alternatives here. Does it worth spent time for keeping and + processing more one alternative? The question is open. */ +struct insn_selection +{ + /* Number of the selcted alternative. */ + int alt; + /* Start index of the insn operands info in op_infos. */ + int op_info_start; +}; + +/* Container of the above info about the selected insns + alternative. */ +static vec insn_selections; + +/* True if X is a constant that can be forced into the constant pool. + MODE is the mode of the operand, or VOIDmode if not known. */ +#define CONST_POOL_OK_P(MODE, X) \ + ((MODE) != VOIDmode \ + && CONSTANT_P (X) \ + && GET_CODE (X) != HIGH \ + && !targetm.cannot_force_const_mem (MODE, X)) + +/* True if C is a non-empty register class that has too few registers + to be safely used as a reload target class. */ +#define SMALL_REGISTER_CLASS_P(C) \ + (reg_class_size [(C)] == 1 \ + || (reg_class_size [(C)] >= 1 && targetm.class_likely_spilled_p (C))) + +static inline bool +general_constant_p (rtx x) +{ + return CONSTANT_P (x) && (! flag_pic || LEGITIMATE_PIC_OPERAND_P (x)); +} + +/* A container used for quick access to operand constraints for given + alternative. Use preferred pseudo reg classes from the previous + pass when it is possible. */ +static vec insn_constraints; + +/* Choose INSN alternative and setup corresponding elements of + INSN_SELECTIONS and OP_INFOS. */ +static void +setup_insn_alt (rtx_insn *insn) +{ + bool ok_p = false; + int nop, best_overall, overall, nalt, i, m, len, uid; + /* LOSERS counts the operands that don't fit this alternative and + would require loading. */ + int best_losers, losers; + /* REJECT is a count of how undesirable this alternative says it is + if any reloading is required. If the alternative matches exactly + then REJECT is ignored, but otherwise it gets this much counted + against it in addition to the reloading needed. */ + int reject; + enum reg_class curr_alt[MAX_RECOG_OPERANDS]; + enum reg_class goal_op_alt[MAX_RECOG_OPERANDS]; + bool curr_alt_win[MAX_RECOG_OPERANDS]; + bool curr_alt_offmemok[MAX_RECOG_OPERANDS]; + bool goal_alt_offmemok[MAX_RECOG_OPERANDS]; + bool curr_alt_addrok[MAX_RECOG_OPERANDS]; + bool goal_alt_addrok[MAX_RECOG_OPERANDS]; + int curr_alt_matches[MAX_RECOG_OPERANDS]; + rtx op; + /* The register when the operand is a subreg of register, otherwise the + operand itself. */ + rtx no_subreg_reg_operand[MAX_RECOG_OPERANDS]; + /* The register if the operand is a register or subreg of register, + otherwise NULL. */ + rtx operand_reg[MAX_RECOG_OPERANDS]; + enum op_type operand_type[MAX_RECOG_OPERANDS]; + int hard_regno[MAX_RECOG_OPERANDS]; + bool curr_swapped, goal_alt_swapped = false; + bool early_clobber_p[MAX_RECOG_OPERANDS]; + int best_reload_nregs = 0, reload_nregs; + bool costly_p, addrok; + enum reg_class cl; + enum constraint_num cn; + enum machine_mode curr_operand_mode[MAX_RECOG_OPERANDS]; + enum machine_mode mode; + int goal_alt_number = -1; + int commutative = -1; + bool no_input_reloads_p, no_output_reloads_p; + rtx set; + const char *p; + + uid = INSN_UID (insn); + len = insn_selections.length (); + if (len <= uid) + { + insn_selections.safe_grow (uid + 1); + for (i = len; i <= uid; i++) + insn_selections[i].alt = -1; + } + if (!NONDEBUG_INSN_P (insn)) + { + insn_selections[INSN_UID (insn)].alt = -1; + return; + } + if ((set = single_set (insn)) != NULL_RTX) + { + rtx dest = SET_DEST (set); + rtx src = SET_SRC (set); + + if (GET_CODE (dest) == SUBREG) + dest = SUBREG_REG (dest); + if (GET_CODE (src) == SUBREG) + src = SUBREG_REG (src); + if (((REG_P (dest) && REGNO (dest) >= FIRST_PSEUDO_REGISTER) + || MEM_P (dest)) + && ((REG_P (src) && REGNO (src) >= FIRST_PSEUDO_REGISTER) + || MEM_P (src))) + { + if (ira_dump_file != NULL) + fprintf (ira_dump_file, "insn %d is move -- ignore\n", INSN_UID (insn)); + insn_selections[INSN_UID (insn)].alt = -1; + return; + } + } + no_input_reloads_p = no_output_reloads_p = false; + /* JUMP_INSNs and CALL_INSNs are not allowed to have any output + reloads; neither are insns that SET cc0. Insns that use CC0 are + not allowed to have any input reloads. */ + if (JUMP_P (insn) || CALL_P (insn)) + no_output_reloads_p = true; +#ifdef HAVE_cc0 + if (reg_referenced_p (cc0_rtx, PATTERN (insn))) + no_input_reloads_p = true; + if (reg_set_p (cc0_rtx, PATTERN (insn))) + no_output_reloads_p = true; +#endif + insn_constraints.truncate (0); + insn_constraints.safe_grow_cleared (recog_data.n_operands + * recog_data.n_alternatives + 1); + best_losers = best_overall = INT_MAX; + for (curr_swapped = false;;curr_swapped = true) + { + /* Calculate some data common for all alternatives to speed up the + function. */ + for (nop = 0; nop < recog_data.n_operands; nop++) + { + operand_type[nop] = OP_IN; + op = no_subreg_reg_operand[nop] = recog_data.operand[nop]; + operand_reg[nop] = op; + hard_regno[nop] = -1; + if (GET_CODE (operand_reg[nop]) == SUBREG) + operand_reg[nop] = SUBREG_REG (operand_reg[nop]); + if (REG_P (operand_reg[nop])) + { + no_subreg_reg_operand[nop] = operand_reg[nop]; + if (REGNO (operand_reg[nop]) < FIRST_PSEUDO_REGISTER) + hard_regno[nop] = REGNO (operand_reg[nop]); + } + else + operand_reg[nop] = NULL_RTX; + for (nalt = 0, p = recog_data.constraints[nop]; + nalt < recog_data.n_alternatives; + nalt++) + { + insn_constraints[nop * recog_data.n_alternatives + nalt] = p; + while (*p && *p != ',') + p++; + if (*p) + p++; + } + mode = GET_MODE (recog_data.operand[nop]); + curr_operand_mode[nop] = mode; + } + + alternative_mask enabled = get_enabled_alternatives (insn); + /* The constraints are made of several alternatives. Each operand's + constraint looks like foo,bar,... with commas separating the + alternatives. The first alternatives for all operands go + together, the second alternatives go together, etc. + + First loop over alternatives. */ + for (nalt = 0; nalt < recog_data.n_alternatives; nalt++) + { + /* Loop over operands for one constraint alternative. */ + if (!TEST_BIT (enabled, nalt)) + continue; + + overall = losers = reject = reload_nregs = 0; + + for (nop = 0; nop < recog_data.n_operands; nop++) + { + int len, c, this_alternative_matches; + bool win, did_match, offmemok; + /* false => this operand can be reloaded somehow for this + alternative. */ + bool badop; + /* true => this operand can be reloaded if the alternative + allows regs. */ + bool winreg; + /* True if a constant forced into memory would be OK for + this operand. */ + bool constmemok; + enum reg_class this_alternative, this_costly_alternative; + bool this_alternative_win; + bool this_alternative_offmemok; + bool scratch_p; + enum machine_mode mode; + + p = insn_constraints[nop * recog_data.n_alternatives + nalt]; + if (*p == 0 || *p == ',') + { + /* Fast track for no constraints at all. */ + curr_alt[nop] = NO_REGS; + curr_alt_win[nop] = true; + curr_alt_offmemok[nop] = false; + curr_alt_addrok[nop] = false; + curr_alt_matches[nop] = -1; + continue; + } + + op = no_subreg_reg_operand[nop]; + mode = curr_operand_mode[nop]; + + win = did_match = winreg = offmemok = constmemok = addrok = false; + badop = true; + + early_clobber_p[nop] = false; + + this_costly_alternative = this_alternative = NO_REGS; + this_alternative_win = false; + this_alternative_offmemok = false; + this_alternative_matches = -1; + scratch_p = GET_CODE (no_subreg_reg_operand[nop]) == SCRATCH; + + /* Scan this alternative's specs for this operand; set WIN + if the operand fits any letter in this alternative. + Otherwise, clear BADOP if this operand could fit some + letter after reloads, or set WINREG if this operand could + fit after reloads provided the constraint allows some + registers. */ + costly_p = false; + do + { + switch ((c = *p, len = CONSTRAINT_LEN (c, p)), c) + { + case '\0': + len = 0; + break; + case ',': + c = '\0'; + break; + case '=': + operand_type[nop] = OP_OUT; + break; + case '+': + operand_type[nop] = OP_INOUT; + break; + case ' ': case '\t': + break; + case '*': + /* Ignore the next letter for this pass. */ + c = *++p; + len = CONSTRAINT_LEN (c, p); + break; + case '^': + case '?': + reject += 6; + break; + case '!': + reject += 600; + break; + case '%': + /* We only support one commutative marker, the first + one. We already set commutative above. */ + if (commutative < 0) + commutative = nop; + break; + case '&': + early_clobber_p[nop] = true; + break; + + case '#': + /* Ignore rest of this alternative. */ + do + p++; + while (*p && *p != ','); + c = '\0'; + break; + + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + char *end; + bool match_p; + + m = strtoul (p, &end, 10); + p = end; + len = 0; + ira_assert (nop > m); + + this_alternative_matches = m; + /* We are supposed to match a previous + operand. If we do, we win if that one did. + If we do not, count both of the operands as + losers. (This is too conservative, since + most of the time only a single reload insn + will be needed to make the two operands + win. As a result, this alternative may be + rejected when it is actually + desirable.) */ + match_p = false; + if (rtx_equal_p (recog_data.operand[nop], + recog_data.operand[m])) + { + /* We should reject matching of an early + clobber operand if the matching operand is + not dying in the insn. */ + if (! early_clobber_p[m] + || operand_reg[nop] == NULL_RTX + || (find_regno_note (insn, REG_DEAD, + REGNO (op)) + || REGNO (op) == REGNO (operand_reg[m]))) + match_p = true; + } + if (match_p) + { + /* If we are matching a non-offsettable + address where an offsettable address + was expected, then we must reject this + combination, because we can't reload + it. */ + if (curr_alt_offmemok[m] + && MEM_P (recog_data.operand[m]) + && curr_alt[m] == NO_REGS && ! curr_alt_win[m]) + continue; + + } + else + { + /* Operands don't match. Both operands must + allow a reload register, otherwise we + cannot make them match. */ + if (curr_alt[m] == NO_REGS) + break; + /* Retroactively mark the operand we had to + match as a loser, if it wasn't already and + it wasn't matched to a register constraint + (e.g it might be matched by memory). */ + if (curr_alt_win[m] && operand_reg[m] == NULL_RTX) + { + losers++; + reload_nregs + += (ira_reg_class_max_nregs[curr_alt[m]] + [GET_MODE (recog_data.operand[m])]); + } + + /* We prefer no matching alternatives because + it gives more freedom in RA. */ + if (operand_reg[nop] == NULL_RTX + || (find_regno_note (insn, REG_DEAD, + REGNO (operand_reg[nop])) + == NULL_RTX)) + reject += 2; + } + /* If we have to reload this operand and some + previous operand also had to match the same + thing as this operand, we don't know how to do + that. */ + if (!match_p || !curr_alt_win[m]) + { + for (i = 0; i < nop; i++) + if (curr_alt_matches[i] == m) + break; + if (i < nop) + break; + } + else + did_match = true; + + /* This can be fixed with reloads if the operand + we are supposed to match can be fixed with + reloads. */ + badop = false; + this_alternative = curr_alt[m]; + winreg = this_alternative != NO_REGS; + break; + } + + case 'g': + if (MEM_P (op) || general_constant_p (op)) + win = true; + /* Drop through into 'r' case. */ + cl = GENERAL_REGS; + goto reg; + + default: + cn = lookup_constraint (p); + switch (get_constraint_type (cn)) + { + case CT_REGISTER: + cl = reg_class_for_constraint (cn); + if (cl != NO_REGS) + goto reg; + break; + + case CT_CONST_INT: + if (CONST_INT_P (op) + && insn_const_int_ok_for_constraint (INTVAL (op), cn)) + win = true; + break; + + case CT_MEMORY: + if (constraint_satisfied_p (op, cn)) + win = true; + + /* If we didn't already win, we can reload + constants via force_const_mem or put the + pseudo value into memory, or make other + memory by reloading the address like for + 'o'. */ + if (CONST_POOL_OK_P (mode, op) + || MEM_P (op) || REG_P (op)) + badop = false; + constmemok = true; + offmemok = true; + break; + + case CT_ADDRESS: + /* If we didn't already win, we can reload + the address into a base register. */ + if (constraint_satisfied_p (op, cn)) + win = true; + cl = base_reg_class (VOIDmode, ADDR_SPACE_GENERIC, + ADDRESS, SCRATCH); + badop = false; + addrok = true; + goto reg; + + case CT_FIXED_FORM: + if (constraint_satisfied_p (op, cn)) + win = true; + break; + + case CT_SPECIAL_MEMORY: + if (constraint_satisfied_p (op, cn)) + win = true; + break; + } + break; + + reg: + this_alternative + = reg_class_subunion[this_alternative][cl]; + if (costly_p) + this_costly_alternative + = (reg_class_subunion + [this_costly_alternative][cl]); + if (mode == BLKmode) + break; + winreg = true; + if (hard_regno[nop] >= 0) + { + if (in_hard_reg_set_p (reg_class_contents[this_alternative], + mode, hard_regno[nop])) + win = true; + } + else if ((pref == NULL && REG_P (op)) || scratch_p) + win = true; + else if (pref != NULL && REG_P (op) + && REGNO (op) >= FIRST_PSEUDO_REGISTER + && pref[COST_INDEX (REGNO (op))] != NO_REGS + && (ira_class_subset_p + [pref[COST_INDEX (REGNO (op))]][this_alternative])) + win = true; + break; + } + if (c != ' ' && c != '\t') + costly_p = c == '*'; + } + while ((p += len), c); + + /* Record which operands fit this alternative. */ + if (win) + { + this_alternative_win = true; + if (operand_reg[nop] != NULL_RTX || scratch_p) + { + if (this_costly_alternative == this_alternative + || (hard_regno[nop] >= 0 + && in_hard_reg_set_p (reg_class_contents + [this_costly_alternative], + mode, hard_regno[nop])) + || (pref != NULL && REG_P (op) + && REGNO (op) >= FIRST_PSEUDO_REGISTER + && (ira_class_subset_p + [pref[COST_INDEX (REGNO (op))]] + [this_costly_alternative]))) + reject++; + } + } + else if (did_match) + ; + else + { + int const_to_mem = 0; + bool no_regs_p; + + /* If this alternative asks for a specific reg class, see if there + is at least one allocatable register in that class. */ + no_regs_p + = (this_alternative == NO_REGS + || (hard_reg_set_subset_p + (reg_class_contents[this_alternative], + ira_no_alloc_regs))); + + /* For asms, verify that the class for this alternative is possible + for the mode that is specified. */ + if (!no_regs_p && INSN_CODE (insn) < 0) + { + int i; + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) - if (HARD_REGNO_MODE_OK (i, mode) ++ if (targetm.hard_regno_mode_ok (i, mode) + && in_hard_reg_set_p (reg_class_contents[this_alternative], + mode, i)) + break; + if (i == FIRST_PSEUDO_REGISTER) + winreg = false; + } + + /* If this operand accepts a register, and if the + register class has at least one allocatable register, + then this operand can be reloaded. */ + if (winreg && !no_regs_p) + badop = false; + + if (badop) + goto fail; + + this_alternative_offmemok = offmemok; + if (this_costly_alternative != NO_REGS) + reject++; + /* If the operand is dying, has a matching constraint, + and satisfies constraints of the matched operand + which failed to satisfy the own constraints, we do + not need to generate a reload insn for this + operand. */ + if (!(this_alternative_matches >= 0 + && !curr_alt_win[this_alternative_matches] + && REG_P (op) + && find_regno_note (insn, REG_DEAD, REGNO (op)) + && ((hard_regno[nop] >= 0 + && in_hard_reg_set_p (reg_class_contents + [curr_alt[this_alternative_matches]], + mode, hard_regno[nop])) + || pref == NULL + || (REGNO (op) >= FIRST_PSEUDO_REGISTER + && pref[COST_INDEX (REGNO (op))] != NO_REGS + && (ira_class_subset_p + [pref[COST_INDEX (REGNO (op))]] + [curr_alt[this_alternative_matches]]))))) + losers++; + /* If this is a constant that is reloaded into the + desired class by copying it to memory first, count + that as another reload. This is consistent with + other code and is required to avoid choosing another + alternative when the constant is moved into memory. + Note that the test here is precisely the same as in + the code below that calls force_const_mem. */ + if (CONST_POOL_OK_P (mode, op) + && ((targetm.preferred_reload_class + (op, this_alternative) == NO_REGS) + || no_input_reloads_p)) + { + const_to_mem = 1; + if (! no_regs_p) + losers++; + } + + /* Alternative loses if it requires a type of reload not + permitted for this insn. We can always reload + objects with a REG_UNUSED note. */ + if ((operand_type[nop] != OP_IN + && no_output_reloads_p + && ! find_reg_note (insn, REG_UNUSED, op)) + || (operand_type[nop] != OP_OUT + && no_input_reloads_p && ! const_to_mem)) + goto fail; + + /* Check strong discouragement of reload of non-constant + into class THIS_ALTERNATIVE. */ + if (! CONSTANT_P (op) && ! no_regs_p + && (targetm.preferred_reload_class + (op, this_alternative) == NO_REGS + || (operand_type[nop] == OP_OUT + && (targetm.preferred_output_reload_class + (op, this_alternative) == NO_REGS)))) + reject += 600; + + if (! (MEM_P (op) && offmemok) + && ! (const_to_mem && constmemok)) + { + /* We prefer to reload pseudos over reloading + other things, since such reloads may be able + to be eliminated later. So bump REJECT in + other cases. Don't do this in the case where + we are forcing a constant into memory and it + will then win since we don't want to have a + different alternative match then. */ + if (! (scratch_p + || (REG_P (op) && REGNO (op) >= FIRST_PSEUDO_REGISTER))) + reject += 2; + + if (! no_regs_p) + reload_nregs + += ira_reg_class_max_nregs[this_alternative][mode]; + + if (SMALL_REGISTER_CLASS_P (this_alternative)) + reject += 3; + } + + /* We are trying to spill pseudo into memory. It is + usually more costly than moving to a hard + register although it might takes the same number + of reloads. */ + if (no_regs_p && (REG_P (op) || scratch_p)) + reject += 3; + + /* Input reloads can be inherited more often than + output reloads can be removed, so penalize output + reloads. */ + if (! (REG_P (op) || scratch_p) || operand_type[nop] != OP_IN) + reject++; + } + + if (early_clobber_p[nop] && ! scratch_p) + reject++; + + /* ??? We check early clobbers after processing all + operands (see loop below) and there we update the + costs more. Should we update the cost (may be + approximately) here because of early clobber register + reloads or it is a rare or non-important thing to be + worth to do it. */ + overall = losers * 6 + reject; + if ((best_losers == 0 || losers != 0) && best_overall < overall) + goto fail; + + curr_alt[nop] = this_alternative; + curr_alt_win[nop] = this_alternative_win; + curr_alt_offmemok[nop] = this_alternative_offmemok; + curr_alt_addrok[nop] = addrok; + curr_alt_matches[nop] = this_alternative_matches; + + if (this_alternative_matches >= 0 + && !did_match && !this_alternative_win) + curr_alt_win[this_alternative_matches] = false; + } + ok_p = true; + /* If this alternative can be made to work by reloading, and + it needs less reloading than the others checked so far, + record it as the chosen goal for reloading. */ + if ((best_losers != 0 && losers == 0) + || (((best_losers == 0 && losers == 0) + || (best_losers != 0 && losers != 0)) + && (best_overall > overall + || (best_overall == overall + /* If the cost of the reloads is the same, + prefer alternative which requires minimal + number of reload regs. */ + && (reload_nregs < best_reload_nregs + || (reload_nregs == best_reload_nregs + && nalt < goal_alt_number)))))) + { + goal_alt_swapped = curr_swapped; + for (nop = 0; nop < recog_data.n_operands; nop++) + { + goal_op_alt[nop] = curr_alt[nop]; + goal_alt_offmemok[nop] = curr_alt_offmemok[nop]; + goal_alt_addrok[nop] = curr_alt_addrok[nop]; + if ((m = curr_alt_matches[nop]) >= 0) + { + goal_op_alt[nop] = reg_class_subunion[curr_alt[m]][curr_alt[nop]]; + if (curr_alt_offmemok[m]) + goal_alt_offmemok[nop] = true; + } + } + best_overall = overall; + best_losers = losers; + best_reload_nregs = reload_nregs; + goal_alt_number = nalt; + } + if (losers == 0) + /* Everything is satisfied. Do not process alternatives + anymore. */ + break; + fail: + ; + } + if (commutative < 0) + break; + if (curr_swapped) + break; + op = recog_data.operand[commutative]; + recog_data.operand[commutative] = recog_data.operand[commutative + 1]; + recog_data.operand[commutative + 1] = op; + } + if (curr_swapped) + { + op = recog_data.operand[commutative]; + recog_data.operand[commutative] = recog_data.operand[commutative + 1]; + recog_data.operand[commutative + 1] = op; + } + if (! ok_p) + goal_alt_number = 0; + if (ira_dump_file != NULL) + { + fprintf (ira_dump_file, "insn %u", uid); + if (INSN_CODE (insn) >= 0 + && (p = get_insn_name (INSN_CODE (insn))) != NULL) + fprintf (ira_dump_file, " {%s}", p); + fprintf (ira_dump_file, " will use alt %d%s:", goal_alt_number, + goal_alt_swapped ? " with swap" : "" ); + } + len = op_infos.length (); + if (insn_selections[uid].alt >= 0 && insn_selections[uid].alt != goal_alt_number) + fprintf (stderr, "change alt %d to %d in insn %d\n", + insn_selections[uid].alt, goal_alt_number, uid); + insn_selections[uid].alt = goal_alt_number; + insn_selections[uid].op_info_start = len; + op_infos.safe_grow (len + recog_data.n_operands); + for (nop = 0; nop < recog_data.n_operands; nop++) + { + op_infos[len + nop].op_class = goal_op_alt[nop]; + op_infos[len + nop].allows_mem_p = goal_alt_offmemok[nop]; + op_infos[len + nop].allows_addr_p = goal_alt_addrok[nop]; + if (ira_dump_file != NULL) + { + p = insn_constraints[nop * recog_data.n_alternatives + goal_alt_number]; + if (p == NULL || *p == '\0') + continue; + fprintf (ira_dump_file, " (%d) ", nop); + for (; *p != '\0' && *p != ',' && *p != '#'; p++) + fputc (*p, ira_dump_file); + } + } + if (ira_dump_file != NULL) + fprintf (ira_dump_file, "\n"); +} + +static void +record_address_regs (enum machine_mode mode, addr_space_t as, rtx x, + int context, enum rtx_code outer_code, + enum rtx_code index_code, int scale); + +/* Update reg classes and memory costs of pseudos after choosing + alternative ISEL of INSN. Don't update memory costs if + IGNORE_MEM_COST_P is TRUE. */ +static void +define_op_cost_from_alt (rtx_insn *insn, const struct insn_selection &isel, bool ignore_mem_cost_p) +{ + int nop, op_start, regno, other_regno; + rtx set; + + ira_assert (isel.alt >= 0); + op_start = isel.op_info_start; + for (nop = 0; nop < recog_data.n_operands; nop++) + { + rtx op = recog_data.operand[nop]; + int k, add_cost, regno; + bool in_p, out_p, allows_mem_p; + enum machine_mode mode; + struct costs *pp; + int *pp_costs; + cost_classes_t cost_classes_ptr; + enum reg_class *cost_classes; + enum reg_class op_class, cost_class; + move_table *move_in_cost, *move_out_cost; + + if (GET_CODE (op) == SUBREG) + op = SUBREG_REG (op); + op_class = op_infos[op_start + nop].op_class; + if (MEM_P (op)) + record_address_regs (GET_MODE (op), MEM_ADDR_SPACE (op), + XEXP (op, 0), 0, MEM, SCRATCH, frequency * 2); + else if (op_infos[op_start + nop].allows_addr_p) + record_address_regs (VOIDmode, ADDR_SPACE_GENERIC, + op, 0, ADDRESS, SCRATCH, frequency * 2); + + if (! REG_P (op) || (regno = REGNO (op)) < FIRST_PSEUDO_REGISTER) + continue; + + op_class = op_infos[op_start + nop].op_class; + mode = GET_MODE (op); /* ??? smallest mode for paradoxical subreg */ + pp = COSTS (costs, COST_INDEX (regno)); + cost_classes_ptr = regno_cost_classes[regno]; + cost_classes = cost_classes_ptr->classes; + pp_costs = pp->cost; + in_p = recog_data.operand_type[nop] != OP_OUT; + out_p = recog_data.operand_type[nop] != OP_IN; + ira_init_register_move_cost_if_necessary (mode); + if (! in_p) + { + ira_assert (out_p); + move_out_cost = ira_may_move_out_cost[mode]; + for (k = cost_classes_ptr->num - 1; k >= 0; k--) + { + cost_class = cost_classes[k]; + add_cost = move_out_cost[op_class][cost_class] * frequency; + if (INT_MAX - add_cost < pp_costs[k]) + pp_costs[k] = INT_MAX; + else + pp_costs[k] += add_cost; + } + } + else if (! out_p) + { + ira_assert (in_p); + move_in_cost = ira_may_move_in_cost[mode]; + for (k = cost_classes_ptr->num - 1; k >= 0; k--) + { + cost_class = cost_classes[k]; + add_cost = move_in_cost[cost_class][op_class] * frequency; + if (INT_MAX - add_cost < pp_costs[k]) + pp_costs[k] = INT_MAX; + else + pp_costs[k] += add_cost; + } + } + else + { + move_in_cost = ira_may_move_in_cost[mode]; + move_out_cost = ira_may_move_out_cost[mode]; + for (k = cost_classes_ptr->num - 1; k >= 0; k--) + { + cost_class = cost_classes[k]; + add_cost = (move_in_cost[cost_class][op_class] + + move_out_cost[op_class][cost_class]) * frequency; + if (INT_MAX - add_cost < pp_costs[k]) + pp_costs[k] = INT_MAX; + else + pp_costs[k] += add_cost; + } + } + + if (!ignore_mem_cost_p) + { + allows_mem_p = op_infos[op_start + nop].allows_mem_p; + /* If the alternative actually allows memory, make things a bit + cheaper since we won't need an extra insn to load it. */ + add_cost = ((out_p ? ira_memory_move_cost[mode][op_class][0] : 0) + + (in_p ? ira_memory_move_cost[mode][op_class][1] : 0) + - allows_mem_p) * frequency; + if (INT_MAX - add_cost < pp->mem_cost) + pp->mem_cost = INT_MAX; + else + pp->mem_cost += add_cost; + } + } + if ((set = single_set (insn)) != NULL_RTX) + { + rtx dest = SET_DEST (set); + rtx src = SET_SRC (set); + + dest = SET_DEST (set); + src = SET_SRC (set); + if (REG_P (src) && REG_P (dest) + && find_regno_note (insn, REG_DEAD, REGNO (src)) + && (((regno = REGNO (src)) >= FIRST_PSEUDO_REGISTER + && (other_regno = REGNO (dest)) < FIRST_PSEUDO_REGISTER) + || ((regno = REGNO (dest)) >= FIRST_PSEUDO_REGISTER + && (other_regno = REGNO (src)) < FIRST_PSEUDO_REGISTER))) + { + struct costs *pp = COSTS (costs, COST_INDEX (regno)); + int *pp_costs = pp->cost; + enum machine_mode mode = GET_MODE (src); + cost_classes_t cost_classes_ptr = regno_cost_classes[regno]; + enum reg_class *cost_classes = cost_classes_ptr->classes; + reg_class_t rclass; + int k, nr; + + for (k = cost_classes_ptr->num - 1; k >= 0; k--) + { + rclass = cost_classes[k]; + if (TEST_HARD_REG_BIT (reg_class_contents[rclass], other_regno) + && (reg_class_size[(int) rclass] + == ira_reg_class_max_nregs [(int) rclass][(int) mode])) + { + if (reg_class_size[rclass] == 1) + pp_costs[k] -= frequency; + else + { + for (nr = 0; - nr < hard_regno_nregs[other_regno][mode]; ++ nr < hard_regno_nregs (other_regno, mode); + nr++) + if (! TEST_HARD_REG_BIT (reg_class_contents[rclass], + other_regno + nr)) + break; + - if (nr == hard_regno_nregs[other_regno][mode]) ++ if (nr == hard_regno_nregs (other_regno, mode)) + pp_costs[k] -= frequency; + } + } + } + } + } +} + + + + /* Record the cost of using memory or hard registers of various classes for the operands in INSN.