[arm] PR target/85026: Fix ldrsh length estimate in Thumb state
[official-gcc.git] / gcc / ChangeLog
blob53b67fb832bb610179e933accaec7287ca949068
1 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3         PR target/85026
4         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
5         Clean up attributes.
7 2018-03-23  Richard Biener  <rguenther@suse.de>
9         PR debug/85020
10         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
11         we are going to emit early debug for LTO.
13 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
15         PR inline-asm/85034
16         * function.c (match_asm_constraints_1): Don't optimize if input
17         doesn't satisfy general_operand predicate for output's mode.
19         PR inline-asm/85022
20         * alias.c (write_dependence_p): Don't require for x_canonicalized
21         non-VOIDmode if x has VOIDmode.
23         PR sanitizer/85029
24         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
25         just don't try to optimize it rather than assert it never happens.
27 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
29         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
30         macro expansions for definition of ST_INTERNAL_<mode> and
31         LD_INTERNAL_<mode> builtins.
32         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
33         Remove prototype.
34         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
35         function.
36         (altivec_expand_st_builtin): Likewise.
37         (altivec_expand_builtin): Remove calls to deleted functions.
38         (rs6000_address_for_altivec): Delete this function.
39         * config/rs6000/vector.md: Remove expands for
40         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
42 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
44         PR target/84826
45         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
46         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
47         re-computing once computed.
48         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
49         (arm_init_machine_status): Initialize
50         machine->static_chain_stack_bytes.
52 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
54         PR target/84760
55         * doc/extend.texi: Add four new prototypes for vec_ld.
56         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
57         definitions for more logical presentation.
58         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
59         entries for V1TI variants of __builtin_altivec_ld builtin.
60         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
61         handling of V1TI variant of LVX icode pattern.
62         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
63         (rs6000_gimple_fold_builtin): Likewise.
64         (altivec_init_builtins): Add code to define
65         __builtin_altivec_lvx_v1ti function.
67 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
69         PR inline-asm/84941
70         * function.c (match_asm_constraints_1): Don't do the optimization
71         if input isn't a REG, SUBREG, MEM or constant.
73 2018-03-22  Tom de Vries  <tom@codesourcery.com>
75         PR tree-optimization/84956
76         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
77         bb_has_abnormal_pred.
79 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
81         PR sanitizer/85018
82         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
83         DECL_INITIAL (decl) to decl at the end.
84         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
85         adjust the comment.
87 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
89         * doc/extend.texi (__builtin_tgmath): Document when complex
90         integer types are treated as _Complex _Float64.
92 2018-03-21  Tom de Vries  <tom@codesourcery.com>
94         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
96 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
98         PR tree-optimization/84960
99         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
100         if it is ENTRY block, move them into single succ of ENTRY in that case.
102 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
104         PR tree-optimization/84811
105         * poly-int.h (poly_span_traits): Remove the T3 parameter and
106         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
107         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
108         (known_subrange_p): Update accordingly.  Cast each value involved
109         in the size comparison, rather than casting the result of the
110         subtraction.
112 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
114         PR tree-optimization/84982
115         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
116         by flipping the least significant bit rather than all bits from
117         bitpos to bitpos + bitsize - 1.
119 2018-03-21  Nathan Sidwell  <nathan@acm.org>
121         * doc/extend.texi (Deprecated Features): Remove mention of
122         long-deleted deprecations.
124 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
126         PR jit/84288
127         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
128         * configure: Regenerate.
130 2018-03-21  Tom de Vries  <tom@codesourcery.com>
132         PR tree-optimization/83126
133         * tree-parloops.c (num_phis): New function.
134         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
136 2018-03-21  Nathan Sidwell  <nathan@acm.org>
138         * doc/extend.texi (Deprecated Features): Update deprecated flags,
139         mention anon-struct/union members and trailing attributes.
141 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
143         PR tree-optimization/84969
144         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
145         builtin memset partitions if they set different rhs values.
147 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
149         PR rtl-optimization/84989
150         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
151         VEC_DUPLICATE with scalar result mode.
153 2018-03-21  Martin Liska  <mliska@suse.cz>
155         PR ipa/84963
156         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
157         not intended return statement.
159 2018-03-21  Martin Liska  <mliska@suse.cz>
161         PR target/84988
162         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
163         (chkp_find_bound_slots_1): Limit number of iterations.
165 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
167         PR target/84838
168         * Minor grammar fixes for x86 options.
170 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
172         PR debug/84875
173         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
174         holding REG_CFA_RESTORE notes, instead turn them into a USE.
176 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
178         PR target/83789
179         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
180         (altivec_lvx_<mode>_1op): Likewise.
181         (altivec_stvx_<mode>_2op): Likewise.
182         (altivec_stvx_<mode>_1op): Likewise.
183         (altivec_lvx_<VM2:mode>): New define_expand.
184         (altivec_stvx_<VM2:mode>): Likewise.
185         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
186         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
187         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
188         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
189         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
190         (rs6000_gen_lvx): Likewise.
191         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
192         (altivec_expand_stv_builtin): Likewise.
193         (altivec_expand_builtin): Likewise.
194         * config/rs6000/vector.md: Likewise.
196 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
198         PR target/82518
199         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
200         BYTES_BIG_ENDIAN.
202 2018-03-20  Richard Biener  <rguenther@suse.de>
204         PR target/84986
205         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
206         sign-conversions as zero, fall back to standard scalar_stmt
207         cost for the rest.
209 2018-03-20  Martin Liska  <mliska@suse.cz>
211         PR ipa/84825
212         * predict.c (rebuild_frequencies): Handle case when we have
213         PROFILE_ABSENT, but flag_guess_branch_prob is false.
215 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
217         PR target/84990
218         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
219         flag_section_anchors.
220         * varasm.c (use_blocks_for_decl_p): Remove hack for
221         dw2_force_const_mem.
223         PR target/84845
224         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
225         to ...
226         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
227         be created, use lowpart_subreg of operands[0] rather than operands[0]
228         itself.
229         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
230         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
231         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
232         and n constraint instead of aarch64_shift_imm_di and Usd.
233         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
234         (*aarch64_<optab>_reg_minus<mode>3): ... this.
236 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
238         PR target/82989
239         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
240         to favor GPR over NEON registers.
241         (<shift>di3_neon): Likewise.
243 2018-03-20  Tom de Vries  <tom@codesourcery.com>
245         PR target/84952
246         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
247         (nvptx_process_pars): Emit bar.sync asap and alap.
249 2018-03-20  Tom de Vries  <tom@codesourcery.com>
251         PR target/84954
252         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
253         seen_label if seen_label is already set.
255 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
257         PR target/84945
258         * config/i386/i386.c (fold_builtin_cpu): For features above 31
259         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
260         Use 1U instead of 1.  Formatting fixes.
262         PR c/84953
263         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
264         instead of TREE_TYPE (s1) for the return value.
266 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
268         PR tree-optimization/84946
269         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
270         bitsize + bitsize in poly_uint64 rather than poly_int64.
272         PR sanitizer/78651
273         * dwarf2asm.c: Include fold-const.c.
274         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
275         of decl rather than decl itself.
277         PR rtl-optimization/84643
278         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
280 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
282         PR sanitizer/78651
283         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
284         calling assemble_variable.
286 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
288         PR target/81647
289         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
290         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
292 2018-03-19  Jim Wilson  <jimw@sifive.com>
294         PR bootstrap/84856
295         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
296         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
297         (riscv_first_stack_step): Likewise.
298         (riscv_option_override): Use STACK_BOUNDARY instead of
299         MIN_STACK_BOUNDARY.
300         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
301         MIN_STACK_BOUNDARY.
302         (BIGGEST_ALIGNMENT): Set to 128.
303         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
304         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
305         STACK_BOUNDARY.
307 2018-03-19  Richard Biener  <rguenther@suse.de>
309         PR tree-optimization/84933
310         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
311         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
313 2018-03-19  Richard Biener  <rguenther@suse.de>
315         PR tree-optimization/84859
316         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
317         (cond_if_else_store_replacement): Perform sinking operation on
318         single-store BBs regardless of MAX_STORES_TO_SINK setting.
319         Generalize what a BB with a single eligible store is.
321 2018-03-19  Richard Biener  <rguenther@suse.de>
323         PR tree-optimization/84929
324         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
325         chrec_is_positive against non-chrec arg.
327 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
329         PR target/84711
330         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
332 2018-03-18  Martin Liska  <mliska@suse.cz>
334         PR rtl-optimization/84635
335         * regrename.c (build_def_use): Use matches_mode only when
336         matches >= 0.
338 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
340         PR tree-optimization/84913
341         * tree-vect-loop.c (vectorizable_reduction): Don't try to
342         vectorize chains of COND_EXPRs.
344 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
346         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
348 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
350         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
352 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
354         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
356 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
357             Kito Cheng  <kito.cheng@gmail.com>
359         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
360         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
361         (nds32_adjust_reg_alloc_order): New function.
362         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
364 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
366         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
367         nds32_print_operand, nds32_print_operand_address): Use
368         HOST_WIDE_INT_PRINT_DEC instead.
370 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
372         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
374 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
376         PR target/84902
377         * config/i386/i386.c (initial_ix86_tune_features,
378         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
379         unsigned long long.
380         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
381         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
382         rather than 1u << ix86_tune.  Formatting fix.
383         (ix86_option_override_internal): Change ix86_arch_mask from
384         unsigned int to unsigned HOST_WIDE_INT, initialize to
385         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
386         (ix86_function_specific_restore): Likewise.
388 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
390         PR target/84899
391         * postreload.c (reload_combine_recognize_pattern): Perform
392         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
393         truncate_int_for_mode the result for the destination's mode.
395         PR c/84909
396         * hsa-gen.c (mem_type_for_type): Fix comment typo.
397         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
398         Likewise.
399         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
400         Likewise.
402 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
404         PR target/84876
405         * lra-assigns.c (lra_split_hard_reg_for): Don't use
406         regno_allocno_class_array and sorted_pseudos.
407         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
408         insns where regno is used.
410 2018-03-16  Martin Liska  <mliska@suse.cz>
412         PR ipa/84833
413         * multiple_target.c (create_dispatcher_calls): Redirect
414         reference in the symbol table.
416 2018-03-16  Martin Liska  <mliska@suse.cz>
418         PR ipa/84722
419         * multiple_target.c (create_dispatcher_calls): Redirect also
420         an alias.
422 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
424         PR c++/79937
425         PR c++/82410
426         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
427         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
428         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
430 2018-03-16  Julia Koval  <julia.koval@intel.com>
432         * doc/invoke.texi (Skylake Server): Add CLWB.
433         Cannonlake): Remove CLWB.
435 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
437         PR tree-optimization/84841
438         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
439         1 << 3.
440         (FLOAT_ONE_CONST_TYPE): Define.
441         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
442         (sort_by_operand_rank): Put entries with higher constant_type last
443         rather than first to match comments.
445 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
447         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
448         split predicate.
450 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
452         PR c++/79085
453         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
454         check and use address of target always.
456 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
458         PR target/84574
459         * config/i386/i386.c (indirect_thunk_needed): Update comments.
460         (indirect_thunk_bnd_needed): Likewise.
461         (indirect_thunks_used): Likewise.
462         (indirect_thunks_bnd_used): Likewise.
463         (indirect_return_needed): New.
464         (indirect_return_bnd_needed): Likewise.
465         (output_indirect_thunk_function): Add a bool argument for
466         function return.
467         (output_indirect_thunk_function): Don't generate alias for
468         function return thunk.
469         (ix86_code_end): Call output_indirect_thunk_function to generate
470         function return thunks.
471         (ix86_output_function_return): Set indirect_return_bnd_needed
472         and indirect_return_needed instead of indirect_thunk_bnd_needed
473         and indirect_thunk_needed.
475 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
477         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
478         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
479         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
481 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
482             Paul Hua <paul.hua.gm@gmail.com>
484         PR c/84852
485         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
487 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
489         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
490         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
491         resp. SFmode cases.
493 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
495         PR target/84711
496         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
497         instead of GET_MODE_SIZE when comparing Units.
499 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
501         PR target/68256
502         * varasm.c (hash_section): Return an unchangeble hash value
503         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
504         Return !aarch64_can_use_per_function_literal_pools_p ().
506 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
508         PR target/84860
509         * optabs.c (emit_conditional_move): Pass address of cmode's copy
510         rather than address of cmode as last argument to prepare_cmp_insn.
512 2018-03-15  Julia Koval  <julia.koval@intel.com>
514         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
515         F_AVX512VNNI, F_AVX512BITALG): New.
517 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
519         PR target/83451
520         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
521         insn for floating-point loads and stores.
523 2018-03-14  Carl Love  <cel@us.ibm.com>
525         * config/rs6000/rs6000-c.c: Add macro definitions for
526         ALTIVEC_BUILTIN_VEC_PERMXOR.
527         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
528         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
529         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
530         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
531         UNSPEC_VPERMXOR.
532         * config/doc/extend.texi: Add prototypes for vec_permxor.
534 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
536         PR c/84852
537         * diagnostic-show-locus.c (class layout_point): Convert m_line
538         from int to linenum_type.
539         (line_span::comparator): Use linenum "compare" function when
540         comparing line numbers.
541         (test_line_span): New function.
542         (layout_range::contains_point): Convert param "row" from int to
543         linenum_type.
544         (layout_range::intersects_line_p): Likewise.
545         (layout::will_show_line_p): Likewise.
546         (layout::print_source_line): Likewise.
547         (layout::should_print_annotation_line_p): Likewise.
548         (layout::print_annotation_line): Likewise.
549         (layout::print_leading_fixits): Likewise.
550         (layout::annotation_line_showed_range_p): Likewise.
551         (struct line_corrections): Likewise for field m_row.
552         (line_corrections::line_corrections): Likewise for param "row".
553         (layout::print_trailing_fixits): Likewise.
554         (layout::get_state_at_point): Likewise.
555         (layout::get_x_bound_for_row): Likewise.
556         (layout::print_line): Likewise.
557         (diagnostic_show_locus): Likewise for locals "last_line" and
558         "row".
559         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
560         * input.c (selftest::test_linenum_comparisons): New function.
561         (selftest::input_c_tests): Call it.
562         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
563         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
564         * selftest.h (ASSERT_GT): New macro.
565         (ASSERT_GT_AT): New macro.
566         (ASSERT_LT): New macro.
567         (ASSERT_LT_AT): New macro.
569 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
571         PR rtl-optimization/84780
572         * combine.c (distribute_links): Don't make a link based on pc_rtx.
574 2018-03-14  Martin Liska  <mliska@suse.cz>
576         * tree.c (record_node_allocation_statistics): Use
577         get_stats_node_kind.
578         (get_stats_node_kind): New function extracted from
579         record_node_allocation_statistics.
580         (free_node): Use get_stats_node_kind.
582 2018-03-14  Richard Biener  <rguenther@suse.de>
584         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
585         that the value-set of ANTIC_IN doesn't grow.
587         Revert
588         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
589         member.
590         (BB_VISITED_WITH_VISITED_SUCCS): New define.
591         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
593 2018-03-14  Julia Koval  <julia.koval@intel.com>
595         * config.gcc (icelake-client, icelake-server): New.
596         (icelake): Remove.
597         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
598         (initial_ix86_arch_features): Ditto.
599         (PTA_SKYLAKE): Add SGX.
600         (PTA_ICELAKE): Remove.
601         (PTA_ICELAKE_CLIENT): New.
602         (PTA_ICELAKE_SERVER): New.
603         (ix86_option_override_internal): Split up icelake on icelake client and
604         icelake server.
605         (get_builtin_code_for_version): Ditto.
606         (fold_builtin_cpu): Ditto.
607         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
608         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
609         * config/i386/i386.h (processor_type): Ditto.
610         * doc/invoke.texi: Ditto.
612 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
614         PR sanitizer/83392
615         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
616         INTEGER_CST offset, add it together with bitpos / 8 and
617         sign extend based on POINTER_SIZE.
619         PR target/84844
620         Revert
621         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
623         PR target/78090
624         * config/i386/constraints.md (Yc): New register constraint.
625         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
626         Use Yc constraint for alternative 2 of operand 0.  Remove
627         preferred_for_speed attribute.
629 2018-03-14  Richard Biener  <rguenther@suse.de>
631         PR tree-optimization/84830
632         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
633         with the old one to avoid oscillations.
635 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
637         PR target/83712
638         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
639         pseudos.
640         (assign_by_spills): Return a flag of reload assignment failure.
641         Do not process the reload assignment failures.  Do not spill other
642         reload pseudos if they has the same reg class.  Update n if
643         necessary.
644         (lra_assign): Add a return arg.  Set up from the result of
645         assign_by_spills call.
646         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
647         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
648         usage_insns if it is not NULL.
649         (spill_hard_reg_in_range): New function.
650         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
651         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
652         function prototypes.
653         (lra_assign): Change prototype.
654         * lra.c (lra): Add code to deal with fails by splitting hard reg
655         live ranges.
657 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
659         * config/riscv/riscv.opt (mrelax): New option.
660         * config/riscv/riscv.c (riscv_file_start): Emit ".option
661         "norelax" when riscv_mrelax is disabled.
662         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
664 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
666         PR target/84743
667         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
668         reassociation for int modes.
670 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
672         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
673         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
674         for big-endian.
675         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
676         * config/aarch64/aarch64-sve.md
677         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
678         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
679         (*extend<mode><Vwide>2): Rename to...
680         (aarch64_sve_extend<mode><Vwide>2): ...this.
681         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
682         renaming the old pattern to...
683         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
684         unsigned packs.
685         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
686         define_expand, renaming the old pattern to...
687         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
688         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
689         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
690         account when deciding which SVE instruction the optab should use.
691         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
693 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
695         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
696         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
697         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
698         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
699         (tlsdesc_small_<mode>): Turn a define_expand and use
700         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
701         (tlsdesc_small_advsimd_<mode>): ...this.
702         (tlsdesc_small_sve_<mode>): New pattern.
704 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
706         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
707         (UNSPEC_UMUL_HIGHPART): New constants.
708         (MUL_HIGHPART): New int iteraor.
709         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
710         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
711         define_expand.
712         (*<su>mul<mode>3_highpart): New define_insn.
714 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
716         PR lto/84805
717         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
718         incomplete types.
720 2018-03-13  Martin Liska  <mliska@suse.cz>
722         PR ipa/84658.
723         * (sem_item_optimizer::sem_item_optimizer): Initialize new
724         vector.
725         (sem_item_optimizer::~sem_item_optimizer): Release it.
726         (sem_item_optimizer::merge_classes): Register variable aliases.
727         (sem_item_optimizer::fixup_pt_set): New function.
728         (sem_item_optimizer::fixup_points_to_sets): Likewise.
729         * ipa-icf.h: Declare new variables and functions.
731 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
733         PR middle-end/84834
734         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
735         integer_pow2p@2 and test integer_pow2p in condition.
736         (A < 0 ? C : 0): Similarly for @1.
738         PR middle-end/84831
739         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
740         characters starting at p contain '\0' character, don't look beyond
741         that.
743         PR target/84827
744         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
745         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
747         PR target/84828
748         * reg-stack.c (change_stack): Change update_end var from int to
749         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
750         also call set_block_for_insn on the newly added insns and rescan.
752         PR target/84786
753         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
754         on the last operand.
756         PR c++/84704
757         * tree.c (stabilize_reference_1): Return save_expr (e) for
758         STATEMENT_LIST even if it doesn't have side-effects.
760 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
762         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
764 2018-03-12  Renlin Li  <renlin.li@arm.com>
766         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
767         aarch64_output_scalar_simd_mov_immediate.
769 2018-03-12  Martin Sebor  <msebor@redhat.com>
771         PR tree-optimization/83456
772         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
773         for perfectly overlapping calls to memcpy.
774         (gimple_fold_builtin_memory_chk): Same.
775         (gimple_fold_builtin_strcpy): Handle no-warning.
776         (gimple_fold_builtin_stxcpy_chk): Same.
777         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
779 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
781         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
782         parameter.  Use it for SFmode.
783         (rs6000_function_arg_advance_1): Adjust.
784         (rs6000_function_arg): Adjust.
785         (rs6000_gimplify_va_arg): Pass false for that new parameter.
787 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
789         PR rtl-optimization/84169
790         PR rtl-optimization/84780
791         * combine.c (can_combine_p): Check for a 2-insn combination whether
792         the destination register is used between the two insns, too.
794 2018-03-12  Richard Biener  <rguenther@suse.de>
796         PR tree-optimization/84803
797         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
798         for refs DR analysis didn't process.
800 2018-03-12  Richard Biener  <rguenther@suse.de>
802         PR tree-optimization/84777
803         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
804         force-vectorize loops ignore whether we are optimizing for size.
806 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
808         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
809         (TARGET_MD_ASM_ADJUST): Define.
811 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
812             Kito Cheng  <kito.cheng@gmail.com>
813             Chung-Ju Wu  <jasonwucj@gmail.com>
815         * config/nds32/nds32.c (nds32_compute_stack_frame,
816         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
817         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
818         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
819         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
820         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
821         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
822         * config/nds32/nds32.md (prologue, epilogue): Use macro
823         NDS32_V3PUSH_AVAILABLE_P to do checking.
825 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
827         PR debug/58150
828         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
829         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
830         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
831         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
832         addition of most attributes on !orig_type_die or the attribute not
833         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
835 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
836             Chung-Ju Wu  <jasonwucj@gmail.com>
838         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
839         __NDS32_VH__ macro.
840         * config/nds32/nds32.opt (mvh): New option.
842 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
843             Chung-Ju Wu  <jasonwucj@gmail.com>
845         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
846         function.
847         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
848         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
849         definition.
851 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
852             Chung-Ju Wu  <jasonwucj@gmail.com>
854         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
855         function.
856         * config/nds32/nds32-multiple.md (strlensi): New pattern.
857         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
859 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
860             Kito Cheng  <kito.cheng@gmail.com>
861             Chung-Ju Wu  <jasonwucj@gmail.com>
863         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
864         UNSPEC_FFMISM and UNSPEC_FLMISM.
865         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
866         for ffb, ffmism and flmism.
867         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
868         (unspec_ffmism): Ditto.
869         (unspec_flmism): Ditto.
870         (nds32_expand_builtin_impl): Check if string extension is available.
871         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
872         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
874 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
876         Reverting patch:
877         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
879         PR target/83712
880         * lra-assigns.c (assign_by_spills): Return a flag of reload
881         assignment failure.  Do not process the reload assignment
882         failures.  Do not spill other reload pseudos if they has the same
883         reg class.
884         (lra_assign): Add a return arg.  Set up from the result of
885         assign_by_spills call.
886         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
887         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
888         usage_insns if it is not NULL.
889         (spill_hard_reg_in_range): New function.
890         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
891         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
892         function prototypes.
893         (lra_assign): Change prototype.
894         * lra.c (lra): Add code to deal with fails by splitting hard reg
895         live ranges.
897 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
899         PR target/84807
900         * config/i386/i386.opt: Replace Enforcment with Enforcement.
902 2018-03-10  Alexandre Oliva <aoliva@redhat.com>
904         PR debug/84620
905         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
906         (dw_val_node): Add val_symbolic_view.
907         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
908         (symview_upper_bound): New.
909         (new_line_info_table): Initialize symviews_since_reset.
910         (dwarf2out_source_line): Count symviews_since_reset and set
911         symview_upper_bound.
912         (dw_val_equal_p): Handle symview.
913         (add_AT_symview): New.
914         (print_dw_val): Handle symview.
915         (attr_checksum, attr_checksum_ordered): Likewise.
916         (same_dw_val_p, size_of_die): Likewise.
917         (value_format, output_die): Likewise.
918         (add_high_low_attributes): Use add_AT_symview for entry_view.
919         (dwarf2out_finish): Reset symview_upper_bound, clear
920         zero_view_p.
922 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
924         PR target/83969
925         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
926         Add strict argument and use it.
927         (rs6000_split_multireg_move): Update for new strict argument.
928         (mem_operand_gpr): Disallow all non-offsettable addresses.
929         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
931 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
933         PR target/84772
934         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
935         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
936         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
938         PR c++/84767
939         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
940         decl, use remap_type if we want to use the type.
942 2018-03-09  Martin Sebor  <msebor@redhat.com>
944         PR tree-optimization/84526
945         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
946         Remove dead code.
947         (builtin_access::generic_overlap): Be prepared to handle non-array
948         base objects.
950 2018-03-09  Alexandre Oliva <aoliva@redhat.com>
952         PR rtl-optimization/84682
953         * lra-constraints.c (process_address_1): Check is_address flag
954         for address constraints.
955         (process_alt_operands): Likewise.
956         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
957         preprocess_constraints.
958         * recog.h (preprocess_constraints): Add oploc parameter.
959         Adjust callers.
960         * recog.c (preprocess_constraints): Test address_operand for
961         CT_ADDRESS constraints.
963 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
965         PR target/83712
966         * lra-assigns.c (assign_by_spills): Return a flag of reload
967         assignment failure.  Do not process the reload assignment
968         failures.  Do not spill other reload pseudos if they has the same
969         reg class.
970         (lra_assign): Add a return arg.  Set up from the result of
971         assign_by_spills call.
972         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
973         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
974         usage_insns if it is not NULL.
975         (spill_hard_reg_in_range): New function.
976         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
977         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
978         function prototypes.
979         (lra_assign): Change prototype.
980         * lra.c (lra): Add code to deal with fails by splitting hard reg
981         live ranges.
983 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
985         PR target/83193
986         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
987         Accept complain bool parameter.  Only emit errors if it is true.
988         (arm_parse_cpu_option_name): Likewise.
989         (arm_target_thumb_only): Adjust callers of the above.
990         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
991         prototype to take a default true bool parameter.
992         (arm_parse_arch_option_name): Likewise.
994 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
995             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
997         PR jit/64089
998         PR jit/84288
999         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
1000         * configure: Regenerate.
1001         * configure.ac ("linker --version-script option"): New.
1002         ("linker soname option"): New.
1004 2018-03-09  Richard Biener  <rguenther@suse.de>
1006         PR tree-optimization/84775
1007         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
1008         immediate uses of predicate stmts and mark them modified.
1010         Revert
1011         PR tree-optimization/84178
1012         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
1013         to caller.
1014         (version_loop_for_if_conversion): Delay update_ssa call.
1015         (tree_if_conversion): Delay update_ssa until after predicate
1016         insertion.
1018 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
1020         PR target/84763
1021         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
1022         when the function accesses prior frames.
1024 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
1026         PR debug/84456
1027         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
1028         gen_llsym, otherwise call maybe_gen_llsym.
1030         PR inline-asm/84742
1031         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
1032         has ',' character inside of it.
1034 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1036         PR target/84748
1037         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
1038         as clobbering CC_REGNUM.
1040 2018-03-08  Richard Biener  <rguenther@suse.de>
1042         PR middle-end/84552
1043         * tree-scalar-evolution.c: Include tree-into-ssa.h.
1044         (follow_copies_to_constant): Do not follow SSA names registered
1045         for update.
1047 2018-03-08  Richard Biener  <rguenther@suse.de>
1049         PR tree-optimization/84178
1050         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
1051         to caller.
1052         (version_loop_for_if_conversion): Delay update_ssa call.
1053         (tree_if_conversion): Delay update_ssa until after predicate
1054         insertion.
1056 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
1058         PR tree-optimization/84178
1059         * tree-if-conv.c (release_bb_predicate): Remove the
1060         the assertion that the stmts have NULL use_ops.
1061         Discard the statements, asserting that they haven't
1062         yet been added to a BB.
1064 2018-03-08  Richard Biener  <rguenther@suse.de>
1066         PR tree-optimization/84746
1067         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
1068         (phi_translate): Pass in destination ANTIC_OUT set.
1069         (phi_translate_1): Likewise.  For a simplified result lookup
1070         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
1071         (phi_translate_set): Adjust.
1072         (do_pre_regular_insertion): Likewise.
1073         (do_pre_partial_partial_insertion): Likewise.
1075 2018-03-08  Martin Liska  <mliska@suse.cz>
1077         PR gcov-profile/84735
1078         * doc/gcov.texi: Document usage of profile files.
1079         * gcov-io.h: Document changes in the format.
1081 2018-03-08  Alexandre Oliva <aoliva@redhat.com>
1083         PR debug/84404
1084         PR debug/84408
1085         * dwarf2out.c (struct dw_line_info_table): Update comments for
1086         view == -1.
1087         (FORCE_RESET_NEXT_VIEW): New.
1088         (FORCE_RESETTING_VIEW_P): New.
1089         (RESETTING_VIEW_P): Check for -1 too.
1090         (ZERO_VIEW_P): Likewise.
1091         (new_line_info_table): Force-reset next view.
1092         (dwarf2out_begin_function): Likewise.
1093         (dwarf2out_source_line): Simplify zero_view_p initialization.
1094         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
1095         view directly.  Omit view when omitting .loc at line 0.
1097 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
1099         PR tree-optimization/84740
1100         * tree-switch-conversion.c (process_switch): Call build_constructors
1101         only if info.phi_count is non-zero.
1103         PR tree-optimization/84739
1104         * tree-tailcall.c (find_tail_calls): Check call arguments against
1105         DECL_ARGUMENTS (current_function_decl) rather than
1106         DECL_ARGUMENTS (func) when checking for tail recursion.
1108 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
1110         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
1111         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
1112         Volker Reichelt's entry and add entries for people that perform
1113         GCC fuzzy testing and report numerous bugs.
1115 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
1117         PR target/82411
1118         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
1119         readonly data in sdata, if that is disabled.
1120         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
1121         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
1122         -mreadonly-in-sdata option.
1124 2018-03-07  Martin Sebor  <msebor@redhat.com>
1126         PR tree-optimization/84468
1127         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
1128         basic block when looking for nul assignment.
1130 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
1132         PR target/84277
1133         * except.h (output_function_exception_table): Adjust prototype.
1134         * except.c (output_function_exception_table): Remove FNNAME parameter
1135         and add SECTION parameter.  Ouput one part of the table at a time.
1136         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
1137         the first part of the exception table and emit unwind directives.
1138         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
1139         (i386_pe_seh_cold_init): Likewise.
1140         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
1141         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
1142         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
1143         (ix86_output_call_insn): Emit a nop in one more case for SEH.
1144         * config/i386/winnt.c: Include except.h.
1145         (struct seh_frame_state): Add reg_offset, after_prologue and
1146         in_cold_section fields.
1147         (i386_pe_seh_end_prologue): Set seh->after_prologue.
1148         (i386_pe_seh_cold_init): New function.
1149         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
1150         to seh->in_cold_section.
1151         (seh_emit_push): Record the offset of the push.
1152         (seh_emit_save): Record the offet of the save.
1153         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
1154         Test seh->after_prologue to disregard the epilogue.
1155         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
1156         (i386_pe_end_cold_function): New function.
1158 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
1160         PR fortran/84565
1161         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
1162         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
1164         PR c++/84704
1165         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
1166         on tmp_var.
1167         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
1168         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
1170         PR middle-end/84723
1171         * multiple_target.c: Include tree-inline.h and intl.h.
1172         (expand_target_clones): Diagnose and fail if node->definition and
1173         !tree_versionable_function_p (node->decl).
1175 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
1177         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
1178         sprint_ul.
1179         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
1180         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
1181         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
1183 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
1185         PR target/84710
1186         * combine.c (try_combine): Use reg_or_subregno instead of handling
1187         just paradoxical SUBREGs and REGs.
1189 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
1191          * config/arc/arc.c (arc_finalize_pic): Remove function.
1192          (arc_must_save_register): We use single base PIC register, remove
1193          checks to save/restore the PIC register.
1194          (arc_expand_prologue): Likewise.
1195          * config/arc/arc-protos.h (arc_set_default_type_attributes):
1196          Remove.
1197          (arc_verify_short): Likewise.
1198          (arc_attr_type): Likewise.
1199          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
1200          (walk_stores): Likewise.
1201          (arc_address_cost): Make it static.
1202          (arc_verify_short): Likewise.
1203          (branch_dest): Likewise.
1204          (arc_attr_type): Likewise.
1205          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
1206          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
1207          (arc_final_prescan_insn): Remove inserting the nops due to
1208          hardware hazards.  It is done in reorg step.
1209          (insn_length_variant_t): Remove.
1210          (insn_length_parameters_t): Likewise.
1211          (arc_insn_length_parameters): Likewise.
1212          (arc_get_insn_variants): Likewise.
1213          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
1215 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
1217         PR inline-asm/84683
1218         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
1219         assertion failure.
1221         PR tree-optimization/84687
1222         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
1223         on new_node->decl.
1224         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
1226 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1228         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
1229         Rename to ppc_speculation_barrier.
1230         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
1231         __builtin_ppc_speculation_barrier.
1233 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1235         PR target/84700
1236         * combine.c (combine_simplify_rtx): Don't try to simplify if
1237         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
1238         are equal to x.
1240 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
1242         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
1243         to 32 bytes when compiling for POWER9.
1245 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1247         PR target/84564
1248         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
1249         regparm >= 3 with no arg reg available also for calls with
1250         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
1252         PR target/84524
1253         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
1254         orig,vex.
1255         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
1257 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
1259         PR target/84264
1260         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
1262 2018-03-05  Richard Biener  <rguenther@suse.de>
1264         PR tree-optimization/84486
1265         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
1266         When inserting a __builtin_assume_aligned call set the LHS
1267         SSA name alignment info accordingly.
1269 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
1271         PR tree-optimization/84114
1272         * config/aarch64/aarch64.c (aarch64_reassociation_width)
1273         Avoid reassociation of FLOAT_MODE addition.
1275 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
1277         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
1278         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
1279         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
1280         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
1281         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
1282         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
1283         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
1284         and -mwbnoinvd.
1285         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
1286         __builtin_ia32_wbinvd): New builtins.
1287         (SPECIAL_ARGS2): New.
1288         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
1289         (SPECIAL_ARGS2): New.
1290         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
1291         (ix86_valid_target_attribute_inner_p): Ditto.
1292         (ix86_init_mmx_sse_builtins): Add special_args2.
1293         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
1294         TARGET_WBNOINVD_P): New.
1295         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
1296         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
1297         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
1298         * config/i386/immintrin.h (_wbinvd): New intrinsic.
1299         * config/i386/pconfigintrin.h: New file.
1300         * config/i386/wbnoinvdintrin.h: Ditto.
1301         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
1302         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
1304 2018-03-05  Richard Biener  <rguenther@suse.de>
1306         PR tree-optimization/84670
1307         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
1308         member.
1309         (BB_VISITED_WITH_VISITED_SUCCS): New define.
1310         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
1311         (compute_antic_aux): Only assert the number of values in ANTIC_IN
1312         doesn't grow if all successors (recursively) were visited at least
1313         once.
1315 2018-03-05  Richard Biener  <rguenther@suse.de>
1317         PR tree-optimization/84650
1318         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
1319         if executed in the loop pipeline.
1321 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
1323         * doc/configfiles.texi (Configuration Files): Move info about
1324         conditionalizing $target-protos.h to...
1325         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
1326         differs from $target-protos.h.
1328 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
1329             Chung-Ju Wu  <jasonwucj@gmail.com>
1331         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
1332         * config/nds32/nds32-multiple.md (setmemsi): Define.
1333         * config/nds32/nds32-memory-manipulation.c
1334         (nds32_gen_dup_4_byte_to_word_value): New.
1335         (emit_setmem_word_loop): New.
1336         (emit_setmem_byte_loop): New.
1337         (nds32_expand_setmem_loop): New.
1338         (nds32_expand_setmem_loop_v3m): New.
1339         (nds32_expand_setmem_unroll): New.
1340         (nds32_expand_setmem): New.
1342 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
1343             Chung-Ju Wu  <jasonwucj@gmail.com>
1345         * config/nds32/nds32-memory-manipulation.c
1346         (nds32_emit_load_store): New.
1347         (nds32_emit_post_inc_load_store): New.
1348         (nds32_emit_mem_move): New.
1349         (nds32_emit_mem_move_block): New.
1350         (nds32_expand_movmemsi_loop_unknown_size): New.
1351         (nds32_expand_movmemsi_loop_known_size): New.
1352         (nds32_expand_movmemsi_loop): New.
1353         (nds32_expand_movmemsi_unroll): New.
1354         (nds32_expand_movmemqi): Rename ...
1355         (nds32_expand_movmemsi): ... to this.
1356         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
1357         (movmemsi): ... to this.
1358         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
1359         (nds32_expand_movmemsi): ... to this.
1361 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
1362             Monk Chiang  <sh.chiang04@gmail.com>
1363             Chung-Ju Wu  <jasonwucj@gmail.com>
1365         * config/nds32/nds32-protos.h
1366         (nds32_expand_load_multiple): New arguments.
1367         (nds32_expand_store_multiple): Ditto.
1368         (nds32_valid_multiple_load_store): Rename ...
1369         (nds32_valid_multiple_load_store_p): ... to this.
1370         * config/nds32/nds32-memory-manipulation.c
1371         (nds32_expand_load_multiple): Refine implementation.
1372         (nds32_expand_store_multiple): Ditto.
1373         * config/nds32/nds32-multiple.md
1374         (load_multiple): Update nds32_expand_load_multiple interface.
1375         (store_multiple): Update nds32_expand_store_multiple interface.
1376         * config/nds32/nds32-predicates.c
1377         (nds32_valid_multiple_load_store): Rename ...
1378         (nds32_valid_multiple_load_store_p): ... to this and refine
1379         implementation.
1380         * config/nds32/predicates.md
1381         (nds32_load_multiple_and_update_address_operation): New predicate.
1382         (nds32_store_multiple_and_update_address_operation): New predicate.
1384 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
1385             Chung-Ju Wu  <jasonwucj@gmail.com>
1387         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
1388         (combo): New attribute.
1389         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
1391 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
1393         * config/nds32/nds32.opt: Change -mcmodel= default value.
1395 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
1396             Monk Chiang  <sh.chiang04@gmail.com>
1397             Chung-Ju Wu  <jasonwucj@gmail.com>
1399         * config/nds32/constants.md (unspec_element): New enum.
1400         * config/nds32/constraints.md (Umw): New constraint.
1401         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
1402         * config/nds32/nds32-intrinsic.md: Likewise.
1403         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
1404         (nds32_valid_smw_lwm_base_p): New.
1405         (nds32_output_smw_single_word): New.
1406         (nds32_output_lmw_single_word): New.
1407         (nds32_expand_unaligned_load): New.
1408         (nds32_expand_unaligned_store): New.
1409         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
1410         (nds32_output_smw_single_word): Declare.
1411         (nds32_output_lmw_single_word): Declare.
1412         (nds32_expand_unaligned_load): Declare.
1413         (nds32_expand_unaligned_store): Declare.
1414         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
1415         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
1416         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
1417         NDS32_BUILTIN_UASTORE_DW.
1418         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
1419         predicate.
1421 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
1422             Kito Cheng  <kito.cheng@gmail.com>
1423             Chung-Ju Wu  <jasonwucj@gmail.com>
1425         * config/nds32/nds32-intrinsic.c
1426         (nds32_expand_builtin_null_ftype_reg): Delete.
1427         (nds32_expand_builtin_reg_ftype_imm): Ditto.
1428         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
1429         (nds32_read_argument): New.
1430         (nds32_legitimize_target): Ditto.
1431         (nds32_legitimize_argument): Ditto.
1432         (nds32_check_constant_argument): Ditto.
1433         (nds32_expand_unop_builtin): Ditto.
1434         (nds32_expand_unopimm_builtin): Ditto.
1435         (nds32_expand_binop_builtin): Ditto.
1436         (nds32_builtin_decl_impl): Ditto.
1437         (builtin_description): Ditto.
1438         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
1439         (nds32_init_builtins_impl): Ditto.
1440         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
1441         (nds32_builtin_decl): New.
1442         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
1443         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
1445 2018-03-02  Jeff Law  <law@redhat.com>
1447         * reorg.c (stop_search_p): Handle DEBUG_INSN.
1448         (redundant_insn, fill_simple_delay_slots): Likewise.
1449         (fill_slots_from_thread): Likewise.
1450         * resource.c (mark_referenced_resources): Likewise.
1451         (mark_set_resources, find_dead_or_set_registers): Likewise.
1453 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1455         * substring-locations.h (format_warning_va): Formatting fix for
1456         ATTRIBUTE_GCC_DIAG.
1457         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
1458         argument.
1459         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
1460         * substring-locations.c: Include intl.h.
1461         (format_warning_va): Turned into small wrapper around
1462         format_warning_n_va, renamed to ...
1463         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
1464         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
1465         use ngettext.
1466         (format_warning_at_substring_n): New function.
1467         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
1468         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
1469         format_warning_at_substring with just a shorter name instead of
1470         const function pointer.
1471         (fmtwarn_n): New function.
1472         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
1473         appropriate, get rid of all the fmtstr temporaries, move conditionals
1474         with G_() wrapped string literals directly into fmtwarn arguments,
1475         cast dir.len to (int), formatting fixes.
1477 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
1479         * doc/invoke.texi: Remove "Cilk Plus" references.
1481 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1482             Richard Biener  <rguenther@suse.de>
1484         PR ipa/84628
1485         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
1486         for error or warning attributes if CALL_FROM_THUNK_P is set.
1487         Formatting fixes.
1489 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1491         PR target/56540
1492         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
1493         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
1495         PR target/56540
1496         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
1497         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
1499         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
1500         instead of -1U in last predictors element's probability member.
1502 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1504         PR ipa/83983
1505         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
1506         arguments if they are comparable.
1508 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
1510         PR tree-optimization/84634
1511         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
1512         masks and masked_loop_p with a single loop_masks, making sure it's
1513         null for bb vectorization.
1515 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
1517         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
1518         (vect_analyze_data_ref_access): Use loop->safe_len rather than
1519         loop->force_vectorize to check whether there is no alias.
1521 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1523         PR target/84614
1524         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
1525         prototypes.
1526         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
1527         comments.
1528         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
1529         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
1530         instead of a loop around prev_real_insn.
1531         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
1532         prev_real_insn.
1534         PR inline-asm/84625
1535         * config/i386/i386.c (ix86_print_operand): Use conditional
1536         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
1537         zero vector.
1539 2018-03-02  Richard Biener  <rguenther@suse.de>
1541         PR tree-optimization/84427
1542         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
1543         (bitmap_set_subtract_values): Rewrite to handle multiple
1544         exprs per value.
1545         (clean): Likewise.
1546         (prune_clobbered_mems): Likewise.
1547         (phi_translate): Take edge instead of pred/phiblock.
1548         (phi_translate_1): Likewise.
1549         (phi_translate_set): Likewise.  Insert all translated
1550         exprs for a value into the set, keeping possibly multiple
1551         expressions per value.
1552         (compute_antic_aux): Adjust for phi_translate changes.
1553         When intersecting union the expressions and prune those
1554         not in the final value set, keeping possibly multiple
1555         expressions per value.  Do not use value-insertion
1556         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
1557         all expressions.  Add verification that the value-sets
1558         only shrink during iteration.
1559         (compute_partial_antic_aux): Adjust for the phi_translate changes.
1560         (do_pre_regular_insertion): Likewise.
1561         (do_pre_partial_partial_insertion): Likewise.
1563 2018-03-02  Richard Biener  <rguenther@suse.de>
1565         PR target/82005
1566         * config/darwin.c (saved_debug_info_level): New static global.
1567         (darwin_asm_lto_start): Disable debug info generation for LTO out.
1568         (darwin_asm_lto_end): Restore debug info generation settings.
1570 2018-03-01  Martin Liska  <mliska@suse.cz>
1572         PR sanitizer/82484
1573         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
1574         volatile arguments.
1576 2018-03-01  Richard Biener  <rguenther@suse.de>
1578         PR debug/84645
1579         * dwarf2out.c (gen_variable_die): Properly handle late VLA
1580         type annotation with LTO when debug was disabled at compile-time.
1582 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
1584         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
1585         XINT with INTVAL.
1586         (mips_final_postscan_insn): Likewise.
1588 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
1590         PR rtl-optimization/84528
1591         * alias.c (init_alias_target): Add commentary.
1592         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
1593         a unique base value if the frame pointer is not eliminated
1594         to the stack pointer.
1596 2018-03-01  Tom de Vries  <tom@codesourcery.com>
1598         PR rtl-optimization/83327
1599         * lra-int.h (hard_regs_spilled_into): Declare.
1600         * lra.c (hard_regs_spilled_into): Define.
1601         (init_reg_info): Init hard_regs_spilled_into.
1602         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
1603         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
1604         (process_bb_lives): Handle hard_regs_spilled_into.
1605         (lra_create_live_ranges_1): Before doing liveness propagation, clear
1606         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
1608 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
1610         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
1611         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
1612         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
1613         * config/rs6000/aix72.h: New file.
1615 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1617         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
1618         instead of warning_at with conditional singular and plural messages
1619         where possible.
1621         PR target/52991
1622         * stor-layout.c (update_alignment_for_field): For
1623         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
1624         && !DECL_PACKED (field), do the alignment update, just use
1625         only desired_align instead of MAX (type_align, desired_align)
1626         as the alignment.
1627         (place_field): Don't do known_align < desired_align handling
1628         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
1629         is non-NULL, instead do it after rli->prev_field handling and
1630         only if not within a bitfield word.  For DECL_PACKED (field)
1631         use type_align of BITS_PER_UNIT.
1633 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
1635         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
1636         superfluous parentheses and trailing spaces.
1638 2018-02-28  Richard Biener  <rguenther@suse.de>
1640         PR tree-optimization/84584
1641         * graphite-scop-detection.c (scop_detection::add_scop): Discard
1642         SCoPs with fake exit edge.
1644 2018-02-28  Martin Liska  <mliska@suse.cz>
1646         PR testsuite/84597
1647         * timevar.c (timer::print): Fix format to properly print 100%
1648         values.
1650 2018-02-28  Richard Biener  <rguenther@suse.de>
1652         PR middle-end/84607
1653         * genmatch.c (capture_info::walk_match): Do not mark
1654         captured expressions without operands as expr_p given
1655         they act more like predicates and should be subject to
1656         "lost tail" side-effect preserving.
1658 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
1660         PR rtl-optimization/81611
1661         * auto-inc-dec.c (attempt_change): Move dead note from
1662         mem_insn if it's the next use of regno
1663         (find_address): Take address use of reg holding
1664         non-incremented value.  Add parm to limit search to the named
1665         reg only.
1666         (merge_in_block): Attempt to use a mem insn that is the next
1667         use of the original regno.
1669 2018-02-27  Martin Sebor  <msebor@redhat.com>
1671         PR c++/83871
1672         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
1673         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
1675 2018-02-27  Martin Sebor  <msebor@redhat.com>
1677         PR translation/84207
1678         * diagnostic-core.h (warning_n, error_n, inform_n): Change
1679         n argument to unsigned HOST_WIDE_INT.
1680         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
1681         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
1682         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
1683         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
1685 2018-02-27  Richard Biener  <rguenther@suse.de>
1687         PR tree-optimization/84512
1688         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
1689         Do not use the estimate returned from record_stmt_cost for
1690         the scalar iteration cost but sum properly using add_stmt_cost.
1692 2018-02-27  Richard Biener  <rguenther@suse.de>
1694         PR tree-optimization/84466
1695         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
1696         Adjust last change to less strictly validate use operands.
1698 2018-02-27  Martin Liska  <mliska@suse.cz>
1700         PR gcov-profile/84548
1701         * gcov.c (process_file): Allow partial overlap and consider it
1702         also as group functions.
1703         (output_lines): Properly calculate range of lines for a group.
1705 2018-02-27  Martin Liska  <mliska@suse.cz>
1707         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
1708         'ggc' suffixes.  Change first column width.
1709         (timer::print): Fix formatting of the column.
1711 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
1713         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
1714         preserve inline entry blocks for the sake of debug inline
1715         entry point markers alone.
1716         (remove_unused_locals): Suggest in comments a better place to
1717         force the preservation of inline entry blocks that are
1718         otherwise unused, but do not preserve them.
1720 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
1722         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
1724 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
1726         PR target/84039
1727         * config/i386/constraints.md (Bs): Replace
1728         ix86_indirect_branch_register with
1729         TARGET_INDIRECT_BRANCH_REGISTER.
1730         (Bw): Likewise.
1731         * config/i386/i386.md (indirect_jump): Likewise.
1732         (tablejump): Likewise.
1733         (*sibcall_memory): Likewise.
1734         (*sibcall_value_memory): Likewise.
1735         Peepholes of indirect call and jump via memory: Likewise.
1736         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
1737         (*sibcall_value_GOT_32): Likewise.
1738         * config/i386/predicates.md (indirect_branch_operand): Likewise.
1739         (GOT_memory_operand): Likewise.
1740         (call_insn_operand): Likewise.
1741         (sibcall_insn_operand): Likewise.
1742         (GOT32_symbol_operand): Likewise.
1743         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
1745 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
1747         PR rtl-optimization/83496
1748         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
1749         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
1750         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
1751         redundant insn, if any.
1752         (relax_delay_slots): Likewise.
1753         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
1755 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
1757         PR tree-optimization/83965
1758         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
1759         that grouped statements are part of a reduction chain.  Return
1760         true if the statement is not marked as a reduction itself but
1761         is part of a group.
1762         (vect_recog_dot_prod_pattern): Don't check whether the statement
1763         is part of a group here.
1764         (vect_recog_sad_pattern): Likewise.
1765         (vect_recog_widen_sum_pattern): Likewise.
1767 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
1769         PR debug/84545
1770         * final.c (rest_of_clean_state): Also look for calls inside sequences.
1772 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
1774         PR target/84530
1775         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
1776         the bool argument.
1777         (ix86_output_indirect_function_return): New prototype.
1778         (ix86_split_simple_return_pop_internal): Likewise.
1779         * config/i386/i386.c (indirect_return_via_cx): New.
1780         (indirect_return_via_cx_bnd): Likewise.
1781         (indirect_thunk_name): Handle return va CX_REG.
1782         (output_indirect_thunk_function): Create alias for
1783         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
1784         (ix86_output_indirect_jmp): Remove the bool argument.
1785         (ix86_output_indirect_function_return): New function.
1786         (ix86_split_simple_return_pop_internal): Likewise.
1787         * config/i386/i386.md (*indirect_jump): Don't pass false
1788         to ix86_output_indirect_jmp.
1789         (*tablejump_1): Likewise.
1790         (simple_return_pop_internal): Change it to define_insn_and_split.
1791         Call ix86_split_simple_return_pop_internal to split it for
1792         -mfunction-return=.
1793         (simple_return_indirect_internal): Call
1794         ix86_output_indirect_function_return instead of
1795         ix86_output_indirect_jmp.
1797 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1799         PR bootstrap/84405
1800         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
1801         memset and value initialization afterwards.
1803 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
1805         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
1807 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1809         PR target/84521
1810         * common/config/aarch64/aarch64-common.c
1811         (aarch_option_optimization_table[]): Switch
1812         off fomit-frame-pointer
1814 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
1815             Chung-Ju Wu  <jasonwucj@gmail.com>
1817         * config/nds32/nds32-multiple.md (load_multiple): Disallow
1818         volatile memory.
1819         (store_multiple): Ditto.
1821 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
1823         * config.gcc: Add --with-cpu support for nds32 target.
1824         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
1825         * config/nds32/nds32.opt: Add -mcpu= option.
1827 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
1829         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
1830         isel=yes): Warn for these deprecated options.
1832 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
1834         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
1835         ISA_2_5_MASKS_EMBEDDED.
1837 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
1839         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
1840         p->max as pointers rather than using iterative_hash_expr.
1842 2018-02-23  Carl Love  <cel@us.ibm.com>
1844         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
1845         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
1846         BU_P8V_OVERLOAD_2.
1847         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
1848         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
1849         P8V_BUILTIN_VEC_VUNSIGNED2.
1851 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
1853         PR target/81572
1854         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
1855         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
1856         LRA_UNKNOWN_ALT.
1857         * lra-constraints.c (curr_insn_transform): Set up
1858         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
1859         LRA_UNKNOWN_ALT.
1860         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
1861         * lra-eliminations.c (spill_pseudos): Ditto.
1862         (process_insn_for_elimination): Ditto.
1863         * lra-lives.c (reg_early_clobber_p): Use the new macros.
1864         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
1865         LRA_NON_CLOBBERED_ALT.
1867 2018-02-22  Martin Sebor  <msebor@redhat.com>
1869         PR tree-optimization/84480
1870         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
1871         to maybe_diag_stxncpy_trunc.  Call it.
1872         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
1873         from gimple_fold_builtin_strcpy.  Print inlining stack.
1874         (handle_builtin_stxncpy): Print inlining stack.
1875         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
1877 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
1879         PR target/84176
1880         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
1881         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
1882         and -fcheck-pointer-bounds are used together.
1883         (indirect_thunk_prefix): New enum.
1884         (indirect_thunk_need_prefix): New function.
1885         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
1886         "_nt" instead of "_bnd" for NOTRACK prefix.
1887         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
1888         (output_indirect_thunk_function): Likewise.
1889         (): Likewise.
1890         (ix86_code_end): Update output_indirect_thunk_function calls.
1891         (ix86_output_indirect_branch_via_reg): Replace
1892         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
1893         (ix86_output_indirect_branch_via_push): Likewise.
1894         (ix86_output_function_return): Likewise.
1895         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
1896         incompatible with -fcf-protection=branch and
1897         -fcheck-pointer-bounds.
1899 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
1901         PR target/83335
1902         * config/aarch64/aarch64.c (aarch64_print_address_internal):
1903         Change gcc_assert call to output_operand_lossage.
1905 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
1907         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
1909 2018-02-22  DJ Delorie  <dj@redhat.com>
1910             Sebastian Perta  <sebastian.perta@renesas.com>
1911             Oleg Endo  <olegendo@gcc.gnu.org>
1913         * config/rx/rx.c (rx_rtx_costs): New function.
1914         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
1916 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
1918         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
1920 2018-02-22  Martin Liska  <mliska@suse.cz>
1922         PR driver/83193
1923         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
1924         Add "native" as a possible value.
1926 2018-02-22  Martin Liska  <mliska@suse.cz>
1928         PR driver/83193
1929         * config/i386/i386.c (ix86_option_override_internal):
1930         Add "native" as a possible value for -march and -mtune.
1932 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
1934         PR target/84502
1935         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
1936         to all type variants.
1938         PR tree-optimization/84503
1939         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
1940         width as info->bitpos + info->bitsize - start.
1941         (merged_store_group::merge_overlapping): Simplify width computation.
1942         (check_no_overlap): New function.
1943         (imm_store_chain_info::try_coalesce_bswap): Compute expected
1944         start + width and last_order of the group, fail if check_no_overlap
1945         fails.
1946         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
1947         to group if check_no_overlap fails.
1949 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
1951         * config/rs6000/altivec.md: Delete contraint arguments to
1952         define_expand, define_split, and define_peephole2, and in
1953         define_insn_and_split if always unused.
1954         * config/rs6000/darwin.md: Ditto.
1955         * config/rs6000/dfp.md: Ditto.
1956         * config/rs6000/rs6000.md: Ditto.
1957         * config/rs6000/sync.md: Ditto.
1958         * config/rs6000/vector.md: Ditto.
1959         * config/rs6000/vsx.md: Ditto.
1961 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
1963         * config/rs6000/altivec.md: Write output control strings as braced
1964         blocks instead of double-quoted strings.
1965         * config/rs6000/darwin.md: Ditto.
1966         * config/rs6000/rs6000.md: Ditto.
1967         * config/rs6000/vector.md: Ditto.
1968         * config/rs6000/vsx.md: Ditto.
1970 2018-02-21  Jason Merrill  <jason@redhat.com>
1972         PR c++/84314 - ICE with templates and fastcall attribute.
1973         * attribs.c (build_type_attribute_qual_variant): Remove assert.
1975 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
1977         * ipa-cp.c (determine_versionability): Fix comment typos.
1979 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
1981         PR c/84229
1982         * ipa-cp.c (determine_versionability): Do not version functions caling
1983         va_arg_pack.
1985 2018-02-21  Martin Liska  <mliska@suse.cz>
1987         PR driver/83193
1988         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
1989         Add "native" as a possible value.
1990         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
1991         the macro when native cpu detection is available.
1993 2018-02-21  Martin Liska  <mliska@suse.cz>
1995         PR driver/83193
1996         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
1997         Add "native" as a possible value.
1998         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
1999         when native cpu detection is available.
2001 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
2002             Martin Sebor  <msebor@redhat.com>
2004         PR tree-optimization/84478
2005         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
2006         false.
2007         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
2008         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
2009         support which is conservatively correct, for 2 only stay conservative
2010         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
2011         argument to the 2 argument get_range_strlen, adjust 6 arg
2012         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
2013         false.
2014         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
2015         (gimple_fold_builtin_strlen): Pass true as last argument to
2016         get_range_strlen.
2018 2018-02-20  Martin Sebor  <msebor@redhat.com>
2020         PR middle-end/84095
2021         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
2022         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
2023         (builtin_memref::builtin_memref): Factor out parts into
2024         set_base_and_offset and call it.
2026 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
2028         PR middle-end/84406
2029         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
2030         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
2031         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
2032         search at the associated MODE_INT.
2034 2018-02-20  Jeff Law  <law@redhat.com>
2036         PR middle-end/82123
2037         PR tree-optimization/81592
2038         PR middle-end/79257
2039         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
2040         for range data rather than using global data.
2041         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
2042         range data rather than using global data.
2043         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
2044         pass it to children as needed.
2045         (struct directive::fmtresult): Similarly.
2046         (struct directive::set_width): Similarly.
2047         (struct directive::set_precision): Similarly.
2048         (format_integer, format_directive, parse_directive): Similarly.
2049         (format_none): Accept unnamed vr_values parameter.
2050         (format_percent, format_floating, format_character): Similarly.
2051         (format_string, format_plain): Similarly.
2052         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
2053         the EVRP range analyzer for range data rather than using global data.
2054         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
2055         gimple-ssa-evrp-analyze.h
2056         (class sprintf_dom_walker): Add after_dom_children member function.
2057         Add evrp_range_analyzer member.
2058         (sprintf_dom_walker::before_dom_children): Call into the EVRP
2059         range analyzer as needed.
2060         (sprintf_dom_walker::after_dom_children): New member function.
2061         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
2062         if not optimizing.
2063         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
2064         (evrp_range_analyzer::pop_to_marker): Likewise.
2066 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
2068         PR tree-optimization/84419
2069         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
2070         with the required type if its current type is compatible but
2071         different.
2073 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
2075         PR middle-end/82004
2076         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
2077         after vectorization.
2079 2018-02-20  Martin Liska  <mliska@suse.cz>
2081         PR driver/83193
2082         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
2083         possible values if we don't have a hint.
2085 2018-02-20  Martin Liska  <mliska@suse.cz>
2087         PR c/84310
2088         PR target/79747
2089         * final.c (shorten_branches): Build align_tab array with one
2090         more element.
2091         * opts.c (finish_options): Add alignment option limit check.
2092         (MAX_CODE_ALIGN): Likewise.
2093         (MAX_CODE_ALIGN_VALUE): Likewise.
2094         * doc/invoke.texi: Document maximum allowed option value for
2095         all -falign-* options.
2097 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
2099         PR target/84146
2100         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
2101         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
2102         * var-tracking.c (emit_note_insn_var_location): Remove all references
2103         to NOTE_INSN_CALL_ARG_LOCATION.
2104         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
2105         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
2106         Use copy_rtx_if_shared.
2107         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
2108         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
2109         (dwarf2out_var_location): Remove handling of
2110         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
2111         on call_insn.
2112         * final.c (final_scan_insn): Remove all references to
2113         NOTE_INSN_CALL_ARG_LOCATION.
2114         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
2115         before dumping final insns.
2116         * except.c (emit_note_eh_region_end): Remove all references to
2117         NOTE_INSN_CALL_ARG_LOCATION.
2118         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
2119         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
2120         * config/arc/arc.c (hwloop_optimize): Likewise.
2121         * config/arm/arm.c (create_fix_barrier): Likewise.
2122         * config/s390/s390.c (s390_chunkify_start): Likewise.
2123         * config/sh/sh.c (find_barrier): Likewise.
2124         * config/i386/i386.c (rest_of_insert_endbranch,
2125         ix86_seh_fixup_eh_fallthru): Likewise.
2126         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
2127         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
2128         * config/frv/frv.c (frv_function_prologue): Likewise.
2129         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
2130         reg note.
2131         (note_outside_basic_block_p): Remove all references to
2132         NOTE_INSN_CALL_ARG_LOCATION.
2133         * gengtype.c (adjust_field_rtx_def): Likewise.
2134         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
2135         Likewise.
2136         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
2137         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
2139         PR c++/84444
2140         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
2141         is ADDR_EXPR.
2143         PR tree-optimization/84452
2144         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
2145         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
2146         is NULL.
2148 2018-02-19  Martin Liska  <mliska@suse.cz>
2150         PR sanitizer/82183
2151         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
2153 2018-02-19  Martin Liska  <mliska@suse.cz>
2154             Richard Sandiford  <richard.sandiford@linaro.org>
2156         PR tree-optimization/82491
2157         * gimple-fold.c (get_base_constructor): Make earlier bail out
2158         to prevent ubsan.
2160 2018-02-19  Carl Love  <cel@us.ibm.com>
2162         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
2163         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
2164         BU_P8V_OVERLOAD_1.
2165         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
2166         P8V_BUILTIN_VEC_NEG.
2168 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
2170         * config/rl78/rl78.md (movdf): New define expand.
2172 2018-02-19  Martin Liska  <mliska@suse.cz>
2174         PR other/80589
2175         * doc/invoke.texi: Fix typo.
2176         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
2178 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
2180         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
2181         handle rs6000_single_float and rs6000_double_float specially for
2182         e500 family CPUs.
2184 2018-02-16  Jeff Law  <law@redhat.com>
2186         * config/rx/rx.c (add_pop_cfi_notes): New function.;
2187         (pop_regs): Use it.
2189 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
2191         PR ipa/84425
2192         * ipa-inline.c (inline_small_functions): Fix a typo.
2194 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2196         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
2198 2018-02-16  Carl Love  <cel@us.ibm.com>
2200         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
2201         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
2202         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
2203         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
2204         expansion to P8V_BUILTIN_VEC_FLOAT2.
2206 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
2208         PR rtl-optimization/70023
2209         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
2210         src_regno into account.
2212 2018-02-16  Carl Love  <cel@us.ibm.com>
2214         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
2215         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
2216         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
2217         * config/rs6000/rs6000.c: Remove case statements for
2218         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
2219         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
2220         and P9V_BUILTIN_VEC_VINSERT4B.
2221         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
2222         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
2223         * config/rs6000/vsx.md:
2224         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
2225         vec_insert4b.
2227 2018-02-16  Carl Love  <cel@us.ibm.com>
2229         * config/rs6000/altivec.h: Add builtin names vec_extract4b
2230         vec_insert4b.
2231         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
2232         definitions.
2233         * config/rs6000/rs6000-c.c: Add the definitions for
2234         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
2235         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
2236         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
2237         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
2238         definition for insert4b and define insn *insert3b_internal.
2239         * doc/extend.texi: Add documentation for vec_extract4b.
2241 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2243         * doc/extend.texi (Backwards Compatibility): Mention friend
2244         injection.  Note for-scope is deprecated.
2245         * doc/invoke.texi (-ffriend-injection): Deprecate.
2247 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
2249         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
2250         that moved to I2, also allow destinations that are a paradoxical
2251         subreg (instead of a normal reg).
2253 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
2255         PR target/83831
2256         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
2257         to QImode.
2259 2018-02-16  Richard Biener  <rguenther@suse.de>
2261         PR tree-optimization/84037
2262         PR tree-optimization/84016
2263         PR target/82862
2264         * config/i386/i386.c (ix86_builtin_vectorization_cost):
2265         Adjust vec_construct for the fact we need additional higher latency
2266         128bit inserts for AVX256 and AVX512 vector builds.
2267         (ix86_add_stmt_cost): Scale vector construction cost for
2268         elementwise loads.
2270 2018-02-16  Richard Biener  <rguenther@suse.de>
2272         PR tree-optimization/84417
2273         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
2274         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
2275         (non_rewritable_lvalue_p): Likewise, use poly-ints.
2277 2018-02-16  Martin Liska  <mliska@suse.cz>
2279         PR sanitizer/84307
2280         * internal-fn.def (ASAN_CHECK): Set proper flags.
2281         (ASAN_MARK): Likewise.
2283 2018-02-16  Julia Koval  <julia.koval@intel.com>
2285         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
2286         from PTA_CANNONLAKE.
2288 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
2290         PR target/84272
2291         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
2292         Use ++iter rather than iter++ for std::list iterators.
2293         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
2294         defer deleting them until all nodes in the forest are processed.  Do
2295         free even leaf nodes.  Change to_process into auto_vec.
2297         PR bootstrap/84405
2298         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
2299         * vec.h (vec_default_construct): Use memset instead of placement new
2300         if BROKEN_VALUE_INITIALIZATION is defined.
2301         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
2302         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
2303         is defined.
2305         PR rtl-optimization/83723
2306         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
2307         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
2308         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
2309         recursive calls.
2310         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
2311         callers.
2312         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
2314 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
2316         PR rtl-optimization/81443
2317         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
2318         from inner REGs to paradoxical SUBREGs.
2320 2018-02-16  Richard Biener  <rguenther@suse.de>
2322         PR tree-optimization/84399
2323         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
2324         For operands we can analyze at their definition make sure we can
2325         analyze them at each use as well.
2327 2018-02-16  Richard Biener  <rguenther@suse.de>
2329         PR tree-optimization/84190
2330         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
2331         volatile accesses if the decl isn't volatile.
2333 2018-02-15  Jason Merrill  <jason@redhat.com>
2335         PR c++/84314 - ICE with templates and fastcall attribute.
2336         * attribs.c (build_type_attribute_qual_variant): Don't clobber
2337         TYPE_CANONICAL on an existing type.
2339 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
2341         PR tree-optimization/84383
2342         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
2343         dstoff nor call operand_equal_p if dstbase is NULL.
2345         PR tree-optimization/84334
2346         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
2347         also a CONSTANT_CLASS_P, punt.
2349 2018-02-14  Jim Wilson  <jimw@sifive.com>
2351         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
2352         first SMALL_OPERAND check.  New local min_second_step.  Move assert
2353         to where locals are set.  Add TARGET_RVC support.
2354         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
2356 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
2358         * doc/invoke.texi: Correct -Wformat-overflow code sample.
2360 2018-02-14  Martin Sebor  <msebor@redhat.com>
2362         PR tree-optimization/83698
2363         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
2364         arrays constrain the offset range to their bounds.
2365         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
2366         (builtin_access::overlap): Avoid setting the size of overlap if it's
2367         already been set.
2368         (maybe_diag_overlap): Also consider arrays when deciding what values
2369         of offsets to include in diagnostics.
2371 2018-02-14  Martin Sebor  <msebor@redhat.com>
2373         PR c/84108
2374         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
2375         that correspond to the kind of a declaration.
2377 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
2379         PR target/83984
2380         * config/pa/pa.md: Load address of PIC label using the linkage table
2381         if the label is nonlocal.
2383 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2385         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
2386         warning message if user requests -maltivec=be.
2387         * doc/invoke.texi: Document deprecation of -maltivec=be.
2389 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
2391         PR target/84220
2392         * config/rs6000/rs6000-c.c: Update definitions for
2393         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
2394         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
2396 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
2398         PR target/84239
2399         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
2400         add _get_ssp intrinsics. Remove argument from
2401         __builtin_ia32_rdssp[d|q].
2402         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
2403         * config/i386/i386-builtin.def: Remove argument from
2404         __builtin_ia32_rdssp[d|q].
2405         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
2406         ix86_expand_special_args_builtin for _rdssp[d|q].
2407         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
2408         Clear register before usage.
2409         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
2410         Add documentation for new _get_ssp and _inc_ssp intrinsics.
2412 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
2414         PR tree-optimization/84357
2415         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
2416         operand 1 of an ARRAY_REF too.
2418 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
2420         PR target/83831
2421         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
2422         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
2423         declarations.
2424         (set_of_reg): New struct.
2425         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
2426         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
2427         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
2428         functions.
2429         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
2430         Split into bitclr, bitset, bitinvert patterns if appropriate.
2431         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
2432         use rx_fuse_in_memory_bitop.
2433         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
2434         to named insn, correct maximum insn length.
2436 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
2438         PR target/79242
2439         * machmode.def: Define a complex mode for PARTIAL_INT.
2440         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
2441         MODE_PARTIAL_INT.
2442         * doc/rtl.texi: Document CSPImode.
2443         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
2444         handling.
2445         (msp430_hard_regno_nregs_with_padding): Likewise.
2447 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
2449         PR target/84279
2450         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
2452 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
2454         PR rtl-optimization/84169
2455         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
2456         we generated a parallel as new i3 and we split that to new i2 and i3
2457         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
2458         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
2459         those to i2, not i1.  Partially rewrite this scan code.
2461 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
2463         PR c/82210
2464         * stor-layout.c (place_field): For variable length fields, adjust
2465         offset_align afterwards not just based on the field's alignment,
2466         but also on the size.
2468         PR middle-end/84309
2469         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
2470         of exps and logs in the use_exp2 case.
2472 2018-02-13  Jeff Law  <law@redhat.com>
2474         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
2475         entry for "vector".
2477         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
2478         ARGS as unused.
2480 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
2482         PR debug/84342
2483         PR debug/84319
2484         * common.opt (gas-loc-support, gas-locview-support): New.
2485         (ginline-points, ginternal-reset-location-views): New.
2486         * doc/invoke.texi: Document them.  Use @itemx where intended.
2487         (gvariable-location-views): Adjust.
2488         * target.def (reset_location_view): New.
2489         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
2490         (TARGET_RESET_LOCATION_VIEW): New.
2491         * doc/tm.texi: Rebuilt.
2492         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
2493         (dwarf2out_default_as_locview_support): New.
2494         (output_asm_line_debug_info): Use option variables.
2495         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
2496         (output_loc_list): Likewise.
2497         (add_high_low_attributes): Check option variables.
2498         Don't output entry view attribute in strict mode.
2499         (gen_inlined_subroutine_die): Check option variables.
2500         (dwarf2out_inline_entry): Likewise.
2501         (init_sections_and_labels): Likewise.
2502         (dwarf2out_early_finish): Likewise.
2503         (maybe_reset_location_view): New, from...
2504         (dwarf2out_var_location): ... here.  Call it.
2505         * debug.h (dwarf2out_default_as_loc_support): Declare.
2506         (dwarf2out_default_as_locview_support): Declare.
2507         * hooks.c (hook_int_rtx_insn_0): New.
2508         * hooks.h (hook_int_rtx_insn_0): Declare.
2509         * toplev.c (process_options): Take -gas-loc-support and
2510         -gas-locview-support from dwarf2out.  Enable
2511         -gvariable-location-views by default only with locview
2512         assembler support.  Enable -ginternal-reset-location-views by
2513         default only if the target defines the corresponding hook.
2514         Enable -ginline-points by default if location views are
2515         enabled; force it disabled if statement frontiers are
2516         disabled.
2517         * tree-inline.c (expand_call_inline): Check option variables.
2518         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
2520 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
2522         PR tree-optimization/84321
2523         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
2524         handling.  Also check whether the anti-range contains any values
2525         that satisfy the mask; switch to a VR_RANGE if not.
2527 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
2529         PR sanitizer/84340
2530         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
2532 2018-02-13  Martin Jambor  <mjambor@suse.cz>
2534         PR c++/83990
2535         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
2536         of call statements, also set location of a load to a temporary.
2538 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
2540         * config/rl78/rl78.c (add_vector_labels): New function.
2541         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
2542         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
2543         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
2544         which checks that no arguments are passed.
2545         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
2546         * doc/extend.texi: Documentation for the new attribute.
2548 2018-02-13  Andreas Schwab  <schwab@suse.de>
2550         * config/riscv/linux.h (CPP_SPEC): Define.
2552 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
2554         PR target/84335
2555         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
2556         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
2557         OPTION_MASK_ISA_AES as first argument to def_builtin_const
2558         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
2559         instead of OPTION_MASK_ISA_PCLMUL as first argument to
2560         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
2561         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
2562         temporarily for AES and PCLMUL builtins.
2564         PR tree-optimization/84339
2565         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
2566         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
2567         Formatting fixes.
2569         PR middle-end/84309
2570         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
2571         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
2572         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
2573         inline function.
2574         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
2575         inline function.
2576         * omp-simd-clone.h: New file.
2577         * omp-simd-clone.c: Include omp-simd-clone.h.
2578         (expand_simd_clones): No longer static.
2579         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
2580         cgraph.h and omp-simd-clone.h.
2581         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
2582         (vect_recog_widen_shift_pattern): Formatting fix.
2583         (vect_pattern_recog_1): Don't check optab for calls.
2585         PR target/84336
2586         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
2587         operands[2] into a REG before using gen_lowpart on it.
2589 2018-02-12  Jeff Law  <law@redhat.com>
2591         PR target/83760
2592         * config/sh/sh.c (find_barrier): Consider a sibling call
2593         a barrier as well.
2595         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
2596         successfully back substituting a reg.
2598 2018-02-12  Richard Biener  <rguenther@suse.de>
2600         PR tree-optimization/84037
2601         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
2602         parameter, move visited init to caller.
2603         (vect_slp_analyze_operations): Separate cost from validity
2604         check, initialize visited once for all instances.
2605         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
2606         for all instances.
2607         * tree-vect-stmts.c (vect_model_simple_cost): Make early
2608         out an assert.
2609         (vect_model_promotion_demotion_cost): Likewise.
2610         (vectorizable_bswap): Guard cost modeling with !slp_node
2611         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
2612         SLP stmts.
2613         (vectorizable_call): Likewise.
2614         (vectorizable_conversion): Likewise.
2615         (vectorizable_assignment): Likewise.
2616         (vectorizable_shift): Likewise.
2617         (vectorizable_operation): Likewise.
2618         (vectorizable_store): Likewise.
2619         (vectorizable_load): Likewise.
2620         (vectorizable_condition): Likewise.
2621         (vectorizable_comparison): Likewise.
2623 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
2625         PR sanitizer/84307
2626         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
2627         (ASAN_MARK): Fix fnspec to account for return value, change pointer
2628         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
2630 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
2632         PR middle-end/83665
2633         * params.def (inline-min-speedup): Increase from 8 to 15.
2634         (max-inline-insns-auto): Decrease from 40 to 30.
2635         * ipa-split.c (consider_split): Add some buffer for function to
2636         be considered inlining candidate.
2637         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
2638         default values.
2640 2018-02-12  Richard Biener  <rguenther@suse.de>
2642         PR tree-optimization/84037
2643         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
2644         matched stmts if we cannot swap the non-matched ones.
2646 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
2648         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
2649         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
2650         _mm_maskz_scalef_round_ss): New intrinsics.
2651         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
2652         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
2653         __builtin_ia32_scalefss_round): Remove.
2654         (__builtin_ia32_scalefsd_mask_round,
2655         __builtin_ia32_scalefss_mask_round): New intrinsics.
2656         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
2657         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
2658         ((match_operand:VF_128 2 "<round_nimm_predicate>"
2659         "<round_constraint>")): Changed to ...
2660         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
2661         "<round_scalar_constraint>")): ... this.
2662         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
2663         %0, %1, %2<round_op3>}"): Changed to ...
2664         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
2665         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
2666         %2<round_scalar_mask_op3>}"): ... this.
2667         * config/i386/subst.md (round_scalar_nimm_predicate): New.
2669 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
2671         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
2672         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
2673         (_mm_maskz_sqrt_round_ss): New intrinsics.
2674         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
2675         (__builtin_ia32_sqrtsd_mask_round)
2676         (__builtin_ia32_sqrtss_mask_round): New builtins.
2677         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
2678         (__builtin_ia32_sqrtss_round): Remove.
2679         (__builtin_ia32_sqrtsd_mask_round)
2680         (__builtin_ia32_sqrtss_mask_round): New builtins.
2681         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
2682         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
2683         ((match_operand:VF_128 1 "vector_operand"
2684         "xBm,<round_constraint>")): Changed to ...
2685         ((match_operand:VF_128 1 "vector_operand"
2686         "xBm,<round_scalar_constraint>")): ... this.
2687         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
2688         %0, %2, %<iptr>1<round_op3>}): Changed to ...
2689         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
2690         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
2691         %<iptr>1<round_scalar_mask_op3>}): ... this.
2692         ((set_attr "prefix" "<round_prefix>")): Changed to ...
2693         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
2695 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
2697         PR target/84266
2698         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
2699         Cast vec_cmpeq result to correct type.
2700         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
2701         Cast vec_cmpgt result to correct type.
2703 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
2705         * final.c (final_scan_insn_1): Renamed from...
2706         (final_scan_insn): ... this.  New wrapper, to recover
2707         seen from the outermost call in recursive ones.
2708         * config/sparc/sparc.c (output_return): Drop seen from call.
2709         (output_sibcall): Likewise.
2710         * config/visium/visium.c (output_branch): Likewise.
2712 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
2714         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
2715         function label.
2717 2018-02-10  Alan Modra  <amodra@gmail.com>
2719         PR target/84300
2720         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
2721         Specify LR as an input.
2723 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
2725         PR sanitizer/83987
2726         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
2727         remove_member_access_dummy_vars): New functions.
2728         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
2729         lower_omp_1, execute_lower_omp): Use them.
2731         PR rtl-optimization/84308
2732         * shrink-wrap.c (spread_components): Release todo vector.
2734 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
2736         PR rtl-optimization/57193
2737         * ira-color.c (struct allocno_color_data): Add member
2738         conflict_allocno_hard_prefs.
2739         (update_conflict_allocno_hard_prefs): New.
2740         (bucket_allocno_compare_func): Add a preference based on
2741         conflict_allocno_hard_prefs.
2742         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
2743         (color_allocnos): Remove a dead code.  Initiate
2744         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
2746 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
2748         PR target/84226
2749         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
2750         constraint from =wa to wa.  Avoid a subreg on the output operand,
2751         instead use a pseudo and subreg it in a move.
2752         (p9_xxbrd_<mode>): Changed to ...
2753         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
2754         (p9_xxbrd_v2df): New expander.
2755         (p9_xxbrw_<mode>): Changed to ...
2756         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
2757         (p9_xxbrw_v4sf): New expander.
2759 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
2761         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
2763 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
2765         PR target/83926
2766         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
2767         multiply in 32-bit mode.
2768         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
2769         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
2770         mode.
2772 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
2774         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
2775         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
2776         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
2777         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
2779 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
2781         PR lto/84213
2782         * dwarf2out.c (is_trivial_indirect_ref): New function.
2783         (dwarf2out_late_global_decl): Do not generate a location
2784         attribute for variables that have a non-trivial DECL_VALUE_EXPR
2785         and that are not defined in the current unit.
2787 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
2789         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
2790         instead of a libcall for UNORDERED.
2792 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
2794         PR target/82641
2795         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
2796         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
2798 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
2800         PR target/PR84295
2801         * config/s390/s390.c (s390_set_current_function): Invoke
2802         s390_indirect_branch_settings also if fndecl didn't change.
2804 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
2806         * config/rs6000/rs6000.md (blockage): Set length to zero.
2808 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
2810         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
2812 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
2814         PR sanitizer/84285
2815         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
2816         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
2817         -static-lib*san.
2819         PR debug/84252
2820         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
2821         PARALLEL incoming that failed vt_get_decl_and_offset check.
2823         PR middle-end/84237
2824         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
2825         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
2826         TREE_READONLY bit.
2827         (get_variable_section): For decls in named .bss* sections pass true as
2828         second argument to bss_initializer_p.
2830 2018-02-09  Marek Polacek  <polacek@redhat.com>
2831             Jakub Jelinek  <jakub@redhat.com>
2833         PR c++/83659
2834         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
2835         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
2836         Sync some changes from cxx_fold_indirect_ref.
2838 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
2840         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
2841         markers.
2842         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
2843         (BLOCK_INLINE_ENTRY_LABEL): New.
2844         (dwarf2out_var_location): Disregard inline entry markers.
2845         (inline_entry_data): New struct.
2846         (inline_entry_data_hasher): New hashtable type.
2847         (inline_entry_data_hasher::hash): New.
2848         (inline_entry_data_hasher::equal): New.
2849         (inline_entry_data_table): New variable.
2850         (add_high_low_attributes): Add DW_AT_entry_pc and
2851         DW_AT_GNU_entry_view attributes if a pending entry is found
2852         in inline_entry_data_table.  Add old entry_pc attribute only
2853         if debug nonbinding markers are disabled.
2854         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
2855         markers are enabled.
2856         (block_within_block_p, dwarf2out_inline_entry): New.
2857         (dwarf2out_finish): Check that no entries remained in
2858         inline_entry_data_table.
2859         * final.c (reemit_insn_block_notes): Handle inline entry notes.
2860         (final_scan_insn, notice_source_line): Likewise.
2861         (rest_of_clean_state): Skip inline entry markers.
2862         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
2863         markers.
2864         * gimple.c (gimple_build_debug_inline_entry): New.
2865         * gimple.h (enum gimple_debug_subcode): Add
2866         GIMPLE_DEBUG_INLINE_ENTRY.
2867         (gimple_build_debug_inline_entry): Declare.
2868         (gimple_debug_inline_entry_p): New.
2869         (gimple_debug_nonbind_marker_p): Adjust.
2870         * insn-notes.def (INLINE_ENTRY): New.
2871         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
2872         inline entry marker notes.
2873         (print_insn): Likewise.
2874         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
2875         (INSN_DEBUG_MARKER_KIND): Likewise.
2876         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
2877         * tree-inline.c (expand_call_inline): Build and insert
2878         debug_inline_entry stmt.
2879         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
2880         inline entry blocks early, if nonbind markers are enabled.
2881         (dump_scope_block): Dump fragment info.
2882         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
2883         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
2884         (gimple_build_debug_inline_entry): New.
2885         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
2886         Enable/disable inline entry points too.
2887         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
2888         (DEBUG_INSN): Describe inline entry markers.
2890         * common.opt (gvariable-location-views): New.
2891         (gvariable-location-views=incompat5): New.
2892         * config.in: Rebuilt.
2893         * configure: Rebuilt.
2894         * configure.ac: Test assembler for view support.
2895         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
2896         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
2897         * dwarf2out.c (var_loc_view): New typedef.
2898         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
2899         (dwarf2out_locviews_in_attribute): New.
2900         (dwarf2out_locviews_in_loclist): New.
2901         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
2902         (enum dw_line_info_opcode): Add LI_adv_address.
2903         (struct dw_line_info_table): Add view.
2904         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
2905         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
2906         (zero_view_p): New variable.
2907         (ZERO_VIEW_P): New macro.
2908         (output_asm_line_debug_info): New.
2909         (struct var_loc_node): Add view.
2910         (add_AT_view_list, AT_loc_list): New.
2911         (add_var_loc_to_decl): Add view param.  Test it against last.
2912         (new_loc_list): Add view params.  Record them.
2913         (AT_loc_list_ptr): Handle loc and view lists.
2914         (view_list_to_loc_list_val_node): New.
2915         (print_dw_val): Handle dw_val_class_view_list.
2916         (size_of_die): Likewise.
2917         (value_format): Likewise.
2918         (loc_list_has_views): New.
2919         (gen_llsym): Set vl_symbol too.
2920         (maybe_gen_llsym, skip_loc_list_entry): New.
2921         (dwarf2out_maybe_output_loclist_view_pair): New.
2922         (output_loc_list): Output view list or entries too.
2923         (output_view_list_offset): New.
2924         (output_die): Handle dw_val_class_view_list.
2925         (output_dwarf_version): New.
2926         (output_compilation_unit_header): Use it.
2927         (output_skeleton_debug_sections): Likewise.
2928         (output_rnglists, output_line_info): Likewise.
2929         (output_pubnames, output_aranges): Update version comments.
2930         (output_one_line_info_table): Output view numbers in asm comments.
2931         (dw_loc_list): Determine current endview, pass it to new_loc_list.
2932         Call maybe_gen_llsym.
2933         (loc_list_from_tree_1): Adjust.
2934         (add_AT_location_description): Create view list attribute if
2935         needed, check it's absent otherwise.
2936         (convert_cfa_to_fb_loc_list): Adjust.
2937         (maybe_emit_file): Call output_asm_line_debug_info for test.
2938         (dwarf2out_var_location): Reset views as needed.  Precompute
2939         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
2940         attribute.  Set view.
2941         (new_line_info_table): Reset next view.
2942         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
2943         (dwarf2out_source_line): Likewise.  Output view resets and labels to
2944         the assembler, or select appropriate line info opcodes.
2945         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
2946         (optimize_string_length): Catch it.  Adjust.
2947         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
2948         dw_val_class_view_list, and remove it if no longer needed.
2949         (hash_loc_list): Hash view numbers.
2950         (loc_list_hasher::equal): Compare them.
2951         (optimize_location_lists): Check whether a view list symbol is
2952         needed, and whether the locview attribute is present, and
2953         whether they match.  Remove the locview attribute if no longer
2954         needed.
2955         (index_location_lists): Call skip_loc_list_entry for test.
2956         (dwarf2out_finish): Call output_asm_line_debug_info for test.
2957         Use output_dwarf_version.
2958         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
2959         (struct dw_val_node): Add val_view_list.
2960         * final.c (SEEN_NEXT_VIEW): New.
2961         (set_next_view_needed): New.
2962         (clear_next_view_needed): New.
2963         (maybe_output_next_view): New.
2964         (final_start_function): Rename to...
2965         (final_start_function_1): ... this.  Take pointer to FIRST,
2966         add SEEN parameter.  Emit param bindings in the initial view.
2967         (final_start_function): Reintroduce SEEN-less interface.
2968         (final): Rename to...
2969         (final_1): ... this.  Take SEEN parameter.  Output final pending
2970         next view at the end.
2971         (final): Reintroduce seen-less interface.
2972         (final_scan_insn): Output pending next view before switching
2973         sections or ending a block.  Mark the next view as needed when
2974         outputting variable locations.  Notify debug backend of section
2975         changes, and of location view changes.
2976         (rest_of_handle_final): Adjust.
2977         * toplev.c (process_options): Autodetect value for debug variable
2978         location views option.  Warn on incompat5 without -gdwarf-5.
2979         * doc/invoke.texi (gvariable-location-views): New.
2980         (gvariable-location-views=incompat5): New.
2981         (gno-variable-location-views): New.
2983 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
2985         PR tree-optimization/84136
2986         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
2987         that the result of find_edge is non-NULL.
2989 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
2991         PR target/83008
2992         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
2993         storing integer register in SImode.  Fix cost of 256 and 512
2994         byte aligned SSE register store.
2996 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
2998         * config/i386/i386.c (ix86_multiplication_cost): Fix
2999         multiplication cost for TARGET_AVX512DQ.
3001 2018-02-08  Marek Polacek  <polacek@redhat.com>
3003         PR tree-optimization/84238
3004         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
3005         get_range_strlen.
3007 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
3009         PR tree-optimization/84265
3010         * tree-vect-stmts.c (vectorizable_store): Don't treat
3011         VMAT_CONTIGUOUS accesses as grouped.
3012         (vectorizable_load): Likewise.
3014 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
3016         PR tree-optimization/81635
3017         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
3018         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
3019         (test_round_for_mask): New functions.
3020         (wide_int_cc_tests): Call test_round_for_mask.
3021         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
3022         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
3023         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
3024         range returned by get_range_info.
3026 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
3028         PR ipa/81360
3029         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
3030         * symtab.c: Include builtins.h
3031         (symtab_node::output_to_lto_symbol_table_p): Move here
3032         from lto-streamer-out.c:output_symbol_p.
3033         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
3034         (output_symbol_p): Move all logic to symtab.c
3035         (produce_symtab): Update.
3037 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3039         * config/s390/s390-opts.h (enum indirect_branch): Define.
3040         * config/s390/s390-protos.h (s390_return_addr_from_memory)
3041         (s390_indirect_branch_via_thunk)
3042         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
3043         (enum s390_indirect_branch_type): Define.
3044         * config/s390/s390.c (struct s390_frame_layout, struct
3045         machine_function): Remove.
3046         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
3047         (indirect_branch_table_label_no, indirect_branch_table_name):
3048         Define variables.
3049         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
3050         (enum s390_indirect_branch_option): Define.
3051         (s390_return_addr_from_memory): New function.
3052         (s390_handle_string_attribute): New function.
3053         (s390_attribute_table): Add new attribute handler.
3054         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
3055         (s390_indirect_branch_via_thunk): New function.
3056         (s390_indirect_branch_via_inline_thunk): New function.
3057         (s390_function_ok_for_sibcall): When jumping via thunk disallow
3058         sibling call optimization for non z10 compiles.
3059         (s390_emit_call): Force indirect branch target to be a single
3060         register.  Add r1 clobber for non-z10 compiles.
3061         (s390_emit_epilogue): Emit return jump via return_use expander.
3062         (s390_reorg): Handle JUMP_INSNs as execute targets.
3063         (s390_option_override_internal): Perform validity checks for the
3064         new command line options.
3065         (s390_indirect_branch_attrvalue): New function.
3066         (s390_indirect_branch_settings): New function.
3067         (s390_set_current_function): Invoke s390_indirect_branch_settings.
3068         (s390_output_indirect_thunk_function):  New function.
3069         (s390_code_end): Implement target hook.
3070         (s390_case_values_threshold): Implement target hook.
3071         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
3072         macros.
3073         * config/s390/s390.h (struct s390_frame_layout)
3074         (struct machine_function): Move here from s390.c.
3075         (TARGET_INDIRECT_BRANCH_NOBP_RET)
3076         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
3077         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
3078         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
3079         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
3080         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
3081         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
3082         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
3083         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
3084         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
3085         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
3086         (mnemonic attribute): Add values which aren't recognized
3087         automatically.
3088         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
3089         pattern for branch conversion.  Fix mnemonic attribute.
3090         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
3091         indirect branch via thunk if requested.
3092         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
3093         ("*indirect_jump"): Disable for branch conversion using out of
3094         line thunks.
3095         ("indirect_jump_via_thunk<mode>_z10")
3096         ("indirect_jump_via_thunk<mode>")
3097         ("indirect_jump_via_inlinethunk<mode>_z10")
3098         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
3099         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
3100         ("casesi_jump_via_inlinethunk<mode>_z10")
3101         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
3102         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
3103         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
3104         ("*indirect2_jump"): Disable for branch conversion.
3105         ("casesi_jump"): Turn into expander and expand patterns for branch
3106         conversion.
3107         ("return_use"): New expander.
3108         ("*return"): Emit return via thunk and rename it to ...
3109         ("*return<mode>"): ... this one.
3110         * config/s390/s390.opt: Add new options and and enum for the
3111         option values.
3113 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
3115         * lra-constraints.c (match_reload): Unconditionally use
3116         gen_lowpart_SUBREG, rather than selecting between that
3117         and equivalent gen_rtx_SUBREG code.
3119 2018-02-08  Richard Biener  <rguenther@suse.de>
3121         PR tree-optimization/84233
3122         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
3123         changed flag instead of boguously re-using phi_inserted.
3125 2018-02-08  Martin Jambor  <mjambor@suse.cz>
3127         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
3128         static local variables.
3130 2018-02-08  Richard Biener  <rguenther@suse.de>
3132         PR tree-optimization/84278
3133         * tree-vect-stmts.c (vectorizable_store): When looking for
3134         smaller vector types to perform grouped strided loads/stores
3135         make sure the mode is supported by the target.
3136         (vectorizable_load): Likewise.
3138 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
3140         * config/aarch64/aarch64.c (aarch64_components_for_bb):
3141         Increase LDP/STP opportunities by adding adjacent callee-saves.
3143 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
3145         PR rtl-optimization/84068
3146         PR rtl-optimization/83459
3147         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
3149 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
3151         PR tree-optimization/84224
3152         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
3153         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
3154         non-zero arguments.
3156 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
3158         PR target/84113
3159         * config/rs6000/altivec.md (*restore_world): Remove LR use.
3160         * config/rs6000/predicates.md (restore_world_operation): Adjust op
3161         count, remove one USE.
3163 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3165         * doc/install.texi (Configuration): Document the
3166         --with-long-double-format={ibm,ieee} PowerPC configuration
3167         options.
3169         PR target/84154
3170         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
3171         Convert from define_expand to be define_insn_and_split.  Rework
3172         float/double/_Float128 conversions to QI/HI/SImode to work with
3173         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
3174         conversions to QI/HImode types did a store and then a load to
3175         truncate the value.  For conversions to VSX registers, don't split
3176         the insn, instead emit the code directly.  Use the code iterator
3177         any_fix to combine signed and unsigned conversions.
3178         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
3179         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
3180         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
3181         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
3182         (fix_<mode>di2_hw): Likewise.
3183         (fixuns_<mode>di2_hw): Likewise.
3184         (fix_<mode>si2_hw): Likewise.
3185         (fixuns_<mode>si2_hw): Likewise.
3186         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
3187         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
3188         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
3189         fix<uns>_trunc<SFDF:mode>si2_p8.
3190         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
3191         used.
3192         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
3193         (fix<uns>_<mode>_mem): Likewise.
3194         (fctiw<u>z_<mode>_mem): Likewise.
3195         (fix<uns>_<mode>_mem): Likewise.
3196         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
3197         the register allocator from doing a direct move to the GPRs to do
3198         a store, and instead use the ISA 3.0 store byte/half-word from
3199         vector register instruction.  For IEEE 128-bit floating point,
3200         also optimize stores of 32-bit ints.
3201         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
3203 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
3205         * genextract.c (push_pathstr_operand): New function to support
3206         [a-zA-Z].
3207         (walk_rtx): Call push_pathstr_operand.
3208         (print_path): Support [a-zA-Z].
3210 2018-02-07  Richard Biener  <rguenther@suse.de>
3212         PR tree-optimization/84037
3213         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
3214         (cse_and_gimplify_to_preheader): Declare.
3215         (vect_get_place_in_interleaving_chain): Likewise.
3216         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
3217         ivexpr_map.
3218         (_loop_vec_info::~_loop_vec_info): Delete it.
3219         (cse_and_gimplify_to_preheader): New function.
3220         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
3221         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
3222         (vectorizable_load): Likewise.  For grouped stores always base
3223         the IV on the first element.
3224         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
3225         condition before gimplifying.
3227 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
3229         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
3230         *DIV_EXPR and *MOD_EXPR.
3232 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
3234         PR target/84248
3235         * config/i386/i386.c (ix86_option_override_internal): Mask out
3236         the CF_SET bit when checking -fcf-protection.
3238 2018-02-07  Tom de Vries  <tom@codesourcery.com>
3240         PR libgomp/84217
3241         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
3242         enough.
3244 2018-02-07  Richard Biener  <rguenther@suse.de>
3246         PR tree-optimization/84204
3247         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
3248         this place.
3250         PR tree-optimization/84205
3251         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
3252         special-case isl_ast_op_zdiv_r.
3254         PR tree-optimization/84223
3255         * graphite-scop-detection.c (gather_bbs::before_dom_children):
3256         Only add conditions from within the region.
3257         (gather_bbs::after_dom_children): Adjust.
3259 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
3261         PR target/84209
3262         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
3263         * config/avr/avr.md: Only post-reload split REG-REG moves if
3264         either register is GENERAL_REG_P.
3266 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
3268         PR tree-optimization/84235
3269         * tree-ssa-scopedtables.c
3270         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
3271         if the subtraction is performed in floating point type where NaNs are
3272         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
3273         build 1.  Formatting fix.
3275 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
3277         PR target/84146
3278         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
3279         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
3280         and skip it regardless of bb boundaries.  Use CALL_P macro,
3281         don't test INSN_P (insn) together with CALL_P or JUMP_P check
3282         unnecessarily, formatting fix.
3284 2018-02-06  Michael Collison  <michael.collison@arm.com>
3286         * config/arm/thumb2.md:
3287         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
3288         (*thumb_mov_notscc): Ditto.
3290 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
3292         PR target/84154
3293         * config/rs6000/rs6000.md (su code attribute): Use "u" for
3294         unsigned_fix, not "s".
3296 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3298         * configure.ac (gcc_fn_eh_frame_ro): New function.
3299         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
3300         correct .eh_frame permissions.
3301         * configure: Regenerate.
3303 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
3305         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
3306         irrelevant options.
3308 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
3310         * config/rs6000/rs6000.c (rs6000_option_override_internal):
3311         Display warning message for -mno-speculate-indirect-jumps.
3313 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
3315         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
3316         Undocumented.
3317         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
3319 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
3321         PR tree-optimization/84225
3322         * tree-eh.c (find_trapping_overflow): Only call
3323         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
3325 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
3327         PR target/84145
3328         * config/i386/i386.c: Reimplement the check of possible options
3329         -mibt/-mshstk conbination. Change error messages.
3330         * doc/invoke.texi: Fix a typo: remove extra '='.
3332 2018-02-06  Marek Polacek  <polacek@redhat.com>
3334         PR tree-optimization/84228
3335         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
3337 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
3339         PR target/82641
3340         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
3341         emitted arch directives.
3342         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
3343         __ARM_FEATURE_COPROC before changing architectures.
3345 2018-02-06  Richard Biener  <rguenther@suse.de>
3347         * config/i386/i386.c (print_reg): Fix typo.
3348         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
3350 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
3352         * configure: Regenerate.
3354 2018-02-05  Martin Sebor  <msebor@redhat.com>
3356         PR tree-optimization/83369
3357         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
3358         inlining context.
3360 2018-02-05  Martin Liska  <mliska@suse.cz>
3362         * doc/invoke.texi: Cherry-pick upstream r323995.
3364 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
3366         * ira.c (ira_init_register_move_cost): Adjust comment.
3368 2018-02-05  Martin Liska  <mliska@suse.cz>
3370         PR gcov-profile/84137
3371         * doc/gcov.texi: Fix typo in documentation.
3373 2018-02-05  Martin Liska  <mliska@suse.cz>
3375         PR gcov-profile/83879
3376         * doc/gcov.texi: Document necessity of --dynamic-list-data when
3377         using dlopen functionality.
3379 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
3381         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
3382         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
3383         _mm_maskz_range_ss, _mm_mask_range_round_ss,
3384         _mm_maskz_range_round_ss): New intrinsics.
3385         (__builtin_ia32_rangesd128_round)
3386         (__builtin_ia32_rangess128_round): Remove.
3387         (__builtin_ia32_rangesd128_mask_round,
3388         __builtin_ia32_rangess128_mask_round): New builtins.
3389         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
3390         __builtin_ia32_rangess128_round): Remove.
3391         (__builtin_ia32_rangesd128_mask_round,
3392         __builtin_ia32_rangess128_mask_round): New builtins.
3393         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
3394         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
3395         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
3396         "<round_saeonly_constraint>")): Changed to ...
3397         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
3398         "<round_saeonly_scalar_constraint>")): ... this.
3399         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
3400         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
3401         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
3402         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
3403         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
3405 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
3407         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
3408         options.
3409         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
3410         Remove all values except native, 8540 and 8548.
3412 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
3414         * config/i386/i386.c (ix86_output_function_return): Pass
3415         INVALID_REGNUM, instead of -1, as invalid register number to
3416         indirect_thunk_name and output_indirect_thunk.
3418 2018-02-02  Julia Koval  <julia.koval@intel.com>
3420         * config.gcc: Add -march=icelake.
3421         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
3422         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
3423         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
3424         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
3425         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
3426         (processor_target_table): Add icelake.
3427         (ix86_option_override_internal): Handle new PTAs.
3428         (get_builtin_code_for_version): Handle icelake.
3429         (M_INTEL_COREI7_ICELAKE): New.
3430         (fold_builtin_cpu): Handle icelake.
3431         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
3432         * doc/invoke.texi: Add -march=icelake.
3434 2018-02-02  Julia Koval  <julia.koval@intel.com>
3436         * config/i386/i386.c (ix86_option_override_internal): Change flags type
3437         to wide_int_bitmask.
3438         * wide-int-bitmask.h: New.
3440 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
3442         PR target/84066
3443         * config/i386/i386.md: Replace Pmode with word_mode in
3444         builtin_setjmp_setup and builtin_longjmp to support x32.
3446 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
3448         PR target/56010
3449         PR target/83743
3450         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
3451         #include "opts.h".
3452         (rs6000_supported_cpu_names): New static variable.
3453         (linux_cpu_translation_table): Likewise.
3454         (elf_platform) <cpu>: Define new static variable and use it.
3455         Translate kernel AT_PLATFORM name to canonical name if needed.
3456         Error if platform name is unknown.
3458 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
3460         PR target/84089
3461         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
3463 2018-02-01  Jeff Law  <law@redhat.com>
3465         PR target/84128
3466         * config/i386/i386.c (release_scratch_register_on_entry): Add new
3467         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
3468         the scratch if RELEASE_VIA_POP is false.
3469         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
3470         If we have to save a temporary register, decrement SIZE appropriately.
3471         Pass new arguments to release_scratch_register_on_entry.
3472         (ix86_adjust_stack_and_probe): Likewise.
3473         (ix86_emit_probe_stack_range): Pass new arguments to
3474         release_scratch_register_on_entry.
3476 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
3478         PR rtl-optimization/84157
3479         * combine.c (change_zero_ext): Use REG_P predicate in
3480         front of HARD_REGISTER_P predicate.
3482 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
3484         * config/avr/avr.c (avr_option_override): Move disabling of
3485         -fdelete-null-pointer-checks to...
3486         * common/config/avr/avr-common.c (avr_option_optimization_table):
3487         ...here.
3489 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
3491         PR tree-optimization/81635
3492         * tree-data-ref.c (split_constant_offset_1): For types that
3493         wrap on overflow, try to use range info to prove that wrapping
3494         cannot occur.
3496 2018-02-01  Renlin Li  <renlin.li@arm.com>
3498         PR target/83370
3499         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
3500         TAILCALL_ADDR_REGS.
3501         (aarch64_register_move_cost): Likewise.
3502         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
3503         TAILCALL_ADDR_REGS.
3504         (REG_CLASS_NAMES): Likewise.
3505         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
3506         TAILCALL_ADDR_REGS. Remove IP registers.
3507         * config/aarch64/aarch64.md (Ucs): Update register constraint.
3509 2018-02-01  Richard Biener  <rguenther@suse.de>
3511         * domwalk.h (dom_walker::dom_walker): Add additional constructor
3512         for specifying RPO order and allow NULL for that.
3513         * domwalk.c (dom_walker::dom_walker): Likewise.
3514         (dom_walker::walk): Handle NULL RPO order.
3515         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
3516         in RPO order.
3517         (rewrite_update_dom_walker): Likewise.
3518         (mark_def_dom_walker): Likewise.
3520 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
3522         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
3523         (aarch64_maybe_expand_sve_subreg_move): Declare.
3524         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
3525         * config/aarch64/predicates.md (aarch64_any_register_operand): New
3526         predicate.
3527         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
3528         that are semantically a reverse operation.
3529         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
3530         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
3531         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
3532         functions.
3533         (aarch64_can_change_mode_class): For big-endian, forbid changes
3534         between two SVE modes if they have different element sizes.
3536 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
3538         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
3539         the TImode handling for big-endian targets.
3541 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
3543         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
3544         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
3545         not just bytes.
3546         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
3547         Remove BSWAP handing for big-endian targets and use the form of
3548         LD1RQ appropariate for the mode.
3550 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
3552         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
3553         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
3554         duplicated element.
3556 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
3558         PR tearget/83845
3559         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
3560         check for operands that need to go through aarch64_sve_reload_be.
3562 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
3564         PR tree-optimization/81661
3565         PR tree-optimization/84117
3566         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
3567         * tree-eh.c: Include gimplify.h.
3568         (find_trapping_overflow, replace_trapping_overflow,
3569         rewrite_to_non_trapping_overflow): New functions.
3570         * tree-vect-loop.c: Include tree-eh.h.
3571         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
3572         * tree-data-ref.c: Include tree-eh.h.
3573         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
3575 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
3577         PR rtl-optimization/84123
3578         * combine.c (change_zero_ext): Check if hard register satisfies
3579         can_change_dest_mode before calling gen_lowpart_SUBREG.
3581 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
3583         PR target/82444
3584         * ira.c (ira_init_register_move_cost): Remove assert.
3586 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
3588         PR rtl-optimization/84071
3589         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
3590         * doc/tm.texi: Regenerate.
3592 2018-01-31  Richard Biener  <rguenther@suse.de>
3594         PR tree-optimization/84132
3595         * tree-data-ref.c (analyze_miv_subscript): Properly
3596         check whether evolution_function_is_affine_multivariate_p
3597         before calling gcd_of_steps_may_divide_p.
3599 2018-01-31  Julia Koval  <julia.koval@intel.com>
3601         PR target/83618
3602         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
3603         * config/i386/i386.md (rdpid_rex64) New.
3604         (rdpid): Make 32bit only.
3606 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
3608         PR lto/84105
3609         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
3610         an IDENTIFIER_NODE for FUNCTION_TYPE's.
3612 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
3614         Revert
3615         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
3617         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
3619 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
3621         PR rtl-optimization/84071
3622         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
3623         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
3625 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
3627         * config/arc/arc.c (arc_handle_aux_attribute): New function.
3628         (arc_attribute_table): Add 'aux' attribute.
3629         (arc_in_small_data_p): Consider aux like variables.
3630         (arc_is_aux_reg_p): New function.
3631         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
3632         (arc_get_aux_arg): New function.
3633         (prepare_move_operands): Handle aux-register access.
3634         (arc_handle_aux_attribute): New function.
3635         * doc/extend.texi (ARC Variable attributes): Add subsection.
3637 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
3639         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
3640         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
3641         (arc_attribute_table): Add 'uncached' attribute.
3642         (arc_print_operand): Print '.di' flag for uncached memory
3643         accesses.
3644         (arc_in_small_data_p): Do not consider for small data the uncached
3645         types.
3646         (arc_is_uncached_mem_p): New function.
3647         * config/arc/predicates.md (compact_store_memory_operand): Check
3648         for uncached memory accesses.
3649         (nonvol_nonimm_operand): Likewise.
3650         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
3652 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
3654         PR c/84100
3655         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
3656         falign-loops=): Add Optimization flag.
3658 2018-01-30  Jeff Law  <law@redhat.com>
3660         PR target/84064
3661         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
3662         INT_REGISTERS_SAVED.  Check it prior to calling
3663         get_scratch_register_on_entry.
3664         (ix86_adjust_stack_and_probe): Similarly.
3665         (ix86_emit_probe_stack_range): Similarly.
3666         (ix86_expand_prologue): Corresponding changes.
3668 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3670         PR target/40411
3671         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
3672         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
3674 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
3676         PR target/84112
3677         * lra-constraints.c (curr_insn_transform): Process AND in the
3678         address.
3680 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
3682         PR rtl-optimization/83986
3683         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
3684         dependence against last_pending_memory_flush in addition to
3685         pending_jump_insns.
3687 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
3689         PR tree-optimization/81611
3690         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
3691         copies.
3693 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
3695         PR target/83758
3696         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
3697         a reg rtx.
3699 2018-01-30  Richard Biener  <rguenther@suse.de>
3700             Jakub Jelinek  <jakub@redhat.com>
3702         PR tree-optimization/84111
3703         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
3704         inner loops added during recursion, as they don't have up-to-date
3705         SSA form.
3707 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
3709         PR ipa/81360
3710         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
3711         (can_inline_edge_by_limits_p): ... here.
3712         (can_early_inline_edge_p, check_callers,
3713         update_caller_keys, update_callee_keys, recursive_inlining,
3714         add_new_edges_to_heap, speculation_useful_p,
3715         inline_small_functions,
3716         inline_small_functions, flatten_function,
3717         inline_to_all_callers_1): Update.
3719 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
3721         * profile-count.c (profile_count::combine_with_ipa_count): Handle
3722         zeros correctly.
3724 2018-01-30  Richard Biener  <rguenther@suse.de>
3726         PR tree-optimization/83008
3727         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
3728         invariant and constant vector uses in stmts when they need
3729         more than one stmt.
3731 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3733         PR bootstrap/84017
3734         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
3735         * configure: Regenerate.
3737 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
3739         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
3740         pattern.
3741         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
3742         Use gen_rtx_REG rather than gen_lowpart.
3744 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
3746         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
3747         rather than 0 when creating partial subregs.
3749 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
3751         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
3752         of usage.
3754 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
3756         PR target/81550
3757         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
3758         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
3759         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
3760         flags.  This restores the settings used before the 2017-07-24.
3761         Turning off pre increment/decrement/modify allows IVOPTS to
3762         optimize DF/SF loops where the index is an int.
3764 2018-01-29  Richard Biener  <rguenther@suse.de>
3765             Kelvin Nilsen  <kelvin@gcc.gnu.org>
3767         PR bootstrap/80867
3768         * tree-vect-stmts.c (vectorizable_call): Don't call
3769         targetm.vectorize_builtin_md_vectorized_function if callee is
3770         NULL.
3772 2018-01-22  Carl Love  <cel@us.ibm.com>
3774         * doc/extend.tex: Fix typo in second arg in
3775         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
3777 2018-01-29  Richard Biener  <rguenther@suse.de>
3779         PR tree-optimization/84086
3780         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
3781         (flush_ssaname_freelist): When SSA names were released reset
3782         the SCEV hash table.
3784 2018-01-29  Richard Biener  <rguenther@suse.de>
3786         PR tree-optimization/84057
3787         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
3788         removed paths when removing edges.
3790 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3792         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
3793         -mfunction-return=@var{choice}.
3795 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
3797         PR diagnostic/84034
3798         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
3799         Handle CR like TAB.
3800         (layout::print_source_line): Likewise.
3801         (test_get_line_width_without_trailing_whitespace): Add test cases.
3803 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
3805         PR middle-end/84040
3806         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
3807         debug insns.
3809 2018-01-26  Jim Wilson  <jimw@sifive.com>
3811         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
3813         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
3814         specified.
3816 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3818         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
3819         and CMP + SUB-immediate -> SUBS.
3821 2018-01-26  Martin Sebor  <msebor@redhat.com>
3823         PR tree-optimization/83896
3824         * tree-ssa-strlen.c (get_string_len): Rename...
3825         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
3826         Avoid assuming length is constant.
3827         (handle_char_store): Use HOST_WIDE_INT for string length.
3829 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
3831         PR target/81763
3832         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
3833         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
3835 2018-01-26  Richard Biener  <rguenther@suse.de>
3837         PR rtl-optimization/84003
3838         * dse.c (record_store): Only record redundant stores when
3839         the earlier store aliases at least all accesses the later one does.
3841 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
3843         PR rtl-optimization/83985
3844         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
3845         REG_CFA_RESTORE insns.
3846         (delete_unmarked_insns): Don't ignore separate shrink wrapping
3847         REG_CFA_RESTORE insns here.
3849         PR c/83989
3850         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
3851         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
3853 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
3855         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
3856         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
3857         (arc_init): Likewise.
3858         (arc_override_options): Likewise.
3859         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
3860         value.
3861         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
3862         support.
3863         * config/arc/arc.h (TARGET_DBNZ): Define.
3864         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
3865         properly set the tune attribute.
3866         (dbnz): Use TARGET_DBNZ guard.
3867         * config/arc/arc.opt (mtune): Add core3 option.
3869 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
3871         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
3872         recognize new pic like addresses.
3873         (arc_delegitimize_address): Clean up.
3875 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
3877         * config/arc/arc-arches.def: Option mrf16 valid for all
3878         architectures.
3879         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
3880         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
3881         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
3882         * config/arc/arc-tables.opt: Regenerate.
3883         * config/arc/arc.c (arc_conditional_register_usage): Handle
3884         reduced register file case.
3885         (arc_file_start): Set must have build attributes.
3886         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
3887         mrf16 option value.
3888         * config/arc/arc.opt (mrf16): Add new option.
3889         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
3890         * config/arc/genmultilib.awk: Handle new mrf16 option.
3891         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
3892         * config/arc/t-multilib: Regenerate.
3893         * doc/invoke.texi (ARC Options): Document mrf16 option.
3895 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
3897         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
3898         * config/arc/arc.c (arc_handle_secure_attribute): New function.
3899         (arc_attribute_table): Add 'secure_call' attribute.
3900         (arc_print_operand): Print secure call operand.
3901         (arc_function_ok_for_sibcall): Don't optimize tail calls when
3902         secure.
3903         (arc_is_secure_call_p): New function.  * config/arc/arc.md
3904         (call_i): Add support for sjli instruction.
3905         (call_value_i): Likewise.
3906         * config/arc/constraints.md (Csc): New constraint.
3908 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
3909             John Eric Martin  <John.Martin@emmicro-us.com>
3911         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
3912         * config/arc/arc.c (_arc_jli_section): New struct.
3913         (arc_jli_section): New type.
3914         (rc_jli_sections): New static variable.
3915         (arc_handle_jli_attribute): New function.
3916         (arc_attribute_table): Add jli_always and jli_fixed attribute.
3917         (arc_file_end): New function.
3918         (TARGET_ASM_FILE_END): Define.
3919         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
3920         (arc_add_jli_section): New function.
3921         (jli_call_scan): Likewise.
3922         (arc_reorg): Call jli_call_scan.
3923         (arc_output_addsi): Remove 'S' from printing asm operand.
3924         (arc_is_jli_call_p): New function.
3925         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
3926         operand.
3927         (movhi_insn): Likewise.
3928         (movsi_insn): Likewise.
3929         (movsi_set_cc_insn): Likewise.
3930         (loadqi_update): Likewise.
3931         (load_zeroextendqisi_update): Likewise.
3932         (load_signextendqisi_update): Likewise.
3933         (loadhi_update): Likewise.
3934         (load_zeroextendhisi_update): Likewise.
3935         (load_signextendhisi_update): Likewise.
3936         (loadsi_update): Likewise.
3937         (loadsf_update): Likewise.
3938         (movsicc_insn): Likewise.
3939         (bset_insn): Likewise.
3940         (bxor_insn): Likewise.
3941         (bclr_insn): Likewise.
3942         (bmsk_insn): Likewise.
3943         (bicsi3_insn): Likewise.
3944         (cmpsi_cc_c_insn): Likewise.
3945         (movsi_ne): Likewise.
3946         (movsi_cond_exec): Likewise.
3947         (clrsbsi2): Likewise.
3948         (norm_f): Likewise.
3949         (normw): Likewise.
3950         (swap): Likewise.
3951         (divaw): Likewise.
3952         (flag): Likewise.
3953         (sr): Likewise.
3954         (kflag): Likewise.
3955         (ffs): Likewise.
3956         (ffs_f): Likewise.
3957         (fls): Likewise.
3958         (call_i): Remove 'S' asm letter, add jli instruction.
3959         (call_value_i): Likewise.
3960         * config/arc/arc.op (mjli-always): New option.
3961         * config/arc/constraints.md (Cji): New constraint.
3962         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
3963         operand.
3964         (subsf3_fpx): Likewise.
3965         (mulsf3_fpx): Likewise.
3966         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
3967         asm operand.
3968         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
3969         function attrbutes.
3970         * doc/invoke.texi (ARC): Document mjli-always option.
3972 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
3974         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
3975         avoid addition with 0 and use incw and decw where possible.
3977 2018-01-26  Richard Biener  <rguenther@suse.de>
3979         PR tree-optimization/81082
3980         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
3981         association if it requires casting to unsigned.
3982         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
3983         from fold_plusminus_mult_expr to catch important cases late when
3984         range info is available.
3986 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3988         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
3989         * configure.ac (hidden_linkonce): New test.
3990         * configure: Regenerate.
3991         * config.in: Regenerate.
3993 2018-01-26  Julia Koval  <julia.koval@intel.com>
3995         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
3996         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
3997         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
3998         _mm_mask_bitshuffle_epi64_mask): Fix type.
3999         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
4000         USI_FTYPE_V4DI_V4DI_USI): Remove.
4001         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
4002         __builtin_ia32_vpshufbitqmb256_mask,
4003         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
4004         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
4005         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
4007 2018-01-26  Alan Modra  <amodra@gmail.com>
4009         PR target/84033
4010         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
4011         UNSPEC_VBPERMQ.  Sort other unspecs.
4013 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
4015         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
4017 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
4019         PR middle-end/83055
4020         * predict.c (drop_profile): Do not push/pop cfun; update also
4021         node->count.
4022         (handle_missing_profiles): Fix logic looking for zero profiles.
4024 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
4026         PR middle-end/83977
4027         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
4028         on functions with #pragma omp declare simd or functions with simd
4029         attribute.
4030         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
4031         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
4032         Remove trailing \n from warning_at calls.
4034 2018-01-25  Tom de Vries  <tom@codesourcery.com>
4036         PR target/84028
4037         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
4038         for neutered workers.
4040 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
4042         PR target/68467
4043         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
4044         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
4046 2018-01-24  Jeff Law  <law@redhat.com>
4048         PR target/83994
4049         * i386.c (get_probe_interval): Move to earlier point.
4050         (ix86_compute_frame_layout): If -fstack-clash-protection and
4051         the frame is larger than the probe interval, then use pushes
4052         to save registers rather than reg->mem moves.
4053         (ix86_expand_prologue): Remove conditional for int_registers_saved
4054         assertion.
4056 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
4058         PR target/84014
4059         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
4060         min/max for never referenced object.
4062 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
4064         PR middle-end/83977
4065         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
4066         here.
4067         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
4068         attributes from DECL_ATTRIBUTES (decl) without affecting
4069         DECL_ATTRIBUTES (current_function_decl).
4070         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
4071         functions with non-NULL DECL_ABSTRACT_ORIGIN.
4073 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
4075         PR tree-optimization/83979
4076         * fold-const.c (fold_comparison): Use constant_boolean_node
4077         instead of boolean_{true,false}_node.
4079 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
4081         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
4082         with zero counts.
4084 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4086         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
4087         Simplify the clause that sets the length attribute.
4088         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
4089         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
4090         clause that sets the length attribute.
4091         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
4093 2018-01-24  Tom de Vries  <tom@codesourcery.com>
4095         PR target/83589
4096         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
4097         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
4098         Add strict parameter.
4099         (prevent_branch_around_nothing): Insert dummy insn between branch to
4100         label and label with no ptx insn inbetween.
4101         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
4103 2018-01-24  Tom de Vries  <tom@codesourcery.com>
4105         PR target/81352
4106         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
4107         for neutered threads in warp.
4108         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
4110 2018-01-24  Richard Biener  <rguenther@suse.de>
4112         PR tree-optimization/83176
4113         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
4114         operands.
4116 2018-01-24  Richard Biener  <rguenther@suse.de>
4118         PR tree-optimization/82819
4119         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
4120         code generating pluses that are no-ops in the target precision.
4122 2018-01-24  Richard Biener  <rguenther@suse.de>
4124         PR middle-end/84000
4125         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
4127 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
4129         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
4130         to merge probabilities.
4131         * predict.c (probably_never_executed): Also mark as cold functions
4132         with global 0 profile and guessed local profile.
4133         * profile-count.c (profile_probability::combine_with_count): New
4134         member function.
4135         * profile-count.h (profile_probability::operator*,
4136         profile_probability::operator*=, profile_probability::operator/,
4137         profile_probability::operator/=): Reduce precision to adjusted
4138         and set value to guessed on contradictory divisions.
4139         (profile_probability::combine_with_freq): Remove.
4140         (profile_probability::combine_wiht_count): Declare.
4141         (profile_count::force_nonzero):: Set to adjusted.
4142         (profile_count::probability_in):: Set quality to adjusted.
4143         * tree-ssa-tail-merge.c (replace_block_by): Use
4144         combine_with_count.
4146 2018-01-23  Andrew Waterman  <andrew@sifive.com>
4147             Jim Wilson  <jimw@sifive.com>
4149         * config/riscv/riscv.c (riscv_stack_boundary): New.
4150         (riscv_option_override): Set riscv_stack_boundary.  Handle
4151         riscv_preferred_stack_boundary_arg.
4152         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
4153         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
4154         (STACK_BOUNDARY): Set to riscv_stack_boundary.
4155         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
4156         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
4157         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
4159 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
4161         PR target/83905
4162         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
4163         of struct ix86_frame.
4164         (ix86_expand_epilogue): Likewise.  Add a local variable for
4165         the reg_save_offset field in struct ix86_frame.
4167 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
4169         PR tree-optimization/82604
4170         * tree-loop-distribution.c (enum partition_kind): New enum item
4171         PKIND_PARTIAL_MEMSET.
4172         (partition_builtin_p): Support above new enum item.
4173         (generate_code_for_partition): Ditto.
4174         (compute_access_range): Differentiate cases that equality can be
4175         proven at all loops, the innermost loops or no loops.
4176         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
4177         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
4178         (finalize_partitions, distribute_loop): Don't fuse partition of
4179         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
4180         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
4181         parloop is enabled.
4183 2018-01-23  Martin Liska  <mliska@suse.cz>
4185         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
4186         order to ignore the predictor.
4187         (PRED_POLYMORPHIC_CALL): Likewise.
4188         (PRED_RECURSIVE_CALL): Likewise.
4190 2018-01-23  Martin Liska  <mliska@suse.cz>
4192         * tree-profile.c (tree_profiling): Print function header to
4193         aware reader which function we are working on.
4194         * value-prof.c (gimple_find_values_to_profile): Do not print
4195         not interesting value histograms.
4197 2018-01-23  Martin Liska  <mliska@suse.cz>
4199         * profile-count.h (enum profile_quality): Add
4200         profile_uninitialized as the first value. Do not number values
4201         as they are zero based.
4202         (profile_count::verify): Update sanity check.
4203         (profile_probability::verify): Likewise.
4205 2018-01-23  Nathan Sidwell  <nathan@acm.org>
4207         * doc/invoke.texi (ffor-scope): Deprecate.
4209 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
4211         PR tree-optimization/83510
4212         * domwalk.c (set_all_edges_as_executable): New function.
4213         (dom_walker::dom_walker): Convert bool param
4214         "skip_unreachable_blocks" to enum reachability.  Move setup of
4215         edge flags to set_all_edges_as_executable and only do it when
4216         reachability is REACHABLE_BLOCKS.
4217         * domwalk.h (enum dom_walker::reachability): New enum.
4218         (dom_walker::dom_walker): Convert bool param
4219         "skip_unreachable_blocks" to enum reachability.
4220         (set_all_edges_as_executable): New decl.
4221         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
4222         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
4223         "reachability".
4224         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
4225         but converting true to REACHABLE_BLOCKS.
4226         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
4227         * tree-vrp.c
4228         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
4229         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
4230         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
4231         REACHABLE_BLOCKS.
4232         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
4233         if check_all_array_refs will be called.
4235 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
4237         * tree.c (selftest::test_location_wrappers): Add more test
4238         coverage.
4240 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
4242         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
4243         (selftest::test_bit_in_range): Likewise.
4245 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
4247         PR testsuite/83888
4248         * doc/sourcebuild.texi (vect_float): Say that the selector
4249         only describes the situation when -funsafe-math-optimizations is on.
4250         (vect_float_strict): Document.
4252 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
4254         PR tree-optimization/83965
4255         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
4256         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
4257         instead of checking only for a reduction.
4258         (vect_recog_widen_sum_pattern): Likewise.
4260 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
4262         * predict.c (probably_never_executed): Only use precise profile info.
4263         (compute_function_frequency): Skip after inlining hack since we now
4264         have quality checking.
4266 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
4268         * profile-count.h (profile_probability::very_unlikely,
4269         profile_probability::unlikely, profile_probability::even): Set
4270         precision to guessed.
4272 2018-01-23  Richard Biener  <rguenther@suse.de>
4274         PR tree-optimization/83963
4275         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
4276         Properly terminate dominator walk when crossing the exit edge not
4277         when visiting its source block.
4279 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
4281         PR c++/83918
4282         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
4283         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
4285 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
4287         PR tree-optimization/83957
4288         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
4289         semicolon after for body surrounded by braces.
4291         PR tree-optimization/83081
4292         * profile-count.h (profile_probability::split): New method.
4293         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
4294         Use profile_probability::split.
4295         (do_compare_rtx_and_jump): Fix adjustment of probabilities
4296         when splitting a single conditional jump into 2.
4298 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
4300         PR tree-optimization/69452
4301         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
4302         decl.
4304 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4306         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
4307         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
4308         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
4310 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4312         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
4313         * config/rl78/rl78.md (movdi): New define_expand.
4314         * config/rl78/rl78.c (rl78_split_movdi): New function.
4316 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
4318         PR target/83862
4319         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
4320         no longer used.
4321         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
4322         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
4323         128-bit to produce an UNSPEC move to get the double word with the
4324         signbit and then a shift directly to do signbit.
4325         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
4326         implementation with a new version that just does either a direct
4327         move or a regular move.  Move memory interface to separate insns.
4328         Move insns so they are next to the expander.
4329         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
4330         with signbit move.  Split big and little endian case.
4331         (signbit<mode>2_dm_mem_le): Likewise.
4332         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
4333         (signbit<mode>2_dm2): Likewise.
4335 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4337         * config/rl78/rl78.md (anddi3): New define_expand.
4339 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4341         * config/rl78/rl78.md (umindi3): New define_expand.
4343 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4345         * config/rl78/rl78.md (smindi3): New define_expand.
4347 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4349         * config/rl78/rl78.md (smaxdi3): New define_expand.
4351 2018-01-22  Carl Love  <cel@us.ibm.com>
4353         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
4354         LVX_V1TI): Add macro expansion.
4355         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
4356         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
4357         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
4358         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
4359         Change check to determine if the instruction is a byte reversing
4360         entry.  Fix typo in comment.
4361         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
4362         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
4363         Add def_builtin calls for new builtins.
4364         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
4365         Add define_insn expansion.
4367 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4369         * config/rl78/rl78.md (umaxdi3): New define_expand.
4371 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
4373         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
4374         for non-QImode registers.
4376 2018-01-22  Richard Biener  <rguenther@suse.de>
4378         PR tree-optimization/83963
4379         * graphite-scop-detection.c (scop_detection::get_sese): Delay
4380         including the loop exit block.
4381         (scop_detection::merge_sese): Likewise.
4382         (scop_detection::add_scop): Do it here instead.
4384 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4386         * doc/sourcebuild.texi (arm_softfloat): Document.
4388 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
4390         PR gcc/77734
4391         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
4392         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
4393         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
4395 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4396             David Edelsohn  <dje.gcc@gmail.com>
4398         PR target/83946
4399         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
4400         Change "crset eq" to "crset 2".
4401         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
4402         (*call_indirect_aix<mode>_nospec): Likewise.
4403         (*call_value_indirect_aix<mode>_nospec): Likewise.
4404         (*call_indirect_elfv2<mode>_nospec): Likewise.
4405         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
4406         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
4407         change assembly output from . to $.
4408         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
4409         (indirect_jump<mode>_nospec): Change assembly output from . to $.
4410         (*tablejump<mode>_internal1_nospec): Likewise.
4412 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
4414         PR target/80870
4415         * config/sh/sh_optimize_sett_clrt.cc:
4416         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
4418 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
4420         PR tree-optimization/83940
4421         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
4422         offset_dt to vect_constant_def rather than vect_unknown_def_type.
4423         (vect_check_load_store_mask): Add a mask_dt_out parameter and
4424         use it to pass back the definition type.
4425         (vect_check_store_rhs): Likewise rhs_dt_out.
4426         (vect_build_gather_load_calls): Add a mask_dt argument and use
4427         it instead of a call to vect_is_simple_use.
4428         (vectorizable_store): Update calls to vect_check_load_store_mask
4429         and vect_check_store_rhs.  Use the dt returned by the latter instead
4430         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
4431         instead of calls to vect_is_simple_use.  Pass the scalar rather
4432         than the vector operand to vect_is_simple_use when handling
4433         second and subsequent copies of an rhs value.
4434         (vectorizable_load): Update calls to vect_check_load_store_mask
4435         and vect_build_gather_load_calls.  Use the cached mask_dt and
4436         gs_info.offset_dt instead of calls to vect_is_simple_use.
4438 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
4440         PR middle-end/83945
4441         * tree-emutls.c: Include gimplify.h.
4442         (lower_emutls_2): New function.
4443         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
4444         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
4445         it before further processing.
4447         PR target/83930
4448         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
4449         UINTVAL (trueop1) instead of INTVAL (op1).
4451 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
4453         PR debug/81570
4454         PR debug/83728
4455         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
4456         INCOMING_FRAME_SP_OFFSET if not defined.
4457         (scan_trace): Add ENTRY argument.  If true and
4458         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
4459         emit a note to adjust the CFA offset.
4460         (create_cfi_notes): Adjust scan_trace callers.
4461         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
4462         INCOMING_FRAME_SP_OFFSET in the CIE.
4463         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
4464         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
4465         Likewise.
4466         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
4467         * doc/tm.texi: Regenerated.
4469 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4471         PR rtl-optimization/83147
4472         * lra-constraints.c (remove_inheritance_pseudos): Use
4473         lra_substitute_pseudo_within_insn.
4475 2018-01-19  Tom de Vries  <tom@codesourcery.com>
4476             Cesar Philippidis  <cesar@codesourcery.com>
4478         PR target/83920
4479         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
4481 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
4483         PR target/83790
4484         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
4485         spaces for function labels.
4487 2018-01-19  Martin Liska  <mliska@suse.cz>
4489         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
4490         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
4491         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
4492         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
4493         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
4494         (PRED_CONST_RETURN): Change from 69 to 65.
4495         (PRED_NULL_RETURN): Change from 91 to 71.
4496         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
4497         (PRED_LOOP_GUARD): Change from 66 to 73.
4499 2018-01-19  Martin Liska  <mliska@suse.cz>
4501         * predict.c (predict_insn_def): Add new assert.
4502         (struct branch_predictor): Change type to signed integer.
4503         (test_prediction_value_range): Amend test to cover
4504         PROB_UNINITIALIZED.
4505         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
4506         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
4507         (PRED_LOOP_ITERATIONS_MAX): Likewise.
4508         (PRED_LOOP_IV_COMPARE): Likewise.
4509         * predict.h (PROB_UNINITIALIZED): Define new constant.
4511 2018-01-19  Martin Liska  <mliska@suse.cz>
4513         * predict.c (dump_prediction): Add new format for
4514         analyze_brprob.py script which is enabled with -details
4515         suboption.
4516         * profile-count.h (precise_p): New function.
4518 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
4520         PR tree-optimization/83922
4521         * tree-vect-loop.c (vect_verify_full_masking): Return false if
4522         there are no statements that need masking.
4523         (vect_active_double_reduction_p): New function.
4524         (vect_analyze_loop_operations): Use it when handling phis that
4525         are not in the loop header.
4527 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
4529         PR tree-optimization/83914
4530         * tree-vect-loop.c (vectorizable_induction): Don't convert
4531         init_expr or apply the peeling adjustment for inductions
4532         that are nested within the vectorized loop.
4534 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4536         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
4537         instead of NEG.
4539 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
4541         PR sanitizer/81715
4542         PR testsuite/83882
4543         * function.h (gimplify_parameters): Add gimple_seq * argument.
4544         * function.c: Include gimple.h and options.h.
4545         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
4546         for the added local temporaries if needed.
4547         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
4548         if there are any parameter cleanups, wrap whole body into a
4549         try/finally with the cleanups.
4551 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
4553         PR target/82964
4554         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
4555         Use GET_MODE_CLASS for scalar floating point.
4557 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
4559         PR ipa/82256
4560         patch by PaX Team
4561         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
4562         Fix call of call_cgraph_insertion_hooks.
4564 2018-01-18  Martin Sebor  <msebor@redhat.com>
4566         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
4568 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
4570         PR ipa/83619
4571         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
4572         frequencies.
4574 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
4576         PR other/70268
4577         * common.opt: (-ffile-prefix-map): New option.
4578         * opts.c (common_handle_option): Defer it.
4579         * opts-global.c (handle_common_deferred_options): Handle it.
4580         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
4581         * file-prefix-map.h: New file.
4582         (remap_debug_filename, add_debug_prefix_map): ...here.
4583         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
4584         * final.c (debug_prefix_map, add_debug_prefix_map
4585         remap_debug_filename): Move to...
4586         * file-prefix-map.c: New file.
4587         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
4588         generalize, get rid of alloca(), use strrchr() instead of strchr().
4589         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
4590         Implement in terms of add_prefix_map().
4591         (remap_macro_filename, remap_debug_filename): Implement in term of
4592         remap_filename().
4593         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
4594         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
4595         * dbxout.c: Include file-prefix-map.h.
4596         * varasm.c: Likewise.
4597         * vmsdbgout.c: Likewise.
4598         * xcoffout.c: Likewise.
4599         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
4600         * doc/cppopts.texi (-fmacro-prefix-map): Document.
4601         * doc/invoke.texi (-ffile-prefix-map): Document.
4602         (-fdebug-prefix-map): Update description.
4604 2018-01-18  Martin Liska  <mliska@suse.cz>
4606         * config/i386/i386.c (indirect_thunk_name): Document that also
4607         lfence is emitted.
4608         (output_indirect_thunk): Document why both instructions
4609         (pause and lfence) are generated.
4611 2018-01-18  Richard Biener  <rguenther@suse.de>
4613         PR tree-optimization/83887
4614         * graphite-scop-detection.c
4615         (scop_detection::get_nearest_dom_with_single_entry): Remove.
4616         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
4617         (scop_detection::merge_sese): Re-implement with a flood-fill
4618         algorithm that properly finds a SESE region if it exists.
4620 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
4622         PR c/61240
4623         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
4624         pointer_diff optimizations use view_convert instead of convert.
4626 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4628         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
4629         Generate different code for -mno-speculate-indirect-jumps.
4630         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
4631         (*call_indirect_aix<mode>): Disable for
4632         -mno-speculate-indirect-jumps.
4633         (*call_indirect_aix<mode>_nospec): New define_insn.
4634         (*call_value_indirect_aix<mode>): Disable for
4635         -mno-speculate-indirect-jumps.
4636         (*call_value_indirect_aix<mode>_nospec): New define_insn.
4637         (*sibcall_nonlocal_sysv<mode>): Generate different code for
4638         -mno-speculate-indirect-jumps.
4639         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
4641 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
4643         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
4644         long double type, set the flags for noting the default long double
4645         type, even if we don't pass or return a long double type.
4647 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
4649         PR ipa/83051
4650         * ipa-inline.c (flatten_function): Do not overwrite final inlining
4651         failure.
4653 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
4655         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
4656         support for merge[hl].
4657         (fold_mergehl_helper): New helper function.
4658         (tree-vector-builder.h): New #include for tree_vector_builder usage.
4659         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
4660         (altivec_vmrglw_direct): Add xxmrglw insn.
4662 2018-01-17  Andrew Waterman  <andrew@sifive.com>
4664         * config/riscv/riscv.c (riscv_conditional_register_usage): If
4665         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
4667 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
4669         PR lto/83121
4670         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
4671         call the lto_location_cache before reading the
4672         DECL_SOURCE_LOCATION of the types.
4674 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
4675             Richard Sandiford  <richard.sandiford@linaro.org>
4677         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
4678         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
4679         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
4680         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
4681         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
4682         Add declaration.
4683         * config/aarch64/constraints.md (aarch64_movti_operand):
4684         Limit immediates.
4685         * config/aarch64/predicates.md (Uti): Add new constraint.
4687 2018-01-17 Carl Love  <cel@us.ibm.com>
4689         * config/rs6000/vsx.md (define_expand xl_len_r,
4690         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
4691         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
4692         lxvll.
4693         (define_expand, define_insn): Move the shift left from  the
4694         define_insn to the define_expand for lxvl and stxvl instructions.
4695         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
4696         and XL_LEN_R definitions to PURE.
4698 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
4700         * config/i386/i386.c (indirect_thunk_name): Declare regno
4701         as unsigned int.  Compare regno with INVALID_REGNUM.
4702         (output_indirect_thunk): Ditto.
4703         (output_indirect_thunk_function): Ditto.
4704         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
4705         in the call to output_indirect_thunk_function.
4707 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
4709         PR middle-end/83884
4710         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
4711         rather than the size of inner_type to determine the stack slot size
4712         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
4714 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
4716         PR target/83546
4717         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
4718         to PTA_SILVERMONT.
4720 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
4722         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
4723         endian Linux systems to optionally enable multilibs for selecting
4724         the long double type if the user configured an explicit type.
4725         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
4726         have no long double multilibs if not defined.
4727         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
4728         warn if the user used -mabi={ieee,ibm}longdouble and we built
4729         multilibs for long double.
4730         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
4731         appropriate multilib option.
4732         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
4733         multilib options.
4734         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
4735         for building long double multilibs.
4736         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
4738 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
4740         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
4741         copies.
4743         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
4744         64 bits.
4745         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
4746         128 bits.
4748         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
4749         variables.
4751         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
4752         return value.
4754 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
4756         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
4757         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
4759 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4761         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
4762         different rtl trees depending on TARGET_64BIT.
4763         (rs6000_gen_lvx): Likewise.
4765 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
4767         * config/visium/visium.md (nop): Tweak comment.
4768         (hazard_nop): Likewise.
4770 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4772         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
4773         -mspeculate-indirect-jumps.
4774         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
4775         for -mno-speculate-indirect-jumps.
4776         (*call_indirect_elfv2<mode>_nospec): New define_insn.
4777         (*call_value_indirect_elfv2<mode>): Disable for
4778         -mno-speculate-indirect-jumps.
4779         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
4780         (indirect_jump): Emit different RTL for
4781         -mno-speculate-indirect-jumps.
4782         (*indirect_jump<mode>): Disable for
4783         -mno-speculate-indirect-jumps.
4784         (*indirect_jump<mode>_nospec): New define_insn.
4785         (tablejump): Emit different RTL for
4786         -mno-speculate-indirect-jumps.
4787         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
4788         (tablejumpsi_nospec): New define_expand.
4789         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
4790         (tablejumpdi_nospec): New define_expand.
4791         (*tablejump<mode>_internal1): Disable for
4792         -mno-speculate-indirect-jumps.
4793         (*tablejump<mode>_internal1_nospec): New define_insn.
4794         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
4795         option.
4797 2018-01-16  Artyom Skrobov tyomitch@gmail.com
4799         * caller-save.c (insert_save): Drop unnecessary parameter.  All
4800         callers updated.
4802 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
4803             Richard Biener  <rguenth@suse.de>
4805         PR libgomp/83590
4806         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
4807         return early, inline manually is_gimple_sizepos.  Make sure if we
4808         call gimplify_expr we don't end up with a gimple constant.
4809         * tree.c (variably_modified_type_p): Don't return true for
4810         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
4811         * gimplify.h (is_gimple_sizepos): Remove.
4813 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
4815         PR tree-optimization/83857
4816         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
4817         vectorizable_live_operation for pure SLP statements.
4818         (vectorizable_live_operation): Handle PHIs.
4820 2018-01-16  Richard Biener  <rguenther@suse.de>
4822         PR tree-optimization/83867
4823         * tree-vect-stmts.c (vect_transform_stmt): Precompute
4824         nested_in_vect_loop_p since the scalar stmt may get invalidated.
4826 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
4828         PR c/83844
4829         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
4830         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
4831         If off is not INTEGER_CST, issue a may not be aligned warning
4832         rather than isn't aligned.  Use isn%'t rather than isn't.
4833         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
4834         into MULT_EXPR.
4835         <case MULT_EXPR>: Improve the case when bottom and one of the
4836         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
4837         operand, in that case check if the other operand is multiple of
4838         bottom divided by the INTEGER_CST operand.
4840 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
4842         PR target/83858
4843         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
4844         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
4845         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
4846         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
4847         * config/pa/pa.c (pa_function_arg_advance): Likewise.
4848         (pa_function_arg, pa_arg_partial_bytes): Likewise.
4849         (pa_function_arg_size): New function.
4851 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
4853         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
4854         in a separate statement.
4856 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
4858         PR tree-optimization/83847
4859         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
4860         group gathers and scatters.
4862 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
4864         PR rtl-optimization/86620
4865         * params.def (max-sched-ready-insns): Bump minimum value to 1.
4867         PR rtl-optimization/83213
4868         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
4869         to last if both are JUMP_INSNs.
4871         PR tree-optimization/83843
4872         * gimple-ssa-store-merging.c
4873         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
4874         store_immediate_info for bswap/nop orig_stores.
4876 2018-01-15  Andrew Waterman  <andrew@sifive.com>
4878         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
4879         !TARGET_MUL.
4880         <UDIV>: Increase cost if !TARGET_DIV.
4882 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
4884         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
4885         (define_attr "cr_logical_3op"): New.
4886         (cceq_ior_compare): Adjust.
4887         (cceq_ior_compare_complement): Adjust.
4888         (*cceq_rev_compare): Adjust.
4889         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
4890         (is_cracked_insn): Adjust.
4891         (insn_must_be_first_in_group): Adjust.
4892         * config/rs6000/40x.md: Adjust.
4893         * config/rs6000/440.md: Adjust.
4894         * config/rs6000/476.md: Adjust.
4895         * config/rs6000/601.md: Adjust.
4896         * config/rs6000/603.md: Adjust.
4897         * config/rs6000/6xx.md: Adjust.
4898         * config/rs6000/7450.md: Adjust.
4899         * config/rs6000/7xx.md: Adjust.
4900         * config/rs6000/8540.md: Adjust.
4901         * config/rs6000/cell.md: Adjust.
4902         * config/rs6000/e300c2c3.md: Adjust.
4903         * config/rs6000/e500mc.md: Adjust.
4904         * config/rs6000/e500mc64.md: Adjust.
4905         * config/rs6000/e5500.md: Adjust.
4906         * config/rs6000/e6500.md: Adjust.
4907         * config/rs6000/mpc.md: Adjust.
4908         * config/rs6000/power4.md: Adjust.
4909         * config/rs6000/power5.md: Adjust.
4910         * config/rs6000/power6.md: Adjust.
4911         * config/rs6000/power7.md: Adjust.
4912         * config/rs6000/power8.md: Adjust.
4913         * config/rs6000/power9.md: Adjust.
4914         * config/rs6000/rs64.md: Adjust.
4915         * config/rs6000/titan.md: Adjust.
4917 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
4919         * config/i386/predicates.md (indirect_branch_operand): Rewrite
4920         ix86_indirect_branch_register logic.
4922 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
4924         * config/i386/constraints.md (Bs): Update
4925         ix86_indirect_branch_register check.  Don't check
4926         ix86_indirect_branch_register with GOT_memory_operand.
4927         (Bw): Likewise.
4928         * config/i386/predicates.md (GOT_memory_operand): Don't check
4929         ix86_indirect_branch_register here.
4930         (GOT32_symbol_operand): Likewise.
4932 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
4934         * config/i386/predicates.md (constant_call_address_operand):
4935         Rewrite ix86_indirect_branch_register logic.
4936         (sibcall_insn_operand): Likewise.
4938 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
4940         * config/i386/constraints.md (Bs): Replace
4941         ix86_indirect_branch_thunk_register with
4942         ix86_indirect_branch_register.
4943         (Bw): Likewise.
4944         * config/i386/i386.md (indirect_jump): Likewise.
4945         (tablejump): Likewise.
4946         (*sibcall_memory): Likewise.
4947         (*sibcall_value_memory): Likewise.
4948         Peepholes of indirect call and jump via memory: Likewise.
4949         * config/i386/i386.opt: Likewise.
4950         * config/i386/predicates.md (indirect_branch_operand): Likewise.
4951         (GOT_memory_operand): Likewise.
4952         (call_insn_operand): Likewise.
4953         (sibcall_insn_operand): Likewise.
4954         (GOT32_symbol_operand): Likewise.
4956 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
4958         PR middle-end/83837
4959         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
4960         type rather than type addr's type points to.
4961         (expand_omp_atomic_mutex): Likewise.
4962         (expand_omp_atomic): Likewise.
4964 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
4966         PR target/83839
4967         * config/i386/i386.c (output_indirect_thunk_function): Use
4968         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
4969         for  __x86_return_thunk.
4971 2018-01-15  Richard Biener  <rguenther@suse.de>
4973         PR middle-end/83850
4974         * expmed.c (extract_bit_field_1): Fix typo.
4976 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4978         PR target/83687
4979         * config/arm/iterators.md (VF): New mode iterator.
4980         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
4981         Remove integer-related logic from pattern.
4982         (neon_vabd<mode>_3): Likewise.
4984 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
4986         PR middle-end/82694
4987         * common.opt (fstrict-overflow): No longer an alias.
4988         (fwrapv-pointer): New option.
4989         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
4990         also for pointer types based on flag_wrapv_pointer.
4991         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
4992         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
4993         opts->x_flag_wrapv got set.
4994         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
4995         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
4996         POINTER_TYPE_OVERFLOW_UNDEFINED.
4997         * match.pd: Likewise in address comparison pattern.
4998         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
5000 2018-01-15  Richard Biener  <rguenther@suse.de>
5002         PR lto/83804
5003         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
5004         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
5005         Reset type names to their identifier if their TYPE_DECL doesn't
5006         have linkage (and thus is used for ODR and devirt).
5007         (save_debug_info_for_decl): Remove.
5008         (save_debug_info_for_type): Likewise.
5009         (add_tree_to_fld_list): Adjust.
5010         * tree-pretty-print.c (dump_generic_node): Make dumping of
5011         type names more robust.
5013 2018-01-15  Richard Biener  <rguenther@suse.de>
5015         * BASE-VER: Bump to 8.0.1.
5017 2018-01-14  Martin Sebor  <msebor@redhat.com>
5019         PR other/83508
5020         * builtins.c (check_access): Avoid warning when the no-warning bit
5021         is set.
5023 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
5025         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
5026         * ira-color (allocno_hard_regs_compare): Likewise.
5028 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
5030         PR target/83013
5031         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
5032         Use .pushsection/.popsection.
5034 2018-01-14  Martin Sebor  <msebor@redhat.com>
5036         PR c++/81327
5037         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
5039 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
5041         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
5042         entry from extra_headers.
5043         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
5044         extra_headers, make the list bitwise identical to the i?86-*-* one.
5046 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
5048         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
5049         -mcmodel=large with -mindirect-branch=thunk,
5050         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
5051         -mfunction-return=thunk-extern.
5052         * doc/invoke.texi: Document -mcmodel=large is incompatible with
5053         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
5054         -mfunction-return=thunk and -mfunction-return=thunk-extern.
5056 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
5058         * config/i386/i386.c (print_reg): Print the name of the full
5059         integer register without '%'.
5060         (ix86_print_operand): Handle 'V'.
5061          * doc/extend.texi: Document 'V' modifier.
5063 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
5065         * config/i386/constraints.md (Bs): Disallow memory operand for
5066         -mindirect-branch-register.
5067         (Bw): Likewise.
5068         * config/i386/predicates.md (indirect_branch_operand): Likewise.
5069         (GOT_memory_operand): Likewise.
5070         (call_insn_operand): Likewise.
5071         (sibcall_insn_operand): Likewise.
5072         (GOT32_symbol_operand): Likewise.
5073         * config/i386/i386.md (indirect_jump): Call convert_memory_address
5074         for -mindirect-branch-register.
5075         (tablejump): Likewise.
5076         (*sibcall_memory): Likewise.
5077         (*sibcall_value_memory): Likewise.
5078         Disallow peepholes of indirect call and jump via memory for
5079         -mindirect-branch-register.
5080         (*call_pop): Replace m with Bw.
5081         (*call_value_pop): Likewise.
5082         (*sibcall_pop_memory): Replace m with Bs.
5083         * config/i386/i386.opt (mindirect-branch-register): New option.
5084         * doc/invoke.texi: Document -mindirect-branch-register option.
5086 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
5088         * config/i386/i386-protos.h (ix86_output_function_return): New.
5089         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
5090         set function_return_type.
5091         (indirect_thunk_name): Add ret_p to indicate thunk for function
5092         return.
5093         (output_indirect_thunk_function): Pass false to
5094         indirect_thunk_name.
5095         (ix86_output_indirect_branch_via_reg): Likewise.
5096         (ix86_output_indirect_branch_via_push): Likewise.
5097         (output_indirect_thunk_function): Create alias for function
5098         return thunk if regno < 0.
5099         (ix86_output_function_return): New function.
5100         (ix86_handle_fndecl_attribute): Handle function_return.
5101         (ix86_attribute_table): Add function_return.
5102         * config/i386/i386.h (machine_function): Add
5103         function_return_type.
5104         * config/i386/i386.md (simple_return_internal): Use
5105         ix86_output_function_return.
5106         (simple_return_internal_long): Likewise.
5107         * config/i386/i386.opt (mfunction-return=): New option.
5108         (indirect_branch): Mention -mfunction-return=.
5109         * doc/extend.texi: Document function_return function attribute.
5110         * doc/invoke.texi: Document -mfunction-return= option.
5112 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
5114         * config/i386/i386-opts.h (indirect_branch): New.
5115         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
5116         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
5117         with local indirect jump when converting indirect call and jump.
5118         (ix86_set_indirect_branch_type): New.
5119         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
5120         (indirectlabelno): New.
5121         (indirect_thunk_needed): Likewise.
5122         (indirect_thunk_bnd_needed): Likewise.
5123         (indirect_thunks_used): Likewise.
5124         (indirect_thunks_bnd_used): Likewise.
5125         (INDIRECT_LABEL): Likewise.
5126         (indirect_thunk_name): Likewise.
5127         (output_indirect_thunk): Likewise.
5128         (output_indirect_thunk_function): Likewise.
5129         (ix86_output_indirect_branch_via_reg): Likewise.
5130         (ix86_output_indirect_branch_via_push): Likewise.
5131         (ix86_output_indirect_branch): Likewise.
5132         (ix86_output_indirect_jmp): Likewise.
5133         (ix86_code_end): Call output_indirect_thunk_function if needed.
5134         (ix86_output_call_insn): Call ix86_output_indirect_branch if
5135         needed.
5136         (ix86_handle_fndecl_attribute): Handle indirect_branch.
5137         (ix86_attribute_table): Add indirect_branch.
5138         * config/i386/i386.h (machine_function): Add indirect_branch_type
5139         and has_local_indirect_jump.
5140         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
5141         to true.
5142         (tablejump): Likewise.
5143         (*indirect_jump): Use ix86_output_indirect_jmp.
5144         (*tablejump_1): Likewise.
5145         (simple_return_indirect_internal): Likewise.
5146         * config/i386/i386.opt (mindirect-branch=): New option.
5147         (indirect_branch): New.
5148         (keep): Likewise.
5149         (thunk): Likewise.
5150         (thunk-inline): Likewise.
5151         (thunk-extern): Likewise.
5152         * doc/extend.texi: Document indirect_branch function attribute.
5153         * doc/invoke.texi: Document -mindirect-branch= option.
5155 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
5157         PR ipa/83051
5158         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
5160 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
5162         * ipa-inline.c (want_inline_small_function_p): Return false if
5163         inlining has already failed with CIF_FINAL_ERROR.
5164         (update_caller_keys): Call want_inline_small_function_p before
5165         can_inline_edge_p.
5166         (update_callee_keys): Likewise.
5168 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5170         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
5171         New function.
5172         (rs6000_quadword_masked_address_p): Likewise.
5173         (quad_aligned_load_p): Likewise.
5174         (quad_aligned_store_p): Likewise.
5175         (const_load_sequence_p): Add comment to describe the outer-most loop.
5176         (mimic_memory_attributes_and_flags): New function.
5177         (rs6000_gen_stvx): Likewise.
5178         (replace_swapped_aligned_store): Likewise.
5179         (rs6000_gen_lvx): Likewise.
5180         (replace_swapped_aligned_load): Likewise.
5181         (replace_swapped_load_constant): Capitalize argument name in
5182         comment describing this function.
5183         (rs6000_analyze_swaps): Add a third pass to search for vector loads
5184         and stores that access quad-word aligned addresses and replace
5185         with stvx or lvx instructions when appropriate.
5186         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
5187         New function prototype.
5188         (rs6000_quadword_masked_address_p): Likewise.
5189         (rs6000_gen_lvx): Likewise.
5190         (rs6000_gen_stvx): Likewise.
5191         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
5192         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
5193         when memory address is aligned.
5194         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
5195         this split to select lvx instruction when memory address is aligned.
5196         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
5197         instruction when memory address is aligned.
5198         (*vsx_le_perm_load_v16qi): Likewise.
5199         (four unnamed splitters): Modify to select the stvx instruction
5200         when memory is aligned.
5202 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
5204         * predict.c (determine_unlikely_bbs): Handle correctly BBs
5205         which appears in the queue multiple times.
5207 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5208             Alan Hayward  <alan.hayward@arm.com>
5209             David Sherwood  <david.sherwood@arm.com>
5211         * tree-vectorizer.h (vec_lower_bound): New structure.
5212         (_loop_vec_info): Add check_nonzero and lower_bounds.
5213         (LOOP_VINFO_CHECK_NONZERO): New macro.
5214         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
5215         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
5216         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
5217         fields.  Make seg_len the distance travelled, not including the
5218         access size.
5219         (dr_direction_indicator): Declare.
5220         (dr_zero_step_indicator): Likewise.
5221         (dr_known_forward_stride_p): Likewise.
5222         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
5223         tree-ssanames.h.
5224         (runtime_alias_check_p): Allow runtime alias checks with
5225         variable strides.
5226         (operator ==): Compare access_size and align.
5227         (prune_runtime_alias_test_list): Rework for new distinction between
5228         the access_size and seg_len.
5229         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
5230         segment lengths.
5231         (get_segment_min_max): New function.
5232         (create_intersect_range_checks): Use it.
5233         (dr_step_indicator): New function.
5234         (dr_direction_indicator): Likewise.
5235         (dr_zero_step_indicator): Likewise.
5236         (dr_known_forward_stride_p): Likewise.
5237         * tree-loop-distribution.c (data_ref_segment_size): Return
5238         DR_STEP * (niters - 1).
5239         (compute_alias_check_pairs): Update call to the dr_with_seg_len
5240         constructor.
5241         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
5242         (vect_preserves_scalar_order_p): New function, split out from...
5243         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
5244         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
5245         (vect_vfa_access_size): New function.
5246         (vect_vfa_align): Likewise.
5247         (vect_compile_time_alias): Take access_size_a and access_b arguments.
5248         (dump_lower_bound): New function.
5249         (vect_check_lower_bound): Likewise.
5250         (vect_small_gap_p): Likewise.
5251         (vectorizable_with_step_bound_p): Likewise.
5252         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
5253         depencies if the vectorization factor is 1.  Convert the checks
5254         for nonzero steps into checks on the bounds of DR_STEP.  Try using
5255         a bunds check for variable steps if the minimum required step is
5256         relatively small. Update calls to the dr_with_seg_len
5257         constructor and to vect_compile_time_alias.
5258         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
5259         function.
5260         (vect_loop_versioning): Call it.
5261         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
5262         when retrying.
5263         (vect_estimate_min_profitable_iters): Account for any bounds checks.
5265 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5266             Alan Hayward  <alan.hayward@arm.com>
5267             David Sherwood  <david.sherwood@arm.com>
5269         * doc/sourcebuild.texi (vect_scatter_store): Document.
5270         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
5271         optabs.
5272         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
5273         Document.
5274         * genopinit.c (main): Add supports_vec_scatter_store and
5275         supports_vec_scatter_store_cached to target_optabs.
5276         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
5277         IFN_MASK_SCATTER_STORE.
5278         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
5279         functions.
5280         * internal-fn.h (internal_store_fn_p): Declare.
5281         (internal_fn_stored_value_index): Likewise.
5282         * internal-fn.c (scatter_store_direct): New macro.
5283         (expand_scatter_store_optab_fn): New function.
5284         (direct_scatter_store_optab_supported_p): New macro.
5285         (internal_store_fn_p): New function.
5286         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
5287         IFN_MASK_SCATTER_STORE.
5288         (internal_fn_mask_index): Likewise.
5289         (internal_fn_stored_value_index): New function.
5290         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
5291         for scatter stores.
5292         * optabs-query.h (supports_vec_scatter_store_p): Declare.
5293         * optabs-query.c (supports_vec_scatter_store_p): New function.
5294         * tree-vectorizer.h (vect_get_store_rhs): Declare.
5295         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
5296         true for scatter stores.
5297         (vect_gather_scatter_fn_p): Handle scatter stores too.
5298         (vect_check_gather_scatter): Consider using scatter stores if
5299         supports_vec_scatter_store_p.
5300         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
5301         scatter stores too.
5302         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
5303         internal_fn_stored_value_index.
5304         (check_load_store_masking): Handle scatter stores too.
5305         (vect_get_store_rhs): Make public.
5306         (vectorizable_call): Use internal_store_fn_p.
5307         (vectorizable_store): Handle scatter store internal functions.
5308         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
5309         when deciding whether the end of the group has been reached.
5310         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
5311         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
5312         (mask_scatter_store<mode>): New insns.
5314 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5315             Alan Hayward  <alan.hayward@arm.com>
5316             David Sherwood  <david.sherwood@arm.com>
5318         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
5319         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
5320         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
5321         function.
5322         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
5323         Use vect_truncate_gather_scatter_offset if we can't treat the
5324         operation as a normal gather load or scatter store.
5325         (get_group_load_store_type): Take the gather_scatter_info
5326         as argument.  Try using a gather load or scatter store for
5327         single-element groups.
5328         (get_load_store_type): Update calls to get_group_load_store_type
5329         and vect_use_strided_gather_scatters_p.
5331 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5332             Alan Hayward  <alan.hayward@arm.com>
5333             David Sherwood  <david.sherwood@arm.com>
5335         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
5336         optional tree argument.
5337         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
5338         null target hooks.
5339         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
5340         but continue to use the current value as a fallback.
5341         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
5342         to compare the updates.
5343         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
5344         (get_load_store_type): Use it when handling a strided access.
5345         (vect_get_strided_load_store_ops): New function.
5346         (vect_get_data_ptr_increment): Likewise.
5347         (vectorizable_load): Handle strided gather loads.  Always pass
5348         a step to vect_create_data_ref_ptr and bump_vector_ptr.
5350 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5351             Alan Hayward  <alan.hayward@arm.com>
5352             David Sherwood  <david.sherwood@arm.com>
5354         * doc/md.texi (gather_load@var{m}): Document.
5355         (mask_gather_load@var{m}): Likewise.
5356         * genopinit.c (main): Add supports_vec_gather_load and
5357         supports_vec_gather_load_cached to target_optabs.
5358         * optabs-tree.c (init_tree_optimization_optabs): Use
5359         ggc_cleared_alloc to allocate target_optabs.
5360         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
5361         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
5362         functions.
5363         * internal-fn.h (internal_load_fn_p): Declare.
5364         (internal_gather_scatter_fn_p): Likewise.
5365         (internal_fn_mask_index): Likewise.
5366         (internal_gather_scatter_fn_supported_p): Likewise.
5367         * internal-fn.c (gather_load_direct): New macro.
5368         (expand_gather_load_optab_fn): New function.
5369         (direct_gather_load_optab_supported_p): New macro.
5370         (direct_internal_fn_optab): New function.
5371         (internal_load_fn_p): Likewise.
5372         (internal_gather_scatter_fn_p): Likewise.
5373         (internal_fn_mask_index): Likewise.
5374         (internal_gather_scatter_fn_supported_p): Likewise.
5375         * optabs-query.c (supports_at_least_one_mode_p): New function.
5376         (supports_vec_gather_load_p): Likewise.
5377         * optabs-query.h (supports_vec_gather_load_p): Declare.
5378         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
5379         and memory_type field.
5380         (NUM_PATTERNS): Bump to 15.
5381         * tree-vect-data-refs.c: Include internal-fn.h.
5382         (vect_gather_scatter_fn_p): New function.
5383         (vect_describe_gather_scatter_call): Likewise.
5384         (vect_check_gather_scatter): Try using internal functions for
5385         gather loads.  Recognize existing calls to a gather load function.
5386         (vect_analyze_data_refs): Consider using gather loads if
5387         supports_vec_gather_load_p.
5388         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
5389         (vect_get_gather_scatter_offset_type): Likewise.
5390         (vect_convert_mask_for_vectype): Likewise.
5391         (vect_add_conversion_to_patterm): Likewise.
5392         (vect_try_gather_scatter_pattern): Likewise.
5393         (vect_recog_gather_scatter_pattern): New pattern recognizer.
5394         (vect_vect_recog_func_ptrs): Add it.
5395         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
5396         internal_fn_mask_index and internal_gather_scatter_fn_p.
5397         (check_load_store_masking): Take the gather_scatter_info as an
5398         argument and handle gather loads.
5399         (vect_get_gather_scatter_ops): New function.
5400         (vectorizable_call): Check internal_load_fn_p.
5401         (vectorizable_load): Likewise.  Handle gather load internal
5402         functions.
5403         (vectorizable_store): Update call to check_load_store_masking.
5404         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
5405         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
5406         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
5407         (aarch64_gather_scale_operand_d): New predicates.
5408         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
5409         (mask_gather_load<mode>): New insns.
5411 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5412             Alan Hayward  <alan.hayward@arm.com>
5413             David Sherwood  <david.sherwood@arm.com>
5415         * optabs.def (fold_left_plus_optab): New optab.
5416         * doc/md.texi (fold_left_plus_@var{m}): Document.
5417         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
5418         * internal-fn.c (fold_left_direct): Define.
5419         (expand_fold_left_optab_fn): Likewise.
5420         (direct_fold_left_optab_supported_p): Likewise.
5421         * fold-const-call.c (fold_const_fold_left): New function.
5422         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
5423         * tree-parloops.c (valid_reduction_p): New function.
5424         (gather_scalar_reductions): Use it.
5425         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
5426         (vect_finish_replace_stmt): Declare.
5427         * tree-vect-loop.c (fold_left_reduction_fn): New function.
5428         (needs_fold_left_reduction_p): New function, split out from...
5429         (vect_is_simple_reduction): ...here.  Accept reductions that
5430         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
5431         (vect_force_simple_reduction): Also store the reduction type in
5432         the assignment's STMT_VINFO_REDUC_TYPE.
5433         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
5434         (merge_with_identity): New function.
5435         (vect_expand_fold_left): Likewise.
5436         (vectorize_fold_left_reduction): Likewise.
5437         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
5438         scalar phi in place for it.  Check for target support and reject
5439         cases that would reassociate the operation.  Defer the transform
5440         phase to vectorize_fold_left_reduction.
5441         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
5442         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
5443         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
5445 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5447         * tree-if-conv.c (predicate_mem_writes): Remove redundant
5448         call to ifc_temp_var.
5450 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5451             Alan Hayward  <alan.hayward@arm.com>
5452             David Sherwood  <david.sherwood@arm.com>
5454         * target.def (legitimize_address_displacement): Take the original
5455         offset as a poly_int.
5456         * targhooks.h (default_legitimize_address_displacement): Update
5457         accordingly.
5458         * targhooks.c (default_legitimize_address_displacement): Likewise.
5459         * doc/tm.texi: Regenerate.
5460         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
5461         as an argument, moving assert of ad->disp == ad->disp_term to...
5462         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
5463         Try calling targetm.legitimize_address_displacement before expanding
5464         the address rather than afterwards, and adjust for the new interface.
5465         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
5466         Match the new hook interface.  Handle SVE addresses.
5467         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
5468         new hook interface.
5470 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5472         * Makefile.in (OBJS): Add early-remat.o.
5473         * target.def (select_early_remat_modes): New hook.
5474         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
5475         * doc/tm.texi: Regenerate.
5476         * targhooks.h (default_select_early_remat_modes): Declare.
5477         * targhooks.c (default_select_early_remat_modes): New function.
5478         * timevar.def (TV_EARLY_REMAT): New timevar.
5479         * passes.def (pass_early_remat): New pass.
5480         * tree-pass.h (make_pass_early_remat): Declare.
5481         * early-remat.c: New file.
5482         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
5483         function.
5484         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
5486 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5487             Alan Hayward  <alan.hayward@arm.com>
5488             David Sherwood  <david.sherwood@arm.com>
5490         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
5491         vfm1 with a bound_epilog parameter.
5492         (vect_do_peeling): Update calls accordingly, and move the prologue
5493         call earlier in the function.  Treat the base bound_epilog as 0 for
5494         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
5495         this base when peeling for gaps.
5496         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
5497         with fully-masked loops.
5498         (vect_estimate_min_profitable_iters): Handle the single peeled
5499         iteration in that case.
5501 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5502             Alan Hayward  <alan.hayward@arm.com>
5503             David Sherwood  <david.sherwood@arm.com>
5505         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
5506         single-element interleaving even if the size is not a power of 2.
5507         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
5508         accesses for single-element interleaving if the group size is
5509         not a power of 2.
5511 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5512             Alan Hayward  <alan.hayward@arm.com>
5513             David Sherwood  <david.sherwood@arm.com>
5515         * doc/md.texi (fold_extract_last_@var{m}): Document.
5516         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
5517         * optabs.def (fold_extract_last_optab): New optab.
5518         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
5519         * internal-fn.c (fold_extract_direct): New macro.
5520         (expand_fold_extract_optab_fn): Likewise.
5521         (direct_fold_extract_optab_supported_p): Likewise.
5522         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
5523         * tree-vect-loop.c (vect_model_reduction_cost): Handle
5524         EXTRACT_LAST_REDUCTION.
5525         (get_initial_def_for_reduction): Do not create an initial vector
5526         for EXTRACT_LAST_REDUCTION reductions.
5527         (vectorizable_reduction): Leave the scalar phi in place for
5528         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
5529         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
5530         epilogue code for EXTRACT_LAST_REDUCTION and defer the
5531         transform phase to vectorizable_condition.
5532         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
5533         split out from...
5534         (vect_finish_stmt_generation): ...here.
5535         (vect_finish_replace_stmt): New function.
5536         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
5537         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
5538         pattern.
5539         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
5541 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5542             Alan Hayward  <alan.hayward@arm.com>
5543             David Sherwood  <david.sherwood@arm.com>
5545         * doc/md.texi (extract_last_@var{m}): Document.
5546         * optabs.def (extract_last_optab): New optab.
5547         * internal-fn.def (EXTRACT_LAST): New internal function.
5548         * internal-fn.c (cond_unary_direct): New macro.
5549         (expand_cond_unary_optab_fn): Likewise.
5550         (direct_cond_unary_optab_supported_p): Likewise.
5551         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
5552         loops using EXTRACT_LAST.
5553         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
5554         (extract_last_<mode>): ...this optab.
5555         (vec_extract<mode><Vel>): Update accordingly.
5557 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5558             Alan Hayward  <alan.hayward@arm.com>
5559             David Sherwood  <david.sherwood@arm.com>
5561         * target.def (empty_mask_is_expensive): New hook.
5562         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
5563         * doc/tm.texi: Regenerate.
5564         * targhooks.h (default_empty_mask_is_expensive): Declare.
5565         * targhooks.c (default_empty_mask_is_expensive): New function.
5566         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
5567         if the target says that empty masks are expensive.
5568         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
5569         New function.
5570         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
5572 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5573             Alan Hayward  <alan.hayward@arm.com>
5574             David Sherwood  <david.sherwood@arm.com>
5576         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
5577         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
5578         (vect_use_loop_mask_for_alignment_p): New function.
5579         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
5580         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
5581         niters_skip argument.  Make sure that the first niters_skip elements
5582         of the first iteration are inactive.
5583         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
5584         Update call to vect_set_loop_masks_directly.
5585         (get_misalign_in_elems): New function, split out from...
5586         (vect_gen_prolog_loop_niters): ...here.
5587         (vect_update_init_of_dr): Take a code argument that specifies whether
5588         the adjustment should be added or subtracted.
5589         (vect_update_init_of_drs): Likewise.
5590         (vect_prepare_for_masked_peels): New function.
5591         (vect_do_peeling): Skip prologue peeling if we're using a mask
5592         instead.  Update call to vect_update_inits_of_drs.
5593         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
5594         mask_skip_niters.
5595         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
5596         alignment.  Do not include the number of peeled iterations in
5597         the minimum threshold in that case.
5598         (vectorizable_induction): Adjust the start value down by
5599         LOOP_VINFO_MASK_SKIP_NITERS iterations.
5600         (vect_transform_loop): Call vect_prepare_for_masked_peels.
5601         Take the number of skipped iterations into account when calculating
5602         the loop bounds.
5603         * tree-vect-stmts.c (vect_gen_while_not): New function.
5605 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5606             Alan Hayward  <alan.hayward@arm.com>
5607             David Sherwood  <david.sherwood@arm.com>
5609         * doc/sourcebuild.texi (vect_fully_masked): Document.
5610         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
5611         default value to 0.
5612         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
5613         split out from...
5614         (vect_analyze_loop_2): ...here. Don't check the vectorization
5615         factor against the number of loop iterations if the loop is
5616         fully-masked.
5618 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5619             Alan Hayward  <alan.hayward@arm.com>
5620             David Sherwood  <david.sherwood@arm.com>
5622         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
5623         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
5624         (dump_groups): Update accordingly.
5625         (iv_use::mem_type): New member variable.
5626         (address_p): New function.
5627         (record_use): Add a mem_type argument and initialize the new
5628         mem_type field.
5629         (record_group_use): Add a mem_type argument.  Use address_p.
5630         Remove obsolete null checks of base_object.  Update call to record_use.
5631         (find_interesting_uses_op): Update call to record_group_use.
5632         (find_interesting_uses_cond): Likewise.
5633         (find_interesting_uses_address): Likewise.
5634         (get_mem_type_for_internal_fn): New function.
5635         (find_address_like_use): Likewise.
5636         (find_interesting_uses_stmt): Try find_address_like_use before
5637         calling find_interesting_uses_op.
5638         (addr_offset_valid_p): Use the iv mem_type field as the type
5639         of the addressed memory.
5640         (add_autoinc_candidates): Likewise.
5641         (get_address_cost): Likewise.
5642         (split_small_address_groups_p): Use address_p.
5643         (split_address_groups): Likewise.
5644         (add_iv_candidate_for_use): Likewise.
5645         (autoinc_possible_for_pair): Likewise.
5646         (rewrite_groups): Likewise.
5647         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
5648         (determine_group_iv_cost): Update after split of USE_ADDRESS.
5649         (get_alias_ptr_type_for_ptr_address): New function.
5650         (rewrite_use_address): Rewrite address uses in calls that were
5651         identified by find_address_like_use.
5653 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5654             Alan Hayward  <alan.hayward@arm.com>
5655             David Sherwood  <david.sherwood@arm.com>
5657         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
5658         TARGET_MEM_REFs.
5659         * gimple-expr.h (is_gimple_addressable: Likewise.
5660         * gimple-expr.c (is_gimple_address): Likewise.
5661         * internal-fn.c (expand_call_mem_ref): New function.
5662         (expand_mask_load_optab_fn): Use it.
5663         (expand_mask_store_optab_fn): Likewise.
5665 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5666             Alan Hayward  <alan.hayward@arm.com>
5667             David Sherwood  <david.sherwood@arm.com>
5669         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
5670         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
5671         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
5672         (cond_umax@var{mode}): Document.
5673         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
5674         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
5675         (cond_umin_optab, cond_umax_optab): New optabs.
5676         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
5677         (COND_IOR, COND_XOR): New internal functions.
5678         * internal-fn.h (get_conditional_internal_fn): Declare.
5679         * internal-fn.c (cond_binary_direct): New macro.
5680         (expand_cond_binary_optab_fn): Likewise.
5681         (direct_cond_binary_optab_supported_p): Likewise.
5682         (get_conditional_internal_fn): New function.
5683         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
5684         Cope with reduction statements that are vectorized as calls rather
5685         than assignments.
5686         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
5687         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
5688         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
5689         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
5690         (UNSPEC_COND_EOR): New unspecs.
5691         (optab): Add mappings for them.
5692         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
5693         (sve_int_op, sve_fp_op): New int attributes.
5695 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5696             Alan Hayward  <alan.hayward@arm.com>
5697             David Sherwood  <david.sherwood@arm.com>
5699         * optabs.def (while_ult_optab): New optab.
5700         * doc/md.texi (while_ult@var{m}@var{n}): Document.
5701         * internal-fn.def (WHILE_ULT): New internal function.
5702         * internal-fn.h (direct_internal_fn_supported_p): New override
5703         that takes two types as argument.
5704         * internal-fn.c (while_direct): New macro.
5705         (expand_while_optab_fn): New function.
5706         (convert_optab_supported_p): Likewise.
5707         (direct_while_optab_supported_p): New macro.
5708         * wide-int.h (wi::udiv_ceil): New function.
5709         * tree-vectorizer.h (rgroup_masks): New structure.
5710         (vec_loop_masks): New typedef.
5711         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
5712         and fully_masked_p.
5713         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
5714         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
5715         (vect_max_vf): New function.
5716         (slpeel_make_loop_iterate_ntimes): Delete.
5717         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
5718         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
5719         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
5720         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
5721         internal-fn.h, stor-layout.h and optabs-query.h.
5722         (vect_set_loop_mask): New function.
5723         (add_preheader_seq): Likewise.
5724         (add_header_seq): Likewise.
5725         (interleave_supported_p): Likewise.
5726         (vect_maybe_permute_loop_masks): Likewise.
5727         (vect_set_loop_masks_directly): Likewise.
5728         (vect_set_loop_condition_masked): Likewise.
5729         (vect_set_loop_condition_unmasked): New function, split out from
5730         slpeel_make_loop_iterate_ntimes.
5731         (slpeel_make_loop_iterate_ntimes): Rename to..
5732         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
5733         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
5734         (vect_do_peeling): Update call accordingly.
5735         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
5736         loops.
5737         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
5738         mask_compare_type, can_fully_mask_p and fully_masked_p.
5739         (release_vec_loop_masks): New function.
5740         (_loop_vec_info): Use it to free the loop masks.
5741         (can_produce_all_loop_masks_p): New function.
5742         (vect_get_max_nscalars_per_iter): Likewise.
5743         (vect_verify_full_masking): Likewise.
5744         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
5745         retries, and free the mask rgroups before retrying.  Check loop-wide
5746         reasons for disallowing fully-masked loops.  Make the final decision
5747         about whether use a fully-masked loop or not.
5748         (vect_estimate_min_profitable_iters): Do not assume that peeling
5749         for the number of iterations will be needed for fully-masked loops.
5750         (vectorizable_reduction): Disable fully-masked loops.
5751         (vectorizable_live_operation): Likewise.
5752         (vect_halve_mask_nunits): New function.
5753         (vect_double_mask_nunits): Likewise.
5754         (vect_record_loop_mask): Likewise.
5755         (vect_get_loop_mask): Likewise.
5756         (vect_transform_loop): Handle the case in which the final loop
5757         iteration might handle a partial vector.  Call vect_set_loop_condition
5758         instead of slpeel_make_loop_iterate_ntimes.
5759         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
5760         (check_load_store_masking): New function.
5761         (prepare_load_store_mask): Likewise.
5762         (vectorizable_store): Handle fully-masked loops.
5763         (vectorizable_load): Likewise.
5764         (supportable_widening_operation): Use vect_halve_mask_nunits for
5765         booleans.
5766         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
5767         (vect_gen_while): New function.
5768         * config/aarch64/aarch64.md (umax<mode>3): New expander.
5769         (aarch64_uqdec<mode>): New insn.
5771 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5772             Alan Hayward  <alan.hayward@arm.com>
5773             David Sherwood  <david.sherwood@arm.com>
5775         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
5776         (reduc_xor_scal_optab): New optabs.
5777         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
5778         (reduc_xor_scal_@var{m}): Document.
5779         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
5780         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
5781         internal functions.
5782         * fold-const-call.c (fold_const_call): Handle them.
5783         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
5784         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
5785         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
5786         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
5787         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
5788         (UNSPEC_XORV): New unspecs.
5789         (optab): Add entries for them.
5790         (BITWISEV): New int iterator.
5791         (bit_reduc_op): New int attributes.
5793 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5794             Alan Hayward  <alan.hayward@arm.com>
5795             David Sherwood  <david.sherwood@arm.com>
5797         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
5798         * internal-fn.def (VEC_SHL_INSERT): New internal function.
5799         * optabs.def (vec_shl_insert_optab): New optab.
5800         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
5801         (duplicate_and_interleave): Likewise.
5802         * tree-vect-loop.c: Include internal-fn.h.
5803         (neutral_op_for_slp_reduction): New function, split out from
5804         get_initial_defs_for_reduction.
5805         (get_initial_def_for_reduction): Handle option 2 for variable-length
5806         vectors by loading the neutral value into a vector and then shifting
5807         the initial value into element 0.
5808         (get_initial_defs_for_reduction): Replace the code argument with
5809         the neutral value calculated by neutral_op_for_slp_reduction.
5810         Use gimple_build_vector for constant-length vectors.
5811         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
5812         but the first group_size elements have a neutral value.
5813         Use duplicate_and_interleave otherwise.
5814         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
5815         Update call to get_initial_defs_for_reduction.  Handle SLP
5816         reductions for variable-length vectors by creating one vector
5817         result for each scalar result, with the elements associated
5818         with other scalar results stubbed out with the neutral value.
5819         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
5820         Require IFN_VEC_SHL_INSERT for double reductions on
5821         variable-length vectors, or SLP reductions that have
5822         a neutral value.  Require can_duplicate_and_interleave_p
5823         support for variable-length unchained SLP reductions if there
5824         is no neutral value, such as for MIN/MAX reductions.  Also require
5825         the number of vector elements to be a multiple of the number of
5826         SLP statements when doing variable-length unchained SLP reductions.
5827         Update call to vect_create_epilog_for_reduction.
5828         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
5829         and remove initial values.
5830         (duplicate_and_interleave): Make public.
5831         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
5832         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
5834 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5835             Alan Hayward  <alan.hayward@arm.com>
5836             David Sherwood  <david.sherwood@arm.com>
5838         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
5839         (can_duplicate_and_interleave_p): New function.
5840         (vect_get_and_check_slp_defs): Take the vector of statements
5841         rather than just the current one.  Remove excess parentheses.
5842         Restriction rejectinon of vect_constant_def and vect_external_def
5843         for variable-length vectors to boolean types, or types for which
5844         can_duplicate_and_interleave_p is false.
5845         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
5846         (duplicate_and_interleave): New function.
5847         (vect_get_constant_vectors): Use gimple_build_vector for
5848         constant-length vectors and suitable variable-length constant
5849         vectors.  Use duplicate_and_interleave for other variable-length
5850         vectors.  Don't defer the update when inserting new statements.
5852 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5853             Alan Hayward  <alan.hayward@arm.com>
5854             David Sherwood  <david.sherwood@arm.com>
5856         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
5857         min_profitable_iters doesn't go negative.
5859 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5860             Alan Hayward  <alan.hayward@arm.com>
5861             David Sherwood  <david.sherwood@arm.com>
5863         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
5864         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
5865         * optabs.def (vec_mask_load_lanes_optab): New optab.
5866         (vec_mask_store_lanes_optab): Likewise.
5867         * internal-fn.def (MASK_LOAD_LANES): New internal function.
5868         (MASK_STORE_LANES): Likewise.
5869         * internal-fn.c (mask_load_lanes_direct): New macro.
5870         (mask_store_lanes_direct): Likewise.
5871         (expand_mask_load_optab_fn): Handle masked operations.
5872         (expand_mask_load_lanes_optab_fn): New macro.
5873         (expand_mask_store_optab_fn): Handle masked operations.
5874         (expand_mask_store_lanes_optab_fn): New macro.
5875         (direct_mask_load_lanes_optab_supported_p): Likewise.
5876         (direct_mask_store_lanes_optab_supported_p): Likewise.
5877         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
5878         parameter.
5879         (vect_load_lanes_supported): Likewise.
5880         * tree-vect-data-refs.c (strip_conversion): New function.
5881         (can_group_stmts_p): Likewise.
5882         (vect_analyze_data_ref_accesses): Use it instead of checking
5883         for a pair of assignments.
5884         (vect_store_lanes_supported): Take a masked_p parameter.
5885         (vect_load_lanes_supported): Likewise.
5886         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
5887         vect_store_lanes_supported and vect_load_lanes_supported.
5888         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
5889         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
5890         parameter.  Don't allow gaps for masked accesses.
5891         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
5892         and vect_load_lanes_supported.
5893         (get_load_store_type): Take a masked_p parameter and update
5894         call to get_group_load_store_type.
5895         (vectorizable_store): Update call to get_load_store_type.
5896         Handle IFN_MASK_STORE_LANES.
5897         (vectorizable_load): Update call to get_load_store_type.
5898         Handle IFN_MASK_LOAD_LANES.
5900 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5901             Alan Hayward  <alan.hayward@arm.com>
5902             David Sherwood  <david.sherwood@arm.com>
5904         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
5905         modes for SVE.
5906         * config/aarch64/aarch64-protos.h
5907         (aarch64_sve_struct_memory_operand_p): Declare.
5908         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
5909         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
5910         (VPRED, vpred): Handle SVE structure modes.
5911         * config/aarch64/constraints.md (Utx): New constraint.
5912         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
5913         (aarch64_sve_struct_nonimmediate_operand): New predicates.
5914         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
5915         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
5916         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
5917         structure modes.  Split into pieces after RA.
5918         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
5919         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
5920         New patterns.
5921         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
5922         SVE structure modes.
5923         (aarch64_classify_address): Likewise.
5924         (sizetochar): Move earlier in file.
5925         (aarch64_print_operand): Handle SVE register lists.
5926         (aarch64_array_mode): New function.
5927         (aarch64_sve_struct_memory_operand_p): Likewise.
5928         (TARGET_ARRAY_MODE): Redefine.
5930 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5931             Alan Hayward  <alan.hayward@arm.com>
5932             David Sherwood  <david.sherwood@arm.com>
5934         * target.def (array_mode): New target hook.
5935         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
5936         * doc/tm.texi: Regenerate.
5937         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
5938         * hooks.c (hook_optmode_mode_uhwi_none): New function.
5939         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
5940         targetm.array_mode.
5941         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
5942         type sizes.
5944 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5945             Alan Hayward  <alan.hayward@arm.com>
5946             David Sherwood  <david.sherwood@arm.com>
5948         * fold-const.c (fold_binary_loc): Check the argument types
5949         rather than the result type when testing for a vector operation.
5951 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5953         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
5954         * doc/tm.texi: Regenerate.
5956 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
5957             Alan Hayward  <alan.hayward@arm.com>
5958             David Sherwood  <david.sherwood@arm.com>
5960         * doc/invoke.texi (-msve-vector-bits=): Document new option.
5961         (sve): Document new AArch64 extension.
5962         * doc/md.texi (w): Extend the description of the AArch64
5963         constraint to include SVE vectors.
5964         (Upl, Upa): Document new AArch64 predicate constraints.
5965         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
5966         enum.
5967         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
5968         (msve-vector-bits=): New option.
5969         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
5970         SVE when these are disabled.
5971         (sve): New extension.
5972         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
5973         modes.  Adjust their number of units based on aarch64_sve_vg.
5974         (MAX_BITSIZE_MODE_ANY_MODE): Define.
5975         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
5976         aarch64_addr_query_type.
5977         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
5978         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
5979         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
5980         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
5981         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
5982         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
5983         (aarch64_simd_imm_zero_p): Delete.
5984         (aarch64_check_zero_based_sve_index_immediate): Declare.
5985         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
5986         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
5987         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
5988         (aarch64_sve_float_mul_immediate_p): Likewise.
5989         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
5990         rather than an rtx.
5991         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
5992         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
5993         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
5994         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
5995         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
5996         (aarch64_regmode_natural_size): Likewise.
5997         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
5998         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
5999         left one place.
6000         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
6001         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
6002         for VG and the SVE predicate registers.
6003         (V_ALIASES): Add a "z"-prefixed alias.
6004         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
6005         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
6006         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
6007         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
6008         (REG_CLASS_NAMES): Add entries for them.
6009         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
6010         and the predicate registers.
6011         (aarch64_sve_vg): Declare.
6012         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
6013         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
6014         (REGMODE_NATURAL_SIZE): Define.
6015         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
6016         SVE macros.
6017         * config/aarch64/aarch64.c: Include cfgrtl.h.
6018         (simd_immediate_info): Add a constructor for series vectors,
6019         and an associated step field.
6020         (aarch64_sve_vg): New variable.
6021         (aarch64_dbx_register_number): Handle VG and the predicate registers.
6022         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
6023         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
6024         (VEC_ANY_DATA, VEC_STRUCT): New constants.
6025         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
6026         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
6027         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
6028         (aarch64_get_mask_mode): New functions.
6029         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
6030         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
6031         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
6032         predicate modes and predicate registers.  Explicitly restrict
6033         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
6034         to store a vector mode if it is recognized by
6035         aarch64_classify_vector_mode.
6036         (aarch64_regmode_natural_size): New function.
6037         (aarch64_hard_regno_caller_save_mode): Return the original mode
6038         for predicates.
6039         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
6040         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
6041         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
6042         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
6043         functions.
6044         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
6045         does not overlap dest if the function is frame-related.  Handle
6046         SVE constants.
6047         (aarch64_split_add_offset): New function.
6048         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
6049         them aarch64_add_offset.
6050         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
6051         and update call to aarch64_sub_sp.
6052         (aarch64_add_cfa_expression): New function.
6053         (aarch64_expand_prologue): Pass extra temporary registers to the
6054         functions above.  Handle the case in which we need to emit new
6055         DW_CFA_expressions for registers that were originally saved
6056         relative to the stack pointer, but now have to be expressed
6057         relative to the frame pointer.
6058         (aarch64_output_mi_thunk): Pass extra temporary registers to the
6059         functions above.
6060         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
6061         IP0 and IP1 values for SVE frames.
6062         (aarch64_expand_vec_series): New function.
6063         (aarch64_expand_sve_widened_duplicate): Likewise.
6064         (aarch64_expand_sve_const_vector): Likewise.
6065         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
6066         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
6067         into the register, rather than emitting a SET directly.
6068         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
6069         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
6070         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
6071         (offset_9bit_signed_scaled_p): New functions.
6072         (aarch64_replicate_bitmask_imm): New function.
6073         (aarch64_bitmask_imm): Use it.
6074         (aarch64_cannot_force_const_mem): Reject expressions involving
6075         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
6076         (aarch64_classify_index): Handle SVE indices, by requiring
6077         a plain register index with a scale that matches the element size.
6078         (aarch64_classify_address): Handle SVE addresses.  Assert that
6079         the mode of the address is VOIDmode or an integer mode.
6080         Update call to aarch64_classify_symbol.
6081         (aarch64_classify_symbolic_expression): Update call to
6082         aarch64_classify_symbol.
6083         (aarch64_const_vec_all_in_range_p): New function.
6084         (aarch64_print_vector_float_operand): Likewise.
6085         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
6086         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
6087         and the FP immediates 1.0 and 0.5.
6088         (aarch64_print_address_internal): Handle SVE addresses.
6089         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
6090         (aarch64_regno_regclass): Handle predicate registers.
6091         (aarch64_secondary_reload): Handle big-endian reloads of SVE
6092         data modes.
6093         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
6094         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
6095         (aarch64_convert_sve_vector_bits): New function.
6096         (aarch64_override_options): Use it to handle -msve-vector-bits=.
6097         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
6098         rather than an rtx.
6099         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
6100         Handle SVE vector and predicate modes.  Accept VL-based constants
6101         that need only one temporary register, and VL offsets that require
6102         no temporary registers.
6103         (aarch64_conditional_register_usage): Mark the predicate registers
6104         as fixed if SVE isn't available.
6105         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
6106         Return true for SVE vector and predicate modes.
6107         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
6108         rather than an unsigned int.  Handle SVE modes.
6109         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
6110         SVE modes.
6111         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
6112         if SVE is enabled.
6113         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
6114         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
6115         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
6116         (aarch64_sve_float_mul_immediate_p): New functions.
6117         (aarch64_sve_valid_immediate): New function.
6118         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
6119         Explicitly reject structure modes.  Check for INDEX constants.
6120         Handle PTRUE and PFALSE constants.
6121         (aarch64_check_zero_based_sve_index_immediate): New function.
6122         (aarch64_simd_imm_zero_p): Delete.
6123         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
6124         vector modes.  Accept constants in the range of CNT[BHWD].
6125         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
6126         ask for an Advanced SIMD mode.
6127         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
6128         (aarch64_simd_vector_alignment): Handle SVE predicates.
6129         (aarch64_vectorize_preferred_vector_alignment): New function.
6130         (aarch64_simd_vector_alignment_reachable): Use it instead of
6131         the vector size.
6132         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
6133         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
6134         functions.
6135         (MAX_VECT_LEN): Delete.
6136         (expand_vec_perm_d): Add a vec_flags field.
6137         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
6138         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
6139         (aarch64_evpc_ext): Don't apply a big-endian lane correction
6140         for SVE modes.
6141         (aarch64_evpc_rev): Rename to...
6142         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
6143         (aarch64_evpc_rev_global): New function.
6144         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
6145         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
6146         MAX_VECT_LEN.
6147         (aarch64_evpc_sve_tbl): New function.
6148         (aarch64_expand_vec_perm_const_1): Update after rename of
6149         aarch64_evpc_rev.  Handle SVE permutes too, trying
6150         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
6151         than aarch64_evpc_tbl.
6152         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
6153         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
6154         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
6155         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
6156         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
6157         (aarch64_expand_sve_vcond): New functions.
6158         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
6159         of aarch64_vector_mode_p.
6160         (aarch64_dwarf_poly_indeterminate_value): New function.
6161         (aarch64_compute_pressure_classes): Likewise.
6162         (aarch64_can_change_mode_class): Likewise.
6163         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
6164         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
6165         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
6166         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
6167         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
6168         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
6169         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
6170         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
6171         constraints.
6172         (Dn, Dl, Dr): Accept const as well as const_vector.
6173         (Dz): Likewise.  Compare against CONST0_RTX.
6174         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
6175         of "vector" where appropriate.
6176         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
6177         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
6178         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
6179         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
6180         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
6181         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
6182         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
6183         (v_int_equiv): Extend to SVE modes.
6184         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
6185         mode attributes.
6186         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
6187         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
6188         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
6189         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
6190         (SVE_COND_FP_CMP): New int iterators.
6191         (perm_hilo): Handle the new unpack unspecs.
6192         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
6193         attributes.
6194         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
6195         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
6196         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
6197         (aarch64_equality_operator, aarch64_constant_vector_operand)
6198         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
6199         (aarch64_sve_nonimmediate_operand): Likewise.
6200         (aarch64_sve_general_operand): Likewise.
6201         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
6202         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
6203         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
6204         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
6205         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
6206         (aarch64_sve_float_arith_immediate): Likewise.
6207         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
6208         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
6209         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
6210         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
6211         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
6212         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
6213         (aarch64_sve_float_arith_operand): Likewise.
6214         (aarch64_sve_float_arith_with_sub_operand): Likewise.
6215         (aarch64_sve_float_mul_operand): Likewise.
6216         (aarch64_sve_vec_perm_operand): Likewise.
6217         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
6218         (aarch64_mov_operand): Accept const_poly_int and const_vector.
6219         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
6220         as well as const_vector.
6221         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
6222         in file.  Use CONST0_RTX and CONSTM1_RTX.
6223         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
6224         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
6225         Use aarch64_simd_imm_zero.
6226         * config/aarch64/aarch64-sve.md: New file.
6227         * config/aarch64/aarch64.md: Include it.
6228         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
6229         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
6230         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
6231         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
6232         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
6233         (sve): New attribute.
6234         (enabled): Disable instructions with the sve attribute unless
6235         TARGET_SVE.
6236         (movqi, movhi): Pass CONST_POLY_INT operaneds through
6237         aarch64_expand_mov_immediate.
6238         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
6239         CNT[BHSD] immediates.
6240         (movti): Split CONST_POLY_INT moves into two halves.
6241         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
6242         Split additions that need a temporary here if the destination
6243         is the stack pointer.
6244         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
6245         (*add<mode>3_poly_1): New instruction.
6246         (set_clobber_cc): New expander.
6248 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6250         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
6251         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
6252         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
6253         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
6254         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
6255         Change innermode from fixed_mode_size to machine_mode.
6256         (simplify_subreg): Update call accordingly.  Handle a constant-sized
6257         subreg of a variable-length CONST_VECTOR.
6259 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6260             Alan Hayward  <alan.hayward@arm.com>
6261             David Sherwood  <david.sherwood@arm.com>
6263         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
6264         (add_offset_to_base): New function, split out from...
6265         (create_mem_ref): ...here.  When handling a scale other than 1,
6266         check first whether the address is valid without the offset.
6267         Add it into the base if so, leaving the index and scale as-is.
6269 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
6271         PR c++/83778
6272         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
6273         fold_for_warn before checking if arg2 is INTEGER_CST.
6275 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
6277         * config/rs6000/predicates.md (load_multiple_operation): Delete.
6278         (store_multiple_operation): Delete.
6279         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
6280         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
6281         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
6282         guarded by TARGET_STRING.
6283         (rs6000_output_load_multiple): Delete.
6284         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
6285         OPTION_MASK_STRING / TARGET_STRING handling.
6286         (print_operand) <'N', 'O'>: Add comment that these are unused now.
6287         (const rs6000_opt_masks) <"string">: Change mask to 0.
6288         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
6289         (MASK_STRING): Delete.
6290         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
6291         parts.  Simplify.
6292         (load_multiple): Delete.
6293         (*ldmsi8): Delete.
6294         (*ldmsi7): Delete.
6295         (*ldmsi6): Delete.
6296         (*ldmsi5): Delete.
6297         (*ldmsi4): Delete.
6298         (*ldmsi3): Delete.
6299         (store_multiple): Delete.
6300         (*stmsi8): Delete.
6301         (*stmsi7): Delete.
6302         (*stmsi6): Delete.
6303         (*stmsi5): Delete.
6304         (*stmsi4): Delete.
6305         (*stmsi3): Delete.
6306         (movmemsi_8reg): Delete.
6307         (corresponding unnamed define_insn): Delete.
6308         (movmemsi_6reg): Delete.
6309         (corresponding unnamed define_insn): Delete.
6310         (movmemsi_4reg): Delete.
6311         (corresponding unnamed define_insn): Delete.
6312         (movmemsi_2reg): Delete.
6313         (corresponding unnamed define_insn): Delete.
6314         (movmemsi_1reg): Delete.
6315         (corresponding unnamed define_insn): Delete.
6316         * config/rs6000/rs6000.opt (mno-string): New.
6317         (mstring): Replace by deprecation warning stub.
6318         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
6320 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
6322         * regrename.c (regrename_do_replace): If replacing the same
6323         reg multiple times, try to reuse last created gen_raw_REG.
6325         PR debug/81155
6326         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
6327         main to workaround a bug in GDB.
6329 2018-01-12  Tom de Vries  <tom@codesourcery.com>
6331         PR target/83737
6332         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
6334 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
6336         PR rtl-optimization/80481
6337         * ira-color.c (get_cap_member): New function.
6338         (allocnos_conflict_by_live_ranges_p): Use it.
6339         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
6340         (setup_slot_coalesced_allocno_live_ranges): Ditto.
6342 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
6344         PR target/83628
6345         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
6346         (*saddl_se_1): Ditto.
6347         (*ssubsi_1): Ditto.
6348         (*ssubl_se_1): Ditto.
6350 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
6352         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
6353         rather than wi::to_widest for DR_INITs.
6354         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
6355         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
6356         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
6357         INTEGER_CSTs.
6358         (vect_analyze_group_access_1): Note that here.
6360 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
6362         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
6363         polynomial type sizes.
6365 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
6367         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
6368         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
6369         (gimple_add_tmp_var): Likewise.
6371 2018-01-12  Martin Liska  <mliska@suse.cz>
6373         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
6374         (gimple_alloc_sizes): Likewise.
6375         (dump_gimple_statistics): Use PRIu64 in printf format.
6376         * gimple.h: Change uint64_t to int.
6378 2018-01-12  Martin Liska  <mliska@suse.cz>
6380         * tree-core.h: Use uint64_t instead of int.
6381         * tree.c (tree_node_counts): Likewise.
6382         (tree_node_sizes): Likewise.
6383         (dump_tree_statistics): Use PRIu64 in printf format.
6385 2018-01-12  Martin Liska  <mliska@suse.cz>
6387         * Makefile.in: As qsort_chk is implemented in vec.c, add
6388         vec.o to linkage of gencfn-macros.
6389         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
6390         passing the info to record_node_allocation_statistics.
6391         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
6392         and pass the info.
6393         * ggc-common.c (struct ggc_usage): Add operator== and use
6394         it in operator< and compare function.
6395         * mem-stats.h (struct mem_usage): Likewise.
6396         * vec.c (struct vec_usage): Remove operator< and compare
6397         function. Can be simply inherited.
6399 2018-01-12  Martin Jambor  <mjambor@suse.cz>
6401         PR target/81616
6402         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
6403         * tree-ssa-math-opts.c: Include domwalk.h.
6404         (convert_mult_to_fma_1): New function.
6405         (fma_transformation_info): New type.
6406         (fma_deferring_state): Likewise.
6407         (cancel_fma_deferring): New function.
6408         (result_of_phi): Likewise.
6409         (last_fma_candidate_feeds_initial_phi): Likewise.
6410         (convert_mult_to_fma): Added deferring logic, split actual
6411         transformation to convert_mult_to_fma_1.
6412         (math_opts_dom_walker): New type.
6413         (math_opts_dom_walker::after_dom_children): New method, body moved
6414         here from pass_optimize_widening_mul::execute, added deferring logic
6415         bits.
6416         (pass_optimize_widening_mul::execute): Moved most of code to
6417         math_opts_dom_walker::after_dom_children.
6418         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
6419         * config/i386/i386.c (ix86_option_override_internal): Added
6420         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
6422 2018-01-12  Richard Biener  <rguenther@suse.de>
6424         PR debug/83157
6425         * dwarf2out.c (gen_variable_die): Do not reset old_die for
6426         inline instance vars.
6428 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
6430         PR target/81819
6431         * config/rx/rx.c (rx_is_restricted_memory_address):
6432         Handle SUBREG case.
6434 2018-01-12  Richard Biener  <rguenther@suse.de>
6436         PR tree-optimization/80846
6437         * target.def (split_reduction): New target hook.
6438         * targhooks.c (default_split_reduction): New function.
6439         * targhooks.h (default_split_reduction): Declare.
6440         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
6441         target requests first reduce vectors by combining low and high
6442         parts.
6443         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
6444         (get_vectype_for_scalar_type_and_size): Export.
6445         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
6446         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
6447         * doc/tm.texi: Regenerate.
6448         * config/i386/i386.c (ix86_split_reduction): Implement
6449         TARGET_VECTORIZE_SPLIT_REDUCTION.
6451 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
6453         PR target/83368
6454         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
6455         in PIC mode except for TARGET_VXWORKS_RTP.
6456         * config/sparc/sparc.c: Include cfgrtl.h.
6457         (TARGET_INIT_PIC_REG): Define.
6458         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
6459         (sparc_pic_register_p): New predicate.
6460         (sparc_legitimate_address_p): Use it.
6461         (sparc_legitimize_pic_address): Likewise.
6462         (sparc_delegitimize_address): Likewise.
6463         (sparc_mode_dependent_address_p): Likewise.
6464         (gen_load_pcrel_sym): Remove 4th parameter.
6465         (load_got_register): Adjust call to above.  Remove obsolete stuff.
6466         (sparc_expand_prologue): Do not call load_got_register here.
6467         (sparc_flat_expand_prologue): Likewise.
6468         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
6469         (sparc_use_pseudo_pic_reg): New function.
6470         (sparc_init_pic_reg): Likewise.
6471         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
6472         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
6474 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
6476         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
6477         Add item for branch_cost.
6479 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
6481         PR rtl-optimization/83565
6482         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
6483         not extend the result to a larger mode for rotate operations.
6484         (num_sign_bit_copies1): Likewise.
6486 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6488         PR target/40411
6489         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
6490         -symbolic.
6491         Use values-Xc.o for -pedantic.
6492         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
6494 2018-01-12  Martin Liska  <mliska@suse.cz>
6496         PR ipa/83054
6497         * ipa-devirt.c (final_warning_record::grow_type_warnings):
6498         New function.
6499         (possible_polymorphic_call_targets): Use it.
6500         (ipa_devirt): Likewise.
6502 2018-01-12  Martin Liska  <mliska@suse.cz>
6504         * profile-count.h (enum profile_quality): Use 0 as invalid
6505         enum value of profile_quality.
6507 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
6509         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
6510         -mext-string options.
6512 2018-01-12  Richard Biener  <rguenther@suse.de>
6514         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
6515         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
6516         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
6517         Likewise.
6518         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
6520 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
6522         * configure.ac (--with-long-double-format): Add support for the
6523         configuration option to change the default long double format on
6524         PowerPC systems.
6525         * config.gcc (powerpc*-linux*-*): Likewise.
6526         * configure: Regenerate.
6527         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
6528         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
6529         used without modification.
6531 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6533         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
6534         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
6535         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
6536         MISC_BUILTIN_SPEC_BARRIER.
6537         (rs6000_init_builtins): Likewise.
6538         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
6539         enum value.
6540         (speculation_barrier): New define_insn.
6541         * doc/extend.texi: Document __builtin_speculation_barrier.
6543 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
6545         PR target/83203
6546         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
6547         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
6548         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
6549         iterators.
6550         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
6551         integral modes instead of "ss" and "sd".
6552         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
6553         vectors with 32-bit and 64-bit elements.
6554         (vecdupssescalarmodesuffix): New mode attribute.
6555         (vec_dup<mode>): Use it.
6557 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
6559         PR target/83330
6560         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
6561         frame if argument is passed on stack.
6563 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
6565         PR target/82682
6566         * ree.c (combine_reaching_defs): Optimize also
6567         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
6568         reg2=any_extend(exp); reg1=reg2;, formatting fix.
6570 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
6572         PR middle-end/83189
6573         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
6575 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
6577         PR middle-end/83718
6578         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
6579         after they are computed.
6581 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
6583         PR tree-optimization/83695
6584         * gimple-loop-linterchange.cc
6585         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
6586         reset cached scev information after interchange.
6587         (pass_linterchange::execute): Remove call to scev_reset_htab.
6589 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6591         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
6592         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
6593         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
6594         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
6595         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
6596         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
6597         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
6598         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
6599         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
6600         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
6601         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
6602         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
6603         (V_lane_reg): Likewise.
6604         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
6605         New define_expand.
6606         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
6607         (vfmal_lane_low<mode>_intrinsic,
6608         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
6609         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
6610         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
6611         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
6612         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
6613         vfmsl_lane_high<mode>_intrinsic): New define_insns.
6615 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6617         * config/arm/arm-cpus.in (fp16fml): New feature.
6618         (ALL_SIMD): Add fp16fml.
6619         (armv8.2-a): Add fp16fml as an option.
6620         (armv8.3-a): Likewise.
6621         (armv8.4-a): Add fp16fml as part of fp16.
6622         * config/arm/arm.h (TARGET_FP16FML): Define.
6623         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
6624         when appropriate.
6625         * config/arm/arm-modes.def (V2HF): Define.
6626         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
6627         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
6628         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
6629         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
6630         vfmsl_low, vfmsl_high): New set of builtins.
6631         * config/arm/iterators.md (PLUSMINUS): New code iterator.
6632         (vfml_op): New code attribute.
6633         (VFMLHALVES): New int iterator.
6634         (VFML, VFMLSEL): New mode attributes.
6635         (V_reg): Define mapping for V2HF.
6636         (V_hi, V_lo): New mode attributes.
6637         (VF_constraint): Likewise.
6638         (vfml_half, vfml_half_selector): New int attributes.
6639         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
6640         define_expand.
6641         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
6642         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
6643         New define_insn.
6644         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
6645         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
6646         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
6647         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
6648         documentation.
6649         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
6650         Document new effective target and option set.
6652 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6654         * config/arm/arm-cpus.in (armv8_4): New feature.
6655         (ARMv8_4a): New fgroup.
6656         (armv8.4-a): New arch.
6657         * config/arm/arm-tables.opt: Regenerate.
6658         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
6659         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
6660         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
6661         Add matching rules for -march=armv8.4-a and extensions.
6662         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
6664 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
6666         PR target/81821
6667         * config/rx/rx.md (BW): New mode attribute.
6668         (sync_lock_test_and_setsi): Add mode suffix to insn output.
6670 2018-01-11  Richard Biener  <rguenther@suse.de>
6672         PR tree-optimization/83435
6673         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
6674         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
6675         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
6677 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
6678             Alan Hayward  <alan.hayward@arm.com>
6679             David Sherwood  <david.sherwood@arm.com>
6681         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
6682         field.
6683         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
6684         (aarch64_print_address_internal): Use it to check for a zero offset.
6686 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
6687             Alan Hayward  <alan.hayward@arm.com>
6688             David Sherwood  <david.sherwood@arm.com>
6690         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
6691         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
6692         Return a poly_int64 rather than a HOST_WIDE_INT.
6693         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
6694         rather than a HOST_WIDE_INT.
6695         * config/aarch64/aarch64.h (aarch64_frame): Protect with
6696         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
6697         hard_fp_offset, frame_size, initial_adjust, callee_offset and
6698         final_offset from HOST_WIDE_INT to poly_int64.
6699         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
6700         to_constant when getting the number of units in an Advanced SIMD
6701         mode.
6702         (aarch64_builtin_vectorized_function): Check for a constant number
6703         of units.
6704         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
6705         GET_MODE_SIZE.
6706         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
6707         attribute instead of GET_MODE_NUNITS.
6708         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
6709         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
6710         GET_MODE_SIZE for fixed-size registers.
6711         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
6712         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
6713         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
6714         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
6715         (aarch64_print_operand, aarch64_print_address_internal)
6716         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
6717         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
6718         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
6719         Handle polynomial GET_MODE_SIZE.
6720         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
6721         wider than SImode without modification.
6722         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
6723         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
6724         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
6725         passing and returning SVE modes.
6726         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
6727         rather than GEN_INT.
6728         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
6729         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
6730         (aarch64_allocate_and_probe_stack_space): Likewise.
6731         (aarch64_layout_frame): Cope with polynomial offsets.
6732         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
6733         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
6734         polynomial offsets.
6735         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
6736         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
6737         poly_int64 rather than a HOST_WIDE_INT.
6738         (aarch64_get_separate_components, aarch64_process_components)
6739         (aarch64_expand_prologue, aarch64_expand_epilogue)
6740         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
6741         (aarch64_anchor_offset): New function, split out from...
6742         (aarch64_legitimize_address): ...here.
6743         (aarch64_builtin_vectorization_cost): Handle polynomial
6744         TYPE_VECTOR_SUBPARTS.
6745         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
6746         GET_MODE_NUNITS.
6747         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
6748         number of elements from the PARALLEL rather than the mode.
6749         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
6750         rather than GET_MODE_BITSIZE.
6751         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
6752         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
6753         (aarch64_expand_vec_perm_const_1): Handle polynomial
6754         d->perm.length () and d->perm elements.
6755         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
6756         Apply to_constant to d->perm elements.
6757         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
6758         polynomial CONST_VECTOR_NUNITS.
6759         (aarch64_move_pointer): Take amount as a poly_int64 rather
6760         than an int.
6761         (aarch64_progress_pointer): Avoid temporary variable.
6762         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
6763         the mode attribute instead of GET_MODE.
6765 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
6766             Alan Hayward  <alan.hayward@arm.com>
6767             David Sherwood  <david.sherwood@arm.com>
6769         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
6770         x exists before using it.
6771         (aarch64_add_constant_internal): Rename to...
6772         (aarch64_add_offset_1): ...this.  Replace regnum with separate
6773         src and dest rtxes.  Handle the case in which they're different,
6774         including when the offset is zero.  Replace scratchreg with an rtx.
6775         Use 2 additions if there is no spare register into which we can
6776         move a 16-bit constant.
6777         (aarch64_add_constant): Delete.
6778         (aarch64_add_offset): Replace reg with separate src and dest
6779         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
6780         Use aarch64_add_offset_1.
6781         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
6782         an rtx rather than an int.  Take the delta as a poly_int64
6783         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
6784         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
6785         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
6786         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
6787         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
6788         and aarch64_add_sp.
6789         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
6790         aarch64_add_constant.
6792 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
6794         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
6795         Use scalar_float_mode.
6797 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
6799         * config/aarch64/aarch64-simd.md
6800         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
6801         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
6802         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
6803         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
6804         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
6805         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
6806         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
6807         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
6808         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
6809         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
6811 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6813         PR target/83514
6814         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
6815         targ_options->x_arm_arch_string is non NULL.
6817 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
6819         * config/aarch64/aarch64.h
6820         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
6822 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
6824         PR target/82096
6825         * expmed.c (emit_store_flag_force): Swap if const op0
6826         and change VOIDmode to mode of op0.
6828 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
6830         PR rtl-optimization/83761
6831         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
6832         than bytes to mode_for_size.
6834 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
6836         PR middle-end/83189
6837         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
6838         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
6839         profile.
6841 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
6843         PR middle-end/83575
6844         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
6845         when in layout mode.
6846         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
6847         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
6848         partition fixup.
6850 2018-01-10  Michael Collison  <michael.collison@arm.com>
6852         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
6853         * config/aarch64/aarch64-option-extension.def: Add
6854         AARCH64_OPT_EXTENSION of 'fp16fml'.
6855         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
6856         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
6857         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
6858         * config/aarch64/constraints.md (Ui7): New constraint.
6859         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
6860         (VFMLA_SEL_W): Ditto.
6861         (f16quad): Ditto.
6862         (f16mac1): Ditto.
6863         (VFMLA16_LOW): New int iterator.
6864         (VFMLA16_HIGH): Ditto.
6865         (UNSPEC_FMLAL): New unspec.
6866         (UNSPEC_FMLSL): Ditto.
6867         (UNSPEC_FMLAL2): Ditto.
6868         (UNSPEC_FMLSL2): Ditto.
6869         (f16mac): New code attribute.
6870         * config/aarch64/aarch64-simd-builtins.def
6871         (aarch64_fmlal_lowv2sf): Ditto.
6872         (aarch64_fmlsl_lowv2sf): Ditto.
6873         (aarch64_fmlalq_lowv4sf): Ditto.
6874         (aarch64_fmlslq_lowv4sf): Ditto.
6875         (aarch64_fmlal_highv2sf): Ditto.
6876         (aarch64_fmlsl_highv2sf): Ditto.
6877         (aarch64_fmlalq_highv4sf): Ditto.
6878         (aarch64_fmlslq_highv4sf): Ditto.
6879         (aarch64_fmlal_lane_lowv2sf): Ditto.
6880         (aarch64_fmlsl_lane_lowv2sf): Ditto.
6881         (aarch64_fmlal_laneq_lowv2sf): Ditto.
6882         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
6883         (aarch64_fmlalq_lane_lowv4sf): Ditto.
6884         (aarch64_fmlsl_lane_lowv4sf): Ditto.
6885         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
6886         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
6887         (aarch64_fmlal_lane_highv2sf): Ditto.
6888         (aarch64_fmlsl_lane_highv2sf): Ditto.
6889         (aarch64_fmlal_laneq_highv2sf): Ditto.
6890         (aarch64_fmlsl_laneq_highv2sf): Ditto.
6891         (aarch64_fmlalq_lane_highv4sf): Ditto.
6892         (aarch64_fmlsl_lane_highv4sf): Ditto.
6893         (aarch64_fmlalq_laneq_highv4sf): Ditto.
6894         (aarch64_fmlsl_laneq_highv4sf): Ditto.
6895         * config/aarch64/aarch64-simd.md:
6896         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
6897         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
6898         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
6899         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
6900         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
6901         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
6902         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
6903         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
6904         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
6905         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
6906         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
6907         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
6908         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
6909         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
6910         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
6911         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
6912         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
6913         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
6914         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
6915         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
6916         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
6917         (vfmlsl_low_u32): Ditto.
6918         (vfmlalq_low_u32): Ditto.
6919         (vfmlslq_low_u32): Ditto.
6920         (vfmlal_high_u32): Ditto.
6921         (vfmlsl_high_u32): Ditto.
6922         (vfmlalq_high_u32): Ditto.
6923         (vfmlslq_high_u32): Ditto.
6924         (vfmlal_lane_low_u32): Ditto.
6925         (vfmlsl_lane_low_u32): Ditto.
6926         (vfmlal_laneq_low_u32): Ditto.
6927         (vfmlsl_laneq_low_u32): Ditto.
6928         (vfmlalq_lane_low_u32): Ditto.
6929         (vfmlslq_lane_low_u32): Ditto.
6930         (vfmlalq_laneq_low_u32): Ditto.
6931         (vfmlslq_laneq_low_u32): Ditto.
6932         (vfmlal_lane_high_u32): Ditto.
6933         (vfmlsl_lane_high_u32): Ditto.
6934         (vfmlal_laneq_high_u32): Ditto.
6935         (vfmlsl_laneq_high_u32): Ditto.
6936         (vfmlalq_lane_high_u32): Ditto.
6937         (vfmlslq_lane_high_u32): Ditto.
6938         (vfmlalq_laneq_high_u32): Ditto.
6939         (vfmlslq_laneq_high_u32): Ditto.
6940         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
6941         (AARCH64_FL_FOR_ARCH8_4): New.
6942         (AARCH64_ISA_F16FML): New ISA flag.
6943         (TARGET_F16FML): New feature flag for fp16fml.
6944         (doc/invoke.texi): Document new fp16fml option.
6946 2018-01-10  Michael Collison  <michael.collison@arm.com>
6948         * config/aarch64/aarch64-builtins.c:
6949         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
6950         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
6951         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
6952         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
6953         (AARCH64_ISA_SHA3): New ISA flag.
6954         (TARGET_SHA3): New feature flag for sha3.
6955         * config/aarch64/iterators.md (sha512_op): New int attribute.
6956         (CRYPTO_SHA512): New int iterator.
6957         (UNSPEC_SHA512H): New unspec.
6958         (UNSPEC_SHA512H2): Ditto.
6959         (UNSPEC_SHA512SU0): Ditto.
6960         (UNSPEC_SHA512SU1): Ditto.
6961         * config/aarch64/aarch64-simd-builtins.def
6962         (aarch64_crypto_sha512hqv2di): New builtin.
6963         (aarch64_crypto_sha512h2qv2di): Ditto.
6964         (aarch64_crypto_sha512su0qv2di): Ditto.
6965         (aarch64_crypto_sha512su1qv2di): Ditto.
6966         (aarch64_eor3qv8hi): Ditto.
6967         (aarch64_rax1qv2di): Ditto.
6968         (aarch64_xarqv2di): Ditto.
6969         (aarch64_bcaxqv8hi): Ditto.
6970         * config/aarch64/aarch64-simd.md:
6971         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
6972         (aarch64_crypto_sha512su0qv2di): Ditto.
6973         (aarch64_crypto_sha512su1qv2di): Ditto.
6974         (aarch64_eor3qv8hi): Ditto.
6975         (aarch64_rax1qv2di): Ditto.
6976         (aarch64_xarqv2di): Ditto.
6977         (aarch64_bcaxqv8hi): Ditto.
6978         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
6979         (vsha512h2q_u64): Ditto.
6980         (vsha512su0q_u64): Ditto.
6981         (vsha512su1q_u64): Ditto.
6982         (veor3q_u16): Ditto.
6983         (vrax1q_u64): Ditto.
6984         (vxarq_u64): Ditto.
6985         (vbcaxq_u16): Ditto.
6986         * config/arm/types.md (crypto_sha512): New type attribute.
6987         (crypto_sha3): Ditto.
6988         (doc/invoke.texi): Document new sha3 option.
6990 2018-01-10  Michael Collison  <michael.collison@arm.com>
6992         * config/aarch64/aarch64-builtins.c:
6993         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
6994         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
6995         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
6996         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
6997         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
6998         (AARCH64_ISA_SM4): New ISA flag.
6999         (TARGET_SM4): New feature flag for sm4.
7000         * config/aarch64/aarch64-simd-builtins.def
7001         (aarch64_sm3ss1qv4si): Ditto.
7002         (aarch64_sm3tt1aq4si): Ditto.
7003         (aarch64_sm3tt1bq4si): Ditto.
7004         (aarch64_sm3tt2aq4si): Ditto.
7005         (aarch64_sm3tt2bq4si): Ditto.
7006         (aarch64_sm3partw1qv4si): Ditto.
7007         (aarch64_sm3partw2qv4si): Ditto.
7008         (aarch64_sm4eqv4si): Ditto.
7009         (aarch64_sm4ekeyqv4si): Ditto.
7010         * config/aarch64/aarch64-simd.md:
7011         (aarch64_sm3ss1qv4si): Ditto.
7012         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
7013         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
7014         (aarch64_sm4eqv4si): Ditto.
7015         (aarch64_sm4ekeyqv4si): Ditto.
7016         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
7017         (sm3part_op): Ditto.
7018         (CRYPTO_SM3TT): Ditto.
7019         (CRYPTO_SM3PART): Ditto.
7020         (UNSPEC_SM3SS1): New unspec.
7021         (UNSPEC_SM3TT1A): Ditto.
7022         (UNSPEC_SM3TT1B): Ditto.
7023         (UNSPEC_SM3TT2A): Ditto.
7024         (UNSPEC_SM3TT2B): Ditto.
7025         (UNSPEC_SM3PARTW1): Ditto.
7026         (UNSPEC_SM3PARTW2): Ditto.
7027         (UNSPEC_SM4E): Ditto.
7028         (UNSPEC_SM4EKEY): Ditto.
7029         * config/aarch64/constraints.md (Ui2): New constraint.
7030         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
7031         * config/arm/types.md (crypto_sm3): New type attribute.
7032         (crypto_sm4): Ditto.
7033         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
7034         (vsm3tt1aq_u32): Ditto.
7035         (vsm3tt1bq_u32): Ditto.
7036         (vsm3tt2aq_u32): Ditto.
7037         (vsm3tt2bq_u32): Ditto.
7038         (vsm3partw1q_u32): Ditto.
7039         (vsm3partw2q_u32): Ditto.
7040         (vsm4eq_u32): Ditto.
7041         (vsm4ekeyq_u32): Ditto.
7042         (doc/invoke.texi): Document new sm4 option.
7044 2018-01-10  Michael Collison  <michael.collison@arm.com>
7046         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
7047         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
7048         (AARCH64_FL_FOR_ARCH8_4): New.
7049         (AARCH64_FL_V8_4): New flag.
7050         (doc/invoke.texi): Document new armv8.4-a option.
7052 2018-01-10  Michael Collison  <michael.collison@arm.com>
7054         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
7055         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
7056         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
7057         * config/aarch64/aarch64-option-extension.def: Add
7058         AARCH64_OPT_EXTENSION of 'sha2'.
7059         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
7060         (crypto): Disable sha2 and aes if crypto disabled.
7061         (crypto): Enable aes and sha2 if enabled.
7062         (simd): Disable sha2 and aes if simd disabled.
7063         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
7064         New flags.
7065         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
7066         (TARGET_SHA2): New feature flag for sha2.
7067         (TARGET_AES): New feature flag for aes.
7068         * config/aarch64/aarch64-simd.md:
7069         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
7070         conditional on TARGET_AES.
7071         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
7072         (aarch64_crypto_sha1hsi): Make pattern conditional
7073         on TARGET_SHA2.
7074         (aarch64_crypto_sha1hv4si): Ditto.
7075         (aarch64_be_crypto_sha1hv4si): Ditto.
7076         (aarch64_crypto_sha1su1v4si): Ditto.
7077         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
7078         (aarch64_crypto_sha1su0v4si): Ditto.
7079         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
7080         (aarch64_crypto_sha256su0v4si): Ditto.
7081         (aarch64_crypto_sha256su1v4si): Ditto.
7082         (doc/invoke.texi): Document new aes and sha2 options.
7084 2018-01-10  Martin Sebor  <msebor@redhat.com>
7086         PR tree-optimization/83781
7087         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
7088         as string arrays.
7090 2018-01-11  Martin Sebor  <msebor@gmail.com>
7091             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
7093         PR tree-optimization/83501
7094         PR tree-optimization/81703
7096         * tree-ssa-strlen.c (get_string_cst): Rename...
7097         (get_string_len): ...to this.  Handle global constants.
7098         (handle_char_store): Adjust.
7100 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
7101             Jim Wilson  <jimw@sifive.com>
7103         * config/riscv/riscv-protos.h (riscv_output_return): New.
7104         * config/riscv/riscv.c (struct machine_function): New naked_p field.
7105         (riscv_attribute_table, riscv_output_return),
7106         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
7107         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
7108         (riscv_compute_frame_info): Only compute frame->mask if not a naked
7109         function.
7110         (riscv_expand_prologue): Add early return for naked function.
7111         (riscv_expand_epilogue): Likewise.
7112         (riscv_function_ok_for_sibcall): Return false for naked function.
7113         (riscv_set_current_function): New.
7114         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
7115         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
7116         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
7117         * doc/extend.texi (RISC-V Function Attributes): New.
7119 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
7121         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
7122         check for 128-bit long double before checking TCmode.
7123         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
7124         128-bit long doubles before checking TFmode or TCmode.
7125         (FLOAT128_IBM_P): Likewise.
7127 2018-01-10  Martin Sebor  <msebor@redhat.com>
7129         PR tree-optimization/83671
7130         * builtins.c (c_strlen): Unconditionally return zero for the empty
7131         string.
7132         Use -Warray-bounds for warnings.
7133         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
7134         for non-constant array indices with COMPONENT_REF, arrays of
7135         arrays, and pointers to arrays.
7136         (gimple_fold_builtin_strlen): Determine and set length range for
7137         non-constant character arrays.
7139 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
7141         PR middle-end/81897
7142         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
7143         empty blocks.
7145 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
7147         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
7149 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
7151         PR target/83399
7152         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
7153         VECTOR_MEM_ALTIVEC_OR_VSX_P.
7154         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
7155         indexed_or_indirect_operand predicate.
7156         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
7157         (*vsx_le_perm_load_v8hi): Likewise.
7158         (*vsx_le_perm_load_v16qi): Likewise.
7159         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
7160         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
7161         (*vsx_le_perm_store_v8hi): Likewise.
7162         (*vsx_le_perm_store_v16qi): Likewise.
7163         (eight unnamed splitters): Likewise.
7165 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
7167         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
7168         * config/rs6000/emmintrin.h: Likewise.
7169         * config/rs6000/mmintrin.h: Likewise.
7170         * config/rs6000/xmmintrin.h: Likewise.
7172 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
7174         PR c++/43486
7175         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
7176         "public_flag".
7177         * tree.c (tree_nop_conversion): Return true for location wrapper
7178         nodes.
7179         (maybe_wrap_with_location): New function.
7180         (selftest::check_strip_nops): New function.
7181         (selftest::test_location_wrappers): New function.
7182         (selftest::tree_c_tests): Call it.
7183         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
7184         (maybe_wrap_with_location): New decl.
7185         (EXPR_LOCATION_WRAPPER_P): New macro.
7186         (location_wrapper_p): New inline function.
7187         (tree_strip_any_location_wrapper): New inline function.
7189 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
7191         PR target/83735
7192         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
7193         stack_realign_offset for the largest alignment of stack slot
7194         actually used.
7195         (ix86_find_max_used_stack_alignment): New function.
7196         (ix86_finalize_stack_frame_flags): Use it.  Set
7197         max_used_stack_alignment if we don't realign stack.
7198         * config/i386/i386.h (machine_function): Add
7199         max_used_stack_alignment.
7201 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
7203         * config/arm/arm.opt (-mbranch-cost): New option.
7204         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
7205         account.
7207 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
7209         PR target/83629
7210         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
7211         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
7213 2018-01-10  Richard Biener  <rguenther@suse.de>
7215         PR debug/83765
7216         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
7217         early out so it also covers the case where we have a non-NULL
7218         origin.
7220 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
7222         PR tree-optimization/83753
7223         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
7224         for non-strided grouped accesses if the number of elements is 1.
7226 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
7228         PR target/81616
7229         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
7230         * i386.h (TARGET_USE_GATHER): Define.
7231         * x86-tune.def (X86_TUNE_USE_GATHER): New.
7233 2018-01-10  Martin Liska  <mliska@suse.cz>
7235         PR bootstrap/82831
7236         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
7237         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
7238         partitioning.
7239         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
7240         CLEANUP_NO_PARTITIONING is not set.
7242 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
7244         * doc/rtl.texi: Remove documentation of (const ...) wrappers
7245         for vectors, as a partial revert of r254296.
7246         * rtl.h (const_vec_p): Delete.
7247         (const_vec_duplicate_p): Don't test for vector CONSTs.
7248         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
7249         * expmed.c (make_tree): Likewise.
7251         Revert:
7252         * common.md (E, F): Use CONSTANT_P instead of checking for
7253         CONST_VECTOR.
7254         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
7255         checking for CONST_VECTOR.
7257 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
7259         PR middle-end/83575
7260         * predict.c (force_edge_cold): Handle in more sane way edges
7261         with no prediction.
7263 2018-01-09  Carl Love  <cel@us.ibm.com>
7265         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
7266         V4SI, V4SF types.
7267         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
7268         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
7269         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
7270         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
7271         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
7272         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
7273         * config/rs6000/rs6000-protos.h: Add extern defition for
7274         rs6000_generate_float2_double_code.
7275         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
7276         function.
7277         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
7278         (float2_v2df): Add define_expand.
7280 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
7282         PR target/83628
7283         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
7284         op_mode in the force_to_mode call.
7286 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
7288         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
7289         instead of checking each element individually.
7290         (aarch64_evpc_uzp): Likewise.
7291         (aarch64_evpc_zip): Likewise.
7292         (aarch64_evpc_ext): Likewise.
7293         (aarch64_evpc_rev): Likewise.
7294         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
7295         instead of checking each element individually.  Return true without
7296         generating rtl if
7297         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
7298         whether all selected elements come from the same input, instead of
7299         checking each element individually.  Remove calls to gen_rtx_REG,
7300         start_sequence and end_sequence and instead assert that no rtl is
7301         generated.
7303 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
7305         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
7306         order of HIGH and CONST checks.
7308 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
7310         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
7311         if the destination isn't an SSA_NAME.
7313 2018-01-09  Richard Biener  <rguenther@suse.de>
7315         PR tree-optimization/83668
7316         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
7317         move prologue...
7318         (canonicalize_loop_form): ... here, renamed from ...
7319         (canonicalize_loop_closed_ssa_form): ... this and amended to
7320         swap successor edges for loop exit blocks to make us use
7321         the RPO order we need for initial schedule generation.
7323 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
7325         PR tree-optimization/64811
7326         * match.pd: When optimizing comparisons with Inf, avoid
7327         introducing or losing exceptions from comparisons with NaN.
7329 2018-01-09  Martin Liska  <mliska@suse.cz>
7331         PR sanitizer/82517
7332         * asan.c (shadow_mem_size): Add gcc_assert.
7334 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
7336         Don't save registers in main().
7338         PR target/83738
7339         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
7340         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
7341         * config/avr/avr.c (avr_set_current_function): Don't error if
7342         naked, OS_task or OS_main are specified at the same time.
7343         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
7344         OS_main.
7345         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
7346         attribute.
7347         * common/config/avr/avr-common.c (avr_option_optimization_table):
7348         Switch on -mmain-is-OS_task for optimizing compilations.
7350 2018-01-09  Richard Biener  <rguenther@suse.de>
7352         PR tree-optimization/83572
7353         * graphite.c: Include cfganal.h.
7354         (graphite_transform_loops): Connect infinite loops to exit
7355         and remove fake edges at the end.
7357 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
7359         * ipa-inline.c (edge_badness): Revert accidental checkin.
7361 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
7363         PR ipa/80763
7364         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
7365         symbols; not inline clones.
7367 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
7369         PR target/83507
7370         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
7371         hard registers.  Formatting fixes.
7373         PR preprocessor/83722
7374         * gcc.c (try_generate_repro): Pass
7375         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
7376         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
7377         do_report_bug.
7379 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
7380             Kito Cheng  <kito.cheng@gmail.com>
7382         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
7383         (riscv_leaf_function_p): Delete.
7384         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
7386 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
7388         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
7389         function.
7390         (do_ifelse): New function.
7391         (do_isel): New function.
7392         (do_sub3): New function.
7393         (do_add3): New function.
7394         (do_load_mask_compare): New function.
7395         (do_overlap_load_compare): New function.
7396         (expand_compare_loop): New function.
7397         (expand_block_compare): Call expand_compare_loop() when appropriate.
7398         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
7399         option description.
7400         (-mblock-compare-inline-loop-limit): New option.
7402 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7404         PR target/83677
7405         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
7406         Reverse order of second and third operands in first alternative.
7407         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
7408         of first and second elements in UNSPEC_VPERMR vector.
7409         (altivec_expand_vec_perm_le): Likewise.
7411 2018-01-08  Jeff Law  <law@redhat.com>
7413         PR rtl-optimizatin/81308
7414         * tree-switch-conversion.c (cfg_altered): New file scoped static.
7415         (process_switch): If group_case_labels makes a change, then set
7416         cfg_altered.
7417         (pass_convert_switch::execute): If a switch is converted, then
7418         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
7420         PR rtl-optimization/81308
7421         * recog.c (split_all_insns): Conditionally cleanup the CFG after
7422         splitting insns.
7424 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
7426         PR target/83663 - Revert r255946
7427         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
7428         generation for cases where splatting a value is not useful.
7429         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
7430         across a vec_duplicate and a paradoxical subreg forming a vector
7431         mode to a vec_concat.
7433 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7435         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
7436         -march=armv8.3-a variants.
7437         * config/arm/t-multilib: Likewise.
7438         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
7440 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
7442         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
7443         to generate rtl.
7444         (cceq_ior_compare_complement): Give it a name so I can use it, and
7445         change boolean_or_operator predicate to boolean_operator so it can
7446         be used to generate a crand.
7447         (eqne): New code iterator.
7448         (bd/bd_neg): New code_attrs.
7449         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
7450         a single define_insn.
7451         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
7452         decrement (bdnzt/bdnzf/bdzt/bdzf).
7453         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
7454         with the new names of the branch decrement patterns, and added the
7455         names of the branch decrement conditional patterns.
7457 2018-01-08  Richard Biener  <rguenther@suse.de>
7459         PR tree-optimization/83563
7460         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
7461         cache.
7463 2018-01-08  Richard Biener  <rguenther@suse.de>
7465         PR middle-end/83713
7466         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
7468 2018-01-08  Richard Biener  <rguenther@suse.de>
7470         PR tree-optimization/83685
7471         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
7472         references to abnormals.
7474 2018-01-08  Richard Biener  <rguenther@suse.de>
7476         PR lto/83719
7477         * dwarf2out.c (output_indirect_strings): Handle empty
7478         skeleton_debug_str_hash.
7479         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
7481 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
7483         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
7484         (emit_store_direct): Likewise.
7485         (arc_trampoline_adjust_address): Likewise.
7486         (arc_asm_trampoline_template): New function.
7487         (arc_initialize_trampoline): Use asm_trampoline_template.
7488         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
7489         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
7490         * config/arc/arc.md (flush_icache): Delete pattern.
7492 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
7494         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
7495         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
7496         munaligned-access.
7498 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
7500         PR target/83681
7501         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
7502         by not USED_FOR_TARGET.
7503         (make_pass_resolve_sw_modes): Likewise.
7505 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
7507         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
7508         USED_FOR_TARGET.
7510 2018-01-08  Richard Biener  <rguenther@suse.de>
7512         PR middle-end/83580
7513         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
7515 2018-01-08  Richard Biener  <rguenther@suse.de>
7517         PR middle-end/83517
7518         * match.pd ((t * 2) / 2) -> t): Add missing :c.
7520 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
7522         PR middle-end/81897
7523         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
7524         basic blocks with a small number of successors.
7525         (convert_control_dep_chain_into_preds): Improve handling of
7526         forwarder blocks.
7527         (dump_predicates): Split apart into...
7528         (dump_pred_chain): ...here...
7529         (dump_pred_info): ...and here.
7530         (can_one_predicate_be_invalidated_p): Add debugging printfs.
7531         (can_chain_union_be_invalidated_p): Improve check for invalidation
7532         of paths.
7533         (uninit_uses_cannot_happen): Avoid unnecessary if
7534         convert_control_dep_chain_into_preds yielded nothing.
7536 2018-01-06  Martin Sebor  <msebor@redhat.com>
7538         PR tree-optimization/83640
7539         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
7540         subtracting negative offset from size.
7541         (builtin_access::overlap): Adjust offset bounds of the access to fall
7542         within the size of the object if possible.
7544 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
7546         PR rtl-optimization/83699
7547         * expmed.c (extract_bit_field_1): Restrict the vector usage of
7548         extract_bit_field_as_subreg to cases in which the extracted
7549         value is also a vector.
7551         * lra-constraints.c (process_alt_operands): Test for the equivalence
7552         substitutions when detecting a possible reload cycle.
7554 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
7556         PR debug/83480
7557         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
7558         by default if flag_selective_schedling{,2}.  Formatting fixes.
7560         PR rtl-optimization/83682
7561         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
7562         if it has non-VECTOR_MODE element mode.
7563         (vec_duplicate_p): Likewise.
7565         PR middle-end/83694
7566         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
7567         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
7569 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
7571         PR target/83604
7572         * config/i386/i386-builtin.def
7573         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
7574         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
7575         Require also OPTION_MASK_ISA_AVX512F in addition to
7576         OPTION_MASK_ISA_GFNI.
7577         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
7578         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
7579         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
7580         to OPTION_MASK_ISA_GFNI.
7581         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
7582         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
7583         OPTION_MASK_ISA_AVX512BW.
7584         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
7585         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
7586         addition to OPTION_MASK_ISA_GFNI.
7587         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
7588         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
7589         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
7590         to OPTION_MASK_ISA_GFNI.
7591         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
7592         a requirement for all ISAs rather than any of them with a few
7593         exceptions.
7594         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
7595         processing.
7596         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
7597         bitmasks to be enabled with 3 exceptions, instead of requiring any
7598         enabled ISA with lots of exceptions.
7599         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
7600         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
7601         Change avx512bw in isa attribute to avx512f.
7602         * config/i386/sgxintrin.h: Add license boilerplate.
7603         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
7604         to __AVX512F__ and __AVX512VL to __AVX512VL__.
7605         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
7606         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
7607         defined.
7608         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
7609         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
7610         temporarily sse2 rather than sse if not enabled already.
7612         PR target/83604
7613         * config/i386/sse.md (VI248_VLBW): Rename to ...
7614         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
7615         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
7616         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
7617         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
7618         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
7619         mode iterator instead of VI248_VLBW.
7621 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
7623         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
7624         (record_modified): Skip clobbers; add debug output.
7625         (param_change_prob): Use sreal frequencies.
7627 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
7629         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
7630         punt for user-aligned variables.
7632 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
7634         * tree-chrec.c (chrec_contains_symbols): Return true for
7635         POLY_INT_CST.
7637 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
7639         PR target/82439
7640         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
7641         of (x|y) == x for BICS pattern.
7643 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
7645         PR tree-optimization/83605
7646         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
7647         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
7648         can throw.
7650 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
7652         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
7653         * config/epiphany/rtems.h: New file.
7655 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
7656             Uros Bizjak  <ubizjak@gmail.com>
7658         PR target/83554
7659         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
7660         QIreg_operand instead of register_operand predicate.
7661         * config/i386/i386.c (ix86_rop_should_change_byte_p,
7662         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
7663         comments instead of -fmitigate[-_]rop.
7665 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7667         PR bootstrap/81926
7668         * cgraphunit.c (symbol_table::compile): Switch to text_section
7669         before calling assembly_start debug hook.
7670         * run-rtl-passes.c (run_rtl_passes): Likewise.
7671         Include output.h.
7673 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
7675         * tree-vrp.c (extract_range_from_binary_expr_1): Check
7676         range_int_cst_p rather than !symbolic_range_p before calling
7677         extract_range_from_multiplicative_op_1.
7679 2018-01-04  Jeff Law  <law@redhat.com>
7681         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
7682         redundant test in assertion.
7684 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
7686         * doc/rtl.texi: Document machine_mode wrapper classes.
7688 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
7690         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
7691         using tree_to_uhwi.
7693 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
7695         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
7696         the VEC_PERM_EXPR fold to fail.
7698 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
7700         PR debug/83585
7701         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
7702         to switched_sections.
7704 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
7706         PR target/83680
7707         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
7708         test for d.testing.
7710 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
7712         PR target/83387
7713         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
7714         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
7716 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
7718         PR debug/83666
7719         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
7720         is BLKmode and bitpos not zero or mode change is needed.
7722 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
7724         PR target/83675
7725         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
7726         TARGET_VIS2.
7728 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
7730         PR target/83628
7731         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
7732         instead of MULT rtx.  Update all corresponding splitters.
7733         (*saddl_se): Ditto.
7734         (*ssub<modesuffix>): Ditto.
7735         (*ssubl_se): Ditto.
7736         (*cmp_sadd_di): Update split patterns.
7737         (*cmp_sadd_si): Ditto.
7738         (*cmp_sadd_sidi): Ditto.
7739         (*cmp_ssub_di): Ditto.
7740         (*cmp_ssub_si): Ditto.
7741         (*cmp_ssub_sidi): Ditto.
7742         * config/alpha/predicates.md (const23_operand): New predicate.
7743         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
7744         Look for ASHIFT, not MULT inner operand.
7745         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
7747 2018-01-04  Martin Liska  <mliska@suse.cz>
7749         PR gcov-profile/83669
7750         * gcov.c (output_intermediate_file): Add version to intermediate
7751         gcov file.
7752         * doc/gcov.texi: Document new field 'version' in intermediate
7753         file format. Fix location of '-k' option of gcov command.
7755 2018-01-04  Martin Liska  <mliska@suse.cz>
7757         PR ipa/82352
7758         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
7760 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
7762         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
7764 2018-01-03  Martin Sebor  <msebor@redhat.com>
7766         PR tree-optimization/83655
7767         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
7768         checking calls with invalid arguments.
7770 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7772         * tree-vect-stmts.c (vect_get_store_rhs): New function.
7773         (vectorizable_mask_load_store): Delete.
7774         (vectorizable_call): Return false for masked loads and stores.
7775         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
7776         instead of gimple_assign_rhs1.
7777         (vectorizable_load): Handle IFN_MASK_LOAD.
7778         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
7780 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7782         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
7783         split out from..,
7784         (vectorizable_mask_load_store): ...here.
7785         (vectorizable_load): ...and here.
7787 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7789         * tree-vect-stmts.c (vect_build_all_ones_mask)
7790         (vect_build_zero_merge_argument): New functions, split out from...
7791         (vectorizable_load): ...here.
7793 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7795         * tree-vect-stmts.c (vect_check_store_rhs): New function,
7796         split out from...
7797         (vectorizable_mask_load_store): ...here.
7798         (vectorizable_store): ...and here.
7800 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7802         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
7803         split out from...
7804         (vectorizable_mask_load_store): ...here.
7806 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7808         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
7809         (vect_model_store_cost): Take a vec_load_store_type instead of a
7810         vect_def_type.
7811         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
7812         (vect_model_store_cost): Take a vec_load_store_type instead of a
7813         vect_def_type.
7814         (vectorizable_mask_load_store): Update accordingly.
7815         (vectorizable_store): Likewise.
7816         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
7818 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7820         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
7821         IFN_MASK_LOAD calls here rather than...
7822         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
7824 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7825             Alan Hayward  <alan.hayward@arm.com>
7826             David Sherwood  <david.sherwood@arm.com>
7828         * expmed.c (extract_bit_field_1): For vector extracts,
7829         fall back to extract_bit_field_as_subreg if vec_extract
7830         isn't available.
7832 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7833             Alan Hayward  <alan.hayward@arm.com>
7834             David Sherwood  <david.sherwood@arm.com>
7836         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
7837         they are variable or constant sized.
7838         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
7839         slots for constant-sized data.
7841 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7842             Alan Hayward  <alan.hayward@arm.com>
7843             David Sherwood  <david.sherwood@arm.com>
7845         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
7846         handling COND_EXPRs with boolean comparisons, try to find a better
7847         basis for the mask type than the boolean itself.
7849 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7851         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
7852         is calculated and how it can be overridden.
7853         * genmodes.c (max_bitsize_mode_any_mode): New variable.
7854         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
7855         if defined.
7856         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
7857         if nonzero.
7859 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7860             Alan Hayward  <alan.hayward@arm.com>
7861             David Sherwood  <david.sherwood@arm.com>
7863         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
7864         Remove the mode argument.
7865         (aarch64_simd_valid_immediate): Remove the mode and inverse
7866         arguments.
7867         * config/aarch64/iterators.md (bitsize): New iterator.
7868         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
7869         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
7870         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
7871         aarch64_simd_valid_immediate.
7872         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
7873         (aarch64_reg_or_bic_imm): Likewise.
7874         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
7875         with an insn_type enum and msl with a modifier_type enum.
7876         Replace element_width with a scalar_mode.  Change the shift
7877         to unsigned int.  Add constructors for scalar_float_mode and
7878         scalar_int_mode elements.
7879         (aarch64_vect_float_const_representable_p): Delete.
7880         (aarch64_can_const_movi_rtx_p)
7881         (aarch64_simd_scalar_immediate_valid_for_move)
7882         (aarch64_simd_make_constant): Update call to
7883         aarch64_simd_valid_immediate.
7884         (aarch64_advsimd_valid_immediate_hs): New function.
7885         (aarch64_advsimd_valid_immediate): Likewise.
7886         (aarch64_simd_valid_immediate): Remove mode and inverse
7887         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
7888         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
7889         and aarch64_float_const_representable_p on the result.
7890         (aarch64_output_simd_mov_immediate): Remove mode argument.
7891         Update call to aarch64_simd_valid_immediate and use of
7892         simd_immediate_info.
7893         (aarch64_output_scalar_simd_mov_immediate): Update call
7894         accordingly.
7896 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7897             Alan Hayward  <alan.hayward@arm.com>
7898             David Sherwood  <david.sherwood@arm.com>
7900         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
7901         (mode_nunits): Likewise CONST_MODE_NUNITS.
7902         * machmode.def (ADJUST_NUNITS): Document.
7903         * genmodes.c (mode_data::need_nunits_adj): New field.
7904         (blank_mode): Update accordingly.
7905         (adj_nunits): New variable.
7906         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
7907         parameter.
7908         (emit_mode_size_inline): Set need_bytesize_adj for all modes
7909         listed in adj_nunits.
7910         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
7911         listed in adj_nunits.  Don't emit case statements for such modes.
7912         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
7913         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
7914         nothing if adj_nunits is nonnull.
7915         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
7916         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
7917         (emit_mode_fbit): Update use of print_maybe_const_decl.
7918         (emit_move_size): Likewise.  Treat the array as non-const
7919         if adj_nunits.
7920         (emit_mode_adjustments): Handle adj_nunits.
7922 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7924         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
7925         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
7926         (VECTOR_MODES): Use it.
7927         (make_vector_modes): Take the prefix as an argument.
7929 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7930             Alan Hayward  <alan.hayward@arm.com>
7931             David Sherwood  <david.sherwood@arm.com>
7933         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
7934         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
7935         for MODE_VECTOR_BOOL.
7936         * machmode.def (VECTOR_BOOL_MODE): Document.
7937         * genmodes.c (VECTOR_BOOL_MODE): New macro.
7938         (make_vector_bool_mode): New function.
7939         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
7940         MODE_VECTOR_BOOL.
7941         * lto-streamer-in.c (lto_input_mode_table): Likewise.
7942         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
7943         Likewise.
7944         * stor-layout.c (int_mode_for_mode): Likewise.
7945         * tree.c (build_vector_type_for_mode): Likewise.
7946         * varasm.c (output_constant_pool_2): Likewise.
7947         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
7948         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
7949         for MODE_VECTOR_BOOL.
7950         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
7951         of mode class checks.
7952         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
7953         instead of a list of mode class checks.
7954         (expand_vector_scalar_condition): Likewise.
7955         (type_for_widest_vector_mode): Handle BImode as an inner mode.
7957 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
7958             Alan Hayward  <alan.hayward@arm.com>
7959             David Sherwood  <david.sherwood@arm.com>
7961         * machmode.h (mode_size): Change from unsigned short to
7962         poly_uint16_pod.
7963         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
7964         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
7965         or if measurement_type is not polynomial.
7966         (fixed_size_mode::includes_p): Check for constant-sized modes.
7967         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
7968         return a poly_uint16 rather than an unsigned short.
7969         (emit_mode_size): Change the type of mode_size from unsigned short
7970         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
7971         (emit_mode_adjustments): Cope with polynomial vector sizes.
7972         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
7973         for GET_MODE_SIZE.
7974         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
7975         for GET_MODE_SIZE.
7976         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
7977         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
7978         * caller-save.c (setup_save_areas): Likewise.
7979         (replace_reg_with_saved_mem): Likewise.
7980         * calls.c (emit_library_call_value_1): Likewise.
7981         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
7982         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
7983         (gen_lowpart_for_combine): Likewise.
7984         * convert.c (convert_to_integer_1): Likewise.
7985         * cse.c (equiv_constant, cse_insn): Likewise.
7986         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
7987         (cselib_subst_to_values): Likewise.
7988         * dce.c (word_dce_process_block): Likewise.
7989         * df-problems.c (df_word_lr_mark_ref): Likewise.
7990         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
7991         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
7992         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
7993         (rtl_for_decl_location): Likewise.
7994         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
7995         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
7996         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
7997         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
7998         (expand_expr_real_1): Likewise.
7999         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
8000         (pad_below): Likewise.
8001         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
8002         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
8003         * ira.c (get_subreg_tracking_sizes): Likewise.
8004         * ira-build.c (ira_create_allocno_objects): Likewise.
8005         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
8006         (ira_sort_regnos_for_alter_reg): Likewise.
8007         * ira-costs.c (record_operand_costs): Likewise.
8008         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
8009         (resolve_simple_move): Likewise.
8010         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
8011         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
8012         (lra_constraints): Likewise.
8013         (CONST_POOL_OK_P): Reject variable-sized modes.
8014         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
8015         (add_pseudo_to_slot, lra_spill): Likewise.
8016         * omp-low.c (omp_clause_aligned_alignment): Likewise.
8017         * optabs-query.c (get_best_extraction_insn): Likewise.
8018         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
8019         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
8020         (expand_mult_highpart, valid_multiword_target_p): Likewise.
8021         * recog.c (offsettable_address_addr_space_p): Likewise.
8022         * regcprop.c (maybe_mode_change): Likewise.
8023         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
8024         * regrename.c (build_def_use): Likewise.
8025         * regstat.c (dump_reg_info): Likewise.
8026         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
8027         (find_reloads, find_reloads_subreg_address): Likewise.
8028         * reload1.c (eliminate_regs_1): Likewise.
8029         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
8030         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
8031         (simplify_binary_operation_1, simplify_subreg): Likewise.
8032         * targhooks.c (default_function_arg_padding): Likewise.
8033         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
8034         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
8035         (verify_gimple_assign_ternary): Likewise.
8036         * tree-inline.c (estimate_move_cost): Likewise.
8037         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
8038         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
8039         (get_address_cost_ainc): Likewise.
8040         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
8041         (vect_supportable_dr_alignment): Likewise.
8042         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
8043         (vectorizable_reduction): Likewise.
8044         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
8045         (vectorizable_operation, vectorizable_load): Likewise.
8046         * tree.c (build_same_sized_truth_vector_type): Likewise.
8047         * valtrack.c (cleanup_auto_inc_dec): Likewise.
8048         * var-tracking.c (emit_note_insn_var_location): Likewise.
8049         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
8050         (ADDR_VEC_ALIGN): Likewise.
8052 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8053             Alan Hayward  <alan.hayward@arm.com>
8054             David Sherwood  <david.sherwood@arm.com>
8056         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
8057         unsigned short.
8058         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
8059         or if measurement_type is polynomial.
8060         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
8061         * combine.c (make_extraction): Likewise.
8062         * dse.c (find_shift_sequence): Likewise.
8063         * dwarf2out.c (mem_loc_descriptor): Likewise.
8064         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
8065         (extract_bit_field, extract_low_bits): Likewise.
8066         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
8067         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
8068         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
8069         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
8070         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
8071         * reload.c (find_reloads): Likewise.
8072         * reload1.c (alter_reg): Likewise.
8073         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
8074         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
8075         * tree-if-conv.c (predicate_mem_writes): Likewise.
8076         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
8077         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
8078         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
8079         * valtrack.c (dead_debug_insert_temp): Likewise.
8080         * varasm.c (mergeable_constant_section): Likewise.
8081         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
8083 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8084             Alan Hayward  <alan.hayward@arm.com>
8085             David Sherwood  <david.sherwood@arm.com>
8087         * expr.c (expand_assignment): Cope with polynomial mode sizes
8088         when assigning to a CONCAT.
8090 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8091             Alan Hayward  <alan.hayward@arm.com>
8092             David Sherwood  <david.sherwood@arm.com>
8094         * machmode.h (mode_precision): Change from unsigned short to
8095         poly_uint16_pod.
8096         (mode_to_precision): Return a poly_uint16 rather than an unsigned
8097         short.
8098         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
8099         or if measurement_type is not polynomial.
8100         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
8101         in which the mode is already known to be a scalar_int_mode.
8102         * genmodes.c (emit_mode_precision): Change the type of mode_precision
8103         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
8104         initializer.
8105         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
8106         for GET_MODE_PRECISION.
8107         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
8108         for GET_MODE_PRECISION.
8109         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
8110         as polynomial.
8111         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
8112         (expand_field_assignment, make_extraction): Likewise.
8113         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
8114         (get_last_value): Likewise.
8115         * convert.c (convert_to_integer_1): Likewise.
8116         * cse.c (cse_insn): Likewise.
8117         * expr.c (expand_expr_real_1): Likewise.
8118         * lra-constraints.c (simplify_operand_subreg): Likewise.
8119         * optabs-query.c (can_atomic_load_p): Likewise.
8120         * optabs.c (expand_atomic_load): Likewise.
8121         (expand_atomic_store): Likewise.
8122         * ree.c (combine_reaching_defs): Likewise.
8123         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
8124         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
8125         * tree.h (type_has_mode_precision_p): Likewise.
8126         * ubsan.c (instrument_si_overflow): Likewise.
8128 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8129             Alan Hayward  <alan.hayward@arm.com>
8130             David Sherwood  <david.sherwood@arm.com>
8132         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
8133         polynomial numbers of units.
8134         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
8135         (valid_vector_subparts_p): New function.
8136         (build_vector_type): Remove temporary shim and take the number
8137         of units as a poly_uint64 rather than an int.
8138         (build_opaque_vector_type): Take the number of units as a
8139         poly_uint64 rather than an int.
8140         * tree.c (build_vector_from_ctor): Handle polynomial
8141         TYPE_VECTOR_SUBPARTS.
8142         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
8143         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
8144         (build_vector_from_val): If the number of units is variable,
8145         use build_vec_duplicate_cst for constant operands and
8146         VEC_DUPLICATE_EXPR otherwise.
8147         (make_vector_type): Remove temporary is_constant ().
8148         (build_vector_type, build_opaque_vector_type): Take the number of
8149         units as a poly_uint64 rather than an int.
8150         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
8151         VECTOR_CST_NELTS.
8152         * cfgexpand.c (expand_debug_expr): Likewise.
8153         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
8154         (store_constructor, expand_expr_real_1): Likewise.
8155         (const_scalar_mask_from_tree): Likewise.
8156         * fold-const-call.c (fold_const_reduction): Likewise.
8157         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
8158         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
8159         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
8160         (fold_relational_const): Likewise.
8161         (native_interpret_vector): Likewise.  Change the size from an
8162         int to an unsigned int.
8163         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
8164         TYPE_VECTOR_SUBPARTS.
8165         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
8166         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
8167         duplicating a non-constant operand into a variable-length vector.
8168         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
8169         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
8170         * ipa-icf.c (sem_variable::equals): Likewise.
8171         * match.pd: Likewise.
8172         * omp-simd-clone.c (simd_clone_subparts): Likewise.
8173         * print-tree.c (print_node): Likewise.
8174         * stor-layout.c (layout_type): Likewise.
8175         * targhooks.c (default_builtin_vectorization_cost): Likewise.
8176         * tree-cfg.c (verify_gimple_comparison): Likewise.
8177         (verify_gimple_assign_binary): Likewise.
8178         (verify_gimple_assign_ternary): Likewise.
8179         (verify_gimple_assign_single): Likewise.
8180         * tree-pretty-print.c (dump_generic_node): Likewise.
8181         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
8182         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
8183         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
8184         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
8185         (vect_shift_permute_load_chain): Likewise.
8186         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
8187         (expand_vector_condition, optimize_vector_constructor): Likewise.
8188         (lower_vec_perm, get_compute_type): Likewise.
8189         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
8190         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
8191         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
8192         (vect_recog_mask_conversion_pattern): Likewise.
8193         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
8194         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
8195         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
8196         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
8197         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
8198         (vectorizable_shift, vectorizable_operation, vectorizable_store)
8199         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
8200         (supportable_widening_operation): Likewise.
8201         (supportable_narrowing_operation): Likewise.
8202         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
8203         Likewise.
8204         * varasm.c (output_constant): Likewise.
8206 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8207             Alan Hayward  <alan.hayward@arm.com>
8208             David Sherwood  <david.sherwood@arm.com>
8210         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
8211         so that both the length == 3 and length != 3 cases set up their
8212         own permute vectors.  Add comments explaining why we know the
8213         number of elements is constant.
8214         (vect_permute_load_chain): Likewise.
8216 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8217             Alan Hayward  <alan.hayward@arm.com>
8218             David Sherwood  <david.sherwood@arm.com>
8220         * machmode.h (mode_nunits): Change from unsigned char to
8221         poly_uint16_pod.
8222         (ONLY_FIXED_SIZE_MODES): New macro.
8223         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
8224         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
8225         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
8226         New typedefs.
8227         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
8228         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
8229         or if measurement_type is not polynomial.
8230         * genmodes.c (ZERO_COEFFS): New macro.
8231         (emit_mode_nunits_inline): Make mode_nunits_inline return a
8232         poly_uint16.
8233         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
8234         Use ZERO_COEFFS when emitting initializers.
8235         * data-streamer.h (bp_pack_poly_value): New function.
8236         (bp_unpack_poly_value): Likewise.
8237         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
8238         for GET_MODE_NUNITS.
8239         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
8240         for GET_MODE_NUNITS.
8241         * tree.c (make_vector_type): Remove temporary shim and make
8242         the real function take the number of units as a poly_uint64
8243         rather than an int.
8244         (build_vector_type_for_mode): Handle polynomial nunits.
8245         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
8246         * emit-rtl.c (const_vec_series_p_1): Likewise.
8247         (gen_rtx_CONST_VECTOR): Likewise.
8248         * fold-const.c (test_vec_duplicate_folding): Likewise.
8249         * genrecog.c (validate_pattern): Likewise.
8250         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
8251         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
8252         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
8253         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
8254         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
8255         * rtlanal.c (subreg_get_info): Likewise.
8256         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
8257         (vect_grouped_load_supported): Likewise.
8258         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
8259         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
8260         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
8261         (simplify_const_unary_operation, simplify_binary_operation_1)
8262         (simplify_const_binary_operation, simplify_ternary_operation)
8263         (test_vector_ops_duplicate, test_vector_ops): Likewise.
8264         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
8265         instead of CONST_VECTOR_NUNITS.
8266         * varasm.c (output_constant_pool_2): Likewise.
8267         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
8268         explicit-encoded elements in the XVEC for variable-length vectors.
8270 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8272         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
8274 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8275             Alan Hayward  <alan.hayward@arm.com>
8276             David Sherwood  <david.sherwood@arm.com>
8278         * coretypes.h (fixed_size_mode): Declare.
8279         (fixed_size_mode_pod): New typedef.
8280         * builtins.h (target_builtins::x_apply_args_mode)
8281         (target_builtins::x_apply_result_mode): Change type to
8282         fixed_size_mode_pod.
8283         * builtins.c (apply_args_size, apply_result_size, result_vector)
8284         (expand_builtin_apply_args_1, expand_builtin_apply)
8285         (expand_builtin_return): Update accordingly.
8287 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8289         * cse.c (hash_rtx_cb): Hash only the encoded elements.
8290         * cselib.c (cselib_hash_rtx): Likewise.
8291         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
8292         CONST_VECTOR encoding.
8294 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
8295             Jeff Law  <law@redhat.com>
8297         PR target/83641
8298         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
8299         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
8300         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
8301         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
8303         PR target/83641
8304         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
8305         explicitly probe *sp in a noreturn function if there were any callee
8306         register saves or frame pointer is needed.
8308 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
8310         PR debug/83621
8311         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
8312         BLKmode for ternary, binary or unary expressions.
8314         PR debug/83645
8315         * var-tracking.c (delete_vta_debug_insn): New inline function.
8316         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
8317         insns from get_insns () to NULL instead of each bb separately.
8318         Use delete_vta_debug_insn.  No longer static.
8319         (vt_debug_insns_local, variable_tracking_main_1): Adjust
8320         delete_vta_debug_insns callers.
8321         * rtl.h (delete_vta_debug_insns): Declare.
8322         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
8323         instead of variable_tracking_main.
8325 2018-01-03  Martin Sebor  <msebor@redhat.com>
8327         PR tree-optimization/83603
8328         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
8329         arguments past the endof the argument list in functions declared
8330         without a prototype.
8331         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
8332         Avoid checking when arguments are null.
8334 2018-01-03  Martin Sebor  <msebor@redhat.com>
8336         PR c/83559
8337         * doc/extend.texi (attribute const): Fix a typo.
8338         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
8339         issuing -Wsuggest-attribute for void functions.
8341 2018-01-03  Martin Sebor  <msebor@redhat.com>
8343         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
8344         offset_int::from instead of wide_int::to_shwi.
8345         (maybe_diag_overlap): Remove assertion.
8346         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
8347         * gimple-ssa-sprintf.c (format_directive): Same.
8348         (parse_directive): Same.
8349         (sprintf_dom_walker::compute_format_length): Same.
8350         (try_substitute_return_value): Same.
8352 2018-01-03  Jeff Law  <law@redhat.com>
8354         PR middle-end/83654
8355         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
8356         non-constant residual for zero at runtime and avoid probing in
8357         that case.  Reorganize code for trailing problem to mirror handling
8358         of the residual.
8360 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8362         PR tree-optimization/83501
8363         * tree-ssa-strlen.c (get_string_cst): New.
8364         (handle_char_store): Call get_string_cst.
8366 2018-01-03  Martin Liska  <mliska@suse.cz>
8368         PR tree-optimization/83593
8369         * tree-ssa-strlen.c: Include tree-cfg.h.
8370         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
8371         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
8372         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
8373         to false.
8374         (strlen_dom_walker::before_dom_children): Call
8375         gimple_purge_dead_eh_edges. Dump tranformation with details
8376         dump flags.
8377         (strlen_dom_walker::before_dom_children): Update call by adding
8378         new argument cleanup_eh.
8379         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
8381 2018-01-03  Martin Liska  <mliska@suse.cz>
8383         PR ipa/83549
8384         * cif-code.def (VARIADIC_THUNK): New enum value.
8385         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
8386         thunks.
8388 2018-01-03  Jan Beulich  <jbeulich@suse.com>
8390         * sse.md (mov<mode>_internal): Tighten condition for when to use
8391         vmovdqu<ssescalarsize> for TI and OI modes.
8393 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
8395         Update copyright years.
8397 2018-01-03  Martin Liska  <mliska@suse.cz>
8399         PR ipa/83594
8400         * ipa-visibility.c (function_and_variable_visibility): Skip
8401         functions with noipa attribure.
8403 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
8405         * gcc.c (process_command): Update copyright notice dates.
8406         * gcov-dump.c (print_version): Ditto.
8407         * gcov.c (print_version): Ditto.
8408         * gcov-tool.c (print_version): Ditto.
8409         * gengtype.c (create_file): Ditto.
8410         * doc/cpp.texi: Bump @copying's copyright year.
8411         * doc/cppinternals.texi: Ditto.
8412         * doc/gcc.texi: Ditto.
8413         * doc/gccint.texi: Ditto.
8414         * doc/gcov.texi: Ditto.
8415         * doc/install.texi: Ditto.
8416         * doc/invoke.texi: Ditto.
8418 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8420         * vector-builder.h (vector_builder::m_full_nelts): Change from
8421         unsigned int to poly_uint64.
8422         (vector_builder::full_nelts): Update prototype accordingly.
8423         (vector_builder::new_vector): Likewise.
8424         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
8425         (vector_builder::operator ==): Likewise.
8426         (vector_builder::finalize): Likewise.
8427         * int-vector-builder.h (int_vector_builder::int_vector_builder):
8428         Take the number of elements as a poly_uint64 rather than an
8429         unsigned int.
8430         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
8431         from unsigned int to poly_uint64.
8432         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
8433         (vec_perm_indices::new_vector): Likewise.
8434         (vec_perm_indices::length): Likewise.
8435         (vec_perm_indices::nelts_per_input): Likewise.
8436         (vec_perm_indices::input_nelts): Likewise.
8437         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
8438         number of elements per input as a poly_uint64 rather than an
8439         unsigned int.  Use the original encoding for variable-length
8440         vectors, rather than clamping each individual element.
8441         For the second and subsequent elements in each pattern,
8442         clamp the step and base before clamping their sum.
8443         (vec_perm_indices::series_p): Handle polynomial element counts.
8444         (vec_perm_indices::all_in_range_p): Likewise.
8445         (vec_perm_indices_to_tree): Likewise.
8446         (vec_perm_indices_to_rtx): Likewise.
8447         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
8448         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
8449         (tree_vector_builder::new_binary_operation): Handle polynomial
8450         element counts.  Return false if we need to know the number
8451         of elements at compile time.
8452         * fold-const.c (fold_vec_perm): Punt if the number of elements
8453         isn't known at compile time.
8455 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8457         * vec-perm-indices.h (vec_perm_builder): Change element type
8458         from HOST_WIDE_INT to poly_int64.
8459         (vec_perm_indices::element_type): Update accordingly.
8460         (vec_perm_indices::clamp): Handle polynomial element_types.
8461         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
8462         (vec_perm_indices::all_in_range_p): Likewise.
8463         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
8464         than shwi trees.
8465         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
8466         polynomial vec_perm_indices element types.
8467         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
8468         * fold-const.c (fold_vec_perm): Likewise.
8469         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
8470         * tree-vect-generic.c (lower_vec_perm): Likewise.
8471         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
8472         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
8473         element type to HOST_WIDE_INT.
8475 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8476             Alan Hayward  <alan.hayward@arm.com>
8477             David Sherwood  <david.sherwood@arm.com>
8479         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
8480         rather than an int.  Use plus_constant.
8481         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
8482         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
8484 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8485             Alan Hayward  <alan.hayward@arm.com>
8486             David Sherwood  <david.sherwood@arm.com>
8488         * calls.c (emit_call_1, expand_call): Change struct_value_size from
8489         a HOST_WIDE_INT to a poly_int64.
8491 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8492             Alan Hayward  <alan.hayward@arm.com>
8493             David Sherwood  <david.sherwood@arm.com>
8495         * calls.c (load_register_parameters): Cope with polynomial
8496         mode sizes.  Require a constant size for BLKmode parameters
8497         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
8498         forces a parameter to be padded at the lsb end in order to
8499         fill a complete number of words, require the parameter size
8500         to be ordered wrt UNITS_PER_WORD.
8502 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8503             Alan Hayward  <alan.hayward@arm.com>
8504             David Sherwood  <david.sherwood@arm.com>
8506         * reload1.c (spill_stack_slot_width): Change element type
8507         from unsigned int to poly_uint64_pod.
8508         (alter_reg): Treat mode sizes as polynomial.
8510 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8511             Alan Hayward  <alan.hayward@arm.com>
8512             David Sherwood  <david.sherwood@arm.com>
8514         * reload.c (complex_word_subreg_p): New function.
8515         (reload_inner_reg_of_subreg, push_reload): Use it.
8517 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8518             Alan Hayward  <alan.hayward@arm.com>
8519             David Sherwood  <david.sherwood@arm.com>
8521         * lra-constraints.c (process_alt_operands): Reject matched
8522         operands whose sizes aren't ordered.
8523         (match_reload): Refer to this check here.
8525 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8526             Alan Hayward  <alan.hayward@arm.com>
8527             David Sherwood  <david.sherwood@arm.com>
8529         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
8530         that the mode size is in the set {1, 2, 4, 8, 16}.
8532 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8533             Alan Hayward  <alan.hayward@arm.com>
8534             David Sherwood  <david.sherwood@arm.com>
8536         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
8537         Use plus_constant instead of gen_rtx_PLUS.
8539 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8540             Alan Hayward  <alan.hayward@arm.com>
8541             David Sherwood  <david.sherwood@arm.com>
8543         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
8544         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
8545         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
8546         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
8547         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
8548         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
8549         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
8550         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
8551         * config/i386/i386.c (ix86_push_rounding): ...this new function.
8552         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
8553         a poly_int64.
8554         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
8555         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
8556         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
8557         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
8558         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
8559         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
8560         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
8561         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
8562         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
8563         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
8564         function.
8565         * expr.c (emit_move_resolve_push): Treat the input and result
8566         of PUSH_ROUNDING as a poly_int64.
8567         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
8568         (emit_push_insn): Likewise.
8569         * lra-eliminations.c (mark_not_eliminable): Likewise.
8570         * recog.c (push_operand): Likewise.
8571         * reload1.c (elimination_effects): Likewise.
8572         * rtlanal.c (nonzero_bits1): Likewise.
8573         * calls.c (store_one_arg): Likewise.  Require the padding to be
8574         known at compile time.
8576 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8577             Alan Hayward  <alan.hayward@arm.com>
8578             David Sherwood  <david.sherwood@arm.com>
8580         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
8581         Use plus_constant instead of gen_rtx_PLUS.
8583 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8584             Alan Hayward  <alan.hayward@arm.com>
8585             David Sherwood  <david.sherwood@arm.com>
8587         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
8588         rather than an int.
8590 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8591             Alan Hayward  <alan.hayward@arm.com>
8592             David Sherwood  <david.sherwood@arm.com>
8594         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
8595         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
8596         via stack temporaries.  Treat the mode size as polynomial too.
8598 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8599             Alan Hayward  <alan.hayward@arm.com>
8600             David Sherwood  <david.sherwood@arm.com>
8602         * expr.c (expand_expr_real_2): When handling conversions involving
8603         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
8604         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
8605         as a poly_uint64 too.
8607 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8608             Alan Hayward  <alan.hayward@arm.com>
8609             David Sherwood  <david.sherwood@arm.com>
8611         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
8613 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8614             Alan Hayward  <alan.hayward@arm.com>
8615             David Sherwood  <david.sherwood@arm.com>
8617         * combine.c (can_change_dest_mode): Handle polynomial
8618         REGMODE_NATURAL_SIZE.
8619         * expmed.c (store_bit_field_1): Likewise.
8620         * expr.c (store_constructor): Likewise.
8621         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
8622         and polynomial REGMODE_NATURAL_SIZE.
8623         (gen_lowpart_common): Likewise.
8624         * reginfo.c (record_subregs_of_mode): Likewise.
8625         * rtlanal.c (read_modify_subreg_p): Likewise.
8627 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8628             Alan Hayward  <alan.hayward@arm.com>
8629             David Sherwood  <david.sherwood@arm.com>
8631         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
8632         numbers of elements.
8634 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8635             Alan Hayward  <alan.hayward@arm.com>
8636             David Sherwood  <david.sherwood@arm.com>
8638         * match.pd: Cope with polynomial numbers of vector elements.
8640 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8641             Alan Hayward  <alan.hayward@arm.com>
8642             David Sherwood  <david.sherwood@arm.com>
8644         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
8645         in a POINTER_PLUS_EXPR.
8647 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8648             Alan Hayward  <alan.hayward@arm.com>
8649             David Sherwood  <david.sherwood@arm.com>
8651         * omp-simd-clone.c (simd_clone_subparts): New function.
8652         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
8653         (ipa_simd_modify_function_body): Likewise.
8655 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8656             Alan Hayward  <alan.hayward@arm.com>
8657             David Sherwood  <david.sherwood@arm.com>
8659         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
8660         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
8661         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
8662         (expand_vector_condition, vector_element): Likewise.
8663         (subparts_gt): New function.
8664         (get_compute_type): Use subparts_gt.
8665         (count_type_subparts): Delete.
8666         (expand_vector_operations_1): Use subparts_gt instead of
8667         count_type_subparts.
8669 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8670             Alan Hayward  <alan.hayward@arm.com>
8671             David Sherwood  <david.sherwood@arm.com>
8673         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
8674         (vect_compile_time_alias): ...this new function.  Do the calculation
8675         on poly_ints rather than trees.
8676         (vect_prune_runtime_alias_test_list): Update call accordingly.
8678 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8679             Alan Hayward  <alan.hayward@arm.com>
8680             David Sherwood  <david.sherwood@arm.com>
8682         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
8683         numbers of units.
8684         (vect_schedule_slp_instance): Likewise.
8686 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8687             Alan Hayward  <alan.hayward@arm.com>
8688             David Sherwood  <david.sherwood@arm.com>
8690         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
8691         constant and extern definitions for variable-length vectors.
8692         (vect_get_constant_vectors): Note that the number of units
8693         is known to be constant.
8695 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8696             Alan Hayward  <alan.hayward@arm.com>
8697             David Sherwood  <david.sherwood@arm.com>
8699         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
8700         of units as polynomial.  Choose between WIDE and NARROW based
8701         on multiple_p.
8703 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8704             Alan Hayward  <alan.hayward@arm.com>
8705             David Sherwood  <david.sherwood@arm.com>
8707         * tree-vect-stmts.c (simd_clone_subparts): New function.
8708         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
8710 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8711             Alan Hayward  <alan.hayward@arm.com>
8712             David Sherwood  <david.sherwood@arm.com>
8714         * tree-vect-stmts.c (vectorizable_call): Treat the number of
8715         vectors as polynomial.  Use build_index_vector for
8716         IFN_GOMP_SIMD_LANE.
8718 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8719             Alan Hayward  <alan.hayward@arm.com>
8720             David Sherwood  <david.sherwood@arm.com>
8722         * tree-vect-stmts.c (get_load_store_type): Treat the number of
8723         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
8724         for variable-length vectors.
8725         (vectorizable_mask_load_store): Treat the number of units as
8726         polynomial, asserting that it is constant if the condition has
8727         already been enforced.
8728         (vectorizable_store, vectorizable_load): Likewise.
8730 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8731             Alan Hayward  <alan.hayward@arm.com>
8732             David Sherwood  <david.sherwood@arm.com>
8734         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
8735         of units as polynomial.  Punt if we can't tell at compile time
8736         which vector contains the final result.
8738 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8739             Alan Hayward  <alan.hayward@arm.com>
8740             David Sherwood  <david.sherwood@arm.com>
8742         * tree-vect-loop.c (vectorizable_induction): Treat the number
8743         of units as polynomial.  Punt on SLP inductions.  Use an integer
8744         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
8745         cast of such a series for variable-length floating-point
8746         reductions.
8748 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8749             Alan Hayward  <alan.hayward@arm.com>
8750             David Sherwood  <david.sherwood@arm.com>
8752         * tree.h (build_index_vector): Declare.
8753         * tree.c (build_index_vector): New function.
8754         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
8755         of units as polynomial, forcibly converting it to a constant if
8756         vectorizable_reduction has already enforced the condition.
8757         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
8758         to create a {1,2,3,...} vector.
8759         (vectorizable_reduction): Treat the number of units as polynomial.
8760         Choose vectype_in based on the largest scalar element size rather
8761         than the smallest number of units.  Enforce the restrictions
8762         relied on above.
8764 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8765             Alan Hayward  <alan.hayward@arm.com>
8766             David Sherwood  <david.sherwood@arm.com>
8768         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
8769         number of units as polynomial.
8771 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8772             Alan Hayward  <alan.hayward@arm.com>
8773             David Sherwood  <david.sherwood@arm.com>
8775         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
8776         * target.def (autovectorize_vector_sizes): Return the vector sizes
8777         by pointer, using vector_sizes rather than a bitmask.
8778         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
8779         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
8780         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
8781         Likewise.
8782         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
8783         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
8784         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
8785         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
8786         * omp-general.c (omp_max_vf): Likewise.
8787         * omp-low.c (omp_clause_aligned_alignment): Likewise.
8788         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
8789         * tree-vect-loop.c (vect_analyze_loop): Likewise.
8790         * tree-vect-slp.c (vect_slp_bb): Likewise.
8791         * doc/tm.texi: Regenerate.
8792         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
8793         to a poly_uint64.
8794         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
8795         the vector size as a poly_uint64 rather than an unsigned int.
8796         (current_vector_size): Change from an unsigned int to a poly_uint64.
8797         (get_vectype_for_scalar_type): Update accordingly.
8798         * tree.h (build_truth_vector_type): Take the size and number of
8799         units as a poly_uint64 rather than an unsigned int.
8800         (build_vector_type): Add a temporary overload that takes
8801         the number of units as a poly_uint64 rather than an unsigned int.
8802         * tree.c (make_vector_type): Likewise.
8803         (build_truth_vector_type): Take the number of units as a poly_uint64
8804         rather than an unsigned int.
8806 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8807             Alan Hayward  <alan.hayward@arm.com>
8808             David Sherwood  <david.sherwood@arm.com>
8810         * target.def (get_mask_mode): Take the number of units and length
8811         as poly_uint64s rather than unsigned ints.
8812         * targhooks.h (default_get_mask_mode): Update accordingly.
8813         * targhooks.c (default_get_mask_mode): Likewise.
8814         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
8815         * doc/tm.texi: Regenerate.
8817 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8818             Alan Hayward  <alan.hayward@arm.com>
8819             David Sherwood  <david.sherwood@arm.com>
8821         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
8822         * omp-general.c (omp_max_vf): Likewise.
8823         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
8824         (expand_omp_simd): Handle polynomial safelen.
8825         * omp-low.c (omplow_simd_context): Add a default constructor.
8826         (omplow_simd_context::max_vf): Change from int to poly_uint64.
8827         (lower_rec_simd_input_clauses): Update accordingly.
8828         (lower_rec_input_clauses): Likewise.
8830 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8831             Alan Hayward  <alan.hayward@arm.com>
8832             David Sherwood  <david.sherwood@arm.com>
8834         * tree-vectorizer.h (vect_nunits_for_cost): New function.
8835         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
8836         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
8837         (vect_analyze_slp_cost): Likewise.
8838         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
8839         (vect_model_load_cost): Likewise.
8841 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8842             Alan Hayward  <alan.hayward@arm.com>
8843             David Sherwood  <david.sherwood@arm.com>
8845         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
8846         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
8847         from an unsigned int * to a poly_uint64_pod *.
8848         (calculate_unrolling_factor): New function.
8849         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
8851 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8852             Alan Hayward  <alan.hayward@arm.com>
8853             David Sherwood  <david.sherwood@arm.com>
8855         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
8856         from an unsigned int to a poly_uint64.
8857         (_loop_vec_info::slp_unrolling_factor): Likewise.
8858         (_loop_vec_info::vectorization_factor): Change from an int
8859         to a poly_uint64.
8860         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
8861         (vect_get_num_vectors): New function.
8862         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
8863         (vect_get_num_copies): Use vect_get_num_vectors.
8864         (vect_analyze_data_ref_dependences): Change max_vf from an int *
8865         to an unsigned int *.
8866         (vect_analyze_data_refs): Change min_vf from an int * to a
8867         poly_uint64 *.
8868         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
8869         than an unsigned HOST_WIDE_INT.
8870         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
8871         (vect_analyze_data_ref_dependence): Change max_vf from an int *
8872         to an unsigned int *.
8873         (vect_analyze_data_ref_dependences): Likewise.
8874         (vect_compute_data_ref_alignment): Handle polynomial vf.
8875         (vect_enhance_data_refs_alignment): Likewise.
8876         (vect_prune_runtime_alias_test_list): Likewise.
8877         (vect_shift_permute_load_chain): Likewise.
8878         (vect_supportable_dr_alignment): Likewise.
8879         (dependence_distance_ge_vf): Take the vectorization factor as a
8880         poly_uint64 rather than an unsigned HOST_WIDE_INT.
8881         (vect_analyze_data_refs): Change min_vf from an int * to a
8882         poly_uint64 *.
8883         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
8884         vfm1 as a poly_uint64 rather than an int.  Make the same change
8885         for the returned bound_scalar.
8886         (vect_gen_vector_loop_niters): Handle polynomial vf.
8887         (vect_do_peeling): Likewise.  Update call to
8888         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
8889         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
8890         be constant.
8891         * tree-vect-loop.c (vect_determine_vectorization_factor)
8892         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
8893         (vect_get_known_peeling_cost): Likewise.
8894         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
8895         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
8896         (vect_transform_loop): Likewise.  Use the lowest possible VF when
8897         updating the upper bounds of the loop.
8898         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
8899         rather than an int.
8900         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
8901         polynomial unroll factors.
8902         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
8903         (vect_make_slp_decision): Likewise.
8904         (vect_supported_load_permutation_p): Likewise, and polynomial
8905         vf too.
8906         (vect_analyze_slp_cost): Handle polynomial vf.
8907         (vect_slp_analyze_node_operations): Likewise.
8908         (vect_slp_analyze_bb_1): Likewise.
8909         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
8910         than an unsigned HOST_WIDE_INT.
8911         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
8912         (vectorizable_load): Handle polynomial vf.
8913         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
8914         a poly_uint64.
8915         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
8917 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8918             Alan Hayward  <alan.hayward@arm.com>
8919             David Sherwood  <david.sherwood@arm.com>
8921         * match.pd: Handle bit operations involving three constants
8922         and try to fold one pair.
8924 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
8926         * tree-vect-loop-manip.c: Include gimple-fold.h.
8927         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
8928         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
8929         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
8930         Add a path that uses a step of VF instead of 1, but disable it
8931         for now.
8932         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
8933         and niters_no_overflow parameters.  Update calls to
8934         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
8935         Create a new SSA name if the latter choses to use a ste other
8936         than zero, and return it via niters_vector_mult_vf_var.
8937         * tree-vect-loop.c (vect_transform_loop): Update calls to
8938         vect_do_peeling, vect_gen_vector_loop_niters and
8939         slpeel_make_loop_iterate_ntimes.
8940         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
8941         (vect_gen_vector_loop_niters): Update declarations after above changes.
8943 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
8945         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
8946         128-bit round to integer instructions.
8947         (ceil<mode>2): Likewise.
8948         (btrunc<mode>2): Likewise.
8949         (round<mode>2): Likewise.
8951 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
8953         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
8954         unaligned VSX load/store on P8/P9.
8955         (expand_block_clear): Allow the use of unaligned VSX
8956         load/store on P8/P9.
8958 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8960         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
8961         New function.
8962         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
8963         swap associated with both a load and a store.
8965 2018-01-02  Andrew Waterman  <andrew@sifive.com>
8967         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
8968         * config/riscv/riscv.md (clear_cache): Use it.
8970 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
8972         * web.c: Remove out-of-date comment.
8974 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
8976         * expr.c (fixup_args_size_notes): Check that any existing
8977         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
8978         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
8979         (emit_single_push_insn): ...here.
8981 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
8983         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
8984         (const_vector_encoded_nelts): New function.
8985         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
8986         (const_vector_int_elt, const_vector_elt): Declare.
8987         * emit-rtl.c (const_vector_int_elt_1): New function.
8988         (const_vector_elt): Likewise.
8989         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
8990         of CONST_VECTOR_ELT.
8992 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
8994         * expr.c: Include rtx-vector-builder.h.
8995         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
8996         directly on the tree encoding.
8997         (const_vector_from_tree): Likewise.
8998         * optabs.c: Include rtx-vector-builder.h.
8999         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
9000         sequence of "u" values.
9001         * vec-perm-indices.c: Include rtx-vector-builder.h.
9002         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
9003         directly on the vec_perm_indices encoding.
9005 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9007         * doc/rtl.texi (const_vector): Describe new encoding scheme.
9008         * Makefile.in (OBJS): Add rtx-vector-builder.o.
9009         * rtx-vector-builder.h: New file.
9010         * rtx-vector-builder.c: Likewise.
9011         * rtl.h (rtx_def::u2): Add a const_vector field.
9012         (CONST_VECTOR_NPATTERNS): New macro.
9013         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
9014         (CONST_VECTOR_DUPLICATE_P): Likewise.
9015         (CONST_VECTOR_STEPPED_P): Likewise.
9016         (CONST_VECTOR_ENCODED_ELT): Likewise.
9017         (const_vec_duplicate_p): Check for a duplicated vector encoding.
9018         (unwrap_const_vec_duplicate): Likewise.
9019         (const_vec_series_p): Check for a non-duplicated vector encoding.
9020         Say that the function only returns true for integer vectors.
9021         * emit-rtl.c: Include rtx-vector-builder.h.
9022         (gen_const_vec_duplicate_1): Delete.
9023         (gen_const_vector): Call gen_const_vec_duplicate instead of
9024         gen_const_vec_duplicate_1.
9025         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
9026         (gen_const_vec_duplicate): Use rtx_vector_builder.
9027         (gen_const_vec_series): Likewise.
9028         (gen_rtx_CONST_VECTOR): Likewise.
9029         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
9030         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
9031         Build a new vector rather than modifying a CONST_VECTOR in-place.
9032         (handle_special_swappables): Update call accordingly.
9033         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
9034         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
9035         Build a new vector rather than modifying a CONST_VECTOR in-place.
9036         (handle_special_swappables): Update call accordingly.
9038 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9040         * simplify-rtx.c (simplify_const_binary_operation): Use
9041         CONST_VECTOR_ELT instead of XVECEXP.
9043 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9045         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
9046         the selector elements to be different from the data elements
9047         if the selector is a VECTOR_CST.
9048         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
9049         ssizetype for the selector.
9051 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9053         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
9054         before testing each element individually.
9055         * tree-vect-generic.c (lower_vec_perm): Likewise.
9057 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9059         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
9060         * selftest-run-tests.c (selftest::run_tests): Call it.
9061         * vector-builder.h (vector_builder::operator ==): New function.
9062         (vector_builder::operator !=): Likewise.
9063         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
9064         (vec_perm_indices::all_from_input_p): New function.
9065         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
9066         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
9067         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
9068         instead of reading the VECTOR_CST directly.  Detect whether both
9069         vector inputs are the same before constructing the vec_perm_indices,
9070         and update the number of inputs argument accordingly.  Use the
9071         utility functions added above.  Only construct sel2 if we need to.
9073 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9075         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
9076         the broadcast of the low byte.
9077         (expand_mult_highpart): Use an explicit encoding for the permutes.
9078         * optabs-query.c (can_mult_highpart_p): Likewise.
9079         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
9080         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
9081         (vectorizable_bswap): Likewise.
9082         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
9083         explicit encoding for the power-of-2 permutes.
9084         (vect_permute_store_chain): Likewise.
9085         (vect_grouped_load_supported): Likewise.
9086         (vect_permute_load_chain): Likewise.
9088 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9090         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
9091         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
9092         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
9093         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
9094         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
9095         (vect_gen_perm_mask_any): Likewise.
9097 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9099         * int-vector-builder.h: New file.
9100         * vec-perm-indices.h: Include int-vector-builder.h.
9101         (vec_perm_indices): Redefine as an int_vector_builder.
9102         (auto_vec_perm_indices): Delete.
9103         (vec_perm_builder): Redefine as a stand-alone class.
9104         (vec_perm_indices::vec_perm_indices): New function.
9105         (vec_perm_indices::clamp): Likewise.
9106         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
9107         (vec_perm_indices::new_vector): New function.
9108         (vec_perm_indices::new_expanded_vector): Update for new
9109         vec_perm_indices class.
9110         (vec_perm_indices::rotate_inputs): New function.
9111         (vec_perm_indices::all_in_range_p): Operate directly on the
9112         encoded form, without computing elided elements.
9113         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
9114         encoding.  Update for new vec_perm_indices class.
9115         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
9116         the given vec_perm_builder.
9117         (expand_vec_perm_var): Update vec_perm_builder constructor.
9118         (expand_mult_highpart): Use vec_perm_builder instead of
9119         auto_vec_perm_indices.
9120         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
9121         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
9122         or double series encoding as appropriate.
9123         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
9124         vec_perm_indices instead of auto_vec_perm_indices.
9125         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
9126         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
9127         (vect_permute_store_chain): Likewise.
9128         (vect_grouped_load_supported): Likewise.
9129         (vect_permute_load_chain): Likewise.
9130         (vect_shift_permute_load_chain): Likewise.
9131         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
9132         (vect_transform_slp_perm_load): Likewise.
9133         (vect_schedule_slp_instance): Likewise.
9134         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
9135         (vectorizable_mask_load_store): Likewise.
9136         (vectorizable_bswap): Likewise.
9137         (vectorizable_store): Likewise.
9138         (vectorizable_load): Likewise.
9139         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
9140         vec_perm_indices instead of auto_vec_perm_indices.  Use
9141         tree_to_vec_perm_builder to read the vector from a tree.
9142         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
9143         vec_perm_builder instead of a vec_perm_indices.
9144         (have_whole_vector_shift): Use vec_perm_builder and
9145         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
9146         truncation to calc_vec_perm_mask_for_shift.
9147         (vect_create_epilog_for_reduction): Likewise.
9148         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
9149         from auto_vec_perm_indices to vec_perm_indices.
9150         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
9151         instead of changing individual elements.
9152         (aarch64_vectorize_vec_perm_const): Use new_vector to install
9153         the vector in d.perm.
9154         * config/arm/arm.c (expand_vec_perm_d::perm): Change
9155         from auto_vec_perm_indices to vec_perm_indices.
9156         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
9157         instead of changing individual elements.
9158         (arm_vectorize_vec_perm_const): Use new_vector to install
9159         the vector in d.perm.
9160         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
9161         Update vec_perm_builder constructor.
9162         (rs6000_expand_interleave): Likewise.
9163         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
9164         (rs6000_expand_interleave): Likewise.
9166 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9168         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
9169         to qimode could truncate the indices.
9170         * optabs.c (expand_vec_perm_var): Likewise.
9172 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9174         * Makefile.in (OBJS): Add vec-perm-indices.o.
9175         * vec-perm-indices.h: New file.
9176         * vec-perm-indices.c: Likewise.
9177         * target.h (vec_perm_indices): Replace with a forward class
9178         declaration.
9179         (auto_vec_perm_indices): Move to vec-perm-indices.h.
9180         * optabs.h: Include vec-perm-indices.h.
9181         (expand_vec_perm): Delete.
9182         (selector_fits_mode_p, expand_vec_perm_var): Declare.
9183         (expand_vec_perm_const): Declare.
9184         * target.def (vec_perm_const_ok): Replace with...
9185         (vec_perm_const): ...this new hook.
9186         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
9187         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
9188         * doc/tm.texi: Regenerate.
9189         * optabs.def (vec_perm_const): Delete.
9190         * doc/md.texi (vec_perm_const): Likewise.
9191         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
9192         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
9193         expand_vec_perm for constant permutation vectors.  Assert that
9194         the mode of variable permutation vectors is the integer equivalent
9195         of the mode that is being permuted.
9196         * optabs-query.h (selector_fits_mode_p): Declare.
9197         * optabs-query.c: Include vec-perm-indices.h.
9198         (selector_fits_mode_p): New function.
9199         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
9200         is defined, instead of checking whether the vec_perm_const_optab
9201         exists.  Use targetm.vectorize.vec_perm_const instead of
9202         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
9203         fit in the vector mode before using a variable permute.
9204         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
9205         vec_perm_indices instead of an rtx.
9206         (expand_vec_perm): Replace with...
9207         (expand_vec_perm_const): ...this new function.  Take the selector
9208         as a vec_perm_indices rather than an rtx.  Also take the mode of
9209         the selector.  Update call to shift_amt_for_vec_perm_mask.
9210         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
9211         Use vec_perm_indices::new_expanded_vector to expand the original
9212         selector into bytes.  Check whether the indices fit in the vector
9213         mode before using a variable permute.
9214         (expand_vec_perm_var): Make global.
9215         (expand_mult_highpart): Use expand_vec_perm_const.
9216         * fold-const.c: Includes vec-perm-indices.h.
9217         * tree-ssa-forwprop.c: Likewise.
9218         * tree-vect-data-refs.c: Likewise.
9219         * tree-vect-generic.c: Likewise.
9220         * tree-vect-loop.c: Likewise.
9221         * tree-vect-slp.c: Likewise.
9222         * tree-vect-stmts.c: Likewise.
9223         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
9224         Delete.
9225         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
9226         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
9227         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
9228         (aarch64_vectorize_vec_perm_const): ...this new function.
9229         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
9230         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
9231         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
9232         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
9233         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
9234         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
9235         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
9236         into...
9237         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
9238         check for NEON modes.
9239         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
9240         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
9241         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
9242         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
9243         into...
9244         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
9245         the old VEC_PERM_CONST conditions.
9246         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
9247         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
9248         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
9249         (ia64_vectorize_vec_perm_const_ok): Merge into...
9250         (ia64_vectorize_vec_perm_const): ...this new function.
9251         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
9252         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
9253         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
9254         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
9255         * config/mips/mips.c (mips_expand_vec_perm_const)
9256         (mips_vectorize_vec_perm_const_ok): Merge into...
9257         (mips_vectorize_vec_perm_const): ...this new function.
9258         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
9259         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
9260         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
9261         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
9262         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
9263         (rs6000_expand_vec_perm_const): Delete.
9264         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
9265         Delete.
9266         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
9267         (altivec_expand_vec_perm_const_le): Take each operand individually.
9268         Operate on constant selectors rather than rtxes.
9269         (altivec_expand_vec_perm_const): Likewise.  Update call to
9270         altivec_expand_vec_perm_const_le.
9271         (rs6000_expand_vec_perm_const): Delete.
9272         (rs6000_vectorize_vec_perm_const_ok): Delete.
9273         (rs6000_vectorize_vec_perm_const): New function.
9274         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
9275         an element count and rtx array.
9276         (rs6000_expand_extract_even): Update call accordingly.
9277         (rs6000_expand_interleave): Likewise.
9278         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
9279         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
9280         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
9281         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
9282         (rs6000_expand_vec_perm_const): Delete.
9283         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
9284         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
9285         (altivec_expand_vec_perm_const_le): Take each operand individually.
9286         Operate on constant selectors rather than rtxes.
9287         (altivec_expand_vec_perm_const): Likewise.  Update call to
9288         altivec_expand_vec_perm_const_le.
9289         (rs6000_expand_vec_perm_const): Delete.
9290         (rs6000_vectorize_vec_perm_const_ok): Delete.
9291         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
9292         reference to the SPE evmerge intructions.
9293         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
9294         an element count and rtx array.
9295         (rs6000_expand_extract_even): Update call accordingly.
9296         (rs6000_expand_interleave): Likewise.
9297         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
9298         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
9299         new function.
9300         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
9302 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9304         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
9305         vector mode and that that mode matches the mode of the data
9306         being permuted.
9307         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
9308         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
9309         directly using expand_vec_perm_1 when forcing selectors into
9310         registers.
9311         (expand_vec_perm_var): New function, split out from expand_vec_perm.
9313 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9315         * optabs-query.h (can_vec_perm_p): Delete.
9316         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
9317         * optabs-query.c (can_vec_perm_p): Split into...
9318         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
9319         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
9320         particular selector is valid.
9321         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
9322         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
9323         (vect_grouped_load_supported): Likewise.
9324         (vect_shift_permute_load_chain): Likewise.
9325         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
9326         (vect_transform_slp_perm_load): Likewise.
9327         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
9328         (vectorizable_bswap): Likewise.
9329         (vect_gen_perm_mask_checked): Likewise.
9330         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
9331         implementations of variable permutation vectors into account
9332         when deciding which selector to use.
9333         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
9334         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
9335         with a false third argument.
9336         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
9337         to test whether the constant selector is valid and can_vec_perm_var_p
9338         to test whether a variable selector is valid.
9340 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9342         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
9343         * optabs-query.c (can_vec_perm_p): Likewise.
9344         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
9345         instead of vec_perm_indices.
9346         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
9347         (vect_gen_perm_mask_checked): Likewise,
9348         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
9349         (vect_gen_perm_mask_checked): Likewise,
9351 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
9353         * optabs-query.h (qimode_for_vec_perm): Declare.
9354         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
9355         (qimode_for_vec_perm): ...this new function.
9356         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
9358 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9360         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
9361         does not have a conditional at the top.
9363 2018-01-02  Richard Biener  <rguenther@suse.de>
9365         * ipa-inline.c (big_speedup_p): Fix expression.
9367 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
9369         PR target/81616
9370         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
9371         for generic 4->6.
9373 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
9375         PR target/81616
9376         Generic tuning.
9377         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
9378         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
9379         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
9380         cond_taken_branch_cost 3->4.
9382 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
9384         PR tree-optimization/83581
9385         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
9386         TODO_cleanup_cfg if any changes have been made.
9388         PR middle-end/83608
9389         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
9390         convert_modes if target mode has the right side, but different mode
9391         class.
9393         PR middle-end/83609
9394         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
9395         last argument when extracting from CONCAT.  If either from_real or
9396         from_imag is NULL, use expansion through memory.  If result is not
9397         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
9398         the parts directly to inner mode, if even that fails, use expansion
9399         through memory.
9401         PR middle-end/83623
9402         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
9403         check for bswap in mode rather than HImode and use that in expand_unop
9404         too.
9406 Copyright (C) 2018 Free Software Foundation, Inc.
9408 Copying and distribu