[NDS32] Support Linux target for nds32.
[official-gcc.git] / gcc / ChangeLog
blob0e6eef70fbb6e32bd692e5edd803b00e40043c12
1 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
2             Kito Cheng  <kito.cheng@gmail.com>
4         * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
5         (nds32le-*-*, nds32be-*-*): Integrate checking process.
6         (nds32*-*-*): Add glibc and uclibc conditions.
7         * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
8         (TARGET_EXCEPT_UNWIND_INFO): Define.
9         * config/nds32/elf.h: New file.
10         * config/nds32/linux.h: New file.
11         * config/nds32/nds32-elf.opt: New file.
12         * config/nds32/nds32-linux.opt: New file.
13         * config/nds32/nds32-fp-as-gp.c
14         (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
15         * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
16         TARGET_LINUX_ABI.
17         (nds32_asm_file_end): Ditto.
18         (nds32_print_operand): Ditto.
19         (nds32_insert_attributes): Ditto.
20         (nds32_init_libfuncs): New function.
21         (TARGET_HAVE_TLS): Define.
22         (TARGET_INIT_LIBFUNCS): Define.
23         * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
24         spec content.
25         (TARGET_ELF): Apply different mcmodel setting.
26         (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
27         been migrated into elf.h and linux.h files.
28         * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
29         * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
30         (mcmodel): The content has been migrated into nds32-elf.opt and
31         nds32-linux.opt files.
32         * config/nds32/t-elf: New file.
33         * config/nds32/t-linux: New file.
35 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
36             Shiva Chen  <shiva0217@gmail.com>
38         * config/nds32/constants.md (unspec_volatile_element): Add
39         UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
40         * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
41         optimization.
42         * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
43         (make_pass_nds32_fp_as_gp): Declare.
44         * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
45         optmization pass.
46         (nds32_asm_function_end_prologue): Remove unused asm output.
47         (nds32_asm_function_begin_epilogue): Remove unused asm output.
48         (nds32_asm_file_start): Output necessary fp_as_gp information.
49         (nds32_option_override): Adjust register usage.
50         (nds32_expand_prologue): Consider fp_as_gp situation.
51         (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
52         * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
53         (epilogue): Ditto.
54         (return): Ditto.
55         (simple_return): Ditto.
56         (omit_fp_begin): Output special directive for fp_as_gp.
57         (omit_fp_end): Output special directive for fp_as_gp.
58         * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
59         mforbid-fp-as-gp): New options.
61 2018-06-01  Mark Wielaard  <mark@klomp.org>
63         * dwarf2out.c (dwarf2out_finish): Remove generation of
64         DW_AT_loclists_base.
66 2018-06-01  Eric Botcazou  <ebotcazou@adacore.com>
68         * gimple-ssa-store-merging.c: Include gimple-fold.h.
69         (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
70         (struct merged_store_group): Add bit_insertion field.
71         (dump_char_array): Use standard hexadecimal format.
72         (merged_store_group::merged_store_group): Set bit_insertion to false.
73         (merged_store_group::apply_stores): Use optimal buffer size.  Deal
74         with BIT_INSERT_EXPR stores.  Move up code updating the mask and
75         also print the mask in the dump file.
76         (pass_store_merging::gate): Minor tweak.
77         (imm_store_chain_info::coalesce_immediate): Fix wrong association
78         of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
79         stores with INTEGER_CST stores.
80         (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
81         (imm_store_chain_info::output_merged_store): Add try_bitpos variable
82         and use it throughout.  Generate bit insertion sequences if need be.
83         (pass_store_merging::process_store): Remove redundant condition.
84         Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
86 2018-06-01  Segher Boessenkool  <segher@kernel.crashing.org>
88         * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
89         the 128-bit floating point types.  Fix function comment.
91 2018-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
93         * config/aarch64/aarch64-simd.md
94         (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
95         mnemonics.
96         (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
97         mnemonics.
99 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
101         PR tree-optimization/85989
102         * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
103         variable.
104         (backprop::intersect_uses): Check it when deciding whether this
105         is a backedge reference.
106         (backprop::process_block): Add each phi to m_visited_phis
107         after visiting it, then clear it at the end.
109 2018-06-01  Richard Biener  <rguenther@suse.de>
111         * tree-vectorizer.h (vect_dr_stmt): New function.
112         (vect_get_load_cost): Adjust.
113         (vect_get_store_cost): Likewise.
114         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
115         Use vect_dr_stmt instead of DR_SMTT.
116         (vect_record_base_alignments): Likewise.
117         (vect_calculate_target_alignment): Likewise.
118         (vect_compute_data_ref_alignment): Likewise and make static.
119         (vect_update_misalignment_for_peel): Likewise.
120         (vect_verify_datarefs_alignment): Likewise.
121         (vector_alignment_reachable_p): Likewise.
122         (vect_get_data_access_cost): Likewise.  Pass down
123         vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
124         (vect_get_peeling_costs_all_drs): Likewise.
125         (vect_peeling_hash_get_lowest_cost): Likewise.
126         (vect_enhance_data_refs_alignment): Likewise.
127         (vect_find_same_alignment_drs): Likewise.
128         (vect_analyze_data_refs_alignment): Likewise.
129         (vect_analyze_group_access_1): Likewise.
130         (vect_analyze_group_access): Likewise.
131         (vect_analyze_data_ref_access): Likewise.
132         (vect_analyze_data_ref_accesses): Likewise.
133         (vect_vfa_segment_size): Likewise.
134         (vect_small_gap_p): Likewise.
135         (vectorizable_with_step_bound_p): Likewise.
136         (vect_prune_runtime_alias_test_list): Likewise.
137         (vect_analyze_data_refs): Likewise.
138         (vect_supportable_dr_alignment): Likewise.
139         * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
140         (vect_gen_prolog_loop_niters): Likewise.
141         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
142         * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
143         modify DR_STMT.
144         (vect_recog_mask_conversion_pattern): Likewise.
145         (vect_try_gather_scatter_pattern): Likewise.
146         * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
147         to vect_get_store_cost.
148         (vect_get_store_cost): Get stmt_info instead of DR.
149         (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
150         (vect_get_load_cost): Get stmt_info instead of DR.
152 2018-06-01  Richard Biener  <rguenther@suse.de>
154         PR middle-end/86017
155         * gimple-fold.c (var_decl_component_p): Also allow offsetted
156         vars wrapped in MEM_REFs.
158 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
160         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
161         Fix subreg tests so that we only return a choice between
162         GENERAL_REGS and FP_REGS if the original classes included both.
164 2018-06-01  Richard Biener  <rguenther@suse.de>
166         PR ipa/85960
167         * tree-ssa-structalias.c (get_function_part_constraint):
168         Handle NULL fi->decl.
169         (find_func_aliases_for_call): Properly handle indirect
170         fi from direct call.
171         (find_func_clobbers): Likewise.
172         (ipa_pta_execute): Likewise.
173         (create_variable_info_for): For functions that are ifunc_resolver
174         resolve to a varinfo that contains the result of the resolver
175         call.
176         (associate_varinfo_to_alias): Do not treat ifunc resolvers as
177         aliases.
179 2018-05-31  Michael Collison  <michael.collison@arm.com>
181         * config/aarch64/aarch64.md:
182         (*fix_to_zero_extenddfdi2): New pattern.
183         * gcc.target/aarch64/fix_extend1.c: New testcase.
185 2018-05-31  Qing Zhao <qing.zhao@oracle.com>
187         PR middle-end/78809
188         PR middle-end/83026
189         * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
190         and BUILT_IN_STRNCMP_EQ.
191         * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
192         BUILT_IN_STRNCMP_EQ.
193         * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
194         handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
195         (gimple_fold_builtin): Likewise.
196         * tree-ssa-strlen.c (compute_string_length): New function.
197         (determine_min_obsize): New function.
198         (handle_builtin_string_cmp): New function to handle calls to
199         string compare functions.
200         (strlen_optimize_stmt): Add handling to builtin string compare
201         calls.
202         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
203         Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
204         * tree.c (build_common_builtin_nodes): Add new defines of
205         BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
207 2018-05-31  Jakub Jelinek  <jakub@redhat.com>
209         PR target/85984
210         * bb-reorder.c (pass_partition_blocks::gate): Return false for
211         functions with naked attribute.
213 2018-05-31  Uros Bizjak  <ubizjak@gmail.com>
215         * config/i386/sse.md (avx_vec_concat<mode>):
216         Substitute concat_tg_mode mode attribute with xtg_mode.
217         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
218         (concat_tg_mode): Remove mode attribute.
220 2018-05-31  Martin Sebor  <msebor@redhat.com>
222         PR c/82063
223         * calls.c (alloc_max_size): Correct a logic error/typo.
224         Treat excessive arguments as infinite.  Warn for invalid arguments.
225         * doc/invoke.texi (-Walloc-size-larger-than): Update.
227 2018-05-31  H.J. Lu  <hongjiu.lu@intel.com>
229         PR target/85829
230         * config/i386/x86-tune.def: Re-enable partial_reg_dependency
231         and movx for Haswell.
233 2018-05-31  Chung-Lin Tang  <cltang@codesourcery.com>
234             Cesar Philippidis  <cesar@codesourcery.com>
236         PR middle-end/85879
237         * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
238         when emitting error on private/firstprivate reductions.
239         * omp-low.c (lower_omp_target): Avoid reference-type processing
240         on pointers for firstprivate clause.
242 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
244         * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
245         (st1x2): Likewise.
246         (st1x3): Likewise.
247         * config/aarch64/aarch64-simd.md
248         (aarch64_ld1x3<VALLDIF:mode>): New pattern.
249         (aarch64_ld1_x3_<mode>): Likewise
250         (aarch64_st1x2<VALLDIF:mode>): Likewise
251         (aarch64_st1_x2_<mode>): Likewise
252         (aarch64_st1x3<VALLDIF:mode>): Likewise
253         (aarch64_st1_x3_<mode>): Likewise
254         * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
255         (vld1_s8_x3): Likewise.
256         (vld1_u16_x3): Likewise.
257         (vld1_s16_x3): Likewise.
258         (vld1_u32_x3): Likewise.
259         (vld1_s32_x3): Likewise.
260         (vld1_u64_x3): Likewise.
261         (vld1_s64_x3): Likewise.
262         (vld1_f16_x3): Likewise.
263         (vld1_f32_x3): Likewise.
264         (vld1_f64_x3): Likewise.
265         (vld1_p8_x3): Likewise.
266         (vld1_p16_x3): Likewise.
267         (vld1_p64_x3): Likewise.
268         (vld1q_u8_x3): Likewise.
269         (vld1q_s8_x3): Likewise.
270         (vld1q_u16_x3): Likewise.
271         (vld1q_s16_x3): Likewise.
272         (vld1q_u32_x3): Likewise.
273         (vld1q_s32_x3): Likewise.
274         (vld1q_u64_x3): Likewise.
275         (vld1q_s64_x3): Likewise.
276         (vld1q_f16_x3): Likewise.
277         (vld1q_f32_x3): Likewise.
278         (vld1q_f64_x3): Likewise.
279         (vld1q_p8_x3): Likewise.
280         (vld1q_p16_x3): Likewise.
281         (vld1q_p64_x3): Likewise.
282         (vst1_s64_x2): Likewise.
283         (vst1_u64_x2): Likewise.
284         (vst1_f64_x2): Likewise.
285         (vst1_s8_x2): Likewise.
286         (vst1_p8_x2): Likewise.
287         (vst1_s16_x2): Likewise.
288         (vst1_p16_x2): Likewise.
289         (vst1_s32_x2): Likewise.
290         (vst1_u8_x2): Likewise.
291         (vst1_u16_x2): Likewise.
292         (vst1_u32_x2): Likewise.
293         (vst1_f16_x2): Likewise.
294         (vst1_f32_x2): Likewise.
295         (vst1_p64_x2): Likewise.
296         (vst1q_s8_x2): Likewise.
297         (vst1q_p8_x2): Likewise.
298         (vst1q_s16_x2): Likewise.
299         (vst1q_p16_x2): Likewise.
300         (vst1q_s32_x2): Likewise.
301         (vst1q_s64_x2): Likewise.
302         (vst1q_u8_x2): Likewise.
303         (vst1q_u16_x2): Likewise.
304         (vst1q_u32_x2): Likewise.
305         (vst1q_u64_x2): Likewise.
306         (vst1q_f16_x2): Likewise.
307         (vst1q_f32_x2): Likewise.
308         (vst1q_f64_x2): Likewise.
309         (vst1q_p64_x2): Likewise.
310         (vst1_s64_x3): Likewise.
311         (vst1_u64_x3): Likewise.
312         (vst1_f64_x3): Likewise.
313         (vst1_s8_x3): Likewise.
314         (vst1_p8_x3): Likewise.
315         (vst1_s16_x3): Likewise.
316         (vst1_p16_x3): Likewise.
317         (vst1_s32_x3): Likewise.
318         (vst1_u8_x3): Likewise.
319         (vst1_u16_x3): Likewise.
320         (vst1_u32_x3): Likewise.
321         (vst1_f16_x3): Likewise.
322         (vst1_f32_x3): Likewise.
323         (vst1_p64_x3): Likewise.
324         (vst1q_s8_x3): Likewise.
325         (vst1q_p8_x3): Likewise.
326         (vst1q_s16_x3): Likewise.
327         (vst1q_p16_x3): Likewise.
328         (vst1q_s32_x3): Likewise.
329         (vst1q_s64_x3): Likewise.
330         (vst1q_u8_x3): Likewise.
331         (vst1q_u16_x3): Likewise.
332         (vst1q_u32_x3): Likewise.
333         (vst1q_u64_x3): Likewise.
334         (vst1q_f16_x3): Likewise.
335         (vst1q_f32_x3): Likewise.
336         (vst1q_f64_x3): Likewise.
337         (vst1q_p64_x3): Likewise.
339 2018-05-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
341         * config/msp430/msp430.c (msp430_output_labelref): Prepend
342         user_label_prefix to name.
344         * tree-core.h: Update comment about the format of NAME string
345         passed to handler in attribute_spec.
347         * config/msp430/msp430.md: Remove erroneous subreg expression from
348         zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
349         zero_extend{q,h}isi2.
351 2018-05-30  Borislav Petkov  <bp@suse.de>
353         * doc/extend.texi: Document some architecture specific
354         constraints and sort entries.
356 2018-05-30  Martin Sebor  <msebor@redhat.com>
358         PR middle-end/85369
359         * builtins.c (expand_builtin_stpcpy_1): New function.
360         (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
361         only if the former succeeds.
363 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
365         * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
366         in saphira.
368 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
370         * doc/invoke.texi (-flinker-output): Document
372 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
374         * passes.c (ipa_write_summaries): Only modify statements if body
375         is in memory.
376         * cgraphunit.c (ipa_passes): Also produce intermeidate code when
377         incrementally linking.
378         (ipa_passes): Likewise.
379         * lto-cgraph.c (lto_output_node): When incrementally linking do not
380         pass down resolution info.
381         * common.opt (flag_incremental_link): Update info.
382         * gcc.c (plugin specs): Turn flinker-output=* to
383         -plugin-opt=-linker-output-known
384         * toplev.c (compile_file): Also cut compilation when doing incremental
385         link.
386         * flag-types. (enum lto_partition_model): Add
387         LTO_LINKER_OUTPUT_NOLTOREL.
388         (invoke.texi): Add -flinker-output docs.
389         * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
390         link same way as WPA; do not stream in dead initializers.
392         * dwarf2out.c (dwarf2out_die_ref_for_decl,
393         darf2out_register_external_decl): Support incremental link.
395 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
397         * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
399 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
401         * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
402         it down to simple_object_copy_lto_debug_sections.
403         (run_gcc): Determine incremental LTO link time and configure
404         lto1 into non-wpa mode, disable renaming of debug sections.
406 2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
408         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
409         descriptions of various incorrectly documented functions.
411 2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
413         Revert:
414         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
415         address check not strict.
417 2018-05-30  Richard Biener  <rguenther@suse.de>
419         PR tree-optimization/85964
420         * tracer.c (better_p): Drop initialized count check, we only
421         call the function with initialized counts now.
422         (find_best_successor): Do find a best edge if one
423         has uninitialized count.
424         (find_best_predecessor): Likewise.  Do BB frequency check only
425         if count is initialized.
427 2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
429         * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
430         (aarch64_ldrstr_offset_compare): New.
431         (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
432         load/store orderings.
433         (aarch64_gen_adjusted_ldpstp): Likewise.
435 2018-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
437         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
438         Check for subset of GENERAL_REGS and FP_REGS.
439         * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
440         r=w alternative.
442 2018-05-30  Richard Sandiford  <richard.sandiford@linaro.org>
444         * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
445         and wi::to_poly_offset.  Add the current offset and then check
446         whether the sum fits, rather than using an unchecked addition of
447         a checked term.  Check for a shwi rather than a uhwi.
448         * expr.c (get_bit_range): Use tree_to_poly_uint64.
449         (store_constructor): Use poly_int_tree_p.
450         (expand_expr_real_1): Likewise.
451         * function.c (assign_temp): Likewise.
452         * fold-const.c (const_binop): Use poly_int_tree_p and
453         wi::to_poly_offset.
454         (fold_indirect_ref_1): Likewise.  Use multiple_p to attempt an exact
455         division.
456         * ipa-icf-gimple.c (func_checker::compare_operand): Use
457         to_poly_offset for MEM offsets.
458         * ipa-icf.c (sem_variable::equals): Likewise.
459         * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
460         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
461         wi::to_poly_offset for BIT_FIELD_REF offsets.
462         (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
463         wi::to_poly_offset.
464         * var-tracking.c (emit_note_insn_var_location): Use
465         tree_to_poly_uint64.
467 2018-05-29  Jim Wilson  <jimw@sifive.com>
469         * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
471 2018-05-29  Uros Bizjak  <ubizjak@gmail.com>
473         PR target/85950
474         * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
475         Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
476         sequence.
477         (sse4_1_round<mode>2): Use nonimmediate_operand
478         for operand 1 predicate.
480 2018-05-29  Martin Sebor  <msebor@redhat.com>
481             Richard Biener  <rguenther@suse.de>
483         PR testsuite/85888
484         * calls.c (get_size_range): Call determine_value_range instead
485         of get_value_range..
486         * tree-vrp.h (determine_value_range): Declared new function.
487         * tree-vrp.c (determine_value_range_1, determine_value_range): New.
489 2018-05-29  Richard Biener  <rguenther@suse.de>
491         * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
492         sure to use non-pattern stmts for get_earlier_stmt arguments.
493         * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
494         called on pattern stmts.
495         (get_later_stmt): Likewise.
497 2018-05-29  Martin Liska  <mliska@suse.cz>
499         PR gcov-profile/85759
500         * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
501         env variables.
503 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
505         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
506         VEC_UNPACK_*_EXPR.
507         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
508         VEC_PACK_*_EXPR.
510         PR target/85918
511         * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
512         VEC_PACK_FLOAT_EXPR): New tree codes.
513         * tree-pretty-print.c (op_code_prio): Handle
514         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
515         (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
516         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
517         * tree-inline.c (estimate_operator_cost): Likewise.
518         * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
519         * fold-const.c (const_binop): Likewise.
520         (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
521         VEC_UNPACK_FIX_TRUNC_LO_EXPR.
522         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
523         (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
524         * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
525         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
526         * expr.c (expand_expr_real_2): Likewise.
527         * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
528         vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
529         vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
530         optabs.
531         * optabs.c (expand_widen_pattern_expr): For
532         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
533         sign from result type rather than operand's type.
534         (expand_binop_directly): For vec_packu_float_optab and
535         vec_packs_float_optab allow result type to be different from operand's
536         type.
537         * optabs-tree.c (optab_for_tree_code): Handle
538         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
539         VEC_PACK_FLOAT_EXPR.  Formatting fixes.
540         * tree-vect-generic.c (expand_vector_operations_1):  Handle
541         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
542         VEC_PACK_FLOAT_EXPR.
543         * tree-vect-stmts.c (supportable_widening_operation): Handle
544         FIX_TRUNC_EXPR.
545         (supportable_narrowing_operation): Handle FLOAT_EXPR.
546         * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
547         * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
548         (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
549         (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
550         mode attributes.
551         (vec_pack<floatprefix>_float_<mode>): New expander.
552         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
553         attributes.
554         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
555         vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
556         * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
557         vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
558         vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
559         Document.
560         * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
561         VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
562         (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
563         VEC_PACK_FLOAT_EXPR): Document.
565 2018-05-29  Richard Biener  <rguenther@suse.de>
567         * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
568         member.
569         (stmt_vec_info_vec): Make pointer.
570         (init_stmt_vec_info_vec): Remove.
571         (free_stmt_vec_info_vec): Likewise.
572         (set_stmt_vec_info_vec): New function.
573         (free_stmt_vec_infos): Likewise.
574         (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
575         (set_vinfo_for_stmt): Likewise.
576         (get_earlier_stmt): Likewise.
577         (get_later_stmt): Likewise.
578         * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
579         (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
580         (vec_info::~vec_info): Free stmt_vec_infos.
581         (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
582         Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
583         (pass_slp_vectorize::execute): Likewise.
584         * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
585         (free_stmt_vec_info_vec): Likewise.
586         (set_stmt_vec_info_vec): New function.
587         (free_stmt_vec_infos): Likewise.
588         * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
589         the global stmt_vec_info_vec.
590         * tree-parloops.c (gather_scalar_reductions): Use
591         set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
592         vector.
594 2018-05-29  Richard Biener  <rguenther@suse.de>
596         * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
598 2018-05-29  Martin Liska  <mliska@suse.cz>
599             David Malcolm  <dmalcolm@redhat.com>
601         * vec.c (test_reverse): New.
602         (vec_c_tests): Add new test.
603         * vec.h (vl_ptr>::reverse): New function.
605 2018-05-29  Gerald Pfeifer  <gerald@pfeifer.com>
607         * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
609         * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
610         and later.
612 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
614         * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
616 2018-05-28  Richard Biener  <rguenther@suse.de>
618         PR tree-optimization/85933
619         * tree-vect-data-refs.c (vect_record_base_alignments): Only
620         look at stmts marked as vectorizable.
622 2018-05-28  Richard Biener  <rguenther@suse.de>
624         PR tree-optimization/85934
625         * tree-vect-generic.c (expand_vector_operations_1): Hoist
626         vector boolean check before scalar optimization.
628 2018-05-28  Jakub Jelinek  <jakub@redhat.com>
630         * doc/invoke.texi (ARM Options): Use @item instead of @itemx
631         for armv5te.
633 2018-05-28  Mark Wielaard  <mark@klomp.org>
635         * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
636         if it is an expression containing a minus sign.
638 2018-05-27  John David Anglin  <danglin@gcc.gnu.org>
640         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
642 2018-05-27  Paul Koning  <ni1d@arrl.net>
644         * config/pdp11/pdp11.md (truncsihi2): Remove.
646 2018-05-27  Monk Chiang  <sh.chiang04@gmail.com>
647             Chung-Ju Wu  <jasonwucj@gmail.com>
649         * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
650         implementation.
651         (unaligned_store_dw): Ditto.
652         * config/nds32/nds32-memory-manipulation.c
653         (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
654         (nds32_gen_dup_4_byte_to_word_value): Rename to ...
655         (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
656         (emit_setmem_word_loop): Rename to ...
657         (emit_setmem_doubleword_loop): ... this.
658         (nds32_gen_dup_4_byte_to_word_value): New function.
659         (nds32_gen_dup_8_byte_to_double_word_value): New function.
660         (nds32_expand_setmem_loop): Refine implementation.
661         (nds32_expand_setmem_loop_v3m): Ditto.
662         * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
663         pattern.
665 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
667         * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
669 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
671         * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
672         (nds32_init_machine_status): Initialize machine->attr_naked_p and
673         machine->attr_no_prologue_p.
674         (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
675         (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
676         (nds32_expand_epilogue): Consider attr_naked_p.
677         (nds32_expand_epilogue_v3pop): Likewise.
678         (nds32_can_use_return_insn): Likewise.
679         * config/nds32/nds32.h (machine_function): Add attr_naked_p and
680         attr_no_prologue_p fields.
681         * config/nds32/nds32.opt (mret-in-naked-func): New option.
683 2018-05-27  Jakub Jelinek  <jakub@redhat.com>
685         PR target/85918
686         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
687         attributes.
688         * config/i386/sse.md
689         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
690         Rename to ...
691         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
692         ... this.
693         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
694         Rename to ...
695         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
696         ... this.
697         (*<floatsuffix>floatv2div2sf2): Rename to ...
698         (*float<floatunssuffix>v2div2sf2): ... this.
699         (<floatsuffix>floatv2div2sf2_mask): Rename to ...
700         (float<floatunssuffix>v2div2sf2_mask): ... this.
701         (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
702         (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
703         (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
704         to ...
705         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
706         ... this.
707         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
708         Rename to ...
709         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
710         ... this.
711         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
712         Rename to ...
713         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
714         ... this.
715         (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
716         (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
717         (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
718         gen_ufix_truncv8dfv8si2.
719         * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
720         __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
721         __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
722         __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
723         __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
724         __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
725         __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
726         Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
728 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
730         PR target/85900
731         PR target/85345
732         * varasm.c (assemble_alias): Lookup ifunc attribute on error.
734 2018-05-25  Jim Wilson  <jimw@sifive.com>
736         * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
737         * config/riscv/riscv.c (struct machine_function): Add
738         interrupt_handler_p and attribute_checked_p fields.
739         (riscv_attribute_table): Add interrupt.
740         (riscv_interrupt_type_p): New.
741         (riscv_save_reg_p): Save extra regs for interrupt handler.
742         (riscv_use_save_libcall): Return false  for interrupt handler.
743         (riscv_first_stack_step): Add forward declaration.
744         (riscv_compute_frame_info): New local interrupt_save_t1.  Set it
745         for interrupt handler with large frame.  Use it for saved reg list.
746         (riscv_expand_prologue): Move flag_stack_usage_info support to
747         eliminate duplication.
748         (riscv_expand_epilogue): Generate mret for interrupt handler.
749         (riscv_epilogue_uses): New.
750         (riscv_can_use_return_insn): Return false for interrupt handler.
751         (riscv_function_ok_for_sibcall): Likewise.
752         (riscv_set_current_function): Add interrupt handler support.
753         * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
754         * config/riscv/riscv.md (UNSPECV_MRET): New.
755         (GP_REGNUM): New.
756         (riscv_frflags, riscv_fsflags): Use tab after opcode.
757         (riscv_mret): New.
758         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
760 2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
762         PR tree-optimization/85712
763         * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
764         this candidate has already been replaced in-situ by a copy.
766 2018-05-25  Jason Merrill  <jason@redhat.com>
768         PR c++/80485 - inline function non-zero address.
769         * symtab.c (nonzero_address): Check DECL_COMDAT.
771 2018-05-25  Uros Bizjak  <ubizjak@gmail.com>
773         PR target/83628
774         * config/alpha/alpha.md (ashlsi3): New insn pattern.
775         (*ashlsi_se): Rename from *ashldi_se.  Define as sign
776         extension of SImode operation.  Use const123_operand predicate.
777         (*saddsi_1): Remove.
778         (*saddl_se_1): Ditto.
779         (*ssubsi_1): Ditto.
780         (*ssubl_se_1): Ditto.
781         * config/alpha/predicates.md (const123_operand): New predicate.
782         * config/alpha/constraints.md (P): Use IN_RANGE.
784 2018-05-25  Richard Biener  <rguenther@suse.de>
786         * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
787         defaulted to true.
788         (ref_maybe_used_by_stmt_p): Likewise.
789         (stmt_may_clobber_ref_p): Likewise.
790         (stmt_may_clobber_ref_p_1): Likewise.
791         * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
792         and pass it along.
793         (ref_maybe_used_by_stmt_p): Likewise.
794         (stmt_may_clobber_ref_p): Likewise.
795         (stmt_may_clobber_ref_p_1): Likewise.
796         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
797         the alias oracle to disambiguate DRs with stmts DR analysis
798         couldn't handle.
799         (vect_analyze_data_refs): Do not give up on not analyzable
800         DRs for BB vectorization.  Remove code truncating the dataref
801         vector.
803 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
805         PR target/85832
806         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
807         Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
808         in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
810 2018-05-25  Richard Biener  <rguenther@suse.de>
812         * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
813         function, combining stmt data ref gathering and fatal analysis
814         parts.
815         (vect_analyze_data_refs): Remove now redudnant code and simplify.
816         * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
817         vect_analyze_loop_2 and use vect_find_stmt_data_reference.
818         * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
819         * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
821 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
823         PR tree-optimization/85720
824         * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
825         SCC if all partitions are builtins.
826         (version_loop_by_alias_check): New parameter.  Generate cancelable
827         runtime alias check if all partitions are builtins.
828         (distribute_loop): Update call to above function.
830 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
832         * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
833         (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
834         (parm_default_def_partition_arg): Ditto.
835         (set_parm_default_def_partition): Ditto.
836         (get_parm_default_def_partitions): Ditto and make it static.
837         (get_undefined_value_partitions): Ditto and make it static.
838         (remove_ssa_form): Refactor call to init_var_map here.
839         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
840         computation for loop region.
841         (coalesce_partitions, compute_optimized_partition_bases): Ditto.
842         (register_default_def): Delete.
843         (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
844         (parm_default_def_partition_arg): Ditto.
845         (set_parm_default_def_partition): Ditto.
846         (get_parm_default_def_partitions): Ditto and make it static.
847         (get_undefined_value_partitions): Ditto and make it static.
848         (coalesce_with_default, coalesce_with_default): Update comment.
849         (create_coalesce_list_for_region): New func factored out from
850         create_outofssa_var_map.
851         (populate_coalesce_list_for_outofssa): New func factored out from
852         create_outofssa_var_map and coalesce_ssa_name.
853         (create_outofssa_var_map): Delete.
854         (coalesce_ssa_name): Refactor to support live range computation.
855         * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
856         (get_parm_default_def_partitions): Delete.
857         (get_undefined_value_partitions): Ditto.
858         * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
859         computation for loop region.
860         (new_tree_live_info, loe_visit_block): Ditto.
861         (live_worklist, set_var_live_on_entry): Ditto.
862         (calculate_live_on_exit, verify_live_on_entry): Ditto.
863         * tree-ssa-live.h (struct _var_map): New fields.
864         (init_var_map): Change decl.
865         (region_contains_p): New.
867 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
869         * tree-ssa-live.h (live_merge_and_clear): Delete.
871 2018-05-25  Richard Biener  <rguenther@suse.de>
873         PR c++/85912
874         * tree-dump.c (dequeue_and_dump): Remove access to removed
875         operand 2 of a SWITCH_EXPR.
877 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
879         * doc/sourcebuild.texi (vect_double_cond_arith): Include
880         multiplication and division.
881         * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
882         (cond_udiv@var{m}, cond_umod@var{m}): Document.
883         * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
884         (cond_udiv_optab, cond_umod_optab): New optabs.
885         * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
886         (IFN_COND_RDIV): New internal functions.
887         * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
888         TRUNC_MOD_EXPR and RDIV_EXPR.
889         * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
890         * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
891         New unspecs.
892         (SVE_INT_BINARY): Include mult.
893         (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
894         (optab, sve_int_op): Handle mult.
895         (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
896         UNSPEC_COND_DIV.
897         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
898         for SVE_INT_BINARY_SD.
900 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
902         * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
903         (optab, sve_int_op): Handle div and udiv.
904         * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
905         for SVE_INT_BINARY_SD.
906         (*<optab><mode>3): New insn for the same.
908 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
910         * tree-vect-patterns.c: Include predict.h.
911         (vect_recog_divmod_pattern): Restrict check for division support
912         to when optimizing for size.
914 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
916         * doc/sourcebuild.texi (vect_double_cond_arith: Document.
917         * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
918         (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
919         (gimple_match_op::set_op): Likewise.
920         (gimple_resimplify4): Declare.
921         * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
922         (expr::gen_transform): Likewise.
923         (decision_tree::gen): Generate a simplification routine for 4 operands.
924         * gimple-match-head.c (gimple_simplify): Add an overload for
925         4 operands.  In the top-level function, handle up to 4 call
926         arguments and call gimple_resimplify4.
927         (gimple_resimplify4): New function.
928         (build_call_internal): Pass a fourth operand.
929         (maybe_push_to_seq): Likewise.
930         * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
931         Fold VEC_COND_EXPRs of an operation and a default value into
932         an IFN_COND_* function if possible.
933         * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
934         New unspecs.
935         (SVE_COND_FP_BINARY): Include them.
936         (optab, sve_fp_op): Handle them.
937         (SVE_INT_BINARY_REV): New code iterator.
938         (SVE_COND_FP_BINARY_REV): New int iterator.
939         (commutative): New int attribute.
940         * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
941         Declare.
942         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
943         function.
944         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
945         (*cond_<optab><mode>): New patterns for reversed operands.
947 2018-05-25  Richard Biener  <rguenther@suse.de>
949         * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
950         (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
951         (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
952         (STMT_VINFO_GROUPED_ACCESS): Adjust.
953         * tree-vect-data-refs.c (everywhere): Adjust users.
954         * tree-vect-loop.c (everywhere): Likewise.
955         * tree-vect-slp.c (everywhere): Likewise.
956         * tree-vect-stmts.c (everywhere): Likewise.
957         * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
959 2018-05-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
961         * configure.ac (gcc_cv_as_section_has_e): Move to common section.
962         Rename to...
963         (gcc_cv_as_section_exclude): ... this.
964         Try Solaris as #exclude syntax.
965         * configure: Regenerate.
966         * config.in: Regenerate.
967         * config/i386/i386.c (i386_solaris_elf_named_section): Handle
968         SECTION_EXCLUDE.
969         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
970         [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
972         * varasm.c (default_elf_asm_named_section): Don't check if
973         HAVE_GAS_SECTION_EXCLUDE is defined.
975 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
977         * doc/md.texi: Update the documentation of the cond_* optabs
978         to mention the new final operand.  Fix GET_MODE_NUNITS call.
979         Describe the scalar case too.
980         * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
981         * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
982         instead of 2.
983         (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
984         (get_conditional_internal_fn): Update comment.
985         * tree-vect-loop.c (vectorizable_reduction): Pass the original
986         accumulator value as a final argument to conditional functions.
987         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
988         a define_expand and add an "else" operand.  Assert for now that
989         the else operand is equal to operand 2.  Use SVE_INT_BINARY and
990         SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
991         (*cond_<optab><mode>): New patterns.
992         * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
993         (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
994         (UNSPEC_COND_EOR): Delete.
995         (optab): Remove associated mappings.
996         (SVE_INT_BINARY): New code iterator.
997         (sve_int_op): Remove int attribute and add "minus" to the code
998         attribute.
999         (SVE_COND_INT_OP): Delete.
1000         (SVE_COND_FP_OP): Rename to...
1001         (SVE_COND_FP_BINARY): ...this.
1003 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1005         * optabs.c (can_reuse_operands_p): New function.
1006         (maybe_legitimize_operands): Try to reuse the results for
1007         earlier operands.
1009 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
1011         * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
1012         Add {q} suffix to insn mnemonic.
1014 2018-05-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
1016         * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
1017         (msp430_warn_func_return): New.
1019 2018-05-24  Roger Sayle  <roger@nextmovesoftware.com>
1021         * fold-const.c (tree_nonzero_bits): New function.
1022         * fold-const.h (tree_nonzero_bits): Likewise.
1023         * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
1024         friends.  POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
1026 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1028         PR target/85900
1029         PR target/85345
1030         * varasm.c (assemble_alias): Check ifunc_resolver only on
1031         FUNCTION_DECL.
1033 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
1035         PR target/85903
1036         * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
1037         when memory input operand is handled.
1039 2018-05-24  Luis Machado  <luis.machado@linaro.org>
1041         * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
1042         global.
1043         (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
1045 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
1047         * match.pd: Delay FMA folds until after vectorization.
1049 2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1051         PR target/83009
1052         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
1053         address check not strict.
1055 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
1057         * gimple-match.h (gimple_match_op): New class.
1058         (mprts_hook): Replace parameters with a gimple_match_op *.
1059         (maybe_build_generic_op): Likewise.
1060         (gimple_simplified_result_is_gimple_val): Replace parameters with
1061         a const gimple_match_op *.
1062         (gimple_simplify): Replace code_helper * and tree * parameters with
1063         a gimple_match_op * parameter.
1064         (gimple_resimplify1): Replace code_helper *, tree and tree *
1065         parameters with a gimple_match_op * parameter.
1066         (gimple_resimplify2): Likewise.
1067         (gimple_resimplify3): Likewise.
1068         (maybe_push_res_to_seq): Replace code_helper, tree and tree *
1069         parameters with a gimple_match_op * parameter.
1070         * gimple-match-head.c (gimple_simplify): Change prototypes of
1071         auto-generated functions to take a gimple_match_op * instead of
1072         separate code_helper * and tree * parameters.  Make the same
1073         change in the top-level overload and update calls to the
1074         gimple_resimplify routines.  Update calls to the auto-generated
1075         functions and to maybe_push_res_to_seq in the publicly-facing
1076         operation-specific gimple_simplify overloads.
1077         (gimple_match_op::MAX_NUM_OPS): Define.
1078         (gimple_resimplify1): Replace rcode and ops with a single res_op
1079         parameter.  Update call to gimple_simplify.
1080         (gimple_resimplify2): Likewise.
1081         (gimple_resimplify3): Likewise.
1082         (mprts_hook): Replace parameters with a gimple_match_op *.
1083         (maybe_build_generic_op): Likewise.
1084         (build_call_internal): Replace type, nargs and ops with
1085         a gimple_match_op *.
1086         (maybe_push_res_to_seq): Replace res_code, type and ops parameters
1087         with a single gimple_match_op *.  Update calls to mprts_hook,
1088         build_call_internal and gimple_simplified_result_is_gimple_val.
1089         Factor out code that is common to the tree_code and combined_fn cases.
1090         * genmatch.c (expr::gen_transform): Replace tem_code and
1091         tem_ops with a gimple_match_op called tem_op.  Update calls
1092         to the gimple_resimplify functions and maybe_push_res_to_seq.
1093         (dt_simplify::gen_1): Manipulate res_op instead of res_code and
1094         res_ops.  Update call to the gimple_resimplify functions.
1095         (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
1096         (decision_tree::gen): Make the functions take a gimple_match_op *
1097         called res_op instead of separate res_code and res_ops parameters.
1098         Update call accordingly.
1099         * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
1100         and ops with a single res_op parameter.  Update calls to
1101         maybe_build_generic_op and maybe_push_res_to_seq.
1102         (fold_stmt_1): Update calls to gimple_simplify and
1103         replace_stmt_with_simplification.
1104         (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
1105         and gimple_simplified_result_is_gimple_val.
1106         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
1107         gimple_simplify.
1108         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
1109         with a gimple_match_op *.
1110         (vn_nary_build_or_lookup): Likewise.  Update call to
1111         vn_nary_build_or_lookup_1.
1112         (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
1113         gimple_match_op *.  Update calls to the gimple_resimplify routines
1114         and to gimple_simplified_result_is_gimple_val.
1115         (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
1116         Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
1117         (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
1118         (visit_nary_op): Likewise.
1119         (visit_reference_op_load): Likewise.
1121 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1123         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
1124         modifier for printing the step amount.
1126 2018-05-23  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
1128         PR target/78849
1129         * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
1130         types.
1132 2018-05-23  Segher Boessenkool  <segher@kernel.crashing.org>
1134         * doc/sourcebuild.texi (Endianness): New subsubsection.
1136 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1138         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1139         <prefetch_dynamic_strides>: New const bool field.
1140         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1141         prefetch_dynamic_strides.
1142         (exynosm1_prefetch_tune): Likewise.
1143         (thunderxt88_prefetch_tune): Likewise.
1144         (thunderx_prefetch_tune): Likewise.
1145         (thunderx2t99_prefetch_tune): Likewise.
1146         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
1147         false.
1148         (aarch64_override_options_internal): Update to set
1149         PARAM_PREFETCH_DYNAMIC_STRIDES.
1150         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1151         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1152         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1153         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1154         prefetch-dynamic-strides setting.
1156 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1158         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1159         <minimum_stride>: New const int field.
1160         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1161         minimum_stride field defaulting to -1.
1162         (exynosm1_prefetch_tune): Likewise.
1163         (thunderxt88_prefetch_tune): Likewise.
1164         (thunderx_prefetch_tune): Likewise.
1165         (thunderx2t99_prefetch_tune): Likewise.
1166         (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
1167         <default_opt_level>: Set to 3.
1168         (aarch64_override_options_internal): Update to set
1169         PARAM_PREFETCH_MINIMUM_STRIDE.
1170         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1171         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1172         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1173         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1174         stride is constant and is below the minimum stride threshold.
1176 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1178         * config/arm/arm-cpus.in (mode26): Delete.
1179         (armv4): Delete mode26 reference.
1180         * config/arm/arm.c (arm_configure_build_target): Delete use of
1181         isa_bit_mode26.
1183 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
1185         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
1186         New insn pattern.
1187         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
1188         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
1189         for non-SSE modes.
1190         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
1191         (floatunsdidf2): Ditto.
1193 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
1195         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
1196         (fixuns_trunc<mode>si2_avx512f): Ditto.
1197         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
1198         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
1199         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
1201 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
1203         PR rtl-optimization/79985
1204         * df-scan.c (df_insn_refs_collect): Remove special case for
1205         global registers and asm statements.
1207 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
1209         * extend.texi (Global Register Variables): Rewrite the bullet list.
1210         Note that the register is available for allocation. Note that access
1211         via inline asm must use constraints. Add note about async-signal
1212         handlers. Remove paragraph about automagic register selection.
1214 2018-05-23  Richard Biener  <rguenther@suse.de>
1216         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
1217         of fixed offset from memset VN.
1219 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
1221         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
1222         first_interp field.
1223         (alloc_cand_and_find_basis): Initialize first_interp field.
1224         (slsr_process_mul): Modify first_interp field.
1225         (slsr_process_add): Likewise.
1226         (slsr_process_cast): Modify first_interp field for each new
1227         interpretation.
1228         (slsr_process_copy): Likewise.
1229         (dump_candidate): Dump first_interp field.
1230         (replace_mult_candidate): Process all interpretations, not just
1231         subsequent ones.
1232         (replace_rhs_if_not_dup): Likewise.
1233         (replace_one_candidate): Likewise.
1235 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
1237         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
1238         Add new boolean.
1239         (aarch64_needs_frame_chain): New function.
1240         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
1242 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
1244         PR target/84882
1245         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
1246         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
1247         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
1248         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
1249         as true for strict-align.
1250         (aarch64_can_inline_p): Perform checks even when callee has no
1251         attributes to check for strict alignment.
1252         * doc/extend.texi (AArch64 Function Attributes): Document
1253         no-strict-align.
1254         * doc/invoke.texi: (AArch64 Options): Likewise.
1256 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
1258         PR tree-optimization/85853
1259         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
1260         the handling of the root of the node to...
1261         (vect_slp_analyze_node_operations_1): ...this new function,
1262         and run the whole thing with the child nodes' def types
1263         set according to their SLP node's def type.
1265 2018-05-23  Richard Biener  <rguenther@suse.de>
1267         PR middle-end/85874
1268         * tree-data-ref.c (create_runtime_alias_checks): Defer
1269         and ignore overflow warnings.
1271 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
1273         PR tree-optimization/85822
1274         * tree-vrp.c (is_masked_range_test): Fix handling of negative
1275         constants.
1277 2018-05-23  Richard Biener  <rguenther@suse.de>
1279         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
1280         memset constants via native_interpret_expr.
1282 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
1284         PR target/85345
1285         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
1286         attribute.
1287         (cgraph_node::create_alias): Likewise.
1288         (cgraph_node::get_availability): Check ifunc_resolver instead
1289         of looking up ifunc attribute.
1290         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
1291         * varasm.c (do_assemble_alias): Likewise.
1292         (assemble_alias): Likewise.
1293         (default_binds_local_p_3): Likewise.
1294         * cgraph.h (cgraph_node): Add ifunc_resolver.
1295         (cgraph_node::only_called_directly_or_aliased_p): Return false
1296         for IFUNC resolver.
1297         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
1298         attribute.
1299         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
1300         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
1301         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
1302         instead of looking up ifunc attribute.
1304 2018-05-22  Luis Machado  <luis.machado@linaro.org>
1306         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
1308 2018-05-22  Martin Sebor  <msebor@redhat.com>
1310         PR middle-end/85359
1311         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
1312         only when expasion succeeds.
1313         (expand_builtin_strcmp): Same.
1314         (expand_builtin_strncmp): Same.
1316 2018-05-22  Martin Sebor  <msebor@redhat.com>
1318         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
1320 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
1321             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1323         * config/aarch64/aarch64-ldpstp.md: Replace uses of
1324         aarch64_mem_pair_operand with memory_operand and delete operand swapping
1325         code.
1326         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1327         Add check for legitimate_address.
1328         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
1329         (aarch64_swap_ldrstr_operands): New.
1330         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
1331         Define prototype.
1333 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
1334             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1336         * config/aarch64/aarch64.md: New patterns to generate stp
1337         and ldp.
1338         (store_pair_sw, store_pair_dw): New patterns to generate stp for
1339         single words and double words.
1340         (load_pair_sw, load_pair_dw): Likewise.
1341         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
1342         Delete.
1343         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
1344         Delete.
1345         * config/aarch64/aarch64-ldpstp.md: Modify peephole
1346         for different mode ldpstp and add peephole for merged zero stores.
1347         Likewise for loads.
1348         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1349         Add size check.
1350         (aarch64_gen_store_pair): Rename calls to match new patterns.
1351         (aarch64_gen_load_pair): Rename calls to match new patterns.
1352         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
1353         (load_pair<DREG:mode><DREG2:mode>): ... This.
1354         (store_pair<mode>): Rename to...
1355         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
1356         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
1357         New mode iterators.
1358         (V_INT_EQUIV): Handle SImode.
1359         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
1360         New predicate.
1362 2018-05-22  Martin Sebor  <msebor@redhat.com>
1364         PR c/85623
1365         * calls.c (maybe_warn_nonstring_arg): Use string length to set
1366         or ajust the presumed bound on an operation to avoid unnecessary
1367         warnings.
1369 2018-05-22  Martin Sebor  <msebor@redhat.com>
1371         PR tree-optimization/85826
1372         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
1373         assuming that a DECL necesarily has a constant size.
1375 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
1377         PR middle-end/85862
1378         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
1380 2018-05-22  Richard Biener  <rguenther@suse.de>
1382         PR tree-optimization/85834
1383         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
1384         non-constant and non-zero memset arguments.
1386 2018-05-22  Martin Liska  <mliska@suse.cz>
1388         PR ipa/85607
1389         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
1391 2018-05-22  Richard Biener  <rguenther@suse.de>
1393         PR tree-optimization/85863
1394         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
1395         comparisons when vectype is specified.
1396         (vectorizable_condition): Do not specify vectype for
1397         vect_is_simple_cond when SLP vectorizing.
1399 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
1401         PR target/85657
1402         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
1403         define __ibm128 as long double.
1404         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
1405         as a distinct type when IEEE 128-bit support is enabled.
1406         (init_float128_ieee): Fix up conversions between IFmode and IEEE
1407         128-bit types to use the correct functions.
1408         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
1409         convert between 128-bit floating point types that have different
1410         modes but the same representation, instead of using gen_lowpart to
1411         makean alias.
1412         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
1413         KFmode.
1414         (IFKF_reg): New attributes to give the register constraints for
1415         IFmode and KFmode.
1416         (extend<mode>tf2_internal): New insns to mark an explicit
1417         conversion between 128-bit floating point types that have a
1418         different mode but share the same representation.
1420 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
1422         PR tree-optimization/85814
1423         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
1424         a null return from get_strinfo when unsharing the next
1425         strinfo in the chain.
1427 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
1429         PR gcc/84923
1430         * varasm.c (weak_finish): Clean up weak_decls.
1432 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1434         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
1435         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
1436         UNSPEC_UADALP values.
1437         * config/aarch64/iterators.md (ABAL): New int iterator.
1438         (ABDL2): Likewise.
1439         (ADALP): Likewise.
1440         (sur): Add mappings for the above.
1441         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
1442         New define_insn.
1443         (aarch64_<sur>abal<mode>_4): Likewise.
1444         (aarch64_<sur>adalp<mode>_3): Likewise.
1445         (<sur>sadv16qi): New define_expand.
1447 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
1449         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
1450         (*movdf_internal): Ditto.
1451         (*rcpsf2_sse): Ditto.
1452         (*rsqrtsf2_sse): Ditto.
1453         (*sqrt<mode>2_sse): Ditto.
1455 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
1457         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
1458         eor3q<mode>4.
1459         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
1460         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
1461         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
1462         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
1463         vbcaxq_s64): New.
1464         * config/aarch64/arm_neon.h: Likewise.
1465         * config/aarch64/iterators.md (VQ_I): New.
1467 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
1469         * config.gcc: Add arc/t-multilib-linux to tmake_file for
1470         arc*-*-linux*.
1471         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
1472         MULTILIB_DIRNAMES
1474 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1476         * config/nds32/constraints.md (S): New constraint.
1477         * config/nds32/nds32.md (call_internal): Use constraint S.
1478         (call_value_internal): Likewise.
1479         (sibcall_internal): Likewise.
1480         (sibcall_value_internal): Likewise.
1482 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1483             Chung-Ju Wu  <jasonwucj@gmail.com>
1485         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
1486         into consideration.
1488 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1489             Chung-Ju Wu  <jasonwucj@gmail.com>
1491         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
1492         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
1493         (nds32_rtx_costs_impl): Simplify.
1494         (nds32_address_cost_impl): Simplify.
1495         (nds32_init_rtx_costs): New function.
1496         (nds32_rtx_costs_speed_prefer): Likewise.
1497         (nds32_rtx_costs_size_prefer): Likewise.
1498         (nds32_address_cost_speed_prefer): Likewise.
1499         (nds32_address_cost_speed_fwprop): Likewise.
1500         (nds32_address_cost_size_prefer): Likewise.
1501         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
1502         * config/nds32/nds32.c (nds32_option_override): Use
1503         nds32_init_rtx_costs function.
1505 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1507         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
1508         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
1509         (TARGET_PIPELINE_N8): Likewise.
1510         (TARGET_PIPELINE_N10): Likewise.
1511         (TARGET_PIPELINE_N13): Likewise.
1512         (TARGET_PIPELINE_GRAYWOLF): Likewise.
1514 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
1516         * config/nds32/nds32-fpu.md: Update copyright year.
1518 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1520         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
1522 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1524         * config/nds32/nds32.c
1525         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
1526         * config/nds32/nds32.opt (minline-asm-r15): New option.
1528 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1530         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
1531         MASK_HW_ABS.
1532         * config/nds32/nds32.md (abssi2): New pattern.
1534 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
1536         * config/i386/i386.md (rex64namesuffix): New mode attribute.
1537         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
1538         Merge insn pattern from sse_cvtsi2ss<round_name> and
1539         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
1540         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
1541         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
1542         using SWI48 mode iterator.
1543         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
1544         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
1545         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
1546         pattern from sse_cvttss2si<round_saeonly_name>
1547         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
1548         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
1549         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
1550         using SWI48 mode iterator.
1551         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
1552         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
1553         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
1554         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
1555         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
1556         using SWI48 mode iterator.
1557         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
1558         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
1559         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
1560         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
1561         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
1562         SWI48 mode iterator.
1563         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
1564         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
1565         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
1566         pattern from sse_cvttsd2si<round_saeonly_name>
1567         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
1569 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1571         * config/nds32/nds32-md-auxiliary.c
1572         (nds32_valid_smw_lwm_base_p): Refine.
1573         (nds32_output_smw_single_word): Refine.
1574         (nds32_output_smw_double_word): New.
1575         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
1577 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1579         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
1580         (nds32_output_stack_pop): Refine.
1581         (nds32_expand_unaligned_load): Refine.
1582         (nds32_expand_unaligned_store): Refine.
1584 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1585             Chung-Ju Wu  <jasonwucj@gmail.com>
1587         * config/nds32/constants.md: Add TP_REGNUM constant.
1588         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
1589         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
1590         UNSPEC_ADD32.
1591         * config/nds32/nds32-doubleword.md: Consider flag_pic.
1592         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
1593         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
1594         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
1595         and PIC code generation.
1596         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
1597         code generation.
1598         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
1599         optimization.
1600         * config/nds32/nds32.md: Support TLS and PIC.
1601         * config/nds32/nds32.c: Support TLS and PIC.
1602         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
1603         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
1604         predicate.
1606 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1608         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
1609         mode with E_ prefix.
1611 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1612             Chung-Ju Wu  <jasonwucj@gmail.com>
1614         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
1615         * config/nds32/nds32-md-auxiliary.c
1616         (symbolic_reference_mentioned_p): New.
1617         (nds32_legitimize_ict_address): New.
1618         (nds32_expand_ict_move): New.
1619         (nds32_indirect_call_referenced_p): New.
1620         (nds32_symbol_binds_local_p): Delete.
1621         (nds32_long_call_p): Modify.
1622         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
1623         * config/nds32/nds32-protos.h
1624         (symbolic_reference_mentioned_p): Declare.
1625         (nds32_legitimize_ict_address): Declare.
1626         (nds32_expand_ict_move): Declare.
1627         (nds32_indirect_call_referenced_p): Declare.
1628         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
1629         (nds32_relax_group): Use nds32_ict_const_p as condition.
1630         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
1631         (nds32_asm_file_start): Output ict_model directive in asm code.
1632         (nds32_legitimate_address_p): Consider indirect call.
1633         (nds32_print_operand): Consider indirect call.
1634         (nds32_print_operand_address): Consider indirect call.
1635         (nds32_insert_attributes): Handle "indirect_call" attribute.
1636         (TARGET_LEGITIMATE_ADDRESS_P): Define.
1637         (TARGET_LEGITIMATE_CONSTANT_P): Define.
1638         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1639         (TARGET_DELEGITIMIZE_ADDRESS): Define.
1640         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1641         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
1642         (TARGET_ICT_MODEL_SMALL): Define.
1643         (TARGET_ICT_MODEL_LARGE): Define.
1644         * config/nds32/nds32.md (movsi): Consider ict model.
1645         (call, call_value): Consider ict model.
1646         (sibcall, sibcall_value): Consider ict model.
1647         * config/nds32/nds32.opt (mict-model): New option.
1648         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
1649         model.
1651 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
1652             Monk Chiang  <sh.chiang04@gmail.com>
1653             Jim Wilson <jimw@sifive.com>
1655         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
1656         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
1657         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
1658         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
1659         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
1660         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
1661         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
1662         compute save_libcall_adjustment properly.
1663         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
1664         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
1665         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
1666         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
1667         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
1668         (ABI_SPEC): Handle mabi=ilp32e.
1669         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
1670         (RVE): Add RVE mask.
1671         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
1672         <-march>: Add rv32e as an example.
1674 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
1676         PR c++/82899
1677         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
1678         (intra_create_variable_infos): Handle C++ constructors.
1680 2018-05-18  Martin Liska  <mliska@suse.cz>
1682         * passes.def: Remove a redundant pass.
1684 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
1686         PR bootstrap/85838
1687         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
1689 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1691         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
1692         (ARMv4): Update.
1693         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
1694         (ARMv6m): Update.
1695         (armv2, armv2a, armv3, armv3m): Delete architectures.
1696         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
1697         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
1698         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
1699         Delete cpus.
1700         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
1701         (*mulsidi3adddi): Likewise.
1702         (mulsidi3): Likewise.
1703         (*mulsidi3_nov6): Likewise.
1704         (umulsidi3): Likewise.
1705         (umulsidi3_nov6): Likewise.
1706         (umaddsidi4): Likewise.
1707         (*umulsidi3adddi): Likewise.
1708         (smulsi3_highpart): Likewise.
1709         (*smulsi3_highpart_nov6): Likewise.
1710         (umulsi3_highpart): Likewise.
1711         (*umulsi3_highpart_nov6): Likewise.
1712         * config/arm/arm.h (arm_arch3m): Delete.
1713         * config/arm/arm.c (arm_arch3m): Delete.
1714         (arm_option_override_internal): Update armv3-related comment.
1715         (arm_configure_build_target): Delete use of isa_bit_mode32.
1716         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
1717         (arm_rtx_costs_internal): Delete check of arm_arch3m.
1718         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
1719         (mulsa3): Likewise.
1720         (mulusa3): Likewise.
1721         * config/arm/arm-protos.h (arm_arch3m): Delete.
1722         * config/arm/arm-tables.opt: Regenerate.
1723         * config/arm/arm-tune.md: Likewise.
1724         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
1725         deleted architectures.
1727 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1729         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
1730         (armv5t, armv5te): New features.
1731         (ARMv5, ARMv5e): Delete fgroups.
1732         (ARMv5t, ARMv5te): Adjust for above changes.
1733         (ARMv6m): Likewise.
1734         (armv5, armv5e): Delete arches.
1735         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
1736         arm_arch5.
1737         (*call_reg_arm): Likewise.
1738         (*call_value_reg_armv5): Likewise.
1739         (*call_value_reg_arm): Likewise.
1740         (*call_symbol): Likewise.
1741         (*call_value_symbol): Likewise.
1742         (*sibcall_insn): Likewise.
1743         (*sibcall_value_insn): Likewise.
1744         (clzsi2): Likewise.
1745         (prefetch): Likewise.
1746         (define_split and define_peephole2 dependent on arm_arch5):
1747         Likewise.
1748         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
1749         arm_arch5e.
1750         (TARGET_ARM_QBIT): Likewise.
1751         (TARGET_DSP_MULTIPLY): Likewise.
1752         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
1753         (arm_arch5, arm_arch5e): Delete.
1754         (arm_arch5t, arm_arch5te): Declare.
1755         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
1756         (arm_arch5t): Declare.
1757         (arm_option_reconfigure_globals): Update for the above.
1758         (arm_options_perform_arch_sanity_checks): Update comment, replace
1759         use of arm_arch5 with arm_arch5t.
1760         (use_return_insn): Likewise.
1761         (arm_emit_call_insn): Likewise.
1762         (output_return_instruction): Likewise.
1763         (arm_final_prescan_insn): Likewise.
1764         (arm_coproc_builtin_available): Likewise.
1765         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
1766         arm_arch5e with arm_arch5t and arm_arch5te.
1767         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
1768         (arm_arch5t, arm_arch5te): Declare.
1769         * config/arm/arm-tables.opt: Regenerate.
1770         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
1771         * config/arm/t-multilib: Likewise.
1772         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
1773         instead of arm_arch5.
1774         (*call_reg_thumb1): Likewise.
1775         (*call_value_reg_thumb1_v5): Likewise.
1776         (*call_value_reg_thumb1): Likewise.
1777         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
1778         unreachable path.
1779         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
1781 2018-05-18  Martin Liska  <mliska@suse.cz>
1783         PR gcov-profile/84846
1784         * doc/gcov.texi: Document -t option of gcov tool.
1786 2018-05-18  Martin Liska  <mliska@suse.cz>
1788         PR gcov-profile/84846
1789         * gcov.c (print_usage): Add new -t option.
1790         (process_args): Handle the option.
1791         (generate_results): Use stdout as output when requested by
1792         the option.
1794 2018-05-18  Martin Liska  <mliska@suse.cz>
1796         PR gcov-profile/84846
1797         * coverage.c (coverage_init): Write PWD to .gcno file.
1798         * doc/gcov.texi: Document how working directory is printed.
1799         * gcov-dump.c (dump_gcov_file): Print PWD.
1800         * gcov.c (output_intermediate_file): Likewise.
1801         (read_graph_file): Read PWD string.
1802         (output_lines): Print PWD.
1804 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1806         PR middle-end/85817
1807         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
1808         for retval and return false if all args to phi are zero.        
1810 2018-05-18  Richard Biener  <rguenther@suse.de>
1812         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
1813         method.
1814         (evrp_dom_walker::before_dom_children): Call it.
1816 2018-05-18  Richard Biener  <rguenther@suse.de>
1818         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
1819         results when processing array refs with variable index.
1821 2018-05-18  Toon Moene  <toon@moene.org>
1823         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
1824         directly after that of -floop-interchange. Indicate that both
1825         options are enabled by default when specifying -O3. 
1827 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1829         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
1830         iterator.  Delete separate integer-mode vec_set<mode> expander.
1831         (aarch64_simd_vec_setv2di): Delete.
1832         (vec_setv2di): Delete.
1833         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
1834         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
1835         the "w, r" alternative.
1837 2018-05-18  Martin Liska  <mliska@suse.cz>
1839         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
1840         * tree-pass.h (make_pass_lower_switch_O0): New function.
1841         * tree-switch-conversion.c (node_has_low_bound): Remove.
1842         (node_has_high_bound): Likewise.
1843         (node_is_bounded): Likewise.
1844         (class pass_lower_switch): Make it a template type and create
1845         two instances.
1846         (pass_lower_switch::execute): Add template argument.
1847         (make_pass_lower_switch): New function.
1848         (make_pass_lower_switch_O0): New function.
1849         (do_jump_if_equal): Remove.
1850         (emit_case_nodes): Simplify to just handle all 3 cases and leave
1851         all the hard work to tree optimization passes.
1853 2018-05-18  Martin Liska  <mliska@suse.cz>
1855         * dbgcnt.c (limit_low): Renamed from limit.
1856         (limit_high): New variable.
1857         (dbg_cnt_is_enabled): Check for upper limit.
1858         (dbg_cnt): Adjust dumping.
1859         (dbg_cnt_set_limit_by_index): Add new argument for high
1860         value.
1861         (dbg_cnt_set_limit_by_name): Likewise.
1862         (dbg_cnt_process_single_pair): Parse new format.
1863         (dbg_cnt_process_opt): Use strtok.
1864         (dbg_cnt_list_all_counters): Remove 'value' and add
1865         'limit_high'.
1866         * doc/invoke.texi: Document changes.
1868 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
1870         * doc/sourcebuild.texi (scalar_all_fma): Document.
1871         * tree.def (FMA_EXPR): Delete.
1872         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
1873         * internal-fn.c (ternary_direct): New macro.
1874         (expand_ternary_optab_fn): Likewise.
1875         (direct_ternary_optab_supported_p): Likewise.
1876         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
1877         * builtins.c (fold_builtin_fma): Delete.
1878         (fold_builtin_3): Don't call it.
1879         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
1880         * expr.c (expand_expr_real_2): Likewise.
1881         * fold-const.c (operand_equal_p): Likewise.
1882         (fold_ternary_loc): Likewise.
1883         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
1884         * gimple.c (DEFTREECODE): Likewise.
1885         * gimplify.c (gimplify_expr): Likewise.
1886         * optabs-tree.c (optab_for_tree_code): Likewise.
1887         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
1888         * tree-eh.c (operation_could_trap_p): Likewise.
1889         (stmt_could_throw_1_p): Likewise.
1890         * tree-inline.c (estimate_operator_cost): Likewise.
1891         * tree-pretty-print.c (dump_generic_node): Likewise.
1892         (op_code_prio): Likewise.
1893         * tree-ssa-loop-im.c (stmt_cost): Likewise.
1894         * tree-ssa-operands.c (get_expr_operands): Likewise.
1895         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
1896         * fold-const-call.h (fold_fma): Delete.
1897         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
1898         CFN_FNMA and CFN_FNMS.
1899         (fold_fma): Delete.
1900         * genmatch.c (combined_fn): New enum.
1901         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
1902         (commutative_op): New function.
1903         (commutate): Use it.  Handle more than 2 operands.
1904         (dt_operand::gen_gimple_expr): Use commutative_op.
1905         (parser::parse_expr): Allow :c to be used with non-binary
1906         operators if the commutative operand is known.
1907         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
1908         CFN_FMS, CFN_FNMA and CFN_FNMS.
1909         (backprop::process_assign_use): Remove FMA_EXPR handling.
1910         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
1911         (gen_hsa_fma): New function.
1912         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
1913         IFN_FNMA and IFN_FNMS.
1914         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
1915         * gimple-fold.h (follow_all_ssa_edges): Declare.
1916         * gimple-fold.c (follow_all_ssa_edges): New function.
1917         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
1918         gimple_build interface and use follow_all_ssa_edges to fold the result.
1919         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
1920         instead of checking for optabs directly.
1921         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
1922         rather than FMA_EXPRs.
1923         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
1924         call to IFN_FMA instead of an FMA_EXPR.
1926 2018-05-17  Jim Wilson  <jimw@sifive.com>
1928         * expr.c (do_tablejump): When converting index to Pmode, if we have a
1929         sign extended promoted subreg, and the range does not have the sign bit
1930         set, then do a sign extend.
1932         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
1933         test, check for sign extended subreg and/or constant operands, and
1934         do a sign extend in that case.
1936 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
1938         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
1939         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
1940         Add untyped.
1941         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
1942         Change logics_shift_reg to logics_shift_imm.
1943         (thunderx2t99_fp_loadpair_basic): Delete.
1944         (thunderx2t99_fp_storepair_basic): Delete.
1945         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
1946         (thunderx2t99_asimd_polynomial): Delete.
1947         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
1948         and neon_fp_mul_d_scalar_q.
1949         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
1950         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
1951         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
1952         (thunderx2t99_asimd_lut): Add missing tbl types.
1953         (thunderx2t99_asimd_ext): Delete.
1954         (thunderx2t99_asimd_load1_1_mult): Delete.
1955         (thunderx2t99_asimd_load1_2_mult): Delete.
1956         (thunderx2t99_asimd_load1_ldp): New.
1957         (thunderx2t99_asimd_load1): New.
1958         (thunderx2t99_asimd_load2): Add missing *load2* types.
1959         (thunderx2t99_asimd_load3): New.
1960         (thunderx2t99_asimd_load4): New.
1961         (thunderx2t99_asimd_store1_1_mult): Delete.
1962         (thunderx2t99_asimd_store1_2_mult): Delete.
1963         (thunderx2t99_asimd_store2_mult): Delete.
1964         (thunderx2t99_asimd_store2_onelane): Delete.
1965         (thunderx2t99_asimd_store_stp): New.
1966         (thunderx2t99_asimd_store1): New.
1967         (thunderx2t99_asimd_store2): New.
1968         (thunderx2t99_asimd_store3): New.
1969         (thunderx2t99_asimd_store4): New.
1971 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
1973         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
1974         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
1976 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
1977             Segher Boessenkool  <segher@kernel.crashing.org>
1979         PR target/85698
1980         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
1981         operand.
1983 2018-05-17  Richard Biener  <rguenther@suse.de>
1985         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
1986         for pruning loop and prune defs feeding only already visited PHIs.
1988 2018-05-17  Richard Biener  <rguenther@suse.de>
1990         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
1992 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
1993             Richard Biener  <rguenther@suse.de>
1995         PR tree-optimization/85793
1996         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
1997         for VMAT_ELEMENTWISE.
1999 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
2001         * internal-fn.h (lookup_internal_fn): Declare
2002         * internal-fn.c (lookup_internal_fn): New function.
2003         * gimple.c (gimple_build_call_from_tree): Handle calls to
2004         internal functions.
2005         * gimple-pretty-print.c (dump_gimple_call): Print "." before
2006         internal function names.
2007         * tree-pretty-print.c (dump_generic_node): Likewise.
2008         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
2010 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
2012         * gimple-fold.h (gimple_build): Make the function forms take
2013         combined_fn rather than built_in_function.
2014         (gimple_simplify): Likewise.
2015         * gimple-match-head.c (gimple_simplify): Likewise.
2016         * gimple-fold.c (gimple_build): Likewise.
2017         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
2018         rather than gimple_build_call_internal.
2019         (get_initial_defs_for_reduction): Likewise.
2020         (vect_create_epilog_for_reduction): Likewise.
2021         (vectorizable_live_operation): Likewise.
2023 2018-05-17  Martin Liska  <mliska@suse.cz>
2025         * gimple-ssa-sprintf.c (format_directive): Do not use
2026         space in between 'G_' and '('.
2028 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
2030         PR target/85323
2031         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
2032         even if the mask is not all ones.
2034         PR target/85323
2035         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
2036         vector.
2037         (ix86_gimple_fold_builtin): Likewise.
2039         PR target/85323
2040         * config/i386/i386.c: Include tree-vector-builder.h.
2041         (ix86_vector_shift_count): New function.
2042         (ix86_fold_builtin): Fold shift builtins by scalar count.
2043         (ix86_gimple_fold_builtin): Likewise.
2045         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
2046         _mm512_setzero): New intrinsics.
2048 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
2049             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2051         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
2052         code generation for cases where splatting a value is not useful.
2053         * simplify-rtx.c (simplify_ternary_operation): Simplify
2054         vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
2055         mode to a vec_concat.
2057 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
2059         * config.gcc: Support "goldmont-plus".
2060         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2061         "goldmont-plus".
2062         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2063         PROCESSOR_GOLDMONT_PLUS.
2064         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
2065         (processor_target_table): Add "goldmont-plus".
2066         (PTA_GOLDMONT_PLUS): Define.
2067         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
2068         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
2069         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
2070         (fold_builtin_cpu): Add "goldmont-plus".
2071         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
2072         (ix86_option_override_internal): Add "goldmont-plus".
2073         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
2074         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
2075         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
2076         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
2078 2018-05-17  Richard Biener  <rguenther@suse.de>
2080         PR tree-optimization/85757
2081         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
2082         remove defs that only feed that PHI from further processing.
2084 2018-05-16  Jim Wilson  <jimw@sifive.com>
2086         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
2087         asterisk to name.
2088         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
2090 2018-05-16  Mark Wielaard  <mark@klomp.org>
2092         * dwarf2out.c (count_index_strings): New function.
2093         (output_indirect_strings): Call count_index_strings and generate
2094         header for dwarf_version >= 5.
2096 2018-05-16  Mark Wielaard  <mark@klomp.org>
2098         * dwarf2out.c (dwarf_FORM): New function.
2099         (set_indirect_string): Use dwarf_FORM.
2100         (reset_indirect_string): Likewise.
2101         (size_of_die): Likewise.
2102         (value_format): Likewise.
2103         (output_die): Likewise.
2104         (add_skeleton_AT_string): Likewise.
2105         (output_macinfo_op): Likewise.
2106         (index_string): Likewise.
2107         (output_index_string_offset): Likewise.
2108         (output_index_string): Likewise.
2109         (count_index_strings): Likewise.
2111 2018-05-16  Carl Love  <cel@us.ibm.com>
2113         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2114         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
2116 2018-05-16  Martin Jambor  <mjambor@suse.cz>
2118         * ipa-prop.c (ipa_free_all_edge_args): Remove.
2119         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
2121 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
2123         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
2124         (fnma<mode>4): Likewise.
2125         (fms<mode>4): Likewise.
2126         (fnms<mode>4): Likewise.
2127         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
2128         (aarch64_fnma<mode>4): Likewise.
2129         (aarch64_fms<mode>4): Likewise.
2130         (aarch64_fnms<mode>4): Likewise.
2131         (aarch64_fnmadd<mode>4): Likewise.
2133 2018-05-16  Jason Merrill  <jason@redhat.com>
2135         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
2137 2018-05-16  Richard Biener  <rguenther@suse.de>
2139         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
2140         (dump_stmt_cost): Declare.
2141         (add_stmt_cost): Dump cost we add.
2142         (add_stmt_costs): New function.
2143         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2144         No longer exported.
2145         (vect_analyze_stmt): Adjust prototype.
2146         (vectorizable_condition): Likewise.
2147         (vectorizable_live_operation): Likewise.
2148         (vectorizable_reduction): Likewise.
2149         (vectorizable_induction): Likewise.
2150         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
2151         cost vector to pass to vectorizable_ and record afterwards.
2152         (vect_model_reduction_cost): Take cost vector argument and adjust.
2153         (vect_model_induction_cost): Likewise.
2154         (vectorizable_reduction): Likewise.
2155         (vectorizable_induction): Likewise.
2156         (vectorizable_live_operation): Likewise.
2157         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
2158         SLP_TREE_NUMBER_OF_VEC_STMTS.
2159         (vect_analyze_slp_cost_1): Remove.
2160         (vect_analyze_slp_cost): Likewise.
2161         (vect_slp_analyze_node_operations): Take visited args and
2162         a target cost vector.  Avoid processing already visited stmt sets.
2163         (vect_slp_analyze_operations): Use a local cost vector to gather
2164         costs and register those of non-discarded instances.
2165         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
2166         (vect_schedule_slp_instance): Remove copying of
2167         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
2168         zero.
2169         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
2170         adding cost.  Record cost entry location.
2171         (vect_prologue_cost_for_slp_op): Function to compute cost of
2172         a constant or invariant generated for SLP vect in the prologue,
2173         split out from vect_analyze_slp_cost_1.
2174         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
2175         (vect_model_promotion_demotion_cost): Likewise.
2176         (vect_model_store_cost): Likewise, make static.
2177         (vect_model_load_cost): Likewise.
2178         (vectorizable_bswap): Add cost vector arg and adjust.
2179         (vectorizable_call): Likewise.
2180         (vectorizable_simd_clone_call): Likewise.
2181         (vectorizable_conversion): Likewise.
2182         (vectorizable_assignment): Likewise.
2183         (vectorizable_shift): Likewise.
2184         (vectorizable_operation): Likewise.
2185         (vectorizable_store): Likewise.
2186         (vectorizable_load): Likewise.
2187         (vectorizable_condition): Likewise.
2188         (vectorizable_comparison): Likewise.
2189         (can_vectorize_live_stmts): Likewise.
2190         (vect_analyze_stmt): Likewise.
2191         (vect_transform_stmt): Adjust calls to vectorizable_*.
2192         * tree-vectorizer.c: Include gimple-pretty-print.h.
2193         (dump_stmt_cost): New function.
2195 2018-05-16  Richard Biener  <rguenther@suse.de>
2197         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
2198         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
2199         * tree-ssa-dse.c: Include tree-ssa-loop.h.
2200         (check_name): New callback.
2201         (dse_classify_store): Track cycles via a visited bitmap of PHI
2202         defs and simplify handling of in-loop and across loop dead stores
2203         and properly fail for loop-variant refs.  Handle byte-tracking with
2204         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
2205         limiting the walk.
2207 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
2209         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
2210         (vect_get_mask_type_for_stmt): Likewise.
2211         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
2212         split out from...
2213         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
2214         to determine the statement's vector type and the vector type that
2215         should be used for calculating nunits.  Deal with cases in which
2216         the type has to be deferred.
2217         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
2218         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
2219         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
2220         (vect_determine_vf_for_stmt): New functions, split out from...
2221         (vect_determine_vectorization_factor): ...here.
2222         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
2223         (vect_get_mask_type_for_stmt): New functions, split out from
2224         vect_determine_vectorization_factor.
2226 2018-05-16  Richard Biener  <rguenther@suse.de>
2228         * tree-cfg.c (verify_gimple_assign_ternary): Properly
2229         verify the [VEC_]COND_EXPR embedded comparison.
2231 2018-05-15  Martin Sebor  <msebor@redhat.com>
2233         PR tree-optimization/85753
2234         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
2235         RECORD_TYPE in addition to ARRAY_TYPE.
2237 2018-05-15  Martin Sebor  <msebor@redhat.com>
2239         PR middle-end/85643
2240         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
2242 2018-05-15  Richard Biener  <rguenther@suse.de>
2244         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
2245         add by_clobber_p one.  Change algorithm to collect all defs
2246         representing uses we need to walk and try reducing them to
2247         a single one before failing.
2248         (dse_dom_walker::dse_optimize_stmt): Adjust.
2250 2018-05-13  Mark Wielaard  <mark@klomp.org>
2252         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
2253         (size_of_loc_descr): Likewise.
2254         (output_loc_operands): Likewise.
2255         (output_loc_operands_raw): Likewise.
2256         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
2257         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
2258         (hash_loc_operands): Likewise.
2259         (compare_loc_operands): Likewise.
2261 2018-05-14  Mark Wielaard  <mark@klomp.org>
2263         * dwarf2out.c (count_index_addrs): New function.
2264         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
2266 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2268         PR tree-optimization/83648
2269         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
2270         return value as malloc candidate.
2272 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2274         PR ipa/85734
2275         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
2276         as true in call to suggest_attribute.
2278 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
2280         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
2281         -mreadonly-in-sdata.
2283 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2285         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
2286         New pattern.
2287         (aarch64_crypto_aesd_fused): Likewise.
2289 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
2291         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
2292         (movsi_aarch64): Likewise.
2293         (load_pairsi): Likewise.
2294         (load_pairdi): Likewise.
2295         (store_pairsi): Likewise.
2296         (store_pairdi): Likewise.
2297         (load_pairsf): Likewise.
2298         (load_pairdf): Likewise.
2299         (store_pairsf): Likewise.
2300         (store_pairdf): Likewise.
2301         (zero_extend): Likewise.
2302         (trunc): Swap alternatives.
2303         (fcvt_target): Add '?' to prefer w over r.
2305 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
2307         PR target/85756
2308         * config/i386/i386.md: Disallow non-commutative arithmetics in
2309         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
2310         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
2311         in the peephole2 before it.
2313 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
2315         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
2316         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
2317         (ix86_handle_option): Handle -mcldemote.
2318         * config.gcc: New header.
2319         * config/i386/cldemoteintrin.h: New file.
2320         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
2321         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2322         -mcldemote.
2323         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2324         OPTION_MASK_ISA_CLDEMOTE.
2325         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
2326         (ix86_valid_target_attribute_inner_p): Ditto.
2327         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
2328         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
2329         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
2330         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
2331         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
2332         (cldemote): New.
2333         * config/i386/i386.opt: Add -mcldemote.
2334         * config/i386/x86intrin.h: New header.
2335         * doc/invoke.texi: Add -mcldemote.
2337 2018-05-14  Richard Biener  <rguenther@suse.de>
2339         * doc/match-and-simplify.texi: Adjust :s documentation.
2341 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
2343         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
2344         intended memcpy size.
2345         (REORDER_45): Likewise.
2347 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
2349         * sort.cc: New file.
2350         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
2351         * vec.c (qsort_chk): Use gcc_qsort.
2352         * Makefile.in (OBJS-libcommon): Add sort.o.
2353         (build/sort.o): New target.  Use it...
2354         (BUILD_RTL): ... here, and...
2355         (build/gencfn-macros): ... here, and...
2356         (build/genmatch): ... here.
2358 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2359             Chung-Ju Wu  <jasonwucj@gmail.com>
2361         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
2362         * config/nds32/nds32-graywolf.md: New file.
2363         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
2364         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
2365         pipeline.
2366         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
2367         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
2368         * config/nds32/nds32.md (pipeline_model): Add graywolf.
2369         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
2370         * config/nds32/pipelines.md: Include n15 settings.
2372 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2373             Chung-Ju Wu  <jasonwucj@gmail.com>
2375         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
2376         * config/nds32/nds32-n13.md: New file.
2377         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
2378         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
2379         pipeline.
2380         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
2381         * config/nds32/nds32.md (pipeline_model): Add n13.
2382         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
2383         * config/nds32/pipelines.md: Include n13 settings.
2385 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2386             Chung-Ju Wu  <jasonwucj@gmail.com>
2388         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
2389         * config/nds32/nds32-n10.md: New file.
2390         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
2391         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
2392         pipeline.
2393         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
2394         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
2395         * config/nds32/nds32.md (pipeline_model): Add n10.
2396         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
2397         * config/nds32/pipelines.md: Include n10 settings.
2399 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
2400             Kito Cheng  <kito.cheng@gmail.com>
2401             Chung-Ju Wu  <jasonwucj@gmail.com>
2403         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
2404         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2405         Add enum values for DSP extension instructions.
2406         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
2407         New constraints.
2408         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
2409         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
2410         New code iterators.
2411         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
2412         * config/nds32/nds32-dspext.md: New file for DSP implementation.
2413         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
2414         * config/nds32/nds32-intrinsic.md: Likewise.
2415         * config/nds32/nds32_intrinsic.h: Likewise.
2416         * config/nds32/nds32-md-auxiliary.c: Likewise.
2417         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
2418         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
2419         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
2420         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
2421         * config/nds32/nds32-protos.h: New declarations for DSP extension.
2422         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
2423         TYPE_DMAC in switch statement.
2424         * config/nds32/nds32.c: New checking and implementation for DSP
2425         extension instructions.
2426         * config/nds32/nds32.h: Likewise.
2427         * config/nds32/nds32.md: Likewise.
2428         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
2429         * config/nds32/predicates.md: Implement new predicates for DSP
2430         extension.
2432 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
2434         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
2435         Reformat alternatives and attributes so it is easier to identify
2436         which constraints/attributes go with which instruction.
2437         (mov<mode>_hardfloat32, FMOVE64): Likewise.
2438         (mov<mode>_softfloat32, FMOVE64): Likewise.
2439         (mov<mode>_hardfloat64, FMOVE64): Likewise.
2440         (mov<mode>_softfloat64, FMOVE64): Likewise.
2442 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2444         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2445         subsection.
2446         (Basic PowerPC Built-in Functions): The new name of the
2447         subsection previously known as "PowerPC Built-in Functions".
2448         (Basic PowerPC Built-in Functions Available on all Configurations):
2449         New subsubsection.
2450         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
2451         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
2452         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
2453         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
2455 2018-05-11  Martin Jambor  <mjambor@suse.cz>
2457         PR ipa/85655
2458         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
2459         single const.
2461 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2463         PR target/85733
2464         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
2466 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
2468         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
2469         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
2470         (ix86_handle_option): Handle -mwaitpkg.
2471         * config.gcc: New header.
2472         * config/i386/cpuid.h (bit_WAITPKG): New bit.
2473         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
2474         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
2475         function type.
2476         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2477         OPTION_MASK_ISA_WAITPKG.
2478         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
2479         (ix86_option_override_internal): Add PTA_WAITPKG.
2480         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
2481         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
2482         IX86_BUILTIN_TPAUSE.
2483         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
2484         __builtin_ia32_umwait and __builtin_ia32_tpause.
2485         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
2486         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
2487         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
2488         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
2489         UNSPECV_TPAUSE): New.
2490         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
2491         * config/i386/i386.opt: Add -mwaitpkg.
2492         * config/i386/waitpkgintrin.h: New file.
2493         * config/i386/x86intrin.h: New header.
2494         * doc/invoke.texi: Add -mwaitpkg.
2496 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2498         PR target/85606
2499         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
2500         equivalent.
2501         (cortex-m0): Use armv6s-m isa.
2502         (cortex-m0plus): Likewise.
2503         (cortex-m1): Likewise.
2504         (cortex-m0.small-multiply): Likewise.
2505         (cortex-m0plus.small-multiply): Likewise.
2506         (cortex-m1.small-multiply): Likewise.
2508 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
2509             Jakub Jelinek  <jakub@redhat.com>
2511         PR tree-optimization/85692
2512         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
2513         source permute as well.
2515 2018-05-11  Martin Liska  <mliska@suse.cz>
2517         PR sanitizer/85556
2518         * doc/extend.texi: Document LLVM style format for no_sanitize
2519         attribute.
2521 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
2523         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
2524         mode_supports_vsx_dform_quad to mode_supports_dq_form.
2525         (mode_supports_vsx_dform_quad): Likewise.
2526         (mode_supports_vmx_dform): Move these functions to be next to the
2527         other mode_supports functions.
2528         (mode_supports_dq_form): Likewise.
2529         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
2530         mode_supports_dq_form.
2531         (reg_offset_addressing_ok_p): Likewise.
2532         (offsettable_ok_by_alignment): Likewise.
2533         (rs6000_legitimate_offset_address_p): Likewise.
2534         (legitimate_lo_sum_address_p): Likewise.
2535         (rs6000_legitimize_address): Likewise.
2536         (rs6000_legitimize_reload_address): Likewise.
2537         (rs6000_secondary_reload_inner): Likewise.
2538         (rs6000_preferred_reload_class): Likewise.
2539         (rs6000_output_move_128bit): Likewise.
2541 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2543         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
2544         Generate SImode target register for null target.
2545         <case IX86_BUILTIN_XGETBV>: Ditto.
2546         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
2547         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
2549 2018-05-10  Carl Love  <cel@us.ibm.com>
2551         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2552         dcbtt and dcbtstt if operands[2] is 0.
2554 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2556         PR target/85693
2557         * config/i386/sse.md (usadv64qi): New expander.
2559 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
2561         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
2562         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
2563         -maltivec=be support.
2564         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
2565         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
2566         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
2567         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
2568         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
2569         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
2570         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
2571         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
2572         altivec_vsumsws): Adjust.
2573         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
2574         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
2575         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
2576         support.
2577         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
2578         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
2579         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
2580         (altivec_lve<VI_char>x): Delete expand.
2581         (*altivec_lve<VI_char>x_internal): Rename to...
2582         (altivec_lve<VI_char>x): ... this.
2583         (altivec_lvxl_<mode>): Delete expand.
2584         (*altivec_lvxl_<mode>_internal): Rename to ...
2585         (altivec_lvxl_<mode>): ... this.
2586         (altivec_stvxl_<mode>): Delete expand.
2587         (*altivec_stvxl_<mode>_internal): Rename to ...
2588         (altivec_stvxl_<mode>): ... this.
2589         (altivec_stve<VI_char>x): Delete expand.
2590         (*altivec_stve<VI_char>x_internal): Rename to ...
2591         (altivec_stve<VI_char>x): ... this.
2592         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
2593         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
2594         reduc_plus_scal_<mode>): Adjust.
2595         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
2596         comment.
2597         (rs6000_cpu_cpp_builtins): Adjust.
2598         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
2599         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
2600         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
2601         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
2602         -maltivec=be support.
2603         (rs6000_split_vec_extract_var): Adjust.
2604         (rs6000_split_v4si_init): Adjust.
2605         (swap_selector_for_mode): Delete.
2606         (altivec_expand_lvx_be, altivec_expand_stvx_be,
2607         altivec_expand_stvex_be): Delete.
2608         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
2609         -maltivec=be support.
2610         (rs6000_gimple_fold_builtin): Ditto.
2611         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
2612         Adjust.
2613         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
2614         (TARGET_DIRECT_MOVE_64BIT): Adjust.
2615         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
2616         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
2617         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
2618         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
2619         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
2620         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
2621         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
2622         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
2623         anonymous split): Adjust.
2624         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
2625         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
2627 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
2629         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
2630         when --with-gxx-include-dir is also specified.
2631         * configure: Regenerate.
2633 2018-05-09  Jim Wilson  <jimw@sifive.com>
2635         PR target/84797
2636         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
2637         * config/riscv/t-withmultilib: New.
2638         * config/riscv/withmultilib.h: New.
2639         * doc/install.texi: Document RISC-V --with-multilib-list support.
2641 2018-05-09  Richard Biener  <rguenther@suse.de>
2643         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
2644         vector.
2645         (vect_bb_vectorization_profitable_p): Adjust.  Compute
2646         actual scalar cost using the cost vector and the add_stmt_cost
2647         machinery.
2649 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2651         PR rtl-optimization/85645
2652         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
2653         in the REG_CFA_REGISTER note for LR, don't leave it empty.
2655 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2657         PR rtl-optimization/85645
2658         * shrink-wrap.c (spread_components): Return a boolean saying if
2659         anything was changed.
2660         (try_shrink_wrapping_separate): Iterate spread_components until
2661         nothing changes anymore.
2663 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2665         PR rtl-optimization/85645
2666         * regrename.c (build_def_use): Also kill the chains that include the
2667         destination of a REG_CFA_REGISTER note.
2669 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2671         PR rtl-optimization/85645
2672         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
2673         insn that has a REG_CFA_REGISTER note.
2675 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
2677         * cfgexpand.c (expand_clobber): New function.
2678         (expand_gimple_stmt_1): Use it.
2679         * tree-vect-stmts.c (vect_clobber_variable): New function,
2680         split out from...
2681         (vectorizable_simd_clone_call): ...here.
2682         (vectorizable_store): Emit a clobber either side of an
2683         IFN_STORE_LANES sequence.
2684         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
2686 2018-05-09  Tom de Vries  <tom@codesourcery.com>
2688         PR target/85626
2689         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
2690         (define_insn "trap_if_false"): Add exit after trap.
2692 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
2694         PR rtl-optimization/85638
2695         * bb-reorder.c: Include common/common-target.h.
2696         (create_forwarder_block): New function extracted from...
2697         (fix_up_crossing_landing_pad): ...here.  Rename into...
2698         (dw2_fix_up_crossing_landing_pad): ...this.
2699         (sjlj_fix_up_crossing_landing_pad): New function.
2700         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
2701         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
2702         from both partitions and exit the loop after one iteration.
2704 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2706         Revert:
2707         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2708         subsection.
2709         (Basic PowerPC Built-in Functions): The new name of the
2710         subsection previously known as "PowerPC Built-in Functions".
2711         (Basic PowerPC Built-in Functions Available on all Configurations):
2712         New subsubsection.
2713         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2714         subsubsection.
2715         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2716         subsubsection.
2717         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2718         subsubsection.
2719         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2720         subsubsection.
2722 2018-05-08  Jim Wilson  <jimw@sifive.com>
2724         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
2725         (LD_EMUL_SUFFIX): New.
2726         (LINK_SPEC): Use it.
2728 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2730         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2731         subsection.
2732         (Basic PowerPC Built-in Functions): The new name of the
2733         subsection previously known as "PowerPC Built-in Functions".
2734         (Basic PowerPC Built-in Functions Available on all Configurations):
2735         New subsubsection.
2736         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2737         subsubsection.
2738         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2739         subsubsection.
2740         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2741         subsubsection.
2742         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2743         subsubsection.
2745 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2747         PR target/85683
2748         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
2749         after cmpelim optimization.
2751 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
2753         * config.gcc: Support "goldmont".
2754         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
2755         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2756         PROCESSOR_GOLDMONT.
2757         * config/i386/i386.c (m_GOLDMONT): Define.
2758         (processor_target_table): Add "goldmont".
2759         (PTA_GOLDMONT): Define.
2760         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
2761         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
2762         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
2763         (fold_builtin_cpu): Add "goldmont".
2764         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
2765         (ix86_option_override_internal): Add "goldmont".
2766         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
2767         (processor_type): Add PROCESSOR_GOLDMONT.
2768         * config/i386/i386.md: Add CPU "glm".
2769         * config/i386/glm.md: New file.
2770         * config/i386/x86-tune.def: Add m_GOLDMONT.
2771         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
2773 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2775         PR target/85572
2776         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
2777         E_V4DImode.
2778         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
2779         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
2780         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
2782         PR target/85317
2783         * config/i386/i386.c (ix86_fold_builtin): Handle
2784         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
2786         PR target/85480
2787         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
2788         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
2790 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
2792         PR target/85658
2793         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
2794         (check_arch): Likewise.
2795         (check_fpu): Return the result rather than printing it.
2796         (end arch): Fix operator precedence.
2797         (end cpu): Likewise.
2798         (END): Print the result from check_fpu.
2800 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2801             Alan Hayward  <alan.hayward@arm.com>
2802             David Sherwood  <david.sherwood@arm.com>
2804         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
2805         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
2806         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
2807         (*fcmuo<mode>_and): New patterns.
2809 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2811         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
2812         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
2813         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
2814         (cmp_op, sve_imm_con): New code attributes.
2815         (SVE_COND_INT_CMP, imm_con): Delete.
2816         (cmp_op): Remove above unspecs from int attribute.
2817         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
2818         to...
2819         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
2820         comparison-specific unspecs.
2821         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
2822         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
2823         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
2824         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
2825         (*vec_fcm<cmp_op><mode>): Rename to...
2826         (*fcm<cmp_op><mode>): ...this and adjust likewise.
2827         (*vec_fcmuo<mode>): Rename to...
2828         (*fcmuo<mode>): ...this and adjust likewise.
2829         (*pred_fcm<cmp_op><mode>): New pattern.
2830         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
2831         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
2832         functions.
2833         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
2834         and UNORDERED.
2835         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
2836         (aarch64_emit_sve_predicated_cond): New function.
2837         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
2838         (aarch64_emit_unspec_cond_or): Replace with...
2839         (aarch64_emit_sve_or_conds): ...this new function.  Use
2840         aarch64_emit_sve_ptrue_op for the individual comparisons and
2841         aarch64_emit_binop to OR them together.
2842         (aarch64_emit_inverted_unspec_cond): Replace with...
2843         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
2844         aarch64_emit_sve_ptrue_op for the comparison and
2845         aarch64_emit_unop to invert the result.
2846         (aarch64_expand_sve_vec_cmp_float): Update after the above
2847         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
2849 2018-05-07  Nathan Sidwell  <nathan@acm.org>
2851         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
2852         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
2853         (Backwards Compatibility): Likewise.
2855 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2857         PR bootstrap/85681
2858         Revert:
2859         2018-05-07  Luis Machado  <luis.machado@linaro.org>
2861         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2862         <prefetch_dynamic_strides>: New const bool field.
2863         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2864         prefetch_dynamic_strides.
2865         (exynosm1_prefetch_tune): Likewise.
2866         (thunderxt88_prefetch_tune): Likewise.
2867         (thunderx_prefetch_tune): Likewise.
2868         (thunderx2t99_prefetch_tune): Likewise.
2869         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
2870         (aarch64_override_options_internal): Update to set
2871         PARAM_PREFETCH_DYNAMIC_STRIDES.
2872         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2873         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2874         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2875         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2876         prefetch-dynamic-strides setting.
2878         2018-05-07  Luis Machado  <luis.machado@linaro.org>
2880         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2881         <minimum_stride>: New const int field.
2882         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2883         minimum_stride field.
2884         (exynosm1_prefetch_tune): Likewise.
2885         (thunderxt88_prefetch_tune): Likewise.
2886         (thunderx_prefetch_tune): Likewise.
2887         (thunderx2t99_prefetch_tune): Likewise.
2888         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
2889         (aarch64_override_options_internal): Update to set
2890         PARAM_PREFETCH_MINIMUM_STRIDE.
2891         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2892         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2893         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2894         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2895         stride is constant and is below the minimum stride threshold.
2897 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2899         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
2900         to 512.
2902 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2904         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2905         <prefetch_dynamic_strides>: New const bool field.
2906         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2907         prefetch_dynamic_strides.
2908         (exynosm1_prefetch_tune): Likewise.
2909         (thunderxt88_prefetch_tune): Likewise.
2910         (thunderx_prefetch_tune): Likewise.
2911         (thunderx2t99_prefetch_tune): Likewise.
2912         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
2913         (aarch64_override_options_internal): Update to set
2914         PARAM_PREFETCH_DYNAMIC_STRIDES.
2915         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2916         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2917         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2918         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2919         prefetch-dynamic-strides setting.
2921 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2923         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2924         <minimum_stride>: New const int field.
2925         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2926         minimum_stride field.
2927         (exynosm1_prefetch_tune): Likewise.
2928         (thunderxt88_prefetch_tune): Likewise.
2929         (thunderx_prefetch_tune): Likewise.
2930         (thunderx2t99_prefetch_tune): Likewise.
2931         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
2932         (aarch64_override_options_internal): Update to set
2933         PARAM_PREFETCH_MINIMUM_STRIDE.
2934         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2935         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2936         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2937         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2938         stride is constant and is below the minimum stride threshold.
2940 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
2942         PR c++/85659
2943         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
2944         the type is addressable.  Don't force op into register if it has
2945         BLKmode.
2947 2018-05-05  Roland McGrath  <mcgrathr@google.com>
2949         PR other/77609
2950         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
2951         any section for which we don't know a specific type it should have,
2952         regardless of name.  Previously this was done only for the exact
2953         names ".init_array", ".fini_array", and ".preinit_array".
2954         (default_elf_asm_named_section): Add comment about
2955         relationship with default_section_type_flags and SECTION_NOTYPE.
2956         (get_section): Don't consider it a type conflict if one side has
2957         SECTION_NOTYPE and the other doesn't, as long as neither has the
2958         SECTION_BSS et al used in the default_section_type_flags logic.
2960 2018-05-05  Tom de Vries  <tom@codesourcery.com>
2962         PR target/85653
2963         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
2964         (workaround_barsyncs): New function.
2965         (nvptx_reorg): Use workaround_barsyncs.
2966         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
2967         (define_expand "nvptx_membar_cta"): New define_expand.
2968         (define_insn "*nvptx_membar_cta"): New insn.
2970 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
2972         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
2973         To improve optimization opportunities.
2974         * builtin-types.def: The new needed builtin types for the above.
2976 2018-05-04  Richard Biener  <rguenther@suse.de>
2978         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
2979         * gimple-ssa-store-merging.c
2980         (imm_store_chain_info::output_merged_store): Remove redundant create,
2981         release split_store vector contents on failure.
2982         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
2983         scalar stmt vector on cache hit.
2985 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
2987         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
2988         Xilinx FP support.
2989         * config.gcc (powerpc-xilinx-eabi*): Remove.
2990         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
2991         support.
2992         (fusion_addis_mem_combo_load): Ditto.
2993         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
2994         FP support.
2995         (rs6000_cpu_cpp_builtins): Ditto.
2996         * config/rs6000/rs6000-linux.c
2997         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
2998         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
2999         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
3000         support.
3001         (rs6000_setup_reg_addr_masks): Ditto.
3002         (rs6000_init_hard_regno_mode_ok): Ditto.
3003         (rs6000_option_override_internal): Ditto.
3004         (legitimate_lo_sum_address_p): Ditto.
3005         (rs6000_legitimize_address): Ditto.
3006         (rs6000_legitimize_reload_address): Ditto.
3007         (rs6000_legitimate_address_p): Ditto.
3008         (abi_v4_pass_in_fpr): Ditto.
3009         (setup_incoming_varargs): Ditto.
3010         (rs6000_gimplify_va_arg): Ditto.
3011         (rs6000_split_multireg_move): Ditto.
3012         (rs6000_savres_strategy): Ditto.
3013         (rs6000_emit_prologue_components): Ditto.
3014         (rs6000_emit_epilogue_components): Ditto.
3015         (rs6000_emit_prologue): Ditto.
3016         (rs6000_emit_epilogue): Ditto.
3017         (rs6000_elf_file_end): Ditto.
3018         (rs6000_function_value): Ditto.
3019         (rs6000_libcall_value): Ditto.
3020         * config/rs6000/rs6000.h: Ditto.
3021         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
3022         (TARGET_MINMAX): ... this.  New.
3023         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
3024         * config/rs6000/rs6000.md: Remove Xilinx FP support.
3025         (*movsi_internal1_single): Delete.
3026         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
3027         mfpu=, mxilinx-fpu): Delete.
3028         * config/rs6000/singlefp.h: Delete.
3029         * config/rs6000/sysv4.h: Remove Xilinx FP support.
3030         * config/rs6000/t-rs6000: Ditto.
3031         * config/rs6000/t-xilinx: Delete.
3032         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
3033         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
3034         (VStype_simple): Delete.
3035         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
3036         * config/rs6000/xfpu.h: Delete.
3037         * config/rs6000/xfpu.md: Delete.
3038         * config/rs6000/xilinx.h: Delete.
3039         * config/rs6000/xilinx.opt: Delete.
3040         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
3041         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
3043 2018-05-04  Tom de Vries  <tom@codesourcery.com>
3045         PR libgomp/85639
3046         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
3047         if ignore == 0.
3049 2018-05-04  Richard Biener  <rguenther@suse.de>
3051         PR middle-end/85627
3052         * tree-complex.c (update_complex_assignment): We are always in SSA form.
3053         (expand_complex_div_wide): Likewise.
3054         (expand_complex_operations_1): Likewise.
3055         (expand_complex_libcall): Preserve EH info of the original stmt.
3056         (tree_lower_complex): Handle removed blocks.
3057         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
3058         on complex multiplication and division libcall builtins.
3060 2018-05-04  Richard Biener  <rguenther@suse.de>
3062         PR middle-end/85574
3063         * fold-const.c (negate_expr_p): Restrict negation of operand
3064         zero of a division to when we know that can happen without
3065         overflow.
3066         (fold_negate_expr_1): Likewise.
3068 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
3070         PR libstdc++/85466
3071         * real.h (real_nextafter): Declare.
3072         * real.c (real_nextafter): New function.
3073         * fold-const-call.c (fold_const_nextafter): New function.
3074         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
3075         CASE_CFN_NEXTTOWARD.
3076         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
3077         even when arg1_mode is different from arg0_mode.
3079 2018-05-03  Nathan Sidwell  <nathan@acm.org>
3081         * doc/extend.texi (Deprecated Features): Remove
3082         -ffriend-injection.
3083         (Backwards Compatibility): Likewise.
3084         * doc/invoke.texi (C++ Language Options): Likewise.
3085         (C++ Dialect Options): Likewise.
3087 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
3089         PR target/85530
3090         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
3091         _mm512_mask_mullox_epi64): New intrinsics.
3093 2018-05-03  Tom de Vries  <tom@codesourcery.com>
3095         PR testsuite/85106
3096         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3097         dump files): Add offload-tree.
3099 2018-05-03  Richard Biener  <rguenther@suse.de>
3101         PR tree-optimization/85615
3102         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
3103         to loops not nested in BBs loop father to avoid creating multi-entry
3104         loops.
3106 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3108         PR tree-optimization/70291
3109         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
3110         arguments.  Change return type to tree.  Emit libcall as a new
3111         statement rather than replacing existing one when inplace_p is true.
3112         (expand_complex_multiplication_components): New function.
3113         (expand_complex_multiplication): Expand floating-point complex
3114         multiplication using the above.
3115         (expand_complex_division): Rename inner_type parameter to type.
3116         Update expand_complex_libcall call-site.
3117         (expand_complex_operations_1): Update expand_complex_multiplication
3118         and expand_complex_division call-sites.
3120 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
3122         PR target/85582
3123         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3124         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3125         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
3126         the highest significant bit of the shift count mask is clear.  In
3127         check whether and[sq]i3 is needed verify that all significant bits
3128         of the shift count other than the highest are set.
3130 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3132         PR libgomp/82428
3133         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
3134         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
3135         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
3136         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
3137         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
3138         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
3139         __builtin_goacc_parlevel_size.
3141 2018-05-02  Richard Biener  <rguenther@suse.de>
3143         PR tree-optimization/85597
3144         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
3145         do not use split vect_get_vec_defs call but call vect_get_slp_defs
3146         directly.
3148 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3150         PR testsuite/85106
3151         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3152         dump files): Add ltrans-tree.
3154 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3156         PR testsuite/85106
3157         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3158         dump files): Add wpa-ipa.
3160 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
3162         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
3163         powerpc*-*-linux*paired* target.
3164         * config/rs6000/750cl.h: Delete.
3165         * config/rs6000/paired.h: Delete.
3166         * config/rs6000/paired.md: Delete.
3167         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
3168         float support.
3169         * config/rs6000/rs6000-builtin.def: Remove paired float support.
3170         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
3171         comment.  Remove paired float support.
3172         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
3173         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
3174         VECTOR_PAIRED.
3175         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
3176         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
3177         declarations.
3178         * config/rs6000/rs6000.c: Remove paired float support.
3179         (paired_expand_vector_init, paired_expand_vector_move,
3180         paired_emit_vector_compare, paired_emit_vector_cond_expr,
3181         (paired_expand_lv_builtin, paired_expand_stv_builtin,
3182         paired_expand_builtin, paired_expand_predicate_builtin,
3183         paired_init_builtins): Delete.
3184         * config/rs6000/rs6000.h: Remove paired float support.
3185         * config/rs6000/rs6000.md: Remove paired float support.
3186         (move_from_CR_ov_bit): Delete.
3187         * config/rs6000/rs6000.opt (mpaired): Delete.
3188         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
3189         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
3191 2018-05-02  Richard Biener  <rguenther@suse.de>
3193         PR middle-end/85567
3194         * gimplify.c (gimplify_save_expr): When in SSA form allow
3195         SAVE_EXPRs to compute to SSA vars.
3197 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
3199         PR target/85582
3200         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3201         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3202         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
3203         clobber operands[2], instead use a new pseudo.  Formatting fixes.
3205 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
3207         PR tree-optimization/85586
3208         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
3209         exit early for statements in the same group if the accesses are
3210         not strided.
3212 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3214         PR lto/85451
3215         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
3216         error message.
3218 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
3220         PR tree-optimization/85143
3221         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
3223 2018-05-01  Tom de Vries  <tom@codesourcery.com>
3225         PR lto/85451
3226         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
3227         not found" error message.
3229 2018-05-01  Tom de Vries  <tom@codesourcery.com>
3231         PR other/83786
3232         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
3233         * vec.c (test_ordered_remove_if): New function.
3234         (vec_c_tests): Call test_ordered_remove_if.
3235         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
3236         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
3237         * tree-vect-patterns.c (vect_pattern_recog_1): Use
3238         VEC_ORDERED_REMOVE_IF.
3240 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3242         PR tree-optimization/82665
3243         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
3244         pointer subtraction where arguments come from a memchr call.
3246 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
3248         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
3249         --push-state --as-needed and --pop-state instead of --as-needed and
3250         --no-as-needed if ld supports it.
3251         * configure: Regenerated.
3253         PR web/85578
3254         * doc/install.texi2html: Replace _002d with - and _002a with * in
3255         generated html files using sed.
3257 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3259         PR c++/85523
3260         * gcc-rich-location.c (blank_line_before_p): New function.
3261         (use_new_line): New function.
3262         (gcc_rich_location::add_fixit_insert_formatted): New function.
3263         * gcc-rich-location.h
3264         (gcc_rich_location::add_fixit_insert_formatted): New function.
3266 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3268         * selftest.c (assert_streq): Rename "expected" and "actual" to
3269         "val1" and "val2".  Extend NULL-handling to cover both inputs
3270         symmetrically, while still requiring both to be non-NULL for a pass.
3271         * selftest.h (assert_streq): Rename "expected" and "actual" to
3272         "val1" and "val2".
3273         (ASSERT_EQ): Likewise.
3274         (ASSERT_EQ_AT): Likewise.
3275         (ASSERT_KNOWN_EQ): Likewise.
3276         (ASSERT_KNOWN_EQ_AT): Likewise.
3277         (ASSERT_NE): Likewise.
3278         (ASSERT_MAYBE_NE): Likewise.
3279         (ASSERT_MAYBE_NE_AT): Likewise.
3280         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
3281         the assertion to pass.
3282         (ASSERT_STREQ_AT): Likewise.
3284 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
3286         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
3287         interaction with -pie.
3289 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3291         * selftest.h: Fix alphabetization of per-source-file selftest
3292         declarations.
3294 2018-04-30  Jason Merrill  <jason@redhat.com>
3296         PR c++/61982 - dead stores to destroyed objects.
3297         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
3298         of clobber.
3300 2018-04-30  Jason Merrill  <jason@redhat.com>
3302         * tree.c (build_clobber): New.
3303         * tree.h: Declare it.
3304         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
3306 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3308         * diagnostic-show-locus.c (layout::layout): Update for
3309         location_get_source_line returning a char_span.
3310         (struct char_span): Move to input.h.
3311         (struct correction): Update for fields in char_span becoming
3312         private.
3313         (struct source_line): Update for location_get_source_line
3314         returning a char_span.
3315         (layout::print_line): Likewise.
3316         * edit-context.c (edited_file::print_content): Likewise.
3317         (edited_file::print_diff_hunk): Likewise.
3318         (edited_file::print_run_of_changed_lines): Likewise.
3319         (edited_file::get_num_lines): Likewise.
3320         (edited_line::edited_line): Likewise.
3321         * final.c (asm_show_source): Likewise.
3322         * input.c (location_get_source_line): Convert return type
3323         from const char * to char_span, losing the final "line_len"
3324         param.
3325         (dump_location_info): Update for the above.
3326         (get_substring_ranges_for_loc): Likewise.  Use a char_span
3327         when handling the literal within the line.
3328         (test_reading_source_line): Update for location_get_source_line
3329         returning a char_span.
3330         * input.h (class char_span): Move here from
3331         diagnostic-show-locus.c, converting from a struct to a class.
3332         Make data members private.
3333         (char_span::operator bool): New.
3334         (char_span::length): New.
3335         (char_span::get_buffer): New.
3336         (char_span::operator[]): New.
3337         (char_span::subspan): Make const.
3338         (char_span::xstrdup): New.
3339         (location_get_source_line): Convert return type from const char *
3340         to char_span, losing the final "line_size" param.
3342 2018-04-30  Jan Hubicka  <jh@suse.cz>
3344         * lto-wrapper.c (ltrans_priorities): New static var.
3345         (cmp_priority): New.
3346         (run_gcc): Read priorities and if doing parallel build order
3347         the Makefile by them.
3349 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3351         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
3353 2018-04-30  Richard Biener  <rguenther@suse.de>
3355         * tree-cfg.c (verify_address): Remove base argument, add
3356         flag whether to check TREE_ADDRESSABLE and do that.
3357         (verify_expr): Remove.
3358         (verify_types_in_gimple_reference): Add pieces from verify_expr.
3359         (verify_gimple_assign_single): Likewise.
3360         (verify_gimple_switch): Likewise.
3361         (verify_expr_location_1): Dereference tp once.  Add (disabled)
3362         piece from verify_expr.
3363         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
3365 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3367         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
3369 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3371         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
3372         (small_data_pattern): Likewise.
3373         (arc_rewrite_small_data): Likewise.
3374         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
3375         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
3376         (get_symbol_alignment): New function.
3377         (legitimate_small_data_address_p): Likewise.
3378         (legitimate_scaled_address): Update, call
3379         legitimate_small_data_address_p.
3380         (output_sdata): New static variable.
3381         (arc_print_operand): Update how we handle small data operands.
3382         (arc_print_operand_address): Likewise.
3383         (arc_legitimate_address_p): Update, use
3384         legitimate_small_data_address_p.
3385         (arc_rewrite_small_data_p): Remove.
3386         (arc_rewrite_small_data_1): Likewise.
3387         (arc_rewrite_small_data): Likewise.
3388         (small_data_pattern): Likewise.
3389         (compact_sda_memory_operand): Update to use
3390         legitimate_small_data_address_p and get_symbol_alignment.
3391         (prepare_move_operands): Don't rewite sdata pattern.
3392         (prepare_extend_operands): Remove.
3393         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
3394         pattern.
3395         (zero_extendqisi2): Likewise.
3396         (zero_extendhisi2): Likewise.
3397         (extendqihi2): Likewise.
3398         (extendqisi2): Likewise.
3399         (extendhisi2): Likewise.
3400         (addsi3): Likewise.
3401         (subsi3): Likewise.
3402         (andsi3): Likewise.
3403         * config/arc/constraints.md (Usd): Change it to memory constraint.
3405 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3407         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
3408         as source of std instructions.
3409         * config/arc/arc.md (movsi_insn): Update pattern predicate to
3410         allow 6-bit constants as source for store instructions.
3411         (movdi_insn): Update instruction pattern to allow 6-bit constants
3412         as source for store instructions.
3414 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
3416         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
3418 2018-04-30  Nathan Sidwell  <nathan@acm.org>
3419             Sandra Loosemore <sandra@codesourcery.com>
3421         * dumpfile.c (dump_open): Allow '-' for stdout.
3422         * doc/invoke.texi (Developer Options): Document dump filename
3423         determination early.  Document stdin/stdout selection.
3425 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
3427         Microblaze Target: PIC data text relative
3429         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
3430         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
3431         Add declaration.
3432         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
3433         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
3434         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
3435         New addressing mode for data-text relative position indepenedent code.
3436         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
3437         'ADDRESS_SYMBOLIC_TXT_REL'.
3438         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
3439         (microblaze_legitimate_pic_operand): Exclude function calls from
3440         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
3441         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
3442         addresses cases.
3443         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3444         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3445         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
3446         for 'address + offset'.
3447         (microblaze_expand_prologue): Add new function prologue call for
3448         'r20' assignation.
3449         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
3450         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
3451         table in case of TARGET_PIC_DATA_TEXT_REL.
3452         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
3453         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
3454         Add new macros 'UNSPEC_TEXT',
3455         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
3456         + exclude function calls from 'UNSPEC_PLT' in case of data text
3457         relative mode.
3458         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3459         new target hook for generating address diff vector tables in case of
3460         flag_pic.
3461         * doc/tm.texi : Regenerate.
3462         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
3463         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
3464         of addr diff vector generation.
3465         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3466         target hook definition.
3467         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
3468         Add default function for generate_pic_addr_diff_vec -> flag_pic.
3469         * doc/invoke.texi (Add new pic option): Add new microblaze pic
3470         option for data text relative.
3472 2018-04-30  Richard Biener  <rguenther@suse.de>
3474         * tree-chrec.h (evolution_function_is_constant_p): Remove
3475         redundant check.
3476         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
3478 2018-04-30  Richard Biener  <rguenther@suse.de>
3480         PR bootstrap/85571
3481         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
3483 2018-04-30  Richard Biener  <rguenther@suse.de>
3485         PR tree-optimization/28364
3486         PR tree-optimization/85275
3487         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
3488         copying first exit test.
3490 2018-04-28  Mark Wielaard  <mark@klomp.org>
3492         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
3493         dwarf_version >= 5.
3494         (dwarf_AT): Handle DW_AT_addr_base.
3495         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
3497 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
3499         PR target/84431
3500         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
3501         (*ashl<dwi>3_doubleword_mask_1): Ditto.
3502         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
3503         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
3505 2018-04-28  Richard Biener  <rguenther@suse.de>
3507         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
3508         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
3509         to reflect use.  Only add interesting stmts.
3511 2018-04-27  Martin Jambor  <mjambor@suse.cz>
3513         PR ipa/85549
3514         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
3515         the jump function allows for passing through aggregate values.
3517 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
3519         * input.h (in_system_header_at): Convert from macro to inline
3520         function.
3521         (from_macro_expansion_at): Likewise.
3522         (from_macro_definition_at): Likewise.
3524 2018-04-27  Jeff Law  <law@redhat.com>
3526         * config.gcc: Mark tile* targets as deprecated/obsolete.
3528 2018-04-27  Richard Biener  <rguenther@suse.de>
3530         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
3531         fix for ILP32.
3533 2018-04-27  Richard Biener  <rguenther@suse.de>
3535         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
3537 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
3539         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
3540         with Yd constraint. Set "preferred_for_speed" attribute from
3541         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
3542         with Yd constraint.
3543         (*movdi_internal): Ditto.
3544         (movti_interunit splitters): Remove
3545         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
3546         (movdi_interunit splitters): Ditto.
3547         * config/i386/constraints.md (Ye): Remove.
3548         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
3550 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3552         PR target/85512
3553         * config/aarch64/constraints.md (Usg): Limit to 31.
3554         (Usj): Limit to 63.
3556 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
3558         PR tree-optimization/85529
3559         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
3560         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
3561         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
3562         zero extension or masking of the MSB bit.
3563         (optimize_range_tests): Add FIRST_BB argument, pass it through
3564         to optimize_range_tests_var_bound.
3565         (maybe_optimize_range_tests, reassociate_bb): Adjust
3566         optimize_range_tests callers.
3568 2018-04-26  Richard Biener  <rguenther@suse.de>
3569             Jakub Jelinek  <jakub@redhat.com>
3571         * cgraph.h (symbol_table): Just declare debug method here.
3572         * symtab.c (symbol_table::debug): Define.
3574 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
3576         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
3578 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
3580         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
3581         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
3582         (*movdi_internal): Substitute Yi and Yj constraint with x
3583         and Ym and Yn constraint with y constraint.  Update "isa"
3584         attribute and set "preferred_for_speed" attribute from
3585         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
3586         (*movsi_internal): Ditto.
3587         (*movdf_internal): Ditto.
3588         (*movsf_internal): Ditto.
3589         (*zero_extendsidi2): Ditto.
3590         * config/i386/sse.md (vec_set<mode>_0): Ditto.
3591         (sse2_loadld): Ditto.
3592         (*vec_extract<ssevecmodelower>_0): Ditto.
3593         (*vec_extractv4si_0_zext_sse4): Ditto.
3594         (vec_concatv2di): Ditto.
3595         (*vec_dup<mode>): Ditto.
3596         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
3597         * config/i386/constraints.md (Yi): Remove.
3598         (Yj): Remove.
3599         (Ym): Remove.
3600         (Yn): Remove.
3602 2018-04-26  Nathan Sidwell  <nathan@acm.org>
3604         * dumpfile.c (dump_open): New.
3605         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
3606         (dump_finish): Detect stdio/stderr by value not name.
3608 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
3610         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
3612 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3614         PR target/84952
3615         * config/nvptx/nvptx.c (verify_neutering_jumps)
3616         (verify_neutering_labels): New function
3617         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
3619 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3621         PR target/84025
3622         * config/nvptx/nvptx.c (needs_neutering_p): New function.
3623         (nvptx_single): Use needs_neutering_p to skip over insns that do not
3624         need neutering.
3626 2018-04-26  Richard Biener <rguenther@suse.de>
3627             Tom de Vries  <tom@codesourcery.com>
3629         PR lto/85422
3630         * lto-streamer-out.c (output_function): Fixup loops if required to match
3631         discovery done in the reader.
3633 2018-04-26  Richard Biener  <rguenther@suse.de>
3635         PR tree-optimization/85116
3636         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
3637         have a loop exit from the single latch predecessor.  Remove
3638         case of header with just condition.
3639         (ch_base::copy_headers): Exclude infinite loops from any
3640         processing.
3641         (pass_ch::execute): Record exits.
3643 2018-04-26  Richard Biener  <rguenther@suse.de>
3645         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
3646         prologue cost vector and pass it to vect_get_load_cost.
3647         (vect_get_peeling_costs_all_drs): Likewise.
3648         (vect_peeling_hash_get_lowest_cost): Likewise.
3649         (vect_enhance_data_refs_alignment): Likewise.
3651 2018-04-26  Richard Biener  <rguenther@suse.de>
3653         PR middle-end/85450
3654         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
3655         checking of integer<->pointer conversions.
3656         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
3657         sign-/zero-extending pointer types.
3658         (expand_omp_for_static_chunk): Likewise.
3660 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
3661             Jean Lee  <xiaoyur347@gmail.com>
3663         * config/mips/mips.c (mips_asan_shadow_offset): New function.
3664         (TARGET_ASAN_SHADOW_OFFSET): Define.
3665         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
3666         true for -fsanitize=address.
3668 2018-04-25  Mark Wielaard  <mark@klomp.org>
3670         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
3671         shorter ones.
3673 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3675         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
3676         than "alu", remove explicit "memory" and "imm_disp" attributes.
3677         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
3679         PR middle-end/85414
3680         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
3681         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
3682         gen_lowpart_no_emit.
3684 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
3686         PR target/85473
3687         * config/i386/i386.c (ix86_expand_builtin): Change memory
3688         operand to XI, extend p0 to Pmode.
3689         * config/i386/i386.md: Change unspec volatile and operand
3690         1 mode to XI, change operand 0 mode to P.
3692 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3694         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
3695         GET_MODE_MASK before any checking.
3696         (nds32_can_use_bset_p): Likewise.
3697         (nds32_can_use_btgl_p): Likewise.
3699 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3701         * config/nds32/nds32-doubleword.md: New define_split pattern for
3702         illegal register number.
3704 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3706         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
3708 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3710         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
3712 2018-04-25  Richard Biener  <rguenther@suse.de>
3714         * lto-streamer.h (LTO_major_version): Bump to 8.
3716 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3718         * BASE-VER: Set to 9.0.0.
3720 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
3722         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
3723         in __abskf2 and __powikf2.
3725 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3727         PR target/85512
3728         * config/aarch64/constraints.md (Usg, Usj): New constraints.
3729         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
3730         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
3731         Use the above on operand 2.  Reindent.
3732         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
3734 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3736         PR target/85485
3737         * common/config/i386/i386-common.c (ix86_handle_option): Don't
3738         handle OPT_mcet.
3739         * config/i386/i386.opt (mcet): Removed.
3740         * doc/install.texi: Remove -mcet documentation.
3741         * doc/invoke.texi: Likewise.
3743 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3745         PR target/85485
3746         * doc/install.texi: Remove -mcet from bootstrap-cet.
3748 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3750         PR target/85511
3751         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
3752         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
3753         if TARGET_64BIT.
3755         PR target/85503
3756         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
3757         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
3758         containing a CONST_VECTOR.
3760 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
3762         * doc/install.texi: Update newlib dependency for nvptx.
3764 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3766         PR target/85508
3767         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
3768         instead of INTVAL when shifting x left.
3770 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
3772         PR tree-optimization/85478
3773         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
3774         vect_grouped_store_supported for single element vectors.
3776 2018-04-24  Richard Biener  <rguenther@suse.de>
3778         PR target/85491
3779         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
3780         load cost increase to the case of non-constant step.
3782 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3784         PR target/84828
3785         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
3786         destination if any_malformed_asm.
3788 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
3790         PR middle-end/85496
3791         * expr.c (store_field): In the bitfield case, if the value comes from
3792         a function call and is returned in registers by means of a PARALLEL,
3793         do not change the mode of the temporary unless BLKmode and VOIDmode.
3795 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
3797         PR rtl-optimization/85423
3798         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
3799         dependencies to debug insns when the previous insn is non-debug.
3801 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3803         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
3804         enums into a single definition.
3805         (fls): Fix predicates and printing.
3806         (seti): Likewise.
3808 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3810         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
3811         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
3812         and short u6 immediate.
3813         (check_if_valid_sleep_operand): Remove.
3814         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
3816 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3818         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
3819         flag_always_save_lp condition.
3820         * config/nds32/nds32.opt (malways-save-lp): New option.
3822 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3824         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
3825         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
3826         * config/nds32/nds32.h
3827         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
3828         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
3830 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3832         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
3833         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
3835 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3836             Chung-Ju Wu  <jasonwucj@gmail.com>
3838         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
3839         Declare.
3840         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
3841         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
3843 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3845         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
3847 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3849         * config/nds32/nds32-protos.h (nds32_data_alignment,
3850         nds32_local_alignment): Declare.
3851         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
3852         nds32_local_alignment): New functions.
3853         (TARGET_CONSTANT_ALIGNMENT): Define.
3854         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
3856 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3858         * config/nds32/nds32.c
3859         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
3860         (TARGET_MODES_TIEABLE_P): Likewise.
3862 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3864         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
3865         level Ofast and Og.
3867 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
3868             Chung-Ju Wu  <jasonwucj@gmail.com>
3870         * config/nds32/constants.md (unspec_volatile_element): Add enum values
3871         for unaligned access.
3872         * config/nds32/nds32-intrinsic.c: Implementation of expanding
3873         unaligned access.
3874         * config/nds32/nds32-intrinsic.md: Likewise.
3875         * config/nds32/nds32_intrinsic.h: Likewise.
3876         * config/nds32/nds32.h (nds32_builtins): Likewise.
3877         * config/nds32/nds32.opt (munaligned-access): New option.
3878         * config/nds32/nds32.c (nds32_asm_file_start): Display
3879         flag_unaligned_access status.
3881 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
3883         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
3884         -mno-relax is present.
3885         * config/riscv/linux.h (LINK_SPEC): Ditto.
3887 2018-04-20  Martin Sebor  <msebor@redhat.com>
3889         PR c/85365
3890         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
3891         for null pointers.
3892         (gimple_fold_builtin_stxcpy_chk): Same.
3893         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
3895 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
3897         PR target/85456
3898         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
3899         __powikf2 when long double is IEEE 128-bit.
3901 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
3903         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
3904         step to make sure stack always aligned.
3906 2018-04-20  Carl Love  <cel@us.ibm.com>
3908         PR target/83402
3909         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
3910         size check for arg0.
3912 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
3913             Tom de Vries  <tom@codesourcery.com>
3915         PR target/85445
3916         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
3917         Emit insns for calls too.
3918         (nvptx_find_par): Always look for worker-level predecessor insn.
3919         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
3920         calls.
3921         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
3922         (nvptx_process_pars): Propagate frames for calls.
3924 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
3926         PR target/85469
3927         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
3928         Removed.
3929         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
3930         (ix86_handle_option): Don't handle OPT_mibt.
3931         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
3932         __SHSTK__.
3933         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
3934         has_ibt and ibt.
3935         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
3936         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
3937         (ix86_target_macros): Define __CET__ with flag_cf_protection
3938         for -fcf-protection.
3939         * config/i386/i386.c (isa2_opts): Remove -mibt.
3940         * config/i386/i386.h (TARGET_IBT): Removed.
3941         (TARGET_IBT_P): Likewise.
3942         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
3943         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
3944         * config/i386/i386.opt (mcet): Update help message.
3945         (mshstk): Likewise.
3946         (mibt): Removed.
3947         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
3948         -mcet as an alias for -mshstk.
3950 2018-04-20  Richard Biener <rguenther@suse.de>
3952         PR middle-end/85475
3953         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
3954         complexity by forcing a single use of the multiply operand.
3956 2018-04-20  Martin Jambor  <mjambor@suse.cz>
3958         ipa/85449
3959         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
3960         recursion dependency to only apply to non-clones.
3962 2018-04-20  Martin Jambor  <mjambor@suse.cz>
3964         ipa/85447
3965         * ipa-cp.c (create_specialized_node): Check that clones of
3966         self-recursive edges exist during IPA-CP.
3968 2018-04-19  Toon Moene  <toon@moene.org>
3970         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
3971         by -O3. 
3973 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
3975         PR tree-optimization/85467
3976         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
3977         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
3978         VECTOR_CST element to type.
3980 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
3982         PR target/85397
3983         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
3984         * config/i386/i386.md (builtin_setjmp_setup): Removed.
3985         (builtin_longjmp): Likewise.
3986         (save_stack_nonlocal): New pattern.
3987         (restore_stack_nonlocal): Likewise.
3989 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
3991         PR target/85404
3992         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
3993         Replace ASM_OUTPUT_LABEL with fprintf.
3995 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
3997         PR target/85417
3998         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
3999         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
4000         * config/i386/i386-c.c (ix86_target_macros_internal): Also
4001         define __IBT__ and __SHSTK__ for -fcf-protection.
4002         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
4003         TARGET_IBT.
4004         (ix86_trampoline_init): Likewise.
4005         (x86_output_mi_thunk): Likewise.
4006         (ix86_notrack_prefixed_insn_p): Likewise.
4007         (ix86_option_override_internal): Don't disallow -fcf-protection.
4008         * config/i386/i386.md (rdssp<mode>): Also enable for
4009         -fcf-protection.
4010         (incssp<mode>): Likewise.
4011         (nop_endbr): Likewise.
4012         * config/i386/i386.opt (mcet): Change help message to built-in
4013         functions only.
4014         (mibt): Likewise.
4015         (mshstk): Likewise.
4016         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
4017         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
4018         enable CET built-in functions.
4020 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
4022         * common/config/i386/i386-common.c 
4023         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
4024         OPTION_MASK_ISA_MOVDIRI_UNSET,
4025         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
4026         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
4027         * config.gcc (movdirintrin.h): New header.
4028         * config/i386/cpuid.h (bit_MOVDIRI,
4029         bit_MOVDIR64B): New bits.
4030         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
4031         and -mmvodir64b.
4032         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
4033         (VOID, PVOID, PCVOID)): New function types.
4034         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
4035         __builtin_ia32_directstoreu_u64,
4036          __builtin_ia32_movdir64b): New builtins.
4037         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
4038         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
4039         and -mmovdiri.
4040         (ix86_valid_target_attribute_inner_p): Ditto.
4041         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
4042         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
4043         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
4044         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
4045         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
4046         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
4047         (movdiri<mode>, movdir64b_<mode>): New.
4048         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
4049         * config/i386/immintrin.h: Include movdirintrin.h.
4050         * config/i386/movdirintrin.h: New file.
4051         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
4053 2018-04-19  Richard Biener  <rguenther@suse.de>
4055         PR middle-end/85455
4056         * cfg.c (clear_bb_flags): When loop state says we have
4057         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
4059 2018-04-19  Richard Biener  <rguenther@suse.de>
4061         PR tree-optimization/84737
4062         * tree-vect-data-refs.c (vect_copy_ref_info): New function
4063         copying restrict info.
4064         (vect_setup_realignment): Use it.
4065         * tree-vectorizer.h (vect_copy_ref_info): Declare.
4066         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
4067         the first DR to all generated stores.
4068         (vectorizable_load): Likewise for loads.
4070 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
4072         PR tree-optimization/85446
4073         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
4074         the integral and pointer types to have the same precision.
4076         * doc/install.texi: Document --disable-cet being the default and
4077         --enable-cet=auto.
4079 2018-04-18  Martin Liska  <mliska@suse.cz>
4081         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
4082         style.
4084 2018-04-18  Martin Liska  <mliska@suse.cz>
4086         Revert
4087         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4089         PR ipa/83983
4090         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
4091         arguments if they are comparable.
4093 2018-04-18  Martin Liska  <mliska@suse.cz>
4095         Revert
4096         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
4098         PR lto/84805
4099         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
4100         incomplete types.
4102 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
4104         PR target/85388
4105         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
4106         ENDBR after calling __morestack.
4108 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
4110         PR jit/85384
4111         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
4112         by using gcc_base_ver to generate a gcc_driver_version, and use
4113         it when generating GCC_DRIVER_NAME.
4114         * configure: Regenerate.
4116 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
4118         PR target/81084
4119         * config.gcc: Obsolete powerpc*-*-*spe*.
4121 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4123         PR debug/84637
4124         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
4125         (stabstr_D): Change type of unum from unsigned int to
4126         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
4127         type.
4129 2018-04-17  Jim Wilson  <jimw@sifive.com>
4131         PR 84856
4132         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
4133         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
4134         Set arg_pointer_offset after using pretend_args_size.
4136 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4138         PR rtl-optimization/85431
4139         * dse.c (record_store): Ignore zero width stores.
4141         PR sanitizer/85230
4142         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
4143         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
4144         __builtin_stack_restore rather than after it.
4145         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
4146         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
4147         argument instead of virtual_dynamic_stack_rtx.
4149 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4151         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
4152         New prototype.
4153         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4154         Add note to error message to explain internal mapping of overloaded
4155         built-in function name to non-overloaded built-in function name.
4156         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
4157         function.
4159 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
4161         PR target/85424
4162         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
4163         where the inputs overlap with the output.
4165 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4167         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
4168         (=v, v) alternative and explicit "memory" attribute.
4169         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
4170         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4171         attributes.
4172         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
4173         "sselog1" type instead of "sselog".
4174         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
4175         "sselog".  Remove explicit "memory" attribute.
4176         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
4177         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4178         attributes.
4179         (vec_extract_hi_v32hi): Merge all alternatives into one, use
4180         "sselog1" type instead of "sselog".  Remove explicit "memory"
4181         attribute.
4182         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
4183         use "sselog1" type instead of "sselog".  Remove explicit "memory"
4184         attribute.
4185         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
4186         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4187         attributes.
4188         (vec_extract_hi_v64qi): Merge all alternatives into one, use
4189         "sselog1" type instead of "sselog".  Remove explicit "memory"
4190         attribute.
4191         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
4192         use "sselog1" type instead of "sselog".  Remove explicit "memory"
4193         attribute.
4195         PR target/85430
4196         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
4198         PR middle-end/85414
4199         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
4200         on a SUBREG.
4202 2018-04-17  Martin Jambor  <mjambor@suse.cz>
4204         PR ipa/85421
4205         * ipa-cp.c (create_specialized_node): Call
4206         expand_all_artificial_thunks if necessary.
4208 2018-04-17  Martin Liska  <mliska@suse.cz>
4210         PR lto/85405
4211         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
4212         in message, remote space in between '_G' and '('.
4214 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4216         PR target/85281
4217         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
4218         avx512f_vmcmp<mode>3<round_saeonly_name>,
4219         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
4220         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
4221         avx512f_rndscale<mode><round_saeonly_name>,
4222         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
4223         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
4224         Use %<iptr>2 instead of %2 for -masm=intel.
4225         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
4226         avx512f_vcvttss2usi<round_saeonly_name>,
4227         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
4228         -masm=intel.
4229         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
4230         avx512f_vcvttsd2usi<round_saeonly_name>,
4231         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
4232         Use %q1 instead of %1 for -masm=intel.
4233         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
4234         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
4235         of %3 for -masm=intel.
4236         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
4237         -masm=intel.
4238         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
4239         -masm=intel.
4240         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
4241         -masm=intel.
4242         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
4243         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
4244         %g1.
4245         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
4246         -masm=intel.
4247         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
4248         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
4249         %g1 and one with %0 and %1.
4250         (avx512er_vmrcp28<mode><round_saeonly_name>,
4251         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
4252         %1 for -masm=intel.
4253         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
4254         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
4255         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
4256         of %0 and %{%4%} for -masm=intel.
4257         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
4258         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
4259         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
4260         order of %0 and %{%5%}%{z%} for -masm=intel.
4262 2018-04-17  Jan Hubicka  <jh@suse.cz>
4264         PR lto/85405
4265         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
4267 2018-04-17  Martin Liska  <mliska@suse.cz>
4269         PR ipa/85329
4270         * multiple_target.c (create_dispatcher_calls): Set apostrophes
4271         for target_clone error message.  Make default implementation
4272         clone to be a local declaration.
4273         (separate_attrs): Add new argument and check for an empty
4274         string.
4275         (expand_target_clones): Handle it.
4276         (ipa_target_clone): Make redirection just for target_clones
4277         functions.
4279 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
4280             Tom de Vries  <tom@codesourcery.com>
4282         PR middle-end/84955
4283         * omp-expand.c (expand_oacc_for): Add dummy false branch for
4284         tiled basic blocks without omp continue statements.
4286 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
4288         PR target/83660
4289         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
4290         vec_extract expression as having side effects to make sure it gets
4291         a cleanup point.
4293 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
4295         PR target/85403
4296         * config/i386/i386.c (get_builtin_code_for_version): Check
4297         error_mark_node.
4299 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
4301         PR target/84331
4302         * gcc/config.gcc: Support "skylake".
4303         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
4304         PROCESSOR_SKYLAKE.
4305         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
4306         (processor_target_table): Add "skylake".
4307         (ix86_option_override_internal): Add "skylake".
4308         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
4309         PROCESSOR_CANNONLAKE.
4310         (get_builtin_code_for_version): Fix priority for
4311         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
4312         PROCESSOR_SKYLAKE-AVX512.
4313         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
4314         (processor_type): Add PROCESSOR_SKYLAKE.
4316 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
4317             Jason Merrill  <jason@redhat.com>
4319         PR c++/85112
4320         * convert.c (convert_to_integer_1): Use direct recursion for
4321         enumeral types and types with a precision less than the number
4322         of bits in their mode.
4324 2018-04-16  Julia Koval  <julia.koval@intel.com>
4326         PR target/84413
4327         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
4328         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
4330 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
4332         PR target/85293
4333         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
4334         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
4335         and -mno-direct-move.
4337 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
4339         PR target/83402
4340         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
4341         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
4342         Ensure negative shifts result in {0}.
4344 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
4346         PR rtl-optimization/79916
4347         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
4348         regs (if any) to define how to gnerate SD moves when LRA is in
4349         progress.
4351 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
4353         PR rtl-optimization/85393
4354         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
4355         * except.c (expand_dw2_landing_pad_for_region): Make static.
4356         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
4357         a label and unconditional jump to old_bb, rather than
4358         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
4359         basic block.
4361         PR rtl-optimization/85376
4362         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
4363         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
4364         instead of a specific value.
4366 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4367             Bin Cheng  <bin.cheng@arm.com>
4369         PR tree-optimization/82965
4370         PR tree-optimization/83991
4371         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
4372         by_profile_only parameter.
4373         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
4374         information if the loop was predicted to iterate too many times.
4375         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
4377 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4379         PR lto/71991
4380         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
4381         always inline.
4383 2018-04-13  Martin Liska  <mliska@suse.cz>
4384             Jakub Jelinek  <jakub@redhat.com>
4386         PR middle-end/81657
4387         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
4388         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
4389         * builtins.c (expand_builtin_memory_copy_args): Use
4390         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
4391         handle dest_addr == pc_rtx.
4393 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
4395         PR target/85291
4396         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
4397         asked to not generate direct moves.
4398         (fix_trunc<mode>si2_stfiwx): Similar.
4399         (fix_trunc<mode>si2_internal): Similar.
4401 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4403         PR debug/83157
4404         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
4405         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
4406         lookup if dest in some wider mode is known to be const0_rtx and
4407         if so, record permanent equivalence for it to be ZERO_EXTEND of
4408         the narrower mode destination.
4410 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4412         * lto-streamer-out.c (output_function): Revert 259346.
4413         * omp-expand.c (expand_oacc_for): Likewise.
4415 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
4417         PR rtl-optimization/85354
4418         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
4419         * sel-sched.c (sel_global_init): ... here.
4421 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
4423         PR target/85238
4424         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
4425         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
4426         mode for PE-COFF targets.
4427         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
4428         (i386_pe_asm_lto_end): Likewise.
4429         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
4430         (TARGET_ASM_LTO_END): Likewise.
4431         * config/i386/winnt.c (saved_debug_info_level): New static variable.
4432         (i386_pe_asm_lto_start): New function.
4433         (i386_pe_asm_lto_end): Likewise.
4435 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4436             Richard Biener  <rguenther@suse.de>
4438         PR middle-end/84955
4439         * lto-streamer-out.c (output_function): Fix CFG loop state before
4440         streaming out.
4441         * omp-expand.c (expand_oacc_for): Handle calls to internal
4442         functions like regular functions.
4444 2018-04-12  Richard Biener  <rguenther@suse.de>
4446         PR lto/85371
4447         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
4448         for the early LTO debug to properly generate references to it
4449         during DIE emission.  Do not re-use that for the skeleton for
4450         split-dwarf.
4451         (dwarf2out_early_finish): Likewise.
4453 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4455         PR target/85328
4456         * config/i386/sse.md
4457         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
4458         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
4459         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
4460         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
4461         and output is a reg, avoid creating invalid lowpart subreg, but
4462         instead split into a 512-bit move.  Don't split if not AVX512VL,
4463         input is xmm16+ reg and output is a mem.
4464         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
4465         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
4466         xmm16+ reg and output is a mem.
4468 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4470         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
4471         also for flag_dwarf2_cfi_asm.
4473 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4475         PR rtl-optimization/85342
4476         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
4477         a bool scalar var inside of the loop instead.  Don't try to update
4478         recog_data.operand after failed apply_change_group.
4480 2018-04-12  Tom de Vries  <tom@codesourcery.com>
4482         PR target/85296
4483         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
4484         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
4485         array with flexible array member as array without given dimension.
4486         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
4487         argument for undefined param to true.
4489 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
4491         PR target/85321
4492         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4493         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
4494         from PowerPC section.
4495         * config/rs6000/sysv4.opt (mcall-): Improve help text.
4496         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
4497         help text that is too long.
4498         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
4499         help text that is too long.
4500         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
4501         help text that is too long.
4503 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
4505         * config/alpha/alpha.md (stack_probe_internal): Rename
4506         from "probe_stack".  Update all callers.
4508 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4510         PR rtl-optimization/84566
4511         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
4512         sched_macro_fuse_insns.
4514 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4516         PR target/84301
4517         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
4518         (compute_block_dependences): ... from here.
4520 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4522         PR tree-optimization/85331
4523         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
4524         from int to HOST_WIDE_INT.
4526 2018-04-11  Martin Jambor  <mjambor@suse.cz>
4528         PR ipa/84149
4529         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
4530         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
4531         not the same as the source val.
4532         (cgraph_edge_brings_value_p): New parameter.
4533         (gather_edges_for_value): Pass destination value to
4534         cgraph_edge_brings_value_p.
4535         (perhaps_add_new_callers): Likewise.
4536         (get_info_about_necessary_edges): Likewise and exclude values brought
4537         only by self-recursive edges.
4538         (create_specialized_node): Redirect only clones of self-calling edges.
4539         (+self_recursive_pass_through_p): New function.
4540         (find_more_scalar_values_for_callers_subset): Use it.
4541         (find_aggregate_values_for_callers_subset): Likewise.
4542         (known_aggs_to_agg_replacement_list): Removed.
4543         (decide_whether_version_node): Re-calculate known constants for all
4544         remaining context clones.
4546 2018-04-11  Richard Biener  <rguenther@suse.de>
4548         PR lto/85339
4549         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
4550         from early DWARF output.
4551         (dwarf2out_early_finish): Output line info unconditionally into
4552         early DWARF and add reference to it.
4554 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4556         PR target/85281
4557         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
4558         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
4559         other than V2DFmode using iptr mode attribute.
4560         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
4562 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4564         PR rtl-optimization/84659
4565         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
4567 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4569         PR debug/85302
4570         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
4571         SIZEP is NULL.
4572         (output_loc_list): Pass address of a dummy size variable even in the
4573         locview handling loop.
4574         (index_location_lists): Add comment on why skip_loc_list_entry can't
4575         call size_of_locs.
4577 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4579         PR target/85261
4580         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
4581         into register.
4583 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
4585         PR target/85321
4586         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4587         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
4588         and -mstring-compare-inline-limit.
4590 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4592         PR target/85287
4593         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
4594         for stack clash protection in a register whenever we need it to be in
4595         a register.
4597 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4599         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
4600         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
4602 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4604         PR target/85321
4605         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
4606         the help text.
4607         (mlong-double-): Ditto.
4608         * config/rs6000/sysv4.opt (msdata=): Ditto.
4609         (mtls-size=): Ditto.
4611 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4613         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
4614         erroneous entries for
4615         "vector int vec_ldl (int, long int *)", and
4616         "vector unsigned int vec_ldl (int, unsigned long int *)".
4617         Add comments and entries for
4618         "vector bool char vec_ldl (int, bool char *)",
4619         "vector bool short vec_ldl (int, bool short *)",
4620         "vector bool int vec_ldl (int, bool int *)",
4621         "vector bool long long vec_ldl (int, bool long long *)",
4622         "vector pixel vec_ldl (int, pixel *)",
4623         "vector long long vec_ldl (int, long long *)",
4624         "vector unsigned long long vec_ldl (int, unsigned long long *)".
4625         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
4626         type tree bool_long_long_type_node and correct definition of
4627         bool_V2DI_type_node to make reference to this new type tree.
4628         (rs6000_mangle_type): Replace erroneous reference to
4629         bool_long_type_node with bool_long_long_type_node.
4630         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
4631         comments to emphasize sign distinctions for char and int types and
4632         replace RS6000_BTI_bool_long constant with
4633         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
4634         use of RS6000_BTI_pixel.
4635         (bool_long_type_node): Remove this macro definition.
4636         (bool_long_long_type_node): New macro definition
4638 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4640         PR rtl-optimization/85300
4641         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
4642         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
4643         simplify_unary_operation fails.
4645 2018-04-10  Martin Liska  <mliska@suse.cz>
4647         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
4648         cgraph_edge and ipa_ref.
4650 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4652         PR target/85177
4653         PR target/85255
4654         * config/i386/sse.md
4655         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
4656         computation of the VEC_MERGE selector from mask.
4657         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
4658         Fix decoding of the VEC_MERGE selector into mask.
4660 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4662         PR tree-optimization/85286
4663         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
4665 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4667         * final.c (final_1): Set insn_last_address as well as
4668         insn_current_address.
4670 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4672         PR target/85173
4673         * explow.c (emit_stack_probe): Call validize_mem on memory location
4674         before passing it to gen_probe_stack.  Create address operand and
4675         legitimize it for the probe_stack_address case.
4677 2018-04-09  Jan Hubicka  <jh@suse.cz>
4679         PR lto/85078
4680         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
4681         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
4682         * tree.c (free_lang_data_in_type): Fix handling of binfos;
4683         walk basetypes.
4684         (free_lang_data): Rebuild type inheritance graph.
4686 2018-04-09  Martin Sebor  <msebor@redhat.com>
4688         * invoke.texi (-finline-small-functions): Mention other optimization
4689         options.
4690         (-findirect-inlining, -fpartial-inlining): Same.
4691         (-finline-functions-called-once): Same.
4692         (-freorder-blocks-and-partition): Same.
4694 2018-04-09  Jan Hubicka  <jh@suse.cz>
4696         PR rtl/84058
4697         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
4698         jumps; choose last target that matches the criteria (i.e.
4699         no partition changes for non-crossing jumps).
4700         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
4701         support for redirecting crossing jumps to non-crossing.
4703 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
4705         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
4706         also for naked functions.
4708 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
4710         * config/arc/arc.md (add_shift): New pattern.
4711         (add_shift2): Likewise.
4712         (sub_shift): Likewise.
4713         (sub_shift_cmp0_noout): Likewise.
4714         (compare_si_ashiftsi): Likewise.
4715         (xbfu_cmp0_noout): New combine pattern.
4716         (xbfu_cmp0"): Likewise.
4717         (movsi_set_cc_insn): Place the predicable variant first.
4718         (commutative_binary_cmp0_noout): Remove clobber.
4719         (commutative_binary_cmp0): New pattern.
4720         (noncommutative_binary_cmp0): Likewise.
4721         (noncommutative_binary_cmp0_noout): Likewise.
4722         (noncommutative_binary_comparison_result_used): Removed.
4723         (rsub_cmp0): New pattern.
4724         (rsub_cmp0_noout): Likewise.
4725         (extzvsi): Changed, keep only meaningful variants.
4726         (SQH, SEZ): New iterators.
4727         (SQH_postfix): New mode attribute.
4728         (SEZ_prefix): New code attribute.
4729         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
4730         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
4731         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
4732         of numerical value.
4733         (noncommutative_operator): Check the availability of barrel
4734         shifter option.
4736 2018-04-09  Richard Biener  <rguenther@suse.de>
4738         PR tree-optimization/85284
4739         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
4740         Only use the niter constraining form of simple_iv when the exit
4741         is always executed.
4743 2018-04-09  Tom de Vries  <tom@codesourcery.com>
4745         PR target/84041
4746         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
4747         (define_expand "*memory_barrier"): New define_expand.
4748         (define_insn "memory_barrier"): New insn.
4750 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4752         PR rtl-optimization/80463
4753         PR rtl-optimization/83972
4754         PR rtl-optimization/83480
4756         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
4757         correct producer for the insn.
4758         (tidy_control_flow): Fixup seqnos in case of debug insns.
4760 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4762         PR rtl-optimization/83913
4764         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
4765         different sched-times when merging exprs.
4767 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4769         PR rtl-optimization/83962
4771         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
4772         tidy_fallthru_edge and tidy_control_flow.
4774 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4776         PR rtl-optimization/83530
4778         * sel-sched.c (force_next_insn): New global variable.
4779         (remove_insn_for_debug): When force_next_insn is true, also leave only
4780         next insn in the ready list.
4781         (sel_sched_region): When the region wasn't scheduled, make another pass
4782         over it with force_next_insn set to 1.
4784 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
4786         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
4787         into tm_file.
4788         * config/nds32/constants.md (unspec_volatile_element): Add enum values
4789         for interrupt control.
4790         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
4791         functions for interrupt control.
4792         * config/nds32/nds32-intrinsic.md: Likewise.
4793         * config/nds32/nds32_intrinsic.h: Likewise.
4794         * config/nds32/nds32.h (nds32_builtins): Likewise.
4796 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4798         * config/nds32/nds32.c (nds32_init_machine_status,
4799         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
4800         strict_aligned_p field.
4801         (nds32_expand_to_rtl_hook): New function.
4802         (TARGET_EXPAND_TO_RTL_HOOK): Define.
4803         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
4805 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4806             Chung-Ju Wu  <jasonwucj@gmail.com>
4808         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
4809         * config/nds32/nds32-n7.md: New file.
4810         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
4811         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
4812         pipeline.
4813         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
4814         * config/nds32/nds32.md (pipeline_model): Add n7.
4815         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
4816         * config/nds32/pipelines.md: Include n7 settings.
4818 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4819             Chung-Ju Wu  <jasonwucj@gmail.com>
4821         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
4822         * config/nds32/nds32-e8.md: New file.
4823         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
4824         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
4825         pipeline.
4826         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
4827         * config/nds32/nds32.md (pipeline_model): Add e8.
4828         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
4829         * config/nds32/pipelines.md: Include e8 settings.
4831 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4832             Chung-Ju Wu  <jasonwucj@gmail.com>
4834         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
4835         * config/nds32/nds32-n8.md: New file.
4836         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
4837         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
4838         pipeline.
4839         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
4840         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
4841         * config/nds32/nds32.md (pipeline_model): Add n8.
4842         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
4843         * config/nds32/pipelines.md: Include n8 settings.
4845 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4846             Chung-Ju Wu  <jasonwucj@gmail.com>
4848         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
4849         * config/nds32/nds32-n9-2r1w.md: New file.
4850         * config/nds32/nds32-n9-3r2w.md: New file.
4851         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
4852         nds32_register_ports): New or modify for cpu n9.
4853         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
4854         pipeline.
4855         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
4856         * config/nds32/nds32-utils.c: New file.
4857         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
4858         TARGET_MUL_SLOW): Define.
4859         * config/nds32/nds32.md (pipeline_model): New attribute.
4860         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
4861         New options that support cpu n9.
4862         * config/nds32/pipelines.md: Include n9 settings.
4863         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
4865 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4867         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
4868         information if necessary.
4869         (output_cond_branch_compare_zero): Likewise.
4870         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
4871         (nds32_target_alignment): Refine for alignment.
4872         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
4873         (FUNCTION_BOUNDARY): Modify.
4874         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
4875         align case.
4876         * config/nds32/nds32.opt (malways-align, malign-functions): New.
4878 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
4880         * config/nds32/constants.md (unspec_volatile_element): Add values for
4881         TLB operation and data prefetch.
4882         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
4883         functions for TLB operation and data prefetch.
4884         * config/nds32/nds32-intrinsic.md: Likewise.
4885         * config/nds32/nds32_intrinsic.h: Likewise.
4886         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
4887         (nds32_print_operand): Likewise.
4888         * config/nds32/nds32.h (nds32_builtins): Likewise.
4890 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
4891         Andrew Pinski <pinsika@gcc.gnu.org>
4893         PR middle-end/82976
4894         * match.pd: Use constant_boolean_node of correct type instead of
4895         boolean_true_node or boolean_false_node for simplifying
4896         pointer comparisons to zero.
4898 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
4900         PR tree-optimization/80021
4901         * tree.c (verify_type_variant): Make error call in verify_variant_match
4902         translatable and remove final full stop.
4904 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4906         * config/nds32/constants.md (unspec_volatile_element): Add
4907         UNSPEC_VOLATILE_EH_RETURN.
4908         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
4909         nds32_output_stack_pop): Support dwarf exception handling process.
4910         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
4911         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
4912         exception handling process.
4913         (nds32_compute_stack_frame): Likewise.
4914         (nds32_return_addr_rtx): Likewise.
4915         (nds32_initial_elimination_offset): Likewise.
4916         (nds32_expand_prologue): Likewise.
4917         (nds32_expand_epilogue): Likewise.
4918         (nds32_dynamic_chain_address): New function.
4919         * config/nds32/nds32.h (machine_function): Add fields for dwarf
4920         exception handling.
4921         (DYNAMIC_CHAIN_ADDRESS): Define.
4922         (EH_RETURN_DATA_REGNO): Define.
4923         (EH_RETURN_STACKADJ_RTX): Define.
4924         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
4925         patterns for dwarf exception handling.
4927 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4929         * config/nds32/nds32.h: Clean up obsolete macros.
4931 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4933         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
4934         Add enum values for particular instructions.
4935         * config/nds32/nds32-intrinsic.c: Implementation of expanding
4936         particular intrinsic functions.
4937         * config/nds32/nds32-intrinsic.md: Likewise.
4938         * config/nds32/nds32_intrinsic.h: Likewise.
4939         * config/nds32/nds32.h (nds32_builtins): Likewise.
4940         * config/nds32/nds32.md (type): Add pbsad and pbsada.
4941         (btst, ave): New patterns for particular instructions.
4943 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4945         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
4946         Add enum values for atomic load/store and memory sync.
4947         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
4948         and memory sync.
4949         * config/nds32/nds32-intrinsic.md: Likewise.
4950         * config/nds32/nds32_intrinsic.h: Likewise.
4951         * config/nds32/nds32.h (nds32_builtins): Likewise.
4953 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
4955         PR tree-optimization/85257
4956         * fold-const.c (native_encode_vector): If not all elts could fit
4957         and off is -1, return 0 rather than offset.
4958         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
4959         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
4960         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
4961         adjust buffer in native_interpret_expr call.
4963 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4965         * config/nds32/constants.md (unspec_volatile_element): Add cache
4966         control enum values.
4967         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
4968         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
4969         * config/nds32/nds32.c (nds32_cctl_names): New.
4970         (nds32_print_operand): Handle cache control register names.
4971         * config/nds32/nds32.h (nds32_builtins): New enum values.
4972         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
4973         macros.
4974         * config/nds32/nds32.md (type): Add mmu.
4975         * config/nds32/pipelines.md (simple_insn): Add mmu.
4977 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4979         * config/nds32/nds32.md (type): Remove call.
4980         * config/nds32/pipelines.md (simple_insn): Likewise.
4982 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4984         * config/nds32/constants.md (unspec_volatile_element): Add
4985         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
4986         UNSPEC_VOLATILE_FMFCFG.
4987         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
4988         description for fmfcfg and fmfcsr.
4989         (bdesc_1arg): Add fmtcsr.
4990         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
4991         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
4992         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
4993         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
4994         unspec_fmfcfg): New patterns.
4995         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
4996         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
4997         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
4998         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
4999         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
5000         __nds32__fmfcfg): Define.
5002 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5004         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
5005         intrinsic register names.
5006         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
5007         intrinsic register enum values and macros.
5009 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
5011         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
5012         for load/store addressing form.
5013         (nds32_print_operand_address): Likewise.
5015 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
5017         PR target/85196
5018         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
5019         based on LABEL_REF.  Remove useless assertion.
5020         (pic_address_needs_scratch): Fix formatting.
5021         (sparc_legitimize_pic_address): Minor tweaks.
5022         (sparc_delegitimize_address): Adjust assertion accordingly.
5023         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
5024         into symbolic_operand.
5025         (movsi_high_pic_label_ref): Likewise.
5026         (movsi_lo_sum_pic_label_ref): Likewise.
5027         (movdi_pic_label_ref): Likewise.
5028         (movdi_high_pic_label_ref): Likewise.
5029         (movdi_lo_sum_pic_label_ref): Likewise.
5031 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
5033         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
5034         custom LIB_SPEC setup.
5036 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
5037             Kito Cheng  <kito.cheng@gmail.com>
5039         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
5040         * config/riscv/freebsd.h: New.
5042 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5044         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
5045         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
5046         file.
5048 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5049             Kito Cheng  <kito.cheng@gmail.com>
5051         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
5052         nds32_output_call, nds32_symbol_binds_local_p): New functions.
5053         * config/nds32/nds32-protos.h (nds32_output_call,
5054         nds32_output_return): Declare.
5055         * config/nds32/nds32.md: Refine all the call and return patterns.
5057 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
5059         PR debug/85252
5060         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
5061         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
5063         PR rtl-optimization/84872
5064         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
5065         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
5066         EDGE_CROSSING edge.
5068 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
5070         * expr.c (copy_blkmode_to_reg): Revert 254862.
5071         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
5073 2018-04-06  Richard Biener  <rguenther@suse.de>
5075         PR middle-end/85244
5076         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
5077         after seeing a component reference with an adjacent field.  Treat
5078         refs to arrays at struct end of external decls similar to
5079         refs to unconstrained commons.
5081 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
5083         PR sanitizer/85213
5084         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
5085         look through SAVE_EXPRs with non-side-effects argument.  Adjust
5086         recursive calls.
5087         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
5088         save_p here.
5090 2018-04-06  Richard Biener  <rguenther@suse.de>
5092         PR middle-end/85180
5093         * alias.c (find_base_term): New wrapper around find_base_term
5094         unwinding CSELIB_VAL_PTR changes.
5095         (find_base_term): Do not restore CSELIB_VAL_PTR during the
5096         recursion.
5098 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
5100         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
5101         instructions.
5102         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
5103         constant definitions.
5104         ("nop"): lr 0,0 -> nopr r0
5105         ("nop_lr0", "nop_lr1"): New insn definitions.
5107 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5109         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
5110         NDS32_V3PUSH_AVAILABLE_P macro.
5112 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
5113             Chung-Ju Wu  <jasonwucj@gmail.com>
5115         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
5116         (nds32*-*-*): Add float and fpu_config into supported_defaults.
5117         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
5118         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
5119         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
5120         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
5121         * config/nds32/constraints.md: New constraints and checking for hard
5122         float configuration.
5123         * config/nds32/iterators.md: New mode iterator and attribute for hard
5124         float configuration.
5125         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
5126         patterns.
5127         * config/nds32/nds32-fpu.md: New file.
5128         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
5129         deal with hard float code generation.
5130         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
5131         ARCH_V3S.
5132         (abi_type, float_reg_number): New enum type.
5133         * config/nds32/nds32-predicates.c: New predicates for hard float.
5134         * config/nds32/nds32-protos.h: Declare functions for hard float.
5135         * config/nds32/nds32.c: Implementation for hard float configuration.
5136         * config/nds32/nds32.h: Definitions for hard float configuration.
5137         * config/nds32/nds32.md: Include hard float machine description and
5138         modify patterns for hard float configuration.
5139         * config/nds32/nds32.opt: New options for hard float configuration.
5140         * config/nds32/predicates.md: New predicates for hard float
5141         configuration.
5143 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
5145         * common/config/nds32/nds32-common.c
5146         (nds32_option_optimization_table): Enable -mreleax-hint by default.
5148 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
5150         PR middle-end/85195
5151         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
5152         CONSTRUCTOR_ELT (ctor, ...)->value.
5154 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
5156         PR target/85193
5157         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
5159 2018-04-05  Tom de Vries  <tom@codesourcery.com>
5161         PR target/85204
5162         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
5163         cond jump.
5165 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
5166             Kito Cheng  <kito.cheng@gmail.com>
5168         * config/nds32/constraints.md (U33): Fine-tune checking condition.
5169         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
5170         * config/nds32/nds32.h (nds32_16bit_address_type): Add
5171         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
5173 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
5174             Kito Cheng  <kito.cheng@gmail.com>
5176         * config/nds32/constraints.md (Ufe): New memory constraint.
5177         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
5178         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
5179         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
5180         operands.
5181         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
5182         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
5184 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5186         * config/nds32/nds32.md: Use optimize_size in the condition for
5187         alu-shift instructions.
5189 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5191         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
5193 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5195         * config/nds32/nds32.md (negsi2): Refine pattern.
5197 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
5198             Chung-Ju Wu  <jasonwucj@gmail.com>
5200         * config/nds32/iterators.md (shift_rotate): New code iterator.
5201         (shift): New code attribute.
5202         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
5203         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
5204         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
5205         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
5206         bit-wise operations.
5207         (andsi3, *andsi3): Ditto.
5208         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
5209         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
5210         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
5211         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
5212         nds32_ior_operand, nds32_xor_operand): New predicates.
5214 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5216         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
5217         (addsi3, subsi3): ... this.
5219 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5221         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
5223 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5225         * config/nds32/nds32.md: Adjust indention.
5227 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
5229         * config/nds32/nds32.md (feature): New attribute.
5231 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5233         * config/nds32/nds32.md (subtype): New attribute.
5235 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5237         PR target/85203
5238         * config/arm/arm-builtins.c (arm_expand_builtin): Change
5239         expansion to perform a bitwise AND of the argument followed by a
5240         boolean negation of the result.
5242 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
5244         PR rtl-optimization/84878
5245         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
5246         the basic block.  Assert the use reference is not artificial and that
5247         it has an associated insn.
5249 2018-04-04  Michael Matz  <matz@suse.de>
5251         * builtins.c (compute_objsize): Pass correct operand
5252         to array_at_struct_end_p.
5254 2018-04-04  Richard Biener  <rguenther@suse.de>
5256         PR lto/85176
5257         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
5258         from contexts for DINFO_LEVEL_TERSE and below.
5260 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5262         * config/nds32/nds32-doubleword.md (move_<mode>): Require
5263         resiter_operand condition.
5264         * config/nds32/nds32.md (*move<mode>): Ditto.
5266 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5267             Monk Chiang  <sh.chiang04@gmail.com>
5269         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
5271 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5273         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
5275 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5276             Kito Cheng  <kito.cheng@gmail.com>
5278         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
5279         nds32_cond_code_str, output_cond_branch,
5280         output_cond_branch_compare_zero, nds32_expand_cbranch,
5281         nds32_expand_cstore, nds32_expand_movcc,
5282         nds32_output_cbranchsi4_equality_zero,
5283         nds32_output_cbranchsi4_equality_reg,
5284         nds32_output_cbranchsi4_equality_reg_or_const_int,
5285         nds32_output_cbranchsi4_greater_less_zero: New functions.
5286         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
5287         nds32_expand_cstore, nds32_expand_movcc,
5288         nds32_output_cbranchsi4_equality_zero,
5289         nds32_output_cbranchsi4_equality_reg,
5290         nds32_output_cbranchsi4_equality_reg_or_const_int,
5291         nds32_output_cbranchsi4_greater_less_zero): Declare.
5292         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
5293         nds32_rimm11s_operand): New predicates.
5294         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
5295         * config/nds32/nds32.md: Rewrite all the branch and conditional move
5296         patterns.
5298 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5300         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
5301         * config/nds32/nds32.md: Ditto.
5302         * config/nds32/pipelines.md: Ditto.
5304 2018-04-04  Richard Biener  <rguenther@suse.de>
5306         PR tree-optimization/85168
5307         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
5308         propagating abnormals.
5310 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5312         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
5314 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5315             Kito Cheng  <kito.cheng@gmail.com>
5317         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
5318         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
5319         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
5320         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
5321         * config/nds32/nds32.md (sibcall_internal): New.
5322         (sibcall_register): Remove.
5323         (sibcall_immediate): Remove.
5324         (sibcall_value_internal): New.
5325         (sibcall_value_register): Remove.
5326         (sibcall_value_immediate): Remove.
5327         * config/nds32/predicates.md (nds32_general_register_operand): New.
5328         (nds32_call_address_operand): New.
5330 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
5332         PR rtl-optimization/85167
5333         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
5334         bb_defs if *split_p, instead preinitialize it to NULL.
5336         PR tree-optimization/85156
5337         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
5338         evaluating the argument multiple times.
5340 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
5342         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
5343         than vector.
5344         (_mm_cvtpd_ps): Likewise.
5345         (_mm_cvttpd_epi32): Likewise.
5346         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
5347         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
5348         vector, pixel, and bool following altivec.h include.
5350 2018-04-03  Martin Sebor  <msebor@redhat.com>
5352         * doc/extend.texi (Common Function Attributes): Clarify.
5353         (const attribute): Likewise.
5354         (pure attribute): Likewise.
5356 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
5358         PR target/85169
5359         * config/i386/i386.c (ix86_expand_vector_set): Use
5360         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
5362 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
5364         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
5365         instructions when changing rounding bits to preserve precision bits
5366         in the x87 control word.
5368 2018-04-03  Martin Liska  <mliska@suse.cz>
5370         PR tree-optimization/82491
5371         * rtl.h (strip_offset_and_add): Replace += suboffset with
5372         poly_uint64 () + suboffset.
5374 2018-03-29  Martin Liska  <mliska@suse.cz>
5375             Martin Jambor  <mjambor@suse.cz>
5377         PR ipa/84947
5378         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
5379         param_type is not an integral or pointer type.
5381 2018-04-03  Richard Biener  <rguenther@suse.de>
5383         * sese.h (recompute_all_dominators): Remove.
5385 2018-04-02  Martin Sebor  <msebor@redhat.com>
5387         * doc/invoke.texi (-Wrestrict): Fix typos.
5389 2018-04-02  Jim Wilson  <jimw@sifive.com>
5391         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
5392         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
5393         (<optab>di3, <optab>si3_extend): Likewise.
5394         (<optab>si3_mask, <optab>si3_mask_1): New.
5395         (<optab>di3_mask, <optab>di3_mask_1): New.
5396         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
5397         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
5398         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
5400 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
5402         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
5403         example.
5405 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
5407         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
5408         (nds32_canonicalize_comparison): New function.
5410 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5411             Kito Cheng  <kito.cheng@gmail.com>
5412             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
5414         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
5415         * config/nds32/constants.md (unspec_volatile_element): Add
5416         UNSPEC_VOLATILE_RELAX_GROUP.
5417         * config/nds32/nds32-relax-opt.c: New file.
5418         * config/nds32/nds32-predicates.c
5419         (nds32_symbol_load_store_p): New function.
5420         * config/nds32/nds32-protos.h
5421         (nds32_symbol_load_store_p): Declare function.
5422         (make_pass_nds32_relax_opt): Declare new rtl pass function.
5423         * config/nds32/nds32.c
5424         (nds32_register_pass): New function to register pass.
5425         (nds32_register_passes): New function to register passes.
5426         * config/nds32/nds32.md (relax_group): New pattern.
5427         * config/nds32/nds32.opt (mrelax-hint): New option.
5428         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
5430 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
5432         * config/nds32/t-nds32: Modify files dependency.
5434 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5436         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
5437         (PROFILE_HOOK): Define its implementation.
5439 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5441         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
5442         type and 32-bit size.
5444 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
5446         PR middle-end/85090
5447         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
5448         (V_128_256): New mode iterator.
5449         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
5450         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
5451         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
5452         of V.
5453         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
5454         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
5456 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
5458         PR target/83315
5459         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
5460         NaN inputs correctly.
5462 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
5464         PR target/80546
5465         * config/rs6000/vsx.md (??r): New mode attribute.
5466         (*vsx_mov<mode>_64bit): Use it.
5467         (*vsx_mov<mode>_32bit): Likewise.
5469 2018-03-30  Martin Sebor  <msebor@redhat.com>
5471         PR tree-optimization/84818
5472         * builtins.c (check_access): Use warning_n.
5474 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
5476         PR target/83822
5477         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
5478         condition.
5479         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
5480         condition.
5482 2018-03-30  Julia Koval  <julia.koval@intel.com>
5484         PR target/84413
5485         * x86-tune.def (movx, partial_reg_dependency): Enable for
5486         m_SKYLAKE_AVX512.
5488 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
5490         PR inline-asm/84985
5491         * lra-constraints.c (process_alt_operands): Move setting
5492         this_alternative_matches below.
5494 2018-03-29  Martin Liska  <mliska@suse.cz>
5496         PR lto/84995.
5497         * doc/invoke.texi: Document how LTO works with debug info.
5498         Describe auto-load support of binutils.  Mention 'x86-64'
5499         as valid option value of -march option.
5501 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
5503         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
5505         PR c/85094
5506         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
5507         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
5508         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
5509         checking.
5511 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5513         PR target/84912
5514         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
5515         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
5516         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
5517         for RS6000_BTM_POWERPC64.
5518         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
5519         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
5520         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
5521         definition.
5522         (DIVDE): Use it.
5523         (DIVDEU): Likewise.
5525 2018-03-28 Carl Love  <cel@us.ibm.com>
5527         Revert
5528         2017-09-27  Carl Love  <cel@us.ibm.com>
5530         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
5531         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
5532         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
5533         fctiw instruction.
5535 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5537         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
5538         instead of __vector bool.
5539         (_mm_max_pu8): Likewise.
5540         (_mm_min_pi16): Likewise.
5542 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5544         PR target/84912
5545         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
5546         (DIVWEUO): Likewise.
5547         (DIVDEO): Likewise.
5548         (DIVDEUO): Likewise.
5549         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
5550         DIVWEUO and DIVDEUO.
5551         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
5552         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
5553         (div_extend): Likewise.
5554         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
5555         builtin function.
5556         (__builtin_divweuo): Likewise.
5557         (__builtin_divdeo): Likewise.
5558         (__builtin_divdeuo): Likewise.
5560 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5562         PR target/85095
5563         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
5564         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
5566         PR tree-optimization/82004
5567         * gimple-match-head.c (optimize_pow_to_exp): New function.
5568         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
5569         Don't fold to exp if optimize_pow_to_exp is false.
5571 2018-03-28  Martin Liska  <mliska@suse.cz>
5573         PR other/84819
5574         * calls.c (initialize_argument_information): Fix trailing space.
5575         * common.opt: Fix typo and provide better explanation for
5576         -fsanitize-coverage option.
5577         * config/i386/i386.opt: Fix typo.
5579 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5580             Martin Liska  <mliska@suse.cz>
5582         PR sanitizer/85081
5583         * gimplify.c (asan_poison_variable): Don't do the check for
5584         gimplify_omp_ctxp here.
5585         (gimplify_decl_expr): Do it here.
5586         (gimplify_target_expr): Likewise.
5588 2018-03-28  Martin Liska  <mliska@suse.cz>
5590         PR target/84988
5591         * config/i386/i386.c (ix86_function_arg_advance): Do not call
5592         chkp_type_bounds_count if MPX is not enabled.
5594 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
5596         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
5598 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
5600         PR target/84914
5601         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
5602         function to create the function decl for complex long double
5603         multiply and divide for -mabi=ieeelongdouble.
5604         (init_float128_ieee): Call it.
5606 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
5608         PR target/85044
5609         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
5610         -fcf-protection=branch -mibt.
5611         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
5613 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5615         PR target/81863
5616         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
5618 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
5620         PR target/85056
5621         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
5622         extern array declarations.
5624 2018-03-27  Richard Biener  <rguenther@suse.de>
5626         PR middle-end/84067
5627         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
5628         explicit single_use checks.
5630 2018-03-27  Richard Biener  <rguenther@suse.de>
5632         PR tree-optimization/85082
5633         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
5634         Valueize the VUSE.
5636 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5638         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
5639         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
5640         Turn on fasynchronous-unwind-tables and funwind-tables.
5642 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
5644         PR target/85073
5645         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
5646         (*bmi_blsr_<mode>_ccz): Ditto.
5648 2018-03-26  Tom de Vries  <tom@codesourcery.com>
5650         PR tree-optimization/85063
5651         * omp-general.c (offloading_function_p): New function.  Factor out
5652         of ...
5653         * omp-offload.c (pass_omp_target_link::gate): ... here.
5654         * omp-general.h (offloading_function_p): Declare.
5655         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
5656         with attribute omp declare target for offloading functions.
5658 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
5660         PR tree-optimization/84005
5661         * tree-data-ref.h (get_base_for_alignment): Declare.
5662         * tree-data-ref.c (get_base_for_alignment_1): New function.
5663         (get_base_for_alignment): Likewise.
5664         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
5665         get_base_for_alignment to find a suitable base object, instead
5666         of always using drb->base_address.
5668 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5670         PR inline-asm/85022
5671         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
5672         known size by default.
5674 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
5676         PR inline-asm/85030
5677         * lra-constraints.c (process_alt_operands): Don't match BLKmode
5678         and non BLKmode operands.
5680 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5682         PR target/85026
5683         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
5684         Clean up attributes.
5686 2018-03-23  Richard Biener  <rguenther@suse.de>
5688         PR debug/85020
5689         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
5690         we are going to emit early debug for LTO.
5692 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5694         PR inline-asm/85034
5695         * function.c (match_asm_constraints_1): Don't optimize if input
5696         doesn't satisfy general_operand predicate for output's mode.
5698         PR inline-asm/85022
5699         * alias.c (write_dependence_p): Don't require for x_canonicalized
5700         non-VOIDmode if x has VOIDmode.
5702         PR sanitizer/85029
5703         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
5704         just don't try to optimize it rather than assert it never happens.
5706 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5708         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
5709         macro expansions for definition of ST_INTERNAL_<mode> and
5710         LD_INTERNAL_<mode> builtins.
5711         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
5712         Remove prototype.
5713         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
5714         function.
5715         (altivec_expand_st_builtin): Likewise.
5716         (altivec_expand_builtin): Remove calls to deleted functions.
5717         (rs6000_address_for_altivec): Delete this function.
5718         * config/rs6000/vector.md: Remove expands for
5719         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
5721 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
5723         PR target/84826
5724         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
5725         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
5726         re-computing once computed.
5727         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
5728         (arm_init_machine_status): Initialize
5729         machine->static_chain_stack_bytes.
5731 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5733         PR target/84760
5734         * doc/extend.texi: Add four new prototypes for vec_ld.
5735         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
5736         definitions for more logical presentation.
5737         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
5738         entries for V1TI variants of __builtin_altivec_ld builtin.
5739         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
5740         handling of V1TI variant of LVX icode pattern.
5741         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
5742         (rs6000_gimple_fold_builtin): Likewise.
5743         (altivec_init_builtins): Add code to define
5744         __builtin_altivec_lvx_v1ti function.
5746 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5748         PR inline-asm/84941
5749         * function.c (match_asm_constraints_1): Don't do the optimization
5750         if input isn't a REG, SUBREG, MEM or constant.
5752 2018-03-22  Tom de Vries  <tom@codesourcery.com>
5754         PR tree-optimization/84956
5755         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
5756         bb_has_abnormal_pred.
5758 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5760         PR sanitizer/85018
5761         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
5762         DECL_INITIAL (decl) to decl at the end.
5763         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
5764         adjust the comment.
5766 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
5768         * doc/extend.texi (__builtin_tgmath): Document when complex
5769         integer types are treated as _Complex _Float64.
5771 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5773         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
5775 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5777         PR tree-optimization/84960
5778         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
5779         if it is ENTRY block, move them into single succ of ENTRY in that case.
5781 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
5783         PR tree-optimization/84811
5784         * poly-int.h (poly_span_traits): Remove the T3 parameter and
5785         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
5786         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
5787         (known_subrange_p): Update accordingly.  Cast each value involved
5788         in the size comparison, rather than casting the result of the
5789         subtraction.
5791 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5793         PR tree-optimization/84982
5794         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
5795         by flipping the least significant bit rather than all bits from
5796         bitpos to bitpos + bitsize - 1.
5798 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5800         * doc/extend.texi (Deprecated Features): Remove mention of
5801         long-deleted deprecations.
5803 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5805         PR jit/84288
5806         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
5807         * configure: Regenerate.
5809 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5811         PR tree-optimization/83126
5812         * tree-parloops.c (num_phis): New function.
5813         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
5815 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5817         * doc/extend.texi (Deprecated Features): Update deprecated flags,
5818         mention anon-struct/union members and trailing attributes.
5820 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
5822         PR tree-optimization/84969
5823         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
5824         builtin memset partitions if they set different rhs values.
5826 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5828         PR rtl-optimization/84989
5829         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
5830         VEC_DUPLICATE with scalar result mode.
5832 2018-03-21  Martin Liska  <mliska@suse.cz>
5834         PR ipa/84963
5835         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
5836         not intended return statement.
5838 2018-03-21  Martin Liska  <mliska@suse.cz>
5840         PR target/84988
5841         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
5842         (chkp_find_bound_slots_1): Limit number of iterations.
5844 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
5846         PR target/84838
5847         * Minor grammar fixes for x86 options.
5849 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5851         PR debug/84875
5852         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
5853         holding REG_CFA_RESTORE notes, instead turn them into a USE.
5855 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
5857         PR target/83789
5858         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
5859         (altivec_lvx_<mode>_1op): Likewise.
5860         (altivec_stvx_<mode>_2op): Likewise.
5861         (altivec_stvx_<mode>_1op): Likewise.
5862         (altivec_lvx_<VM2:mode>): New define_expand.
5863         (altivec_stvx_<VM2:mode>): Likewise.
5864         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
5865         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5866         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
5867         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5868         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
5869         (rs6000_gen_lvx): Likewise.
5870         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
5871         (altivec_expand_stv_builtin): Likewise.
5872         (altivec_expand_builtin): Likewise.
5873         * config/rs6000/vector.md: Likewise.
5875 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5877         PR target/82518
5878         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
5879         BYTES_BIG_ENDIAN.
5881 2018-03-20  Richard Biener  <rguenther@suse.de>
5883         PR target/84986
5884         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
5885         sign-conversions as zero, fall back to standard scalar_stmt
5886         cost for the rest.
5888 2018-03-20  Martin Liska  <mliska@suse.cz>
5890         PR ipa/84825
5891         * predict.c (rebuild_frequencies): Handle case when we have
5892         PROFILE_ABSENT, but flag_guess_branch_prob is false.
5894 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5896         PR target/84990
5897         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
5898         flag_section_anchors.
5899         * varasm.c (use_blocks_for_decl_p): Remove hack for
5900         dw2_force_const_mem.
5902         PR target/84845
5903         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
5904         to ...
5905         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
5906         be created, use lowpart_subreg of operands[0] rather than operands[0]
5907         itself.
5908         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
5909         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
5910         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
5911         and n constraint instead of aarch64_shift_imm_di and Usd.
5912         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
5913         (*aarch64_<optab>_reg_minus<mode>3): ... this.
5915 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
5917         PR target/82989
5918         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
5919         to favor GPR over NEON registers.
5920         (<shift>di3_neon): Likewise.
5922 2018-03-20  Tom de Vries  <tom@codesourcery.com>
5924         PR target/84952
5925         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
5926         (nvptx_process_pars): Emit bar.sync asap and alap.
5928 2018-03-20  Tom de Vries  <tom@codesourcery.com>
5930         PR target/84954
5931         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
5932         seen_label if seen_label is already set.
5934 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5936         PR target/84945
5937         * config/i386/i386.c (fold_builtin_cpu): For features above 31
5938         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
5939         Use 1U instead of 1.  Formatting fixes.
5941         PR c/84953
5942         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
5943         instead of TREE_TYPE (s1) for the return value.
5945 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
5947         PR tree-optimization/84946
5948         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
5949         bitsize + bitsize in poly_uint64 rather than poly_int64.
5951         PR sanitizer/78651
5952         * dwarf2asm.c: Include fold-const.c.
5953         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
5954         of decl rather than decl itself.
5956         PR rtl-optimization/84643
5957         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
5959 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
5961         PR sanitizer/78651
5962         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
5963         calling assemble_variable.
5965 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
5967         PR target/81647
5968         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
5969         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
5971 2018-03-19  Jim Wilson  <jimw@sifive.com>
5973         PR bootstrap/84856
5974         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
5975         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
5976         (riscv_first_stack_step): Likewise.
5977         (riscv_option_override): Use STACK_BOUNDARY instead of
5978         MIN_STACK_BOUNDARY.
5979         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
5980         MIN_STACK_BOUNDARY.
5981         (BIGGEST_ALIGNMENT): Set to 128.
5982         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
5983         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
5984         STACK_BOUNDARY.
5986 2018-03-19  Richard Biener  <rguenther@suse.de>
5988         PR tree-optimization/84933
5989         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
5990         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
5992 2018-03-19  Richard Biener  <rguenther@suse.de>
5994         PR tree-optimization/84859
5995         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
5996         (cond_if_else_store_replacement): Perform sinking operation on
5997         single-store BBs regardless of MAX_STORES_TO_SINK setting.
5998         Generalize what a BB with a single eligible store is.
6000 2018-03-19  Richard Biener  <rguenther@suse.de>
6002         PR tree-optimization/84929
6003         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
6004         chrec_is_positive against non-chrec arg.
6006 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
6008         PR target/84711
6009         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
6011 2018-03-18  Martin Liska  <mliska@suse.cz>
6013         PR rtl-optimization/84635
6014         * regrename.c (build_def_use): Use matches_mode only when
6015         matches >= 0.
6017 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
6019         PR tree-optimization/84913
6020         * tree-vect-loop.c (vectorizable_reduction): Don't try to
6021         vectorize chains of COND_EXPRs.
6023 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6025         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
6027 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6029         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
6031 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6033         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
6035 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6036             Kito Cheng  <kito.cheng@gmail.com>
6038         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
6039         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
6040         (nds32_adjust_reg_alloc_order): New function.
6041         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
6043 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
6045         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
6046         nds32_print_operand, nds32_print_operand_address): Use
6047         HOST_WIDE_INT_PRINT_DEC instead.
6049 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6051         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
6053 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
6055         PR target/84902
6056         * config/i386/i386.c (initial_ix86_tune_features,
6057         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
6058         unsigned long long.
6059         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
6060         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
6061         rather than 1u << ix86_tune.  Formatting fix.
6062         (ix86_option_override_internal): Change ix86_arch_mask from
6063         unsigned int to unsigned HOST_WIDE_INT, initialize to
6064         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
6065         (ix86_function_specific_restore): Likewise.
6067 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6069         PR target/84899
6070         * postreload.c (reload_combine_recognize_pattern): Perform
6071         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
6072         truncate_int_for_mode the result for the destination's mode.
6074         PR c/84909
6075         * hsa-gen.c (mem_type_for_type): Fix comment typo.
6076         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
6077         Likewise.
6078         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6079         Likewise.
6081 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
6083         PR target/84876
6084         * lra-assigns.c (lra_split_hard_reg_for): Don't use
6085         regno_allocno_class_array and sorted_pseudos.
6086         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
6087         insns where regno is used.
6089 2018-03-16  Martin Liska  <mliska@suse.cz>
6091         PR ipa/84833
6092         * multiple_target.c (create_dispatcher_calls): Redirect
6093         reference in the symbol table.
6095 2018-03-16  Martin Liska  <mliska@suse.cz>
6097         PR ipa/84722
6098         * multiple_target.c (create_dispatcher_calls): Redirect also
6099         an alias.
6101 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6103         PR c++/79937
6104         PR c++/82410
6105         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
6106         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
6107         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
6109 2018-03-16  Julia Koval  <julia.koval@intel.com>
6111         * doc/invoke.texi (Skylake Server): Add CLWB.
6112         Cannonlake): Remove CLWB.
6114 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6116         PR tree-optimization/84841
6117         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
6118         1 << 3.
6119         (FLOAT_ONE_CONST_TYPE): Define.
6120         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
6121         (sort_by_operand_rank): Put entries with higher constant_type last
6122         rather than first to match comments.
6124 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
6126         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
6127         split predicate.
6129 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
6131         PR c++/79085
6132         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
6133         check and use address of target always.
6135 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
6137         PR target/84574
6138         * config/i386/i386.c (indirect_thunk_needed): Update comments.
6139         (indirect_thunk_bnd_needed): Likewise.
6140         (indirect_thunks_used): Likewise.
6141         (indirect_thunks_bnd_used): Likewise.
6142         (indirect_return_needed): New.
6143         (indirect_return_bnd_needed): Likewise.
6144         (output_indirect_thunk_function): Add a bool argument for
6145         function return.
6146         (output_indirect_thunk_function): Don't generate alias for
6147         function return thunk.
6148         (ix86_code_end): Call output_indirect_thunk_function to generate
6149         function return thunks.
6150         (ix86_output_function_return): Set indirect_return_bnd_needed
6151         and indirect_return_needed instead of indirect_thunk_bnd_needed
6152         and indirect_thunk_needed.
6154 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
6156         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
6157         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
6158         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
6160 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
6161             Paul Hua <paul.hua.gm@gmail.com>
6163         PR c/84852
6164         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
6166 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
6168         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
6169         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
6170         resp. SFmode cases.
6172 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
6174         PR target/84711
6175         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
6176         instead of GET_MODE_SIZE when comparing Units.
6178 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
6180         PR target/68256
6181         * varasm.c (hash_section): Return an unchangeble hash value
6182         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
6183         Return !aarch64_can_use_per_function_literal_pools_p ().
6185 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
6187         PR target/84860
6188         * optabs.c (emit_conditional_move): Pass address of cmode's copy
6189         rather than address of cmode as last argument to prepare_cmp_insn.
6191 2018-03-15  Julia Koval  <julia.koval@intel.com>
6193         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
6194         F_AVX512VNNI, F_AVX512BITALG): New.
6196 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
6198         PR target/83451
6199         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
6200         insn for floating-point loads and stores.
6202 2018-03-14  Carl Love  <cel@us.ibm.com>
6204         * config/rs6000/rs6000-c.c: Add macro definitions for
6205         ALTIVEC_BUILTIN_VEC_PERMXOR.
6206         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
6207         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
6208         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
6209         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
6210         UNSPEC_VPERMXOR.
6211         * config/doc/extend.texi: Add prototypes for vec_permxor.
6213 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
6215         PR c/84852
6216         * diagnostic-show-locus.c (class layout_point): Convert m_line
6217         from int to linenum_type.
6218         (line_span::comparator): Use linenum "compare" function when
6219         comparing line numbers.
6220         (test_line_span): New function.
6221         (layout_range::contains_point): Convert param "row" from int to
6222         linenum_type.
6223         (layout_range::intersects_line_p): Likewise.
6224         (layout::will_show_line_p): Likewise.
6225         (layout::print_source_line): Likewise.
6226         (layout::should_print_annotation_line_p): Likewise.
6227         (layout::print_annotation_line): Likewise.
6228         (layout::print_leading_fixits): Likewise.
6229         (layout::annotation_line_showed_range_p): Likewise.
6230         (struct line_corrections): Likewise for field m_row.
6231         (line_corrections::line_corrections): Likewise for param "row".
6232         (layout::print_trailing_fixits): Likewise.
6233         (layout::get_state_at_point): Likewise.
6234         (layout::get_x_bound_for_row): Likewise.
6235         (layout::print_line): Likewise.
6236         (diagnostic_show_locus): Likewise for locals "last_line" and
6237         "row".
6238         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
6239         * input.c (selftest::test_linenum_comparisons): New function.
6240         (selftest::input_c_tests): Call it.
6241         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
6242         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
6243         * selftest.h (ASSERT_GT): New macro.
6244         (ASSERT_GT_AT): New macro.
6245         (ASSERT_LT): New macro.
6246         (ASSERT_LT_AT): New macro.
6248 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
6250         PR rtl-optimization/84780
6251         * combine.c (distribute_links): Don't make a link based on pc_rtx.
6253 2018-03-14  Martin Liska  <mliska@suse.cz>
6255         * tree.c (record_node_allocation_statistics): Use
6256         get_stats_node_kind.
6257         (get_stats_node_kind): New function extracted from
6258         record_node_allocation_statistics.
6259         (free_node): Use get_stats_node_kind.
6261 2018-03-14  Richard Biener  <rguenther@suse.de>
6263         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
6264         that the value-set of ANTIC_IN doesn't grow.
6266         Revert
6267         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
6268         member.
6269         (BB_VISITED_WITH_VISITED_SUCCS): New define.
6270         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
6272 2018-03-14  Julia Koval  <julia.koval@intel.com>
6274         * config.gcc (icelake-client, icelake-server): New.
6275         (icelake): Remove.
6276         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
6277         (initial_ix86_arch_features): Ditto.
6278         (PTA_SKYLAKE): Add SGX.
6279         (PTA_ICELAKE): Remove.
6280         (PTA_ICELAKE_CLIENT): New.
6281         (PTA_ICELAKE_SERVER): New.
6282         (ix86_option_override_internal): Split up icelake on icelake client and
6283         icelake server.
6284         (get_builtin_code_for_version): Ditto.
6285         (fold_builtin_cpu): Ditto.
6286         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
6287         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
6288         * config/i386/i386.h (processor_type): Ditto.
6289         * doc/invoke.texi: Ditto.
6291 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
6293         PR sanitizer/83392
6294         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
6295         INTEGER_CST offset, add it together with bitpos / 8 and
6296         sign extend based on POINTER_SIZE.
6298         PR target/84844
6299         Revert
6300         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
6302         PR target/78090
6303         * config/i386/constraints.md (Yc): New register constraint.
6304         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
6305         Use Yc constraint for alternative 2 of operand 0.  Remove
6306         preferred_for_speed attribute.
6308 2018-03-14  Richard Biener  <rguenther@suse.de>
6310         PR tree-optimization/84830
6311         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
6312         with the old one to avoid oscillations.
6314 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
6316         PR target/83712
6317         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
6318         pseudos.
6319         (assign_by_spills): Return a flag of reload assignment failure.
6320         Do not process the reload assignment failures.  Do not spill other
6321         reload pseudos if they has the same reg class.  Update n if
6322         necessary.
6323         (lra_assign): Add a return arg.  Set up from the result of
6324         assign_by_spills call.
6325         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6326         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6327         usage_insns if it is not NULL.
6328         (spill_hard_reg_in_range): New function.
6329         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6330         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6331         function prototypes.
6332         (lra_assign): Change prototype.
6333         * lra.c (lra): Add code to deal with fails by splitting hard reg
6334         live ranges.
6336 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
6338         * config/riscv/riscv.opt (mrelax): New option.
6339         * config/riscv/riscv.c (riscv_file_start): Emit ".option
6340         "norelax" when riscv_mrelax is disabled.
6341         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
6343 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
6345         PR target/84743
6346         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
6347         reassociation for int modes.
6349 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6351         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
6352         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
6353         for big-endian.
6354         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
6355         * config/aarch64/aarch64-sve.md
6356         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
6357         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
6358         (*extend<mode><Vwide>2): Rename to...
6359         (aarch64_sve_extend<mode><Vwide>2): ...this.
6360         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
6361         renaming the old pattern to...
6362         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
6363         unsigned packs.
6364         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
6365         define_expand, renaming the old pattern to...
6366         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
6367         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
6368         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
6369         account when deciding which SVE instruction the optab should use.
6370         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
6372 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6374         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
6375         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
6376         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
6377         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
6378         (tlsdesc_small_<mode>): Turn a define_expand and use
6379         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
6380         (tlsdesc_small_advsimd_<mode>): ...this.
6381         (tlsdesc_small_sve_<mode>): New pattern.
6383 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6385         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
6386         (UNSPEC_UMUL_HIGHPART): New constants.
6387         (MUL_HIGHPART): New int iteraor.
6388         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
6389         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
6390         define_expand.
6391         (*<su>mul<mode>3_highpart): New define_insn.
6393 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
6395         PR lto/84805
6396         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
6397         incomplete types.
6399 2018-03-13  Martin Liska  <mliska@suse.cz>
6401         PR ipa/84658.
6402         * (sem_item_optimizer::sem_item_optimizer): Initialize new
6403         vector.
6404         (sem_item_optimizer::~sem_item_optimizer): Release it.
6405         (sem_item_optimizer::merge_classes): Register variable aliases.
6406         (sem_item_optimizer::fixup_pt_set): New function.
6407         (sem_item_optimizer::fixup_points_to_sets): Likewise.
6408         * ipa-icf.h: Declare new variables and functions.
6410 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
6412         PR middle-end/84834
6413         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
6414         integer_pow2p@2 and test integer_pow2p in condition.
6415         (A < 0 ? C : 0): Similarly for @1.
6417         PR middle-end/84831
6418         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
6419         characters starting at p contain '\0' character, don't look beyond
6420         that.
6422         PR target/84827
6423         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
6424         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
6426         PR target/84828
6427         * reg-stack.c (change_stack): Change update_end var from int to
6428         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
6429         also call set_block_for_insn on the newly added insns and rescan.
6431         PR target/84786
6432         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
6433         on the last operand.
6435         PR c++/84704
6436         * tree.c (stabilize_reference_1): Return save_expr (e) for
6437         STATEMENT_LIST even if it doesn't have side-effects.
6439 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
6441         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
6443 2018-03-12  Renlin Li  <renlin.li@arm.com>
6445         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
6446         aarch64_output_scalar_simd_mov_immediate.
6448 2018-03-12  Martin Sebor  <msebor@redhat.com>
6450         PR tree-optimization/83456
6451         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
6452         for perfectly overlapping calls to memcpy.
6453         (gimple_fold_builtin_memory_chk): Same.
6454         (gimple_fold_builtin_strcpy): Handle no-warning.
6455         (gimple_fold_builtin_stxcpy_chk): Same.
6456         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
6458 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6460         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
6461         parameter.  Use it for SFmode.
6462         (rs6000_function_arg_advance_1): Adjust.
6463         (rs6000_function_arg): Adjust.
6464         (rs6000_gimplify_va_arg): Pass false for that new parameter.
6466 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6468         PR rtl-optimization/84169
6469         PR rtl-optimization/84780
6470         * combine.c (can_combine_p): Check for a 2-insn combination whether
6471         the destination register is used between the two insns, too.
6473 2018-03-12  Richard Biener  <rguenther@suse.de>
6475         PR tree-optimization/84803
6476         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
6477         for refs DR analysis didn't process.
6479 2018-03-12  Richard Biener  <rguenther@suse.de>
6481         PR tree-optimization/84777
6482         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
6483         force-vectorize loops ignore whether we are optimizing for size.
6485 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
6487         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
6488         (TARGET_MD_ASM_ADJUST): Define.
6490 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
6491             Kito Cheng  <kito.cheng@gmail.com>
6492             Chung-Ju Wu  <jasonwucj@gmail.com>
6494         * config/nds32/nds32.c (nds32_compute_stack_frame,
6495         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
6496         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
6497         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
6498         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
6499         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
6500         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
6501         * config/nds32/nds32.md (prologue, epilogue): Use macro
6502         NDS32_V3PUSH_AVAILABLE_P to do checking.
6504 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
6506         PR debug/58150
6507         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
6508         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
6509         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
6510         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
6511         addition of most attributes on !orig_type_die or the attribute not
6512         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
6514 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6515             Chung-Ju Wu  <jasonwucj@gmail.com>
6517         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
6518         __NDS32_VH__ macro.
6519         * config/nds32/nds32.opt (mvh): New option.
6521 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6522             Chung-Ju Wu  <jasonwucj@gmail.com>
6524         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
6525         function.
6526         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
6527         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
6528         definition.
6530 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6531             Chung-Ju Wu  <jasonwucj@gmail.com>
6533         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
6534         function.
6535         * config/nds32/nds32-multiple.md (strlensi): New pattern.
6536         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
6538 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
6539             Kito Cheng  <kito.cheng@gmail.com>
6540             Chung-Ju Wu  <jasonwucj@gmail.com>
6542         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
6543         UNSPEC_FFMISM and UNSPEC_FLMISM.
6544         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
6545         for ffb, ffmism and flmism.
6546         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
6547         (unspec_ffmism): Ditto.
6548         (unspec_flmism): Ditto.
6549         (nds32_expand_builtin_impl): Check if string extension is available.
6550         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
6551         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
6553 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
6555         Reverting patch:
6556         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6558         PR target/83712
6559         * lra-assigns.c (assign_by_spills): Return a flag of reload
6560         assignment failure.  Do not process the reload assignment
6561         failures.  Do not spill other reload pseudos if they has the same
6562         reg class.
6563         (lra_assign): Add a return arg.  Set up from the result of
6564         assign_by_spills call.
6565         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6566         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6567         usage_insns if it is not NULL.
6568         (spill_hard_reg_in_range): New function.
6569         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6570         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6571         function prototypes.
6572         (lra_assign): Change prototype.
6573         * lra.c (lra): Add code to deal with fails by splitting hard reg
6574         live ranges.
6576 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
6578         PR target/84807
6579         * config/i386/i386.opt: Replace Enforcment with Enforcement.
6581 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
6583         PR debug/84620
6584         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
6585         (dw_val_node): Add val_symbolic_view.
6586         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
6587         (symview_upper_bound): New.
6588         (new_line_info_table): Initialize symviews_since_reset.
6589         (dwarf2out_source_line): Count symviews_since_reset and set
6590         symview_upper_bound.
6591         (dw_val_equal_p): Handle symview.
6592         (add_AT_symview): New.
6593         (print_dw_val): Handle symview.
6594         (attr_checksum, attr_checksum_ordered): Likewise.
6595         (same_dw_val_p, size_of_die): Likewise.
6596         (value_format, output_die): Likewise.
6597         (add_high_low_attributes): Use add_AT_symview for entry_view.
6598         (dwarf2out_finish): Reset symview_upper_bound, clear
6599         zero_view_p.
6601 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
6603         PR target/83969
6604         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
6605         Add strict argument and use it.
6606         (rs6000_split_multireg_move): Update for new strict argument.
6607         (mem_operand_gpr): Disallow all non-offsettable addresses.
6608         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
6610 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
6612         PR target/84772
6613         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
6614         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
6615         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
6617         PR c++/84767
6618         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
6619         decl, use remap_type if we want to use the type.
6621 2018-03-09  Martin Sebor  <msebor@redhat.com>
6623         PR tree-optimization/84526
6624         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6625         Remove dead code.
6626         (builtin_access::generic_overlap): Be prepared to handle non-array
6627         base objects.
6629 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
6631         PR rtl-optimization/84682
6632         * lra-constraints.c (process_address_1): Check is_address flag
6633         for address constraints.
6634         (process_alt_operands): Likewise.
6635         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
6636         preprocess_constraints.
6637         * recog.h (preprocess_constraints): Add oploc parameter.
6638         Adjust callers.
6639         * recog.c (preprocess_constraints): Test address_operand for
6640         CT_ADDRESS constraints.
6642 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6644         PR target/83712
6645         * lra-assigns.c (assign_by_spills): Return a flag of reload
6646         assignment failure.  Do not process the reload assignment
6647         failures.  Do not spill other reload pseudos if they has the same
6648         reg class.
6649         (lra_assign): Add a return arg.  Set up from the result of
6650         assign_by_spills call.
6651         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6652         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6653         usage_insns if it is not NULL.
6654         (spill_hard_reg_in_range): New function.
6655         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6656         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6657         function prototypes.
6658         (lra_assign): Change prototype.
6659         * lra.c (lra): Add code to deal with fails by splitting hard reg
6660         live ranges.
6662 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6664         PR target/83193
6665         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
6666         Accept complain bool parameter.  Only emit errors if it is true.
6667         (arm_parse_cpu_option_name): Likewise.
6668         (arm_target_thumb_only): Adjust callers of the above.
6669         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
6670         prototype to take a default true bool parameter.
6671         (arm_parse_arch_option_name): Likewise.
6673 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
6674             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6676         PR jit/64089
6677         PR jit/84288
6678         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
6679         * configure: Regenerate.
6680         * configure.ac ("linker --version-script option"): New.
6681         ("linker soname option"): New.
6683 2018-03-09  Richard Biener  <rguenther@suse.de>
6685         PR tree-optimization/84775
6686         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
6687         immediate uses of predicate stmts and mark them modified.
6689         Revert
6690         PR tree-optimization/84178
6691         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6692         to caller.
6693         (version_loop_for_if_conversion): Delay update_ssa call.
6694         (tree_if_conversion): Delay update_ssa until after predicate
6695         insertion.
6697 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
6699         PR target/84763
6700         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
6701         when the function accesses prior frames.
6703 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6705         PR debug/84456
6706         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
6707         gen_llsym, otherwise call maybe_gen_llsym.
6709         PR inline-asm/84742
6710         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
6711         has ',' character inside of it.
6713 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6715         PR target/84748
6716         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
6717         as clobbering CC_REGNUM.
6719 2018-03-08  Richard Biener  <rguenther@suse.de>
6721         PR middle-end/84552
6722         * tree-scalar-evolution.c: Include tree-into-ssa.h.
6723         (follow_copies_to_constant): Do not follow SSA names registered
6724         for update.
6726 2018-03-08  Richard Biener  <rguenther@suse.de>
6728         PR tree-optimization/84178
6729         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6730         to caller.
6731         (version_loop_for_if_conversion): Delay update_ssa call.
6732         (tree_if_conversion): Delay update_ssa until after predicate
6733         insertion.
6735 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
6737         PR tree-optimization/84178
6738         * tree-if-conv.c (release_bb_predicate): Remove the
6739         the assertion that the stmts have NULL use_ops.
6740         Discard the statements, asserting that they haven't
6741         yet been added to a BB.
6743 2018-03-08  Richard Biener  <rguenther@suse.de>
6745         PR tree-optimization/84746
6746         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
6747         (phi_translate): Pass in destination ANTIC_OUT set.
6748         (phi_translate_1): Likewise.  For a simplified result lookup
6749         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
6750         (phi_translate_set): Adjust.
6751         (do_pre_regular_insertion): Likewise.
6752         (do_pre_partial_partial_insertion): Likewise.
6754 2018-03-08  Martin Liska  <mliska@suse.cz>
6756         PR gcov-profile/84735
6757         * doc/gcov.texi: Document usage of profile files.
6758         * gcov-io.h: Document changes in the format.
6760 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
6762         PR debug/84404
6763         PR debug/84408
6764         * dwarf2out.c (struct dw_line_info_table): Update comments for
6765         view == -1.
6766         (FORCE_RESET_NEXT_VIEW): New.
6767         (FORCE_RESETTING_VIEW_P): New.
6768         (RESETTING_VIEW_P): Check for -1 too.
6769         (ZERO_VIEW_P): Likewise.
6770         (new_line_info_table): Force-reset next view.
6771         (dwarf2out_begin_function): Likewise.
6772         (dwarf2out_source_line): Simplify zero_view_p initialization.
6773         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
6774         view directly.  Omit view when omitting .loc at line 0.
6776 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6778         PR tree-optimization/84740
6779         * tree-switch-conversion.c (process_switch): Call build_constructors
6780         only if info.phi_count is non-zero.
6782         PR tree-optimization/84739
6783         * tree-tailcall.c (find_tail_calls): Check call arguments against
6784         DECL_ARGUMENTS (current_function_decl) rather than
6785         DECL_ARGUMENTS (func) when checking for tail recursion.
6787 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6789         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
6790         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
6791         Volker Reichelt's entry and add entries for people that perform
6792         GCC fuzzy testing and report numerous bugs.
6794 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
6796         PR target/82411
6797         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
6798         readonly data in sdata, if that is disabled.
6799         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
6800         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
6801         -mreadonly-in-sdata option.
6803 2018-03-07  Martin Sebor  <msebor@redhat.com>
6805         PR tree-optimization/84468
6806         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
6807         basic block when looking for nul assignment.
6809 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
6811         PR target/84277
6812         * except.h (output_function_exception_table): Adjust prototype.
6813         * except.c (output_function_exception_table): Remove FNNAME parameter
6814         and add SECTION parameter.  Ouput one part of the table at a time.
6815         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
6816         the first part of the exception table and emit unwind directives.
6817         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
6818         (i386_pe_seh_cold_init): Likewise.
6819         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
6820         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
6821         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
6822         (ix86_output_call_insn): Emit a nop in one more case for SEH.
6823         * config/i386/winnt.c: Include except.h.
6824         (struct seh_frame_state): Add reg_offset, after_prologue and
6825         in_cold_section fields.
6826         (i386_pe_seh_end_prologue): Set seh->after_prologue.
6827         (i386_pe_seh_cold_init): New function.
6828         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
6829         to seh->in_cold_section.
6830         (seh_emit_push): Record the offset of the push.
6831         (seh_emit_save): Record the offet of the save.
6832         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
6833         Test seh->after_prologue to disregard the epilogue.
6834         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
6835         (i386_pe_end_cold_function): New function.
6837 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6839         PR fortran/84565
6840         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
6841         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
6843         PR c++/84704
6844         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
6845         on tmp_var.
6846         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
6847         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
6849         PR middle-end/84723
6850         * multiple_target.c: Include tree-inline.h and intl.h.
6851         (expand_target_clones): Diagnose and fail if node->definition and
6852         !tree_versionable_function_p (node->decl).
6854 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
6856         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
6857         sprint_ul.
6858         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
6859         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
6860         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
6862 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
6864         PR target/84710
6865         * combine.c (try_combine): Use reg_or_subregno instead of handling
6866         just paradoxical SUBREGs and REGs.
6868 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
6870          * config/arc/arc.c (arc_finalize_pic): Remove function.
6871          (arc_must_save_register): We use single base PIC register, remove
6872          checks to save/restore the PIC register.
6873          (arc_expand_prologue): Likewise.
6874          * config/arc/arc-protos.h (arc_set_default_type_attributes):
6875          Remove.
6876          (arc_verify_short): Likewise.
6877          (arc_attr_type): Likewise.
6878          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
6879          (walk_stores): Likewise.
6880          (arc_address_cost): Make it static.
6881          (arc_verify_short): Likewise.
6882          (branch_dest): Likewise.
6883          (arc_attr_type): Likewise.
6884          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
6885          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
6886          (arc_final_prescan_insn): Remove inserting the nops due to
6887          hardware hazards.  It is done in reorg step.
6888          (insn_length_variant_t): Remove.
6889          (insn_length_parameters_t): Likewise.
6890          (arc_insn_length_parameters): Likewise.
6891          (arc_get_insn_variants): Likewise.
6892          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
6894 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
6896         PR inline-asm/84683
6897         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
6898         assertion failure.
6900         PR tree-optimization/84687
6901         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
6902         on new_node->decl.
6903         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
6905 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6907         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
6908         Rename to ppc_speculation_barrier.
6909         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
6910         __builtin_ppc_speculation_barrier.
6912 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
6914         PR target/84700
6915         * combine.c (combine_simplify_rtx): Don't try to simplify if
6916         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
6917         are equal to x.
6919 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
6921         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
6922         to 32 bytes when compiling for POWER9.
6924 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
6926         PR target/84564
6927         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
6928         regparm >= 3 with no arg reg available also for calls with
6929         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
6931         PR target/84524
6932         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
6933         orig,vex.
6934         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
6936 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
6938         PR target/84264
6939         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
6941 2018-03-05  Richard Biener  <rguenther@suse.de>
6943         PR tree-optimization/84486
6944         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
6945         When inserting a __builtin_assume_aligned call set the LHS
6946         SSA name alignment info accordingly.
6948 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
6950         PR tree-optimization/84114
6951         * config/aarch64/aarch64.c (aarch64_reassociation_width)
6952         Avoid reassociation of FLOAT_MODE addition.
6954 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
6956         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
6957         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
6958         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
6959         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
6960         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
6961         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
6962         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
6963         and -mwbnoinvd.
6964         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
6965         __builtin_ia32_wbinvd): New builtins.
6966         (SPECIAL_ARGS2): New.
6967         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
6968         (SPECIAL_ARGS2): New.
6969         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
6970         (ix86_valid_target_attribute_inner_p): Ditto.
6971         (ix86_init_mmx_sse_builtins): Add special_args2.
6972         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
6973         TARGET_WBNOINVD_P): New.
6974         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
6975         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
6976         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
6977         * config/i386/immintrin.h (_wbinvd): New intrinsic.
6978         * config/i386/pconfigintrin.h: New file.
6979         * config/i386/wbnoinvdintrin.h: Ditto.
6980         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
6981         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
6983 2018-03-05  Richard Biener  <rguenther@suse.de>
6985         PR tree-optimization/84670
6986         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
6987         member.
6988         (BB_VISITED_WITH_VISITED_SUCCS): New define.
6989         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
6990         (compute_antic_aux): Only assert the number of values in ANTIC_IN
6991         doesn't grow if all successors (recursively) were visited at least
6992         once.
6994 2018-03-05  Richard Biener  <rguenther@suse.de>
6996         PR tree-optimization/84650
6997         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
6998         if executed in the loop pipeline.
7000 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
7002         * doc/configfiles.texi (Configuration Files): Move info about
7003         conditionalizing $target-protos.h to...
7004         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
7005         differs from $target-protos.h.
7007 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
7008             Chung-Ju Wu  <jasonwucj@gmail.com>
7010         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
7011         * config/nds32/nds32-multiple.md (setmemsi): Define.
7012         * config/nds32/nds32-memory-manipulation.c
7013         (nds32_gen_dup_4_byte_to_word_value): New.
7014         (emit_setmem_word_loop): New.
7015         (emit_setmem_byte_loop): New.
7016         (nds32_expand_setmem_loop): New.
7017         (nds32_expand_setmem_loop_v3m): New.
7018         (nds32_expand_setmem_unroll): New.
7019         (nds32_expand_setmem): New.
7021 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7022             Chung-Ju Wu  <jasonwucj@gmail.com>
7024         * config/nds32/nds32-memory-manipulation.c
7025         (nds32_emit_load_store): New.
7026         (nds32_emit_post_inc_load_store): New.
7027         (nds32_emit_mem_move): New.
7028         (nds32_emit_mem_move_block): New.
7029         (nds32_expand_movmemsi_loop_unknown_size): New.
7030         (nds32_expand_movmemsi_loop_known_size): New.
7031         (nds32_expand_movmemsi_loop): New.
7032         (nds32_expand_movmemsi_unroll): New.
7033         (nds32_expand_movmemqi): Rename ...
7034         (nds32_expand_movmemsi): ... to this.
7035         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
7036         (movmemsi): ... to this.
7037         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
7038         (nds32_expand_movmemsi): ... to this.
7040 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7041             Monk Chiang  <sh.chiang04@gmail.com>
7042             Chung-Ju Wu  <jasonwucj@gmail.com>
7044         * config/nds32/nds32-protos.h
7045         (nds32_expand_load_multiple): New arguments.
7046         (nds32_expand_store_multiple): Ditto.
7047         (nds32_valid_multiple_load_store): Rename ...
7048         (nds32_valid_multiple_load_store_p): ... to this.
7049         * config/nds32/nds32-memory-manipulation.c
7050         (nds32_expand_load_multiple): Refine implementation.
7051         (nds32_expand_store_multiple): Ditto.
7052         * config/nds32/nds32-multiple.md
7053         (load_multiple): Update nds32_expand_load_multiple interface.
7054         (store_multiple): Update nds32_expand_store_multiple interface.
7055         * config/nds32/nds32-predicates.c
7056         (nds32_valid_multiple_load_store): Rename ...
7057         (nds32_valid_multiple_load_store_p): ... to this and refine
7058         implementation.
7059         * config/nds32/predicates.md
7060         (nds32_load_multiple_and_update_address_operation): New predicate.
7061         (nds32_store_multiple_and_update_address_operation): New predicate.
7063 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7064             Chung-Ju Wu  <jasonwucj@gmail.com>
7066         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
7067         (combo): New attribute.
7068         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
7070 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
7072         * config/nds32/nds32.opt: Change -mcmodel= default value.
7074 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
7075             Monk Chiang  <sh.chiang04@gmail.com>
7076             Chung-Ju Wu  <jasonwucj@gmail.com>
7078         * config/nds32/constants.md (unspec_element): New enum.
7079         * config/nds32/constraints.md (Umw): New constraint.
7080         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
7081         * config/nds32/nds32-intrinsic.md: Likewise.
7082         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
7083         (nds32_valid_smw_lwm_base_p): New.
7084         (nds32_output_smw_single_word): New.
7085         (nds32_output_lmw_single_word): New.
7086         (nds32_expand_unaligned_load): New.
7087         (nds32_expand_unaligned_store): New.
7088         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
7089         (nds32_output_smw_single_word): Declare.
7090         (nds32_output_lmw_single_word): Declare.
7091         (nds32_expand_unaligned_load): Declare.
7092         (nds32_expand_unaligned_store): Declare.
7093         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
7094         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
7095         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
7096         NDS32_BUILTIN_UASTORE_DW.
7097         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
7098         predicate.
7100 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
7101             Kito Cheng  <kito.cheng@gmail.com>
7102             Chung-Ju Wu  <jasonwucj@gmail.com>
7104         * config/nds32/nds32-intrinsic.c
7105         (nds32_expand_builtin_null_ftype_reg): Delete.
7106         (nds32_expand_builtin_reg_ftype_imm): Ditto.
7107         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
7108         (nds32_read_argument): New.
7109         (nds32_legitimize_target): Ditto.
7110         (nds32_legitimize_argument): Ditto.
7111         (nds32_check_constant_argument): Ditto.
7112         (nds32_expand_unop_builtin): Ditto.
7113         (nds32_expand_unopimm_builtin): Ditto.
7114         (nds32_expand_binop_builtin): Ditto.
7115         (nds32_builtin_decl_impl): Ditto.
7116         (builtin_description): Ditto.
7117         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
7118         (nds32_init_builtins_impl): Ditto.
7119         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
7120         (nds32_builtin_decl): New.
7121         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
7122         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
7124 2018-03-02  Jeff Law  <law@redhat.com>
7126         * reorg.c (stop_search_p): Handle DEBUG_INSN.
7127         (redundant_insn, fill_simple_delay_slots): Likewise.
7128         (fill_slots_from_thread): Likewise.
7129         * resource.c (mark_referenced_resources): Likewise.
7130         (mark_set_resources, find_dead_or_set_registers): Likewise.
7132 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7134         * substring-locations.h (format_warning_va): Formatting fix for
7135         ATTRIBUTE_GCC_DIAG.
7136         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
7137         argument.
7138         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
7139         * substring-locations.c: Include intl.h.
7140         (format_warning_va): Turned into small wrapper around
7141         format_warning_n_va, renamed to ...
7142         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
7143         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
7144         use ngettext.
7145         (format_warning_at_substring_n): New function.
7146         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
7147         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
7148         format_warning_at_substring with just a shorter name instead of
7149         const function pointer.
7150         (fmtwarn_n): New function.
7151         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
7152         appropriate, get rid of all the fmtstr temporaries, move conditionals
7153         with G_() wrapped string literals directly into fmtwarn arguments,
7154         cast dir.len to (int), formatting fixes.
7156 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
7158         * doc/invoke.texi: Remove "Cilk Plus" references.
7160 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7161             Richard Biener  <rguenther@suse.de>
7163         PR ipa/84628
7164         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
7165         for error or warning attributes if CALL_FROM_THUNK_P is set.
7166         Formatting fixes.
7168 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7170         PR target/56540
7171         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
7172         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
7174         PR target/56540
7175         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
7176         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
7178         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
7179         instead of -1U in last predictors element's probability member.
7181 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
7183         PR ipa/83983
7184         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
7185         arguments if they are comparable.
7187 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
7189         PR tree-optimization/84634
7190         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
7191         masks and masked_loop_p with a single loop_masks, making sure it's
7192         null for bb vectorization.
7194 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
7196         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
7197         (vect_analyze_data_ref_access): Use loop->safe_len rather than
7198         loop->force_vectorize to check whether there is no alias.
7200 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7202         PR target/84614
7203         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
7204         prototypes.
7205         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
7206         comments.
7207         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
7208         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
7209         instead of a loop around prev_real_insn.
7210         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
7211         prev_real_insn.
7213         PR inline-asm/84625
7214         * config/i386/i386.c (ix86_print_operand): Use conditional
7215         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
7216         zero vector.
7218 2018-03-02  Richard Biener  <rguenther@suse.de>
7220         PR tree-optimization/84427
7221         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
7222         (bitmap_set_subtract_values): Rewrite to handle multiple
7223         exprs per value.
7224         (clean): Likewise.
7225         (prune_clobbered_mems): Likewise.
7226         (phi_translate): Take edge instead of pred/phiblock.
7227         (phi_translate_1): Likewise.
7228         (phi_translate_set): Likewise.  Insert all translated
7229         exprs for a value into the set, keeping possibly multiple
7230         expressions per value.
7231         (compute_antic_aux): Adjust for phi_translate changes.
7232         When intersecting union the expressions and prune those
7233         not in the final value set, keeping possibly multiple
7234         expressions per value.  Do not use value-insertion
7235         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
7236         all expressions.  Add verification that the value-sets
7237         only shrink during iteration.
7238         (compute_partial_antic_aux): Adjust for the phi_translate changes.
7239         (do_pre_regular_insertion): Likewise.
7240         (do_pre_partial_partial_insertion): Likewise.
7242 2018-03-02  Richard Biener  <rguenther@suse.de>
7244         PR target/82005
7245         * config/darwin.c (saved_debug_info_level): New static global.
7246         (darwin_asm_lto_start): Disable debug info generation for LTO out.
7247         (darwin_asm_lto_end): Restore debug info generation settings.
7249 2018-03-01  Martin Liska  <mliska@suse.cz>
7251         PR sanitizer/82484
7252         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
7253         volatile arguments.
7255 2018-03-01  Richard Biener  <rguenther@suse.de>
7257         PR debug/84645
7258         * dwarf2out.c (gen_variable_die): Properly handle late VLA
7259         type annotation with LTO when debug was disabled at compile-time.
7261 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
7263         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
7264         XINT with INTVAL.
7265         (mips_final_postscan_insn): Likewise.
7267 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
7269         PR rtl-optimization/84528
7270         * alias.c (init_alias_target): Add commentary.
7271         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
7272         a unique base value if the frame pointer is not eliminated
7273         to the stack pointer.
7275 2018-03-01  Tom de Vries  <tom@codesourcery.com>
7277         PR rtl-optimization/83327
7278         * lra-int.h (hard_regs_spilled_into): Declare.
7279         * lra.c (hard_regs_spilled_into): Define.
7280         (init_reg_info): Init hard_regs_spilled_into.
7281         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
7282         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
7283         (process_bb_lives): Handle hard_regs_spilled_into.
7284         (lra_create_live_ranges_1): Before doing liveness propagation, clear
7285         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
7287 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
7289         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
7290         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
7291         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
7292         * config/rs6000/aix72.h: New file.
7294 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
7296         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
7297         instead of warning_at with conditional singular and plural messages
7298         where possible.
7300         PR target/52991
7301         * stor-layout.c (update_alignment_for_field): For
7302         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
7303         && !DECL_PACKED (field), do the alignment update, just use
7304         only desired_align instead of MAX (type_align, desired_align)
7305         as the alignment.
7306         (place_field): Don't do known_align < desired_align handling
7307         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
7308         is non-NULL, instead do it after rli->prev_field handling and
7309         only if not within a bitfield word.  For DECL_PACKED (field)
7310         use type_align of BITS_PER_UNIT.
7312 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
7314         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
7315         superfluous parentheses and trailing spaces.
7317 2018-02-28  Richard Biener  <rguenther@suse.de>
7319         PR tree-optimization/84584
7320         * graphite-scop-detection.c (scop_detection::add_scop): Discard
7321         SCoPs with fake exit edge.
7323 2018-02-28  Martin Liska  <mliska@suse.cz>
7325         PR testsuite/84597
7326         * timevar.c (timer::print): Fix format to properly print 100%
7327         values.
7329 2018-02-28  Richard Biener  <rguenther@suse.de>
7331         PR middle-end/84607
7332         * genmatch.c (capture_info::walk_match): Do not mark
7333         captured expressions without operands as expr_p given
7334         they act more like predicates and should be subject to
7335         "lost tail" side-effect preserving.
7337 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
7339         PR rtl-optimization/81611
7340         * auto-inc-dec.c (attempt_change): Move dead note from
7341         mem_insn if it's the next use of regno
7342         (find_address): Take address use of reg holding
7343         non-incremented value.  Add parm to limit search to the named
7344         reg only.
7345         (merge_in_block): Attempt to use a mem insn that is the next
7346         use of the original regno.
7348 2018-02-27  Martin Sebor  <msebor@redhat.com>
7350         PR c++/83871
7351         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
7352         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
7354 2018-02-27  Martin Sebor  <msebor@redhat.com>
7356         PR translation/84207
7357         * diagnostic-core.h (warning_n, error_n, inform_n): Change
7358         n argument to unsigned HOST_WIDE_INT.
7359         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
7360         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
7361         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
7362         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
7364 2018-02-27  Richard Biener  <rguenther@suse.de>
7366         PR tree-optimization/84512
7367         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
7368         Do not use the estimate returned from record_stmt_cost for
7369         the scalar iteration cost but sum properly using add_stmt_cost.
7371 2018-02-27  Richard Biener  <rguenther@suse.de>
7373         PR tree-optimization/84466
7374         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
7375         Adjust last change to less strictly validate use operands.
7377 2018-02-27  Martin Liska  <mliska@suse.cz>
7379         PR gcov-profile/84548
7380         * gcov.c (process_file): Allow partial overlap and consider it
7381         also as group functions.
7382         (output_lines): Properly calculate range of lines for a group.
7384 2018-02-27  Martin Liska  <mliska@suse.cz>
7386         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
7387         'ggc' suffixes.  Change first column width.
7388         (timer::print): Fix formatting of the column.
7390 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
7392         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
7393         preserve inline entry blocks for the sake of debug inline
7394         entry point markers alone.
7395         (remove_unused_locals): Suggest in comments a better place to
7396         force the preservation of inline entry blocks that are
7397         otherwise unused, but do not preserve them.
7399 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7401         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
7403 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7405         PR target/84039
7406         * config/i386/constraints.md (Bs): Replace
7407         ix86_indirect_branch_register with
7408         TARGET_INDIRECT_BRANCH_REGISTER.
7409         (Bw): Likewise.
7410         * config/i386/i386.md (indirect_jump): Likewise.
7411         (tablejump): Likewise.
7412         (*sibcall_memory): Likewise.
7413         (*sibcall_value_memory): Likewise.
7414         Peepholes of indirect call and jump via memory: Likewise.
7415         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
7416         (*sibcall_value_GOT_32): Likewise.
7417         * config/i386/predicates.md (indirect_branch_operand): Likewise.
7418         (GOT_memory_operand): Likewise.
7419         (call_insn_operand): Likewise.
7420         (sibcall_insn_operand): Likewise.
7421         (GOT32_symbol_operand): Likewise.
7422         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
7424 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7426         PR rtl-optimization/83496
7427         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
7428         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
7429         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
7430         redundant insn, if any.
7431         (relax_delay_slots): Likewise.
7432         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
7434 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
7436         PR tree-optimization/83965
7437         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
7438         that grouped statements are part of a reduction chain.  Return
7439         true if the statement is not marked as a reduction itself but
7440         is part of a group.
7441         (vect_recog_dot_prod_pattern): Don't check whether the statement
7442         is part of a group here.
7443         (vect_recog_sad_pattern): Likewise.
7444         (vect_recog_widen_sum_pattern): Likewise.
7446 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7448         PR debug/84545
7449         * final.c (rest_of_clean_state): Also look for calls inside sequences.
7451 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7453         PR target/84530
7454         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
7455         the bool argument.
7456         (ix86_output_indirect_function_return): New prototype.
7457         (ix86_split_simple_return_pop_internal): Likewise.
7458         * config/i386/i386.c (indirect_return_via_cx): New.
7459         (indirect_return_via_cx_bnd): Likewise.
7460         (indirect_thunk_name): Handle return va CX_REG.
7461         (output_indirect_thunk_function): Create alias for
7462         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
7463         (ix86_output_indirect_jmp): Remove the bool argument.
7464         (ix86_output_indirect_function_return): New function.
7465         (ix86_split_simple_return_pop_internal): Likewise.
7466         * config/i386/i386.md (*indirect_jump): Don't pass false
7467         to ix86_output_indirect_jmp.
7468         (*tablejump_1): Likewise.
7469         (simple_return_pop_internal): Change it to define_insn_and_split.
7470         Call ix86_split_simple_return_pop_internal to split it for
7471         -mfunction-return=.
7472         (simple_return_indirect_internal): Call
7473         ix86_output_indirect_function_return instead of
7474         ix86_output_indirect_jmp.
7476 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
7478         PR bootstrap/84405
7479         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
7480         memset and value initialization afterwards.
7482 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
7484         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
7486 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7488         PR target/84521
7489         * common/config/aarch64/aarch64-common.c
7490         (aarch_option_optimization_table[]): Switch
7491         off fomit-frame-pointer
7493 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7494             Chung-Ju Wu  <jasonwucj@gmail.com>
7496         * config/nds32/nds32-multiple.md (load_multiple): Disallow
7497         volatile memory.
7498         (store_multiple): Ditto.
7500 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7502         * config.gcc: Add --with-cpu support for nds32 target.
7503         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
7504         * config/nds32/nds32.opt: Add -mcpu= option.
7506 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
7508         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
7509         isel=yes): Warn for these deprecated options.
7511 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
7513         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
7514         ISA_2_5_MASKS_EMBEDDED.
7516 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
7518         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
7519         p->max as pointers rather than using iterative_hash_expr.
7521 2018-02-23  Carl Love  <cel@us.ibm.com>
7523         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
7524         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
7525         BU_P8V_OVERLOAD_2.
7526         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
7527         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
7528         P8V_BUILTIN_VEC_VUNSIGNED2.
7530 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
7532         PR target/81572
7533         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
7534         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
7535         LRA_UNKNOWN_ALT.
7536         * lra-constraints.c (curr_insn_transform): Set up
7537         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
7538         LRA_UNKNOWN_ALT.
7539         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
7540         * lra-eliminations.c (spill_pseudos): Ditto.
7541         (process_insn_for_elimination): Ditto.
7542         * lra-lives.c (reg_early_clobber_p): Use the new macros.
7543         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
7544         LRA_NON_CLOBBERED_ALT.
7546 2018-02-22  Martin Sebor  <msebor@redhat.com>
7548         PR tree-optimization/84480
7549         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
7550         to maybe_diag_stxncpy_trunc.  Call it.
7551         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
7552         from gimple_fold_builtin_strcpy.  Print inlining stack.
7553         (handle_builtin_stxncpy): Print inlining stack.
7554         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
7556 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
7558         PR target/84176
7559         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
7560         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
7561         and -fcheck-pointer-bounds are used together.
7562         (indirect_thunk_prefix): New enum.
7563         (indirect_thunk_need_prefix): New function.
7564         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
7565         "_nt" instead of "_bnd" for NOTRACK prefix.
7566         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
7567         (output_indirect_thunk_function): Likewise.
7568         (): Likewise.
7569         (ix86_code_end): Update output_indirect_thunk_function calls.
7570         (ix86_output_indirect_branch_via_reg): Replace
7571         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
7572         (ix86_output_indirect_branch_via_push): Likewise.
7573         (ix86_output_function_return): Likewise.
7574         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
7575         incompatible with -fcf-protection=branch and
7576         -fcheck-pointer-bounds.
7578 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7580         PR target/83335
7581         * config/aarch64/aarch64.c (aarch64_print_address_internal):
7582         Change gcc_assert call to output_operand_lossage.
7584 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7586         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
7588 2018-02-22  DJ Delorie  <dj@redhat.com>
7589             Sebastian Perta  <sebastian.perta@renesas.com>
7590             Oleg Endo  <olegendo@gcc.gnu.org>
7592         * config/rx/rx.c (rx_rtx_costs): New function.
7593         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
7595 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
7597         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
7599 2018-02-22  Martin Liska  <mliska@suse.cz>
7601         PR driver/83193
7602         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
7603         Add "native" as a possible value.
7605 2018-02-22  Martin Liska  <mliska@suse.cz>
7607         PR driver/83193
7608         * config/i386/i386.c (ix86_option_override_internal):
7609         Add "native" as a possible value for -march and -mtune.
7611 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
7613         PR target/84502
7614         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
7615         to all type variants.
7617         PR tree-optimization/84503
7618         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
7619         width as info->bitpos + info->bitsize - start.
7620         (merged_store_group::merge_overlapping): Simplify width computation.
7621         (check_no_overlap): New function.
7622         (imm_store_chain_info::try_coalesce_bswap): Compute expected
7623         start + width and last_order of the group, fail if check_no_overlap
7624         fails.
7625         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
7626         to group if check_no_overlap fails.
7628 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7630         * config/rs6000/altivec.md: Delete contraint arguments to
7631         define_expand, define_split, and define_peephole2, and in
7632         define_insn_and_split if always unused.
7633         * config/rs6000/darwin.md: Ditto.
7634         * config/rs6000/dfp.md: Ditto.
7635         * config/rs6000/rs6000.md: Ditto.
7636         * config/rs6000/sync.md: Ditto.
7637         * config/rs6000/vector.md: Ditto.
7638         * config/rs6000/vsx.md: Ditto.
7640 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7642         * config/rs6000/altivec.md: Write output control strings as braced
7643         blocks instead of double-quoted strings.
7644         * config/rs6000/darwin.md: Ditto.
7645         * config/rs6000/rs6000.md: Ditto.
7646         * config/rs6000/vector.md: Ditto.
7647         * config/rs6000/vsx.md: Ditto.
7649 2018-02-21  Jason Merrill  <jason@redhat.com>
7651         PR c++/84314 - ICE with templates and fastcall attribute.
7652         * attribs.c (build_type_attribute_qual_variant): Remove assert.
7654 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7656         * ipa-cp.c (determine_versionability): Fix comment typos.
7658 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7660         PR c/84229
7661         * ipa-cp.c (determine_versionability): Do not version functions caling
7662         va_arg_pack.
7664 2018-02-21  Martin Liska  <mliska@suse.cz>
7666         PR driver/83193
7667         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
7668         Add "native" as a possible value.
7669         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
7670         the macro when native cpu detection is available.
7672 2018-02-21  Martin Liska  <mliska@suse.cz>
7674         PR driver/83193
7675         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
7676         Add "native" as a possible value.
7677         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
7678         when native cpu detection is available.
7680 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
7681             Martin Sebor  <msebor@redhat.com>
7683         PR tree-optimization/84478
7684         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
7685         false.
7686         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
7687         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
7688         support which is conservatively correct, for 2 only stay conservative
7689         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
7690         argument to the 2 argument get_range_strlen, adjust 6 arg
7691         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
7692         false.
7693         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
7694         (gimple_fold_builtin_strlen): Pass true as last argument to
7695         get_range_strlen.
7697 2018-02-20  Martin Sebor  <msebor@redhat.com>
7699         PR middle-end/84095
7700         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
7701         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
7702         (builtin_memref::builtin_memref): Factor out parts into
7703         set_base_and_offset and call it.
7705 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7707         PR middle-end/84406
7708         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
7709         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
7710         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
7711         search at the associated MODE_INT.
7713 2018-02-20  Jeff Law  <law@redhat.com>
7715         PR middle-end/82123
7716         PR tree-optimization/81592
7717         PR middle-end/79257
7718         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
7719         for range data rather than using global data.
7720         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
7721         range data rather than using global data.
7722         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
7723         pass it to children as needed.
7724         (struct directive::fmtresult): Similarly.
7725         (struct directive::set_width): Similarly.
7726         (struct directive::set_precision): Similarly.
7727         (format_integer, format_directive, parse_directive): Similarly.
7728         (format_none): Accept unnamed vr_values parameter.
7729         (format_percent, format_floating, format_character): Similarly.
7730         (format_string, format_plain): Similarly.
7731         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
7732         the EVRP range analyzer for range data rather than using global data.
7733         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
7734         gimple-ssa-evrp-analyze.h
7735         (class sprintf_dom_walker): Add after_dom_children member function.
7736         Add evrp_range_analyzer member.
7737         (sprintf_dom_walker::before_dom_children): Call into the EVRP
7738         range analyzer as needed.
7739         (sprintf_dom_walker::after_dom_children): New member function.
7740         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
7741         if not optimizing.
7742         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
7743         (evrp_range_analyzer::pop_to_marker): Likewise.
7745 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7747         PR tree-optimization/84419
7748         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
7749         with the required type if its current type is compatible but
7750         different.
7752 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
7754         PR middle-end/82004
7755         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
7756         after vectorization.
7758 2018-02-20  Martin Liska  <mliska@suse.cz>
7760         PR driver/83193
7761         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
7762         possible values if we don't have a hint.
7764 2018-02-20  Martin Liska  <mliska@suse.cz>
7766         PR c/84310
7767         PR target/79747
7768         * final.c (shorten_branches): Build align_tab array with one
7769         more element.
7770         * opts.c (finish_options): Add alignment option limit check.
7771         (MAX_CODE_ALIGN): Likewise.
7772         (MAX_CODE_ALIGN_VALUE): Likewise.
7773         * doc/invoke.texi: Document maximum allowed option value for
7774         all -falign-* options.
7776 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
7778         PR target/84146
7779         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
7780         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
7781         * var-tracking.c (emit_note_insn_var_location): Remove all references
7782         to NOTE_INSN_CALL_ARG_LOCATION.
7783         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
7784         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
7785         Use copy_rtx_if_shared.
7786         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
7787         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
7788         (dwarf2out_var_location): Remove handling of
7789         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
7790         on call_insn.
7791         * final.c (final_scan_insn): Remove all references to
7792         NOTE_INSN_CALL_ARG_LOCATION.
7793         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
7794         before dumping final insns.
7795         * except.c (emit_note_eh_region_end): Remove all references to
7796         NOTE_INSN_CALL_ARG_LOCATION.
7797         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
7798         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
7799         * config/arc/arc.c (hwloop_optimize): Likewise.
7800         * config/arm/arm.c (create_fix_barrier): Likewise.
7801         * config/s390/s390.c (s390_chunkify_start): Likewise.
7802         * config/sh/sh.c (find_barrier): Likewise.
7803         * config/i386/i386.c (rest_of_insert_endbranch,
7804         ix86_seh_fixup_eh_fallthru): Likewise.
7805         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
7806         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
7807         * config/frv/frv.c (frv_function_prologue): Likewise.
7808         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
7809         reg note.
7810         (note_outside_basic_block_p): Remove all references to
7811         NOTE_INSN_CALL_ARG_LOCATION.
7812         * gengtype.c (adjust_field_rtx_def): Likewise.
7813         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
7814         Likewise.
7815         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
7816         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
7818         PR c++/84444
7819         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
7820         is ADDR_EXPR.
7822         PR tree-optimization/84452
7823         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
7824         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
7825         is NULL.
7827 2018-02-19  Martin Liska  <mliska@suse.cz>
7829         PR sanitizer/82183
7830         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
7832 2018-02-19  Martin Liska  <mliska@suse.cz>
7833             Richard Sandiford  <richard.sandiford@linaro.org>
7835         PR tree-optimization/82491
7836         * gimple-fold.c (get_base_constructor): Make earlier bail out
7837         to prevent ubsan.
7839 2018-02-19  Carl Love  <cel@us.ibm.com>
7841         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
7842         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
7843         BU_P8V_OVERLOAD_1.
7844         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
7845         P8V_BUILTIN_VEC_NEG.
7847 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
7849         * config/rl78/rl78.md (movdf): New define expand.
7851 2018-02-19  Martin Liska  <mliska@suse.cz>
7853         PR other/80589
7854         * doc/invoke.texi: Fix typo.
7855         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
7857 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
7859         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
7860         handle rs6000_single_float and rs6000_double_float specially for
7861         e500 family CPUs.
7863 2018-02-16  Jeff Law  <law@redhat.com>
7865         * config/rx/rx.c (add_pop_cfi_notes): New function.;
7866         (pop_regs): Use it.
7868 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
7870         PR ipa/84425
7871         * ipa-inline.c (inline_small_functions): Fix a typo.
7873 2018-02-16  Nathan Sidwell  <nathan@acm.org>
7875         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
7877 2018-02-16  Carl Love  <cel@us.ibm.com>
7879         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
7880         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
7881         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
7882         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
7883         expansion to P8V_BUILTIN_VEC_FLOAT2.
7885 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
7887         PR rtl-optimization/70023
7888         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
7889         src_regno into account.
7891 2018-02-16  Carl Love  <cel@us.ibm.com>
7893         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
7894         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
7895         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
7896         * config/rs6000/rs6000.c: Remove case statements for
7897         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
7898         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
7899         and P9V_BUILTIN_VEC_VINSERT4B.
7900         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
7901         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
7902         * config/rs6000/vsx.md:
7903         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
7904         vec_insert4b.
7906 2018-02-16  Carl Love  <cel@us.ibm.com>
7908         * config/rs6000/altivec.h: Add builtin names vec_extract4b
7909         vec_insert4b.
7910         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
7911         definitions.
7912         * config/rs6000/rs6000-c.c: Add the definitions for
7913         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
7914         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
7915         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
7916         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
7917         definition for insert4b and define insn *insert3b_internal.
7918         * doc/extend.texi: Add documentation for vec_extract4b.
7920 2018-02-16  Nathan Sidwell  <nathan@acm.org>
7922         * doc/extend.texi (Backwards Compatibility): Mention friend
7923         injection.  Note for-scope is deprecated.
7924         * doc/invoke.texi (-ffriend-injection): Deprecate.
7926 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
7928         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
7929         that moved to I2, also allow destinations that are a paradoxical
7930         subreg (instead of a normal reg).
7932 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
7934         PR target/83831
7935         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
7936         to QImode.
7938 2018-02-16  Richard Biener  <rguenther@suse.de>
7940         PR tree-optimization/84037
7941         PR tree-optimization/84016
7942         PR target/82862
7943         * config/i386/i386.c (ix86_builtin_vectorization_cost):
7944         Adjust vec_construct for the fact we need additional higher latency
7945         128bit inserts for AVX256 and AVX512 vector builds.
7946         (ix86_add_stmt_cost): Scale vector construction cost for
7947         elementwise loads.
7949 2018-02-16  Richard Biener  <rguenther@suse.de>
7951         PR tree-optimization/84417
7952         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
7953         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
7954         (non_rewritable_lvalue_p): Likewise, use poly-ints.
7956 2018-02-16  Martin Liska  <mliska@suse.cz>
7958         PR sanitizer/84307
7959         * internal-fn.def (ASAN_CHECK): Set proper flags.
7960         (ASAN_MARK): Likewise.
7962 2018-02-16  Julia Koval  <julia.koval@intel.com>
7964         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
7965         from PTA_CANNONLAKE.
7967 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
7969         PR target/84272
7970         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
7971         Use ++iter rather than iter++ for std::list iterators.
7972         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
7973         defer deleting them until all nodes in the forest are processed.  Do
7974         free even leaf nodes.  Change to_process into auto_vec.
7976         PR bootstrap/84405
7977         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
7978         * vec.h (vec_default_construct): Use memset instead of placement new
7979         if BROKEN_VALUE_INITIALIZATION is defined.
7980         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
7981         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
7982         is defined.
7984         PR rtl-optimization/83723
7985         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
7986         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
7987         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
7988         recursive calls.
7989         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
7990         callers.
7991         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
7993 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
7995         PR rtl-optimization/81443
7996         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
7997         from inner REGs to paradoxical SUBREGs.
7999 2018-02-16  Richard Biener  <rguenther@suse.de>
8001         PR tree-optimization/84399
8002         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
8003         For operands we can analyze at their definition make sure we can
8004         analyze them at each use as well.
8006 2018-02-16  Richard Biener  <rguenther@suse.de>
8008         PR tree-optimization/84190
8009         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
8010         volatile accesses if the decl isn't volatile.
8012 2018-02-15  Jason Merrill  <jason@redhat.com>
8014         PR c++/84314 - ICE with templates and fastcall attribute.
8015         * attribs.c (build_type_attribute_qual_variant): Don't clobber
8016         TYPE_CANONICAL on an existing type.
8018 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
8020         PR tree-optimization/84383
8021         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
8022         dstoff nor call operand_equal_p if dstbase is NULL.
8024         PR tree-optimization/84334
8025         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
8026         also a CONSTANT_CLASS_P, punt.
8028 2018-02-14  Jim Wilson  <jimw@sifive.com>
8030         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
8031         first SMALL_OPERAND check.  New local min_second_step.  Move assert
8032         to where locals are set.  Add TARGET_RVC support.
8033         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
8035 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
8037         * doc/invoke.texi: Correct -Wformat-overflow code sample.
8039 2018-02-14  Martin Sebor  <msebor@redhat.com>
8041         PR tree-optimization/83698
8042         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
8043         arrays constrain the offset range to their bounds.
8044         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
8045         (builtin_access::overlap): Avoid setting the size of overlap if it's
8046         already been set.
8047         (maybe_diag_overlap): Also consider arrays when deciding what values
8048         of offsets to include in diagnostics.
8050 2018-02-14  Martin Sebor  <msebor@redhat.com>
8052         PR c/84108
8053         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
8054         that correspond to the kind of a declaration.
8056 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
8058         PR target/83984
8059         * config/pa/pa.md: Load address of PIC label using the linkage table
8060         if the label is nonlocal.
8062 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8064         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
8065         warning message if user requests -maltivec=be.
8066         * doc/invoke.texi: Document deprecation of -maltivec=be.
8068 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
8070         PR target/84220
8071         * config/rs6000/rs6000-c.c: Update definitions for
8072         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
8073         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
8075 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
8077         PR target/84239
8078         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
8079         add _get_ssp intrinsics. Remove argument from
8080         __builtin_ia32_rdssp[d|q].
8081         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
8082         * config/i386/i386-builtin.def: Remove argument from
8083         __builtin_ia32_rdssp[d|q].
8084         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
8085         ix86_expand_special_args_builtin for _rdssp[d|q].
8086         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
8087         Clear register before usage.
8088         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
8089         Add documentation for new _get_ssp and _inc_ssp intrinsics.
8091 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
8093         PR tree-optimization/84357
8094         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
8095         operand 1 of an ARRAY_REF too.
8097 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
8099         PR target/83831
8100         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
8101         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8102         declarations.
8103         (set_of_reg): New struct.
8104         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
8105         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
8106         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8107         functions.
8108         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
8109         Split into bitclr, bitset, bitinvert patterns if appropriate.
8110         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
8111         use rx_fuse_in_memory_bitop.
8112         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
8113         to named insn, correct maximum insn length.
8115 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
8117         PR target/79242
8118         * machmode.def: Define a complex mode for PARTIAL_INT.
8119         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
8120         MODE_PARTIAL_INT.
8121         * doc/rtl.texi: Document CSPImode.
8122         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
8123         handling.
8124         (msp430_hard_regno_nregs_with_padding): Likewise.
8126 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
8128         PR target/84279
8129         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
8131 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
8133         PR rtl-optimization/84169
8134         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
8135         we generated a parallel as new i3 and we split that to new i2 and i3
8136         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
8137         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
8138         those to i2, not i1.  Partially rewrite this scan code.
8140 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
8142         PR c/82210
8143         * stor-layout.c (place_field): For variable length fields, adjust
8144         offset_align afterwards not just based on the field's alignment,
8145         but also on the size.
8147         PR middle-end/84309
8148         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
8149         of exps and logs in the use_exp2 case.
8151 2018-02-13  Jeff Law  <law@redhat.com>
8153         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
8154         entry for "vector".
8156         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
8157         ARGS as unused.
8159 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
8161         PR debug/84342
8162         PR debug/84319
8163         * common.opt (gas-loc-support, gas-locview-support): New.
8164         (ginline-points, ginternal-reset-location-views): New.
8165         * doc/invoke.texi: Document them.  Use @itemx where intended.
8166         (gvariable-location-views): Adjust.
8167         * target.def (reset_location_view): New.
8168         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
8169         (TARGET_RESET_LOCATION_VIEW): New.
8170         * doc/tm.texi: Rebuilt.
8171         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
8172         (dwarf2out_default_as_locview_support): New.
8173         (output_asm_line_debug_info): Use option variables.
8174         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
8175         (output_loc_list): Likewise.
8176         (add_high_low_attributes): Check option variables.
8177         Don't output entry view attribute in strict mode.
8178         (gen_inlined_subroutine_die): Check option variables.
8179         (dwarf2out_inline_entry): Likewise.
8180         (init_sections_and_labels): Likewise.
8181         (dwarf2out_early_finish): Likewise.
8182         (maybe_reset_location_view): New, from...
8183         (dwarf2out_var_location): ... here.  Call it.
8184         * debug.h (dwarf2out_default_as_loc_support): Declare.
8185         (dwarf2out_default_as_locview_support): Declare.
8186         * hooks.c (hook_int_rtx_insn_0): New.
8187         * hooks.h (hook_int_rtx_insn_0): Declare.
8188         * toplev.c (process_options): Take -gas-loc-support and
8189         -gas-locview-support from dwarf2out.  Enable
8190         -gvariable-location-views by default only with locview
8191         assembler support.  Enable -ginternal-reset-location-views by
8192         default only if the target defines the corresponding hook.
8193         Enable -ginline-points by default if location views are
8194         enabled; force it disabled if statement frontiers are
8195         disabled.
8196         * tree-inline.c (expand_call_inline): Check option variables.
8197         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
8199 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
8201         PR tree-optimization/84321
8202         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
8203         handling.  Also check whether the anti-range contains any values
8204         that satisfy the mask; switch to a VR_RANGE if not.
8206 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
8208         PR sanitizer/84340
8209         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
8211 2018-02-13  Martin Jambor  <mjambor@suse.cz>
8213         PR c++/83990
8214         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
8215         of call statements, also set location of a load to a temporary.
8217 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
8219         * config/rl78/rl78.c (add_vector_labels): New function.
8220         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
8221         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
8222         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
8223         which checks that no arguments are passed.
8224         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
8225         * doc/extend.texi: Documentation for the new attribute.
8227 2018-02-13  Andreas Schwab  <schwab@suse.de>
8229         * config/riscv/linux.h (CPP_SPEC): Define.
8231 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
8233         PR target/84335
8234         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
8235         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
8236         OPTION_MASK_ISA_AES as first argument to def_builtin_const
8237         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
8238         instead of OPTION_MASK_ISA_PCLMUL as first argument to
8239         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
8240         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
8241         temporarily for AES and PCLMUL builtins.
8243         PR tree-optimization/84339
8244         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
8245         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
8246         Formatting fixes.
8248         PR middle-end/84309
8249         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
8250         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
8251         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
8252         inline function.
8253         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
8254         inline function.
8255         * omp-simd-clone.h: New file.
8256         * omp-simd-clone.c: Include omp-simd-clone.h.
8257         (expand_simd_clones): No longer static.
8258         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
8259         cgraph.h and omp-simd-clone.h.
8260         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
8261         (vect_recog_widen_shift_pattern): Formatting fix.
8262         (vect_pattern_recog_1): Don't check optab for calls.
8264         PR target/84336
8265         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
8266         operands[2] into a REG before using gen_lowpart on it.
8268 2018-02-12  Jeff Law  <law@redhat.com>
8270         PR target/83760
8271         * config/sh/sh.c (find_barrier): Consider a sibling call
8272         a barrier as well.
8274         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
8275         successfully back substituting a reg.
8277 2018-02-12  Richard Biener  <rguenther@suse.de>
8279         PR tree-optimization/84037
8280         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
8281         parameter, move visited init to caller.
8282         (vect_slp_analyze_operations): Separate cost from validity
8283         check, initialize visited once for all instances.
8284         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
8285         for all instances.
8286         * tree-vect-stmts.c (vect_model_simple_cost): Make early
8287         out an assert.
8288         (vect_model_promotion_demotion_cost): Likewise.
8289         (vectorizable_bswap): Guard cost modeling with !slp_node
8290         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
8291         SLP stmts.
8292         (vectorizable_call): Likewise.
8293         (vectorizable_conversion): Likewise.
8294         (vectorizable_assignment): Likewise.
8295         (vectorizable_shift): Likewise.
8296         (vectorizable_operation): Likewise.
8297         (vectorizable_store): Likewise.
8298         (vectorizable_load): Likewise.
8299         (vectorizable_condition): Likewise.
8300         (vectorizable_comparison): Likewise.
8302 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
8304         PR sanitizer/84307
8305         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
8306         (ASAN_MARK): Fix fnspec to account for return value, change pointer
8307         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
8309 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
8311         PR middle-end/83665
8312         * params.def (inline-min-speedup): Increase from 8 to 15.
8313         (max-inline-insns-auto): Decrease from 40 to 30.
8314         * ipa-split.c (consider_split): Add some buffer for function to
8315         be considered inlining candidate.
8316         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
8317         default values.
8319 2018-02-12  Richard Biener  <rguenther@suse.de>
8321         PR tree-optimization/84037
8322         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
8323         matched stmts if we cannot swap the non-matched ones.
8325 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
8327         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
8328         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
8329         _mm_maskz_scalef_round_ss): New intrinsics.
8330         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
8331         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
8332         __builtin_ia32_scalefss_round): Remove.
8333         (__builtin_ia32_scalefsd_mask_round,
8334         __builtin_ia32_scalefss_mask_round): New intrinsics.
8335         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
8336         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
8337         ((match_operand:VF_128 2 "<round_nimm_predicate>"
8338         "<round_constraint>")): Changed to ...
8339         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
8340         "<round_scalar_constraint>")): ... this.
8341         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
8342         %0, %1, %2<round_op3>}"): Changed to ...
8343         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
8344         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
8345         %2<round_scalar_mask_op3>}"): ... this.
8346         * config/i386/subst.md (round_scalar_nimm_predicate): New.
8348 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
8350         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
8351         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
8352         (_mm_maskz_sqrt_round_ss): New intrinsics.
8353         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
8354         (__builtin_ia32_sqrtsd_mask_round)
8355         (__builtin_ia32_sqrtss_mask_round): New builtins.
8356         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
8357         (__builtin_ia32_sqrtss_round): Remove.
8358         (__builtin_ia32_sqrtsd_mask_round)
8359         (__builtin_ia32_sqrtss_mask_round): New builtins.
8360         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
8361         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
8362         ((match_operand:VF_128 1 "vector_operand"
8363         "xBm,<round_constraint>")): Changed to ...
8364         ((match_operand:VF_128 1 "vector_operand"
8365         "xBm,<round_scalar_constraint>")): ... this.
8366         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
8367         %0, %2, %<iptr>1<round_op3>}): Changed to ...
8368         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
8369         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
8370         %<iptr>1<round_scalar_mask_op3>}): ... this.
8371         ((set_attr "prefix" "<round_prefix>")): Changed to ...
8372         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
8374 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
8376         PR target/84266
8377         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
8378         Cast vec_cmpeq result to correct type.
8379         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
8380         Cast vec_cmpgt result to correct type.
8382 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
8384         * final.c (final_scan_insn_1): Renamed from...
8385         (final_scan_insn): ... this.  New wrapper, to recover
8386         seen from the outermost call in recursive ones.
8387         * config/sparc/sparc.c (output_return): Drop seen from call.
8388         (output_sibcall): Likewise.
8389         * config/visium/visium.c (output_branch): Likewise.
8391 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
8393         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
8394         function label.
8396 2018-02-10  Alan Modra  <amodra@gmail.com>
8398         PR target/84300
8399         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
8400         Specify LR as an input.
8402 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
8404         PR sanitizer/83987
8405         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
8406         remove_member_access_dummy_vars): New functions.
8407         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
8408         lower_omp_1, execute_lower_omp): Use them.
8410         PR rtl-optimization/84308
8411         * shrink-wrap.c (spread_components): Release todo vector.
8413 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
8415         PR rtl-optimization/57193
8416         * ira-color.c (struct allocno_color_data): Add member
8417         conflict_allocno_hard_prefs.
8418         (update_conflict_allocno_hard_prefs): New.
8419         (bucket_allocno_compare_func): Add a preference based on
8420         conflict_allocno_hard_prefs.
8421         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
8422         (color_allocnos): Remove a dead code.  Initiate
8423         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
8425 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8427         PR target/84226
8428         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
8429         constraint from =wa to wa.  Avoid a subreg on the output operand,
8430         instead use a pseudo and subreg it in a move.
8431         (p9_xxbrd_<mode>): Changed to ...
8432         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
8433         (p9_xxbrd_v2df): New expander.
8434         (p9_xxbrw_<mode>): Changed to ...
8435         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
8436         (p9_xxbrw_v4sf): New expander.
8438 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8440         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
8442 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
8444         PR target/83926
8445         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
8446         multiply in 32-bit mode.
8447         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
8448         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
8449         mode.
8451 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8453         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
8454         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
8455         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
8456         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
8458 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
8460         PR lto/84213
8461         * dwarf2out.c (is_trivial_indirect_ref): New function.
8462         (dwarf2out_late_global_decl): Do not generate a location
8463         attribute for variables that have a non-trivial DECL_VALUE_EXPR
8464         and that are not defined in the current unit.
8466 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8468         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
8469         instead of a libcall for UNORDERED.
8471 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
8473         PR target/82641
8474         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
8475         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
8477 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8479         PR target/PR84295
8480         * config/s390/s390.c (s390_set_current_function): Invoke
8481         s390_indirect_branch_settings also if fndecl didn't change.
8483 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8485         * config/rs6000/rs6000.md (blockage): Set length to zero.
8487 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8489         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
8491 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8493         PR sanitizer/84285
8494         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
8495         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
8496         -static-lib*san.
8498         PR debug/84252
8499         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
8500         PARALLEL incoming that failed vt_get_decl_and_offset check.
8502         PR middle-end/84237
8503         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
8504         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
8505         TREE_READONLY bit.
8506         (get_variable_section): For decls in named .bss* sections pass true as
8507         second argument to bss_initializer_p.
8509 2018-02-09  Marek Polacek  <polacek@redhat.com>
8510             Jakub Jelinek  <jakub@redhat.com>
8512         PR c++/83659
8513         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
8514         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
8515         Sync some changes from cxx_fold_indirect_ref.
8517 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8519         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
8520         markers.
8521         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
8522         (BLOCK_INLINE_ENTRY_LABEL): New.
8523         (dwarf2out_var_location): Disregard inline entry markers.
8524         (inline_entry_data): New struct.
8525         (inline_entry_data_hasher): New hashtable type.
8526         (inline_entry_data_hasher::hash): New.
8527         (inline_entry_data_hasher::equal): New.
8528         (inline_entry_data_table): New variable.
8529         (add_high_low_attributes): Add DW_AT_entry_pc and
8530         DW_AT_GNU_entry_view attributes if a pending entry is found
8531         in inline_entry_data_table.  Add old entry_pc attribute only
8532         if debug nonbinding markers are disabled.
8533         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
8534         markers are enabled.
8535         (block_within_block_p, dwarf2out_inline_entry): New.
8536         (dwarf2out_finish): Check that no entries remained in
8537         inline_entry_data_table.
8538         * final.c (reemit_insn_block_notes): Handle inline entry notes.
8539         (final_scan_insn, notice_source_line): Likewise.
8540         (rest_of_clean_state): Skip inline entry markers.
8541         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
8542         markers.
8543         * gimple.c (gimple_build_debug_inline_entry): New.
8544         * gimple.h (enum gimple_debug_subcode): Add
8545         GIMPLE_DEBUG_INLINE_ENTRY.
8546         (gimple_build_debug_inline_entry): Declare.
8547         (gimple_debug_inline_entry_p): New.
8548         (gimple_debug_nonbind_marker_p): Adjust.
8549         * insn-notes.def (INLINE_ENTRY): New.
8550         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
8551         inline entry marker notes.
8552         (print_insn): Likewise.
8553         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
8554         (INSN_DEBUG_MARKER_KIND): Likewise.
8555         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
8556         * tree-inline.c (expand_call_inline): Build and insert
8557         debug_inline_entry stmt.
8558         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
8559         inline entry blocks early, if nonbind markers are enabled.
8560         (dump_scope_block): Dump fragment info.
8561         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
8562         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
8563         (gimple_build_debug_inline_entry): New.
8564         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
8565         Enable/disable inline entry points too.
8566         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
8567         (DEBUG_INSN): Describe inline entry markers.
8569         * common.opt (gvariable-location-views): New.
8570         (gvariable-location-views=incompat5): New.
8571         * config.in: Rebuilt.
8572         * configure: Rebuilt.
8573         * configure.ac: Test assembler for view support.
8574         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
8575         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
8576         * dwarf2out.c (var_loc_view): New typedef.
8577         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
8578         (dwarf2out_locviews_in_attribute): New.
8579         (dwarf2out_locviews_in_loclist): New.
8580         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
8581         (enum dw_line_info_opcode): Add LI_adv_address.
8582         (struct dw_line_info_table): Add view.
8583         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
8584         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
8585         (zero_view_p): New variable.
8586         (ZERO_VIEW_P): New macro.
8587         (output_asm_line_debug_info): New.
8588         (struct var_loc_node): Add view.
8589         (add_AT_view_list, AT_loc_list): New.
8590         (add_var_loc_to_decl): Add view param.  Test it against last.
8591         (new_loc_list): Add view params.  Record them.
8592         (AT_loc_list_ptr): Handle loc and view lists.
8593         (view_list_to_loc_list_val_node): New.
8594         (print_dw_val): Handle dw_val_class_view_list.
8595         (size_of_die): Likewise.
8596         (value_format): Likewise.
8597         (loc_list_has_views): New.
8598         (gen_llsym): Set vl_symbol too.
8599         (maybe_gen_llsym, skip_loc_list_entry): New.
8600         (dwarf2out_maybe_output_loclist_view_pair): New.
8601         (output_loc_list): Output view list or entries too.
8602         (output_view_list_offset): New.
8603         (output_die): Handle dw_val_class_view_list.
8604         (output_dwarf_version): New.
8605         (output_compilation_unit_header): Use it.
8606         (output_skeleton_debug_sections): Likewise.
8607         (output_rnglists, output_line_info): Likewise.
8608         (output_pubnames, output_aranges): Update version comments.
8609         (output_one_line_info_table): Output view numbers in asm comments.
8610         (dw_loc_list): Determine current endview, pass it to new_loc_list.
8611         Call maybe_gen_llsym.
8612         (loc_list_from_tree_1): Adjust.
8613         (add_AT_location_description): Create view list attribute if
8614         needed, check it's absent otherwise.
8615         (convert_cfa_to_fb_loc_list): Adjust.
8616         (maybe_emit_file): Call output_asm_line_debug_info for test.
8617         (dwarf2out_var_location): Reset views as needed.  Precompute
8618         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
8619         attribute.  Set view.
8620         (new_line_info_table): Reset next view.
8621         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
8622         (dwarf2out_source_line): Likewise.  Output view resets and labels to
8623         the assembler, or select appropriate line info opcodes.
8624         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
8625         (optimize_string_length): Catch it.  Adjust.
8626         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
8627         dw_val_class_view_list, and remove it if no longer needed.
8628         (hash_loc_list): Hash view numbers.
8629         (loc_list_hasher::equal): Compare them.
8630         (optimize_location_lists): Check whether a view list symbol is
8631         needed, and whether the locview attribute is present, and
8632         whether they match.  Remove the locview attribute if no longer
8633         needed.
8634         (index_location_lists): Call skip_loc_list_entry for test.
8635         (dwarf2out_finish): Call output_asm_line_debug_info for test.
8636         Use output_dwarf_version.
8637         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
8638         (struct dw_val_node): Add val_view_list.
8639         * final.c (SEEN_NEXT_VIEW): New.
8640         (set_next_view_needed): New.
8641         (clear_next_view_needed): New.
8642         (maybe_output_next_view): New.
8643         (final_start_function): Rename to...
8644         (final_start_function_1): ... this.  Take pointer to FIRST,
8645         add SEEN parameter.  Emit param bindings in the initial view.
8646         (final_start_function): Reintroduce SEEN-less interface.
8647         (final): Rename to...
8648         (final_1): ... this.  Take SEEN parameter.  Output final pending
8649         next view at the end.
8650         (final): Reintroduce seen-less interface.
8651         (final_scan_insn): Output pending next view before switching
8652         sections or ending a block.  Mark the next view as needed when
8653         outputting variable locations.  Notify debug backend of section
8654         changes, and of location view changes.
8655         (rest_of_handle_final): Adjust.
8656         * toplev.c (process_options): Autodetect value for debug variable
8657         location views option.  Warn on incompat5 without -gdwarf-5.
8658         * doc/invoke.texi (gvariable-location-views): New.
8659         (gvariable-location-views=incompat5): New.
8660         (gno-variable-location-views): New.
8662 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
8664         PR tree-optimization/84136
8665         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
8666         that the result of find_edge is non-NULL.
8668 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8670         PR target/83008
8671         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
8672         storing integer register in SImode.  Fix cost of 256 and 512
8673         byte aligned SSE register store.
8675 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8677         * config/i386/i386.c (ix86_multiplication_cost): Fix
8678         multiplication cost for TARGET_AVX512DQ.
8680 2018-02-08  Marek Polacek  <polacek@redhat.com>
8682         PR tree-optimization/84238
8683         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
8684         get_range_strlen.
8686 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8688         PR tree-optimization/84265
8689         * tree-vect-stmts.c (vectorizable_store): Don't treat
8690         VMAT_CONTIGUOUS accesses as grouped.
8691         (vectorizable_load): Likewise.
8693 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8695         PR tree-optimization/81635
8696         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
8697         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
8698         (test_round_for_mask): New functions.
8699         (wide_int_cc_tests): Call test_round_for_mask.
8700         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
8701         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
8702         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
8703         range returned by get_range_info.
8705 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
8707         PR ipa/81360
8708         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
8709         * symtab.c: Include builtins.h
8710         (symtab_node::output_to_lto_symbol_table_p): Move here
8711         from lto-streamer-out.c:output_symbol_p.
8712         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
8713         (output_symbol_p): Move all logic to symtab.c
8714         (produce_symtab): Update.
8716 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8718         * config/s390/s390-opts.h (enum indirect_branch): Define.
8719         * config/s390/s390-protos.h (s390_return_addr_from_memory)
8720         (s390_indirect_branch_via_thunk)
8721         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
8722         (enum s390_indirect_branch_type): Define.
8723         * config/s390/s390.c (struct s390_frame_layout, struct
8724         machine_function): Remove.
8725         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
8726         (indirect_branch_table_label_no, indirect_branch_table_name):
8727         Define variables.
8728         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
8729         (enum s390_indirect_branch_option): Define.
8730         (s390_return_addr_from_memory): New function.
8731         (s390_handle_string_attribute): New function.
8732         (s390_attribute_table): Add new attribute handler.
8733         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
8734         (s390_indirect_branch_via_thunk): New function.
8735         (s390_indirect_branch_via_inline_thunk): New function.
8736         (s390_function_ok_for_sibcall): When jumping via thunk disallow
8737         sibling call optimization for non z10 compiles.
8738         (s390_emit_call): Force indirect branch target to be a single
8739         register.  Add r1 clobber for non-z10 compiles.
8740         (s390_emit_epilogue): Emit return jump via return_use expander.
8741         (s390_reorg): Handle JUMP_INSNs as execute targets.
8742         (s390_option_override_internal): Perform validity checks for the
8743         new command line options.
8744         (s390_indirect_branch_attrvalue): New function.
8745         (s390_indirect_branch_settings): New function.
8746         (s390_set_current_function): Invoke s390_indirect_branch_settings.
8747         (s390_output_indirect_thunk_function):  New function.
8748         (s390_code_end): Implement target hook.
8749         (s390_case_values_threshold): Implement target hook.
8750         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
8751         macros.
8752         * config/s390/s390.h (struct s390_frame_layout)
8753         (struct machine_function): Move here from s390.c.
8754         (TARGET_INDIRECT_BRANCH_NOBP_RET)
8755         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
8756         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
8757         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
8758         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
8759         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
8760         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
8761         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
8762         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
8763         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
8764         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
8765         (mnemonic attribute): Add values which aren't recognized
8766         automatically.
8767         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
8768         pattern for branch conversion.  Fix mnemonic attribute.
8769         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
8770         indirect branch via thunk if requested.
8771         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
8772         ("*indirect_jump"): Disable for branch conversion using out of
8773         line thunks.
8774         ("indirect_jump_via_thunk<mode>_z10")
8775         ("indirect_jump_via_thunk<mode>")
8776         ("indirect_jump_via_inlinethunk<mode>_z10")
8777         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
8778         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
8779         ("casesi_jump_via_inlinethunk<mode>_z10")
8780         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
8781         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
8782         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
8783         ("*indirect2_jump"): Disable for branch conversion.
8784         ("casesi_jump"): Turn into expander and expand patterns for branch
8785         conversion.
8786         ("return_use"): New expander.
8787         ("*return"): Emit return via thunk and rename it to ...
8788         ("*return<mode>"): ... this one.
8789         * config/s390/s390.opt: Add new options and and enum for the
8790         option values.
8792 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8794         * lra-constraints.c (match_reload): Unconditionally use
8795         gen_lowpart_SUBREG, rather than selecting between that
8796         and equivalent gen_rtx_SUBREG code.
8798 2018-02-08  Richard Biener  <rguenther@suse.de>
8800         PR tree-optimization/84233
8801         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
8802         changed flag instead of boguously re-using phi_inserted.
8804 2018-02-08  Martin Jambor  <mjambor@suse.cz>
8806         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
8807         static local variables.
8809 2018-02-08  Richard Biener  <rguenther@suse.de>
8811         PR tree-optimization/84278
8812         * tree-vect-stmts.c (vectorizable_store): When looking for
8813         smaller vector types to perform grouped strided loads/stores
8814         make sure the mode is supported by the target.
8815         (vectorizable_load): Likewise.
8817 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8819         * config/aarch64/aarch64.c (aarch64_components_for_bb):
8820         Increase LDP/STP opportunities by adding adjacent callee-saves.
8822 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8824         PR rtl-optimization/84068
8825         PR rtl-optimization/83459
8826         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
8828 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
8830         PR tree-optimization/84224
8831         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
8832         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
8833         non-zero arguments.
8835 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
8837         PR target/84113
8838         * config/rs6000/altivec.md (*restore_world): Remove LR use.
8839         * config/rs6000/predicates.md (restore_world_operation): Adjust op
8840         count, remove one USE.
8842 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
8844         * doc/install.texi (Configuration): Document the
8845         --with-long-double-format={ibm,ieee} PowerPC configuration
8846         options.
8848         PR target/84154
8849         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
8850         Convert from define_expand to be define_insn_and_split.  Rework
8851         float/double/_Float128 conversions to QI/HI/SImode to work with
8852         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
8853         conversions to QI/HImode types did a store and then a load to
8854         truncate the value.  For conversions to VSX registers, don't split
8855         the insn, instead emit the code directly.  Use the code iterator
8856         any_fix to combine signed and unsigned conversions.
8857         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
8858         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
8859         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8860         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
8861         (fix_<mode>di2_hw): Likewise.
8862         (fixuns_<mode>di2_hw): Likewise.
8863         (fix_<mode>si2_hw): Likewise.
8864         (fixuns_<mode>si2_hw): Likewise.
8865         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
8866         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8867         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
8868         fix<uns>_trunc<SFDF:mode>si2_p8.
8869         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
8870         used.
8871         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
8872         (fix<uns>_<mode>_mem): Likewise.
8873         (fctiw<u>z_<mode>_mem): Likewise.
8874         (fix<uns>_<mode>_mem): Likewise.
8875         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
8876         the register allocator from doing a direct move to the GPRs to do
8877         a store, and instead use the ISA 3.0 store byte/half-word from
8878         vector register instruction.  For IEEE 128-bit floating point,
8879         also optimize stores of 32-bit ints.
8880         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
8882 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
8884         * genextract.c (push_pathstr_operand): New function to support
8885         [a-zA-Z].
8886         (walk_rtx): Call push_pathstr_operand.
8887         (print_path): Support [a-zA-Z].
8889 2018-02-07  Richard Biener  <rguenther@suse.de>
8891         PR tree-optimization/84037
8892         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
8893         (cse_and_gimplify_to_preheader): Declare.
8894         (vect_get_place_in_interleaving_chain): Likewise.
8895         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
8896         ivexpr_map.
8897         (_loop_vec_info::~_loop_vec_info): Delete it.
8898         (cse_and_gimplify_to_preheader): New function.
8899         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
8900         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
8901         (vectorizable_load): Likewise.  For grouped stores always base
8902         the IV on the first element.
8903         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
8904         condition before gimplifying.
8906 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
8908         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
8909         *DIV_EXPR and *MOD_EXPR.
8911 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
8913         PR target/84248
8914         * config/i386/i386.c (ix86_option_override_internal): Mask out
8915         the CF_SET bit when checking -fcf-protection.
8917 2018-02-07  Tom de Vries  <tom@codesourcery.com>
8919         PR libgomp/84217
8920         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
8921         enough.
8923 2018-02-07  Richard Biener  <rguenther@suse.de>
8925         PR tree-optimization/84204
8926         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
8927         this place.
8929         PR tree-optimization/84205
8930         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
8931         special-case isl_ast_op_zdiv_r.
8933         PR tree-optimization/84223
8934         * graphite-scop-detection.c (gather_bbs::before_dom_children):
8935         Only add conditions from within the region.
8936         (gather_bbs::after_dom_children): Adjust.
8938 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
8940         PR target/84209
8941         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
8942         * config/avr/avr.md: Only post-reload split REG-REG moves if
8943         either register is GENERAL_REG_P.
8945 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
8947         PR tree-optimization/84235
8948         * tree-ssa-scopedtables.c
8949         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
8950         if the subtraction is performed in floating point type where NaNs are
8951         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
8952         build 1.  Formatting fix.
8954 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
8956         PR target/84146
8957         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
8958         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
8959         and skip it regardless of bb boundaries.  Use CALL_P macro,
8960         don't test INSN_P (insn) together with CALL_P or JUMP_P check
8961         unnecessarily, formatting fix.
8963 2018-02-06  Michael Collison  <michael.collison@arm.com>
8965         * config/arm/thumb2.md:
8966         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
8967         (*thumb_mov_notscc): Ditto.
8969 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
8971         PR target/84154
8972         * config/rs6000/rs6000.md (su code attribute): Use "u" for
8973         unsigned_fix, not "s".
8975 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8977         * configure.ac (gcc_fn_eh_frame_ro): New function.
8978         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
8979         correct .eh_frame permissions.
8980         * configure: Regenerate.
8982 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
8984         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
8985         irrelevant options.
8987 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8989         * config/rs6000/rs6000.c (rs6000_option_override_internal):
8990         Display warning message for -mno-speculate-indirect-jumps.
8992 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
8994         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
8995         Undocumented.
8996         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
8998 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
9000         PR tree-optimization/84225
9001         * tree-eh.c (find_trapping_overflow): Only call
9002         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
9004 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9006         PR target/84145
9007         * config/i386/i386.c: Reimplement the check of possible options
9008         -mibt/-mshstk conbination. Change error messages.
9009         * doc/invoke.texi: Fix a typo: remove extra '='.
9011 2018-02-06  Marek Polacek  <polacek@redhat.com>
9013         PR tree-optimization/84228
9014         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
9016 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
9018         PR target/82641
9019         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
9020         emitted arch directives.
9021         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
9022         __ARM_FEATURE_COPROC before changing architectures.
9024 2018-02-06  Richard Biener  <rguenther@suse.de>
9026         * config/i386/i386.c (print_reg): Fix typo.
9027         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
9029 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
9031         * configure: Regenerate.
9033 2018-02-05  Martin Sebor  <msebor@redhat.com>
9035         PR tree-optimization/83369
9036         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
9037         inlining context.
9039 2018-02-05  Martin Liska  <mliska@suse.cz>
9041         * doc/invoke.texi: Cherry-pick upstream r323995.
9043 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
9045         * ira.c (ira_init_register_move_cost): Adjust comment.
9047 2018-02-05  Martin Liska  <mliska@suse.cz>
9049         PR gcov-profile/84137
9050         * doc/gcov.texi: Fix typo in documentation.
9052 2018-02-05  Martin Liska  <mliska@suse.cz>
9054         PR gcov-profile/83879
9055         * doc/gcov.texi: Document necessity of --dynamic-list-data when
9056         using dlopen functionality.
9058 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
9060         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
9061         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
9062         _mm_maskz_range_ss, _mm_mask_range_round_ss,
9063         _mm_maskz_range_round_ss): New intrinsics.
9064         (__builtin_ia32_rangesd128_round)
9065         (__builtin_ia32_rangess128_round): Remove.
9066         (__builtin_ia32_rangesd128_mask_round,
9067         __builtin_ia32_rangess128_mask_round): New builtins.
9068         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
9069         __builtin_ia32_rangess128_round): Remove.
9070         (__builtin_ia32_rangesd128_mask_round,
9071         __builtin_ia32_rangess128_mask_round): New builtins.
9072         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
9073         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
9074         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
9075         "<round_saeonly_constraint>")): Changed to ...
9076         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
9077         "<round_saeonly_scalar_constraint>")): ... this.
9078         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
9079         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
9080         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
9081         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
9082         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
9084 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
9086         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
9087         options.
9088         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
9089         Remove all values except native, 8540 and 8548.
9091 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
9093         * config/i386/i386.c (ix86_output_function_return): Pass
9094         INVALID_REGNUM, instead of -1, as invalid register number to
9095         indirect_thunk_name and output_indirect_thunk.
9097 2018-02-02  Julia Koval  <julia.koval@intel.com>
9099         * config.gcc: Add -march=icelake.
9100         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
9101         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
9102         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
9103         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
9104         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
9105         (processor_target_table): Add icelake.
9106         (ix86_option_override_internal): Handle new PTAs.
9107         (get_builtin_code_for_version): Handle icelake.
9108         (M_INTEL_COREI7_ICELAKE): New.
9109         (fold_builtin_cpu): Handle icelake.
9110         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
9111         * doc/invoke.texi: Add -march=icelake.
9113 2018-02-02  Julia Koval  <julia.koval@intel.com>
9115         * config/i386/i386.c (ix86_option_override_internal): Change flags type
9116         to wide_int_bitmask.
9117         * wide-int-bitmask.h: New.
9119 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9121         PR target/84066
9122         * config/i386/i386.md: Replace Pmode with word_mode in
9123         builtin_setjmp_setup and builtin_longjmp to support x32.
9125 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
9127         PR target/56010
9128         PR target/83743
9129         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
9130         #include "opts.h".
9131         (rs6000_supported_cpu_names): New static variable.
9132         (linux_cpu_translation_table): Likewise.
9133         (elf_platform) <cpu>: Define new static variable and use it.
9134         Translate kernel AT_PLATFORM name to canonical name if needed.
9135         Error if platform name is unknown.
9137 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
9139         PR target/84089
9140         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
9142 2018-02-01  Jeff Law  <law@redhat.com>
9144         PR target/84128
9145         * config/i386/i386.c (release_scratch_register_on_entry): Add new
9146         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
9147         the scratch if RELEASE_VIA_POP is false.
9148         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
9149         If we have to save a temporary register, decrement SIZE appropriately.
9150         Pass new arguments to release_scratch_register_on_entry.
9151         (ix86_adjust_stack_and_probe): Likewise.
9152         (ix86_emit_probe_stack_range): Pass new arguments to
9153         release_scratch_register_on_entry.
9155 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
9157         PR rtl-optimization/84157
9158         * combine.c (change_zero_ext): Use REG_P predicate in
9159         front of HARD_REGISTER_P predicate.
9161 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
9163         * config/avr/avr.c (avr_option_override): Move disabling of
9164         -fdelete-null-pointer-checks to...
9165         * common/config/avr/avr-common.c (avr_option_optimization_table):
9166         ...here.
9168 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9170         PR tree-optimization/81635
9171         * tree-data-ref.c (split_constant_offset_1): For types that
9172         wrap on overflow, try to use range info to prove that wrapping
9173         cannot occur.
9175 2018-02-01  Renlin Li  <renlin.li@arm.com>
9177         PR target/83370
9178         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
9179         TAILCALL_ADDR_REGS.
9180         (aarch64_register_move_cost): Likewise.
9181         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
9182         TAILCALL_ADDR_REGS.
9183         (REG_CLASS_NAMES): Likewise.
9184         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
9185         TAILCALL_ADDR_REGS. Remove IP registers.
9186         * config/aarch64/aarch64.md (Ucs): Update register constraint.
9188 2018-02-01  Richard Biener  <rguenther@suse.de>
9190         * domwalk.h (dom_walker::dom_walker): Add additional constructor
9191         for specifying RPO order and allow NULL for that.
9192         * domwalk.c (dom_walker::dom_walker): Likewise.
9193         (dom_walker::walk): Handle NULL RPO order.
9194         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
9195         in RPO order.
9196         (rewrite_update_dom_walker): Likewise.
9197         (mark_def_dom_walker): Likewise.
9199 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9201         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
9202         (aarch64_maybe_expand_sve_subreg_move): Declare.
9203         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
9204         * config/aarch64/predicates.md (aarch64_any_register_operand): New
9205         predicate.
9206         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
9207         that are semantically a reverse operation.
9208         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
9209         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
9210         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
9211         functions.
9212         (aarch64_can_change_mode_class): For big-endian, forbid changes
9213         between two SVE modes if they have different element sizes.
9215 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9217         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
9218         the TImode handling for big-endian targets.
9220 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9222         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
9223         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
9224         not just bytes.
9225         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
9226         Remove BSWAP handing for big-endian targets and use the form of
9227         LD1RQ appropariate for the mode.
9229 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9231         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
9232         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
9233         duplicated element.
9235 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9237         PR tearget/83845
9238         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
9239         check for operands that need to go through aarch64_sve_reload_be.
9241 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
9243         PR tree-optimization/81661
9244         PR tree-optimization/84117
9245         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
9246         * tree-eh.c: Include gimplify.h.
9247         (find_trapping_overflow, replace_trapping_overflow,
9248         rewrite_to_non_trapping_overflow): New functions.
9249         * tree-vect-loop.c: Include tree-eh.h.
9250         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
9251         * tree-data-ref.c: Include tree-eh.h.
9252         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
9254 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
9256         PR rtl-optimization/84123
9257         * combine.c (change_zero_ext): Check if hard register satisfies
9258         can_change_dest_mode before calling gen_lowpart_SUBREG.
9260 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
9262         PR target/82444
9263         * ira.c (ira_init_register_move_cost): Remove assert.
9265 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9267         PR rtl-optimization/84071
9268         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
9269         * doc/tm.texi: Regenerate.
9271 2018-01-31  Richard Biener  <rguenther@suse.de>
9273         PR tree-optimization/84132
9274         * tree-data-ref.c (analyze_miv_subscript): Properly
9275         check whether evolution_function_is_affine_multivariate_p
9276         before calling gcd_of_steps_may_divide_p.
9278 2018-01-31  Julia Koval  <julia.koval@intel.com>
9280         PR target/83618
9281         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
9282         * config/i386/i386.md (rdpid_rex64) New.
9283         (rdpid): Make 32bit only.
9285 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
9287         PR lto/84105
9288         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
9289         an IDENTIFIER_NODE for FUNCTION_TYPE's.
9291 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9293         Revert
9294         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
9296         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
9298 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9300         PR rtl-optimization/84071
9301         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
9302         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
9304 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
9306         * config/arc/arc.c (arc_handle_aux_attribute): New function.
9307         (arc_attribute_table): Add 'aux' attribute.
9308         (arc_in_small_data_p): Consider aux like variables.
9309         (arc_is_aux_reg_p): New function.
9310         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
9311         (arc_get_aux_arg): New function.
9312         (prepare_move_operands): Handle aux-register access.
9313         (arc_handle_aux_attribute): New function.
9314         * doc/extend.texi (ARC Variable attributes): Add subsection.
9316 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
9318         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
9319         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
9320         (arc_attribute_table): Add 'uncached' attribute.
9321         (arc_print_operand): Print '.di' flag for uncached memory
9322         accesses.
9323         (arc_in_small_data_p): Do not consider for small data the uncached
9324         types.
9325         (arc_is_uncached_mem_p): New function.
9326         * config/arc/predicates.md (compact_store_memory_operand): Check
9327         for uncached memory accesses.
9328         (nonvol_nonimm_operand): Likewise.
9329         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
9331 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
9333         PR c/84100
9334         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
9335         falign-loops=): Add Optimization flag.
9337 2018-01-30  Jeff Law  <law@redhat.com>
9339         PR target/84064
9340         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
9341         INT_REGISTERS_SAVED.  Check it prior to calling
9342         get_scratch_register_on_entry.
9343         (ix86_adjust_stack_and_probe): Similarly.
9344         (ix86_emit_probe_stack_range): Similarly.
9345         (ix86_expand_prologue): Corresponding changes.
9347 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9349         PR target/40411
9350         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
9351         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
9353 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
9355         PR target/84112
9356         * lra-constraints.c (curr_insn_transform): Process AND in the
9357         address.
9359 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
9361         PR rtl-optimization/83986
9362         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
9363         dependence against last_pending_memory_flush in addition to
9364         pending_jump_insns.
9366 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
9368         PR tree-optimization/81611
9369         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
9370         copies.
9372 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9374         PR target/83758
9375         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
9376         a reg rtx.
9378 2018-01-30  Richard Biener  <rguenther@suse.de>
9379             Jakub Jelinek  <jakub@redhat.com>
9381         PR tree-optimization/84111
9382         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
9383         inner loops added during recursion, as they don't have up-to-date
9384         SSA form.
9386 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9388         PR ipa/81360
9389         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
9390         (can_inline_edge_by_limits_p): ... here.
9391         (can_early_inline_edge_p, check_callers,
9392         update_caller_keys, update_callee_keys, recursive_inlining,
9393         add_new_edges_to_heap, speculation_useful_p,
9394         inline_small_functions,
9395         inline_small_functions, flatten_function,
9396         inline_to_all_callers_1): Update.
9398 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9400         * profile-count.c (profile_count::combine_with_ipa_count): Handle
9401         zeros correctly.
9403 2018-01-30  Richard Biener  <rguenther@suse.de>
9405         PR tree-optimization/83008
9406         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
9407         invariant and constant vector uses in stmts when they need
9408         more than one stmt.
9410 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9412         PR bootstrap/84017
9413         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
9414         * configure: Regenerate.
9416 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9418         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
9419         pattern.
9420         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
9421         Use gen_rtx_REG rather than gen_lowpart.
9423 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9425         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
9426         rather than 0 when creating partial subregs.
9428 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9430         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
9431         of usage.
9433 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
9435         PR target/81550
9436         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
9437         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
9438         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
9439         flags.  This restores the settings used before the 2017-07-24.
9440         Turning off pre increment/decrement/modify allows IVOPTS to
9441         optimize DF/SF loops where the index is an int.
9443 2018-01-29  Richard Biener  <rguenther@suse.de>
9444             Kelvin Nilsen  <kelvin@gcc.gnu.org>
9446         PR bootstrap/80867
9447         * tree-vect-stmts.c (vectorizable_call): Don't call
9448         targetm.vectorize_builtin_md_vectorized_function if callee is
9449         NULL.
9451 2018-01-22  Carl Love  <cel@us.ibm.com>
9453         * doc/extend.tex: Fix typo in second arg in
9454         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
9456 2018-01-29  Richard Biener  <rguenther@suse.de>
9458         PR tree-optimization/84086
9459         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
9460         (flush_ssaname_freelist): When SSA names were released reset
9461         the SCEV hash table.
9463 2018-01-29  Richard Biener  <rguenther@suse.de>
9465         PR tree-optimization/84057
9466         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
9467         removed paths when removing edges.
9469 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
9471         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
9472         -mfunction-return=@var{choice}.
9474 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
9476         PR diagnostic/84034
9477         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
9478         Handle CR like TAB.
9479         (layout::print_source_line): Likewise.
9480         (test_get_line_width_without_trailing_whitespace): Add test cases.
9482 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
9484         PR middle-end/84040
9485         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
9486         debug insns.
9488 2018-01-26  Jim Wilson  <jimw@sifive.com>
9490         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
9492         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
9493         specified.
9495 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9497         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
9498         and CMP + SUB-immediate -> SUBS.
9500 2018-01-26  Martin Sebor  <msebor@redhat.com>
9502         PR tree-optimization/83896
9503         * tree-ssa-strlen.c (get_string_len): Rename...
9504         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
9505         Avoid assuming length is constant.
9506         (handle_char_store): Use HOST_WIDE_INT for string length.
9508 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
9510         PR target/81763
9511         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
9512         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
9514 2018-01-26  Richard Biener  <rguenther@suse.de>
9516         PR rtl-optimization/84003
9517         * dse.c (record_store): Only record redundant stores when
9518         the earlier store aliases at least all accesses the later one does.
9520 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
9522         PR rtl-optimization/83985
9523         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
9524         REG_CFA_RESTORE insns.
9525         (delete_unmarked_insns): Don't ignore separate shrink wrapping
9526         REG_CFA_RESTORE insns here.
9528         PR c/83989
9529         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
9530         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
9532 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9534         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
9535         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
9536         (arc_init): Likewise.
9537         (arc_override_options): Likewise.
9538         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
9539         value.
9540         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
9541         support.
9542         * config/arc/arc.h (TARGET_DBNZ): Define.
9543         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
9544         properly set the tune attribute.
9545         (dbnz): Use TARGET_DBNZ guard.
9546         * config/arc/arc.opt (mtune): Add core3 option.
9548 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9550         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
9551         recognize new pic like addresses.
9552         (arc_delegitimize_address): Clean up.
9554 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9556         * config/arc/arc-arches.def: Option mrf16 valid for all
9557         architectures.
9558         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
9559         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
9560         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
9561         * config/arc/arc-tables.opt: Regenerate.
9562         * config/arc/arc.c (arc_conditional_register_usage): Handle
9563         reduced register file case.
9564         (arc_file_start): Set must have build attributes.
9565         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
9566         mrf16 option value.
9567         * config/arc/arc.opt (mrf16): Add new option.
9568         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
9569         * config/arc/genmultilib.awk: Handle new mrf16 option.
9570         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
9571         * config/arc/t-multilib: Regenerate.
9572         * doc/invoke.texi (ARC Options): Document mrf16 option.
9574 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9576         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
9577         * config/arc/arc.c (arc_handle_secure_attribute): New function.
9578         (arc_attribute_table): Add 'secure_call' attribute.
9579         (arc_print_operand): Print secure call operand.
9580         (arc_function_ok_for_sibcall): Don't optimize tail calls when
9581         secure.
9582         (arc_is_secure_call_p): New function.  * config/arc/arc.md
9583         (call_i): Add support for sjli instruction.
9584         (call_value_i): Likewise.
9585         * config/arc/constraints.md (Csc): New constraint.
9587 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9588             John Eric Martin  <John.Martin@emmicro-us.com>
9590         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
9591         * config/arc/arc.c (_arc_jli_section): New struct.
9592         (arc_jli_section): New type.
9593         (rc_jli_sections): New static variable.
9594         (arc_handle_jli_attribute): New function.
9595         (arc_attribute_table): Add jli_always and jli_fixed attribute.
9596         (arc_file_end): New function.
9597         (TARGET_ASM_FILE_END): Define.
9598         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
9599         (arc_add_jli_section): New function.
9600         (jli_call_scan): Likewise.
9601         (arc_reorg): Call jli_call_scan.
9602         (arc_output_addsi): Remove 'S' from printing asm operand.
9603         (arc_is_jli_call_p): New function.
9604         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
9605         operand.
9606         (movhi_insn): Likewise.
9607         (movsi_insn): Likewise.
9608         (movsi_set_cc_insn): Likewise.
9609         (loadqi_update): Likewise.
9610         (load_zeroextendqisi_update): Likewise.
9611         (load_signextendqisi_update): Likewise.
9612         (loadhi_update): Likewise.
9613         (load_zeroextendhisi_update): Likewise.
9614         (load_signextendhisi_update): Likewise.
9615         (loadsi_update): Likewise.
9616         (loadsf_update): Likewise.
9617         (movsicc_insn): Likewise.
9618         (bset_insn): Likewise.
9619         (bxor_insn): Likewise.
9620         (bclr_insn): Likewise.
9621         (bmsk_insn): Likewise.
9622         (bicsi3_insn): Likewise.
9623         (cmpsi_cc_c_insn): Likewise.
9624         (movsi_ne): Likewise.
9625         (movsi_cond_exec): Likewise.
9626         (clrsbsi2): Likewise.
9627         (norm_f): Likewise.
9628         (normw): Likewise.
9629         (swap): Likewise.
9630         (divaw): Likewise.
9631         (flag): Likewise.
9632         (sr): Likewise.
9633         (kflag): Likewise.
9634         (ffs): Likewise.
9635         (ffs_f): Likewise.
9636         (fls): Likewise.
9637         (call_i): Remove 'S' asm letter, add jli instruction.
9638         (call_value_i): Likewise.
9639         * config/arc/arc.op (mjli-always): New option.
9640         * config/arc/constraints.md (Cji): New constraint.
9641         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
9642         operand.
9643         (subsf3_fpx): Likewise.
9644         (mulsf3_fpx): Likewise.
9645         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
9646         asm operand.
9647         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
9648         function attrbutes.
9649         * doc/invoke.texi (ARC): Document mjli-always option.
9651 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
9653         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
9654         avoid addition with 0 and use incw and decw where possible.
9656 2018-01-26  Richard Biener  <rguenther@suse.de>
9658         PR tree-optimization/81082
9659         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
9660         association if it requires casting to unsigned.
9661         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
9662         from fold_plusminus_mult_expr to catch important cases late when
9663         range info is available.
9665 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9667         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
9668         * configure.ac (hidden_linkonce): New test.
9669         * configure: Regenerate.
9670         * config.in: Regenerate.
9672 2018-01-26  Julia Koval  <julia.koval@intel.com>
9674         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
9675         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
9676         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
9677         _mm_mask_bitshuffle_epi64_mask): Fix type.
9678         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
9679         USI_FTYPE_V4DI_V4DI_USI): Remove.
9680         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
9681         __builtin_ia32_vpshufbitqmb256_mask,
9682         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
9683         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
9684         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
9686 2018-01-26  Alan Modra  <amodra@gmail.com>
9688         PR target/84033
9689         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
9690         UNSPEC_VBPERMQ.  Sort other unspecs.
9692 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
9694         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
9696 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
9698         PR middle-end/83055
9699         * predict.c (drop_profile): Do not push/pop cfun; update also
9700         node->count.
9701         (handle_missing_profiles): Fix logic looking for zero profiles.
9703 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
9705         PR middle-end/83977
9706         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
9707         on functions with #pragma omp declare simd or functions with simd
9708         attribute.
9709         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
9710         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
9711         Remove trailing \n from warning_at calls.
9713 2018-01-25  Tom de Vries  <tom@codesourcery.com>
9715         PR target/84028
9716         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9717         for neutered workers.
9719 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
9721         PR target/68467
9722         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
9723         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
9725 2018-01-24  Jeff Law  <law@redhat.com>
9727         PR target/83994
9728         * i386.c (get_probe_interval): Move to earlier point.
9729         (ix86_compute_frame_layout): If -fstack-clash-protection and
9730         the frame is larger than the probe interval, then use pushes
9731         to save registers rather than reg->mem moves.
9732         (ix86_expand_prologue): Remove conditional for int_registers_saved
9733         assertion.
9735 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
9737         PR target/84014
9738         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
9739         min/max for never referenced object.
9741 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
9743         PR middle-end/83977
9744         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
9745         here.
9746         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
9747         attributes from DECL_ATTRIBUTES (decl) without affecting
9748         DECL_ATTRIBUTES (current_function_decl).
9749         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
9750         functions with non-NULL DECL_ABSTRACT_ORIGIN.
9752 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
9754         PR tree-optimization/83979
9755         * fold-const.c (fold_comparison): Use constant_boolean_node
9756         instead of boolean_{true,false}_node.
9758 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
9760         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
9761         with zero counts.
9763 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9765         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9766         Simplify the clause that sets the length attribute.
9767         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9768         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
9769         clause that sets the length attribute.
9770         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9772 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9774         PR target/83589
9775         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
9776         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
9777         Add strict parameter.
9778         (prevent_branch_around_nothing): Insert dummy insn between branch to
9779         label and label with no ptx insn inbetween.
9780         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
9782 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9784         PR target/81352
9785         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9786         for neutered threads in warp.
9787         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
9789 2018-01-24  Richard Biener  <rguenther@suse.de>
9791         PR tree-optimization/83176
9792         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
9793         operands.
9795 2018-01-24  Richard Biener  <rguenther@suse.de>
9797         PR tree-optimization/82819
9798         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
9799         code generating pluses that are no-ops in the target precision.
9801 2018-01-24  Richard Biener  <rguenther@suse.de>
9803         PR middle-end/84000
9804         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
9806 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9808         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
9809         to merge probabilities.
9810         * predict.c (probably_never_executed): Also mark as cold functions
9811         with global 0 profile and guessed local profile.
9812         * profile-count.c (profile_probability::combine_with_count): New
9813         member function.
9814         * profile-count.h (profile_probability::operator*,
9815         profile_probability::operator*=, profile_probability::operator/,
9816         profile_probability::operator/=): Reduce precision to adjusted
9817         and set value to guessed on contradictory divisions.
9818         (profile_probability::combine_with_freq): Remove.
9819         (profile_probability::combine_wiht_count): Declare.
9820         (profile_count::force_nonzero):: Set to adjusted.
9821         (profile_count::probability_in):: Set quality to adjusted.
9822         * tree-ssa-tail-merge.c (replace_block_by): Use
9823         combine_with_count.
9825 2018-01-23  Andrew Waterman  <andrew@sifive.com>
9826             Jim Wilson  <jimw@sifive.com>
9828         * config/riscv/riscv.c (riscv_stack_boundary): New.
9829         (riscv_option_override): Set riscv_stack_boundary.  Handle
9830         riscv_preferred_stack_boundary_arg.
9831         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
9832         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
9833         (STACK_BOUNDARY): Set to riscv_stack_boundary.
9834         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
9835         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
9836         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
9838 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
9840         PR target/83905
9841         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
9842         of struct ix86_frame.
9843         (ix86_expand_epilogue): Likewise.  Add a local variable for
9844         the reg_save_offset field in struct ix86_frame.
9846 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
9848         PR tree-optimization/82604
9849         * tree-loop-distribution.c (enum partition_kind): New enum item
9850         PKIND_PARTIAL_MEMSET.
9851         (partition_builtin_p): Support above new enum item.
9852         (generate_code_for_partition): Ditto.
9853         (compute_access_range): Differentiate cases that equality can be
9854         proven at all loops, the innermost loops or no loops.
9855         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
9856         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
9857         (finalize_partitions, distribute_loop): Don't fuse partition of
9858         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
9859         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
9860         parloop is enabled.
9862 2018-01-23  Martin Liska  <mliska@suse.cz>
9864         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
9865         order to ignore the predictor.
9866         (PRED_POLYMORPHIC_CALL): Likewise.
9867         (PRED_RECURSIVE_CALL): Likewise.
9869 2018-01-23  Martin Liska  <mliska@suse.cz>
9871         * tree-profile.c (tree_profiling): Print function header to
9872         aware reader which function we are working on.
9873         * value-prof.c (gimple_find_values_to_profile): Do not print
9874         not interesting value histograms.
9876 2018-01-23  Martin Liska  <mliska@suse.cz>
9878         * profile-count.h (enum profile_quality): Add
9879         profile_uninitialized as the first value. Do not number values
9880         as they are zero based.
9881         (profile_count::verify): Update sanity check.
9882         (profile_probability::verify): Likewise.
9884 2018-01-23  Nathan Sidwell  <nathan@acm.org>
9886         * doc/invoke.texi (ffor-scope): Deprecate.
9888 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9890         PR tree-optimization/83510
9891         * domwalk.c (set_all_edges_as_executable): New function.
9892         (dom_walker::dom_walker): Convert bool param
9893         "skip_unreachable_blocks" to enum reachability.  Move setup of
9894         edge flags to set_all_edges_as_executable and only do it when
9895         reachability is REACHABLE_BLOCKS.
9896         * domwalk.h (enum dom_walker::reachability): New enum.
9897         (dom_walker::dom_walker): Convert bool param
9898         "skip_unreachable_blocks" to enum reachability.
9899         (set_all_edges_as_executable): New decl.
9900         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
9901         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
9902         "reachability".
9903         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
9904         but converting true to REACHABLE_BLOCKS.
9905         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
9906         * tree-vrp.c
9907         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
9908         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
9909         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
9910         REACHABLE_BLOCKS.
9911         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
9912         if check_all_array_refs will be called.
9914 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9916         * tree.c (selftest::test_location_wrappers): Add more test
9917         coverage.
9919 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9921         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
9922         (selftest::test_bit_in_range): Likewise.
9924 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
9926         PR testsuite/83888
9927         * doc/sourcebuild.texi (vect_float): Say that the selector
9928         only describes the situation when -funsafe-math-optimizations is on.
9929         (vect_float_strict): Document.
9931 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
9933         PR tree-optimization/83965
9934         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
9935         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
9936         instead of checking only for a reduction.
9937         (vect_recog_widen_sum_pattern): Likewise.
9939 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9941         * predict.c (probably_never_executed): Only use precise profile info.
9942         (compute_function_frequency): Skip after inlining hack since we now
9943         have quality checking.
9945 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9947         * profile-count.h (profile_probability::very_unlikely,
9948         profile_probability::unlikely, profile_probability::even): Set
9949         precision to guessed.
9951 2018-01-23  Richard Biener  <rguenther@suse.de>
9953         PR tree-optimization/83963
9954         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
9955         Properly terminate dominator walk when crossing the exit edge not
9956         when visiting its source block.
9958 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
9960         PR c++/83918
9961         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
9962         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
9964 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
9966         PR tree-optimization/83957
9967         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
9968         semicolon after for body surrounded by braces.
9970         PR tree-optimization/83081
9971         * profile-count.h (profile_probability::split): New method.
9972         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
9973         Use profile_probability::split.
9974         (do_compare_rtx_and_jump): Fix adjustment of probabilities
9975         when splitting a single conditional jump into 2.
9977 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
9979         PR tree-optimization/69452
9980         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
9981         decl.
9983 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9985         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
9986         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
9987         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
9989 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
9991         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
9992         * config/rl78/rl78.md (movdi): New define_expand.
9993         * config/rl78/rl78.c (rl78_split_movdi): New function.
9995 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
9997         PR target/83862
9998         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
9999         no longer used.
10000         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
10001         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
10002         128-bit to produce an UNSPEC move to get the double word with the
10003         signbit and then a shift directly to do signbit.
10004         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
10005         implementation with a new version that just does either a direct
10006         move or a regular move.  Move memory interface to separate insns.
10007         Move insns so they are next to the expander.
10008         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
10009         with signbit move.  Split big and little endian case.
10010         (signbit<mode>2_dm_mem_le): Likewise.
10011         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
10012         (signbit<mode>2_dm2): Likewise.
10014 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10016         * config/rl78/rl78.md (anddi3): New define_expand.
10018 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10020         * config/rl78/rl78.md (umindi3): New define_expand.
10022 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10024         * config/rl78/rl78.md (smindi3): New define_expand.
10026 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10028         * config/rl78/rl78.md (smaxdi3): New define_expand.
10030 2018-01-22  Carl Love  <cel@us.ibm.com>
10032         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
10033         LVX_V1TI): Add macro expansion.
10034         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
10035         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
10036         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
10037         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
10038         Change check to determine if the instruction is a byte reversing
10039         entry.  Fix typo in comment.
10040         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
10041         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
10042         Add def_builtin calls for new builtins.
10043         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
10044         Add define_insn expansion.
10046 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10048         * config/rl78/rl78.md (umaxdi3): New define_expand.
10050 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10052         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
10053         for non-QImode registers.
10055 2018-01-22  Richard Biener  <rguenther@suse.de>
10057         PR tree-optimization/83963
10058         * graphite-scop-detection.c (scop_detection::get_sese): Delay
10059         including the loop exit block.
10060         (scop_detection::merge_sese): Likewise.
10061         (scop_detection::add_scop): Do it here instead.
10063 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10065         * doc/sourcebuild.texi (arm_softfloat): Document.
10067 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
10069         PR gcc/77734
10070         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
10071         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
10072         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
10074 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10075             David Edelsohn  <dje.gcc@gmail.com>
10077         PR target/83946
10078         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10079         Change "crset eq" to "crset 2".
10080         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10081         (*call_indirect_aix<mode>_nospec): Likewise.
10082         (*call_value_indirect_aix<mode>_nospec): Likewise.
10083         (*call_indirect_elfv2<mode>_nospec): Likewise.
10084         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
10085         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
10086         change assembly output from . to $.
10087         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10088         (indirect_jump<mode>_nospec): Change assembly output from . to $.
10089         (*tablejump<mode>_internal1_nospec): Likewise.
10091 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
10093         PR target/80870
10094         * config/sh/sh_optimize_sett_clrt.cc:
10095         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
10097 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
10099         PR tree-optimization/83940
10100         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
10101         offset_dt to vect_constant_def rather than vect_unknown_def_type.
10102         (vect_check_load_store_mask): Add a mask_dt_out parameter and
10103         use it to pass back the definition type.
10104         (vect_check_store_rhs): Likewise rhs_dt_out.
10105         (vect_build_gather_load_calls): Add a mask_dt argument and use
10106         it instead of a call to vect_is_simple_use.
10107         (vectorizable_store): Update calls to vect_check_load_store_mask
10108         and vect_check_store_rhs.  Use the dt returned by the latter instead
10109         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
10110         instead of calls to vect_is_simple_use.  Pass the scalar rather
10111         than the vector operand to vect_is_simple_use when handling
10112         second and subsequent copies of an rhs value.
10113         (vectorizable_load): Update calls to vect_check_load_store_mask
10114         and vect_build_gather_load_calls.  Use the cached mask_dt and
10115         gs_info.offset_dt instead of calls to vect_is_simple_use.
10117 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
10119         PR middle-end/83945
10120         * tree-emutls.c: Include gimplify.h.
10121         (lower_emutls_2): New function.
10122         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
10123         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
10124         it before further processing.
10126         PR target/83930
10127         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
10128         UINTVAL (trueop1) instead of INTVAL (op1).
10130 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
10132         PR debug/81570
10133         PR debug/83728
10134         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
10135         INCOMING_FRAME_SP_OFFSET if not defined.
10136         (scan_trace): Add ENTRY argument.  If true and
10137         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
10138         emit a note to adjust the CFA offset.
10139         (create_cfi_notes): Adjust scan_trace callers.
10140         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
10141         INCOMING_FRAME_SP_OFFSET in the CIE.
10142         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
10143         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
10144         Likewise.
10145         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
10146         * doc/tm.texi: Regenerated.
10148 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
10150         PR rtl-optimization/83147
10151         * lra-constraints.c (remove_inheritance_pseudos): Use
10152         lra_substitute_pseudo_within_insn.
10154 2018-01-19  Tom de Vries  <tom@codesourcery.com>
10155             Cesar Philippidis  <cesar@codesourcery.com>
10157         PR target/83920
10158         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
10160 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
10162         PR target/83790
10163         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
10164         spaces for function labels.
10166 2018-01-19  Martin Liska  <mliska@suse.cz>
10168         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
10169         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
10170         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
10171         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
10172         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
10173         (PRED_CONST_RETURN): Change from 69 to 65.
10174         (PRED_NULL_RETURN): Change from 91 to 71.
10175         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
10176         (PRED_LOOP_GUARD): Change from 66 to 73.
10178 2018-01-19  Martin Liska  <mliska@suse.cz>
10180         * predict.c (predict_insn_def): Add new assert.
10181         (struct branch_predictor): Change type to signed integer.
10182         (test_prediction_value_range): Amend test to cover
10183         PROB_UNINITIALIZED.
10184         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
10185         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
10186         (PRED_LOOP_ITERATIONS_MAX): Likewise.
10187         (PRED_LOOP_IV_COMPARE): Likewise.
10188         * predict.h (PROB_UNINITIALIZED): Define new constant.
10190 2018-01-19  Martin Liska  <mliska@suse.cz>
10192         * predict.c (dump_prediction): Add new format for
10193         analyze_brprob.py script which is enabled with -details
10194         suboption.
10195         * profile-count.h (precise_p): New function.
10197 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
10199         PR tree-optimization/83922
10200         * tree-vect-loop.c (vect_verify_full_masking): Return false if
10201         there are no statements that need masking.
10202         (vect_active_double_reduction_p): New function.
10203         (vect_analyze_loop_operations): Use it when handling phis that
10204         are not in the loop header.
10206 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
10208         PR tree-optimization/83914
10209         * tree-vect-loop.c (vectorizable_induction): Don't convert
10210         init_expr or apply the peeling adjustment for inductions
10211         that are nested within the vectorized loop.
10213 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10215         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
10216         instead of NEG.
10218 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
10220         PR sanitizer/81715
10221         PR testsuite/83882
10222         * function.h (gimplify_parameters): Add gimple_seq * argument.
10223         * function.c: Include gimple.h and options.h.
10224         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
10225         for the added local temporaries if needed.
10226         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
10227         if there are any parameter cleanups, wrap whole body into a
10228         try/finally with the cleanups.
10230 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
10232         PR target/82964
10233         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
10234         Use GET_MODE_CLASS for scalar floating point.
10236 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
10238         PR ipa/82256
10239         patch by PaX Team
10240         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
10241         Fix call of call_cgraph_insertion_hooks.
10243 2018-01-18  Martin Sebor  <msebor@redhat.com>
10245         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
10247 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
10249         PR ipa/83619
10250         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
10251         frequencies.
10253 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
10255         PR other/70268
10256         * common.opt: (-ffile-prefix-map): New option.
10257         * opts.c (common_handle_option): Defer it.
10258         * opts-global.c (handle_common_deferred_options): Handle it.
10259         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
10260         * file-prefix-map.h: New file.
10261         (remap_debug_filename, add_debug_prefix_map): ...here.
10262         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
10263         * final.c (debug_prefix_map, add_debug_prefix_map
10264         remap_debug_filename): Move to...
10265         * file-prefix-map.c: New file.
10266         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
10267         generalize, get rid of alloca(), use strrchr() instead of strchr().
10268         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
10269         Implement in terms of add_prefix_map().
10270         (remap_macro_filename, remap_debug_filename): Implement in term of
10271         remap_filename().
10272         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
10273         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
10274         * dbxout.c: Include file-prefix-map.h.
10275         * varasm.c: Likewise.
10276         * vmsdbgout.c: Likewise.
10277         * xcoffout.c: Likewise.
10278         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
10279         * doc/cppopts.texi (-fmacro-prefix-map): Document.
10280         * doc/invoke.texi (-ffile-prefix-map): Document.
10281         (-fdebug-prefix-map): Update description.
10283 2018-01-18  Martin Liska  <mliska@suse.cz>
10285         * config/i386/i386.c (indirect_thunk_name): Document that also
10286         lfence is emitted.
10287         (output_indirect_thunk): Document why both instructions
10288         (pause and lfence) are generated.
10290 2018-01-18  Richard Biener  <rguenther@suse.de>
10292         PR tree-optimization/83887
10293         * graphite-scop-detection.c
10294         (scop_detection::get_nearest_dom_with_single_entry): Remove.
10295         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
10296         (scop_detection::merge_sese): Re-implement with a flood-fill
10297         algorithm that properly finds a SESE region if it exists.
10299 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
10301         PR c/61240
10302         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
10303         pointer_diff optimizations use view_convert instead of convert.
10305 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10307         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10308         Generate different code for -mno-speculate-indirect-jumps.
10309         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10310         (*call_indirect_aix<mode>): Disable for
10311         -mno-speculate-indirect-jumps.
10312         (*call_indirect_aix<mode>_nospec): New define_insn.
10313         (*call_value_indirect_aix<mode>): Disable for
10314         -mno-speculate-indirect-jumps.
10315         (*call_value_indirect_aix<mode>_nospec): New define_insn.
10316         (*sibcall_nonlocal_sysv<mode>): Generate different code for
10317         -mno-speculate-indirect-jumps.
10318         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10320 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
10322         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
10323         long double type, set the flags for noting the default long double
10324         type, even if we don't pass or return a long double type.
10326 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
10328         PR ipa/83051
10329         * ipa-inline.c (flatten_function): Do not overwrite final inlining
10330         failure.
10332 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
10334         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
10335         support for merge[hl].
10336         (fold_mergehl_helper): New helper function.
10337         (tree-vector-builder.h): New #include for tree_vector_builder usage.
10338         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
10339         (altivec_vmrglw_direct): Add xxmrglw insn.
10341 2018-01-17  Andrew Waterman  <andrew@sifive.com>
10343         * config/riscv/riscv.c (riscv_conditional_register_usage): If
10344         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
10346 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
10348         PR lto/83121
10349         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
10350         call the lto_location_cache before reading the
10351         DECL_SOURCE_LOCATION of the types.
10353 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
10354             Richard Sandiford  <richard.sandiford@linaro.org>
10356         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
10357         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
10358         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
10359         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
10360         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
10361         Add declaration.
10362         * config/aarch64/constraints.md (aarch64_movti_operand):
10363         Limit immediates.
10364         * config/aarch64/predicates.md (Uti): Add new constraint.
10366 2018-01-17 Carl Love  <cel@us.ibm.com>
10368         * config/rs6000/vsx.md (define_expand xl_len_r,
10369         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
10370         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
10371         lxvll.
10372         (define_expand, define_insn): Move the shift left from  the
10373         define_insn to the define_expand for lxvl and stxvl instructions.
10374         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
10375         and XL_LEN_R definitions to PURE.
10377 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
10379         * config/i386/i386.c (indirect_thunk_name): Declare regno
10380         as unsigned int.  Compare regno with INVALID_REGNUM.
10381         (output_indirect_thunk): Ditto.
10382         (output_indirect_thunk_function): Ditto.
10383         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
10384         in the call to output_indirect_thunk_function.
10386 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
10388         PR middle-end/83884
10389         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
10390         rather than the size of inner_type to determine the stack slot size
10391         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
10393 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
10395         PR target/83546
10396         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
10397         to PTA_SILVERMONT.
10399 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
10401         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
10402         endian Linux systems to optionally enable multilibs for selecting
10403         the long double type if the user configured an explicit type.
10404         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
10405         have no long double multilibs if not defined.
10406         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
10407         warn if the user used -mabi={ieee,ibm}longdouble and we built
10408         multilibs for long double.
10409         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
10410         appropriate multilib option.
10411         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
10412         multilib options.
10413         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
10414         for building long double multilibs.
10415         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
10417 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
10419         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
10420         copies.
10422         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
10423         64 bits.
10424         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
10425         128 bits.
10427         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
10428         variables.
10430         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
10431         return value.
10433 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10435         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
10436         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
10438 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10440         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
10441         different rtl trees depending on TARGET_64BIT.
10442         (rs6000_gen_lvx): Likewise.
10444 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10446         * config/visium/visium.md (nop): Tweak comment.
10447         (hazard_nop): Likewise.
10449 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10451         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
10452         -mspeculate-indirect-jumps.
10453         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
10454         for -mno-speculate-indirect-jumps.
10455         (*call_indirect_elfv2<mode>_nospec): New define_insn.
10456         (*call_value_indirect_elfv2<mode>): Disable for
10457         -mno-speculate-indirect-jumps.
10458         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
10459         (indirect_jump): Emit different RTL for
10460         -mno-speculate-indirect-jumps.
10461         (*indirect_jump<mode>): Disable for
10462         -mno-speculate-indirect-jumps.
10463         (*indirect_jump<mode>_nospec): New define_insn.
10464         (tablejump): Emit different RTL for
10465         -mno-speculate-indirect-jumps.
10466         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
10467         (tablejumpsi_nospec): New define_expand.
10468         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
10469         (tablejumpdi_nospec): New define_expand.
10470         (*tablejump<mode>_internal1): Disable for
10471         -mno-speculate-indirect-jumps.
10472         (*tablejump<mode>_internal1_nospec): New define_insn.
10473         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
10474         option.
10476 2018-01-16  Artyom Skrobov tyomitch@gmail.com
10478         * caller-save.c (insert_save): Drop unnecessary parameter.  All
10479         callers updated.
10481 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10482             Richard Biener  <rguenth@suse.de>
10484         PR libgomp/83590
10485         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
10486         return early, inline manually is_gimple_sizepos.  Make sure if we
10487         call gimplify_expr we don't end up with a gimple constant.
10488         * tree.c (variably_modified_type_p): Don't return true for
10489         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
10490         * gimplify.h (is_gimple_sizepos): Remove.
10492 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10494         PR tree-optimization/83857
10495         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
10496         vectorizable_live_operation for pure SLP statements.
10497         (vectorizable_live_operation): Handle PHIs.
10499 2018-01-16  Richard Biener  <rguenther@suse.de>
10501         PR tree-optimization/83867
10502         * tree-vect-stmts.c (vect_transform_stmt): Precompute
10503         nested_in_vect_loop_p since the scalar stmt may get invalidated.
10505 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10507         PR c/83844
10508         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
10509         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
10510         If off is not INTEGER_CST, issue a may not be aligned warning
10511         rather than isn't aligned.  Use isn%'t rather than isn't.
10512         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
10513         into MULT_EXPR.
10514         <case MULT_EXPR>: Improve the case when bottom and one of the
10515         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
10516         operand, in that case check if the other operand is multiple of
10517         bottom divided by the INTEGER_CST operand.
10519 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10521         PR target/83858
10522         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
10523         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
10524         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
10525         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
10526         * config/pa/pa.c (pa_function_arg_advance): Likewise.
10527         (pa_function_arg, pa_arg_partial_bytes): Likewise.
10528         (pa_function_arg_size): New function.
10530 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10532         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
10533         in a separate statement.
10535 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10537         PR tree-optimization/83847
10538         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
10539         group gathers and scatters.
10541 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10543         PR rtl-optimization/86620
10544         * params.def (max-sched-ready-insns): Bump minimum value to 1.
10546         PR rtl-optimization/83213
10547         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
10548         to last if both are JUMP_INSNs.
10550         PR tree-optimization/83843
10551         * gimple-ssa-store-merging.c
10552         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
10553         store_immediate_info for bswap/nop orig_stores.
10555 2018-01-15  Andrew Waterman  <andrew@sifive.com>
10557         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
10558         !TARGET_MUL.
10559         <UDIV>: Increase cost if !TARGET_DIV.
10561 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
10563         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
10564         (define_attr "cr_logical_3op"): New.
10565         (cceq_ior_compare): Adjust.
10566         (cceq_ior_compare_complement): Adjust.
10567         (*cceq_rev_compare): Adjust.
10568         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
10569         (is_cracked_insn): Adjust.
10570         (insn_must_be_first_in_group): Adjust.
10571         * config/rs6000/40x.md: Adjust.
10572         * config/rs6000/440.md: Adjust.
10573         * config/rs6000/476.md: Adjust.
10574         * config/rs6000/601.md: Adjust.
10575         * config/rs6000/603.md: Adjust.
10576         * config/rs6000/6xx.md: Adjust.
10577         * config/rs6000/7450.md: Adjust.
10578         * config/rs6000/7xx.md: Adjust.
10579         * config/rs6000/8540.md: Adjust.
10580         * config/rs6000/cell.md: Adjust.
10581         * config/rs6000/e300c2c3.md: Adjust.
10582         * config/rs6000/e500mc.md: Adjust.
10583         * config/rs6000/e500mc64.md: Adjust.
10584         * config/rs6000/e5500.md: Adjust.
10585         * config/rs6000/e6500.md: Adjust.
10586         * config/rs6000/mpc.md: Adjust.
10587         * config/rs6000/power4.md: Adjust.
10588         * config/rs6000/power5.md: Adjust.
10589         * config/rs6000/power6.md: Adjust.
10590         * config/rs6000/power7.md: Adjust.
10591         * config/rs6000/power8.md: Adjust.
10592         * config/rs6000/power9.md: Adjust.
10593         * config/rs6000/rs64.md: Adjust.
10594         * config/rs6000/titan.md: Adjust.
10596 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10598         * config/i386/predicates.md (indirect_branch_operand): Rewrite
10599         ix86_indirect_branch_register logic.
10601 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10603         * config/i386/constraints.md (Bs): Update
10604         ix86_indirect_branch_register check.  Don't check
10605         ix86_indirect_branch_register with GOT_memory_operand.
10606         (Bw): Likewise.
10607         * config/i386/predicates.md (GOT_memory_operand): Don't check
10608         ix86_indirect_branch_register here.
10609         (GOT32_symbol_operand): Likewise.
10611 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10613         * config/i386/predicates.md (constant_call_address_operand):
10614         Rewrite ix86_indirect_branch_register logic.
10615         (sibcall_insn_operand): Likewise.
10617 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10619         * config/i386/constraints.md (Bs): Replace
10620         ix86_indirect_branch_thunk_register with
10621         ix86_indirect_branch_register.
10622         (Bw): Likewise.
10623         * config/i386/i386.md (indirect_jump): Likewise.
10624         (tablejump): Likewise.
10625         (*sibcall_memory): Likewise.
10626         (*sibcall_value_memory): Likewise.
10627         Peepholes of indirect call and jump via memory: Likewise.
10628         * config/i386/i386.opt: Likewise.
10629         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10630         (GOT_memory_operand): Likewise.
10631         (call_insn_operand): Likewise.
10632         (sibcall_insn_operand): Likewise.
10633         (GOT32_symbol_operand): Likewise.
10635 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10637         PR middle-end/83837
10638         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
10639         type rather than type addr's type points to.
10640         (expand_omp_atomic_mutex): Likewise.
10641         (expand_omp_atomic): Likewise.
10643 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10645         PR target/83839
10646         * config/i386/i386.c (output_indirect_thunk_function): Use
10647         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
10648         for  __x86_return_thunk.
10650 2018-01-15  Richard Biener  <rguenther@suse.de>
10652         PR middle-end/83850
10653         * expmed.c (extract_bit_field_1): Fix typo.
10655 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10657         PR target/83687
10658         * config/arm/iterators.md (VF): New mode iterator.
10659         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
10660         Remove integer-related logic from pattern.
10661         (neon_vabd<mode>_3): Likewise.
10663 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10665         PR middle-end/82694
10666         * common.opt (fstrict-overflow): No longer an alias.
10667         (fwrapv-pointer): New option.
10668         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
10669         also for pointer types based on flag_wrapv_pointer.
10670         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
10671         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
10672         opts->x_flag_wrapv got set.
10673         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
10674         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
10675         POINTER_TYPE_OVERFLOW_UNDEFINED.
10676         * match.pd: Likewise in address comparison pattern.
10677         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
10679 2018-01-15  Richard Biener  <rguenther@suse.de>
10681         PR lto/83804
10682         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
10683         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
10684         Reset type names to their identifier if their TYPE_DECL doesn't
10685         have linkage (and thus is used for ODR and devirt).
10686         (save_debug_info_for_decl): Remove.
10687         (save_debug_info_for_type): Likewise.
10688         (add_tree_to_fld_list): Adjust.
10689         * tree-pretty-print.c (dump_generic_node): Make dumping of
10690         type names more robust.
10692 2018-01-15  Richard Biener  <rguenther@suse.de>
10694         * BASE-VER: Bump to 8.0.1.
10696 2018-01-14  Martin Sebor  <msebor@redhat.com>
10698         PR other/83508
10699         * builtins.c (check_access): Avoid warning when the no-warning bit
10700         is set.
10702 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
10704         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
10705         * ira-color (allocno_hard_regs_compare): Likewise.
10707 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
10709         PR target/83013
10710         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
10711         Use .pushsection/.popsection.
10713 2018-01-14  Martin Sebor  <msebor@redhat.com>
10715         PR c++/81327
10716         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
10718 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
10720         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
10721         entry from extra_headers.
10722         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
10723         extra_headers, make the list bitwise identical to the i?86-*-* one.
10725 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10727         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
10728         -mcmodel=large with -mindirect-branch=thunk,
10729         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
10730         -mfunction-return=thunk-extern.
10731         * doc/invoke.texi: Document -mcmodel=large is incompatible with
10732         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
10733         -mfunction-return=thunk and -mfunction-return=thunk-extern.
10735 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10737         * config/i386/i386.c (print_reg): Print the name of the full
10738         integer register without '%'.
10739         (ix86_print_operand): Handle 'V'.
10740          * doc/extend.texi: Document 'V' modifier.
10742 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10744         * config/i386/constraints.md (Bs): Disallow memory operand for
10745         -mindirect-branch-register.
10746         (Bw): Likewise.
10747         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10748         (GOT_memory_operand): Likewise.
10749         (call_insn_operand): Likewise.
10750         (sibcall_insn_operand): Likewise.
10751         (GOT32_symbol_operand): Likewise.
10752         * config/i386/i386.md (indirect_jump): Call convert_memory_address
10753         for -mindirect-branch-register.
10754         (tablejump): Likewise.
10755         (*sibcall_memory): Likewise.
10756         (*sibcall_value_memory): Likewise.
10757         Disallow peepholes of indirect call and jump via memory for
10758         -mindirect-branch-register.
10759         (*call_pop): Replace m with Bw.
10760         (*call_value_pop): Likewise.
10761         (*sibcall_pop_memory): Replace m with Bs.
10762         * config/i386/i386.opt (mindirect-branch-register): New option.
10763         * doc/invoke.texi: Document -mindirect-branch-register option.
10765 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10767         * config/i386/i386-protos.h (ix86_output_function_return): New.
10768         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
10769         set function_return_type.
10770         (indirect_thunk_name): Add ret_p to indicate thunk for function
10771         return.
10772         (output_indirect_thunk_function): Pass false to
10773         indirect_thunk_name.
10774         (ix86_output_indirect_branch_via_reg): Likewise.
10775         (ix86_output_indirect_branch_via_push): Likewise.
10776         (output_indirect_thunk_function): Create alias for function
10777         return thunk if regno < 0.
10778         (ix86_output_function_return): New function.
10779         (ix86_handle_fndecl_attribute): Handle function_return.
10780         (ix86_attribute_table): Add function_return.
10781         * config/i386/i386.h (machine_function): Add
10782         function_return_type.
10783         * config/i386/i386.md (simple_return_internal): Use
10784         ix86_output_function_return.
10785         (simple_return_internal_long): Likewise.
10786         * config/i386/i386.opt (mfunction-return=): New option.
10787         (indirect_branch): Mention -mfunction-return=.
10788         * doc/extend.texi: Document function_return function attribute.
10789         * doc/invoke.texi: Document -mfunction-return= option.
10791 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10793         * config/i386/i386-opts.h (indirect_branch): New.
10794         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
10795         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
10796         with local indirect jump when converting indirect call and jump.
10797         (ix86_set_indirect_branch_type): New.
10798         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
10799         (indirectlabelno): New.
10800         (indirect_thunk_needed): Likewise.
10801         (indirect_thunk_bnd_needed): Likewise.
10802         (indirect_thunks_used): Likewise.
10803         (indirect_thunks_bnd_used): Likewise.
10804         (INDIRECT_LABEL): Likewise.
10805         (indirect_thunk_name): Likewise.
10806         (output_indirect_thunk): Likewise.
10807         (output_indirect_thunk_function): Likewise.
10808         (ix86_output_indirect_branch_via_reg): Likewise.
10809         (ix86_output_indirect_branch_via_push): Likewise.
10810         (ix86_output_indirect_branch): Likewise.
10811         (ix86_output_indirect_jmp): Likewise.
10812         (ix86_code_end): Call output_indirect_thunk_function if needed.
10813         (ix86_output_call_insn): Call ix86_output_indirect_branch if
10814         needed.
10815         (ix86_handle_fndecl_attribute): Handle indirect_branch.
10816         (ix86_attribute_table): Add indirect_branch.
10817         * config/i386/i386.h (machine_function): Add indirect_branch_type
10818         and has_local_indirect_jump.
10819         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
10820         to true.
10821         (tablejump): Likewise.
10822         (*indirect_jump): Use ix86_output_indirect_jmp.
10823         (*tablejump_1): Likewise.
10824         (simple_return_indirect_internal): Likewise.
10825         * config/i386/i386.opt (mindirect-branch=): New option.
10826         (indirect_branch): New.
10827         (keep): Likewise.
10828         (thunk): Likewise.
10829         (thunk-inline): Likewise.
10830         (thunk-extern): Likewise.
10831         * doc/extend.texi: Document indirect_branch function attribute.
10832         * doc/invoke.texi: Document -mindirect-branch= option.
10834 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
10836         PR ipa/83051
10837         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
10839 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
10841         * ipa-inline.c (want_inline_small_function_p): Return false if
10842         inlining has already failed with CIF_FINAL_ERROR.
10843         (update_caller_keys): Call want_inline_small_function_p before
10844         can_inline_edge_p.
10845         (update_callee_keys): Likewise.
10847 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10849         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
10850         New function.
10851         (rs6000_quadword_masked_address_p): Likewise.
10852         (quad_aligned_load_p): Likewise.
10853         (quad_aligned_store_p): Likewise.
10854         (const_load_sequence_p): Add comment to describe the outer-most loop.
10855         (mimic_memory_attributes_and_flags): New function.
10856         (rs6000_gen_stvx): Likewise.
10857         (replace_swapped_aligned_store): Likewise.
10858         (rs6000_gen_lvx): Likewise.
10859         (replace_swapped_aligned_load): Likewise.
10860         (replace_swapped_load_constant): Capitalize argument name in
10861         comment describing this function.
10862         (rs6000_analyze_swaps): Add a third pass to search for vector loads
10863         and stores that access quad-word aligned addresses and replace
10864         with stvx or lvx instructions when appropriate.
10865         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
10866         New function prototype.
10867         (rs6000_quadword_masked_address_p): Likewise.
10868         (rs6000_gen_lvx): Likewise.
10869         (rs6000_gen_stvx): Likewise.
10870         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
10871         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
10872         when memory address is aligned.
10873         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
10874         this split to select lvx instruction when memory address is aligned.
10875         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
10876         instruction when memory address is aligned.
10877         (*vsx_le_perm_load_v16qi): Likewise.
10878         (four unnamed splitters): Modify to select the stvx instruction
10879         when memory is aligned.
10881 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
10883         * predict.c (determine_unlikely_bbs): Handle correctly BBs
10884         which appears in the queue multiple times.
10886 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10887             Alan Hayward  <alan.hayward@arm.com>
10888             David Sherwood  <david.sherwood@arm.com>
10890         * tree-vectorizer.h (vec_lower_bound): New structure.
10891         (_loop_vec_info): Add check_nonzero and lower_bounds.
10892         (LOOP_VINFO_CHECK_NONZERO): New macro.
10893         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
10894         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
10895         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
10896         fields.  Make seg_len the distance travelled, not including the
10897         access size.
10898         (dr_direction_indicator): Declare.
10899         (dr_zero_step_indicator): Likewise.
10900         (dr_known_forward_stride_p): Likewise.
10901         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
10902         tree-ssanames.h.
10903         (runtime_alias_check_p): Allow runtime alias checks with
10904         variable strides.
10905         (operator ==): Compare access_size and align.
10906         (prune_runtime_alias_test_list): Rework for new distinction between
10907         the access_size and seg_len.
10908         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
10909         segment lengths.
10910         (get_segment_min_max): New function.
10911         (create_intersect_range_checks): Use it.
10912         (dr_step_indicator): New function.
10913         (dr_direction_indicator): Likewise.
10914         (dr_zero_step_indicator): Likewise.
10915         (dr_known_forward_stride_p): Likewise.
10916         * tree-loop-distribution.c (data_ref_segment_size): Return
10917         DR_STEP * (niters - 1).
10918         (compute_alias_check_pairs): Update call to the dr_with_seg_len
10919         constructor.
10920         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
10921         (vect_preserves_scalar_order_p): New function, split out from...
10922         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
10923         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
10924         (vect_vfa_access_size): New function.
10925         (vect_vfa_align): Likewise.
10926         (vect_compile_time_alias): Take access_size_a and access_b arguments.
10927         (dump_lower_bound): New function.
10928         (vect_check_lower_bound): Likewise.
10929         (vect_small_gap_p): Likewise.
10930         (vectorizable_with_step_bound_p): Likewise.
10931         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
10932         depencies if the vectorization factor is 1.  Convert the checks
10933         for nonzero steps into checks on the bounds of DR_STEP.  Try using
10934         a bunds check for variable steps if the minimum required step is
10935         relatively small. Update calls to the dr_with_seg_len
10936         constructor and to vect_compile_time_alias.
10937         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
10938         function.
10939         (vect_loop_versioning): Call it.
10940         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
10941         when retrying.
10942         (vect_estimate_min_profitable_iters): Account for any bounds checks.
10944 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10945             Alan Hayward  <alan.hayward@arm.com>
10946             David Sherwood  <david.sherwood@arm.com>
10948         * doc/sourcebuild.texi (vect_scatter_store): Document.
10949         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
10950         optabs.
10951         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
10952         Document.
10953         * genopinit.c (main): Add supports_vec_scatter_store and
10954         supports_vec_scatter_store_cached to target_optabs.
10955         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
10956         IFN_MASK_SCATTER_STORE.
10957         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
10958         functions.
10959         * internal-fn.h (internal_store_fn_p): Declare.
10960         (internal_fn_stored_value_index): Likewise.
10961         * internal-fn.c (scatter_store_direct): New macro.
10962         (expand_scatter_store_optab_fn): New function.
10963         (direct_scatter_store_optab_supported_p): New macro.
10964         (internal_store_fn_p): New function.
10965         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
10966         IFN_MASK_SCATTER_STORE.
10967         (internal_fn_mask_index): Likewise.
10968         (internal_fn_stored_value_index): New function.
10969         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
10970         for scatter stores.
10971         * optabs-query.h (supports_vec_scatter_store_p): Declare.
10972         * optabs-query.c (supports_vec_scatter_store_p): New function.
10973         * tree-vectorizer.h (vect_get_store_rhs): Declare.
10974         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
10975         true for scatter stores.
10976         (vect_gather_scatter_fn_p): Handle scatter stores too.
10977         (vect_check_gather_scatter): Consider using scatter stores if
10978         supports_vec_scatter_store_p.
10979         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
10980         scatter stores too.
10981         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
10982         internal_fn_stored_value_index.
10983         (check_load_store_masking): Handle scatter stores too.
10984         (vect_get_store_rhs): Make public.
10985         (vectorizable_call): Use internal_store_fn_p.
10986         (vectorizable_store): Handle scatter store internal functions.
10987         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
10988         when deciding whether the end of the group has been reached.
10989         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
10990         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
10991         (mask_scatter_store<mode>): New insns.
10993 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10994             Alan Hayward  <alan.hayward@arm.com>
10995             David Sherwood  <david.sherwood@arm.com>
10997         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
10998         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
10999         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
11000         function.
11001         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
11002         Use vect_truncate_gather_scatter_offset if we can't treat the
11003         operation as a normal gather load or scatter store.
11004         (get_group_load_store_type): Take the gather_scatter_info
11005         as argument.  Try using a gather load or scatter store for
11006         single-element groups.
11007         (get_load_store_type): Update calls to get_group_load_store_type
11008         and vect_use_strided_gather_scatters_p.
11010 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11011             Alan Hayward  <alan.hayward@arm.com>
11012             David Sherwood  <david.sherwood@arm.com>
11014         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
11015         optional tree argument.
11016         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
11017         null target hooks.
11018         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
11019         but continue to use the current value as a fallback.
11020         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
11021         to compare the updates.
11022         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
11023         (get_load_store_type): Use it when handling a strided access.
11024         (vect_get_strided_load_store_ops): New function.
11025         (vect_get_data_ptr_increment): Likewise.
11026         (vectorizable_load): Handle strided gather loads.  Always pass
11027         a step to vect_create_data_ref_ptr and bump_vector_ptr.
11029 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11030             Alan Hayward  <alan.hayward@arm.com>
11031             David Sherwood  <david.sherwood@arm.com>
11033         * doc/md.texi (gather_load@var{m}): Document.
11034         (mask_gather_load@var{m}): Likewise.
11035         * genopinit.c (main): Add supports_vec_gather_load and
11036         supports_vec_gather_load_cached to target_optabs.
11037         * optabs-tree.c (init_tree_optimization_optabs): Use
11038         ggc_cleared_alloc to allocate target_optabs.
11039         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
11040         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
11041         functions.
11042         * internal-fn.h (internal_load_fn_p): Declare.
11043         (internal_gather_scatter_fn_p): Likewise.
11044         (internal_fn_mask_index): Likewise.
11045         (internal_gather_scatter_fn_supported_p): Likewise.
11046         * internal-fn.c (gather_load_direct): New macro.
11047         (expand_gather_load_optab_fn): New function.
11048         (direct_gather_load_optab_supported_p): New macro.
11049         (direct_internal_fn_optab): New function.
11050         (internal_load_fn_p): Likewise.
11051         (internal_gather_scatter_fn_p): Likewise.
11052         (internal_fn_mask_index): Likewise.
11053         (internal_gather_scatter_fn_supported_p): Likewise.
11054         * optabs-query.c (supports_at_least_one_mode_p): New function.
11055         (supports_vec_gather_load_p): Likewise.
11056         * optabs-query.h (supports_vec_gather_load_p): Declare.
11057         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
11058         and memory_type field.
11059         (NUM_PATTERNS): Bump to 15.
11060         * tree-vect-data-refs.c: Include internal-fn.h.
11061         (vect_gather_scatter_fn_p): New function.
11062         (vect_describe_gather_scatter_call): Likewise.
11063         (vect_check_gather_scatter): Try using internal functions for
11064         gather loads.  Recognize existing calls to a gather load function.
11065         (vect_analyze_data_refs): Consider using gather loads if
11066         supports_vec_gather_load_p.
11067         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
11068         (vect_get_gather_scatter_offset_type): Likewise.
11069         (vect_convert_mask_for_vectype): Likewise.
11070         (vect_add_conversion_to_patterm): Likewise.
11071         (vect_try_gather_scatter_pattern): Likewise.
11072         (vect_recog_gather_scatter_pattern): New pattern recognizer.
11073         (vect_vect_recog_func_ptrs): Add it.
11074         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
11075         internal_fn_mask_index and internal_gather_scatter_fn_p.
11076         (check_load_store_masking): Take the gather_scatter_info as an
11077         argument and handle gather loads.
11078         (vect_get_gather_scatter_ops): New function.
11079         (vectorizable_call): Check internal_load_fn_p.
11080         (vectorizable_load): Likewise.  Handle gather load internal
11081         functions.
11082         (vectorizable_store): Update call to check_load_store_masking.
11083         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
11084         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
11085         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
11086         (aarch64_gather_scale_operand_d): New predicates.
11087         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
11088         (mask_gather_load<mode>): New insns.
11090 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11091             Alan Hayward  <alan.hayward@arm.com>
11092             David Sherwood  <david.sherwood@arm.com>
11094         * optabs.def (fold_left_plus_optab): New optab.
11095         * doc/md.texi (fold_left_plus_@var{m}): Document.
11096         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
11097         * internal-fn.c (fold_left_direct): Define.
11098         (expand_fold_left_optab_fn): Likewise.
11099         (direct_fold_left_optab_supported_p): Likewise.
11100         * fold-const-call.c (fold_const_fold_left): New function.
11101         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
11102         * tree-parloops.c (valid_reduction_p): New function.
11103         (gather_scalar_reductions): Use it.
11104         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
11105         (vect_finish_replace_stmt): Declare.
11106         * tree-vect-loop.c (fold_left_reduction_fn): New function.
11107         (needs_fold_left_reduction_p): New function, split out from...
11108         (vect_is_simple_reduction): ...here.  Accept reductions that
11109         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
11110         (vect_force_simple_reduction): Also store the reduction type in
11111         the assignment's STMT_VINFO_REDUC_TYPE.
11112         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
11113         (merge_with_identity): New function.
11114         (vect_expand_fold_left): Likewise.
11115         (vectorize_fold_left_reduction): Likewise.
11116         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
11117         scalar phi in place for it.  Check for target support and reject
11118         cases that would reassociate the operation.  Defer the transform
11119         phase to vectorize_fold_left_reduction.
11120         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
11121         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
11122         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
11124 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11126         * tree-if-conv.c (predicate_mem_writes): Remove redundant
11127         call to ifc_temp_var.
11129 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11130             Alan Hayward  <alan.hayward@arm.com>
11131             David Sherwood  <david.sherwood@arm.com>
11133         * target.def (legitimize_address_displacement): Take the original
11134         offset as a poly_int.
11135         * targhooks.h (default_legitimize_address_displacement): Update
11136         accordingly.
11137         * targhooks.c (default_legitimize_address_displacement): Likewise.
11138         * doc/tm.texi: Regenerate.
11139         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
11140         as an argument, moving assert of ad->disp == ad->disp_term to...
11141         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
11142         Try calling targetm.legitimize_address_displacement before expanding
11143         the address rather than afterwards, and adjust for the new interface.
11144         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
11145         Match the new hook interface.  Handle SVE addresses.
11146         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
11147         new hook interface.
11149 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11151         * Makefile.in (OBJS): Add early-remat.o.
11152         * target.def (select_early_remat_modes): New hook.
11153         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
11154         * doc/tm.texi: Regenerate.
11155         * targhooks.h (default_select_early_remat_modes): Declare.
11156         * targhooks.c (default_select_early_remat_modes): New function.
11157         * timevar.def (TV_EARLY_REMAT): New timevar.
11158         * passes.def (pass_early_remat): New pass.
11159         * tree-pass.h (make_pass_early_remat): Declare.
11160         * early-remat.c: New file.
11161         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
11162         function.
11163         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
11165 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11166             Alan Hayward  <alan.hayward@arm.com>
11167             David Sherwood  <david.sherwood@arm.com>
11169         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
11170         vfm1 with a bound_epilog parameter.
11171         (vect_do_peeling): Update calls accordingly, and move the prologue
11172         call earlier in the function.  Treat the base bound_epilog as 0 for
11173         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
11174         this base when peeling for gaps.
11175         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
11176         with fully-masked loops.
11177         (vect_estimate_min_profitable_iters): Handle the single peeled
11178         iteration in that case.
11180 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11181             Alan Hayward  <alan.hayward@arm.com>
11182             David Sherwood  <david.sherwood@arm.com>
11184         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
11185         single-element interleaving even if the size is not a power of 2.
11186         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
11187         accesses for single-element interleaving if the group size is
11188         not a power of 2.
11190 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11191             Alan Hayward  <alan.hayward@arm.com>
11192             David Sherwood  <david.sherwood@arm.com>
11194         * doc/md.texi (fold_extract_last_@var{m}): Document.
11195         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
11196         * optabs.def (fold_extract_last_optab): New optab.
11197         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
11198         * internal-fn.c (fold_extract_direct): New macro.
11199         (expand_fold_extract_optab_fn): Likewise.
11200         (direct_fold_extract_optab_supported_p): Likewise.
11201         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
11202         * tree-vect-loop.c (vect_model_reduction_cost): Handle
11203         EXTRACT_LAST_REDUCTION.
11204         (get_initial_def_for_reduction): Do not create an initial vector
11205         for EXTRACT_LAST_REDUCTION reductions.
11206         (vectorizable_reduction): Leave the scalar phi in place for
11207         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
11208         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
11209         epilogue code for EXTRACT_LAST_REDUCTION and defer the
11210         transform phase to vectorizable_condition.
11211         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
11212         split out from...
11213         (vect_finish_stmt_generation): ...here.
11214         (vect_finish_replace_stmt): New function.
11215         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
11216         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
11217         pattern.
11218         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
11220 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11221             Alan Hayward  <alan.hayward@arm.com>
11222             David Sherwood  <david.sherwood@arm.com>
11224         * doc/md.texi (extract_last_@var{m}): Document.
11225         * optabs.def (extract_last_optab): New optab.
11226         * internal-fn.def (EXTRACT_LAST): New internal function.
11227         * internal-fn.c (cond_unary_direct): New macro.
11228         (expand_cond_unary_optab_fn): Likewise.
11229         (direct_cond_unary_optab_supported_p): Likewise.
11230         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
11231         loops using EXTRACT_LAST.
11232         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
11233         (extract_last_<mode>): ...this optab.
11234         (vec_extract<mode><Vel>): Update accordingly.
11236 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11237             Alan Hayward  <alan.hayward@arm.com>
11238             David Sherwood  <david.sherwood@arm.com>
11240         * target.def (empty_mask_is_expensive): New hook.
11241         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
11242         * doc/tm.texi: Regenerate.
11243         * targhooks.h (default_empty_mask_is_expensive): Declare.
11244         * targhooks.c (default_empty_mask_is_expensive): New function.
11245         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
11246         if the target says that empty masks are expensive.
11247         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
11248         New function.
11249         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
11251 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11252             Alan Hayward  <alan.hayward@arm.com>
11253             David Sherwood  <david.sherwood@arm.com>
11255         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
11256         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
11257         (vect_use_loop_mask_for_alignment_p): New function.
11258         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
11259         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
11260         niters_skip argument.  Make sure that the first niters_skip elements
11261         of the first iteration are inactive.
11262         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
11263         Update call to vect_set_loop_masks_directly.
11264         (get_misalign_in_elems): New function, split out from...
11265         (vect_gen_prolog_loop_niters): ...here.
11266         (vect_update_init_of_dr): Take a code argument that specifies whether
11267         the adjustment should be added or subtracted.
11268         (vect_update_init_of_drs): Likewise.
11269         (vect_prepare_for_masked_peels): New function.
11270         (vect_do_peeling): Skip prologue peeling if we're using a mask
11271         instead.  Update call to vect_update_inits_of_drs.
11272         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11273         mask_skip_niters.
11274         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
11275         alignment.  Do not include the number of peeled iterations in
11276         the minimum threshold in that case.
11277         (vectorizable_induction): Adjust the start value down by
11278         LOOP_VINFO_MASK_SKIP_NITERS iterations.
11279         (vect_transform_loop): Call vect_prepare_for_masked_peels.
11280         Take the number of skipped iterations into account when calculating
11281         the loop bounds.
11282         * tree-vect-stmts.c (vect_gen_while_not): New function.
11284 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11285             Alan Hayward  <alan.hayward@arm.com>
11286             David Sherwood  <david.sherwood@arm.com>
11288         * doc/sourcebuild.texi (vect_fully_masked): Document.
11289         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
11290         default value to 0.
11291         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
11292         split out from...
11293         (vect_analyze_loop_2): ...here. Don't check the vectorization
11294         factor against the number of loop iterations if the loop is
11295         fully-masked.
11297 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11298             Alan Hayward  <alan.hayward@arm.com>
11299             David Sherwood  <david.sherwood@arm.com>
11301         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
11302         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
11303         (dump_groups): Update accordingly.
11304         (iv_use::mem_type): New member variable.
11305         (address_p): New function.
11306         (record_use): Add a mem_type argument and initialize the new
11307         mem_type field.
11308         (record_group_use): Add a mem_type argument.  Use address_p.
11309         Remove obsolete null checks of base_object.  Update call to record_use.
11310         (find_interesting_uses_op): Update call to record_group_use.
11311         (find_interesting_uses_cond): Likewise.
11312         (find_interesting_uses_address): Likewise.
11313         (get_mem_type_for_internal_fn): New function.
11314         (find_address_like_use): Likewise.
11315         (find_interesting_uses_stmt): Try find_address_like_use before
11316         calling find_interesting_uses_op.
11317         (addr_offset_valid_p): Use the iv mem_type field as the type
11318         of the addressed memory.
11319         (add_autoinc_candidates): Likewise.
11320         (get_address_cost): Likewise.
11321         (split_small_address_groups_p): Use address_p.
11322         (split_address_groups): Likewise.
11323         (add_iv_candidate_for_use): Likewise.
11324         (autoinc_possible_for_pair): Likewise.
11325         (rewrite_groups): Likewise.
11326         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
11327         (determine_group_iv_cost): Update after split of USE_ADDRESS.
11328         (get_alias_ptr_type_for_ptr_address): New function.
11329         (rewrite_use_address): Rewrite address uses in calls that were
11330         identified by find_address_like_use.
11332 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11333             Alan Hayward  <alan.hayward@arm.com>
11334             David Sherwood  <david.sherwood@arm.com>
11336         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
11337         TARGET_MEM_REFs.
11338         * gimple-expr.h (is_gimple_addressable: Likewise.
11339         * gimple-expr.c (is_gimple_address): Likewise.
11340         * internal-fn.c (expand_call_mem_ref): New function.
11341         (expand_mask_load_optab_fn): Use it.
11342         (expand_mask_store_optab_fn): Likewise.
11344 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11345             Alan Hayward  <alan.hayward@arm.com>
11346             David Sherwood  <david.sherwood@arm.com>
11348         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
11349         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
11350         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
11351         (cond_umax@var{mode}): Document.
11352         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
11353         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
11354         (cond_umin_optab, cond_umax_optab): New optabs.
11355         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
11356         (COND_IOR, COND_XOR): New internal functions.
11357         * internal-fn.h (get_conditional_internal_fn): Declare.
11358         * internal-fn.c (cond_binary_direct): New macro.
11359         (expand_cond_binary_optab_fn): Likewise.
11360         (direct_cond_binary_optab_supported_p): Likewise.
11361         (get_conditional_internal_fn): New function.
11362         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
11363         Cope with reduction statements that are vectorized as calls rather
11364         than assignments.
11365         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
11366         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
11367         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
11368         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
11369         (UNSPEC_COND_EOR): New unspecs.
11370         (optab): Add mappings for them.
11371         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
11372         (sve_int_op, sve_fp_op): New int attributes.
11374 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11375             Alan Hayward  <alan.hayward@arm.com>
11376             David Sherwood  <david.sherwood@arm.com>
11378         * optabs.def (while_ult_optab): New optab.
11379         * doc/md.texi (while_ult@var{m}@var{n}): Document.
11380         * internal-fn.def (WHILE_ULT): New internal function.
11381         * internal-fn.h (direct_internal_fn_supported_p): New override
11382         that takes two types as argument.
11383         * internal-fn.c (while_direct): New macro.
11384         (expand_while_optab_fn): New function.
11385         (convert_optab_supported_p): Likewise.
11386         (direct_while_optab_supported_p): New macro.
11387         * wide-int.h (wi::udiv_ceil): New function.
11388         * tree-vectorizer.h (rgroup_masks): New structure.
11389         (vec_loop_masks): New typedef.
11390         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
11391         and fully_masked_p.
11392         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
11393         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
11394         (vect_max_vf): New function.
11395         (slpeel_make_loop_iterate_ntimes): Delete.
11396         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
11397         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
11398         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
11399         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
11400         internal-fn.h, stor-layout.h and optabs-query.h.
11401         (vect_set_loop_mask): New function.
11402         (add_preheader_seq): Likewise.
11403         (add_header_seq): Likewise.
11404         (interleave_supported_p): Likewise.
11405         (vect_maybe_permute_loop_masks): Likewise.
11406         (vect_set_loop_masks_directly): Likewise.
11407         (vect_set_loop_condition_masked): Likewise.
11408         (vect_set_loop_condition_unmasked): New function, split out from
11409         slpeel_make_loop_iterate_ntimes.
11410         (slpeel_make_loop_iterate_ntimes): Rename to..
11411         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
11412         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
11413         (vect_do_peeling): Update call accordingly.
11414         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
11415         loops.
11416         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11417         mask_compare_type, can_fully_mask_p and fully_masked_p.
11418         (release_vec_loop_masks): New function.
11419         (_loop_vec_info): Use it to free the loop masks.
11420         (can_produce_all_loop_masks_p): New function.
11421         (vect_get_max_nscalars_per_iter): Likewise.
11422         (vect_verify_full_masking): Likewise.
11423         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
11424         retries, and free the mask rgroups before retrying.  Check loop-wide
11425         reasons for disallowing fully-masked loops.  Make the final decision
11426         about whether use a fully-masked loop or not.
11427         (vect_estimate_min_profitable_iters): Do not assume that peeling
11428         for the number of iterations will be needed for fully-masked loops.
11429         (vectorizable_reduction): Disable fully-masked loops.
11430         (vectorizable_live_operation): Likewise.
11431         (vect_halve_mask_nunits): New function.
11432         (vect_double_mask_nunits): Likewise.
11433         (vect_record_loop_mask): Likewise.
11434         (vect_get_loop_mask): Likewise.
11435         (vect_transform_loop): Handle the case in which the final loop
11436         iteration might handle a partial vector.  Call vect_set_loop_condition
11437         instead of slpeel_make_loop_iterate_ntimes.
11438         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
11439         (check_load_store_masking): New function.
11440         (prepare_load_store_mask): Likewise.
11441         (vectorizable_store): Handle fully-masked loops.
11442         (vectorizable_load): Likewise.
11443         (supportable_widening_operation): Use vect_halve_mask_nunits for
11444         booleans.
11445         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
11446         (vect_gen_while): New function.
11447         * config/aarch64/aarch64.md (umax<mode>3): New expander.
11448         (aarch64_uqdec<mode>): New insn.
11450 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11451             Alan Hayward  <alan.hayward@arm.com>
11452             David Sherwood  <david.sherwood@arm.com>
11454         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
11455         (reduc_xor_scal_optab): New optabs.
11456         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
11457         (reduc_xor_scal_@var{m}): Document.
11458         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
11459         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
11460         internal functions.
11461         * fold-const-call.c (fold_const_call): Handle them.
11462         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
11463         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
11464         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
11465         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
11466         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
11467         (UNSPEC_XORV): New unspecs.
11468         (optab): Add entries for them.
11469         (BITWISEV): New int iterator.
11470         (bit_reduc_op): New int attributes.
11472 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11473             Alan Hayward  <alan.hayward@arm.com>
11474             David Sherwood  <david.sherwood@arm.com>
11476         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
11477         * internal-fn.def (VEC_SHL_INSERT): New internal function.
11478         * optabs.def (vec_shl_insert_optab): New optab.
11479         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
11480         (duplicate_and_interleave): Likewise.
11481         * tree-vect-loop.c: Include internal-fn.h.
11482         (neutral_op_for_slp_reduction): New function, split out from
11483         get_initial_defs_for_reduction.
11484         (get_initial_def_for_reduction): Handle option 2 for variable-length
11485         vectors by loading the neutral value into a vector and then shifting
11486         the initial value into element 0.
11487         (get_initial_defs_for_reduction): Replace the code argument with
11488         the neutral value calculated by neutral_op_for_slp_reduction.
11489         Use gimple_build_vector for constant-length vectors.
11490         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
11491         but the first group_size elements have a neutral value.
11492         Use duplicate_and_interleave otherwise.
11493         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
11494         Update call to get_initial_defs_for_reduction.  Handle SLP
11495         reductions for variable-length vectors by creating one vector
11496         result for each scalar result, with the elements associated
11497         with other scalar results stubbed out with the neutral value.
11498         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
11499         Require IFN_VEC_SHL_INSERT for double reductions on
11500         variable-length vectors, or SLP reductions that have
11501         a neutral value.  Require can_duplicate_and_interleave_p
11502         support for variable-length unchained SLP reductions if there
11503         is no neutral value, such as for MIN/MAX reductions.  Also require
11504         the number of vector elements to be a multiple of the number of
11505         SLP statements when doing variable-length unchained SLP reductions.
11506         Update call to vect_create_epilog_for_reduction.
11507         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
11508         and remove initial values.
11509         (duplicate_and_interleave): Make public.
11510         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
11511         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
11513 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11514             Alan Hayward  <alan.hayward@arm.com>
11515             David Sherwood  <david.sherwood@arm.com>
11517         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
11518         (can_duplicate_and_interleave_p): New function.
11519         (vect_get_and_check_slp_defs): Take the vector of statements
11520         rather than just the current one.  Remove excess parentheses.
11521         Restriction rejectinon of vect_constant_def and vect_external_def
11522         for variable-length vectors to boolean types, or types for which
11523         can_duplicate_and_interleave_p is false.
11524         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
11525         (duplicate_and_interleave): New function.
11526         (vect_get_constant_vectors): Use gimple_build_vector for
11527         constant-length vectors and suitable variable-length constant
11528         vectors.  Use duplicate_and_interleave for other variable-length
11529         vectors.  Don't defer the update when inserting new statements.
11531 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11532             Alan Hayward  <alan.hayward@arm.com>
11533             David Sherwood  <david.sherwood@arm.com>
11535         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
11536         min_profitable_iters doesn't go negative.
11538 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11539             Alan Hayward  <alan.hayward@arm.com>
11540             David Sherwood  <david.sherwood@arm.com>
11542         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
11543         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
11544         * optabs.def (vec_mask_load_lanes_optab): New optab.
11545         (vec_mask_store_lanes_optab): Likewise.
11546         * internal-fn.def (MASK_LOAD_LANES): New internal function.
11547         (MASK_STORE_LANES): Likewise.
11548         * internal-fn.c (mask_load_lanes_direct): New macro.
11549         (mask_store_lanes_direct): Likewise.
11550         (expand_mask_load_optab_fn): Handle masked operations.
11551         (expand_mask_load_lanes_optab_fn): New macro.
11552         (expand_mask_store_optab_fn): Handle masked operations.
11553         (expand_mask_store_lanes_optab_fn): New macro.
11554         (direct_mask_load_lanes_optab_supported_p): Likewise.
11555         (direct_mask_store_lanes_optab_supported_p): Likewise.
11556         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
11557         parameter.
11558         (vect_load_lanes_supported): Likewise.
11559         * tree-vect-data-refs.c (strip_conversion): New function.
11560         (can_group_stmts_p): Likewise.
11561         (vect_analyze_data_ref_accesses): Use it instead of checking
11562         for a pair of assignments.
11563         (vect_store_lanes_supported): Take a masked_p parameter.
11564         (vect_load_lanes_supported): Likewise.
11565         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
11566         vect_store_lanes_supported and vect_load_lanes_supported.
11567         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
11568         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
11569         parameter.  Don't allow gaps for masked accesses.
11570         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
11571         and vect_load_lanes_supported.
11572         (get_load_store_type): Take a masked_p parameter and update
11573         call to get_group_load_store_type.
11574         (vectorizable_store): Update call to get_load_store_type.
11575         Handle IFN_MASK_STORE_LANES.
11576         (vectorizable_load): Update call to get_load_store_type.
11577         Handle IFN_MASK_LOAD_LANES.
11579 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11580             Alan Hayward  <alan.hayward@arm.com>
11581             David Sherwood  <david.sherwood@arm.com>
11583         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
11584         modes for SVE.
11585         * config/aarch64/aarch64-protos.h
11586         (aarch64_sve_struct_memory_operand_p): Declare.
11587         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
11588         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
11589         (VPRED, vpred): Handle SVE structure modes.
11590         * config/aarch64/constraints.md (Utx): New constraint.
11591         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
11592         (aarch64_sve_struct_nonimmediate_operand): New predicates.
11593         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
11594         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
11595         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
11596         structure modes.  Split into pieces after RA.
11597         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
11598         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
11599         New patterns.
11600         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
11601         SVE structure modes.
11602         (aarch64_classify_address): Likewise.
11603         (sizetochar): Move earlier in file.
11604         (aarch64_print_operand): Handle SVE register lists.
11605         (aarch64_array_mode): New function.
11606         (aarch64_sve_struct_memory_operand_p): Likewise.
11607         (TARGET_ARRAY_MODE): Redefine.
11609 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11610             Alan Hayward  <alan.hayward@arm.com>
11611             David Sherwood  <david.sherwood@arm.com>
11613         * target.def (array_mode): New target hook.
11614         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
11615         * doc/tm.texi: Regenerate.
11616         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
11617         * hooks.c (hook_optmode_mode_uhwi_none): New function.
11618         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
11619         targetm.array_mode.
11620         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
11621         type sizes.
11623 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11624             Alan Hayward  <alan.hayward@arm.com>
11625             David Sherwood  <david.sherwood@arm.com>
11627         * fold-const.c (fold_binary_loc): Check the argument types
11628         rather than the result type when testing for a vector operation.
11630 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11632         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
11633         * doc/tm.texi: Regenerate.
11635 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11636             Alan Hayward  <alan.hayward@arm.com>
11637             David Sherwood  <david.sherwood@arm.com>
11639         * doc/invoke.texi (-msve-vector-bits=): Document new option.
11640         (sve): Document new AArch64 extension.
11641         * doc/md.texi (w): Extend the description of the AArch64
11642         constraint to include SVE vectors.
11643         (Upl, Upa): Document new AArch64 predicate constraints.
11644         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
11645         enum.
11646         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
11647         (msve-vector-bits=): New option.
11648         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
11649         SVE when these are disabled.
11650         (sve): New extension.
11651         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
11652         modes.  Adjust their number of units based on aarch64_sve_vg.
11653         (MAX_BITSIZE_MODE_ANY_MODE): Define.
11654         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
11655         aarch64_addr_query_type.
11656         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
11657         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
11658         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
11659         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
11660         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
11661         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
11662         (aarch64_simd_imm_zero_p): Delete.
11663         (aarch64_check_zero_based_sve_index_immediate): Declare.
11664         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11665         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11666         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11667         (aarch64_sve_float_mul_immediate_p): Likewise.
11668         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11669         rather than an rtx.
11670         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
11671         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
11672         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
11673         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
11674         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
11675         (aarch64_regmode_natural_size): Likewise.
11676         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
11677         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
11678         left one place.
11679         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
11680         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
11681         for VG and the SVE predicate registers.
11682         (V_ALIASES): Add a "z"-prefixed alias.
11683         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
11684         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
11685         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
11686         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
11687         (REG_CLASS_NAMES): Add entries for them.
11688         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
11689         and the predicate registers.
11690         (aarch64_sve_vg): Declare.
11691         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
11692         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
11693         (REGMODE_NATURAL_SIZE): Define.
11694         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
11695         SVE macros.
11696         * config/aarch64/aarch64.c: Include cfgrtl.h.
11697         (simd_immediate_info): Add a constructor for series vectors,
11698         and an associated step field.
11699         (aarch64_sve_vg): New variable.
11700         (aarch64_dbx_register_number): Handle VG and the predicate registers.
11701         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
11702         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
11703         (VEC_ANY_DATA, VEC_STRUCT): New constants.
11704         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
11705         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
11706         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
11707         (aarch64_get_mask_mode): New functions.
11708         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
11709         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
11710         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
11711         predicate modes and predicate registers.  Explicitly restrict
11712         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
11713         to store a vector mode if it is recognized by
11714         aarch64_classify_vector_mode.
11715         (aarch64_regmode_natural_size): New function.
11716         (aarch64_hard_regno_caller_save_mode): Return the original mode
11717         for predicates.
11718         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
11719         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
11720         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
11721         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
11722         functions.
11723         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
11724         does not overlap dest if the function is frame-related.  Handle
11725         SVE constants.
11726         (aarch64_split_add_offset): New function.
11727         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
11728         them aarch64_add_offset.
11729         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
11730         and update call to aarch64_sub_sp.
11731         (aarch64_add_cfa_expression): New function.
11732         (aarch64_expand_prologue): Pass extra temporary registers to the
11733         functions above.  Handle the case in which we need to emit new
11734         DW_CFA_expressions for registers that were originally saved
11735         relative to the stack pointer, but now have to be expressed
11736         relative to the frame pointer.
11737         (aarch64_output_mi_thunk): Pass extra temporary registers to the
11738         functions above.
11739         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
11740         IP0 and IP1 values for SVE frames.
11741         (aarch64_expand_vec_series): New function.
11742         (aarch64_expand_sve_widened_duplicate): Likewise.
11743         (aarch64_expand_sve_const_vector): Likewise.
11744         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
11745         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
11746         into the register, rather than emitting a SET directly.
11747         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
11748         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
11749         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
11750         (offset_9bit_signed_scaled_p): New functions.
11751         (aarch64_replicate_bitmask_imm): New function.
11752         (aarch64_bitmask_imm): Use it.
11753         (aarch64_cannot_force_const_mem): Reject expressions involving
11754         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
11755         (aarch64_classify_index): Handle SVE indices, by requiring
11756         a plain register index with a scale that matches the element size.
11757         (aarch64_classify_address): Handle SVE addresses.  Assert that
11758         the mode of the address is VOIDmode or an integer mode.
11759         Update call to aarch64_classify_symbol.
11760         (aarch64_classify_symbolic_expression): Update call to
11761         aarch64_classify_symbol.
11762         (aarch64_const_vec_all_in_range_p): New function.
11763         (aarch64_print_vector_float_operand): Likewise.
11764         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
11765         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
11766         and the FP immediates 1.0 and 0.5.
11767         (aarch64_print_address_internal): Handle SVE addresses.
11768         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
11769         (aarch64_regno_regclass): Handle predicate registers.
11770         (aarch64_secondary_reload): Handle big-endian reloads of SVE
11771         data modes.
11772         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
11773         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
11774         (aarch64_convert_sve_vector_bits): New function.
11775         (aarch64_override_options): Use it to handle -msve-vector-bits=.
11776         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11777         rather than an rtx.
11778         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
11779         Handle SVE vector and predicate modes.  Accept VL-based constants
11780         that need only one temporary register, and VL offsets that require
11781         no temporary registers.
11782         (aarch64_conditional_register_usage): Mark the predicate registers
11783         as fixed if SVE isn't available.
11784         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
11785         Return true for SVE vector and predicate modes.
11786         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
11787         rather than an unsigned int.  Handle SVE modes.
11788         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
11789         SVE modes.
11790         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
11791         if SVE is enabled.
11792         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11793         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11794         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11795         (aarch64_sve_float_mul_immediate_p): New functions.
11796         (aarch64_sve_valid_immediate): New function.
11797         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
11798         Explicitly reject structure modes.  Check for INDEX constants.
11799         Handle PTRUE and PFALSE constants.
11800         (aarch64_check_zero_based_sve_index_immediate): New function.
11801         (aarch64_simd_imm_zero_p): Delete.
11802         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
11803         vector modes.  Accept constants in the range of CNT[BHWD].
11804         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
11805         ask for an Advanced SIMD mode.
11806         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
11807         (aarch64_simd_vector_alignment): Handle SVE predicates.
11808         (aarch64_vectorize_preferred_vector_alignment): New function.
11809         (aarch64_simd_vector_alignment_reachable): Use it instead of
11810         the vector size.
11811         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
11812         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
11813         functions.
11814         (MAX_VECT_LEN): Delete.
11815         (expand_vec_perm_d): Add a vec_flags field.
11816         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
11817         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
11818         (aarch64_evpc_ext): Don't apply a big-endian lane correction
11819         for SVE modes.
11820         (aarch64_evpc_rev): Rename to...
11821         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
11822         (aarch64_evpc_rev_global): New function.
11823         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
11824         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
11825         MAX_VECT_LEN.
11826         (aarch64_evpc_sve_tbl): New function.
11827         (aarch64_expand_vec_perm_const_1): Update after rename of
11828         aarch64_evpc_rev.  Handle SVE permutes too, trying
11829         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
11830         than aarch64_evpc_tbl.
11831         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
11832         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
11833         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
11834         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
11835         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
11836         (aarch64_expand_sve_vcond): New functions.
11837         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
11838         of aarch64_vector_mode_p.
11839         (aarch64_dwarf_poly_indeterminate_value): New function.
11840         (aarch64_compute_pressure_classes): Likewise.
11841         (aarch64_can_change_mode_class): Likewise.
11842         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
11843         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
11844         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
11845         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
11846         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
11847         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
11848         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
11849         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
11850         constraints.
11851         (Dn, Dl, Dr): Accept const as well as const_vector.
11852         (Dz): Likewise.  Compare against CONST0_RTX.
11853         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
11854         of "vector" where appropriate.
11855         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
11856         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
11857         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
11858         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
11859         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
11860         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
11861         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
11862         (v_int_equiv): Extend to SVE modes.
11863         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
11864         mode attributes.
11865         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
11866         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
11867         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
11868         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
11869         (SVE_COND_FP_CMP): New int iterators.
11870         (perm_hilo): Handle the new unpack unspecs.
11871         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
11872         attributes.
11873         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
11874         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
11875         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
11876         (aarch64_equality_operator, aarch64_constant_vector_operand)
11877         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
11878         (aarch64_sve_nonimmediate_operand): Likewise.
11879         (aarch64_sve_general_operand): Likewise.
11880         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
11881         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
11882         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
11883         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
11884         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
11885         (aarch64_sve_float_arith_immediate): Likewise.
11886         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
11887         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
11888         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
11889         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
11890         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
11891         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
11892         (aarch64_sve_float_arith_operand): Likewise.
11893         (aarch64_sve_float_arith_with_sub_operand): Likewise.
11894         (aarch64_sve_float_mul_operand): Likewise.
11895         (aarch64_sve_vec_perm_operand): Likewise.
11896         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
11897         (aarch64_mov_operand): Accept const_poly_int and const_vector.
11898         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
11899         as well as const_vector.
11900         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
11901         in file.  Use CONST0_RTX and CONSTM1_RTX.
11902         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
11903         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
11904         Use aarch64_simd_imm_zero.
11905         * config/aarch64/aarch64-sve.md: New file.
11906         * config/aarch64/aarch64.md: Include it.
11907         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
11908         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
11909         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
11910         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
11911         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
11912         (sve): New attribute.
11913         (enabled): Disable instructions with the sve attribute unless
11914         TARGET_SVE.
11915         (movqi, movhi): Pass CONST_POLY_INT operaneds through
11916         aarch64_expand_mov_immediate.
11917         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
11918         CNT[BHSD] immediates.
11919         (movti): Split CONST_POLY_INT moves into two halves.
11920         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
11921         Split additions that need a temporary here if the destination
11922         is the stack pointer.
11923         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
11924         (*add<mode>3_poly_1): New instruction.
11925         (set_clobber_cc): New expander.
11927 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11929         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
11930         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
11931         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
11932         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
11933         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
11934         Change innermode from fixed_mode_size to machine_mode.
11935         (simplify_subreg): Update call accordingly.  Handle a constant-sized
11936         subreg of a variable-length CONST_VECTOR.
11938 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11939             Alan Hayward  <alan.hayward@arm.com>
11940             David Sherwood  <david.sherwood@arm.com>
11942         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
11943         (add_offset_to_base): New function, split out from...
11944         (create_mem_ref): ...here.  When handling a scale other than 1,
11945         check first whether the address is valid without the offset.
11946         Add it into the base if so, leaving the index and scale as-is.
11948 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
11950         PR c++/83778
11951         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
11952         fold_for_warn before checking if arg2 is INTEGER_CST.
11954 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
11956         * config/rs6000/predicates.md (load_multiple_operation): Delete.
11957         (store_multiple_operation): Delete.
11958         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
11959         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
11960         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
11961         guarded by TARGET_STRING.
11962         (rs6000_output_load_multiple): Delete.
11963         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
11964         OPTION_MASK_STRING / TARGET_STRING handling.
11965         (print_operand) <'N', 'O'>: Add comment that these are unused now.
11966         (const rs6000_opt_masks) <"string">: Change mask to 0.
11967         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
11968         (MASK_STRING): Delete.
11969         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
11970         parts.  Simplify.
11971         (load_multiple): Delete.
11972         (*ldmsi8): Delete.
11973         (*ldmsi7): Delete.
11974         (*ldmsi6): Delete.
11975         (*ldmsi5): Delete.
11976         (*ldmsi4): Delete.
11977         (*ldmsi3): Delete.
11978         (store_multiple): Delete.
11979         (*stmsi8): Delete.
11980         (*stmsi7): Delete.
11981         (*stmsi6): Delete.
11982         (*stmsi5): Delete.
11983         (*stmsi4): Delete.
11984         (*stmsi3): Delete.
11985         (movmemsi_8reg): Delete.
11986         (corresponding unnamed define_insn): Delete.
11987         (movmemsi_6reg): Delete.
11988         (corresponding unnamed define_insn): Delete.
11989         (movmemsi_4reg): Delete.
11990         (corresponding unnamed define_insn): Delete.
11991         (movmemsi_2reg): Delete.
11992         (corresponding unnamed define_insn): Delete.
11993         (movmemsi_1reg): Delete.
11994         (corresponding unnamed define_insn): Delete.
11995         * config/rs6000/rs6000.opt (mno-string): New.
11996         (mstring): Replace by deprecation warning stub.
11997         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
11999 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
12001         * regrename.c (regrename_do_replace): If replacing the same
12002         reg multiple times, try to reuse last created gen_raw_REG.
12004         PR debug/81155
12005         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
12006         main to workaround a bug in GDB.
12008 2018-01-12  Tom de Vries  <tom@codesourcery.com>
12010         PR target/83737
12011         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
12013 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
12015         PR rtl-optimization/80481
12016         * ira-color.c (get_cap_member): New function.
12017         (allocnos_conflict_by_live_ranges_p): Use it.
12018         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
12019         (setup_slot_coalesced_allocno_live_ranges): Ditto.
12021 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
12023         PR target/83628
12024         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
12025         (*saddl_se_1): Ditto.
12026         (*ssubsi_1): Ditto.
12027         (*ssubl_se_1): Ditto.
12029 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12031         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
12032         rather than wi::to_widest for DR_INITs.
12033         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
12034         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
12035         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
12036         INTEGER_CSTs.
12037         (vect_analyze_group_access_1): Note that here.
12039 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12041         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
12042         polynomial type sizes.
12044 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12046         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
12047         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
12048         (gimple_add_tmp_var): Likewise.
12050 2018-01-12  Martin Liska  <mliska@suse.cz>
12052         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
12053         (gimple_alloc_sizes): Likewise.
12054         (dump_gimple_statistics): Use PRIu64 in printf format.
12055         * gimple.h: Change uint64_t to int.
12057 2018-01-12  Martin Liska  <mliska@suse.cz>
12059         * tree-core.h: Use uint64_t instead of int.
12060         * tree.c (tree_node_counts): Likewise.
12061         (tree_node_sizes): Likewise.
12062         (dump_tree_statistics): Use PRIu64 in printf format.
12064 2018-01-12  Martin Liska  <mliska@suse.cz>
12066         * Makefile.in: As qsort_chk is implemented in vec.c, add
12067         vec.o to linkage of gencfn-macros.
12068         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
12069         passing the info to record_node_allocation_statistics.
12070         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
12071         and pass the info.
12072         * ggc-common.c (struct ggc_usage): Add operator== and use
12073         it in operator< and compare function.
12074         * mem-stats.h (struct mem_usage): Likewise.
12075         * vec.c (struct vec_usage): Remove operator< and compare
12076         function. Can be simply inherited.
12078 2018-01-12  Martin Jambor  <mjambor@suse.cz>
12080         PR target/81616
12081         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
12082         * tree-ssa-math-opts.c: Include domwalk.h.
12083         (convert_mult_to_fma_1): New function.
12084         (fma_transformation_info): New type.
12085         (fma_deferring_state): Likewise.
12086         (cancel_fma_deferring): New function.
12087         (result_of_phi): Likewise.
12088         (last_fma_candidate_feeds_initial_phi): Likewise.
12089         (convert_mult_to_fma): Added deferring logic, split actual
12090         transformation to convert_mult_to_fma_1.
12091         (math_opts_dom_walker): New type.
12092         (math_opts_dom_walker::after_dom_children): New method, body moved
12093         here from pass_optimize_widening_mul::execute, added deferring logic
12094         bits.
12095         (pass_optimize_widening_mul::execute): Moved most of code to
12096         math_opts_dom_walker::after_dom_children.
12097         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
12098         * config/i386/i386.c (ix86_option_override_internal): Added
12099         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
12101 2018-01-12  Richard Biener  <rguenther@suse.de>
12103         PR debug/83157
12104         * dwarf2out.c (gen_variable_die): Do not reset old_die for
12105         inline instance vars.
12107 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
12109         PR target/81819
12110         * config/rx/rx.c (rx_is_restricted_memory_address):
12111         Handle SUBREG case.
12113 2018-01-12  Richard Biener  <rguenther@suse.de>
12115         PR tree-optimization/80846
12116         * target.def (split_reduction): New target hook.
12117         * targhooks.c (default_split_reduction): New function.
12118         * targhooks.h (default_split_reduction): Declare.
12119         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
12120         target requests first reduce vectors by combining low and high
12121         parts.
12122         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
12123         (get_vectype_for_scalar_type_and_size): Export.
12124         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
12125         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
12126         * doc/tm.texi: Regenerate.
12127         * config/i386/i386.c (ix86_split_reduction): Implement
12128         TARGET_VECTORIZE_SPLIT_REDUCTION.
12130 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
12132         PR target/83368
12133         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
12134         in PIC mode except for TARGET_VXWORKS_RTP.
12135         * config/sparc/sparc.c: Include cfgrtl.h.
12136         (TARGET_INIT_PIC_REG): Define.
12137         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
12138         (sparc_pic_register_p): New predicate.
12139         (sparc_legitimate_address_p): Use it.
12140         (sparc_legitimize_pic_address): Likewise.
12141         (sparc_delegitimize_address): Likewise.
12142         (sparc_mode_dependent_address_p): Likewise.
12143         (gen_load_pcrel_sym): Remove 4th parameter.
12144         (load_got_register): Adjust call to above.  Remove obsolete stuff.
12145         (sparc_expand_prologue): Do not call load_got_register here.
12146         (sparc_flat_expand_prologue): Likewise.
12147         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
12148         (sparc_use_pseudo_pic_reg): New function.
12149         (sparc_init_pic_reg): Likewise.
12150         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
12151         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
12153 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
12155         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
12156         Add item for branch_cost.
12158 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
12160         PR rtl-optimization/83565
12161         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
12162         not extend the result to a larger mode for rotate operations.
12163         (num_sign_bit_copies1): Likewise.
12165 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12167         PR target/40411
12168         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
12169         -symbolic.
12170         Use values-Xc.o for -pedantic.
12171         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
12173 2018-01-12  Martin Liska  <mliska@suse.cz>
12175         PR ipa/83054
12176         * ipa-devirt.c (final_warning_record::grow_type_warnings):
12177         New function.
12178         (possible_polymorphic_call_targets): Use it.
12179         (ipa_devirt): Likewise.
12181 2018-01-12  Martin Liska  <mliska@suse.cz>
12183         * profile-count.h (enum profile_quality): Use 0 as invalid
12184         enum value of profile_quality.
12186 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
12188         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
12189         -mext-string options.
12191 2018-01-12  Richard Biener  <rguenther@suse.de>
12193         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
12194         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
12195         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
12196         Likewise.
12197         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
12199 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
12201         * configure.ac (--with-long-double-format): Add support for the
12202         configuration option to change the default long double format on
12203         PowerPC systems.
12204         * config.gcc (powerpc*-linux*-*): Likewise.
12205         * configure: Regenerate.
12206         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
12207         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
12208         used without modification.
12210 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12212         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
12213         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
12214         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
12215         MISC_BUILTIN_SPEC_BARRIER.
12216         (rs6000_init_builtins): Likewise.
12217         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
12218         enum value.
12219         (speculation_barrier): New define_insn.
12220         * doc/extend.texi: Document __builtin_speculation_barrier.
12222 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
12224         PR target/83203
12225         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
12226         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
12227         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
12228         iterators.
12229         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
12230         integral modes instead of "ss" and "sd".
12231         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
12232         vectors with 32-bit and 64-bit elements.
12233         (vecdupssescalarmodesuffix): New mode attribute.
12234         (vec_dup<mode>): Use it.
12236 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
12238         PR target/83330
12239         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
12240         frame if argument is passed on stack.
12242 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
12244         PR target/82682
12245         * ree.c (combine_reaching_defs): Optimize also
12246         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
12247         reg2=any_extend(exp); reg1=reg2;, formatting fix.
12249 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
12251         PR middle-end/83189
12252         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
12254 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
12256         PR middle-end/83718
12257         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
12258         after they are computed.
12260 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
12262         PR tree-optimization/83695
12263         * gimple-loop-linterchange.cc
12264         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
12265         reset cached scev information after interchange.
12266         (pass_linterchange::execute): Remove call to scev_reset_htab.
12268 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12270         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
12271         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
12272         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
12273         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
12274         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
12275         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
12276         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
12277         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
12278         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
12279         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
12280         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
12281         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
12282         (V_lane_reg): Likewise.
12283         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
12284         New define_expand.
12285         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
12286         (vfmal_lane_low<mode>_intrinsic,
12287         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
12288         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
12289         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
12290         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
12291         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
12292         vfmsl_lane_high<mode>_intrinsic): New define_insns.
12294 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12296         * config/arm/arm-cpus.in (fp16fml): New feature.
12297         (ALL_SIMD): Add fp16fml.
12298         (armv8.2-a): Add fp16fml as an option.
12299         (armv8.3-a): Likewise.
12300         (armv8.4-a): Add fp16fml as part of fp16.
12301         * config/arm/arm.h (TARGET_FP16FML): Define.
12302         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
12303         when appropriate.
12304         * config/arm/arm-modes.def (V2HF): Define.
12305         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
12306         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
12307         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
12308         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
12309         vfmsl_low, vfmsl_high): New set of builtins.
12310         * config/arm/iterators.md (PLUSMINUS): New code iterator.
12311         (vfml_op): New code attribute.
12312         (VFMLHALVES): New int iterator.
12313         (VFML, VFMLSEL): New mode attributes.
12314         (V_reg): Define mapping for V2HF.
12315         (V_hi, V_lo): New mode attributes.
12316         (VF_constraint): Likewise.
12317         (vfml_half, vfml_half_selector): New int attributes.
12318         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
12319         define_expand.
12320         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
12321         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
12322         New define_insn.
12323         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
12324         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
12325         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
12326         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
12327         documentation.
12328         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
12329         Document new effective target and option set.
12331 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12333         * config/arm/arm-cpus.in (armv8_4): New feature.
12334         (ARMv8_4a): New fgroup.
12335         (armv8.4-a): New arch.
12336         * config/arm/arm-tables.opt: Regenerate.
12337         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
12338         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
12339         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
12340         Add matching rules for -march=armv8.4-a and extensions.
12341         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
12343 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
12345         PR target/81821
12346         * config/rx/rx.md (BW): New mode attribute.
12347         (sync_lock_test_and_setsi): Add mode suffix to insn output.
12349 2018-01-11  Richard Biener  <rguenther@suse.de>
12351         PR tree-optimization/83435
12352         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
12353         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
12354         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
12356 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12357             Alan Hayward  <alan.hayward@arm.com>
12358             David Sherwood  <david.sherwood@arm.com>
12360         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
12361         field.
12362         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
12363         (aarch64_print_address_internal): Use it to check for a zero offset.
12365 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12366             Alan Hayward  <alan.hayward@arm.com>
12367             David Sherwood  <david.sherwood@arm.com>
12369         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
12370         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
12371         Return a poly_int64 rather than a HOST_WIDE_INT.
12372         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
12373         rather than a HOST_WIDE_INT.
12374         * config/aarch64/aarch64.h (aarch64_frame): Protect with
12375         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
12376         hard_fp_offset, frame_size, initial_adjust, callee_offset and
12377         final_offset from HOST_WIDE_INT to poly_int64.
12378         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
12379         to_constant when getting the number of units in an Advanced SIMD
12380         mode.
12381         (aarch64_builtin_vectorized_function): Check for a constant number
12382         of units.
12383         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
12384         GET_MODE_SIZE.
12385         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
12386         attribute instead of GET_MODE_NUNITS.
12387         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
12388         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
12389         GET_MODE_SIZE for fixed-size registers.
12390         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
12391         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
12392         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
12393         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
12394         (aarch64_print_operand, aarch64_print_address_internal)
12395         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
12396         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
12397         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
12398         Handle polynomial GET_MODE_SIZE.
12399         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
12400         wider than SImode without modification.
12401         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
12402         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
12403         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
12404         passing and returning SVE modes.
12405         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
12406         rather than GEN_INT.
12407         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
12408         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
12409         (aarch64_allocate_and_probe_stack_space): Likewise.
12410         (aarch64_layout_frame): Cope with polynomial offsets.
12411         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
12412         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
12413         polynomial offsets.
12414         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
12415         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
12416         poly_int64 rather than a HOST_WIDE_INT.
12417         (aarch64_get_separate_components, aarch64_process_components)
12418         (aarch64_expand_prologue, aarch64_expand_epilogue)
12419         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
12420         (aarch64_anchor_offset): New function, split out from...
12421         (aarch64_legitimize_address): ...here.
12422         (aarch64_builtin_vectorization_cost): Handle polynomial
12423         TYPE_VECTOR_SUBPARTS.
12424         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
12425         GET_MODE_NUNITS.
12426         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
12427         number of elements from the PARALLEL rather than the mode.
12428         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
12429         rather than GET_MODE_BITSIZE.
12430         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
12431         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
12432         (aarch64_expand_vec_perm_const_1): Handle polynomial
12433         d->perm.length () and d->perm elements.
12434         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
12435         Apply to_constant to d->perm elements.
12436         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
12437         polynomial CONST_VECTOR_NUNITS.
12438         (aarch64_move_pointer): Take amount as a poly_int64 rather
12439         than an int.
12440         (aarch64_progress_pointer): Avoid temporary variable.
12441         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
12442         the mode attribute instead of GET_MODE.
12444 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12445             Alan Hayward  <alan.hayward@arm.com>
12446             David Sherwood  <david.sherwood@arm.com>
12448         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
12449         x exists before using it.
12450         (aarch64_add_constant_internal): Rename to...
12451         (aarch64_add_offset_1): ...this.  Replace regnum with separate
12452         src and dest rtxes.  Handle the case in which they're different,
12453         including when the offset is zero.  Replace scratchreg with an rtx.
12454         Use 2 additions if there is no spare register into which we can
12455         move a 16-bit constant.
12456         (aarch64_add_constant): Delete.
12457         (aarch64_add_offset): Replace reg with separate src and dest
12458         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
12459         Use aarch64_add_offset_1.
12460         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
12461         an rtx rather than an int.  Take the delta as a poly_int64
12462         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
12463         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
12464         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
12465         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
12466         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
12467         and aarch64_add_sp.
12468         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
12469         aarch64_add_constant.
12471 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12473         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
12474         Use scalar_float_mode.
12476 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12478         * config/aarch64/aarch64-simd.md
12479         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
12480         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
12481         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
12482         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
12483         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
12484         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
12485         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
12486         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
12487         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
12488         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
12490 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12492         PR target/83514
12493         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
12494         targ_options->x_arm_arch_string is non NULL.
12496 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
12498         * config/aarch64/aarch64.h
12499         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
12501 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
12503         PR target/82096
12504         * expmed.c (emit_store_flag_force): Swap if const op0
12505         and change VOIDmode to mode of op0.
12507 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12509         PR rtl-optimization/83761
12510         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
12511         than bytes to mode_for_size.
12513 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12515         PR middle-end/83189
12516         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
12517         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
12518         profile.
12520 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12522         PR middle-end/83575
12523         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
12524         when in layout mode.
12525         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
12526         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
12527         partition fixup.
12529 2018-01-10  Michael Collison  <michael.collison@arm.com>
12531         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
12532         * config/aarch64/aarch64-option-extension.def: Add
12533         AARCH64_OPT_EXTENSION of 'fp16fml'.
12534         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12535         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
12536         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
12537         * config/aarch64/constraints.md (Ui7): New constraint.
12538         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
12539         (VFMLA_SEL_W): Ditto.
12540         (f16quad): Ditto.
12541         (f16mac1): Ditto.
12542         (VFMLA16_LOW): New int iterator.
12543         (VFMLA16_HIGH): Ditto.
12544         (UNSPEC_FMLAL): New unspec.
12545         (UNSPEC_FMLSL): Ditto.
12546         (UNSPEC_FMLAL2): Ditto.
12547         (UNSPEC_FMLSL2): Ditto.
12548         (f16mac): New code attribute.
12549         * config/aarch64/aarch64-simd-builtins.def
12550         (aarch64_fmlal_lowv2sf): Ditto.
12551         (aarch64_fmlsl_lowv2sf): Ditto.
12552         (aarch64_fmlalq_lowv4sf): Ditto.
12553         (aarch64_fmlslq_lowv4sf): Ditto.
12554         (aarch64_fmlal_highv2sf): Ditto.
12555         (aarch64_fmlsl_highv2sf): Ditto.
12556         (aarch64_fmlalq_highv4sf): Ditto.
12557         (aarch64_fmlslq_highv4sf): Ditto.
12558         (aarch64_fmlal_lane_lowv2sf): Ditto.
12559         (aarch64_fmlsl_lane_lowv2sf): Ditto.
12560         (aarch64_fmlal_laneq_lowv2sf): Ditto.
12561         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
12562         (aarch64_fmlalq_lane_lowv4sf): Ditto.
12563         (aarch64_fmlsl_lane_lowv4sf): Ditto.
12564         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
12565         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
12566         (aarch64_fmlal_lane_highv2sf): Ditto.
12567         (aarch64_fmlsl_lane_highv2sf): Ditto.
12568         (aarch64_fmlal_laneq_highv2sf): Ditto.
12569         (aarch64_fmlsl_laneq_highv2sf): Ditto.
12570         (aarch64_fmlalq_lane_highv4sf): Ditto.
12571         (aarch64_fmlsl_lane_highv4sf): Ditto.
12572         (aarch64_fmlalq_laneq_highv4sf): Ditto.
12573         (aarch64_fmlsl_laneq_highv4sf): Ditto.
12574         * config/aarch64/aarch64-simd.md:
12575         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
12576         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12577         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
12578         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12579         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
12580         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
12581         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
12582         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
12583         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
12584         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
12585         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
12586         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
12587         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
12588         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
12589         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
12590         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
12591         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
12592         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
12593         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
12594         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
12595         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
12596         (vfmlsl_low_u32): Ditto.
12597         (vfmlalq_low_u32): Ditto.
12598         (vfmlslq_low_u32): Ditto.
12599         (vfmlal_high_u32): Ditto.
12600         (vfmlsl_high_u32): Ditto.
12601         (vfmlalq_high_u32): Ditto.
12602         (vfmlslq_high_u32): Ditto.
12603         (vfmlal_lane_low_u32): Ditto.
12604         (vfmlsl_lane_low_u32): Ditto.
12605         (vfmlal_laneq_low_u32): Ditto.
12606         (vfmlsl_laneq_low_u32): Ditto.
12607         (vfmlalq_lane_low_u32): Ditto.
12608         (vfmlslq_lane_low_u32): Ditto.
12609         (vfmlalq_laneq_low_u32): Ditto.
12610         (vfmlslq_laneq_low_u32): Ditto.
12611         (vfmlal_lane_high_u32): Ditto.
12612         (vfmlsl_lane_high_u32): Ditto.
12613         (vfmlal_laneq_high_u32): Ditto.
12614         (vfmlsl_laneq_high_u32): Ditto.
12615         (vfmlalq_lane_high_u32): Ditto.
12616         (vfmlslq_lane_high_u32): Ditto.
12617         (vfmlalq_laneq_high_u32): Ditto.
12618         (vfmlslq_laneq_high_u32): Ditto.
12619         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
12620         (AARCH64_FL_FOR_ARCH8_4): New.
12621         (AARCH64_ISA_F16FML): New ISA flag.
12622         (TARGET_F16FML): New feature flag for fp16fml.
12623         (doc/invoke.texi): Document new fp16fml option.
12625 2018-01-10  Michael Collison  <michael.collison@arm.com>
12627         * config/aarch64/aarch64-builtins.c:
12628         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
12629         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12630         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
12631         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
12632         (AARCH64_ISA_SHA3): New ISA flag.
12633         (TARGET_SHA3): New feature flag for sha3.
12634         * config/aarch64/iterators.md (sha512_op): New int attribute.
12635         (CRYPTO_SHA512): New int iterator.
12636         (UNSPEC_SHA512H): New unspec.
12637         (UNSPEC_SHA512H2): Ditto.
12638         (UNSPEC_SHA512SU0): Ditto.
12639         (UNSPEC_SHA512SU1): Ditto.
12640         * config/aarch64/aarch64-simd-builtins.def
12641         (aarch64_crypto_sha512hqv2di): New builtin.
12642         (aarch64_crypto_sha512h2qv2di): Ditto.
12643         (aarch64_crypto_sha512su0qv2di): Ditto.
12644         (aarch64_crypto_sha512su1qv2di): Ditto.
12645         (aarch64_eor3qv8hi): Ditto.
12646         (aarch64_rax1qv2di): Ditto.
12647         (aarch64_xarqv2di): Ditto.
12648         (aarch64_bcaxqv8hi): Ditto.
12649         * config/aarch64/aarch64-simd.md:
12650         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
12651         (aarch64_crypto_sha512su0qv2di): Ditto.
12652         (aarch64_crypto_sha512su1qv2di): Ditto.
12653         (aarch64_eor3qv8hi): Ditto.
12654         (aarch64_rax1qv2di): Ditto.
12655         (aarch64_xarqv2di): Ditto.
12656         (aarch64_bcaxqv8hi): Ditto.
12657         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
12658         (vsha512h2q_u64): Ditto.
12659         (vsha512su0q_u64): Ditto.
12660         (vsha512su1q_u64): Ditto.
12661         (veor3q_u16): Ditto.
12662         (vrax1q_u64): Ditto.
12663         (vxarq_u64): Ditto.
12664         (vbcaxq_u16): Ditto.
12665         * config/arm/types.md (crypto_sha512): New type attribute.
12666         (crypto_sha3): Ditto.
12667         (doc/invoke.texi): Document new sha3 option.
12669 2018-01-10  Michael Collison  <michael.collison@arm.com>
12671         * config/aarch64/aarch64-builtins.c:
12672         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
12673         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12674         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
12675         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
12676         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
12677         (AARCH64_ISA_SM4): New ISA flag.
12678         (TARGET_SM4): New feature flag for sm4.
12679         * config/aarch64/aarch64-simd-builtins.def
12680         (aarch64_sm3ss1qv4si): Ditto.
12681         (aarch64_sm3tt1aq4si): Ditto.
12682         (aarch64_sm3tt1bq4si): Ditto.
12683         (aarch64_sm3tt2aq4si): Ditto.
12684         (aarch64_sm3tt2bq4si): Ditto.
12685         (aarch64_sm3partw1qv4si): Ditto.
12686         (aarch64_sm3partw2qv4si): Ditto.
12687         (aarch64_sm4eqv4si): Ditto.
12688         (aarch64_sm4ekeyqv4si): Ditto.
12689         * config/aarch64/aarch64-simd.md:
12690         (aarch64_sm3ss1qv4si): Ditto.
12691         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
12692         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
12693         (aarch64_sm4eqv4si): Ditto.
12694         (aarch64_sm4ekeyqv4si): Ditto.
12695         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
12696         (sm3part_op): Ditto.
12697         (CRYPTO_SM3TT): Ditto.
12698         (CRYPTO_SM3PART): Ditto.
12699         (UNSPEC_SM3SS1): New unspec.
12700         (UNSPEC_SM3TT1A): Ditto.
12701         (UNSPEC_SM3TT1B): Ditto.
12702         (UNSPEC_SM3TT2A): Ditto.
12703         (UNSPEC_SM3TT2B): Ditto.
12704         (UNSPEC_SM3PARTW1): Ditto.
12705         (UNSPEC_SM3PARTW2): Ditto.
12706         (UNSPEC_SM4E): Ditto.
12707         (UNSPEC_SM4EKEY): Ditto.
12708         * config/aarch64/constraints.md (Ui2): New constraint.
12709         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
12710         * config/arm/types.md (crypto_sm3): New type attribute.
12711         (crypto_sm4): Ditto.
12712         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
12713         (vsm3tt1aq_u32): Ditto.
12714         (vsm3tt1bq_u32): Ditto.
12715         (vsm3tt2aq_u32): Ditto.
12716         (vsm3tt2bq_u32): Ditto.
12717         (vsm3partw1q_u32): Ditto.
12718         (vsm3partw2q_u32): Ditto.
12719         (vsm4eq_u32): Ditto.
12720         (vsm4ekeyq_u32): Ditto.
12721         (doc/invoke.texi): Document new sm4 option.
12723 2018-01-10  Michael Collison  <michael.collison@arm.com>
12725         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
12726         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
12727         (AARCH64_FL_FOR_ARCH8_4): New.
12728         (AARCH64_FL_V8_4): New flag.
12729         (doc/invoke.texi): Document new armv8.4-a option.
12731 2018-01-10  Michael Collison  <michael.collison@arm.com>
12733         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12734         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
12735         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
12736         * config/aarch64/aarch64-option-extension.def: Add
12737         AARCH64_OPT_EXTENSION of 'sha2'.
12738         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
12739         (crypto): Disable sha2 and aes if crypto disabled.
12740         (crypto): Enable aes and sha2 if enabled.
12741         (simd): Disable sha2 and aes if simd disabled.
12742         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
12743         New flags.
12744         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
12745         (TARGET_SHA2): New feature flag for sha2.
12746         (TARGET_AES): New feature flag for aes.
12747         * config/aarch64/aarch64-simd.md:
12748         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
12749         conditional on TARGET_AES.
12750         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
12751         (aarch64_crypto_sha1hsi): Make pattern conditional
12752         on TARGET_SHA2.
12753         (aarch64_crypto_sha1hv4si): Ditto.
12754         (aarch64_be_crypto_sha1hv4si): Ditto.
12755         (aarch64_crypto_sha1su1v4si): Ditto.
12756         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
12757         (aarch64_crypto_sha1su0v4si): Ditto.
12758         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
12759         (aarch64_crypto_sha256su0v4si): Ditto.
12760         (aarch64_crypto_sha256su1v4si): Ditto.
12761         (doc/invoke.texi): Document new aes and sha2 options.
12763 2018-01-10  Martin Sebor  <msebor@redhat.com>
12765         PR tree-optimization/83781
12766         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
12767         as string arrays.
12769 2018-01-11  Martin Sebor  <msebor@gmail.com>
12770             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12772         PR tree-optimization/83501
12773         PR tree-optimization/81703
12775         * tree-ssa-strlen.c (get_string_cst): Rename...
12776         (get_string_len): ...to this.  Handle global constants.
12777         (handle_char_store): Adjust.
12779 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
12780             Jim Wilson  <jimw@sifive.com>
12782         * config/riscv/riscv-protos.h (riscv_output_return): New.
12783         * config/riscv/riscv.c (struct machine_function): New naked_p field.
12784         (riscv_attribute_table, riscv_output_return),
12785         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
12786         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
12787         (riscv_compute_frame_info): Only compute frame->mask if not a naked
12788         function.
12789         (riscv_expand_prologue): Add early return for naked function.
12790         (riscv_expand_epilogue): Likewise.
12791         (riscv_function_ok_for_sibcall): Return false for naked function.
12792         (riscv_set_current_function): New.
12793         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
12794         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
12795         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
12796         * doc/extend.texi (RISC-V Function Attributes): New.
12798 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
12800         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
12801         check for 128-bit long double before checking TCmode.
12802         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
12803         128-bit long doubles before checking TFmode or TCmode.
12804         (FLOAT128_IBM_P): Likewise.
12806 2018-01-10  Martin Sebor  <msebor@redhat.com>
12808         PR tree-optimization/83671
12809         * builtins.c (c_strlen): Unconditionally return zero for the empty
12810         string.
12811         Use -Warray-bounds for warnings.
12812         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
12813         for non-constant array indices with COMPONENT_REF, arrays of
12814         arrays, and pointers to arrays.
12815         (gimple_fold_builtin_strlen): Determine and set length range for
12816         non-constant character arrays.
12818 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
12820         PR middle-end/81897
12821         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
12822         empty blocks.
12824 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
12826         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
12828 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12830         PR target/83399
12831         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
12832         VECTOR_MEM_ALTIVEC_OR_VSX_P.
12833         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
12834         indexed_or_indirect_operand predicate.
12835         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
12836         (*vsx_le_perm_load_v8hi): Likewise.
12837         (*vsx_le_perm_load_v16qi): Likewise.
12838         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
12839         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
12840         (*vsx_le_perm_store_v8hi): Likewise.
12841         (*vsx_le_perm_store_v16qi): Likewise.
12842         (eight unnamed splitters): Likewise.
12844 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12846         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
12847         * config/rs6000/emmintrin.h: Likewise.
12848         * config/rs6000/mmintrin.h: Likewise.
12849         * config/rs6000/xmmintrin.h: Likewise.
12851 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
12853         PR c++/43486
12854         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
12855         "public_flag".
12856         * tree.c (tree_nop_conversion): Return true for location wrapper
12857         nodes.
12858         (maybe_wrap_with_location): New function.
12859         (selftest::check_strip_nops): New function.
12860         (selftest::test_location_wrappers): New function.
12861         (selftest::tree_c_tests): Call it.
12862         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
12863         (maybe_wrap_with_location): New decl.
12864         (EXPR_LOCATION_WRAPPER_P): New macro.
12865         (location_wrapper_p): New inline function.
12866         (tree_strip_any_location_wrapper): New inline function.
12868 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
12870         PR target/83735
12871         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
12872         stack_realign_offset for the largest alignment of stack slot
12873         actually used.
12874         (ix86_find_max_used_stack_alignment): New function.
12875         (ix86_finalize_stack_frame_flags): Use it.  Set
12876         max_used_stack_alignment if we don't realign stack.
12877         * config/i386/i386.h (machine_function): Add
12878         max_used_stack_alignment.
12880 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
12882         * config/arm/arm.opt (-mbranch-cost): New option.
12883         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
12884         account.
12886 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
12888         PR target/83629
12889         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
12890         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
12892 2018-01-10  Richard Biener  <rguenther@suse.de>
12894         PR debug/83765
12895         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
12896         early out so it also covers the case where we have a non-NULL
12897         origin.
12899 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
12901         PR tree-optimization/83753
12902         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
12903         for non-strided grouped accesses if the number of elements is 1.
12905 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12907         PR target/81616
12908         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
12909         * i386.h (TARGET_USE_GATHER): Define.
12910         * x86-tune.def (X86_TUNE_USE_GATHER): New.
12912 2018-01-10  Martin Liska  <mliska@suse.cz>
12914         PR bootstrap/82831
12915         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
12916         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
12917         partitioning.
12918         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
12919         CLEANUP_NO_PARTITIONING is not set.
12921 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
12923         * doc/rtl.texi: Remove documentation of (const ...) wrappers
12924         for vectors, as a partial revert of r254296.
12925         * rtl.h (const_vec_p): Delete.
12926         (const_vec_duplicate_p): Don't test for vector CONSTs.
12927         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
12928         * expmed.c (make_tree): Likewise.
12930         Revert:
12931         * common.md (E, F): Use CONSTANT_P instead of checking for
12932         CONST_VECTOR.
12933         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
12934         checking for CONST_VECTOR.
12936 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
12938         PR middle-end/83575
12939         * predict.c (force_edge_cold): Handle in more sane way edges
12940         with no prediction.
12942 2018-01-09  Carl Love  <cel@us.ibm.com>
12944         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
12945         V4SI, V4SF types.
12946         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
12947         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
12948         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
12949         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
12950         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
12951         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
12952         * config/rs6000/rs6000-protos.h: Add extern defition for
12953         rs6000_generate_float2_double_code.
12954         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
12955         function.
12956         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
12957         (float2_v2df): Add define_expand.
12959 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
12961         PR target/83628
12962         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
12963         op_mode in the force_to_mode call.
12965 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
12967         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
12968         instead of checking each element individually.
12969         (aarch64_evpc_uzp): Likewise.
12970         (aarch64_evpc_zip): Likewise.
12971         (aarch64_evpc_ext): Likewise.
12972         (aarch64_evpc_rev): Likewise.
12973         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
12974         instead of checking each element individually.  Return true without
12975         generating rtl if
12976         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
12977         whether all selected elements come from the same input, instead of
12978         checking each element individually.  Remove calls to gen_rtx_REG,
12979         start_sequence and end_sequence and instead assert that no rtl is
12980         generated.
12982 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
12984         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
12985         order of HIGH and CONST checks.
12987 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
12989         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
12990         if the destination isn't an SSA_NAME.
12992 2018-01-09  Richard Biener  <rguenther@suse.de>
12994         PR tree-optimization/83668
12995         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
12996         move prologue...
12997         (canonicalize_loop_form): ... here, renamed from ...
12998         (canonicalize_loop_closed_ssa_form): ... this and amended to
12999         swap successor edges for loop exit blocks to make us use
13000         the RPO order we need for initial schedule generation.
13002 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
13004         PR tree-optimization/64811
13005         * match.pd: When optimizing comparisons with Inf, avoid
13006         introducing or losing exceptions from comparisons with NaN.
13008 2018-01-09  Martin Liska  <mliska@suse.cz>
13010         PR sanitizer/82517
13011         * asan.c (shadow_mem_size): Add gcc_assert.
13013 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
13015         Don't save registers in main().
13017         PR target/83738
13018         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
13019         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
13020         * config/avr/avr.c (avr_set_current_function): Don't error if
13021         naked, OS_task or OS_main are specified at the same time.
13022         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
13023         OS_main.
13024         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
13025         attribute.
13026         * common/config/avr/avr-common.c (avr_option_optimization_table):
13027         Switch on -mmain-is-OS_task for optimizing compilations.
13029 2018-01-09  Richard Biener  <rguenther@suse.de>
13031         PR tree-optimization/83572
13032         * graphite.c: Include cfganal.h.
13033         (graphite_transform_loops): Connect infinite loops to exit
13034         and remove fake edges at the end.
13036 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
13038         * ipa-inline.c (edge_badness): Revert accidental checkin.
13040 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
13042         PR ipa/80763
13043         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
13044         symbols; not inline clones.
13046 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
13048         PR target/83507
13049         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
13050         hard registers.  Formatting fixes.
13052         PR preprocessor/83722
13053         * gcc.c (try_generate_repro): Pass
13054         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
13055         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
13056         do_report_bug.
13058 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
13059             Kito Cheng  <kito.cheng@gmail.com>
13061         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
13062         (riscv_leaf_function_p): Delete.
13063         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
13065 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13067         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
13068         function.
13069         (do_ifelse): New function.
13070         (do_isel): New function.
13071         (do_sub3): New function.
13072         (do_add3): New function.
13073         (do_load_mask_compare): New function.
13074         (do_overlap_load_compare): New function.
13075         (expand_compare_loop): New function.
13076         (expand_block_compare): Call expand_compare_loop() when appropriate.
13077         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
13078         option description.
13079         (-mblock-compare-inline-loop-limit): New option.
13081 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13083         PR target/83677
13084         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
13085         Reverse order of second and third operands in first alternative.
13086         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
13087         of first and second elements in UNSPEC_VPERMR vector.
13088         (altivec_expand_vec_perm_le): Likewise.
13090 2018-01-08  Jeff Law  <law@redhat.com>
13092         PR rtl-optimizatin/81308
13093         * tree-switch-conversion.c (cfg_altered): New file scoped static.
13094         (process_switch): If group_case_labels makes a change, then set
13095         cfg_altered.
13096         (pass_convert_switch::execute): If a switch is converted, then
13097         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
13099         PR rtl-optimization/81308
13100         * recog.c (split_all_insns): Conditionally cleanup the CFG after
13101         splitting insns.
13103 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
13105         PR target/83663 - Revert r255946
13106         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
13107         generation for cases where splatting a value is not useful.
13108         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
13109         across a vec_duplicate and a paradoxical subreg forming a vector
13110         mode to a vec_concat.
13112 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13114         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
13115         -march=armv8.3-a variants.
13116         * config/arm/t-multilib: Likewise.
13117         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
13119 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13121         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
13122         to generate rtl.
13123         (cceq_ior_compare_complement): Give it a name so I can use it, and
13124         change boolean_or_operator predicate to boolean_operator so it can
13125         be used to generate a crand.
13126         (eqne): New code iterator.
13127         (bd/bd_neg): New code_attrs.
13128         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
13129         a single define_insn.
13130         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
13131         decrement (bdnzt/bdnzf/bdzt/bdzf).
13132         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
13133         with the new names of the branch decrement patterns, and added the
13134         names of the branch decrement conditional patterns.
13136 2018-01-08  Richard Biener  <rguenther@suse.de>
13138         PR tree-optimization/83563
13139         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
13140         cache.
13142 2018-01-08  Richard Biener  <rguenther@suse.de>
13144         PR middle-end/83713
13145         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
13147 2018-01-08  Richard Biener  <rguenther@suse.de>
13149         PR tree-optimization/83685
13150         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
13151         references to abnormals.
13153 2018-01-08  Richard Biener  <rguenther@suse.de>
13155         PR lto/83719
13156         * dwarf2out.c (output_indirect_strings): Handle empty
13157         skeleton_debug_str_hash.
13158         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
13160 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
13162         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
13163         (emit_store_direct): Likewise.
13164         (arc_trampoline_adjust_address): Likewise.
13165         (arc_asm_trampoline_template): New function.
13166         (arc_initialize_trampoline): Use asm_trampoline_template.
13167         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
13168         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
13169         * config/arc/arc.md (flush_icache): Delete pattern.
13171 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
13173         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
13174         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
13175         munaligned-access.
13177 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13179         PR target/83681
13180         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
13181         by not USED_FOR_TARGET.
13182         (make_pass_resolve_sw_modes): Likewise.
13184 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13186         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
13187         USED_FOR_TARGET.
13189 2018-01-08  Richard Biener  <rguenther@suse.de>
13191         PR middle-end/83580
13192         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
13194 2018-01-08  Richard Biener  <rguenther@suse.de>
13196         PR middle-end/83517
13197         * match.pd ((t * 2) / 2) -> t): Add missing :c.
13199 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
13201         PR middle-end/81897
13202         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
13203         basic blocks with a small number of successors.
13204         (convert_control_dep_chain_into_preds): Improve handling of
13205         forwarder blocks.
13206         (dump_predicates): Split apart into...
13207         (dump_pred_chain): ...here...
13208         (dump_pred_info): ...and here.
13209         (can_one_predicate_be_invalidated_p): Add debugging printfs.
13210         (can_chain_union_be_invalidated_p): Improve check for invalidation
13211         of paths.
13212         (uninit_uses_cannot_happen): Avoid unnecessary if
13213         convert_control_dep_chain_into_preds yielded nothing.
13215 2018-01-06  Martin Sebor  <msebor@redhat.com>
13217         PR tree-optimization/83640
13218         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
13219         subtracting negative offset from size.
13220         (builtin_access::overlap): Adjust offset bounds of the access to fall
13221         within the size of the object if possible.
13223 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
13225         PR rtl-optimization/83699
13226         * expmed.c (extract_bit_field_1): Restrict the vector usage of
13227         extract_bit_field_as_subreg to cases in which the extracted
13228         value is also a vector.
13230         * lra-constraints.c (process_alt_operands): Test for the equivalence
13231         substitutions when detecting a possible reload cycle.
13233 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
13235         PR debug/83480
13236         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
13237         by default if flag_selective_schedling{,2}.  Formatting fixes.
13239         PR rtl-optimization/83682
13240         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
13241         if it has non-VECTOR_MODE element mode.
13242         (vec_duplicate_p): Likewise.
13244         PR middle-end/83694
13245         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
13246         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
13248 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
13250         PR target/83604
13251         * config/i386/i386-builtin.def
13252         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
13253         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
13254         Require also OPTION_MASK_ISA_AVX512F in addition to
13255         OPTION_MASK_ISA_GFNI.
13256         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
13257         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
13258         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
13259         to OPTION_MASK_ISA_GFNI.
13260         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
13261         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
13262         OPTION_MASK_ISA_AVX512BW.
13263         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
13264         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
13265         addition to OPTION_MASK_ISA_GFNI.
13266         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
13267         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
13268         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
13269         to OPTION_MASK_ISA_GFNI.
13270         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
13271         a requirement for all ISAs rather than any of them with a few
13272         exceptions.
13273         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
13274         processing.
13275         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
13276         bitmasks to be enabled with 3 exceptions, instead of requiring any
13277         enabled ISA with lots of exceptions.
13278         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
13279         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
13280         Change avx512bw in isa attribute to avx512f.
13281         * config/i386/sgxintrin.h: Add license boilerplate.
13282         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
13283         to __AVX512F__ and __AVX512VL to __AVX512VL__.
13284         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
13285         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
13286         defined.
13287         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
13288         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
13289         temporarily sse2 rather than sse if not enabled already.
13291         PR target/83604
13292         * config/i386/sse.md (VI248_VLBW): Rename to ...
13293         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
13294         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
13295         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
13296         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
13297         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
13298         mode iterator instead of VI248_VLBW.
13300 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
13302         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
13303         (record_modified): Skip clobbers; add debug output.
13304         (param_change_prob): Use sreal frequencies.
13306 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
13308         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
13309         punt for user-aligned variables.
13311 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
13313         * tree-chrec.c (chrec_contains_symbols): Return true for
13314         POLY_INT_CST.
13316 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
13318         PR target/82439
13319         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
13320         of (x|y) == x for BICS pattern.
13322 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
13324         PR tree-optimization/83605
13325         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
13326         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
13327         can throw.
13329 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13331         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
13332         * config/epiphany/rtems.h: New file.
13334 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13335             Uros Bizjak  <ubizjak@gmail.com>
13337         PR target/83554
13338         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
13339         QIreg_operand instead of register_operand predicate.
13340         * config/i386/i386.c (ix86_rop_should_change_byte_p,
13341         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
13342         comments instead of -fmitigate[-_]rop.
13344 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13346         PR bootstrap/81926
13347         * cgraphunit.c (symbol_table::compile): Switch to text_section
13348         before calling assembly_start debug hook.
13349         * run-rtl-passes.c (run_rtl_passes): Likewise.
13350         Include output.h.
13352 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13354         * tree-vrp.c (extract_range_from_binary_expr_1): Check
13355         range_int_cst_p rather than !symbolic_range_p before calling
13356         extract_range_from_multiplicative_op_1.
13358 2018-01-04  Jeff Law  <law@redhat.com>
13360         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
13361         redundant test in assertion.
13363 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13365         * doc/rtl.texi: Document machine_mode wrapper classes.
13367 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13369         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
13370         using tree_to_uhwi.
13372 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13374         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
13375         the VEC_PERM_EXPR fold to fail.
13377 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13379         PR debug/83585
13380         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
13381         to switched_sections.
13383 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13385         PR target/83680
13386         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
13387         test for d.testing.
13389 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
13391         PR target/83387
13392         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
13393         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
13395 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13397         PR debug/83666
13398         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
13399         is BLKmode and bitpos not zero or mode change is needed.
13401 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13403         PR target/83675
13404         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
13405         TARGET_VIS2.
13407 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
13409         PR target/83628
13410         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
13411         instead of MULT rtx.  Update all corresponding splitters.
13412         (*saddl_se): Ditto.
13413         (*ssub<modesuffix>): Ditto.
13414         (*ssubl_se): Ditto.
13415         (*cmp_sadd_di): Update split patterns.
13416         (*cmp_sadd_si): Ditto.
13417         (*cmp_sadd_sidi): Ditto.
13418         (*cmp_ssub_di): Ditto.
13419         (*cmp_ssub_si): Ditto.
13420         (*cmp_ssub_sidi): Ditto.
13421         * config/alpha/predicates.md (const23_operand): New predicate.
13422         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
13423         Look for ASHIFT, not MULT inner operand.
13424         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
13426 2018-01-04  Martin Liska  <mliska@suse.cz>
13428         PR gcov-profile/83669
13429         * gcov.c (output_intermediate_file): Add version to intermediate
13430         gcov file.
13431         * doc/gcov.texi: Document new field 'version' in intermediate
13432         file format. Fix location of '-k' option of gcov command.
13434 2018-01-04  Martin Liska  <mliska@suse.cz>
13436         PR ipa/82352
13437         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
13439 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13441         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
13443 2018-01-03  Martin Sebor  <msebor@redhat.com>
13445         PR tree-optimization/83655
13446         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
13447         checking calls with invalid arguments.
13449 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13451         * tree-vect-stmts.c (vect_get_store_rhs): New function.
13452         (vectorizable_mask_load_store): Delete.
13453         (vectorizable_call): Return false for masked loads and stores.
13454         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
13455         instead of gimple_assign_rhs1.
13456         (vectorizable_load): Handle IFN_MASK_LOAD.
13457         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
13459 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13461         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
13462         split out from..,
13463         (vectorizable_mask_load_store): ...here.
13464         (vectorizable_load): ...and here.
13466 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13468         * tree-vect-stmts.c (vect_build_all_ones_mask)
13469         (vect_build_zero_merge_argument): New functions, split out from...
13470         (vectorizable_load): ...here.
13472 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13474         * tree-vect-stmts.c (vect_check_store_rhs): New function,
13475         split out from...
13476         (vectorizable_mask_load_store): ...here.
13477         (vectorizable_store): ...and here.
13479 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13481         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
13482         split out from...
13483         (vectorizable_mask_load_store): ...here.
13485 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13487         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
13488         (vect_model_store_cost): Take a vec_load_store_type instead of a
13489         vect_def_type.
13490         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
13491         (vect_model_store_cost): Take a vec_load_store_type instead of a
13492         vect_def_type.
13493         (vectorizable_mask_load_store): Update accordingly.
13494         (vectorizable_store): Likewise.
13495         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
13497 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13499         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
13500         IFN_MASK_LOAD calls here rather than...
13501         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
13503 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13504             Alan Hayward  <alan.hayward@arm.com>
13505             David Sherwood  <david.sherwood@arm.com>
13507         * expmed.c (extract_bit_field_1): For vector extracts,
13508         fall back to extract_bit_field_as_subreg if vec_extract
13509         isn't available.
13511 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13512             Alan Hayward  <alan.hayward@arm.com>
13513             David Sherwood  <david.sherwood@arm.com>
13515         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
13516         they are variable or constant sized.
13517         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
13518         slots for constant-sized data.
13520 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13521             Alan Hayward  <alan.hayward@arm.com>
13522             David Sherwood  <david.sherwood@arm.com>
13524         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
13525         handling COND_EXPRs with boolean comparisons, try to find a better
13526         basis for the mask type than the boolean itself.
13528 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13530         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
13531         is calculated and how it can be overridden.
13532         * genmodes.c (max_bitsize_mode_any_mode): New variable.
13533         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
13534         if defined.
13535         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
13536         if nonzero.
13538 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13539             Alan Hayward  <alan.hayward@arm.com>
13540             David Sherwood  <david.sherwood@arm.com>
13542         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
13543         Remove the mode argument.
13544         (aarch64_simd_valid_immediate): Remove the mode and inverse
13545         arguments.
13546         * config/aarch64/iterators.md (bitsize): New iterator.
13547         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
13548         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
13549         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
13550         aarch64_simd_valid_immediate.
13551         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
13552         (aarch64_reg_or_bic_imm): Likewise.
13553         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
13554         with an insn_type enum and msl with a modifier_type enum.
13555         Replace element_width with a scalar_mode.  Change the shift
13556         to unsigned int.  Add constructors for scalar_float_mode and
13557         scalar_int_mode elements.
13558         (aarch64_vect_float_const_representable_p): Delete.
13559         (aarch64_can_const_movi_rtx_p)
13560         (aarch64_simd_scalar_immediate_valid_for_move)
13561         (aarch64_simd_make_constant): Update call to
13562         aarch64_simd_valid_immediate.
13563         (aarch64_advsimd_valid_immediate_hs): New function.
13564         (aarch64_advsimd_valid_immediate): Likewise.
13565         (aarch64_simd_valid_immediate): Remove mode and inverse
13566         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
13567         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
13568         and aarch64_float_const_representable_p on the result.
13569         (aarch64_output_simd_mov_immediate): Remove mode argument.
13570         Update call to aarch64_simd_valid_immediate and use of
13571         simd_immediate_info.
13572         (aarch64_output_scalar_simd_mov_immediate): Update call
13573         accordingly.
13575 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13576             Alan Hayward  <alan.hayward@arm.com>
13577             David Sherwood  <david.sherwood@arm.com>
13579         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
13580         (mode_nunits): Likewise CONST_MODE_NUNITS.
13581         * machmode.def (ADJUST_NUNITS): Document.
13582         * genmodes.c (mode_data::need_nunits_adj): New field.
13583         (blank_mode): Update accordingly.
13584         (adj_nunits): New variable.
13585         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
13586         parameter.
13587         (emit_mode_size_inline): Set need_bytesize_adj for all modes
13588         listed in adj_nunits.
13589         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
13590         listed in adj_nunits.  Don't emit case statements for such modes.
13591         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
13592         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
13593         nothing if adj_nunits is nonnull.
13594         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
13595         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
13596         (emit_mode_fbit): Update use of print_maybe_const_decl.
13597         (emit_move_size): Likewise.  Treat the array as non-const
13598         if adj_nunits.
13599         (emit_mode_adjustments): Handle adj_nunits.
13601 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13603         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
13604         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
13605         (VECTOR_MODES): Use it.
13606         (make_vector_modes): Take the prefix as an argument.
13608 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13609             Alan Hayward  <alan.hayward@arm.com>
13610             David Sherwood  <david.sherwood@arm.com>
13612         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
13613         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
13614         for MODE_VECTOR_BOOL.
13615         * machmode.def (VECTOR_BOOL_MODE): Document.
13616         * genmodes.c (VECTOR_BOOL_MODE): New macro.
13617         (make_vector_bool_mode): New function.
13618         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
13619         MODE_VECTOR_BOOL.
13620         * lto-streamer-in.c (lto_input_mode_table): Likewise.
13621         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
13622         Likewise.
13623         * stor-layout.c (int_mode_for_mode): Likewise.
13624         * tree.c (build_vector_type_for_mode): Likewise.
13625         * varasm.c (output_constant_pool_2): Likewise.
13626         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
13627         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
13628         for MODE_VECTOR_BOOL.
13629         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
13630         of mode class checks.
13631         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
13632         instead of a list of mode class checks.
13633         (expand_vector_scalar_condition): Likewise.
13634         (type_for_widest_vector_mode): Handle BImode as an inner mode.
13636 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13637             Alan Hayward  <alan.hayward@arm.com>
13638             David Sherwood  <david.sherwood@arm.com>
13640         * machmode.h (mode_size): Change from unsigned short to
13641         poly_uint16_pod.
13642         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
13643         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13644         or if measurement_type is not polynomial.
13645         (fixed_size_mode::includes_p): Check for constant-sized modes.
13646         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
13647         return a poly_uint16 rather than an unsigned short.
13648         (emit_mode_size): Change the type of mode_size from unsigned short
13649         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
13650         (emit_mode_adjustments): Cope with polynomial vector sizes.
13651         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13652         for GET_MODE_SIZE.
13653         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13654         for GET_MODE_SIZE.
13655         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
13656         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
13657         * caller-save.c (setup_save_areas): Likewise.
13658         (replace_reg_with_saved_mem): Likewise.
13659         * calls.c (emit_library_call_value_1): Likewise.
13660         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
13661         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
13662         (gen_lowpart_for_combine): Likewise.
13663         * convert.c (convert_to_integer_1): Likewise.
13664         * cse.c (equiv_constant, cse_insn): Likewise.
13665         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
13666         (cselib_subst_to_values): Likewise.
13667         * dce.c (word_dce_process_block): Likewise.
13668         * df-problems.c (df_word_lr_mark_ref): Likewise.
13669         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
13670         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
13671         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
13672         (rtl_for_decl_location): Likewise.
13673         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
13674         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
13675         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
13676         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
13677         (expand_expr_real_1): Likewise.
13678         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
13679         (pad_below): Likewise.
13680         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13681         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
13682         * ira.c (get_subreg_tracking_sizes): Likewise.
13683         * ira-build.c (ira_create_allocno_objects): Likewise.
13684         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
13685         (ira_sort_regnos_for_alter_reg): Likewise.
13686         * ira-costs.c (record_operand_costs): Likewise.
13687         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
13688         (resolve_simple_move): Likewise.
13689         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
13690         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
13691         (lra_constraints): Likewise.
13692         (CONST_POOL_OK_P): Reject variable-sized modes.
13693         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
13694         (add_pseudo_to_slot, lra_spill): Likewise.
13695         * omp-low.c (omp_clause_aligned_alignment): Likewise.
13696         * optabs-query.c (get_best_extraction_insn): Likewise.
13697         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
13698         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
13699         (expand_mult_highpart, valid_multiword_target_p): Likewise.
13700         * recog.c (offsettable_address_addr_space_p): Likewise.
13701         * regcprop.c (maybe_mode_change): Likewise.
13702         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
13703         * regrename.c (build_def_use): Likewise.
13704         * regstat.c (dump_reg_info): Likewise.
13705         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
13706         (find_reloads, find_reloads_subreg_address): Likewise.
13707         * reload1.c (eliminate_regs_1): Likewise.
13708         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
13709         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
13710         (simplify_binary_operation_1, simplify_subreg): Likewise.
13711         * targhooks.c (default_function_arg_padding): Likewise.
13712         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
13713         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
13714         (verify_gimple_assign_ternary): Likewise.
13715         * tree-inline.c (estimate_move_cost): Likewise.
13716         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13717         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
13718         (get_address_cost_ainc): Likewise.
13719         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
13720         (vect_supportable_dr_alignment): Likewise.
13721         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13722         (vectorizable_reduction): Likewise.
13723         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
13724         (vectorizable_operation, vectorizable_load): Likewise.
13725         * tree.c (build_same_sized_truth_vector_type): Likewise.
13726         * valtrack.c (cleanup_auto_inc_dec): Likewise.
13727         * var-tracking.c (emit_note_insn_var_location): Likewise.
13728         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
13729         (ADDR_VEC_ALIGN): Likewise.
13731 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13732             Alan Hayward  <alan.hayward@arm.com>
13733             David Sherwood  <david.sherwood@arm.com>
13735         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
13736         unsigned short.
13737         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13738         or if measurement_type is polynomial.
13739         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
13740         * combine.c (make_extraction): Likewise.
13741         * dse.c (find_shift_sequence): Likewise.
13742         * dwarf2out.c (mem_loc_descriptor): Likewise.
13743         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
13744         (extract_bit_field, extract_low_bits): Likewise.
13745         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
13746         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
13747         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
13748         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
13749         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13750         * reload.c (find_reloads): Likewise.
13751         * reload1.c (alter_reg): Likewise.
13752         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
13753         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
13754         * tree-if-conv.c (predicate_mem_writes): Likewise.
13755         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
13756         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
13757         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
13758         * valtrack.c (dead_debug_insert_temp): Likewise.
13759         * varasm.c (mergeable_constant_section): Likewise.
13760         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
13762 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13763             Alan Hayward  <alan.hayward@arm.com>
13764             David Sherwood  <david.sherwood@arm.com>
13766         * expr.c (expand_assignment): Cope with polynomial mode sizes
13767         when assigning to a CONCAT.
13769 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13770             Alan Hayward  <alan.hayward@arm.com>
13771             David Sherwood  <david.sherwood@arm.com>
13773         * machmode.h (mode_precision): Change from unsigned short to
13774         poly_uint16_pod.
13775         (mode_to_precision): Return a poly_uint16 rather than an unsigned
13776         short.
13777         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
13778         or if measurement_type is not polynomial.
13779         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
13780         in which the mode is already known to be a scalar_int_mode.
13781         * genmodes.c (emit_mode_precision): Change the type of mode_precision
13782         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
13783         initializer.
13784         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13785         for GET_MODE_PRECISION.
13786         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13787         for GET_MODE_PRECISION.
13788         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
13789         as polynomial.
13790         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
13791         (expand_field_assignment, make_extraction): Likewise.
13792         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
13793         (get_last_value): Likewise.
13794         * convert.c (convert_to_integer_1): Likewise.
13795         * cse.c (cse_insn): Likewise.
13796         * expr.c (expand_expr_real_1): Likewise.
13797         * lra-constraints.c (simplify_operand_subreg): Likewise.
13798         * optabs-query.c (can_atomic_load_p): Likewise.
13799         * optabs.c (expand_atomic_load): Likewise.
13800         (expand_atomic_store): Likewise.
13801         * ree.c (combine_reaching_defs): Likewise.
13802         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
13803         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
13804         * tree.h (type_has_mode_precision_p): Likewise.
13805         * ubsan.c (instrument_si_overflow): Likewise.
13807 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13808             Alan Hayward  <alan.hayward@arm.com>
13809             David Sherwood  <david.sherwood@arm.com>
13811         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
13812         polynomial numbers of units.
13813         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
13814         (valid_vector_subparts_p): New function.
13815         (build_vector_type): Remove temporary shim and take the number
13816         of units as a poly_uint64 rather than an int.
13817         (build_opaque_vector_type): Take the number of units as a
13818         poly_uint64 rather than an int.
13819         * tree.c (build_vector_from_ctor): Handle polynomial
13820         TYPE_VECTOR_SUBPARTS.
13821         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
13822         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
13823         (build_vector_from_val): If the number of units is variable,
13824         use build_vec_duplicate_cst for constant operands and
13825         VEC_DUPLICATE_EXPR otherwise.
13826         (make_vector_type): Remove temporary is_constant ().
13827         (build_vector_type, build_opaque_vector_type): Take the number of
13828         units as a poly_uint64 rather than an int.
13829         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
13830         VECTOR_CST_NELTS.
13831         * cfgexpand.c (expand_debug_expr): Likewise.
13832         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
13833         (store_constructor, expand_expr_real_1): Likewise.
13834         (const_scalar_mask_from_tree): Likewise.
13835         * fold-const-call.c (fold_const_reduction): Likewise.
13836         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
13837         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
13838         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
13839         (fold_relational_const): Likewise.
13840         (native_interpret_vector): Likewise.  Change the size from an
13841         int to an unsigned int.
13842         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
13843         TYPE_VECTOR_SUBPARTS.
13844         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
13845         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
13846         duplicating a non-constant operand into a variable-length vector.
13847         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
13848         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
13849         * ipa-icf.c (sem_variable::equals): Likewise.
13850         * match.pd: Likewise.
13851         * omp-simd-clone.c (simd_clone_subparts): Likewise.
13852         * print-tree.c (print_node): Likewise.
13853         * stor-layout.c (layout_type): Likewise.
13854         * targhooks.c (default_builtin_vectorization_cost): Likewise.
13855         * tree-cfg.c (verify_gimple_comparison): Likewise.
13856         (verify_gimple_assign_binary): Likewise.
13857         (verify_gimple_assign_ternary): Likewise.
13858         (verify_gimple_assign_single): Likewise.
13859         * tree-pretty-print.c (dump_generic_node): Likewise.
13860         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13861         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
13862         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
13863         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
13864         (vect_shift_permute_load_chain): Likewise.
13865         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
13866         (expand_vector_condition, optimize_vector_constructor): Likewise.
13867         (lower_vec_perm, get_compute_type): Likewise.
13868         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13869         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
13870         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
13871         (vect_recog_mask_conversion_pattern): Likewise.
13872         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
13873         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
13874         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13875         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
13876         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
13877         (vectorizable_shift, vectorizable_operation, vectorizable_store)
13878         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
13879         (supportable_widening_operation): Likewise.
13880         (supportable_narrowing_operation): Likewise.
13881         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
13882         Likewise.
13883         * varasm.c (output_constant): Likewise.
13885 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13886             Alan Hayward  <alan.hayward@arm.com>
13887             David Sherwood  <david.sherwood@arm.com>
13889         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
13890         so that both the length == 3 and length != 3 cases set up their
13891         own permute vectors.  Add comments explaining why we know the
13892         number of elements is constant.
13893         (vect_permute_load_chain): Likewise.
13895 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13896             Alan Hayward  <alan.hayward@arm.com>
13897             David Sherwood  <david.sherwood@arm.com>
13899         * machmode.h (mode_nunits): Change from unsigned char to
13900         poly_uint16_pod.
13901         (ONLY_FIXED_SIZE_MODES): New macro.
13902         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
13903         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
13904         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
13905         New typedefs.
13906         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
13907         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
13908         or if measurement_type is not polynomial.
13909         * genmodes.c (ZERO_COEFFS): New macro.
13910         (emit_mode_nunits_inline): Make mode_nunits_inline return a
13911         poly_uint16.
13912         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
13913         Use ZERO_COEFFS when emitting initializers.
13914         * data-streamer.h (bp_pack_poly_value): New function.
13915         (bp_unpack_poly_value): Likewise.
13916         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13917         for GET_MODE_NUNITS.
13918         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13919         for GET_MODE_NUNITS.
13920         * tree.c (make_vector_type): Remove temporary shim and make
13921         the real function take the number of units as a poly_uint64
13922         rather than an int.
13923         (build_vector_type_for_mode): Handle polynomial nunits.
13924         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
13925         * emit-rtl.c (const_vec_series_p_1): Likewise.
13926         (gen_rtx_CONST_VECTOR): Likewise.
13927         * fold-const.c (test_vec_duplicate_folding): Likewise.
13928         * genrecog.c (validate_pattern): Likewise.
13929         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
13930         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
13931         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
13932         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
13933         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
13934         * rtlanal.c (subreg_get_info): Likewise.
13935         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13936         (vect_grouped_load_supported): Likewise.
13937         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
13938         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
13939         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
13940         (simplify_const_unary_operation, simplify_binary_operation_1)
13941         (simplify_const_binary_operation, simplify_ternary_operation)
13942         (test_vector_ops_duplicate, test_vector_ops): Likewise.
13943         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
13944         instead of CONST_VECTOR_NUNITS.
13945         * varasm.c (output_constant_pool_2): Likewise.
13946         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
13947         explicit-encoded elements in the XVEC for variable-length vectors.
13949 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13951         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
13953 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13954             Alan Hayward  <alan.hayward@arm.com>
13955             David Sherwood  <david.sherwood@arm.com>
13957         * coretypes.h (fixed_size_mode): Declare.
13958         (fixed_size_mode_pod): New typedef.
13959         * builtins.h (target_builtins::x_apply_args_mode)
13960         (target_builtins::x_apply_result_mode): Change type to
13961         fixed_size_mode_pod.
13962         * builtins.c (apply_args_size, apply_result_size, result_vector)
13963         (expand_builtin_apply_args_1, expand_builtin_apply)
13964         (expand_builtin_return): Update accordingly.
13966 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13968         * cse.c (hash_rtx_cb): Hash only the encoded elements.
13969         * cselib.c (cselib_hash_rtx): Likewise.
13970         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
13971         CONST_VECTOR encoding.
13973 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
13974             Jeff Law  <law@redhat.com>
13976         PR target/83641
13977         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
13978         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
13979         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
13980         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
13982         PR target/83641
13983         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
13984         explicitly probe *sp in a noreturn function if there were any callee
13985         register saves or frame pointer is needed.
13987 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
13989         PR debug/83621
13990         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
13991         BLKmode for ternary, binary or unary expressions.
13993         PR debug/83645
13994         * var-tracking.c (delete_vta_debug_insn): New inline function.
13995         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
13996         insns from get_insns () to NULL instead of each bb separately.
13997         Use delete_vta_debug_insn.  No longer static.
13998         (vt_debug_insns_local, variable_tracking_main_1): Adjust
13999         delete_vta_debug_insns callers.
14000         * rtl.h (delete_vta_debug_insns): Declare.
14001         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
14002         instead of variable_tracking_main.
14004 2018-01-03  Martin Sebor  <msebor@redhat.com>
14006         PR tree-optimization/83603
14007         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
14008         arguments past the endof the argument list in functions declared
14009         without a prototype.
14010         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
14011         Avoid checking when arguments are null.
14013 2018-01-03  Martin Sebor  <msebor@redhat.com>
14015         PR c/83559
14016         * doc/extend.texi (attribute const): Fix a typo.
14017         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
14018         issuing -Wsuggest-attribute for void functions.
14020 2018-01-03  Martin Sebor  <msebor@redhat.com>
14022         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
14023         offset_int::from instead of wide_int::to_shwi.
14024         (maybe_diag_overlap): Remove assertion.
14025         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
14026         * gimple-ssa-sprintf.c (format_directive): Same.
14027         (parse_directive): Same.
14028         (sprintf_dom_walker::compute_format_length): Same.
14029         (try_substitute_return_value): Same.
14031 2018-01-03  Jeff Law  <law@redhat.com>
14033         PR middle-end/83654
14034         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
14035         non-constant residual for zero at runtime and avoid probing in
14036         that case.  Reorganize code for trailing problem to mirror handling
14037         of the residual.
14039 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
14041         PR tree-optimization/83501
14042         * tree-ssa-strlen.c (get_string_cst): New.
14043         (handle_char_store): Call get_string_cst.
14045 2018-01-03  Martin Liska  <mliska@suse.cz>
14047         PR tree-optimization/83593
14048         * tree-ssa-strlen.c: Include tree-cfg.h.
14049         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
14050         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
14051         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
14052         to false.
14053         (strlen_dom_walker::before_dom_children): Call
14054         gimple_purge_dead_eh_edges. Dump tranformation with details
14055         dump flags.
14056         (strlen_dom_walker::before_dom_children): Update call by adding
14057         new argument cleanup_eh.
14058         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
14060 2018-01-03  Martin Liska  <mliska@suse.cz>
14062         PR ipa/83549
14063         * cif-code.def (VARIADIC_THUNK): New enum value.
14064         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
14065         thunks.
14067 2018-01-03  Jan Beulich  <jbeulich@suse.com>
14069         * sse.md (mov<mode>_internal): Tighten condition for when to use
14070         vmovdqu<ssescalarsize> for TI and OI modes.
14072 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14074         Update copyright years.
14076 2018-01-03  Martin Liska  <mliska@suse.cz>
14078         PR ipa/83594
14079         * ipa-visibility.c (function_and_variable_visibility): Skip
14080         functions with noipa attribure.
14082 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14084         * gcc.c (process_command): Update copyright notice dates.
14085         * gcov-dump.c (print_version): Ditto.
14086         * gcov.c (print_version): Ditto.
14087         * gcov-tool.c (print_version): Ditto.
14088         * gengtype.c (create_file): Ditto.
14089         * doc/cpp.texi: Bump @copying's copyright year.
14090         * doc/cppinternals.texi: Ditto.
14091         * doc/gcc.texi: Ditto.
14092         * doc/gccint.texi: Ditto.
14093         * doc/gcov.texi: Ditto.
14094         * doc/install.texi: Ditto.
14095         * doc/invoke.texi: Ditto.
14097 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14099         * vector-builder.h (vector_builder::m_full_nelts): Change from
14100         unsigned int to poly_uint64.
14101         (vector_builder::full_nelts): Update prototype accordingly.
14102         (vector_builder::new_vector): Likewise.
14103         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
14104         (vector_builder::operator ==): Likewise.
14105         (vector_builder::finalize): Likewise.
14106         * int-vector-builder.h (int_vector_builder::int_vector_builder):
14107         Take the number of elements as a poly_uint64 rather than an
14108         unsigned int.
14109         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
14110         from unsigned int to poly_uint64.
14111         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
14112         (vec_perm_indices::new_vector): Likewise.
14113         (vec_perm_indices::length): Likewise.
14114         (vec_perm_indices::nelts_per_input): Likewise.
14115         (vec_perm_indices::input_nelts): Likewise.
14116         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
14117         number of elements per input as a poly_uint64 rather than an
14118         unsigned int.  Use the original encoding for variable-length
14119         vectors, rather than clamping each individual element.
14120         For the second and subsequent elements in each pattern,
14121         clamp the step and base before clamping their sum.
14122         (vec_perm_indices::series_p): Handle polynomial element counts.
14123         (vec_perm_indices::all_in_range_p): Likewise.
14124         (vec_perm_indices_to_tree): Likewise.
14125         (vec_perm_indices_to_rtx): Likewise.
14126         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
14127         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
14128         (tree_vector_builder::new_binary_operation): Handle polynomial
14129         element counts.  Return false if we need to know the number
14130         of elements at compile time.
14131         * fold-const.c (fold_vec_perm): Punt if the number of elements
14132         isn't known at compile time.
14134 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14136         * vec-perm-indices.h (vec_perm_builder): Change element type
14137         from HOST_WIDE_INT to poly_int64.
14138         (vec_perm_indices::element_type): Update accordingly.
14139         (vec_perm_indices::clamp): Handle polynomial element_types.
14140         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14141         (vec_perm_indices::all_in_range_p): Likewise.
14142         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
14143         than shwi trees.
14144         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
14145         polynomial vec_perm_indices element types.
14146         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
14147         * fold-const.c (fold_vec_perm): Likewise.
14148         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
14149         * tree-vect-generic.c (lower_vec_perm): Likewise.
14150         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14151         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
14152         element type to HOST_WIDE_INT.
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         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
14159         rather than an int.  Use plus_constant.
14160         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
14161         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
14163 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14164             Alan Hayward  <alan.hayward@arm.com>
14165             David Sherwood  <david.sherwood@arm.com>
14167         * calls.c (emit_call_1, expand_call): Change struct_value_size from
14168         a HOST_WIDE_INT to a poly_int64.
14170 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14171             Alan Hayward  <alan.hayward@arm.com>
14172             David Sherwood  <david.sherwood@arm.com>
14174         * calls.c (load_register_parameters): Cope with polynomial
14175         mode sizes.  Require a constant size for BLKmode parameters
14176         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
14177         forces a parameter to be padded at the lsb end in order to
14178         fill a complete number of words, require the parameter size
14179         to be ordered wrt UNITS_PER_WORD.
14181 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14182             Alan Hayward  <alan.hayward@arm.com>
14183             David Sherwood  <david.sherwood@arm.com>
14185         * reload1.c (spill_stack_slot_width): Change element type
14186         from unsigned int to poly_uint64_pod.
14187         (alter_reg): Treat mode sizes as polynomial.
14189 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14190             Alan Hayward  <alan.hayward@arm.com>
14191             David Sherwood  <david.sherwood@arm.com>
14193         * reload.c (complex_word_subreg_p): New function.
14194         (reload_inner_reg_of_subreg, push_reload): Use it.
14196 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14197             Alan Hayward  <alan.hayward@arm.com>
14198             David Sherwood  <david.sherwood@arm.com>
14200         * lra-constraints.c (process_alt_operands): Reject matched
14201         operands whose sizes aren't ordered.
14202         (match_reload): Refer to this check here.
14204 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14205             Alan Hayward  <alan.hayward@arm.com>
14206             David Sherwood  <david.sherwood@arm.com>
14208         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
14209         that the mode size is in the set {1, 2, 4, 8, 16}.
14211 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14212             Alan Hayward  <alan.hayward@arm.com>
14213             David Sherwood  <david.sherwood@arm.com>
14215         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
14216         Use plus_constant instead of gen_rtx_PLUS.
14218 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14219             Alan Hayward  <alan.hayward@arm.com>
14220             David Sherwood  <david.sherwood@arm.com>
14222         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
14223         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
14224         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
14225         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
14226         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
14227         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
14228         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
14229         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
14230         * config/i386/i386.c (ix86_push_rounding): ...this new function.
14231         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
14232         a poly_int64.
14233         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
14234         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
14235         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
14236         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
14237         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
14238         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
14239         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
14240         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
14241         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
14242         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
14243         function.
14244         * expr.c (emit_move_resolve_push): Treat the input and result
14245         of PUSH_ROUNDING as a poly_int64.
14246         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
14247         (emit_push_insn): Likewise.
14248         * lra-eliminations.c (mark_not_eliminable): Likewise.
14249         * recog.c (push_operand): Likewise.
14250         * reload1.c (elimination_effects): Likewise.
14251         * rtlanal.c (nonzero_bits1): Likewise.
14252         * calls.c (store_one_arg): Likewise.  Require the padding to be
14253         known at compile time.
14255 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14256             Alan Hayward  <alan.hayward@arm.com>
14257             David Sherwood  <david.sherwood@arm.com>
14259         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
14260         Use plus_constant instead of gen_rtx_PLUS.
14262 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14263             Alan Hayward  <alan.hayward@arm.com>
14264             David Sherwood  <david.sherwood@arm.com>
14266         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
14267         rather than an int.
14269 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14270             Alan Hayward  <alan.hayward@arm.com>
14271             David Sherwood  <david.sherwood@arm.com>
14273         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
14274         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
14275         via stack temporaries.  Treat the mode size as polynomial too.
14277 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14278             Alan Hayward  <alan.hayward@arm.com>
14279             David Sherwood  <david.sherwood@arm.com>
14281         * expr.c (expand_expr_real_2): When handling conversions involving
14282         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
14283         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
14284         as a poly_uint64 too.
14286 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14287             Alan Hayward  <alan.hayward@arm.com>
14288             David Sherwood  <david.sherwood@arm.com>
14290         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
14292 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14293             Alan Hayward  <alan.hayward@arm.com>
14294             David Sherwood  <david.sherwood@arm.com>
14296         * combine.c (can_change_dest_mode): Handle polynomial
14297         REGMODE_NATURAL_SIZE.
14298         * expmed.c (store_bit_field_1): Likewise.
14299         * expr.c (store_constructor): Likewise.
14300         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
14301         and polynomial REGMODE_NATURAL_SIZE.
14302         (gen_lowpart_common): Likewise.
14303         * reginfo.c (record_subregs_of_mode): Likewise.
14304         * rtlanal.c (read_modify_subreg_p): Likewise.
14306 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14307             Alan Hayward  <alan.hayward@arm.com>
14308             David Sherwood  <david.sherwood@arm.com>
14310         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
14311         numbers of elements.
14313 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14314             Alan Hayward  <alan.hayward@arm.com>
14315             David Sherwood  <david.sherwood@arm.com>
14317         * match.pd: Cope with polynomial numbers of vector elements.
14319 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14320             Alan Hayward  <alan.hayward@arm.com>
14321             David Sherwood  <david.sherwood@arm.com>
14323         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
14324         in a POINTER_PLUS_EXPR.
14326 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14327             Alan Hayward  <alan.hayward@arm.com>
14328             David Sherwood  <david.sherwood@arm.com>
14330         * omp-simd-clone.c (simd_clone_subparts): New function.
14331         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
14332         (ipa_simd_modify_function_body): Likewise.
14334 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14335             Alan Hayward  <alan.hayward@arm.com>
14336             David Sherwood  <david.sherwood@arm.com>
14338         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
14339         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
14340         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
14341         (expand_vector_condition, vector_element): Likewise.
14342         (subparts_gt): New function.
14343         (get_compute_type): Use subparts_gt.
14344         (count_type_subparts): Delete.
14345         (expand_vector_operations_1): Use subparts_gt instead of
14346         count_type_subparts.
14348 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14349             Alan Hayward  <alan.hayward@arm.com>
14350             David Sherwood  <david.sherwood@arm.com>
14352         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
14353         (vect_compile_time_alias): ...this new function.  Do the calculation
14354         on poly_ints rather than trees.
14355         (vect_prune_runtime_alias_test_list): Update call accordingly.
14357 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14358             Alan Hayward  <alan.hayward@arm.com>
14359             David Sherwood  <david.sherwood@arm.com>
14361         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
14362         numbers of units.
14363         (vect_schedule_slp_instance): Likewise.
14365 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14366             Alan Hayward  <alan.hayward@arm.com>
14367             David Sherwood  <david.sherwood@arm.com>
14369         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
14370         constant and extern definitions for variable-length vectors.
14371         (vect_get_constant_vectors): Note that the number of units
14372         is known to be constant.
14374 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14375             Alan Hayward  <alan.hayward@arm.com>
14376             David Sherwood  <david.sherwood@arm.com>
14378         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
14379         of units as polynomial.  Choose between WIDE and NARROW based
14380         on multiple_p.
14382 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14383             Alan Hayward  <alan.hayward@arm.com>
14384             David Sherwood  <david.sherwood@arm.com>
14386         * tree-vect-stmts.c (simd_clone_subparts): New function.
14387         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
14389 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14390             Alan Hayward  <alan.hayward@arm.com>
14391             David Sherwood  <david.sherwood@arm.com>
14393         * tree-vect-stmts.c (vectorizable_call): Treat the number of
14394         vectors as polynomial.  Use build_index_vector for
14395         IFN_GOMP_SIMD_LANE.
14397 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14398             Alan Hayward  <alan.hayward@arm.com>
14399             David Sherwood  <david.sherwood@arm.com>
14401         * tree-vect-stmts.c (get_load_store_type): Treat the number of
14402         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
14403         for variable-length vectors.
14404         (vectorizable_mask_load_store): Treat the number of units as
14405         polynomial, asserting that it is constant if the condition has
14406         already been enforced.
14407         (vectorizable_store, vectorizable_load): Likewise.
14409 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14410             Alan Hayward  <alan.hayward@arm.com>
14411             David Sherwood  <david.sherwood@arm.com>
14413         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
14414         of units as polynomial.  Punt if we can't tell at compile time
14415         which vector contains the final result.
14417 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14418             Alan Hayward  <alan.hayward@arm.com>
14419             David Sherwood  <david.sherwood@arm.com>
14421         * tree-vect-loop.c (vectorizable_induction): Treat the number
14422         of units as polynomial.  Punt on SLP inductions.  Use an integer
14423         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
14424         cast of such a series for variable-length floating-point
14425         reductions.
14427 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14428             Alan Hayward  <alan.hayward@arm.com>
14429             David Sherwood  <david.sherwood@arm.com>
14431         * tree.h (build_index_vector): Declare.
14432         * tree.c (build_index_vector): New function.
14433         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
14434         of units as polynomial, forcibly converting it to a constant if
14435         vectorizable_reduction has already enforced the condition.
14436         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
14437         to create a {1,2,3,...} vector.
14438         (vectorizable_reduction): Treat the number of units as polynomial.
14439         Choose vectype_in based on the largest scalar element size rather
14440         than the smallest number of units.  Enforce the restrictions
14441         relied on above.
14443 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14444             Alan Hayward  <alan.hayward@arm.com>
14445             David Sherwood  <david.sherwood@arm.com>
14447         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
14448         number of units as polynomial.
14450 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14451             Alan Hayward  <alan.hayward@arm.com>
14452             David Sherwood  <david.sherwood@arm.com>
14454         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
14455         * target.def (autovectorize_vector_sizes): Return the vector sizes
14456         by pointer, using vector_sizes rather than a bitmask.
14457         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
14458         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
14459         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
14460         Likewise.
14461         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
14462         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
14463         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
14464         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
14465         * omp-general.c (omp_max_vf): Likewise.
14466         * omp-low.c (omp_clause_aligned_alignment): Likewise.
14467         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
14468         * tree-vect-loop.c (vect_analyze_loop): Likewise.
14469         * tree-vect-slp.c (vect_slp_bb): Likewise.
14470         * doc/tm.texi: Regenerate.
14471         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
14472         to a poly_uint64.
14473         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
14474         the vector size as a poly_uint64 rather than an unsigned int.
14475         (current_vector_size): Change from an unsigned int to a poly_uint64.
14476         (get_vectype_for_scalar_type): Update accordingly.
14477         * tree.h (build_truth_vector_type): Take the size and number of
14478         units as a poly_uint64 rather than an unsigned int.
14479         (build_vector_type): Add a temporary overload that takes
14480         the number of units as a poly_uint64 rather than an unsigned int.
14481         * tree.c (make_vector_type): Likewise.
14482         (build_truth_vector_type): Take the number of units as a poly_uint64
14483         rather than an unsigned int.
14485 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14486             Alan Hayward  <alan.hayward@arm.com>
14487             David Sherwood  <david.sherwood@arm.com>
14489         * target.def (get_mask_mode): Take the number of units and length
14490         as poly_uint64s rather than unsigned ints.
14491         * targhooks.h (default_get_mask_mode): Update accordingly.
14492         * targhooks.c (default_get_mask_mode): Likewise.
14493         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
14494         * doc/tm.texi: Regenerate.
14496 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14497             Alan Hayward  <alan.hayward@arm.com>
14498             David Sherwood  <david.sherwood@arm.com>
14500         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
14501         * omp-general.c (omp_max_vf): Likewise.
14502         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
14503         (expand_omp_simd): Handle polynomial safelen.
14504         * omp-low.c (omplow_simd_context): Add a default constructor.
14505         (omplow_simd_context::max_vf): Change from int to poly_uint64.
14506         (lower_rec_simd_input_clauses): Update accordingly.
14507         (lower_rec_input_clauses): Likewise.
14509 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14510             Alan Hayward  <alan.hayward@arm.com>
14511             David Sherwood  <david.sherwood@arm.com>
14513         * tree-vectorizer.h (vect_nunits_for_cost): New function.
14514         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
14515         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
14516         (vect_analyze_slp_cost): Likewise.
14517         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
14518         (vect_model_load_cost): Likewise.
14520 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14521             Alan Hayward  <alan.hayward@arm.com>
14522             David Sherwood  <david.sherwood@arm.com>
14524         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
14525         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
14526         from an unsigned int * to a poly_uint64_pod *.
14527         (calculate_unrolling_factor): New function.
14528         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
14530 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14531             Alan Hayward  <alan.hayward@arm.com>
14532             David Sherwood  <david.sherwood@arm.com>
14534         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
14535         from an unsigned int to a poly_uint64.
14536         (_loop_vec_info::slp_unrolling_factor): Likewise.
14537         (_loop_vec_info::vectorization_factor): Change from an int
14538         to a poly_uint64.
14539         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
14540         (vect_get_num_vectors): New function.
14541         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
14542         (vect_get_num_copies): Use vect_get_num_vectors.
14543         (vect_analyze_data_ref_dependences): Change max_vf from an int *
14544         to an unsigned int *.
14545         (vect_analyze_data_refs): Change min_vf from an int * to a
14546         poly_uint64 *.
14547         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14548         than an unsigned HOST_WIDE_INT.
14549         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
14550         (vect_analyze_data_ref_dependence): Change max_vf from an int *
14551         to an unsigned int *.
14552         (vect_analyze_data_ref_dependences): Likewise.
14553         (vect_compute_data_ref_alignment): Handle polynomial vf.
14554         (vect_enhance_data_refs_alignment): Likewise.
14555         (vect_prune_runtime_alias_test_list): Likewise.
14556         (vect_shift_permute_load_chain): Likewise.
14557         (vect_supportable_dr_alignment): Likewise.
14558         (dependence_distance_ge_vf): Take the vectorization factor as a
14559         poly_uint64 rather than an unsigned HOST_WIDE_INT.
14560         (vect_analyze_data_refs): Change min_vf from an int * to a
14561         poly_uint64 *.
14562         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
14563         vfm1 as a poly_uint64 rather than an int.  Make the same change
14564         for the returned bound_scalar.
14565         (vect_gen_vector_loop_niters): Handle polynomial vf.
14566         (vect_do_peeling): Likewise.  Update call to
14567         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
14568         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
14569         be constant.
14570         * tree-vect-loop.c (vect_determine_vectorization_factor)
14571         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
14572         (vect_get_known_peeling_cost): Likewise.
14573         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
14574         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
14575         (vect_transform_loop): Likewise.  Use the lowest possible VF when
14576         updating the upper bounds of the loop.
14577         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
14578         rather than an int.
14579         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
14580         polynomial unroll factors.
14581         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
14582         (vect_make_slp_decision): Likewise.
14583         (vect_supported_load_permutation_p): Likewise, and polynomial
14584         vf too.
14585         (vect_analyze_slp_cost): Handle polynomial vf.
14586         (vect_slp_analyze_node_operations): Likewise.
14587         (vect_slp_analyze_bb_1): Likewise.
14588         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14589         than an unsigned HOST_WIDE_INT.
14590         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
14591         (vectorizable_load): Handle polynomial vf.
14592         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
14593         a poly_uint64.
14594         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
14596 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14597             Alan Hayward  <alan.hayward@arm.com>
14598             David Sherwood  <david.sherwood@arm.com>
14600         * match.pd: Handle bit operations involving three constants
14601         and try to fold one pair.
14603 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14605         * tree-vect-loop-manip.c: Include gimple-fold.h.
14606         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
14607         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
14608         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
14609         Add a path that uses a step of VF instead of 1, but disable it
14610         for now.
14611         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
14612         and niters_no_overflow parameters.  Update calls to
14613         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
14614         Create a new SSA name if the latter choses to use a ste other
14615         than zero, and return it via niters_vector_mult_vf_var.
14616         * tree-vect-loop.c (vect_transform_loop): Update calls to
14617         vect_do_peeling, vect_gen_vector_loop_niters and
14618         slpeel_make_loop_iterate_ntimes.
14619         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
14620         (vect_gen_vector_loop_niters): Update declarations after above changes.
14622 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
14624         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
14625         128-bit round to integer instructions.
14626         (ceil<mode>2): Likewise.
14627         (btrunc<mode>2): Likewise.
14628         (round<mode>2): Likewise.
14630 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
14632         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
14633         unaligned VSX load/store on P8/P9.
14634         (expand_block_clear): Allow the use of unaligned VSX
14635         load/store on P8/P9.
14637 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14639         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
14640         New function.
14641         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
14642         swap associated with both a load and a store.
14644 2018-01-02  Andrew Waterman  <andrew@sifive.com>
14646         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
14647         * config/riscv/riscv.md (clear_cache): Use it.
14649 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
14651         * web.c: Remove out-of-date comment.
14653 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14655         * expr.c (fixup_args_size_notes): Check that any existing
14656         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
14657         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
14658         (emit_single_push_insn): ...here.
14660 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14662         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
14663         (const_vector_encoded_nelts): New function.
14664         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
14665         (const_vector_int_elt, const_vector_elt): Declare.
14666         * emit-rtl.c (const_vector_int_elt_1): New function.
14667         (const_vector_elt): Likewise.
14668         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
14669         of CONST_VECTOR_ELT.
14671 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14673         * expr.c: Include rtx-vector-builder.h.
14674         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
14675         directly on the tree encoding.
14676         (const_vector_from_tree): Likewise.
14677         * optabs.c: Include rtx-vector-builder.h.
14678         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
14679         sequence of "u" values.
14680         * vec-perm-indices.c: Include rtx-vector-builder.h.
14681         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
14682         directly on the vec_perm_indices encoding.
14684 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14686         * doc/rtl.texi (const_vector): Describe new encoding scheme.
14687         * Makefile.in (OBJS): Add rtx-vector-builder.o.
14688         * rtx-vector-builder.h: New file.
14689         * rtx-vector-builder.c: Likewise.
14690         * rtl.h (rtx_def::u2): Add a const_vector field.
14691         (CONST_VECTOR_NPATTERNS): New macro.
14692         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
14693         (CONST_VECTOR_DUPLICATE_P): Likewise.
14694         (CONST_VECTOR_STEPPED_P): Likewise.
14695         (CONST_VECTOR_ENCODED_ELT): Likewise.
14696         (const_vec_duplicate_p): Check for a duplicated vector encoding.
14697         (unwrap_const_vec_duplicate): Likewise.
14698         (const_vec_series_p): Check for a non-duplicated vector encoding.
14699         Say that the function only returns true for integer vectors.
14700         * emit-rtl.c: Include rtx-vector-builder.h.
14701         (gen_const_vec_duplicate_1): Delete.
14702         (gen_const_vector): Call gen_const_vec_duplicate instead of
14703         gen_const_vec_duplicate_1.
14704         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
14705         (gen_const_vec_duplicate): Use rtx_vector_builder.
14706         (gen_const_vec_series): Likewise.
14707         (gen_rtx_CONST_VECTOR): Likewise.
14708         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
14709         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14710         Build a new vector rather than modifying a CONST_VECTOR in-place.
14711         (handle_special_swappables): Update call accordingly.
14712         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
14713         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14714         Build a new vector rather than modifying a CONST_VECTOR in-place.
14715         (handle_special_swappables): Update call accordingly.
14717 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14719         * simplify-rtx.c (simplify_const_binary_operation): Use
14720         CONST_VECTOR_ELT instead of XVECEXP.
14722 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14724         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
14725         the selector elements to be different from the data elements
14726         if the selector is a VECTOR_CST.
14727         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
14728         ssizetype for the selector.
14730 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14732         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
14733         before testing each element individually.
14734         * tree-vect-generic.c (lower_vec_perm): Likewise.
14736 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14738         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
14739         * selftest-run-tests.c (selftest::run_tests): Call it.
14740         * vector-builder.h (vector_builder::operator ==): New function.
14741         (vector_builder::operator !=): Likewise.
14742         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
14743         (vec_perm_indices::all_from_input_p): New function.
14744         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14745         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
14746         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
14747         instead of reading the VECTOR_CST directly.  Detect whether both
14748         vector inputs are the same before constructing the vec_perm_indices,
14749         and update the number of inputs argument accordingly.  Use the
14750         utility functions added above.  Only construct sel2 if we need to.
14752 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14754         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
14755         the broadcast of the low byte.
14756         (expand_mult_highpart): Use an explicit encoding for the permutes.
14757         * optabs-query.c (can_mult_highpart_p): Likewise.
14758         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
14759         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14760         (vectorizable_bswap): Likewise.
14761         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
14762         explicit encoding for the power-of-2 permutes.
14763         (vect_permute_store_chain): Likewise.
14764         (vect_grouped_load_supported): Likewise.
14765         (vect_permute_load_chain): Likewise.
14767 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14769         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
14770         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
14771         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
14772         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14773         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
14774         (vect_gen_perm_mask_any): Likewise.
14776 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14778         * int-vector-builder.h: New file.
14779         * vec-perm-indices.h: Include int-vector-builder.h.
14780         (vec_perm_indices): Redefine as an int_vector_builder.
14781         (auto_vec_perm_indices): Delete.
14782         (vec_perm_builder): Redefine as a stand-alone class.
14783         (vec_perm_indices::vec_perm_indices): New function.
14784         (vec_perm_indices::clamp): Likewise.
14785         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
14786         (vec_perm_indices::new_vector): New function.
14787         (vec_perm_indices::new_expanded_vector): Update for new
14788         vec_perm_indices class.
14789         (vec_perm_indices::rotate_inputs): New function.
14790         (vec_perm_indices::all_in_range_p): Operate directly on the
14791         encoded form, without computing elided elements.
14792         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
14793         encoding.  Update for new vec_perm_indices class.
14794         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
14795         the given vec_perm_builder.
14796         (expand_vec_perm_var): Update vec_perm_builder constructor.
14797         (expand_mult_highpart): Use vec_perm_builder instead of
14798         auto_vec_perm_indices.
14799         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
14800         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
14801         or double series encoding as appropriate.
14802         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
14803         vec_perm_indices instead of auto_vec_perm_indices.
14804         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14805         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14806         (vect_permute_store_chain): Likewise.
14807         (vect_grouped_load_supported): Likewise.
14808         (vect_permute_load_chain): Likewise.
14809         (vect_shift_permute_load_chain): Likewise.
14810         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
14811         (vect_transform_slp_perm_load): Likewise.
14812         (vect_schedule_slp_instance): Likewise.
14813         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14814         (vectorizable_mask_load_store): Likewise.
14815         (vectorizable_bswap): Likewise.
14816         (vectorizable_store): Likewise.
14817         (vectorizable_load): Likewise.
14818         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
14819         vec_perm_indices instead of auto_vec_perm_indices.  Use
14820         tree_to_vec_perm_builder to read the vector from a tree.
14821         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
14822         vec_perm_builder instead of a vec_perm_indices.
14823         (have_whole_vector_shift): Use vec_perm_builder and
14824         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
14825         truncation to calc_vec_perm_mask_for_shift.
14826         (vect_create_epilog_for_reduction): Likewise.
14827         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
14828         from auto_vec_perm_indices to vec_perm_indices.
14829         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14830         instead of changing individual elements.
14831         (aarch64_vectorize_vec_perm_const): Use new_vector to install
14832         the vector in d.perm.
14833         * config/arm/arm.c (expand_vec_perm_d::perm): Change
14834         from auto_vec_perm_indices to vec_perm_indices.
14835         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14836         instead of changing individual elements.
14837         (arm_vectorize_vec_perm_const): Use new_vector to install
14838         the vector in d.perm.
14839         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
14840         Update vec_perm_builder constructor.
14841         (rs6000_expand_interleave): Likewise.
14842         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
14843         (rs6000_expand_interleave): Likewise.
14845 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14847         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
14848         to qimode could truncate the indices.
14849         * optabs.c (expand_vec_perm_var): Likewise.
14851 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14853         * Makefile.in (OBJS): Add vec-perm-indices.o.
14854         * vec-perm-indices.h: New file.
14855         * vec-perm-indices.c: Likewise.
14856         * target.h (vec_perm_indices): Replace with a forward class
14857         declaration.
14858         (auto_vec_perm_indices): Move to vec-perm-indices.h.
14859         * optabs.h: Include vec-perm-indices.h.
14860         (expand_vec_perm): Delete.
14861         (selector_fits_mode_p, expand_vec_perm_var): Declare.
14862         (expand_vec_perm_const): Declare.
14863         * target.def (vec_perm_const_ok): Replace with...
14864         (vec_perm_const): ...this new hook.
14865         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
14866         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
14867         * doc/tm.texi: Regenerate.
14868         * optabs.def (vec_perm_const): Delete.
14869         * doc/md.texi (vec_perm_const): Likewise.
14870         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
14871         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
14872         expand_vec_perm for constant permutation vectors.  Assert that
14873         the mode of variable permutation vectors is the integer equivalent
14874         of the mode that is being permuted.
14875         * optabs-query.h (selector_fits_mode_p): Declare.
14876         * optabs-query.c: Include vec-perm-indices.h.
14877         (selector_fits_mode_p): New function.
14878         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
14879         is defined, instead of checking whether the vec_perm_const_optab
14880         exists.  Use targetm.vectorize.vec_perm_const instead of
14881         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
14882         fit in the vector mode before using a variable permute.
14883         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
14884         vec_perm_indices instead of an rtx.
14885         (expand_vec_perm): Replace with...
14886         (expand_vec_perm_const): ...this new function.  Take the selector
14887         as a vec_perm_indices rather than an rtx.  Also take the mode of
14888         the selector.  Update call to shift_amt_for_vec_perm_mask.
14889         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
14890         Use vec_perm_indices::new_expanded_vector to expand the original
14891         selector into bytes.  Check whether the indices fit in the vector
14892         mode before using a variable permute.
14893         (expand_vec_perm_var): Make global.
14894         (expand_mult_highpart): Use expand_vec_perm_const.
14895         * fold-const.c: Includes vec-perm-indices.h.
14896         * tree-ssa-forwprop.c: Likewise.
14897         * tree-vect-data-refs.c: Likewise.
14898         * tree-vect-generic.c: Likewise.
14899         * tree-vect-loop.c: Likewise.
14900         * tree-vect-slp.c: Likewise.
14901         * tree-vect-stmts.c: Likewise.
14902         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
14903         Delete.
14904         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
14905         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
14906         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
14907         (aarch64_vectorize_vec_perm_const): ...this new function.
14908         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14909         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14910         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
14911         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
14912         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14913         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14914         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
14915         into...
14916         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
14917         check for NEON modes.
14918         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
14919         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
14920         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
14921         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
14922         into...
14923         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
14924         the old VEC_PERM_CONST conditions.
14925         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
14926         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
14927         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
14928         (ia64_vectorize_vec_perm_const_ok): Merge into...
14929         (ia64_vectorize_vec_perm_const): ...this new function.
14930         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
14931         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
14932         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
14933         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
14934         * config/mips/mips.c (mips_expand_vec_perm_const)
14935         (mips_vectorize_vec_perm_const_ok): Merge into...
14936         (mips_vectorize_vec_perm_const): ...this new function.
14937         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
14938         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
14939         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
14940         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
14941         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
14942         (rs6000_expand_vec_perm_const): Delete.
14943         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
14944         Delete.
14945         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14946         (altivec_expand_vec_perm_const_le): Take each operand individually.
14947         Operate on constant selectors rather than rtxes.
14948         (altivec_expand_vec_perm_const): Likewise.  Update call to
14949         altivec_expand_vec_perm_const_le.
14950         (rs6000_expand_vec_perm_const): Delete.
14951         (rs6000_vectorize_vec_perm_const_ok): Delete.
14952         (rs6000_vectorize_vec_perm_const): New function.
14953         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
14954         an element count and rtx array.
14955         (rs6000_expand_extract_even): Update call accordingly.
14956         (rs6000_expand_interleave): Likewise.
14957         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
14958         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
14959         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
14960         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
14961         (rs6000_expand_vec_perm_const): Delete.
14962         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14963         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14964         (altivec_expand_vec_perm_const_le): Take each operand individually.
14965         Operate on constant selectors rather than rtxes.
14966         (altivec_expand_vec_perm_const): Likewise.  Update call to
14967         altivec_expand_vec_perm_const_le.
14968         (rs6000_expand_vec_perm_const): Delete.
14969         (rs6000_vectorize_vec_perm_const_ok): Delete.
14970         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
14971         reference to the SPE evmerge intructions.
14972         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
14973         an element count and rtx array.
14974         (rs6000_expand_extract_even): Update call accordingly.
14975         (rs6000_expand_interleave): Likewise.
14976         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
14977         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
14978         new function.
14979         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14981 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14983         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
14984         vector mode and that that mode matches the mode of the data
14985         being permuted.
14986         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
14987         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
14988         directly using expand_vec_perm_1 when forcing selectors into
14989         registers.
14990         (expand_vec_perm_var): New function, split out from expand_vec_perm.
14992 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14994         * optabs-query.h (can_vec_perm_p): Delete.
14995         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
14996         * optabs-query.c (can_vec_perm_p): Split into...
14997         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
14998         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
14999         particular selector is valid.
15000         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15001         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15002         (vect_grouped_load_supported): Likewise.
15003         (vect_shift_permute_load_chain): Likewise.
15004         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
15005         (vect_transform_slp_perm_load): Likewise.
15006         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15007         (vectorizable_bswap): Likewise.
15008         (vect_gen_perm_mask_checked): Likewise.
15009         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
15010         implementations of variable permutation vectors into account
15011         when deciding which selector to use.
15012         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
15013         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
15014         with a false third argument.
15015         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
15016         to test whether the constant selector is valid and can_vec_perm_var_p
15017         to test whether a variable selector is valid.
15019 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15021         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
15022         * optabs-query.c (can_vec_perm_p): Likewise.
15023         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
15024         instead of vec_perm_indices.
15025         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
15026         (vect_gen_perm_mask_checked): Likewise,
15027         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
15028         (vect_gen_perm_mask_checked): Likewise,
15030 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15032         * optabs-query.h (qimode_for_vec_perm): Declare.
15033         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
15034         (qimode_for_vec_perm): ...this new function.
15035         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
15037 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
15039         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
15040         does not have a conditional at the top.
15042 2018-01-02  Richard Biener  <rguenther@suse.de>
15044         * ipa-inline.c (big_speedup_p): Fix expression.
15046 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
15048         PR target/81616
15049         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
15050         for generic 4->6.
15052 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
15054         PR target/81616
15055         Generic tuning.
15056         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
15057         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
15058         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
15059         cond_taken_branch_cost 3->4.
15061 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
15063         PR tree-optimization/83581
15064         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
15065         TODO_cleanup_cfg if any changes have been made.
15067         PR middle-end/83608
15068         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
15069         convert_modes if target mode has the right side, but different mode
15070         class.
15072         PR middle-end/83609
15073         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
15074         last argument when extracting from CONCAT.  If either from_real or
15075         from_imag is NULL, use expansion through memory.  If result is not
15076         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
15077         the parts directly to inner mode, if even that fails, use expansion
15078         through memory.
15080         PR middle-end/83623
15081         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
15082         check for bswap in mode rather than HImode and use that in expand_unop
15083         too.
15085 Copyright (C) 2018 Free Software Foundation, Inc.
15087 Copying and distribution of this file, with or without modification,
15088 are permitted in any medium without royalty provided the copyright
15089 notice and this notice are preserved.