PR middle-end/85369 - no -Wstringop-overflow for a strcpy / stpcpy call with a nonstr...
[official-gcc.git] / gcc / ChangeLog
blob2c3858370ce15269e78ced675c37cd4c6503e7e5
1 2018-05-30  Martin Sebor  <msebor@redhat.com>
3         PR middle-end/85369
4         * builtins.c (expand_builtin_stpcpy_1): New function.
5         (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
6         only if the former succeeds.
8 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
10         * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
11         in saphira.
13 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
15         * doc/invoke.texi (-flinker-output): Document
17 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
19         * passes.c (ipa_write_summaries): Only modify statements if body
20         is in memory.
21         * cgraphunit.c (ipa_passes): Also produce intermeidate code when
22         incrementally linking.
23         (ipa_passes): Likewise.
24         * lto-cgraph.c (lto_output_node): When incrementally linking do not
25         pass down resolution info.
26         * common.opt (flag_incremental_link): Update info.
27         * gcc.c (plugin specs): Turn flinker-output=* to
28         -plugin-opt=-linker-output-known
29         * toplev.c (compile_file): Also cut compilation when doing incremental
30         link.
31         * flag-types. (enum lto_partition_model): Add
32         LTO_LINKER_OUTPUT_NOLTOREL.
33         (invoke.texi): Add -flinker-output docs.
34         * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
35         link same way as WPA; do not stream in dead initializers.
37         * dwarf2out.c (dwarf2out_die_ref_for_decl,
38         darf2out_register_external_decl): Support incremental link.
40 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
42         * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
44 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
46         * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
47         it down to simple_object_copy_lto_debug_sections.
48         (run_gcc): Determine incremental LTO link time and configure
49         lto1 into non-wpa mode, disable renaming of debug sections.
51 2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
53         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
54         descriptions of various incorrectly documented functions.
56 2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
58         Revert:
59         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
60         address check not strict.
62 2018-05-30  Richard Biener  <rguenther@suse.de>
64         PR tree-optimization/85964
65         * tracer.c (better_p): Drop initialized count check, we only
66         call the function with initialized counts now.
67         (find_best_successor): Do find a best edge if one
68         has uninitialized count.
69         (find_best_predecessor): Likewise.  Do BB frequency check only
70         if count is initialized.
72 2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
74         * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
75         (aarch64_ldrstr_offset_compare): New.
76         (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
77         load/store orderings.
78         (aarch64_gen_adjusted_ldpstp): Likewise.
80 2018-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
82         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
83         Check for subset of GENERAL_REGS and FP_REGS.
84         * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
85         r=w alternative.
87 2018-05-30  Richard Sandiford  <richard.sandiford@linaro.org>
89         * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
90         and wi::to_poly_offset.  Add the current offset and then check
91         whether the sum fits, rather than using an unchecked addition of
92         a checked term.  Check for a shwi rather than a uhwi.
93         * expr.c (get_bit_range): Use tree_to_poly_uint64.
94         (store_constructor): Use poly_int_tree_p.
95         (expand_expr_real_1): Likewise.
96         * function.c (assign_temp): Likewise.
97         * fold-const.c (const_binop): Use poly_int_tree_p and
98         wi::to_poly_offset.
99         (fold_indirect_ref_1): Likewise.  Use multiple_p to attempt an exact
100         division.
101         * ipa-icf-gimple.c (func_checker::compare_operand): Use
102         to_poly_offset for MEM offsets.
103         * ipa-icf.c (sem_variable::equals): Likewise.
104         * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
105         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
106         wi::to_poly_offset for BIT_FIELD_REF offsets.
107         (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
108         wi::to_poly_offset.
109         * var-tracking.c (emit_note_insn_var_location): Use
110         tree_to_poly_uint64.
112 2018-05-29  Jim Wilson  <jimw@sifive.com>
114         * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
116 2018-05-29  Uros Bizjak  <ubizjak@gmail.com>
118         PR target/85950
119         * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
120         Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
121         sequence.
122         (sse4_1_round<mode>2): Use nonimmediate_operand
123         for operand 1 predicate.
125 2018-05-29  Martin Sebor  <msebor@redhat.com>
126             Richard Biener  <rguenther@suse.de>
128         PR testsuite/85888
129         * calls.c (get_size_range): Call determine_value_range instead
130         of get_value_range..
131         * tree-vrp.h (determine_value_range): Declared new function.
132         * tree-vrp.c (determine_value_range_1, determine_value_range): New.
134 2018-05-29  Richard Biener  <rguenther@suse.de>
136         * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
137         sure to use non-pattern stmts for get_earlier_stmt arguments.
138         * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
139         called on pattern stmts.
140         (get_later_stmt): Likewise.
142 2018-05-29  Martin Liska  <mliska@suse.cz>
144         PR gcov-profile/85759
145         * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
146         env variables.
148 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
150         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
151         VEC_UNPACK_*_EXPR.
152         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
153         VEC_PACK_*_EXPR.
155         PR target/85918
156         * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
157         VEC_PACK_FLOAT_EXPR): New tree codes.
158         * tree-pretty-print.c (op_code_prio): Handle
159         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
160         (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
161         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
162         * tree-inline.c (estimate_operator_cost): Likewise.
163         * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
164         * fold-const.c (const_binop): Likewise.
165         (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
166         VEC_UNPACK_FIX_TRUNC_LO_EXPR.
167         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
168         (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
169         * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
170         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
171         * expr.c (expand_expr_real_2): Likewise.
172         * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
173         vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
174         vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
175         optabs.
176         * optabs.c (expand_widen_pattern_expr): For
177         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
178         sign from result type rather than operand's type.
179         (expand_binop_directly): For vec_packu_float_optab and
180         vec_packs_float_optab allow result type to be different from operand's
181         type.
182         * optabs-tree.c (optab_for_tree_code): Handle
183         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
184         VEC_PACK_FLOAT_EXPR.  Formatting fixes.
185         * tree-vect-generic.c (expand_vector_operations_1):  Handle
186         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
187         VEC_PACK_FLOAT_EXPR.
188         * tree-vect-stmts.c (supportable_widening_operation): Handle
189         FIX_TRUNC_EXPR.
190         (supportable_narrowing_operation): Handle FLOAT_EXPR.
191         * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
192         * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
193         (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
194         (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
195         mode attributes.
196         (vec_pack<floatprefix>_float_<mode>): New expander.
197         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
198         attributes.
199         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
200         vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
201         * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
202         vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
203         vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
204         Document.
205         * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
206         VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
207         (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
208         VEC_PACK_FLOAT_EXPR): Document.
210 2018-05-29  Richard Biener  <rguenther@suse.de>
212         * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
213         member.
214         (stmt_vec_info_vec): Make pointer.
215         (init_stmt_vec_info_vec): Remove.
216         (free_stmt_vec_info_vec): Likewise.
217         (set_stmt_vec_info_vec): New function.
218         (free_stmt_vec_infos): Likewise.
219         (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
220         (set_vinfo_for_stmt): Likewise.
221         (get_earlier_stmt): Likewise.
222         (get_later_stmt): Likewise.
223         * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
224         (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
225         (vec_info::~vec_info): Free stmt_vec_infos.
226         (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
227         Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
228         (pass_slp_vectorize::execute): Likewise.
229         * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
230         (free_stmt_vec_info_vec): Likewise.
231         (set_stmt_vec_info_vec): New function.
232         (free_stmt_vec_infos): Likewise.
233         * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
234         the global stmt_vec_info_vec.
235         * tree-parloops.c (gather_scalar_reductions): Use
236         set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
237         vector.
239 2018-05-29  Richard Biener  <rguenther@suse.de>
241         * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
243 2018-05-29  Martin Liska  <mliska@suse.cz>
244             David Malcolm  <dmalcolm@redhat.com>
246         * vec.c (test_reverse): New.
247         (vec_c_tests): Add new test.
248         * vec.h (vl_ptr>::reverse): New function.
250 2018-05-29  Gerald Pfeifer  <gerald@pfeifer.com>
252         * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
254         * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
255         and later.
257 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
259         * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
261 2018-05-28  Richard Biener  <rguenther@suse.de>
263         PR tree-optimization/85933
264         * tree-vect-data-refs.c (vect_record_base_alignments): Only
265         look at stmts marked as vectorizable.
267 2018-05-28  Richard Biener  <rguenther@suse.de>
269         PR tree-optimization/85934
270         * tree-vect-generic.c (expand_vector_operations_1): Hoist
271         vector boolean check before scalar optimization.
273 2018-05-28  Jakub Jelinek  <jakub@redhat.com>
275         * doc/invoke.texi (ARM Options): Use @item instead of @itemx
276         for armv5te.
278 2018-05-28  Mark Wielaard  <mark@klomp.org>
280         * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
281         if it is an expression containing a minus sign.
283 2018-05-27  John David Anglin  <danglin@gcc.gnu.org>
285         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
287 2018-05-27  Paul Koning  <ni1d@arrl.net>
289         * config/pdp11/pdp11.md (truncsihi2): Remove.
291 2018-05-27  Monk Chiang  <sh.chiang04@gmail.com>
292             Chung-Ju Wu  <jasonwucj@gmail.com>
294         * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
295         implementation.
296         (unaligned_store_dw): Ditto.
297         * config/nds32/nds32-memory-manipulation.c
298         (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
299         (nds32_gen_dup_4_byte_to_word_value): Rename to ...
300         (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
301         (emit_setmem_word_loop): Rename to ...
302         (emit_setmem_doubleword_loop): ... this.
303         (nds32_gen_dup_4_byte_to_word_value): New function.
304         (nds32_gen_dup_8_byte_to_double_word_value): New function.
305         (nds32_expand_setmem_loop): Refine implementation.
306         (nds32_expand_setmem_loop_v3m): Ditto.
307         * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
308         pattern.
310 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
312         * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
314 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
316         * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
317         (nds32_init_machine_status): Initialize machine->attr_naked_p and
318         machine->attr_no_prologue_p.
319         (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
320         (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
321         (nds32_expand_epilogue): Consider attr_naked_p.
322         (nds32_expand_epilogue_v3pop): Likewise.
323         (nds32_can_use_return_insn): Likewise.
324         * config/nds32/nds32.h (machine_function): Add attr_naked_p and
325         attr_no_prologue_p fields.
326         * config/nds32/nds32.opt (mret-in-naked-func): New option.
328 2018-05-27  Jakub Jelinek  <jakub@redhat.com>
330         PR target/85918
331         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
332         attributes.
333         * config/i386/sse.md
334         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
335         Rename to ...
336         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
337         ... this.
338         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
339         Rename to ...
340         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
341         ... this.
342         (*<floatsuffix>floatv2div2sf2): Rename to ...
343         (*float<floatunssuffix>v2div2sf2): ... this.
344         (<floatsuffix>floatv2div2sf2_mask): Rename to ...
345         (float<floatunssuffix>v2div2sf2_mask): ... this.
346         (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
347         (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
348         (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
349         to ...
350         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
351         ... this.
352         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
353         Rename to ...
354         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
355         ... this.
356         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
357         Rename to ...
358         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
359         ... this.
360         (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
361         (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
362         (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
363         gen_ufix_truncv8dfv8si2.
364         * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
365         __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
366         __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
367         __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
368         __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
369         __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
370         __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
371         Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
373 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
375         PR target/85900
376         PR target/85345
377         * varasm.c (assemble_alias): Lookup ifunc attribute on error.
379 2018-05-25  Jim Wilson  <jimw@sifive.com>
381         * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
382         * config/riscv/riscv.c (struct machine_function): Add
383         interrupt_handler_p and attribute_checked_p fields.
384         (riscv_attribute_table): Add interrupt.
385         (riscv_interrupt_type_p): New.
386         (riscv_save_reg_p): Save extra regs for interrupt handler.
387         (riscv_use_save_libcall): Return false  for interrupt handler.
388         (riscv_first_stack_step): Add forward declaration.
389         (riscv_compute_frame_info): New local interrupt_save_t1.  Set it
390         for interrupt handler with large frame.  Use it for saved reg list.
391         (riscv_expand_prologue): Move flag_stack_usage_info support to
392         eliminate duplication.
393         (riscv_expand_epilogue): Generate mret for interrupt handler.
394         (riscv_epilogue_uses): New.
395         (riscv_can_use_return_insn): Return false for interrupt handler.
396         (riscv_function_ok_for_sibcall): Likewise.
397         (riscv_set_current_function): Add interrupt handler support.
398         * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
399         * config/riscv/riscv.md (UNSPECV_MRET): New.
400         (GP_REGNUM): New.
401         (riscv_frflags, riscv_fsflags): Use tab after opcode.
402         (riscv_mret): New.
403         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
405 2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
407         PR tree-optimization/85712
408         * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
409         this candidate has already been replaced in-situ by a copy.
411 2018-05-25  Jason Merrill  <jason@redhat.com>
413         PR c++/80485 - inline function non-zero address.
414         * symtab.c (nonzero_address): Check DECL_COMDAT.
416 2018-05-25  Uros Bizjak  <ubizjak@gmail.com>
418         PR target/83628
419         * config/alpha/alpha.md (ashlsi3): New insn pattern.
420         (*ashlsi_se): Rename from *ashldi_se.  Define as sign
421         extension of SImode operation.  Use const123_operand predicate.
422         (*saddsi_1): Remove.
423         (*saddl_se_1): Ditto.
424         (*ssubsi_1): Ditto.
425         (*ssubl_se_1): Ditto.
426         * config/alpha/predicates.md (const123_operand): New predicate.
427         * config/alpha/constraints.md (P): Use IN_RANGE.
429 2018-05-25  Richard Biener  <rguenther@suse.de>
431         * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
432         defaulted to true.
433         (ref_maybe_used_by_stmt_p): Likewise.
434         (stmt_may_clobber_ref_p): Likewise.
435         (stmt_may_clobber_ref_p_1): Likewise.
436         * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
437         and pass it along.
438         (ref_maybe_used_by_stmt_p): Likewise.
439         (stmt_may_clobber_ref_p): Likewise.
440         (stmt_may_clobber_ref_p_1): Likewise.
441         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
442         the alias oracle to disambiguate DRs with stmts DR analysis
443         couldn't handle.
444         (vect_analyze_data_refs): Do not give up on not analyzable
445         DRs for BB vectorization.  Remove code truncating the dataref
446         vector.
448 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
450         PR target/85832
451         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
452         Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
453         in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
455 2018-05-25  Richard Biener  <rguenther@suse.de>
457         * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
458         function, combining stmt data ref gathering and fatal analysis
459         parts.
460         (vect_analyze_data_refs): Remove now redudnant code and simplify.
461         * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
462         vect_analyze_loop_2 and use vect_find_stmt_data_reference.
463         * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
464         * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
466 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
468         PR tree-optimization/85720
469         * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
470         SCC if all partitions are builtins.
471         (version_loop_by_alias_check): New parameter.  Generate cancelable
472         runtime alias check if all partitions are builtins.
473         (distribute_loop): Update call to above function.
475 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
477         * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
478         (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
479         (parm_default_def_partition_arg): Ditto.
480         (set_parm_default_def_partition): Ditto.
481         (get_parm_default_def_partitions): Ditto and make it static.
482         (get_undefined_value_partitions): Ditto and make it static.
483         (remove_ssa_form): Refactor call to init_var_map here.
484         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
485         computation for loop region.
486         (coalesce_partitions, compute_optimized_partition_bases): Ditto.
487         (register_default_def): Delete.
488         (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
489         (parm_default_def_partition_arg): Ditto.
490         (set_parm_default_def_partition): Ditto.
491         (get_parm_default_def_partitions): Ditto and make it static.
492         (get_undefined_value_partitions): Ditto and make it static.
493         (coalesce_with_default, coalesce_with_default): Update comment.
494         (create_coalesce_list_for_region): New func factored out from
495         create_outofssa_var_map.
496         (populate_coalesce_list_for_outofssa): New func factored out from
497         create_outofssa_var_map and coalesce_ssa_name.
498         (create_outofssa_var_map): Delete.
499         (coalesce_ssa_name): Refactor to support live range computation.
500         * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
501         (get_parm_default_def_partitions): Delete.
502         (get_undefined_value_partitions): Ditto.
503         * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
504         computation for loop region.
505         (new_tree_live_info, loe_visit_block): Ditto.
506         (live_worklist, set_var_live_on_entry): Ditto.
507         (calculate_live_on_exit, verify_live_on_entry): Ditto.
508         * tree-ssa-live.h (struct _var_map): New fields.
509         (init_var_map): Change decl.
510         (region_contains_p): New.
512 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
514         * tree-ssa-live.h (live_merge_and_clear): Delete.
516 2018-05-25  Richard Biener  <rguenther@suse.de>
518         PR c++/85912
519         * tree-dump.c (dequeue_and_dump): Remove access to removed
520         operand 2 of a SWITCH_EXPR.
522 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
524         * doc/sourcebuild.texi (vect_double_cond_arith): Include
525         multiplication and division.
526         * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
527         (cond_udiv@var{m}, cond_umod@var{m}): Document.
528         * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
529         (cond_udiv_optab, cond_umod_optab): New optabs.
530         * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
531         (IFN_COND_RDIV): New internal functions.
532         * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
533         TRUNC_MOD_EXPR and RDIV_EXPR.
534         * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
535         * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
536         New unspecs.
537         (SVE_INT_BINARY): Include mult.
538         (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
539         (optab, sve_int_op): Handle mult.
540         (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
541         UNSPEC_COND_DIV.
542         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
543         for SVE_INT_BINARY_SD.
545 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
547         * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
548         (optab, sve_int_op): Handle div and udiv.
549         * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
550         for SVE_INT_BINARY_SD.
551         (*<optab><mode>3): New insn for the same.
553 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
555         * tree-vect-patterns.c: Include predict.h.
556         (vect_recog_divmod_pattern): Restrict check for division support
557         to when optimizing for size.
559 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
561         * doc/sourcebuild.texi (vect_double_cond_arith: Document.
562         * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
563         (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
564         (gimple_match_op::set_op): Likewise.
565         (gimple_resimplify4): Declare.
566         * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
567         (expr::gen_transform): Likewise.
568         (decision_tree::gen): Generate a simplification routine for 4 operands.
569         * gimple-match-head.c (gimple_simplify): Add an overload for
570         4 operands.  In the top-level function, handle up to 4 call
571         arguments and call gimple_resimplify4.
572         (gimple_resimplify4): New function.
573         (build_call_internal): Pass a fourth operand.
574         (maybe_push_to_seq): Likewise.
575         * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
576         Fold VEC_COND_EXPRs of an operation and a default value into
577         an IFN_COND_* function if possible.
578         * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
579         New unspecs.
580         (SVE_COND_FP_BINARY): Include them.
581         (optab, sve_fp_op): Handle them.
582         (SVE_INT_BINARY_REV): New code iterator.
583         (SVE_COND_FP_BINARY_REV): New int iterator.
584         (commutative): New int attribute.
585         * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
586         Declare.
587         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
588         function.
589         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
590         (*cond_<optab><mode>): New patterns for reversed operands.
592 2018-05-25  Richard Biener  <rguenther@suse.de>
594         * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
595         (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
596         (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
597         (STMT_VINFO_GROUPED_ACCESS): Adjust.
598         * tree-vect-data-refs.c (everywhere): Adjust users.
599         * tree-vect-loop.c (everywhere): Likewise.
600         * tree-vect-slp.c (everywhere): Likewise.
601         * tree-vect-stmts.c (everywhere): Likewise.
602         * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
604 2018-05-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
606         * configure.ac (gcc_cv_as_section_has_e): Move to common section.
607         Rename to...
608         (gcc_cv_as_section_exclude): ... this.
609         Try Solaris as #exclude syntax.
610         * configure: Regenerate.
611         * config.in: Regenerate.
612         * config/i386/i386.c (i386_solaris_elf_named_section): Handle
613         SECTION_EXCLUDE.
614         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
615         [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
617         * varasm.c (default_elf_asm_named_section): Don't check if
618         HAVE_GAS_SECTION_EXCLUDE is defined.
620 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
622         * doc/md.texi: Update the documentation of the cond_* optabs
623         to mention the new final operand.  Fix GET_MODE_NUNITS call.
624         Describe the scalar case too.
625         * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
626         * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
627         instead of 2.
628         (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
629         (get_conditional_internal_fn): Update comment.
630         * tree-vect-loop.c (vectorizable_reduction): Pass the original
631         accumulator value as a final argument to conditional functions.
632         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
633         a define_expand and add an "else" operand.  Assert for now that
634         the else operand is equal to operand 2.  Use SVE_INT_BINARY and
635         SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
636         (*cond_<optab><mode>): New patterns.
637         * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
638         (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
639         (UNSPEC_COND_EOR): Delete.
640         (optab): Remove associated mappings.
641         (SVE_INT_BINARY): New code iterator.
642         (sve_int_op): Remove int attribute and add "minus" to the code
643         attribute.
644         (SVE_COND_INT_OP): Delete.
645         (SVE_COND_FP_OP): Rename to...
646         (SVE_COND_FP_BINARY): ...this.
648 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
650         * optabs.c (can_reuse_operands_p): New function.
651         (maybe_legitimize_operands): Try to reuse the results for
652         earlier operands.
654 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
656         * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
657         Add {q} suffix to insn mnemonic.
659 2018-05-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
661         * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
662         (msp430_warn_func_return): New.
664 2018-05-24  Roger Sayle  <roger@nextmovesoftware.com>
666         * fold-const.c (tree_nonzero_bits): New function.
667         * fold-const.h (tree_nonzero_bits): Likewise.
668         * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
669         friends.  POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
671 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
673         PR target/85900
674         PR target/85345
675         * varasm.c (assemble_alias): Check ifunc_resolver only on
676         FUNCTION_DECL.
678 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
680         PR target/85903
681         * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
682         when memory input operand is handled.
684 2018-05-24  Luis Machado  <luis.machado@linaro.org>
686         * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
687         global.
688         (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
690 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
692         * match.pd: Delay FMA folds until after vectorization.
694 2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
696         PR target/83009
697         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
698         address check not strict.
700 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
702         * gimple-match.h (gimple_match_op): New class.
703         (mprts_hook): Replace parameters with a gimple_match_op *.
704         (maybe_build_generic_op): Likewise.
705         (gimple_simplified_result_is_gimple_val): Replace parameters with
706         a const gimple_match_op *.
707         (gimple_simplify): Replace code_helper * and tree * parameters with
708         a gimple_match_op * parameter.
709         (gimple_resimplify1): Replace code_helper *, tree and tree *
710         parameters with a gimple_match_op * parameter.
711         (gimple_resimplify2): Likewise.
712         (gimple_resimplify3): Likewise.
713         (maybe_push_res_to_seq): Replace code_helper, tree and tree *
714         parameters with a gimple_match_op * parameter.
715         * gimple-match-head.c (gimple_simplify): Change prototypes of
716         auto-generated functions to take a gimple_match_op * instead of
717         separate code_helper * and tree * parameters.  Make the same
718         change in the top-level overload and update calls to the
719         gimple_resimplify routines.  Update calls to the auto-generated
720         functions and to maybe_push_res_to_seq in the publicly-facing
721         operation-specific gimple_simplify overloads.
722         (gimple_match_op::MAX_NUM_OPS): Define.
723         (gimple_resimplify1): Replace rcode and ops with a single res_op
724         parameter.  Update call to gimple_simplify.
725         (gimple_resimplify2): Likewise.
726         (gimple_resimplify3): Likewise.
727         (mprts_hook): Replace parameters with a gimple_match_op *.
728         (maybe_build_generic_op): Likewise.
729         (build_call_internal): Replace type, nargs and ops with
730         a gimple_match_op *.
731         (maybe_push_res_to_seq): Replace res_code, type and ops parameters
732         with a single gimple_match_op *.  Update calls to mprts_hook,
733         build_call_internal and gimple_simplified_result_is_gimple_val.
734         Factor out code that is common to the tree_code and combined_fn cases.
735         * genmatch.c (expr::gen_transform): Replace tem_code and
736         tem_ops with a gimple_match_op called tem_op.  Update calls
737         to the gimple_resimplify functions and maybe_push_res_to_seq.
738         (dt_simplify::gen_1): Manipulate res_op instead of res_code and
739         res_ops.  Update call to the gimple_resimplify functions.
740         (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
741         (decision_tree::gen): Make the functions take a gimple_match_op *
742         called res_op instead of separate res_code and res_ops parameters.
743         Update call accordingly.
744         * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
745         and ops with a single res_op parameter.  Update calls to
746         maybe_build_generic_op and maybe_push_res_to_seq.
747         (fold_stmt_1): Update calls to gimple_simplify and
748         replace_stmt_with_simplification.
749         (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
750         and gimple_simplified_result_is_gimple_val.
751         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
752         gimple_simplify.
753         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
754         with a gimple_match_op *.
755         (vn_nary_build_or_lookup): Likewise.  Update call to
756         vn_nary_build_or_lookup_1.
757         (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
758         gimple_match_op *.  Update calls to the gimple_resimplify routines
759         and to gimple_simplified_result_is_gimple_val.
760         (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
761         Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
762         (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
763         (visit_nary_op): Likewise.
764         (visit_reference_op_load): Likewise.
766 2018-05-23  Luis Machado  <luis.machado@linaro.org>
768         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
769         modifier for printing the step amount.
771 2018-05-23  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
773         PR target/78849
774         * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
775         types.
777 2018-05-23  Segher Boessenkool  <segher@kernel.crashing.org>
779         * doc/sourcebuild.texi (Endianness): New subsubsection.
781 2018-05-23  Luis Machado  <luis.machado@linaro.org>
783         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
784         <prefetch_dynamic_strides>: New const bool field.
785         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
786         prefetch_dynamic_strides.
787         (exynosm1_prefetch_tune): Likewise.
788         (thunderxt88_prefetch_tune): Likewise.
789         (thunderx_prefetch_tune): Likewise.
790         (thunderx2t99_prefetch_tune): Likewise.
791         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
792         false.
793         (aarch64_override_options_internal): Update to set
794         PARAM_PREFETCH_DYNAMIC_STRIDES.
795         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
796         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
797         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
798         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
799         prefetch-dynamic-strides setting.
801 2018-05-23  Luis Machado  <luis.machado@linaro.org>
803         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
804         <minimum_stride>: New const int field.
805         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
806         minimum_stride field defaulting to -1.
807         (exynosm1_prefetch_tune): Likewise.
808         (thunderxt88_prefetch_tune): Likewise.
809         (thunderx_prefetch_tune): Likewise.
810         (thunderx2t99_prefetch_tune): Likewise.
811         (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
812         <default_opt_level>: Set to 3.
813         (aarch64_override_options_internal): Update to set
814         PARAM_PREFETCH_MINIMUM_STRIDE.
815         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
816         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
817         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
818         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
819         stride is constant and is below the minimum stride threshold.
821 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
823         * config/arm/arm-cpus.in (mode26): Delete.
824         (armv4): Delete mode26 reference.
825         * config/arm/arm.c (arm_configure_build_target): Delete use of
826         isa_bit_mode26.
828 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
830         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
831         New insn pattern.
832         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
833         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
834         for non-SSE modes.
835         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
836         (floatunsdidf2): Ditto.
838 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
840         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
841         (fixuns_trunc<mode>si2_avx512f): Ditto.
842         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
843         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
844         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
846 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
848         PR rtl-optimization/79985
849         * df-scan.c (df_insn_refs_collect): Remove special case for
850         global registers and asm statements.
852 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
854         * extend.texi (Global Register Variables): Rewrite the bullet list.
855         Note that the register is available for allocation. Note that access
856         via inline asm must use constraints. Add note about async-signal
857         handlers. Remove paragraph about automagic register selection.
859 2018-05-23  Richard Biener  <rguenther@suse.de>
861         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
862         of fixed offset from memset VN.
864 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
866         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
867         first_interp field.
868         (alloc_cand_and_find_basis): Initialize first_interp field.
869         (slsr_process_mul): Modify first_interp field.
870         (slsr_process_add): Likewise.
871         (slsr_process_cast): Modify first_interp field for each new
872         interpretation.
873         (slsr_process_copy): Likewise.
874         (dump_candidate): Dump first_interp field.
875         (replace_mult_candidate): Process all interpretations, not just
876         subsequent ones.
877         (replace_rhs_if_not_dup): Likewise.
878         (replace_one_candidate): Likewise.
880 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
882         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
883         Add new boolean.
884         (aarch64_needs_frame_chain): New function.
885         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
887 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
889         PR target/84882
890         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
891         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
892         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
893         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
894         as true for strict-align.
895         (aarch64_can_inline_p): Perform checks even when callee has no
896         attributes to check for strict alignment.
897         * doc/extend.texi (AArch64 Function Attributes): Document
898         no-strict-align.
899         * doc/invoke.texi: (AArch64 Options): Likewise.
901 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
903         PR tree-optimization/85853
904         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
905         the handling of the root of the node to...
906         (vect_slp_analyze_node_operations_1): ...this new function,
907         and run the whole thing with the child nodes' def types
908         set according to their SLP node's def type.
910 2018-05-23  Richard Biener  <rguenther@suse.de>
912         PR middle-end/85874
913         * tree-data-ref.c (create_runtime_alias_checks): Defer
914         and ignore overflow warnings.
916 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
918         PR tree-optimization/85822
919         * tree-vrp.c (is_masked_range_test): Fix handling of negative
920         constants.
922 2018-05-23  Richard Biener  <rguenther@suse.de>
924         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
925         memset constants via native_interpret_expr.
927 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
929         PR target/85345
930         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
931         attribute.
932         (cgraph_node::create_alias): Likewise.
933         (cgraph_node::get_availability): Check ifunc_resolver instead
934         of looking up ifunc attribute.
935         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
936         * varasm.c (do_assemble_alias): Likewise.
937         (assemble_alias): Likewise.
938         (default_binds_local_p_3): Likewise.
939         * cgraph.h (cgraph_node): Add ifunc_resolver.
940         (cgraph_node::only_called_directly_or_aliased_p): Return false
941         for IFUNC resolver.
942         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
943         attribute.
944         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
945         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
946         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
947         instead of looking up ifunc attribute.
949 2018-05-22  Luis Machado  <luis.machado@linaro.org>
951         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
953 2018-05-22  Martin Sebor  <msebor@redhat.com>
955         PR middle-end/85359
956         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
957         only when expasion succeeds.
958         (expand_builtin_strcmp): Same.
959         (expand_builtin_strncmp): Same.
961 2018-05-22  Martin Sebor  <msebor@redhat.com>
963         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
965 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
966             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
968         * config/aarch64/aarch64-ldpstp.md: Replace uses of
969         aarch64_mem_pair_operand with memory_operand and delete operand swapping
970         code.
971         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
972         Add check for legitimate_address.
973         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
974         (aarch64_swap_ldrstr_operands): New.
975         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
976         Define prototype.
978 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
979             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
981         * config/aarch64/aarch64.md: New patterns to generate stp
982         and ldp.
983         (store_pair_sw, store_pair_dw): New patterns to generate stp for
984         single words and double words.
985         (load_pair_sw, load_pair_dw): Likewise.
986         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
987         Delete.
988         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
989         Delete.
990         * config/aarch64/aarch64-ldpstp.md: Modify peephole
991         for different mode ldpstp and add peephole for merged zero stores.
992         Likewise for loads.
993         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
994         Add size check.
995         (aarch64_gen_store_pair): Rename calls to match new patterns.
996         (aarch64_gen_load_pair): Rename calls to match new patterns.
997         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
998         (load_pair<DREG:mode><DREG2:mode>): ... This.
999         (store_pair<mode>): Rename to...
1000         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
1001         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
1002         New mode iterators.
1003         (V_INT_EQUIV): Handle SImode.
1004         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
1005         New predicate.
1007 2018-05-22  Martin Sebor  <msebor@redhat.com>
1009         PR c/85623
1010         * calls.c (maybe_warn_nonstring_arg): Use string length to set
1011         or ajust the presumed bound on an operation to avoid unnecessary
1012         warnings.
1014 2018-05-22  Martin Sebor  <msebor@redhat.com>
1016         PR tree-optimization/85826
1017         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
1018         assuming that a DECL necesarily has a constant size.
1020 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
1022         PR middle-end/85862
1023         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
1025 2018-05-22  Richard Biener  <rguenther@suse.de>
1027         PR tree-optimization/85834
1028         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
1029         non-constant and non-zero memset arguments.
1031 2018-05-22  Martin Liska  <mliska@suse.cz>
1033         PR ipa/85607
1034         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
1036 2018-05-22  Richard Biener  <rguenther@suse.de>
1038         PR tree-optimization/85863
1039         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
1040         comparisons when vectype is specified.
1041         (vectorizable_condition): Do not specify vectype for
1042         vect_is_simple_cond when SLP vectorizing.
1044 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
1046         PR target/85657
1047         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
1048         define __ibm128 as long double.
1049         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
1050         as a distinct type when IEEE 128-bit support is enabled.
1051         (init_float128_ieee): Fix up conversions between IFmode and IEEE
1052         128-bit types to use the correct functions.
1053         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
1054         convert between 128-bit floating point types that have different
1055         modes but the same representation, instead of using gen_lowpart to
1056         makean alias.
1057         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
1058         KFmode.
1059         (IFKF_reg): New attributes to give the register constraints for
1060         IFmode and KFmode.
1061         (extend<mode>tf2_internal): New insns to mark an explicit
1062         conversion between 128-bit floating point types that have a
1063         different mode but share the same representation.
1065 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
1067         PR tree-optimization/85814
1068         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
1069         a null return from get_strinfo when unsharing the next
1070         strinfo in the chain.
1072 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
1074         PR gcc/84923
1075         * varasm.c (weak_finish): Clean up weak_decls.
1077 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1079         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
1080         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
1081         UNSPEC_UADALP values.
1082         * config/aarch64/iterators.md (ABAL): New int iterator.
1083         (ABDL2): Likewise.
1084         (ADALP): Likewise.
1085         (sur): Add mappings for the above.
1086         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
1087         New define_insn.
1088         (aarch64_<sur>abal<mode>_4): Likewise.
1089         (aarch64_<sur>adalp<mode>_3): Likewise.
1090         (<sur>sadv16qi): New define_expand.
1092 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
1094         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
1095         (*movdf_internal): Ditto.
1096         (*rcpsf2_sse): Ditto.
1097         (*rsqrtsf2_sse): Ditto.
1098         (*sqrt<mode>2_sse): Ditto.
1100 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
1102         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
1103         eor3q<mode>4.
1104         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
1105         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
1106         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
1107         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
1108         vbcaxq_s64): New.
1109         * config/aarch64/arm_neon.h: Likewise.
1110         * config/aarch64/iterators.md (VQ_I): New.
1112 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
1114         * config.gcc: Add arc/t-multilib-linux to tmake_file for
1115         arc*-*-linux*.
1116         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
1117         MULTILIB_DIRNAMES
1119 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1121         * config/nds32/constraints.md (S): New constraint.
1122         * config/nds32/nds32.md (call_internal): Use constraint S.
1123         (call_value_internal): Likewise.
1124         (sibcall_internal): Likewise.
1125         (sibcall_value_internal): Likewise.
1127 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1128             Chung-Ju Wu  <jasonwucj@gmail.com>
1130         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
1131         into consideration.
1133 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1134             Chung-Ju Wu  <jasonwucj@gmail.com>
1136         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
1137         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
1138         (nds32_rtx_costs_impl): Simplify.
1139         (nds32_address_cost_impl): Simplify.
1140         (nds32_init_rtx_costs): New function.
1141         (nds32_rtx_costs_speed_prefer): Likewise.
1142         (nds32_rtx_costs_size_prefer): Likewise.
1143         (nds32_address_cost_speed_prefer): Likewise.
1144         (nds32_address_cost_speed_fwprop): Likewise.
1145         (nds32_address_cost_size_prefer): Likewise.
1146         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
1147         * config/nds32/nds32.c (nds32_option_override): Use
1148         nds32_init_rtx_costs function.
1150 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1152         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
1153         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
1154         (TARGET_PIPELINE_N8): Likewise.
1155         (TARGET_PIPELINE_N10): Likewise.
1156         (TARGET_PIPELINE_N13): Likewise.
1157         (TARGET_PIPELINE_GRAYWOLF): Likewise.
1159 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
1161         * config/nds32/nds32-fpu.md: Update copyright year.
1163 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1165         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
1167 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1169         * config/nds32/nds32.c
1170         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
1171         * config/nds32/nds32.opt (minline-asm-r15): New option.
1173 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1175         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
1176         MASK_HW_ABS.
1177         * config/nds32/nds32.md (abssi2): New pattern.
1179 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
1181         * config/i386/i386.md (rex64namesuffix): New mode attribute.
1182         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
1183         Merge insn pattern from sse_cvtsi2ss<round_name> and
1184         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
1185         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
1186         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
1187         using SWI48 mode iterator.
1188         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
1189         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
1190         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
1191         pattern from sse_cvttss2si<round_saeonly_name>
1192         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
1193         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
1194         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
1195         using SWI48 mode iterator.
1196         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
1197         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
1198         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
1199         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
1200         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
1201         using SWI48 mode iterator.
1202         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
1203         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
1204         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
1205         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
1206         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
1207         SWI48 mode iterator.
1208         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
1209         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
1210         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
1211         pattern from sse_cvttsd2si<round_saeonly_name>
1212         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
1214 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1216         * config/nds32/nds32-md-auxiliary.c
1217         (nds32_valid_smw_lwm_base_p): Refine.
1218         (nds32_output_smw_single_word): Refine.
1219         (nds32_output_smw_double_word): New.
1220         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
1222 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1224         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
1225         (nds32_output_stack_pop): Refine.
1226         (nds32_expand_unaligned_load): Refine.
1227         (nds32_expand_unaligned_store): Refine.
1229 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1230             Chung-Ju Wu  <jasonwucj@gmail.com>
1232         * config/nds32/constants.md: Add TP_REGNUM constant.
1233         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
1234         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
1235         UNSPEC_ADD32.
1236         * config/nds32/nds32-doubleword.md: Consider flag_pic.
1237         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
1238         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
1239         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
1240         and PIC code generation.
1241         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
1242         code generation.
1243         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
1244         optimization.
1245         * config/nds32/nds32.md: Support TLS and PIC.
1246         * config/nds32/nds32.c: Support TLS and PIC.
1247         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
1248         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
1249         predicate.
1251 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1253         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
1254         mode with E_ prefix.
1256 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1257             Chung-Ju Wu  <jasonwucj@gmail.com>
1259         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
1260         * config/nds32/nds32-md-auxiliary.c
1261         (symbolic_reference_mentioned_p): New.
1262         (nds32_legitimize_ict_address): New.
1263         (nds32_expand_ict_move): New.
1264         (nds32_indirect_call_referenced_p): New.
1265         (nds32_symbol_binds_local_p): Delete.
1266         (nds32_long_call_p): Modify.
1267         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
1268         * config/nds32/nds32-protos.h
1269         (symbolic_reference_mentioned_p): Declare.
1270         (nds32_legitimize_ict_address): Declare.
1271         (nds32_expand_ict_move): Declare.
1272         (nds32_indirect_call_referenced_p): Declare.
1273         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
1274         (nds32_relax_group): Use nds32_ict_const_p as condition.
1275         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
1276         (nds32_asm_file_start): Output ict_model directive in asm code.
1277         (nds32_legitimate_address_p): Consider indirect call.
1278         (nds32_print_operand): Consider indirect call.
1279         (nds32_print_operand_address): Consider indirect call.
1280         (nds32_insert_attributes): Handle "indirect_call" attribute.
1281         (TARGET_LEGITIMATE_ADDRESS_P): Define.
1282         (TARGET_LEGITIMATE_CONSTANT_P): Define.
1283         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1284         (TARGET_DELEGITIMIZE_ADDRESS): Define.
1285         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1286         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
1287         (TARGET_ICT_MODEL_SMALL): Define.
1288         (TARGET_ICT_MODEL_LARGE): Define.
1289         * config/nds32/nds32.md (movsi): Consider ict model.
1290         (call, call_value): Consider ict model.
1291         (sibcall, sibcall_value): Consider ict model.
1292         * config/nds32/nds32.opt (mict-model): New option.
1293         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
1294         model.
1296 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
1297             Monk Chiang  <sh.chiang04@gmail.com>
1298             Jim Wilson <jimw@sifive.com>
1300         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
1301         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
1302         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
1303         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
1304         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
1305         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
1306         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
1307         compute save_libcall_adjustment properly.
1308         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
1309         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
1310         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
1311         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
1312         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
1313         (ABI_SPEC): Handle mabi=ilp32e.
1314         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
1315         (RVE): Add RVE mask.
1316         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
1317         <-march>: Add rv32e as an example.
1319 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
1321         PR c++/82899
1322         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
1323         (intra_create_variable_infos): Handle C++ constructors.
1325 2018-05-18  Martin Liska  <mliska@suse.cz>
1327         * passes.def: Remove a redundant pass.
1329 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
1331         PR bootstrap/85838
1332         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
1334 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1336         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
1337         (ARMv4): Update.
1338         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
1339         (ARMv6m): Update.
1340         (armv2, armv2a, armv3, armv3m): Delete architectures.
1341         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
1342         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
1343         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
1344         Delete cpus.
1345         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
1346         (*mulsidi3adddi): Likewise.
1347         (mulsidi3): Likewise.
1348         (*mulsidi3_nov6): Likewise.
1349         (umulsidi3): Likewise.
1350         (umulsidi3_nov6): Likewise.
1351         (umaddsidi4): Likewise.
1352         (*umulsidi3adddi): Likewise.
1353         (smulsi3_highpart): Likewise.
1354         (*smulsi3_highpart_nov6): Likewise.
1355         (umulsi3_highpart): Likewise.
1356         (*umulsi3_highpart_nov6): Likewise.
1357         * config/arm/arm.h (arm_arch3m): Delete.
1358         * config/arm/arm.c (arm_arch3m): Delete.
1359         (arm_option_override_internal): Update armv3-related comment.
1360         (arm_configure_build_target): Delete use of isa_bit_mode32.
1361         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
1362         (arm_rtx_costs_internal): Delete check of arm_arch3m.
1363         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
1364         (mulsa3): Likewise.
1365         (mulusa3): Likewise.
1366         * config/arm/arm-protos.h (arm_arch3m): Delete.
1367         * config/arm/arm-tables.opt: Regenerate.
1368         * config/arm/arm-tune.md: Likewise.
1369         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
1370         deleted architectures.
1372 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1374         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
1375         (armv5t, armv5te): New features.
1376         (ARMv5, ARMv5e): Delete fgroups.
1377         (ARMv5t, ARMv5te): Adjust for above changes.
1378         (ARMv6m): Likewise.
1379         (armv5, armv5e): Delete arches.
1380         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
1381         arm_arch5.
1382         (*call_reg_arm): Likewise.
1383         (*call_value_reg_armv5): Likewise.
1384         (*call_value_reg_arm): Likewise.
1385         (*call_symbol): Likewise.
1386         (*call_value_symbol): Likewise.
1387         (*sibcall_insn): Likewise.
1388         (*sibcall_value_insn): Likewise.
1389         (clzsi2): Likewise.
1390         (prefetch): Likewise.
1391         (define_split and define_peephole2 dependent on arm_arch5):
1392         Likewise.
1393         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
1394         arm_arch5e.
1395         (TARGET_ARM_QBIT): Likewise.
1396         (TARGET_DSP_MULTIPLY): Likewise.
1397         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
1398         (arm_arch5, arm_arch5e): Delete.
1399         (arm_arch5t, arm_arch5te): Declare.
1400         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
1401         (arm_arch5t): Declare.
1402         (arm_option_reconfigure_globals): Update for the above.
1403         (arm_options_perform_arch_sanity_checks): Update comment, replace
1404         use of arm_arch5 with arm_arch5t.
1405         (use_return_insn): Likewise.
1406         (arm_emit_call_insn): Likewise.
1407         (output_return_instruction): Likewise.
1408         (arm_final_prescan_insn): Likewise.
1409         (arm_coproc_builtin_available): Likewise.
1410         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
1411         arm_arch5e with arm_arch5t and arm_arch5te.
1412         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
1413         (arm_arch5t, arm_arch5te): Declare.
1414         * config/arm/arm-tables.opt: Regenerate.
1415         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
1416         * config/arm/t-multilib: Likewise.
1417         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
1418         instead of arm_arch5.
1419         (*call_reg_thumb1): Likewise.
1420         (*call_value_reg_thumb1_v5): Likewise.
1421         (*call_value_reg_thumb1): Likewise.
1422         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
1423         unreachable path.
1424         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
1426 2018-05-18  Martin Liska  <mliska@suse.cz>
1428         PR gcov-profile/84846
1429         * doc/gcov.texi: Document -t option of gcov tool.
1431 2018-05-18  Martin Liska  <mliska@suse.cz>
1433         PR gcov-profile/84846
1434         * gcov.c (print_usage): Add new -t option.
1435         (process_args): Handle the option.
1436         (generate_results): Use stdout as output when requested by
1437         the option.
1439 2018-05-18  Martin Liska  <mliska@suse.cz>
1441         PR gcov-profile/84846
1442         * coverage.c (coverage_init): Write PWD to .gcno file.
1443         * doc/gcov.texi: Document how working directory is printed.
1444         * gcov-dump.c (dump_gcov_file): Print PWD.
1445         * gcov.c (output_intermediate_file): Likewise.
1446         (read_graph_file): Read PWD string.
1447         (output_lines): Print PWD.
1449 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1451         PR middle-end/85817
1452         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
1453         for retval and return false if all args to phi are zero.        
1455 2018-05-18  Richard Biener  <rguenther@suse.de>
1457         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
1458         method.
1459         (evrp_dom_walker::before_dom_children): Call it.
1461 2018-05-18  Richard Biener  <rguenther@suse.de>
1463         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
1464         results when processing array refs with variable index.
1466 2018-05-18  Toon Moene  <toon@moene.org>
1468         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
1469         directly after that of -floop-interchange. Indicate that both
1470         options are enabled by default when specifying -O3. 
1472 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1474         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
1475         iterator.  Delete separate integer-mode vec_set<mode> expander.
1476         (aarch64_simd_vec_setv2di): Delete.
1477         (vec_setv2di): Delete.
1478         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
1479         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
1480         the "w, r" alternative.
1482 2018-05-18  Martin Liska  <mliska@suse.cz>
1484         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
1485         * tree-pass.h (make_pass_lower_switch_O0): New function.
1486         * tree-switch-conversion.c (node_has_low_bound): Remove.
1487         (node_has_high_bound): Likewise.
1488         (node_is_bounded): Likewise.
1489         (class pass_lower_switch): Make it a template type and create
1490         two instances.
1491         (pass_lower_switch::execute): Add template argument.
1492         (make_pass_lower_switch): New function.
1493         (make_pass_lower_switch_O0): New function.
1494         (do_jump_if_equal): Remove.
1495         (emit_case_nodes): Simplify to just handle all 3 cases and leave
1496         all the hard work to tree optimization passes.
1498 2018-05-18  Martin Liska  <mliska@suse.cz>
1500         * dbgcnt.c (limit_low): Renamed from limit.
1501         (limit_high): New variable.
1502         (dbg_cnt_is_enabled): Check for upper limit.
1503         (dbg_cnt): Adjust dumping.
1504         (dbg_cnt_set_limit_by_index): Add new argument for high
1505         value.
1506         (dbg_cnt_set_limit_by_name): Likewise.
1507         (dbg_cnt_process_single_pair): Parse new format.
1508         (dbg_cnt_process_opt): Use strtok.
1509         (dbg_cnt_list_all_counters): Remove 'value' and add
1510         'limit_high'.
1511         * doc/invoke.texi: Document changes.
1513 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
1515         * doc/sourcebuild.texi (scalar_all_fma): Document.
1516         * tree.def (FMA_EXPR): Delete.
1517         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
1518         * internal-fn.c (ternary_direct): New macro.
1519         (expand_ternary_optab_fn): Likewise.
1520         (direct_ternary_optab_supported_p): Likewise.
1521         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
1522         * builtins.c (fold_builtin_fma): Delete.
1523         (fold_builtin_3): Don't call it.
1524         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
1525         * expr.c (expand_expr_real_2): Likewise.
1526         * fold-const.c (operand_equal_p): Likewise.
1527         (fold_ternary_loc): Likewise.
1528         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
1529         * gimple.c (DEFTREECODE): Likewise.
1530         * gimplify.c (gimplify_expr): Likewise.
1531         * optabs-tree.c (optab_for_tree_code): Likewise.
1532         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
1533         * tree-eh.c (operation_could_trap_p): Likewise.
1534         (stmt_could_throw_1_p): Likewise.
1535         * tree-inline.c (estimate_operator_cost): Likewise.
1536         * tree-pretty-print.c (dump_generic_node): Likewise.
1537         (op_code_prio): Likewise.
1538         * tree-ssa-loop-im.c (stmt_cost): Likewise.
1539         * tree-ssa-operands.c (get_expr_operands): Likewise.
1540         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
1541         * fold-const-call.h (fold_fma): Delete.
1542         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
1543         CFN_FNMA and CFN_FNMS.
1544         (fold_fma): Delete.
1545         * genmatch.c (combined_fn): New enum.
1546         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
1547         (commutative_op): New function.
1548         (commutate): Use it.  Handle more than 2 operands.
1549         (dt_operand::gen_gimple_expr): Use commutative_op.
1550         (parser::parse_expr): Allow :c to be used with non-binary
1551         operators if the commutative operand is known.
1552         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
1553         CFN_FMS, CFN_FNMA and CFN_FNMS.
1554         (backprop::process_assign_use): Remove FMA_EXPR handling.
1555         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
1556         (gen_hsa_fma): New function.
1557         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
1558         IFN_FNMA and IFN_FNMS.
1559         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
1560         * gimple-fold.h (follow_all_ssa_edges): Declare.
1561         * gimple-fold.c (follow_all_ssa_edges): New function.
1562         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
1563         gimple_build interface and use follow_all_ssa_edges to fold the result.
1564         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
1565         instead of checking for optabs directly.
1566         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
1567         rather than FMA_EXPRs.
1568         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
1569         call to IFN_FMA instead of an FMA_EXPR.
1571 2018-05-17  Jim Wilson  <jimw@sifive.com>
1573         * expr.c (do_tablejump): When converting index to Pmode, if we have a
1574         sign extended promoted subreg, and the range does not have the sign bit
1575         set, then do a sign extend.
1577         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
1578         test, check for sign extended subreg and/or constant operands, and
1579         do a sign extend in that case.
1581 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
1583         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
1584         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
1585         Add untyped.
1586         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
1587         Change logics_shift_reg to logics_shift_imm.
1588         (thunderx2t99_fp_loadpair_basic): Delete.
1589         (thunderx2t99_fp_storepair_basic): Delete.
1590         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
1591         (thunderx2t99_asimd_polynomial): Delete.
1592         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
1593         and neon_fp_mul_d_scalar_q.
1594         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
1595         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
1596         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
1597         (thunderx2t99_asimd_lut): Add missing tbl types.
1598         (thunderx2t99_asimd_ext): Delete.
1599         (thunderx2t99_asimd_load1_1_mult): Delete.
1600         (thunderx2t99_asimd_load1_2_mult): Delete.
1601         (thunderx2t99_asimd_load1_ldp): New.
1602         (thunderx2t99_asimd_load1): New.
1603         (thunderx2t99_asimd_load2): Add missing *load2* types.
1604         (thunderx2t99_asimd_load3): New.
1605         (thunderx2t99_asimd_load4): New.
1606         (thunderx2t99_asimd_store1_1_mult): Delete.
1607         (thunderx2t99_asimd_store1_2_mult): Delete.
1608         (thunderx2t99_asimd_store2_mult): Delete.
1609         (thunderx2t99_asimd_store2_onelane): Delete.
1610         (thunderx2t99_asimd_store_stp): New.
1611         (thunderx2t99_asimd_store1): New.
1612         (thunderx2t99_asimd_store2): New.
1613         (thunderx2t99_asimd_store3): New.
1614         (thunderx2t99_asimd_store4): New.
1616 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
1618         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
1619         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
1621 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
1622             Segher Boessenkool  <segher@kernel.crashing.org>
1624         PR target/85698
1625         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
1626         operand.
1628 2018-05-17  Richard Biener  <rguenther@suse.de>
1630         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
1631         for pruning loop and prune defs feeding only already visited PHIs.
1633 2018-05-17  Richard Biener  <rguenther@suse.de>
1635         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
1637 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
1638             Richard Biener  <rguenther@suse.de>
1640         PR tree-optimization/85793
1641         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
1642         for VMAT_ELEMENTWISE.
1644 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
1646         * internal-fn.h (lookup_internal_fn): Declare
1647         * internal-fn.c (lookup_internal_fn): New function.
1648         * gimple.c (gimple_build_call_from_tree): Handle calls to
1649         internal functions.
1650         * gimple-pretty-print.c (dump_gimple_call): Print "." before
1651         internal function names.
1652         * tree-pretty-print.c (dump_generic_node): Likewise.
1653         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
1655 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
1657         * gimple-fold.h (gimple_build): Make the function forms take
1658         combined_fn rather than built_in_function.
1659         (gimple_simplify): Likewise.
1660         * gimple-match-head.c (gimple_simplify): Likewise.
1661         * gimple-fold.c (gimple_build): Likewise.
1662         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
1663         rather than gimple_build_call_internal.
1664         (get_initial_defs_for_reduction): Likewise.
1665         (vect_create_epilog_for_reduction): Likewise.
1666         (vectorizable_live_operation): Likewise.
1668 2018-05-17  Martin Liska  <mliska@suse.cz>
1670         * gimple-ssa-sprintf.c (format_directive): Do not use
1671         space in between 'G_' and '('.
1673 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
1675         PR target/85323
1676         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
1677         even if the mask is not all ones.
1679         PR target/85323
1680         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
1681         vector.
1682         (ix86_gimple_fold_builtin): Likewise.
1684         PR target/85323
1685         * config/i386/i386.c: Include tree-vector-builder.h.
1686         (ix86_vector_shift_count): New function.
1687         (ix86_fold_builtin): Fold shift builtins by scalar count.
1688         (ix86_gimple_fold_builtin): Likewise.
1690         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
1691         _mm512_setzero): New intrinsics.
1693 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
1694             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1696         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
1697         code generation for cases where splatting a value is not useful.
1698         * simplify-rtx.c (simplify_ternary_operation): Simplify
1699         vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
1700         mode to a vec_concat.
1702 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
1704         * config.gcc: Support "goldmont-plus".
1705         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
1706         "goldmont-plus".
1707         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1708         PROCESSOR_GOLDMONT_PLUS.
1709         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
1710         (processor_target_table): Add "goldmont-plus".
1711         (PTA_GOLDMONT_PLUS): Define.
1712         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
1713         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
1714         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
1715         (fold_builtin_cpu): Add "goldmont-plus".
1716         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
1717         (ix86_option_override_internal): Add "goldmont-plus".
1718         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
1719         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
1720         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
1721         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
1723 2018-05-17  Richard Biener  <rguenther@suse.de>
1725         PR tree-optimization/85757
1726         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
1727         remove defs that only feed that PHI from further processing.
1729 2018-05-16  Jim Wilson  <jimw@sifive.com>
1731         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
1732         asterisk to name.
1733         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
1735 2018-05-16  Mark Wielaard  <mark@klomp.org>
1737         * dwarf2out.c (count_index_strings): New function.
1738         (output_indirect_strings): Call count_index_strings and generate
1739         header for dwarf_version >= 5.
1741 2018-05-16  Mark Wielaard  <mark@klomp.org>
1743         * dwarf2out.c (dwarf_FORM): New function.
1744         (set_indirect_string): Use dwarf_FORM.
1745         (reset_indirect_string): Likewise.
1746         (size_of_die): Likewise.
1747         (value_format): Likewise.
1748         (output_die): Likewise.
1749         (add_skeleton_AT_string): Likewise.
1750         (output_macinfo_op): Likewise.
1751         (index_string): Likewise.
1752         (output_index_string_offset): Likewise.
1753         (output_index_string): Likewise.
1754         (count_index_strings): Likewise.
1756 2018-05-16  Carl Love  <cel@us.ibm.com>
1758         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
1759         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
1761 2018-05-16  Martin Jambor  <mjambor@suse.cz>
1763         * ipa-prop.c (ipa_free_all_edge_args): Remove.
1764         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
1766 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
1768         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
1769         (fnma<mode>4): Likewise.
1770         (fms<mode>4): Likewise.
1771         (fnms<mode>4): Likewise.
1772         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
1773         (aarch64_fnma<mode>4): Likewise.
1774         (aarch64_fms<mode>4): Likewise.
1775         (aarch64_fnms<mode>4): Likewise.
1776         (aarch64_fnmadd<mode>4): Likewise.
1778 2018-05-16  Jason Merrill  <jason@redhat.com>
1780         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
1782 2018-05-16  Richard Biener  <rguenther@suse.de>
1784         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
1785         (dump_stmt_cost): Declare.
1786         (add_stmt_cost): Dump cost we add.
1787         (add_stmt_costs): New function.
1788         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
1789         No longer exported.
1790         (vect_analyze_stmt): Adjust prototype.
1791         (vectorizable_condition): Likewise.
1792         (vectorizable_live_operation): Likewise.
1793         (vectorizable_reduction): Likewise.
1794         (vectorizable_induction): Likewise.
1795         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
1796         cost vector to pass to vectorizable_ and record afterwards.
1797         (vect_model_reduction_cost): Take cost vector argument and adjust.
1798         (vect_model_induction_cost): Likewise.
1799         (vectorizable_reduction): Likewise.
1800         (vectorizable_induction): Likewise.
1801         (vectorizable_live_operation): Likewise.
1802         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
1803         SLP_TREE_NUMBER_OF_VEC_STMTS.
1804         (vect_analyze_slp_cost_1): Remove.
1805         (vect_analyze_slp_cost): Likewise.
1806         (vect_slp_analyze_node_operations): Take visited args and
1807         a target cost vector.  Avoid processing already visited stmt sets.
1808         (vect_slp_analyze_operations): Use a local cost vector to gather
1809         costs and register those of non-discarded instances.
1810         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
1811         (vect_schedule_slp_instance): Remove copying of
1812         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
1813         zero.
1814         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
1815         adding cost.  Record cost entry location.
1816         (vect_prologue_cost_for_slp_op): Function to compute cost of
1817         a constant or invariant generated for SLP vect in the prologue,
1818         split out from vect_analyze_slp_cost_1.
1819         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
1820         (vect_model_promotion_demotion_cost): Likewise.
1821         (vect_model_store_cost): Likewise, make static.
1822         (vect_model_load_cost): Likewise.
1823         (vectorizable_bswap): Add cost vector arg and adjust.
1824         (vectorizable_call): Likewise.
1825         (vectorizable_simd_clone_call): Likewise.
1826         (vectorizable_conversion): Likewise.
1827         (vectorizable_assignment): Likewise.
1828         (vectorizable_shift): Likewise.
1829         (vectorizable_operation): Likewise.
1830         (vectorizable_store): Likewise.
1831         (vectorizable_load): Likewise.
1832         (vectorizable_condition): Likewise.
1833         (vectorizable_comparison): Likewise.
1834         (can_vectorize_live_stmts): Likewise.
1835         (vect_analyze_stmt): Likewise.
1836         (vect_transform_stmt): Adjust calls to vectorizable_*.
1837         * tree-vectorizer.c: Include gimple-pretty-print.h.
1838         (dump_stmt_cost): New function.
1840 2018-05-16  Richard Biener  <rguenther@suse.de>
1842         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
1843         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
1844         * tree-ssa-dse.c: Include tree-ssa-loop.h.
1845         (check_name): New callback.
1846         (dse_classify_store): Track cycles via a visited bitmap of PHI
1847         defs and simplify handling of in-loop and across loop dead stores
1848         and properly fail for loop-variant refs.  Handle byte-tracking with
1849         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
1850         limiting the walk.
1852 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
1854         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
1855         (vect_get_mask_type_for_stmt): Likewise.
1856         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
1857         split out from...
1858         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
1859         to determine the statement's vector type and the vector type that
1860         should be used for calculating nunits.  Deal with cases in which
1861         the type has to be deferred.
1862         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
1863         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
1864         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
1865         (vect_determine_vf_for_stmt): New functions, split out from...
1866         (vect_determine_vectorization_factor): ...here.
1867         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
1868         (vect_get_mask_type_for_stmt): New functions, split out from
1869         vect_determine_vectorization_factor.
1871 2018-05-16  Richard Biener  <rguenther@suse.de>
1873         * tree-cfg.c (verify_gimple_assign_ternary): Properly
1874         verify the [VEC_]COND_EXPR embedded comparison.
1876 2018-05-15  Martin Sebor  <msebor@redhat.com>
1878         PR tree-optimization/85753
1879         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
1880         RECORD_TYPE in addition to ARRAY_TYPE.
1882 2018-05-15  Martin Sebor  <msebor@redhat.com>
1884         PR middle-end/85643
1885         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
1887 2018-05-15  Richard Biener  <rguenther@suse.de>
1889         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
1890         add by_clobber_p one.  Change algorithm to collect all defs
1891         representing uses we need to walk and try reducing them to
1892         a single one before failing.
1893         (dse_dom_walker::dse_optimize_stmt): Adjust.
1895 2018-05-13  Mark Wielaard  <mark@klomp.org>
1897         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
1898         (size_of_loc_descr): Likewise.
1899         (output_loc_operands): Likewise.
1900         (output_loc_operands_raw): Likewise.
1901         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
1902         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
1903         (hash_loc_operands): Likewise.
1904         (compare_loc_operands): Likewise.
1906 2018-05-14  Mark Wielaard  <mark@klomp.org>
1908         * dwarf2out.c (count_index_addrs): New function.
1909         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
1911 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1913         PR tree-optimization/83648
1914         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
1915         return value as malloc candidate.
1917 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1919         PR ipa/85734
1920         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
1921         as true in call to suggest_attribute.
1923 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
1925         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
1926         -mreadonly-in-sdata.
1928 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1930         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
1931         New pattern.
1932         (aarch64_crypto_aesd_fused): Likewise.
1934 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
1936         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
1937         (movsi_aarch64): Likewise.
1938         (load_pairsi): Likewise.
1939         (load_pairdi): Likewise.
1940         (store_pairsi): Likewise.
1941         (store_pairdi): Likewise.
1942         (load_pairsf): Likewise.
1943         (load_pairdf): Likewise.
1944         (store_pairsf): Likewise.
1945         (store_pairdf): Likewise.
1946         (zero_extend): Likewise.
1947         (trunc): Swap alternatives.
1948         (fcvt_target): Add '?' to prefer w over r.
1950 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
1952         PR target/85756
1953         * config/i386/i386.md: Disallow non-commutative arithmetics in
1954         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
1955         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
1956         in the peephole2 before it.
1958 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
1960         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
1961         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
1962         (ix86_handle_option): Handle -mcldemote.
1963         * config.gcc: New header.
1964         * config/i386/cldemoteintrin.h: New file.
1965         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
1966         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
1967         -mcldemote.
1968         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1969         OPTION_MASK_ISA_CLDEMOTE.
1970         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
1971         (ix86_valid_target_attribute_inner_p): Ditto.
1972         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
1973         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
1974         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
1975         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
1976         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
1977         (cldemote): New.
1978         * config/i386/i386.opt: Add -mcldemote.
1979         * config/i386/x86intrin.h: New header.
1980         * doc/invoke.texi: Add -mcldemote.
1982 2018-05-14  Richard Biener  <rguenther@suse.de>
1984         * doc/match-and-simplify.texi: Adjust :s documentation.
1986 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
1988         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
1989         intended memcpy size.
1990         (REORDER_45): Likewise.
1992 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
1994         * sort.cc: New file.
1995         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
1996         * vec.c (qsort_chk): Use gcc_qsort.
1997         * Makefile.in (OBJS-libcommon): Add sort.o.
1998         (build/sort.o): New target.  Use it...
1999         (BUILD_RTL): ... here, and...
2000         (build/gencfn-macros): ... here, and...
2001         (build/genmatch): ... here.
2003 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2004             Chung-Ju Wu  <jasonwucj@gmail.com>
2006         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
2007         * config/nds32/nds32-graywolf.md: New file.
2008         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
2009         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
2010         pipeline.
2011         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
2012         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
2013         * config/nds32/nds32.md (pipeline_model): Add graywolf.
2014         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
2015         * config/nds32/pipelines.md: Include n15 settings.
2017 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2018             Chung-Ju Wu  <jasonwucj@gmail.com>
2020         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
2021         * config/nds32/nds32-n13.md: New file.
2022         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
2023         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
2024         pipeline.
2025         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
2026         * config/nds32/nds32.md (pipeline_model): Add n13.
2027         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
2028         * config/nds32/pipelines.md: Include n13 settings.
2030 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2031             Chung-Ju Wu  <jasonwucj@gmail.com>
2033         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
2034         * config/nds32/nds32-n10.md: New file.
2035         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
2036         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
2037         pipeline.
2038         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
2039         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
2040         * config/nds32/nds32.md (pipeline_model): Add n10.
2041         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
2042         * config/nds32/pipelines.md: Include n10 settings.
2044 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
2045             Kito Cheng  <kito.cheng@gmail.com>
2046             Chung-Ju Wu  <jasonwucj@gmail.com>
2048         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
2049         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2050         Add enum values for DSP extension instructions.
2051         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
2052         New constraints.
2053         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
2054         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
2055         New code iterators.
2056         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
2057         * config/nds32/nds32-dspext.md: New file for DSP implementation.
2058         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
2059         * config/nds32/nds32-intrinsic.md: Likewise.
2060         * config/nds32/nds32_intrinsic.h: Likewise.
2061         * config/nds32/nds32-md-auxiliary.c: Likewise.
2062         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
2063         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
2064         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
2065         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
2066         * config/nds32/nds32-protos.h: New declarations for DSP extension.
2067         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
2068         TYPE_DMAC in switch statement.
2069         * config/nds32/nds32.c: New checking and implementation for DSP
2070         extension instructions.
2071         * config/nds32/nds32.h: Likewise.
2072         * config/nds32/nds32.md: Likewise.
2073         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
2074         * config/nds32/predicates.md: Implement new predicates for DSP
2075         extension.
2077 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
2079         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
2080         Reformat alternatives and attributes so it is easier to identify
2081         which constraints/attributes go with which instruction.
2082         (mov<mode>_hardfloat32, FMOVE64): Likewise.
2083         (mov<mode>_softfloat32, FMOVE64): Likewise.
2084         (mov<mode>_hardfloat64, FMOVE64): Likewise.
2085         (mov<mode>_softfloat64, FMOVE64): Likewise.
2087 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2089         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2090         subsection.
2091         (Basic PowerPC Built-in Functions): The new name of the
2092         subsection previously known as "PowerPC Built-in Functions".
2093         (Basic PowerPC Built-in Functions Available on all Configurations):
2094         New subsubsection.
2095         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
2096         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
2097         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
2098         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
2100 2018-05-11  Martin Jambor  <mjambor@suse.cz>
2102         PR ipa/85655
2103         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
2104         single const.
2106 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2108         PR target/85733
2109         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
2111 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
2113         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
2114         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
2115         (ix86_handle_option): Handle -mwaitpkg.
2116         * config.gcc: New header.
2117         * config/i386/cpuid.h (bit_WAITPKG): New bit.
2118         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
2119         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
2120         function type.
2121         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2122         OPTION_MASK_ISA_WAITPKG.
2123         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
2124         (ix86_option_override_internal): Add PTA_WAITPKG.
2125         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
2126         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
2127         IX86_BUILTIN_TPAUSE.
2128         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
2129         __builtin_ia32_umwait and __builtin_ia32_tpause.
2130         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
2131         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
2132         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
2133         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
2134         UNSPECV_TPAUSE): New.
2135         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
2136         * config/i386/i386.opt: Add -mwaitpkg.
2137         * config/i386/waitpkgintrin.h: New file.
2138         * config/i386/x86intrin.h: New header.
2139         * doc/invoke.texi: Add -mwaitpkg.
2141 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2143         PR target/85606
2144         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
2145         equivalent.
2146         (cortex-m0): Use armv6s-m isa.
2147         (cortex-m0plus): Likewise.
2148         (cortex-m1): Likewise.
2149         (cortex-m0.small-multiply): Likewise.
2150         (cortex-m0plus.small-multiply): Likewise.
2151         (cortex-m1.small-multiply): Likewise.
2153 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
2154             Jakub Jelinek  <jakub@redhat.com>
2156         PR tree-optimization/85692
2157         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
2158         source permute as well.
2160 2018-05-11  Martin Liska  <mliska@suse.cz>
2162         PR sanitizer/85556
2163         * doc/extend.texi: Document LLVM style format for no_sanitize
2164         attribute.
2166 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
2168         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
2169         mode_supports_vsx_dform_quad to mode_supports_dq_form.
2170         (mode_supports_vsx_dform_quad): Likewise.
2171         (mode_supports_vmx_dform): Move these functions to be next to the
2172         other mode_supports functions.
2173         (mode_supports_dq_form): Likewise.
2174         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
2175         mode_supports_dq_form.
2176         (reg_offset_addressing_ok_p): Likewise.
2177         (offsettable_ok_by_alignment): Likewise.
2178         (rs6000_legitimate_offset_address_p): Likewise.
2179         (legitimate_lo_sum_address_p): Likewise.
2180         (rs6000_legitimize_address): Likewise.
2181         (rs6000_legitimize_reload_address): Likewise.
2182         (rs6000_secondary_reload_inner): Likewise.
2183         (rs6000_preferred_reload_class): Likewise.
2184         (rs6000_output_move_128bit): Likewise.
2186 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2188         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
2189         Generate SImode target register for null target.
2190         <case IX86_BUILTIN_XGETBV>: Ditto.
2191         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
2192         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
2194 2018-05-10  Carl Love  <cel@us.ibm.com>
2196         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2197         dcbtt and dcbtstt if operands[2] is 0.
2199 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2201         PR target/85693
2202         * config/i386/sse.md (usadv64qi): New expander.
2204 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
2206         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
2207         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
2208         -maltivec=be support.
2209         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
2210         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
2211         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
2212         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
2213         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
2214         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
2215         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
2216         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
2217         altivec_vsumsws): Adjust.
2218         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
2219         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
2220         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
2221         support.
2222         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
2223         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
2224         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
2225         (altivec_lve<VI_char>x): Delete expand.
2226         (*altivec_lve<VI_char>x_internal): Rename to...
2227         (altivec_lve<VI_char>x): ... this.
2228         (altivec_lvxl_<mode>): Delete expand.
2229         (*altivec_lvxl_<mode>_internal): Rename to ...
2230         (altivec_lvxl_<mode>): ... this.
2231         (altivec_stvxl_<mode>): Delete expand.
2232         (*altivec_stvxl_<mode>_internal): Rename to ...
2233         (altivec_stvxl_<mode>): ... this.
2234         (altivec_stve<VI_char>x): Delete expand.
2235         (*altivec_stve<VI_char>x_internal): Rename to ...
2236         (altivec_stve<VI_char>x): ... this.
2237         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
2238         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
2239         reduc_plus_scal_<mode>): Adjust.
2240         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
2241         comment.
2242         (rs6000_cpu_cpp_builtins): Adjust.
2243         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
2244         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
2245         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
2246         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
2247         -maltivec=be support.
2248         (rs6000_split_vec_extract_var): Adjust.
2249         (rs6000_split_v4si_init): Adjust.
2250         (swap_selector_for_mode): Delete.
2251         (altivec_expand_lvx_be, altivec_expand_stvx_be,
2252         altivec_expand_stvex_be): Delete.
2253         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
2254         -maltivec=be support.
2255         (rs6000_gimple_fold_builtin): Ditto.
2256         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
2257         Adjust.
2258         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
2259         (TARGET_DIRECT_MOVE_64BIT): Adjust.
2260         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
2261         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
2262         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
2263         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
2264         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
2265         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
2266         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
2267         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
2268         anonymous split): Adjust.
2269         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
2270         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
2272 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
2274         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
2275         when --with-gxx-include-dir is also specified.
2276         * configure: Regenerate.
2278 2018-05-09  Jim Wilson  <jimw@sifive.com>
2280         PR target/84797
2281         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
2282         * config/riscv/t-withmultilib: New.
2283         * config/riscv/withmultilib.h: New.
2284         * doc/install.texi: Document RISC-V --with-multilib-list support.
2286 2018-05-09  Richard Biener  <rguenther@suse.de>
2288         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
2289         vector.
2290         (vect_bb_vectorization_profitable_p): Adjust.  Compute
2291         actual scalar cost using the cost vector and the add_stmt_cost
2292         machinery.
2294 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2296         PR rtl-optimization/85645
2297         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
2298         in the REG_CFA_REGISTER note for LR, don't leave it empty.
2300 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2302         PR rtl-optimization/85645
2303         * shrink-wrap.c (spread_components): Return a boolean saying if
2304         anything was changed.
2305         (try_shrink_wrapping_separate): Iterate spread_components until
2306         nothing changes anymore.
2308 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2310         PR rtl-optimization/85645
2311         * regrename.c (build_def_use): Also kill the chains that include the
2312         destination of a REG_CFA_REGISTER note.
2314 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2316         PR rtl-optimization/85645
2317         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
2318         insn that has a REG_CFA_REGISTER note.
2320 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
2322         * cfgexpand.c (expand_clobber): New function.
2323         (expand_gimple_stmt_1): Use it.
2324         * tree-vect-stmts.c (vect_clobber_variable): New function,
2325         split out from...
2326         (vectorizable_simd_clone_call): ...here.
2327         (vectorizable_store): Emit a clobber either side of an
2328         IFN_STORE_LANES sequence.
2329         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
2331 2018-05-09  Tom de Vries  <tom@codesourcery.com>
2333         PR target/85626
2334         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
2335         (define_insn "trap_if_false"): Add exit after trap.
2337 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
2339         PR rtl-optimization/85638
2340         * bb-reorder.c: Include common/common-target.h.
2341         (create_forwarder_block): New function extracted from...
2342         (fix_up_crossing_landing_pad): ...here.  Rename into...
2343         (dw2_fix_up_crossing_landing_pad): ...this.
2344         (sjlj_fix_up_crossing_landing_pad): New function.
2345         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
2346         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
2347         from both partitions and exit the loop after one iteration.
2349 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2351         Revert:
2352         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2353         subsection.
2354         (Basic PowerPC Built-in Functions): The new name of the
2355         subsection previously known as "PowerPC Built-in Functions".
2356         (Basic PowerPC Built-in Functions Available on all Configurations):
2357         New subsubsection.
2358         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2359         subsubsection.
2360         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2361         subsubsection.
2362         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2363         subsubsection.
2364         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2365         subsubsection.
2367 2018-05-08  Jim Wilson  <jimw@sifive.com>
2369         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
2370         (LD_EMUL_SUFFIX): New.
2371         (LINK_SPEC): Use it.
2373 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2375         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2376         subsection.
2377         (Basic PowerPC Built-in Functions): The new name of the
2378         subsection previously known as "PowerPC Built-in Functions".
2379         (Basic PowerPC Built-in Functions Available on all Configurations):
2380         New subsubsection.
2381         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2382         subsubsection.
2383         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2384         subsubsection.
2385         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2386         subsubsection.
2387         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2388         subsubsection.
2390 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2392         PR target/85683
2393         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
2394         after cmpelim optimization.
2396 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
2398         * config.gcc: Support "goldmont".
2399         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
2400         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2401         PROCESSOR_GOLDMONT.
2402         * config/i386/i386.c (m_GOLDMONT): Define.
2403         (processor_target_table): Add "goldmont".
2404         (PTA_GOLDMONT): Define.
2405         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
2406         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
2407         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
2408         (fold_builtin_cpu): Add "goldmont".
2409         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
2410         (ix86_option_override_internal): Add "goldmont".
2411         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
2412         (processor_type): Add PROCESSOR_GOLDMONT.
2413         * config/i386/i386.md: Add CPU "glm".
2414         * config/i386/glm.md: New file.
2415         * config/i386/x86-tune.def: Add m_GOLDMONT.
2416         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
2418 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2420         PR target/85572
2421         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
2422         E_V4DImode.
2423         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
2424         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
2425         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
2427         PR target/85317
2428         * config/i386/i386.c (ix86_fold_builtin): Handle
2429         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
2431         PR target/85480
2432         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
2433         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
2435 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
2437         PR target/85658
2438         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
2439         (check_arch): Likewise.
2440         (check_fpu): Return the result rather than printing it.
2441         (end arch): Fix operator precedence.
2442         (end cpu): Likewise.
2443         (END): Print the result from check_fpu.
2445 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2446             Alan Hayward  <alan.hayward@arm.com>
2447             David Sherwood  <david.sherwood@arm.com>
2449         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
2450         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
2451         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
2452         (*fcmuo<mode>_and): New patterns.
2454 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2456         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
2457         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
2458         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
2459         (cmp_op, sve_imm_con): New code attributes.
2460         (SVE_COND_INT_CMP, imm_con): Delete.
2461         (cmp_op): Remove above unspecs from int attribute.
2462         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
2463         to...
2464         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
2465         comparison-specific unspecs.
2466         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
2467         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
2468         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
2469         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
2470         (*vec_fcm<cmp_op><mode>): Rename to...
2471         (*fcm<cmp_op><mode>): ...this and adjust likewise.
2472         (*vec_fcmuo<mode>): Rename to...
2473         (*fcmuo<mode>): ...this and adjust likewise.
2474         (*pred_fcm<cmp_op><mode>): New pattern.
2475         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
2476         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
2477         functions.
2478         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
2479         and UNORDERED.
2480         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
2481         (aarch64_emit_sve_predicated_cond): New function.
2482         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
2483         (aarch64_emit_unspec_cond_or): Replace with...
2484         (aarch64_emit_sve_or_conds): ...this new function.  Use
2485         aarch64_emit_sve_ptrue_op for the individual comparisons and
2486         aarch64_emit_binop to OR them together.
2487         (aarch64_emit_inverted_unspec_cond): Replace with...
2488         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
2489         aarch64_emit_sve_ptrue_op for the comparison and
2490         aarch64_emit_unop to invert the result.
2491         (aarch64_expand_sve_vec_cmp_float): Update after the above
2492         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
2494 2018-05-07  Nathan Sidwell  <nathan@acm.org>
2496         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
2497         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
2498         (Backwards Compatibility): Likewise.
2500 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2502         PR bootstrap/85681
2503         Revert:
2504         2018-05-07  Luis Machado  <luis.machado@linaro.org>
2506         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2507         <prefetch_dynamic_strides>: New const bool field.
2508         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2509         prefetch_dynamic_strides.
2510         (exynosm1_prefetch_tune): Likewise.
2511         (thunderxt88_prefetch_tune): Likewise.
2512         (thunderx_prefetch_tune): Likewise.
2513         (thunderx2t99_prefetch_tune): Likewise.
2514         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
2515         (aarch64_override_options_internal): Update to set
2516         PARAM_PREFETCH_DYNAMIC_STRIDES.
2517         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2518         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2519         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2520         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2521         prefetch-dynamic-strides setting.
2523         2018-05-07  Luis Machado  <luis.machado@linaro.org>
2525         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2526         <minimum_stride>: New const int field.
2527         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2528         minimum_stride field.
2529         (exynosm1_prefetch_tune): Likewise.
2530         (thunderxt88_prefetch_tune): Likewise.
2531         (thunderx_prefetch_tune): Likewise.
2532         (thunderx2t99_prefetch_tune): Likewise.
2533         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
2534         (aarch64_override_options_internal): Update to set
2535         PARAM_PREFETCH_MINIMUM_STRIDE.
2536         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2537         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2538         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2539         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2540         stride is constant and is below the minimum stride threshold.
2542 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2544         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
2545         to 512.
2547 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2549         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2550         <prefetch_dynamic_strides>: New const bool field.
2551         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2552         prefetch_dynamic_strides.
2553         (exynosm1_prefetch_tune): Likewise.
2554         (thunderxt88_prefetch_tune): Likewise.
2555         (thunderx_prefetch_tune): Likewise.
2556         (thunderx2t99_prefetch_tune): Likewise.
2557         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
2558         (aarch64_override_options_internal): Update to set
2559         PARAM_PREFETCH_DYNAMIC_STRIDES.
2560         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2561         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2562         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2563         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2564         prefetch-dynamic-strides setting.
2566 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2568         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2569         <minimum_stride>: New const int field.
2570         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2571         minimum_stride field.
2572         (exynosm1_prefetch_tune): Likewise.
2573         (thunderxt88_prefetch_tune): Likewise.
2574         (thunderx_prefetch_tune): Likewise.
2575         (thunderx2t99_prefetch_tune): Likewise.
2576         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
2577         (aarch64_override_options_internal): Update to set
2578         PARAM_PREFETCH_MINIMUM_STRIDE.
2579         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2580         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2581         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2582         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2583         stride is constant and is below the minimum stride threshold.
2585 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
2587         PR c++/85659
2588         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
2589         the type is addressable.  Don't force op into register if it has
2590         BLKmode.
2592 2018-05-05  Roland McGrath  <mcgrathr@google.com>
2594         PR other/77609
2595         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
2596         any section for which we don't know a specific type it should have,
2597         regardless of name.  Previously this was done only for the exact
2598         names ".init_array", ".fini_array", and ".preinit_array".
2599         (default_elf_asm_named_section): Add comment about
2600         relationship with default_section_type_flags and SECTION_NOTYPE.
2601         (get_section): Don't consider it a type conflict if one side has
2602         SECTION_NOTYPE and the other doesn't, as long as neither has the
2603         SECTION_BSS et al used in the default_section_type_flags logic.
2605 2018-05-05  Tom de Vries  <tom@codesourcery.com>
2607         PR target/85653
2608         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
2609         (workaround_barsyncs): New function.
2610         (nvptx_reorg): Use workaround_barsyncs.
2611         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
2612         (define_expand "nvptx_membar_cta"): New define_expand.
2613         (define_insn "*nvptx_membar_cta"): New insn.
2615 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
2617         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
2618         To improve optimization opportunities.
2619         * builtin-types.def: The new needed builtin types for the above.
2621 2018-05-04  Richard Biener  <rguenther@suse.de>
2623         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
2624         * gimple-ssa-store-merging.c
2625         (imm_store_chain_info::output_merged_store): Remove redundant create,
2626         release split_store vector contents on failure.
2627         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
2628         scalar stmt vector on cache hit.
2630 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
2632         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
2633         Xilinx FP support.
2634         * config.gcc (powerpc-xilinx-eabi*): Remove.
2635         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
2636         support.
2637         (fusion_addis_mem_combo_load): Ditto.
2638         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
2639         FP support.
2640         (rs6000_cpu_cpp_builtins): Ditto.
2641         * config/rs6000/rs6000-linux.c
2642         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
2643         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
2644         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
2645         support.
2646         (rs6000_setup_reg_addr_masks): Ditto.
2647         (rs6000_init_hard_regno_mode_ok): Ditto.
2648         (rs6000_option_override_internal): Ditto.
2649         (legitimate_lo_sum_address_p): Ditto.
2650         (rs6000_legitimize_address): Ditto.
2651         (rs6000_legitimize_reload_address): Ditto.
2652         (rs6000_legitimate_address_p): Ditto.
2653         (abi_v4_pass_in_fpr): Ditto.
2654         (setup_incoming_varargs): Ditto.
2655         (rs6000_gimplify_va_arg): Ditto.
2656         (rs6000_split_multireg_move): Ditto.
2657         (rs6000_savres_strategy): Ditto.
2658         (rs6000_emit_prologue_components): Ditto.
2659         (rs6000_emit_epilogue_components): Ditto.
2660         (rs6000_emit_prologue): Ditto.
2661         (rs6000_emit_epilogue): Ditto.
2662         (rs6000_elf_file_end): Ditto.
2663         (rs6000_function_value): Ditto.
2664         (rs6000_libcall_value): Ditto.
2665         * config/rs6000/rs6000.h: Ditto.
2666         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
2667         (TARGET_MINMAX): ... this.  New.
2668         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
2669         * config/rs6000/rs6000.md: Remove Xilinx FP support.
2670         (*movsi_internal1_single): Delete.
2671         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
2672         mfpu=, mxilinx-fpu): Delete.
2673         * config/rs6000/singlefp.h: Delete.
2674         * config/rs6000/sysv4.h: Remove Xilinx FP support.
2675         * config/rs6000/t-rs6000: Ditto.
2676         * config/rs6000/t-xilinx: Delete.
2677         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
2678         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
2679         (VStype_simple): Delete.
2680         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
2681         * config/rs6000/xfpu.h: Delete.
2682         * config/rs6000/xfpu.md: Delete.
2683         * config/rs6000/xilinx.h: Delete.
2684         * config/rs6000/xilinx.opt: Delete.
2685         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
2686         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
2688 2018-05-04  Tom de Vries  <tom@codesourcery.com>
2690         PR libgomp/85639
2691         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
2692         if ignore == 0.
2694 2018-05-04  Richard Biener  <rguenther@suse.de>
2696         PR middle-end/85627
2697         * tree-complex.c (update_complex_assignment): We are always in SSA form.
2698         (expand_complex_div_wide): Likewise.
2699         (expand_complex_operations_1): Likewise.
2700         (expand_complex_libcall): Preserve EH info of the original stmt.
2701         (tree_lower_complex): Handle removed blocks.
2702         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
2703         on complex multiplication and division libcall builtins.
2705 2018-05-04  Richard Biener  <rguenther@suse.de>
2707         PR middle-end/85574
2708         * fold-const.c (negate_expr_p): Restrict negation of operand
2709         zero of a division to when we know that can happen without
2710         overflow.
2711         (fold_negate_expr_1): Likewise.
2713 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
2715         PR libstdc++/85466
2716         * real.h (real_nextafter): Declare.
2717         * real.c (real_nextafter): New function.
2718         * fold-const-call.c (fold_const_nextafter): New function.
2719         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
2720         CASE_CFN_NEXTTOWARD.
2721         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
2722         even when arg1_mode is different from arg0_mode.
2724 2018-05-03  Nathan Sidwell  <nathan@acm.org>
2726         * doc/extend.texi (Deprecated Features): Remove
2727         -ffriend-injection.
2728         (Backwards Compatibility): Likewise.
2729         * doc/invoke.texi (C++ Language Options): Likewise.
2730         (C++ Dialect Options): Likewise.
2732 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
2734         PR target/85530
2735         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
2736         _mm512_mask_mullox_epi64): New intrinsics.
2738 2018-05-03  Tom de Vries  <tom@codesourcery.com>
2740         PR testsuite/85106
2741         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
2742         dump files): Add offload-tree.
2744 2018-05-03  Richard Biener  <rguenther@suse.de>
2746         PR tree-optimization/85615
2747         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
2748         to loops not nested in BBs loop father to avoid creating multi-entry
2749         loops.
2751 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2753         PR tree-optimization/70291
2754         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
2755         arguments.  Change return type to tree.  Emit libcall as a new
2756         statement rather than replacing existing one when inplace_p is true.
2757         (expand_complex_multiplication_components): New function.
2758         (expand_complex_multiplication): Expand floating-point complex
2759         multiplication using the above.
2760         (expand_complex_division): Rename inner_type parameter to type.
2761         Update expand_complex_libcall call-site.
2762         (expand_complex_operations_1): Update expand_complex_multiplication
2763         and expand_complex_division call-sites.
2765 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
2767         PR target/85582
2768         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
2769         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
2770         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
2771         the highest significant bit of the shift count mask is clear.  In
2772         check whether and[sq]i3 is needed verify that all significant bits
2773         of the shift count other than the highest are set.
2775 2018-05-02  Tom de Vries  <tom@codesourcery.com>
2777         PR libgomp/82428
2778         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
2779         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
2780         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
2781         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
2782         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
2783         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
2784         __builtin_goacc_parlevel_size.
2786 2018-05-02  Richard Biener  <rguenther@suse.de>
2788         PR tree-optimization/85597
2789         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
2790         do not use split vect_get_vec_defs call but call vect_get_slp_defs
2791         directly.
2793 2018-05-02  Tom de Vries  <tom@codesourcery.com>
2795         PR testsuite/85106
2796         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
2797         dump files): Add ltrans-tree.
2799 2018-05-02  Tom de Vries  <tom@codesourcery.com>
2801         PR testsuite/85106
2802         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
2803         dump files): Add wpa-ipa.
2805 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
2807         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
2808         powerpc*-*-linux*paired* target.
2809         * config/rs6000/750cl.h: Delete.
2810         * config/rs6000/paired.h: Delete.
2811         * config/rs6000/paired.md: Delete.
2812         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
2813         float support.
2814         * config/rs6000/rs6000-builtin.def: Remove paired float support.
2815         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
2816         comment.  Remove paired float support.
2817         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
2818         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
2819         VECTOR_PAIRED.
2820         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
2821         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
2822         declarations.
2823         * config/rs6000/rs6000.c: Remove paired float support.
2824         (paired_expand_vector_init, paired_expand_vector_move,
2825         paired_emit_vector_compare, paired_emit_vector_cond_expr,
2826         (paired_expand_lv_builtin, paired_expand_stv_builtin,
2827         paired_expand_builtin, paired_expand_predicate_builtin,
2828         paired_init_builtins): Delete.
2829         * config/rs6000/rs6000.h: Remove paired float support.
2830         * config/rs6000/rs6000.md: Remove paired float support.
2831         (move_from_CR_ov_bit): Delete.
2832         * config/rs6000/rs6000.opt (mpaired): Delete.
2833         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
2834         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
2836 2018-05-02  Richard Biener  <rguenther@suse.de>
2838         PR middle-end/85567
2839         * gimplify.c (gimplify_save_expr): When in SSA form allow
2840         SAVE_EXPRs to compute to SSA vars.
2842 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
2844         PR target/85582
2845         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
2846         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
2847         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
2848         clobber operands[2], instead use a new pseudo.  Formatting fixes.
2850 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
2852         PR tree-optimization/85586
2853         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
2854         exit early for statements in the same group if the accesses are
2855         not strided.
2857 2018-05-02  Tom de Vries  <tom@codesourcery.com>
2859         PR lto/85451
2860         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
2861         error message.
2863 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
2865         PR tree-optimization/85143
2866         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
2868 2018-05-01  Tom de Vries  <tom@codesourcery.com>
2870         PR lto/85451
2871         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
2872         not found" error message.
2874 2018-05-01  Tom de Vries  <tom@codesourcery.com>
2876         PR other/83786
2877         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
2878         * vec.c (test_ordered_remove_if): New function.
2879         (vec_c_tests): Call test_ordered_remove_if.
2880         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
2881         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
2882         * tree-vect-patterns.c (vect_pattern_recog_1): Use
2883         VEC_ORDERED_REMOVE_IF.
2885 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2887         PR tree-optimization/82665
2888         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
2889         pointer subtraction where arguments come from a memchr call.
2891 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
2893         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
2894         --push-state --as-needed and --pop-state instead of --as-needed and
2895         --no-as-needed if ld supports it.
2896         * configure: Regenerated.
2898         PR web/85578
2899         * doc/install.texi2html: Replace _002d with - and _002a with * in
2900         generated html files using sed.
2902 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2904         PR c++/85523
2905         * gcc-rich-location.c (blank_line_before_p): New function.
2906         (use_new_line): New function.
2907         (gcc_rich_location::add_fixit_insert_formatted): New function.
2908         * gcc-rich-location.h
2909         (gcc_rich_location::add_fixit_insert_formatted): New function.
2911 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2913         * selftest.c (assert_streq): Rename "expected" and "actual" to
2914         "val1" and "val2".  Extend NULL-handling to cover both inputs
2915         symmetrically, while still requiring both to be non-NULL for a pass.
2916         * selftest.h (assert_streq): Rename "expected" and "actual" to
2917         "val1" and "val2".
2918         (ASSERT_EQ): Likewise.
2919         (ASSERT_EQ_AT): Likewise.
2920         (ASSERT_KNOWN_EQ): Likewise.
2921         (ASSERT_KNOWN_EQ_AT): Likewise.
2922         (ASSERT_NE): Likewise.
2923         (ASSERT_MAYBE_NE): Likewise.
2924         (ASSERT_MAYBE_NE_AT): Likewise.
2925         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
2926         the assertion to pass.
2927         (ASSERT_STREQ_AT): Likewise.
2929 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
2931         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
2932         interaction with -pie.
2934 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2936         * selftest.h: Fix alphabetization of per-source-file selftest
2937         declarations.
2939 2018-04-30  Jason Merrill  <jason@redhat.com>
2941         PR c++/61982 - dead stores to destroyed objects.
2942         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
2943         of clobber.
2945 2018-04-30  Jason Merrill  <jason@redhat.com>
2947         * tree.c (build_clobber): New.
2948         * tree.h: Declare it.
2949         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
2951 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2953         * diagnostic-show-locus.c (layout::layout): Update for
2954         location_get_source_line returning a char_span.
2955         (struct char_span): Move to input.h.
2956         (struct correction): Update for fields in char_span becoming
2957         private.
2958         (struct source_line): Update for location_get_source_line
2959         returning a char_span.
2960         (layout::print_line): Likewise.
2961         * edit-context.c (edited_file::print_content): Likewise.
2962         (edited_file::print_diff_hunk): Likewise.
2963         (edited_file::print_run_of_changed_lines): Likewise.
2964         (edited_file::get_num_lines): Likewise.
2965         (edited_line::edited_line): Likewise.
2966         * final.c (asm_show_source): Likewise.
2967         * input.c (location_get_source_line): Convert return type
2968         from const char * to char_span, losing the final "line_len"
2969         param.
2970         (dump_location_info): Update for the above.
2971         (get_substring_ranges_for_loc): Likewise.  Use a char_span
2972         when handling the literal within the line.
2973         (test_reading_source_line): Update for location_get_source_line
2974         returning a char_span.
2975         * input.h (class char_span): Move here from
2976         diagnostic-show-locus.c, converting from a struct to a class.
2977         Make data members private.
2978         (char_span::operator bool): New.
2979         (char_span::length): New.
2980         (char_span::get_buffer): New.
2981         (char_span::operator[]): New.
2982         (char_span::subspan): Make const.
2983         (char_span::xstrdup): New.
2984         (location_get_source_line): Convert return type from const char *
2985         to char_span, losing the final "line_size" param.
2987 2018-04-30  Jan Hubicka  <jh@suse.cz>
2989         * lto-wrapper.c (ltrans_priorities): New static var.
2990         (cmp_priority): New.
2991         (run_gcc): Read priorities and if doing parallel build order
2992         the Makefile by them.
2994 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2996         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
2998 2018-04-30  Richard Biener  <rguenther@suse.de>
3000         * tree-cfg.c (verify_address): Remove base argument, add
3001         flag whether to check TREE_ADDRESSABLE and do that.
3002         (verify_expr): Remove.
3003         (verify_types_in_gimple_reference): Add pieces from verify_expr.
3004         (verify_gimple_assign_single): Likewise.
3005         (verify_gimple_switch): Likewise.
3006         (verify_expr_location_1): Dereference tp once.  Add (disabled)
3007         piece from verify_expr.
3008         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
3010 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3012         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
3014 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3016         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
3017         (small_data_pattern): Likewise.
3018         (arc_rewrite_small_data): Likewise.
3019         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
3020         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
3021         (get_symbol_alignment): New function.
3022         (legitimate_small_data_address_p): Likewise.
3023         (legitimate_scaled_address): Update, call
3024         legitimate_small_data_address_p.
3025         (output_sdata): New static variable.
3026         (arc_print_operand): Update how we handle small data operands.
3027         (arc_print_operand_address): Likewise.
3028         (arc_legitimate_address_p): Update, use
3029         legitimate_small_data_address_p.
3030         (arc_rewrite_small_data_p): Remove.
3031         (arc_rewrite_small_data_1): Likewise.
3032         (arc_rewrite_small_data): Likewise.
3033         (small_data_pattern): Likewise.
3034         (compact_sda_memory_operand): Update to use
3035         legitimate_small_data_address_p and get_symbol_alignment.
3036         (prepare_move_operands): Don't rewite sdata pattern.
3037         (prepare_extend_operands): Remove.
3038         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
3039         pattern.
3040         (zero_extendqisi2): Likewise.
3041         (zero_extendhisi2): Likewise.
3042         (extendqihi2): Likewise.
3043         (extendqisi2): Likewise.
3044         (extendhisi2): Likewise.
3045         (addsi3): Likewise.
3046         (subsi3): Likewise.
3047         (andsi3): Likewise.
3048         * config/arc/constraints.md (Usd): Change it to memory constraint.
3050 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3052         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
3053         as source of std instructions.
3054         * config/arc/arc.md (movsi_insn): Update pattern predicate to
3055         allow 6-bit constants as source for store instructions.
3056         (movdi_insn): Update instruction pattern to allow 6-bit constants
3057         as source for store instructions.
3059 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
3061         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
3063 2018-04-30  Nathan Sidwell  <nathan@acm.org>
3064             Sandra Loosemore <sandra@codesourcery.com>
3066         * dumpfile.c (dump_open): Allow '-' for stdout.
3067         * doc/invoke.texi (Developer Options): Document dump filename
3068         determination early.  Document stdin/stdout selection.
3070 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
3072         Microblaze Target: PIC data text relative
3074         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
3075         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
3076         Add declaration.
3077         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
3078         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
3079         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
3080         New addressing mode for data-text relative position indepenedent code.
3081         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
3082         'ADDRESS_SYMBOLIC_TXT_REL'.
3083         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
3084         (microblaze_legitimate_pic_operand): Exclude function calls from
3085         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
3086         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
3087         addresses cases.
3088         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3089         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3090         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
3091         for 'address + offset'.
3092         (microblaze_expand_prologue): Add new function prologue call for
3093         'r20' assignation.
3094         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
3095         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
3096         table in case of TARGET_PIC_DATA_TEXT_REL.
3097         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
3098         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
3099         Add new macros 'UNSPEC_TEXT',
3100         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
3101         + exclude function calls from 'UNSPEC_PLT' in case of data text
3102         relative mode.
3103         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3104         new target hook for generating address diff vector tables in case of
3105         flag_pic.
3106         * doc/tm.texi : Regenerate.
3107         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
3108         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
3109         of addr diff vector generation.
3110         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3111         target hook definition.
3112         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
3113         Add default function for generate_pic_addr_diff_vec -> flag_pic.
3114         * doc/invoke.texi (Add new pic option): Add new microblaze pic
3115         option for data text relative.
3117 2018-04-30  Richard Biener  <rguenther@suse.de>
3119         * tree-chrec.h (evolution_function_is_constant_p): Remove
3120         redundant check.
3121         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
3123 2018-04-30  Richard Biener  <rguenther@suse.de>
3125         PR bootstrap/85571
3126         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
3128 2018-04-30  Richard Biener  <rguenther@suse.de>
3130         PR tree-optimization/28364
3131         PR tree-optimization/85275
3132         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
3133         copying first exit test.
3135 2018-04-28  Mark Wielaard  <mark@klomp.org>
3137         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
3138         dwarf_version >= 5.
3139         (dwarf_AT): Handle DW_AT_addr_base.
3140         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
3142 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
3144         PR target/84431
3145         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
3146         (*ashl<dwi>3_doubleword_mask_1): Ditto.
3147         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
3148         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
3150 2018-04-28  Richard Biener  <rguenther@suse.de>
3152         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
3153         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
3154         to reflect use.  Only add interesting stmts.
3156 2018-04-27  Martin Jambor  <mjambor@suse.cz>
3158         PR ipa/85549
3159         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
3160         the jump function allows for passing through aggregate values.
3162 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
3164         * input.h (in_system_header_at): Convert from macro to inline
3165         function.
3166         (from_macro_expansion_at): Likewise.
3167         (from_macro_definition_at): Likewise.
3169 2018-04-27  Jeff Law  <law@redhat.com>
3171         * config.gcc: Mark tile* targets as deprecated/obsolete.
3173 2018-04-27  Richard Biener  <rguenther@suse.de>
3175         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
3176         fix for ILP32.
3178 2018-04-27  Richard Biener  <rguenther@suse.de>
3180         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
3182 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
3184         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
3185         with Yd constraint. Set "preferred_for_speed" attribute from
3186         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
3187         with Yd constraint.
3188         (*movdi_internal): Ditto.
3189         (movti_interunit splitters): Remove
3190         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
3191         (movdi_interunit splitters): Ditto.
3192         * config/i386/constraints.md (Ye): Remove.
3193         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
3195 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3197         PR target/85512
3198         * config/aarch64/constraints.md (Usg): Limit to 31.
3199         (Usj): Limit to 63.
3201 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
3203         PR tree-optimization/85529
3204         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
3205         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
3206         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
3207         zero extension or masking of the MSB bit.
3208         (optimize_range_tests): Add FIRST_BB argument, pass it through
3209         to optimize_range_tests_var_bound.
3210         (maybe_optimize_range_tests, reassociate_bb): Adjust
3211         optimize_range_tests callers.
3213 2018-04-26  Richard Biener  <rguenther@suse.de>
3214             Jakub Jelinek  <jakub@redhat.com>
3216         * cgraph.h (symbol_table): Just declare debug method here.
3217         * symtab.c (symbol_table::debug): Define.
3219 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
3221         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
3223 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
3225         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
3226         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
3227         (*movdi_internal): Substitute Yi and Yj constraint with x
3228         and Ym and Yn constraint with y constraint.  Update "isa"
3229         attribute and set "preferred_for_speed" attribute from
3230         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
3231         (*movsi_internal): Ditto.
3232         (*movdf_internal): Ditto.
3233         (*movsf_internal): Ditto.
3234         (*zero_extendsidi2): Ditto.
3235         * config/i386/sse.md (vec_set<mode>_0): Ditto.
3236         (sse2_loadld): Ditto.
3237         (*vec_extract<ssevecmodelower>_0): Ditto.
3238         (*vec_extractv4si_0_zext_sse4): Ditto.
3239         (vec_concatv2di): Ditto.
3240         (*vec_dup<mode>): Ditto.
3241         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
3242         * config/i386/constraints.md (Yi): Remove.
3243         (Yj): Remove.
3244         (Ym): Remove.
3245         (Yn): Remove.
3247 2018-04-26  Nathan Sidwell  <nathan@acm.org>
3249         * dumpfile.c (dump_open): New.
3250         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
3251         (dump_finish): Detect stdio/stderr by value not name.
3253 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
3255         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
3257 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3259         PR target/84952
3260         * config/nvptx/nvptx.c (verify_neutering_jumps)
3261         (verify_neutering_labels): New function
3262         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
3264 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3266         PR target/84025
3267         * config/nvptx/nvptx.c (needs_neutering_p): New function.
3268         (nvptx_single): Use needs_neutering_p to skip over insns that do not
3269         need neutering.
3271 2018-04-26  Richard Biener <rguenther@suse.de>
3272             Tom de Vries  <tom@codesourcery.com>
3274         PR lto/85422
3275         * lto-streamer-out.c (output_function): Fixup loops if required to match
3276         discovery done in the reader.
3278 2018-04-26  Richard Biener  <rguenther@suse.de>
3280         PR tree-optimization/85116
3281         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
3282         have a loop exit from the single latch predecessor.  Remove
3283         case of header with just condition.
3284         (ch_base::copy_headers): Exclude infinite loops from any
3285         processing.
3286         (pass_ch::execute): Record exits.
3288 2018-04-26  Richard Biener  <rguenther@suse.de>
3290         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
3291         prologue cost vector and pass it to vect_get_load_cost.
3292         (vect_get_peeling_costs_all_drs): Likewise.
3293         (vect_peeling_hash_get_lowest_cost): Likewise.
3294         (vect_enhance_data_refs_alignment): Likewise.
3296 2018-04-26  Richard Biener  <rguenther@suse.de>
3298         PR middle-end/85450
3299         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
3300         checking of integer<->pointer conversions.
3301         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
3302         sign-/zero-extending pointer types.
3303         (expand_omp_for_static_chunk): Likewise.
3305 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
3306             Jean Lee  <xiaoyur347@gmail.com>
3308         * config/mips/mips.c (mips_asan_shadow_offset): New function.
3309         (TARGET_ASAN_SHADOW_OFFSET): Define.
3310         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
3311         true for -fsanitize=address.
3313 2018-04-25  Mark Wielaard  <mark@klomp.org>
3315         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
3316         shorter ones.
3318 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3320         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
3321         than "alu", remove explicit "memory" and "imm_disp" attributes.
3322         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
3324         PR middle-end/85414
3325         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
3326         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
3327         gen_lowpart_no_emit.
3329 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
3331         PR target/85473
3332         * config/i386/i386.c (ix86_expand_builtin): Change memory
3333         operand to XI, extend p0 to Pmode.
3334         * config/i386/i386.md: Change unspec volatile and operand
3335         1 mode to XI, change operand 0 mode to P.
3337 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3339         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
3340         GET_MODE_MASK before any checking.
3341         (nds32_can_use_bset_p): Likewise.
3342         (nds32_can_use_btgl_p): Likewise.
3344 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3346         * config/nds32/nds32-doubleword.md: New define_split pattern for
3347         illegal register number.
3349 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3351         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
3353 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3355         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
3357 2018-04-25  Richard Biener  <rguenther@suse.de>
3359         * lto-streamer.h (LTO_major_version): Bump to 8.
3361 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3363         * BASE-VER: Set to 9.0.0.
3365 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
3367         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
3368         in __abskf2 and __powikf2.
3370 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3372         PR target/85512
3373         * config/aarch64/constraints.md (Usg, Usj): New constraints.
3374         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
3375         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
3376         Use the above on operand 2.  Reindent.
3377         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
3379 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3381         PR target/85485
3382         * common/config/i386/i386-common.c (ix86_handle_option): Don't
3383         handle OPT_mcet.
3384         * config/i386/i386.opt (mcet): Removed.
3385         * doc/install.texi: Remove -mcet documentation.
3386         * doc/invoke.texi: Likewise.
3388 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3390         PR target/85485
3391         * doc/install.texi: Remove -mcet from bootstrap-cet.
3393 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3395         PR target/85511
3396         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
3397         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
3398         if TARGET_64BIT.
3400         PR target/85503
3401         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
3402         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
3403         containing a CONST_VECTOR.
3405 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
3407         * doc/install.texi: Update newlib dependency for nvptx.
3409 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3411         PR target/85508
3412         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
3413         instead of INTVAL when shifting x left.
3415 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
3417         PR tree-optimization/85478
3418         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
3419         vect_grouped_store_supported for single element vectors.
3421 2018-04-24  Richard Biener  <rguenther@suse.de>
3423         PR target/85491
3424         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
3425         load cost increase to the case of non-constant step.
3427 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3429         PR target/84828
3430         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
3431         destination if any_malformed_asm.
3433 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
3435         PR middle-end/85496
3436         * expr.c (store_field): In the bitfield case, if the value comes from
3437         a function call and is returned in registers by means of a PARALLEL,
3438         do not change the mode of the temporary unless BLKmode and VOIDmode.
3440 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
3442         PR rtl-optimization/85423
3443         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
3444         dependencies to debug insns when the previous insn is non-debug.
3446 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3448         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
3449         enums into a single definition.
3450         (fls): Fix predicates and printing.
3451         (seti): Likewise.
3453 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3455         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
3456         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
3457         and short u6 immediate.
3458         (check_if_valid_sleep_operand): Remove.
3459         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
3461 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3463         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
3464         flag_always_save_lp condition.
3465         * config/nds32/nds32.opt (malways-save-lp): New option.
3467 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3469         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
3470         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
3471         * config/nds32/nds32.h
3472         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
3473         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
3475 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3477         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
3478         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
3480 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3481             Chung-Ju Wu  <jasonwucj@gmail.com>
3483         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
3484         Declare.
3485         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
3486         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
3488 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3490         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
3492 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3494         * config/nds32/nds32-protos.h (nds32_data_alignment,
3495         nds32_local_alignment): Declare.
3496         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
3497         nds32_local_alignment): New functions.
3498         (TARGET_CONSTANT_ALIGNMENT): Define.
3499         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
3501 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3503         * config/nds32/nds32.c
3504         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
3505         (TARGET_MODES_TIEABLE_P): Likewise.
3507 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3509         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
3510         level Ofast and Og.
3512 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
3513             Chung-Ju Wu  <jasonwucj@gmail.com>
3515         * config/nds32/constants.md (unspec_volatile_element): Add enum values
3516         for unaligned access.
3517         * config/nds32/nds32-intrinsic.c: Implementation of expanding
3518         unaligned access.
3519         * config/nds32/nds32-intrinsic.md: Likewise.
3520         * config/nds32/nds32_intrinsic.h: Likewise.
3521         * config/nds32/nds32.h (nds32_builtins): Likewise.
3522         * config/nds32/nds32.opt (munaligned-access): New option.
3523         * config/nds32/nds32.c (nds32_asm_file_start): Display
3524         flag_unaligned_access status.
3526 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
3528         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
3529         -mno-relax is present.
3530         * config/riscv/linux.h (LINK_SPEC): Ditto.
3532 2018-04-20  Martin Sebor  <msebor@redhat.com>
3534         PR c/85365
3535         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
3536         for null pointers.
3537         (gimple_fold_builtin_stxcpy_chk): Same.
3538         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
3540 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
3542         PR target/85456
3543         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
3544         __powikf2 when long double is IEEE 128-bit.
3546 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
3548         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
3549         step to make sure stack always aligned.
3551 2018-04-20  Carl Love  <cel@us.ibm.com>
3553         PR target/83402
3554         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
3555         size check for arg0.
3557 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
3558             Tom de Vries  <tom@codesourcery.com>
3560         PR target/85445
3561         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
3562         Emit insns for calls too.
3563         (nvptx_find_par): Always look for worker-level predecessor insn.
3564         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
3565         calls.
3566         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
3567         (nvptx_process_pars): Propagate frames for calls.
3569 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
3571         PR target/85469
3572         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
3573         Removed.
3574         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
3575         (ix86_handle_option): Don't handle OPT_mibt.
3576         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
3577         __SHSTK__.
3578         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
3579         has_ibt and ibt.
3580         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
3581         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
3582         (ix86_target_macros): Define __CET__ with flag_cf_protection
3583         for -fcf-protection.
3584         * config/i386/i386.c (isa2_opts): Remove -mibt.
3585         * config/i386/i386.h (TARGET_IBT): Removed.
3586         (TARGET_IBT_P): Likewise.
3587         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
3588         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
3589         * config/i386/i386.opt (mcet): Update help message.
3590         (mshstk): Likewise.
3591         (mibt): Removed.
3592         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
3593         -mcet as an alias for -mshstk.
3595 2018-04-20  Richard Biener <rguenther@suse.de>
3597         PR middle-end/85475
3598         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
3599         complexity by forcing a single use of the multiply operand.
3601 2018-04-20  Martin Jambor  <mjambor@suse.cz>
3603         ipa/85449
3604         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
3605         recursion dependency to only apply to non-clones.
3607 2018-04-20  Martin Jambor  <mjambor@suse.cz>
3609         ipa/85447
3610         * ipa-cp.c (create_specialized_node): Check that clones of
3611         self-recursive edges exist during IPA-CP.
3613 2018-04-19  Toon Moene  <toon@moene.org>
3615         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
3616         by -O3. 
3618 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
3620         PR tree-optimization/85467
3621         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
3622         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
3623         VECTOR_CST element to type.
3625 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
3627         PR target/85397
3628         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
3629         * config/i386/i386.md (builtin_setjmp_setup): Removed.
3630         (builtin_longjmp): Likewise.
3631         (save_stack_nonlocal): New pattern.
3632         (restore_stack_nonlocal): Likewise.
3634 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
3636         PR target/85404
3637         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
3638         Replace ASM_OUTPUT_LABEL with fprintf.
3640 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
3642         PR target/85417
3643         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
3644         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
3645         * config/i386/i386-c.c (ix86_target_macros_internal): Also
3646         define __IBT__ and __SHSTK__ for -fcf-protection.
3647         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
3648         TARGET_IBT.
3649         (ix86_trampoline_init): Likewise.
3650         (x86_output_mi_thunk): Likewise.
3651         (ix86_notrack_prefixed_insn_p): Likewise.
3652         (ix86_option_override_internal): Don't disallow -fcf-protection.
3653         * config/i386/i386.md (rdssp<mode>): Also enable for
3654         -fcf-protection.
3655         (incssp<mode>): Likewise.
3656         (nop_endbr): Likewise.
3657         * config/i386/i386.opt (mcet): Change help message to built-in
3658         functions only.
3659         (mibt): Likewise.
3660         (mshstk): Likewise.
3661         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
3662         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
3663         enable CET built-in functions.
3665 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
3667         * common/config/i386/i386-common.c 
3668         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
3669         OPTION_MASK_ISA_MOVDIRI_UNSET,
3670         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
3671         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
3672         * config.gcc (movdirintrin.h): New header.
3673         * config/i386/cpuid.h (bit_MOVDIRI,
3674         bit_MOVDIR64B): New bits.
3675         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
3676         and -mmvodir64b.
3677         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
3678         (VOID, PVOID, PCVOID)): New function types.
3679         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
3680         __builtin_ia32_directstoreu_u64,
3681          __builtin_ia32_movdir64b): New builtins.
3682         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
3683         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
3684         and -mmovdiri.
3685         (ix86_valid_target_attribute_inner_p): Ditto.
3686         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
3687         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
3688         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
3689         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
3690         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
3691         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
3692         (movdiri<mode>, movdir64b_<mode>): New.
3693         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
3694         * config/i386/immintrin.h: Include movdirintrin.h.
3695         * config/i386/movdirintrin.h: New file.
3696         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
3698 2018-04-19  Richard Biener  <rguenther@suse.de>
3700         PR middle-end/85455
3701         * cfg.c (clear_bb_flags): When loop state says we have
3702         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
3704 2018-04-19  Richard Biener  <rguenther@suse.de>
3706         PR tree-optimization/84737
3707         * tree-vect-data-refs.c (vect_copy_ref_info): New function
3708         copying restrict info.
3709         (vect_setup_realignment): Use it.
3710         * tree-vectorizer.h (vect_copy_ref_info): Declare.
3711         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
3712         the first DR to all generated stores.
3713         (vectorizable_load): Likewise for loads.
3715 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
3717         PR tree-optimization/85446
3718         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
3719         the integral and pointer types to have the same precision.
3721         * doc/install.texi: Document --disable-cet being the default and
3722         --enable-cet=auto.
3724 2018-04-18  Martin Liska  <mliska@suse.cz>
3726         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
3727         style.
3729 2018-04-18  Martin Liska  <mliska@suse.cz>
3731         Revert
3732         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3734         PR ipa/83983
3735         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
3736         arguments if they are comparable.
3738 2018-04-18  Martin Liska  <mliska@suse.cz>
3740         Revert
3741         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
3743         PR lto/84805
3744         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
3745         incomplete types.
3747 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
3749         PR target/85388
3750         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
3751         ENDBR after calling __morestack.
3753 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
3755         PR jit/85384
3756         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
3757         by using gcc_base_ver to generate a gcc_driver_version, and use
3758         it when generating GCC_DRIVER_NAME.
3759         * configure: Regenerate.
3761 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
3763         PR target/81084
3764         * config.gcc: Obsolete powerpc*-*-*spe*.
3766 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
3768         PR debug/84637
3769         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
3770         (stabstr_D): Change type of unum from unsigned int to
3771         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
3772         type.
3774 2018-04-17  Jim Wilson  <jimw@sifive.com>
3776         PR 84856
3777         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
3778         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
3779         Set arg_pointer_offset after using pretend_args_size.
3781 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
3783         PR rtl-optimization/85431
3784         * dse.c (record_store): Ignore zero width stores.
3786         PR sanitizer/85230
3787         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
3788         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
3789         __builtin_stack_restore rather than after it.
3790         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
3791         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
3792         argument instead of virtual_dynamic_stack_rtx.
3794 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3796         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
3797         New prototype.
3798         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3799         Add note to error message to explain internal mapping of overloaded
3800         built-in function name to non-overloaded built-in function name.
3801         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
3802         function.
3804 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
3806         PR target/85424
3807         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
3808         where the inputs overlap with the output.
3810 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
3812         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
3813         (=v, v) alternative and explicit "memory" attribute.
3814         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
3815         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
3816         attributes.
3817         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
3818         "sselog1" type instead of "sselog".
3819         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
3820         "sselog".  Remove explicit "memory" attribute.
3821         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
3822         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
3823         attributes.
3824         (vec_extract_hi_v32hi): Merge all alternatives into one, use
3825         "sselog1" type instead of "sselog".  Remove explicit "memory"
3826         attribute.
3827         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
3828         use "sselog1" type instead of "sselog".  Remove explicit "memory"
3829         attribute.
3830         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
3831         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
3832         attributes.
3833         (vec_extract_hi_v64qi): Merge all alternatives into one, use
3834         "sselog1" type instead of "sselog".  Remove explicit "memory"
3835         attribute.
3836         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
3837         use "sselog1" type instead of "sselog".  Remove explicit "memory"
3838         attribute.
3840         PR target/85430
3841         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
3843         PR middle-end/85414
3844         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
3845         on a SUBREG.
3847 2018-04-17  Martin Jambor  <mjambor@suse.cz>
3849         PR ipa/85421
3850         * ipa-cp.c (create_specialized_node): Call
3851         expand_all_artificial_thunks if necessary.
3853 2018-04-17  Martin Liska  <mliska@suse.cz>
3855         PR lto/85405
3856         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
3857         in message, remote space in between '_G' and '('.
3859 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
3861         PR target/85281
3862         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
3863         avx512f_vmcmp<mode>3<round_saeonly_name>,
3864         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
3865         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
3866         avx512f_rndscale<mode><round_saeonly_name>,
3867         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
3868         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
3869         Use %<iptr>2 instead of %2 for -masm=intel.
3870         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
3871         avx512f_vcvttss2usi<round_saeonly_name>,
3872         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
3873         -masm=intel.
3874         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
3875         avx512f_vcvttsd2usi<round_saeonly_name>,
3876         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
3877         Use %q1 instead of %1 for -masm=intel.
3878         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
3879         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
3880         of %3 for -masm=intel.
3881         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
3882         -masm=intel.
3883         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
3884         -masm=intel.
3885         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
3886         -masm=intel.
3887         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
3888         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
3889         %g1.
3890         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
3891         -masm=intel.
3892         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
3893         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
3894         %g1 and one with %0 and %1.
3895         (avx512er_vmrcp28<mode><round_saeonly_name>,
3896         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
3897         %1 for -masm=intel.
3898         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
3899         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
3900         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
3901         of %0 and %{%4%} for -masm=intel.
3902         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
3903         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
3904         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
3905         order of %0 and %{%5%}%{z%} for -masm=intel.
3907 2018-04-17  Jan Hubicka  <jh@suse.cz>
3909         PR lto/85405
3910         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
3912 2018-04-17  Martin Liska  <mliska@suse.cz>
3914         PR ipa/85329
3915         * multiple_target.c (create_dispatcher_calls): Set apostrophes
3916         for target_clone error message.  Make default implementation
3917         clone to be a local declaration.
3918         (separate_attrs): Add new argument and check for an empty
3919         string.
3920         (expand_target_clones): Handle it.
3921         (ipa_target_clone): Make redirection just for target_clones
3922         functions.
3924 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
3925             Tom de Vries  <tom@codesourcery.com>
3927         PR middle-end/84955
3928         * omp-expand.c (expand_oacc_for): Add dummy false branch for
3929         tiled basic blocks without omp continue statements.
3931 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
3933         PR target/83660
3934         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
3935         vec_extract expression as having side effects to make sure it gets
3936         a cleanup point.
3938 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
3940         PR target/85403
3941         * config/i386/i386.c (get_builtin_code_for_version): Check
3942         error_mark_node.
3944 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
3946         PR target/84331
3947         * gcc/config.gcc: Support "skylake".
3948         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
3949         PROCESSOR_SKYLAKE.
3950         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
3951         (processor_target_table): Add "skylake".
3952         (ix86_option_override_internal): Add "skylake".
3953         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
3954         PROCESSOR_CANNONLAKE.
3955         (get_builtin_code_for_version): Fix priority for
3956         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
3957         PROCESSOR_SKYLAKE-AVX512.
3958         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
3959         (processor_type): Add PROCESSOR_SKYLAKE.
3961 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
3962             Jason Merrill  <jason@redhat.com>
3964         PR c++/85112
3965         * convert.c (convert_to_integer_1): Use direct recursion for
3966         enumeral types and types with a precision less than the number
3967         of bits in their mode.
3969 2018-04-16  Julia Koval  <julia.koval@intel.com>
3971         PR target/84413
3972         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
3973         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
3975 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
3977         PR target/85293
3978         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
3979         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
3980         and -mno-direct-move.
3982 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
3984         PR target/83402
3985         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
3986         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
3987         Ensure negative shifts result in {0}.
3989 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
3991         PR rtl-optimization/79916
3992         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
3993         regs (if any) to define how to gnerate SD moves when LRA is in
3994         progress.
3996 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
3998         PR rtl-optimization/85393
3999         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
4000         * except.c (expand_dw2_landing_pad_for_region): Make static.
4001         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
4002         a label and unconditional jump to old_bb, rather than
4003         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
4004         basic block.
4006         PR rtl-optimization/85376
4007         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
4008         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
4009         instead of a specific value.
4011 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4012             Bin Cheng  <bin.cheng@arm.com>
4014         PR tree-optimization/82965
4015         PR tree-optimization/83991
4016         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
4017         by_profile_only parameter.
4018         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
4019         information if the loop was predicted to iterate too many times.
4020         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
4022 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4024         PR lto/71991
4025         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
4026         always inline.
4028 2018-04-13  Martin Liska  <mliska@suse.cz>
4029             Jakub Jelinek  <jakub@redhat.com>
4031         PR middle-end/81657
4032         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
4033         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
4034         * builtins.c (expand_builtin_memory_copy_args): Use
4035         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
4036         handle dest_addr == pc_rtx.
4038 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
4040         PR target/85291
4041         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
4042         asked to not generate direct moves.
4043         (fix_trunc<mode>si2_stfiwx): Similar.
4044         (fix_trunc<mode>si2_internal): Similar.
4046 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4048         PR debug/83157
4049         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
4050         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
4051         lookup if dest in some wider mode is known to be const0_rtx and
4052         if so, record permanent equivalence for it to be ZERO_EXTEND of
4053         the narrower mode destination.
4055 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4057         * lto-streamer-out.c (output_function): Revert 259346.
4058         * omp-expand.c (expand_oacc_for): Likewise.
4060 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
4062         PR rtl-optimization/85354
4063         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
4064         * sel-sched.c (sel_global_init): ... here.
4066 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
4068         PR target/85238
4069         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
4070         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
4071         mode for PE-COFF targets.
4072         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
4073         (i386_pe_asm_lto_end): Likewise.
4074         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
4075         (TARGET_ASM_LTO_END): Likewise.
4076         * config/i386/winnt.c (saved_debug_info_level): New static variable.
4077         (i386_pe_asm_lto_start): New function.
4078         (i386_pe_asm_lto_end): Likewise.
4080 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4081             Richard Biener  <rguenther@suse.de>
4083         PR middle-end/84955
4084         * lto-streamer-out.c (output_function): Fix CFG loop state before
4085         streaming out.
4086         * omp-expand.c (expand_oacc_for): Handle calls to internal
4087         functions like regular functions.
4089 2018-04-12  Richard Biener  <rguenther@suse.de>
4091         PR lto/85371
4092         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
4093         for the early LTO debug to properly generate references to it
4094         during DIE emission.  Do not re-use that for the skeleton for
4095         split-dwarf.
4096         (dwarf2out_early_finish): Likewise.
4098 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4100         PR target/85328
4101         * config/i386/sse.md
4102         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
4103         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
4104         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
4105         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
4106         and output is a reg, avoid creating invalid lowpart subreg, but
4107         instead split into a 512-bit move.  Don't split if not AVX512VL,
4108         input is xmm16+ reg and output is a mem.
4109         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
4110         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
4111         xmm16+ reg and output is a mem.
4113 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4115         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
4116         also for flag_dwarf2_cfi_asm.
4118 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4120         PR rtl-optimization/85342
4121         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
4122         a bool scalar var inside of the loop instead.  Don't try to update
4123         recog_data.operand after failed apply_change_group.
4125 2018-04-12  Tom de Vries  <tom@codesourcery.com>
4127         PR target/85296
4128         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
4129         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
4130         array with flexible array member as array without given dimension.
4131         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
4132         argument for undefined param to true.
4134 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
4136         PR target/85321
4137         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4138         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
4139         from PowerPC section.
4140         * config/rs6000/sysv4.opt (mcall-): Improve help text.
4141         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
4142         help text that is too long.
4143         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
4144         help text that is too long.
4145         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
4146         help text that is too long.
4148 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
4150         * config/alpha/alpha.md (stack_probe_internal): Rename
4151         from "probe_stack".  Update all callers.
4153 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4155         PR rtl-optimization/84566
4156         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
4157         sched_macro_fuse_insns.
4159 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4161         PR target/84301
4162         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
4163         (compute_block_dependences): ... from here.
4165 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4167         PR tree-optimization/85331
4168         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
4169         from int to HOST_WIDE_INT.
4171 2018-04-11  Martin Jambor  <mjambor@suse.cz>
4173         PR ipa/84149
4174         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
4175         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
4176         not the same as the source val.
4177         (cgraph_edge_brings_value_p): New parameter.
4178         (gather_edges_for_value): Pass destination value to
4179         cgraph_edge_brings_value_p.
4180         (perhaps_add_new_callers): Likewise.
4181         (get_info_about_necessary_edges): Likewise and exclude values brought
4182         only by self-recursive edges.
4183         (create_specialized_node): Redirect only clones of self-calling edges.
4184         (+self_recursive_pass_through_p): New function.
4185         (find_more_scalar_values_for_callers_subset): Use it.
4186         (find_aggregate_values_for_callers_subset): Likewise.
4187         (known_aggs_to_agg_replacement_list): Removed.
4188         (decide_whether_version_node): Re-calculate known constants for all
4189         remaining context clones.
4191 2018-04-11  Richard Biener  <rguenther@suse.de>
4193         PR lto/85339
4194         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
4195         from early DWARF output.
4196         (dwarf2out_early_finish): Output line info unconditionally into
4197         early DWARF and add reference to it.
4199 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4201         PR target/85281
4202         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
4203         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
4204         other than V2DFmode using iptr mode attribute.
4205         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
4207 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4209         PR rtl-optimization/84659
4210         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
4212 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4214         PR debug/85302
4215         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
4216         SIZEP is NULL.
4217         (output_loc_list): Pass address of a dummy size variable even in the
4218         locview handling loop.
4219         (index_location_lists): Add comment on why skip_loc_list_entry can't
4220         call size_of_locs.
4222 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4224         PR target/85261
4225         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
4226         into register.
4228 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
4230         PR target/85321
4231         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4232         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
4233         and -mstring-compare-inline-limit.
4235 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4237         PR target/85287
4238         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
4239         for stack clash protection in a register whenever we need it to be in
4240         a register.
4242 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4244         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
4245         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
4247 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4249         PR target/85321
4250         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
4251         the help text.
4252         (mlong-double-): Ditto.
4253         * config/rs6000/sysv4.opt (msdata=): Ditto.
4254         (mtls-size=): Ditto.
4256 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4258         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
4259         erroneous entries for
4260         "vector int vec_ldl (int, long int *)", and
4261         "vector unsigned int vec_ldl (int, unsigned long int *)".
4262         Add comments and entries for
4263         "vector bool char vec_ldl (int, bool char *)",
4264         "vector bool short vec_ldl (int, bool short *)",
4265         "vector bool int vec_ldl (int, bool int *)",
4266         "vector bool long long vec_ldl (int, bool long long *)",
4267         "vector pixel vec_ldl (int, pixel *)",
4268         "vector long long vec_ldl (int, long long *)",
4269         "vector unsigned long long vec_ldl (int, unsigned long long *)".
4270         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
4271         type tree bool_long_long_type_node and correct definition of
4272         bool_V2DI_type_node to make reference to this new type tree.
4273         (rs6000_mangle_type): Replace erroneous reference to
4274         bool_long_type_node with bool_long_long_type_node.
4275         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
4276         comments to emphasize sign distinctions for char and int types and
4277         replace RS6000_BTI_bool_long constant with
4278         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
4279         use of RS6000_BTI_pixel.
4280         (bool_long_type_node): Remove this macro definition.
4281         (bool_long_long_type_node): New macro definition
4283 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4285         PR rtl-optimization/85300
4286         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
4287         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
4288         simplify_unary_operation fails.
4290 2018-04-10  Martin Liska  <mliska@suse.cz>
4292         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
4293         cgraph_edge and ipa_ref.
4295 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4297         PR target/85177
4298         PR target/85255
4299         * config/i386/sse.md
4300         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
4301         computation of the VEC_MERGE selector from mask.
4302         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
4303         Fix decoding of the VEC_MERGE selector into mask.
4305 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4307         PR tree-optimization/85286
4308         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
4310 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4312         * final.c (final_1): Set insn_last_address as well as
4313         insn_current_address.
4315 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4317         PR target/85173
4318         * explow.c (emit_stack_probe): Call validize_mem on memory location
4319         before passing it to gen_probe_stack.  Create address operand and
4320         legitimize it for the probe_stack_address case.
4322 2018-04-09  Jan Hubicka  <jh@suse.cz>
4324         PR lto/85078
4325         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
4326         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
4327         * tree.c (free_lang_data_in_type): Fix handling of binfos;
4328         walk basetypes.
4329         (free_lang_data): Rebuild type inheritance graph.
4331 2018-04-09  Martin Sebor  <msebor@redhat.com>
4333         * invoke.texi (-finline-small-functions): Mention other optimization
4334         options.
4335         (-findirect-inlining, -fpartial-inlining): Same.
4336         (-finline-functions-called-once): Same.
4337         (-freorder-blocks-and-partition): Same.
4339 2018-04-09  Jan Hubicka  <jh@suse.cz>
4341         PR rtl/84058
4342         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
4343         jumps; choose last target that matches the criteria (i.e.
4344         no partition changes for non-crossing jumps).
4345         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
4346         support for redirecting crossing jumps to non-crossing.
4348 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
4350         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
4351         also for naked functions.
4353 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
4355         * config/arc/arc.md (add_shift): New pattern.
4356         (add_shift2): Likewise.
4357         (sub_shift): Likewise.
4358         (sub_shift_cmp0_noout): Likewise.
4359         (compare_si_ashiftsi): Likewise.
4360         (xbfu_cmp0_noout): New combine pattern.
4361         (xbfu_cmp0"): Likewise.
4362         (movsi_set_cc_insn): Place the predicable variant first.
4363         (commutative_binary_cmp0_noout): Remove clobber.
4364         (commutative_binary_cmp0): New pattern.
4365         (noncommutative_binary_cmp0): Likewise.
4366         (noncommutative_binary_cmp0_noout): Likewise.
4367         (noncommutative_binary_comparison_result_used): Removed.
4368         (rsub_cmp0): New pattern.
4369         (rsub_cmp0_noout): Likewise.
4370         (extzvsi): Changed, keep only meaningful variants.
4371         (SQH, SEZ): New iterators.
4372         (SQH_postfix): New mode attribute.
4373         (SEZ_prefix): New code attribute.
4374         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
4375         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
4376         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
4377         of numerical value.
4378         (noncommutative_operator): Check the availability of barrel
4379         shifter option.
4381 2018-04-09  Richard Biener  <rguenther@suse.de>
4383         PR tree-optimization/85284
4384         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
4385         Only use the niter constraining form of simple_iv when the exit
4386         is always executed.
4388 2018-04-09  Tom de Vries  <tom@codesourcery.com>
4390         PR target/84041
4391         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
4392         (define_expand "*memory_barrier"): New define_expand.
4393         (define_insn "memory_barrier"): New insn.
4395 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4397         PR rtl-optimization/80463
4398         PR rtl-optimization/83972
4399         PR rtl-optimization/83480
4401         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
4402         correct producer for the insn.
4403         (tidy_control_flow): Fixup seqnos in case of debug insns.
4405 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4407         PR rtl-optimization/83913
4409         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
4410         different sched-times when merging exprs.
4412 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4414         PR rtl-optimization/83962
4416         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
4417         tidy_fallthru_edge and tidy_control_flow.
4419 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4421         PR rtl-optimization/83530
4423         * sel-sched.c (force_next_insn): New global variable.
4424         (remove_insn_for_debug): When force_next_insn is true, also leave only
4425         next insn in the ready list.
4426         (sel_sched_region): When the region wasn't scheduled, make another pass
4427         over it with force_next_insn set to 1.
4429 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
4431         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
4432         into tm_file.
4433         * config/nds32/constants.md (unspec_volatile_element): Add enum values
4434         for interrupt control.
4435         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
4436         functions for interrupt control.
4437         * config/nds32/nds32-intrinsic.md: Likewise.
4438         * config/nds32/nds32_intrinsic.h: Likewise.
4439         * config/nds32/nds32.h (nds32_builtins): Likewise.
4441 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4443         * config/nds32/nds32.c (nds32_init_machine_status,
4444         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
4445         strict_aligned_p field.
4446         (nds32_expand_to_rtl_hook): New function.
4447         (TARGET_EXPAND_TO_RTL_HOOK): Define.
4448         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
4450 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4451             Chung-Ju Wu  <jasonwucj@gmail.com>
4453         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
4454         * config/nds32/nds32-n7.md: New file.
4455         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
4456         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
4457         pipeline.
4458         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
4459         * config/nds32/nds32.md (pipeline_model): Add n7.
4460         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
4461         * config/nds32/pipelines.md: Include n7 settings.
4463 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4464             Chung-Ju Wu  <jasonwucj@gmail.com>
4466         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
4467         * config/nds32/nds32-e8.md: New file.
4468         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
4469         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
4470         pipeline.
4471         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
4472         * config/nds32/nds32.md (pipeline_model): Add e8.
4473         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
4474         * config/nds32/pipelines.md: Include e8 settings.
4476 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4477             Chung-Ju Wu  <jasonwucj@gmail.com>
4479         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
4480         * config/nds32/nds32-n8.md: New file.
4481         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
4482         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
4483         pipeline.
4484         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
4485         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
4486         * config/nds32/nds32.md (pipeline_model): Add n8.
4487         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
4488         * config/nds32/pipelines.md: Include n8 settings.
4490 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4491             Chung-Ju Wu  <jasonwucj@gmail.com>
4493         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
4494         * config/nds32/nds32-n9-2r1w.md: New file.
4495         * config/nds32/nds32-n9-3r2w.md: New file.
4496         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
4497         nds32_register_ports): New or modify for cpu n9.
4498         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
4499         pipeline.
4500         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
4501         * config/nds32/nds32-utils.c: New file.
4502         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
4503         TARGET_MUL_SLOW): Define.
4504         * config/nds32/nds32.md (pipeline_model): New attribute.
4505         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
4506         New options that support cpu n9.
4507         * config/nds32/pipelines.md: Include n9 settings.
4508         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
4510 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4512         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
4513         information if necessary.
4514         (output_cond_branch_compare_zero): Likewise.
4515         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
4516         (nds32_target_alignment): Refine for alignment.
4517         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
4518         (FUNCTION_BOUNDARY): Modify.
4519         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
4520         align case.
4521         * config/nds32/nds32.opt (malways-align, malign-functions): New.
4523 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
4525         * config/nds32/constants.md (unspec_volatile_element): Add values for
4526         TLB operation and data prefetch.
4527         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
4528         functions for TLB operation and data prefetch.
4529         * config/nds32/nds32-intrinsic.md: Likewise.
4530         * config/nds32/nds32_intrinsic.h: Likewise.
4531         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
4532         (nds32_print_operand): Likewise.
4533         * config/nds32/nds32.h (nds32_builtins): Likewise.
4535 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
4536         Andrew Pinski <pinsika@gcc.gnu.org>
4538         PR middle-end/82976
4539         * match.pd: Use constant_boolean_node of correct type instead of
4540         boolean_true_node or boolean_false_node for simplifying
4541         pointer comparisons to zero.
4543 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
4545         PR tree-optimization/80021
4546         * tree.c (verify_type_variant): Make error call in verify_variant_match
4547         translatable and remove final full stop.
4549 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4551         * config/nds32/constants.md (unspec_volatile_element): Add
4552         UNSPEC_VOLATILE_EH_RETURN.
4553         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
4554         nds32_output_stack_pop): Support dwarf exception handling process.
4555         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
4556         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
4557         exception handling process.
4558         (nds32_compute_stack_frame): Likewise.
4559         (nds32_return_addr_rtx): Likewise.
4560         (nds32_initial_elimination_offset): Likewise.
4561         (nds32_expand_prologue): Likewise.
4562         (nds32_expand_epilogue): Likewise.
4563         (nds32_dynamic_chain_address): New function.
4564         * config/nds32/nds32.h (machine_function): Add fields for dwarf
4565         exception handling.
4566         (DYNAMIC_CHAIN_ADDRESS): Define.
4567         (EH_RETURN_DATA_REGNO): Define.
4568         (EH_RETURN_STACKADJ_RTX): Define.
4569         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
4570         patterns for dwarf exception handling.
4572 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4574         * config/nds32/nds32.h: Clean up obsolete macros.
4576 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4578         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
4579         Add enum values for particular instructions.
4580         * config/nds32/nds32-intrinsic.c: Implementation of expanding
4581         particular intrinsic functions.
4582         * config/nds32/nds32-intrinsic.md: Likewise.
4583         * config/nds32/nds32_intrinsic.h: Likewise.
4584         * config/nds32/nds32.h (nds32_builtins): Likewise.
4585         * config/nds32/nds32.md (type): Add pbsad and pbsada.
4586         (btst, ave): New patterns for particular instructions.
4588 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4590         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
4591         Add enum values for atomic load/store and memory sync.
4592         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
4593         and memory sync.
4594         * config/nds32/nds32-intrinsic.md: Likewise.
4595         * config/nds32/nds32_intrinsic.h: Likewise.
4596         * config/nds32/nds32.h (nds32_builtins): Likewise.
4598 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
4600         PR tree-optimization/85257
4601         * fold-const.c (native_encode_vector): If not all elts could fit
4602         and off is -1, return 0 rather than offset.
4603         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
4604         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
4605         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
4606         adjust buffer in native_interpret_expr call.
4608 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4610         * config/nds32/constants.md (unspec_volatile_element): Add cache
4611         control enum values.
4612         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
4613         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
4614         * config/nds32/nds32.c (nds32_cctl_names): New.
4615         (nds32_print_operand): Handle cache control register names.
4616         * config/nds32/nds32.h (nds32_builtins): New enum values.
4617         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
4618         macros.
4619         * config/nds32/nds32.md (type): Add mmu.
4620         * config/nds32/pipelines.md (simple_insn): Add mmu.
4622 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4624         * config/nds32/nds32.md (type): Remove call.
4625         * config/nds32/pipelines.md (simple_insn): Likewise.
4627 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4629         * config/nds32/constants.md (unspec_volatile_element): Add
4630         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
4631         UNSPEC_VOLATILE_FMFCFG.
4632         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
4633         description for fmfcfg and fmfcsr.
4634         (bdesc_1arg): Add fmtcsr.
4635         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
4636         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
4637         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
4638         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
4639         unspec_fmfcfg): New patterns.
4640         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
4641         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
4642         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
4643         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
4644         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
4645         __nds32__fmfcfg): Define.
4647 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4649         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
4650         intrinsic register names.
4651         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
4652         intrinsic register enum values and macros.
4654 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4656         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
4657         for load/store addressing form.
4658         (nds32_print_operand_address): Likewise.
4660 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
4662         PR target/85196
4663         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
4664         based on LABEL_REF.  Remove useless assertion.
4665         (pic_address_needs_scratch): Fix formatting.
4666         (sparc_legitimize_pic_address): Minor tweaks.
4667         (sparc_delegitimize_address): Adjust assertion accordingly.
4668         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
4669         into symbolic_operand.
4670         (movsi_high_pic_label_ref): Likewise.
4671         (movsi_lo_sum_pic_label_ref): Likewise.
4672         (movdi_pic_label_ref): Likewise.
4673         (movdi_high_pic_label_ref): Likewise.
4674         (movdi_lo_sum_pic_label_ref): Likewise.
4676 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
4678         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
4679         custom LIB_SPEC setup.
4681 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
4682             Kito Cheng  <kito.cheng@gmail.com>
4684         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
4685         * config/riscv/freebsd.h: New.
4687 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
4689         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
4690         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
4691         file.
4693 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
4694             Kito Cheng  <kito.cheng@gmail.com>
4696         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
4697         nds32_output_call, nds32_symbol_binds_local_p): New functions.
4698         * config/nds32/nds32-protos.h (nds32_output_call,
4699         nds32_output_return): Declare.
4700         * config/nds32/nds32.md: Refine all the call and return patterns.
4702 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
4704         PR debug/85252
4705         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
4706         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
4708         PR rtl-optimization/84872
4709         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
4710         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
4711         EDGE_CROSSING edge.
4713 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
4715         * expr.c (copy_blkmode_to_reg): Revert 254862.
4716         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
4718 2018-04-06  Richard Biener  <rguenther@suse.de>
4720         PR middle-end/85244
4721         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
4722         after seeing a component reference with an adjacent field.  Treat
4723         refs to arrays at struct end of external decls similar to
4724         refs to unconstrained commons.
4726 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
4728         PR sanitizer/85213
4729         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
4730         look through SAVE_EXPRs with non-side-effects argument.  Adjust
4731         recursive calls.
4732         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
4733         save_p here.
4735 2018-04-06  Richard Biener  <rguenther@suse.de>
4737         PR middle-end/85180
4738         * alias.c (find_base_term): New wrapper around find_base_term
4739         unwinding CSELIB_VAL_PTR changes.
4740         (find_base_term): Do not restore CSELIB_VAL_PTR during the
4741         recursion.
4743 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4745         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
4746         instructions.
4747         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
4748         constant definitions.
4749         ("nop"): lr 0,0 -> nopr r0
4750         ("nop_lr0", "nop_lr1"): New insn definitions.
4752 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
4754         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
4755         NDS32_V3PUSH_AVAILABLE_P macro.
4757 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
4758             Chung-Ju Wu  <jasonwucj@gmail.com>
4760         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
4761         (nds32*-*-*): Add float and fpu_config into supported_defaults.
4762         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
4763         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
4764         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
4765         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
4766         * config/nds32/constraints.md: New constraints and checking for hard
4767         float configuration.
4768         * config/nds32/iterators.md: New mode iterator and attribute for hard
4769         float configuration.
4770         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
4771         patterns.
4772         * config/nds32/nds32-fpu.md: New file.
4773         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
4774         deal with hard float code generation.
4775         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
4776         ARCH_V3S.
4777         (abi_type, float_reg_number): New enum type.
4778         * config/nds32/nds32-predicates.c: New predicates for hard float.
4779         * config/nds32/nds32-protos.h: Declare functions for hard float.
4780         * config/nds32/nds32.c: Implementation for hard float configuration.
4781         * config/nds32/nds32.h: Definitions for hard float configuration.
4782         * config/nds32/nds32.md: Include hard float machine description and
4783         modify patterns for hard float configuration.
4784         * config/nds32/nds32.opt: New options for hard float configuration.
4785         * config/nds32/predicates.md: New predicates for hard float
4786         configuration.
4788 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
4790         * common/config/nds32/nds32-common.c
4791         (nds32_option_optimization_table): Enable -mreleax-hint by default.
4793 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
4795         PR middle-end/85195
4796         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
4797         CONSTRUCTOR_ELT (ctor, ...)->value.
4799 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
4801         PR target/85193
4802         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
4804 2018-04-05  Tom de Vries  <tom@codesourcery.com>
4806         PR target/85204
4807         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
4808         cond jump.
4810 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
4811             Kito Cheng  <kito.cheng@gmail.com>
4813         * config/nds32/constraints.md (U33): Fine-tune checking condition.
4814         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
4815         * config/nds32/nds32.h (nds32_16bit_address_type): Add
4816         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
4818 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
4819             Kito Cheng  <kito.cheng@gmail.com>
4821         * config/nds32/constraints.md (Ufe): New memory constraint.
4822         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
4823         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
4824         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
4825         operands.
4826         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
4827         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
4829 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4831         * config/nds32/nds32.md: Use optimize_size in the condition for
4832         alu-shift instructions.
4834 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4836         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
4838 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4840         * config/nds32/nds32.md (negsi2): Refine pattern.
4842 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
4843             Chung-Ju Wu  <jasonwucj@gmail.com>
4845         * config/nds32/iterators.md (shift_rotate): New code iterator.
4846         (shift): New code attribute.
4847         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
4848         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
4849         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
4850         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
4851         bit-wise operations.
4852         (andsi3, *andsi3): Ditto.
4853         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
4854         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
4855         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
4856         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
4857         nds32_ior_operand, nds32_xor_operand): New predicates.
4859 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4861         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
4862         (addsi3, subsi3): ... this.
4864 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4866         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
4868 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4870         * config/nds32/nds32.md: Adjust indention.
4872 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
4874         * config/nds32/nds32.md (feature): New attribute.
4876 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4878         * config/nds32/nds32.md (subtype): New attribute.
4880 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4882         PR target/85203
4883         * config/arm/arm-builtins.c (arm_expand_builtin): Change
4884         expansion to perform a bitwise AND of the argument followed by a
4885         boolean negation of the result.
4887 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
4889         PR rtl-optimization/84878
4890         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
4891         the basic block.  Assert the use reference is not artificial and that
4892         it has an associated insn.
4894 2018-04-04  Michael Matz  <matz@suse.de>
4896         * builtins.c (compute_objsize): Pass correct operand
4897         to array_at_struct_end_p.
4899 2018-04-04  Richard Biener  <rguenther@suse.de>
4901         PR lto/85176
4902         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
4903         from contexts for DINFO_LEVEL_TERSE and below.
4905 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
4907         * config/nds32/nds32-doubleword.md (move_<mode>): Require
4908         resiter_operand condition.
4909         * config/nds32/nds32.md (*move<mode>): Ditto.
4911 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
4912             Monk Chiang  <sh.chiang04@gmail.com>
4914         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
4916 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4918         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
4920 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4921             Kito Cheng  <kito.cheng@gmail.com>
4923         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
4924         nds32_cond_code_str, output_cond_branch,
4925         output_cond_branch_compare_zero, nds32_expand_cbranch,
4926         nds32_expand_cstore, nds32_expand_movcc,
4927         nds32_output_cbranchsi4_equality_zero,
4928         nds32_output_cbranchsi4_equality_reg,
4929         nds32_output_cbranchsi4_equality_reg_or_const_int,
4930         nds32_output_cbranchsi4_greater_less_zero: New functions.
4931         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
4932         nds32_expand_cstore, nds32_expand_movcc,
4933         nds32_output_cbranchsi4_equality_zero,
4934         nds32_output_cbranchsi4_equality_reg,
4935         nds32_output_cbranchsi4_equality_reg_or_const_int,
4936         nds32_output_cbranchsi4_greater_less_zero): Declare.
4937         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
4938         nds32_rimm11s_operand): New predicates.
4939         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
4940         * config/nds32/nds32.md: Rewrite all the branch and conditional move
4941         patterns.
4943 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
4945         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
4946         * config/nds32/nds32.md: Ditto.
4947         * config/nds32/pipelines.md: Ditto.
4949 2018-04-04  Richard Biener  <rguenther@suse.de>
4951         PR tree-optimization/85168
4952         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
4953         propagating abnormals.
4955 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4957         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
4959 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4960             Kito Cheng  <kito.cheng@gmail.com>
4962         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
4963         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
4964         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
4965         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
4966         * config/nds32/nds32.md (sibcall_internal): New.
4967         (sibcall_register): Remove.
4968         (sibcall_immediate): Remove.
4969         (sibcall_value_internal): New.
4970         (sibcall_value_register): Remove.
4971         (sibcall_value_immediate): Remove.
4972         * config/nds32/predicates.md (nds32_general_register_operand): New.
4973         (nds32_call_address_operand): New.
4975 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
4977         PR rtl-optimization/85167
4978         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
4979         bb_defs if *split_p, instead preinitialize it to NULL.
4981         PR tree-optimization/85156
4982         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
4983         evaluating the argument multiple times.
4985 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
4987         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
4988         than vector.
4989         (_mm_cvtpd_ps): Likewise.
4990         (_mm_cvttpd_epi32): Likewise.
4991         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
4992         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
4993         vector, pixel, and bool following altivec.h include.
4995 2018-04-03  Martin Sebor  <msebor@redhat.com>
4997         * doc/extend.texi (Common Function Attributes): Clarify.
4998         (const attribute): Likewise.
4999         (pure attribute): Likewise.
5001 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
5003         PR target/85169
5004         * config/i386/i386.c (ix86_expand_vector_set): Use
5005         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
5007 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
5009         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
5010         instructions when changing rounding bits to preserve precision bits
5011         in the x87 control word.
5013 2018-04-03  Martin Liska  <mliska@suse.cz>
5015         PR tree-optimization/82491
5016         * rtl.h (strip_offset_and_add): Replace += suboffset with
5017         poly_uint64 () + suboffset.
5019 2018-03-29  Martin Liska  <mliska@suse.cz>
5020             Martin Jambor  <mjambor@suse.cz>
5022         PR ipa/84947
5023         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
5024         param_type is not an integral or pointer type.
5026 2018-04-03  Richard Biener  <rguenther@suse.de>
5028         * sese.h (recompute_all_dominators): Remove.
5030 2018-04-02  Martin Sebor  <msebor@redhat.com>
5032         * doc/invoke.texi (-Wrestrict): Fix typos.
5034 2018-04-02  Jim Wilson  <jimw@sifive.com>
5036         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
5037         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
5038         (<optab>di3, <optab>si3_extend): Likewise.
5039         (<optab>si3_mask, <optab>si3_mask_1): New.
5040         (<optab>di3_mask, <optab>di3_mask_1): New.
5041         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
5042         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
5043         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
5045 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
5047         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
5048         example.
5050 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
5052         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
5053         (nds32_canonicalize_comparison): New function.
5055 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5056             Kito Cheng  <kito.cheng@gmail.com>
5057             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
5059         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
5060         * config/nds32/constants.md (unspec_volatile_element): Add
5061         UNSPEC_VOLATILE_RELAX_GROUP.
5062         * config/nds32/nds32-relax-opt.c: New file.
5063         * config/nds32/nds32-predicates.c
5064         (nds32_symbol_load_store_p): New function.
5065         * config/nds32/nds32-protos.h
5066         (nds32_symbol_load_store_p): Declare function.
5067         (make_pass_nds32_relax_opt): Declare new rtl pass function.
5068         * config/nds32/nds32.c
5069         (nds32_register_pass): New function to register pass.
5070         (nds32_register_passes): New function to register passes.
5071         * config/nds32/nds32.md (relax_group): New pattern.
5072         * config/nds32/nds32.opt (mrelax-hint): New option.
5073         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
5075 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
5077         * config/nds32/t-nds32: Modify files dependency.
5079 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5081         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
5082         (PROFILE_HOOK): Define its implementation.
5084 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5086         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
5087         type and 32-bit size.
5089 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
5091         PR middle-end/85090
5092         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
5093         (V_128_256): New mode iterator.
5094         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
5095         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
5096         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
5097         of V.
5098         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
5099         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
5101 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
5103         PR target/83315
5104         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
5105         NaN inputs correctly.
5107 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
5109         PR target/80546
5110         * config/rs6000/vsx.md (??r): New mode attribute.
5111         (*vsx_mov<mode>_64bit): Use it.
5112         (*vsx_mov<mode>_32bit): Likewise.
5114 2018-03-30  Martin Sebor  <msebor@redhat.com>
5116         PR tree-optimization/84818
5117         * builtins.c (check_access): Use warning_n.
5119 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
5121         PR target/83822
5122         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
5123         condition.
5124         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
5125         condition.
5127 2018-03-30  Julia Koval  <julia.koval@intel.com>
5129         PR target/84413
5130         * x86-tune.def (movx, partial_reg_dependency): Enable for
5131         m_SKYLAKE_AVX512.
5133 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
5135         PR inline-asm/84985
5136         * lra-constraints.c (process_alt_operands): Move setting
5137         this_alternative_matches below.
5139 2018-03-29  Martin Liska  <mliska@suse.cz>
5141         PR lto/84995.
5142         * doc/invoke.texi: Document how LTO works with debug info.
5143         Describe auto-load support of binutils.  Mention 'x86-64'
5144         as valid option value of -march option.
5146 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
5148         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
5150         PR c/85094
5151         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
5152         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
5153         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
5154         checking.
5156 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5158         PR target/84912
5159         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
5160         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
5161         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
5162         for RS6000_BTM_POWERPC64.
5163         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
5164         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
5165         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
5166         definition.
5167         (DIVDE): Use it.
5168         (DIVDEU): Likewise.
5170 2018-03-28 Carl Love  <cel@us.ibm.com>
5172         Revert
5173         2017-09-27  Carl Love  <cel@us.ibm.com>
5175         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
5176         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
5177         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
5178         fctiw instruction.
5180 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5182         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
5183         instead of __vector bool.
5184         (_mm_max_pu8): Likewise.
5185         (_mm_min_pi16): Likewise.
5187 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5189         PR target/84912
5190         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
5191         (DIVWEUO): Likewise.
5192         (DIVDEO): Likewise.
5193         (DIVDEUO): Likewise.
5194         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
5195         DIVWEUO and DIVDEUO.
5196         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
5197         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
5198         (div_extend): Likewise.
5199         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
5200         builtin function.
5201         (__builtin_divweuo): Likewise.
5202         (__builtin_divdeo): Likewise.
5203         (__builtin_divdeuo): Likewise.
5205 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5207         PR target/85095
5208         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
5209         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
5211         PR tree-optimization/82004
5212         * gimple-match-head.c (optimize_pow_to_exp): New function.
5213         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
5214         Don't fold to exp if optimize_pow_to_exp is false.
5216 2018-03-28  Martin Liska  <mliska@suse.cz>
5218         PR other/84819
5219         * calls.c (initialize_argument_information): Fix trailing space.
5220         * common.opt: Fix typo and provide better explanation for
5221         -fsanitize-coverage option.
5222         * config/i386/i386.opt: Fix typo.
5224 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5225             Martin Liska  <mliska@suse.cz>
5227         PR sanitizer/85081
5228         * gimplify.c (asan_poison_variable): Don't do the check for
5229         gimplify_omp_ctxp here.
5230         (gimplify_decl_expr): Do it here.
5231         (gimplify_target_expr): Likewise.
5233 2018-03-28  Martin Liska  <mliska@suse.cz>
5235         PR target/84988
5236         * config/i386/i386.c (ix86_function_arg_advance): Do not call
5237         chkp_type_bounds_count if MPX is not enabled.
5239 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
5241         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
5243 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
5245         PR target/84914
5246         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
5247         function to create the function decl for complex long double
5248         multiply and divide for -mabi=ieeelongdouble.
5249         (init_float128_ieee): Call it.
5251 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
5253         PR target/85044
5254         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
5255         -fcf-protection=branch -mibt.
5256         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
5258 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5260         PR target/81863
5261         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
5263 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
5265         PR target/85056
5266         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
5267         extern array declarations.
5269 2018-03-27  Richard Biener  <rguenther@suse.de>
5271         PR middle-end/84067
5272         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
5273         explicit single_use checks.
5275 2018-03-27  Richard Biener  <rguenther@suse.de>
5277         PR tree-optimization/85082
5278         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
5279         Valueize the VUSE.
5281 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5283         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
5284         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
5285         Turn on fasynchronous-unwind-tables and funwind-tables.
5287 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
5289         PR target/85073
5290         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
5291         (*bmi_blsr_<mode>_ccz): Ditto.
5293 2018-03-26  Tom de Vries  <tom@codesourcery.com>
5295         PR tree-optimization/85063
5296         * omp-general.c (offloading_function_p): New function.  Factor out
5297         of ...
5298         * omp-offload.c (pass_omp_target_link::gate): ... here.
5299         * omp-general.h (offloading_function_p): Declare.
5300         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
5301         with attribute omp declare target for offloading functions.
5303 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
5305         PR tree-optimization/84005
5306         * tree-data-ref.h (get_base_for_alignment): Declare.
5307         * tree-data-ref.c (get_base_for_alignment_1): New function.
5308         (get_base_for_alignment): Likewise.
5309         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
5310         get_base_for_alignment to find a suitable base object, instead
5311         of always using drb->base_address.
5313 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5315         PR inline-asm/85022
5316         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
5317         known size by default.
5319 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
5321         PR inline-asm/85030
5322         * lra-constraints.c (process_alt_operands): Don't match BLKmode
5323         and non BLKmode operands.
5325 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5327         PR target/85026
5328         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
5329         Clean up attributes.
5331 2018-03-23  Richard Biener  <rguenther@suse.de>
5333         PR debug/85020
5334         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
5335         we are going to emit early debug for LTO.
5337 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5339         PR inline-asm/85034
5340         * function.c (match_asm_constraints_1): Don't optimize if input
5341         doesn't satisfy general_operand predicate for output's mode.
5343         PR inline-asm/85022
5344         * alias.c (write_dependence_p): Don't require for x_canonicalized
5345         non-VOIDmode if x has VOIDmode.
5347         PR sanitizer/85029
5348         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
5349         just don't try to optimize it rather than assert it never happens.
5351 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5353         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
5354         macro expansions for definition of ST_INTERNAL_<mode> and
5355         LD_INTERNAL_<mode> builtins.
5356         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
5357         Remove prototype.
5358         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
5359         function.
5360         (altivec_expand_st_builtin): Likewise.
5361         (altivec_expand_builtin): Remove calls to deleted functions.
5362         (rs6000_address_for_altivec): Delete this function.
5363         * config/rs6000/vector.md: Remove expands for
5364         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
5366 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
5368         PR target/84826
5369         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
5370         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
5371         re-computing once computed.
5372         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
5373         (arm_init_machine_status): Initialize
5374         machine->static_chain_stack_bytes.
5376 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5378         PR target/84760
5379         * doc/extend.texi: Add four new prototypes for vec_ld.
5380         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
5381         definitions for more logical presentation.
5382         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
5383         entries for V1TI variants of __builtin_altivec_ld builtin.
5384         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
5385         handling of V1TI variant of LVX icode pattern.
5386         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
5387         (rs6000_gimple_fold_builtin): Likewise.
5388         (altivec_init_builtins): Add code to define
5389         __builtin_altivec_lvx_v1ti function.
5391 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5393         PR inline-asm/84941
5394         * function.c (match_asm_constraints_1): Don't do the optimization
5395         if input isn't a REG, SUBREG, MEM or constant.
5397 2018-03-22  Tom de Vries  <tom@codesourcery.com>
5399         PR tree-optimization/84956
5400         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
5401         bb_has_abnormal_pred.
5403 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5405         PR sanitizer/85018
5406         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
5407         DECL_INITIAL (decl) to decl at the end.
5408         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
5409         adjust the comment.
5411 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
5413         * doc/extend.texi (__builtin_tgmath): Document when complex
5414         integer types are treated as _Complex _Float64.
5416 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5418         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
5420 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5422         PR tree-optimization/84960
5423         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
5424         if it is ENTRY block, move them into single succ of ENTRY in that case.
5426 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
5428         PR tree-optimization/84811
5429         * poly-int.h (poly_span_traits): Remove the T3 parameter and
5430         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
5431         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
5432         (known_subrange_p): Update accordingly.  Cast each value involved
5433         in the size comparison, rather than casting the result of the
5434         subtraction.
5436 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5438         PR tree-optimization/84982
5439         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
5440         by flipping the least significant bit rather than all bits from
5441         bitpos to bitpos + bitsize - 1.
5443 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5445         * doc/extend.texi (Deprecated Features): Remove mention of
5446         long-deleted deprecations.
5448 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5450         PR jit/84288
5451         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
5452         * configure: Regenerate.
5454 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5456         PR tree-optimization/83126
5457         * tree-parloops.c (num_phis): New function.
5458         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
5460 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5462         * doc/extend.texi (Deprecated Features): Update deprecated flags,
5463         mention anon-struct/union members and trailing attributes.
5465 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
5467         PR tree-optimization/84969
5468         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
5469         builtin memset partitions if they set different rhs values.
5471 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5473         PR rtl-optimization/84989
5474         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
5475         VEC_DUPLICATE with scalar result mode.
5477 2018-03-21  Martin Liska  <mliska@suse.cz>
5479         PR ipa/84963
5480         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
5481         not intended return statement.
5483 2018-03-21  Martin Liska  <mliska@suse.cz>
5485         PR target/84988
5486         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
5487         (chkp_find_bound_slots_1): Limit number of iterations.
5489 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
5491         PR target/84838
5492         * Minor grammar fixes for x86 options.
5494 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5496         PR debug/84875
5497         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
5498         holding REG_CFA_RESTORE notes, instead turn them into a USE.
5500 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
5502         PR target/83789
5503         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
5504         (altivec_lvx_<mode>_1op): Likewise.
5505         (altivec_stvx_<mode>_2op): Likewise.
5506         (altivec_stvx_<mode>_1op): Likewise.
5507         (altivec_lvx_<VM2:mode>): New define_expand.
5508         (altivec_stvx_<VM2:mode>): Likewise.
5509         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
5510         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5511         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
5512         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5513         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
5514         (rs6000_gen_lvx): Likewise.
5515         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
5516         (altivec_expand_stv_builtin): Likewise.
5517         (altivec_expand_builtin): Likewise.
5518         * config/rs6000/vector.md: Likewise.
5520 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5522         PR target/82518
5523         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
5524         BYTES_BIG_ENDIAN.
5526 2018-03-20  Richard Biener  <rguenther@suse.de>
5528         PR target/84986
5529         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
5530         sign-conversions as zero, fall back to standard scalar_stmt
5531         cost for the rest.
5533 2018-03-20  Martin Liska  <mliska@suse.cz>
5535         PR ipa/84825
5536         * predict.c (rebuild_frequencies): Handle case when we have
5537         PROFILE_ABSENT, but flag_guess_branch_prob is false.
5539 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5541         PR target/84990
5542         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
5543         flag_section_anchors.
5544         * varasm.c (use_blocks_for_decl_p): Remove hack for
5545         dw2_force_const_mem.
5547         PR target/84845
5548         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
5549         to ...
5550         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
5551         be created, use lowpart_subreg of operands[0] rather than operands[0]
5552         itself.
5553         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
5554         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
5555         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
5556         and n constraint instead of aarch64_shift_imm_di and Usd.
5557         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
5558         (*aarch64_<optab>_reg_minus<mode>3): ... this.
5560 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
5562         PR target/82989
5563         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
5564         to favor GPR over NEON registers.
5565         (<shift>di3_neon): Likewise.
5567 2018-03-20  Tom de Vries  <tom@codesourcery.com>
5569         PR target/84952
5570         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
5571         (nvptx_process_pars): Emit bar.sync asap and alap.
5573 2018-03-20  Tom de Vries  <tom@codesourcery.com>
5575         PR target/84954
5576         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
5577         seen_label if seen_label is already set.
5579 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5581         PR target/84945
5582         * config/i386/i386.c (fold_builtin_cpu): For features above 31
5583         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
5584         Use 1U instead of 1.  Formatting fixes.
5586         PR c/84953
5587         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
5588         instead of TREE_TYPE (s1) for the return value.
5590 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
5592         PR tree-optimization/84946
5593         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
5594         bitsize + bitsize in poly_uint64 rather than poly_int64.
5596         PR sanitizer/78651
5597         * dwarf2asm.c: Include fold-const.c.
5598         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
5599         of decl rather than decl itself.
5601         PR rtl-optimization/84643
5602         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
5604 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
5606         PR sanitizer/78651
5607         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
5608         calling assemble_variable.
5610 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
5612         PR target/81647
5613         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
5614         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
5616 2018-03-19  Jim Wilson  <jimw@sifive.com>
5618         PR bootstrap/84856
5619         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
5620         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
5621         (riscv_first_stack_step): Likewise.
5622         (riscv_option_override): Use STACK_BOUNDARY instead of
5623         MIN_STACK_BOUNDARY.
5624         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
5625         MIN_STACK_BOUNDARY.
5626         (BIGGEST_ALIGNMENT): Set to 128.
5627         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
5628         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
5629         STACK_BOUNDARY.
5631 2018-03-19  Richard Biener  <rguenther@suse.de>
5633         PR tree-optimization/84933
5634         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
5635         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
5637 2018-03-19  Richard Biener  <rguenther@suse.de>
5639         PR tree-optimization/84859
5640         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
5641         (cond_if_else_store_replacement): Perform sinking operation on
5642         single-store BBs regardless of MAX_STORES_TO_SINK setting.
5643         Generalize what a BB with a single eligible store is.
5645 2018-03-19  Richard Biener  <rguenther@suse.de>
5647         PR tree-optimization/84929
5648         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
5649         chrec_is_positive against non-chrec arg.
5651 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
5653         PR target/84711
5654         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
5656 2018-03-18  Martin Liska  <mliska@suse.cz>
5658         PR rtl-optimization/84635
5659         * regrename.c (build_def_use): Use matches_mode only when
5660         matches >= 0.
5662 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
5664         PR tree-optimization/84913
5665         * tree-vect-loop.c (vectorizable_reduction): Don't try to
5666         vectorize chains of COND_EXPRs.
5668 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
5670         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
5672 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
5674         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
5676 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
5678         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
5680 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5681             Kito Cheng  <kito.cheng@gmail.com>
5683         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
5684         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
5685         (nds32_adjust_reg_alloc_order): New function.
5686         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
5688 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
5690         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
5691         nds32_print_operand, nds32_print_operand_address): Use
5692         HOST_WIDE_INT_PRINT_DEC instead.
5694 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5696         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
5698 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
5700         PR target/84902
5701         * config/i386/i386.c (initial_ix86_tune_features,
5702         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
5703         unsigned long long.
5704         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
5705         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
5706         rather than 1u << ix86_tune.  Formatting fix.
5707         (ix86_option_override_internal): Change ix86_arch_mask from
5708         unsigned int to unsigned HOST_WIDE_INT, initialize to
5709         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
5710         (ix86_function_specific_restore): Likewise.
5712 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
5714         PR target/84899
5715         * postreload.c (reload_combine_recognize_pattern): Perform
5716         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
5717         truncate_int_for_mode the result for the destination's mode.
5719         PR c/84909
5720         * hsa-gen.c (mem_type_for_type): Fix comment typo.
5721         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
5722         Likewise.
5723         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
5724         Likewise.
5726 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
5728         PR target/84876
5729         * lra-assigns.c (lra_split_hard_reg_for): Don't use
5730         regno_allocno_class_array and sorted_pseudos.
5731         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
5732         insns where regno is used.
5734 2018-03-16  Martin Liska  <mliska@suse.cz>
5736         PR ipa/84833
5737         * multiple_target.c (create_dispatcher_calls): Redirect
5738         reference in the symbol table.
5740 2018-03-16  Martin Liska  <mliska@suse.cz>
5742         PR ipa/84722
5743         * multiple_target.c (create_dispatcher_calls): Redirect also
5744         an alias.
5746 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
5748         PR c++/79937
5749         PR c++/82410
5750         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
5751         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
5752         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
5754 2018-03-16  Julia Koval  <julia.koval@intel.com>
5756         * doc/invoke.texi (Skylake Server): Add CLWB.
5757         Cannonlake): Remove CLWB.
5759 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
5761         PR tree-optimization/84841
5762         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
5763         1 << 3.
5764         (FLOAT_ONE_CONST_TYPE): Define.
5765         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
5766         (sort_by_operand_rank): Put entries with higher constant_type last
5767         rather than first to match comments.
5769 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
5771         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
5772         split predicate.
5774 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
5776         PR c++/79085
5777         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
5778         check and use address of target always.
5780 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
5782         PR target/84574
5783         * config/i386/i386.c (indirect_thunk_needed): Update comments.
5784         (indirect_thunk_bnd_needed): Likewise.
5785         (indirect_thunks_used): Likewise.
5786         (indirect_thunks_bnd_used): Likewise.
5787         (indirect_return_needed): New.
5788         (indirect_return_bnd_needed): Likewise.
5789         (output_indirect_thunk_function): Add a bool argument for
5790         function return.
5791         (output_indirect_thunk_function): Don't generate alias for
5792         function return thunk.
5793         (ix86_code_end): Call output_indirect_thunk_function to generate
5794         function return thunks.
5795         (ix86_output_function_return): Set indirect_return_bnd_needed
5796         and indirect_return_needed instead of indirect_thunk_bnd_needed
5797         and indirect_thunk_needed.
5799 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
5801         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
5802         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
5803         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
5805 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
5806             Paul Hua <paul.hua.gm@gmail.com>
5808         PR c/84852
5809         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
5811 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
5813         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
5814         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
5815         resp. SFmode cases.
5817 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
5819         PR target/84711
5820         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
5821         instead of GET_MODE_SIZE when comparing Units.
5823 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
5825         PR target/68256
5826         * varasm.c (hash_section): Return an unchangeble hash value
5827         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
5828         Return !aarch64_can_use_per_function_literal_pools_p ().
5830 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
5832         PR target/84860
5833         * optabs.c (emit_conditional_move): Pass address of cmode's copy
5834         rather than address of cmode as last argument to prepare_cmp_insn.
5836 2018-03-15  Julia Koval  <julia.koval@intel.com>
5838         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
5839         F_AVX512VNNI, F_AVX512BITALG): New.
5841 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
5843         PR target/83451
5844         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
5845         insn for floating-point loads and stores.
5847 2018-03-14  Carl Love  <cel@us.ibm.com>
5849         * config/rs6000/rs6000-c.c: Add macro definitions for
5850         ALTIVEC_BUILTIN_VEC_PERMXOR.
5851         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
5852         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
5853         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
5854         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
5855         UNSPEC_VPERMXOR.
5856         * config/doc/extend.texi: Add prototypes for vec_permxor.
5858 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
5860         PR c/84852
5861         * diagnostic-show-locus.c (class layout_point): Convert m_line
5862         from int to linenum_type.
5863         (line_span::comparator): Use linenum "compare" function when
5864         comparing line numbers.
5865         (test_line_span): New function.
5866         (layout_range::contains_point): Convert param "row" from int to
5867         linenum_type.
5868         (layout_range::intersects_line_p): Likewise.
5869         (layout::will_show_line_p): Likewise.
5870         (layout::print_source_line): Likewise.
5871         (layout::should_print_annotation_line_p): Likewise.
5872         (layout::print_annotation_line): Likewise.
5873         (layout::print_leading_fixits): Likewise.
5874         (layout::annotation_line_showed_range_p): Likewise.
5875         (struct line_corrections): Likewise for field m_row.
5876         (line_corrections::line_corrections): Likewise for param "row".
5877         (layout::print_trailing_fixits): Likewise.
5878         (layout::get_state_at_point): Likewise.
5879         (layout::get_x_bound_for_row): Likewise.
5880         (layout::print_line): Likewise.
5881         (diagnostic_show_locus): Likewise for locals "last_line" and
5882         "row".
5883         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
5884         * input.c (selftest::test_linenum_comparisons): New function.
5885         (selftest::input_c_tests): Call it.
5886         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
5887         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
5888         * selftest.h (ASSERT_GT): New macro.
5889         (ASSERT_GT_AT): New macro.
5890         (ASSERT_LT): New macro.
5891         (ASSERT_LT_AT): New macro.
5893 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
5895         PR rtl-optimization/84780
5896         * combine.c (distribute_links): Don't make a link based on pc_rtx.
5898 2018-03-14  Martin Liska  <mliska@suse.cz>
5900         * tree.c (record_node_allocation_statistics): Use
5901         get_stats_node_kind.
5902         (get_stats_node_kind): New function extracted from
5903         record_node_allocation_statistics.
5904         (free_node): Use get_stats_node_kind.
5906 2018-03-14  Richard Biener  <rguenther@suse.de>
5908         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
5909         that the value-set of ANTIC_IN doesn't grow.
5911         Revert
5912         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5913         member.
5914         (BB_VISITED_WITH_VISITED_SUCCS): New define.
5915         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5917 2018-03-14  Julia Koval  <julia.koval@intel.com>
5919         * config.gcc (icelake-client, icelake-server): New.
5920         (icelake): Remove.
5921         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
5922         (initial_ix86_arch_features): Ditto.
5923         (PTA_SKYLAKE): Add SGX.
5924         (PTA_ICELAKE): Remove.
5925         (PTA_ICELAKE_CLIENT): New.
5926         (PTA_ICELAKE_SERVER): New.
5927         (ix86_option_override_internal): Split up icelake on icelake client and
5928         icelake server.
5929         (get_builtin_code_for_version): Ditto.
5930         (fold_builtin_cpu): Ditto.
5931         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
5932         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
5933         * config/i386/i386.h (processor_type): Ditto.
5934         * doc/invoke.texi: Ditto.
5936 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
5938         PR sanitizer/83392
5939         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
5940         INTEGER_CST offset, add it together with bitpos / 8 and
5941         sign extend based on POINTER_SIZE.
5943         PR target/84844
5944         Revert
5945         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
5947         PR target/78090
5948         * config/i386/constraints.md (Yc): New register constraint.
5949         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
5950         Use Yc constraint for alternative 2 of operand 0.  Remove
5951         preferred_for_speed attribute.
5953 2018-03-14  Richard Biener  <rguenther@suse.de>
5955         PR tree-optimization/84830
5956         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
5957         with the old one to avoid oscillations.
5959 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
5961         PR target/83712
5962         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
5963         pseudos.
5964         (assign_by_spills): Return a flag of reload assignment failure.
5965         Do not process the reload assignment failures.  Do not spill other
5966         reload pseudos if they has the same reg class.  Update n if
5967         necessary.
5968         (lra_assign): Add a return arg.  Set up from the result of
5969         assign_by_spills call.
5970         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5971         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
5972         usage_insns if it is not NULL.
5973         (spill_hard_reg_in_range): New function.
5974         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5975         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5976         function prototypes.
5977         (lra_assign): Change prototype.
5978         * lra.c (lra): Add code to deal with fails by splitting hard reg
5979         live ranges.
5981 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
5983         * config/riscv/riscv.opt (mrelax): New option.
5984         * config/riscv/riscv.c (riscv_file_start): Emit ".option
5985         "norelax" when riscv_mrelax is disabled.
5986         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
5988 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
5990         PR target/84743
5991         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
5992         reassociation for int modes.
5994 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
5996         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
5997         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
5998         for big-endian.
5999         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
6000         * config/aarch64/aarch64-sve.md
6001         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
6002         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
6003         (*extend<mode><Vwide>2): Rename to...
6004         (aarch64_sve_extend<mode><Vwide>2): ...this.
6005         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
6006         renaming the old pattern to...
6007         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
6008         unsigned packs.
6009         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
6010         define_expand, renaming the old pattern to...
6011         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
6012         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
6013         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
6014         account when deciding which SVE instruction the optab should use.
6015         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
6017 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6019         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
6020         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
6021         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
6022         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
6023         (tlsdesc_small_<mode>): Turn a define_expand and use
6024         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
6025         (tlsdesc_small_advsimd_<mode>): ...this.
6026         (tlsdesc_small_sve_<mode>): New pattern.
6028 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6030         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
6031         (UNSPEC_UMUL_HIGHPART): New constants.
6032         (MUL_HIGHPART): New int iteraor.
6033         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
6034         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
6035         define_expand.
6036         (*<su>mul<mode>3_highpart): New define_insn.
6038 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
6040         PR lto/84805
6041         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
6042         incomplete types.
6044 2018-03-13  Martin Liska  <mliska@suse.cz>
6046         PR ipa/84658.
6047         * (sem_item_optimizer::sem_item_optimizer): Initialize new
6048         vector.
6049         (sem_item_optimizer::~sem_item_optimizer): Release it.
6050         (sem_item_optimizer::merge_classes): Register variable aliases.
6051         (sem_item_optimizer::fixup_pt_set): New function.
6052         (sem_item_optimizer::fixup_points_to_sets): Likewise.
6053         * ipa-icf.h: Declare new variables and functions.
6055 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
6057         PR middle-end/84834
6058         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
6059         integer_pow2p@2 and test integer_pow2p in condition.
6060         (A < 0 ? C : 0): Similarly for @1.
6062         PR middle-end/84831
6063         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
6064         characters starting at p contain '\0' character, don't look beyond
6065         that.
6067         PR target/84827
6068         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
6069         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
6071         PR target/84828
6072         * reg-stack.c (change_stack): Change update_end var from int to
6073         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
6074         also call set_block_for_insn on the newly added insns and rescan.
6076         PR target/84786
6077         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
6078         on the last operand.
6080         PR c++/84704
6081         * tree.c (stabilize_reference_1): Return save_expr (e) for
6082         STATEMENT_LIST even if it doesn't have side-effects.
6084 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
6086         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
6088 2018-03-12  Renlin Li  <renlin.li@arm.com>
6090         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
6091         aarch64_output_scalar_simd_mov_immediate.
6093 2018-03-12  Martin Sebor  <msebor@redhat.com>
6095         PR tree-optimization/83456
6096         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
6097         for perfectly overlapping calls to memcpy.
6098         (gimple_fold_builtin_memory_chk): Same.
6099         (gimple_fold_builtin_strcpy): Handle no-warning.
6100         (gimple_fold_builtin_stxcpy_chk): Same.
6101         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
6103 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6105         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
6106         parameter.  Use it for SFmode.
6107         (rs6000_function_arg_advance_1): Adjust.
6108         (rs6000_function_arg): Adjust.
6109         (rs6000_gimplify_va_arg): Pass false for that new parameter.
6111 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6113         PR rtl-optimization/84169
6114         PR rtl-optimization/84780
6115         * combine.c (can_combine_p): Check for a 2-insn combination whether
6116         the destination register is used between the two insns, too.
6118 2018-03-12  Richard Biener  <rguenther@suse.de>
6120         PR tree-optimization/84803
6121         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
6122         for refs DR analysis didn't process.
6124 2018-03-12  Richard Biener  <rguenther@suse.de>
6126         PR tree-optimization/84777
6127         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
6128         force-vectorize loops ignore whether we are optimizing for size.
6130 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
6132         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
6133         (TARGET_MD_ASM_ADJUST): Define.
6135 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
6136             Kito Cheng  <kito.cheng@gmail.com>
6137             Chung-Ju Wu  <jasonwucj@gmail.com>
6139         * config/nds32/nds32.c (nds32_compute_stack_frame,
6140         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
6141         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
6142         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
6143         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
6144         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
6145         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
6146         * config/nds32/nds32.md (prologue, epilogue): Use macro
6147         NDS32_V3PUSH_AVAILABLE_P to do checking.
6149 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
6151         PR debug/58150
6152         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
6153         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
6154         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
6155         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
6156         addition of most attributes on !orig_type_die or the attribute not
6157         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
6159 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6160             Chung-Ju Wu  <jasonwucj@gmail.com>
6162         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
6163         __NDS32_VH__ macro.
6164         * config/nds32/nds32.opt (mvh): New option.
6166 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6167             Chung-Ju Wu  <jasonwucj@gmail.com>
6169         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
6170         function.
6171         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
6172         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
6173         definition.
6175 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6176             Chung-Ju Wu  <jasonwucj@gmail.com>
6178         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
6179         function.
6180         * config/nds32/nds32-multiple.md (strlensi): New pattern.
6181         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
6183 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
6184             Kito Cheng  <kito.cheng@gmail.com>
6185             Chung-Ju Wu  <jasonwucj@gmail.com>
6187         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
6188         UNSPEC_FFMISM and UNSPEC_FLMISM.
6189         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
6190         for ffb, ffmism and flmism.
6191         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
6192         (unspec_ffmism): Ditto.
6193         (unspec_flmism): Ditto.
6194         (nds32_expand_builtin_impl): Check if string extension is available.
6195         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
6196         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
6198 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
6200         Reverting patch:
6201         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6203         PR target/83712
6204         * lra-assigns.c (assign_by_spills): Return a flag of reload
6205         assignment failure.  Do not process the reload assignment
6206         failures.  Do not spill other reload pseudos if they has the same
6207         reg class.
6208         (lra_assign): Add a return arg.  Set up from the result of
6209         assign_by_spills call.
6210         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6211         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6212         usage_insns if it is not NULL.
6213         (spill_hard_reg_in_range): New function.
6214         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6215         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6216         function prototypes.
6217         (lra_assign): Change prototype.
6218         * lra.c (lra): Add code to deal with fails by splitting hard reg
6219         live ranges.
6221 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
6223         PR target/84807
6224         * config/i386/i386.opt: Replace Enforcment with Enforcement.
6226 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
6228         PR debug/84620
6229         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
6230         (dw_val_node): Add val_symbolic_view.
6231         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
6232         (symview_upper_bound): New.
6233         (new_line_info_table): Initialize symviews_since_reset.
6234         (dwarf2out_source_line): Count symviews_since_reset and set
6235         symview_upper_bound.
6236         (dw_val_equal_p): Handle symview.
6237         (add_AT_symview): New.
6238         (print_dw_val): Handle symview.
6239         (attr_checksum, attr_checksum_ordered): Likewise.
6240         (same_dw_val_p, size_of_die): Likewise.
6241         (value_format, output_die): Likewise.
6242         (add_high_low_attributes): Use add_AT_symview for entry_view.
6243         (dwarf2out_finish): Reset symview_upper_bound, clear
6244         zero_view_p.
6246 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
6248         PR target/83969
6249         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
6250         Add strict argument and use it.
6251         (rs6000_split_multireg_move): Update for new strict argument.
6252         (mem_operand_gpr): Disallow all non-offsettable addresses.
6253         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
6255 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
6257         PR target/84772
6258         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
6259         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
6260         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
6262         PR c++/84767
6263         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
6264         decl, use remap_type if we want to use the type.
6266 2018-03-09  Martin Sebor  <msebor@redhat.com>
6268         PR tree-optimization/84526
6269         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6270         Remove dead code.
6271         (builtin_access::generic_overlap): Be prepared to handle non-array
6272         base objects.
6274 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
6276         PR rtl-optimization/84682
6277         * lra-constraints.c (process_address_1): Check is_address flag
6278         for address constraints.
6279         (process_alt_operands): Likewise.
6280         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
6281         preprocess_constraints.
6282         * recog.h (preprocess_constraints): Add oploc parameter.
6283         Adjust callers.
6284         * recog.c (preprocess_constraints): Test address_operand for
6285         CT_ADDRESS constraints.
6287 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6289         PR target/83712
6290         * lra-assigns.c (assign_by_spills): Return a flag of reload
6291         assignment failure.  Do not process the reload assignment
6292         failures.  Do not spill other reload pseudos if they has the same
6293         reg class.
6294         (lra_assign): Add a return arg.  Set up from the result of
6295         assign_by_spills call.
6296         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6297         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6298         usage_insns if it is not NULL.
6299         (spill_hard_reg_in_range): New function.
6300         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6301         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6302         function prototypes.
6303         (lra_assign): Change prototype.
6304         * lra.c (lra): Add code to deal with fails by splitting hard reg
6305         live ranges.
6307 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6309         PR target/83193
6310         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
6311         Accept complain bool parameter.  Only emit errors if it is true.
6312         (arm_parse_cpu_option_name): Likewise.
6313         (arm_target_thumb_only): Adjust callers of the above.
6314         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
6315         prototype to take a default true bool parameter.
6316         (arm_parse_arch_option_name): Likewise.
6318 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
6319             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6321         PR jit/64089
6322         PR jit/84288
6323         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
6324         * configure: Regenerate.
6325         * configure.ac ("linker --version-script option"): New.
6326         ("linker soname option"): New.
6328 2018-03-09  Richard Biener  <rguenther@suse.de>
6330         PR tree-optimization/84775
6331         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
6332         immediate uses of predicate stmts and mark them modified.
6334         Revert
6335         PR tree-optimization/84178
6336         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6337         to caller.
6338         (version_loop_for_if_conversion): Delay update_ssa call.
6339         (tree_if_conversion): Delay update_ssa until after predicate
6340         insertion.
6342 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
6344         PR target/84763
6345         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
6346         when the function accesses prior frames.
6348 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6350         PR debug/84456
6351         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
6352         gen_llsym, otherwise call maybe_gen_llsym.
6354         PR inline-asm/84742
6355         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
6356         has ',' character inside of it.
6358 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6360         PR target/84748
6361         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
6362         as clobbering CC_REGNUM.
6364 2018-03-08  Richard Biener  <rguenther@suse.de>
6366         PR middle-end/84552
6367         * tree-scalar-evolution.c: Include tree-into-ssa.h.
6368         (follow_copies_to_constant): Do not follow SSA names registered
6369         for update.
6371 2018-03-08  Richard Biener  <rguenther@suse.de>
6373         PR tree-optimization/84178
6374         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6375         to caller.
6376         (version_loop_for_if_conversion): Delay update_ssa call.
6377         (tree_if_conversion): Delay update_ssa until after predicate
6378         insertion.
6380 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
6382         PR tree-optimization/84178
6383         * tree-if-conv.c (release_bb_predicate): Remove the
6384         the assertion that the stmts have NULL use_ops.
6385         Discard the statements, asserting that they haven't
6386         yet been added to a BB.
6388 2018-03-08  Richard Biener  <rguenther@suse.de>
6390         PR tree-optimization/84746
6391         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
6392         (phi_translate): Pass in destination ANTIC_OUT set.
6393         (phi_translate_1): Likewise.  For a simplified result lookup
6394         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
6395         (phi_translate_set): Adjust.
6396         (do_pre_regular_insertion): Likewise.
6397         (do_pre_partial_partial_insertion): Likewise.
6399 2018-03-08  Martin Liska  <mliska@suse.cz>
6401         PR gcov-profile/84735
6402         * doc/gcov.texi: Document usage of profile files.
6403         * gcov-io.h: Document changes in the format.
6405 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
6407         PR debug/84404
6408         PR debug/84408
6409         * dwarf2out.c (struct dw_line_info_table): Update comments for
6410         view == -1.
6411         (FORCE_RESET_NEXT_VIEW): New.
6412         (FORCE_RESETTING_VIEW_P): New.
6413         (RESETTING_VIEW_P): Check for -1 too.
6414         (ZERO_VIEW_P): Likewise.
6415         (new_line_info_table): Force-reset next view.
6416         (dwarf2out_begin_function): Likewise.
6417         (dwarf2out_source_line): Simplify zero_view_p initialization.
6418         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
6419         view directly.  Omit view when omitting .loc at line 0.
6421 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6423         PR tree-optimization/84740
6424         * tree-switch-conversion.c (process_switch): Call build_constructors
6425         only if info.phi_count is non-zero.
6427         PR tree-optimization/84739
6428         * tree-tailcall.c (find_tail_calls): Check call arguments against
6429         DECL_ARGUMENTS (current_function_decl) rather than
6430         DECL_ARGUMENTS (func) when checking for tail recursion.
6432 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6434         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
6435         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
6436         Volker Reichelt's entry and add entries for people that perform
6437         GCC fuzzy testing and report numerous bugs.
6439 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
6441         PR target/82411
6442         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
6443         readonly data in sdata, if that is disabled.
6444         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
6445         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
6446         -mreadonly-in-sdata option.
6448 2018-03-07  Martin Sebor  <msebor@redhat.com>
6450         PR tree-optimization/84468
6451         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
6452         basic block when looking for nul assignment.
6454 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
6456         PR target/84277
6457         * except.h (output_function_exception_table): Adjust prototype.
6458         * except.c (output_function_exception_table): Remove FNNAME parameter
6459         and add SECTION parameter.  Ouput one part of the table at a time.
6460         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
6461         the first part of the exception table and emit unwind directives.
6462         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
6463         (i386_pe_seh_cold_init): Likewise.
6464         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
6465         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
6466         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
6467         (ix86_output_call_insn): Emit a nop in one more case for SEH.
6468         * config/i386/winnt.c: Include except.h.
6469         (struct seh_frame_state): Add reg_offset, after_prologue and
6470         in_cold_section fields.
6471         (i386_pe_seh_end_prologue): Set seh->after_prologue.
6472         (i386_pe_seh_cold_init): New function.
6473         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
6474         to seh->in_cold_section.
6475         (seh_emit_push): Record the offset of the push.
6476         (seh_emit_save): Record the offet of the save.
6477         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
6478         Test seh->after_prologue to disregard the epilogue.
6479         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
6480         (i386_pe_end_cold_function): New function.
6482 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6484         PR fortran/84565
6485         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
6486         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
6488         PR c++/84704
6489         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
6490         on tmp_var.
6491         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
6492         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
6494         PR middle-end/84723
6495         * multiple_target.c: Include tree-inline.h and intl.h.
6496         (expand_target_clones): Diagnose and fail if node->definition and
6497         !tree_versionable_function_p (node->decl).
6499 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
6501         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
6502         sprint_ul.
6503         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
6504         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
6505         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
6507 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
6509         PR target/84710
6510         * combine.c (try_combine): Use reg_or_subregno instead of handling
6511         just paradoxical SUBREGs and REGs.
6513 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
6515          * config/arc/arc.c (arc_finalize_pic): Remove function.
6516          (arc_must_save_register): We use single base PIC register, remove
6517          checks to save/restore the PIC register.
6518          (arc_expand_prologue): Likewise.
6519          * config/arc/arc-protos.h (arc_set_default_type_attributes):
6520          Remove.
6521          (arc_verify_short): Likewise.
6522          (arc_attr_type): Likewise.
6523          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
6524          (walk_stores): Likewise.
6525          (arc_address_cost): Make it static.
6526          (arc_verify_short): Likewise.
6527          (branch_dest): Likewise.
6528          (arc_attr_type): Likewise.
6529          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
6530          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
6531          (arc_final_prescan_insn): Remove inserting the nops due to
6532          hardware hazards.  It is done in reorg step.
6533          (insn_length_variant_t): Remove.
6534          (insn_length_parameters_t): Likewise.
6535          (arc_insn_length_parameters): Likewise.
6536          (arc_get_insn_variants): Likewise.
6537          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
6539 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
6541         PR inline-asm/84683
6542         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
6543         assertion failure.
6545         PR tree-optimization/84687
6546         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
6547         on new_node->decl.
6548         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
6550 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6552         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
6553         Rename to ppc_speculation_barrier.
6554         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
6555         __builtin_ppc_speculation_barrier.
6557 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
6559         PR target/84700
6560         * combine.c (combine_simplify_rtx): Don't try to simplify if
6561         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
6562         are equal to x.
6564 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
6566         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
6567         to 32 bytes when compiling for POWER9.
6569 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
6571         PR target/84564
6572         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
6573         regparm >= 3 with no arg reg available also for calls with
6574         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
6576         PR target/84524
6577         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
6578         orig,vex.
6579         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
6581 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
6583         PR target/84264
6584         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
6586 2018-03-05  Richard Biener  <rguenther@suse.de>
6588         PR tree-optimization/84486
6589         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
6590         When inserting a __builtin_assume_aligned call set the LHS
6591         SSA name alignment info accordingly.
6593 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
6595         PR tree-optimization/84114
6596         * config/aarch64/aarch64.c (aarch64_reassociation_width)
6597         Avoid reassociation of FLOAT_MODE addition.
6599 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
6601         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
6602         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
6603         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
6604         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
6605         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
6606         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
6607         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
6608         and -mwbnoinvd.
6609         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
6610         __builtin_ia32_wbinvd): New builtins.
6611         (SPECIAL_ARGS2): New.
6612         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
6613         (SPECIAL_ARGS2): New.
6614         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
6615         (ix86_valid_target_attribute_inner_p): Ditto.
6616         (ix86_init_mmx_sse_builtins): Add special_args2.
6617         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
6618         TARGET_WBNOINVD_P): New.
6619         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
6620         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
6621         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
6622         * config/i386/immintrin.h (_wbinvd): New intrinsic.
6623         * config/i386/pconfigintrin.h: New file.
6624         * config/i386/wbnoinvdintrin.h: Ditto.
6625         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
6626         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
6628 2018-03-05  Richard Biener  <rguenther@suse.de>
6630         PR tree-optimization/84670
6631         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
6632         member.
6633         (BB_VISITED_WITH_VISITED_SUCCS): New define.
6634         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
6635         (compute_antic_aux): Only assert the number of values in ANTIC_IN
6636         doesn't grow if all successors (recursively) were visited at least
6637         once.
6639 2018-03-05  Richard Biener  <rguenther@suse.de>
6641         PR tree-optimization/84650
6642         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
6643         if executed in the loop pipeline.
6645 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
6647         * doc/configfiles.texi (Configuration Files): Move info about
6648         conditionalizing $target-protos.h to...
6649         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
6650         differs from $target-protos.h.
6652 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
6653             Chung-Ju Wu  <jasonwucj@gmail.com>
6655         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
6656         * config/nds32/nds32-multiple.md (setmemsi): Define.
6657         * config/nds32/nds32-memory-manipulation.c
6658         (nds32_gen_dup_4_byte_to_word_value): New.
6659         (emit_setmem_word_loop): New.
6660         (emit_setmem_byte_loop): New.
6661         (nds32_expand_setmem_loop): New.
6662         (nds32_expand_setmem_loop_v3m): New.
6663         (nds32_expand_setmem_unroll): New.
6664         (nds32_expand_setmem): New.
6666 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
6667             Chung-Ju Wu  <jasonwucj@gmail.com>
6669         * config/nds32/nds32-memory-manipulation.c
6670         (nds32_emit_load_store): New.
6671         (nds32_emit_post_inc_load_store): New.
6672         (nds32_emit_mem_move): New.
6673         (nds32_emit_mem_move_block): New.
6674         (nds32_expand_movmemsi_loop_unknown_size): New.
6675         (nds32_expand_movmemsi_loop_known_size): New.
6676         (nds32_expand_movmemsi_loop): New.
6677         (nds32_expand_movmemsi_unroll): New.
6678         (nds32_expand_movmemqi): Rename ...
6679         (nds32_expand_movmemsi): ... to this.
6680         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
6681         (movmemsi): ... to this.
6682         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
6683         (nds32_expand_movmemsi): ... to this.
6685 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
6686             Monk Chiang  <sh.chiang04@gmail.com>
6687             Chung-Ju Wu  <jasonwucj@gmail.com>
6689         * config/nds32/nds32-protos.h
6690         (nds32_expand_load_multiple): New arguments.
6691         (nds32_expand_store_multiple): Ditto.
6692         (nds32_valid_multiple_load_store): Rename ...
6693         (nds32_valid_multiple_load_store_p): ... to this.
6694         * config/nds32/nds32-memory-manipulation.c
6695         (nds32_expand_load_multiple): Refine implementation.
6696         (nds32_expand_store_multiple): Ditto.
6697         * config/nds32/nds32-multiple.md
6698         (load_multiple): Update nds32_expand_load_multiple interface.
6699         (store_multiple): Update nds32_expand_store_multiple interface.
6700         * config/nds32/nds32-predicates.c
6701         (nds32_valid_multiple_load_store): Rename ...
6702         (nds32_valid_multiple_load_store_p): ... to this and refine
6703         implementation.
6704         * config/nds32/predicates.md
6705         (nds32_load_multiple_and_update_address_operation): New predicate.
6706         (nds32_store_multiple_and_update_address_operation): New predicate.
6708 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
6709             Chung-Ju Wu  <jasonwucj@gmail.com>
6711         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
6712         (combo): New attribute.
6713         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
6715 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
6717         * config/nds32/nds32.opt: Change -mcmodel= default value.
6719 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
6720             Monk Chiang  <sh.chiang04@gmail.com>
6721             Chung-Ju Wu  <jasonwucj@gmail.com>
6723         * config/nds32/constants.md (unspec_element): New enum.
6724         * config/nds32/constraints.md (Umw): New constraint.
6725         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
6726         * config/nds32/nds32-intrinsic.md: Likewise.
6727         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
6728         (nds32_valid_smw_lwm_base_p): New.
6729         (nds32_output_smw_single_word): New.
6730         (nds32_output_lmw_single_word): New.
6731         (nds32_expand_unaligned_load): New.
6732         (nds32_expand_unaligned_store): New.
6733         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
6734         (nds32_output_smw_single_word): Declare.
6735         (nds32_output_lmw_single_word): Declare.
6736         (nds32_expand_unaligned_load): Declare.
6737         (nds32_expand_unaligned_store): Declare.
6738         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
6739         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
6740         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
6741         NDS32_BUILTIN_UASTORE_DW.
6742         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
6743         predicate.
6745 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
6746             Kito Cheng  <kito.cheng@gmail.com>
6747             Chung-Ju Wu  <jasonwucj@gmail.com>
6749         * config/nds32/nds32-intrinsic.c
6750         (nds32_expand_builtin_null_ftype_reg): Delete.
6751         (nds32_expand_builtin_reg_ftype_imm): Ditto.
6752         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
6753         (nds32_read_argument): New.
6754         (nds32_legitimize_target): Ditto.
6755         (nds32_legitimize_argument): Ditto.
6756         (nds32_check_constant_argument): Ditto.
6757         (nds32_expand_unop_builtin): Ditto.
6758         (nds32_expand_unopimm_builtin): Ditto.
6759         (nds32_expand_binop_builtin): Ditto.
6760         (nds32_builtin_decl_impl): Ditto.
6761         (builtin_description): Ditto.
6762         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
6763         (nds32_init_builtins_impl): Ditto.
6764         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
6765         (nds32_builtin_decl): New.
6766         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
6767         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
6769 2018-03-02  Jeff Law  <law@redhat.com>
6771         * reorg.c (stop_search_p): Handle DEBUG_INSN.
6772         (redundant_insn, fill_simple_delay_slots): Likewise.
6773         (fill_slots_from_thread): Likewise.
6774         * resource.c (mark_referenced_resources): Likewise.
6775         (mark_set_resources, find_dead_or_set_registers): Likewise.
6777 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
6779         * substring-locations.h (format_warning_va): Formatting fix for
6780         ATTRIBUTE_GCC_DIAG.
6781         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
6782         argument.
6783         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
6784         * substring-locations.c: Include intl.h.
6785         (format_warning_va): Turned into small wrapper around
6786         format_warning_n_va, renamed to ...
6787         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
6788         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
6789         use ngettext.
6790         (format_warning_at_substring_n): New function.
6791         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
6792         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
6793         format_warning_at_substring with just a shorter name instead of
6794         const function pointer.
6795         (fmtwarn_n): New function.
6796         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
6797         appropriate, get rid of all the fmtstr temporaries, move conditionals
6798         with G_() wrapped string literals directly into fmtwarn arguments,
6799         cast dir.len to (int), formatting fixes.
6801 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
6803         * doc/invoke.texi: Remove "Cilk Plus" references.
6805 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
6806             Richard Biener  <rguenther@suse.de>
6808         PR ipa/84628
6809         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
6810         for error or warning attributes if CALL_FROM_THUNK_P is set.
6811         Formatting fixes.
6813 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
6815         PR target/56540
6816         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
6817         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
6819         PR target/56540
6820         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
6821         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
6823         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
6824         instead of -1U in last predictors element's probability member.
6826 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
6828         PR ipa/83983
6829         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
6830         arguments if they are comparable.
6832 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
6834         PR tree-optimization/84634
6835         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
6836         masks and masked_loop_p with a single loop_masks, making sure it's
6837         null for bb vectorization.
6839 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
6841         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
6842         (vect_analyze_data_ref_access): Use loop->safe_len rather than
6843         loop->force_vectorize to check whether there is no alias.
6845 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
6847         PR target/84614
6848         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
6849         prototypes.
6850         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
6851         comments.
6852         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
6853         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
6854         instead of a loop around prev_real_insn.
6855         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
6856         prev_real_insn.
6858         PR inline-asm/84625
6859         * config/i386/i386.c (ix86_print_operand): Use conditional
6860         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
6861         zero vector.
6863 2018-03-02  Richard Biener  <rguenther@suse.de>
6865         PR tree-optimization/84427
6866         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
6867         (bitmap_set_subtract_values): Rewrite to handle multiple
6868         exprs per value.
6869         (clean): Likewise.
6870         (prune_clobbered_mems): Likewise.
6871         (phi_translate): Take edge instead of pred/phiblock.
6872         (phi_translate_1): Likewise.
6873         (phi_translate_set): Likewise.  Insert all translated
6874         exprs for a value into the set, keeping possibly multiple
6875         expressions per value.
6876         (compute_antic_aux): Adjust for phi_translate changes.
6877         When intersecting union the expressions and prune those
6878         not in the final value set, keeping possibly multiple
6879         expressions per value.  Do not use value-insertion
6880         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
6881         all expressions.  Add verification that the value-sets
6882         only shrink during iteration.
6883         (compute_partial_antic_aux): Adjust for the phi_translate changes.
6884         (do_pre_regular_insertion): Likewise.
6885         (do_pre_partial_partial_insertion): Likewise.
6887 2018-03-02  Richard Biener  <rguenther@suse.de>
6889         PR target/82005
6890         * config/darwin.c (saved_debug_info_level): New static global.
6891         (darwin_asm_lto_start): Disable debug info generation for LTO out.
6892         (darwin_asm_lto_end): Restore debug info generation settings.
6894 2018-03-01  Martin Liska  <mliska@suse.cz>
6896         PR sanitizer/82484
6897         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
6898         volatile arguments.
6900 2018-03-01  Richard Biener  <rguenther@suse.de>
6902         PR debug/84645
6903         * dwarf2out.c (gen_variable_die): Properly handle late VLA
6904         type annotation with LTO when debug was disabled at compile-time.
6906 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
6908         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
6909         XINT with INTVAL.
6910         (mips_final_postscan_insn): Likewise.
6912 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
6914         PR rtl-optimization/84528
6915         * alias.c (init_alias_target): Add commentary.
6916         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
6917         a unique base value if the frame pointer is not eliminated
6918         to the stack pointer.
6920 2018-03-01  Tom de Vries  <tom@codesourcery.com>
6922         PR rtl-optimization/83327
6923         * lra-int.h (hard_regs_spilled_into): Declare.
6924         * lra.c (hard_regs_spilled_into): Define.
6925         (init_reg_info): Init hard_regs_spilled_into.
6926         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
6927         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
6928         (process_bb_lives): Handle hard_regs_spilled_into.
6929         (lra_create_live_ranges_1): Before doing liveness propagation, clear
6930         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
6932 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
6934         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
6935         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
6936         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
6937         * config/rs6000/aix72.h: New file.
6939 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
6941         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
6942         instead of warning_at with conditional singular and plural messages
6943         where possible.
6945         PR target/52991
6946         * stor-layout.c (update_alignment_for_field): For
6947         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
6948         && !DECL_PACKED (field), do the alignment update, just use
6949         only desired_align instead of MAX (type_align, desired_align)
6950         as the alignment.
6951         (place_field): Don't do known_align < desired_align handling
6952         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
6953         is non-NULL, instead do it after rli->prev_field handling and
6954         only if not within a bitfield word.  For DECL_PACKED (field)
6955         use type_align of BITS_PER_UNIT.
6957 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
6959         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
6960         superfluous parentheses and trailing spaces.
6962 2018-02-28  Richard Biener  <rguenther@suse.de>
6964         PR tree-optimization/84584
6965         * graphite-scop-detection.c (scop_detection::add_scop): Discard
6966         SCoPs with fake exit edge.
6968 2018-02-28  Martin Liska  <mliska@suse.cz>
6970         PR testsuite/84597
6971         * timevar.c (timer::print): Fix format to properly print 100%
6972         values.
6974 2018-02-28  Richard Biener  <rguenther@suse.de>
6976         PR middle-end/84607
6977         * genmatch.c (capture_info::walk_match): Do not mark
6978         captured expressions without operands as expr_p given
6979         they act more like predicates and should be subject to
6980         "lost tail" side-effect preserving.
6982 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
6984         PR rtl-optimization/81611
6985         * auto-inc-dec.c (attempt_change): Move dead note from
6986         mem_insn if it's the next use of regno
6987         (find_address): Take address use of reg holding
6988         non-incremented value.  Add parm to limit search to the named
6989         reg only.
6990         (merge_in_block): Attempt to use a mem insn that is the next
6991         use of the original regno.
6993 2018-02-27  Martin Sebor  <msebor@redhat.com>
6995         PR c++/83871
6996         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
6997         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
6999 2018-02-27  Martin Sebor  <msebor@redhat.com>
7001         PR translation/84207
7002         * diagnostic-core.h (warning_n, error_n, inform_n): Change
7003         n argument to unsigned HOST_WIDE_INT.
7004         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
7005         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
7006         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
7007         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
7009 2018-02-27  Richard Biener  <rguenther@suse.de>
7011         PR tree-optimization/84512
7012         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
7013         Do not use the estimate returned from record_stmt_cost for
7014         the scalar iteration cost but sum properly using add_stmt_cost.
7016 2018-02-27  Richard Biener  <rguenther@suse.de>
7018         PR tree-optimization/84466
7019         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
7020         Adjust last change to less strictly validate use operands.
7022 2018-02-27  Martin Liska  <mliska@suse.cz>
7024         PR gcov-profile/84548
7025         * gcov.c (process_file): Allow partial overlap and consider it
7026         also as group functions.
7027         (output_lines): Properly calculate range of lines for a group.
7029 2018-02-27  Martin Liska  <mliska@suse.cz>
7031         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
7032         'ggc' suffixes.  Change first column width.
7033         (timer::print): Fix formatting of the column.
7035 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
7037         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
7038         preserve inline entry blocks for the sake of debug inline
7039         entry point markers alone.
7040         (remove_unused_locals): Suggest in comments a better place to
7041         force the preservation of inline entry blocks that are
7042         otherwise unused, but do not preserve them.
7044 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7046         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
7048 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7050         PR target/84039
7051         * config/i386/constraints.md (Bs): Replace
7052         ix86_indirect_branch_register with
7053         TARGET_INDIRECT_BRANCH_REGISTER.
7054         (Bw): Likewise.
7055         * config/i386/i386.md (indirect_jump): Likewise.
7056         (tablejump): Likewise.
7057         (*sibcall_memory): Likewise.
7058         (*sibcall_value_memory): Likewise.
7059         Peepholes of indirect call and jump via memory: Likewise.
7060         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
7061         (*sibcall_value_GOT_32): Likewise.
7062         * config/i386/predicates.md (indirect_branch_operand): Likewise.
7063         (GOT_memory_operand): Likewise.
7064         (call_insn_operand): Likewise.
7065         (sibcall_insn_operand): Likewise.
7066         (GOT32_symbol_operand): Likewise.
7067         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
7069 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7071         PR rtl-optimization/83496
7072         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
7073         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
7074         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
7075         redundant insn, if any.
7076         (relax_delay_slots): Likewise.
7077         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
7079 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
7081         PR tree-optimization/83965
7082         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
7083         that grouped statements are part of a reduction chain.  Return
7084         true if the statement is not marked as a reduction itself but
7085         is part of a group.
7086         (vect_recog_dot_prod_pattern): Don't check whether the statement
7087         is part of a group here.
7088         (vect_recog_sad_pattern): Likewise.
7089         (vect_recog_widen_sum_pattern): Likewise.
7091 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7093         PR debug/84545
7094         * final.c (rest_of_clean_state): Also look for calls inside sequences.
7096 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7098         PR target/84530
7099         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
7100         the bool argument.
7101         (ix86_output_indirect_function_return): New prototype.
7102         (ix86_split_simple_return_pop_internal): Likewise.
7103         * config/i386/i386.c (indirect_return_via_cx): New.
7104         (indirect_return_via_cx_bnd): Likewise.
7105         (indirect_thunk_name): Handle return va CX_REG.
7106         (output_indirect_thunk_function): Create alias for
7107         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
7108         (ix86_output_indirect_jmp): Remove the bool argument.
7109         (ix86_output_indirect_function_return): New function.
7110         (ix86_split_simple_return_pop_internal): Likewise.
7111         * config/i386/i386.md (*indirect_jump): Don't pass false
7112         to ix86_output_indirect_jmp.
7113         (*tablejump_1): Likewise.
7114         (simple_return_pop_internal): Change it to define_insn_and_split.
7115         Call ix86_split_simple_return_pop_internal to split it for
7116         -mfunction-return=.
7117         (simple_return_indirect_internal): Call
7118         ix86_output_indirect_function_return instead of
7119         ix86_output_indirect_jmp.
7121 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
7123         PR bootstrap/84405
7124         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
7125         memset and value initialization afterwards.
7127 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
7129         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
7131 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7133         PR target/84521
7134         * common/config/aarch64/aarch64-common.c
7135         (aarch_option_optimization_table[]): Switch
7136         off fomit-frame-pointer
7138 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7139             Chung-Ju Wu  <jasonwucj@gmail.com>
7141         * config/nds32/nds32-multiple.md (load_multiple): Disallow
7142         volatile memory.
7143         (store_multiple): Ditto.
7145 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7147         * config.gcc: Add --with-cpu support for nds32 target.
7148         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
7149         * config/nds32/nds32.opt: Add -mcpu= option.
7151 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
7153         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
7154         isel=yes): Warn for these deprecated options.
7156 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
7158         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
7159         ISA_2_5_MASKS_EMBEDDED.
7161 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
7163         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
7164         p->max as pointers rather than using iterative_hash_expr.
7166 2018-02-23  Carl Love  <cel@us.ibm.com>
7168         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
7169         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
7170         BU_P8V_OVERLOAD_2.
7171         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
7172         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
7173         P8V_BUILTIN_VEC_VUNSIGNED2.
7175 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
7177         PR target/81572
7178         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
7179         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
7180         LRA_UNKNOWN_ALT.
7181         * lra-constraints.c (curr_insn_transform): Set up
7182         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
7183         LRA_UNKNOWN_ALT.
7184         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
7185         * lra-eliminations.c (spill_pseudos): Ditto.
7186         (process_insn_for_elimination): Ditto.
7187         * lra-lives.c (reg_early_clobber_p): Use the new macros.
7188         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
7189         LRA_NON_CLOBBERED_ALT.
7191 2018-02-22  Martin Sebor  <msebor@redhat.com>
7193         PR tree-optimization/84480
7194         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
7195         to maybe_diag_stxncpy_trunc.  Call it.
7196         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
7197         from gimple_fold_builtin_strcpy.  Print inlining stack.
7198         (handle_builtin_stxncpy): Print inlining stack.
7199         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
7201 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
7203         PR target/84176
7204         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
7205         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
7206         and -fcheck-pointer-bounds are used together.
7207         (indirect_thunk_prefix): New enum.
7208         (indirect_thunk_need_prefix): New function.
7209         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
7210         "_nt" instead of "_bnd" for NOTRACK prefix.
7211         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
7212         (output_indirect_thunk_function): Likewise.
7213         (): Likewise.
7214         (ix86_code_end): Update output_indirect_thunk_function calls.
7215         (ix86_output_indirect_branch_via_reg): Replace
7216         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
7217         (ix86_output_indirect_branch_via_push): Likewise.
7218         (ix86_output_function_return): Likewise.
7219         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
7220         incompatible with -fcf-protection=branch and
7221         -fcheck-pointer-bounds.
7223 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7225         PR target/83335
7226         * config/aarch64/aarch64.c (aarch64_print_address_internal):
7227         Change gcc_assert call to output_operand_lossage.
7229 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7231         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
7233 2018-02-22  DJ Delorie  <dj@redhat.com>
7234             Sebastian Perta  <sebastian.perta@renesas.com>
7235             Oleg Endo  <olegendo@gcc.gnu.org>
7237         * config/rx/rx.c (rx_rtx_costs): New function.
7238         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
7240 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
7242         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
7244 2018-02-22  Martin Liska  <mliska@suse.cz>
7246         PR driver/83193
7247         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
7248         Add "native" as a possible value.
7250 2018-02-22  Martin Liska  <mliska@suse.cz>
7252         PR driver/83193
7253         * config/i386/i386.c (ix86_option_override_internal):
7254         Add "native" as a possible value for -march and -mtune.
7256 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
7258         PR target/84502
7259         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
7260         to all type variants.
7262         PR tree-optimization/84503
7263         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
7264         width as info->bitpos + info->bitsize - start.
7265         (merged_store_group::merge_overlapping): Simplify width computation.
7266         (check_no_overlap): New function.
7267         (imm_store_chain_info::try_coalesce_bswap): Compute expected
7268         start + width and last_order of the group, fail if check_no_overlap
7269         fails.
7270         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
7271         to group if check_no_overlap fails.
7273 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7275         * config/rs6000/altivec.md: Delete contraint arguments to
7276         define_expand, define_split, and define_peephole2, and in
7277         define_insn_and_split if always unused.
7278         * config/rs6000/darwin.md: Ditto.
7279         * config/rs6000/dfp.md: Ditto.
7280         * config/rs6000/rs6000.md: Ditto.
7281         * config/rs6000/sync.md: Ditto.
7282         * config/rs6000/vector.md: Ditto.
7283         * config/rs6000/vsx.md: Ditto.
7285 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7287         * config/rs6000/altivec.md: Write output control strings as braced
7288         blocks instead of double-quoted strings.
7289         * config/rs6000/darwin.md: Ditto.
7290         * config/rs6000/rs6000.md: Ditto.
7291         * config/rs6000/vector.md: Ditto.
7292         * config/rs6000/vsx.md: Ditto.
7294 2018-02-21  Jason Merrill  <jason@redhat.com>
7296         PR c++/84314 - ICE with templates and fastcall attribute.
7297         * attribs.c (build_type_attribute_qual_variant): Remove assert.
7299 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7301         * ipa-cp.c (determine_versionability): Fix comment typos.
7303 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7305         PR c/84229
7306         * ipa-cp.c (determine_versionability): Do not version functions caling
7307         va_arg_pack.
7309 2018-02-21  Martin Liska  <mliska@suse.cz>
7311         PR driver/83193
7312         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
7313         Add "native" as a possible value.
7314         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
7315         the macro when native cpu detection is available.
7317 2018-02-21  Martin Liska  <mliska@suse.cz>
7319         PR driver/83193
7320         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
7321         Add "native" as a possible value.
7322         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
7323         when native cpu detection is available.
7325 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
7326             Martin Sebor  <msebor@redhat.com>
7328         PR tree-optimization/84478
7329         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
7330         false.
7331         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
7332         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
7333         support which is conservatively correct, for 2 only stay conservative
7334         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
7335         argument to the 2 argument get_range_strlen, adjust 6 arg
7336         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
7337         false.
7338         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
7339         (gimple_fold_builtin_strlen): Pass true as last argument to
7340         get_range_strlen.
7342 2018-02-20  Martin Sebor  <msebor@redhat.com>
7344         PR middle-end/84095
7345         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
7346         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
7347         (builtin_memref::builtin_memref): Factor out parts into
7348         set_base_and_offset and call it.
7350 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7352         PR middle-end/84406
7353         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
7354         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
7355         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
7356         search at the associated MODE_INT.
7358 2018-02-20  Jeff Law  <law@redhat.com>
7360         PR middle-end/82123
7361         PR tree-optimization/81592
7362         PR middle-end/79257
7363         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
7364         for range data rather than using global data.
7365         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
7366         range data rather than using global data.
7367         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
7368         pass it to children as needed.
7369         (struct directive::fmtresult): Similarly.
7370         (struct directive::set_width): Similarly.
7371         (struct directive::set_precision): Similarly.
7372         (format_integer, format_directive, parse_directive): Similarly.
7373         (format_none): Accept unnamed vr_values parameter.
7374         (format_percent, format_floating, format_character): Similarly.
7375         (format_string, format_plain): Similarly.
7376         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
7377         the EVRP range analyzer for range data rather than using global data.
7378         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
7379         gimple-ssa-evrp-analyze.h
7380         (class sprintf_dom_walker): Add after_dom_children member function.
7381         Add evrp_range_analyzer member.
7382         (sprintf_dom_walker::before_dom_children): Call into the EVRP
7383         range analyzer as needed.
7384         (sprintf_dom_walker::after_dom_children): New member function.
7385         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
7386         if not optimizing.
7387         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
7388         (evrp_range_analyzer::pop_to_marker): Likewise.
7390 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7392         PR tree-optimization/84419
7393         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
7394         with the required type if its current type is compatible but
7395         different.
7397 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
7399         PR middle-end/82004
7400         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
7401         after vectorization.
7403 2018-02-20  Martin Liska  <mliska@suse.cz>
7405         PR driver/83193
7406         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
7407         possible values if we don't have a hint.
7409 2018-02-20  Martin Liska  <mliska@suse.cz>
7411         PR c/84310
7412         PR target/79747
7413         * final.c (shorten_branches): Build align_tab array with one
7414         more element.
7415         * opts.c (finish_options): Add alignment option limit check.
7416         (MAX_CODE_ALIGN): Likewise.
7417         (MAX_CODE_ALIGN_VALUE): Likewise.
7418         * doc/invoke.texi: Document maximum allowed option value for
7419         all -falign-* options.
7421 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
7423         PR target/84146
7424         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
7425         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
7426         * var-tracking.c (emit_note_insn_var_location): Remove all references
7427         to NOTE_INSN_CALL_ARG_LOCATION.
7428         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
7429         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
7430         Use copy_rtx_if_shared.
7431         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
7432         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
7433         (dwarf2out_var_location): Remove handling of
7434         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
7435         on call_insn.
7436         * final.c (final_scan_insn): Remove all references to
7437         NOTE_INSN_CALL_ARG_LOCATION.
7438         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
7439         before dumping final insns.
7440         * except.c (emit_note_eh_region_end): Remove all references to
7441         NOTE_INSN_CALL_ARG_LOCATION.
7442         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
7443         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
7444         * config/arc/arc.c (hwloop_optimize): Likewise.
7445         * config/arm/arm.c (create_fix_barrier): Likewise.
7446         * config/s390/s390.c (s390_chunkify_start): Likewise.
7447         * config/sh/sh.c (find_barrier): Likewise.
7448         * config/i386/i386.c (rest_of_insert_endbranch,
7449         ix86_seh_fixup_eh_fallthru): Likewise.
7450         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
7451         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
7452         * config/frv/frv.c (frv_function_prologue): Likewise.
7453         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
7454         reg note.
7455         (note_outside_basic_block_p): Remove all references to
7456         NOTE_INSN_CALL_ARG_LOCATION.
7457         * gengtype.c (adjust_field_rtx_def): Likewise.
7458         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
7459         Likewise.
7460         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
7461         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
7463         PR c++/84444
7464         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
7465         is ADDR_EXPR.
7467         PR tree-optimization/84452
7468         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
7469         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
7470         is NULL.
7472 2018-02-19  Martin Liska  <mliska@suse.cz>
7474         PR sanitizer/82183
7475         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
7477 2018-02-19  Martin Liska  <mliska@suse.cz>
7478             Richard Sandiford  <richard.sandiford@linaro.org>
7480         PR tree-optimization/82491
7481         * gimple-fold.c (get_base_constructor): Make earlier bail out
7482         to prevent ubsan.
7484 2018-02-19  Carl Love  <cel@us.ibm.com>
7486         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
7487         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
7488         BU_P8V_OVERLOAD_1.
7489         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
7490         P8V_BUILTIN_VEC_NEG.
7492 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
7494         * config/rl78/rl78.md (movdf): New define expand.
7496 2018-02-19  Martin Liska  <mliska@suse.cz>
7498         PR other/80589
7499         * doc/invoke.texi: Fix typo.
7500         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
7502 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
7504         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
7505         handle rs6000_single_float and rs6000_double_float specially for
7506         e500 family CPUs.
7508 2018-02-16  Jeff Law  <law@redhat.com>
7510         * config/rx/rx.c (add_pop_cfi_notes): New function.;
7511         (pop_regs): Use it.
7513 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
7515         PR ipa/84425
7516         * ipa-inline.c (inline_small_functions): Fix a typo.
7518 2018-02-16  Nathan Sidwell  <nathan@acm.org>
7520         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
7522 2018-02-16  Carl Love  <cel@us.ibm.com>
7524         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
7525         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
7526         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
7527         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
7528         expansion to P8V_BUILTIN_VEC_FLOAT2.
7530 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
7532         PR rtl-optimization/70023
7533         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
7534         src_regno into account.
7536 2018-02-16  Carl Love  <cel@us.ibm.com>
7538         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
7539         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
7540         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
7541         * config/rs6000/rs6000.c: Remove case statements for
7542         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
7543         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
7544         and P9V_BUILTIN_VEC_VINSERT4B.
7545         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
7546         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
7547         * config/rs6000/vsx.md:
7548         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
7549         vec_insert4b.
7551 2018-02-16  Carl Love  <cel@us.ibm.com>
7553         * config/rs6000/altivec.h: Add builtin names vec_extract4b
7554         vec_insert4b.
7555         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
7556         definitions.
7557         * config/rs6000/rs6000-c.c: Add the definitions for
7558         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
7559         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
7560         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
7561         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
7562         definition for insert4b and define insn *insert3b_internal.
7563         * doc/extend.texi: Add documentation for vec_extract4b.
7565 2018-02-16  Nathan Sidwell  <nathan@acm.org>
7567         * doc/extend.texi (Backwards Compatibility): Mention friend
7568         injection.  Note for-scope is deprecated.
7569         * doc/invoke.texi (-ffriend-injection): Deprecate.
7571 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
7573         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
7574         that moved to I2, also allow destinations that are a paradoxical
7575         subreg (instead of a normal reg).
7577 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
7579         PR target/83831
7580         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
7581         to QImode.
7583 2018-02-16  Richard Biener  <rguenther@suse.de>
7585         PR tree-optimization/84037
7586         PR tree-optimization/84016
7587         PR target/82862
7588         * config/i386/i386.c (ix86_builtin_vectorization_cost):
7589         Adjust vec_construct for the fact we need additional higher latency
7590         128bit inserts for AVX256 and AVX512 vector builds.
7591         (ix86_add_stmt_cost): Scale vector construction cost for
7592         elementwise loads.
7594 2018-02-16  Richard Biener  <rguenther@suse.de>
7596         PR tree-optimization/84417
7597         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
7598         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
7599         (non_rewritable_lvalue_p): Likewise, use poly-ints.
7601 2018-02-16  Martin Liska  <mliska@suse.cz>
7603         PR sanitizer/84307
7604         * internal-fn.def (ASAN_CHECK): Set proper flags.
7605         (ASAN_MARK): Likewise.
7607 2018-02-16  Julia Koval  <julia.koval@intel.com>
7609         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
7610         from PTA_CANNONLAKE.
7612 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
7614         PR target/84272
7615         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
7616         Use ++iter rather than iter++ for std::list iterators.
7617         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
7618         defer deleting them until all nodes in the forest are processed.  Do
7619         free even leaf nodes.  Change to_process into auto_vec.
7621         PR bootstrap/84405
7622         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
7623         * vec.h (vec_default_construct): Use memset instead of placement new
7624         if BROKEN_VALUE_INITIALIZATION is defined.
7625         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
7626         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
7627         is defined.
7629         PR rtl-optimization/83723
7630         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
7631         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
7632         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
7633         recursive calls.
7634         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
7635         callers.
7636         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
7638 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
7640         PR rtl-optimization/81443
7641         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
7642         from inner REGs to paradoxical SUBREGs.
7644 2018-02-16  Richard Biener  <rguenther@suse.de>
7646         PR tree-optimization/84399
7647         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
7648         For operands we can analyze at their definition make sure we can
7649         analyze them at each use as well.
7651 2018-02-16  Richard Biener  <rguenther@suse.de>
7653         PR tree-optimization/84190
7654         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
7655         volatile accesses if the decl isn't volatile.
7657 2018-02-15  Jason Merrill  <jason@redhat.com>
7659         PR c++/84314 - ICE with templates and fastcall attribute.
7660         * attribs.c (build_type_attribute_qual_variant): Don't clobber
7661         TYPE_CANONICAL on an existing type.
7663 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
7665         PR tree-optimization/84383
7666         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
7667         dstoff nor call operand_equal_p if dstbase is NULL.
7669         PR tree-optimization/84334
7670         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
7671         also a CONSTANT_CLASS_P, punt.
7673 2018-02-14  Jim Wilson  <jimw@sifive.com>
7675         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
7676         first SMALL_OPERAND check.  New local min_second_step.  Move assert
7677         to where locals are set.  Add TARGET_RVC support.
7678         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
7680 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
7682         * doc/invoke.texi: Correct -Wformat-overflow code sample.
7684 2018-02-14  Martin Sebor  <msebor@redhat.com>
7686         PR tree-optimization/83698
7687         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
7688         arrays constrain the offset range to their bounds.
7689         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
7690         (builtin_access::overlap): Avoid setting the size of overlap if it's
7691         already been set.
7692         (maybe_diag_overlap): Also consider arrays when deciding what values
7693         of offsets to include in diagnostics.
7695 2018-02-14  Martin Sebor  <msebor@redhat.com>
7697         PR c/84108
7698         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
7699         that correspond to the kind of a declaration.
7701 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
7703         PR target/83984
7704         * config/pa/pa.md: Load address of PIC label using the linkage table
7705         if the label is nonlocal.
7707 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
7709         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
7710         warning message if user requests -maltivec=be.
7711         * doc/invoke.texi: Document deprecation of -maltivec=be.
7713 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
7715         PR target/84220
7716         * config/rs6000/rs6000-c.c: Update definitions for
7717         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
7718         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
7720 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
7722         PR target/84239
7723         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
7724         add _get_ssp intrinsics. Remove argument from
7725         __builtin_ia32_rdssp[d|q].
7726         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
7727         * config/i386/i386-builtin.def: Remove argument from
7728         __builtin_ia32_rdssp[d|q].
7729         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
7730         ix86_expand_special_args_builtin for _rdssp[d|q].
7731         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
7732         Clear register before usage.
7733         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
7734         Add documentation for new _get_ssp and _inc_ssp intrinsics.
7736 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
7738         PR tree-optimization/84357
7739         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
7740         operand 1 of an ARRAY_REF too.
7742 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
7744         PR target/83831
7745         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
7746         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
7747         declarations.
7748         (set_of_reg): New struct.
7749         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
7750         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
7751         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
7752         functions.
7753         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
7754         Split into bitclr, bitset, bitinvert patterns if appropriate.
7755         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
7756         use rx_fuse_in_memory_bitop.
7757         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
7758         to named insn, correct maximum insn length.
7760 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
7762         PR target/79242
7763         * machmode.def: Define a complex mode for PARTIAL_INT.
7764         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
7765         MODE_PARTIAL_INT.
7766         * doc/rtl.texi: Document CSPImode.
7767         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
7768         handling.
7769         (msp430_hard_regno_nregs_with_padding): Likewise.
7771 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
7773         PR target/84279
7774         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
7776 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
7778         PR rtl-optimization/84169
7779         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
7780         we generated a parallel as new i3 and we split that to new i2 and i3
7781         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
7782         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
7783         those to i2, not i1.  Partially rewrite this scan code.
7785 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
7787         PR c/82210
7788         * stor-layout.c (place_field): For variable length fields, adjust
7789         offset_align afterwards not just based on the field's alignment,
7790         but also on the size.
7792         PR middle-end/84309
7793         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
7794         of exps and logs in the use_exp2 case.
7796 2018-02-13  Jeff Law  <law@redhat.com>
7798         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
7799         entry for "vector".
7801         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
7802         ARGS as unused.
7804 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
7806         PR debug/84342
7807         PR debug/84319
7808         * common.opt (gas-loc-support, gas-locview-support): New.
7809         (ginline-points, ginternal-reset-location-views): New.
7810         * doc/invoke.texi: Document them.  Use @itemx where intended.
7811         (gvariable-location-views): Adjust.
7812         * target.def (reset_location_view): New.
7813         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
7814         (TARGET_RESET_LOCATION_VIEW): New.
7815         * doc/tm.texi: Rebuilt.
7816         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
7817         (dwarf2out_default_as_locview_support): New.
7818         (output_asm_line_debug_info): Use option variables.
7819         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
7820         (output_loc_list): Likewise.
7821         (add_high_low_attributes): Check option variables.
7822         Don't output entry view attribute in strict mode.
7823         (gen_inlined_subroutine_die): Check option variables.
7824         (dwarf2out_inline_entry): Likewise.
7825         (init_sections_and_labels): Likewise.
7826         (dwarf2out_early_finish): Likewise.
7827         (maybe_reset_location_view): New, from...
7828         (dwarf2out_var_location): ... here.  Call it.
7829         * debug.h (dwarf2out_default_as_loc_support): Declare.
7830         (dwarf2out_default_as_locview_support): Declare.
7831         * hooks.c (hook_int_rtx_insn_0): New.
7832         * hooks.h (hook_int_rtx_insn_0): Declare.
7833         * toplev.c (process_options): Take -gas-loc-support and
7834         -gas-locview-support from dwarf2out.  Enable
7835         -gvariable-location-views by default only with locview
7836         assembler support.  Enable -ginternal-reset-location-views by
7837         default only if the target defines the corresponding hook.
7838         Enable -ginline-points by default if location views are
7839         enabled; force it disabled if statement frontiers are
7840         disabled.
7841         * tree-inline.c (expand_call_inline): Check option variables.
7842         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
7844 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
7846         PR tree-optimization/84321
7847         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
7848         handling.  Also check whether the anti-range contains any values
7849         that satisfy the mask; switch to a VR_RANGE if not.
7851 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
7853         PR sanitizer/84340
7854         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
7856 2018-02-13  Martin Jambor  <mjambor@suse.cz>
7858         PR c++/83990
7859         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
7860         of call statements, also set location of a load to a temporary.
7862 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
7864         * config/rl78/rl78.c (add_vector_labels): New function.
7865         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
7866         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
7867         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
7868         which checks that no arguments are passed.
7869         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
7870         * doc/extend.texi: Documentation for the new attribute.
7872 2018-02-13  Andreas Schwab  <schwab@suse.de>
7874         * config/riscv/linux.h (CPP_SPEC): Define.
7876 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
7878         PR target/84335
7879         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
7880         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
7881         OPTION_MASK_ISA_AES as first argument to def_builtin_const
7882         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
7883         instead of OPTION_MASK_ISA_PCLMUL as first argument to
7884         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
7885         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
7886         temporarily for AES and PCLMUL builtins.
7888         PR tree-optimization/84339
7889         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
7890         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
7891         Formatting fixes.
7893         PR middle-end/84309
7894         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
7895         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
7896         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
7897         inline function.
7898         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
7899         inline function.
7900         * omp-simd-clone.h: New file.
7901         * omp-simd-clone.c: Include omp-simd-clone.h.
7902         (expand_simd_clones): No longer static.
7903         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
7904         cgraph.h and omp-simd-clone.h.
7905         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
7906         (vect_recog_widen_shift_pattern): Formatting fix.
7907         (vect_pattern_recog_1): Don't check optab for calls.
7909         PR target/84336
7910         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
7911         operands[2] into a REG before using gen_lowpart on it.
7913 2018-02-12  Jeff Law  <law@redhat.com>
7915         PR target/83760
7916         * config/sh/sh.c (find_barrier): Consider a sibling call
7917         a barrier as well.
7919         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
7920         successfully back substituting a reg.
7922 2018-02-12  Richard Biener  <rguenther@suse.de>
7924         PR tree-optimization/84037
7925         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
7926         parameter, move visited init to caller.
7927         (vect_slp_analyze_operations): Separate cost from validity
7928         check, initialize visited once for all instances.
7929         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
7930         for all instances.
7931         * tree-vect-stmts.c (vect_model_simple_cost): Make early
7932         out an assert.
7933         (vect_model_promotion_demotion_cost): Likewise.
7934         (vectorizable_bswap): Guard cost modeling with !slp_node
7935         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
7936         SLP stmts.
7937         (vectorizable_call): Likewise.
7938         (vectorizable_conversion): Likewise.
7939         (vectorizable_assignment): Likewise.
7940         (vectorizable_shift): Likewise.
7941         (vectorizable_operation): Likewise.
7942         (vectorizable_store): Likewise.
7943         (vectorizable_load): Likewise.
7944         (vectorizable_condition): Likewise.
7945         (vectorizable_comparison): Likewise.
7947 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
7949         PR sanitizer/84307
7950         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
7951         (ASAN_MARK): Fix fnspec to account for return value, change pointer
7952         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
7954 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
7956         PR middle-end/83665
7957         * params.def (inline-min-speedup): Increase from 8 to 15.
7958         (max-inline-insns-auto): Decrease from 40 to 30.
7959         * ipa-split.c (consider_split): Add some buffer for function to
7960         be considered inlining candidate.
7961         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
7962         default values.
7964 2018-02-12  Richard Biener  <rguenther@suse.de>
7966         PR tree-optimization/84037
7967         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
7968         matched stmts if we cannot swap the non-matched ones.
7970 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
7972         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
7973         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
7974         _mm_maskz_scalef_round_ss): New intrinsics.
7975         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
7976         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
7977         __builtin_ia32_scalefss_round): Remove.
7978         (__builtin_ia32_scalefsd_mask_round,
7979         __builtin_ia32_scalefss_mask_round): New intrinsics.
7980         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
7981         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
7982         ((match_operand:VF_128 2 "<round_nimm_predicate>"
7983         "<round_constraint>")): Changed to ...
7984         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
7985         "<round_scalar_constraint>")): ... this.
7986         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
7987         %0, %1, %2<round_op3>}"): Changed to ...
7988         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
7989         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
7990         %2<round_scalar_mask_op3>}"): ... this.
7991         * config/i386/subst.md (round_scalar_nimm_predicate): New.
7993 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
7995         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
7996         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
7997         (_mm_maskz_sqrt_round_ss): New intrinsics.
7998         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
7999         (__builtin_ia32_sqrtsd_mask_round)
8000         (__builtin_ia32_sqrtss_mask_round): New builtins.
8001         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
8002         (__builtin_ia32_sqrtss_round): Remove.
8003         (__builtin_ia32_sqrtsd_mask_round)
8004         (__builtin_ia32_sqrtss_mask_round): New builtins.
8005         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
8006         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
8007         ((match_operand:VF_128 1 "vector_operand"
8008         "xBm,<round_constraint>")): Changed to ...
8009         ((match_operand:VF_128 1 "vector_operand"
8010         "xBm,<round_scalar_constraint>")): ... this.
8011         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
8012         %0, %2, %<iptr>1<round_op3>}): Changed to ...
8013         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
8014         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
8015         %<iptr>1<round_scalar_mask_op3>}): ... this.
8016         ((set_attr "prefix" "<round_prefix>")): Changed to ...
8017         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
8019 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
8021         PR target/84266
8022         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
8023         Cast vec_cmpeq result to correct type.
8024         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
8025         Cast vec_cmpgt result to correct type.
8027 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
8029         * final.c (final_scan_insn_1): Renamed from...
8030         (final_scan_insn): ... this.  New wrapper, to recover
8031         seen from the outermost call in recursive ones.
8032         * config/sparc/sparc.c (output_return): Drop seen from call.
8033         (output_sibcall): Likewise.
8034         * config/visium/visium.c (output_branch): Likewise.
8036 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
8038         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
8039         function label.
8041 2018-02-10  Alan Modra  <amodra@gmail.com>
8043         PR target/84300
8044         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
8045         Specify LR as an input.
8047 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
8049         PR sanitizer/83987
8050         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
8051         remove_member_access_dummy_vars): New functions.
8052         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
8053         lower_omp_1, execute_lower_omp): Use them.
8055         PR rtl-optimization/84308
8056         * shrink-wrap.c (spread_components): Release todo vector.
8058 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
8060         PR rtl-optimization/57193
8061         * ira-color.c (struct allocno_color_data): Add member
8062         conflict_allocno_hard_prefs.
8063         (update_conflict_allocno_hard_prefs): New.
8064         (bucket_allocno_compare_func): Add a preference based on
8065         conflict_allocno_hard_prefs.
8066         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
8067         (color_allocnos): Remove a dead code.  Initiate
8068         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
8070 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8072         PR target/84226
8073         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
8074         constraint from =wa to wa.  Avoid a subreg on the output operand,
8075         instead use a pseudo and subreg it in a move.
8076         (p9_xxbrd_<mode>): Changed to ...
8077         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
8078         (p9_xxbrd_v2df): New expander.
8079         (p9_xxbrw_<mode>): Changed to ...
8080         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
8081         (p9_xxbrw_v4sf): New expander.
8083 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8085         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
8087 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
8089         PR target/83926
8090         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
8091         multiply in 32-bit mode.
8092         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
8093         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
8094         mode.
8096 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8098         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
8099         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
8100         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
8101         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
8103 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
8105         PR lto/84213
8106         * dwarf2out.c (is_trivial_indirect_ref): New function.
8107         (dwarf2out_late_global_decl): Do not generate a location
8108         attribute for variables that have a non-trivial DECL_VALUE_EXPR
8109         and that are not defined in the current unit.
8111 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8113         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
8114         instead of a libcall for UNORDERED.
8116 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
8118         PR target/82641
8119         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
8120         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
8122 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8124         PR target/PR84295
8125         * config/s390/s390.c (s390_set_current_function): Invoke
8126         s390_indirect_branch_settings also if fndecl didn't change.
8128 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8130         * config/rs6000/rs6000.md (blockage): Set length to zero.
8132 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8134         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
8136 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8138         PR sanitizer/84285
8139         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
8140         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
8141         -static-lib*san.
8143         PR debug/84252
8144         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
8145         PARALLEL incoming that failed vt_get_decl_and_offset check.
8147         PR middle-end/84237
8148         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
8149         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
8150         TREE_READONLY bit.
8151         (get_variable_section): For decls in named .bss* sections pass true as
8152         second argument to bss_initializer_p.
8154 2018-02-09  Marek Polacek  <polacek@redhat.com>
8155             Jakub Jelinek  <jakub@redhat.com>
8157         PR c++/83659
8158         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
8159         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
8160         Sync some changes from cxx_fold_indirect_ref.
8162 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8164         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
8165         markers.
8166         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
8167         (BLOCK_INLINE_ENTRY_LABEL): New.
8168         (dwarf2out_var_location): Disregard inline entry markers.
8169         (inline_entry_data): New struct.
8170         (inline_entry_data_hasher): New hashtable type.
8171         (inline_entry_data_hasher::hash): New.
8172         (inline_entry_data_hasher::equal): New.
8173         (inline_entry_data_table): New variable.
8174         (add_high_low_attributes): Add DW_AT_entry_pc and
8175         DW_AT_GNU_entry_view attributes if a pending entry is found
8176         in inline_entry_data_table.  Add old entry_pc attribute only
8177         if debug nonbinding markers are disabled.
8178         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
8179         markers are enabled.
8180         (block_within_block_p, dwarf2out_inline_entry): New.
8181         (dwarf2out_finish): Check that no entries remained in
8182         inline_entry_data_table.
8183         * final.c (reemit_insn_block_notes): Handle inline entry notes.
8184         (final_scan_insn, notice_source_line): Likewise.
8185         (rest_of_clean_state): Skip inline entry markers.
8186         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
8187         markers.
8188         * gimple.c (gimple_build_debug_inline_entry): New.
8189         * gimple.h (enum gimple_debug_subcode): Add
8190         GIMPLE_DEBUG_INLINE_ENTRY.
8191         (gimple_build_debug_inline_entry): Declare.
8192         (gimple_debug_inline_entry_p): New.
8193         (gimple_debug_nonbind_marker_p): Adjust.
8194         * insn-notes.def (INLINE_ENTRY): New.
8195         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
8196         inline entry marker notes.
8197         (print_insn): Likewise.
8198         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
8199         (INSN_DEBUG_MARKER_KIND): Likewise.
8200         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
8201         * tree-inline.c (expand_call_inline): Build and insert
8202         debug_inline_entry stmt.
8203         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
8204         inline entry blocks early, if nonbind markers are enabled.
8205         (dump_scope_block): Dump fragment info.
8206         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
8207         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
8208         (gimple_build_debug_inline_entry): New.
8209         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
8210         Enable/disable inline entry points too.
8211         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
8212         (DEBUG_INSN): Describe inline entry markers.
8214         * common.opt (gvariable-location-views): New.
8215         (gvariable-location-views=incompat5): New.
8216         * config.in: Rebuilt.
8217         * configure: Rebuilt.
8218         * configure.ac: Test assembler for view support.
8219         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
8220         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
8221         * dwarf2out.c (var_loc_view): New typedef.
8222         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
8223         (dwarf2out_locviews_in_attribute): New.
8224         (dwarf2out_locviews_in_loclist): New.
8225         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
8226         (enum dw_line_info_opcode): Add LI_adv_address.
8227         (struct dw_line_info_table): Add view.
8228         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
8229         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
8230         (zero_view_p): New variable.
8231         (ZERO_VIEW_P): New macro.
8232         (output_asm_line_debug_info): New.
8233         (struct var_loc_node): Add view.
8234         (add_AT_view_list, AT_loc_list): New.
8235         (add_var_loc_to_decl): Add view param.  Test it against last.
8236         (new_loc_list): Add view params.  Record them.
8237         (AT_loc_list_ptr): Handle loc and view lists.
8238         (view_list_to_loc_list_val_node): New.
8239         (print_dw_val): Handle dw_val_class_view_list.
8240         (size_of_die): Likewise.
8241         (value_format): Likewise.
8242         (loc_list_has_views): New.
8243         (gen_llsym): Set vl_symbol too.
8244         (maybe_gen_llsym, skip_loc_list_entry): New.
8245         (dwarf2out_maybe_output_loclist_view_pair): New.
8246         (output_loc_list): Output view list or entries too.
8247         (output_view_list_offset): New.
8248         (output_die): Handle dw_val_class_view_list.
8249         (output_dwarf_version): New.
8250         (output_compilation_unit_header): Use it.
8251         (output_skeleton_debug_sections): Likewise.
8252         (output_rnglists, output_line_info): Likewise.
8253         (output_pubnames, output_aranges): Update version comments.
8254         (output_one_line_info_table): Output view numbers in asm comments.
8255         (dw_loc_list): Determine current endview, pass it to new_loc_list.
8256         Call maybe_gen_llsym.
8257         (loc_list_from_tree_1): Adjust.
8258         (add_AT_location_description): Create view list attribute if
8259         needed, check it's absent otherwise.
8260         (convert_cfa_to_fb_loc_list): Adjust.
8261         (maybe_emit_file): Call output_asm_line_debug_info for test.
8262         (dwarf2out_var_location): Reset views as needed.  Precompute
8263         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
8264         attribute.  Set view.
8265         (new_line_info_table): Reset next view.
8266         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
8267         (dwarf2out_source_line): Likewise.  Output view resets and labels to
8268         the assembler, or select appropriate line info opcodes.
8269         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
8270         (optimize_string_length): Catch it.  Adjust.
8271         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
8272         dw_val_class_view_list, and remove it if no longer needed.
8273         (hash_loc_list): Hash view numbers.
8274         (loc_list_hasher::equal): Compare them.
8275         (optimize_location_lists): Check whether a view list symbol is
8276         needed, and whether the locview attribute is present, and
8277         whether they match.  Remove the locview attribute if no longer
8278         needed.
8279         (index_location_lists): Call skip_loc_list_entry for test.
8280         (dwarf2out_finish): Call output_asm_line_debug_info for test.
8281         Use output_dwarf_version.
8282         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
8283         (struct dw_val_node): Add val_view_list.
8284         * final.c (SEEN_NEXT_VIEW): New.
8285         (set_next_view_needed): New.
8286         (clear_next_view_needed): New.
8287         (maybe_output_next_view): New.
8288         (final_start_function): Rename to...
8289         (final_start_function_1): ... this.  Take pointer to FIRST,
8290         add SEEN parameter.  Emit param bindings in the initial view.
8291         (final_start_function): Reintroduce SEEN-less interface.
8292         (final): Rename to...
8293         (final_1): ... this.  Take SEEN parameter.  Output final pending
8294         next view at the end.
8295         (final): Reintroduce seen-less interface.
8296         (final_scan_insn): Output pending next view before switching
8297         sections or ending a block.  Mark the next view as needed when
8298         outputting variable locations.  Notify debug backend of section
8299         changes, and of location view changes.
8300         (rest_of_handle_final): Adjust.
8301         * toplev.c (process_options): Autodetect value for debug variable
8302         location views option.  Warn on incompat5 without -gdwarf-5.
8303         * doc/invoke.texi (gvariable-location-views): New.
8304         (gvariable-location-views=incompat5): New.
8305         (gno-variable-location-views): New.
8307 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
8309         PR tree-optimization/84136
8310         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
8311         that the result of find_edge is non-NULL.
8313 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8315         PR target/83008
8316         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
8317         storing integer register in SImode.  Fix cost of 256 and 512
8318         byte aligned SSE register store.
8320 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8322         * config/i386/i386.c (ix86_multiplication_cost): Fix
8323         multiplication cost for TARGET_AVX512DQ.
8325 2018-02-08  Marek Polacek  <polacek@redhat.com>
8327         PR tree-optimization/84238
8328         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
8329         get_range_strlen.
8331 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8333         PR tree-optimization/84265
8334         * tree-vect-stmts.c (vectorizable_store): Don't treat
8335         VMAT_CONTIGUOUS accesses as grouped.
8336         (vectorizable_load): Likewise.
8338 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8340         PR tree-optimization/81635
8341         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
8342         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
8343         (test_round_for_mask): New functions.
8344         (wide_int_cc_tests): Call test_round_for_mask.
8345         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
8346         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
8347         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
8348         range returned by get_range_info.
8350 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
8352         PR ipa/81360
8353         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
8354         * symtab.c: Include builtins.h
8355         (symtab_node::output_to_lto_symbol_table_p): Move here
8356         from lto-streamer-out.c:output_symbol_p.
8357         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
8358         (output_symbol_p): Move all logic to symtab.c
8359         (produce_symtab): Update.
8361 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8363         * config/s390/s390-opts.h (enum indirect_branch): Define.
8364         * config/s390/s390-protos.h (s390_return_addr_from_memory)
8365         (s390_indirect_branch_via_thunk)
8366         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
8367         (enum s390_indirect_branch_type): Define.
8368         * config/s390/s390.c (struct s390_frame_layout, struct
8369         machine_function): Remove.
8370         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
8371         (indirect_branch_table_label_no, indirect_branch_table_name):
8372         Define variables.
8373         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
8374         (enum s390_indirect_branch_option): Define.
8375         (s390_return_addr_from_memory): New function.
8376         (s390_handle_string_attribute): New function.
8377         (s390_attribute_table): Add new attribute handler.
8378         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
8379         (s390_indirect_branch_via_thunk): New function.
8380         (s390_indirect_branch_via_inline_thunk): New function.
8381         (s390_function_ok_for_sibcall): When jumping via thunk disallow
8382         sibling call optimization for non z10 compiles.
8383         (s390_emit_call): Force indirect branch target to be a single
8384         register.  Add r1 clobber for non-z10 compiles.
8385         (s390_emit_epilogue): Emit return jump via return_use expander.
8386         (s390_reorg): Handle JUMP_INSNs as execute targets.
8387         (s390_option_override_internal): Perform validity checks for the
8388         new command line options.
8389         (s390_indirect_branch_attrvalue): New function.
8390         (s390_indirect_branch_settings): New function.
8391         (s390_set_current_function): Invoke s390_indirect_branch_settings.
8392         (s390_output_indirect_thunk_function):  New function.
8393         (s390_code_end): Implement target hook.
8394         (s390_case_values_threshold): Implement target hook.
8395         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
8396         macros.
8397         * config/s390/s390.h (struct s390_frame_layout)
8398         (struct machine_function): Move here from s390.c.
8399         (TARGET_INDIRECT_BRANCH_NOBP_RET)
8400         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
8401         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
8402         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
8403         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
8404         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
8405         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
8406         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
8407         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
8408         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
8409         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
8410         (mnemonic attribute): Add values which aren't recognized
8411         automatically.
8412         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
8413         pattern for branch conversion.  Fix mnemonic attribute.
8414         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
8415         indirect branch via thunk if requested.
8416         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
8417         ("*indirect_jump"): Disable for branch conversion using out of
8418         line thunks.
8419         ("indirect_jump_via_thunk<mode>_z10")
8420         ("indirect_jump_via_thunk<mode>")
8421         ("indirect_jump_via_inlinethunk<mode>_z10")
8422         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
8423         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
8424         ("casesi_jump_via_inlinethunk<mode>_z10")
8425         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
8426         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
8427         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
8428         ("*indirect2_jump"): Disable for branch conversion.
8429         ("casesi_jump"): Turn into expander and expand patterns for branch
8430         conversion.
8431         ("return_use"): New expander.
8432         ("*return"): Emit return via thunk and rename it to ...
8433         ("*return<mode>"): ... this one.
8434         * config/s390/s390.opt: Add new options and and enum for the
8435         option values.
8437 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8439         * lra-constraints.c (match_reload): Unconditionally use
8440         gen_lowpart_SUBREG, rather than selecting between that
8441         and equivalent gen_rtx_SUBREG code.
8443 2018-02-08  Richard Biener  <rguenther@suse.de>
8445         PR tree-optimization/84233
8446         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
8447         changed flag instead of boguously re-using phi_inserted.
8449 2018-02-08  Martin Jambor  <mjambor@suse.cz>
8451         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
8452         static local variables.
8454 2018-02-08  Richard Biener  <rguenther@suse.de>
8456         PR tree-optimization/84278
8457         * tree-vect-stmts.c (vectorizable_store): When looking for
8458         smaller vector types to perform grouped strided loads/stores
8459         make sure the mode is supported by the target.
8460         (vectorizable_load): Likewise.
8462 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8464         * config/aarch64/aarch64.c (aarch64_components_for_bb):
8465         Increase LDP/STP opportunities by adding adjacent callee-saves.
8467 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8469         PR rtl-optimization/84068
8470         PR rtl-optimization/83459
8471         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
8473 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
8475         PR tree-optimization/84224
8476         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
8477         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
8478         non-zero arguments.
8480 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
8482         PR target/84113
8483         * config/rs6000/altivec.md (*restore_world): Remove LR use.
8484         * config/rs6000/predicates.md (restore_world_operation): Adjust op
8485         count, remove one USE.
8487 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
8489         * doc/install.texi (Configuration): Document the
8490         --with-long-double-format={ibm,ieee} PowerPC configuration
8491         options.
8493         PR target/84154
8494         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
8495         Convert from define_expand to be define_insn_and_split.  Rework
8496         float/double/_Float128 conversions to QI/HI/SImode to work with
8497         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
8498         conversions to QI/HImode types did a store and then a load to
8499         truncate the value.  For conversions to VSX registers, don't split
8500         the insn, instead emit the code directly.  Use the code iterator
8501         any_fix to combine signed and unsigned conversions.
8502         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
8503         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
8504         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8505         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
8506         (fix_<mode>di2_hw): Likewise.
8507         (fixuns_<mode>di2_hw): Likewise.
8508         (fix_<mode>si2_hw): Likewise.
8509         (fixuns_<mode>si2_hw): Likewise.
8510         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
8511         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8512         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
8513         fix<uns>_trunc<SFDF:mode>si2_p8.
8514         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
8515         used.
8516         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
8517         (fix<uns>_<mode>_mem): Likewise.
8518         (fctiw<u>z_<mode>_mem): Likewise.
8519         (fix<uns>_<mode>_mem): Likewise.
8520         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
8521         the register allocator from doing a direct move to the GPRs to do
8522         a store, and instead use the ISA 3.0 store byte/half-word from
8523         vector register instruction.  For IEEE 128-bit floating point,
8524         also optimize stores of 32-bit ints.
8525         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
8527 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
8529         * genextract.c (push_pathstr_operand): New function to support
8530         [a-zA-Z].
8531         (walk_rtx): Call push_pathstr_operand.
8532         (print_path): Support [a-zA-Z].
8534 2018-02-07  Richard Biener  <rguenther@suse.de>
8536         PR tree-optimization/84037
8537         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
8538         (cse_and_gimplify_to_preheader): Declare.
8539         (vect_get_place_in_interleaving_chain): Likewise.
8540         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
8541         ivexpr_map.
8542         (_loop_vec_info::~_loop_vec_info): Delete it.
8543         (cse_and_gimplify_to_preheader): New function.
8544         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
8545         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
8546         (vectorizable_load): Likewise.  For grouped stores always base
8547         the IV on the first element.
8548         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
8549         condition before gimplifying.
8551 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
8553         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
8554         *DIV_EXPR and *MOD_EXPR.
8556 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
8558         PR target/84248
8559         * config/i386/i386.c (ix86_option_override_internal): Mask out
8560         the CF_SET bit when checking -fcf-protection.
8562 2018-02-07  Tom de Vries  <tom@codesourcery.com>
8564         PR libgomp/84217
8565         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
8566         enough.
8568 2018-02-07  Richard Biener  <rguenther@suse.de>
8570         PR tree-optimization/84204
8571         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
8572         this place.
8574         PR tree-optimization/84205
8575         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
8576         special-case isl_ast_op_zdiv_r.
8578         PR tree-optimization/84223
8579         * graphite-scop-detection.c (gather_bbs::before_dom_children):
8580         Only add conditions from within the region.
8581         (gather_bbs::after_dom_children): Adjust.
8583 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
8585         PR target/84209
8586         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
8587         * config/avr/avr.md: Only post-reload split REG-REG moves if
8588         either register is GENERAL_REG_P.
8590 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
8592         PR tree-optimization/84235
8593         * tree-ssa-scopedtables.c
8594         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
8595         if the subtraction is performed in floating point type where NaNs are
8596         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
8597         build 1.  Formatting fix.
8599 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
8601         PR target/84146
8602         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
8603         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
8604         and skip it regardless of bb boundaries.  Use CALL_P macro,
8605         don't test INSN_P (insn) together with CALL_P or JUMP_P check
8606         unnecessarily, formatting fix.
8608 2018-02-06  Michael Collison  <michael.collison@arm.com>
8610         * config/arm/thumb2.md:
8611         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
8612         (*thumb_mov_notscc): Ditto.
8614 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
8616         PR target/84154
8617         * config/rs6000/rs6000.md (su code attribute): Use "u" for
8618         unsigned_fix, not "s".
8620 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8622         * configure.ac (gcc_fn_eh_frame_ro): New function.
8623         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
8624         correct .eh_frame permissions.
8625         * configure: Regenerate.
8627 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
8629         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
8630         irrelevant options.
8632 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8634         * config/rs6000/rs6000.c (rs6000_option_override_internal):
8635         Display warning message for -mno-speculate-indirect-jumps.
8637 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
8639         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
8640         Undocumented.
8641         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
8643 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
8645         PR tree-optimization/84225
8646         * tree-eh.c (find_trapping_overflow): Only call
8647         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
8649 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
8651         PR target/84145
8652         * config/i386/i386.c: Reimplement the check of possible options
8653         -mibt/-mshstk conbination. Change error messages.
8654         * doc/invoke.texi: Fix a typo: remove extra '='.
8656 2018-02-06  Marek Polacek  <polacek@redhat.com>
8658         PR tree-optimization/84228
8659         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
8661 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
8663         PR target/82641
8664         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
8665         emitted arch directives.
8666         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
8667         __ARM_FEATURE_COPROC before changing architectures.
8669 2018-02-06  Richard Biener  <rguenther@suse.de>
8671         * config/i386/i386.c (print_reg): Fix typo.
8672         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
8674 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
8676         * configure: Regenerate.
8678 2018-02-05  Martin Sebor  <msebor@redhat.com>
8680         PR tree-optimization/83369
8681         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
8682         inlining context.
8684 2018-02-05  Martin Liska  <mliska@suse.cz>
8686         * doc/invoke.texi: Cherry-pick upstream r323995.
8688 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
8690         * ira.c (ira_init_register_move_cost): Adjust comment.
8692 2018-02-05  Martin Liska  <mliska@suse.cz>
8694         PR gcov-profile/84137
8695         * doc/gcov.texi: Fix typo in documentation.
8697 2018-02-05  Martin Liska  <mliska@suse.cz>
8699         PR gcov-profile/83879
8700         * doc/gcov.texi: Document necessity of --dynamic-list-data when
8701         using dlopen functionality.
8703 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
8705         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
8706         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
8707         _mm_maskz_range_ss, _mm_mask_range_round_ss,
8708         _mm_maskz_range_round_ss): New intrinsics.
8709         (__builtin_ia32_rangesd128_round)
8710         (__builtin_ia32_rangess128_round): Remove.
8711         (__builtin_ia32_rangesd128_mask_round,
8712         __builtin_ia32_rangess128_mask_round): New builtins.
8713         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
8714         __builtin_ia32_rangess128_round): Remove.
8715         (__builtin_ia32_rangesd128_mask_round,
8716         __builtin_ia32_rangess128_mask_round): New builtins.
8717         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
8718         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
8719         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
8720         "<round_saeonly_constraint>")): Changed to ...
8721         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
8722         "<round_saeonly_scalar_constraint>")): ... this.
8723         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
8724         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
8725         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
8726         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
8727         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
8729 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
8731         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
8732         options.
8733         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
8734         Remove all values except native, 8540 and 8548.
8736 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
8738         * config/i386/i386.c (ix86_output_function_return): Pass
8739         INVALID_REGNUM, instead of -1, as invalid register number to
8740         indirect_thunk_name and output_indirect_thunk.
8742 2018-02-02  Julia Koval  <julia.koval@intel.com>
8744         * config.gcc: Add -march=icelake.
8745         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
8746         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
8747         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
8748         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
8749         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
8750         (processor_target_table): Add icelake.
8751         (ix86_option_override_internal): Handle new PTAs.
8752         (get_builtin_code_for_version): Handle icelake.
8753         (M_INTEL_COREI7_ICELAKE): New.
8754         (fold_builtin_cpu): Handle icelake.
8755         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
8756         * doc/invoke.texi: Add -march=icelake.
8758 2018-02-02  Julia Koval  <julia.koval@intel.com>
8760         * config/i386/i386.c (ix86_option_override_internal): Change flags type
8761         to wide_int_bitmask.
8762         * wide-int-bitmask.h: New.
8764 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
8766         PR target/84066
8767         * config/i386/i386.md: Replace Pmode with word_mode in
8768         builtin_setjmp_setup and builtin_longjmp to support x32.
8770 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
8772         PR target/56010
8773         PR target/83743
8774         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
8775         #include "opts.h".
8776         (rs6000_supported_cpu_names): New static variable.
8777         (linux_cpu_translation_table): Likewise.
8778         (elf_platform) <cpu>: Define new static variable and use it.
8779         Translate kernel AT_PLATFORM name to canonical name if needed.
8780         Error if platform name is unknown.
8782 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
8784         PR target/84089
8785         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
8787 2018-02-01  Jeff Law  <law@redhat.com>
8789         PR target/84128
8790         * config/i386/i386.c (release_scratch_register_on_entry): Add new
8791         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
8792         the scratch if RELEASE_VIA_POP is false.
8793         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
8794         If we have to save a temporary register, decrement SIZE appropriately.
8795         Pass new arguments to release_scratch_register_on_entry.
8796         (ix86_adjust_stack_and_probe): Likewise.
8797         (ix86_emit_probe_stack_range): Pass new arguments to
8798         release_scratch_register_on_entry.
8800 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
8802         PR rtl-optimization/84157
8803         * combine.c (change_zero_ext): Use REG_P predicate in
8804         front of HARD_REGISTER_P predicate.
8806 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
8808         * config/avr/avr.c (avr_option_override): Move disabling of
8809         -fdelete-null-pointer-checks to...
8810         * common/config/avr/avr-common.c (avr_option_optimization_table):
8811         ...here.
8813 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8815         PR tree-optimization/81635
8816         * tree-data-ref.c (split_constant_offset_1): For types that
8817         wrap on overflow, try to use range info to prove that wrapping
8818         cannot occur.
8820 2018-02-01  Renlin Li  <renlin.li@arm.com>
8822         PR target/83370
8823         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
8824         TAILCALL_ADDR_REGS.
8825         (aarch64_register_move_cost): Likewise.
8826         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
8827         TAILCALL_ADDR_REGS.
8828         (REG_CLASS_NAMES): Likewise.
8829         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
8830         TAILCALL_ADDR_REGS. Remove IP registers.
8831         * config/aarch64/aarch64.md (Ucs): Update register constraint.
8833 2018-02-01  Richard Biener  <rguenther@suse.de>
8835         * domwalk.h (dom_walker::dom_walker): Add additional constructor
8836         for specifying RPO order and allow NULL for that.
8837         * domwalk.c (dom_walker::dom_walker): Likewise.
8838         (dom_walker::walk): Handle NULL RPO order.
8839         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
8840         in RPO order.
8841         (rewrite_update_dom_walker): Likewise.
8842         (mark_def_dom_walker): Likewise.
8844 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8846         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
8847         (aarch64_maybe_expand_sve_subreg_move): Declare.
8848         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
8849         * config/aarch64/predicates.md (aarch64_any_register_operand): New
8850         predicate.
8851         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
8852         that are semantically a reverse operation.
8853         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
8854         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
8855         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
8856         functions.
8857         (aarch64_can_change_mode_class): For big-endian, forbid changes
8858         between two SVE modes if they have different element sizes.
8860 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8862         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
8863         the TImode handling for big-endian targets.
8865 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8867         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
8868         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
8869         not just bytes.
8870         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
8871         Remove BSWAP handing for big-endian targets and use the form of
8872         LD1RQ appropariate for the mode.
8874 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8876         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
8877         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
8878         duplicated element.
8880 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8882         PR tearget/83845
8883         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
8884         check for operands that need to go through aarch64_sve_reload_be.
8886 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
8888         PR tree-optimization/81661
8889         PR tree-optimization/84117
8890         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
8891         * tree-eh.c: Include gimplify.h.
8892         (find_trapping_overflow, replace_trapping_overflow,
8893         rewrite_to_non_trapping_overflow): New functions.
8894         * tree-vect-loop.c: Include tree-eh.h.
8895         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
8896         * tree-data-ref.c: Include tree-eh.h.
8897         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
8899 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
8901         PR rtl-optimization/84123
8902         * combine.c (change_zero_ext): Check if hard register satisfies
8903         can_change_dest_mode before calling gen_lowpart_SUBREG.
8905 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
8907         PR target/82444
8908         * ira.c (ira_init_register_move_cost): Remove assert.
8910 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
8912         PR rtl-optimization/84071
8913         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
8914         * doc/tm.texi: Regenerate.
8916 2018-01-31  Richard Biener  <rguenther@suse.de>
8918         PR tree-optimization/84132
8919         * tree-data-ref.c (analyze_miv_subscript): Properly
8920         check whether evolution_function_is_affine_multivariate_p
8921         before calling gcd_of_steps_may_divide_p.
8923 2018-01-31  Julia Koval  <julia.koval@intel.com>
8925         PR target/83618
8926         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
8927         * config/i386/i386.md (rdpid_rex64) New.
8928         (rdpid): Make 32bit only.
8930 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
8932         PR lto/84105
8933         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
8934         an IDENTIFIER_NODE for FUNCTION_TYPE's.
8936 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
8938         Revert
8939         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
8941         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
8943 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
8945         PR rtl-optimization/84071
8946         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
8947         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
8949 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
8951         * config/arc/arc.c (arc_handle_aux_attribute): New function.
8952         (arc_attribute_table): Add 'aux' attribute.
8953         (arc_in_small_data_p): Consider aux like variables.
8954         (arc_is_aux_reg_p): New function.
8955         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
8956         (arc_get_aux_arg): New function.
8957         (prepare_move_operands): Handle aux-register access.
8958         (arc_handle_aux_attribute): New function.
8959         * doc/extend.texi (ARC Variable attributes): Add subsection.
8961 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
8963         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
8964         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
8965         (arc_attribute_table): Add 'uncached' attribute.
8966         (arc_print_operand): Print '.di' flag for uncached memory
8967         accesses.
8968         (arc_in_small_data_p): Do not consider for small data the uncached
8969         types.
8970         (arc_is_uncached_mem_p): New function.
8971         * config/arc/predicates.md (compact_store_memory_operand): Check
8972         for uncached memory accesses.
8973         (nonvol_nonimm_operand): Likewise.
8974         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
8976 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
8978         PR c/84100
8979         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
8980         falign-loops=): Add Optimization flag.
8982 2018-01-30  Jeff Law  <law@redhat.com>
8984         PR target/84064
8985         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
8986         INT_REGISTERS_SAVED.  Check it prior to calling
8987         get_scratch_register_on_entry.
8988         (ix86_adjust_stack_and_probe): Similarly.
8989         (ix86_emit_probe_stack_range): Similarly.
8990         (ix86_expand_prologue): Corresponding changes.
8992 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8994         PR target/40411
8995         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
8996         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
8998 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
9000         PR target/84112
9001         * lra-constraints.c (curr_insn_transform): Process AND in the
9002         address.
9004 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
9006         PR rtl-optimization/83986
9007         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
9008         dependence against last_pending_memory_flush in addition to
9009         pending_jump_insns.
9011 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
9013         PR tree-optimization/81611
9014         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
9015         copies.
9017 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9019         PR target/83758
9020         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
9021         a reg rtx.
9023 2018-01-30  Richard Biener  <rguenther@suse.de>
9024             Jakub Jelinek  <jakub@redhat.com>
9026         PR tree-optimization/84111
9027         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
9028         inner loops added during recursion, as they don't have up-to-date
9029         SSA form.
9031 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9033         PR ipa/81360
9034         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
9035         (can_inline_edge_by_limits_p): ... here.
9036         (can_early_inline_edge_p, check_callers,
9037         update_caller_keys, update_callee_keys, recursive_inlining,
9038         add_new_edges_to_heap, speculation_useful_p,
9039         inline_small_functions,
9040         inline_small_functions, flatten_function,
9041         inline_to_all_callers_1): Update.
9043 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9045         * profile-count.c (profile_count::combine_with_ipa_count): Handle
9046         zeros correctly.
9048 2018-01-30  Richard Biener  <rguenther@suse.de>
9050         PR tree-optimization/83008
9051         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
9052         invariant and constant vector uses in stmts when they need
9053         more than one stmt.
9055 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9057         PR bootstrap/84017
9058         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
9059         * configure: Regenerate.
9061 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9063         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
9064         pattern.
9065         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
9066         Use gen_rtx_REG rather than gen_lowpart.
9068 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9070         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
9071         rather than 0 when creating partial subregs.
9073 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9075         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
9076         of usage.
9078 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
9080         PR target/81550
9081         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
9082         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
9083         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
9084         flags.  This restores the settings used before the 2017-07-24.
9085         Turning off pre increment/decrement/modify allows IVOPTS to
9086         optimize DF/SF loops where the index is an int.
9088 2018-01-29  Richard Biener  <rguenther@suse.de>
9089             Kelvin Nilsen  <kelvin@gcc.gnu.org>
9091         PR bootstrap/80867
9092         * tree-vect-stmts.c (vectorizable_call): Don't call
9093         targetm.vectorize_builtin_md_vectorized_function if callee is
9094         NULL.
9096 2018-01-22  Carl Love  <cel@us.ibm.com>
9098         * doc/extend.tex: Fix typo in second arg in
9099         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
9101 2018-01-29  Richard Biener  <rguenther@suse.de>
9103         PR tree-optimization/84086
9104         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
9105         (flush_ssaname_freelist): When SSA names were released reset
9106         the SCEV hash table.
9108 2018-01-29  Richard Biener  <rguenther@suse.de>
9110         PR tree-optimization/84057
9111         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
9112         removed paths when removing edges.
9114 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
9116         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
9117         -mfunction-return=@var{choice}.
9119 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
9121         PR diagnostic/84034
9122         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
9123         Handle CR like TAB.
9124         (layout::print_source_line): Likewise.
9125         (test_get_line_width_without_trailing_whitespace): Add test cases.
9127 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
9129         PR middle-end/84040
9130         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
9131         debug insns.
9133 2018-01-26  Jim Wilson  <jimw@sifive.com>
9135         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
9137         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
9138         specified.
9140 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9142         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
9143         and CMP + SUB-immediate -> SUBS.
9145 2018-01-26  Martin Sebor  <msebor@redhat.com>
9147         PR tree-optimization/83896
9148         * tree-ssa-strlen.c (get_string_len): Rename...
9149         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
9150         Avoid assuming length is constant.
9151         (handle_char_store): Use HOST_WIDE_INT for string length.
9153 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
9155         PR target/81763
9156         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
9157         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
9159 2018-01-26  Richard Biener  <rguenther@suse.de>
9161         PR rtl-optimization/84003
9162         * dse.c (record_store): Only record redundant stores when
9163         the earlier store aliases at least all accesses the later one does.
9165 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
9167         PR rtl-optimization/83985
9168         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
9169         REG_CFA_RESTORE insns.
9170         (delete_unmarked_insns): Don't ignore separate shrink wrapping
9171         REG_CFA_RESTORE insns here.
9173         PR c/83989
9174         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
9175         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
9177 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9179         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
9180         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
9181         (arc_init): Likewise.
9182         (arc_override_options): Likewise.
9183         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
9184         value.
9185         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
9186         support.
9187         * config/arc/arc.h (TARGET_DBNZ): Define.
9188         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
9189         properly set the tune attribute.
9190         (dbnz): Use TARGET_DBNZ guard.
9191         * config/arc/arc.opt (mtune): Add core3 option.
9193 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9195         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
9196         recognize new pic like addresses.
9197         (arc_delegitimize_address): Clean up.
9199 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9201         * config/arc/arc-arches.def: Option mrf16 valid for all
9202         architectures.
9203         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
9204         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
9205         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
9206         * config/arc/arc-tables.opt: Regenerate.
9207         * config/arc/arc.c (arc_conditional_register_usage): Handle
9208         reduced register file case.
9209         (arc_file_start): Set must have build attributes.
9210         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
9211         mrf16 option value.
9212         * config/arc/arc.opt (mrf16): Add new option.
9213         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
9214         * config/arc/genmultilib.awk: Handle new mrf16 option.
9215         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
9216         * config/arc/t-multilib: Regenerate.
9217         * doc/invoke.texi (ARC Options): Document mrf16 option.
9219 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9221         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
9222         * config/arc/arc.c (arc_handle_secure_attribute): New function.
9223         (arc_attribute_table): Add 'secure_call' attribute.
9224         (arc_print_operand): Print secure call operand.
9225         (arc_function_ok_for_sibcall): Don't optimize tail calls when
9226         secure.
9227         (arc_is_secure_call_p): New function.  * config/arc/arc.md
9228         (call_i): Add support for sjli instruction.
9229         (call_value_i): Likewise.
9230         * config/arc/constraints.md (Csc): New constraint.
9232 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9233             John Eric Martin  <John.Martin@emmicro-us.com>
9235         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
9236         * config/arc/arc.c (_arc_jli_section): New struct.
9237         (arc_jli_section): New type.
9238         (rc_jli_sections): New static variable.
9239         (arc_handle_jli_attribute): New function.
9240         (arc_attribute_table): Add jli_always and jli_fixed attribute.
9241         (arc_file_end): New function.
9242         (TARGET_ASM_FILE_END): Define.
9243         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
9244         (arc_add_jli_section): New function.
9245         (jli_call_scan): Likewise.
9246         (arc_reorg): Call jli_call_scan.
9247         (arc_output_addsi): Remove 'S' from printing asm operand.
9248         (arc_is_jli_call_p): New function.
9249         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
9250         operand.
9251         (movhi_insn): Likewise.
9252         (movsi_insn): Likewise.
9253         (movsi_set_cc_insn): Likewise.
9254         (loadqi_update): Likewise.
9255         (load_zeroextendqisi_update): Likewise.
9256         (load_signextendqisi_update): Likewise.
9257         (loadhi_update): Likewise.
9258         (load_zeroextendhisi_update): Likewise.
9259         (load_signextendhisi_update): Likewise.
9260         (loadsi_update): Likewise.
9261         (loadsf_update): Likewise.
9262         (movsicc_insn): Likewise.
9263         (bset_insn): Likewise.
9264         (bxor_insn): Likewise.
9265         (bclr_insn): Likewise.
9266         (bmsk_insn): Likewise.
9267         (bicsi3_insn): Likewise.
9268         (cmpsi_cc_c_insn): Likewise.
9269         (movsi_ne): Likewise.
9270         (movsi_cond_exec): Likewise.
9271         (clrsbsi2): Likewise.
9272         (norm_f): Likewise.
9273         (normw): Likewise.
9274         (swap): Likewise.
9275         (divaw): Likewise.
9276         (flag): Likewise.
9277         (sr): Likewise.
9278         (kflag): Likewise.
9279         (ffs): Likewise.
9280         (ffs_f): Likewise.
9281         (fls): Likewise.
9282         (call_i): Remove 'S' asm letter, add jli instruction.
9283         (call_value_i): Likewise.
9284         * config/arc/arc.op (mjli-always): New option.
9285         * config/arc/constraints.md (Cji): New constraint.
9286         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
9287         operand.
9288         (subsf3_fpx): Likewise.
9289         (mulsf3_fpx): Likewise.
9290         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
9291         asm operand.
9292         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
9293         function attrbutes.
9294         * doc/invoke.texi (ARC): Document mjli-always option.
9296 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
9298         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
9299         avoid addition with 0 and use incw and decw where possible.
9301 2018-01-26  Richard Biener  <rguenther@suse.de>
9303         PR tree-optimization/81082
9304         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
9305         association if it requires casting to unsigned.
9306         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
9307         from fold_plusminus_mult_expr to catch important cases late when
9308         range info is available.
9310 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9312         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
9313         * configure.ac (hidden_linkonce): New test.
9314         * configure: Regenerate.
9315         * config.in: Regenerate.
9317 2018-01-26  Julia Koval  <julia.koval@intel.com>
9319         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
9320         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
9321         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
9322         _mm_mask_bitshuffle_epi64_mask): Fix type.
9323         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
9324         USI_FTYPE_V4DI_V4DI_USI): Remove.
9325         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
9326         __builtin_ia32_vpshufbitqmb256_mask,
9327         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
9328         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
9329         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
9331 2018-01-26  Alan Modra  <amodra@gmail.com>
9333         PR target/84033
9334         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
9335         UNSPEC_VBPERMQ.  Sort other unspecs.
9337 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
9339         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
9341 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
9343         PR middle-end/83055
9344         * predict.c (drop_profile): Do not push/pop cfun; update also
9345         node->count.
9346         (handle_missing_profiles): Fix logic looking for zero profiles.
9348 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
9350         PR middle-end/83977
9351         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
9352         on functions with #pragma omp declare simd or functions with simd
9353         attribute.
9354         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
9355         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
9356         Remove trailing \n from warning_at calls.
9358 2018-01-25  Tom de Vries  <tom@codesourcery.com>
9360         PR target/84028
9361         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9362         for neutered workers.
9364 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
9366         PR target/68467
9367         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
9368         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
9370 2018-01-24  Jeff Law  <law@redhat.com>
9372         PR target/83994
9373         * i386.c (get_probe_interval): Move to earlier point.
9374         (ix86_compute_frame_layout): If -fstack-clash-protection and
9375         the frame is larger than the probe interval, then use pushes
9376         to save registers rather than reg->mem moves.
9377         (ix86_expand_prologue): Remove conditional for int_registers_saved
9378         assertion.
9380 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
9382         PR target/84014
9383         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
9384         min/max for never referenced object.
9386 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
9388         PR middle-end/83977
9389         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
9390         here.
9391         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
9392         attributes from DECL_ATTRIBUTES (decl) without affecting
9393         DECL_ATTRIBUTES (current_function_decl).
9394         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
9395         functions with non-NULL DECL_ABSTRACT_ORIGIN.
9397 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
9399         PR tree-optimization/83979
9400         * fold-const.c (fold_comparison): Use constant_boolean_node
9401         instead of boolean_{true,false}_node.
9403 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
9405         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
9406         with zero counts.
9408 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9410         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9411         Simplify the clause that sets the length attribute.
9412         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9413         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
9414         clause that sets the length attribute.
9415         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9417 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9419         PR target/83589
9420         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
9421         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
9422         Add strict parameter.
9423         (prevent_branch_around_nothing): Insert dummy insn between branch to
9424         label and label with no ptx insn inbetween.
9425         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
9427 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9429         PR target/81352
9430         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9431         for neutered threads in warp.
9432         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
9434 2018-01-24  Richard Biener  <rguenther@suse.de>
9436         PR tree-optimization/83176
9437         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
9438         operands.
9440 2018-01-24  Richard Biener  <rguenther@suse.de>
9442         PR tree-optimization/82819
9443         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
9444         code generating pluses that are no-ops in the target precision.
9446 2018-01-24  Richard Biener  <rguenther@suse.de>
9448         PR middle-end/84000
9449         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
9451 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9453         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
9454         to merge probabilities.
9455         * predict.c (probably_never_executed): Also mark as cold functions
9456         with global 0 profile and guessed local profile.
9457         * profile-count.c (profile_probability::combine_with_count): New
9458         member function.
9459         * profile-count.h (profile_probability::operator*,
9460         profile_probability::operator*=, profile_probability::operator/,
9461         profile_probability::operator/=): Reduce precision to adjusted
9462         and set value to guessed on contradictory divisions.
9463         (profile_probability::combine_with_freq): Remove.
9464         (profile_probability::combine_wiht_count): Declare.
9465         (profile_count::force_nonzero):: Set to adjusted.
9466         (profile_count::probability_in):: Set quality to adjusted.
9467         * tree-ssa-tail-merge.c (replace_block_by): Use
9468         combine_with_count.
9470 2018-01-23  Andrew Waterman  <andrew@sifive.com>
9471             Jim Wilson  <jimw@sifive.com>
9473         * config/riscv/riscv.c (riscv_stack_boundary): New.
9474         (riscv_option_override): Set riscv_stack_boundary.  Handle
9475         riscv_preferred_stack_boundary_arg.
9476         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
9477         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
9478         (STACK_BOUNDARY): Set to riscv_stack_boundary.
9479         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
9480         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
9481         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
9483 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
9485         PR target/83905
9486         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
9487         of struct ix86_frame.
9488         (ix86_expand_epilogue): Likewise.  Add a local variable for
9489         the reg_save_offset field in struct ix86_frame.
9491 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
9493         PR tree-optimization/82604
9494         * tree-loop-distribution.c (enum partition_kind): New enum item
9495         PKIND_PARTIAL_MEMSET.
9496         (partition_builtin_p): Support above new enum item.
9497         (generate_code_for_partition): Ditto.
9498         (compute_access_range): Differentiate cases that equality can be
9499         proven at all loops, the innermost loops or no loops.
9500         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
9501         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
9502         (finalize_partitions, distribute_loop): Don't fuse partition of
9503         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
9504         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
9505         parloop is enabled.
9507 2018-01-23  Martin Liska  <mliska@suse.cz>
9509         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
9510         order to ignore the predictor.
9511         (PRED_POLYMORPHIC_CALL): Likewise.
9512         (PRED_RECURSIVE_CALL): Likewise.
9514 2018-01-23  Martin Liska  <mliska@suse.cz>
9516         * tree-profile.c (tree_profiling): Print function header to
9517         aware reader which function we are working on.
9518         * value-prof.c (gimple_find_values_to_profile): Do not print
9519         not interesting value histograms.
9521 2018-01-23  Martin Liska  <mliska@suse.cz>
9523         * profile-count.h (enum profile_quality): Add
9524         profile_uninitialized as the first value. Do not number values
9525         as they are zero based.
9526         (profile_count::verify): Update sanity check.
9527         (profile_probability::verify): Likewise.
9529 2018-01-23  Nathan Sidwell  <nathan@acm.org>
9531         * doc/invoke.texi (ffor-scope): Deprecate.
9533 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9535         PR tree-optimization/83510
9536         * domwalk.c (set_all_edges_as_executable): New function.
9537         (dom_walker::dom_walker): Convert bool param
9538         "skip_unreachable_blocks" to enum reachability.  Move setup of
9539         edge flags to set_all_edges_as_executable and only do it when
9540         reachability is REACHABLE_BLOCKS.
9541         * domwalk.h (enum dom_walker::reachability): New enum.
9542         (dom_walker::dom_walker): Convert bool param
9543         "skip_unreachable_blocks" to enum reachability.
9544         (set_all_edges_as_executable): New decl.
9545         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
9546         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
9547         "reachability".
9548         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
9549         but converting true to REACHABLE_BLOCKS.
9550         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
9551         * tree-vrp.c
9552         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
9553         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
9554         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
9555         REACHABLE_BLOCKS.
9556         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
9557         if check_all_array_refs will be called.
9559 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9561         * tree.c (selftest::test_location_wrappers): Add more test
9562         coverage.
9564 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9566         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
9567         (selftest::test_bit_in_range): Likewise.
9569 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
9571         PR testsuite/83888
9572         * doc/sourcebuild.texi (vect_float): Say that the selector
9573         only describes the situation when -funsafe-math-optimizations is on.
9574         (vect_float_strict): Document.
9576 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
9578         PR tree-optimization/83965
9579         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
9580         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
9581         instead of checking only for a reduction.
9582         (vect_recog_widen_sum_pattern): Likewise.
9584 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9586         * predict.c (probably_never_executed): Only use precise profile info.
9587         (compute_function_frequency): Skip after inlining hack since we now
9588         have quality checking.
9590 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9592         * profile-count.h (profile_probability::very_unlikely,
9593         profile_probability::unlikely, profile_probability::even): Set
9594         precision to guessed.
9596 2018-01-23  Richard Biener  <rguenther@suse.de>
9598         PR tree-optimization/83963
9599         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
9600         Properly terminate dominator walk when crossing the exit edge not
9601         when visiting its source block.
9603 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
9605         PR c++/83918
9606         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
9607         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
9609 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
9611         PR tree-optimization/83957
9612         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
9613         semicolon after for body surrounded by braces.
9615         PR tree-optimization/83081
9616         * profile-count.h (profile_probability::split): New method.
9617         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
9618         Use profile_probability::split.
9619         (do_compare_rtx_and_jump): Fix adjustment of probabilities
9620         when splitting a single conditional jump into 2.
9622 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
9624         PR tree-optimization/69452
9625         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
9626         decl.
9628 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9630         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
9631         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
9632         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
9634 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9636         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
9637         * config/rl78/rl78.md (movdi): New define_expand.
9638         * config/rl78/rl78.c (rl78_split_movdi): New function.
9640 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
9642         PR target/83862
9643         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
9644         no longer used.
9645         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
9646         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
9647         128-bit to produce an UNSPEC move to get the double word with the
9648         signbit and then a shift directly to do signbit.
9649         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
9650         implementation with a new version that just does either a direct
9651         move or a regular move.  Move memory interface to separate insns.
9652         Move insns so they are next to the expander.
9653         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
9654         with signbit move.  Split big and little endian case.
9655         (signbit<mode>2_dm_mem_le): Likewise.
9656         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
9657         (signbit<mode>2_dm2): Likewise.
9659 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9661         * config/rl78/rl78.md (anddi3): New define_expand.
9663 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9665         * config/rl78/rl78.md (umindi3): New define_expand.
9667 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9669         * config/rl78/rl78.md (smindi3): New define_expand.
9671 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9673         * config/rl78/rl78.md (smaxdi3): New define_expand.
9675 2018-01-22  Carl Love  <cel@us.ibm.com>
9677         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
9678         LVX_V1TI): Add macro expansion.
9679         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
9680         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
9681         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
9682         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
9683         Change check to determine if the instruction is a byte reversing
9684         entry.  Fix typo in comment.
9685         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
9686         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
9687         Add def_builtin calls for new builtins.
9688         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
9689         Add define_insn expansion.
9691 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9693         * config/rl78/rl78.md (umaxdi3): New define_expand.
9695 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9697         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
9698         for non-QImode registers.
9700 2018-01-22  Richard Biener  <rguenther@suse.de>
9702         PR tree-optimization/83963
9703         * graphite-scop-detection.c (scop_detection::get_sese): Delay
9704         including the loop exit block.
9705         (scop_detection::merge_sese): Likewise.
9706         (scop_detection::add_scop): Do it here instead.
9708 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9710         * doc/sourcebuild.texi (arm_softfloat): Document.
9712 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
9714         PR gcc/77734
9715         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
9716         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
9717         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
9719 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9720             David Edelsohn  <dje.gcc@gmail.com>
9722         PR target/83946
9723         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9724         Change "crset eq" to "crset 2".
9725         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9726         (*call_indirect_aix<mode>_nospec): Likewise.
9727         (*call_value_indirect_aix<mode>_nospec): Likewise.
9728         (*call_indirect_elfv2<mode>_nospec): Likewise.
9729         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
9730         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
9731         change assembly output from . to $.
9732         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9733         (indirect_jump<mode>_nospec): Change assembly output from . to $.
9734         (*tablejump<mode>_internal1_nospec): Likewise.
9736 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
9738         PR target/80870
9739         * config/sh/sh_optimize_sett_clrt.cc:
9740         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
9742 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
9744         PR tree-optimization/83940
9745         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
9746         offset_dt to vect_constant_def rather than vect_unknown_def_type.
9747         (vect_check_load_store_mask): Add a mask_dt_out parameter and
9748         use it to pass back the definition type.
9749         (vect_check_store_rhs): Likewise rhs_dt_out.
9750         (vect_build_gather_load_calls): Add a mask_dt argument and use
9751         it instead of a call to vect_is_simple_use.
9752         (vectorizable_store): Update calls to vect_check_load_store_mask
9753         and vect_check_store_rhs.  Use the dt returned by the latter instead
9754         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
9755         instead of calls to vect_is_simple_use.  Pass the scalar rather
9756         than the vector operand to vect_is_simple_use when handling
9757         second and subsequent copies of an rhs value.
9758         (vectorizable_load): Update calls to vect_check_load_store_mask
9759         and vect_build_gather_load_calls.  Use the cached mask_dt and
9760         gs_info.offset_dt instead of calls to vect_is_simple_use.
9762 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
9764         PR middle-end/83945
9765         * tree-emutls.c: Include gimplify.h.
9766         (lower_emutls_2): New function.
9767         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
9768         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
9769         it before further processing.
9771         PR target/83930
9772         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
9773         UINTVAL (trueop1) instead of INTVAL (op1).
9775 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
9777         PR debug/81570
9778         PR debug/83728
9779         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
9780         INCOMING_FRAME_SP_OFFSET if not defined.
9781         (scan_trace): Add ENTRY argument.  If true and
9782         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
9783         emit a note to adjust the CFA offset.
9784         (create_cfi_notes): Adjust scan_trace callers.
9785         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
9786         INCOMING_FRAME_SP_OFFSET in the CIE.
9787         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
9788         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
9789         Likewise.
9790         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
9791         * doc/tm.texi: Regenerated.
9793 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
9795         PR rtl-optimization/83147
9796         * lra-constraints.c (remove_inheritance_pseudos): Use
9797         lra_substitute_pseudo_within_insn.
9799 2018-01-19  Tom de Vries  <tom@codesourcery.com>
9800             Cesar Philippidis  <cesar@codesourcery.com>
9802         PR target/83920
9803         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
9805 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
9807         PR target/83790
9808         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
9809         spaces for function labels.
9811 2018-01-19  Martin Liska  <mliska@suse.cz>
9813         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
9814         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
9815         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
9816         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
9817         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
9818         (PRED_CONST_RETURN): Change from 69 to 65.
9819         (PRED_NULL_RETURN): Change from 91 to 71.
9820         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
9821         (PRED_LOOP_GUARD): Change from 66 to 73.
9823 2018-01-19  Martin Liska  <mliska@suse.cz>
9825         * predict.c (predict_insn_def): Add new assert.
9826         (struct branch_predictor): Change type to signed integer.
9827         (test_prediction_value_range): Amend test to cover
9828         PROB_UNINITIALIZED.
9829         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
9830         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
9831         (PRED_LOOP_ITERATIONS_MAX): Likewise.
9832         (PRED_LOOP_IV_COMPARE): Likewise.
9833         * predict.h (PROB_UNINITIALIZED): Define new constant.
9835 2018-01-19  Martin Liska  <mliska@suse.cz>
9837         * predict.c (dump_prediction): Add new format for
9838         analyze_brprob.py script which is enabled with -details
9839         suboption.
9840         * profile-count.h (precise_p): New function.
9842 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
9844         PR tree-optimization/83922
9845         * tree-vect-loop.c (vect_verify_full_masking): Return false if
9846         there are no statements that need masking.
9847         (vect_active_double_reduction_p): New function.
9848         (vect_analyze_loop_operations): Use it when handling phis that
9849         are not in the loop header.
9851 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
9853         PR tree-optimization/83914
9854         * tree-vect-loop.c (vectorizable_induction): Don't convert
9855         init_expr or apply the peeling adjustment for inductions
9856         that are nested within the vectorized loop.
9858 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9860         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
9861         instead of NEG.
9863 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
9865         PR sanitizer/81715
9866         PR testsuite/83882
9867         * function.h (gimplify_parameters): Add gimple_seq * argument.
9868         * function.c: Include gimple.h and options.h.
9869         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
9870         for the added local temporaries if needed.
9871         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
9872         if there are any parameter cleanups, wrap whole body into a
9873         try/finally with the cleanups.
9875 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
9877         PR target/82964
9878         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
9879         Use GET_MODE_CLASS for scalar floating point.
9881 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
9883         PR ipa/82256
9884         patch by PaX Team
9885         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
9886         Fix call of call_cgraph_insertion_hooks.
9888 2018-01-18  Martin Sebor  <msebor@redhat.com>
9890         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
9892 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
9894         PR ipa/83619
9895         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
9896         frequencies.
9898 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
9900         PR other/70268
9901         * common.opt: (-ffile-prefix-map): New option.
9902         * opts.c (common_handle_option): Defer it.
9903         * opts-global.c (handle_common_deferred_options): Handle it.
9904         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
9905         * file-prefix-map.h: New file.
9906         (remap_debug_filename, add_debug_prefix_map): ...here.
9907         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
9908         * final.c (debug_prefix_map, add_debug_prefix_map
9909         remap_debug_filename): Move to...
9910         * file-prefix-map.c: New file.
9911         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
9912         generalize, get rid of alloca(), use strrchr() instead of strchr().
9913         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
9914         Implement in terms of add_prefix_map().
9915         (remap_macro_filename, remap_debug_filename): Implement in term of
9916         remap_filename().
9917         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
9918         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
9919         * dbxout.c: Include file-prefix-map.h.
9920         * varasm.c: Likewise.
9921         * vmsdbgout.c: Likewise.
9922         * xcoffout.c: Likewise.
9923         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
9924         * doc/cppopts.texi (-fmacro-prefix-map): Document.
9925         * doc/invoke.texi (-ffile-prefix-map): Document.
9926         (-fdebug-prefix-map): Update description.
9928 2018-01-18  Martin Liska  <mliska@suse.cz>
9930         * config/i386/i386.c (indirect_thunk_name): Document that also
9931         lfence is emitted.
9932         (output_indirect_thunk): Document why both instructions
9933         (pause and lfence) are generated.
9935 2018-01-18  Richard Biener  <rguenther@suse.de>
9937         PR tree-optimization/83887
9938         * graphite-scop-detection.c
9939         (scop_detection::get_nearest_dom_with_single_entry): Remove.
9940         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
9941         (scop_detection::merge_sese): Re-implement with a flood-fill
9942         algorithm that properly finds a SESE region if it exists.
9944 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
9946         PR c/61240
9947         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
9948         pointer_diff optimizations use view_convert instead of convert.
9950 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9952         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9953         Generate different code for -mno-speculate-indirect-jumps.
9954         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9955         (*call_indirect_aix<mode>): Disable for
9956         -mno-speculate-indirect-jumps.
9957         (*call_indirect_aix<mode>_nospec): New define_insn.
9958         (*call_value_indirect_aix<mode>): Disable for
9959         -mno-speculate-indirect-jumps.
9960         (*call_value_indirect_aix<mode>_nospec): New define_insn.
9961         (*sibcall_nonlocal_sysv<mode>): Generate different code for
9962         -mno-speculate-indirect-jumps.
9963         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9965 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
9967         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
9968         long double type, set the flags for noting the default long double
9969         type, even if we don't pass or return a long double type.
9971 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
9973         PR ipa/83051
9974         * ipa-inline.c (flatten_function): Do not overwrite final inlining
9975         failure.
9977 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
9979         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
9980         support for merge[hl].
9981         (fold_mergehl_helper): New helper function.
9982         (tree-vector-builder.h): New #include for tree_vector_builder usage.
9983         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
9984         (altivec_vmrglw_direct): Add xxmrglw insn.
9986 2018-01-17  Andrew Waterman  <andrew@sifive.com>
9988         * config/riscv/riscv.c (riscv_conditional_register_usage): If
9989         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
9991 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
9993         PR lto/83121
9994         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
9995         call the lto_location_cache before reading the
9996         DECL_SOURCE_LOCATION of the types.
9998 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
9999             Richard Sandiford  <richard.sandiford@linaro.org>
10001         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
10002         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
10003         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
10004         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
10005         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
10006         Add declaration.
10007         * config/aarch64/constraints.md (aarch64_movti_operand):
10008         Limit immediates.
10009         * config/aarch64/predicates.md (Uti): Add new constraint.
10011 2018-01-17 Carl Love  <cel@us.ibm.com>
10013         * config/rs6000/vsx.md (define_expand xl_len_r,
10014         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
10015         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
10016         lxvll.
10017         (define_expand, define_insn): Move the shift left from  the
10018         define_insn to the define_expand for lxvl and stxvl instructions.
10019         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
10020         and XL_LEN_R definitions to PURE.
10022 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
10024         * config/i386/i386.c (indirect_thunk_name): Declare regno
10025         as unsigned int.  Compare regno with INVALID_REGNUM.
10026         (output_indirect_thunk): Ditto.
10027         (output_indirect_thunk_function): Ditto.
10028         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
10029         in the call to output_indirect_thunk_function.
10031 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
10033         PR middle-end/83884
10034         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
10035         rather than the size of inner_type to determine the stack slot size
10036         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
10038 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
10040         PR target/83546
10041         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
10042         to PTA_SILVERMONT.
10044 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
10046         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
10047         endian Linux systems to optionally enable multilibs for selecting
10048         the long double type if the user configured an explicit type.
10049         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
10050         have no long double multilibs if not defined.
10051         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
10052         warn if the user used -mabi={ieee,ibm}longdouble and we built
10053         multilibs for long double.
10054         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
10055         appropriate multilib option.
10056         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
10057         multilib options.
10058         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
10059         for building long double multilibs.
10060         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
10062 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
10064         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
10065         copies.
10067         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
10068         64 bits.
10069         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
10070         128 bits.
10072         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
10073         variables.
10075         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
10076         return value.
10078 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10080         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
10081         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
10083 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10085         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
10086         different rtl trees depending on TARGET_64BIT.
10087         (rs6000_gen_lvx): Likewise.
10089 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10091         * config/visium/visium.md (nop): Tweak comment.
10092         (hazard_nop): Likewise.
10094 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10096         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
10097         -mspeculate-indirect-jumps.
10098         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
10099         for -mno-speculate-indirect-jumps.
10100         (*call_indirect_elfv2<mode>_nospec): New define_insn.
10101         (*call_value_indirect_elfv2<mode>): Disable for
10102         -mno-speculate-indirect-jumps.
10103         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
10104         (indirect_jump): Emit different RTL for
10105         -mno-speculate-indirect-jumps.
10106         (*indirect_jump<mode>): Disable for
10107         -mno-speculate-indirect-jumps.
10108         (*indirect_jump<mode>_nospec): New define_insn.
10109         (tablejump): Emit different RTL for
10110         -mno-speculate-indirect-jumps.
10111         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
10112         (tablejumpsi_nospec): New define_expand.
10113         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
10114         (tablejumpdi_nospec): New define_expand.
10115         (*tablejump<mode>_internal1): Disable for
10116         -mno-speculate-indirect-jumps.
10117         (*tablejump<mode>_internal1_nospec): New define_insn.
10118         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
10119         option.
10121 2018-01-16  Artyom Skrobov tyomitch@gmail.com
10123         * caller-save.c (insert_save): Drop unnecessary parameter.  All
10124         callers updated.
10126 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10127             Richard Biener  <rguenth@suse.de>
10129         PR libgomp/83590
10130         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
10131         return early, inline manually is_gimple_sizepos.  Make sure if we
10132         call gimplify_expr we don't end up with a gimple constant.
10133         * tree.c (variably_modified_type_p): Don't return true for
10134         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
10135         * gimplify.h (is_gimple_sizepos): Remove.
10137 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10139         PR tree-optimization/83857
10140         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
10141         vectorizable_live_operation for pure SLP statements.
10142         (vectorizable_live_operation): Handle PHIs.
10144 2018-01-16  Richard Biener  <rguenther@suse.de>
10146         PR tree-optimization/83867
10147         * tree-vect-stmts.c (vect_transform_stmt): Precompute
10148         nested_in_vect_loop_p since the scalar stmt may get invalidated.
10150 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10152         PR c/83844
10153         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
10154         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
10155         If off is not INTEGER_CST, issue a may not be aligned warning
10156         rather than isn't aligned.  Use isn%'t rather than isn't.
10157         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
10158         into MULT_EXPR.
10159         <case MULT_EXPR>: Improve the case when bottom and one of the
10160         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
10161         operand, in that case check if the other operand is multiple of
10162         bottom divided by the INTEGER_CST operand.
10164 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10166         PR target/83858
10167         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
10168         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
10169         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
10170         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
10171         * config/pa/pa.c (pa_function_arg_advance): Likewise.
10172         (pa_function_arg, pa_arg_partial_bytes): Likewise.
10173         (pa_function_arg_size): New function.
10175 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10177         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
10178         in a separate statement.
10180 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10182         PR tree-optimization/83847
10183         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
10184         group gathers and scatters.
10186 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10188         PR rtl-optimization/86620
10189         * params.def (max-sched-ready-insns): Bump minimum value to 1.
10191         PR rtl-optimization/83213
10192         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
10193         to last if both are JUMP_INSNs.
10195         PR tree-optimization/83843
10196         * gimple-ssa-store-merging.c
10197         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
10198         store_immediate_info for bswap/nop orig_stores.
10200 2018-01-15  Andrew Waterman  <andrew@sifive.com>
10202         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
10203         !TARGET_MUL.
10204         <UDIV>: Increase cost if !TARGET_DIV.
10206 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
10208         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
10209         (define_attr "cr_logical_3op"): New.
10210         (cceq_ior_compare): Adjust.
10211         (cceq_ior_compare_complement): Adjust.
10212         (*cceq_rev_compare): Adjust.
10213         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
10214         (is_cracked_insn): Adjust.
10215         (insn_must_be_first_in_group): Adjust.
10216         * config/rs6000/40x.md: Adjust.
10217         * config/rs6000/440.md: Adjust.
10218         * config/rs6000/476.md: Adjust.
10219         * config/rs6000/601.md: Adjust.
10220         * config/rs6000/603.md: Adjust.
10221         * config/rs6000/6xx.md: Adjust.
10222         * config/rs6000/7450.md: Adjust.
10223         * config/rs6000/7xx.md: Adjust.
10224         * config/rs6000/8540.md: Adjust.
10225         * config/rs6000/cell.md: Adjust.
10226         * config/rs6000/e300c2c3.md: Adjust.
10227         * config/rs6000/e500mc.md: Adjust.
10228         * config/rs6000/e500mc64.md: Adjust.
10229         * config/rs6000/e5500.md: Adjust.
10230         * config/rs6000/e6500.md: Adjust.
10231         * config/rs6000/mpc.md: Adjust.
10232         * config/rs6000/power4.md: Adjust.
10233         * config/rs6000/power5.md: Adjust.
10234         * config/rs6000/power6.md: Adjust.
10235         * config/rs6000/power7.md: Adjust.
10236         * config/rs6000/power8.md: Adjust.
10237         * config/rs6000/power9.md: Adjust.
10238         * config/rs6000/rs64.md: Adjust.
10239         * config/rs6000/titan.md: Adjust.
10241 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10243         * config/i386/predicates.md (indirect_branch_operand): Rewrite
10244         ix86_indirect_branch_register logic.
10246 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10248         * config/i386/constraints.md (Bs): Update
10249         ix86_indirect_branch_register check.  Don't check
10250         ix86_indirect_branch_register with GOT_memory_operand.
10251         (Bw): Likewise.
10252         * config/i386/predicates.md (GOT_memory_operand): Don't check
10253         ix86_indirect_branch_register here.
10254         (GOT32_symbol_operand): Likewise.
10256 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10258         * config/i386/predicates.md (constant_call_address_operand):
10259         Rewrite ix86_indirect_branch_register logic.
10260         (sibcall_insn_operand): Likewise.
10262 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10264         * config/i386/constraints.md (Bs): Replace
10265         ix86_indirect_branch_thunk_register with
10266         ix86_indirect_branch_register.
10267         (Bw): Likewise.
10268         * config/i386/i386.md (indirect_jump): Likewise.
10269         (tablejump): Likewise.
10270         (*sibcall_memory): Likewise.
10271         (*sibcall_value_memory): Likewise.
10272         Peepholes of indirect call and jump via memory: Likewise.
10273         * config/i386/i386.opt: Likewise.
10274         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10275         (GOT_memory_operand): Likewise.
10276         (call_insn_operand): Likewise.
10277         (sibcall_insn_operand): Likewise.
10278         (GOT32_symbol_operand): Likewise.
10280 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10282         PR middle-end/83837
10283         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
10284         type rather than type addr's type points to.
10285         (expand_omp_atomic_mutex): Likewise.
10286         (expand_omp_atomic): Likewise.
10288 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10290         PR target/83839
10291         * config/i386/i386.c (output_indirect_thunk_function): Use
10292         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
10293         for  __x86_return_thunk.
10295 2018-01-15  Richard Biener  <rguenther@suse.de>
10297         PR middle-end/83850
10298         * expmed.c (extract_bit_field_1): Fix typo.
10300 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10302         PR target/83687
10303         * config/arm/iterators.md (VF): New mode iterator.
10304         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
10305         Remove integer-related logic from pattern.
10306         (neon_vabd<mode>_3): Likewise.
10308 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10310         PR middle-end/82694
10311         * common.opt (fstrict-overflow): No longer an alias.
10312         (fwrapv-pointer): New option.
10313         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
10314         also for pointer types based on flag_wrapv_pointer.
10315         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
10316         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
10317         opts->x_flag_wrapv got set.
10318         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
10319         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
10320         POINTER_TYPE_OVERFLOW_UNDEFINED.
10321         * match.pd: Likewise in address comparison pattern.
10322         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
10324 2018-01-15  Richard Biener  <rguenther@suse.de>
10326         PR lto/83804
10327         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
10328         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
10329         Reset type names to their identifier if their TYPE_DECL doesn't
10330         have linkage (and thus is used for ODR and devirt).
10331         (save_debug_info_for_decl): Remove.
10332         (save_debug_info_for_type): Likewise.
10333         (add_tree_to_fld_list): Adjust.
10334         * tree-pretty-print.c (dump_generic_node): Make dumping of
10335         type names more robust.
10337 2018-01-15  Richard Biener  <rguenther@suse.de>
10339         * BASE-VER: Bump to 8.0.1.
10341 2018-01-14  Martin Sebor  <msebor@redhat.com>
10343         PR other/83508
10344         * builtins.c (check_access): Avoid warning when the no-warning bit
10345         is set.
10347 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
10349         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
10350         * ira-color (allocno_hard_regs_compare): Likewise.
10352 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
10354         PR target/83013
10355         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
10356         Use .pushsection/.popsection.
10358 2018-01-14  Martin Sebor  <msebor@redhat.com>
10360         PR c++/81327
10361         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
10363 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
10365         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
10366         entry from extra_headers.
10367         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
10368         extra_headers, make the list bitwise identical to the i?86-*-* one.
10370 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10372         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
10373         -mcmodel=large with -mindirect-branch=thunk,
10374         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
10375         -mfunction-return=thunk-extern.
10376         * doc/invoke.texi: Document -mcmodel=large is incompatible with
10377         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
10378         -mfunction-return=thunk and -mfunction-return=thunk-extern.
10380 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10382         * config/i386/i386.c (print_reg): Print the name of the full
10383         integer register without '%'.
10384         (ix86_print_operand): Handle 'V'.
10385          * doc/extend.texi: Document 'V' modifier.
10387 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10389         * config/i386/constraints.md (Bs): Disallow memory operand for
10390         -mindirect-branch-register.
10391         (Bw): Likewise.
10392         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10393         (GOT_memory_operand): Likewise.
10394         (call_insn_operand): Likewise.
10395         (sibcall_insn_operand): Likewise.
10396         (GOT32_symbol_operand): Likewise.
10397         * config/i386/i386.md (indirect_jump): Call convert_memory_address
10398         for -mindirect-branch-register.
10399         (tablejump): Likewise.
10400         (*sibcall_memory): Likewise.
10401         (*sibcall_value_memory): Likewise.
10402         Disallow peepholes of indirect call and jump via memory for
10403         -mindirect-branch-register.
10404         (*call_pop): Replace m with Bw.
10405         (*call_value_pop): Likewise.
10406         (*sibcall_pop_memory): Replace m with Bs.
10407         * config/i386/i386.opt (mindirect-branch-register): New option.
10408         * doc/invoke.texi: Document -mindirect-branch-register option.
10410 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10412         * config/i386/i386-protos.h (ix86_output_function_return): New.
10413         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
10414         set function_return_type.
10415         (indirect_thunk_name): Add ret_p to indicate thunk for function
10416         return.
10417         (output_indirect_thunk_function): Pass false to
10418         indirect_thunk_name.
10419         (ix86_output_indirect_branch_via_reg): Likewise.
10420         (ix86_output_indirect_branch_via_push): Likewise.
10421         (output_indirect_thunk_function): Create alias for function
10422         return thunk if regno < 0.
10423         (ix86_output_function_return): New function.
10424         (ix86_handle_fndecl_attribute): Handle function_return.
10425         (ix86_attribute_table): Add function_return.
10426         * config/i386/i386.h (machine_function): Add
10427         function_return_type.
10428         * config/i386/i386.md (simple_return_internal): Use
10429         ix86_output_function_return.
10430         (simple_return_internal_long): Likewise.
10431         * config/i386/i386.opt (mfunction-return=): New option.
10432         (indirect_branch): Mention -mfunction-return=.
10433         * doc/extend.texi: Document function_return function attribute.
10434         * doc/invoke.texi: Document -mfunction-return= option.
10436 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10438         * config/i386/i386-opts.h (indirect_branch): New.
10439         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
10440         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
10441         with local indirect jump when converting indirect call and jump.
10442         (ix86_set_indirect_branch_type): New.
10443         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
10444         (indirectlabelno): New.
10445         (indirect_thunk_needed): Likewise.
10446         (indirect_thunk_bnd_needed): Likewise.
10447         (indirect_thunks_used): Likewise.
10448         (indirect_thunks_bnd_used): Likewise.
10449         (INDIRECT_LABEL): Likewise.
10450         (indirect_thunk_name): Likewise.
10451         (output_indirect_thunk): Likewise.
10452         (output_indirect_thunk_function): Likewise.
10453         (ix86_output_indirect_branch_via_reg): Likewise.
10454         (ix86_output_indirect_branch_via_push): Likewise.
10455         (ix86_output_indirect_branch): Likewise.
10456         (ix86_output_indirect_jmp): Likewise.
10457         (ix86_code_end): Call output_indirect_thunk_function if needed.
10458         (ix86_output_call_insn): Call ix86_output_indirect_branch if
10459         needed.
10460         (ix86_handle_fndecl_attribute): Handle indirect_branch.
10461         (ix86_attribute_table): Add indirect_branch.
10462         * config/i386/i386.h (machine_function): Add indirect_branch_type
10463         and has_local_indirect_jump.
10464         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
10465         to true.
10466         (tablejump): Likewise.
10467         (*indirect_jump): Use ix86_output_indirect_jmp.
10468         (*tablejump_1): Likewise.
10469         (simple_return_indirect_internal): Likewise.
10470         * config/i386/i386.opt (mindirect-branch=): New option.
10471         (indirect_branch): New.
10472         (keep): Likewise.
10473         (thunk): Likewise.
10474         (thunk-inline): Likewise.
10475         (thunk-extern): Likewise.
10476         * doc/extend.texi: Document indirect_branch function attribute.
10477         * doc/invoke.texi: Document -mindirect-branch= option.
10479 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
10481         PR ipa/83051
10482         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
10484 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
10486         * ipa-inline.c (want_inline_small_function_p): Return false if
10487         inlining has already failed with CIF_FINAL_ERROR.
10488         (update_caller_keys): Call want_inline_small_function_p before
10489         can_inline_edge_p.
10490         (update_callee_keys): Likewise.
10492 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10494         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
10495         New function.
10496         (rs6000_quadword_masked_address_p): Likewise.
10497         (quad_aligned_load_p): Likewise.
10498         (quad_aligned_store_p): Likewise.
10499         (const_load_sequence_p): Add comment to describe the outer-most loop.
10500         (mimic_memory_attributes_and_flags): New function.
10501         (rs6000_gen_stvx): Likewise.
10502         (replace_swapped_aligned_store): Likewise.
10503         (rs6000_gen_lvx): Likewise.
10504         (replace_swapped_aligned_load): Likewise.
10505         (replace_swapped_load_constant): Capitalize argument name in
10506         comment describing this function.
10507         (rs6000_analyze_swaps): Add a third pass to search for vector loads
10508         and stores that access quad-word aligned addresses and replace
10509         with stvx or lvx instructions when appropriate.
10510         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
10511         New function prototype.
10512         (rs6000_quadword_masked_address_p): Likewise.
10513         (rs6000_gen_lvx): Likewise.
10514         (rs6000_gen_stvx): Likewise.
10515         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
10516         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
10517         when memory address is aligned.
10518         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
10519         this split to select lvx instruction when memory address is aligned.
10520         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
10521         instruction when memory address is aligned.
10522         (*vsx_le_perm_load_v16qi): Likewise.
10523         (four unnamed splitters): Modify to select the stvx instruction
10524         when memory is aligned.
10526 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
10528         * predict.c (determine_unlikely_bbs): Handle correctly BBs
10529         which appears in the queue multiple times.
10531 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10532             Alan Hayward  <alan.hayward@arm.com>
10533             David Sherwood  <david.sherwood@arm.com>
10535         * tree-vectorizer.h (vec_lower_bound): New structure.
10536         (_loop_vec_info): Add check_nonzero and lower_bounds.
10537         (LOOP_VINFO_CHECK_NONZERO): New macro.
10538         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
10539         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
10540         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
10541         fields.  Make seg_len the distance travelled, not including the
10542         access size.
10543         (dr_direction_indicator): Declare.
10544         (dr_zero_step_indicator): Likewise.
10545         (dr_known_forward_stride_p): Likewise.
10546         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
10547         tree-ssanames.h.
10548         (runtime_alias_check_p): Allow runtime alias checks with
10549         variable strides.
10550         (operator ==): Compare access_size and align.
10551         (prune_runtime_alias_test_list): Rework for new distinction between
10552         the access_size and seg_len.
10553         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
10554         segment lengths.
10555         (get_segment_min_max): New function.
10556         (create_intersect_range_checks): Use it.
10557         (dr_step_indicator): New function.
10558         (dr_direction_indicator): Likewise.
10559         (dr_zero_step_indicator): Likewise.
10560         (dr_known_forward_stride_p): Likewise.
10561         * tree-loop-distribution.c (data_ref_segment_size): Return
10562         DR_STEP * (niters - 1).
10563         (compute_alias_check_pairs): Update call to the dr_with_seg_len
10564         constructor.
10565         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
10566         (vect_preserves_scalar_order_p): New function, split out from...
10567         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
10568         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
10569         (vect_vfa_access_size): New function.
10570         (vect_vfa_align): Likewise.
10571         (vect_compile_time_alias): Take access_size_a and access_b arguments.
10572         (dump_lower_bound): New function.
10573         (vect_check_lower_bound): Likewise.
10574         (vect_small_gap_p): Likewise.
10575         (vectorizable_with_step_bound_p): Likewise.
10576         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
10577         depencies if the vectorization factor is 1.  Convert the checks
10578         for nonzero steps into checks on the bounds of DR_STEP.  Try using
10579         a bunds check for variable steps if the minimum required step is
10580         relatively small. Update calls to the dr_with_seg_len
10581         constructor and to vect_compile_time_alias.
10582         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
10583         function.
10584         (vect_loop_versioning): Call it.
10585         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
10586         when retrying.
10587         (vect_estimate_min_profitable_iters): Account for any bounds checks.
10589 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10590             Alan Hayward  <alan.hayward@arm.com>
10591             David Sherwood  <david.sherwood@arm.com>
10593         * doc/sourcebuild.texi (vect_scatter_store): Document.
10594         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
10595         optabs.
10596         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
10597         Document.
10598         * genopinit.c (main): Add supports_vec_scatter_store and
10599         supports_vec_scatter_store_cached to target_optabs.
10600         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
10601         IFN_MASK_SCATTER_STORE.
10602         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
10603         functions.
10604         * internal-fn.h (internal_store_fn_p): Declare.
10605         (internal_fn_stored_value_index): Likewise.
10606         * internal-fn.c (scatter_store_direct): New macro.
10607         (expand_scatter_store_optab_fn): New function.
10608         (direct_scatter_store_optab_supported_p): New macro.
10609         (internal_store_fn_p): New function.
10610         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
10611         IFN_MASK_SCATTER_STORE.
10612         (internal_fn_mask_index): Likewise.
10613         (internal_fn_stored_value_index): New function.
10614         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
10615         for scatter stores.
10616         * optabs-query.h (supports_vec_scatter_store_p): Declare.
10617         * optabs-query.c (supports_vec_scatter_store_p): New function.
10618         * tree-vectorizer.h (vect_get_store_rhs): Declare.
10619         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
10620         true for scatter stores.
10621         (vect_gather_scatter_fn_p): Handle scatter stores too.
10622         (vect_check_gather_scatter): Consider using scatter stores if
10623         supports_vec_scatter_store_p.
10624         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
10625         scatter stores too.
10626         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
10627         internal_fn_stored_value_index.
10628         (check_load_store_masking): Handle scatter stores too.
10629         (vect_get_store_rhs): Make public.
10630         (vectorizable_call): Use internal_store_fn_p.
10631         (vectorizable_store): Handle scatter store internal functions.
10632         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
10633         when deciding whether the end of the group has been reached.
10634         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
10635         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
10636         (mask_scatter_store<mode>): New insns.
10638 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10639             Alan Hayward  <alan.hayward@arm.com>
10640             David Sherwood  <david.sherwood@arm.com>
10642         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
10643         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
10644         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
10645         function.
10646         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
10647         Use vect_truncate_gather_scatter_offset if we can't treat the
10648         operation as a normal gather load or scatter store.
10649         (get_group_load_store_type): Take the gather_scatter_info
10650         as argument.  Try using a gather load or scatter store for
10651         single-element groups.
10652         (get_load_store_type): Update calls to get_group_load_store_type
10653         and vect_use_strided_gather_scatters_p.
10655 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10656             Alan Hayward  <alan.hayward@arm.com>
10657             David Sherwood  <david.sherwood@arm.com>
10659         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
10660         optional tree argument.
10661         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
10662         null target hooks.
10663         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
10664         but continue to use the current value as a fallback.
10665         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
10666         to compare the updates.
10667         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
10668         (get_load_store_type): Use it when handling a strided access.
10669         (vect_get_strided_load_store_ops): New function.
10670         (vect_get_data_ptr_increment): Likewise.
10671         (vectorizable_load): Handle strided gather loads.  Always pass
10672         a step to vect_create_data_ref_ptr and bump_vector_ptr.
10674 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10675             Alan Hayward  <alan.hayward@arm.com>
10676             David Sherwood  <david.sherwood@arm.com>
10678         * doc/md.texi (gather_load@var{m}): Document.
10679         (mask_gather_load@var{m}): Likewise.
10680         * genopinit.c (main): Add supports_vec_gather_load and
10681         supports_vec_gather_load_cached to target_optabs.
10682         * optabs-tree.c (init_tree_optimization_optabs): Use
10683         ggc_cleared_alloc to allocate target_optabs.
10684         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
10685         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
10686         functions.
10687         * internal-fn.h (internal_load_fn_p): Declare.
10688         (internal_gather_scatter_fn_p): Likewise.
10689         (internal_fn_mask_index): Likewise.
10690         (internal_gather_scatter_fn_supported_p): Likewise.
10691         * internal-fn.c (gather_load_direct): New macro.
10692         (expand_gather_load_optab_fn): New function.
10693         (direct_gather_load_optab_supported_p): New macro.
10694         (direct_internal_fn_optab): New function.
10695         (internal_load_fn_p): Likewise.
10696         (internal_gather_scatter_fn_p): Likewise.
10697         (internal_fn_mask_index): Likewise.
10698         (internal_gather_scatter_fn_supported_p): Likewise.
10699         * optabs-query.c (supports_at_least_one_mode_p): New function.
10700         (supports_vec_gather_load_p): Likewise.
10701         * optabs-query.h (supports_vec_gather_load_p): Declare.
10702         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
10703         and memory_type field.
10704         (NUM_PATTERNS): Bump to 15.
10705         * tree-vect-data-refs.c: Include internal-fn.h.
10706         (vect_gather_scatter_fn_p): New function.
10707         (vect_describe_gather_scatter_call): Likewise.
10708         (vect_check_gather_scatter): Try using internal functions for
10709         gather loads.  Recognize existing calls to a gather load function.
10710         (vect_analyze_data_refs): Consider using gather loads if
10711         supports_vec_gather_load_p.
10712         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
10713         (vect_get_gather_scatter_offset_type): Likewise.
10714         (vect_convert_mask_for_vectype): Likewise.
10715         (vect_add_conversion_to_patterm): Likewise.
10716         (vect_try_gather_scatter_pattern): Likewise.
10717         (vect_recog_gather_scatter_pattern): New pattern recognizer.
10718         (vect_vect_recog_func_ptrs): Add it.
10719         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
10720         internal_fn_mask_index and internal_gather_scatter_fn_p.
10721         (check_load_store_masking): Take the gather_scatter_info as an
10722         argument and handle gather loads.
10723         (vect_get_gather_scatter_ops): New function.
10724         (vectorizable_call): Check internal_load_fn_p.
10725         (vectorizable_load): Likewise.  Handle gather load internal
10726         functions.
10727         (vectorizable_store): Update call to check_load_store_masking.
10728         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
10729         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
10730         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
10731         (aarch64_gather_scale_operand_d): New predicates.
10732         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
10733         (mask_gather_load<mode>): New insns.
10735 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10736             Alan Hayward  <alan.hayward@arm.com>
10737             David Sherwood  <david.sherwood@arm.com>
10739         * optabs.def (fold_left_plus_optab): New optab.
10740         * doc/md.texi (fold_left_plus_@var{m}): Document.
10741         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
10742         * internal-fn.c (fold_left_direct): Define.
10743         (expand_fold_left_optab_fn): Likewise.
10744         (direct_fold_left_optab_supported_p): Likewise.
10745         * fold-const-call.c (fold_const_fold_left): New function.
10746         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
10747         * tree-parloops.c (valid_reduction_p): New function.
10748         (gather_scalar_reductions): Use it.
10749         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
10750         (vect_finish_replace_stmt): Declare.
10751         * tree-vect-loop.c (fold_left_reduction_fn): New function.
10752         (needs_fold_left_reduction_p): New function, split out from...
10753         (vect_is_simple_reduction): ...here.  Accept reductions that
10754         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
10755         (vect_force_simple_reduction): Also store the reduction type in
10756         the assignment's STMT_VINFO_REDUC_TYPE.
10757         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
10758         (merge_with_identity): New function.
10759         (vect_expand_fold_left): Likewise.
10760         (vectorize_fold_left_reduction): Likewise.
10761         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
10762         scalar phi in place for it.  Check for target support and reject
10763         cases that would reassociate the operation.  Defer the transform
10764         phase to vectorize_fold_left_reduction.
10765         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
10766         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
10767         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
10769 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10771         * tree-if-conv.c (predicate_mem_writes): Remove redundant
10772         call to ifc_temp_var.
10774 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10775             Alan Hayward  <alan.hayward@arm.com>
10776             David Sherwood  <david.sherwood@arm.com>
10778         * target.def (legitimize_address_displacement): Take the original
10779         offset as a poly_int.
10780         * targhooks.h (default_legitimize_address_displacement): Update
10781         accordingly.
10782         * targhooks.c (default_legitimize_address_displacement): Likewise.
10783         * doc/tm.texi: Regenerate.
10784         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
10785         as an argument, moving assert of ad->disp == ad->disp_term to...
10786         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
10787         Try calling targetm.legitimize_address_displacement before expanding
10788         the address rather than afterwards, and adjust for the new interface.
10789         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
10790         Match the new hook interface.  Handle SVE addresses.
10791         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
10792         new hook interface.
10794 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10796         * Makefile.in (OBJS): Add early-remat.o.
10797         * target.def (select_early_remat_modes): New hook.
10798         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
10799         * doc/tm.texi: Regenerate.
10800         * targhooks.h (default_select_early_remat_modes): Declare.
10801         * targhooks.c (default_select_early_remat_modes): New function.
10802         * timevar.def (TV_EARLY_REMAT): New timevar.
10803         * passes.def (pass_early_remat): New pass.
10804         * tree-pass.h (make_pass_early_remat): Declare.
10805         * early-remat.c: New file.
10806         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
10807         function.
10808         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
10810 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10811             Alan Hayward  <alan.hayward@arm.com>
10812             David Sherwood  <david.sherwood@arm.com>
10814         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
10815         vfm1 with a bound_epilog parameter.
10816         (vect_do_peeling): Update calls accordingly, and move the prologue
10817         call earlier in the function.  Treat the base bound_epilog as 0 for
10818         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
10819         this base when peeling for gaps.
10820         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
10821         with fully-masked loops.
10822         (vect_estimate_min_profitable_iters): Handle the single peeled
10823         iteration in that case.
10825 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10826             Alan Hayward  <alan.hayward@arm.com>
10827             David Sherwood  <david.sherwood@arm.com>
10829         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
10830         single-element interleaving even if the size is not a power of 2.
10831         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
10832         accesses for single-element interleaving if the group size is
10833         not a power of 2.
10835 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10836             Alan Hayward  <alan.hayward@arm.com>
10837             David Sherwood  <david.sherwood@arm.com>
10839         * doc/md.texi (fold_extract_last_@var{m}): Document.
10840         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
10841         * optabs.def (fold_extract_last_optab): New optab.
10842         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
10843         * internal-fn.c (fold_extract_direct): New macro.
10844         (expand_fold_extract_optab_fn): Likewise.
10845         (direct_fold_extract_optab_supported_p): Likewise.
10846         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
10847         * tree-vect-loop.c (vect_model_reduction_cost): Handle
10848         EXTRACT_LAST_REDUCTION.
10849         (get_initial_def_for_reduction): Do not create an initial vector
10850         for EXTRACT_LAST_REDUCTION reductions.
10851         (vectorizable_reduction): Leave the scalar phi in place for
10852         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
10853         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
10854         epilogue code for EXTRACT_LAST_REDUCTION and defer the
10855         transform phase to vectorizable_condition.
10856         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
10857         split out from...
10858         (vect_finish_stmt_generation): ...here.
10859         (vect_finish_replace_stmt): New function.
10860         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
10861         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
10862         pattern.
10863         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
10865 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10866             Alan Hayward  <alan.hayward@arm.com>
10867             David Sherwood  <david.sherwood@arm.com>
10869         * doc/md.texi (extract_last_@var{m}): Document.
10870         * optabs.def (extract_last_optab): New optab.
10871         * internal-fn.def (EXTRACT_LAST): New internal function.
10872         * internal-fn.c (cond_unary_direct): New macro.
10873         (expand_cond_unary_optab_fn): Likewise.
10874         (direct_cond_unary_optab_supported_p): Likewise.
10875         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
10876         loops using EXTRACT_LAST.
10877         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
10878         (extract_last_<mode>): ...this optab.
10879         (vec_extract<mode><Vel>): Update accordingly.
10881 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10882             Alan Hayward  <alan.hayward@arm.com>
10883             David Sherwood  <david.sherwood@arm.com>
10885         * target.def (empty_mask_is_expensive): New hook.
10886         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
10887         * doc/tm.texi: Regenerate.
10888         * targhooks.h (default_empty_mask_is_expensive): Declare.
10889         * targhooks.c (default_empty_mask_is_expensive): New function.
10890         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
10891         if the target says that empty masks are expensive.
10892         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
10893         New function.
10894         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
10896 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10897             Alan Hayward  <alan.hayward@arm.com>
10898             David Sherwood  <david.sherwood@arm.com>
10900         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
10901         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
10902         (vect_use_loop_mask_for_alignment_p): New function.
10903         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
10904         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
10905         niters_skip argument.  Make sure that the first niters_skip elements
10906         of the first iteration are inactive.
10907         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
10908         Update call to vect_set_loop_masks_directly.
10909         (get_misalign_in_elems): New function, split out from...
10910         (vect_gen_prolog_loop_niters): ...here.
10911         (vect_update_init_of_dr): Take a code argument that specifies whether
10912         the adjustment should be added or subtracted.
10913         (vect_update_init_of_drs): Likewise.
10914         (vect_prepare_for_masked_peels): New function.
10915         (vect_do_peeling): Skip prologue peeling if we're using a mask
10916         instead.  Update call to vect_update_inits_of_drs.
10917         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10918         mask_skip_niters.
10919         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
10920         alignment.  Do not include the number of peeled iterations in
10921         the minimum threshold in that case.
10922         (vectorizable_induction): Adjust the start value down by
10923         LOOP_VINFO_MASK_SKIP_NITERS iterations.
10924         (vect_transform_loop): Call vect_prepare_for_masked_peels.
10925         Take the number of skipped iterations into account when calculating
10926         the loop bounds.
10927         * tree-vect-stmts.c (vect_gen_while_not): New function.
10929 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10930             Alan Hayward  <alan.hayward@arm.com>
10931             David Sherwood  <david.sherwood@arm.com>
10933         * doc/sourcebuild.texi (vect_fully_masked): Document.
10934         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
10935         default value to 0.
10936         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
10937         split out from...
10938         (vect_analyze_loop_2): ...here. Don't check the vectorization
10939         factor against the number of loop iterations if the loop is
10940         fully-masked.
10942 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10943             Alan Hayward  <alan.hayward@arm.com>
10944             David Sherwood  <david.sherwood@arm.com>
10946         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
10947         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
10948         (dump_groups): Update accordingly.
10949         (iv_use::mem_type): New member variable.
10950         (address_p): New function.
10951         (record_use): Add a mem_type argument and initialize the new
10952         mem_type field.
10953         (record_group_use): Add a mem_type argument.  Use address_p.
10954         Remove obsolete null checks of base_object.  Update call to record_use.
10955         (find_interesting_uses_op): Update call to record_group_use.
10956         (find_interesting_uses_cond): Likewise.
10957         (find_interesting_uses_address): Likewise.
10958         (get_mem_type_for_internal_fn): New function.
10959         (find_address_like_use): Likewise.
10960         (find_interesting_uses_stmt): Try find_address_like_use before
10961         calling find_interesting_uses_op.
10962         (addr_offset_valid_p): Use the iv mem_type field as the type
10963         of the addressed memory.
10964         (add_autoinc_candidates): Likewise.
10965         (get_address_cost): Likewise.
10966         (split_small_address_groups_p): Use address_p.
10967         (split_address_groups): Likewise.
10968         (add_iv_candidate_for_use): Likewise.
10969         (autoinc_possible_for_pair): Likewise.
10970         (rewrite_groups): Likewise.
10971         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
10972         (determine_group_iv_cost): Update after split of USE_ADDRESS.
10973         (get_alias_ptr_type_for_ptr_address): New function.
10974         (rewrite_use_address): Rewrite address uses in calls that were
10975         identified by find_address_like_use.
10977 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10978             Alan Hayward  <alan.hayward@arm.com>
10979             David Sherwood  <david.sherwood@arm.com>
10981         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
10982         TARGET_MEM_REFs.
10983         * gimple-expr.h (is_gimple_addressable: Likewise.
10984         * gimple-expr.c (is_gimple_address): Likewise.
10985         * internal-fn.c (expand_call_mem_ref): New function.
10986         (expand_mask_load_optab_fn): Use it.
10987         (expand_mask_store_optab_fn): Likewise.
10989 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10990             Alan Hayward  <alan.hayward@arm.com>
10991             David Sherwood  <david.sherwood@arm.com>
10993         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
10994         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
10995         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
10996         (cond_umax@var{mode}): Document.
10997         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
10998         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
10999         (cond_umin_optab, cond_umax_optab): New optabs.
11000         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
11001         (COND_IOR, COND_XOR): New internal functions.
11002         * internal-fn.h (get_conditional_internal_fn): Declare.
11003         * internal-fn.c (cond_binary_direct): New macro.
11004         (expand_cond_binary_optab_fn): Likewise.
11005         (direct_cond_binary_optab_supported_p): Likewise.
11006         (get_conditional_internal_fn): New function.
11007         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
11008         Cope with reduction statements that are vectorized as calls rather
11009         than assignments.
11010         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
11011         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
11012         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
11013         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
11014         (UNSPEC_COND_EOR): New unspecs.
11015         (optab): Add mappings for them.
11016         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
11017         (sve_int_op, sve_fp_op): New int attributes.
11019 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11020             Alan Hayward  <alan.hayward@arm.com>
11021             David Sherwood  <david.sherwood@arm.com>
11023         * optabs.def (while_ult_optab): New optab.
11024         * doc/md.texi (while_ult@var{m}@var{n}): Document.
11025         * internal-fn.def (WHILE_ULT): New internal function.
11026         * internal-fn.h (direct_internal_fn_supported_p): New override
11027         that takes two types as argument.
11028         * internal-fn.c (while_direct): New macro.
11029         (expand_while_optab_fn): New function.
11030         (convert_optab_supported_p): Likewise.
11031         (direct_while_optab_supported_p): New macro.
11032         * wide-int.h (wi::udiv_ceil): New function.
11033         * tree-vectorizer.h (rgroup_masks): New structure.
11034         (vec_loop_masks): New typedef.
11035         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
11036         and fully_masked_p.
11037         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
11038         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
11039         (vect_max_vf): New function.
11040         (slpeel_make_loop_iterate_ntimes): Delete.
11041         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
11042         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
11043         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
11044         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
11045         internal-fn.h, stor-layout.h and optabs-query.h.
11046         (vect_set_loop_mask): New function.
11047         (add_preheader_seq): Likewise.
11048         (add_header_seq): Likewise.
11049         (interleave_supported_p): Likewise.
11050         (vect_maybe_permute_loop_masks): Likewise.
11051         (vect_set_loop_masks_directly): Likewise.
11052         (vect_set_loop_condition_masked): Likewise.
11053         (vect_set_loop_condition_unmasked): New function, split out from
11054         slpeel_make_loop_iterate_ntimes.
11055         (slpeel_make_loop_iterate_ntimes): Rename to..
11056         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
11057         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
11058         (vect_do_peeling): Update call accordingly.
11059         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
11060         loops.
11061         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11062         mask_compare_type, can_fully_mask_p and fully_masked_p.
11063         (release_vec_loop_masks): New function.
11064         (_loop_vec_info): Use it to free the loop masks.
11065         (can_produce_all_loop_masks_p): New function.
11066         (vect_get_max_nscalars_per_iter): Likewise.
11067         (vect_verify_full_masking): Likewise.
11068         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
11069         retries, and free the mask rgroups before retrying.  Check loop-wide
11070         reasons for disallowing fully-masked loops.  Make the final decision
11071         about whether use a fully-masked loop or not.
11072         (vect_estimate_min_profitable_iters): Do not assume that peeling
11073         for the number of iterations will be needed for fully-masked loops.
11074         (vectorizable_reduction): Disable fully-masked loops.
11075         (vectorizable_live_operation): Likewise.
11076         (vect_halve_mask_nunits): New function.
11077         (vect_double_mask_nunits): Likewise.
11078         (vect_record_loop_mask): Likewise.
11079         (vect_get_loop_mask): Likewise.
11080         (vect_transform_loop): Handle the case in which the final loop
11081         iteration might handle a partial vector.  Call vect_set_loop_condition
11082         instead of slpeel_make_loop_iterate_ntimes.
11083         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
11084         (check_load_store_masking): New function.
11085         (prepare_load_store_mask): Likewise.
11086         (vectorizable_store): Handle fully-masked loops.
11087         (vectorizable_load): Likewise.
11088         (supportable_widening_operation): Use vect_halve_mask_nunits for
11089         booleans.
11090         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
11091         (vect_gen_while): New function.
11092         * config/aarch64/aarch64.md (umax<mode>3): New expander.
11093         (aarch64_uqdec<mode>): New insn.
11095 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11096             Alan Hayward  <alan.hayward@arm.com>
11097             David Sherwood  <david.sherwood@arm.com>
11099         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
11100         (reduc_xor_scal_optab): New optabs.
11101         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
11102         (reduc_xor_scal_@var{m}): Document.
11103         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
11104         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
11105         internal functions.
11106         * fold-const-call.c (fold_const_call): Handle them.
11107         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
11108         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
11109         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
11110         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
11111         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
11112         (UNSPEC_XORV): New unspecs.
11113         (optab): Add entries for them.
11114         (BITWISEV): New int iterator.
11115         (bit_reduc_op): New int attributes.
11117 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11118             Alan Hayward  <alan.hayward@arm.com>
11119             David Sherwood  <david.sherwood@arm.com>
11121         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
11122         * internal-fn.def (VEC_SHL_INSERT): New internal function.
11123         * optabs.def (vec_shl_insert_optab): New optab.
11124         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
11125         (duplicate_and_interleave): Likewise.
11126         * tree-vect-loop.c: Include internal-fn.h.
11127         (neutral_op_for_slp_reduction): New function, split out from
11128         get_initial_defs_for_reduction.
11129         (get_initial_def_for_reduction): Handle option 2 for variable-length
11130         vectors by loading the neutral value into a vector and then shifting
11131         the initial value into element 0.
11132         (get_initial_defs_for_reduction): Replace the code argument with
11133         the neutral value calculated by neutral_op_for_slp_reduction.
11134         Use gimple_build_vector for constant-length vectors.
11135         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
11136         but the first group_size elements have a neutral value.
11137         Use duplicate_and_interleave otherwise.
11138         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
11139         Update call to get_initial_defs_for_reduction.  Handle SLP
11140         reductions for variable-length vectors by creating one vector
11141         result for each scalar result, with the elements associated
11142         with other scalar results stubbed out with the neutral value.
11143         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
11144         Require IFN_VEC_SHL_INSERT for double reductions on
11145         variable-length vectors, or SLP reductions that have
11146         a neutral value.  Require can_duplicate_and_interleave_p
11147         support for variable-length unchained SLP reductions if there
11148         is no neutral value, such as for MIN/MAX reductions.  Also require
11149         the number of vector elements to be a multiple of the number of
11150         SLP statements when doing variable-length unchained SLP reductions.
11151         Update call to vect_create_epilog_for_reduction.
11152         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
11153         and remove initial values.
11154         (duplicate_and_interleave): Make public.
11155         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
11156         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
11158 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11159             Alan Hayward  <alan.hayward@arm.com>
11160             David Sherwood  <david.sherwood@arm.com>
11162         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
11163         (can_duplicate_and_interleave_p): New function.
11164         (vect_get_and_check_slp_defs): Take the vector of statements
11165         rather than just the current one.  Remove excess parentheses.
11166         Restriction rejectinon of vect_constant_def and vect_external_def
11167         for variable-length vectors to boolean types, or types for which
11168         can_duplicate_and_interleave_p is false.
11169         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
11170         (duplicate_and_interleave): New function.
11171         (vect_get_constant_vectors): Use gimple_build_vector for
11172         constant-length vectors and suitable variable-length constant
11173         vectors.  Use duplicate_and_interleave for other variable-length
11174         vectors.  Don't defer the update when inserting new statements.
11176 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11177             Alan Hayward  <alan.hayward@arm.com>
11178             David Sherwood  <david.sherwood@arm.com>
11180         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
11181         min_profitable_iters doesn't go negative.
11183 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11184             Alan Hayward  <alan.hayward@arm.com>
11185             David Sherwood  <david.sherwood@arm.com>
11187         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
11188         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
11189         * optabs.def (vec_mask_load_lanes_optab): New optab.
11190         (vec_mask_store_lanes_optab): Likewise.
11191         * internal-fn.def (MASK_LOAD_LANES): New internal function.
11192         (MASK_STORE_LANES): Likewise.
11193         * internal-fn.c (mask_load_lanes_direct): New macro.
11194         (mask_store_lanes_direct): Likewise.
11195         (expand_mask_load_optab_fn): Handle masked operations.
11196         (expand_mask_load_lanes_optab_fn): New macro.
11197         (expand_mask_store_optab_fn): Handle masked operations.
11198         (expand_mask_store_lanes_optab_fn): New macro.
11199         (direct_mask_load_lanes_optab_supported_p): Likewise.
11200         (direct_mask_store_lanes_optab_supported_p): Likewise.
11201         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
11202         parameter.
11203         (vect_load_lanes_supported): Likewise.
11204         * tree-vect-data-refs.c (strip_conversion): New function.
11205         (can_group_stmts_p): Likewise.
11206         (vect_analyze_data_ref_accesses): Use it instead of checking
11207         for a pair of assignments.
11208         (vect_store_lanes_supported): Take a masked_p parameter.
11209         (vect_load_lanes_supported): Likewise.
11210         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
11211         vect_store_lanes_supported and vect_load_lanes_supported.
11212         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
11213         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
11214         parameter.  Don't allow gaps for masked accesses.
11215         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
11216         and vect_load_lanes_supported.
11217         (get_load_store_type): Take a masked_p parameter and update
11218         call to get_group_load_store_type.
11219         (vectorizable_store): Update call to get_load_store_type.
11220         Handle IFN_MASK_STORE_LANES.
11221         (vectorizable_load): Update call to get_load_store_type.
11222         Handle IFN_MASK_LOAD_LANES.
11224 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11225             Alan Hayward  <alan.hayward@arm.com>
11226             David Sherwood  <david.sherwood@arm.com>
11228         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
11229         modes for SVE.
11230         * config/aarch64/aarch64-protos.h
11231         (aarch64_sve_struct_memory_operand_p): Declare.
11232         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
11233         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
11234         (VPRED, vpred): Handle SVE structure modes.
11235         * config/aarch64/constraints.md (Utx): New constraint.
11236         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
11237         (aarch64_sve_struct_nonimmediate_operand): New predicates.
11238         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
11239         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
11240         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
11241         structure modes.  Split into pieces after RA.
11242         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
11243         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
11244         New patterns.
11245         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
11246         SVE structure modes.
11247         (aarch64_classify_address): Likewise.
11248         (sizetochar): Move earlier in file.
11249         (aarch64_print_operand): Handle SVE register lists.
11250         (aarch64_array_mode): New function.
11251         (aarch64_sve_struct_memory_operand_p): Likewise.
11252         (TARGET_ARRAY_MODE): Redefine.
11254 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11255             Alan Hayward  <alan.hayward@arm.com>
11256             David Sherwood  <david.sherwood@arm.com>
11258         * target.def (array_mode): New target hook.
11259         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
11260         * doc/tm.texi: Regenerate.
11261         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
11262         * hooks.c (hook_optmode_mode_uhwi_none): New function.
11263         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
11264         targetm.array_mode.
11265         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
11266         type sizes.
11268 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11269             Alan Hayward  <alan.hayward@arm.com>
11270             David Sherwood  <david.sherwood@arm.com>
11272         * fold-const.c (fold_binary_loc): Check the argument types
11273         rather than the result type when testing for a vector operation.
11275 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11277         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
11278         * doc/tm.texi: Regenerate.
11280 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11281             Alan Hayward  <alan.hayward@arm.com>
11282             David Sherwood  <david.sherwood@arm.com>
11284         * doc/invoke.texi (-msve-vector-bits=): Document new option.
11285         (sve): Document new AArch64 extension.
11286         * doc/md.texi (w): Extend the description of the AArch64
11287         constraint to include SVE vectors.
11288         (Upl, Upa): Document new AArch64 predicate constraints.
11289         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
11290         enum.
11291         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
11292         (msve-vector-bits=): New option.
11293         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
11294         SVE when these are disabled.
11295         (sve): New extension.
11296         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
11297         modes.  Adjust their number of units based on aarch64_sve_vg.
11298         (MAX_BITSIZE_MODE_ANY_MODE): Define.
11299         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
11300         aarch64_addr_query_type.
11301         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
11302         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
11303         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
11304         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
11305         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
11306         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
11307         (aarch64_simd_imm_zero_p): Delete.
11308         (aarch64_check_zero_based_sve_index_immediate): Declare.
11309         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11310         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11311         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11312         (aarch64_sve_float_mul_immediate_p): Likewise.
11313         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11314         rather than an rtx.
11315         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
11316         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
11317         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
11318         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
11319         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
11320         (aarch64_regmode_natural_size): Likewise.
11321         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
11322         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
11323         left one place.
11324         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
11325         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
11326         for VG and the SVE predicate registers.
11327         (V_ALIASES): Add a "z"-prefixed alias.
11328         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
11329         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
11330         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
11331         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
11332         (REG_CLASS_NAMES): Add entries for them.
11333         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
11334         and the predicate registers.
11335         (aarch64_sve_vg): Declare.
11336         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
11337         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
11338         (REGMODE_NATURAL_SIZE): Define.
11339         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
11340         SVE macros.
11341         * config/aarch64/aarch64.c: Include cfgrtl.h.
11342         (simd_immediate_info): Add a constructor for series vectors,
11343         and an associated step field.
11344         (aarch64_sve_vg): New variable.
11345         (aarch64_dbx_register_number): Handle VG and the predicate registers.
11346         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
11347         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
11348         (VEC_ANY_DATA, VEC_STRUCT): New constants.
11349         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
11350         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
11351         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
11352         (aarch64_get_mask_mode): New functions.
11353         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
11354         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
11355         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
11356         predicate modes and predicate registers.  Explicitly restrict
11357         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
11358         to store a vector mode if it is recognized by
11359         aarch64_classify_vector_mode.
11360         (aarch64_regmode_natural_size): New function.
11361         (aarch64_hard_regno_caller_save_mode): Return the original mode
11362         for predicates.
11363         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
11364         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
11365         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
11366         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
11367         functions.
11368         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
11369         does not overlap dest if the function is frame-related.  Handle
11370         SVE constants.
11371         (aarch64_split_add_offset): New function.
11372         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
11373         them aarch64_add_offset.
11374         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
11375         and update call to aarch64_sub_sp.
11376         (aarch64_add_cfa_expression): New function.
11377         (aarch64_expand_prologue): Pass extra temporary registers to the
11378         functions above.  Handle the case in which we need to emit new
11379         DW_CFA_expressions for registers that were originally saved
11380         relative to the stack pointer, but now have to be expressed
11381         relative to the frame pointer.
11382         (aarch64_output_mi_thunk): Pass extra temporary registers to the
11383         functions above.
11384         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
11385         IP0 and IP1 values for SVE frames.
11386         (aarch64_expand_vec_series): New function.
11387         (aarch64_expand_sve_widened_duplicate): Likewise.
11388         (aarch64_expand_sve_const_vector): Likewise.
11389         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
11390         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
11391         into the register, rather than emitting a SET directly.
11392         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
11393         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
11394         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
11395         (offset_9bit_signed_scaled_p): New functions.
11396         (aarch64_replicate_bitmask_imm): New function.
11397         (aarch64_bitmask_imm): Use it.
11398         (aarch64_cannot_force_const_mem): Reject expressions involving
11399         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
11400         (aarch64_classify_index): Handle SVE indices, by requiring
11401         a plain register index with a scale that matches the element size.
11402         (aarch64_classify_address): Handle SVE addresses.  Assert that
11403         the mode of the address is VOIDmode or an integer mode.
11404         Update call to aarch64_classify_symbol.
11405         (aarch64_classify_symbolic_expression): Update call to
11406         aarch64_classify_symbol.
11407         (aarch64_const_vec_all_in_range_p): New function.
11408         (aarch64_print_vector_float_operand): Likewise.
11409         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
11410         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
11411         and the FP immediates 1.0 and 0.5.
11412         (aarch64_print_address_internal): Handle SVE addresses.
11413         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
11414         (aarch64_regno_regclass): Handle predicate registers.
11415         (aarch64_secondary_reload): Handle big-endian reloads of SVE
11416         data modes.
11417         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
11418         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
11419         (aarch64_convert_sve_vector_bits): New function.
11420         (aarch64_override_options): Use it to handle -msve-vector-bits=.
11421         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11422         rather than an rtx.
11423         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
11424         Handle SVE vector and predicate modes.  Accept VL-based constants
11425         that need only one temporary register, and VL offsets that require
11426         no temporary registers.
11427         (aarch64_conditional_register_usage): Mark the predicate registers
11428         as fixed if SVE isn't available.
11429         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
11430         Return true for SVE vector and predicate modes.
11431         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
11432         rather than an unsigned int.  Handle SVE modes.
11433         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
11434         SVE modes.
11435         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
11436         if SVE is enabled.
11437         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11438         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11439         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11440         (aarch64_sve_float_mul_immediate_p): New functions.
11441         (aarch64_sve_valid_immediate): New function.
11442         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
11443         Explicitly reject structure modes.  Check for INDEX constants.
11444         Handle PTRUE and PFALSE constants.
11445         (aarch64_check_zero_based_sve_index_immediate): New function.
11446         (aarch64_simd_imm_zero_p): Delete.
11447         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
11448         vector modes.  Accept constants in the range of CNT[BHWD].
11449         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
11450         ask for an Advanced SIMD mode.
11451         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
11452         (aarch64_simd_vector_alignment): Handle SVE predicates.
11453         (aarch64_vectorize_preferred_vector_alignment): New function.
11454         (aarch64_simd_vector_alignment_reachable): Use it instead of
11455         the vector size.
11456         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
11457         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
11458         functions.
11459         (MAX_VECT_LEN): Delete.
11460         (expand_vec_perm_d): Add a vec_flags field.
11461         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
11462         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
11463         (aarch64_evpc_ext): Don't apply a big-endian lane correction
11464         for SVE modes.
11465         (aarch64_evpc_rev): Rename to...
11466         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
11467         (aarch64_evpc_rev_global): New function.
11468         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
11469         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
11470         MAX_VECT_LEN.
11471         (aarch64_evpc_sve_tbl): New function.
11472         (aarch64_expand_vec_perm_const_1): Update after rename of
11473         aarch64_evpc_rev.  Handle SVE permutes too, trying
11474         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
11475         than aarch64_evpc_tbl.
11476         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
11477         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
11478         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
11479         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
11480         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
11481         (aarch64_expand_sve_vcond): New functions.
11482         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
11483         of aarch64_vector_mode_p.
11484         (aarch64_dwarf_poly_indeterminate_value): New function.
11485         (aarch64_compute_pressure_classes): Likewise.
11486         (aarch64_can_change_mode_class): Likewise.
11487         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
11488         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
11489         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
11490         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
11491         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
11492         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
11493         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
11494         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
11495         constraints.
11496         (Dn, Dl, Dr): Accept const as well as const_vector.
11497         (Dz): Likewise.  Compare against CONST0_RTX.
11498         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
11499         of "vector" where appropriate.
11500         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
11501         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
11502         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
11503         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
11504         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
11505         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
11506         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
11507         (v_int_equiv): Extend to SVE modes.
11508         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
11509         mode attributes.
11510         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
11511         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
11512         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
11513         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
11514         (SVE_COND_FP_CMP): New int iterators.
11515         (perm_hilo): Handle the new unpack unspecs.
11516         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
11517         attributes.
11518         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
11519         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
11520         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
11521         (aarch64_equality_operator, aarch64_constant_vector_operand)
11522         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
11523         (aarch64_sve_nonimmediate_operand): Likewise.
11524         (aarch64_sve_general_operand): Likewise.
11525         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
11526         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
11527         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
11528         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
11529         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
11530         (aarch64_sve_float_arith_immediate): Likewise.
11531         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
11532         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
11533         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
11534         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
11535         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
11536         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
11537         (aarch64_sve_float_arith_operand): Likewise.
11538         (aarch64_sve_float_arith_with_sub_operand): Likewise.
11539         (aarch64_sve_float_mul_operand): Likewise.
11540         (aarch64_sve_vec_perm_operand): Likewise.
11541         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
11542         (aarch64_mov_operand): Accept const_poly_int and const_vector.
11543         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
11544         as well as const_vector.
11545         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
11546         in file.  Use CONST0_RTX and CONSTM1_RTX.
11547         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
11548         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
11549         Use aarch64_simd_imm_zero.
11550         * config/aarch64/aarch64-sve.md: New file.
11551         * config/aarch64/aarch64.md: Include it.
11552         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
11553         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
11554         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
11555         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
11556         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
11557         (sve): New attribute.
11558         (enabled): Disable instructions with the sve attribute unless
11559         TARGET_SVE.
11560         (movqi, movhi): Pass CONST_POLY_INT operaneds through
11561         aarch64_expand_mov_immediate.
11562         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
11563         CNT[BHSD] immediates.
11564         (movti): Split CONST_POLY_INT moves into two halves.
11565         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
11566         Split additions that need a temporary here if the destination
11567         is the stack pointer.
11568         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
11569         (*add<mode>3_poly_1): New instruction.
11570         (set_clobber_cc): New expander.
11572 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11574         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
11575         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
11576         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
11577         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
11578         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
11579         Change innermode from fixed_mode_size to machine_mode.
11580         (simplify_subreg): Update call accordingly.  Handle a constant-sized
11581         subreg of a variable-length CONST_VECTOR.
11583 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11584             Alan Hayward  <alan.hayward@arm.com>
11585             David Sherwood  <david.sherwood@arm.com>
11587         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
11588         (add_offset_to_base): New function, split out from...
11589         (create_mem_ref): ...here.  When handling a scale other than 1,
11590         check first whether the address is valid without the offset.
11591         Add it into the base if so, leaving the index and scale as-is.
11593 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
11595         PR c++/83778
11596         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
11597         fold_for_warn before checking if arg2 is INTEGER_CST.
11599 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
11601         * config/rs6000/predicates.md (load_multiple_operation): Delete.
11602         (store_multiple_operation): Delete.
11603         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
11604         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
11605         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
11606         guarded by TARGET_STRING.
11607         (rs6000_output_load_multiple): Delete.
11608         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
11609         OPTION_MASK_STRING / TARGET_STRING handling.
11610         (print_operand) <'N', 'O'>: Add comment that these are unused now.
11611         (const rs6000_opt_masks) <"string">: Change mask to 0.
11612         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
11613         (MASK_STRING): Delete.
11614         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
11615         parts.  Simplify.
11616         (load_multiple): Delete.
11617         (*ldmsi8): Delete.
11618         (*ldmsi7): Delete.
11619         (*ldmsi6): Delete.
11620         (*ldmsi5): Delete.
11621         (*ldmsi4): Delete.
11622         (*ldmsi3): Delete.
11623         (store_multiple): Delete.
11624         (*stmsi8): Delete.
11625         (*stmsi7): Delete.
11626         (*stmsi6): Delete.
11627         (*stmsi5): Delete.
11628         (*stmsi4): Delete.
11629         (*stmsi3): Delete.
11630         (movmemsi_8reg): Delete.
11631         (corresponding unnamed define_insn): Delete.
11632         (movmemsi_6reg): Delete.
11633         (corresponding unnamed define_insn): Delete.
11634         (movmemsi_4reg): Delete.
11635         (corresponding unnamed define_insn): Delete.
11636         (movmemsi_2reg): Delete.
11637         (corresponding unnamed define_insn): Delete.
11638         (movmemsi_1reg): Delete.
11639         (corresponding unnamed define_insn): Delete.
11640         * config/rs6000/rs6000.opt (mno-string): New.
11641         (mstring): Replace by deprecation warning stub.
11642         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
11644 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
11646         * regrename.c (regrename_do_replace): If replacing the same
11647         reg multiple times, try to reuse last created gen_raw_REG.
11649         PR debug/81155
11650         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
11651         main to workaround a bug in GDB.
11653 2018-01-12  Tom de Vries  <tom@codesourcery.com>
11655         PR target/83737
11656         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
11658 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
11660         PR rtl-optimization/80481
11661         * ira-color.c (get_cap_member): New function.
11662         (allocnos_conflict_by_live_ranges_p): Use it.
11663         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
11664         (setup_slot_coalesced_allocno_live_ranges): Ditto.
11666 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
11668         PR target/83628
11669         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
11670         (*saddl_se_1): Ditto.
11671         (*ssubsi_1): Ditto.
11672         (*ssubl_se_1): Ditto.
11674 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
11676         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
11677         rather than wi::to_widest for DR_INITs.
11678         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
11679         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
11680         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
11681         INTEGER_CSTs.
11682         (vect_analyze_group_access_1): Note that here.
11684 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
11686         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
11687         polynomial type sizes.
11689 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
11691         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
11692         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
11693         (gimple_add_tmp_var): Likewise.
11695 2018-01-12  Martin Liska  <mliska@suse.cz>
11697         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
11698         (gimple_alloc_sizes): Likewise.
11699         (dump_gimple_statistics): Use PRIu64 in printf format.
11700         * gimple.h: Change uint64_t to int.
11702 2018-01-12  Martin Liska  <mliska@suse.cz>
11704         * tree-core.h: Use uint64_t instead of int.
11705         * tree.c (tree_node_counts): Likewise.
11706         (tree_node_sizes): Likewise.
11707         (dump_tree_statistics): Use PRIu64 in printf format.
11709 2018-01-12  Martin Liska  <mliska@suse.cz>
11711         * Makefile.in: As qsort_chk is implemented in vec.c, add
11712         vec.o to linkage of gencfn-macros.
11713         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
11714         passing the info to record_node_allocation_statistics.
11715         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
11716         and pass the info.
11717         * ggc-common.c (struct ggc_usage): Add operator== and use
11718         it in operator< and compare function.
11719         * mem-stats.h (struct mem_usage): Likewise.
11720         * vec.c (struct vec_usage): Remove operator< and compare
11721         function. Can be simply inherited.
11723 2018-01-12  Martin Jambor  <mjambor@suse.cz>
11725         PR target/81616
11726         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
11727         * tree-ssa-math-opts.c: Include domwalk.h.
11728         (convert_mult_to_fma_1): New function.
11729         (fma_transformation_info): New type.
11730         (fma_deferring_state): Likewise.
11731         (cancel_fma_deferring): New function.
11732         (result_of_phi): Likewise.
11733         (last_fma_candidate_feeds_initial_phi): Likewise.
11734         (convert_mult_to_fma): Added deferring logic, split actual
11735         transformation to convert_mult_to_fma_1.
11736         (math_opts_dom_walker): New type.
11737         (math_opts_dom_walker::after_dom_children): New method, body moved
11738         here from pass_optimize_widening_mul::execute, added deferring logic
11739         bits.
11740         (pass_optimize_widening_mul::execute): Moved most of code to
11741         math_opts_dom_walker::after_dom_children.
11742         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
11743         * config/i386/i386.c (ix86_option_override_internal): Added
11744         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
11746 2018-01-12  Richard Biener  <rguenther@suse.de>
11748         PR debug/83157
11749         * dwarf2out.c (gen_variable_die): Do not reset old_die for
11750         inline instance vars.
11752 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
11754         PR target/81819
11755         * config/rx/rx.c (rx_is_restricted_memory_address):
11756         Handle SUBREG case.
11758 2018-01-12  Richard Biener  <rguenther@suse.de>
11760         PR tree-optimization/80846
11761         * target.def (split_reduction): New target hook.
11762         * targhooks.c (default_split_reduction): New function.
11763         * targhooks.h (default_split_reduction): Declare.
11764         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
11765         target requests first reduce vectors by combining low and high
11766         parts.
11767         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
11768         (get_vectype_for_scalar_type_and_size): Export.
11769         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
11770         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
11771         * doc/tm.texi: Regenerate.
11772         * config/i386/i386.c (ix86_split_reduction): Implement
11773         TARGET_VECTORIZE_SPLIT_REDUCTION.
11775 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
11777         PR target/83368
11778         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
11779         in PIC mode except for TARGET_VXWORKS_RTP.
11780         * config/sparc/sparc.c: Include cfgrtl.h.
11781         (TARGET_INIT_PIC_REG): Define.
11782         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
11783         (sparc_pic_register_p): New predicate.
11784         (sparc_legitimate_address_p): Use it.
11785         (sparc_legitimize_pic_address): Likewise.
11786         (sparc_delegitimize_address): Likewise.
11787         (sparc_mode_dependent_address_p): Likewise.
11788         (gen_load_pcrel_sym): Remove 4th parameter.
11789         (load_got_register): Adjust call to above.  Remove obsolete stuff.
11790         (sparc_expand_prologue): Do not call load_got_register here.
11791         (sparc_flat_expand_prologue): Likewise.
11792         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
11793         (sparc_use_pseudo_pic_reg): New function.
11794         (sparc_init_pic_reg): Likewise.
11795         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
11796         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
11798 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
11800         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
11801         Add item for branch_cost.
11803 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
11805         PR rtl-optimization/83565
11806         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
11807         not extend the result to a larger mode for rotate operations.
11808         (num_sign_bit_copies1): Likewise.
11810 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
11812         PR target/40411
11813         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
11814         -symbolic.
11815         Use values-Xc.o for -pedantic.
11816         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
11818 2018-01-12  Martin Liska  <mliska@suse.cz>
11820         PR ipa/83054
11821         * ipa-devirt.c (final_warning_record::grow_type_warnings):
11822         New function.
11823         (possible_polymorphic_call_targets): Use it.
11824         (ipa_devirt): Likewise.
11826 2018-01-12  Martin Liska  <mliska@suse.cz>
11828         * profile-count.h (enum profile_quality): Use 0 as invalid
11829         enum value of profile_quality.
11831 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
11833         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
11834         -mext-string options.
11836 2018-01-12  Richard Biener  <rguenther@suse.de>
11838         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
11839         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
11840         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
11841         Likewise.
11842         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
11844 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
11846         * configure.ac (--with-long-double-format): Add support for the
11847         configuration option to change the default long double format on
11848         PowerPC systems.
11849         * config.gcc (powerpc*-linux*-*): Likewise.
11850         * configure: Regenerate.
11851         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
11852         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
11853         used without modification.
11855 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11857         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
11858         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
11859         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
11860         MISC_BUILTIN_SPEC_BARRIER.
11861         (rs6000_init_builtins): Likewise.
11862         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
11863         enum value.
11864         (speculation_barrier): New define_insn.
11865         * doc/extend.texi: Document __builtin_speculation_barrier.
11867 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
11869         PR target/83203
11870         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
11871         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
11872         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
11873         iterators.
11874         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
11875         integral modes instead of "ss" and "sd".
11876         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
11877         vectors with 32-bit and 64-bit elements.
11878         (vecdupssescalarmodesuffix): New mode attribute.
11879         (vec_dup<mode>): Use it.
11881 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
11883         PR target/83330
11884         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
11885         frame if argument is passed on stack.
11887 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
11889         PR target/82682
11890         * ree.c (combine_reaching_defs): Optimize also
11891         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
11892         reg2=any_extend(exp); reg1=reg2;, formatting fix.
11894 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
11896         PR middle-end/83189
11897         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
11899 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
11901         PR middle-end/83718
11902         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
11903         after they are computed.
11905 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
11907         PR tree-optimization/83695
11908         * gimple-loop-linterchange.cc
11909         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
11910         reset cached scev information after interchange.
11911         (pass_linterchange::execute): Remove call to scev_reset_htab.
11913 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11915         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
11916         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
11917         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
11918         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
11919         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
11920         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
11921         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
11922         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
11923         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
11924         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
11925         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
11926         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
11927         (V_lane_reg): Likewise.
11928         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
11929         New define_expand.
11930         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
11931         (vfmal_lane_low<mode>_intrinsic,
11932         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
11933         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
11934         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
11935         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
11936         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
11937         vfmsl_lane_high<mode>_intrinsic): New define_insns.
11939 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11941         * config/arm/arm-cpus.in (fp16fml): New feature.
11942         (ALL_SIMD): Add fp16fml.
11943         (armv8.2-a): Add fp16fml as an option.
11944         (armv8.3-a): Likewise.
11945         (armv8.4-a): Add fp16fml as part of fp16.
11946         * config/arm/arm.h (TARGET_FP16FML): Define.
11947         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
11948         when appropriate.
11949         * config/arm/arm-modes.def (V2HF): Define.
11950         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
11951         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
11952         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
11953         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
11954         vfmsl_low, vfmsl_high): New set of builtins.
11955         * config/arm/iterators.md (PLUSMINUS): New code iterator.
11956         (vfml_op): New code attribute.
11957         (VFMLHALVES): New int iterator.
11958         (VFML, VFMLSEL): New mode attributes.
11959         (V_reg): Define mapping for V2HF.
11960         (V_hi, V_lo): New mode attributes.
11961         (VF_constraint): Likewise.
11962         (vfml_half, vfml_half_selector): New int attributes.
11963         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
11964         define_expand.
11965         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
11966         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
11967         New define_insn.
11968         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
11969         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
11970         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
11971         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
11972         documentation.
11973         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
11974         Document new effective target and option set.
11976 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11978         * config/arm/arm-cpus.in (armv8_4): New feature.
11979         (ARMv8_4a): New fgroup.
11980         (armv8.4-a): New arch.
11981         * config/arm/arm-tables.opt: Regenerate.
11982         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
11983         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
11984         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
11985         Add matching rules for -march=armv8.4-a and extensions.
11986         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
11988 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
11990         PR target/81821
11991         * config/rx/rx.md (BW): New mode attribute.
11992         (sync_lock_test_and_setsi): Add mode suffix to insn output.
11994 2018-01-11  Richard Biener  <rguenther@suse.de>
11996         PR tree-optimization/83435
11997         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
11998         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
11999         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
12001 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12002             Alan Hayward  <alan.hayward@arm.com>
12003             David Sherwood  <david.sherwood@arm.com>
12005         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
12006         field.
12007         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
12008         (aarch64_print_address_internal): Use it to check for a zero offset.
12010 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12011             Alan Hayward  <alan.hayward@arm.com>
12012             David Sherwood  <david.sherwood@arm.com>
12014         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
12015         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
12016         Return a poly_int64 rather than a HOST_WIDE_INT.
12017         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
12018         rather than a HOST_WIDE_INT.
12019         * config/aarch64/aarch64.h (aarch64_frame): Protect with
12020         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
12021         hard_fp_offset, frame_size, initial_adjust, callee_offset and
12022         final_offset from HOST_WIDE_INT to poly_int64.
12023         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
12024         to_constant when getting the number of units in an Advanced SIMD
12025         mode.
12026         (aarch64_builtin_vectorized_function): Check for a constant number
12027         of units.
12028         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
12029         GET_MODE_SIZE.
12030         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
12031         attribute instead of GET_MODE_NUNITS.
12032         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
12033         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
12034         GET_MODE_SIZE for fixed-size registers.
12035         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
12036         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
12037         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
12038         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
12039         (aarch64_print_operand, aarch64_print_address_internal)
12040         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
12041         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
12042         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
12043         Handle polynomial GET_MODE_SIZE.
12044         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
12045         wider than SImode without modification.
12046         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
12047         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
12048         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
12049         passing and returning SVE modes.
12050         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
12051         rather than GEN_INT.
12052         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
12053         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
12054         (aarch64_allocate_and_probe_stack_space): Likewise.
12055         (aarch64_layout_frame): Cope with polynomial offsets.
12056         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
12057         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
12058         polynomial offsets.
12059         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
12060         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
12061         poly_int64 rather than a HOST_WIDE_INT.
12062         (aarch64_get_separate_components, aarch64_process_components)
12063         (aarch64_expand_prologue, aarch64_expand_epilogue)
12064         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
12065         (aarch64_anchor_offset): New function, split out from...
12066         (aarch64_legitimize_address): ...here.
12067         (aarch64_builtin_vectorization_cost): Handle polynomial
12068         TYPE_VECTOR_SUBPARTS.
12069         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
12070         GET_MODE_NUNITS.
12071         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
12072         number of elements from the PARALLEL rather than the mode.
12073         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
12074         rather than GET_MODE_BITSIZE.
12075         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
12076         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
12077         (aarch64_expand_vec_perm_const_1): Handle polynomial
12078         d->perm.length () and d->perm elements.
12079         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
12080         Apply to_constant to d->perm elements.
12081         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
12082         polynomial CONST_VECTOR_NUNITS.
12083         (aarch64_move_pointer): Take amount as a poly_int64 rather
12084         than an int.
12085         (aarch64_progress_pointer): Avoid temporary variable.
12086         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
12087         the mode attribute instead of GET_MODE.
12089 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12090             Alan Hayward  <alan.hayward@arm.com>
12091             David Sherwood  <david.sherwood@arm.com>
12093         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
12094         x exists before using it.
12095         (aarch64_add_constant_internal): Rename to...
12096         (aarch64_add_offset_1): ...this.  Replace regnum with separate
12097         src and dest rtxes.  Handle the case in which they're different,
12098         including when the offset is zero.  Replace scratchreg with an rtx.
12099         Use 2 additions if there is no spare register into which we can
12100         move a 16-bit constant.
12101         (aarch64_add_constant): Delete.
12102         (aarch64_add_offset): Replace reg with separate src and dest
12103         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
12104         Use aarch64_add_offset_1.
12105         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
12106         an rtx rather than an int.  Take the delta as a poly_int64
12107         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
12108         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
12109         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
12110         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
12111         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
12112         and aarch64_add_sp.
12113         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
12114         aarch64_add_constant.
12116 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12118         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
12119         Use scalar_float_mode.
12121 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12123         * config/aarch64/aarch64-simd.md
12124         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
12125         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
12126         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
12127         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
12128         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
12129         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
12130         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
12131         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
12132         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
12133         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
12135 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12137         PR target/83514
12138         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
12139         targ_options->x_arm_arch_string is non NULL.
12141 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
12143         * config/aarch64/aarch64.h
12144         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
12146 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
12148         PR target/82096
12149         * expmed.c (emit_store_flag_force): Swap if const op0
12150         and change VOIDmode to mode of op0.
12152 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12154         PR rtl-optimization/83761
12155         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
12156         than bytes to mode_for_size.
12158 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12160         PR middle-end/83189
12161         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
12162         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
12163         profile.
12165 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12167         PR middle-end/83575
12168         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
12169         when in layout mode.
12170         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
12171         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
12172         partition fixup.
12174 2018-01-10  Michael Collison  <michael.collison@arm.com>
12176         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
12177         * config/aarch64/aarch64-option-extension.def: Add
12178         AARCH64_OPT_EXTENSION of 'fp16fml'.
12179         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12180         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
12181         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
12182         * config/aarch64/constraints.md (Ui7): New constraint.
12183         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
12184         (VFMLA_SEL_W): Ditto.
12185         (f16quad): Ditto.
12186         (f16mac1): Ditto.
12187         (VFMLA16_LOW): New int iterator.
12188         (VFMLA16_HIGH): Ditto.
12189         (UNSPEC_FMLAL): New unspec.
12190         (UNSPEC_FMLSL): Ditto.
12191         (UNSPEC_FMLAL2): Ditto.
12192         (UNSPEC_FMLSL2): Ditto.
12193         (f16mac): New code attribute.
12194         * config/aarch64/aarch64-simd-builtins.def
12195         (aarch64_fmlal_lowv2sf): Ditto.
12196         (aarch64_fmlsl_lowv2sf): Ditto.
12197         (aarch64_fmlalq_lowv4sf): Ditto.
12198         (aarch64_fmlslq_lowv4sf): Ditto.
12199         (aarch64_fmlal_highv2sf): Ditto.
12200         (aarch64_fmlsl_highv2sf): Ditto.
12201         (aarch64_fmlalq_highv4sf): Ditto.
12202         (aarch64_fmlslq_highv4sf): Ditto.
12203         (aarch64_fmlal_lane_lowv2sf): Ditto.
12204         (aarch64_fmlsl_lane_lowv2sf): Ditto.
12205         (aarch64_fmlal_laneq_lowv2sf): Ditto.
12206         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
12207         (aarch64_fmlalq_lane_lowv4sf): Ditto.
12208         (aarch64_fmlsl_lane_lowv4sf): Ditto.
12209         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
12210         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
12211         (aarch64_fmlal_lane_highv2sf): Ditto.
12212         (aarch64_fmlsl_lane_highv2sf): Ditto.
12213         (aarch64_fmlal_laneq_highv2sf): Ditto.
12214         (aarch64_fmlsl_laneq_highv2sf): Ditto.
12215         (aarch64_fmlalq_lane_highv4sf): Ditto.
12216         (aarch64_fmlsl_lane_highv4sf): Ditto.
12217         (aarch64_fmlalq_laneq_highv4sf): Ditto.
12218         (aarch64_fmlsl_laneq_highv4sf): Ditto.
12219         * config/aarch64/aarch64-simd.md:
12220         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
12221         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12222         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
12223         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12224         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
12225         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
12226         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
12227         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
12228         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
12229         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
12230         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
12231         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
12232         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
12233         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
12234         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
12235         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
12236         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
12237         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
12238         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
12239         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
12240         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
12241         (vfmlsl_low_u32): Ditto.
12242         (vfmlalq_low_u32): Ditto.
12243         (vfmlslq_low_u32): Ditto.
12244         (vfmlal_high_u32): Ditto.
12245         (vfmlsl_high_u32): Ditto.
12246         (vfmlalq_high_u32): Ditto.
12247         (vfmlslq_high_u32): Ditto.
12248         (vfmlal_lane_low_u32): Ditto.
12249         (vfmlsl_lane_low_u32): Ditto.
12250         (vfmlal_laneq_low_u32): Ditto.
12251         (vfmlsl_laneq_low_u32): Ditto.
12252         (vfmlalq_lane_low_u32): Ditto.
12253         (vfmlslq_lane_low_u32): Ditto.
12254         (vfmlalq_laneq_low_u32): Ditto.
12255         (vfmlslq_laneq_low_u32): Ditto.
12256         (vfmlal_lane_high_u32): Ditto.
12257         (vfmlsl_lane_high_u32): Ditto.
12258         (vfmlal_laneq_high_u32): Ditto.
12259         (vfmlsl_laneq_high_u32): Ditto.
12260         (vfmlalq_lane_high_u32): Ditto.
12261         (vfmlslq_lane_high_u32): Ditto.
12262         (vfmlalq_laneq_high_u32): Ditto.
12263         (vfmlslq_laneq_high_u32): Ditto.
12264         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
12265         (AARCH64_FL_FOR_ARCH8_4): New.
12266         (AARCH64_ISA_F16FML): New ISA flag.
12267         (TARGET_F16FML): New feature flag for fp16fml.
12268         (doc/invoke.texi): Document new fp16fml option.
12270 2018-01-10  Michael Collison  <michael.collison@arm.com>
12272         * config/aarch64/aarch64-builtins.c:
12273         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
12274         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12275         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
12276         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
12277         (AARCH64_ISA_SHA3): New ISA flag.
12278         (TARGET_SHA3): New feature flag for sha3.
12279         * config/aarch64/iterators.md (sha512_op): New int attribute.
12280         (CRYPTO_SHA512): New int iterator.
12281         (UNSPEC_SHA512H): New unspec.
12282         (UNSPEC_SHA512H2): Ditto.
12283         (UNSPEC_SHA512SU0): Ditto.
12284         (UNSPEC_SHA512SU1): Ditto.
12285         * config/aarch64/aarch64-simd-builtins.def
12286         (aarch64_crypto_sha512hqv2di): New builtin.
12287         (aarch64_crypto_sha512h2qv2di): Ditto.
12288         (aarch64_crypto_sha512su0qv2di): Ditto.
12289         (aarch64_crypto_sha512su1qv2di): Ditto.
12290         (aarch64_eor3qv8hi): Ditto.
12291         (aarch64_rax1qv2di): Ditto.
12292         (aarch64_xarqv2di): Ditto.
12293         (aarch64_bcaxqv8hi): Ditto.
12294         * config/aarch64/aarch64-simd.md:
12295         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
12296         (aarch64_crypto_sha512su0qv2di): Ditto.
12297         (aarch64_crypto_sha512su1qv2di): Ditto.
12298         (aarch64_eor3qv8hi): Ditto.
12299         (aarch64_rax1qv2di): Ditto.
12300         (aarch64_xarqv2di): Ditto.
12301         (aarch64_bcaxqv8hi): Ditto.
12302         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
12303         (vsha512h2q_u64): Ditto.
12304         (vsha512su0q_u64): Ditto.
12305         (vsha512su1q_u64): Ditto.
12306         (veor3q_u16): Ditto.
12307         (vrax1q_u64): Ditto.
12308         (vxarq_u64): Ditto.
12309         (vbcaxq_u16): Ditto.
12310         * config/arm/types.md (crypto_sha512): New type attribute.
12311         (crypto_sha3): Ditto.
12312         (doc/invoke.texi): Document new sha3 option.
12314 2018-01-10  Michael Collison  <michael.collison@arm.com>
12316         * config/aarch64/aarch64-builtins.c:
12317         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
12318         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12319         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
12320         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
12321         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
12322         (AARCH64_ISA_SM4): New ISA flag.
12323         (TARGET_SM4): New feature flag for sm4.
12324         * config/aarch64/aarch64-simd-builtins.def
12325         (aarch64_sm3ss1qv4si): Ditto.
12326         (aarch64_sm3tt1aq4si): Ditto.
12327         (aarch64_sm3tt1bq4si): Ditto.
12328         (aarch64_sm3tt2aq4si): Ditto.
12329         (aarch64_sm3tt2bq4si): Ditto.
12330         (aarch64_sm3partw1qv4si): Ditto.
12331         (aarch64_sm3partw2qv4si): Ditto.
12332         (aarch64_sm4eqv4si): Ditto.
12333         (aarch64_sm4ekeyqv4si): Ditto.
12334         * config/aarch64/aarch64-simd.md:
12335         (aarch64_sm3ss1qv4si): Ditto.
12336         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
12337         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
12338         (aarch64_sm4eqv4si): Ditto.
12339         (aarch64_sm4ekeyqv4si): Ditto.
12340         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
12341         (sm3part_op): Ditto.
12342         (CRYPTO_SM3TT): Ditto.
12343         (CRYPTO_SM3PART): Ditto.
12344         (UNSPEC_SM3SS1): New unspec.
12345         (UNSPEC_SM3TT1A): Ditto.
12346         (UNSPEC_SM3TT1B): Ditto.
12347         (UNSPEC_SM3TT2A): Ditto.
12348         (UNSPEC_SM3TT2B): Ditto.
12349         (UNSPEC_SM3PARTW1): Ditto.
12350         (UNSPEC_SM3PARTW2): Ditto.
12351         (UNSPEC_SM4E): Ditto.
12352         (UNSPEC_SM4EKEY): Ditto.
12353         * config/aarch64/constraints.md (Ui2): New constraint.
12354         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
12355         * config/arm/types.md (crypto_sm3): New type attribute.
12356         (crypto_sm4): Ditto.
12357         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
12358         (vsm3tt1aq_u32): Ditto.
12359         (vsm3tt1bq_u32): Ditto.
12360         (vsm3tt2aq_u32): Ditto.
12361         (vsm3tt2bq_u32): Ditto.
12362         (vsm3partw1q_u32): Ditto.
12363         (vsm3partw2q_u32): Ditto.
12364         (vsm4eq_u32): Ditto.
12365         (vsm4ekeyq_u32): Ditto.
12366         (doc/invoke.texi): Document new sm4 option.
12368 2018-01-10  Michael Collison  <michael.collison@arm.com>
12370         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
12371         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
12372         (AARCH64_FL_FOR_ARCH8_4): New.
12373         (AARCH64_FL_V8_4): New flag.
12374         (doc/invoke.texi): Document new armv8.4-a option.
12376 2018-01-10  Michael Collison  <michael.collison@arm.com>
12378         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12379         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
12380         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
12381         * config/aarch64/aarch64-option-extension.def: Add
12382         AARCH64_OPT_EXTENSION of 'sha2'.
12383         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
12384         (crypto): Disable sha2 and aes if crypto disabled.
12385         (crypto): Enable aes and sha2 if enabled.
12386         (simd): Disable sha2 and aes if simd disabled.
12387         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
12388         New flags.
12389         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
12390         (TARGET_SHA2): New feature flag for sha2.
12391         (TARGET_AES): New feature flag for aes.
12392         * config/aarch64/aarch64-simd.md:
12393         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
12394         conditional on TARGET_AES.
12395         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
12396         (aarch64_crypto_sha1hsi): Make pattern conditional
12397         on TARGET_SHA2.
12398         (aarch64_crypto_sha1hv4si): Ditto.
12399         (aarch64_be_crypto_sha1hv4si): Ditto.
12400         (aarch64_crypto_sha1su1v4si): Ditto.
12401         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
12402         (aarch64_crypto_sha1su0v4si): Ditto.
12403         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
12404         (aarch64_crypto_sha256su0v4si): Ditto.
12405         (aarch64_crypto_sha256su1v4si): Ditto.
12406         (doc/invoke.texi): Document new aes and sha2 options.
12408 2018-01-10  Martin Sebor  <msebor@redhat.com>
12410         PR tree-optimization/83781
12411         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
12412         as string arrays.
12414 2018-01-11  Martin Sebor  <msebor@gmail.com>
12415             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12417         PR tree-optimization/83501
12418         PR tree-optimization/81703
12420         * tree-ssa-strlen.c (get_string_cst): Rename...
12421         (get_string_len): ...to this.  Handle global constants.
12422         (handle_char_store): Adjust.
12424 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
12425             Jim Wilson  <jimw@sifive.com>
12427         * config/riscv/riscv-protos.h (riscv_output_return): New.
12428         * config/riscv/riscv.c (struct machine_function): New naked_p field.
12429         (riscv_attribute_table, riscv_output_return),
12430         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
12431         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
12432         (riscv_compute_frame_info): Only compute frame->mask if not a naked
12433         function.
12434         (riscv_expand_prologue): Add early return for naked function.
12435         (riscv_expand_epilogue): Likewise.
12436         (riscv_function_ok_for_sibcall): Return false for naked function.
12437         (riscv_set_current_function): New.
12438         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
12439         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
12440         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
12441         * doc/extend.texi (RISC-V Function Attributes): New.
12443 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
12445         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
12446         check for 128-bit long double before checking TCmode.
12447         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
12448         128-bit long doubles before checking TFmode or TCmode.
12449         (FLOAT128_IBM_P): Likewise.
12451 2018-01-10  Martin Sebor  <msebor@redhat.com>
12453         PR tree-optimization/83671
12454         * builtins.c (c_strlen): Unconditionally return zero for the empty
12455         string.
12456         Use -Warray-bounds for warnings.
12457         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
12458         for non-constant array indices with COMPONENT_REF, arrays of
12459         arrays, and pointers to arrays.
12460         (gimple_fold_builtin_strlen): Determine and set length range for
12461         non-constant character arrays.
12463 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
12465         PR middle-end/81897
12466         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
12467         empty blocks.
12469 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
12471         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
12473 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12475         PR target/83399
12476         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
12477         VECTOR_MEM_ALTIVEC_OR_VSX_P.
12478         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
12479         indexed_or_indirect_operand predicate.
12480         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
12481         (*vsx_le_perm_load_v8hi): Likewise.
12482         (*vsx_le_perm_load_v16qi): Likewise.
12483         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
12484         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
12485         (*vsx_le_perm_store_v8hi): Likewise.
12486         (*vsx_le_perm_store_v16qi): Likewise.
12487         (eight unnamed splitters): Likewise.
12489 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12491         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
12492         * config/rs6000/emmintrin.h: Likewise.
12493         * config/rs6000/mmintrin.h: Likewise.
12494         * config/rs6000/xmmintrin.h: Likewise.
12496 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
12498         PR c++/43486
12499         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
12500         "public_flag".
12501         * tree.c (tree_nop_conversion): Return true for location wrapper
12502         nodes.
12503         (maybe_wrap_with_location): New function.
12504         (selftest::check_strip_nops): New function.
12505         (selftest::test_location_wrappers): New function.
12506         (selftest::tree_c_tests): Call it.
12507         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
12508         (maybe_wrap_with_location): New decl.
12509         (EXPR_LOCATION_WRAPPER_P): New macro.
12510         (location_wrapper_p): New inline function.
12511         (tree_strip_any_location_wrapper): New inline function.
12513 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
12515         PR target/83735
12516         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
12517         stack_realign_offset for the largest alignment of stack slot
12518         actually used.
12519         (ix86_find_max_used_stack_alignment): New function.
12520         (ix86_finalize_stack_frame_flags): Use it.  Set
12521         max_used_stack_alignment if we don't realign stack.
12522         * config/i386/i386.h (machine_function): Add
12523         max_used_stack_alignment.
12525 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
12527         * config/arm/arm.opt (-mbranch-cost): New option.
12528         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
12529         account.
12531 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
12533         PR target/83629
12534         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
12535         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
12537 2018-01-10  Richard Biener  <rguenther@suse.de>
12539         PR debug/83765
12540         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
12541         early out so it also covers the case where we have a non-NULL
12542         origin.
12544 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
12546         PR tree-optimization/83753
12547         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
12548         for non-strided grouped accesses if the number of elements is 1.
12550 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12552         PR target/81616
12553         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
12554         * i386.h (TARGET_USE_GATHER): Define.
12555         * x86-tune.def (X86_TUNE_USE_GATHER): New.
12557 2018-01-10  Martin Liska  <mliska@suse.cz>
12559         PR bootstrap/82831
12560         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
12561         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
12562         partitioning.
12563         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
12564         CLEANUP_NO_PARTITIONING is not set.
12566 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
12568         * doc/rtl.texi: Remove documentation of (const ...) wrappers
12569         for vectors, as a partial revert of r254296.
12570         * rtl.h (const_vec_p): Delete.
12571         (const_vec_duplicate_p): Don't test for vector CONSTs.
12572         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
12573         * expmed.c (make_tree): Likewise.
12575         Revert:
12576         * common.md (E, F): Use CONSTANT_P instead of checking for
12577         CONST_VECTOR.
12578         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
12579         checking for CONST_VECTOR.
12581 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
12583         PR middle-end/83575
12584         * predict.c (force_edge_cold): Handle in more sane way edges
12585         with no prediction.
12587 2018-01-09  Carl Love  <cel@us.ibm.com>
12589         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
12590         V4SI, V4SF types.
12591         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
12592         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
12593         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
12594         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
12595         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
12596         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
12597         * config/rs6000/rs6000-protos.h: Add extern defition for
12598         rs6000_generate_float2_double_code.
12599         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
12600         function.
12601         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
12602         (float2_v2df): Add define_expand.
12604 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
12606         PR target/83628
12607         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
12608         op_mode in the force_to_mode call.
12610 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
12612         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
12613         instead of checking each element individually.
12614         (aarch64_evpc_uzp): Likewise.
12615         (aarch64_evpc_zip): Likewise.
12616         (aarch64_evpc_ext): Likewise.
12617         (aarch64_evpc_rev): Likewise.
12618         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
12619         instead of checking each element individually.  Return true without
12620         generating rtl if
12621         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
12622         whether all selected elements come from the same input, instead of
12623         checking each element individually.  Remove calls to gen_rtx_REG,
12624         start_sequence and end_sequence and instead assert that no rtl is
12625         generated.
12627 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
12629         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
12630         order of HIGH and CONST checks.
12632 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
12634         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
12635         if the destination isn't an SSA_NAME.
12637 2018-01-09  Richard Biener  <rguenther@suse.de>
12639         PR tree-optimization/83668
12640         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
12641         move prologue...
12642         (canonicalize_loop_form): ... here, renamed from ...
12643         (canonicalize_loop_closed_ssa_form): ... this and amended to
12644         swap successor edges for loop exit blocks to make us use
12645         the RPO order we need for initial schedule generation.
12647 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
12649         PR tree-optimization/64811
12650         * match.pd: When optimizing comparisons with Inf, avoid
12651         introducing or losing exceptions from comparisons with NaN.
12653 2018-01-09  Martin Liska  <mliska@suse.cz>
12655         PR sanitizer/82517
12656         * asan.c (shadow_mem_size): Add gcc_assert.
12658 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
12660         Don't save registers in main().
12662         PR target/83738
12663         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
12664         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
12665         * config/avr/avr.c (avr_set_current_function): Don't error if
12666         naked, OS_task or OS_main are specified at the same time.
12667         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
12668         OS_main.
12669         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
12670         attribute.
12671         * common/config/avr/avr-common.c (avr_option_optimization_table):
12672         Switch on -mmain-is-OS_task for optimizing compilations.
12674 2018-01-09  Richard Biener  <rguenther@suse.de>
12676         PR tree-optimization/83572
12677         * graphite.c: Include cfganal.h.
12678         (graphite_transform_loops): Connect infinite loops to exit
12679         and remove fake edges at the end.
12681 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
12683         * ipa-inline.c (edge_badness): Revert accidental checkin.
12685 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
12687         PR ipa/80763
12688         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
12689         symbols; not inline clones.
12691 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
12693         PR target/83507
12694         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
12695         hard registers.  Formatting fixes.
12697         PR preprocessor/83722
12698         * gcc.c (try_generate_repro): Pass
12699         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
12700         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
12701         do_report_bug.
12703 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
12704             Kito Cheng  <kito.cheng@gmail.com>
12706         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
12707         (riscv_leaf_function_p): Delete.
12708         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
12710 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
12712         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
12713         function.
12714         (do_ifelse): New function.
12715         (do_isel): New function.
12716         (do_sub3): New function.
12717         (do_add3): New function.
12718         (do_load_mask_compare): New function.
12719         (do_overlap_load_compare): New function.
12720         (expand_compare_loop): New function.
12721         (expand_block_compare): Call expand_compare_loop() when appropriate.
12722         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
12723         option description.
12724         (-mblock-compare-inline-loop-limit): New option.
12726 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12728         PR target/83677
12729         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
12730         Reverse order of second and third operands in first alternative.
12731         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
12732         of first and second elements in UNSPEC_VPERMR vector.
12733         (altivec_expand_vec_perm_le): Likewise.
12735 2018-01-08  Jeff Law  <law@redhat.com>
12737         PR rtl-optimizatin/81308
12738         * tree-switch-conversion.c (cfg_altered): New file scoped static.
12739         (process_switch): If group_case_labels makes a change, then set
12740         cfg_altered.
12741         (pass_convert_switch::execute): If a switch is converted, then
12742         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
12744         PR rtl-optimization/81308
12745         * recog.c (split_all_insns): Conditionally cleanup the CFG after
12746         splitting insns.
12748 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
12750         PR target/83663 - Revert r255946
12751         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
12752         generation for cases where splatting a value is not useful.
12753         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
12754         across a vec_duplicate and a paradoxical subreg forming a vector
12755         mode to a vec_concat.
12757 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12759         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
12760         -march=armv8.3-a variants.
12761         * config/arm/t-multilib: Likewise.
12762         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
12764 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
12766         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
12767         to generate rtl.
12768         (cceq_ior_compare_complement): Give it a name so I can use it, and
12769         change boolean_or_operator predicate to boolean_operator so it can
12770         be used to generate a crand.
12771         (eqne): New code iterator.
12772         (bd/bd_neg): New code_attrs.
12773         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
12774         a single define_insn.
12775         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
12776         decrement (bdnzt/bdnzf/bdzt/bdzf).
12777         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
12778         with the new names of the branch decrement patterns, and added the
12779         names of the branch decrement conditional patterns.
12781 2018-01-08  Richard Biener  <rguenther@suse.de>
12783         PR tree-optimization/83563
12784         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
12785         cache.
12787 2018-01-08  Richard Biener  <rguenther@suse.de>
12789         PR middle-end/83713
12790         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
12792 2018-01-08  Richard Biener  <rguenther@suse.de>
12794         PR tree-optimization/83685
12795         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
12796         references to abnormals.
12798 2018-01-08  Richard Biener  <rguenther@suse.de>
12800         PR lto/83719
12801         * dwarf2out.c (output_indirect_strings): Handle empty
12802         skeleton_debug_str_hash.
12803         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
12805 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
12807         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
12808         (emit_store_direct): Likewise.
12809         (arc_trampoline_adjust_address): Likewise.
12810         (arc_asm_trampoline_template): New function.
12811         (arc_initialize_trampoline): Use asm_trampoline_template.
12812         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
12813         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
12814         * config/arc/arc.md (flush_icache): Delete pattern.
12816 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
12818         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
12819         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
12820         munaligned-access.
12822 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
12824         PR target/83681
12825         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
12826         by not USED_FOR_TARGET.
12827         (make_pass_resolve_sw_modes): Likewise.
12829 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
12831         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
12832         USED_FOR_TARGET.
12834 2018-01-08  Richard Biener  <rguenther@suse.de>
12836         PR middle-end/83580
12837         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
12839 2018-01-08  Richard Biener  <rguenther@suse.de>
12841         PR middle-end/83517
12842         * match.pd ((t * 2) / 2) -> t): Add missing :c.
12844 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
12846         PR middle-end/81897
12847         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
12848         basic blocks with a small number of successors.
12849         (convert_control_dep_chain_into_preds): Improve handling of
12850         forwarder blocks.
12851         (dump_predicates): Split apart into...
12852         (dump_pred_chain): ...here...
12853         (dump_pred_info): ...and here.
12854         (can_one_predicate_be_invalidated_p): Add debugging printfs.
12855         (can_chain_union_be_invalidated_p): Improve check for invalidation
12856         of paths.
12857         (uninit_uses_cannot_happen): Avoid unnecessary if
12858         convert_control_dep_chain_into_preds yielded nothing.
12860 2018-01-06  Martin Sebor  <msebor@redhat.com>
12862         PR tree-optimization/83640
12863         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
12864         subtracting negative offset from size.
12865         (builtin_access::overlap): Adjust offset bounds of the access to fall
12866         within the size of the object if possible.
12868 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
12870         PR rtl-optimization/83699
12871         * expmed.c (extract_bit_field_1): Restrict the vector usage of
12872         extract_bit_field_as_subreg to cases in which the extracted
12873         value is also a vector.
12875         * lra-constraints.c (process_alt_operands): Test for the equivalence
12876         substitutions when detecting a possible reload cycle.
12878 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
12880         PR debug/83480
12881         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
12882         by default if flag_selective_schedling{,2}.  Formatting fixes.
12884         PR rtl-optimization/83682
12885         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
12886         if it has non-VECTOR_MODE element mode.
12887         (vec_duplicate_p): Likewise.
12889         PR middle-end/83694
12890         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
12891         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
12893 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
12895         PR target/83604
12896         * config/i386/i386-builtin.def
12897         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
12898         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
12899         Require also OPTION_MASK_ISA_AVX512F in addition to
12900         OPTION_MASK_ISA_GFNI.
12901         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
12902         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
12903         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
12904         to OPTION_MASK_ISA_GFNI.
12905         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
12906         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
12907         OPTION_MASK_ISA_AVX512BW.
12908         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
12909         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
12910         addition to OPTION_MASK_ISA_GFNI.
12911         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
12912         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
12913         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
12914         to OPTION_MASK_ISA_GFNI.
12915         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
12916         a requirement for all ISAs rather than any of them with a few
12917         exceptions.
12918         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
12919         processing.
12920         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
12921         bitmasks to be enabled with 3 exceptions, instead of requiring any
12922         enabled ISA with lots of exceptions.
12923         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
12924         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
12925         Change avx512bw in isa attribute to avx512f.
12926         * config/i386/sgxintrin.h: Add license boilerplate.
12927         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
12928         to __AVX512F__ and __AVX512VL to __AVX512VL__.
12929         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
12930         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
12931         defined.
12932         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
12933         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
12934         temporarily sse2 rather than sse if not enabled already.
12936         PR target/83604
12937         * config/i386/sse.md (VI248_VLBW): Rename to ...
12938         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
12939         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
12940         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
12941         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
12942         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
12943         mode iterator instead of VI248_VLBW.
12945 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
12947         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
12948         (record_modified): Skip clobbers; add debug output.
12949         (param_change_prob): Use sreal frequencies.
12951 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
12953         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
12954         punt for user-aligned variables.
12956 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
12958         * tree-chrec.c (chrec_contains_symbols): Return true for
12959         POLY_INT_CST.
12961 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
12963         PR target/82439
12964         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
12965         of (x|y) == x for BICS pattern.
12967 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
12969         PR tree-optimization/83605
12970         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
12971         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
12972         can throw.
12974 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
12976         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
12977         * config/epiphany/rtems.h: New file.
12979 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12980             Uros Bizjak  <ubizjak@gmail.com>
12982         PR target/83554
12983         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
12984         QIreg_operand instead of register_operand predicate.
12985         * config/i386/i386.c (ix86_rop_should_change_byte_p,
12986         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
12987         comments instead of -fmitigate[-_]rop.
12989 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12991         PR bootstrap/81926
12992         * cgraphunit.c (symbol_table::compile): Switch to text_section
12993         before calling assembly_start debug hook.
12994         * run-rtl-passes.c (run_rtl_passes): Likewise.
12995         Include output.h.
12997 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12999         * tree-vrp.c (extract_range_from_binary_expr_1): Check
13000         range_int_cst_p rather than !symbolic_range_p before calling
13001         extract_range_from_multiplicative_op_1.
13003 2018-01-04  Jeff Law  <law@redhat.com>
13005         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
13006         redundant test in assertion.
13008 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13010         * doc/rtl.texi: Document machine_mode wrapper classes.
13012 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13014         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
13015         using tree_to_uhwi.
13017 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13019         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
13020         the VEC_PERM_EXPR fold to fail.
13022 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13024         PR debug/83585
13025         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
13026         to switched_sections.
13028 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13030         PR target/83680
13031         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
13032         test for d.testing.
13034 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
13036         PR target/83387
13037         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
13038         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
13040 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13042         PR debug/83666
13043         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
13044         is BLKmode and bitpos not zero or mode change is needed.
13046 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13048         PR target/83675
13049         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
13050         TARGET_VIS2.
13052 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
13054         PR target/83628
13055         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
13056         instead of MULT rtx.  Update all corresponding splitters.
13057         (*saddl_se): Ditto.
13058         (*ssub<modesuffix>): Ditto.
13059         (*ssubl_se): Ditto.
13060         (*cmp_sadd_di): Update split patterns.
13061         (*cmp_sadd_si): Ditto.
13062         (*cmp_sadd_sidi): Ditto.
13063         (*cmp_ssub_di): Ditto.
13064         (*cmp_ssub_si): Ditto.
13065         (*cmp_ssub_sidi): Ditto.
13066         * config/alpha/predicates.md (const23_operand): New predicate.
13067         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
13068         Look for ASHIFT, not MULT inner operand.
13069         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
13071 2018-01-04  Martin Liska  <mliska@suse.cz>
13073         PR gcov-profile/83669
13074         * gcov.c (output_intermediate_file): Add version to intermediate
13075         gcov file.
13076         * doc/gcov.texi: Document new field 'version' in intermediate
13077         file format. Fix location of '-k' option of gcov command.
13079 2018-01-04  Martin Liska  <mliska@suse.cz>
13081         PR ipa/82352
13082         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
13084 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13086         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
13088 2018-01-03  Martin Sebor  <msebor@redhat.com>
13090         PR tree-optimization/83655
13091         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
13092         checking calls with invalid arguments.
13094 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13096         * tree-vect-stmts.c (vect_get_store_rhs): New function.
13097         (vectorizable_mask_load_store): Delete.
13098         (vectorizable_call): Return false for masked loads and stores.
13099         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
13100         instead of gimple_assign_rhs1.
13101         (vectorizable_load): Handle IFN_MASK_LOAD.
13102         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
13104 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13106         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
13107         split out from..,
13108         (vectorizable_mask_load_store): ...here.
13109         (vectorizable_load): ...and here.
13111 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13113         * tree-vect-stmts.c (vect_build_all_ones_mask)
13114         (vect_build_zero_merge_argument): New functions, split out from...
13115         (vectorizable_load): ...here.
13117 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13119         * tree-vect-stmts.c (vect_check_store_rhs): New function,
13120         split out from...
13121         (vectorizable_mask_load_store): ...here.
13122         (vectorizable_store): ...and here.
13124 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13126         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
13127         split out from...
13128         (vectorizable_mask_load_store): ...here.
13130 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13132         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
13133         (vect_model_store_cost): Take a vec_load_store_type instead of a
13134         vect_def_type.
13135         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
13136         (vect_model_store_cost): Take a vec_load_store_type instead of a
13137         vect_def_type.
13138         (vectorizable_mask_load_store): Update accordingly.
13139         (vectorizable_store): Likewise.
13140         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
13142 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13144         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
13145         IFN_MASK_LOAD calls here rather than...
13146         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
13148 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13149             Alan Hayward  <alan.hayward@arm.com>
13150             David Sherwood  <david.sherwood@arm.com>
13152         * expmed.c (extract_bit_field_1): For vector extracts,
13153         fall back to extract_bit_field_as_subreg if vec_extract
13154         isn't available.
13156 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13157             Alan Hayward  <alan.hayward@arm.com>
13158             David Sherwood  <david.sherwood@arm.com>
13160         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
13161         they are variable or constant sized.
13162         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
13163         slots for constant-sized data.
13165 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13166             Alan Hayward  <alan.hayward@arm.com>
13167             David Sherwood  <david.sherwood@arm.com>
13169         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
13170         handling COND_EXPRs with boolean comparisons, try to find a better
13171         basis for the mask type than the boolean itself.
13173 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13175         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
13176         is calculated and how it can be overridden.
13177         * genmodes.c (max_bitsize_mode_any_mode): New variable.
13178         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
13179         if defined.
13180         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
13181         if nonzero.
13183 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13184             Alan Hayward  <alan.hayward@arm.com>
13185             David Sherwood  <david.sherwood@arm.com>
13187         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
13188         Remove the mode argument.
13189         (aarch64_simd_valid_immediate): Remove the mode and inverse
13190         arguments.
13191         * config/aarch64/iterators.md (bitsize): New iterator.
13192         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
13193         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
13194         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
13195         aarch64_simd_valid_immediate.
13196         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
13197         (aarch64_reg_or_bic_imm): Likewise.
13198         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
13199         with an insn_type enum and msl with a modifier_type enum.
13200         Replace element_width with a scalar_mode.  Change the shift
13201         to unsigned int.  Add constructors for scalar_float_mode and
13202         scalar_int_mode elements.
13203         (aarch64_vect_float_const_representable_p): Delete.
13204         (aarch64_can_const_movi_rtx_p)
13205         (aarch64_simd_scalar_immediate_valid_for_move)
13206         (aarch64_simd_make_constant): Update call to
13207         aarch64_simd_valid_immediate.
13208         (aarch64_advsimd_valid_immediate_hs): New function.
13209         (aarch64_advsimd_valid_immediate): Likewise.
13210         (aarch64_simd_valid_immediate): Remove mode and inverse
13211         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
13212         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
13213         and aarch64_float_const_representable_p on the result.
13214         (aarch64_output_simd_mov_immediate): Remove mode argument.
13215         Update call to aarch64_simd_valid_immediate and use of
13216         simd_immediate_info.
13217         (aarch64_output_scalar_simd_mov_immediate): Update call
13218         accordingly.
13220 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13221             Alan Hayward  <alan.hayward@arm.com>
13222             David Sherwood  <david.sherwood@arm.com>
13224         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
13225         (mode_nunits): Likewise CONST_MODE_NUNITS.
13226         * machmode.def (ADJUST_NUNITS): Document.
13227         * genmodes.c (mode_data::need_nunits_adj): New field.
13228         (blank_mode): Update accordingly.
13229         (adj_nunits): New variable.
13230         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
13231         parameter.
13232         (emit_mode_size_inline): Set need_bytesize_adj for all modes
13233         listed in adj_nunits.
13234         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
13235         listed in adj_nunits.  Don't emit case statements for such modes.
13236         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
13237         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
13238         nothing if adj_nunits is nonnull.
13239         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
13240         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
13241         (emit_mode_fbit): Update use of print_maybe_const_decl.
13242         (emit_move_size): Likewise.  Treat the array as non-const
13243         if adj_nunits.
13244         (emit_mode_adjustments): Handle adj_nunits.
13246 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13248         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
13249         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
13250         (VECTOR_MODES): Use it.
13251         (make_vector_modes): Take the prefix as an argument.
13253 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13254             Alan Hayward  <alan.hayward@arm.com>
13255             David Sherwood  <david.sherwood@arm.com>
13257         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
13258         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
13259         for MODE_VECTOR_BOOL.
13260         * machmode.def (VECTOR_BOOL_MODE): Document.
13261         * genmodes.c (VECTOR_BOOL_MODE): New macro.
13262         (make_vector_bool_mode): New function.
13263         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
13264         MODE_VECTOR_BOOL.
13265         * lto-streamer-in.c (lto_input_mode_table): Likewise.
13266         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
13267         Likewise.
13268         * stor-layout.c (int_mode_for_mode): Likewise.
13269         * tree.c (build_vector_type_for_mode): Likewise.
13270         * varasm.c (output_constant_pool_2): Likewise.
13271         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
13272         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
13273         for MODE_VECTOR_BOOL.
13274         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
13275         of mode class checks.
13276         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
13277         instead of a list of mode class checks.
13278         (expand_vector_scalar_condition): Likewise.
13279         (type_for_widest_vector_mode): Handle BImode as an inner mode.
13281 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13282             Alan Hayward  <alan.hayward@arm.com>
13283             David Sherwood  <david.sherwood@arm.com>
13285         * machmode.h (mode_size): Change from unsigned short to
13286         poly_uint16_pod.
13287         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
13288         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13289         or if measurement_type is not polynomial.
13290         (fixed_size_mode::includes_p): Check for constant-sized modes.
13291         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
13292         return a poly_uint16 rather than an unsigned short.
13293         (emit_mode_size): Change the type of mode_size from unsigned short
13294         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
13295         (emit_mode_adjustments): Cope with polynomial vector sizes.
13296         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13297         for GET_MODE_SIZE.
13298         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13299         for GET_MODE_SIZE.
13300         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
13301         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
13302         * caller-save.c (setup_save_areas): Likewise.
13303         (replace_reg_with_saved_mem): Likewise.
13304         * calls.c (emit_library_call_value_1): Likewise.
13305         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
13306         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
13307         (gen_lowpart_for_combine): Likewise.
13308         * convert.c (convert_to_integer_1): Likewise.
13309         * cse.c (equiv_constant, cse_insn): Likewise.
13310         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
13311         (cselib_subst_to_values): Likewise.
13312         * dce.c (word_dce_process_block): Likewise.
13313         * df-problems.c (df_word_lr_mark_ref): Likewise.
13314         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
13315         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
13316         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
13317         (rtl_for_decl_location): Likewise.
13318         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
13319         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
13320         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
13321         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
13322         (expand_expr_real_1): Likewise.
13323         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
13324         (pad_below): Likewise.
13325         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13326         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
13327         * ira.c (get_subreg_tracking_sizes): Likewise.
13328         * ira-build.c (ira_create_allocno_objects): Likewise.
13329         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
13330         (ira_sort_regnos_for_alter_reg): Likewise.
13331         * ira-costs.c (record_operand_costs): Likewise.
13332         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
13333         (resolve_simple_move): Likewise.
13334         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
13335         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
13336         (lra_constraints): Likewise.
13337         (CONST_POOL_OK_P): Reject variable-sized modes.
13338         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
13339         (add_pseudo_to_slot, lra_spill): Likewise.
13340         * omp-low.c (omp_clause_aligned_alignment): Likewise.
13341         * optabs-query.c (get_best_extraction_insn): Likewise.
13342         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
13343         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
13344         (expand_mult_highpart, valid_multiword_target_p): Likewise.
13345         * recog.c (offsettable_address_addr_space_p): Likewise.
13346         * regcprop.c (maybe_mode_change): Likewise.
13347         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
13348         * regrename.c (build_def_use): Likewise.
13349         * regstat.c (dump_reg_info): Likewise.
13350         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
13351         (find_reloads, find_reloads_subreg_address): Likewise.
13352         * reload1.c (eliminate_regs_1): Likewise.
13353         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
13354         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
13355         (simplify_binary_operation_1, simplify_subreg): Likewise.
13356         * targhooks.c (default_function_arg_padding): Likewise.
13357         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
13358         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
13359         (verify_gimple_assign_ternary): Likewise.
13360         * tree-inline.c (estimate_move_cost): Likewise.
13361         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13362         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
13363         (get_address_cost_ainc): Likewise.
13364         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
13365         (vect_supportable_dr_alignment): Likewise.
13366         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13367         (vectorizable_reduction): Likewise.
13368         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
13369         (vectorizable_operation, vectorizable_load): Likewise.
13370         * tree.c (build_same_sized_truth_vector_type): Likewise.
13371         * valtrack.c (cleanup_auto_inc_dec): Likewise.
13372         * var-tracking.c (emit_note_insn_var_location): Likewise.
13373         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
13374         (ADDR_VEC_ALIGN): Likewise.
13376 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13377             Alan Hayward  <alan.hayward@arm.com>
13378             David Sherwood  <david.sherwood@arm.com>
13380         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
13381         unsigned short.
13382         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13383         or if measurement_type is polynomial.
13384         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
13385         * combine.c (make_extraction): Likewise.
13386         * dse.c (find_shift_sequence): Likewise.
13387         * dwarf2out.c (mem_loc_descriptor): Likewise.
13388         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
13389         (extract_bit_field, extract_low_bits): Likewise.
13390         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
13391         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
13392         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
13393         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
13394         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13395         * reload.c (find_reloads): Likewise.
13396         * reload1.c (alter_reg): Likewise.
13397         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
13398         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
13399         * tree-if-conv.c (predicate_mem_writes): Likewise.
13400         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
13401         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
13402         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
13403         * valtrack.c (dead_debug_insert_temp): Likewise.
13404         * varasm.c (mergeable_constant_section): Likewise.
13405         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
13407 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13408             Alan Hayward  <alan.hayward@arm.com>
13409             David Sherwood  <david.sherwood@arm.com>
13411         * expr.c (expand_assignment): Cope with polynomial mode sizes
13412         when assigning to a CONCAT.
13414 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13415             Alan Hayward  <alan.hayward@arm.com>
13416             David Sherwood  <david.sherwood@arm.com>
13418         * machmode.h (mode_precision): Change from unsigned short to
13419         poly_uint16_pod.
13420         (mode_to_precision): Return a poly_uint16 rather than an unsigned
13421         short.
13422         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
13423         or if measurement_type is not polynomial.
13424         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
13425         in which the mode is already known to be a scalar_int_mode.
13426         * genmodes.c (emit_mode_precision): Change the type of mode_precision
13427         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
13428         initializer.
13429         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13430         for GET_MODE_PRECISION.
13431         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13432         for GET_MODE_PRECISION.
13433         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
13434         as polynomial.
13435         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
13436         (expand_field_assignment, make_extraction): Likewise.
13437         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
13438         (get_last_value): Likewise.
13439         * convert.c (convert_to_integer_1): Likewise.
13440         * cse.c (cse_insn): Likewise.
13441         * expr.c (expand_expr_real_1): Likewise.
13442         * lra-constraints.c (simplify_operand_subreg): Likewise.
13443         * optabs-query.c (can_atomic_load_p): Likewise.
13444         * optabs.c (expand_atomic_load): Likewise.
13445         (expand_atomic_store): Likewise.
13446         * ree.c (combine_reaching_defs): Likewise.
13447         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
13448         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
13449         * tree.h (type_has_mode_precision_p): Likewise.
13450         * ubsan.c (instrument_si_overflow): Likewise.
13452 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13453             Alan Hayward  <alan.hayward@arm.com>
13454             David Sherwood  <david.sherwood@arm.com>
13456         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
13457         polynomial numbers of units.
13458         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
13459         (valid_vector_subparts_p): New function.
13460         (build_vector_type): Remove temporary shim and take the number
13461         of units as a poly_uint64 rather than an int.
13462         (build_opaque_vector_type): Take the number of units as a
13463         poly_uint64 rather than an int.
13464         * tree.c (build_vector_from_ctor): Handle polynomial
13465         TYPE_VECTOR_SUBPARTS.
13466         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
13467         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
13468         (build_vector_from_val): If the number of units is variable,
13469         use build_vec_duplicate_cst for constant operands and
13470         VEC_DUPLICATE_EXPR otherwise.
13471         (make_vector_type): Remove temporary is_constant ().
13472         (build_vector_type, build_opaque_vector_type): Take the number of
13473         units as a poly_uint64 rather than an int.
13474         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
13475         VECTOR_CST_NELTS.
13476         * cfgexpand.c (expand_debug_expr): Likewise.
13477         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
13478         (store_constructor, expand_expr_real_1): Likewise.
13479         (const_scalar_mask_from_tree): Likewise.
13480         * fold-const-call.c (fold_const_reduction): Likewise.
13481         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
13482         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
13483         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
13484         (fold_relational_const): Likewise.
13485         (native_interpret_vector): Likewise.  Change the size from an
13486         int to an unsigned int.
13487         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
13488         TYPE_VECTOR_SUBPARTS.
13489         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
13490         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
13491         duplicating a non-constant operand into a variable-length vector.
13492         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
13493         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
13494         * ipa-icf.c (sem_variable::equals): Likewise.
13495         * match.pd: Likewise.
13496         * omp-simd-clone.c (simd_clone_subparts): Likewise.
13497         * print-tree.c (print_node): Likewise.
13498         * stor-layout.c (layout_type): Likewise.
13499         * targhooks.c (default_builtin_vectorization_cost): Likewise.
13500         * tree-cfg.c (verify_gimple_comparison): Likewise.
13501         (verify_gimple_assign_binary): Likewise.
13502         (verify_gimple_assign_ternary): Likewise.
13503         (verify_gimple_assign_single): Likewise.
13504         * tree-pretty-print.c (dump_generic_node): Likewise.
13505         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13506         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
13507         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
13508         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
13509         (vect_shift_permute_load_chain): Likewise.
13510         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
13511         (expand_vector_condition, optimize_vector_constructor): Likewise.
13512         (lower_vec_perm, get_compute_type): Likewise.
13513         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13514         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
13515         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
13516         (vect_recog_mask_conversion_pattern): Likewise.
13517         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
13518         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
13519         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13520         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
13521         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
13522         (vectorizable_shift, vectorizable_operation, vectorizable_store)
13523         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
13524         (supportable_widening_operation): Likewise.
13525         (supportable_narrowing_operation): Likewise.
13526         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
13527         Likewise.
13528         * varasm.c (output_constant): Likewise.
13530 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13531             Alan Hayward  <alan.hayward@arm.com>
13532             David Sherwood  <david.sherwood@arm.com>
13534         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
13535         so that both the length == 3 and length != 3 cases set up their
13536         own permute vectors.  Add comments explaining why we know the
13537         number of elements is constant.
13538         (vect_permute_load_chain): Likewise.
13540 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13541             Alan Hayward  <alan.hayward@arm.com>
13542             David Sherwood  <david.sherwood@arm.com>
13544         * machmode.h (mode_nunits): Change from unsigned char to
13545         poly_uint16_pod.
13546         (ONLY_FIXED_SIZE_MODES): New macro.
13547         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
13548         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
13549         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
13550         New typedefs.
13551         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
13552         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
13553         or if measurement_type is not polynomial.
13554         * genmodes.c (ZERO_COEFFS): New macro.
13555         (emit_mode_nunits_inline): Make mode_nunits_inline return a
13556         poly_uint16.
13557         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
13558         Use ZERO_COEFFS when emitting initializers.
13559         * data-streamer.h (bp_pack_poly_value): New function.
13560         (bp_unpack_poly_value): Likewise.
13561         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13562         for GET_MODE_NUNITS.
13563         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13564         for GET_MODE_NUNITS.
13565         * tree.c (make_vector_type): Remove temporary shim and make
13566         the real function take the number of units as a poly_uint64
13567         rather than an int.
13568         (build_vector_type_for_mode): Handle polynomial nunits.
13569         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
13570         * emit-rtl.c (const_vec_series_p_1): Likewise.
13571         (gen_rtx_CONST_VECTOR): Likewise.
13572         * fold-const.c (test_vec_duplicate_folding): Likewise.
13573         * genrecog.c (validate_pattern): Likewise.
13574         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
13575         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
13576         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
13577         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
13578         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
13579         * rtlanal.c (subreg_get_info): Likewise.
13580         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13581         (vect_grouped_load_supported): Likewise.
13582         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
13583         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
13584         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
13585         (simplify_const_unary_operation, simplify_binary_operation_1)
13586         (simplify_const_binary_operation, simplify_ternary_operation)
13587         (test_vector_ops_duplicate, test_vector_ops): Likewise.
13588         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
13589         instead of CONST_VECTOR_NUNITS.
13590         * varasm.c (output_constant_pool_2): Likewise.
13591         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
13592         explicit-encoded elements in the XVEC for variable-length vectors.
13594 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13596         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
13598 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13599             Alan Hayward  <alan.hayward@arm.com>
13600             David Sherwood  <david.sherwood@arm.com>
13602         * coretypes.h (fixed_size_mode): Declare.
13603         (fixed_size_mode_pod): New typedef.
13604         * builtins.h (target_builtins::x_apply_args_mode)
13605         (target_builtins::x_apply_result_mode): Change type to
13606         fixed_size_mode_pod.
13607         * builtins.c (apply_args_size, apply_result_size, result_vector)
13608         (expand_builtin_apply_args_1, expand_builtin_apply)
13609         (expand_builtin_return): Update accordingly.
13611 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13613         * cse.c (hash_rtx_cb): Hash only the encoded elements.
13614         * cselib.c (cselib_hash_rtx): Likewise.
13615         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
13616         CONST_VECTOR encoding.
13618 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
13619             Jeff Law  <law@redhat.com>
13621         PR target/83641
13622         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
13623         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
13624         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
13625         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
13627         PR target/83641
13628         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
13629         explicitly probe *sp in a noreturn function if there were any callee
13630         register saves or frame pointer is needed.
13632 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
13634         PR debug/83621
13635         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
13636         BLKmode for ternary, binary or unary expressions.
13638         PR debug/83645
13639         * var-tracking.c (delete_vta_debug_insn): New inline function.
13640         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
13641         insns from get_insns () to NULL instead of each bb separately.
13642         Use delete_vta_debug_insn.  No longer static.
13643         (vt_debug_insns_local, variable_tracking_main_1): Adjust
13644         delete_vta_debug_insns callers.
13645         * rtl.h (delete_vta_debug_insns): Declare.
13646         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
13647         instead of variable_tracking_main.
13649 2018-01-03  Martin Sebor  <msebor@redhat.com>
13651         PR tree-optimization/83603
13652         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
13653         arguments past the endof the argument list in functions declared
13654         without a prototype.
13655         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
13656         Avoid checking when arguments are null.
13658 2018-01-03  Martin Sebor  <msebor@redhat.com>
13660         PR c/83559
13661         * doc/extend.texi (attribute const): Fix a typo.
13662         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
13663         issuing -Wsuggest-attribute for void functions.
13665 2018-01-03  Martin Sebor  <msebor@redhat.com>
13667         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
13668         offset_int::from instead of wide_int::to_shwi.
13669         (maybe_diag_overlap): Remove assertion.
13670         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
13671         * gimple-ssa-sprintf.c (format_directive): Same.
13672         (parse_directive): Same.
13673         (sprintf_dom_walker::compute_format_length): Same.
13674         (try_substitute_return_value): Same.
13676 2018-01-03  Jeff Law  <law@redhat.com>
13678         PR middle-end/83654
13679         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
13680         non-constant residual for zero at runtime and avoid probing in
13681         that case.  Reorganize code for trailing problem to mirror handling
13682         of the residual.
13684 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13686         PR tree-optimization/83501
13687         * tree-ssa-strlen.c (get_string_cst): New.
13688         (handle_char_store): Call get_string_cst.
13690 2018-01-03  Martin Liska  <mliska@suse.cz>
13692         PR tree-optimization/83593
13693         * tree-ssa-strlen.c: Include tree-cfg.h.
13694         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
13695         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
13696         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
13697         to false.
13698         (strlen_dom_walker::before_dom_children): Call
13699         gimple_purge_dead_eh_edges. Dump tranformation with details
13700         dump flags.
13701         (strlen_dom_walker::before_dom_children): Update call by adding
13702         new argument cleanup_eh.
13703         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
13705 2018-01-03  Martin Liska  <mliska@suse.cz>
13707         PR ipa/83549
13708         * cif-code.def (VARIADIC_THUNK): New enum value.
13709         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
13710         thunks.
13712 2018-01-03  Jan Beulich  <jbeulich@suse.com>
13714         * sse.md (mov<mode>_internal): Tighten condition for when to use
13715         vmovdqu<ssescalarsize> for TI and OI modes.
13717 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
13719         Update copyright years.
13721 2018-01-03  Martin Liska  <mliska@suse.cz>
13723         PR ipa/83594
13724         * ipa-visibility.c (function_and_variable_visibility): Skip
13725         functions with noipa attribure.
13727 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
13729         * gcc.c (process_command): Update copyright notice dates.
13730         * gcov-dump.c (print_version): Ditto.
13731         * gcov.c (print_version): Ditto.
13732         * gcov-tool.c (print_version): Ditto.
13733         * gengtype.c (create_file): Ditto.
13734         * doc/cpp.texi: Bump @copying's copyright year.
13735         * doc/cppinternals.texi: Ditto.
13736         * doc/gcc.texi: Ditto.
13737         * doc/gccint.texi: Ditto.
13738         * doc/gcov.texi: Ditto.
13739         * doc/install.texi: Ditto.
13740         * doc/invoke.texi: Ditto.
13742 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13744         * vector-builder.h (vector_builder::m_full_nelts): Change from
13745         unsigned int to poly_uint64.
13746         (vector_builder::full_nelts): Update prototype accordingly.
13747         (vector_builder::new_vector): Likewise.
13748         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
13749         (vector_builder::operator ==): Likewise.
13750         (vector_builder::finalize): Likewise.
13751         * int-vector-builder.h (int_vector_builder::int_vector_builder):
13752         Take the number of elements as a poly_uint64 rather than an
13753         unsigned int.
13754         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
13755         from unsigned int to poly_uint64.
13756         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
13757         (vec_perm_indices::new_vector): Likewise.
13758         (vec_perm_indices::length): Likewise.
13759         (vec_perm_indices::nelts_per_input): Likewise.
13760         (vec_perm_indices::input_nelts): Likewise.
13761         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
13762         number of elements per input as a poly_uint64 rather than an
13763         unsigned int.  Use the original encoding for variable-length
13764         vectors, rather than clamping each individual element.
13765         For the second and subsequent elements in each pattern,
13766         clamp the step and base before clamping their sum.
13767         (vec_perm_indices::series_p): Handle polynomial element counts.
13768         (vec_perm_indices::all_in_range_p): Likewise.
13769         (vec_perm_indices_to_tree): Likewise.
13770         (vec_perm_indices_to_rtx): Likewise.
13771         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
13772         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
13773         (tree_vector_builder::new_binary_operation): Handle polynomial
13774         element counts.  Return false if we need to know the number
13775         of elements at compile time.
13776         * fold-const.c (fold_vec_perm): Punt if the number of elements
13777         isn't known at compile time.
13779 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13781         * vec-perm-indices.h (vec_perm_builder): Change element type
13782         from HOST_WIDE_INT to poly_int64.
13783         (vec_perm_indices::element_type): Update accordingly.
13784         (vec_perm_indices::clamp): Handle polynomial element_types.
13785         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
13786         (vec_perm_indices::all_in_range_p): Likewise.
13787         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
13788         than shwi trees.
13789         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
13790         polynomial vec_perm_indices element types.
13791         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
13792         * fold-const.c (fold_vec_perm): Likewise.
13793         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
13794         * tree-vect-generic.c (lower_vec_perm): Likewise.
13795         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
13796         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
13797         element type to HOST_WIDE_INT.
13799 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13800             Alan Hayward  <alan.hayward@arm.com>
13801             David Sherwood  <david.sherwood@arm.com>
13803         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
13804         rather than an int.  Use plus_constant.
13805         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
13806         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
13808 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13809             Alan Hayward  <alan.hayward@arm.com>
13810             David Sherwood  <david.sherwood@arm.com>
13812         * calls.c (emit_call_1, expand_call): Change struct_value_size from
13813         a HOST_WIDE_INT to a poly_int64.
13815 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13816             Alan Hayward  <alan.hayward@arm.com>
13817             David Sherwood  <david.sherwood@arm.com>
13819         * calls.c (load_register_parameters): Cope with polynomial
13820         mode sizes.  Require a constant size for BLKmode parameters
13821         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
13822         forces a parameter to be padded at the lsb end in order to
13823         fill a complete number of words, require the parameter size
13824         to be ordered wrt UNITS_PER_WORD.
13826 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13827             Alan Hayward  <alan.hayward@arm.com>
13828             David Sherwood  <david.sherwood@arm.com>
13830         * reload1.c (spill_stack_slot_width): Change element type
13831         from unsigned int to poly_uint64_pod.
13832         (alter_reg): Treat mode sizes as polynomial.
13834 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13835             Alan Hayward  <alan.hayward@arm.com>
13836             David Sherwood  <david.sherwood@arm.com>
13838         * reload.c (complex_word_subreg_p): New function.
13839         (reload_inner_reg_of_subreg, push_reload): Use it.
13841 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13842             Alan Hayward  <alan.hayward@arm.com>
13843             David Sherwood  <david.sherwood@arm.com>
13845         * lra-constraints.c (process_alt_operands): Reject matched
13846         operands whose sizes aren't ordered.
13847         (match_reload): Refer to this check here.
13849 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13850             Alan Hayward  <alan.hayward@arm.com>
13851             David Sherwood  <david.sherwood@arm.com>
13853         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
13854         that the mode size is in the set {1, 2, 4, 8, 16}.
13856 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13857             Alan Hayward  <alan.hayward@arm.com>
13858             David Sherwood  <david.sherwood@arm.com>
13860         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
13861         Use plus_constant instead of gen_rtx_PLUS.
13863 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13864             Alan Hayward  <alan.hayward@arm.com>
13865             David Sherwood  <david.sherwood@arm.com>
13867         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
13868         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
13869         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
13870         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
13871         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
13872         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
13873         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
13874         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
13875         * config/i386/i386.c (ix86_push_rounding): ...this new function.
13876         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
13877         a poly_int64.
13878         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
13879         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
13880         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
13881         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
13882         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
13883         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
13884         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
13885         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
13886         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
13887         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
13888         function.
13889         * expr.c (emit_move_resolve_push): Treat the input and result
13890         of PUSH_ROUNDING as a poly_int64.
13891         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
13892         (emit_push_insn): Likewise.
13893         * lra-eliminations.c (mark_not_eliminable): Likewise.
13894         * recog.c (push_operand): Likewise.
13895         * reload1.c (elimination_effects): Likewise.
13896         * rtlanal.c (nonzero_bits1): Likewise.
13897         * calls.c (store_one_arg): Likewise.  Require the padding to be
13898         known at compile time.
13900 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13901             Alan Hayward  <alan.hayward@arm.com>
13902             David Sherwood  <david.sherwood@arm.com>
13904         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
13905         Use plus_constant instead of gen_rtx_PLUS.
13907 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13908             Alan Hayward  <alan.hayward@arm.com>
13909             David Sherwood  <david.sherwood@arm.com>
13911         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
13912         rather than an int.
13914 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13915             Alan Hayward  <alan.hayward@arm.com>
13916             David Sherwood  <david.sherwood@arm.com>
13918         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
13919         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
13920         via stack temporaries.  Treat the mode size as polynomial too.
13922 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13923             Alan Hayward  <alan.hayward@arm.com>
13924             David Sherwood  <david.sherwood@arm.com>
13926         * expr.c (expand_expr_real_2): When handling conversions involving
13927         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
13928         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
13929         as a poly_uint64 too.
13931 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13932             Alan Hayward  <alan.hayward@arm.com>
13933             David Sherwood  <david.sherwood@arm.com>
13935         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
13937 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13938             Alan Hayward  <alan.hayward@arm.com>
13939             David Sherwood  <david.sherwood@arm.com>
13941         * combine.c (can_change_dest_mode): Handle polynomial
13942         REGMODE_NATURAL_SIZE.
13943         * expmed.c (store_bit_field_1): Likewise.
13944         * expr.c (store_constructor): Likewise.
13945         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
13946         and polynomial REGMODE_NATURAL_SIZE.
13947         (gen_lowpart_common): Likewise.
13948         * reginfo.c (record_subregs_of_mode): Likewise.
13949         * rtlanal.c (read_modify_subreg_p): Likewise.
13951 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13952             Alan Hayward  <alan.hayward@arm.com>
13953             David Sherwood  <david.sherwood@arm.com>
13955         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
13956         numbers of elements.
13958 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13959             Alan Hayward  <alan.hayward@arm.com>
13960             David Sherwood  <david.sherwood@arm.com>
13962         * match.pd: Cope with polynomial numbers of vector elements.
13964 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13965             Alan Hayward  <alan.hayward@arm.com>
13966             David Sherwood  <david.sherwood@arm.com>
13968         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
13969         in a POINTER_PLUS_EXPR.
13971 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13972             Alan Hayward  <alan.hayward@arm.com>
13973             David Sherwood  <david.sherwood@arm.com>
13975         * omp-simd-clone.c (simd_clone_subparts): New function.
13976         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
13977         (ipa_simd_modify_function_body): Likewise.
13979 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13980             Alan Hayward  <alan.hayward@arm.com>
13981             David Sherwood  <david.sherwood@arm.com>
13983         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
13984         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
13985         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
13986         (expand_vector_condition, vector_element): Likewise.
13987         (subparts_gt): New function.
13988         (get_compute_type): Use subparts_gt.
13989         (count_type_subparts): Delete.
13990         (expand_vector_operations_1): Use subparts_gt instead of
13991         count_type_subparts.
13993 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13994             Alan Hayward  <alan.hayward@arm.com>
13995             David Sherwood  <david.sherwood@arm.com>
13997         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
13998         (vect_compile_time_alias): ...this new function.  Do the calculation
13999         on poly_ints rather than trees.
14000         (vect_prune_runtime_alias_test_list): Update call accordingly.
14002 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14003             Alan Hayward  <alan.hayward@arm.com>
14004             David Sherwood  <david.sherwood@arm.com>
14006         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
14007         numbers of units.
14008         (vect_schedule_slp_instance): Likewise.
14010 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14011             Alan Hayward  <alan.hayward@arm.com>
14012             David Sherwood  <david.sherwood@arm.com>
14014         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
14015         constant and extern definitions for variable-length vectors.
14016         (vect_get_constant_vectors): Note that the number of units
14017         is known to be constant.
14019 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14020             Alan Hayward  <alan.hayward@arm.com>
14021             David Sherwood  <david.sherwood@arm.com>
14023         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
14024         of units as polynomial.  Choose between WIDE and NARROW based
14025         on multiple_p.
14027 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14028             Alan Hayward  <alan.hayward@arm.com>
14029             David Sherwood  <david.sherwood@arm.com>
14031         * tree-vect-stmts.c (simd_clone_subparts): New function.
14032         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
14034 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14035             Alan Hayward  <alan.hayward@arm.com>
14036             David Sherwood  <david.sherwood@arm.com>
14038         * tree-vect-stmts.c (vectorizable_call): Treat the number of
14039         vectors as polynomial.  Use build_index_vector for
14040         IFN_GOMP_SIMD_LANE.
14042 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14043             Alan Hayward  <alan.hayward@arm.com>
14044             David Sherwood  <david.sherwood@arm.com>
14046         * tree-vect-stmts.c (get_load_store_type): Treat the number of
14047         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
14048         for variable-length vectors.
14049         (vectorizable_mask_load_store): Treat the number of units as
14050         polynomial, asserting that it is constant if the condition has
14051         already been enforced.
14052         (vectorizable_store, vectorizable_load): Likewise.
14054 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14055             Alan Hayward  <alan.hayward@arm.com>
14056             David Sherwood  <david.sherwood@arm.com>
14058         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
14059         of units as polynomial.  Punt if we can't tell at compile time
14060         which vector contains the final result.
14062 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14063             Alan Hayward  <alan.hayward@arm.com>
14064             David Sherwood  <david.sherwood@arm.com>
14066         * tree-vect-loop.c (vectorizable_induction): Treat the number
14067         of units as polynomial.  Punt on SLP inductions.  Use an integer
14068         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
14069         cast of such a series for variable-length floating-point
14070         reductions.
14072 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14073             Alan Hayward  <alan.hayward@arm.com>
14074             David Sherwood  <david.sherwood@arm.com>
14076         * tree.h (build_index_vector): Declare.
14077         * tree.c (build_index_vector): New function.
14078         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
14079         of units as polynomial, forcibly converting it to a constant if
14080         vectorizable_reduction has already enforced the condition.
14081         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
14082         to create a {1,2,3,...} vector.
14083         (vectorizable_reduction): Treat the number of units as polynomial.
14084         Choose vectype_in based on the largest scalar element size rather
14085         than the smallest number of units.  Enforce the restrictions
14086         relied on above.
14088 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14089             Alan Hayward  <alan.hayward@arm.com>
14090             David Sherwood  <david.sherwood@arm.com>
14092         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
14093         number of units as polynomial.
14095 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14096             Alan Hayward  <alan.hayward@arm.com>
14097             David Sherwood  <david.sherwood@arm.com>
14099         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
14100         * target.def (autovectorize_vector_sizes): Return the vector sizes
14101         by pointer, using vector_sizes rather than a bitmask.
14102         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
14103         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
14104         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
14105         Likewise.
14106         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
14107         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
14108         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
14109         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
14110         * omp-general.c (omp_max_vf): Likewise.
14111         * omp-low.c (omp_clause_aligned_alignment): Likewise.
14112         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
14113         * tree-vect-loop.c (vect_analyze_loop): Likewise.
14114         * tree-vect-slp.c (vect_slp_bb): Likewise.
14115         * doc/tm.texi: Regenerate.
14116         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
14117         to a poly_uint64.
14118         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
14119         the vector size as a poly_uint64 rather than an unsigned int.
14120         (current_vector_size): Change from an unsigned int to a poly_uint64.
14121         (get_vectype_for_scalar_type): Update accordingly.
14122         * tree.h (build_truth_vector_type): Take the size and number of
14123         units as a poly_uint64 rather than an unsigned int.
14124         (build_vector_type): Add a temporary overload that takes
14125         the number of units as a poly_uint64 rather than an unsigned int.
14126         * tree.c (make_vector_type): Likewise.
14127         (build_truth_vector_type): Take the number of units as a poly_uint64
14128         rather than an unsigned int.
14130 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14131             Alan Hayward  <alan.hayward@arm.com>
14132             David Sherwood  <david.sherwood@arm.com>
14134         * target.def (get_mask_mode): Take the number of units and length
14135         as poly_uint64s rather than unsigned ints.
14136         * targhooks.h (default_get_mask_mode): Update accordingly.
14137         * targhooks.c (default_get_mask_mode): Likewise.
14138         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
14139         * doc/tm.texi: Regenerate.
14141 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14142             Alan Hayward  <alan.hayward@arm.com>
14143             David Sherwood  <david.sherwood@arm.com>
14145         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
14146         * omp-general.c (omp_max_vf): Likewise.
14147         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
14148         (expand_omp_simd): Handle polynomial safelen.
14149         * omp-low.c (omplow_simd_context): Add a default constructor.
14150         (omplow_simd_context::max_vf): Change from int to poly_uint64.
14151         (lower_rec_simd_input_clauses): Update accordingly.
14152         (lower_rec_input_clauses): Likewise.
14154 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14155             Alan Hayward  <alan.hayward@arm.com>
14156             David Sherwood  <david.sherwood@arm.com>
14158         * tree-vectorizer.h (vect_nunits_for_cost): New function.
14159         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
14160         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
14161         (vect_analyze_slp_cost): Likewise.
14162         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
14163         (vect_model_load_cost): Likewise.
14165 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14166             Alan Hayward  <alan.hayward@arm.com>
14167             David Sherwood  <david.sherwood@arm.com>
14169         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
14170         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
14171         from an unsigned int * to a poly_uint64_pod *.
14172         (calculate_unrolling_factor): New function.
14173         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
14175 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14176             Alan Hayward  <alan.hayward@arm.com>
14177             David Sherwood  <david.sherwood@arm.com>
14179         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
14180         from an unsigned int to a poly_uint64.
14181         (_loop_vec_info::slp_unrolling_factor): Likewise.
14182         (_loop_vec_info::vectorization_factor): Change from an int
14183         to a poly_uint64.
14184         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
14185         (vect_get_num_vectors): New function.
14186         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
14187         (vect_get_num_copies): Use vect_get_num_vectors.
14188         (vect_analyze_data_ref_dependences): Change max_vf from an int *
14189         to an unsigned int *.
14190         (vect_analyze_data_refs): Change min_vf from an int * to a
14191         poly_uint64 *.
14192         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14193         than an unsigned HOST_WIDE_INT.
14194         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
14195         (vect_analyze_data_ref_dependence): Change max_vf from an int *
14196         to an unsigned int *.
14197         (vect_analyze_data_ref_dependences): Likewise.
14198         (vect_compute_data_ref_alignment): Handle polynomial vf.
14199         (vect_enhance_data_refs_alignment): Likewise.
14200         (vect_prune_runtime_alias_test_list): Likewise.
14201         (vect_shift_permute_load_chain): Likewise.
14202         (vect_supportable_dr_alignment): Likewise.
14203         (dependence_distance_ge_vf): Take the vectorization factor as a
14204         poly_uint64 rather than an unsigned HOST_WIDE_INT.
14205         (vect_analyze_data_refs): Change min_vf from an int * to a
14206         poly_uint64 *.
14207         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
14208         vfm1 as a poly_uint64 rather than an int.  Make the same change
14209         for the returned bound_scalar.
14210         (vect_gen_vector_loop_niters): Handle polynomial vf.
14211         (vect_do_peeling): Likewise.  Update call to
14212         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
14213         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
14214         be constant.
14215         * tree-vect-loop.c (vect_determine_vectorization_factor)
14216         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
14217         (vect_get_known_peeling_cost): Likewise.
14218         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
14219         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
14220         (vect_transform_loop): Likewise.  Use the lowest possible VF when
14221         updating the upper bounds of the loop.
14222         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
14223         rather than an int.
14224         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
14225         polynomial unroll factors.
14226         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
14227         (vect_make_slp_decision): Likewise.
14228         (vect_supported_load_permutation_p): Likewise, and polynomial
14229         vf too.
14230         (vect_analyze_slp_cost): Handle polynomial vf.
14231         (vect_slp_analyze_node_operations): Likewise.
14232         (vect_slp_analyze_bb_1): Likewise.
14233         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14234         than an unsigned HOST_WIDE_INT.
14235         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
14236         (vectorizable_load): Handle polynomial vf.
14237         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
14238         a poly_uint64.
14239         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
14241 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14242             Alan Hayward  <alan.hayward@arm.com>
14243             David Sherwood  <david.sherwood@arm.com>
14245         * match.pd: Handle bit operations involving three constants
14246         and try to fold one pair.
14248 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14250         * tree-vect-loop-manip.c: Include gimple-fold.h.
14251         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
14252         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
14253         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
14254         Add a path that uses a step of VF instead of 1, but disable it
14255         for now.
14256         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
14257         and niters_no_overflow parameters.  Update calls to
14258         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
14259         Create a new SSA name if the latter choses to use a ste other
14260         than zero, and return it via niters_vector_mult_vf_var.
14261         * tree-vect-loop.c (vect_transform_loop): Update calls to
14262         vect_do_peeling, vect_gen_vector_loop_niters and
14263         slpeel_make_loop_iterate_ntimes.
14264         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
14265         (vect_gen_vector_loop_niters): Update declarations after above changes.
14267 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
14269         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
14270         128-bit round to integer instructions.
14271         (ceil<mode>2): Likewise.
14272         (btrunc<mode>2): Likewise.
14273         (round<mode>2): Likewise.
14275 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
14277         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
14278         unaligned VSX load/store on P8/P9.
14279         (expand_block_clear): Allow the use of unaligned VSX
14280         load/store on P8/P9.
14282 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14284         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
14285         New function.
14286         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
14287         swap associated with both a load and a store.
14289 2018-01-02  Andrew Waterman  <andrew@sifive.com>
14291         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
14292         * config/riscv/riscv.md (clear_cache): Use it.
14294 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
14296         * web.c: Remove out-of-date comment.
14298 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14300         * expr.c (fixup_args_size_notes): Check that any existing
14301         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
14302         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
14303         (emit_single_push_insn): ...here.
14305 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14307         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
14308         (const_vector_encoded_nelts): New function.
14309         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
14310         (const_vector_int_elt, const_vector_elt): Declare.
14311         * emit-rtl.c (const_vector_int_elt_1): New function.
14312         (const_vector_elt): Likewise.
14313         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
14314         of CONST_VECTOR_ELT.
14316 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14318         * expr.c: Include rtx-vector-builder.h.
14319         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
14320         directly on the tree encoding.
14321         (const_vector_from_tree): Likewise.
14322         * optabs.c: Include rtx-vector-builder.h.
14323         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
14324         sequence of "u" values.
14325         * vec-perm-indices.c: Include rtx-vector-builder.h.
14326         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
14327         directly on the vec_perm_indices encoding.
14329 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14331         * doc/rtl.texi (const_vector): Describe new encoding scheme.
14332         * Makefile.in (OBJS): Add rtx-vector-builder.o.
14333         * rtx-vector-builder.h: New file.
14334         * rtx-vector-builder.c: Likewise.
14335         * rtl.h (rtx_def::u2): Add a const_vector field.
14336         (CONST_VECTOR_NPATTERNS): New macro.
14337         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
14338         (CONST_VECTOR_DUPLICATE_P): Likewise.
14339         (CONST_VECTOR_STEPPED_P): Likewise.
14340         (CONST_VECTOR_ENCODED_ELT): Likewise.
14341         (const_vec_duplicate_p): Check for a duplicated vector encoding.
14342         (unwrap_const_vec_duplicate): Likewise.
14343         (const_vec_series_p): Check for a non-duplicated vector encoding.
14344         Say that the function only returns true for integer vectors.
14345         * emit-rtl.c: Include rtx-vector-builder.h.
14346         (gen_const_vec_duplicate_1): Delete.
14347         (gen_const_vector): Call gen_const_vec_duplicate instead of
14348         gen_const_vec_duplicate_1.
14349         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
14350         (gen_const_vec_duplicate): Use rtx_vector_builder.
14351         (gen_const_vec_series): Likewise.
14352         (gen_rtx_CONST_VECTOR): Likewise.
14353         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
14354         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14355         Build a new vector rather than modifying a CONST_VECTOR in-place.
14356         (handle_special_swappables): Update call accordingly.
14357         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
14358         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14359         Build a new vector rather than modifying a CONST_VECTOR in-place.
14360         (handle_special_swappables): Update call accordingly.
14362 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14364         * simplify-rtx.c (simplify_const_binary_operation): Use
14365         CONST_VECTOR_ELT instead of XVECEXP.
14367 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14369         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
14370         the selector elements to be different from the data elements
14371         if the selector is a VECTOR_CST.
14372         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
14373         ssizetype for the selector.
14375 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14377         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
14378         before testing each element individually.
14379         * tree-vect-generic.c (lower_vec_perm): Likewise.
14381 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14383         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
14384         * selftest-run-tests.c (selftest::run_tests): Call it.
14385         * vector-builder.h (vector_builder::operator ==): New function.
14386         (vector_builder::operator !=): Likewise.
14387         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
14388         (vec_perm_indices::all_from_input_p): New function.
14389         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14390         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
14391         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
14392         instead of reading the VECTOR_CST directly.  Detect whether both
14393         vector inputs are the same before constructing the vec_perm_indices,
14394         and update the number of inputs argument accordingly.  Use the
14395         utility functions added above.  Only construct sel2 if we need to.
14397 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14399         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
14400         the broadcast of the low byte.
14401         (expand_mult_highpart): Use an explicit encoding for the permutes.
14402         * optabs-query.c (can_mult_highpart_p): Likewise.
14403         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
14404         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14405         (vectorizable_bswap): Likewise.
14406         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
14407         explicit encoding for the power-of-2 permutes.
14408         (vect_permute_store_chain): Likewise.
14409         (vect_grouped_load_supported): Likewise.
14410         (vect_permute_load_chain): Likewise.
14412 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14414         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
14415         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
14416         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
14417         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14418         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
14419         (vect_gen_perm_mask_any): Likewise.
14421 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14423         * int-vector-builder.h: New file.
14424         * vec-perm-indices.h: Include int-vector-builder.h.
14425         (vec_perm_indices): Redefine as an int_vector_builder.
14426         (auto_vec_perm_indices): Delete.
14427         (vec_perm_builder): Redefine as a stand-alone class.
14428         (vec_perm_indices::vec_perm_indices): New function.
14429         (vec_perm_indices::clamp): Likewise.
14430         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
14431         (vec_perm_indices::new_vector): New function.
14432         (vec_perm_indices::new_expanded_vector): Update for new
14433         vec_perm_indices class.
14434         (vec_perm_indices::rotate_inputs): New function.
14435         (vec_perm_indices::all_in_range_p): Operate directly on the
14436         encoded form, without computing elided elements.
14437         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
14438         encoding.  Update for new vec_perm_indices class.
14439         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
14440         the given vec_perm_builder.
14441         (expand_vec_perm_var): Update vec_perm_builder constructor.
14442         (expand_mult_highpart): Use vec_perm_builder instead of
14443         auto_vec_perm_indices.
14444         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
14445         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
14446         or double series encoding as appropriate.
14447         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
14448         vec_perm_indices instead of auto_vec_perm_indices.
14449         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14450         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14451         (vect_permute_store_chain): Likewise.
14452         (vect_grouped_load_supported): Likewise.
14453         (vect_permute_load_chain): Likewise.
14454         (vect_shift_permute_load_chain): Likewise.
14455         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
14456         (vect_transform_slp_perm_load): Likewise.
14457         (vect_schedule_slp_instance): Likewise.
14458         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14459         (vectorizable_mask_load_store): Likewise.
14460         (vectorizable_bswap): Likewise.
14461         (vectorizable_store): Likewise.
14462         (vectorizable_load): Likewise.
14463         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
14464         vec_perm_indices instead of auto_vec_perm_indices.  Use
14465         tree_to_vec_perm_builder to read the vector from a tree.
14466         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
14467         vec_perm_builder instead of a vec_perm_indices.
14468         (have_whole_vector_shift): Use vec_perm_builder and
14469         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
14470         truncation to calc_vec_perm_mask_for_shift.
14471         (vect_create_epilog_for_reduction): Likewise.
14472         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
14473         from auto_vec_perm_indices to vec_perm_indices.
14474         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14475         instead of changing individual elements.
14476         (aarch64_vectorize_vec_perm_const): Use new_vector to install
14477         the vector in d.perm.
14478         * config/arm/arm.c (expand_vec_perm_d::perm): Change
14479         from auto_vec_perm_indices to vec_perm_indices.
14480         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14481         instead of changing individual elements.
14482         (arm_vectorize_vec_perm_const): Use new_vector to install
14483         the vector in d.perm.
14484         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
14485         Update vec_perm_builder constructor.
14486         (rs6000_expand_interleave): Likewise.
14487         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
14488         (rs6000_expand_interleave): Likewise.
14490 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14492         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
14493         to qimode could truncate the indices.
14494         * optabs.c (expand_vec_perm_var): Likewise.
14496 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14498         * Makefile.in (OBJS): Add vec-perm-indices.o.
14499         * vec-perm-indices.h: New file.
14500         * vec-perm-indices.c: Likewise.
14501         * target.h (vec_perm_indices): Replace with a forward class
14502         declaration.
14503         (auto_vec_perm_indices): Move to vec-perm-indices.h.
14504         * optabs.h: Include vec-perm-indices.h.
14505         (expand_vec_perm): Delete.
14506         (selector_fits_mode_p, expand_vec_perm_var): Declare.
14507         (expand_vec_perm_const): Declare.
14508         * target.def (vec_perm_const_ok): Replace with...
14509         (vec_perm_const): ...this new hook.
14510         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
14511         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
14512         * doc/tm.texi: Regenerate.
14513         * optabs.def (vec_perm_const): Delete.
14514         * doc/md.texi (vec_perm_const): Likewise.
14515         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
14516         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
14517         expand_vec_perm for constant permutation vectors.  Assert that
14518         the mode of variable permutation vectors is the integer equivalent
14519         of the mode that is being permuted.
14520         * optabs-query.h (selector_fits_mode_p): Declare.
14521         * optabs-query.c: Include vec-perm-indices.h.
14522         (selector_fits_mode_p): New function.
14523         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
14524         is defined, instead of checking whether the vec_perm_const_optab
14525         exists.  Use targetm.vectorize.vec_perm_const instead of
14526         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
14527         fit in the vector mode before using a variable permute.
14528         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
14529         vec_perm_indices instead of an rtx.
14530         (expand_vec_perm): Replace with...
14531         (expand_vec_perm_const): ...this new function.  Take the selector
14532         as a vec_perm_indices rather than an rtx.  Also take the mode of
14533         the selector.  Update call to shift_amt_for_vec_perm_mask.
14534         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
14535         Use vec_perm_indices::new_expanded_vector to expand the original
14536         selector into bytes.  Check whether the indices fit in the vector
14537         mode before using a variable permute.
14538         (expand_vec_perm_var): Make global.
14539         (expand_mult_highpart): Use expand_vec_perm_const.
14540         * fold-const.c: Includes vec-perm-indices.h.
14541         * tree-ssa-forwprop.c: Likewise.
14542         * tree-vect-data-refs.c: Likewise.
14543         * tree-vect-generic.c: Likewise.
14544         * tree-vect-loop.c: Likewise.
14545         * tree-vect-slp.c: Likewise.
14546         * tree-vect-stmts.c: Likewise.
14547         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
14548         Delete.
14549         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
14550         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
14551         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
14552         (aarch64_vectorize_vec_perm_const): ...this new function.
14553         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14554         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14555         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
14556         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
14557         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14558         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14559         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
14560         into...
14561         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
14562         check for NEON modes.
14563         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
14564         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
14565         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
14566         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
14567         into...
14568         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
14569         the old VEC_PERM_CONST conditions.
14570         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
14571         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
14572         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
14573         (ia64_vectorize_vec_perm_const_ok): Merge into...
14574         (ia64_vectorize_vec_perm_const): ...this new function.
14575         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
14576         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
14577         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
14578         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
14579         * config/mips/mips.c (mips_expand_vec_perm_const)
14580         (mips_vectorize_vec_perm_const_ok): Merge into...
14581         (mips_vectorize_vec_perm_const): ...this new function.
14582         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
14583         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
14584         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
14585         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
14586         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
14587         (rs6000_expand_vec_perm_const): Delete.
14588         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
14589         Delete.
14590         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14591         (altivec_expand_vec_perm_const_le): Take each operand individually.
14592         Operate on constant selectors rather than rtxes.
14593         (altivec_expand_vec_perm_const): Likewise.  Update call to
14594         altivec_expand_vec_perm_const_le.
14595         (rs6000_expand_vec_perm_const): Delete.
14596         (rs6000_vectorize_vec_perm_const_ok): Delete.
14597         (rs6000_vectorize_vec_perm_const): New function.
14598         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
14599         an element count and rtx array.
14600         (rs6000_expand_extract_even): Update call accordingly.
14601         (rs6000_expand_interleave): Likewise.
14602         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
14603         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
14604         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
14605         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
14606         (rs6000_expand_vec_perm_const): Delete.
14607         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14608         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14609         (altivec_expand_vec_perm_const_le): Take each operand individually.
14610         Operate on constant selectors rather than rtxes.
14611         (altivec_expand_vec_perm_const): Likewise.  Update call to
14612         altivec_expand_vec_perm_const_le.
14613         (rs6000_expand_vec_perm_const): Delete.
14614         (rs6000_vectorize_vec_perm_const_ok): Delete.
14615         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
14616         reference to the SPE evmerge intructions.
14617         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
14618         an element count and rtx array.
14619         (rs6000_expand_extract_even): Update call accordingly.
14620         (rs6000_expand_interleave): Likewise.
14621         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
14622         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
14623         new function.
14624         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14626 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14628         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
14629         vector mode and that that mode matches the mode of the data
14630         being permuted.
14631         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
14632         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
14633         directly using expand_vec_perm_1 when forcing selectors into
14634         registers.
14635         (expand_vec_perm_var): New function, split out from expand_vec_perm.
14637 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14639         * optabs-query.h (can_vec_perm_p): Delete.
14640         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
14641         * optabs-query.c (can_vec_perm_p): Split into...
14642         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
14643         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
14644         particular selector is valid.
14645         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14646         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14647         (vect_grouped_load_supported): Likewise.
14648         (vect_shift_permute_load_chain): Likewise.
14649         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
14650         (vect_transform_slp_perm_load): Likewise.
14651         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14652         (vectorizable_bswap): Likewise.
14653         (vect_gen_perm_mask_checked): Likewise.
14654         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
14655         implementations of variable permutation vectors into account
14656         when deciding which selector to use.
14657         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
14658         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
14659         with a false third argument.
14660         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
14661         to test whether the constant selector is valid and can_vec_perm_var_p
14662         to test whether a variable selector is valid.
14664 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14666         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
14667         * optabs-query.c (can_vec_perm_p): Likewise.
14668         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
14669         instead of vec_perm_indices.
14670         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
14671         (vect_gen_perm_mask_checked): Likewise,
14672         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
14673         (vect_gen_perm_mask_checked): Likewise,
14675 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14677         * optabs-query.h (qimode_for_vec_perm): Declare.
14678         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
14679         (qimode_for_vec_perm): ...this new function.
14680         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
14682 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
14684         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
14685         does not have a conditional at the top.
14687 2018-01-02  Richard Biener  <rguenther@suse.de>
14689         * ipa-inline.c (big_speedup_p): Fix expression.
14691 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
14693         PR target/81616
14694         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
14695         for generic 4->6.
14697 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
14699         PR target/81616
14700         Generic tuning.
14701         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
14702         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
14703         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
14704         cond_taken_branch_cost 3->4.
14706 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
14708         PR tree-optimization/83581
14709         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
14710         TODO_cleanup_cfg if any changes have been made.
14712         PR middle-end/83608
14713         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
14714         convert_modes if target mode has the right side, but different mode
14715         class.
14717         PR middle-end/83609
14718         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
14719         last argument when extracting from CONCAT.  If either from_real or
14720         from_imag is NULL, use expansion through memory.  If result is not
14721         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
14722         the parts directly to inner mode, if even that fails, use expansion
14723         through memory.
14725         PR middle-end/83623
14726         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
14727         check for bswap in mode rather than HImode and use that in expand_unop
14728         too.
14730 Copyright (C) 2018 Free Software Foundation, Inc.
14732 Copying and distribution of this file, with or without modification,
14733 are permitted in any medium without royalty provided the copyright
14734 notice and this notice are preserved.